@hegemonart/get-design-done 1.0.7
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 +63 -0
- package/.claude-plugin/plugin.json +54 -0
- package/CHANGELOG.md +221 -0
- package/LICENSE +21 -0
- package/README.md +724 -0
- package/SKILL.md +232 -0
- package/agents/README.md +226 -0
- package/agents/a11y-mapper.md +118 -0
- package/agents/component-taxonomy-mapper.md +88 -0
- package/agents/design-advisor.md +139 -0
- package/agents/design-assumptions-analyzer.md +171 -0
- package/agents/design-auditor.md +383 -0
- package/agents/design-context-builder.md +544 -0
- package/agents/design-context-checker-gate.md +90 -0
- package/agents/design-context-checker.md +260 -0
- package/agents/design-discussant.md +98 -0
- package/agents/design-doc-writer.md +229 -0
- package/agents/design-executor.md +452 -0
- package/agents/design-figma-writer.md +302 -0
- package/agents/design-fixer.md +180 -0
- package/agents/design-integration-checker-gate.md +93 -0
- package/agents/design-integration-checker.md +326 -0
- package/agents/design-pattern-mapper.md +206 -0
- package/agents/design-phase-researcher.md +229 -0
- package/agents/design-plan-checker.md +164 -0
- package/agents/design-planner.md +352 -0
- package/agents/design-reflector.md +175 -0
- package/agents/design-research-synthesizer.md +127 -0
- package/agents/design-verifier-gate.md +97 -0
- package/agents/design-verifier.md +605 -0
- package/agents/gdd-graphify-sync.md +100 -0
- package/agents/gdd-intel-updater.md +88 -0
- package/agents/gdd-learnings-extractor.md +85 -0
- package/agents/motion-mapper.md +103 -0
- package/agents/token-mapper.md +103 -0
- package/agents/visual-hierarchy-mapper.md +95 -0
- package/connections/chromatic.md +247 -0
- package/connections/claude-design.md +190 -0
- package/connections/connections.md +218 -0
- package/connections/figma-writer.md +139 -0
- package/connections/figma.md +146 -0
- package/connections/graphify.md +197 -0
- package/connections/pinterest.md +153 -0
- package/connections/preview.md +173 -0
- package/connections/refero.md +189 -0
- package/connections/storybook.md +280 -0
- package/hooks/budget-enforcer.js +318 -0
- package/hooks/context-exhaustion.js +127 -0
- package/hooks/gdd-read-injection-scanner.js +44 -0
- package/hooks/hooks.json +44 -0
- package/package.json +60 -0
- package/reference/BRANCH-PROTECTION.md +65 -0
- package/reference/DEPRECATIONS.md +41 -0
- package/reference/STATE-TEMPLATE.md +200 -0
- package/reference/accessibility.md +190 -0
- package/reference/anti-patterns.md +336 -0
- package/reference/audit-scoring.md +205 -0
- package/reference/checklists.md +137 -0
- package/reference/config-schema.md +319 -0
- package/reference/debugger-philosophy.md +32 -0
- package/reference/heuristics.md +201 -0
- package/reference/intel-schema.md +266 -0
- package/reference/model-prices.md +37 -0
- package/reference/model-tiers.md +118 -0
- package/reference/motion.md +285 -0
- package/reference/parallelism-rules.md +108 -0
- package/reference/priority-matrix.md +31 -0
- package/reference/project-skills-guide.md +42 -0
- package/reference/review-format.md +107 -0
- package/reference/schemas/config.schema.json +41 -0
- package/reference/schemas/hooks.schema.json +55 -0
- package/reference/schemas/intel.schema.json +191 -0
- package/reference/schemas/marketplace.schema.json +72 -0
- package/reference/schemas/plugin.schema.json +59 -0
- package/reference/shared-preamble.md +82 -0
- package/reference/typography.md +229 -0
- package/scripts/aggregate-agent-metrics.js +144 -0
- package/scripts/apply-branch-protection.sh +75 -0
- package/scripts/bootstrap-manifest.txt +3 -0
- package/scripts/bootstrap.sh +80 -0
- package/scripts/build-intel.cjs +458 -0
- package/scripts/detect-stale-refs.cjs +101 -0
- package/scripts/extract-changelog-section.cjs +57 -0
- package/scripts/release-smoke-test.cjs +169 -0
- package/scripts/rollback-release.sh +42 -0
- package/scripts/run-injection-scanner-ci.cjs +92 -0
- package/scripts/validate-frontmatter.cjs +68 -0
- package/scripts/validate-schemas.cjs +225 -0
- package/scripts/verify-version-sync.cjs +30 -0
- package/skills/add-backlog/SKILL.md +47 -0
- package/skills/analyze-dependencies/SKILL.md +184 -0
- package/skills/apply-reflections/SKILL.md +112 -0
- package/skills/audit/SKILL.md +54 -0
- package/skills/brief/SKILL.md +75 -0
- package/skills/cache-manager/SKILL.md +120 -0
- package/skills/compare/SKILL.md +322 -0
- package/skills/complete-cycle/SKILL.md +33 -0
- package/skills/darkmode/SKILL.md +331 -0
- package/skills/debug/SKILL.md +38 -0
- package/skills/design/SKILL.md +281 -0
- package/skills/discover/SKILL.md +172 -0
- package/skills/discuss/SKILL.md +67 -0
- package/skills/do/SKILL.md +45 -0
- package/skills/explore/SKILL.md +109 -0
- package/skills/extract-learnings/SKILL.md +98 -0
- package/skills/fast/SKILL.md +44 -0
- package/skills/figma-write/SKILL.md +40 -0
- package/skills/graphify/SKILL.md +48 -0
- package/skills/health/SKILL.md +48 -0
- package/skills/help/SKILL.md +76 -0
- package/skills/list-assumptions/SKILL.md +60 -0
- package/skills/map/SKILL.md +112 -0
- package/skills/new-cycle/SKILL.md +35 -0
- package/skills/new-project/SKILL.md +53 -0
- package/skills/next/SKILL.md +42 -0
- package/skills/note/SKILL.md +47 -0
- package/skills/optimize/SKILL.md +120 -0
- package/skills/pause/SKILL.md +41 -0
- package/skills/plan/SKILL.md +251 -0
- package/skills/plant-seed/SKILL.md +47 -0
- package/skills/pr-branch/SKILL.md +31 -0
- package/skills/progress/SKILL.md +60 -0
- package/skills/quick/SKILL.md +43 -0
- package/skills/reapply-patches/SKILL.md +31 -0
- package/skills/reflect/SKILL.md +73 -0
- package/skills/resume/SKILL.md +37 -0
- package/skills/review-backlog/SKILL.md +45 -0
- package/skills/router/SKILL.md +67 -0
- package/skills/scan/SKILL.md +721 -0
- package/skills/settings/SKILL.md +78 -0
- package/skills/ship/SKILL.md +31 -0
- package/skills/sketch/SKILL.md +78 -0
- package/skills/sketch-wrap-up/SKILL.md +88 -0
- package/skills/skill-manifest/SKILL.md +79 -0
- package/skills/spike/SKILL.md +67 -0
- package/skills/spike-wrap-up/SKILL.md +81 -0
- package/skills/stats/SKILL.md +50 -0
- package/skills/style/SKILL.md +193 -0
- package/skills/synthesize/SKILL.md +93 -0
- package/skills/todo/SKILL.md +54 -0
- package/skills/undo/SKILL.md +30 -0
- package/skills/update/SKILL.md +36 -0
- package/skills/verify/SKILL.md +452 -0
- package/skills/warm-cache/SKILL.md +113 -0
|
@@ -0,0 +1,247 @@
|
|
|
1
|
+
# Chromatic — Connection Specification
|
|
2
|
+
|
|
3
|
+
This file is the connection specification for Chromatic within the get-design-done pipeline. It lives in `connections/` alongside other connection specs. See `connections/connections.md` for the full connection index and capability matrix.
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
Chromatic is the **verify stage's visual regression tool** and the **plan stage's change-risk scoping tool**. It captures Storybook story snapshots in the cloud and compares them to approved baselines. Its pipeline role: after a design executor pass, run Chromatic to surface which stories changed visually — the verify stage narrates these changes in plain English. Before planning a token or component change, use `--trace-changed` to enumerate exactly which stories depend on the files being changed, turning vague "this might affect things" into "23 stories are at risk."
|
|
8
|
+
|
|
9
|
+
**Key dependency:** Chromatic requires Storybook. If `storybook: not_configured`, Chromatic cannot function even if its project token is present.
|
|
10
|
+
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
## Setup
|
|
14
|
+
|
|
15
|
+
**Prerequisites:**
|
|
16
|
+
|
|
17
|
+
- Storybook configured in the project (see `connections/storybook.md` — Chromatic builds require a working Storybook configuration)
|
|
18
|
+
- Chromatic account created at [chromatic.com](https://www.chromatic.com) — free tier available
|
|
19
|
+
|
|
20
|
+
**Install:**
|
|
21
|
+
|
|
22
|
+
```bash
|
|
23
|
+
npm install --save-dev chromatic
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
**Account and token:**
|
|
27
|
+
|
|
28
|
+
1. Create a Chromatic account at chromatic.com
|
|
29
|
+
2. Link your repository and create a project
|
|
30
|
+
3. Copy the project token from the project settings page
|
|
31
|
+
4. Set the environment variable — **NEVER commit the token to git or to a tracked `.env` file:**
|
|
32
|
+
|
|
33
|
+
```bash
|
|
34
|
+
export CHROMATIC_PROJECT_TOKEN=<your-token>
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
Add this to your shell profile or CI environment secrets. Do not add it to `.env` files that are tracked in version control.
|
|
38
|
+
|
|
39
|
+
**First run (baseline establishment):**
|
|
40
|
+
|
|
41
|
+
```bash
|
|
42
|
+
npx chromatic --project-token $CHROMATIC_PROJECT_TOKEN
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
The first run creates baseline snapshots for all stories. Every story appears as "new" — this is not a regression. See the Baseline Management section below.
|
|
46
|
+
|
|
47
|
+
**Verification:**
|
|
48
|
+
|
|
49
|
+
```bash
|
|
50
|
+
command -v chromatic 2>/dev/null || npx chromatic --version
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
---
|
|
54
|
+
|
|
55
|
+
## Why Chromatic is useful
|
|
56
|
+
|
|
57
|
+
Visual regressions are invisible to code review. A token change from `#3B82F6` to `#2563EB` looks like a one-character diff in a CSS file but visually affects every component that uses that token — buttons, links, badges, focus rings — across every state: hover, disabled, active, dark mode.
|
|
58
|
+
|
|
59
|
+
Chromatic snapshots every component state (every Storybook story) and flags pixel-level differences against approved baselines. Without Chromatic:
|
|
60
|
+
|
|
61
|
+
- Manual visual review of all story states is impractical at scale
|
|
62
|
+
- Token changes silently regress secondary states (disabled, loading, edge cases)
|
|
63
|
+
- Dark mode parity breaks go unnoticed until user report
|
|
64
|
+
|
|
65
|
+
With Chromatic:
|
|
66
|
+
|
|
67
|
+
- Every story state is a regression test
|
|
68
|
+
- Changes surface immediately with before/after visual diff
|
|
69
|
+
- `--trace-changed` tells the planner exactly how many stories depend on a given source file before any change is made
|
|
70
|
+
|
|
71
|
+
---
|
|
72
|
+
|
|
73
|
+
## When to use Chromatic
|
|
74
|
+
|
|
75
|
+
**Verify stage:** After the design executor runs, run Chromatic to check for visual regressions. The verify stage reads `.design/chromatic-results.json` and narrates the delta in plain English.
|
|
76
|
+
|
|
77
|
+
**Plan stage:** Before writing DESIGN-PLAN.md, run `--trace-changed` to enumerate which stories are affected by the planned token or component changes. Annotate tasks with the at-risk story count.
|
|
78
|
+
|
|
79
|
+
---
|
|
80
|
+
|
|
81
|
+
## CLI Commands (not MCP tools — Bash)
|
|
82
|
+
|
|
83
|
+
Chromatic is a CLI tool, not an MCP. All interactions are via Bash commands.
|
|
84
|
+
|
|
85
|
+
| Command | Flags | Returns | Pipeline use |
|
|
86
|
+
|---------|-------|---------|--------------|
|
|
87
|
+
| `npx chromatic` | `--project-token $TOKEN --output json` | JSON build results → `.design/chromatic-results.json` | verify: delta narration (CHR-01) |
|
|
88
|
+
| `npx chromatic` | `--project-token $TOKEN --trace-changed=expanded --dry-run` | Story dependency tree (stdout) | plan: change-risk scoping (CHR-02) |
|
|
89
|
+
| `npx chromatic` | `--project-token $TOKEN --junit-report` | JUnit XML report | CI integration (optional) |
|
|
90
|
+
|
|
91
|
+
**Exit codes:**
|
|
92
|
+
|
|
93
|
+
| Code | Meaning |
|
|
94
|
+
|------|---------|
|
|
95
|
+
| 0 | Build OK — no visual changes detected |
|
|
96
|
+
| 1 | Build has visual changes detected (not necessarily regressions — needs review on chromatic.com) |
|
|
97
|
+
| 2 | Build has errors |
|
|
98
|
+
| 11 | Account quota reached |
|
|
99
|
+
|
|
100
|
+
**Important:** Exit code 1 means changes were detected, NOT that an error occurred. In CI scripts, use `|| true` or check the exit code explicitly — do not treat exit code 1 as a build failure without review.
|
|
101
|
+
|
|
102
|
+
**Full verify run command:**
|
|
103
|
+
|
|
104
|
+
```bash
|
|
105
|
+
npx chromatic --project-token $CHROMATIC_PROJECT_TOKEN --output json 2>&1 | tee .design/chromatic-results.json
|
|
106
|
+
```
|
|
107
|
+
|
|
108
|
+
**TurboSnap change-risk command:**
|
|
109
|
+
|
|
110
|
+
```bash
|
|
111
|
+
npx chromatic --project-token $CHROMATIC_PROJECT_TOKEN --trace-changed=expanded --dry-run 2>&1
|
|
112
|
+
```
|
|
113
|
+
|
|
114
|
+
`--dry-run` skips publishing to the Chromatic cloud. `--trace-changed=expanded` outputs the full dependency tree showing which story files are affected by which source file changes.
|
|
115
|
+
|
|
116
|
+
---
|
|
117
|
+
|
|
118
|
+
## Which Stages Use This Connection
|
|
119
|
+
|
|
120
|
+
| Stage | Agent | Command | Purpose |
|
|
121
|
+
|-------|-------|---------|---------|
|
|
122
|
+
| verify | `agents/design-verifier.md` | `npx chromatic --project-token $TOKEN --output json` | Delta narration; visual regression flagging (CHR-01) |
|
|
123
|
+
| plan | `agents/design-planner.md` | `npx chromatic --project-token $TOKEN --trace-changed=expanded --dry-run` | Story-count annotation for change-risk scoping (CHR-02) |
|
|
124
|
+
|
|
125
|
+
---
|
|
126
|
+
|
|
127
|
+
## Availability Probe
|
|
128
|
+
|
|
129
|
+
Chromatic is a CLI tool — the probe is Bash-based, not ToolSearch-based.
|
|
130
|
+
|
|
131
|
+
**Step C1 — CLI presence:**
|
|
132
|
+
|
|
133
|
+
```bash
|
|
134
|
+
command -v chromatic 2>/dev/null || npx chromatic --version 2>/dev/null
|
|
135
|
+
```
|
|
136
|
+
|
|
137
|
+
- Command found → proceed to Step C2
|
|
138
|
+
- Not found → `chromatic: not_configured` (skip all Chromatic steps)
|
|
139
|
+
|
|
140
|
+
**Step C2 — Token check:**
|
|
141
|
+
|
|
142
|
+
```bash
|
|
143
|
+
test -n "${CHROMATIC_PROJECT_TOKEN}"
|
|
144
|
+
```
|
|
145
|
+
|
|
146
|
+
- Non-empty → `chromatic: available`
|
|
147
|
+
- Empty → `chromatic: unavailable` (CLI present but no project token)
|
|
148
|
+
|
|
149
|
+
**Also check:** If `storybook: not_configured` in STATE.md `<connections>`, Chromatic is effectively unavailable even if the token is present. Emit: "Chromatic requires Storybook — storybook not configured" and skip all Chromatic steps.
|
|
150
|
+
|
|
151
|
+
**Write chromatic status to `.design/STATE.md` `<connections>` after probing.**
|
|
152
|
+
|
|
153
|
+
---
|
|
154
|
+
|
|
155
|
+
## Baseline Management
|
|
156
|
+
|
|
157
|
+
Chromatic requires an approved baseline build before it can compute visual diffs. The first run establishes the baseline.
|
|
158
|
+
|
|
159
|
+
**First run behavior:**
|
|
160
|
+
|
|
161
|
+
- Every story snapshot appears with `status: "new"` — this means "first snapshot captured", NOT a regression
|
|
162
|
+
- All stories are automatically accepted as the baseline
|
|
163
|
+
- Subsequent runs compare against these accepted baselines
|
|
164
|
+
|
|
165
|
+
**Subsequent run behavior:**
|
|
166
|
+
|
|
167
|
+
- `status: "unchanged"` — story matches baseline
|
|
168
|
+
- `status: "changed"` — story differs from baseline (regression candidate — review required on chromatic.com)
|
|
169
|
+
- `status: "accepted"` — change was intentionally approved by a reviewer on chromatic.com
|
|
170
|
+
- `status: "new"` — new story added since last build (not a regression)
|
|
171
|
+
- `status: "error"` — story failed to render
|
|
172
|
+
|
|
173
|
+
**Narration rules:**
|
|
174
|
+
|
|
175
|
+
- **First run** (all entries have `status: "new"`): emit "Baseline established — no regressions detected (first run creates baseline)."
|
|
176
|
+
- **Subsequent runs with changes** (`status: "changed"` entries exist): emit "VISUAL REGRESSION CANDIDATES: N stories changed — review required on chromatic.com before merging."
|
|
177
|
+
- **Clean run** (all `status: "unchanged"` or `status: "accepted"`): emit "Visual regression check passed — all stories match baseline."
|
|
178
|
+
|
|
179
|
+
---
|
|
180
|
+
|
|
181
|
+
## Fallback Behavior
|
|
182
|
+
|
|
183
|
+
**verify stage:**
|
|
184
|
+
|
|
185
|
+
- `chromatic: unavailable` → skip delta narration; skip visual regression check; note in DESIGN-VERIFICATION.md: "Visual regression check skipped — CHROMATIC_PROJECT_TOKEN not set."
|
|
186
|
+
- `chromatic: not_configured` → same as unavailable; note: "Visual regression check skipped — chromatic CLI not installed (npm install --save-dev chromatic)."
|
|
187
|
+
- `storybook: not_configured` → skip; note: "Visual regression check skipped — Chromatic requires Storybook, which is not configured."
|
|
188
|
+
|
|
189
|
+
**plan stage:**
|
|
190
|
+
|
|
191
|
+
- `chromatic: unavailable` or `not_configured` → skip story-count annotation; design-planner proceeds without at-risk story counts.
|
|
192
|
+
- `storybook: not_configured` → same skip behavior.
|
|
193
|
+
|
|
194
|
+
**Graceful degradation required:** The pipeline must continue when Chromatic is unavailable. Missing visual regression data is a quality reduction, not a blocking error.
|
|
195
|
+
|
|
196
|
+
---
|
|
197
|
+
|
|
198
|
+
## STATE.md Integration
|
|
199
|
+
|
|
200
|
+
Every stage that probes Chromatic writes the result to `.design/STATE.md` under the `<connections>` section:
|
|
201
|
+
|
|
202
|
+
```xml
|
|
203
|
+
<connections>
|
|
204
|
+
figma: available
|
|
205
|
+
refero: not_configured
|
|
206
|
+
storybook: unavailable
|
|
207
|
+
chromatic: available
|
|
208
|
+
</connections>
|
|
209
|
+
```
|
|
210
|
+
|
|
211
|
+
**Status values:**
|
|
212
|
+
|
|
213
|
+
| Value | Meaning |
|
|
214
|
+
|-------|---------|
|
|
215
|
+
| `available` | CLI present AND `CHROMATIC_PROJECT_TOKEN` is set |
|
|
216
|
+
| `unavailable` | CLI present but `CHROMATIC_PROJECT_TOKEN` is empty |
|
|
217
|
+
| `not_configured` | CLI not found — chromatic not installed |
|
|
218
|
+
|
|
219
|
+
**Note:** Even with `chromatic: available`, if `storybook: not_configured`, Chromatic cannot run. Stages must check both statuses before invoking Chromatic.
|
|
220
|
+
|
|
221
|
+
---
|
|
222
|
+
|
|
223
|
+
## Caveats and Pitfalls
|
|
224
|
+
|
|
225
|
+
**1. First run is always 100% "new" — not regressions**
|
|
226
|
+
|
|
227
|
+
On the first Chromatic run (no existing baseline), every story registers as `status: "new"`. This is expected and correct — Chromatic is establishing the baseline, not detecting regressions. The verify stage must detect this condition (all entries `status: "new"`) and emit the baseline-establishment message rather than a regression alert.
|
|
228
|
+
|
|
229
|
+
**2. CHROMATIC_PROJECT_TOKEN security**
|
|
230
|
+
|
|
231
|
+
`CHROMATIC_PROJECT_TOKEN` grants write access to your Chromatic project (publish builds, approve snapshots). Treat it like a password:
|
|
232
|
+
- Set it as an environment variable in your shell profile or CI secrets
|
|
233
|
+
- Never commit it to git (not in source files, not in `.env`, not in configuration files)
|
|
234
|
+
- Never log it in CI output
|
|
235
|
+
- Rotate it if it is exposed
|
|
236
|
+
|
|
237
|
+
**3. Exit code 1 is not an error**
|
|
238
|
+
|
|
239
|
+
Exit code 1 means visual changes were detected — it is expected and normal after a design pass. Do not configure CI to fail on exit code 1 without a review step. Use `|| true` in scripts if you want the command to not block CI, then check the results separately.
|
|
240
|
+
|
|
241
|
+
**4. `--dry-run` and `--output json` are separate, incompatible for narration**
|
|
242
|
+
|
|
243
|
+
`--dry-run` skips publishing to Chromatic cloud — it does NOT produce chromatic-results.json. Use `--output json` (without `--dry-run`) for verify-stage narration. Use `--trace-changed=expanded --dry-run` for plan-stage scoping (which doesn't need the results file).
|
|
244
|
+
|
|
245
|
+
**5. Storybook dependency is hard**
|
|
246
|
+
|
|
247
|
+
Chromatic builds your Storybook and uploads the output to the cloud. If Storybook is not installed or `storybook build` fails, Chromatic will fail. Always check `storybook: not_configured` before attempting to run Chromatic.
|
|
@@ -0,0 +1,190 @@
|
|
|
1
|
+
# Claude Design — Connection Specification
|
|
2
|
+
|
|
3
|
+
This file is the connection specification for Claude Design (https://claude.ai/design, Anthropic Labs) within the get-design-done pipeline. Its primary role is to enable handoff-first workflows: when a Claude Design handoff bundle is available, users can skip the scan/discover/plan stages and route directly to verify. Claude Design is not an MCP server — it is a browser-based design tool that produces exportable handoff bundles. See `connections/connections.md` for the full connection index and capability matrix.
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## What Is a Claude Design Handoff Bundle?
|
|
8
|
+
|
|
9
|
+
Claude Design produces AI-generated designs that can be exported as **handoff bundles**. A bundle contains:
|
|
10
|
+
|
|
11
|
+
| Artifact | Format | Contains |
|
|
12
|
+
|----------|--------|---------|
|
|
13
|
+
| Standalone HTML export | `.html` | Rendered component tree, inline CSS (design tokens as CSS custom properties), component structure, color/spacing/typography values |
|
|
14
|
+
| Design spec (optional) | `.md` or `.json` | Design decisions as structured text, token tables, component annotations |
|
|
15
|
+
| Assets (optional) | `assets/` dir | Icons, images referenced by the HTML export |
|
|
16
|
+
|
|
17
|
+
**Bundle entry point:** The primary parseable artifact is the HTML export. It contains inline `<style>` blocks with CSS custom properties (e.g., `--color-primary: #3B82F6`) and class-level token usage.
|
|
18
|
+
|
|
19
|
+
**Bundle discovery:** The pipeline looks for the bundle in:
|
|
20
|
+
1. The path passed via `--from-handoff <path>` flag or `handoff <path>` sub-command
|
|
21
|
+
2. The value of `handoff_source` in `.design/STATE.md` (if a prior session already set it)
|
|
22
|
+
3. A `claude-design-handoff.html` file in the project root (convention — not required)
|
|
23
|
+
|
|
24
|
+
---
|
|
25
|
+
|
|
26
|
+
## Handoff Bundle Format — Field Catalogue
|
|
27
|
+
|
|
28
|
+
### From the HTML export (primary parsing target)
|
|
29
|
+
|
|
30
|
+
| Field type | CSS pattern to grep | Example | D-XX mapping |
|
|
31
|
+
|------------|--------------------|---------|-----------|
|
|
32
|
+
| Color tokens | `--color-[name]:` in `<style>` | `--color-primary: #3B82F6` | `[Color] Primary: #3B82F6` |
|
|
33
|
+
| Spacing tokens | `--spacing-[n]:` in `<style>` | `--spacing-4: 1rem` | `[Spacing] Scale unit: 1rem (4px base)` |
|
|
34
|
+
| Typography tokens | `--font-[family|size|weight]:` in `<style>` | `--font-family: Inter, sans-serif` | `[Typography] Font family: Inter` |
|
|
35
|
+
| Radius tokens | `--radius-[n]:` in `<style>` | `--radius-md: 8px` | `[Radius] Default: 8px` |
|
|
36
|
+
| Shadow tokens | `--shadow-[level]:` in `<style>` | `--shadow-sm: 0 1px 2px` | `[Shadow] Elevation-sm: 0 1px 2px` |
|
|
37
|
+
| Component names | `<section class="component-[name]">` | `component-button` | `[Component] Button exists` |
|
|
38
|
+
| Layout pattern | `display: [grid\|flex]` in component sections | `display: grid; grid-template-columns: repeat(3, 1fr)` | `[Layout] Card grid: 3-col` |
|
|
39
|
+
|
|
40
|
+
### From the spec markdown/JSON (secondary, if present)
|
|
41
|
+
|
|
42
|
+
Grep for `Decision:`, `Rationale:`, `Token:`, `Component:` prefixes. Treat as pre-formed D-XX entries — translate directly into STATE.md decisions with `(source: claude-design-handoff)` tag.
|
|
43
|
+
|
|
44
|
+
---
|
|
45
|
+
|
|
46
|
+
## Adapter Pattern — Bundle Fields → D-XX Decisions
|
|
47
|
+
|
|
48
|
+
The `design-research-synthesizer` runs in `handoff` mode when `handoff_source` is present in STATE.md. It:
|
|
49
|
+
|
|
50
|
+
1. Parses the HTML export for CSS custom properties (colors, spacing, typography, radius, shadows)
|
|
51
|
+
2. Reads any `.md` spec file in the same directory as the HTML export
|
|
52
|
+
3. Translates each found value into a D-XX decision entry
|
|
53
|
+
4. Tags all entries: `(source: claude-design-handoff)` + `(tentative — confirm with user)` for inferred values, `(locked — from handoff spec)` for explicit spec values
|
|
54
|
+
5. Appends all entries to STATE.md `<decisions>` block and `.design/DESIGN-CONTEXT.md`
|
|
55
|
+
|
|
56
|
+
**Confidence levels:**
|
|
57
|
+
|
|
58
|
+
| Source | Tag | Confidence |
|
|
59
|
+
|--------|-----|-----------|
|
|
60
|
+
| Explicit spec markdown `Decision: ...` | `(locked — from handoff spec)` | High — treat as confirmed |
|
|
61
|
+
| CSS custom property in `<style>` | `(tentative — from handoff CSS)` | Medium — surfaced to user for confirm |
|
|
62
|
+
| Inferred from class structure | `(tentative — inferred)` | Low — always surface to user |
|
|
63
|
+
|
|
64
|
+
---
|
|
65
|
+
|
|
66
|
+
## Stage Routing for Handoff Workflows
|
|
67
|
+
|
|
68
|
+
When `handoff_source` is set in STATE.md:
|
|
69
|
+
|
|
70
|
+
```
|
|
71
|
+
Normal pipeline: scan → discover → plan → design → verify
|
|
72
|
+
Handoff pipeline: [scan skipped] → [discover skipped] → [plan skipped] → verify
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
**What skipped stages write to STATE.md:**
|
|
76
|
+
|
|
77
|
+
```xml
|
|
78
|
+
<position>
|
|
79
|
+
stage: verify
|
|
80
|
+
wave: 1
|
|
81
|
+
task_progress: 0/0
|
|
82
|
+
status: handoff-sourced
|
|
83
|
+
handoff_source: claude-design-html
|
|
84
|
+
skipped_stages: scan, discover, plan
|
|
85
|
+
</position>
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
**Verify `--post-handoff` mode** (implemented in plan 09-05):
|
|
89
|
+
- DESIGN-PLAN.md prerequisite check is relaxed (no DESIGN-PLAN.md exists for handoff flows)
|
|
90
|
+
- Adds "Handoff Faithfulness" section to DESIGN-VERIFICATION.md
|
|
91
|
+
- All other verify checks run normally
|
|
92
|
+
|
|
93
|
+
---
|
|
94
|
+
|
|
95
|
+
## Reverse Workflow — DESIGN.md → Claude Design Onboarding
|
|
96
|
+
|
|
97
|
+
After a successful implementation cycle, the pipeline can produce a design spec document that can be shared back with Claude Design (or any AI design tool) as an onboarding artifact:
|
|
98
|
+
|
|
99
|
+
1. Run `/gdd:style` to generate `DESIGN-STYLE-[Component].md` for key components
|
|
100
|
+
2. Collect the D-XX decisions from STATE.md `<decisions>` block
|
|
101
|
+
3. Combine into `DESIGN.md` (or use the existing one if it was produced by the pipeline)
|
|
102
|
+
|
|
103
|
+
This `DESIGN.md` + `DESIGN-STYLE-*.md` set can be copy-pasted into a Claude Design conversation to seed a new AI design iteration with the implemented system's actual values — "feed the code back to the designer."
|
|
104
|
+
|
|
105
|
+
**No automation is required for this workflow** — it is a manual copy-paste operation. The connection spec documents it so users know it is possible.
|
|
106
|
+
|
|
107
|
+
---
|
|
108
|
+
|
|
109
|
+
## Availability Probe
|
|
110
|
+
|
|
111
|
+
Claude Design is not an MCP server — it has no tools to probe via ToolSearch. Availability is determined by whether the user has provided a handoff bundle path.
|
|
112
|
+
|
|
113
|
+
**Probe pattern:**
|
|
114
|
+
|
|
115
|
+
```
|
|
116
|
+
At scan stage entry:
|
|
117
|
+
1. Check STATE.md <position> for handoff_source field
|
|
118
|
+
2. Check $ARGUMENTS for --from-handoff <path> flag
|
|
119
|
+
3. Check project root for claude-design-handoff.html
|
|
120
|
+
|
|
121
|
+
→ Bundle path found AND file exists → claude_design: available
|
|
122
|
+
→ Bundle path provided but file missing/bad → claude_design: unavailable
|
|
123
|
+
→ No bundle path, no file → claude_design: not_configured
|
|
124
|
+
```
|
|
125
|
+
|
|
126
|
+
Write result to STATE.md `<connections>` at scan entry.
|
|
127
|
+
|
|
128
|
+
**Verdict summary:**
|
|
129
|
+
|
|
130
|
+
| Value | Meaning |
|
|
131
|
+
|-------|---------|
|
|
132
|
+
| `available` | A handoff bundle path was supplied and the file exists/parses |
|
|
133
|
+
| `unavailable` | A handoff path was configured but the file is missing, unreadable, or malformed |
|
|
134
|
+
| `not_configured` | No handoff bundle was supplied and none was discovered in the conventional location |
|
|
135
|
+
|
|
136
|
+
---
|
|
137
|
+
|
|
138
|
+
## STATE.md Integration
|
|
139
|
+
|
|
140
|
+
### `<connections>` block
|
|
141
|
+
|
|
142
|
+
```xml
|
|
143
|
+
<connections>
|
|
144
|
+
figma: available
|
|
145
|
+
refero: not_configured
|
|
146
|
+
preview: available
|
|
147
|
+
storybook: not_configured
|
|
148
|
+
chromatic: not_configured
|
|
149
|
+
figma_writer: not_configured
|
|
150
|
+
graphify: not_configured
|
|
151
|
+
pinterest: not_configured
|
|
152
|
+
claude_design: available
|
|
153
|
+
</connections>
|
|
154
|
+
```
|
|
155
|
+
|
|
156
|
+
### `<position>` block — handoff fields (added to STATE-TEMPLATE in plan 09-03)
|
|
157
|
+
|
|
158
|
+
```xml
|
|
159
|
+
<position>
|
|
160
|
+
stage: verify
|
|
161
|
+
wave: 1
|
|
162
|
+
task_progress: 0/0
|
|
163
|
+
status: handoff-sourced
|
|
164
|
+
handoff_source: claude-design-html
|
|
165
|
+
handoff_path: ./claude-design-handoff.html
|
|
166
|
+
skipped_stages: scan, discover, plan
|
|
167
|
+
</position>
|
|
168
|
+
```
|
|
169
|
+
|
|
170
|
+
**`handoff_source` values:**
|
|
171
|
+
|
|
172
|
+
| Value | Meaning |
|
|
173
|
+
|-------|---------|
|
|
174
|
+
| `claude-design-html` | Bundle is a standalone HTML export from Claude Design |
|
|
175
|
+
| `claude-design-bundle` | Bundle is a directory with HTML + spec markdown + assets |
|
|
176
|
+
| `manual` | User manually initialized STATE.md with design decisions (no bundle file) |
|
|
177
|
+
|
|
178
|
+
---
|
|
179
|
+
|
|
180
|
+
## Caveats and Pitfalls
|
|
181
|
+
|
|
182
|
+
1. **Handoff bundle format is undocumented by Anthropic.** The Claude Design handoff bundle format is inferred from the product announcement and common HTML export patterns. The pipeline uses defensive parsing: grep for CSS custom properties in `<style>` tags, extract component class names from `class="component-*"` patterns, and fall back to the spec markdown/JSON if CSS parsing yields no results. If the format changes in a future Claude Design release, update this spec and the synthesizer's parsing patterns.
|
|
183
|
+
|
|
184
|
+
2. **`(tentative)` decisions MUST be confirmed by the user.** The discussant `--from-handoff` mode surfaces all tentative decisions for confirmation before proceeding to verify. Do NOT skip this step — implementing against unconfirmed inferred values is the primary failure mode of handoff-sourced workflows.
|
|
185
|
+
|
|
186
|
+
3. **Skipped stages mean no DESIGN-PLAN.md.** Verify's normal prerequisite check requires DESIGN-PLAN.md. Handoff mode bypasses this check (plan 09-05 implements the relaxation). If running verify manually after a handoff, always pass `--post-handoff` to prevent the prerequisite check from blocking.
|
|
187
|
+
|
|
188
|
+
4. **Handoff faithfulness is grep-based, not visual.** The Handoff Faithfulness score in DESIGN-VERIFICATION.md compares token values between the handoff bundle and the implemented code — it does NOT use computer vision or screenshot comparison. Visual fidelity between the Claude Design render and the implementation is currently out of scope (requires computer-use, deferred to a future phase).
|
|
189
|
+
|
|
190
|
+
5. **Reverse workflow is manual — no automation.** The DESIGN.md → Claude Design onboarding flow is documentation of a manual workflow. The pipeline does not auto-post to Claude Design or call any external API.
|
|
@@ -0,0 +1,218 @@
|
|
|
1
|
+
# Connections — Index and Capability Matrix
|
|
2
|
+
|
|
3
|
+
This directory contains connection specifications for external tools and MCPs that the get-design-done pipeline integrates with. Each connection has its own spec file. This file is the index.
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## Active Connections
|
|
8
|
+
|
|
9
|
+
| Connection | Status | Spec File | Notes |
|
|
10
|
+
|-----------|--------|-----------|-------|
|
|
11
|
+
| Figma | Active | [`connections/figma.md`](connections/figma.md) | Uses `mcp__figma-desktop__*` tools (official Figma Desktop MCP) |
|
|
12
|
+
| Refero | Active | [`connections/refero.md`](connections/refero.md) | Uses `mcp__refero__*` tools (verify names via ToolSearch) |
|
|
13
|
+
| Preview | Active | [`connections/preview.md`](connections/preview.md) | Uses `mcp__Claude_Preview__*` tools |
|
|
14
|
+
| Storybook | Active | [`connections/storybook.md`](connections/storybook.md) | HTTP probe: `localhost:6006/index.json` |
|
|
15
|
+
| Chromatic | Active | [`connections/chromatic.md`](connections/chromatic.md) | CLI: `npx chromatic`; env: `CHROMATIC_PROJECT_TOKEN` |
|
|
16
|
+
| Figma Writer | Active | [`connections/figma-writer.md`](connections/figma-writer.md) | Uses `mcp__figma__use_figma` (remote MCP) |
|
|
17
|
+
| Graphify | Active | [`connections/graphify.md`](connections/graphify.md) | CLI: `graphify`; `gsd-tools graphify *` |
|
|
18
|
+
| Pinterest | Active | [`connections/pinterest.md`](connections/pinterest.md) | `mcp__mcp-pinterest__*` tools (ToolSearch-only probe; headless scraping, no API key) |
|
|
19
|
+
| Claude Design | Active | [`connections/claude-design.md`](connections/claude-design.md) | No MCP — bundle file probe; enables `/gdd:handoff` pipeline + bidirectional write-back via figma-writer |
|
|
20
|
+
|
|
21
|
+
---
|
|
22
|
+
|
|
23
|
+
## Capability Matrix
|
|
24
|
+
|
|
25
|
+
Each cell describes what the connection contributes at that pipeline stage, or `—` if it is not used.
|
|
26
|
+
|
|
27
|
+
| Connection | scan | discover | plan | design | verify |
|
|
28
|
+
|-----------|------|----------|------|--------|--------|
|
|
29
|
+
| Figma | token augmentation via `get_variable_defs` (CONN-03) | decisions pre-populate via `get_variable_defs` (CONN-04) | — | — | — |
|
|
30
|
+
| Refero | — | reference search via `mcp__refero__search`; fallback → awesome-design-md (CONN-05) | — | — | — |
|
|
31
|
+
| Preview | — | — | — | — | screenshots for `? VISUAL` checks (VIS-02) |
|
|
32
|
+
| Storybook | — | component inventory (STB-01) | change-risk via story count (STB-02) | `.stories.tsx` stub (STB-03) | a11y per story (STB-02) |
|
|
33
|
+
| Chromatic | — | — | change-risk scoping (CHR-02) | — | visual delta narration (CHR-01) |
|
|
34
|
+
| Figma Writer | — | — | — | write tokens/annotations/Code Connect (FWR-01..04) | — |
|
|
35
|
+
| Graphify | — | — | dependency scoping (GRF-03) | — | orphan detection (GRF-04) |
|
|
36
|
+
| Pinterest | probe only | visual reference search via `pinterest_search`; fallback → Refero → awesome-design-md | — | — | — |
|
|
37
|
+
| Claude Design | bundle probe → `claude_design: available` | synthesizer handoff mode — parses bundle → D-XX decisions; discussant `--from-handoff` confirms | — (skipped in handoff) | — (skipped in handoff) | Handoff Faithfulness section; bidirectional write-back via figma-writer `implementation-status` mode |
|
|
38
|
+
|
|
39
|
+
**Column definitions:**
|
|
40
|
+
|
|
41
|
+
- **scan** — what the connection provides when the scan stage runs (design tokens, source metadata)
|
|
42
|
+
- **discover** — what the connection provides during discovery (visual references, design decisions)
|
|
43
|
+
- **plan** — what the connection contributes to planning artifacts
|
|
44
|
+
- **design** — what the connection provides during design execution
|
|
45
|
+
- **verify** — what the connection checks or surfaces during verification
|
|
46
|
+
|
|
47
|
+
---
|
|
48
|
+
|
|
49
|
+
## Connection Probe Pattern
|
|
50
|
+
|
|
51
|
+
This is the canonical probe pattern. All stages copy this prose inline — SKILL.md files have no include mechanism, so each stage repeats the relevant subset verbatim. The specification lives here; stages copy from it.
|
|
52
|
+
|
|
53
|
+
**Why ToolSearch first:** MCP tools may be in the deferred tool set (not loaded into context at session start when many servers are registered). Calling a deferred tool directly fails silently. ToolSearch loads the tools into context and confirms presence in a single call — always call it before any MCP tool invocation.
|
|
54
|
+
|
|
55
|
+
**Three-value status schema (fixed — do not extend):**
|
|
56
|
+
|
|
57
|
+
| Status | Meaning |
|
|
58
|
+
|--------|---------|
|
|
59
|
+
| `available` | MCP tool confirmed present and responsive |
|
|
60
|
+
| `unavailable` | MCP tool is in the session but errored (app offline, auth failure, rate-limited) |
|
|
61
|
+
| `not_configured` | ToolSearch returned empty — MCP not registered in this session |
|
|
62
|
+
|
|
63
|
+
**STATE.md format:**
|
|
64
|
+
|
|
65
|
+
```xml
|
|
66
|
+
<connections>
|
|
67
|
+
figma: available
|
|
68
|
+
refero: not_configured
|
|
69
|
+
</connections>
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
`<connections>` is the single source of truth across stages. Every stage reads it before deciding whether to invoke an MCP tool. Every stage writes to it after probing.
|
|
73
|
+
|
|
74
|
+
---
|
|
75
|
+
|
|
76
|
+
**Figma probe (execute at stage entry, after reading STATE.md):**
|
|
77
|
+
|
|
78
|
+
```
|
|
79
|
+
Step A1 — ToolSearch check:
|
|
80
|
+
ToolSearch({ query: "select:mcp__figma-desktop__get_metadata", max_results: 1 })
|
|
81
|
+
→ Empty result → figma: not_configured (skip all Figma steps)
|
|
82
|
+
→ Non-empty result → proceed to Step A2
|
|
83
|
+
|
|
84
|
+
Step A2 — Live tool call:
|
|
85
|
+
call mcp__figma-desktop__get_metadata
|
|
86
|
+
→ Success → figma: available
|
|
87
|
+
→ Error → figma: unavailable (skip all Figma steps)
|
|
88
|
+
|
|
89
|
+
Write figma status to STATE.md <connections>.
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
**Refero probe (execute at stage entry, after reading STATE.md):**
|
|
93
|
+
|
|
94
|
+
```
|
|
95
|
+
Step B1 — ToolSearch check:
|
|
96
|
+
ToolSearch({ query: "refero", max_results: 5 })
|
|
97
|
+
→ Empty result → refero: not_configured (use fallback chain)
|
|
98
|
+
→ Non-empty result → refero: available
|
|
99
|
+
|
|
100
|
+
Write refero status to STATE.md <connections>.
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
Note: Refero probe is ToolSearch-only (no live tool call). ToolSearch presence is sufficient; a live Refero search as probe would waste tokens before confirming the connection is even needed.
|
|
104
|
+
|
|
105
|
+
---
|
|
106
|
+
|
|
107
|
+
**Preview probe (execute at stage entry, after reading STATE.md):**
|
|
108
|
+
|
|
109
|
+
```
|
|
110
|
+
Step P1 — ToolSearch check:
|
|
111
|
+
ToolSearch({ query: "Claude_Preview", max_results: 5 })
|
|
112
|
+
→ Empty result → preview: not_configured
|
|
113
|
+
→ Non-empty result → proceed to Step P2
|
|
114
|
+
|
|
115
|
+
Step P2 — Live tool call:
|
|
116
|
+
call mcp__Claude_Preview__preview_list
|
|
117
|
+
→ Success (list returned, may be empty) → preview: available
|
|
118
|
+
→ Error → preview: unavailable
|
|
119
|
+
|
|
120
|
+
Write preview status to STATE.md <connections>.
|
|
121
|
+
```
|
|
122
|
+
|
|
123
|
+
**Storybook probe (execute at stage entry, after reading STATE.md):**
|
|
124
|
+
|
|
125
|
+
```
|
|
126
|
+
Step S1 — HTTP check (Storybook 8):
|
|
127
|
+
Bash: curl -sf http://localhost:6006/index.json 2>/dev/null
|
|
128
|
+
→ Success (JSON) → storybook: available
|
|
129
|
+
→ Failure → proceed to Step S2
|
|
130
|
+
|
|
131
|
+
Step S2 — HTTP fallback (Storybook 7):
|
|
132
|
+
Bash: curl -sf http://localhost:6006/stories.json 2>/dev/null
|
|
133
|
+
→ Success (JSON) → storybook: available
|
|
134
|
+
→ Failure → storybook: not_configured
|
|
135
|
+
|
|
136
|
+
Write storybook status to STATE.md <connections>.
|
|
137
|
+
```
|
|
138
|
+
|
|
139
|
+
Note: Storybook 8 index.json does NOT include parameters. Use id, title, name, type, kind, tags fields only.
|
|
140
|
+
|
|
141
|
+
**Chromatic probe (execute at stage entry, after reading STATE.md):**
|
|
142
|
+
|
|
143
|
+
```
|
|
144
|
+
Step C1 — CLI check:
|
|
145
|
+
Bash: command -v chromatic || npx --yes chromatic --version 2>/dev/null
|
|
146
|
+
→ Exits non-zero → chromatic: not_configured (skip all Chromatic steps)
|
|
147
|
+
→ Exits 0 → proceed to Step C2
|
|
148
|
+
|
|
149
|
+
Step C2 — Token check:
|
|
150
|
+
Check env var: CHROMATIC_PROJECT_TOKEN
|
|
151
|
+
→ Absent or empty → chromatic: unavailable (CLI present but not configured)
|
|
152
|
+
→ Present → chromatic: available
|
|
153
|
+
|
|
154
|
+
Write chromatic status to STATE.md <connections>.
|
|
155
|
+
```
|
|
156
|
+
|
|
157
|
+
Note: First Chromatic run has no baseline — all stories become new snapshots. This is expected; it establishes the baseline.
|
|
158
|
+
|
|
159
|
+
**Figma Writer probe (execute before any write operation):**
|
|
160
|
+
|
|
161
|
+
```
|
|
162
|
+
Step R1 — ToolSearch check:
|
|
163
|
+
ToolSearch({ query: "mcp__figma__use_figma", max_results: 1 })
|
|
164
|
+
→ Empty result → figma_writer: not_configured
|
|
165
|
+
→ Non-empty result → figma_writer: available
|
|
166
|
+
|
|
167
|
+
Write figma_writer status to STATE.md <connections>.
|
|
168
|
+
```
|
|
169
|
+
|
|
170
|
+
Note: figma_writer is a separate connection key from figma (desktop). Both can be active simultaneously. There is no `unavailable` state for figma_writer — the ToolSearch-only probe cannot detect auth failures; those surface at execution time.
|
|
171
|
+
|
|
172
|
+
**Graphify probe (execute at agent entry, before using graph):**
|
|
173
|
+
|
|
174
|
+
```
|
|
175
|
+
Step G1 — Config check:
|
|
176
|
+
node "$HOME/.claude/get-shit-done/bin/gsd-tools.cjs" graphify status
|
|
177
|
+
→ Error or { enabled: false } → graphify: not_configured
|
|
178
|
+
→ { enabled: true } → proceed to Step G2
|
|
179
|
+
|
|
180
|
+
Step G2 — Graph file check:
|
|
181
|
+
Check if graphify-out/graph.json exists in project root
|
|
182
|
+
→ Absent → graphify: unavailable (graph not built yet)
|
|
183
|
+
→ Present → graphify: available
|
|
184
|
+
|
|
185
|
+
Write graphify status to STATE.md <connections>.
|
|
186
|
+
```
|
|
187
|
+
|
|
188
|
+
---
|
|
189
|
+
|
|
190
|
+
**Graceful degradation required:** stages MUST continue when a connection is `unavailable` or `not_configured`. Skip connection-dependent steps. If a missing connection prevents a `must_have` from being satisfied, append a `<blocker>` to `.design/STATE.md` and continue.
|
|
191
|
+
|
|
192
|
+
For full per-connection fallback details, see the spec files: [`connections/figma.md`](connections/figma.md), [`connections/refero.md`](connections/refero.md), [`connections/preview.md`](connections/preview.md), [`connections/storybook.md`](connections/storybook.md), [`connections/chromatic.md`](connections/chromatic.md), [`connections/figma-writer.md`](connections/figma-writer.md), and [`connections/graphify.md`](connections/graphify.md).
|
|
193
|
+
|
|
194
|
+
---
|
|
195
|
+
|
|
196
|
+
## Extensibility Guide
|
|
197
|
+
|
|
198
|
+
To add a new connection to the pipeline:
|
|
199
|
+
|
|
200
|
+
1. **Create the spec file.** Write `connections/<connection-name>.md` following the structure of `connections/refero.md`: what the tool does, when to use it, available MCP tools, search/invocation strategy, fallbacks, anti-patterns.
|
|
201
|
+
|
|
202
|
+
2. **Register in this file.** Add a row to the Active Connections table above (status, spec file path, MCP tool prefix).
|
|
203
|
+
|
|
204
|
+
3. **Update the Capability Matrix.** Add a row for the new connection. Mark the stages it feeds with a short capability noun; use `—` for stages it does not affect.
|
|
205
|
+
|
|
206
|
+
4. **Declare the MCP.** If the connection uses an MCP server, ensure the server is declared in `.claude-plugin/plugin.json` or documented as a user-supplied MCP in the spec file. For read-only MCP connections, use `connections/figma.md` as the model. For remote MCP write connections, use `connections/figma-writer.md` as the model.
|
|
207
|
+
|
|
208
|
+
5. **Wire into stage skills (Phase 2+ work).** Update the relevant stage `SKILL.md` files to probe the connection at entry and write its status to `.design/STATE.md <connections>`.
|
|
209
|
+
|
|
210
|
+
6. **Update relevant agents (Phase 2+ work).** If agents will use the connection's tools, list the MCP tools in the agent's `tools` frontmatter field.
|
|
211
|
+
|
|
212
|
+
---
|
|
213
|
+
|
|
214
|
+
## Notes
|
|
215
|
+
|
|
216
|
+
- `connections/` is infrastructure scaffolding introduced in Phase 1. Stage integration (wiring detection and graceful degradation into each stage) is Phase 2 work.
|
|
217
|
+
- Phase 8 added five new active connections. Linear and GitHub remain planned for a future phase.
|
|
218
|
+
- The capability matrix columns map to the five pipeline stages: `scan | discover | plan | design | verify`.
|