@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,118 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: design
|
|
3
|
-
description: "Stage 4 of 5 orchestrator that reads DESIGN-PLAN.md, partitions tasks by wave + parallel-safe flag, and spawns design-executor agents with the appropriate isolation (worktree for parallel batches, in-place for sequential tail). Use when DESIGN-PLAN.md is approved and ready for implementation. Activates for requests involving implementing UI, building components, or turning a plan into working interface code."
|
|
4
|
-
argument-hint: "[--auto] [--parallel] [--variants N]"
|
|
5
|
-
user-invocable: true
|
|
6
|
-
tools: Read, Write, Bash, Grep, Glob, Task, AskUserQuestion, mcp__gdd_state__get, mcp__gdd_state__transition_stage, mcp__gdd_state__update_progress, mcp__gdd_state__set_status, mcp__gdd_state__add_blocker, mcp__gdd_state__resolve_blocker, mcp__gdd_state__checkpoint
|
|
7
|
-
---
|
|
8
|
-
|
|
9
|
-
# Get Design Done - Design
|
|
10
|
-
|
|
11
|
-
**Stage 4 of 5** in the get-design-done pipeline. Thin orchestrator. All design execution intelligence lives in `agents/design-executor.md`.
|
|
12
|
-
|
|
13
|
-
Full procedure detail: `./design-procedure.md`.
|
|
14
|
-
|
|
15
|
-
---
|
|
16
|
-
|
|
17
|
-
## Stage entry
|
|
18
|
-
|
|
19
|
-
1. `mcp__gdd_state__transition_stage` with `to: "design"`. Gate failure surfaces `error.context.blockers`; do not advance. Resume case: prior stage `design` + `status: in_progress` -> skip tasks where `.design/tasks/task-NN.md` already exists.
|
|
20
|
-
2. `mcp__gdd_state__get` -> snapshot `state`; read `state.position.wave` for execution plan.
|
|
21
|
-
3. Abort only if `.design/DESIGN-PLAN.md` is missing: "No plan found. Run `/get-design-done:plan` first."
|
|
22
|
-
|
|
23
|
-
Detail: `./design-procedure.md` §Stage entry.
|
|
24
|
-
|
|
25
|
-
---
|
|
26
|
-
|
|
27
|
-
## Flags + pre-execution checks
|
|
28
|
-
|
|
29
|
-
- `--auto` -> `auto_mode=true` (no mid-stage prompts; architectural deviations stop the individual task but continue the rest).
|
|
30
|
-
- `--parallel` -> `parallel_mode=true` (use worktree isolation for `Parallel: true` tasks).
|
|
31
|
-
- `--variants N` -> `variants_mode` (default N=2): for tasks that build a user-facing surface, the executor emits **N competing, hypothesis-tagged variants** (`<variant id component pattern hypothesis>`) instead of one. Before generating, consult the `design_arms` posterior (`scripts/lib/ds-arms/design-arms-store.cjs`) to bias toward patterns that have won prior A/B / user-research outcomes - **advisory, never directive** (the user's explicit choice always wins). The tagged variants flow to A/B (LaunchDarkly/Statsig/GrowthBook) for outcome ingestion. Full schema + the outcome loop: `../../reference/design-variants.md`.
|
|
32
|
-
- **Directionally-open check** (skipped if `auto_mode`): scan DESIGN-PLAN.md for tasks whose criteria read "explore N directions" / "pick a visual approach" and suggest `/gdd:sketch` first.
|
|
33
|
-
- **Project-local conventions**: include any `./.claude/skills/design-*-conventions.md` and `~/.claude/gdd/global-skills/*.md` in every executor's `<required_reading>` - global conventions inform but do not override project-local D-XX decisions.
|
|
34
|
-
- **`.stories.tsx` stub**: after each new component file is created by the executor, emit a CSF stub alongside if `.storybook/` exists or `"storybook"` is in `package.json`, even with the dev server offline. Detail: `./design-procedure.md` §.stories.tsx Stub.
|
|
35
|
-
|
|
36
|
-
---
|
|
37
|
-
|
|
38
|
-
## Step 1 - Parse DESIGN-PLAN.md
|
|
39
|
-
|
|
40
|
-
Read `.design/DESIGN-PLAN.md`. Partition tasks by `## Wave N` heading. Within each wave, partition by `Parallel: true` vs `Parallel: false`. Compute `total_tasks` for the `task_progress` denominator. If resuming, skip tasks whose `.design/tasks/task-NN.md` already exists.
|
|
41
|
-
|
|
42
|
-
---
|
|
43
|
-
|
|
44
|
-
## Step 2 - Wave-by-Wave Execution
|
|
45
|
-
|
|
46
|
-
For each wave in order:
|
|
47
|
-
|
|
48
|
-
1. **Parallelism decision (per wave)**: read `.design/config.json` `parallelism`, collect candidates, check `Touches:` / `writes:` / `parallel-safe` / `typical-duration-seconds`, apply `reference/parallelism-rules.md` hard->soft. Overlapping `Touches:` split into sequential sub-waves. Record verdict via `mcp__gdd_state__update_progress` with `status: "design_wave_<N>_parallelism: <parallel|serial>, reason=<short-reason>"`.
|
|
49
|
-
2. **Executor STATE.md protocol** (inlined verbatim into every `design-executor` prompt): executors update STATE.md ONLY via `gdd-state` MCP tools - `update_progress`, `add_blocker`, `resolve_blocker`. NEVER `Read`+`Write` `.design/STATE.md` directly. The MCP tools enforce the lockfile (Plan 20-01) and emit mutation events (Plan 20-06) so concurrent executors serialize safely.
|
|
50
|
-
3. **Parallel batch** (when `parallel_mode=true` AND any `Parallel: true` tasks in wave): announce the partition, spawn all `Parallel: true` tasks via concurrent `Task("design-executor", ..., isolation: "worktree")` calls in ONE response, wait for all `## EXECUTION COMPLETE` markers, merge worktrees (non-overlapping `Touches:` guarantees no conflicts; surface any conflict to the user before continuing), then `update_progress` + `checkpoint`.
|
|
51
|
-
4. **Sequential tail** (`Parallel: false` or `parallel_mode=false`): spawn one `design-executor` at a time (no worktree isolation), waiting for each `## EXECUTION COMPLETE` and emitting `update_progress` per task; `checkpoint` after the final task of the wave.
|
|
52
|
-
|
|
53
|
-
Full executor prompts (parallel + sequential variants) and the merge-worktrees protocol: `./design-procedure.md` §Step 2.
|
|
54
|
-
|
|
55
|
-
---
|
|
56
|
-
|
|
57
|
-
## Step 3 - Wave Checkpoint
|
|
58
|
-
|
|
59
|
-
After each wave, unless `auto_mode=true`, prompt: "Ready for Wave [N+1]? (yes / review first)". Skip in `auto_mode`.
|
|
60
|
-
|
|
61
|
-
## Step 4 - Handle Deviations
|
|
62
|
-
|
|
63
|
-
Check task-NN.md files for `status: deviation`. If found: `mcp__gdd_state__get` -> read `state.blockers`, present affected task IDs + blocker descriptions, offer (a) stop, (b) continue. `auto_mode`: continue, log. When a blocker is later fixed by a follow-up task: `mcp__gdd_state__resolve_blocker`.
|
|
64
|
-
|
|
65
|
-
---
|
|
66
|
-
|
|
67
|
-
## State Update (exit)
|
|
68
|
-
|
|
69
|
-
1. `mcp__gdd_state__set_status` -> `"design_complete"` - marks the stage complete WITHOUT transitioning (verify owns its own `transition_stage` on entry).
|
|
70
|
-
2. `mcp__gdd_state__checkpoint` - stamps `last_checkpoint`, appends `design_completed_at` to `<timestamps>`.
|
|
71
|
-
|
|
72
|
-
## After Completion
|
|
73
|
-
|
|
74
|
-
Print the `=== Design stage complete ===` summary (tasks complete/total, deviations, commits since stage start, next step `/get-design-done:verify`). Template: `./design-procedure.md` §After Completion.
|
|
75
|
-
|
|
76
|
-
---
|
|
77
|
-
|
|
78
|
-
## Figma Write Dispatch
|
|
79
|
-
|
|
80
|
-
After all tasks finish, if STATE.md `<connections>` has `figma: available`, offer the user the figma-write opt-in prompt (modes: annotate / tokenize / mappings, with optional `--dry-run`). Spawn `design-figma-writer` with the selected mode on "yes"; skip silently on "no". NEVER auto-run without confirmation. Full prompt + dispatch logic: `./design-procedure.md` §Figma Write Dispatch.
|
|
81
|
-
|
|
82
|
-
## Component Generator Dispatch
|
|
83
|
-
|
|
84
|
-
If the DESIGN-PLAN has a `task_type: component` task without a matching `src/components/*.tsx`, OR the brief / DESIGN-CONTEXT.md explicitly asks for a new component, AND STATE.md `<connections>` shows a generator connection (`21st-dev: available`, `magic-patterns: available`, `plasmic: available`, `builder-io: available`, or `v0-dev: available`); offer the component-generator opt-in.
|
|
85
|
-
|
|
86
|
-
```
|
|
87
|
-
Task("design-component-generator", """
|
|
88
|
-
mode: <21st|magic-patterns|plasmic|builder-io|v0-dev>
|
|
89
|
-
component_spec: <DESIGN-PLAN task summary + DESIGN-CONTEXT acceptance criteria>
|
|
90
|
-
required_reading:
|
|
91
|
-
- .design/STATE.md
|
|
92
|
-
- .design/DESIGN-PLAN.md
|
|
93
|
-
- .design/DESIGN-CONTEXT.md
|
|
94
|
-
""")
|
|
95
|
-
```
|
|
96
|
-
|
|
97
|
-
Sequential (the agent is `parallel-safe: never`). Wait for the agent's `## design-component-generator complete.` marker. Skip silently when no generator connection is available OR no component task is pending. Auto-mode bypasses the prompt; otherwise prompt "Generate component via [tool]? (y/n)" and only spawn on "y".
|
|
98
|
-
|
|
99
|
-
The dispatch fires AFTER `design-executor` completes the hand-coded plan tasks. The agent's output (component file path + tokens used + provenance) is appended to `.design/DESIGN-SUMMARY.md` as a single `## Generated Components` section so verify can audit it.
|
|
100
|
-
|
|
101
|
-
<HARD-GATE>
|
|
102
|
-
Do NOT transition to verify (or invoke `/gdd:verify`) until `.design/DESIGN-SUMMARY.md` is committed. If this project uses a custom `.design` location, read the artifact path from `.design/STATE.md` rather than assuming the default.
|
|
103
|
-
</HARD-GATE>
|
|
104
|
-
|
|
105
|
-
## Rationalizations - Thought to Reality
|
|
106
|
-
|
|
107
|
-
The excuses an agent uses to cut corners during design implementation, and the cost of each:
|
|
108
|
-
|
|
109
|
-
| Thought | Reality |
|
|
110
|
-
|---------|---------|
|
|
111
|
-
| "I can skip planning for this small task and just implement it." | Plan-skipped tasks blow scope per cycle telemetry; the gate is for the typical case, not the exception. |
|
|
112
|
-
| "These two tasks touch nearby files but I'll run them in parallel anyway." | Overlapping `Touches:` in a parallel batch produce merge conflicts that silently drop one task's work - split into sequential sub-waves. |
|
|
113
|
-
| "Hardcoding this value is faster than wiring the token." | A hardcoded value is a stub the verifier catches as drift from the design tokens; you pay for it twice. |
|
|
114
|
-
| "I'll emit the `.stories.tsx` stub later when Storybook is back up." | The CSF stub must land with the component or the next cycle's visual-regression scope misses it entirely. |
|
|
115
|
-
| "This deviation is minor, I won't record a blocker." | An unrecorded deviation can't be resolved by a follow-up task, so it leaks into verify as an unexplained gap. |
|
|
116
|
-
| "Auto-mode means I can ignore the wave checkpoints." | Auto-mode skips prompts, not the wave structure; ignoring wave order still corrupts dependent-task ordering. |
|
|
117
|
-
|
|
118
|
-
## DESIGN COMPLETE
|
|
@@ -1,304 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: design-procedure
|
|
3
|
-
type: meta-rules
|
|
4
|
-
version: 1.0.0
|
|
5
|
-
phase: 28.5
|
|
6
|
-
tags: [design, procedure, extracted, pipeline-stage, execute, wave-coordination]
|
|
7
|
-
last_updated: 2026-05-18
|
|
8
|
-
---
|
|
9
|
-
|
|
10
|
-
Source: extracted from `skills/design/SKILL.md` (Phase 28.5 rework - D-10 extract-then-link).
|
|
11
|
-
The skill's essential workflow stays in `../skills/design/SKILL.md`; this file holds the
|
|
12
|
-
detail the agent reaches for when executing a specific step (agent spawn prompts, wave
|
|
13
|
-
coordination, executor STATE.md protocol, figma-write dispatch).
|
|
14
|
-
|
|
15
|
-
# Design Procedure
|
|
16
|
-
|
|
17
|
-
Detailed procedure for the get-design-done `design` Stage 4 orchestrator. Companion to
|
|
18
|
-
`../skills/design/SKILL.md`. Read this file when executing a specific design step; the
|
|
19
|
-
SKILL.md keeps the essential wave-iteration workflow + decision tree, this file holds
|
|
20
|
-
the full executor prompts and parallelism semantics.
|
|
21
|
-
|
|
22
|
-
---
|
|
23
|
-
|
|
24
|
-
## Stage entry
|
|
25
|
-
|
|
26
|
-
1. Call `mcp__gdd_state__transition_stage` with `to: "design"`.
|
|
27
|
-
- Gate failure surfaces `error.context.blockers` to the user; do not advance.
|
|
28
|
-
- If the transition succeeds and the prior stage was already `design` with `status: in_progress`, this is a RESUME - use `task_progress` numerator as source of truth and skip tasks that already have a corresponding `.design/tasks/task-NN.md` file.
|
|
29
|
-
2. Call `mcp__gdd_state__get` -> snapshot `state`; read `state.position.wave` to decide execution plan.
|
|
30
|
-
|
|
31
|
-
Abort only if `.design/DESIGN-PLAN.md` is missing:
|
|
32
|
-
> "No plan found. Run `/get-design-done:plan` first."
|
|
33
|
-
|
|
34
|
-
---
|
|
35
|
-
|
|
36
|
-
## Flag Parsing
|
|
37
|
-
|
|
38
|
-
- `--auto` -> `auto_mode=true` (no mid-stage prompts; architectural deviations still stop the individual task but continue with remaining tasks)
|
|
39
|
-
- `--parallel` -> `parallel_mode=true` (use worktree isolation for `Parallel: true` tasks)
|
|
40
|
-
|
|
41
|
-
---
|
|
42
|
-
|
|
43
|
-
## Pre-execution - Directionally-open check
|
|
44
|
-
|
|
45
|
-
Scan DESIGN-PLAN.md for tasks marked as "directionally open" (exploration-appropriate - e.g., tasks whose acceptance criteria read "explore N directions" or "pick a visual approach"). If any are found, print:
|
|
46
|
-
|
|
47
|
-
> "Tasks [IDs] appear directionally open - consider running `/gdd:sketch` first to explore variants before implementation."
|
|
48
|
-
|
|
49
|
-
Skip if `auto_mode=true`.
|
|
50
|
-
|
|
51
|
-
## Pre-execution - Project-local conventions
|
|
52
|
-
|
|
53
|
-
When spawning the executor, include any `./.claude/skills/design-*-conventions.md` files in `<required_reading>` so the executor sees project-local design conventions (typography, color, layout, motion, component, interaction decisions codified from prior sketch wrap-ups). Also include any `~/.claude/gdd/global-skills/*.md` files if the directory exists - global skills are cross-project conventions that inform but do not override project-local D-XX decisions.
|
|
54
|
-
|
|
55
|
-
---
|
|
56
|
-
|
|
57
|
-
## .stories.tsx Stub (when storybook project detected)
|
|
58
|
-
|
|
59
|
-
After every new component file is created by the design-executor:
|
|
60
|
-
|
|
61
|
-
Step 1 - Check project detection (does not require server running):
|
|
62
|
-
Bash: ls .storybook/ 2>/dev/null || grep '"storybook"' package.json 2>/dev/null
|
|
63
|
-
-> Found -> storybook_project: true
|
|
64
|
-
-> Not found -> skip .stories.tsx emission
|
|
65
|
-
|
|
66
|
-
Step 2 - When storybook_project: true, emit a CSF stub alongside the component:
|
|
67
|
-
File: `<same directory as component>/<ComponentName>.stories.tsx`
|
|
68
|
-
Content follows CSF format (see `connections/storybook.md` for full template):
|
|
69
|
-
- Import `Meta` and `StoryObj` from `@storybook/react`
|
|
70
|
-
- Import the new component
|
|
71
|
-
- `meta: Meta<typeof ComponentName>` with `title` and `parameters.a11y.test = 'error'`
|
|
72
|
-
- Export `Default`, `Primary`, `Disabled` story variants
|
|
73
|
-
Adjust `title` to match directory structure (e.g., `'Components/Button'` or `'Features/Auth/LoginForm'`)
|
|
74
|
-
|
|
75
|
-
Note: the `.stories.tsx` stub is emitted whenever `storybook_project: true` regardless of whether
|
|
76
|
-
the dev server is running. New components need stories even in offline/CI contexts.
|
|
77
|
-
|
|
78
|
-
---
|
|
79
|
-
|
|
80
|
-
## Step 1 - Parse DESIGN-PLAN.md
|
|
81
|
-
|
|
82
|
-
Read `.design/DESIGN-PLAN.md`. Partition tasks by `## Wave N` heading. Within each wave, partition by `Parallel: true` vs `Parallel: false`. Compute `total_tasks` for `task_progress` denominator.
|
|
83
|
-
|
|
84
|
-
If resuming: skip tasks where `.design/tasks/task-NN.md` already exists.
|
|
85
|
-
|
|
86
|
-
---
|
|
87
|
-
|
|
88
|
-
## Parallelism Decision (per wave, before spawning)
|
|
89
|
-
|
|
90
|
-
For each wave:
|
|
91
|
-
1. Read `.design/config.json` `parallelism` (or defaults from `reference/config-schema.md`).
|
|
92
|
-
2. Collect candidates in the wave; check `Touches:`, `writes:`, `parallel-safe`, and `typical-duration-seconds` fields.
|
|
93
|
-
3. Apply rules in order from `reference/parallelism-rules.md` (hard -> soft). Overlapping Touches split into sequential sub-waves.
|
|
94
|
-
4. Record the parallelism decision for this wave via `mcp__gdd_state__update_progress` with `task_progress: "<completed>/<total>"` and `status: "design_wave_<N>_parallelism: <parallel|serial>, reason=<short-reason>"` - the status string is the canonical carrier (mirrors the plan-stage convention from Plan 20-09; a dedicated tool may be added in a follow-on plan).
|
|
95
|
-
5. If `parallel`: spawn all candidates via concurrent `Task()` calls in one response. If `serial`: spawn sequentially.
|
|
96
|
-
|
|
97
|
-
### Executor prompt template (applies to every spawned design-executor)
|
|
98
|
-
|
|
99
|
-
Every spawned executor receives the following STATE.md contract in its prompt:
|
|
100
|
-
|
|
101
|
-
> **STATE.md mutation protocol** - When you complete a task in your assigned batch, update STATE.md ONLY via the `gdd-state` MCP tools. Specifically:
|
|
102
|
-
> - Report task progress: `mcp__gdd_state__update_progress` with your new `task_progress` fraction.
|
|
103
|
-
> - Add blockers: `mcp__gdd_state__add_blocker` with `{ stage: "design", date: <today>, text: "..." }`.
|
|
104
|
-
> - Resolve your own blockers on fix: `mcp__gdd_state__resolve_blocker` with the blocker id.
|
|
105
|
-
>
|
|
106
|
-
> Do NOT `Read` + `Write` `.design/STATE.md` directly - the MCP tools enforce the lockfile and emit mutation events. Direct writes corrupt parallel state.
|
|
107
|
-
|
|
108
|
-
Inline this protocol block verbatim inside every design-executor prompt in both the parallel-batch and sequential-tail spawns below. Concurrent executors (Phase 10.1 parallel mode) each emit `update_progress` calls; the lockfile (Plan 20-01) and event stream (Plan 20-06) serialize them safely.
|
|
109
|
-
|
|
110
|
-
## Step 2 - Wave-by-Wave Execution
|
|
111
|
-
|
|
112
|
-
For each Wave in order (Wave 1, Wave 2, ...):
|
|
113
|
-
|
|
114
|
-
### Parallel batch (if `parallel_mode=true` AND any `Parallel: true` tasks in wave)
|
|
115
|
-
|
|
116
|
-
Report the partition before spawning:
|
|
117
|
-
|
|
118
|
-
```
|
|
119
|
-
=== Wave [N] — parallel mode ===
|
|
120
|
-
Parallel batch ([N] tasks — spawning concurrently):
|
|
121
|
-
[01] [type]: [scope] — touches: [files]
|
|
122
|
-
[02] [type]: [scope] — touches: [files]
|
|
123
|
-
|
|
124
|
-
Sequential tail ([N] tasks):
|
|
125
|
-
[03] [type]: [scope] — touches: [files]
|
|
126
|
-
|
|
127
|
-
Spawning agents now...
|
|
128
|
-
================================
|
|
129
|
-
```
|
|
130
|
-
|
|
131
|
-
Spawn ALL `Parallel: true` tasks in this wave as concurrent `Task()` calls in ONE response. Each call uses `isolation: "worktree"`:
|
|
132
|
-
|
|
133
|
-
```
|
|
134
|
-
Task("design-executor", """
|
|
135
|
-
<required_reading>
|
|
136
|
-
@.design/STATE.md
|
|
137
|
-
@.design/DESIGN-PLAN.md
|
|
138
|
-
@.design/DESIGN-CONTEXT.md
|
|
139
|
-
@reference/[type-relevant].md
|
|
140
|
-
</required_reading>
|
|
141
|
-
|
|
142
|
-
You are the design-executor agent. Execute Task NN from DESIGN-PLAN.md.
|
|
143
|
-
|
|
144
|
-
Prompt context:
|
|
145
|
-
task_id: NN
|
|
146
|
-
task_type: [type]
|
|
147
|
-
task_scope: [scope]
|
|
148
|
-
task_acceptance_criteria:
|
|
149
|
-
- [criterion 1]
|
|
150
|
-
- [criterion 2]
|
|
151
|
-
wave: N
|
|
152
|
-
is_parallel: true
|
|
153
|
-
auto_mode: [true|false]
|
|
154
|
-
|
|
155
|
-
Write .design/tasks/task-NN.md and make an atomic commit `feat(design-NN): [type] — [scope]`.
|
|
156
|
-
|
|
157
|
-
Emit `## EXECUTION COMPLETE` when done.
|
|
158
|
-
""", subagent_type="design-executor", isolation="worktree")
|
|
159
|
-
```
|
|
160
|
-
|
|
161
|
-
Wait for all parallel tasks to emit `## EXECUTION COMPLETE`.
|
|
162
|
-
|
|
163
|
-
**Merge worktrees** (preserved from v2.1.0 - do not redesign):
|
|
164
|
-
|
|
165
|
-
```
|
|
166
|
-
=== Parallel batch complete ===
|
|
167
|
-
[check/warn/cross] Task 01 — [type]
|
|
168
|
-
[check/warn/cross] Task 02 — [type]
|
|
169
|
-
|
|
170
|
-
Merging worktrees...
|
|
171
|
-
================================
|
|
172
|
-
```
|
|
173
|
-
|
|
174
|
-
Merge each worktree branch back into the working directory. Each agent touched non-overlapping files (guaranteed by the conflict check on `Touches:` fields). If an unexpected merge conflict appears, flag it and ask the user to resolve before continuing.
|
|
175
|
-
|
|
176
|
-
After merge, roll up the batch's progress:
|
|
177
|
-
|
|
178
|
-
- Call `mcp__gdd_state__update_progress` with `task_progress: "<completed>/<total>"` and `status: "design_wave_<N>_parallel_batch_complete"`.
|
|
179
|
-
- Call `mcp__gdd_state__checkpoint` - records the wave boundary in `<timestamps>` and bumps `last_checkpoint`.
|
|
180
|
-
|
|
181
|
-
### Sequential tail (Parallel: false tasks, or all tasks if `parallel_mode=false`)
|
|
182
|
-
|
|
183
|
-
Announce each wave before starting:
|
|
184
|
-
|
|
185
|
-
```
|
|
186
|
-
=== Wave [N] — [N tasks] — sequential ===
|
|
187
|
-
Tasks:
|
|
188
|
-
[01] [type]: [scope]
|
|
189
|
-
[02] [type]: [scope]
|
|
190
|
-
==========================================
|
|
191
|
-
```
|
|
192
|
-
|
|
193
|
-
Run one at a time. Same `Task("design-executor", ...)` pattern with `is_parallel: false` (no worktree isolation):
|
|
194
|
-
|
|
195
|
-
```
|
|
196
|
-
Task("design-executor", """
|
|
197
|
-
<required_reading>
|
|
198
|
-
@.design/STATE.md
|
|
199
|
-
@.design/DESIGN-PLAN.md
|
|
200
|
-
@.design/DESIGN-CONTEXT.md
|
|
201
|
-
@reference/[type-relevant].md
|
|
202
|
-
</required_reading>
|
|
203
|
-
|
|
204
|
-
You are the design-executor agent. Execute Task NN from DESIGN-PLAN.md.
|
|
205
|
-
|
|
206
|
-
Prompt context:
|
|
207
|
-
task_id: NN
|
|
208
|
-
task_type: [type]
|
|
209
|
-
task_scope: [scope]
|
|
210
|
-
task_acceptance_criteria:
|
|
211
|
-
- [criterion 1]
|
|
212
|
-
- [criterion 2]
|
|
213
|
-
wave: N
|
|
214
|
-
is_parallel: false
|
|
215
|
-
auto_mode: [true|false]
|
|
216
|
-
|
|
217
|
-
Write .design/tasks/task-NN.md and make an atomic commit `feat(design-NN): [type] — [scope]`.
|
|
218
|
-
|
|
219
|
-
Emit `## EXECUTION COMPLETE` when done.
|
|
220
|
-
""", subagent_type="design-executor")
|
|
221
|
-
```
|
|
222
|
-
|
|
223
|
-
After each task completes, call `mcp__gdd_state__update_progress` with the new `task_progress: "<completed>/<total>"` and `status: "design_wave_<N>_task_<NN>_complete"`.
|
|
224
|
-
|
|
225
|
-
After the final sequential task of the wave, call `mcp__gdd_state__checkpoint` - records the wave boundary in `<timestamps>` and bumps `last_checkpoint`.
|
|
226
|
-
|
|
227
|
-
---
|
|
228
|
-
|
|
229
|
-
## Step 3 - Wave Checkpoint
|
|
230
|
-
|
|
231
|
-
After each wave (unless `--auto` flag was passed):
|
|
232
|
-
|
|
233
|
-
```
|
|
234
|
-
=== Wave [N] complete ===
|
|
235
|
-
check [N] tasks complete
|
|
236
|
-
warn [N] deviations (see .design/tasks/ files)
|
|
237
|
-
|
|
238
|
-
Ready for Wave [N+1]? (yes / review first)
|
|
239
|
-
=========================
|
|
240
|
-
```
|
|
241
|
-
|
|
242
|
-
Skip checkpoint if `auto_mode=true`.
|
|
243
|
-
|
|
244
|
-
---
|
|
245
|
-
|
|
246
|
-
## Step 4 - Handle Deviations
|
|
247
|
-
|
|
248
|
-
After each wave, check task-NN.md files for `status: deviation`. If any found:
|
|
249
|
-
|
|
250
|
-
- Call `mcp__gdd_state__get` -> read `state.blockers`; present affected task IDs and their blocker descriptions from the returned snapshot.
|
|
251
|
-
- Offer: (a) stop stage, (b) continue remaining tasks
|
|
252
|
-
- In `auto_mode`: continue automatically, log all deviations
|
|
253
|
-
- When a blocker is addressed (fix committed by a follow-up task), call `mcp__gdd_state__resolve_blocker` with the blocker id to clear it from the live state.
|
|
254
|
-
|
|
255
|
-
---
|
|
256
|
-
|
|
257
|
-
## State Update (exit)
|
|
258
|
-
|
|
259
|
-
1. Call `mcp__gdd_state__set_status` with `status: "design_complete"` - marks the stage completed without transitioning; verify calls `transition_stage` on its entry, keeping the transition atomic with the owning stage.
|
|
260
|
-
2. Call `mcp__gdd_state__checkpoint` - stamps `last_checkpoint` and appends a `design_completed_at` entry to `<timestamps>`.
|
|
261
|
-
|
|
262
|
-
---
|
|
263
|
-
|
|
264
|
-
## After Completion
|
|
265
|
-
|
|
266
|
-
Print summary:
|
|
267
|
-
|
|
268
|
-
```
|
|
269
|
-
=== Design stage complete ===
|
|
270
|
-
Tasks: [N] complete / [M] total
|
|
271
|
-
Deviations: [N]
|
|
272
|
-
Commits: [git log --oneline since stage start]
|
|
273
|
-
|
|
274
|
-
Next: /get-design-done:verify
|
|
275
|
-
-> Scores the result against baseline, checks must-haves,
|
|
276
|
-
runs NNG heuristic evaluation, and identifies gaps.
|
|
277
|
-
==============================
|
|
278
|
-
```
|
|
279
|
-
|
|
280
|
-
---
|
|
281
|
-
|
|
282
|
-
## Figma Write Dispatch (after design-executor completes)
|
|
283
|
-
|
|
284
|
-
After design-executor has finished and DESIGN-PLAN.md tasks are complete:
|
|
285
|
-
|
|
286
|
-
1. Read `figma:` status from `.design/STATE.md` `<connections>` (the unified remote MCP covers both reads and writes as of v1.0.7.1):
|
|
287
|
-
- If `figma: not_configured` or `figma: unavailable` or absent -> skip this block entirely (no prompt, no output)
|
|
288
|
-
- If `figma: available` -> proceed to step 2
|
|
289
|
-
|
|
290
|
-
2. Offer the user a prompt:
|
|
291
|
-
```
|
|
292
|
-
figma write-back is available — propagate design decisions back to Figma?
|
|
293
|
-
Modes: annotate (layer comments) | tokenize (variable bindings) | mappings (Code Connect)
|
|
294
|
-
Run figma-write? (y/N):
|
|
295
|
-
```
|
|
296
|
-
|
|
297
|
-
3. If user answers "y" or "yes":
|
|
298
|
-
- Ask which mode: annotate / tokenize / mappings (or all)
|
|
299
|
-
- Spawn `design-figma-writer` agent with the selected mode
|
|
300
|
-
- Pass `--dry-run` flag if user requests preview first
|
|
301
|
-
|
|
302
|
-
4. If user answers "n", "N", or no response: skip silently.
|
|
303
|
-
|
|
304
|
-
Note: This dispatch is always opt-in. The design stage never auto-runs figma-writer without user confirmation.
|
|
@@ -1,78 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: discover
|
|
3
|
-
description: "Stage 1.5 of 4 orchestrator that probes Figma / Refero / Pinterest connections, spawns design-context-builder (auto-detect + interview) and (via lazy gate) design-context-checker (6-dimension validator), producing .design/DESIGN-CONTEXT.md. Use after /gdd:scan when a fast-path context build is wanted instead of the full /gdd:explore. Activates for requests involving detecting an existing design system, inventorying tokens and components, or onboarding a brownfield repo."
|
|
4
|
-
argument-hint: "[--auto] [--incremental] [--full]"
|
|
5
|
-
user-invocable: true
|
|
6
|
-
---
|
|
7
|
-
|
|
8
|
-
# Get Design Done - Discover
|
|
9
|
-
|
|
10
|
-
**Stage 1.5 of 4.** Produces `.design/DESIGN-CONTEXT.md`.
|
|
11
|
-
|
|
12
|
-
Full procedure detail: `./discover-procedure.md`.
|
|
13
|
-
|
|
14
|
-
---
|
|
15
|
-
|
|
16
|
-
## State Integration
|
|
17
|
-
|
|
18
|
-
1. Read `.design/STATE.md`.
|
|
19
|
-
- **Missing** -> create minimal skeleton from `reference/STATE-TEMPLATE.md` (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."
|
|
20
|
-
- **Present + stage==discover + status==in_progress** -> RESUME (continue interview; do not reset).
|
|
21
|
-
- **Otherwise** -> normal transition: set frontmatter stage=discover, `<position>` stage=discover, status=in_progress, task_progress=0/1.
|
|
22
|
-
2. Probe connection availability. ToolSearch runs FIRST (MCP tools may be in the deferred tool set). Run three probes - A (Figma, variant-agnostic with prefix tiebreaker), B (Refero, ToolSearch-only), C (Pinterest, ToolSearch-only). After all probes, write `<connections>` to STATE.md so the builder doesn't re-probe. Full probe specs: `./discover-procedure.md` §Connection Probes.
|
|
23
|
-
3. Update `last_checkpoint`. Write STATE.md.
|
|
24
|
-
|
|
25
|
-
---
|
|
26
|
-
|
|
27
|
-
## Auto Mode
|
|
28
|
-
|
|
29
|
-
When `--auto` is passed to the builder: if `tailwind.config.{js,cjs,mjs,ts}` exists -> Tailwind-only project (skip CSS file grep, parse tailwind.config for palette/spacing/font, use those as the baseline style signal). Else fall through to the existing CSS file grep logic. Detail: `./discover-procedure.md` §Auto Mode.
|
|
30
|
-
|
|
31
|
-
---
|
|
32
|
-
|
|
33
|
-
## Incremental Mode (Phase 53, default)
|
|
34
|
-
|
|
35
|
-
`--incremental` is the DEFAULT after Phase 53; pass `--full` to opt out and re-map everything. Incremental runs the change classifier FIRST (via the fingerprint store at `.design/fingerprints/`): it fingerprints the current DesignContext graph, diffs each node against the prior cycle, and dispatches mappers per the verdict. SKIP (cosmetic-only / no-op) dispatches 0 mappers; PARTIAL re-maps only the affected community batches; ARCHITECTURE re-batches the dir-reshaped subset; FULL (or `--full`, or a first run with no prior store) re-maps all batches. The batching + classifier engine lives in `explore` (`scripts/lib/explore-parallel-runner` + `scripts/lib/mappers/incremental-discover.cjs`); this flag selects the path. Detail: `./discover-procedure.md` §Incremental Mode.
|
|
36
|
-
|
|
37
|
-
---
|
|
38
|
-
|
|
39
|
-
## Step 1 - Spawn design-context-builder
|
|
40
|
-
|
|
41
|
-
Spawn `design-context-builder` -> `.design/DESIGN-CONTEXT.md`. The agent auto-detects via grep/glob first and interviews only for areas where auto-detect returned no confident answer. Baseline audit directory chain: `src/` -> `app/` -> `pages/` -> `lib/` -> flag "layout unknown". Common gray areas to probe (Area 7): font-change risk, token-layer introduction risk, component rebuild-vs-restyle. Wait for `## CONTEXT COMPLETE`, then update STATE.md `task_progress = 0.5`. Full prompt: `./discover-procedure.md` §Step 1.
|
|
42
|
-
|
|
43
|
-
---
|
|
44
|
-
|
|
45
|
-
## Step 1.75 - Lazy gate: should design-context-checker run? (Plan 10.1-04, D-21)
|
|
46
|
-
|
|
47
|
-
Spawn the cheap Haiku gate `design-context-checker-gate` before the full checker. It applies the single-file heuristic (is `DESIGN-CONTEXT.md` in `git diff --name-only HEAD~1..HEAD`?) and emits JSON + `## GATE COMPLETE`. On `spawn: false`: append `lazy_skipped: true` telemetry row, skip Step 2, set STATE.md `<position>` as if checker passed. On `spawn: true`: proceed to Step 2. On first-run discover the gate always returns `spawn: true` (builder just wrote the file); the gate meaningfully short-circuits only on re-runs where the builder made no changes. Full prompt: `./discover-procedure.md` §Step 1.75.
|
|
48
|
-
|
|
49
|
-
**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, wire synthesize between dispatch and collate as in `skills/map/` Step 3.5.
|
|
50
|
-
|
|
51
|
-
---
|
|
52
|
-
|
|
53
|
-
## Step 2 - Spawn design-context-checker
|
|
54
|
-
|
|
55
|
-
Spawn `design-context-checker` with `<required_reading>` on STATE.md + DESIGN-CONTEXT.md. The agent validates DESIGN-CONTEXT.md across 6 dimensions and returns APPROVED or BLOCKED with per-dimension verdicts. Wait for `## CONTEXT CHECK COMPLETE`. Full prompt: `./discover-procedure.md` §Step 2.
|
|
56
|
-
|
|
57
|
-
---
|
|
58
|
-
|
|
59
|
-
## Step 3 - Handle checker verdict
|
|
60
|
-
|
|
61
|
-
- **APPROVED** -> proceed to state update.
|
|
62
|
-
- **BLOCKED** -> present blocked dimensions to user, offer fix-and-retry loop (re-spawn builder with specific fix instructions). Do not proceed to planning.
|
|
63
|
-
|
|
64
|
-
---
|
|
65
|
-
|
|
66
|
-
## State Update (exit)
|
|
67
|
-
|
|
68
|
-
1. Set `<position>` `status=completed`, `task_progress=1/1`.
|
|
69
|
-
2. Set `<timestamps>` `discover_completed_at=<ISO 8601 now>`.
|
|
70
|
-
3. Update `last_checkpoint`. Write STATE.md.
|
|
71
|
-
|
|
72
|
-
---
|
|
73
|
-
|
|
74
|
-
## After Writing
|
|
75
|
-
|
|
76
|
-
Print the "=== Discovery complete ===" block with saved path, baseline score, top key issues, and next step (`/get-design-done:plan`). Do not proceed to planning automatically unless `--auto` was passed. Template: `./discover-procedure.md` §After Writing.
|
|
77
|
-
|
|
78
|
-
## DISCOVER COMPLETE
|