@hegemonart/get-design-done 1.57.2 → 1.58.0
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 +87 -0
- package/README.md +1 -1
- package/SKILL.md +2 -6
- package/connections/cursor.md +0 -1
- package/hooks/gdd-intel-trigger.js +2 -2
- package/package.json +3 -3
- package/reference/DEPRECATIONS.md +18 -11
- package/reference/live-mode-integration.md +1 -1
- package/reference/registry.json +1 -1
- package/reference/skill-graph.md +1 -5
- package/reference/skill-metadata.md +4 -4
- package/reference/skill-placeholders.md +2 -2
- package/scripts/lib/manifest/scaffolder.cjs +1 -1
- package/scripts/lib/manifest/schemas/skills.schema.json +1 -1
- package/scripts/lib/manifest/skills.json +4 -24
- package/scripts/lib/new-addendum.cjs +1 -1
- package/scripts/lib/worktree-resolve.cjs +4 -16
- 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 +82 -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/new-skill/SKILL.md +5 -5
- 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,64 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: gdd-todo
|
|
3
|
-
description: "Design backlog - add/list/pick design tasks. Writes to .design/TODO.md."
|
|
4
|
-
argument-hint: "<add|list|pick> [text]"
|
|
5
|
-
tools: Read, Write, AskUserQuestion, mcp__gdd_state__get, mcp__gdd_state__add_decision, mcp__gdd_state__add_must_have
|
|
6
|
-
disable-model-invocation: true
|
|
7
|
-
---
|
|
8
|
-
|
|
9
|
-
# /gdd:todo
|
|
10
|
-
|
|
11
|
-
**Role:** Design todo list. Three subcommands: `add`, `list`, `pick`. Backing store: `.design/TODO.md`. For items that are pipeline-level decisions or must-haves (not free-form backlog), route through the `gdd-state` MCP tools instead - see **Pipeline-linked items** below.
|
|
12
|
-
|
|
13
|
-
## File format
|
|
14
|
-
|
|
15
|
-
```markdown
|
|
16
|
-
# Design Todos
|
|
17
|
-
|
|
18
|
-
## P0 — Blocking
|
|
19
|
-
- [ ] [2026-04-18] Fix contrast ratio on card headers
|
|
20
|
-
|
|
21
|
-
## P1 — High
|
|
22
|
-
- [ ] [2026-04-18] Align Button focus ring with tokens
|
|
23
|
-
|
|
24
|
-
## P2 — Normal
|
|
25
|
-
|
|
26
|
-
## P3 — Nice to have
|
|
27
|
-
```
|
|
28
|
-
|
|
29
|
-
Priority is encoded by section, not inline. Status markers: `[ ]` unchecked, `[x]` done, `[-]` `[in-progress]`, `[p]` `[promoted]`.
|
|
30
|
-
|
|
31
|
-
## Subcommands
|
|
32
|
-
|
|
33
|
-
### add [text]
|
|
34
|
-
If text omitted, use `AskUserQuestion`: "What todo item? (include priority P0-P3 if known)". Parse leading `P[0-3]` token from text; default P2. Append under the right section as:
|
|
35
|
-
```
|
|
36
|
-
- [ ] [YYYY-MM-DD] <text without priority token>
|
|
37
|
-
```
|
|
38
|
-
Create TODO.md from the template above if missing.
|
|
39
|
-
|
|
40
|
-
### list
|
|
41
|
-
1. Call `mcp__gdd_state__get` → pipeline-level decisions + must-haves (shown as context at the top).
|
|
42
|
-
2. Read `.design/TODO.md` (file outside the MCP catalog). Print all `- [ ]` and `- [-]` items grouped by priority section, with index numbers.
|
|
43
|
-
|
|
44
|
-
### pick
|
|
45
|
-
Read `.design/TODO.md`. Collect unchecked items. Use `AskUserQuestion` to let the user pick one. Rewrite the chosen line as:
|
|
46
|
-
```
|
|
47
|
-
- [-] [YYYY-MM-DD] [in-progress] <original text>
|
|
48
|
-
```
|
|
49
|
-
Print "Picked: <item>".
|
|
50
|
-
|
|
51
|
-
## Pipeline-linked items
|
|
52
|
-
|
|
53
|
-
When the user promotes a todo to a pipeline decision or must-have, route through MCP instead of TODO.md:
|
|
54
|
-
|
|
55
|
-
- Decision → `mcp__gdd_state__add_decision` with `{ id: "D-XX", text: "...", status: "locked"|"tentative" }`.
|
|
56
|
-
- Must-have → `mcp__gdd_state__add_must_have` with `{ id: "M-XX", text: "...", status: "pending" }`.
|
|
57
|
-
|
|
58
|
-
## Constraints
|
|
59
|
-
|
|
60
|
-
- Do not modify files outside `.design/`.
|
|
61
|
-
- Preserve existing sections and ordering on write.
|
|
62
|
-
- Do not mutate STATE.md directly - use the MCP tools above.
|
|
63
|
-
|
|
64
|
-
## TODO COMPLETE
|
|
@@ -1,95 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: gdd-turn-closeout
|
|
3
|
-
description: "Portable mirror of the gdd-turn-closeout Stop hook (D-11). Closes the events.jsonl gap at turn-end and surfaces a stage-completion or paused-mid-task nudge. Tail-called by orchestrator skills (/gdd:next, /gdd:design, /gdd:verify) at exit on the 13 non-Claude runtimes that lack a Stop hook surface. Idempotent, non-blocking, ≤10ms typical."
|
|
4
|
-
argument-hint: "(none - reads .design/STATE.md and .design/telemetry/events.jsonl from cwd)"
|
|
5
|
-
tools: Read, Bash
|
|
6
|
-
---
|
|
7
|
-
|
|
8
|
-
# gdd-turn-closeout
|
|
9
|
-
|
|
10
|
-
## Role
|
|
11
|
-
|
|
12
|
-
You are a deterministic **closeout** skill. You close the per-turn telemetry gap on runtimes that don't expose a Stop event (codex, gemini, and 11 others). You are a code-level mirror of `hooks/gdd-turn-closeout.js` (D-10): same conditions, same idempotence, same emitted event shape. The only difference: the JS hook emits the nudge as `additionalContext` via the harness; this skill prints the nudge directly to the user. See `./../new-cycle/milestone-completeness-rubric.md` §"Task level" for the broader closeout discipline (what "turn complete" means within a stage).
|
|
13
|
-
|
|
14
|
-
**When to invoke:** orchestrator skills (`/gdd:next`, `/gdd:design`, `/gdd:verify`) tail-call this skill as their final step before returning. Adoption is incremental - each orchestrator can wire the tail-call independently; the skill exists as a stable, callable surface today.
|
|
15
|
-
|
|
16
|
-
## Invocation Contract
|
|
17
|
-
|
|
18
|
-
- **Input**: none. Operates on `.design/STATE.md` and `.design/telemetry/events.jsonl` in cwd.
|
|
19
|
-
- **Output**: at most one printed line - the nudge - or silent return.
|
|
20
|
-
- **Latency budget**: ≤10ms typical. Read **only** STATE.md and the tail of events.jsonl.
|
|
21
|
-
- **Idempotence**: if the most recent event is already a `turn_end` for the current `(stage, task_progress)` tuple, skip append but still print nudge.
|
|
22
|
-
- **Non-blocking**: any I/O failure → silent return. This skill never gates the user.
|
|
23
|
-
|
|
24
|
-
## Algorithm
|
|
25
|
-
|
|
26
|
-
Execute in order; stop at the first early-return.
|
|
27
|
-
|
|
28
|
-
### Step 1 - Read STATE.md
|
|
29
|
-
|
|
30
|
-
Read `.design/STATE.md`. Missing or unreadable → **return silently** (no print, no append).
|
|
31
|
-
|
|
32
|
-
### Step 2 - Parse `<position>` block
|
|
33
|
-
|
|
34
|
-
Lightweight-parse only `<position>…</position>` (regex `/<position>([\s\S]*?)<\/position>/` then per-line `key: value`). Extract `stage`, `status`, `task_progress`. Do not invoke the full STATE parser.
|
|
35
|
-
|
|
36
|
-
If `status != "in_progress"` → **return silently**. Pipeline is initialized / completed / blocked - no turn-end gap to close.
|
|
37
|
-
|
|
38
|
-
### Step 3 - Tail the last event line
|
|
39
|
-
|
|
40
|
-
Read **only the last 8 KiB** of `.design/telemetry/events.jsonl`. Treat as "stale by definition":
|
|
41
|
-
|
|
42
|
-
- File missing.
|
|
43
|
-
- File empty.
|
|
44
|
-
- Last line fails JSON parse.
|
|
45
|
-
- Last line's `timestamp` is missing or unparseable.
|
|
46
|
-
|
|
47
|
-
Otherwise compute `now - last_event.timestamp`. Gap < 60 seconds → user is actively mid-turn → **return silently** (next real event closes the gap naturally). Bash one-liner for the tail: `tail -n 1 .design/telemetry/events.jsonl 2>/dev/null`.
|
|
48
|
-
|
|
49
|
-
### Step 4 - Idempotence check, then append
|
|
50
|
-
|
|
51
|
-
If last event is already `{type:"turn_end", stage:<same>, payload:{task_progress:<same>}}` for the exact `(stage, task_progress)` from Step 2: **skip append** but proceed to Step 5.
|
|
52
|
-
|
|
53
|
-
Otherwise append one JSONL line to `.design/telemetry/events.jsonl`:
|
|
54
|
-
|
|
55
|
-
```json
|
|
56
|
-
{"type":"turn_end","timestamp":"<ISO 8601 now>","sessionId":"<session-id-or-'turn-closeout'>","stage":"<stage>","payload":{"task_progress":"<N/M>"},"_meta":{"source":"gdd-turn-closeout-skill"}}
|
|
57
|
-
```
|
|
58
|
-
|
|
59
|
-
Create `.design/telemetry/` if missing. Append is a single `appendFile`-equivalent call (writer assumes append-atomicity per Plan 20-06).
|
|
60
|
-
|
|
61
|
-
### Step 5 - Print the nudge
|
|
62
|
-
|
|
63
|
-
Match `task_progress` against `^(\d+)/(\d+)$`:
|
|
64
|
-
|
|
65
|
-
- **Numerator equals denominator and denominator > 0** (e.g. `5/5`): `Stage <stage> complete — run /gdd:next or /gdd:reflect`.
|
|
66
|
-
- **Otherwise** (mid-task, e.g. `3/7`, `0/0`, malformed): `Stage <stage> paused mid-task — resume with /gdd:resume`.
|
|
67
|
-
|
|
68
|
-
One line exactly. No commentary - the nudge is the user-facing surface.
|
|
69
|
-
|
|
70
|
-
## Failure Modes
|
|
71
|
-
|
|
72
|
-
| Condition | Behavior |
|
|
73
|
-
|-----------|----------|
|
|
74
|
-
| STATE.md missing/unreadable | Silent return |
|
|
75
|
-
| `<position>` absent or malformed | Silent return |
|
|
76
|
-
| `status != "in_progress"` | Silent return |
|
|
77
|
-
| `events.jsonl` missing | Treat as stale → fall through to append + nudge |
|
|
78
|
-
| Last event unparseable | Treat as stale → fall through |
|
|
79
|
-
| Last event < 60s old | Silent return |
|
|
80
|
-
| Append fails (permission, disk full) | Print nudge anyway; do not surface I/O error |
|
|
81
|
-
| Any uncaught throw | Silent return |
|
|
82
|
-
|
|
83
|
-
## Equivalence with the JS hook
|
|
84
|
-
|
|
85
|
-
This skill and `hooks/gdd-turn-closeout.js` MUST stay code-level equivalent: same four early-return branches, same 60-second staleness threshold, same idempotence guard (`type=turn_end, stage, payload.task_progress`), same event shape (only `_meta.source` differs: `gdd-turn-closeout` vs `gdd-turn-closeout-skill` so reflector telemetry can distinguish hook-driven vs skill-driven). Same nudge wording for both N/N and mid-task cases. Change one → change the other in the same plan. Plan 25-09's `tests/turn-closeout-hook.test.cjs` covers the JS hook.
|
|
86
|
-
|
|
87
|
-
## Non-Goals
|
|
88
|
-
|
|
89
|
-
- **Not a state writer.** Never edits STATE.md. The events.jsonl append is the only side effect.
|
|
90
|
-
- **Not a stage transition.** `turn_end` is within-stage, not a state-machine move; downstream tools ignore it for transition gating.
|
|
91
|
-
- **Not a Stop-event harness.** Cross-runtime Stop-event support at the harness level is out-of-scope for Phase 25 (CONTEXT.md OOS).
|
|
92
|
-
|
|
93
|
-
## Integration Point
|
|
94
|
-
|
|
95
|
-
Canonical tail-call sites per D-11: `/gdd:next`, `/gdd:design`, `/gdd:verify`. Each orchestrator's final step before returning to the user invokes `gdd-turn-closeout`. Tail-call wiring intentionally not part of v1.25 (Plan 25-04 ships only the callable surface).
|
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: gdd-undo
|
|
3
|
-
description: "Safe design change revert. Uses git log to find design commits, checks dependencies, reverts safely."
|
|
4
|
-
argument-hint: "[<commit SHA>]"
|
|
5
|
-
tools: Read, Write, Bash, AskUserQuestion
|
|
6
|
-
disable-model-invocation: true
|
|
7
|
-
---
|
|
8
|
-
|
|
9
|
-
# /gdd:undo
|
|
10
|
-
|
|
11
|
-
Safe rollback for design-related commits. Uses git history plus file-overlap dependency checks before reverting.
|
|
12
|
-
|
|
13
|
-
## Steps
|
|
14
|
-
|
|
15
|
-
1. **List candidates**: Run `git log --oneline -n 20 --grep="design\|feat\|fix"` via Bash. Filter for commits whose scope matches phase prefixes (`design(`, `feat(07`, etc.) or touch files under `src/` related to design changes.
|
|
16
|
-
2. **Present choice**: If no SHA was passed as argument, print the last 10 design-related commits and ask (AskUserQuestion): "Which commit to undo? (or enter commit SHA)"
|
|
17
|
-
3. **Dependency scan**: For the chosen SHA, run `git show --name-only <sha>` to get touched files. Then run `git log <sha>..HEAD --name-only` to find later commits that modified any of those same files. These are potential dependencies.
|
|
18
|
-
4. **Dependency decision**:
|
|
19
|
-
- If none found: proceed to step 5.
|
|
20
|
-
- If found: print "Reverting this commit may break: <later commits>. Proceed anyway? (yes/no)" and abort on "no".
|
|
21
|
-
5. **Stage the revert**: Run `git revert <sha> --no-commit`. Show the resulting diff via `git diff --cached`.
|
|
22
|
-
6. **Confirm**: Ask (AskUserQuestion): "Apply this revert? (yes/no)"
|
|
23
|
-
7. **Commit or abort**: On yes, `git commit -m "revert: <original subject>"`. On no, `git reset` to unstage.
|
|
24
|
-
|
|
25
|
-
## Do Not
|
|
26
|
-
|
|
27
|
-
- Do not force-push.
|
|
28
|
-
- Do not revert commits on `main` without the user confirming branch context.
|
|
29
|
-
- Do not silently skip dependency warnings.
|
|
30
|
-
|
|
31
|
-
## UNDO COMPLETE
|
|
@@ -1,54 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: gdd-unlock-decision
|
|
3
|
-
description: "Reopens a LOCKED design decision - the only escape hatch from the hard lock. Requires an explicit --approver and writes an audit entry, then moves the decision locked → reviewing (via scripts/lib/collab/review-queue.cjs). Previews the audit record before writing; never unlocks silently. Use when a locked decision genuinely must change (a later constraint invalidated it) and a reviewer has signed off."
|
|
4
|
-
argument-hint: "<decision-id> --approver <who> [--reason <text>] [--dry-run]"
|
|
5
|
-
user-invocable: true
|
|
6
|
-
tools: Read, Write, Bash, Grep, Glob
|
|
7
|
-
---
|
|
8
|
-
|
|
9
|
-
# /gdd:unlock-decision
|
|
10
|
-
|
|
11
|
-
A `locked` decision is hard - it cannot be amended. This skill is the **only** way back, and it is
|
|
12
|
-
deliberately heavyweight: it requires a named approver and records an audit entry, so reopening a
|
|
13
|
-
locked decision is always traceable. Contract: `../../reference/multi-author-model.md`.
|
|
14
|
-
|
|
15
|
-
## Invocation
|
|
16
|
-
|
|
17
|
-
| Command | Behavior |
|
|
18
|
-
|---|---|
|
|
19
|
-
| `/gdd:unlock-decision <id> --approver <who>` | Unlock `<id>` (locked → reviewing), recording the approver. |
|
|
20
|
-
| `/gdd:unlock-decision <id> --approver <who> --reason <text>` | Same, with a reason in the audit entry. |
|
|
21
|
-
| `/gdd:unlock-decision <id> --dry-run` | Preview the audit record + the resulting state; change nothing. |
|
|
22
|
-
|
|
23
|
-
## Steps
|
|
24
|
-
|
|
25
|
-
1. **Validate args.** `<decision-id>` required; `--approver` required (a non-empty name). Missing
|
|
26
|
-
`--approver` → print the usage + exit without changing anything.
|
|
27
|
-
2. **Load the entry** from `.design/reviews/<decision-id>/state.json`. Not found → report it. Not in
|
|
28
|
-
`locked` state → print `unlock-decision: <id> is not locked (state: <state>); nothing to unlock.`
|
|
29
|
-
3. **Preview.** Show the audit entry that will be appended (`{ action: unlock, from: locked, to:
|
|
30
|
-
reviewing, approver, reason }`) and the resulting state. If ``--dry-run``, stop here.
|
|
31
|
-
4. **Apply** via the pure helper:
|
|
32
|
-
|
|
33
|
-
```bash
|
|
34
|
-
node -e '
|
|
35
|
-
const fs = require("fs");
|
|
36
|
-
const rq = require("./scripts/lib/collab/review-queue.cjs");
|
|
37
|
-
const p = process.argv[1], approver = process.argv[2], reason = process.argv[3] || "";
|
|
38
|
-
const entry = JSON.parse(fs.readFileSync(p, "utf8"));
|
|
39
|
-
const next = rq.unlock(entry, { approver, reason });
|
|
40
|
-
fs.writeFileSync(p, JSON.stringify(next, null, 2) + "\n");
|
|
41
|
-
console.log(JSON.stringify(next.audit[next.audit.length - 1]));
|
|
42
|
-
' ".design/reviews/<id>/state.json" "<who>" "<reason>"
|
|
43
|
-
```
|
|
44
|
-
|
|
45
|
-
5. **Report** the new state + the recorded approver. The decision is now `reviewing` and amendable
|
|
46
|
-
again; it must be re-reviewed + re-locked to become durable.
|
|
47
|
-
|
|
48
|
-
## Output
|
|
49
|
-
|
|
50
|
-
End with:
|
|
51
|
-
|
|
52
|
-
```
|
|
53
|
-
## UNLOCK-DECISION COMPLETE
|
|
54
|
-
```
|
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: gdd-unpin
|
|
3
|
-
description: "Removes pinned skill aliases across harness dirs, deleting only stubs that carry the gdd pin marker. Use when you no longer want a pinned shortcut and want hand-written skills left untouched."
|
|
4
|
-
argument-hint: "<skill-name>"
|
|
5
|
-
tools: Read, Bash
|
|
6
|
-
---
|
|
7
|
-
|
|
8
|
-
# /gdd:unpin
|
|
9
|
-
|
|
10
|
-
**Role:** Remove the pinned shortcut aliases for one gdd skill from every installed harness `skills/` directory. Only stubs that carry the marker line `<!-- gdd-pinned-skill source=<skill> -->` as their first non-empty line are deleted, so a hand-authored or unrelated SKILL.md is never touched.
|
|
11
|
-
|
|
12
|
-
## Steps
|
|
13
|
-
|
|
14
|
-
1. **Read the argument.** The skill name to unpin comes from `$ARGUMENTS` (for example `darkmode`). If it is empty, ask the user which skill to unpin and stop.
|
|
15
|
-
|
|
16
|
-
2. **Run the unpin CLI.** Invoke the shipped script, passing the skill name. The plugin root resolves via `CLAUDE_PLUGIN_ROOT` (falling back to the current directory when that variable is absent):
|
|
17
|
-
|
|
18
|
-
```bash
|
|
19
|
-
node "${CLAUDE_PLUGIN_ROOT:-$(pwd)}/scripts/lib/pin/cli.cjs" unpin "<skill-name>"
|
|
20
|
-
```
|
|
21
|
-
|
|
22
|
-
The CLI scans every harness `skills/` directory under the current project, checks each candidate stub for the gdd pin marker, deletes the ones that carry it, and refuses (skips with a warning) any file that does not.
|
|
23
|
-
|
|
24
|
-
3. **Report the result.** The CLI prints one line per harness it removed a stub from, plus a warning for any file it refused to delete. Relay that summary verbatim. Exit codes: 0 means at least one stub was removed, 1 means nothing was removed (no matching pinned stubs found), 2 means an error.
|
|
25
|
-
|
|
26
|
-
## Do Not
|
|
27
|
-
|
|
28
|
-
- Do not delete skill files by hand. Always go through the CLI so the marker check protects hand-written skills.
|
|
29
|
-
- Do not force-remove a file the CLI refused. A refusal means the file lacks the gdd pin marker and is not a pinned alias; leave it in place.
|
|
30
|
-
|
|
31
|
-
## UNPIN COMPLETE
|
|
@@ -1,56 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: gdd-update
|
|
3
|
-
description: "Update get-design-done to the latest release. Preserves .design/config.json and ./.claude/skills/."
|
|
4
|
-
argument-hint: "[--dry-run] [--version <tag>] [--show-privacy-diff]"
|
|
5
|
-
tools: Read, Write, Bash
|
|
6
|
-
disable-model-invocation: true
|
|
7
|
-
---
|
|
8
|
-
|
|
9
|
-
# gdd-update
|
|
10
|
-
|
|
11
|
-
Updates the `get-design-done` plugin to the latest release (or a specific tag), preserving user-local state.
|
|
12
|
-
|
|
13
|
-
## Steps
|
|
14
|
-
|
|
15
|
-
1. **Pre-flight check** - read current version from `.claude-plugin/plugin.json` (fallback: `plugin.json` at project root). Print current version and, when available, the latest release tag from GitHub.
|
|
16
|
-
2. **Dry-run** - if `--dry-run` is passed, print the planned steps and exit without making changes.
|
|
17
|
-
3. **Backup** - read `.design/config.json` into memory. Snapshot the file list under `./.claude/skills/` so we can detect collisions later. **Additionally, snapshot the text contents of `scripts/lib/pseudonymize.cjs`, `scripts/lib/issue-reporter/payload-assembly.cjs`, and `scripts/lib/issue-reporter/destination.cjs` to a tempdir (mirroring the same relative paths under that tempdir's root). This is the OLD tree used by the privacy-diff step below. Also read the previous-version string from `.design/privacy-diff-last-version.txt` if it exists, into a variable `prevVersion` (null if the file is absent).** (Plan 30-07 D-09)
|
|
18
|
-
4. **Pull update** - run `claude plugin install hegemonart/get-design-done` (or `claude plugin install hegemonart/get-design-done@<tag>` when `--version <tag>` is passed). This re-syncs all plugin files from the release.
|
|
19
|
-
5. **Restore config** - write `.design/config.json` back from the in-memory backup. The installer may reset the config to defaults; this step guarantees user settings survive.
|
|
20
|
-
5.5. **Privacy diff** - `const pd = require('./scripts/lib/issue-reporter/privacy-diff.cjs');` Compute `showDiff = pd.shouldAutoShow(prevVersion, currentVersion, oldTreeTempdir, repoRoot) || flags.showPrivacyDiff`. If `showDiff` is true: call `pd.computePrivacyDiff(oldTreeTempdir, repoRoot)`, pass the result to `pd.renderPrivacyDiff`, and print the returned markdown to stdout under a clear "## Privacy-critical changes" banner. If `--show-privacy-diff` was passed but `prevVersion === null` (first-ever upgrade), print: "Privacy diff requested but no previous version is recorded. Snapshot file `.design/privacy-diff-last-version.txt` will be written now; the next upgrade will be able to diff against this version." After printing (or skipping), write `currentVersion` to `.design/privacy-diff-last-version.txt` so the next upgrade compares against THIS version. (Plan 30-07 D-09)
|
|
21
|
-
6. **Preserve local skills** - `./.claude/skills/` is project-local and outside the plugin tree. Re-list the directory and confirm none of the pre-update files disappeared. Warn loudly if any did.
|
|
22
|
-
7. **Post-update advisory** - print:
|
|
23
|
-
|
|
24
|
-
> Run `/gdd:reapply-patches` if you have customized any `reference/` files to restore your modifications.
|
|
25
|
-
|
|
26
|
-
7.5. **Deprecation advisory** (Phase 39.5) - load the path-migration registry and report anything that
|
|
27
|
-
crossed into `deprecated` or `removed` over the `[prevVersion → currentVersion]` window:
|
|
28
|
-
|
|
29
|
-
```bash
|
|
30
|
-
node -e '
|
|
31
|
-
const fs = require("fs");
|
|
32
|
-
const dr = require("./scripts/lib/deprecation-registry.cjs");
|
|
33
|
-
const entries = dr.parseDeprecations(fs.readFileSync("reference/DEPRECATIONS.md","utf8"));
|
|
34
|
-
const crossed = entries.filter(e =>
|
|
35
|
-
dr.classify(e, currentVersion) !== "pending" &&
|
|
36
|
-
(prevVersion == null || dr.classify(e, prevVersion) !== dr.classify(e, currentVersion)));
|
|
37
|
-
console.log(JSON.stringify(crossed));
|
|
38
|
-
'
|
|
39
|
-
```
|
|
40
|
-
|
|
41
|
-
If any entry crossed, print a `## Deprecations in this update` list (old → new + status) and point
|
|
42
|
-
the user at **`/gdd:migrate`** to rewrite their local references. If none crossed, say nothing.
|
|
43
|
-
|
|
44
|
-
8. Print the new version and the changelog URL (`https://github.com/hegemonart/get-design-done/releases`).
|
|
45
|
-
|
|
46
|
-
## Output
|
|
47
|
-
|
|
48
|
-
End every invocation with:
|
|
49
|
-
|
|
50
|
-
```
|
|
51
|
-
## UPDATE COMPLETE
|
|
52
|
-
```
|
|
53
|
-
|
|
54
|
-
## Implementation note
|
|
55
|
-
|
|
56
|
-
The actual update mechanism is the standard `claude plugin install` re-install path. This skill only orchestrates the pre-/post-preservation steps around it.
|
|
@@ -1,78 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: using-gdd
|
|
3
|
-
description: "Use when starting any GDD session - establishes how to find and apply GDD skills."
|
|
4
|
-
disable-model-invocation: true
|
|
5
|
-
---
|
|
6
|
-
<SUBAGENT-STOP>
|
|
7
|
-
|
|
8
|
-
# Using GDD
|
|
9
|
-
|
|
10
|
-
This is the bootstrap discipline contract for every Get Design Done session. Read it
|
|
11
|
-
first; it tells you how to find and apply the right GDD skill before you act.
|
|
12
|
-
|
|
13
|
-
## The 1% rule
|
|
14
|
-
|
|
15
|
-
**If you think there is even a 1% chance a skill might apply, you ABSOLUTELY MUST invoke the skill.**
|
|
16
|
-
|
|
17
|
-
In GDD, almost every request maps to a pipeline stage - brief, explore, plan, design,
|
|
18
|
-
verify - or to a cross-cutting skill (discuss, audit, style, darkmode). When in doubt,
|
|
19
|
-
search for and read the skill's body. The cost of reading a skill is trivial; the cost of
|
|
20
|
-
free-handing a stage is rework, scope creep, and a broken pipeline state.
|
|
21
|
-
|
|
22
|
-
## Red flags - Thought → Reality
|
|
23
|
-
|
|
24
|
-
When you catch yourself thinking any of the following, STOP and check for a skill.
|
|
25
|
-
|
|
26
|
-
| Thought | Reality |
|
|
27
|
-
| --- | --- |
|
|
28
|
-
| This is just a simple design question. | Questions are tasks. Check for a skill. |
|
|
29
|
-
| I'll just tweak the CSS directly. | Token changes go through the pipeline - check /gdd:design. |
|
|
30
|
-
| I already know the codebase, skip explore. | Explore probes connections you haven't re-checked this cycle. |
|
|
31
|
-
| This change is too small to plan. | Plan-skipped tasks blow scope per cycle telemetry. Run /gdd:plan. |
|
|
32
|
-
| I can write the brief later. | No brief means no shared problem statement - /gdd:brief comes first. |
|
|
33
|
-
| The user clearly wants X, I'll skip discuss. | Ambiguity hides here. /gdd:discuss surfaces the real constraint. |
|
|
34
|
-
| I'll verify by eyeballing it. | Verification is a stage with criteria - run /gdd:verify, don't guess. |
|
|
35
|
-
| It's obviously a dark-mode tweak. | Color-scheme work has its own skill - check /gdd:darkmode. |
|
|
36
|
-
| Let me just compare these two designs quickly. | Comparison is an audit task - /gdd:compare has the rubric. |
|
|
37
|
-
| This is a one-off, no skill needed. | "One-off" is the most common rationalization in the telemetry. Check anyway. |
|
|
38
|
-
| I'll refactor the style tokens by hand. | /gdd:style owns token edits so the pipeline stays consistent. |
|
|
39
|
-
| The audit can wait until after I ship. | An un-audited cycle is an unverified cycle - /gdd:audit before close. |
|
|
40
|
-
|
|
41
|
-
## Skill priority order
|
|
42
|
-
|
|
43
|
-
When more than one skill could apply, resolve in this order:
|
|
44
|
-
|
|
45
|
-
1. **Process** - brief / explore / discuss. Establish the problem and context first.
|
|
46
|
-
2. **Implementation** - design / style / darkmode. Only after process is settled.
|
|
47
|
-
3. **Audit** - verify / compare / audit. Close the loop before declaring done.
|
|
48
|
-
|
|
49
|
-
Never run an Implementation skill before the Process skills that gate it have produced
|
|
50
|
-
their artifact. Never declare a cycle complete without an Audit skill.
|
|
51
|
-
|
|
52
|
-
## Instruction priority
|
|
53
|
-
|
|
54
|
-
When instructions conflict, obey this precedence (highest first):
|
|
55
|
-
|
|
56
|
-
1. **The user's CLAUDE.md** - project- and user-level directives always win.
|
|
57
|
-
2. **GDD skills** - the skill body is the source of truth for how a stage runs.
|
|
58
|
-
3. **Defaults** - your own general training and habits come last.
|
|
59
|
-
|
|
60
|
-
If a GDD skill contradicts the user's CLAUDE.md, the CLAUDE.md wins and you flag the
|
|
61
|
-
conflict. If your instinct contradicts a GDD skill, the skill wins.
|
|
62
|
-
|
|
63
|
-
## GDD pipeline flow
|
|
64
|
-
|
|
65
|
-
The core flow is **Brief → Explore → Plan → Design → Verify**, with branch points:
|
|
66
|
-
|
|
67
|
-
- **Brief** captures the problem (`/gdd:brief`). Branch: a rough idea can sketch or spike
|
|
68
|
-
off the brief before exploration; a changed problem loops back via `--re-brief`.
|
|
69
|
-
- **Explore** scans the codebase and connections (`/gdd:explore`) - even on a familiar
|
|
70
|
-
repo, because connections drift each cycle.
|
|
71
|
-
- **Plan** decomposes work into tasks (`/gdd:plan`). Skipping it is the top cause of scope
|
|
72
|
-
blow-up; small tasks still get a plan.
|
|
73
|
-
- **Design** implements (`/gdd:design`, with `/gdd:style` and `/gdd:darkmode` as
|
|
74
|
-
implementation peers). Implementation never runs ahead of an approved plan.
|
|
75
|
-
- **Verify** checks against criteria (`/gdd:verify`), then `/gdd:audit` / `/gdd:compare`
|
|
76
|
-
close the loop. On pass the cycle completes; on fail it loops back to the failing stage.
|
|
77
|
-
|
|
78
|
-
`/gdd:discuss` runs alongside any stage to resolve ambiguity before it propagates.
|
|
@@ -1,113 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: verify
|
|
3
|
-
description: "Stage 5 of 5 orchestrator that spawns design-auditor, design-verifier, and design-integration-checker in sequence, interprets pass/gap result, and drives the gap-response loop (inline fix, save-and-exit, or accept-as-is). Use when implementation is complete and ready for final pre-ship verification. Activates for requests involving checking finished UI against the design system, running a pre-ship review, or final verification."
|
|
4
|
-
argument-hint: "[--auto] [--post-handoff]"
|
|
5
|
-
user-invocable: true
|
|
6
|
-
tools: mcp__gdd_state__get, mcp__gdd_state__transition_stage, mcp__gdd_state__add_must_have, mcp__gdd_state__add_blocker, mcp__gdd_state__resolve_blocker, mcp__gdd_state__update_progress, mcp__gdd_state__set_status, mcp__gdd_state__checkpoint, mcp__gdd_state__probe_connections
|
|
7
|
-
---
|
|
8
|
-
|
|
9
|
-
# Get Design Done - Verify
|
|
10
|
-
|
|
11
|
-
**Stage 5 of 5** in the get-design-done pipeline. Thin orchestrator. Verification intelligence lives in three agents: design-auditor, design-verifier, and design-integration-checker.
|
|
12
|
-
|
|
13
|
-
Full procedure detail: `./verify-procedure.md`.
|
|
14
|
-
|
|
15
|
-
---
|
|
16
|
-
|
|
17
|
-
## State Integration
|
|
18
|
-
|
|
19
|
-
1. `mcp__gdd_state__transition_stage` with `to: "verify"`; on gate failure surface `error.context.blockers` to the user without advancing.
|
|
20
|
-
2. `mcp__gdd_state__get` -> snapshot `state`. Read `state.must_haves` (verification checklist - each M-XX flips to `pass` or `fail`).
|
|
21
|
-
3. **Quality-gate gate (D-08, D-09)** - inspect `state.quality_gate?.run?.status`:
|
|
22
|
-
- `"fail"` -> refuse to advance; call `mcp__gdd_state__add_blocker` with the iteration count + `commands_run`; exit. Do NOT open the stage.
|
|
23
|
-
- `"timeout"` / `"skipped"` -> print one-line warning naming the status + `commands_run`, continue normally (signals, not walls).
|
|
24
|
-
- `"pass"` / `null` -> continue silently.
|
|
25
|
-
Full decision tree: `./verify-procedure.md` §Quality-gate gate.
|
|
26
|
-
4. Resume detection - if `state.position.status==in_progress` and `.design/DESIGN-VERIFICATION.md` exists: RESUME to Step 2 (gap-response loop). Otherwise call `mcp__gdd_state__update_progress` with `task_progress: "0/3"`, `status: "in_progress"` and proceed.
|
|
27
|
-
5. Missing STATE.md is a hard block - verify is never the entry point; upstream stages own bootstrap.
|
|
28
|
-
|
|
29
|
-
**Flipping a must-have status:** `mcp__gdd_state__add_must_have` with the SAME `id` updates in-place (no separate update tool). Detail: `./verify-procedure.md` §Flipping a must-have status.
|
|
30
|
-
|
|
31
|
-
---
|
|
32
|
-
|
|
33
|
-
## Connection probes
|
|
34
|
-
|
|
35
|
-
Run preview / storybook / chromatic probes at stage entry, then issue ONE batched `mcp__gdd_state__probe_connections` call with all results. Full probe specs (project detection, dev-server probe, CLI presence, token check) and downstream loops (storybook a11y, chromatic visual delta) are in `./verify-procedure.md` §Connection Probes.
|
|
36
|
-
|
|
37
|
-
---
|
|
38
|
-
|
|
39
|
-
## Prerequisites + flags
|
|
40
|
-
|
|
41
|
-
- **DESIGN-PLAN.md prerequisite** (normal mode): missing -> block with "Verify requires DESIGN-PLAN.md. Run `/gdd:plan` first, or use `--post-handoff` if starting from a Claude Design handoff bundle."
|
|
42
|
-
- **Post-handoff mode** (`--post-handoff` OR STATE.md `status: handoff-sourced`): skip the DESIGN-PLAN.md check; pass `post_handoff: true` + `handoff_path` to design-verifier; DESIGN-VERIFICATION.md gains a `## Handoff Faithfulness` section. Detail: `./verify-procedure.md` §Post-Handoff Mode.
|
|
43
|
-
- **Flags:** `--auto` -> `auto_mode=true` (no interactive prompts; on gaps: save-and-exit); `--post-handoff` -> see above.
|
|
44
|
-
- **Parallelism decision:** read `.design/config.json` + `reference/parallelism-rules.md`. Default serial (verifier depends on auditor output). Record via `mcp__gdd_state__set_status` before spawning. Detail: `./verify-procedure.md` §Parallelism Decision.
|
|
45
|
-
|
|
46
|
-
---
|
|
47
|
-
|
|
48
|
-
## Step 1 - Spawn Auditor + Verifier + Integration Checker
|
|
49
|
-
|
|
50
|
-
Initialize the fix-loop iteration counter to 0. Each full checker is preceded by a cheap Haiku gate that may return `{spawn: false}` to short-circuit (lazy-gate pattern from Plan 10.1-04 / D-21); skipped agents append `lazy_skipped: true` to `.design/telemetry/costs.jsonl`.
|
|
51
|
-
|
|
52
|
-
**1a. design-auditor** (retrospective 7-pillar audit) -> `.design/DESIGN-AUDIT.md`. Wait for `## AUDIT COMPLETE`, then `mcp__gdd_state__update_progress` `task_progress: "1/3"`.
|
|
53
|
-
|
|
54
|
-
**1b-gate -> 1b. design-verifier** (5-phase verification, reads auditor output) -> `.design/DESIGN-VERIFICATION.md`. Wait for `## VERIFICATION COMPLETE`, then `task_progress: "2/3"`.
|
|
55
|
-
|
|
56
|
-
**1c-gate -> 1c. design-integration-checker** (per-decision wiring check on each D-XX in DESIGN-CONTEXT.md) -> reports Connected / Orphaned / Missing counts. Wait for `## INTEGRATION CHECK COMPLETE`, then `task_progress: "3/3"`.
|
|
57
|
-
|
|
58
|
-
Full agent prompts, lazy-gate decision logic, and telemetry-row shapes: `./verify-procedure.md` §Step 1.
|
|
59
|
-
|
|
60
|
-
---
|
|
61
|
-
|
|
62
|
-
## Step 2 - Interpret Result
|
|
63
|
-
|
|
64
|
-
Consolidate gaps from both sources: verifier `## GAPS FOUND` (G-NN entries) and integration-checker (Orphaned -> MAJOR, Missing -> BLOCKER).
|
|
65
|
-
|
|
66
|
-
- **No gaps (PASS)** -> for each M-XX in the entry snapshot: `add_must_have` with `status: "pass"`. Proceed to Stage exit.
|
|
67
|
-
- **Gaps + `auto_mode=true`** -> preserve DESIGN-VERIFICATION.md, `set_status: "blocked"`, `add_blocker` with the gap count, exit with the failure message.
|
|
68
|
-
- **Gaps + `auto_mode=false`** -> proceed to Step 3.
|
|
69
|
-
|
|
70
|
-
Detail: `./verify-procedure.md` §Step 2.
|
|
71
|
-
|
|
72
|
-
---
|
|
73
|
-
|
|
74
|
-
## Step 3 - Gap Response Loop
|
|
75
|
-
|
|
76
|
-
Present the gap summary + 3-option menu (`[1] Fix now`, `[2] Save and exit`, `[3] Accept as-is`).
|
|
77
|
-
|
|
78
|
-
- **[1] Fix now** -> if iteration counter >= 3 fall back to [2]; otherwise increment counter, spawn `design-fixer` for BLOCKER+MAJOR gaps (each fix is an atomic `fix(design-gap-GNN):` commit), wait for `## FIX COMPLETE`, then re-spawn `design-verifier` with `re_verify=true` and loop to Step 2.
|
|
79
|
-
- **[2] Save and exit** -> preserve DESIGN-VERIFICATION.md, `set_status: "blocked"`, `add_blocker`, `checkpoint`, exit.
|
|
80
|
-
- **[3] Accept as-is** -> flip each unmet M-XX to `status: "fail"`, `add_blocker` with "accepted with N unresolved gaps", proceed to Stage exit.
|
|
81
|
-
|
|
82
|
-
Full prompts + branching: `./verify-procedure.md` §Step 3.
|
|
83
|
-
|
|
84
|
-
---
|
|
85
|
-
|
|
86
|
-
## Stage exit
|
|
87
|
-
|
|
88
|
-
1. `mcp__gdd_state__update_progress` -> `task_progress: "<verified>/<total>"`, `status: "verify_complete"`.
|
|
89
|
-
2. `mcp__gdd_state__set_status` -> `"pipeline_complete"` (all pass, no gaps) or `"verify_failed_requires_loop"` (gaps remain).
|
|
90
|
-
3. `mcp__gdd_state__checkpoint` - stamps `last_checkpoint` and appends `verify_completed_at`. No direct STATE.md writes.
|
|
91
|
-
|
|
92
|
-
## After Completion
|
|
93
|
-
|
|
94
|
-
Print the `=== Verify complete ===` summary (status, gap counts, agent paths, next-step suggestion) from `./verify-procedure.md` §After Completion.
|
|
95
|
-
|
|
96
|
-
<HARD-GATE>
|
|
97
|
-
Do NOT mark the cycle complete until the user has reviewed `.design/DESIGN-VERIFICATION.md`. If this project uses a custom `.design` location, read the artifact path from `.design/STATE.md` rather than assuming the default.
|
|
98
|
-
</HARD-GATE>
|
|
99
|
-
|
|
100
|
-
## Rationalizations - Thought to Reality
|
|
101
|
-
|
|
102
|
-
The reasons an agent gives to skip or weaken verification, and what each one lets through:
|
|
103
|
-
|
|
104
|
-
| Thought | Reality |
|
|
105
|
-
|---------|---------|
|
|
106
|
-
| "The implementation looks right, I can skip the verifier spawn." | Skipping verification ships unchecked must-haves; the 5-phase verifier exists to catch what "looks right" misses. |
|
|
107
|
-
| "The integration-checker is redundant with the auditor." | The auditor scores quality; the integration-checker proves each D-XX is actually wired - an orphaned decision passes the audit but fails the product. |
|
|
108
|
-
| "These gaps are minor, I'll accept-as-is without a blocker." | Accept-as-is without recording the unresolved gaps erases the trail; the next cycle re-discovers them from scratch. |
|
|
109
|
-
| "The quality gate timed out, I'll treat that as a pass." | Timeout is a signal, not a pass - masking it lets a genuinely failing gate slip through to ship. |
|
|
110
|
-
| "I'll loop the fixer a fourth time to clear the last gap." | The 3-iteration cap exists because a gap surviving three fixes is a design problem, not a code problem - save and escalate. |
|
|
111
|
-
| "Post-handoff bundles don't need the faithfulness check." | Skipping the handoff-faithfulness section means a divergence from the source design ships unflagged. |
|
|
112
|
-
|
|
113
|
-
## VERIFY COMPLETE
|