Skip to content
CAI
Software that uses CAICheck a score

ahmdigital/content-model-graph

58.4

Adequate · 21 September 2026

341

lines of production code

TypeScript

primary language

4

measurements over time

CAI band scale
CAI trend line
CAI lens gauges

What this system is

This system is a Sanity Studio plugin that visualizes content model relationships as an interactive graph. It renders a visual representation of schema types and their connections using Viz.js, allowing users to explore field details and export the graph as SVG or GV files. The project has been upgraded to support Sanity Studio v3 and Node 16, with updated dependencies and a new plugin package name for easier installation.

Features

Add Content Model Graph plugin for visualizing Sanity schema relationships

A new Content Model Graph plugin has been introduced, providing a visual representation of Sanity content model types and their relationships. The feature renders an interactive graph using Viz.js, allowing users to toggle the display of field details and edge labels. Users can also export the graph as SVG or GV files. The implementation includes the main graph component, utility functions for graph generation, and supporting UI components.

src, src/component · medium confidence

Behavioural changes

Upgrade to Sanity Studio v3 and Node 16

The project has been upgraded to support Sanity Studio v3, introducing a new plugin structure and usage pattern for the content model graph feature. The build environment has been updated to use Node.js 16, as specified in the new .nvmrc file and Dockerfile. Additionally, the plugin's published package name has been changed to 'sanity-plugin-content-model-graph' to facilitate easier installation, and the codebase now includes a compatibility check that displays a dialog to users attempting to use the plugin with older versions of Sanity.

(repo-wide) · high confidence

Dependencies

Updated project dependencies and lockfile

The package-lock.json and package.json have been updated to reflect the current state of all dependencies. This includes updates to development tools such as @ahmdigital/eslint-config (v7.1.48), eslint (v8.56.0), jest (v29.7.0), and typescript (v5.3.3), alongside runtime dependencies like react (v18.2.0) and sanity (v3.29.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

Score

  • CAI 59 → 58 (-0.4)
  • Rubric changed (rubric-2026.08.19 → rubric-2026.09.15) — scores are not directly comparable.

Lenses

  • Code Health 95 → 98 (+3.3)
  • Architecture 69 → 69 (+0.0)
  • Maturity 47 → 50 (+2.8)
  • Readiness 61 → 56 (-5.0)
  • Security 70 → 75 (+5.1)

Resolved (55)

  • Coverage not included — suite not readable by the collector
  • Critical CVE: [GHSA redacted] (package-lock.json)
  • Critical CVE: [GHSA redacted] (package-lock.json)
  • Dependency hygiene not measured — dependency manifest found but not parsed for hygiene
  • High CVE: [GHSA redacted] (package-lock.json)
  • High CVE: [GHSA redacted] (package-lock.json)
  • High CVE: [GHSA redacted] (package-lock.json)
  • High CVE: [GHSA redacted] (package-lock.json)
  • High CVE: [GHSA redacted] (package-lock.json)
  • High CVE: [GHSA redacted] (package-lock.json)
  • High CVE: [GHSA redacted] (package-lock.json)
  • High CVE: [GHSA redacted] (package-lock.json)
  • High CVE: [GHSA redacted] (package-lock.json)
  • High CVE: [GHSA redacted] (package-lock.json)
  • High CVE: [GHSA redacted] (package-lock.json)
  • High CVE: [GHSA redacted] (package-lock.json)
  • High CVE: [GHSA redacted] (package-lock.json)
  • High CVE: [GHSA redacted] (package-lock.json)
  • High CVE: [GHSA redacted] (package-lock.json)
  • High CVE: [GHSA redacted] (package-lock.json)
  • …and 35 more

New (62)

  • Critical CVE: [GHSA redacted] (package-lock.json)
  • Critical CVE: [GHSA redacted] (package-lock.json)
  • Documentation: no architecture or design documentation (README.md)
  • End-of-life runtime: Node.js 16
  • High CVE: [GHSA redacted] (package-lock.json)
  • High CVE: [GHSA redacted] (package-lock.json)
  • High CVE: [GHSA redacted] (package-lock.json)
  • High CVE: [GHSA redacted] (package-lock.json)
  • High CVE: [GHSA redacted] (package-lock.json)
  • High CVE: [GHSA redacted] (package-lock.json)
  • High CVE: [GHSA redacted] (package-lock.json)
  • High CVE: [GHSA redacted] (package-lock.json)
  • High CVE: [GHSA redacted] (package-lock.json)
  • High CVE: [GHSA redacted] (package-lock.json)
  • High CVE: [GHSA redacted] (package-lock.json)
  • High CVE: [GHSA redacted] (package-lock.json)
  • High CVE: [GHSA redacted] (package-lock.json)
  • High CVE: [GHSA redacted] (package-lock.json)
  • High CVE: [GHSA redacted] (package-lock.json)
  • High CVE: [GHSA redacted] (package-lock.json)
  • …and 42 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

ahmdigital/content-model-graph 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 21 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 d5184586fa20657d03b58aa4b16caf5538de3343 — 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-b84573e22831.