Skip to content
CAI
Software that uses CAICheck a score

scala-garden/scala-sculpt

61.2

Adequate · 20 September 2026

725

lines of production code

Scala

primary language

1

measurement over time

CAI band scale
CAI lens gauges

What this system is

Sculpt is a Scala 2.13 compiler plugin designed to analyze the dependency structure of source code to support refactoring and modularization efforts. It generates fine-grained dependency graphs in JSON format, tracking 'extends' and 'uses' relationships, and offers a class-level aggregation mode for broader structural views. The system includes utilities for cycle detection, layer calculation, and graph visualization, though the plugin has since been removed from the codebase.

Features

Initial release of Sculpt Scala 2 dependency analysis plugin

Introduces Sculpt, a compiler plugin for analyzing the dependency structure of Scala 2.13 source code to support refactoring efforts like splitting monolithic codebases. The plugin generates fine-grained dependency graphs in JSON format (tracking 'extends' and 'uses' edges) and supports a 'class mode' via the \-P:sculpt:mode=class\ option to aggregate dependencies to the class level. The distribution includes a fat JAR with bundled spray-json, Scala model case classes for graph representation, and REPL tools for loading, saving, and inspecting the dependency graphs.

(repo-wide) · high confidence

Initial release of the Sculpt dependency analysis model

This change introduces the core data model and graph algorithms for the Sculpt tool, enabling users to load, analyze, and visualize Scala dependency structures. It adds classes for representing entities (classes, modules, traits, etc.) and dependencies (uses, extends), along with a mutable graph implementation for managing nodes and edges. The update includes utilities for detecting cycles and organizing code into layers using Tarjan's strongly connected components algorithm, as well as support for converting detailed dependencies into aggregated class-level views. JSON serialization and custom printing are provided to allow users to save and inspect model data.

src/main/scala/com/lightbend/tools/sculpt/model · high confidence

Removals

Removal of the Scala Sculpt plugin

The \SculptPlugin\ component, previously used to aid in modularizing large code bases by extracting dependencies, has been removed from the compiler toolchain. Users relying on the \scalac -Xplugin:scala-sculpt\ integration for dependency analysis will no longer have access to this functionality.

src/main/scala/scala · high confidence

Behavioural changes

Sculpt plugin restructured and output behavior updated

The Sculpt plugin has been moved to the com.lightbend.tools.sculpt.plugin package and now outputs dependency information as JSON (serializable via spray-json) instead of plain text. The plugin supports two output modes: a default fine-grained mode and a 'class mode' (enabled via -P:sculpt:mode=class) that aggregates dependencies. Output can be written to a file specified by -P:sculpt:out=\<path\> or printed to stdout. The dependency extraction logic was refactored to use a traverser pattern and now deduplicates and counts dependency occurrences.

src/main/scala/com/lightbend/tools/sculpt/plugin · high confidence

Test coverage

Added test suite for Sculpt analysis features

Added comprehensive tests for the Sculpt tool's core capabilities, including graph generation, tree printing, cycle detection, layer calculation, and JSON serialization round-trips. The tests use the MUnit framework and validate the tool's output against sample inputs across various scenarios.

src/test · high confidence

Dependencies

Upgrade to Scala 2.13 and MUnit, rebrand to Lightbend

The build has been upgraded from Scala 2.11 to 2.13.18 and switched from ScalaTest to MUnit 1.3.6 for testing. The project organization and GitHub URLs have been updated from Typesafe to Lightbend, and the version is set to 0.1.4-SNAPSHOT. Additionally, the build now bundles spray-json 1.3.6 into the fat JAR, includes README.md and LICENSE in the package, and enables scalafix with organize-imports 0.6.0.

(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 61.

Lenses

  • Code Health 100
  • Architecture 69
  • Maturity 49
  • Readiness 61
  • Security 100

Changes since last survey

  • 300 commits — 299 feature/other, 1 fixes

By area

  • (root) — 102 commits
  • (repo) — 70 commits
  • project/build.properties — 61 commits
  • project/plugins.sbt — 50 commits
  • src/main — 10 commits
  • .github/workflows — 6 commits
  • src/test — 1 commit

Notable commits

  • fix: fix CI by adding setup-sbt
  • change: Add 'Reformat with scalafmt 3.10.4' to .git-blame-ignore-revs
  • change: Add 'Reformat with scalafmt 3.10.7' to .git-blame-ignore-revs
  • change: Add 'Reformat with scalafmt 3.8.3' to .git-blame-ignore-revs
  • change: Add codeps to README
  • change: AdoptOpenJDK is now Temurin (#168)
  • change: CI: add new CLA checker
  • change: CI: bump actions versions
  • change: Faster EntityKind deserialization
  • change: Merge branch 'main' into update/scala-compiler-2.12.20
  • change: Merge branch 'main' into update/scala-compiler-2.13.13
  • change: Merge branch 'main' into update/scalafmt-core-3.10.4
  • change: Merge pull request #104 from SethTisue/bump-scala-versions
  • change: Merge pull request #108 from SethTisue/use-munit
  • change: Merge pull request #109 from scala-steward/update/sbt-1.3.13
  • change: Merge pull request #111 from scala-steward/update/munit-0.7.11
  • change: Merge pull request #112 from scala-steward/update/munit-0.7.12
  • change: Merge pull request #117 from SethTisue/version-bumps
  • change: Merge pull request #119 from scala-steward/update/munit-0.7.15
  • change: Merge pull request #120 from scala-steward/update/sbt-1.4.2
  • …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

scala-garden/scala-sculpt 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 ea6eaedeacd058bf4241c1bf0a5a1de384dfd256 — 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.