What the instrument measured.
Measured against a pinned commit.
- Repository
- TryGhost/Ghost
- Revision
- 6a11b45a82d9, committed 2026-09-08
- System directory
- apps/shade (@tryghost/shade)
- Components found
- 108, of which 91 carry documentation and 82 have a colocated doc artifact
- Agent context
- 2 context files, 19 skills
- Tokens
- 693 distinct, across 33 sources (33 authored); dark mode generated
- Adherence surface
- 4,279 files outside the system, graded first-party: apps/admin and apps/activitypub.
What the counts point at.
Each finding carries its count, its severity and up to three file references. A finding on a property that was not banded is still a finding; it is reported without a score.
The design system's own component source hardcodes colour and size values instead of referencing its own tokens. This happens in 175 of 1890 total colour/size references in system source (9.3%), so an agent copying that file as a pattern copies the hardcoding along with it.
- apps/shade/src/components/patterns/color-picker.tsx:138 hsl(
- apps/shade/src/components/ui/loading-indicator.tsx:22 16px
- apps/shade/.storybook/shade-theme.tsx:14 #30CF43
Design tokens are declared in more than one place in this repository's own authored source, so a value changed in one must be kept in agreement with the others by hand.
- apps/shade/tailwind.theme.css css, 305 token(s)
- apps/ember-admin/app/styles/patterns/global.css css, 141 token(s)
- apps/shade/theme-variables.css css, 101 token(s)
Some components carry no documentation an agent could find. That is 17 of the 108 components found in system source, with no head comment on their own source, no colocated doc artifact matching their name, and no docs/ entry, so an agent must reverse-engineer their contract from implementation alone.
- apps/shade/src/app.ts
- apps/shade/src/docs/showcase/breakpoint-table.tsx
- apps/shade/src/components/ui/code-editor-view.tsx
The application hardcodes colour values instead of using the design system's own tokens, so an agent editing nearby code has no signal that a token exists and will likely repeat the pattern.
- apps/admin/src/settings/site/theme/theme-code-editor-modal.tsx:280 #c8ccd3
- apps/portal/src/components/pages/gift-page.styles.js:4 #15212A
- apps/activitypub/src/views/preferences/components/profile.tsx:50 rgba(
The application defines its own component under the same name as one the design system already ships. This happens for 13 of the 363 component names the design system exports, so an agent importing that name by convention can silently get the wrong implementation.
- apps/admin-toolbar/src/icons.js:54 Icon
- apps/admin-x-framework/src/api/config.ts DEFAULT
- apps/admin/src/settings/providers/dialog-portal.tsx:19 DialogPortal
Some screens render a raw HTML element in place of the system component built for it. This happens in 255 of 906 total uses of a replaceable element (28.1%), so its styling and behaviour can drift independently of the system.
- apps/admin/src/settings/growth/offers/offers-index.tsx:110 <button>
- koenig/kg-default-nodes/src/nodes/audio/audio-renderer.ts:86 createElement("button")
- apps/comments-ui/src/components/content/context-menus/admin-context-menu.tsx:67 <button>
Not trialled.
The trial requires a system that can be installed from its own documentation into a clean scaffold. This one cannot be, because @tryghost/shade was never published to npm. The system is consumable only inside the Ghost repository, so it cannot be installed from its own documentation into the trial scaffold. It keeps its row in the static index with that reason stated, per the standing rule.
Clone the repository at the revision above, point the instrument at the system directory, and the same numbers come out. The field manifest, the run script and the full payload this page was built from are committed beside it. Methods.