@hegemonart/get-design-done 1.57.2 → 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 +4 -4
- package/.claude-plugin/plugin.json +2 -2
- package/CHANGELOG.md +48 -0
- package/README.md +1 -1
- package/SKILL.md +2 -6
- package/connections/cursor.md +0 -1
- package/package.json +1 -2
- package/reference/skill-graph.md +1 -5
- package/scripts/lib/manifest/skills.json +3 -23
- package/scripts/lib/worktree-resolve.cjs +4 -16
- package/skills/README.md +46 -0
- package/skills/bootstrap-ds/SKILL.md +1 -1
- package/skills/compare/SKILL.md +1 -1
- package/skills/new-cycle/SKILL.md +1 -1
- package/skills/peer-cli-customize/SKILL.md +0 -1
- package/skills/peers/SKILL.md +1 -1
- package/skills/reflect/procedures/capability-gap-scan.md +0 -1
- package/skills/report-issue/report-issue-procedure.md +0 -1
- package/skills/synthesize/SKILL.md +1 -1
- package/skills/turn-closeout/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 -118
- 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 -118
- 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 -50
- 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/paper-write/SKILL.md +0 -54
- 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/pencil-write/SKILL.md +0 -54
- 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 -511
- 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/run-hook.cmd +0 -35
- 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
|
@@ -1,222 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: discover-procedure
|
|
3
|
-
type: meta-rules
|
|
4
|
-
version: 1.0.0
|
|
5
|
-
phase: 28.5
|
|
6
|
-
tags: [discover, procedure, extracted, pipeline-stage, connection-probe, design-context-builder]
|
|
7
|
-
last_updated: 2026-05-18
|
|
8
|
-
---
|
|
9
|
-
|
|
10
|
-
Source: extracted from `skills/discover/SKILL.md` (Phase 28.5 rework - D-10 extract-then-link).
|
|
11
|
-
The skill's essential workflow stays in `../skills/discover/SKILL.md`; this file holds the
|
|
12
|
-
detail the agent reaches for when executing a specific step (state integration, three
|
|
13
|
-
connection probes, design-context-builder + design-context-checker agent prompts, lazy gate
|
|
14
|
-
prompt, auto-mode CSS detection).
|
|
15
|
-
|
|
16
|
-
# Discover Procedure
|
|
17
|
-
|
|
18
|
-
Detailed procedure for the get-design-done `discover` Stage 1.5 orchestrator. Companion to
|
|
19
|
-
`../skills/discover/SKILL.md`. Read this file when executing a specific discover step.
|
|
20
|
-
|
|
21
|
-
---
|
|
22
|
-
|
|
23
|
-
## State Integration
|
|
24
|
-
|
|
25
|
-
1. Read `.design/STATE.md`.
|
|
26
|
-
- If missing: create minimal skeleton from `reference/STATE-TEMPLATE.md` with stage=discover, status=in_progress, task_progress=0/1, and log warning: "STATE.md not found - created fresh. If this is a resumed session, run /get-design-done:scan first."
|
|
27
|
-
- If present and stage==discover and status==in_progress: RESUME - continue existing interview; do not reset.
|
|
28
|
-
- Otherwise: normal transition - set frontmatter stage=discover, <position> stage=discover, status=in_progress, task_progress=0/1.
|
|
29
|
-
2. **Probe connection availability** - ToolSearch runs FIRST because MCP tools may be in the deferred tool set. This is the canonical probe pattern (spec lives in `connections/connections.md`; copied inline because SKILL.md has no include mechanism - if the probe pattern changes, update all stages that copied it). See §Connection Probes below.
|
|
30
|
-
3. Update last_checkpoint. Write STATE.md.
|
|
31
|
-
|
|
32
|
-
---
|
|
33
|
-
|
|
34
|
-
## Connection Probes
|
|
35
|
-
|
|
36
|
-
### A - Figma probe (variant-agnostic)
|
|
37
|
-
|
|
38
|
-
```
|
|
39
|
-
A1. ToolSearch({ query: "figma get_metadata use_figma", max_results: 10 })
|
|
40
|
-
A2. Parse tool names matching /^mcp__([^_]*figma[^_]*)__(get_metadata|use_figma)$/i
|
|
41
|
-
into read-capable and write-capable prefix sets.
|
|
42
|
-
A3. Empty read set -> figma: not_configured (skip all Figma paths)
|
|
43
|
-
One or more matches -> pick prefix via tiebreaker:
|
|
44
|
-
(1) both-sets > reads-only,
|
|
45
|
-
(2) `figma` > others,
|
|
46
|
-
(3) non-`figma-desktop` > desktop,
|
|
47
|
-
(4) alphabetical.
|
|
48
|
-
A4. Call {prefix}get_metadata:
|
|
49
|
-
Success -> figma: available (prefix=mcp__<prefix>__, writes=<true|false>)
|
|
50
|
-
Error -> figma: unavailable
|
|
51
|
-
```
|
|
52
|
-
|
|
53
|
-
### B - Refero probe (ToolSearch presence is sufficient - no tool call needed)
|
|
54
|
-
|
|
55
|
-
```
|
|
56
|
-
B1. ToolSearch({ query: "refero", max_results: 5 })
|
|
57
|
-
B2. Empty result -> refero: not_configured
|
|
58
|
-
Non-empty -> refero: available
|
|
59
|
-
```
|
|
60
|
-
|
|
61
|
-
### C - Pinterest probe (ToolSearch-only, same pattern as Refero)
|
|
62
|
-
|
|
63
|
-
```
|
|
64
|
-
C1. ToolSearch({ query: "mcp-pinterest", max_results: 5 })
|
|
65
|
-
C2. Empty result -> pinterest: not_configured
|
|
66
|
-
Non-empty -> pinterest: available
|
|
67
|
-
```
|
|
68
|
-
|
|
69
|
-
No live `pinterest_search` call at probe time - ToolSearch presence is sufficient. The synthesizer makes the actual search calls.
|
|
70
|
-
|
|
71
|
-
### D - Lazyweb probe (ToolSearch-only - free, discover Tier 1 per D-01)
|
|
72
|
-
|
|
73
|
-
```
|
|
74
|
-
D1. ToolSearch({ query: "lazyweb", max_results: 5 })
|
|
75
|
-
D2. Empty result -> lazyweb: not_configured
|
|
76
|
-
Non-empty -> lazyweb: available
|
|
77
|
-
```
|
|
78
|
-
|
|
79
|
-
### E - Mobbin probe (ToolSearch-only - paid, discover Tier 2 per D-01)
|
|
80
|
-
|
|
81
|
-
```
|
|
82
|
-
E1. ToolSearch({ query: "mobbin", max_results: 5 })
|
|
83
|
-
E2. Empty result -> mobbin: not_configured
|
|
84
|
-
Non-empty -> mobbin: available
|
|
85
|
-
```
|
|
86
|
-
|
|
87
|
-
**Reference-source tier order (cost-aware, D-01):** Lazyweb (free, tried first) → Mobbin / Refero (paid, whichever is bound + subscribed) → Pinterest → awesome-design-md → WebFetch.
|
|
88
|
-
|
|
89
|
-
After all probes (A, B, C, D, E), update `.design/STATE.md` `<connections>` with the results and continue. Downstream stages (design-context-builder) read `<connections>` from STATE.md rather than re-probing.
|
|
90
|
-
|
|
91
|
-
---
|
|
92
|
-
|
|
93
|
-
## Auto Mode
|
|
94
|
-
|
|
95
|
-
Auto Mode CSS detection (when `auto_mode: true` is passed to the builder):
|
|
96
|
-
|
|
97
|
-
1. If tailwind.config.{js,cjs,mjs,ts} exists -> Tailwind-only project
|
|
98
|
-
- Skip CSS file grep
|
|
99
|
-
- Parse tailwind.config for color palette, spacing scale, font families
|
|
100
|
-
- Use tailwind.config values as the baseline style signal
|
|
101
|
-
2. Else -> fall through to existing CSS file grep logic
|
|
102
|
-
|
|
103
|
-
---
|
|
104
|
-
|
|
105
|
-
## Step 1 - Spawn design-context-builder
|
|
106
|
-
|
|
107
|
-
```
|
|
108
|
-
Task("design-context-builder", """
|
|
109
|
-
<required_reading>
|
|
110
|
-
@.design/STATE.md
|
|
111
|
-
@reference/audit-scoring.md
|
|
112
|
-
@reference/anti-patterns.md
|
|
113
|
-
</required_reading>
|
|
114
|
-
|
|
115
|
-
You are the design-context-builder agent. Auto-detect existing design system
|
|
116
|
-
state via grep/glob before asking questions. Interview the user ONLY for areas
|
|
117
|
-
where auto-detect returned no confident answer. Write .design/DESIGN-CONTEXT.md.
|
|
118
|
-
|
|
119
|
-
Baseline audit directory detection (ordered fallback chain):
|
|
120
|
-
1. If src/ exists -> use src/
|
|
121
|
-
2. Elif app/ exists -> use app/ (Next.js App Router)
|
|
122
|
-
3. Elif pages/ exists -> use pages/ (Next.js Pages Router)
|
|
123
|
-
4. Elif lib/ exists -> use lib/ (library-only projects)
|
|
124
|
-
5. Else -> flag "layout unknown", skip baseline, note in DESIGN-CONTEXT.md
|
|
125
|
-
|
|
126
|
-
Common gray areas to probe during discovery (Area 7):
|
|
127
|
-
1. font-change risk — switching type families when existing UI has body copy in a specific family. Ask: "Is the current body font intentional or inherited? OK to change?"
|
|
128
|
-
2. token-layer introduction risk — adding CSS custom properties to a codebase that uses direct values. Ask: "Do you want design tokens (--primary, --surface) or inline values (hex, rgb)?"
|
|
129
|
-
3. Component rebuild vs restyle — when to keep existing component, when to rebuild from scratch. Ask: "For <component>, restyle in place or rebuild?"
|
|
130
|
-
|
|
131
|
-
Context:
|
|
132
|
-
auto_mode: <true|false>
|
|
133
|
-
|
|
134
|
-
Output file: .design/DESIGN-CONTEXT.md
|
|
135
|
-
Emit `## CONTEXT COMPLETE` when done.
|
|
136
|
-
""")
|
|
137
|
-
```
|
|
138
|
-
|
|
139
|
-
Wait for `## CONTEXT COMPLETE`. Update STATE.md task_progress = 0.5.
|
|
140
|
-
|
|
141
|
-
---
|
|
142
|
-
|
|
143
|
-
## Step 1.75 - Lazy gate: should design-context-checker run? (Plan 10.1-04, D-21)
|
|
144
|
-
|
|
145
|
-
Spawn the cheap Haiku gate before the full context-checker:
|
|
146
|
-
|
|
147
|
-
Task("design-context-checker-gate", """
|
|
148
|
-
<required_reading>
|
|
149
|
-
@.design/STATE.md
|
|
150
|
-
</required_reading>
|
|
151
|
-
|
|
152
|
-
You are the design-context-checker-gate.
|
|
153
|
-
|
|
154
|
-
Context:
|
|
155
|
-
diff_files: <git diff `--name-only` HEAD~1..HEAD>
|
|
156
|
-
diff_body: (not needed - single-file heuristic)
|
|
157
|
-
baseline_sha: <HEAD~1>
|
|
158
|
-
|
|
159
|
-
Apply the heuristic (DESIGN-CONTEXT.md in diff_files?). Emit JSON + `## GATE COMPLETE`.
|
|
160
|
-
""")
|
|
161
|
-
|
|
162
|
-
Wait for `## GATE COMPLETE`. Parse JSON:
|
|
163
|
-
|
|
164
|
-
- `spawn: false` -> append `lazy_skipped: true` telemetry row for `design-context-checker`, skip Step 2, set STATE.md `<position>` as if checker passed (rationale: DESIGN-CONTEXT.md didn't change, last validation still holds), emit `design-context-checker skipped — <rationale>`.
|
|
165
|
-
- `spawn: true` -> proceed to Step 2 as currently written.
|
|
166
|
-
|
|
167
|
-
**Note:** On first-run discover, the builder just wrote DESIGN-CONTEXT.md so the gate returns `spawn: true`. The gate meaningfully short-circuits only on re-runs where the builder made no changes.
|
|
168
|
-
|
|
169
|
-
**Parallel synthesizer note:** discover does not spawn parallel researchers in v1, so `skills/synthesize/` is not wired here. If future variants spawn N parallel interviewers/auto-detectors, wire synthesize between dispatch and collate as in `skills/map/` Step 3.5.
|
|
170
|
-
|
|
171
|
-
---
|
|
172
|
-
|
|
173
|
-
## Step 2 - Spawn design-context-checker
|
|
174
|
-
|
|
175
|
-
```
|
|
176
|
-
Task("design-context-checker", """
|
|
177
|
-
<required_reading>
|
|
178
|
-
@.design/STATE.md
|
|
179
|
-
@.design/DESIGN-CONTEXT.md
|
|
180
|
-
</required_reading>
|
|
181
|
-
|
|
182
|
-
You are the design-context-checker agent. Validate DESIGN-CONTEXT.md across
|
|
183
|
-
6 dimensions. Return APPROVED or BLOCKED with per-dimension verdicts.
|
|
184
|
-
|
|
185
|
-
Emit `## CONTEXT CHECK COMPLETE` when done.
|
|
186
|
-
""")
|
|
187
|
-
```
|
|
188
|
-
|
|
189
|
-
Wait for `## CONTEXT CHECK COMPLETE`.
|
|
190
|
-
|
|
191
|
-
---
|
|
192
|
-
|
|
193
|
-
## Step 3 - Handle checker verdict
|
|
194
|
-
|
|
195
|
-
If APPROVED: proceed to state update.
|
|
196
|
-
If BLOCKED: present dimensions that BLOCKED to user, offer fix-and-retry loop (re-spawn builder with specific fix instructions). Do not proceed to planning.
|
|
197
|
-
|
|
198
|
-
---
|
|
199
|
-
|
|
200
|
-
## State Update (exit)
|
|
201
|
-
|
|
202
|
-
1. Set <position> status=completed, task_progress=1/1.
|
|
203
|
-
2. Set <timestamps> discover_completed_at=<ISO 8601 now>.
|
|
204
|
-
3. Update last_checkpoint. Write STATE.md.
|
|
205
|
-
|
|
206
|
-
---
|
|
207
|
-
|
|
208
|
-
## After Writing
|
|
209
|
-
|
|
210
|
-
```
|
|
211
|
-
=== Discovery complete ===
|
|
212
|
-
Saved: .design/DESIGN-CONTEXT.md
|
|
213
|
-
|
|
214
|
-
Baseline score: [N]/100 ([grade])
|
|
215
|
-
Key issues: [top issue 1], [top issue 2], [top issue 3]
|
|
216
|
-
|
|
217
|
-
Next: /get-design-done:plan
|
|
218
|
-
-> Decomposes your context into executable design tasks.
|
|
219
|
-
==========================
|
|
220
|
-
```
|
|
221
|
-
|
|
222
|
-
Do not proceed to planning automatically unless `--auto` was passed.
|
|
@@ -1,96 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: gdd-discuss
|
|
3
|
-
description: "Adaptive design interview command that spawns design-discussant in normal / --all / --spec mode to gather decisions via one-question-at-a-time AskUserQuestion, writing D-XX entries to STATE.md <decisions>. Use when locking design decisions outside the main pipeline or backfilling missing context."
|
|
4
|
-
argument-hint: "[topic] [--all] [--spec] [--cycle <name>]"
|
|
5
|
-
tools: Read, Write, Task
|
|
6
|
-
---
|
|
7
|
-
|
|
8
|
-
# /gdd:discuss
|
|
9
|
-
|
|
10
|
-
**Role:** You are the `/gdd:discuss` command. You spawn the `design-discussant` agent with the right mode and context.
|
|
11
|
-
|
|
12
|
-
## Step 1 - Read state
|
|
13
|
-
|
|
14
|
-
Read `.design/STATE.md`. Note:
|
|
15
|
-
- Current `cycle:` frontmatter value
|
|
16
|
-
- Highest existing `D-XX` number under `<decisions>`
|
|
17
|
-
|
|
18
|
-
If `.design/STATE.md` does not exist, tell the user to run `/gdd:brief` first and stop.
|
|
19
|
-
|
|
20
|
-
## Step 2 - Parse arguments
|
|
21
|
-
|
|
22
|
-
Inspect `$ARGUMENTS`:
|
|
23
|
-
- Free-text before flags → `<topic>`
|
|
24
|
-
- `--all` → batch gray-areas mode
|
|
25
|
-
- `--spec` → Socratic ambiguity scoring mode
|
|
26
|
-
- `--cycle <name>` → scope decisions to that cycle
|
|
27
|
-
|
|
28
|
-
## Step 3 - Spawn design-discussant
|
|
29
|
-
|
|
30
|
-
```
|
|
31
|
-
Task("design-discussant", """
|
|
32
|
-
<required_reading>
|
|
33
|
-
@.design/STATE.md
|
|
34
|
-
@.design/BRIEF.md
|
|
35
|
-
@.design/DESIGN-CONTEXT.md
|
|
36
|
-
@./.claude/skills
|
|
37
|
-
</required_reading>
|
|
38
|
-
|
|
39
|
-
<mode>{normal|--all|--spec}</mode>
|
|
40
|
-
<topic>{topic or omit}</topic>
|
|
41
|
-
<cycle>{cycle-name or omit}</cycle>
|
|
42
|
-
|
|
43
|
-
Run an adaptive design interview. Append D-XX decisions to STATE.md <decisions> block.
|
|
44
|
-
Emit `## DISCUSS COMPLETE` when done.
|
|
45
|
-
""")
|
|
46
|
-
```
|
|
47
|
-
|
|
48
|
-
Use only the modes the user actually passed. Missing flags → `<mode>normal</mode>`.
|
|
49
|
-
|
|
50
|
-
## Step 4 - Inline glossary maintenance (CONTEXT.md)
|
|
51
|
-
|
|
52
|
-
When a fuzzy phrase is resolved into a sharper term, or a new domain concept is named
|
|
53
|
-
during the interview: write to `./CONTEXT.md` IMMEDIATELY (do NOT batch). Use the schema
|
|
54
|
-
in `./../../reference/context-md-format.md` - H2 heading per term, body paragraph,
|
|
55
|
-
optional `**Aliases:**` line for term-merging. Multi-context repos use `CONTEXT-MAP.md`
|
|
56
|
-
plus per-area `<area>/CONTEXT.md`. CONTEXT.md is lazy-created on the first term write.
|
|
57
|
-
|
|
58
|
-
## Step 5 - Session wrap: ADR-offer scan
|
|
59
|
-
|
|
60
|
-
For each decision recorded this session, check ALL three criteria from
|
|
61
|
-
`./../../reference/adr-format.md`: (a) **hard-to-reverse**, (b) **surprising-without-context**,
|
|
62
|
-
(c) **real-tradeoff**. If ALL three hold, offer to author `docs/adr/NNNN-<slug>.md`. If
|
|
63
|
-
ANY criterion fails, the decision stays in STATE.md `<decisions>`. Routine choices are
|
|
64
|
-
NEVER auto-promoted.
|
|
65
|
-
|
|
66
|
-
## Step 6 - Report
|
|
67
|
-
|
|
68
|
-
Wait for `## DISCUSS COMPLETE`. Re-read STATE.md. Count new D-XX entries since Step 1. Print:
|
|
69
|
-
|
|
70
|
-
```
|
|
71
|
-
━━━ Discuss complete ━━━
|
|
72
|
-
New decisions: N (D-XX through D-YY)
|
|
73
|
-
Mode: normal | --all | --spec
|
|
74
|
-
Cycle: <name or "default">
|
|
75
|
-
━━━━━━━━━━━━━━━━━━━━━━━━
|
|
76
|
-
```
|
|
77
|
-
|
|
78
|
-
## Constraints
|
|
79
|
-
|
|
80
|
-
- Do not run the interview yourself - always spawn the agent.
|
|
81
|
-
- Do not touch files outside `.design/`.
|
|
82
|
-
|
|
83
|
-
## Rationalizations - Thought to Reality
|
|
84
|
-
|
|
85
|
-
The shortcuts an agent takes during a discuss session, and what each one costs the decision record:
|
|
86
|
-
|
|
87
|
-
| Thought | Reality |
|
|
88
|
-
|---------|---------|
|
|
89
|
-
| "I'll ask all eight questions at once to save time." | Batched questions overwhelm the user; one-at-a-time keeps each decision clean and prevents coupled answers. |
|
|
90
|
-
| "I can run the interview inline instead of spawning the discussant." | The skill's contract is to always spawn the agent - running it yourself skips the discussant's mode handling and D-XX numbering. |
|
|
91
|
-
| "This answer is good enough, I'll record it as a decision without follow-up." | A vague answer ("modern", "clean") recorded as a D-XX locks in an undecided premise; reject and re-ask once. |
|
|
92
|
-
| "I'll batch all the new D-XX entries into STATE.md at the end." | Decisions written atomically per answer survive an interrupted session; batching loses everything if the session drops. |
|
|
93
|
-
| "The glossary term can wait until I write the summary." | CONTEXT.md is written immediately per term - a deferred glossary entry is a naming inconsistency the next cycle inherits. |
|
|
94
|
-
| "Every decision this session is worth an ADR." | ADRs require all three criteria (hard-to-reverse, surprising, real-tradeoff); auto-promoting routine choices buries the genuinely essential ones. |
|
|
95
|
-
|
|
96
|
-
## DISCUSS COMMAND COMPLETE
|
|
@@ -1,45 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: gdd-do
|
|
3
|
-
description: "Natural-language design task router. Parses your intent, maps to the right gdd command(s), confirms before executing. Activates for requests involving a natural-language design request, routing intent to the right command, or not knowing which skill to use."
|
|
4
|
-
argument-hint: "<natural language description>"
|
|
5
|
-
tools: Read, Write, AskUserQuestion
|
|
6
|
-
---
|
|
7
|
-
|
|
8
|
-
# /gdd:do
|
|
9
|
-
|
|
10
|
-
Takes a free-form description, maps it to a `/gdd:*` command, confirms with the user, then routes.
|
|
11
|
-
|
|
12
|
-
## Intent parsing table
|
|
13
|
-
|
|
14
|
-
| Intent signals | Maps to |
|
|
15
|
-
|---|---|
|
|
16
|
-
| "explore", "scan", "what design patterns", "what components" | `/gdd:explore` |
|
|
17
|
-
| "discuss", "decide", "what should we use for", "help me decide" | `/gdd:discuss` |
|
|
18
|
-
| "plan", "create tasks", "what tasks do we need" | `@get-design-done plan` |
|
|
19
|
-
| "design", "implement", "build", "execute" | `@get-design-done design` |
|
|
20
|
-
| "verify", "check", "audit", "review" | `/gdd:audit` |
|
|
21
|
-
| "sketch", "explore directions", "try designs", "variant" | `/gdd:sketch` |
|
|
22
|
-
| "spike", "experiment", "feasibility", "test if" | `/gdd:spike` |
|
|
23
|
-
| "fix [specific thing]" | `/gdd:fast` |
|
|
24
|
-
| "pause", "stop", "save my place" | `/gdd:pause` |
|
|
25
|
-
| "resume", "pick back up", "continue where I left off" | `/gdd:resume` |
|
|
26
|
-
| "ship", "PR", "submit", "merge" | `/gdd:ship` |
|
|
27
|
-
| "undo", "revert", "roll back" | `/gdd:undo` |
|
|
28
|
-
|
|
29
|
-
## Steps
|
|
30
|
-
|
|
31
|
-
1. Parse the argument text. Match it against the intent signals table. Choose the best fit.
|
|
32
|
-
2. If two intents tie, ask (AskUserQuestion): "Did you mean <option A> or <option B>?"
|
|
33
|
-
3. Print the routing decision in this exact shape:
|
|
34
|
-
```
|
|
35
|
-
I'll run `/gdd:<command>` — "<one-line rationale>". Confirm? (yes/no)
|
|
36
|
-
```
|
|
37
|
-
4. On confirmation: invoke the target skill with any parameters extracted from the input (e.g., topic for `discuss`, symptom for `debug`).
|
|
38
|
-
5. On rejection: ask "What did you mean instead?" and retry once, then abort gracefully.
|
|
39
|
-
|
|
40
|
-
## Do Not
|
|
41
|
-
|
|
42
|
-
- Do not execute the target command without confirmation.
|
|
43
|
-
- Do not invent new commands - if no intent matches, say so and list the closest options.
|
|
44
|
-
|
|
45
|
-
## DO COMPLETE
|
|
@@ -1,118 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: gdd-explore
|
|
3
|
-
description: "Stage 2 of 5 - unified exploration merging inventory grep + design interview. Probes 6 connections, scans the codebase, conducts the AskUserQuestion interview, and writes .design/DESIGN.md + DESIGN-DEBT.md + DESIGN-CONTEXT.md. Use after /gdd:brief to map the existing system and lock decisions before planning. Activates for requests involving researching design direction, gathering references, or exploring visual options."
|
|
4
|
-
argument-hint: "[--skip-interview] [--skip-scan] [--incremental] [--full]"
|
|
5
|
-
tools: Read, Write, Bash, Grep, Glob, Task, AskUserQuestion, mcp__gdd_state__get, mcp__gdd_state__transition_stage, mcp__gdd_state__probe_connections, mcp__gdd_state__update_progress, mcp__gdd_state__set_status, mcp__gdd_state__add_blocker, mcp__gdd_state__checkpoint, mcp__gdd_state__add_decision
|
|
6
|
-
---
|
|
7
|
-
|
|
8
|
-
# Get Design Done - Explore
|
|
9
|
-
|
|
10
|
-
**Role:** You are the Explore stage. Stage 2 of 5 in the get-design-done pipeline.
|
|
11
|
-
|
|
12
|
-
**Purpose:** Unified exploration merging the former `scan` (inventory grep) and `discover` (context interview) stages. Produces `.design/DESIGN.md`, `.design/DESIGN-DEBT.md`, and `.design/DESIGN-CONTEXT.md`.
|
|
13
|
-
|
|
14
|
-
Full procedure detail: `./explore-procedure.md`.
|
|
15
|
-
|
|
16
|
-
---
|
|
17
|
-
|
|
18
|
-
## Stage entry
|
|
19
|
-
|
|
20
|
-
All STATE.md persistence goes through `gdd-state` MCP tools - no direct edits. Plain design docs (DESIGN.md / DESIGN-DEBT.md / DESIGN-CONTEXT.md) use `Write`.
|
|
21
|
-
|
|
22
|
-
1. `mcp__gdd_state__transition_stage` with `to: "explore"`. On gate failure: print blockers from `error.context.blockers` verbatim, do not advance.
|
|
23
|
-
2. `mcp__gdd_state__get` (no args) -> snapshot `state` for downstream steps.
|
|
24
|
-
|
|
25
|
-
---
|
|
26
|
-
|
|
27
|
-
## Step 1 - Connection probe
|
|
28
|
-
|
|
29
|
-
Probe six connections, then batch-write results via ONE `mcp__gdd_state__probe_connections` call (unspecified connections keep their existing value):
|
|
30
|
-
|
|
31
|
-
- **A - Figma** (variant-agnostic): ToolSearch + regex parse of `get_metadata` / `use_figma` prefixes -> tiebreaker selection (`both-sets > reads-only`, `figma > others`, `non-figma-desktop`, alphabetical) -> live `{prefix}get_metadata` call -> `available` / `unavailable` / `not_configured` (with `prefix=` + `writes=`).
|
|
32
|
-
- **B - Refero**: ToolSearch presence sufficient.
|
|
33
|
-
- **C - 21st.dev**: ToolSearch `mcp__21st` presence.
|
|
34
|
-
- **D - Magic Patterns**: ToolSearch `mcp__magic_patterns` presence.
|
|
35
|
-
- **E - paper.design**: ToolSearch `mcp__paper` + live `get_selection` call.
|
|
36
|
-
- **F - pencil.dev**: `find . -name "*.pen"` file-presence.
|
|
37
|
-
|
|
38
|
-
Full probe specs + commit-results JSON shape: `./explore-procedure.md` §Step 1.
|
|
39
|
-
|
|
40
|
-
## Step 1.5 - 21st.dev Prior-Art Check (when `21st-dev: available`)
|
|
41
|
-
|
|
42
|
-
For each greenfield component in scope: `21st_magic_component_search(component_name, limit: 3)`. Fit >= 80% -> add `<prior-art>` block to DESIGN.md recommending adoption; fit < 80% -> note as reference, build custom. If `svgl_get_brand_logo` available and brand assets are in scope, call per logo and save SVGs to `.design/assets/`. Skip entirely if no greenfield components in scope. Detail: `./explore-procedure.md` §Step 1.5.
|
|
43
|
-
|
|
44
|
-
---
|
|
45
|
-
|
|
46
|
-
## Step 2 - Inventory scan (unless `--skip-scan`)
|
|
47
|
-
|
|
48
|
-
**Map pre-check**: if `.design/map/` exists with all 5 files (`tokens.md`, `components.md`, `visual-hierarchy.md`, `a11y.md`, `motion.md`) fresher than `src/`, consume them and skip the grep pass. Otherwise grep and, after Step 4, suggest `/gdd:map` for the next cycle.
|
|
49
|
-
|
|
50
|
-
**Parallelism decision**: read `.design/config.json` + `reference/parallelism-rules.md`. Record verdict via `mcp__gdd_state__set_status` (`"explore_parallel"` / `"explore_serial"`). Parallel -> multiple `Task()` in one response; serial -> sequential.
|
|
51
|
-
|
|
52
|
-
**Incremental batching (Phase 53, default)**: `--incremental` (default; `--full` opts out) runs the change classifier first via the fingerprint store, groups the DesignContext graph into Louvain community batches, and dispatches mappers per the verdict (SKIP=0, PARTIAL=affected batches only, FULL=all). Engine: `scripts/lib/explore-parallel-runner` + `scripts/lib/mappers/incremental-discover.cjs`; dispatch concurrency comes from `concurrency-tuner.cjs`. Detail: `./explore-procedure.md` §Incremental Batching.
|
|
53
|
-
|
|
54
|
-
Run the canonical scan grep/glob inventory (POSIX ERE, preserving PLAT-01/02): component detection (Glob `**/*.{tsx,jsx,vue,svelte}`), color extraction (hex / rgb / hsl / Tailwind arbitrary), typography scan (font-family / Tailwind `font-*` / `text-*`), motion scan (`transition` / `animate-` / `@keyframes` / `framer-motion`), token detection (tailwind.config / CSS custom properties / token JSON), layout detection (ordered fallback `src/` -> `app/` -> `pages/` -> `lib/` -> unknown). Write `.design/DESIGN.md` + `.design/DESIGN-DEBT.md`. Then `mcp__gdd_state__update_progress` for scan progress. Detail: `./explore-procedure.md` §Step 2.
|
|
55
|
-
|
|
56
|
-
**Step 2.x - i18n readiness probe (informational, per D-04)**: check `package.json` deps against `{react-intl, next-intl, i18next, vue-i18n, formatjs, lingui}` -> `framework-managed`; else grep `Intl.(DateTimeFormat|NumberFormat|...)` in `src/` -> `partial`; else `none`. Emit single line `Localization readiness: <state>` in the report. NO gate, NO blocking - surface signal only (D-07). Detail: `./explore-procedure.md` §Step 2.x.
|
|
57
|
-
|
|
58
|
-
## Step 2.5 - Detect prior sketches and project-local conventions
|
|
59
|
-
|
|
60
|
-
- **Sketches**: list `.design/sketches/*` slugs, group by `WINNER.md` present (completed) vs absent (pending). Record via `mcp__gdd_state__set_status: "explore_sketches_present"`. Include in DESIGN.md "Prior Explorations" section.
|
|
61
|
-
- **Project-local skills**: read `./.claude/skills/design-*-conventions.md` -> include in DESIGN-CONTEXT.md `<project_conventions>` (these override defaults).
|
|
62
|
-
- **Global skills**: `~/.claude/gdd/global-skills/*.md` (other than README) -> prepend to `<project_conventions>` under `<global_conventions>` sub-block. Project-local D-XX wins on conflict.
|
|
63
|
-
|
|
64
|
-
## Step 2.6 - Graph review (gate then reviewer)
|
|
65
|
-
|
|
66
|
-
Runs only when Step 2's mapper batch + synthesizer produced `.design/context-graph.json`. Skip the whole step if the file is absent (pre-Phase-52 project, or `--skip-scan`).
|
|
67
|
-
|
|
68
|
-
1. **Gate first (cheap Haiku check).** Spawn `design-context-reviewer-gate` via `Task()` with the classifier signal from Step 2's incremental batching pass: `change_pct` (fingerprint classifier `pct`), `classifier_action` (`SKIP` / `PARTIAL_UPDATE` / `ARCHITECTURE_UPDATE` / `FULL_UPDATE`), and `graph_path: ".design/context-graph.json"`. Gate emits a single-line `{spawn, rationale}` JSON decision then `## GATE COMPLETE`.
|
|
69
|
-
2. **If `spawn: false`**: record `mcp__gdd_state__set_status: "explore_graph_review_skipped"`, log the gate `rationale` (e.g., "project change 3% < 5% threshold"), set telemetry `lazy_skipped: true`. Done - proceed to Step 3.
|
|
70
|
-
3. **If `spawn: true`**: spawn `design-context-reviewer` via `Task()` with `<required_reading>` pointing at `.design/STATE.md`, `.design/context-graph.json`, `reference/design-context-schema.md`, `reference/design-context-tag-vocab.md`. The reviewer runs `scripts/validate-design-context.cjs --json` as the deterministic floor (checks 1/2/3/5) then layers the semantic checks (4/6/7/8/9) and returns the 9-check verdict inline (`APPROVED` or `REJECT`).
|
|
71
|
-
4. **Capture verdict (read-only contract).** The reviewer does NOT write `.design/DESIGN-CONTEXT-REVIEW.md` - it is `reads-only: true, writes: []`. WARN findings surface through `scripts/lib/health-mirror#getHealthChecks` as `status: 'warn'`; a hard-reject maps to `status: 'fail'`. Record the overall verdict via `mcp__gdd_state__set_status: "explore_graph_review_approved"` (or `"_rejected"`).
|
|
72
|
-
5. **On REJECT**: record `mcp__gdd_state__add_blocker` with the reviewer's blocking-issues list verbatim. Do not advance to Step 3 until the synthesizer or the implicated mapper is re-run. On `APPROVED` (with or without WARNs): proceed.
|
|
73
|
-
|
|
74
|
-
---
|
|
75
|
-
|
|
76
|
-
## Step 3 - Design interview (unless `--skip-interview`)
|
|
77
|
-
|
|
78
|
-
**Run inline - NEVER spawn `design-discussant` as a subagent.** `AskUserQuestion` only renders the native picker from the top-level skill context; spawning degrades to plain markdown (broken in Claude Desktop).
|
|
79
|
-
|
|
80
|
-
- **3.a Pre-load context**: state.decisions snapshot -> BRIEF.md -> DESIGN.md -> DESIGN-CONTEXT.md `<gray_areas>` -> project conventions. If `figma: available`, call `{prefix}get_variable_defs` and draft tentative D-XX entries.
|
|
81
|
-
- **3.b Identify question set**: skip areas already covered by D-XX or project convention. Default coverage: cycle goal, audience, brand direction (if no tokens), color/typography/spacing primitives (if undetected), motion preferences, gray areas from DESIGN-CONTEXT.md.
|
|
82
|
-
- **3.c Ask one at a time**: `AskUserQuestion` with 4 concrete options + "Other" / "Skip". Reject generic answers ("modern", "clean") with one follow-up.
|
|
83
|
-
- **3.d Record after each answer**: `mcp__gdd_state__add_decision` (atomic, auto-assigns D-NN); append a quality-classified JSON line to `.design/learnings/question-quality.jsonl`.
|
|
84
|
-
- **3.e Produce DESIGN-CONTEXT.md**: summarize locked decisions, remaining gray areas, Figma tentatives. Frontmatter `status: complete`.
|
|
85
|
-
|
|
86
|
-
Full interview protocol + JSON line schema: `./explore-procedure.md` §Step 3.
|
|
87
|
-
|
|
88
|
-
---
|
|
89
|
-
|
|
90
|
-
## Step 4 - Close out explore
|
|
91
|
-
|
|
92
|
-
- If the synthesizer / mapper batch ran in Step 2: `mcp__gdd_state__update_progress` with `task_progress: "<done>/<total>"`, `status: "explore_mappers_done"`.
|
|
93
|
-
- If Step 2.6 ran the graph review: ensure the verdict status is recorded (`explore_graph_review_approved` / `_rejected` / `_skipped`); on `_rejected` do NOT checkpoint until re-run.
|
|
94
|
-
- `mcp__gdd_state__checkpoint` - bumps `last_checkpoint`.
|
|
95
|
-
- Stage advance to `plan` happens at the next stage's entry (plan owns its own `transition_stage`); do not edit frontmatter directly.
|
|
96
|
-
|
|
97
|
-
## After Writing
|
|
98
|
-
|
|
99
|
-
Print: "=== Explore complete ===\nSaved: .design/DESIGN.md, .design/DESIGN-DEBT.md, .design/DESIGN-CONTEXT.md\nNext: @get-design-done plan".
|
|
100
|
-
|
|
101
|
-
<HARD-GATE>
|
|
102
|
-
Do NOT transition to plan (or invoke `/gdd:plan`) until BOTH `.design/DESIGN.md` AND `.design/DESIGN-CONTEXT.md` are committed AND the user has approved them. If this project uses a custom `.design` location, read the artifact paths from `.design/STATE.md` rather than assuming the default.
|
|
103
|
-
</HARD-GATE>
|
|
104
|
-
|
|
105
|
-
## Rationalizations - Thought to Reality
|
|
106
|
-
|
|
107
|
-
The shortcut excuses an agent reaches for during explore, and the drift each one introduces:
|
|
108
|
-
|
|
109
|
-
| Thought | Reality |
|
|
110
|
-
|---------|---------|
|
|
111
|
-
| "I already know this codebase, I can skip the inventory scan." | An unscanned codebase hides the tokens/components you'll duplicate - the grep pass exists to stop you reinventing what's there. |
|
|
112
|
-
| "The six connection probes are noise, I'll assume Figma is off." | A skipped probe means a wrong connection assumption silently breaks the design stage's tool dispatch. |
|
|
113
|
-
| "`--skip-interview` is fine, the brief covered it." | The interview locks the gray areas the brief left fuzzy; skipping it ships undecided D-XX into planning. |
|
|
114
|
-
| "I'll batch all the interview questions to save round-trips." | Batched questions overwhelm the user and smuggle in coupled assumptions - one-at-a-time keeps each decision clean. |
|
|
115
|
-
| "DESIGN-DEBT.md is optional, the scan was clean enough." | Unrecorded debt resurfaces as an unexplained constraint three stages later with no provenance. |
|
|
116
|
-
| "Prior sketches and project conventions don't apply this cycle." | Ignored conventions get overridden by defaults, producing inconsistency the audit will flag against the rest of the system. |
|
|
117
|
-
|
|
118
|
-
## EXPLORE COMPLETE
|