@hegemonart/get-design-done 1.57.1 → 1.57.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.claude-plugin/marketplace.json +26 -41
- package/.claude-plugin/plugin.json +23 -48
- package/CHANGELOG.md +139 -0
- package/README.md +166 -511
- package/SKILL.md +4 -6
- package/agents/README.md +33 -36
- package/agents/a11y-mapper.md +3 -3
- package/agents/component-benchmark-harvester.md +6 -6
- package/agents/component-benchmark-synthesizer.md +3 -3
- package/agents/compose-executor.md +3 -3
- package/agents/cost-forecaster.md +2 -2
- package/agents/design-auditor.md +7 -7
- package/agents/design-authority-watcher.md +15 -15
- package/agents/design-context-builder.md +4 -4
- package/agents/design-context-checker-gate.md +1 -1
- package/agents/design-discussant.md +2 -2
- package/agents/design-doc-writer.md +1 -1
- package/agents/design-executor.md +2 -2
- package/agents/design-figma-writer.md +2 -2
- package/agents/design-fixer.md +7 -7
- package/agents/design-integration-checker-gate.md +1 -1
- package/agents/design-integration-checker.md +1 -1
- package/agents/design-paper-writer.md +3 -3
- package/agents/design-pencil-writer.md +1 -1
- package/agents/design-planner.md +21 -0
- package/agents/design-reflector.md +39 -39
- package/agents/design-research-synthesizer.md +1 -0
- package/agents/design-start-writer.md +1 -1
- package/agents/design-update-checker.md +5 -5
- package/agents/design-verifier-gate.md +1 -1
- package/agents/design-verifier.md +52 -48
- package/agents/ds-generator.md +2 -2
- package/agents/ds-migration-planner.md +4 -4
- package/agents/email-executor.md +9 -9
- package/agents/experiment-result-ingester.md +3 -3
- package/agents/flutter-executor.md +5 -5
- package/agents/gdd-graph-refresh.md +3 -3
- package/agents/gdd-intel-updater.md +2 -2
- package/agents/motion-mapper.md +2 -2
- package/agents/motion-verifier.md +4 -4
- package/agents/pdf-executor.md +8 -8
- package/agents/perf-analyzer.md +17 -17
- package/agents/pr-commenter.md +9 -9
- package/agents/prototype-gate.md +2 -2
- package/agents/quality-gate-runner.md +1 -1
- package/agents/rollout-coordinator.md +3 -3
- package/agents/swift-executor.md +4 -4
- package/agents/ticket-sync-agent.md +6 -6
- package/agents/user-research-synthesizer.md +2 -2
- package/connections/connections.md +44 -45
- package/connections/cursor.md +72 -0
- package/connections/preview.md +3 -3
- package/hooks/first-run-nudge.cjs +171 -0
- package/hooks/gdd-intel-trigger.js +243 -0
- package/hooks/gdd-mcp-circuit-breaker.js +62 -7
- package/hooks/gdd-precompact-snapshot.js +50 -29
- package/hooks/gdd-protected-paths.js +150 -18
- package/hooks/gdd-risk-gate.js +93 -1
- package/hooks/gdd-sessionstart-recap.js +59 -24
- package/hooks/hooks.json +13 -4
- package/hooks/inject-using-gdd.cjs +188 -0
- package/hooks/update-check.cjs +511 -0
- package/package.json +9 -3
- package/reference/STATE-TEMPLATE.md +10 -13
- package/reference/audit-scoring.md +1 -1
- package/reference/cache-tier-doctrine.md +46 -0
- package/reference/config-schema.md +9 -9
- package/reference/i18n.md +1 -1
- package/reference/intel-schema.md +37 -2
- package/reference/meta-rules.md +4 -4
- package/reference/model-tiers.md +2 -2
- package/reference/registry.json +101 -94
- package/reference/runtime-models.md +11 -1
- package/reference/shared-preamble.md +13 -14
- package/reference/skill-graph.md +22 -3
- package/scripts/bootstrap.cjs +373 -0
- package/scripts/injection-patterns.cjs +58 -0
- package/scripts/lib/apply-reflections/incubator-proposals.cjs +57 -26
- package/scripts/lib/install/converters/codex-plugin.cjs +5 -2
- package/scripts/lib/install/converters/cursor.cjs +20 -0
- package/scripts/lib/issue-reporter/report-flow.cjs +1 -1
- package/scripts/lib/manifest/skills.json +75 -28
- package/scripts/lib/state/query-surface.cjs +67 -9
- package/scripts/lib/state/state-store.cjs +68 -26
- package/scripts/lib/worktree-resolve.cjs +4 -16
- package/sdk/cli/commands/stage.ts +17 -0
- package/sdk/cli/index.js +14 -0
- package/skills/README.md +46 -0
- package/skills/bootstrap-ds/SKILL.md +1 -1
- package/skills/cache-manager/SKILL.md +3 -3
- package/skills/cache-manager/cache-policy.md +1 -1
- package/skills/compare/SKILL.md +1 -1
- package/skills/design/SKILL.md +19 -0
- package/skills/explore/SKILL.md +11 -0
- package/skills/figma-write/SKILL.md +13 -2
- package/skills/new-cycle/SKILL.md +1 -1
- package/skills/paper-write/SKILL.md +54 -0
- package/skills/peer-cli-customize/SKILL.md +0 -1
- package/skills/peers/SKILL.md +1 -1
- package/skills/pencil-write/SKILL.md +54 -0
- package/skills/reflect/procedures/capability-gap-scan.md +0 -1
- package/skills/report-issue/SKILL.md +2 -2
- package/skills/report-issue/report-issue-procedure.md +0 -1
- package/skills/router/SKILL.md +2 -2
- package/skills/synthesize/SKILL.md +1 -1
- package/skills/turn-closeout/SKILL.md +1 -1
- package/skills/verify/verify-procedure.md +10 -11
- package/skills/warm-cache/SKILL.md +1 -1
- package/dist/claude-code/.claude/skills/add-backlog/SKILL.md +0 -48
- package/dist/claude-code/.claude/skills/analyze-dependencies/SKILL.md +0 -95
- package/dist/claude-code/.claude/skills/apply-reflections/SKILL.md +0 -109
- package/dist/claude-code/.claude/skills/apply-reflections/apply-reflections-procedure.md +0 -170
- package/dist/claude-code/.claude/skills/audit/SKILL.md +0 -79
- package/dist/claude-code/.claude/skills/bandit-status/SKILL.md +0 -94
- package/dist/claude-code/.claude/skills/benchmark/SKILL.md +0 -65
- package/dist/claude-code/.claude/skills/bootstrap-ds/SKILL.md +0 -43
- package/dist/claude-code/.claude/skills/brief/SKILL.md +0 -145
- package/dist/claude-code/.claude/skills/budget/SKILL.md +0 -45
- package/dist/claude-code/.claude/skills/cache-manager/SKILL.md +0 -66
- package/dist/claude-code/.claude/skills/cache-manager/cache-policy.md +0 -126
- package/dist/claude-code/.claude/skills/check-update/SKILL.md +0 -98
- package/dist/claude-code/.claude/skills/compare/SKILL.md +0 -82
- package/dist/claude-code/.claude/skills/compare/compare-rubric.md +0 -171
- package/dist/claude-code/.claude/skills/complete-cycle/SKILL.md +0 -81
- package/dist/claude-code/.claude/skills/connections/SKILL.md +0 -71
- package/dist/claude-code/.claude/skills/connections/connections-onboarding.md +0 -608
- package/dist/claude-code/.claude/skills/context/SKILL.md +0 -137
- package/dist/claude-code/.claude/skills/continue/SKILL.md +0 -24
- package/dist/claude-code/.claude/skills/darkmode/SKILL.md +0 -76
- package/dist/claude-code/.claude/skills/darkmode/darkmode-audit-procedure.md +0 -258
- package/dist/claude-code/.claude/skills/debug/SKILL.md +0 -41
- package/dist/claude-code/.claude/skills/debug/debug-feedback-loops.md +0 -119
- package/dist/claude-code/.claude/skills/design/SKILL.md +0 -99
- package/dist/claude-code/.claude/skills/design/design-procedure.md +0 -304
- package/dist/claude-code/.claude/skills/discover/SKILL.md +0 -78
- package/dist/claude-code/.claude/skills/discover/discover-procedure.md +0 -222
- package/dist/claude-code/.claude/skills/discuss/SKILL.md +0 -96
- package/dist/claude-code/.claude/skills/do/SKILL.md +0 -45
- package/dist/claude-code/.claude/skills/explore/SKILL.md +0 -107
- package/dist/claude-code/.claude/skills/explore/explore-procedure.md +0 -267
- package/dist/claude-code/.claude/skills/export/SKILL.md +0 -30
- package/dist/claude-code/.claude/skills/extract-learnings/SKILL.md +0 -114
- package/dist/claude-code/.claude/skills/fast/SKILL.md +0 -91
- package/dist/claude-code/.claude/skills/figma-extract/SKILL.md +0 -64
- package/dist/claude-code/.claude/skills/figma-write/SKILL.md +0 -39
- package/dist/claude-code/.claude/skills/graphify/SKILL.md +0 -49
- package/dist/claude-code/.claude/skills/health/SKILL.md +0 -99
- package/dist/claude-code/.claude/skills/health/health-mcp-detection.md +0 -44
- package/dist/claude-code/.claude/skills/health/health-skill-length-report.md +0 -69
- package/dist/claude-code/.claude/skills/help/SKILL.md +0 -87
- package/dist/claude-code/.claude/skills/instinct/SKILL.md +0 -111
- package/dist/claude-code/.claude/skills/list-assumptions/SKILL.md +0 -61
- package/dist/claude-code/.claude/skills/list-pins/SKILL.md +0 -27
- package/dist/claude-code/.claude/skills/live/SKILL.md +0 -98
- package/dist/claude-code/.claude/skills/locale/SKILL.md +0 -51
- package/dist/claude-code/.claude/skills/map/SKILL.md +0 -89
- package/dist/claude-code/.claude/skills/migrate/SKILL.md +0 -70
- package/dist/claude-code/.claude/skills/migrate-context/SKILL.md +0 -123
- package/dist/claude-code/.claude/skills/new-addendum/SKILL.md +0 -81
- package/dist/claude-code/.claude/skills/new-cycle/SKILL.md +0 -37
- package/dist/claude-code/.claude/skills/new-cycle/milestone-completeness-rubric.md +0 -87
- package/dist/claude-code/.claude/skills/new-project/SKILL.md +0 -53
- package/dist/claude-code/.claude/skills/new-skill/SKILL.md +0 -90
- package/dist/claude-code/.claude/skills/next/SKILL.md +0 -68
- package/dist/claude-code/.claude/skills/note/SKILL.md +0 -48
- package/dist/claude-code/.claude/skills/openrouter-status/SKILL.md +0 -86
- package/dist/claude-code/.claude/skills/optimize/SKILL.md +0 -97
- package/dist/claude-code/.claude/skills/override/SKILL.md +0 -86
- package/dist/claude-code/.claude/skills/pause/SKILL.md +0 -77
- package/dist/claude-code/.claude/skills/peer-cli-add/SKILL.md +0 -88
- package/dist/claude-code/.claude/skills/peer-cli-add/peer-cli-protocol.md +0 -161
- package/dist/claude-code/.claude/skills/peer-cli-customize/SKILL.md +0 -90
- package/dist/claude-code/.claude/skills/peers/SKILL.md +0 -96
- package/dist/claude-code/.claude/skills/pin/SKILL.md +0 -37
- package/dist/claude-code/.claude/skills/plan/SKILL.md +0 -105
- package/dist/claude-code/.claude/skills/plan/plan-procedure.md +0 -278
- package/dist/claude-code/.claude/skills/plant-seed/SKILL.md +0 -48
- package/dist/claude-code/.claude/skills/pr-branch/SKILL.md +0 -32
- package/dist/claude-code/.claude/skills/progress/SKILL.md +0 -107
- package/dist/claude-code/.claude/skills/quality-gate/SKILL.md +0 -90
- package/dist/claude-code/.claude/skills/quality-gate/threat-modeling.md +0 -101
- package/dist/claude-code/.claude/skills/quick/SKILL.md +0 -44
- package/dist/claude-code/.claude/skills/reapply-patches/SKILL.md +0 -32
- package/dist/claude-code/.claude/skills/recall/SKILL.md +0 -75
- package/dist/claude-code/.claude/skills/reflect/SKILL.md +0 -85
- package/dist/claude-code/.claude/skills/reflect/procedures/capability-gap-scan.md +0 -120
- package/dist/claude-code/.claude/skills/report-issue/SKILL.md +0 -53
- package/dist/claude-code/.claude/skills/report-issue/report-issue-procedure.md +0 -120
- package/dist/claude-code/.claude/skills/resume/SKILL.md +0 -93
- package/dist/claude-code/.claude/skills/review-backlog/SKILL.md +0 -46
- package/dist/claude-code/.claude/skills/review-decisions/SKILL.md +0 -42
- package/dist/claude-code/.claude/skills/roi/SKILL.md +0 -54
- package/dist/claude-code/.claude/skills/rollout-status/SKILL.md +0 -35
- package/dist/claude-code/.claude/skills/router/SKILL.md +0 -89
- package/dist/claude-code/.claude/skills/router/capability-gap-emitter.md +0 -65
- package/dist/claude-code/.claude/skills/router/router-pick-emitter.md +0 -78
- package/dist/claude-code/.claude/skills/router/router-rules.md +0 -84
- package/dist/claude-code/.claude/skills/scan/SKILL.md +0 -92
- package/dist/claude-code/.claude/skills/scan/scan-procedure.md +0 -732
- package/dist/claude-code/.claude/skills/settings/SKILL.md +0 -87
- package/dist/claude-code/.claude/skills/ship/SKILL.md +0 -48
- package/dist/claude-code/.claude/skills/sketch/SKILL.md +0 -78
- package/dist/claude-code/.claude/skills/sketch-wrap-up/SKILL.md +0 -92
- package/dist/claude-code/.claude/skills/skill-manifest/SKILL.md +0 -79
- package/dist/claude-code/.claude/skills/spike/SKILL.md +0 -67
- package/dist/claude-code/.claude/skills/spike-wrap-up/SKILL.md +0 -86
- package/dist/claude-code/.claude/skills/start/SKILL.md +0 -67
- package/dist/claude-code/.claude/skills/start/start-procedure.md +0 -115
- package/dist/claude-code/.claude/skills/state/SKILL.md +0 -106
- package/dist/claude-code/.claude/skills/stats/SKILL.md +0 -51
- package/dist/claude-code/.claude/skills/style/SKILL.md +0 -71
- package/dist/claude-code/.claude/skills/style/style-doc-procedure.md +0 -150
- package/dist/claude-code/.claude/skills/synthesize/SKILL.md +0 -94
- package/dist/claude-code/.claude/skills/timeline/SKILL.md +0 -66
- package/dist/claude-code/.claude/skills/todo/SKILL.md +0 -64
- package/dist/claude-code/.claude/skills/turn-closeout/SKILL.md +0 -95
- package/dist/claude-code/.claude/skills/undo/SKILL.md +0 -31
- package/dist/claude-code/.claude/skills/unlock-decision/SKILL.md +0 -54
- package/dist/claude-code/.claude/skills/unpin/SKILL.md +0 -31
- package/dist/claude-code/.claude/skills/update/SKILL.md +0 -56
- package/dist/claude-code/.claude/skills/using-gdd/SKILL.md +0 -78
- package/dist/claude-code/.claude/skills/verify/SKILL.md +0 -113
- package/dist/claude-code/.claude/skills/verify/verify-procedure.md +0 -512
- package/dist/claude-code/.claude/skills/warm-cache/SKILL.md +0 -81
- package/dist/claude-code/.claude/skills/watch-authorities/SKILL.md +0 -82
- package/dist/claude-code/.claude/skills/zoom-out/SKILL.md +0 -26
- package/hooks/first-run-nudge.sh +0 -82
- package/hooks/inject-using-gdd.sh +0 -72
- package/hooks/run-hook.cmd +0 -35
- package/hooks/update-check.sh +0 -251
- package/scripts/lib/audit-aggregator/index.cjs +0 -219
- package/scripts/lib/hedge-ensemble.cjs +0 -217
- package/skills/discover/SKILL.md +0 -78
- package/skills/discover/discover-procedure.md +0 -222
- package/skills/new-cycle/milestone-completeness-rubric.md +0 -87
- package/skills/scan/SKILL.md +0 -92
- package/skills/scan/scan-procedure.md +0 -732
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@hegemonart/get-design-done",
|
|
3
|
-
"version": "1.57.
|
|
4
|
-
"description": "A design-quality pipeline for AI coding agents: brief, plan,
|
|
3
|
+
"version": "1.57.3",
|
|
4
|
+
"description": "A design-quality pipeline for AI coding agents: brief, explore, plan, design, and verify UI work against your design system.",
|
|
5
5
|
"author": "Hegemon",
|
|
6
6
|
"homepage": "https://github.com/hegemonart/get-design-done",
|
|
7
7
|
"repository": {
|
|
@@ -23,10 +23,11 @@
|
|
|
23
23
|
"sdk/",
|
|
24
24
|
"recipes/",
|
|
25
25
|
"docs/i18n/",
|
|
26
|
-
"dist/claude-code/",
|
|
27
26
|
"scripts/lib/",
|
|
28
27
|
"scripts/cli/",
|
|
29
28
|
"scripts/install.cjs",
|
|
29
|
+
"scripts/injection-patterns.cjs",
|
|
30
|
+
"scripts/bootstrap.cjs",
|
|
30
31
|
"SKILL.md",
|
|
31
32
|
"README.md",
|
|
32
33
|
"CHANGELOG.md",
|
|
@@ -84,10 +85,15 @@
|
|
|
84
85
|
"validate:schemas": "node --experimental-strip-types scripts/validate-schemas.ts",
|
|
85
86
|
"validate:frontmatter": "node --experimental-strip-types scripts/validate-frontmatter.ts agents/",
|
|
86
87
|
"detect:stale-refs": "node scripts/detect-stale-refs.cjs",
|
|
88
|
+
"validate:feature-counts": "node scripts/check-feature-counts.cjs",
|
|
89
|
+
"validate:registry-tiers": "node scripts/validate-registry-tiers.cjs",
|
|
90
|
+
"validate:no-internal-refs": "node scripts/validate-no-internal-refs.cjs",
|
|
91
|
+
"validate:cache-tiers": "node scripts/check-cache-tiers.cjs",
|
|
87
92
|
"scan:injection": "node scripts/run-injection-scanner-ci.cjs",
|
|
88
93
|
"scan:outbound": "node scripts/scan-outbound-network.cjs",
|
|
89
94
|
"scan:ws-bind": "node scripts/scan-ws-bind.cjs",
|
|
90
95
|
"test:size-budget": "node --test test/suite/agent-size-budget.test.cjs",
|
|
96
|
+
"validate:skill-surface": "node --test test/suite/skill-surface-sync.test.cjs",
|
|
91
97
|
"release:extract-changelog": "node scripts/extract-changelog-section.cjs",
|
|
92
98
|
"verify:version-sync": "node scripts/verify-version-sync.cjs",
|
|
93
99
|
"typecheck:session-runner": "tsc --noEmit",
|
|
@@ -7,10 +7,7 @@ This is the canonical template for the design pipeline's runtime state file.
|
|
|
7
7
|
- Every subsequent stage (discover, plan, design, verify) reads `.design/STATE.md` at entry and updates it at completion, per the Write Contract below.
|
|
8
8
|
- `.design/` is gitignored (not distributed with the plugin); only this template ships.
|
|
9
9
|
|
|
10
|
-
|
|
11
|
-
- `.planning/STATE.md` is GSD development state - used by the developers building this plugin.
|
|
12
|
-
- `.design/STATE.md` is pipeline runtime state - used by the pipeline when it runs in a user's project.
|
|
13
|
-
- Keep them strictly separate. Cross-references between them are deferred to Phase 6 per CONTEXT.md.
|
|
10
|
+
`.design/` is the runtime state for the design pipeline as it runs in a user's project. The plugin's own internal development workspace lives outside this directory and never reaches a user install.
|
|
14
11
|
|
|
15
12
|
---
|
|
16
13
|
|
|
@@ -47,7 +44,7 @@ skipped_stages: ""
|
|
|
47
44
|
<decisions>
|
|
48
45
|
<!-- Filled by discover stage. Format: -->
|
|
49
46
|
<!-- D-01: [decision text] (locked | tentative) -->
|
|
50
|
-
<!--
|
|
47
|
+
<!-- In team mode, an optional attribution suffix records provenance for multi-author merges: -->
|
|
51
48
|
<!-- D-01: [decision text] (locked | tentative) [author=<git-user> co-author=<gdd-instance-id>] -->
|
|
52
49
|
<!-- The suffix is optional + backward-compatible; see reference/multi-author-model.md. -->
|
|
53
50
|
</decisions>
|
|
@@ -59,7 +56,7 @@ skipped_stages: ""
|
|
|
59
56
|
</must_haves>
|
|
60
57
|
|
|
61
58
|
<prototyping>
|
|
62
|
-
<!--
|
|
59
|
+
<!-- Appended by sketch-wrap-up / spike-wrap-up + the prototype-gate. -->
|
|
63
60
|
<!-- Three child element types, each on its own line: -->
|
|
64
61
|
<!-- <sketch slug="…" cycle="…" decision="D-XX" status="resolved"/> -->
|
|
65
62
|
<!-- <spike slug="…" cycle="…" decision="D-XX" verdict="yes|no|partial" status="resolved"/> -->
|
|
@@ -69,7 +66,7 @@ skipped_stages: ""
|
|
|
69
66
|
</prototyping>
|
|
70
67
|
|
|
71
68
|
<quality_gate>
|
|
72
|
-
<!--
|
|
69
|
+
<!-- Written by the quality-gate skill (Stage 4.5). -->
|
|
73
70
|
<!-- Houses a single most-recent <run/> entry — append-mode would be overkill. -->
|
|
74
71
|
<!-- Format: -->
|
|
75
72
|
<!-- <run started_at="…" completed_at="…" status="pass|fail|timeout|skipped" iteration="N" commands_run="lint,typecheck,test"/> -->
|
|
@@ -173,22 +170,22 @@ Discover stage populates with observable behaviors. Verify stage updates status.
|
|
|
173
170
|
|
|
174
171
|
### `<prototyping>`
|
|
175
172
|
|
|
176
|
-
|
|
173
|
+
A checkpoint log - NOT a stage. Tracks sketch and spike outcomes plus cycle-scoped skip suppressions for the prototype gate.
|
|
177
174
|
|
|
178
175
|
- `<sketch slug=… cycle=… decision=D-XX status=resolved/>` - written by `sketch-wrap-up` after a sketch resolves into a D-XX decision.
|
|
179
176
|
- `<spike slug=… cycle=… decision=D-XX verdict=yes|no|partial status=resolved/>` - written by `spike-wrap-up` after a spike resolves; `verdict` captures the answer.
|
|
180
|
-
- `<skipped at=… cycle=… reason=…/>` - written by the prototype gate when the user declines to sketch/spike at a firing point.
|
|
177
|
+
- `<skipped at=… cycle=… reason=…/>` - written by the prototype gate when the user declines to sketch/spike at a firing point. The entry provides cycle-scoped suppression: it suppresses re-asking for the rest of the named cycle.
|
|
181
178
|
|
|
182
179
|
The block is **optional** - fresh STATE.md files do not carry it. The serializer omits the block entirely when no entries exist; appending the first entry is what materializes the block.
|
|
183
180
|
|
|
184
181
|
### `<quality_gate>`
|
|
185
182
|
|
|
186
|
-
|
|
183
|
+
Captures the most recent run of the Stage 4.5 quality gate (lint / typecheck / test / visual-regression) between Design and Verify. The block houses a single self-closing `<run/>` element - append-mode is overkill, so each gate completion overwrites the entry.
|
|
187
184
|
|
|
188
185
|
- `started_at` - ISO 8601 at which the parallel command run entered.
|
|
189
186
|
- `completed_at` - ISO 8601 at which the gate produced its terminal status.
|
|
190
|
-
- `status` - `pass | fail | timeout | skipped`. `pass` clears the verify-entry gate; `fail` blocks; `timeout` warns + proceeds
|
|
191
|
-
- `iteration` - non-negative integer fix-loop count
|
|
187
|
+
- `status` - `pass | fail | timeout | skipped`. `pass` clears the verify-entry gate; `fail` blocks; `timeout` warns + proceeds; `skipped` indicates the detection chain resolved zero commands.
|
|
188
|
+
- `iteration` - non-negative integer fix-loop count. `1` = single clean pass; `N === max_iters` with `status === 'fail'` = bounded exhaustion.
|
|
192
189
|
- `commands_run` - comma-separated names of the commands actually executed in Step 2 (e.g., `lint,typecheck,test`). Empty string when `status === 'skipped'`.
|
|
193
190
|
|
|
194
191
|
The block is **optional** - fresh STATE.md files do not carry it. The serializer omits the block entirely when `quality_gate === null`; the SKILL writes the first `<run/>` to materialize it.
|
|
@@ -245,7 +242,7 @@ Every stage that runs in the pipeline MUST follow this contract when reading and
|
|
|
245
242
|
|
|
246
243
|
---
|
|
247
244
|
|
|
248
|
-
## Notes for
|
|
245
|
+
## Notes for implementors
|
|
249
246
|
|
|
250
247
|
- Do not add new top-level XML sections without updating this template.
|
|
251
248
|
- The write contract is non-negotiable - stages that skip the read-at-entry step break resume.
|
|
@@ -247,7 +247,7 @@ Attach to findings under the Visual Hierarchy pillar that relate to compositiona
|
|
|
247
247
|
|
|
248
248
|
### `i18n_readiness`
|
|
249
249
|
|
|
250
|
-
Attach to findings under the Accessibility pillar (for WCAG 3.1.1 / 3.1.2 violations) or under the Anti-Pattern Compliance pillar (for hardcoded-string / overflow-at-+40% defects). Emitted by the `agents/design-verifier.md` §i18n probes section
|
|
250
|
+
Attach to findings under the Accessibility pillar (for WCAG 3.1.1 / 3.1.2 violations) or under the Anti-Pattern Compliance pillar (for hardcoded-string / overflow-at-+40% defects). Emitted by the `agents/design-verifier.md` §i18n probes section. See [`./i18n.md`](./i18n.md) §WCAG i18n + §Verifier Integration Spec. Does NOT change pillar weights or scores.
|
|
251
251
|
|
|
252
252
|
### `verb_axes` (anti-slop)
|
|
253
253
|
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
# Cache-Tier Doctrine
|
|
2
|
+
|
|
3
|
+
The Anthropic prompt cache has a 5-minute TTL and is invalidated by a single byte change in the prefix. Every agent body imports `reference/shared-preamble.md` as the first thing it reads; that import expands to a flat byte block at the top of every agent's prompt. Stable bytes there mean stable cache; churning bytes there mean every agent's cache misses on every spawn.
|
|
4
|
+
|
|
5
|
+
This doctrine pins the bytes that have to stay stable.
|
|
6
|
+
|
|
7
|
+
## The four tiers
|
|
8
|
+
|
|
9
|
+
| Tier | Lifetime | Files | Edit cost |
|
|
10
|
+
|------|----------|-------|-----------|
|
|
11
|
+
| **L0** | Framework-invariant | `reference/meta-rules.md` + `reference/shared-preamble.md` | Invalidates cache for every agent simultaneously. CI gate enforces SHA-256 stability; ratchet via `--rebaseline` only when the framework genuinely changes. |
|
|
12
|
+
| **L1** | Per-agent stable | Agent body itself (role, tools contract, output format) | Invalidates cache for the one agent. Edits are routine. |
|
|
13
|
+
| **L2** | Per-spawn dynamic | `<required_reading>` block + per-invocation prompt | Never caches. Edits are free. |
|
|
14
|
+
| **L3** | Reference-only | `reference/*.md` other than L0 | Loaded per-agent on demand; not part of the cache prefix. Edits do not affect cache. |
|
|
15
|
+
|
|
16
|
+
## The L0 contract
|
|
17
|
+
|
|
18
|
+
1. **Two files, no more.** L0 = `reference/meta-rules.md` (framework-invariant rules: required reading, writes protocol, deviation handling, completion markers, context-exhaustion + budget) + `reference/shared-preamble.md` (the aggregator that imports meta-rules and contributes the design-family pillar lists). Any third L0 file requires a doctrine update.
|
|
19
|
+
2. **Byte-stable across cycles.** Section heading text, prose order, ordering of bulleted lists, even whitespace runs; all are essential. An edit that "just rewords a sentence" still invalidates cache for every agent for one session per agent.
|
|
20
|
+
3. **CI gate enforces stability.** `scripts/check-cache-tiers.cjs` computes SHA-256 of each L0 file and compares to `test/fixtures/baselines/l0-hashes.json`. Drift fails the build. A real edit requires `--rebaseline` and a baseline-hash commit alongside the L0 edit.
|
|
21
|
+
4. **Pre-warming exists for legitimate L0 edits.** Run `/gdd:warm-cache` after an L0 edit lands to pre-load the new prefix so the next real spawn is a hit rather than a miss.
|
|
22
|
+
|
|
23
|
+
## What goes where
|
|
24
|
+
|
|
25
|
+
- A new design-pillar list shared by 5 design-family skills → `shared-preamble.md` (L0). Costs cache miss; ratchet the L0 baseline.
|
|
26
|
+
- A new validator rule for a single agent → that agent body (L1). No L0 impact.
|
|
27
|
+
- A per-invocation context block; the brief, the must-haves, the user's specific request → `<required_reading>` (L2). No cache implications either way.
|
|
28
|
+
- A reference catalog of heuristics, anti-patterns, WCAG thresholds → `reference/*.md` (L3). No cache implications.
|
|
29
|
+
|
|
30
|
+
## Verification
|
|
31
|
+
|
|
32
|
+
- `npm run validate:registry-tiers` - confirms `registry.json` entries' `tier` field is one of L0/L1/L2/L3.
|
|
33
|
+
- `npm run validate:cache-tiers` - confirms L0 file SHA-256 matches the baseline.
|
|
34
|
+
- Both run in CI as part of the default test suite.
|
|
35
|
+
|
|
36
|
+
## When to ratchet
|
|
37
|
+
|
|
38
|
+
Ratchet (`--rebaseline`) only when:
|
|
39
|
+
|
|
40
|
+
1. Framework invariant changes (rare).
|
|
41
|
+
2. A design-pillar list shared by ≥3 skills needs updating.
|
|
42
|
+
3. A factual claim that EVERY agent must know becomes false.
|
|
43
|
+
|
|
44
|
+
If any of those three is true: edit the L0 file, run `node scripts/check-cache-tiers.cjs --rebaseline`, commit both the L0 edit and the updated baseline. Reviewers see the L0-hash diff and understand the cache cost.
|
|
45
|
+
|
|
46
|
+
If none of the three is true: the edit belongs in L1 (an agent body), L2 (a per-spawn block), or L3 (a reference doc). Reject the L0 edit; relocate.
|
|
@@ -122,7 +122,7 @@ Agents never read config directly - the profile is always injected at spawn time
|
|
|
122
122
|
|
|
123
123
|
## .design/budget.json Schema (Phase 10.1)
|
|
124
124
|
|
|
125
|
-
Governs the optimization layer introduced in Phase 10.1. Read by every `Agent` tool spawn via `hooks/budget-enforcer.
|
|
125
|
+
Governs the optimization layer introduced in Phase 10.1. Read by every `Agent` tool spawn via `hooks/budget-enforcer.ts` (PreToolUse). Bootstrap writes defaults if the file is missing.
|
|
126
126
|
|
|
127
127
|
## Full Schema
|
|
128
128
|
|
|
@@ -215,11 +215,11 @@ If `.design/budget.json` is missing when any `/gdd:*` command runs, `scripts/boo
|
|
|
215
215
|
|
|
216
216
|
## .design/telemetry/costs.jsonl + .design/agent-metrics.json (Phase 10.1)
|
|
217
217
|
|
|
218
|
-
Phase 10.1 introduces two measurement artifacts written by `hooks/budget-enforcer.
|
|
218
|
+
Phase 10.1 introduces two measurement artifacts written by `hooks/budget-enforcer.ts` (PreToolUse on `Agent` spawns) and `scripts/aggregate-agent-metrics.ts` (detached child of the hook + refresh step of `/gdd:optimize`). Both files live under the gitignored `.design/` directory - they are local session state, not committed.
|
|
219
219
|
|
|
220
220
|
### .design/telemetry/costs.jsonl
|
|
221
221
|
|
|
222
|
-
Append-only ledger. One JSON object per line. Written by `hooks/budget-enforcer.
|
|
222
|
+
Append-only ledger. One JSON object per line. Written by `hooks/budget-enforcer.ts` on every PreToolUse decision: spawn allowed, spawn blocked by cap, tier downgraded, cache-hit short-circuit, lazy-gate skip. Consumed by the Phase 11 reflector (`agents/design-reflector.md`) and by `/gdd:optimize`.
|
|
223
223
|
|
|
224
224
|
**Row schema** (verbatim from ROADMAP criterion 7):
|
|
225
225
|
|
|
@@ -292,11 +292,11 @@ Both files sit inside `.design/`, which is already `.gitignore`d at the project
|
|
|
292
292
|
|
|
293
293
|
### Refresh cadence
|
|
294
294
|
|
|
295
|
-
The aggregator is invoked as a detached child process by `hooks/budget-enforcer.
|
|
295
|
+
The aggregator is invoked as a detached child process by `hooks/budget-enforcer.ts` after every telemetry row write. It is also invoked directly by `/gdd:optimize` before analysis. There is no cron, no daemon, and no scheduled task - metrics are always at most one spawn stale.
|
|
296
296
|
|
|
297
297
|
## .design/cache-manifest.json Schema (Phase 10.1)
|
|
298
298
|
|
|
299
|
-
Authored and maintained by `skills/cache-manager/SKILL.md`. Read by `hooks/budget-enforcer.
|
|
299
|
+
Authored and maintained by `skills/cache-manager/SKILL.md`. Read by `hooks/budget-enforcer.ts` (PreToolUse on Agent spawns) for short-circuiting cached spawns per D-05. Layer B of the D-08 two-layer cache. Flat KV shape - keys are SHA-256 hex of the deterministic input-hash, values are entry objects. Schema version 1.
|
|
300
300
|
|
|
301
301
|
## Full Schema
|
|
302
302
|
|
|
@@ -357,22 +357,22 @@ String - ISO-8601 UTC timestamp equal to `written_at + ttl_seconds`. Precomputed
|
|
|
357
357
|
- TTL is copied into each entry at write time - **not** recomputed on read. Budget.json changes do not retroactively affect existing entries.
|
|
358
358
|
- `expires_at` = `written_at + ttl_seconds`, computed once, stored in the entry.
|
|
359
359
|
- Stale entries are **not** actively purged (lazy cleanup): they remain in the file until overwritten by a new write with the same key, or pruned manually. A proactive reaper is out of v1 scope.
|
|
360
|
-
- Readers (`hooks/budget-enforcer.
|
|
360
|
+
- Readers (`hooks/budget-enforcer.ts`) check `Date.now() / 1000 > Date.parse(expires_at) / 1000`; if true, return miss.
|
|
361
361
|
|
|
362
362
|
## Read/Write contract
|
|
363
363
|
|
|
364
364
|
- **Single writer**: `skills/cache-manager/SKILL.md` Phase 4 (`write-result-on-completion`). Other code must not write this file directly.
|
|
365
|
-
- **Multiple readers**: `hooks/budget-enforcer.
|
|
365
|
+
- **Multiple readers**: `hooks/budget-enforcer.ts`, any orchestrator that runs Phase 2 (`lookup`) for dry-run planning. Readers treat malformed JSON as "manifest absent" (empty cache) - do not throw.
|
|
366
366
|
- **Concurrency**: Claude Code agent spawns are serialized at the hook level (PreToolUse is synchronous). No file locking is needed at v1 scale. Concurrent writes from parallel orchestrators are theoretically possible but exceedingly rare; last-writer-wins is acceptable (cache miss on next read re-populates).
|
|
367
367
|
|
|
368
368
|
## Bootstrap behavior
|
|
369
369
|
|
|
370
|
-
If `.design/cache-manifest.json` is missing when `hooks/budget-enforcer.
|
|
370
|
+
If `.design/cache-manifest.json` is missing when `hooks/budget-enforcer.ts` reads it, the hook treats every lookup as a miss and the spawn proceeds normally. No bootstrap action is required - the manifest is created lazily on first successful spawn when `skills/cache-manager/SKILL.md` Phase 4 fires. Unlike `.design/budget.json`, missing cache-manifest.json is the **correct** initial state on a fresh repo.
|
|
371
371
|
|
|
372
372
|
## Cross-references
|
|
373
373
|
|
|
374
374
|
- `skills/cache-manager/SKILL.md` - producer; documents the four-phase contract.
|
|
375
|
-
- `hooks/budget-enforcer.
|
|
375
|
+
- `hooks/budget-enforcer.ts` (Plan 10.1-01) - reader; short-circuits spawns on hit.
|
|
376
376
|
- `.design/budget.json` - provides `cache_ttl_seconds` default.
|
|
377
377
|
- `.design/telemetry/costs.jsonl` (Plan 10.1-05) - records `cache_hit: true` rows with zero tokens and zero cost when the short-circuit fires.
|
|
378
378
|
- D-05, D-08, D-09 in `.planning/phases/10.1-optimization-layer-cost-governance/10.1-CONTEXT.md` - decision lineage.
|
package/reference/i18n.md
CHANGED
|
@@ -465,7 +465,7 @@ The auditor catches a missed 3.1.2 by scanning for untranslated quotes, proper n
|
|
|
465
465
|
|
|
466
466
|
## Verifier Integration Spec
|
|
467
467
|
|
|
468
|
-
This section specifies two probes for [agents/design-verifier.md](../agents/design-verifier.md).
|
|
468
|
+
This section specifies two probes for [agents/design-verifier.md](../agents/design-verifier.md). The verifier agent implements; this file owns the spec. Both probes attach to a new `### i18n probes` subsection at the end of Stage 1 - Re-Audit + Category Scoring (after the existing `### Category Scores` subsection), and both classify findings under the orthogonal lens-tag `i18n_readiness` (no new pillar, no audit-format change).
|
|
469
469
|
|
|
470
470
|
### Probe 1: Hardcoded-string scan
|
|
471
471
|
|
|
@@ -8,8 +8,11 @@ Path: `.design/intel/` (gitignored - runtime data only)
|
|
|
8
8
|
The intel store is a set of flat JSON files (slices) that index the design surface.
|
|
9
9
|
Each slice is an independent file. Agents read slices they need; the updater rewrites only changed slices.
|
|
10
10
|
|
|
11
|
-
Slices are rebuilt by `scripts/build-intel.cjs` (full initial build) and
|
|
12
|
-
`gdd-intel-updater` agent (incremental updates
|
|
11
|
+
Slices are rebuilt by `scripts/build-intel.cjs` (full initial build) and refreshed on-demand
|
|
12
|
+
by the `gdd-intel-updater` agent (incremental updates when run by the user or a skill that
|
|
13
|
+
spawns it). The store is **not auto-current**: it reflects the last invocation of build-intel
|
|
14
|
+
or the updater. Skills that depend on fresh intel should invoke the updater first or treat
|
|
15
|
+
slice timestamps as best-effort.
|
|
13
16
|
|
|
14
17
|
## Slice Definitions
|
|
15
18
|
|
|
@@ -244,6 +247,38 @@ Cross-reference graph: nodes are files, edges are dependency relationships from
|
|
|
244
247
|
}
|
|
245
248
|
```
|
|
246
249
|
|
|
250
|
+
---
|
|
251
|
+
|
|
252
|
+
### agent-tiers.json
|
|
253
|
+
|
|
254
|
+
Runtime-neutral tier index per agent; populated by `gdd-intel-updater` so downstream
|
|
255
|
+
tooling reads tier information without re-parsing every agent's markdown frontmatter.
|
|
256
|
+
Both the model-tier (`opus|sonnet|haiku`) and the equivalent runtime-neutral
|
|
257
|
+
reasoning class (`high|medium|low`) are emitted side-by-side using the locked
|
|
258
|
+
equivalence map (opus↔high, sonnet↔medium, haiku↔low).
|
|
259
|
+
|
|
260
|
+
```json
|
|
261
|
+
{
|
|
262
|
+
"generated": "<ISO-8601>",
|
|
263
|
+
"agents": [
|
|
264
|
+
{
|
|
265
|
+
"name": "design-planner",
|
|
266
|
+
"default_tier": "opus",
|
|
267
|
+
"reasoning_class": "high"
|
|
268
|
+
},
|
|
269
|
+
{
|
|
270
|
+
"name": "design-verifier-gate",
|
|
271
|
+
"default_tier": "haiku",
|
|
272
|
+
"reasoning_class": "low"
|
|
273
|
+
}
|
|
274
|
+
]
|
|
275
|
+
}
|
|
276
|
+
```
|
|
277
|
+
|
|
278
|
+
Consumers: router, budget enforcer, multi-runtime tier resolver.
|
|
279
|
+
Validation: every agent in `agents/*.md` (except README.md) MUST appear exactly once.
|
|
280
|
+
Written atomically (.tmp + rename) when the updater runs; absent on a fresh checkout.
|
|
281
|
+
|
|
247
282
|
## Incremental Update Rules
|
|
248
283
|
|
|
249
284
|
1. On each run, compare current file `mtime` and `git_hash` against `files.json` entries.
|
package/reference/meta-rules.md
CHANGED
|
@@ -14,7 +14,7 @@ When the orchestrator's prompt contains a `<required_reading>` block, you MUST r
|
|
|
14
14
|
|
|
15
15
|
Only write files declared in your frontmatter `writes:` list. Agents with `reads-only: true` must never call `Write` or `Edit` on any file. If the task appears to require writing outside your declared scope, stop and return a `<blocker>` in STATE.md rather than expanding your write surface.
|
|
16
16
|
|
|
17
|
-
If your agent runs in a
|
|
17
|
+
If your agent runs in a context that enforces atomic commits (most do), commit only files in your declared `writes:` list. Use the repo's conventional-commit convention: `feat(<scope>): ...` for new capability, `fix(<scope>): ...` for bug fixes, `docs(<scope>): ...` for documentation. The `<scope>` should match a recognisable subsystem in the downstream project (e.g. `feat(verify): ...`, `fix(planner): ...`); do not propagate any internal plugin-development numbering.
|
|
18
18
|
|
|
19
19
|
## Deviation Handling
|
|
20
20
|
|
|
@@ -43,7 +43,7 @@ The orchestrator detects failure by reading STATE.md for a `<blocker>`, not by t
|
|
|
43
43
|
|
|
44
44
|
## Context-Exhaustion & Budget Awareness
|
|
45
45
|
|
|
46
|
-
A PostToolUse hook at `hooks/context-exhaustion.
|
|
46
|
+
A PostToolUse hook at `hooks/context-exhaustion.ts` watches your tool output for the string `<context-exhaustion>` in your response. If you determine you cannot finish the task in the remaining context, emit:
|
|
47
47
|
|
|
48
48
|
```xml
|
|
49
49
|
<context-exhaustion>
|
|
@@ -54,12 +54,12 @@ resume-hint: <one-sentence instruction for a resumption spawn>
|
|
|
54
54
|
|
|
55
55
|
…before your completion marker. The hook captures this into STATE.md so the orchestrator can re-spawn you with a narrower scope. Do not guess when you're near exhaustion - only emit when a concrete obstacle (file too large to read, required diff too wide) forced the call.
|
|
56
56
|
|
|
57
|
-
A PreToolUse hook at `hooks/budget-enforcer.
|
|
57
|
+
A PreToolUse hook at `hooks/budget-enforcer.ts` intercepts every `Task` spawn (including the one that invoked you). The hook may:
|
|
58
58
|
- **Short-circuit** your spawn with a cached result from `.design/cache-manifest.json` (transparent - you never run).
|
|
59
59
|
- **Downgrade** your tier to Haiku at the 80% per-task cap soft-threshold, silently (`auto_downgrade_on_cap: true` in `.design/budget.json`, D-03).
|
|
60
60
|
- **Hard-block** your spawn at the 100% per-task or per-phase cap with an actionable error (D-02).
|
|
61
61
|
|
|
62
|
-
Implication for you as the agent: **do not assume a specific model tier is live.** Your output must be correct whether you run on Haiku, Sonnet, or Opus. If a task genuinely requires reasoning density beyond Haiku, the `size_budget` + `default-tier` combination should have been set at authoring time so the router routes it correctly - the remedy is a frontmatter update
|
|
62
|
+
Implication for you as the agent: **do not assume a specific model tier is live.** Your output must be correct whether you run on Haiku, Sonnet, or Opus. If a task genuinely requires reasoning density beyond Haiku, the `size_budget` + `default-tier` combination should have been set at authoring time so the router routes it correctly - the remedy is a frontmatter update via the reflector loop, not a mid-run assumption.
|
|
63
63
|
|
|
64
64
|
---
|
|
65
65
|
|
package/reference/model-tiers.md
CHANGED
|
@@ -82,7 +82,7 @@ When the budget-enforcer hook resolves which tier to spawn an agent at, it walks
|
|
|
82
82
|
|
|
83
83
|
1. **`.design/budget.json.tier_overrides[{agent_name}]`** - per-project configuration. Wins over frontmatter. Use this knob when the project has budget constraints that differ from the plugin defaults.
|
|
84
84
|
2. **Agent frontmatter `default-tier`** (this file's per-agent map) - plugin default. Set at authoring time.
|
|
85
|
-
3. **Hardcoded fallback `"sonnet"`** - belt-and-suspenders in `hooks/budget-enforcer.
|
|
85
|
+
3. **Hardcoded fallback `"sonnet"`** - belt-and-suspenders in `hooks/budget-enforcer.ts` for agents that somehow lack the frontmatter field. Should never fire in practice after Phase 10.1.
|
|
86
86
|
|
|
87
87
|
Plus two modifiers that can override the above at spawn time:
|
|
88
88
|
|
|
@@ -108,7 +108,7 @@ Phase 11's reflector encodes these heuristics. This section documents the philos
|
|
|
108
108
|
|
|
109
109
|
## Integration Points
|
|
110
110
|
|
|
111
|
-
- **`hooks/budget-enforcer.
|
|
111
|
+
- **`hooks/budget-enforcer.ts`** (Plan 10.1-01 Task 04) - implements the precedence chain above. `resolveTier(agent, agentDefaultTier, overrides)` is the concrete function.
|
|
112
112
|
- **`skills/router/SKILL.md`** (Plan 10.1-01 Task 03) - consults this file's tier map + `reference/model-prices.md` to produce `estimated_cost_usd` pre-spawn.
|
|
113
113
|
- **`skills/optimize/SKILL.md`** (Plan 10.1-04) - advisory command; may suggest tier moves based on telemetry + this doc's heuristics.
|
|
114
114
|
- **`agents/design-reflector.md`** (Phase 11, already merged) - may propose edits to this file + paired frontmatter updates. Proposals land in `.design/reflections/` for user review.
|