@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.
Files changed (159) hide show
  1. package/.claude-plugin/marketplace.json +4 -4
  2. package/.claude-plugin/plugin.json +2 -2
  3. package/CHANGELOG.md +87 -0
  4. package/README.md +1 -1
  5. package/SKILL.md +2 -6
  6. package/connections/cursor.md +0 -1
  7. package/hooks/gdd-intel-trigger.js +2 -2
  8. package/package.json +3 -3
  9. package/reference/DEPRECATIONS.md +18 -11
  10. package/reference/live-mode-integration.md +1 -1
  11. package/reference/registry.json +1 -1
  12. package/reference/skill-graph.md +1 -5
  13. package/reference/skill-metadata.md +4 -4
  14. package/reference/skill-placeholders.md +2 -2
  15. package/scripts/lib/manifest/scaffolder.cjs +1 -1
  16. package/scripts/lib/manifest/schemas/skills.schema.json +1 -1
  17. package/scripts/lib/manifest/skills.json +4 -24
  18. package/scripts/lib/new-addendum.cjs +1 -1
  19. package/scripts/lib/worktree-resolve.cjs +4 -16
  20. package/sdk/cli/commands/build.ts +2 -2
  21. package/sdk/cli/index.js +2 -2
  22. package/sdk/cli/index.ts +1 -1
  23. package/skills/README.md +82 -0
  24. package/skills/bootstrap-ds/SKILL.md +1 -1
  25. package/skills/compare/SKILL.md +1 -1
  26. package/skills/new-cycle/SKILL.md +1 -1
  27. package/skills/new-skill/SKILL.md +5 -5
  28. package/skills/peer-cli-customize/SKILL.md +0 -1
  29. package/skills/peers/SKILL.md +1 -1
  30. package/skills/reflect/procedures/capability-gap-scan.md +0 -1
  31. package/skills/report-issue/report-issue-procedure.md +0 -1
  32. package/skills/synthesize/SKILL.md +1 -1
  33. package/skills/turn-closeout/SKILL.md +1 -1
  34. package/dist/claude-code/.claude/skills/add-backlog/SKILL.md +0 -48
  35. package/dist/claude-code/.claude/skills/analyze-dependencies/SKILL.md +0 -95
  36. package/dist/claude-code/.claude/skills/apply-reflections/SKILL.md +0 -109
  37. package/dist/claude-code/.claude/skills/apply-reflections/apply-reflections-procedure.md +0 -170
  38. package/dist/claude-code/.claude/skills/audit/SKILL.md +0 -79
  39. package/dist/claude-code/.claude/skills/bandit-status/SKILL.md +0 -94
  40. package/dist/claude-code/.claude/skills/benchmark/SKILL.md +0 -65
  41. package/dist/claude-code/.claude/skills/bootstrap-ds/SKILL.md +0 -43
  42. package/dist/claude-code/.claude/skills/brief/SKILL.md +0 -145
  43. package/dist/claude-code/.claude/skills/budget/SKILL.md +0 -45
  44. package/dist/claude-code/.claude/skills/cache-manager/SKILL.md +0 -66
  45. package/dist/claude-code/.claude/skills/cache-manager/cache-policy.md +0 -126
  46. package/dist/claude-code/.claude/skills/check-update/SKILL.md +0 -98
  47. package/dist/claude-code/.claude/skills/compare/SKILL.md +0 -82
  48. package/dist/claude-code/.claude/skills/compare/compare-rubric.md +0 -171
  49. package/dist/claude-code/.claude/skills/complete-cycle/SKILL.md +0 -81
  50. package/dist/claude-code/.claude/skills/connections/SKILL.md +0 -71
  51. package/dist/claude-code/.claude/skills/connections/connections-onboarding.md +0 -608
  52. package/dist/claude-code/.claude/skills/context/SKILL.md +0 -137
  53. package/dist/claude-code/.claude/skills/continue/SKILL.md +0 -24
  54. package/dist/claude-code/.claude/skills/darkmode/SKILL.md +0 -76
  55. package/dist/claude-code/.claude/skills/darkmode/darkmode-audit-procedure.md +0 -258
  56. package/dist/claude-code/.claude/skills/debug/SKILL.md +0 -41
  57. package/dist/claude-code/.claude/skills/debug/debug-feedback-loops.md +0 -119
  58. package/dist/claude-code/.claude/skills/design/SKILL.md +0 -118
  59. package/dist/claude-code/.claude/skills/design/design-procedure.md +0 -304
  60. package/dist/claude-code/.claude/skills/discover/SKILL.md +0 -78
  61. package/dist/claude-code/.claude/skills/discover/discover-procedure.md +0 -222
  62. package/dist/claude-code/.claude/skills/discuss/SKILL.md +0 -96
  63. package/dist/claude-code/.claude/skills/do/SKILL.md +0 -45
  64. package/dist/claude-code/.claude/skills/explore/SKILL.md +0 -118
  65. package/dist/claude-code/.claude/skills/explore/explore-procedure.md +0 -267
  66. package/dist/claude-code/.claude/skills/export/SKILL.md +0 -30
  67. package/dist/claude-code/.claude/skills/extract-learnings/SKILL.md +0 -114
  68. package/dist/claude-code/.claude/skills/fast/SKILL.md +0 -91
  69. package/dist/claude-code/.claude/skills/figma-extract/SKILL.md +0 -64
  70. package/dist/claude-code/.claude/skills/figma-write/SKILL.md +0 -50
  71. package/dist/claude-code/.claude/skills/graphify/SKILL.md +0 -49
  72. package/dist/claude-code/.claude/skills/health/SKILL.md +0 -99
  73. package/dist/claude-code/.claude/skills/health/health-mcp-detection.md +0 -44
  74. package/dist/claude-code/.claude/skills/health/health-skill-length-report.md +0 -69
  75. package/dist/claude-code/.claude/skills/help/SKILL.md +0 -87
  76. package/dist/claude-code/.claude/skills/instinct/SKILL.md +0 -111
  77. package/dist/claude-code/.claude/skills/list-assumptions/SKILL.md +0 -61
  78. package/dist/claude-code/.claude/skills/list-pins/SKILL.md +0 -27
  79. package/dist/claude-code/.claude/skills/live/SKILL.md +0 -98
  80. package/dist/claude-code/.claude/skills/locale/SKILL.md +0 -51
  81. package/dist/claude-code/.claude/skills/map/SKILL.md +0 -89
  82. package/dist/claude-code/.claude/skills/migrate/SKILL.md +0 -70
  83. package/dist/claude-code/.claude/skills/migrate-context/SKILL.md +0 -123
  84. package/dist/claude-code/.claude/skills/new-addendum/SKILL.md +0 -81
  85. package/dist/claude-code/.claude/skills/new-cycle/SKILL.md +0 -37
  86. package/dist/claude-code/.claude/skills/new-cycle/milestone-completeness-rubric.md +0 -87
  87. package/dist/claude-code/.claude/skills/new-project/SKILL.md +0 -53
  88. package/dist/claude-code/.claude/skills/new-skill/SKILL.md +0 -90
  89. package/dist/claude-code/.claude/skills/next/SKILL.md +0 -68
  90. package/dist/claude-code/.claude/skills/note/SKILL.md +0 -48
  91. package/dist/claude-code/.claude/skills/openrouter-status/SKILL.md +0 -86
  92. package/dist/claude-code/.claude/skills/optimize/SKILL.md +0 -97
  93. package/dist/claude-code/.claude/skills/override/SKILL.md +0 -86
  94. package/dist/claude-code/.claude/skills/paper-write/SKILL.md +0 -54
  95. package/dist/claude-code/.claude/skills/pause/SKILL.md +0 -77
  96. package/dist/claude-code/.claude/skills/peer-cli-add/SKILL.md +0 -88
  97. package/dist/claude-code/.claude/skills/peer-cli-add/peer-cli-protocol.md +0 -161
  98. package/dist/claude-code/.claude/skills/peer-cli-customize/SKILL.md +0 -90
  99. package/dist/claude-code/.claude/skills/peers/SKILL.md +0 -96
  100. package/dist/claude-code/.claude/skills/pencil-write/SKILL.md +0 -54
  101. package/dist/claude-code/.claude/skills/pin/SKILL.md +0 -37
  102. package/dist/claude-code/.claude/skills/plan/SKILL.md +0 -105
  103. package/dist/claude-code/.claude/skills/plan/plan-procedure.md +0 -278
  104. package/dist/claude-code/.claude/skills/plant-seed/SKILL.md +0 -48
  105. package/dist/claude-code/.claude/skills/pr-branch/SKILL.md +0 -32
  106. package/dist/claude-code/.claude/skills/progress/SKILL.md +0 -107
  107. package/dist/claude-code/.claude/skills/quality-gate/SKILL.md +0 -90
  108. package/dist/claude-code/.claude/skills/quality-gate/threat-modeling.md +0 -101
  109. package/dist/claude-code/.claude/skills/quick/SKILL.md +0 -44
  110. package/dist/claude-code/.claude/skills/reapply-patches/SKILL.md +0 -32
  111. package/dist/claude-code/.claude/skills/recall/SKILL.md +0 -75
  112. package/dist/claude-code/.claude/skills/reflect/SKILL.md +0 -85
  113. package/dist/claude-code/.claude/skills/reflect/procedures/capability-gap-scan.md +0 -120
  114. package/dist/claude-code/.claude/skills/report-issue/SKILL.md +0 -53
  115. package/dist/claude-code/.claude/skills/report-issue/report-issue-procedure.md +0 -120
  116. package/dist/claude-code/.claude/skills/resume/SKILL.md +0 -93
  117. package/dist/claude-code/.claude/skills/review-backlog/SKILL.md +0 -46
  118. package/dist/claude-code/.claude/skills/review-decisions/SKILL.md +0 -42
  119. package/dist/claude-code/.claude/skills/roi/SKILL.md +0 -54
  120. package/dist/claude-code/.claude/skills/rollout-status/SKILL.md +0 -35
  121. package/dist/claude-code/.claude/skills/router/SKILL.md +0 -89
  122. package/dist/claude-code/.claude/skills/router/capability-gap-emitter.md +0 -65
  123. package/dist/claude-code/.claude/skills/router/router-pick-emitter.md +0 -78
  124. package/dist/claude-code/.claude/skills/router/router-rules.md +0 -84
  125. package/dist/claude-code/.claude/skills/scan/SKILL.md +0 -92
  126. package/dist/claude-code/.claude/skills/scan/scan-procedure.md +0 -732
  127. package/dist/claude-code/.claude/skills/settings/SKILL.md +0 -87
  128. package/dist/claude-code/.claude/skills/ship/SKILL.md +0 -48
  129. package/dist/claude-code/.claude/skills/sketch/SKILL.md +0 -78
  130. package/dist/claude-code/.claude/skills/sketch-wrap-up/SKILL.md +0 -92
  131. package/dist/claude-code/.claude/skills/skill-manifest/SKILL.md +0 -79
  132. package/dist/claude-code/.claude/skills/spike/SKILL.md +0 -67
  133. package/dist/claude-code/.claude/skills/spike-wrap-up/SKILL.md +0 -86
  134. package/dist/claude-code/.claude/skills/start/SKILL.md +0 -67
  135. package/dist/claude-code/.claude/skills/start/start-procedure.md +0 -115
  136. package/dist/claude-code/.claude/skills/state/SKILL.md +0 -106
  137. package/dist/claude-code/.claude/skills/stats/SKILL.md +0 -51
  138. package/dist/claude-code/.claude/skills/style/SKILL.md +0 -71
  139. package/dist/claude-code/.claude/skills/style/style-doc-procedure.md +0 -150
  140. package/dist/claude-code/.claude/skills/synthesize/SKILL.md +0 -94
  141. package/dist/claude-code/.claude/skills/timeline/SKILL.md +0 -66
  142. package/dist/claude-code/.claude/skills/todo/SKILL.md +0 -64
  143. package/dist/claude-code/.claude/skills/turn-closeout/SKILL.md +0 -95
  144. package/dist/claude-code/.claude/skills/undo/SKILL.md +0 -31
  145. package/dist/claude-code/.claude/skills/unlock-decision/SKILL.md +0 -54
  146. package/dist/claude-code/.claude/skills/unpin/SKILL.md +0 -31
  147. package/dist/claude-code/.claude/skills/update/SKILL.md +0 -56
  148. package/dist/claude-code/.claude/skills/using-gdd/SKILL.md +0 -78
  149. package/dist/claude-code/.claude/skills/verify/SKILL.md +0 -113
  150. package/dist/claude-code/.claude/skills/verify/verify-procedure.md +0 -511
  151. package/dist/claude-code/.claude/skills/warm-cache/SKILL.md +0 -81
  152. package/dist/claude-code/.claude/skills/watch-authorities/SKILL.md +0 -82
  153. package/dist/claude-code/.claude/skills/zoom-out/SKILL.md +0 -26
  154. package/hooks/run-hook.cmd +0 -35
  155. package/skills/discover/SKILL.md +0 -78
  156. package/skills/discover/discover-procedure.md +0 -222
  157. package/skills/new-cycle/milestone-completeness-rubric.md +0 -87
  158. package/skills/scan/SKILL.md +0 -92
  159. package/skills/scan/scan-procedure.md +0 -732
