@hegemonart/get-design-done 1.59.2 → 1.59.4
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 +2 -2
- package/.claude-plugin/plugin.json +1 -1
- package/CHANGELOG.md +56 -0
- package/SKILL.md +2 -0
- package/agents/design-advisor.md +1 -1
- package/agents/design-context-checker-gate.md +0 -1
- package/agents/design-context-checker.md +0 -1
- package/agents/design-context-reviewer-gate.md +0 -1
- package/agents/design-context-reviewer.md +0 -1
- package/agents/design-integration-checker-gate.md +0 -1
- package/agents/design-integration-checker.md +0 -1
- package/agents/design-plan-checker.md +0 -1
- package/agents/design-verifier-gate.md +0 -1
- package/agents/design-verifier.md +0 -1
- package/agents/prototype-gate.md +0 -1
- package/agents/quality-gate-runner.md +0 -1
- package/figma-plugin/README.md +61 -0
- package/figma-plugin/code.ts +36 -0
- package/figma-plugin/manifest.json +12 -0
- package/figma-plugin/package-lock.json +35 -0
- package/figma-plugin/package.json +12 -0
- package/figma-plugin/src/export-variables.ts +144 -0
- package/figma-plugin/src/payload-schema.ts +250 -0
- package/figma-plugin/tsconfig.json +16 -0
- package/figma-plugin/ui.html +44 -0
- package/hooks/gdd-intel-trigger.js +3 -3
- package/package.json +6 -1
- package/reference/DEPRECATIONS.md +3 -3
- package/reference/live-mode-integration.md +1 -1
- package/reference/registry.json +1 -1
- package/reference/skill-metadata.md +4 -4
- package/reference/skill-placeholders.md +2 -2
- package/scripts/build-skills.cjs +146 -0
- package/scripts/generate-skill-frontmatter.cjs +243 -0
- package/scripts/lib/manifest/scaffolder.cjs +1 -1
- package/scripts/lib/manifest/schemas/skills.schema.json +1 -1
- package/scripts/lib/manifest/skills.json +1 -1
- package/scripts/lib/new-addendum.cjs +1 -1
- package/scripts/skill-templates/README.md +90 -0
- package/scripts/skill-templates/add-backlog/SKILL.md +48 -0
- package/scripts/skill-templates/analyze-dependencies/SKILL.md +95 -0
- package/scripts/skill-templates/apply-reflections/SKILL.md +109 -0
- package/scripts/skill-templates/apply-reflections/apply-reflections-procedure.md +170 -0
- package/scripts/skill-templates/audit/SKILL.md +79 -0
- package/scripts/skill-templates/bandit-reset/SKILL.md +91 -0
- package/scripts/skill-templates/bandit-status/SKILL.md +94 -0
- package/scripts/skill-templates/benchmark/SKILL.md +65 -0
- package/scripts/skill-templates/bootstrap-ds/SKILL.md +43 -0
- package/scripts/skill-templates/brief/SKILL.md +145 -0
- package/scripts/skill-templates/budget/SKILL.md +45 -0
- package/scripts/skill-templates/cache-manager/SKILL.md +66 -0
- package/scripts/skill-templates/cache-manager/cache-policy.md +126 -0
- package/scripts/skill-templates/check-update/SKILL.md +98 -0
- package/scripts/skill-templates/compare/SKILL.md +82 -0
- package/scripts/skill-templates/compare/compare-rubric.md +171 -0
- package/scripts/skill-templates/complete-cycle/SKILL.md +81 -0
- package/scripts/skill-templates/connections/SKILL.md +71 -0
- package/scripts/skill-templates/connections/connections-onboarding.md +608 -0
- package/scripts/skill-templates/context/SKILL.md +137 -0
- package/scripts/skill-templates/continue/SKILL.md +24 -0
- package/scripts/skill-templates/darkmode/SKILL.md +76 -0
- package/scripts/skill-templates/darkmode/darkmode-audit-procedure.md +258 -0
- package/scripts/skill-templates/debug/SKILL.md +41 -0
- package/scripts/skill-templates/debug/debug-feedback-loops.md +119 -0
- package/scripts/skill-templates/design/SKILL.md +118 -0
- package/scripts/skill-templates/design/design-procedure.md +304 -0
- package/scripts/skill-templates/discuss/SKILL.md +96 -0
- package/scripts/skill-templates/do/SKILL.md +45 -0
- package/scripts/skill-templates/explore/SKILL.md +118 -0
- package/scripts/skill-templates/explore/explore-procedure.md +267 -0
- package/scripts/skill-templates/export/SKILL.md +30 -0
- package/scripts/skill-templates/extract-learnings/SKILL.md +114 -0
- package/scripts/skill-templates/fast/SKILL.md +91 -0
- package/scripts/skill-templates/figma-extract/SKILL.md +64 -0
- package/scripts/skill-templates/figma-write/SKILL.md +50 -0
- package/scripts/skill-templates/graphify/SKILL.md +49 -0
- package/scripts/skill-templates/health/SKILL.md +99 -0
- package/scripts/skill-templates/health/health-mcp-detection.md +44 -0
- package/scripts/skill-templates/health/health-skill-length-report.md +69 -0
- package/scripts/skill-templates/help/SKILL.md +60 -0
- package/scripts/skill-templates/instinct/SKILL.md +111 -0
- package/scripts/skill-templates/list-assumptions/SKILL.md +61 -0
- package/scripts/skill-templates/list-pins/SKILL.md +27 -0
- package/scripts/skill-templates/live/SKILL.md +98 -0
- package/scripts/skill-templates/locale/SKILL.md +51 -0
- package/scripts/skill-templates/map/SKILL.md +89 -0
- package/scripts/skill-templates/migrate/SKILL.md +70 -0
- package/scripts/skill-templates/migrate-context/SKILL.md +123 -0
- package/scripts/skill-templates/new-addendum/SKILL.md +81 -0
- package/scripts/skill-templates/new-cycle/SKILL.md +37 -0
- package/scripts/skill-templates/new-project/SKILL.md +53 -0
- package/scripts/skill-templates/new-skill/SKILL.md +90 -0
- package/scripts/skill-templates/next/SKILL.md +68 -0
- package/scripts/skill-templates/note/SKILL.md +48 -0
- package/scripts/skill-templates/openrouter-status/SKILL.md +86 -0
- package/scripts/skill-templates/optimize/SKILL.md +97 -0
- package/scripts/skill-templates/override/SKILL.md +86 -0
- package/scripts/skill-templates/paper-write/SKILL.md +54 -0
- package/scripts/skill-templates/pause/SKILL.md +77 -0
- package/scripts/skill-templates/peer-cli-add/SKILL.md +88 -0
- package/scripts/skill-templates/peer-cli-add/peer-cli-protocol.md +161 -0
- package/scripts/skill-templates/peer-cli-customize/SKILL.md +89 -0
- package/scripts/skill-templates/peers/SKILL.md +96 -0
- package/scripts/skill-templates/pencil-write/SKILL.md +54 -0
- package/scripts/skill-templates/pin/SKILL.md +37 -0
- package/scripts/skill-templates/plan/SKILL.md +105 -0
- package/scripts/skill-templates/plan/plan-procedure.md +278 -0
- package/scripts/skill-templates/plant-seed/SKILL.md +48 -0
- package/scripts/skill-templates/pr-branch/SKILL.md +32 -0
- package/scripts/skill-templates/progress/SKILL.md +107 -0
- package/scripts/skill-templates/quality-gate/SKILL.md +90 -0
- package/scripts/skill-templates/quality-gate/threat-modeling.md +101 -0
- package/scripts/skill-templates/quick/SKILL.md +44 -0
- package/scripts/skill-templates/reapply-patches/SKILL.md +32 -0
- package/scripts/skill-templates/recall/SKILL.md +75 -0
- package/scripts/skill-templates/reflect/SKILL.md +85 -0
- package/scripts/skill-templates/reflect/procedures/capability-gap-scan.md +119 -0
- package/scripts/skill-templates/report-issue/SKILL.md +53 -0
- package/scripts/skill-templates/report-issue/report-issue-procedure.md +119 -0
- package/scripts/skill-templates/resume/SKILL.md +93 -0
- package/scripts/skill-templates/review-backlog/SKILL.md +46 -0
- package/scripts/skill-templates/review-decisions/SKILL.md +42 -0
- package/scripts/skill-templates/roi/SKILL.md +54 -0
- package/scripts/skill-templates/rollout-status/SKILL.md +35 -0
- package/scripts/skill-templates/router/SKILL.md +89 -0
- package/scripts/skill-templates/router/capability-gap-emitter.md +65 -0
- package/scripts/skill-templates/router/router-pick-emitter.md +78 -0
- package/scripts/skill-templates/router/router-rules.md +84 -0
- package/scripts/skill-templates/settings/SKILL.md +87 -0
- package/scripts/skill-templates/ship/SKILL.md +48 -0
- package/scripts/skill-templates/sketch/SKILL.md +78 -0
- package/scripts/skill-templates/sketch-wrap-up/SKILL.md +92 -0
- package/scripts/skill-templates/skill-manifest/SKILL.md +79 -0
- package/scripts/skill-templates/spike/SKILL.md +67 -0
- package/scripts/skill-templates/spike-wrap-up/SKILL.md +86 -0
- package/scripts/skill-templates/start/SKILL.md +67 -0
- package/scripts/skill-templates/start/start-procedure.md +115 -0
- package/scripts/skill-templates/state/SKILL.md +106 -0
- package/scripts/skill-templates/stats/SKILL.md +51 -0
- package/scripts/skill-templates/style/SKILL.md +71 -0
- package/scripts/skill-templates/style/style-doc-procedure.md +150 -0
- package/scripts/skill-templates/synthesize/SKILL.md +94 -0
- package/scripts/skill-templates/timeline/SKILL.md +66 -0
- package/scripts/skill-templates/todo/SKILL.md +64 -0
- package/scripts/skill-templates/turn-closeout/SKILL.md +95 -0
- package/scripts/skill-templates/undo/SKILL.md +31 -0
- package/scripts/skill-templates/unlock-decision/SKILL.md +54 -0
- package/scripts/skill-templates/unpin/SKILL.md +31 -0
- package/scripts/skill-templates/update/SKILL.md +56 -0
- package/scripts/skill-templates/using-gdd/SKILL.md +78 -0
- package/scripts/skill-templates/verify/SKILL.md +113 -0
- package/scripts/skill-templates/verify/verify-procedure.md +511 -0
- package/scripts/skill-templates/warm-cache/SKILL.md +81 -0
- package/scripts/skill-templates/watch-authorities/SKILL.md +82 -0
- package/scripts/skill-templates/zoom-out/SKILL.md +26 -0
- package/sdk/cli/commands/build.ts +2 -2
- package/sdk/cli/index.js +2 -2
- package/sdk/cli/index.ts +1 -1
- package/skills/README.md +22 -14
- package/skills/help/SKILL.md +28 -55
- package/skills/new-skill/SKILL.md +5 -5
|
@@ -0,0 +1,118 @@
|
|
|
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 `{{command_prefix}}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 `{{command_prefix}}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
|
|
@@ -0,0 +1,304 @@
|
|
|
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 `{{command_prefix}}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.
|
|
@@ -0,0 +1,96 @@
|
|
|
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
|
+
# {{command_prefix}}discuss
|
|
9
|
+
|
|
10
|
+
**Role:** You are the `{{command_prefix}}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 `{{command_prefix}}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
|
|
@@ -0,0 +1,45 @@
|
|
|
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
|
+
# {{command_prefix}}do
|
|
9
|
+
|
|
10
|
+
Takes a free-form description, maps it to a `{{command_prefix}}*` 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" | `{{command_prefix}}explore` |
|
|
17
|
+
| "discuss", "decide", "what should we use for", "help me decide" | `{{command_prefix}}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" | `{{command_prefix}}audit` |
|
|
21
|
+
| "sketch", "explore directions", "try designs", "variant" | `{{command_prefix}}sketch` |
|
|
22
|
+
| "spike", "experiment", "feasibility", "test if" | `{{command_prefix}}spike` |
|
|
23
|
+
| "fix [specific thing]" | `{{command_prefix}}fast` |
|
|
24
|
+
| "pause", "stop", "save my place" | `{{command_prefix}}pause` |
|
|
25
|
+
| "resume", "pick back up", "continue where I left off" | `{{command_prefix}}resume` |
|
|
26
|
+
| "ship", "PR", "submit", "merge" | `{{command_prefix}}ship` |
|
|
27
|
+
| "undo", "revert", "roll back" | `{{command_prefix}}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 `{{command_prefix}}<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
|