Skip to content
CAI
Software that uses CAICheck a score

sbt/sbt-protobuf

64.4

Adequate · 20 September 2026

379

lines of production code

Scala

primary language

1

measurement over time

CAI band scale
CAI lens gauges

What this system is

This system is an sbt plugin that automates the generation of Java and gRPC code from Protocol Buffers definitions. It manages the build lifecycle by compiling .proto files, handling dependency schemas, and ensuring cache invalidation when source files change. The plugin supports multi-project setups, task scoping, and compatibility with modern sbt and Scala versions.

How it got here

2011–2016 — Initial scaffolding and modernization

6 changes.

The project was established with initial scaffolding, documentation, and basic integration tests for protobuf compilation. Subsequent work focused on modernizing the build infrastructure by migrating the plugin to sbt 1.0/2.0 and Scala 3, while updating core dependencies and expanding test coverage for file handling and proto3 syntax.

2017–2026 — test coverage and cache improvements

7 changes.

This period focused on expanding the test suite to cover task-scoped generation, multi-project setups, gRPC integration, and dependency cleanup. It also introduced behavioral changes to improve build cache invalidation and added configuration options for excluding schema files and customizing output paths.

Features

Initial project scaffolding and documentation

The repository is initialized with core project files, including an Apache 2.0 LICENSE, a .gitignore, and a version.sbt configuration using sbtdynver for dynamic versioning. Comprehensive usage documentation is added to README.md, detailing how to integrate the sbt-protobuf plugin, configure protobuf and gRPC settings, and manage generated source files. Additionally, a .scala-steward.conf file is introduced to pin the protobuf-java dependency to the 3.x series.

(repo-wide) · high confidence

Behavioural changes

Improved cache invalidation for protobuf generation

The sbt-protobuf plugin now correctly invalidates its build cache when the content of imported .proto files changes, ensuring that generated code stays in sync with dependencies. Additionally, the plugin respects new configuration options that allow users to exclude specific schema files from generation and customize the output directory and file patterns, providing finer control over the build process.

src/sbt-test/sbt-protobuf/cache-imports, src/sbt-test/sbt-protobuf/cache-options · medium confidence

Sbt-protobuf plugin migrated to sbt 1.0 and Scala 3 with AutoPlugin architecture

The sbt-protobuf plugin has been completely rewritten to support sbt 1.0+ and Scala 3, replacing the legacy \Plugin\ base with \AutoPlugin\ and introducing a \ScopedProtobufPlugin\ that allows configuration scoping (e.g., for Test vs Compile). This change introduces Scala 2/3 compatibility shims (\ProtobufPluginCompat\) to handle API differences in file handling and classpath management, updates the default protobuf version to 3.17.3, and modernizes the build structure by removing obsolete compatibility code for sbt 0.10/2.8 and sbt 0.13.x. Users will see improved integration with sbt's built-in caching, better handling of protoc executable paths with spaces, and support for gRPC code generation via the new \protobufGrpcEnabled\ setting.

src/main · high confidence

Test coverage

Add basic protobuf 3 test schemas; Added integration tests for sbt-protobuf basic functionality; Added multi-project scripted test for sbt-protobuf; Added sbt-protobuf gRPC integration test; Added scripted tests for protobuf file deletion behavior; Added test for protobuf exclude functionality; Added test protocol buffer definitions for task-scoped tests; Added test suite for protobuf dependency schema cleanup; Added tests for task-scoped protobuf generation.

Dependencies

Upgrade to sbt 2.0 support and protobuf 3.25.9

The plugin now supports sbt 2.0 (specifically 2.0.8) alongside sbt 1.5.8, enabling users to build with the latest sbt version. It also updates the default protobuf-java dependency to version 3.25.9 and protoc-gen-grpc-java to 1.84.0. Additionally, the build now generates a \SbtProtobufBuildInfo\ object to expose these default versions to the plugin code, and includes scripted tests to verify behavior across different sbt versions and protobuf configurations.

(dependencies) · high confidence

Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.

How this codebase got here

Baseline

  • First survey — no prior run to compare against. CAI 64.

Lenses

  • Code Health 100
  • Architecture 100
  • Maturity 59
  • Readiness 57
  • Security 70

Changes since last survey

  • 300 commits — 287 feature/other, 13 fixes

By area

  • (root) — 106 commits
  • project/build.properties — 63 commits
  • (repo) — 52 commits
  • project/plugins.sbt — 31 commits
  • .github/workflows — 25 commits
  • src/sbt-test — 14 commits
  • src/main — 7 commits
  • .github/CODEOWNERS — 1 commit
  • .github/dependabot.yml — 1 commit

Notable commits

  • fix: Fix release
  • fix: Merge branch 'main' into fix-stale-protobuf-dependencies
  • fix: Merge pull request #180 from eed3si9n/wip/fix-release
  • fix: Merge pull request #303 from stasimus/fix-generation-cache
  • fix: Merge pull request #305 from stasimus/fix-stale-protobuf-dependencies
  • fix: fix and enable some sbt 2 scripted tests
  • fix: fix jdk11 build
  • fix: fix protobuf version
  • fix: fix release.yml ubuntu version
  • fix: fix warning in build.sbt
  • fix: fix windows build
  • fix: readme: workaround for intellij bsp bug
  • fix: update scripted test. fix deprecated colon syntax
  • change: 0.6.5 released
  • change: 0.7.0
  • change: Add setup-sbt
  • change: Bump actions/checkout from 2.3.4 to 2.3.5
  • change: Bump actions/checkout from 2.3.5 to 2.4.0
  • change: Bump actions/checkout from 2.4.0 to 3
  • change: Bump actions/checkout from 3 to 4
  • …and 280 more

Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.

Survey your own repository

sbt/sbt-protobuf was measured the same way every project in this corpus was: the same rubric, at a pinned commit, with the result published in full. Point a surveyor at a repository you know and see whether you agree with it.

About this page

  • The score is its most recent published measurement, taken on 20 September 2026 at a pinned commit. It is not a live figure and does not change until the project is measured again.
  • Measured at commit f1dfb4c5e4d956e4d5c317d1ed49f6c4c7d52373 — the exact code this score is about.
  • Scored under rubric-2026.09.15 — the same rubric and the same method as every other entry in this index.
  • Measured by watchdog.canine.dev using codehealth-analyzer preprod-b51f968c9b10.