@@ -1,267 +0,0 @@
1
- ---
2
- name: explore-procedure
3
- type: meta-rules
4
- version: 1.0.0
5
- phase: 28.5
6
- tags: [explore, procedure, extracted, pipeline-stage, connection-probe, design-interview, i18n]
7
- last_updated: 2026-05-18
8
- ---
9
-
10
- Source: extracted from `skills/explore/SKILL.md` (Phase 28.5 rework - D-10 extract-then-link).
11
- The skill's essential workflow stays in `../skills/explore/SKILL.md`; this file holds the
12
- detail the agent reaches for when executing a specific step (six connection probes, 21st.dev
13
- prior-art check, inventory scan grep, design interview protocol, i18n probe, decision
14
- recording).
15
-
16
- # Explore Procedure
17
-
18
- Detailed procedure for the get-design-done `explore` Stage 2 orchestrator. Companion to
19
- `../skills/explore/SKILL.md`. Read this file when executing a specific step; the SKILL.md
20
- keeps the essential workflow + decision tree, this file holds the deep methodology.
21
-
22
- ---
23
-
24
- ## Stage entry
25
-
26
- All STATE.md persistence in this skill goes through `gdd-state` MCP tools - no direct edits. The skill writes to `.design/STATE.md` (connections, decisions, progress, checkpoint) via those tools, and to plain design docs (DESIGN.md / DESIGN-DEBT.md / DESIGN-CONTEXT.md) via `Write`.
27
-
28
- 1. Call `mcp__gdd_state__transition_stage` with `to: "explore"`.
29
- - On success: proceed to probes.
30
- - On gate failure: emit blockers to the user (do not advance). Each blocker is a line in the `error.context.blockers` array; print them verbatim.
31
- 2. Call `mcp__gdd_state__get` with no arguments - snapshot the parsed state into a local `state` variable for downstream steps.
32
-
33
- ---
34
-
35
- ## Step 1 - Connection probe
36
-
37
- Probe connection availability (the batched write lands at the end of this step - see "Commit probe results" below):
38
-
39
- **A - Figma probe (variant-agnostic):**
40
- ```
41
- ToolSearch({ query: "figma get_metadata use_figma", max_results: 10 })
42
- Parse tool names matching /^mcp__([^_]*figma[^_]*)__(get_metadata|use_figma)$/i
43
- into read-capable and write-capable prefix sets.
44
- Empty read set -> figma: not_configured
45
- One+ matches -> pick prefix via tiebreaker:
46
- (1) both-sets > reads-only,
47
- (2) `figma` > others,
48
- (3) non-`figma-desktop` > desktop,
49
- (4) alphabetical.
50
- Then call {prefix}get_metadata:
51
- success -> figma: available (prefix=mcp__<prefix>__, writes=<true|false>)
52
- error -> figma: unavailable
53
- ```
54
-
55
- **B - Refero probe:**
56
- ```
57
- ToolSearch({ query: "refero", max_results: 5 })
58
- Empty -> refero: not_configured
59
- Non-empty -> refero: available
60
- ```
61
-
62
- **C - 21st.dev probe:**
63
- ```
64
- ToolSearch({ query: "mcp__21st", max_results: 5 })
65
- Empty -> 21st-dev: not_configured
66
- Non-empty -> 21st-dev: available
67
- ```
68
-
69
- **D - Magic Patterns probe:**
70
- ```
71
- ToolSearch({ query: "mcp__magic_patterns", max_results: 5 })
72
- Empty -> magic-patterns: not_configured
73
- Non-empty -> magic-patterns: available
74
- ```
75
-
76
- **E - paper.design probe:**
77
- ```
78
- ToolSearch({ query: "mcp__paper", max_results: 5 })
79
- Empty -> paper-design: not_configured
80
- Non-empty -> call mcp__paper-design__get_selection; success -> available; error -> unavailable
81
- ```
82
-
83
- **F - pencil.dev probe (file-based):**
84
- ```bash
85
- find . -name "*.pen" -not -path "*/node_modules/*" 2>/dev/null | head -1
86
- Empty -> pencil-dev: not_configured
87
- Found -> pencil-dev: available
88
- ```
89
-
90
- ## Commit probe results
91
-
92
- After all probes complete, commit results in a single call:
93
-
94
- `mcp__gdd_state__probe_connections` with `probe_results` = an array of `{ name, status }` entries - one per probed connection. Example:
95
-
96
- ```json
97
- {
98
- "probe_results": [
99
- { "name": "figma", "status": "available" },
100
- { "name": "refero", "status": "not_configured" },
101
- { "name": "preview", "status": "unavailable" }
102
- ]
103
- }
104
- ```
105
-
106
- Unspecified connections keep their existing value. Do NOT issue multiple `probe_connections` calls - the tool is designed for a single batch write per stage.
107
-
108
- ## Step 1.5 - 21st.dev Prior-Art Check (when 21st-dev: available)
109
-
110
- If `state.connections.21st-dev === "not_configured"` (from the snapshot captured at stage entry): skip this step entirely.
111
-
112
- When the explore stage identifies any greenfield component in scope (component name from BRIEF.md or user request that does not yet have an implementation file):
113
-
114
- 1. `21st_magic_component_search(component_name, limit: 3)`
115
- 2. Evaluate top result:
116
- - **fit >= 80%**: add `<prior-art>` block to DESIGN.md:
117
- ```xml
118
- <prior-art source="21st.dev" component="<name>" fit="<score>%" id="<component_id>">
119
- Recommendation: adopt — do not build custom. Confirm with design-executor.
120
- </prior-art>
121
- ```
122
- - **fit < 80%**: note top candidate in DESIGN.md as a reference, proceed with custom build:
123
- ```xml
124
- <prior-art source="21st.dev" component="<name>" fit="<score>%" id="<component_id>">
125
- Low fit — noted for reference. Building custom component.
126
- </prior-art>
127
- ```
128
- 3. If `svgl_get_brand_logo` is available and explore scope includes brand logo assets: call `svgl_get_brand_logo(brand_name)` for each required brand asset; add SVG results to `.design/assets/` and note in DESIGN.md.
129
-
130
- If no greenfield components in scope: skip this step.
131
-
132
- ---
133
-
134
- ## Step 2 - Inventory scan (unless `--skip-scan`)
135
-
136
- **Map pre-check:** If `.design/map/` exists and all 5 files (`tokens.md`, `components.md`, `visual-hierarchy.md`, `a11y.md`, `motion.md`) are present AND fresher than `src/` (mtime), consume them as the inventory source and skip the grep pass. Otherwise proceed with grep below and, after Step 4, suggest running `/gdd:map` for richer parallel-scanned data on the next cycle.
137
-
138
- **Parallelism decision (before any multi-agent spawn):**
139
- 1. Read `.design/config.json` `parallelism` (or defaults from `reference/config-schema.md`).
140
- 2. Apply rules from `reference/parallelism-rules.md` (hard -> soft).
141
- 3. Record the verdict via `mcp__gdd_state__set_status` with a short status label (e.g., `status: "explore_parallel"` or `"explore_serial"`) carrying the stage/verdict/reason/agents payload.
142
- 4. If verdict is `parallel`, dispatch via multiple `Task()` calls in one response; if `serial`, spawn sequentially.
143
-
144
- Run the canonical scan grep/glob inventory (preserves PLAT-01/02 POSIX ERE patterns from Phase 1):
145
-
146
- - **Component detection** - `Glob` for `**/*.{tsx,jsx,vue,svelte}`; count exports, identify shared UI primitives.
147
- - **Color extraction** - `Grep` for hex (`#[0-9a-fA-F]{3,8}`), `rgb(`, `hsl(`, Tailwind arbitrary color classes; dedupe.
148
- - **Typography scan** - Grep font-family declarations, Tailwind `font-*`, `text-*` size classes; identify type scale.
149
- - **Motion scan** - Grep `transition`, `animate-`, `@keyframes`, `framer-motion` imports.
150
- - **Token detection** - Check for `tailwind.config.{js,cjs,mjs,ts}`, CSS custom properties (`--*`), design-token JSON.
151
- - **Layout detection** - Ordered fallback: `src/` -> `app/` -> `pages/` -> `lib/` -> unknown.
152
-
153
- Write findings to:
154
- - `.design/DESIGN.md` - current design system inventory + baseline score
155
- - `.design/DESIGN-DEBT.md` - prioritized debt roadmap
156
-
157
- Record scan progress: call `mcp__gdd_state__update_progress` with `task_progress: "<completed>/<total>"` to reflect the scan pass.
158
-
159
- ### Step 2.x - i18n readiness probe (informational)
160
-
161
- Phase 28 D-04 probe - 3-state classification, **informational only**. NO gate, NO blocking, NO required-action. Output appears as a single line in the explore report.
162
-
163
- Classification logic (matches `./reference/i18n.md` §Explore Integration Spec):
164
-
165
- ```txt
166
- 1. Read package.json (dependencies + devDependencies).
167
-
168
- 2. Check against library matrix:
169
- react-intl, next-intl, i18next, vue-i18n, formatjs, lingui
170
- >=1 library found in deps or devDeps -> state = "framework-managed"
171
- -> STOP, emit line, exit probe.
172
-
173
- 3. Else (no library):
174
- grep -RE "Intl\.(DateTimeFormat|NumberFormat|PluralRules|RelativeTimeFormat|ListFormat|Collator|Segmenter)" src/
175
- >=1 match -> state = "partial"
176
- -> emit line, exit probe.
177
-
178
- 4. Else: state = "none"
179
- -> emit line, exit probe.
180
- ```
181
-
182
- Output line in explore report (single informational line, per D-04):
183
-
184
- ```txt
185
- Localization readiness: framework-managed | partial | none
186
- ```
187
-
188
- (Exactly one of the three values, single line.) A consumer downstream (a planning agent, a roadmap reviewer, the user) can act on the signal if a gap is meaningful for the project, but the probe itself never forces a step - surface signal, do not bolt on a new pillar (D-07 orthogonal-lens discipline).
189
-
190
- ## Step 2.5 - Detect prior sketches and project-local conventions
191
-
192
- **Sketches**: If `.design/sketches/` exists, list all sketch slugs - group by those with `WINNER.md` (completed wrap-ups) vs without (pending). Call `mcp__gdd_state__set_status` with a brief note (e.g., `status: "explore_sketches_present"`) so downstream stages see the history. Include the inventory in DESIGN.md under a "Prior Explorations" section.
193
-
194
- **Project-local skills**: Read any `./.claude/skills/design-*-conventions.md` files if present. Include their content in DESIGN-CONTEXT.md under a `<project_conventions>` section - these are codified decisions from prior `/gdd:sketch-wrap-up` runs or manual edits, and they override defaults.
195
-
196
- **Global skills**: If `~/.claude/gdd/global-skills/` exists and contains `.md` files (other than README.md), read them and prepend their content to the `<project_conventions>` section under a `<global_conventions>` sub-block. Global skills represent cross-project personal conventions. They inform but do not override project-local decisions - when a project-local D-XX decision conflicts with a global skill, the project-local decision wins.
197
-
198
- ---
199
-
200
- ## Step 3 - Design interview (unless `--skip-interview`)
201
-
202
- **Run this inline - do NOT spawn `design-discussant` as a subagent.** Subagent UI tools (`AskUserQuestion`) only render the native picker when called from the top-level skill context; spawning a Task() degrades the interview to plain markdown in chat (broken in Claude Desktop).
203
-
204
- ### 3.a - Pre-load context
205
-
206
- Read in this order:
207
- 1. `state.decisions` from the snapshot captured at stage entry - existing D-XX entries (do NOT re-ask anything covered). If the snapshot is stale, refresh by calling `mcp__gdd_state__get`.
208
- 2. `.design/BRIEF.md` - problem statement, audience, constraints
209
- 3. `.design/DESIGN.md` - auto-detected inventory from Step 2
210
- 4. `.design/DESIGN-CONTEXT.md` if it exists - `<gray_areas>` block lists unresolved topics
211
- 5. `./.claude/skills/design-*-conventions.md` if any - locked project conventions, treat as authoritative
212
-
213
- If `state.connections` shows `figma: available`, read the resolved `prefix=` from the same entry and call `{prefix}get_variable_defs`, then draft tentative D-XX entries (mark `(tentative — confirm with user)`) before asking.
214
-
215
- ### 3.b - Identify question set
216
-
217
- Build the list of areas needing input. Skip any area already answered by an existing D-XX or covered by a project convention. Default coverage:
218
-
219
- - Cycle goal / outcome that matters most
220
- - Audience and primary use context
221
- - Brand direction (only if no tokens detected in DESIGN.md)
222
- - Color primitives (only if no palette detected)
223
- - Typography scale (only if no type system detected)
224
- - Spacing scale (only if no spacing tokens detected)
225
- - Motion preferences (only if no motion patterns detected)
226
- - Any `<gray_areas>` from DESIGN-CONTEXT.md
227
-
228
- ### 3.c - Ask, one question at a time
229
-
230
- For each area, call `AskUserQuestion` with a single focused question. Provide 4 concrete options plus "Other" / "Skip" where it helps. Do not batch questions into one call. Do not print the question as markdown - always go through the tool.
231
-
232
- Reject generic answers ("modern", "clean", "professional"). If the answer is vague, ask one follow-up before recording.
233
-
234
- ### 3.d - Record after each answer
235
-
236
- After each confirmed answer:
237
- 1. Call `mcp__gdd_state__add_decision` with the decision payload. The tool assigns the next `D-NN` id and persists atomically. Format the summary as:
238
- ```
239
- [Category] Decision summary — short rationale
240
- ```
241
- 2. Append one JSON line to `.design/learnings/question-quality.jsonl` (create if absent):
242
- ```json
243
- {"ts":"<iso>","question_id":"Q-NN","question_text":"<verbatim>","answer_summary":"<one sentence>","quality":"high|medium|low|skipped","evidence":"<why>","cycle":"<active-cycle-slug>"}
244
- ```
245
- Quality classification: `skipped` if user picked Skip / "doesn't matter"; `low` if < 10 words and not a specific value; `medium` if hedged ("maybe", "I think", "not sure"); `high` otherwise.
246
- 3. `add_decision` commits incrementally - the decision survives a crash mid-interview without an explicit save step.
247
-
248
- ### 3.e - Produce DESIGN-CONTEXT.md
249
-
250
- When all questions are answered, write `.design/DESIGN-CONTEXT.md` summarizing the locked decisions, remaining gray areas, and any Figma-sourced tentatives that were confirmed or rejected. Set frontmatter `status: complete`.
251
-
252
- ---
253
-
254
- ## Step 4 - Close out explore
255
-
256
- - If the synthesizer (or equivalent mapper batch) ran in Step 2, call `mcp__gdd_state__update_progress` with `task_progress: "<mappers-completed>/<mappers-total>"` and `status: "explore_mappers_done"` before advancing.
257
- - Call `mcp__gdd_state__checkpoint` - bumps `frontmatter.last_checkpoint` + appends a timestamp entry.
258
- - Stage advance to `plan` happens at the next stage's entry (the plan skill will transition from its own entry step); do not edit frontmatter directly from this skill.
259
-
260
- ## After Writing
261
-
262
- ```
263
- === Explore complete ===
264
- Saved: .design/DESIGN.md, .design/DESIGN-DEBT.md, .design/DESIGN-CONTEXT.md
265
- Next: @get-design-done plan
266
- =========================
267
- ```
@@ -1,30 +0,0 @@
1
- ---
2
- name: gdd-export
3
- description: "Packages a completed design cycle (.design artifacts + decisions + screenshots) into a stakeholder-shareable artifact - self-contained HTML, print-styled PDF (Paged.js-compatible), or a Notion page. Redacts secrets; --pseudonymize masks identity for external sharing; --pr posts the HTML preview as a PR comment. Use to hand a design-review packet to PMs/execs/brand who aren't in the repo."
4
- argument-hint: "<cycle-id> --format html|pdf|notion [--pseudonymize] [--pr]"
5
- user-invocable: true
6
- tools: Read, Write, Bash, Glob, Grep, ToolSearch, Task
7
- ---
8
-
9
- # /gdd:export
10
-
11
- Turns a completed cycle's in-repo design output into a shareable artifact. Closes the gap that `.design/*.md` lives only in the repo - stakeholders not in code can't consume it. The format contract + source set live in `../../reference/export-formats.md`; the Notion write-path in `../../connections/notion.md`.
12
-
13
- ## Steps
14
-
15
- 1. **Resolve the cycle.** `<cycle-id>` (or the current cycle from `.design/STATE.md`). Read the **source set**: `EXPERIENCE.md` (Phase 19.5), `.design/DESIGN.md`, `.design/DESIGN-VERIFICATION.md`, `.design/DESIGN-AUDIT.md` (if present), the decision log, and any Preview/Chromatic screenshots.
16
- 2. **Redact (always) + pseudonymize (opt-in).** Pass every section through `scripts/lib/redact.cjs` (secrets). If `--pseudonymize`, additionally apply `scripts/lib/pseudonymize.cjs` (git identity / paths / hostname) for external sharing. Honor `GDD_DISABLE_NOTION` for the notion format.
17
- 3. **Assemble per `--format`:**
18
- - **`html`** (default) - `node -e "require('scripts/lib/export/build-html.cjs').buildHtml({...})"` → a **self-contained** HTML (inline CSS, base64-embedded screenshots, no external refs). Write to `.design/export/<cycle>.html`.
19
- - **`pdf`** - the same `buildHtml({ ..., print: true })` (Paged.js-compatible `@page` print CSS). Write `.design/export/<cycle>.print.html`; instruct the user to render it via Paged.js / headless-Chrome (GDD ships **no** PDF runtime - D-02).
20
- - **`notion`** - probe the Notion MCP (`ToolSearch({query:"notion"})`); if `available`, create a page from the same source (nested toggles + image upload) per `connections/notion.md`; if `not_configured`/disabled → degrade to the `html` format + a note.
21
- 4. **`--pr`** - hand the generated HTML preview to `agents/pr-commenter.md` (via `Task`) to post as a PR comment (degrade-to-noop if no PR / pr-commenter unavailable).
22
- 5. **Print the artifact path** (and the Notion URL / PR comment status when applicable).
23
-
24
- ## Do Not
25
-
26
- - Do not add a PDF/markdown runtime dependency (`paged`/`puppeteer`/`pdfkit`/a markdown lib) - `build-html.cjs` is pure and the PDF is render-it-yourself print HTML (D-02).
27
- - Do not emit an un-redacted artifact - redact is mandatory; pseudonymize is the external-sharing opt-in.
28
- - Do not block on Notion/PR - both degrade to a noop / the html file.
29
-
30
- ## EXPORT COMPLETE
@@ -1,114 +0,0 @@
1
- ---
2
- name: gdd-extract-learnings
3
- description: "Extracts project-specific design patterns and decisions from .design/ artifacts and writes them to .design/learnings/. Optionally proposes updates to reference/ files for user review."
4
- tools: Bash, Read, Write, Glob, Grep
5
- ---
6
-
7
- # /gdd:extract-learnings
8
-
9
- **Role:** Scan `.design/` artifacts for recurring patterns, successful decisions, and validated approaches. Write structured learnings to `.design/learnings/`. Optionally propose additions to tracked `reference/` files for the user to review and approve.
10
-
11
- ## When to run
12
-
13
- - After `/gdd:complete-cycle` (auto-suggested by complete-cycle skill)
14
- - After a major verify/audit pass surfaces new patterns
15
- - Manually, to checkpoint what the project has learned
16
-
17
- ## Protocol
18
-
19
- ### Step 1 - Gather source artifacts
20
-
21
- Collect content from available `.design/` files:
22
-
23
- ```bash
24
- ls .design/*.md 2>/dev/null
25
- ```
26
-
27
- Read (if present): DESIGN-CONTEXT.md, DESIGN-VERIFICATION.md, DESIGN-DEBT.md, DESIGN-SUMMARY.md, CYCLES.md
28
-
29
- ### Step 2 - Invoke gdd-learnings-extractor agent
30
-
31
- Delegate extraction to the `gdd-learnings-extractor` agent, passing it the list of available files. The agent extracts structured learning entries.
32
-
33
- ### Step 3 - Write learnings artifact
34
-
35
- The agent writes or appends to `.design/learnings/LEARNINGS.md`.
36
-
37
- Layout of `.design/learnings/LEARNINGS.md`:
38
-
39
- ```markdown
40
- # Project Learnings
41
-
42
- ## <Category> — <Date>
43
-
44
- ### L-<NN>: <Title>
45
-
46
- **Source:** <which .design/ file and section>
47
- **Pattern type:** decision | anti-pattern | validated-approach | token-convention | component-convention
48
- **Confidence:** high | medium | low
49
- **Summary:** <1-2 sentences>
50
- **Evidence:** <quote or paraphrase from source>
51
- **Proposed reference update:** <yes — see proposal below | no>
52
-
53
- ---
54
- ```
55
-
56
- ### Step 3b - Dual-emit atomic instinct units (Phase 51)
57
-
58
- Alongside the prose `LEARNINGS.md`, emit atomic instinct units for every learning the extractor tags as an `instinct-candidate`. A learning is an `instinct-candidate` when it states a single trigger plus a one-line response - the same shape the reflector emits. Broader narrative learnings stay prose-only.
59
-
60
- For each `instinct-candidate`, build a unit per `reference/instinct-format.md` (frontmatter: `id`, `trigger`, `confidence` from 0.3 to 0.9, `domain`, `scope`, `project_id`, `source`, `cycles_seen`, `first_seen`, `last_seen`, plus a short body). Set `source: extract-learnings`. Carry the learning's confidence (high / medium / low) into the numeric field (roughly 0.8 / 0.55 / 0.35), capped at 0.9.
61
-
62
- Write each unit through the store engine `scripts/lib/instinct-store.cjs` rather than by hand:
63
-
64
- ```bash
65
- node "${CLAUDE_PLUGIN_ROOT}/scripts/lib/instinct-store.cjs" add --scope project
66
- ```
67
-
68
- If the engine exposes a module API only, drive `add(unit, { scope: 'project', baseDir })` from a short `node -e` script. The engine owns de-duplication and `cycles_seen` bookkeeping; do not pre-merge.
69
-
70
- The prose `LEARNINGS.md` is **retained read-only for one minor version** so existing readers keep working while tooling migrates to the units. Keep writing it; do not drop the prose path in this version.
71
-
72
- ### Step 4 - Reference file proposal (optional)
73
-
74
- After writing LEARNINGS.md, check each learning entry with `Proposed reference update: yes`.
75
-
76
- For each such entry: generate a proposed addition to the appropriate `reference/` file (e.g., `reference/heuristics.md`, `reference/anti-patterns.md`).
77
-
78
- Print the proposal to the terminal and ask the user to review:
79
-
80
- ```
81
- ━━━ Reference update proposal ━━━
82
-
83
- Learning L-03 suggests adding to reference/anti-patterns.md:
84
-
85
- ### Anti-pattern: Overloaded primary button
86
- Using the primary button style for more than one action per screen
87
- reduces clarity and violates Nielsen's heuristic #4 (consistency).
88
- Evidence: DESIGN-VERIFICATION.md, cycle 3.
89
-
90
- Accept this update? [y/n/edit]
91
- ```
92
-
93
- If user types `y`: write the addition to the reference file.
94
- If user types `n`: mark the learning as "proposal declined" in LEARNINGS.md.
95
- If user types `edit`: open the proposed text for the user to modify, then write.
96
-
97
- ### Step 5 - Summary
98
-
99
- ```
100
- ━━━ Learnings extracted ━━━
101
- Source files scanned: <N>
102
- Learnings written: <N>
103
- Reference proposals: <N> (<M> accepted)
104
- Output: .design/learnings/LEARNINGS.md
105
- ━━━━━━━━━━━━━━━━━━━━━━━━━━━
106
- ```
107
-
108
- ## Required reading (conditional)
109
-
110
- @.design/intel/decisions.json (if present)
111
- @.design/intel/patterns.json (if present)
112
- @.design/learnings/LEARNINGS.md (if present)
113
-
114
- ## EXTRACT-LEARNINGS COMPLETE
@@ -1,91 +0,0 @@
1
- ---
2
- name: gdd-fast
3
- description: "Trivial inline design task. No subagents, no planning documents, no pipeline stages. Just do the thing described. Activates for requests involving a single quick design fix, a one-shot change, or a fast targeted edit."
4
- argument-hint: "<task description>"
5
- tools: Read, Write, Edit, Bash, Grep, Glob
6
- disable-model-invocation: true
7
- ---
8
-
9
- # /gdd:fast
10
-
11
- The leanest possible execution path. No subagents, no STATE.md update, no DESIGN-*.md artifacts. Read the target file, apply the change inline, commit.
12
-
13
- ## When to use
14
-
15
- - "Change this button's border-radius to 8px"
16
- - "Add a hover state to the nav links"
17
- - "Fix the mobile breakpoint on the hero"
18
- - Single-file or single-component obvious changes
19
-
20
- ## When NOT to use
21
-
22
- - Multi-component changes.
23
- - Anything touching tokens used across the app.
24
- - Anything requiring a design decision (taste, tradeoff, scope).
25
- - Use `/gdd:quick` or the full pipeline instead.
26
-
27
- ## Steps
28
-
29
- 1. Parse the task description from the argument.
30
- 2. Use Grep/Glob to locate the target file(s). If ambiguous (>2 candidates), stop and ask the user which to edit - do not guess.
31
- 3. Read the target file(s).
32
- 4. Apply the described change with Edit.
33
- 5. Run a relevant sanity check (grep for the old value to confirm it's gone; grep for the new value to confirm it's in).
34
- 6. Commit with message: `fix: <task description>` (one commit, one change).
35
- 7. Print: "Done: <summary of what changed>."
36
-
37
- ## Do Not
38
-
39
- - No subagent spawns.
40
- - No `.design/` writes.
41
- - No STATE.md mutation.
42
- - No pipeline stage invocation.
43
- - Do not proceed if the change turns out to be non-trivial - bail out and recommend `/gdd:quick` or the full pipeline.
44
- - Do not skip the `capability_gap` emit on bail-out - Stage-0 telemetry depends on it (Phase 29 D-01).
45
-
46
- ## Emitting capability_gap on no-skill-match
47
-
48
- If step 2 cannot locate any candidate files for the task description (or all candidates are filtered out as off-topic), or if the change in step 4 turns out to be non-trivial in a way that has no obvious resolution without a dedicated skill/agent, emit ONE `capability_gap` event before returning control to the user. This feeds Phase 29 Stage-0 telemetry - the reflector pattern-detection pass (Plan 29-02) and aggregation (Plan 29-03) read these events from the chain file (`.design/gep/events.jsonl`) to surface recurring capability gaps in `/gdd:apply-reflections`.
49
-
50
- Synchronous emitter call (via Bash):
51
-
52
- ```bash
53
- node -e '
54
- const { appendChainEvent } = require("./scripts/lib/event-chain.cjs");
55
- const { createHash, randomUUID } = require("node:crypto");
56
- const intent = process.env.GDD_INTENT || "";
57
- const payload = {
58
- event_id: randomUUID(),
59
- parent_event_id: null,
60
- source: "fast",
61
- context_hash: createHash("sha256").update(intent).digest("hex"),
62
- intent_summary: intent.slice(0, 256),
63
- suggested_kind: "skill",
64
- evidence_refs: [],
65
- };
66
- appendChainEvent({
67
- agent: "fast",
68
- outcome: "capability_gap",
69
- payload,
70
- type: "capability_gap",
71
- timestamp: new Date().toISOString(),
72
- sessionId: process.env.GDD_SESSION_ID || "fast-cli",
73
- });
74
- '
75
- ```
76
-
77
- Notes:
78
- - `evidence_refs` is empty `[]` for fast (no trajectory in `/gdd:fast` - that path is too lean by design).
79
- - `parent_event_id` is null (root event for the fast bail-out).
80
- - `suggested_kind` is `"skill"` because fast bail-outs are usually narrow primitives, not multi-step workflows. Plan 29-03's aggregator may upgrade to `"agent"` if a `context_hash` cluster shows multi-step usage.
81
- - The emitter MUST NOT block - `appendChainEvent` already swallows IO errors via its existing try/catch (see `scripts/lib/event-chain.cjs:97-105`).
82
- - The 7-field payload is preserved verbatim through `appendChainEvent`'s opaque-extras pattern; the chain row carries `type`, `timestamp`, `sessionId`, `payload` as opaque caller-supplied fields and is projected back to the events-schema envelope shape by readers (Plan 29-03 aggregator).
83
-
84
- Trigger conditions:
85
- - **Trigger 1**: Step 2 returns zero candidate files for the task description (target is genuinely missing).
86
- - **Trigger 2**: Step 2 returns more than 2 candidates AND the user bail-out in step 2 fires (stop and ask).
87
- - **Trigger 3**: Step 4 reveals the change is non-trivial in a way that has no obvious primitive resolution (the `## Do Not` "Do not proceed" line fires).
88
-
89
- MCP-probe failures (connection down, transport-layer errors) do NOT emit `capability_gap` - those are Phase 22 connection-status concerns (D-08).
90
-
91
- ## FAST COMPLETE
@@ -1,64 +0,0 @@
1
- ---
2
- name: gdd-figma-extract
3
- description: "Off-context Figma design-system extraction into a compact local digest (DESIGN.md + tokens.json + components.json). Pulls the file via the Figma REST API and digests it without the raw JSON ever entering the model context."
4
- ---
5
-
6
- # gdd-figma-extract
7
-
8
- Pull a whole Figma design system into a compact, queryable local digest - **without** the raw JSON ever entering Claude context. The heavy lifting runs in tested `.cjs` tools; the model reads only the digest outputs.
9
-
10
- ## Usage
11
-
12
- ```
13
- /gdd:figma-extract <file-key-or-url> # full design-system digest
14
- /gdd:figma-extract <file-key-or-url> --component Button # ~500-token single-component slice
15
- ```
16
-
17
- `<file-key-or-url>` is a Figma file URL (`https://www.figma.com/file/<key>/…` or `/design/<key>/…`) or a bare file key.
18
-
19
- ## Behavior
20
-
21
- 1. **Preflight (D-10).** Confirm `FIGMA_TOKEN` is set in the environment:
22
- ```
23
- node -e "process.exit(process.env.FIGMA_TOKEN||process.env.FIGMA_PERSONAL_ACCESS_TOKEN?0:1)"
24
- ```
25
- If unset, tell the user to `export FIGMA_TOKEN=figd_…` (from https://www.figma.com/developers/api#access-tokens). The token comes from the environment **only** - never ask the user to paste it into a file or the chat, and never echo it back.
26
-
27
- 2. **Stage 1 - pull.** Pull the file's REST endpoints into the gitignored raw cache (D-09):
28
- ```
29
- node scripts/lib/figma-extract/pull.cjs "<file-key-or-url>"
30
- ```
31
- This caches to `.figma-extract-cache/raw/<file-key>/` and skips re-pulling when Figma's `version` is unchanged (D-11). Add `--force` to bypass the cache, `--out <dir>` to relocate the cache. The tool prints a JSON summary (endpoints, bytes, cached) on stdout - the raw bodies stay on disk.
32
-
33
- 3. **Stage 2 - plugin sync (OPTIONAL, Path C).** Only when the design tokens live in Figma Variables that the REST API cannot return (non-Enterprise plans → the pull summary shows `variables` skipped) and the user wants token coverage:
34
- ```
35
- node scripts/lib/figma-extract/receiver.cjs --out .figma-extract-cache/raw/<file-key>
36
- ```
37
- This binds `127.0.0.1:5179` (D-06). Tell the user to run the dev-installed **"GDD Sync"** plugin in Figma and click **"Export to GDD"** - see `figma-plugin/README.md` for the one-time dev-install. The receiver writes `variables.json` into the cache and exits on receipt or timeout. Skip this stage entirely for design systems whose tokens already come through the REST pull.
38
-
39
- 4. **Stage 3 - digest.** Transform the cache into the compact digest:
40
- ```
41
- node scripts/lib/figma-extract/digest.cjs --raw .figma-extract-cache/raw/<file-key> --out .figma-extract-cache/digest
42
- ```
43
- This writes `DESIGN.md`, `tokens.json`, and `components.json`. Add `--prefer-styles` to invert the token priority to styles-first (D-04). Add `--component <name>` (D-08) to emit a single-component slice instead of the full digest.
44
-
45
- 5. **Read the digest.** Open **only** `.figma-extract-cache/digest/DESIGN.md` (plus `tokens.json` / `components.json` when you need structured data). For a single component, pass `--component <name>` in Stage 3 and read the ~500-token slice instead of the full ~16K-token spec.
46
-
47
- ## Required Reading
48
-
49
- - `.figma-extract-cache/digest/DESIGN.md` - the compact human/LLM-readable spec
50
- - `.figma-extract-cache/digest/tokens.json` - resolved design tokens (when structured token data is needed)
51
- - `.figma-extract-cache/digest/components.json` - components with variants/props/defaults (when structured component data is needed)
52
-
53
- ## Notes
54
-
55
- - Two-stage pipeline (D-01): re-run Stage 3 against an existing cache without re-pulling. The digest does zero network calls.
56
- - The spike proved **0 Claude tokens** during extraction (898× compression, 223 MB → 254 KB). That property holds only because this skill never surfaces the raw cache.
57
- - Figma MCP remains the right tool for spot questions on a single live component; this skill is the cheaper path for whole-design-system workflows.
58
-
59
- ## Do Not
60
-
61
- - **Do NOT read or `cat` the `raw/*.json` cache** (e.g. `.figma-extract-cache/raw/<file-key>/file.json`). It is tool-internal and often 100+ MB; loading it into context defeats the off-context guarantee (D-12). Read only the digest outputs above.
62
- - **Do not persist, log, echo, or print `FIGMA_TOKEN`** (D-10). It belongs in the environment only - never write it to a file, a commit, or chat output.
63
-
64
- ## FIGMA-EXTRACT COMPLETE
@@ -1,50 +0,0 @@
1
- ---
2
- name: gdd-figma-write
3
- description: "Write design decisions from `.design/DESIGN-CONTEXT.md` back into the active Figma file by dispatching the `design-figma-writer` agent in one of three modes (annotate / tokenize / mappings). Use when the user has completed a design pipeline cycle and wants the decisions (layer comments, variable bindings, or Code Connect mappings) reflected in Figma. Operates proposal→confirm with `--dry-run` and `--confirm-shared` flags."
4
- ---
5
-
6
- # gdd-figma-write
7
-
8
- Dispatches the `design-figma-writer` agent to write design decisions back to the open Figma file. The shared probe pattern (ToolSearch → live call → STATE.md write) and connection handshake are documented at `../../reference/shared-preamble.md#connection-handshake-summary` and `../../connections/figma.md`.
9
-
10
- ## Usage
11
-
12
- ```
13
- /get-design-done figma-write <mode> [--dry-run] [--confirm-shared]
14
- ```
15
-
16
- Modes:
17
- - `annotate` - add design decision comments to Figma layers
18
- - `tokenize` - bind hard-coded color/spacing/type values to Figma variables
19
- - `mappings` - write Code Connect component↔code file mappings
20
-
21
- Flags:
22
- - `--dry-run` - emit the proposal without executing any Figma writes
23
- - `--confirm-shared` - authorize writes to shared team library components
24
-
25
- ## Prerequisites
26
-
27
- 1. Remote Figma MCP registered (writes are remote-only). Preferred: `claude plugin install figma@claude-plugins-official`. Manual: `claude mcp add --transport http figma https://mcp.figma.com/mcp`.
28
- 2. `.design/DESIGN-CONTEXT.md` exists (run `discover` first)
29
- 3. `.design/STATE.md` `<connections>` shows `figma: available (…, writes=true)`. If `writes=false` (desktop-only variant), writes are not supported - the agent will STOP with an instruction to install the remote MCP.
30
-
31
- ## Required Reading
32
-
33
- Read `.design/STATE.md` and `.design/DESIGN-CONTEXT.md` before dispatching the agent.
34
-
35
- ## Dispatch
36
-
37
- ```
38
- Task("design-figma-writer", """
39
- mode: <annotate|tokenize|mappings>
40
- dry_run: <true|false>
41
- confirm_shared: <true|false>
42
- required_reading:
43
- - .design/STATE.md
44
- - .design/DESIGN-CONTEXT.md
45
- """)
46
- ```
47
-
48
- Pass `mode` from the first positional argument; `dry_run` from `--dry-run`;
49
- `confirm_shared` from `--confirm-shared`. Wait for the agent's completion
50
- marker before returning.