Skip to content
CAI
Software that uses CAICheck a score

typelevel/kind-projector

50.9

Adequate · 28 September 2026

445

lines of production code

Scala

primary language

2

measurements over time

CAI band scale
CAI trend line
CAI lens gauges

What this system is

This system is a Scala compiler plugin that enhances type syntax by supporting anonymous type lambdas via both asterisk and underscore placeholders. It provides core functionality for parsing Scala code strings into ASTs and dynamically generating type parameter definitions. The project is built with SBT, supports cross-compilation across multiple Scala versions, and includes tooling for publishing artifacts to Sonatype.

Features

Added back-publish script for cross-version publishing

A new \scripts/back-publish\ shell script has been added to facilitate publishing artifacts for different Scala versions. The script accepts a Git tag and a target Scala version as arguments, validates that the environment is running Java 8, and then executes an SBT command to clean, test, and publish the project for the specified version to Sonatype.

scripts · high confidence

Behavioural changes

Migration to SBT build system and Nix development environment

The project has transitioned from an ad-hoc Makefile-based build process to SBT, introducing \version.sbt\ for version management and updating the README with SBT, Maven, and Mill integration instructions. A Nix-based development environment (\flake.nix\, \flake.lock\, \.envrc\) has been added to provision the build environment, and the legacy \KindProjector.scala\ implementation along with \test.scala\ have been removed, indicating a shift in how the compiler plugin is structured or maintained.

(repo-wide) · high confidence

Refactored compiler plugin internals and added string parsing capability

The compiler plugin's internal structure has been reorganized to improve modularity and compatibility. A new \StringParser\ component was added to enable parsing Scala code strings into AST trees, which is now utilized by the \KindRewriter\ to dynamically generate type parameter definitions. The plugin's reporting logic was abstracted into a \ReportingCompat\ trait to handle version-specific compiler APIs, and the plugin configuration file was moved to the standard \src/main/resources\ directory.

src/main · high confidence

Test coverage

Added test suite for underscore placeholder syntax

Added a comprehensive set of tests in the \src/test/scala/underscores\ directory to verify the plugin's support for using the underscore symbol (\\\) as a placeholder for anonymous type lambdas, mirroring the existing tests that use the asterisk (\\\) syntax. These tests cover higher-kinded types, variance annotations, nested contexts, and Java wildcard handling to ensure the underscore syntax functions correctly across various scenarios.

src/test · high confidence

Dependencies

Migration to SBT with expanded Scala version support

The build system has transitioned from an ad-hoc Makefile to SBT, enabling cross-compilation for Scala versions 2.11.12 through 2.13.18. This change also updates the publication target to Sonatype Central and configures the project to use specific parser and reporting source directories based on the Scala version.

(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

Score

  • CAI 51 → 51 (+0.0)
  • Rubric changed (rubric-2026.09.8 → rubric-2026.09.16) — scores are not directly comparable.

Lenses

  • Code Health 94 → 94 (+0.0)
  • Architecture 69 → 69 (+0.0)
  • Maturity 53 → 53 (+0.0)
  • Readiness 38 → 38 (+0.0)
  • Security 65 → 65 (+0.0)

Resolved (2)

  • Documentation: no installation or build instructions (README.md)
  • Documentation: no usage examples (README.md)

Changes since last survey

  • 2 commits — 2 feature/other, 0 fixes

By area

  • (repo) — 1 commit
  • (root) — 1 commit

Notable commits

  • change: Merge pull request #331 from typelevel/update/flake-lock
  • change: flake.lock: Update

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

Survey your own repository

typelevel/kind-projector 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 28 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 fd450b9f919098076af877fc309214c2e52686b0 — the exact code this score is about.
  • Scored under rubric-2026.09.16 — the same rubric and the same method as every other entry in this index.
  • Measured by watchdog.canine.dev using codehealth-analyzer preprod-2d9048c36d26.