@hegemonart/get-design-done 1.36.3 → 1.37.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.claude-plugin/marketplace.json +2 -2
- package/.claude-plugin/plugin.json +1 -1
- package/CHANGELOG.md +21 -0
- package/README.md +4 -0
- package/agents/design-component-generator.md +30 -2
- package/connections/builder-io.md +131 -0
- package/connections/connections.md +13 -1
- package/connections/framer.md +126 -0
- package/connections/penpot.md +148 -0
- package/connections/plasmic.md +112 -0
- package/connections/v0-dev.md +100 -0
- package/connections/webflow.md +107 -0
- package/package.json +1 -1
- package/skills/connections/SKILL.md +4 -4
- package/skills/connections/connections-onboarding.md +58 -4
|
@@ -5,14 +5,14 @@
|
|
|
5
5
|
},
|
|
6
6
|
"metadata": {
|
|
7
7
|
"description": "Get Design Done — 5-stage agent-orchestrated design pipeline with 9 connections, handoff-first workflow, bidirectional Figma write-back, 22+ specialized agents, queryable knowledge layer (intel store, dependency analysis, learnings extraction), and a self-improvement loop (reflector, frontmatter + budget feedback, global-skills layer). v1.20.0 ships the SDK foundation: gdd-state MCP server (11 typed tools), lockfile-safe STATE.md mutations, event stream, and resilience primitives (jittered-backoff, rate-guard, error-classifier, iteration-budget) for rate-limit + 429 + context-overflow recovery. Full CI/CD pipeline (Node 22/24 × Linux/macOS/Windows) and release automation (auto-tag + GitHub Release + release-time smoke test).",
|
|
8
|
-
"version": "1.
|
|
8
|
+
"version": "1.37.1"
|
|
9
9
|
},
|
|
10
10
|
"plugins": [
|
|
11
11
|
{
|
|
12
12
|
"name": "get-design-done",
|
|
13
13
|
"source": "./",
|
|
14
14
|
"description": "Agent-orchestrated 5-stage design pipeline: Brief → Explore → Plan → Design → Verify. 22+ specialized agents, 9 connections (Figma, Refero, Preview, Storybook, Chromatic, Figma Writer, Graphify, Pinterest, Claude Design), Claude Design handoff, bidirectional Figma write-back, and a queryable intel store (.design/intel/) for dependency and learnings queries. Standalone commands: style, darkmode, compare, figma-write, graphify, handoff, analyze-dependencies, skill-manifest, extract-learnings. Embeds NNG heuristics, WCAG thresholds, typographic systems, motion framework, and anti-pattern catalog. Ships with a full CI/CD pipeline (Node 22/24 × Linux/macOS/Windows) and release automation. Optimization layer (v1.0.4.1, retroactive): gdd-router + gdd-cache-manager skills, PreToolUse budget-enforcer hook, tier-aware agent frontmatter, lazy checker gates, streaming synthesizer, /gdd:warm-cache + /gdd:optimize commands, and cost telemetry at .design/telemetry/costs.jsonl — targeting 50-70% per-task token-cost reduction with no quality-floor regression. v1.20.0 SDK foundation: gdd-state MCP server (11 typed tools), lockfile-safe STATE.md mutations, event stream at .design/telemetry/events.jsonl, resilience primitives (jittered-backoff, rate-guard, error-classifier, iteration-budget) with rate-limit + 429 + context-overflow recovery, and TypeScript toolchain.",
|
|
15
|
-
"version": "1.
|
|
15
|
+
"version": "1.37.1",
|
|
16
16
|
"author": {
|
|
17
17
|
"name": "hegemonart"
|
|
18
18
|
},
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "get-design-done",
|
|
3
3
|
"short_name": "gdd",
|
|
4
|
-
"version": "1.
|
|
4
|
+
"version": "1.37.1",
|
|
5
5
|
"description": "Agent-orchestrated 5-stage design pipeline: Brief → Explore → Plan → Design → Verify. 22+ specialized agents, 9 connections (Figma, Refero, Preview, Storybook, Chromatic, Figma Writer, Graphify, Pinterest, Claude Design), handoff-first workflow via Claude Design bundles, bidirectional Figma write-back (annotations, Code Connect), queryable intel store (`.design/intel/`) for O(1) design surface lookups, and self-improvement loop (reflector agent, frontmatter + budget feedback, global-skills layer at `~/.claude/gdd/global-skills/`). Standalone commands: style, darkmode, compare, figma-write, graphify, handoff, analyze-dependencies, skill-manifest, extract-learnings, reflect, apply-reflections. Embeds NNG heuristics, WCAG thresholds, typographic systems, motion framework, and anti-pattern catalog. Ships with a full CI/CD pipeline (Node 22/24 × Linux/macOS/Windows, lint + schema + frontmatter + stale-ref + shellcheck + gitleaks + injection-scan + blocking size-budget) and release automation (auto-tag + GitHub Release + release-time smoke test). Optimization layer (v1.0.4.1, retroactive): gdd-router + gdd-cache-manager skills, PreToolUse budget-enforcer hook, tier-aware agent frontmatter, lazy checker gates, streaming synthesizer, /gdd:warm-cache + /gdd:optimize commands, and cost telemetry at .design/telemetry/costs.jsonl — targeting 50-70% per-task token-cost reduction with no quality-floor regression. v1.20.0 SDK foundation: gdd-state MCP server (11 typed tools), lockfile-safe STATE.md mutations, event stream at .design/telemetry/events.jsonl, resilience primitives (jittered-backoff, rate-guard, error-classifier, iteration-budget) with rate-limit + 429 + context-overflow recovery, and TypeScript toolchain. v1.27.7 ships gdd-mcp (Phase 27.7): 12 read-only MCP tools for sub-3s priming. v1.28.0 (Phase 28): Foundational References Tier 2 — 5 new reference files (color-theory, composition, proportion-systems, i18n, contrast-advanced), 2 verifier i18n probes + 1 explore i18n-readiness probe, 12 additive cross-link insertions across 10 existing references, 2 orthogonal audit-scoring lens-tags (composition_alignment + i18n_readiness).",
|
|
6
6
|
"author": {
|
|
7
7
|
"name": "hegemonart",
|
package/CHANGELOG.md
CHANGED
|
@@ -4,6 +4,27 @@ All notable changes to get-design-done are documented here. Versions follow [sem
|
|
|
4
4
|
|
|
5
5
|
---
|
|
6
6
|
|
|
7
|
+
## [1.37.1] - 2026-06-01
|
|
8
|
+
|
|
9
|
+
### Phase 37.1 — AI-Native Tools Wave 2 (Framer + Penpot + Webflow + v0.dev + Plasmic + Builder.io)
|
|
10
|
+
|
|
11
|
+
First sub-phase of the split **Phase 37**. Schedules Phase 14's explicit backlog: six AI-native design tools, each under the existing connection capability contract (canvas | generator | shared probe). **No new runtime dependency, no new egress** — each tool is an opt-in user-connected MCP/API, probed via ToolSearch/env; absent → degrade-to-code-only.
|
|
12
|
+
|
|
13
|
+
### Added
|
|
14
|
+
|
|
15
|
+
- **`connections/framer.md`** + **`penpot.md`** + **`webflow.md`** — canvas-category specs. Framer (read frames + write proposals), Penpot (open-source Figma alt; self-hosted-vs-cloud probe), Webflow (read site structure as a design-adaptation source — not CMS authoring). Contribute at the **design** stage.
|
|
16
|
+
- **`connections/v0-dev.md`** + **`plasmic.md`** + **`builder-io.md`** — generator-category specs. v0.dev (MCP-first → REST + `V0_API_KEY`), Plasmic (dual: canvas read + code emission), Builder.io Visual Copilot (pull-only this phase). Drive the **generator** stage.
|
|
17
|
+
- **`agents/design-component-generator.md`** — Step-0 detection + `--tool` flag extended to `v0|plasmic|builder-io`, plus compact `<!-- impl: v0 -->` / `<!-- impl: plasmic -->` / `<!-- impl: builder-io -->` sections that cross-link to the connection specs (231 → 259, under the LARGE budget). Priority: magic-patterns > 21st.dev > v0 > plasmic > builder-io; `--tool` overrides.
|
|
18
|
+
- **`connections/connections.md`** + onboarding — 21 → 27 onboarded (6 Active rows + 6 capability-matrix rows: framer/penpot → canvas, webflow/v0/builder-io → generator, **Plasmic → canvas + generator dual**; probes + value-prop + setup matrix).
|
|
19
|
+
|
|
20
|
+
### Notes
|
|
21
|
+
|
|
22
|
+
- **No new runtime dependency, no new egress** — opt-in MCP/API connections; the generator never writes to `src/` without proposal→confirm.
|
|
23
|
+
- 6-manifest lockstep at **v1.37.1** + `OFF_CADENCE_VERSIONS.add('1.37.1')` + the 26 live-pinned `manifests-version.txt` baselines forward-propagated 1.36.3 → 1.37.1 (opens the v1.37.x arc).
|
|
24
|
+
- Inventory relock: connection-list 29 → 35 (+6), onboarding → 27, tarball golden 670 → 676 (+6). Registry unchanged (no `reference/` doc); no new skill/agent dir (the generator agent pre-exists).
|
|
25
|
+
|
|
26
|
+
---
|
|
27
|
+
|
|
7
28
|
## [1.36.3] - 2026-06-01
|
|
8
29
|
|
|
9
30
|
### Phase 36.3 — Knowledge Tier-3: Conversational UI — completes Phase 36
|
package/README.md
CHANGED
|
@@ -162,6 +162,10 @@ GDD now opens the motion **exports** a project ships. The pure, dependency-free
|
|
|
162
162
|
|
|
163
163
|
[`reference/conversational-ui.md`](reference/conversational-ui.md) closes a zero-coverage surface: voice flows + chatbots. It codifies voice-flow reprompts (no-input / no-match → human handoff), multi-turn dialogue (context carryover, slot-filling, repair), **prompt-as-UX** (the assistant's persona/tone/boundaries as a versioned design artifact), chatbot empty-states + suggested replies, voice-first onboarding, and error recovery + accessibility. [`design-context-builder`](agents/design-context-builder.md) detects a `conversational` project type (brief keywords + chatbot/voice deps like `botpress` / `dialogflow` / `actions-on-google` / `ask-sdk-core`) and loads the pack into context. **No new runtime dependency.** This is the **final sub-phase of Phase 36 — which is now complete** (domain packs + motion-tool verification + conversational UI).
|
|
164
164
|
|
|
165
|
+
### AI-native tools — Wave 2 (v1.37.1)
|
|
166
|
+
|
|
167
|
+
Six more AI-native design tools join the connection layer (Phase 14's backlog, now scheduled): **Framer**, **Penpot**, and **Webflow** (canvas-category — read frames/boards/structure as design sources) plus **v0.dev**, **Plasmic**, and **Builder.io** (generator-category — prompt→component, wired into [`design-component-generator`](agents/design-component-generator.md) as `<!-- impl: -->` sections). Plasmic is dual (canvas + generator). Onboarding grows 21 → 27. Each is an opt-in MCP/API connection that degrades to code-only when absent — **no new runtime dependency**. First sub-phase of Phase 37 (Greenfield DS Bootstrap follows).
|
|
168
|
+
|
|
165
169
|
### Previous releases
|
|
166
170
|
|
|
167
171
|
- **v1.26.0** — Headless Model Resolver (per-runtime tier→model map, `resolved_models` router field, per-runtime price tables, `reasoning-class` runtime-neutral alias).
|
|
@@ -31,7 +31,11 @@ Read `.design/STATE.md` `<connections>` block. Check for:
|
|
|
31
31
|
- `magic-patterns: available` → prefer magic-patterns (DS-aware + preview_url); use magic-patterns impl
|
|
32
32
|
- `21st-dev: available` (and magic-patterns not available) → use 21st.dev impl
|
|
33
33
|
- Both available → prefer magic-patterns (DS-aware + preview_url); 21st.dev as fallback
|
|
34
|
-
-
|
|
34
|
+
- `v0-dev: available` → use the v0 impl (generator; MCP-first → REST + `V0_API_KEY`)
|
|
35
|
+
- `plasmic: available` → use the plasmic impl (canvas read + code emission)
|
|
36
|
+
- `builder-io: available` → use the builder-io impl (Visual Copilot; pull-only this phase)
|
|
37
|
+
- Priority when several are available: magic-patterns > 21st.dev > v0 > plasmic > builder-io (DS-awareness + preview first); `--tool` overrides.
|
|
38
|
+
- None available → Print: "No component generator configured. Set up 21st.dev / Magic Patterns / v0.dev / Plasmic / Builder.io per the matching `connections/<tool>.md`." STOP.
|
|
35
39
|
|
|
36
40
|
---
|
|
37
41
|
|
|
@@ -39,7 +43,7 @@ Read `.design/STATE.md` `<connections>` block. Check for:
|
|
|
39
43
|
|
|
40
44
|
Parse flags:
|
|
41
45
|
- `--dry-run` — emit proposal only, no writes
|
|
42
|
-
- `--tool 21st|magic-patterns` — override generator selection
|
|
46
|
+
- `--tool 21st|magic-patterns|v0|plasmic|builder-io` — override generator selection
|
|
43
47
|
- `--ds <design-system>` — design system target: `shadcn | tailwind | mantine | chakra`
|
|
44
48
|
- Component description (required positional arg): natural-language component spec
|
|
45
49
|
|
|
@@ -164,6 +168,30 @@ After generating, write `preview_url` to STATE.md `<generator>` block (see Step
|
|
|
164
168
|
|
|
165
169
|
<!-- /impl: magic-patterns -->
|
|
166
170
|
|
|
171
|
+
<!-- impl: v0 -->
|
|
172
|
+
## v0.dev Implementation
|
|
173
|
+
|
|
174
|
+
### Step 2D — v0.dev: Generate
|
|
175
|
+
|
|
176
|
+
Probe per `connections/v0-dev.md` (MCP-first → REST + `V0_API_KEY`). Generate from the description + DS context: MCP available → call the v0 generate tool (verify the name via ToolSearch) with the spec + `--ds` target; REST fallback → POST the spec to the v0 Platform API with `V0_API_KEY`. v0 emits React + Tailwind + shadcn by default — reconcile to the project `--ds`. Carry into Step 3 (proposal); never write to `src/` without confirmation. Full tool catalogue + setup: `connections/v0-dev.md`.
|
|
177
|
+
<!-- /impl: v0 -->
|
|
178
|
+
|
|
179
|
+
<!-- impl: plasmic -->
|
|
180
|
+
## Plasmic Implementation
|
|
181
|
+
|
|
182
|
+
### Step 2E — Plasmic: Read canvas + emit code
|
|
183
|
+
|
|
184
|
+
Probe per `connections/plasmic.md`. Plasmic is dual: **canvas read** → pull the Plasmic project's components as a design source (like Figma); **code emission** → emit the component code for the `--ds` target. Reconcile emitted code to the project DS; carry into Step 3 (proposal). Detail: `connections/plasmic.md`.
|
|
185
|
+
<!-- /impl: plasmic -->
|
|
186
|
+
|
|
187
|
+
<!-- impl: builder-io -->
|
|
188
|
+
## Builder.io Implementation
|
|
189
|
+
|
|
190
|
+
### Step 2F — Builder.io: Visual Copilot (pull-only)
|
|
191
|
+
|
|
192
|
+
Probe per `connections/builder-io.md` (MCP-first → `BUILDER_API_KEY`). **Pull-only this phase**: generate / ingest patterns via Visual Copilot, reconcile to `--ds`, carry into Step 3 (proposal). NO write-back this phase. Detail: `connections/builder-io.md`.
|
|
193
|
+
<!-- /impl: builder-io -->
|
|
194
|
+
|
|
167
195
|
---
|
|
168
196
|
|
|
169
197
|
## Step 3 — Build Proposal
|
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
# Builder.io — Connection Specification
|
|
2
|
+
|
|
3
|
+
This file is the connection specification for Builder.io Visual Copilot within the get-design-done pipeline. Builder.io Visual Copilot is an AI-native **generator-category** tool — it converts designs (Figma frames, imported layouts) into framework code and generates UI components from descriptions. It integrates via the Builder MCP / Visual Copilot or via a direct API key. See `connections/connections.md` for the full connection index and capability matrix.
|
|
4
|
+
|
|
5
|
+
**Scope this phase: PULL-ONLY.** Builder.io is used to *ingest patterns* and *generate* code into the pipeline. Write-back (publishing components or content models back to Builder.io spaces) is **deferred** — not wired this phase. See [21st.dev](21st-dev.md) for the sibling generator-category spec.
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## Setup
|
|
10
|
+
|
|
11
|
+
### Prerequisites
|
|
12
|
+
|
|
13
|
+
**Path A — Builder MCP / Visual Copilot (preferred):**
|
|
14
|
+
- A [Builder.io](https://www.builder.io) account
|
|
15
|
+
- The Builder MCP or Visual Copilot enabled in your Claude environment
|
|
16
|
+
- No additional manual setup when the connector is enabled
|
|
17
|
+
|
|
18
|
+
**Path B — API key fallback:**
|
|
19
|
+
- A Builder.io account and API key (public/private key for your Builder space)
|
|
20
|
+
- `BUILDER_API_KEY` environment variable set
|
|
21
|
+
- MCP server install (example):
|
|
22
|
+
```bash
|
|
23
|
+
claude mcp add builder-io --transport http https://mcp.builder.io/sse \
|
|
24
|
+
-e BUILDER_API_KEY=$BUILDER_API_KEY
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
### Verification
|
|
28
|
+
|
|
29
|
+
```
|
|
30
|
+
ToolSearch({ query: "builder", max_results: 5 })
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
Non-empty results including a Builder generate/figma-import tool → connector available (Path A).
|
|
34
|
+
Empty → check `BUILDER_API_KEY`; if set, install Path B and restart the Claude Code session.
|
|
35
|
+
|
|
36
|
+
---
|
|
37
|
+
|
|
38
|
+
## Probe Pattern
|
|
39
|
+
|
|
40
|
+
Builder.io uses a **MCP-first, env-fallback** probe. Check for Builder tools first; fall back to the API key env var.
|
|
41
|
+
|
|
42
|
+
```
|
|
43
|
+
ToolSearch({ query: "builder", max_results: 5 })
|
|
44
|
+
→ Non-empty → builder-io: available (MCP / Visual Copilot)
|
|
45
|
+
→ Empty → check BUILDER_API_KEY env var
|
|
46
|
+
set → builder-io: available (API key path)
|
|
47
|
+
unset → builder-io: not_configured
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
Three-value schema written to `.design/STATE.md` `<connections>`:
|
|
51
|
+
|
|
52
|
+
| Value | Meaning |
|
|
53
|
+
|-------|---------|
|
|
54
|
+
| `available` | Builder MCP tools found, OR `BUILDER_API_KEY` is set |
|
|
55
|
+
| `not_configured` | No Builder tools and no API key — skip all Builder.io steps |
|
|
56
|
+
| `error` | Tools present but probe/auth failed — degrade, surface the error, never block |
|
|
57
|
+
|
|
58
|
+
Write result to STATE.md `<connections>`: `builder-io: <status>`
|
|
59
|
+
|
|
60
|
+
Fallback: when `not_configured`, the generator stage skips Builder.io and falls back to another generator (if available) or degrades to manual code-only build.
|
|
61
|
+
|
|
62
|
+
---
|
|
63
|
+
|
|
64
|
+
## Builder.io Tools
|
|
65
|
+
|
|
66
|
+
Builder.io exposes Visual Copilot capabilities through MCP tools. Names and exact signatures vary by connector version — discover them via the probe (`ToolSearch({ query: "builder" })`) rather than hardcoding. Described generically, the relevant **pull-only** capabilities are:
|
|
67
|
+
|
|
68
|
+
| Capability | Stage | Purpose |
|
|
69
|
+
|------------|-------|---------|
|
|
70
|
+
| Figma → code generate | generator | Convert a selected Figma frame/URL into framework code (React, Vue, Svelte, Angular, etc.) |
|
|
71
|
+
| Describe → component generate | generator | Generate a UI component from a natural-language description |
|
|
72
|
+
| Pull / ingest pattern | generator | Fetch an existing Builder block/pattern as a starting point for adaptation |
|
|
73
|
+
|
|
74
|
+
### Typical generate inputs (generic)
|
|
75
|
+
|
|
76
|
+
| Input | Values | Notes |
|
|
77
|
+
|-------|--------|-------|
|
|
78
|
+
| `source` | Figma frame URL / selection, or description | Pull-side input — the design or spec to convert |
|
|
79
|
+
| `framework` | `"react" \| "vue" \| "svelte" \| "angular"` | Auto-detected from the project in the explore stage |
|
|
80
|
+
| `styling` | `"tailwind" \| "css" \| "styled-components"` | Auto-detected; defaults to the project's active styling |
|
|
81
|
+
|
|
82
|
+
Returns generated source code (and, where supported, a preview reference) for the generator stage to consume.
|
|
83
|
+
|
|
84
|
+
---
|
|
85
|
+
|
|
86
|
+
## Pipeline Integration
|
|
87
|
+
|
|
88
|
+
Builder.io is wired as a **generator-category** connection: it feeds the **generator** stage only.
|
|
89
|
+
|
|
90
|
+
| Stage | What Builder.io provides |
|
|
91
|
+
|-------|--------------------------|
|
|
92
|
+
| generator | Figma → code / describe → component generation via `agents/design-component-generator.md` |
|
|
93
|
+
| generator | Pull / ingest an existing Builder pattern as adaptation source |
|
|
94
|
+
|
|
95
|
+
### Generator wiring
|
|
96
|
+
|
|
97
|
+
The generator stage dispatches to Builder.io through the `<!-- impl: builder-io -->` section of `agents/design-component-generator.md`. That agent:
|
|
98
|
+
|
|
99
|
+
1. Reads `builder-io: available` from STATE.md `<connections>` before dispatching.
|
|
100
|
+
2. Resolves the generate inputs (Figma source or description; `framework`; `styling`) from project context.
|
|
101
|
+
3. Calls the Builder generate/pull capability and captures the returned source code.
|
|
102
|
+
4. Writes the generated component into the project as a **proposal**, not a direct commit.
|
|
103
|
+
|
|
104
|
+
### Pull-only scope (write-back deferred)
|
|
105
|
+
|
|
106
|
+
This phase wires **ingest + generate only**:
|
|
107
|
+
|
|
108
|
+
- **Ingest**: pull existing Builder patterns/blocks as adaptation sources.
|
|
109
|
+
- **Generate**: Figma → code and describe → component into the pipeline.
|
|
110
|
+
- **NO write-back**: the pipeline does **not** publish components, content models, or edits back to Builder.io spaces this phase. Write-back / roundtrip is explicitly **deferred** to a later phase.
|
|
111
|
+
|
|
112
|
+
### Proposal → confirm
|
|
113
|
+
|
|
114
|
+
Generated code is **never** auto-inserted. The generator surfaces the result as a proposal; the design-executor confirms adoption with the user before the code is written into the working tree. This mirrors the decision-gate pattern used by sibling generators (see [21st.dev](21st-dev.md)) — the agent surfaces candidates, the user/executor decides.
|
|
115
|
+
|
|
116
|
+
---
|
|
117
|
+
|
|
118
|
+
## Fallback Behavior
|
|
119
|
+
|
|
120
|
+
When `builder-io: not_configured`:
|
|
121
|
+
- Print: `Builder.io not configured — Visual Copilot generator skipped.`
|
|
122
|
+
- Falls back to another generator-category connection if one is `available` (e.g. 21st.dev, Magic Patterns).
|
|
123
|
+
- If no generator is configured, the generator stage **degrades to code-only**: the design-executor proceeds with a manual component build.
|
|
124
|
+
- Builder.io **never blocks** the pipeline — a missing or errored connection only removes one generator option; the generator stage always has a code-only path.
|
|
125
|
+
|
|
126
|
+
When `builder-io: error`:
|
|
127
|
+
- Surface the probe/auth error to the user, mark the connection degraded, and fall back as above. Do not retry in a loop and do not block.
|
|
128
|
+
|
|
129
|
+
---
|
|
130
|
+
|
|
131
|
+
Do NOT edit the connection index here — the 37.1 wiring plan adds the Active-Connections row + matrix entry.
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
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
4
|
|
|
5
|
-
**Getting started:** run `/gdd:connections` for the interactive onboarding wizard — it probes all
|
|
5
|
+
**Getting started:** run `/gdd:connections` for the interactive onboarding wizard — it probes all 27 connections, recommends setup based on your project type, and walks you through installing each one (auto-run for reversible MCP adds, copy-command for everything else). You can also run `/gdd:connections list` for a read-only status check or `/gdd:connections <name>` to jump to a single connection's setup.
|
|
6
6
|
|
|
7
7
|
---
|
|
8
8
|
|
|
@@ -37,6 +37,12 @@ This directory contains connection specifications for external tools and MCPs th
|
|
|
37
37
|
| Notion | Active | [`connections/notion.md`](connections/notion.md) | **Export** write-path (not a pipeline stage) — `mcp__notion__*` (ToolSearch probe); `/gdd:export --format notion`; redact + `GDD_DISABLE_NOTION` kill-switch; degrade-to-HTML |
|
|
38
38
|
| Lottie | Active | [`connections/lottie.md`](connections/lottie.md) | **Optional** motion verify (Lottie JSON); static floor = `validate-motion.cjs` (MO-* warnings + perf budget); player opt-in; WARN-never-block, degrade-to-static/code-only (36.2, D-02/D-03) |
|
|
39
39
|
| Rive | Active | [`connections/rive.md`](connections/rive.md) | **Optional** motion verify (Rive `.riv`); size + RIVE-header floor; deep state-machine graph via opt-in Rive runtime, else manual-review advisory; WARN-never-block (36.2, D-02/D-04) |
|
|
40
|
+
| Framer | Active | [`connections/framer.md`](connections/framer.md) | **AI-native** (Wave 2, canvas) — read frames + write proposals; MCP probe; degrade-to-code-only (37.1) |
|
|
41
|
+
| Penpot | Active | [`connections/penpot.md`](connections/penpot.md) | **AI-native** (Wave 2, canvas) — open-source Figma alt; self-hosted-vs-cloud probe; degrade-to-code-only (37.1) |
|
|
42
|
+
| Webflow | Active | [`connections/webflow.md`](connections/webflow.md) | **AI-native** (Wave 2, generator) — read site structure as an adaptation source (not CMS authoring); degrade-to-code-only (37.1) |
|
|
43
|
+
| v0.dev | Active | [`connections/v0-dev.md`](connections/v0-dev.md) | **AI-native** (Wave 2, generator) — Vercel v0; MCP-first → REST + `V0_API_KEY`; component-generator `v0` impl (37.1) |
|
|
44
|
+
| Plasmic | Active | [`connections/plasmic.md`](connections/plasmic.md) | **AI-native** (Wave 2, dual) — canvas read + code emission; component-generator `plasmic` impl (37.1) |
|
|
45
|
+
| Builder.io | Active | [`connections/builder-io.md`](connections/builder-io.md) | **AI-native** (Wave 2, generator) — Visual Copilot, pull-only this phase; component-generator `builder-io` impl (37.1) |
|
|
40
46
|
|
|
41
47
|
---
|
|
42
48
|
|
|
@@ -66,6 +72,12 @@ Each cell describes what the connection contributes at that pipeline stage, or `
|
|
|
66
72
|
| Print-Renderer | — | — | — | print render-test target (pdf-executor) | rendered PDF/page evidence when the print-render is available, else degrade to the static print-CSS validator / code-only (D-03) | — | — | — | — |
|
|
67
73
|
| Lottie | — | — | — | — | Lottie-export motion check: `validate-motion.cjs` (MO-FR/DUR/IMG/BUDGET) when present, WARN-never-block (D-02) | — | — | — | — |
|
|
68
74
|
| Rive | — | — | — | — | Rive-export motion check: size + RIVE-header floor; state-machine graph via opt-in runtime, else manual-review advisory; WARN (D-02/D-04) | — | — | — | — |
|
|
75
|
+
| Framer | — | — | — | canvas source (read frames, write proposals) | — | ✓ | — | — | — |
|
|
76
|
+
| Penpot | — | — | — | canvas source (read boards/components) | — | ✓ | — | — | — |
|
|
77
|
+
| Webflow | — | — | — | structure / adaptation source | — | — | ✓ | — | — |
|
|
78
|
+
| v0.dev | — | — | — | component-generator (v0 impl) | — | — | ✓ | — | — |
|
|
79
|
+
| Plasmic | — | — | — | component-generator (plasmic impl) + canvas read | — | ✓ | ✓ | — | — |
|
|
80
|
+
| Builder.io | — | — | — | component-generator (builder-io impl) | — | — | ✓ | — | — |
|
|
69
81
|
| Lazyweb | — | reference search via `lazyweb_search` (**Tier 1 — free, tried first**; D-01); complements refero/pinterest | — | — | — | — | — | — | — |
|
|
70
82
|
| Mobbin | — | reference search via mobbin tools (**Tier 2 — paid, mobile/flow-level**; D-01); complements refero/lazyweb | — | — | — | — | — | — | — |
|
|
71
83
|
| Slack | — | — | — | — | — | — | — | verify-fail/audit-pass/ship → Slack webhook (routed, redacted, degrade-to-noop; D-04/D-05) | — |
|
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
# Framer — Connection Specification
|
|
2
|
+
|
|
3
|
+
This file is the connection specification for **Framer** within the get-design-done pipeline. Framer is an AI-native canvas design tool (Wave 2). Like Figma, it is a **canvas-category** connection: GDD reads the current Framer selection/frames as a design source and writes annotated design proposals back. It is **not** a code generator — the pipeline never asks Framer to emit production components. See `connections/connections.md` for the full connection index and capability matrix.
|
|
4
|
+
|
|
5
|
+
This is an **opt-in, user-connected** tool. There is no bundled dependency — GDD ships no Framer client. The connection only activates when the user has independently registered a Framer MCP (or plugin bridge) in their session.
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## Setup
|
|
10
|
+
|
|
11
|
+
### Prerequisites
|
|
12
|
+
- A [Framer](https://www.framer.com) account with edit access to the target project.
|
|
13
|
+
- A Framer API token (or plugin authorization) — generated from the Framer account/workspace settings and scoped to the projects GDD may read or propose against.
|
|
14
|
+
- A Framer MCP server **or** the Framer plugin bridge registered in the Claude Code session. Framer's surface evolves quickly; resolve the exact transport at runtime via the probe below rather than hardcoding it.
|
|
15
|
+
|
|
16
|
+
### How to connect
|
|
17
|
+
|
|
18
|
+
**Option A — Framer MCP (preferred).** Register the Framer MCP over HTTP transport, supplying the API token via environment:
|
|
19
|
+
|
|
20
|
+
```
|
|
21
|
+
claude mcp add --transport http framer https://<framer-mcp-endpoint>
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
Set the token in the session environment (name as documented by the Framer MCP — commonly `FRAMER_API_TOKEN`). Restart the Claude Code session after registering. Auth prompts on first tool call.
|
|
25
|
+
|
|
26
|
+
**Option B — Framer plugin bridge.** If Framer exposes a desktop/plugin bridge instead of a hosted MCP, install that plugin inside Framer and register its local endpoint as an MCP server named `framer`. This path mirrors Figma's desktop Dev Mode bridge: it serves the current open project to the session over local HTTP.
|
|
27
|
+
|
|
28
|
+
The pipeline auto-detects any server whose name matches `/framer/i` (e.g., `framer`, `Framer`, UUID-prefixed instances) and records the resolved tool prefix in `STATE.md`. Exact tool names are **not** assumed — they are discovered at runtime.
|
|
29
|
+
|
|
30
|
+
### Verification
|
|
31
|
+
|
|
32
|
+
After session restart, run:
|
|
33
|
+
|
|
34
|
+
```
|
|
35
|
+
ToolSearch({ query: "framer", max_results: 10 })
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
Expect non-empty results under a `/framer/i` prefix, including at least one read tool (selection/frame reader) and, for write-back, a proposal/annotation tool. If empty, re-register the MCP and restart the session.
|
|
39
|
+
|
|
40
|
+
---
|
|
41
|
+
|
|
42
|
+
## Probe Pattern
|
|
43
|
+
|
|
44
|
+
**MCP-first. Call `ToolSearch` before any Framer tool — always.** Framer tools are commonly in the deferred tool set and are not loaded into context at session start. Calling a deferred tool directly fails. `ToolSearch` loads the tools and confirms their presence in one call.
|
|
45
|
+
|
|
46
|
+
```
|
|
47
|
+
ToolSearch({ query: "framer", max_results: 10 })
|
|
48
|
+
→ Empty → framer: not_configured (no Framer MCP registered; skip all Framer steps)
|
|
49
|
+
→ Non-empty → resolve prefix matching /framer/i, then live-probe a read tool:
|
|
50
|
+
→ read tool succeeds → framer: available (prefix=mcp__<prefix>__)
|
|
51
|
+
→ read tool errors → framer: unavailable (auth expired / no project open / rate-limited)
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
Three-value schema written to `.design/STATE.md` under `<connections>`:
|
|
55
|
+
|
|
56
|
+
| Value | Meaning |
|
|
57
|
+
|-------|---------|
|
|
58
|
+
| `available` | A `/framer/i` read tool resolved and the live call succeeded. |
|
|
59
|
+
| `unavailable` | A Framer tool is in the session but errored (auth expired, no project open, rate-limited). |
|
|
60
|
+
| `not_configured` | No server matching `/framer/i` — MCP not registered. |
|
|
61
|
+
|
|
62
|
+
Example STATE block:
|
|
63
|
+
|
|
64
|
+
```xml
|
|
65
|
+
<connections>
|
|
66
|
+
framer: available (prefix=mcp__framer__)
|
|
67
|
+
figma: not_configured
|
|
68
|
+
</connections>
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
Re-probe at every stage entry, even if Framer was `available` previously — the resolved prefix and availability can change between sessions.
|
|
72
|
+
|
|
73
|
+
---
|
|
74
|
+
|
|
75
|
+
## Framer Tools
|
|
76
|
+
|
|
77
|
+
Tool names take the form `mcp__<prefix>__<tool>` where `<prefix>` is the resolved server name from the probe (commonly `framer`). **Verify exact tool names via `ToolSearch` at runtime** — the table below describes capabilities generically, not literal identifiers.
|
|
78
|
+
|
|
79
|
+
**Reads (design source):**
|
|
80
|
+
|
|
81
|
+
| Capability | Returns | Pipeline use |
|
|
82
|
+
|------------|---------|--------------|
|
|
83
|
+
| Selection reader | The currently selected frame(s)/layer(s): node IDs, names, types, geometry | **In scope** — design source for the current selection; also the availability probe |
|
|
84
|
+
| Frame / canvas reader | Frame tree for the open project or page: hierarchy, layout, component instances | **In scope** — reads frames as a design source for the design stage |
|
|
85
|
+
| Token / style reader | Color, spacing, typography, and shared-style definitions used in the project | **In scope (when present)** — supplements token extraction, mirroring Figma `get_variable_defs` |
|
|
86
|
+
| Screenshot / preview | Rendered image of the selected frame | **In scope (opt-in)** — visual reference capture; not invoked by default |
|
|
87
|
+
|
|
88
|
+
**Writes (design proposals):**
|
|
89
|
+
|
|
90
|
+
| Capability | Returns | Pipeline use |
|
|
91
|
+
|------------|---------|--------------|
|
|
92
|
+
| Annotation / proposal writer | Write operation result | **In scope** — writes annotated design proposals (notes, decision callouts) back onto frames |
|
|
93
|
+
|
|
94
|
+
GDD only ever writes **annotated proposals** — design-decision notes and callouts attached to frames. It does not author production components or replace user content. Every write goes through a **proposal → confirm** UX: the agent builds a numbered operation list and the user confirms before any write tool is called. There is no auto-approve path.
|
|
95
|
+
|
|
96
|
+
---
|
|
97
|
+
|
|
98
|
+
## Pipeline Integration
|
|
99
|
+
|
|
100
|
+
Framer is a **canvas-category** connection. It contributes at the **design** stage exactly as Figma and paper.design do (see `connections/figma.md`): read frames as a design source, write annotated proposals back. It does not participate in `scan`, `plan`, or `verify` as a code authority.
|
|
101
|
+
|
|
102
|
+
| Stage | What Framer provides |
|
|
103
|
+
|-------|----------------------|
|
|
104
|
+
| design (read) | Read the current selection/frames as a **design source** — geometry, hierarchy, and (when present) token/style definitions feed the design proposal. |
|
|
105
|
+
| design (write) | After the design proposal is built, offer to write **annotated proposals** back onto Framer frames via the proposal → confirm UX — only when `framer: available`. |
|
|
106
|
+
| scan / plan / verify | Not used. Framer is a design-stage source, not a code authority. |
|
|
107
|
+
|
|
108
|
+
The read path requires an open Framer project/selection. If nothing is selected, the frame reader is used for the open page; if no project is open, the live probe falls to `unavailable` and the stage continues on its non-Framer path. The write offer appears only when `framer: available` — never on `unavailable` or `not_configured`.
|
|
109
|
+
|
|
110
|
+
---
|
|
111
|
+
|
|
112
|
+
## Fallback Behavior
|
|
113
|
+
|
|
114
|
+
When `framer` is `not_configured` or `unavailable`, the pipeline **degrades to code-only** and **never blocks**:
|
|
115
|
+
|
|
116
|
+
- **design (read):** skip the Framer design-source step. Proceed with code-derived context and any other available canvas connection. No error is raised.
|
|
117
|
+
- **design (write):** skip the proposal write-back offer entirely — no prompt, no output — on both `not_configured` and `unavailable`.
|
|
118
|
+
- A standalone request to write proposals to Framer against `framer: not_configured` STOPs with a short install note (point the user at the Setup section above).
|
|
119
|
+
|
|
120
|
+
Framer is an **enhancement, not a requirement**. Stages do not append a `<blocker>` for a missing Framer connection. Only if a `must_have` explicitly requires Framer data (reads or writes) should a blocker be appended.
|
|
121
|
+
|
|
122
|
+
**Consumer contract.** Agents that call Framer tools MUST read the resolved prefix from `STATE.md` and construct tool names dynamically (`{prefix}<read_tool>`, `{prefix}<write_tool>`) rather than hardcoding `mcp__framer__`, and MUST treat `unavailable` and `not_configured` identically for the purpose of skipping Framer steps.
|
|
123
|
+
|
|
124
|
+
---
|
|
125
|
+
|
|
126
|
+
> ⚠︎ **Do NOT edit the connection index here** — the Active-Connections row and the capability-matrix entry in `connections/connections.md` are added by the **37.1 wiring plan**, not by this spec. This file documents the Framer connection in isolation; wiring it into the index is a separate, tracked step.
|
|
@@ -0,0 +1,148 @@
|
|
|
1
|
+
# Penpot — Connection Specification
|
|
2
|
+
|
|
3
|
+
This file is the connection specification for **Penpot** within the get-design-done pipeline. Penpot is an open-source, self-hostable design and prototyping platform — an AI-native (Wave 2) alternative to Figma. It is a **canvas-category** tool: GDD reads boards and components, exports tokens, and writes design proposals back. See `connections/connections.md` for the full connection index and capability matrix, and `connections/figma.md` for the sibling canvas-category connection.
|
|
4
|
+
|
|
5
|
+
GDD connects to **your** Penpot instance. It does **not** install, bundle, or host Penpot — there is no bundled dependency. You bring a running Penpot (self-hosted or cloud) plus an access token.
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## Setup
|
|
10
|
+
|
|
11
|
+
### Prerequisites
|
|
12
|
+
|
|
13
|
+
- **A Penpot instance.** One of two deployment shapes:
|
|
14
|
+
- **Cloud** — the hosted service at [penpot.app](https://penpot.app). Base URL is `https://design.penpot.app`. No infrastructure to run.
|
|
15
|
+
- **Self-hosted** — a Penpot deployment you operate (Docker/Kubernetes), reachable at your own origin, e.g. `https://penpot.internal.example.com`. See [help.penpot.app](https://help.penpot.app) for deployment guidance.
|
|
16
|
+
- **An access token.** Generated from your Penpot profile under **Settings → Access tokens**. Tokens are scoped to your account on whichever instance issued them — a cloud token does not authenticate against a self-hosted instance, and vice versa.
|
|
17
|
+
- **One access path** — either:
|
|
18
|
+
- the **Penpot REST API / plugin** reached over `PENPOT_BASE_URL` + token (the env path), or
|
|
19
|
+
- a **Penpot MCP server** registered in the session (the MCP path).
|
|
20
|
+
|
|
21
|
+
### Configuration
|
|
22
|
+
|
|
23
|
+
The pipeline supports two interchangeable access paths. You only need one; if both are present, the probe resolves precedence (see **Probe Pattern**).
|
|
24
|
+
|
|
25
|
+
**Env path (REST API / plugin).** Set two environment variables:
|
|
26
|
+
|
|
27
|
+
```bash
|
|
28
|
+
export PENPOT_BASE_URL="https://design.penpot.app" # cloud
|
|
29
|
+
# or, self-hosted:
|
|
30
|
+
export PENPOT_BASE_URL="https://penpot.internal.example.com"
|
|
31
|
+
export PENPOT_ACCESS_TOKEN="<your-penpot-access-token>"
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
`PENPOT_BASE_URL` is the **distinguishing signal** between cloud and self-hosted. The pipeline records the host so downstream stages know which deployment they are talking to.
|
|
35
|
+
|
|
36
|
+
**MCP path.** Register a Penpot MCP server in Claude Code settings (`mcpServers.penpot`), passing `PENPOT_BASE_URL` and `PENPOT_ACCESS_TOKEN` through the server's `env`. Restart the session after install.
|
|
37
|
+
|
|
38
|
+
### Verification
|
|
39
|
+
|
|
40
|
+
```
|
|
41
|
+
ToolSearch({ query: "penpot", max_results: 5 })
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
A non-empty result confirms the MCP path. For the env path, a `200` from `GET $PENPOT_BASE_URL/api/rpc/command/get-profile` (header `Authorization: Token $PENPOT_ACCESS_TOKEN`) confirms the credentials resolve. If the env path is unset and `ToolSearch` is empty, Penpot is `not_configured`.
|
|
45
|
+
|
|
46
|
+
---
|
|
47
|
+
|
|
48
|
+
## Probe Pattern
|
|
49
|
+
|
|
50
|
+
Penpot exposes **two independent access paths**, and the probe checks **both** before resolving. This is the load-bearing distinction for this connection (SC#2): the env path additionally carries the **self-hosted-vs-cloud** signal, which downstream stages need.
|
|
51
|
+
|
|
52
|
+
```
|
|
53
|
+
Step 1 — Env probe (self-hosted vs cloud):
|
|
54
|
+
Read PENPOT_BASE_URL and PENPOT_ACCESS_TOKEN from the environment.
|
|
55
|
+
Both set → env path present.
|
|
56
|
+
Classify deployment from the host of PENPOT_BASE_URL:
|
|
57
|
+
host == design.penpot.app → deployment=cloud
|
|
58
|
+
any other host → deployment=self-hosted
|
|
59
|
+
Either unset → env path absent.
|
|
60
|
+
|
|
61
|
+
Step 2 — MCP probe:
|
|
62
|
+
ToolSearch({ query: "penpot", max_results: 5 })
|
|
63
|
+
Non-empty → MCP path present (record resolved prefix mcp__<name>__).
|
|
64
|
+
Empty → MCP path absent.
|
|
65
|
+
|
|
66
|
+
Step 3 — Resolve which is present:
|
|
67
|
+
env + MCP → available (path=mcp, deployment=<cloud|self-hosted>) # prefer MCP for tool calls; keep deployment from env
|
|
68
|
+
MCP only → available (path=mcp, deployment=unknown) # deployment not derivable without PENPOT_BASE_URL
|
|
69
|
+
env only → available (path=api, deployment=<cloud|self-hosted>)
|
|
70
|
+
neither → not_configured
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
Write the result to `.design/STATE.md` `<connections>` immediately after probing, using the **three-value schema** below:
|
|
74
|
+
|
|
75
|
+
```xml
|
|
76
|
+
<connections>
|
|
77
|
+
penpot: available (path=mcp, deployment=self-hosted)
|
|
78
|
+
figma: not_configured
|
|
79
|
+
</connections>
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
Other valid values: `penpot: available (path=api, deployment=cloud)`, `penpot: available (path=mcp, deployment=unknown)`, `penpot: not_configured`.
|
|
83
|
+
|
|
84
|
+
| Field | Values | Meaning |
|
|
85
|
+
|-------|--------|---------|
|
|
86
|
+
| status | `available` / `not_configured` | At least one access path resolved, or none did |
|
|
87
|
+
| `path` | `mcp` / `api` | Which access path the stage should use for tool/REST calls |
|
|
88
|
+
| `deployment` | `cloud` / `self-hosted` / `unknown` | Derived from `PENPOT_BASE_URL` host; `unknown` when only the MCP path is present and no base URL is exported |
|
|
89
|
+
|
|
90
|
+
Consumers MUST read `path` to decide whether to call MCP tools (`mcp__<prefix>__*`) or REST endpoints, and SHOULD surface `deployment` when an operation differs by host (e.g. rate limits or shared-library scope on cloud vs self-hosted).
|
|
91
|
+
|
|
92
|
+
---
|
|
93
|
+
|
|
94
|
+
## Penpot Tools
|
|
95
|
+
|
|
96
|
+
Tools are described generically — the concrete tool names depend on the resolved `path` (MCP tool names `mcp__<prefix>__<tool>`, or REST commands under `$PENPOT_BASE_URL/api/...`). All capabilities below exist on both cloud and self-hosted instances.
|
|
97
|
+
|
|
98
|
+
| Capability | Stage | Purpose |
|
|
99
|
+
|------------|-------|---------|
|
|
100
|
+
| **List/read boards** | design | Enumerate projects, files, and boards (frames); read the node tree, names, and layout of a selected board |
|
|
101
|
+
| **Read components** | design | Resolve components and component instances from the file's component library; read variants and overrides |
|
|
102
|
+
| **Export tokens** | scan + discover | Read design tokens (color, spacing, typography) and library assets; Penpot's token format is W3C-style design tokens, so values export cleanly into DESIGN.md |
|
|
103
|
+
| **Read prototype/flows** | design (secondary) | Inspect interactions and flows between boards for reference |
|
|
104
|
+
| **Write proposals** | design (write) | Create or annotate boards/frames with proposed design changes; attach comments carrying D-XX decisions onto the relevant boards |
|
|
105
|
+
|
|
106
|
+
Reads are the default. Writes are gated behind the same **proposal → confirm** UX used by the Figma connection (see `connections/figma.md`): the agent builds a numbered operation list and presents it before any write executes. No automatic insertion into the user's Penpot file.
|
|
107
|
+
|
|
108
|
+
---
|
|
109
|
+
|
|
110
|
+
## Pipeline Integration
|
|
111
|
+
|
|
112
|
+
Penpot is a **canvas-category** connection. It feeds the **design** stage like Figma and paper.design — the same slot in the pipeline, a different backing tool.
|
|
113
|
+
|
|
114
|
+
| Stage | What Penpot provides |
|
|
115
|
+
|-------|----------------------|
|
|
116
|
+
| scan | **Token augmentation**: export Penpot design tokens to supplement grep-based CSS token extraction. DESIGN.md notes `source: penpot-tokens` |
|
|
117
|
+
| discover | **Decisions pre-population**: pre-fill D-XX color/spacing/typography decisions from exported tokens before the interview |
|
|
118
|
+
| design | **Board/component reads** for design context; **write proposals** (boards, frames, comments) via the proposal→confirm path when `path` resolves |
|
|
119
|
+
| plan | Not used |
|
|
120
|
+
| verify | Not used |
|
|
121
|
+
|
|
122
|
+
When multiple canvas-category connections are `available` (e.g. both `figma` and `penpot`), the design stage uses whichever the active design source points to; it does not merge them. The user's source-of-truth selection decides.
|
|
123
|
+
|
|
124
|
+
---
|
|
125
|
+
|
|
126
|
+
## Fallback Behavior
|
|
127
|
+
|
|
128
|
+
When `penpot` is `not_configured`, stages **degrade to code-only** — Penpot is an enhancement, never a requirement, and a missing connection **never blocks** the pipeline.
|
|
129
|
+
|
|
130
|
+
**scan stage:**
|
|
131
|
+
|
|
132
|
+
- Skip Penpot token export.
|
|
133
|
+
- Rely on grep-based CSS custom property extraction alone.
|
|
134
|
+
- DESIGN.md token section uses `source: CSS custom properties` (not `source: penpot-tokens`).
|
|
135
|
+
|
|
136
|
+
**discover stage:**
|
|
137
|
+
|
|
138
|
+
- Skip token pre-population.
|
|
139
|
+
- Populate D-XX decisions via interview only (manual elicitation from the user).
|
|
140
|
+
|
|
141
|
+
**design stage:**
|
|
142
|
+
|
|
143
|
+
- `penpot: not_configured` → skip the write-proposal offer entirely (no prompt, no output).
|
|
144
|
+
- `penpot: available` → offer the opt-in proposal prompt after the design step completes.
|
|
145
|
+
|
|
146
|
+
Stages do not append a `<blocker>` for a missing Penpot connection. Only if a `must_have` explicitly requires Penpot data (reads or writes) does a stage append a blocker. Always re-probe at stage entry — both the access `path` and the resolved MCP prefix can change between sessions.
|
|
147
|
+
|
|
148
|
+
Do NOT edit the connection index here — the 37.1 wiring plan adds the Active-Connections row + matrix entry.
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
# Plasmic — Connection Specification
|
|
2
|
+
|
|
3
|
+
This file is the connection specification for Plasmic within the get-design-done pipeline. Plasmic is a **dual-category** tool: it is both a **visual canvas** (a hosted design/builder surface whose pages and components can be read as a design source, like Figma) **and** a **code generator** (it emits real component code via its codegen loader/API). Because of this, Plasmic earns entries in **both** the `canvas` column **and** the `generator` column of the capability matrix. It integrates via the Plasmic MCP (preferred) or via a project token + loader/codegen API. See `connections/connections.md` for the full connection index and capability matrix.
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## Setup
|
|
8
|
+
|
|
9
|
+
### Prerequisites
|
|
10
|
+
|
|
11
|
+
**Path A — Plasmic MCP (preferred):**
|
|
12
|
+
- The Plasmic MCP enabled in your Claude environment
|
|
13
|
+
- A Plasmic project (the design lives at [plasmic.app](https://plasmic.app))
|
|
14
|
+
- No additional manual setup when the MCP is present
|
|
15
|
+
|
|
16
|
+
**Path B — Token + loader/codegen API fallback:**
|
|
17
|
+
- A Plasmic account and a project at [plasmic.app](https://plasmic.app)
|
|
18
|
+
- A project ID + API token (project tokens, found in the project's Code/Configure panel)
|
|
19
|
+
- `PLASMIC_PROJECT_ID` and `PLASMIC_API_TOKEN` environment variables set
|
|
20
|
+
- Loader/codegen access per the docs at [docs.plasmic.app](https://docs.plasmic.app)
|
|
21
|
+
|
|
22
|
+
### Verification
|
|
23
|
+
|
|
24
|
+
```
|
|
25
|
+
ToolSearch({ query: "plasmic", max_results: 5 })
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
Non-empty results (canvas-read + codegen tools) → Plasmic MCP available (Path A).
|
|
29
|
+
Empty → check `PLASMIC_PROJECT_ID` / `PLASMIC_API_TOKEN` and use Path B, then restart the Claude Code session.
|
|
30
|
+
|
|
31
|
+
---
|
|
32
|
+
|
|
33
|
+
## Probe Pattern
|
|
34
|
+
|
|
35
|
+
Plasmic uses an MCP-first, two-path probe. Check the MCP first; fall back to the token env path.
|
|
36
|
+
|
|
37
|
+
```
|
|
38
|
+
ToolSearch({ query: "plasmic", max_results: 5 })
|
|
39
|
+
→ Non-empty → plasmic: available (mcp)
|
|
40
|
+
→ Empty → check PLASMIC_PROJECT_ID + PLASMIC_API_TOKEN env vars
|
|
41
|
+
both set → plasmic: available (token)
|
|
42
|
+
either unset → plasmic: not_configured
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
Write the three-value result to `.design/STATE.md` `<connections>`: `plasmic: <status>`
|
|
46
|
+
where `<status>` ∈ { `available (mcp)`, `available (token)`, `not_configured` }.
|
|
47
|
+
|
|
48
|
+
Because Plasmic is dual-category, a single `available` status enables **both** roles at once — the canvas read **and** the generator emit. The pipeline decides which role to invoke per stage (see Pipeline Integration); the probe does not split the status.
|
|
49
|
+
|
|
50
|
+
---
|
|
51
|
+
|
|
52
|
+
## Plasmic Tools
|
|
53
|
+
|
|
54
|
+
Plasmic exposes tools spanning **both** capability columns. Describe them generically — exact tool names resolve at probe time via `ToolSearch`.
|
|
55
|
+
|
|
56
|
+
| Tool (generic) | Column | Stage | Purpose |
|
|
57
|
+
|----------------|--------|-------|---------|
|
|
58
|
+
| `plasmic_list_projects` / `plasmic_get_project` | canvas | canvas | Enumerate Plasmic projects and read project/page/component metadata |
|
|
59
|
+
| `plasmic_read_component` / `plasmic_get_design` | canvas | canvas | Read a page or component from the visual canvas as a design source (structure, props, tokens) |
|
|
60
|
+
| `plasmic_get_tokens` | canvas | canvas | Extract design tokens (color, spacing, typography) defined in the Plasmic project |
|
|
61
|
+
| `plasmic_generate_code` / `plasmic_emit_component` | generator | generator | Emit real component code for a canvas component (codegen / loader) |
|
|
62
|
+
| `plasmic_sync` | generator | generator | Sync/regenerate emitted code after canvas changes (roundtrip) |
|
|
63
|
+
|
|
64
|
+
Token-path equivalents: the loader/codegen API at [docs.plasmic.app](https://docs.plasmic.app) provides the same two roles — read the project (canvas) and pull generated component code (generator) — when the MCP is absent.
|
|
65
|
+
|
|
66
|
+
---
|
|
67
|
+
|
|
68
|
+
## Pipeline Integration
|
|
69
|
+
|
|
70
|
+
Plasmic plugs into **two distinct stages**, one per capability column. This is the explicit dual-column behavior (SC#5): the same connection is a design **source** at the canvas stage and a code **emitter** at the generator stage.
|
|
71
|
+
|
|
72
|
+
| Stage | Column | What Plasmic provides |
|
|
73
|
+
|-------|--------|-----------------------|
|
|
74
|
+
| canvas | canvas | **Read the Plasmic design as a source** — pages, components, and tokens, the same way Figma is read. Feeds DESIGN.md and `.design/STATE.md` `<design_system>` token blocks. |
|
|
75
|
+
| generator | generator | **Emit component code** — via `agents/design-component-generator.md`'s `<!-- impl: plasmic -->` section. Returns component source the generator stage writes into the project. |
|
|
76
|
+
|
|
77
|
+
### Canvas stage — design as source
|
|
78
|
+
|
|
79
|
+
When `plasmic: available`, the canvas stage may treat a Plasmic project as a first-class design source (peer to Figma):
|
|
80
|
+
|
|
81
|
+
1. `plasmic_list_projects` → resolve the target project (or read `PLASMIC_PROJECT_ID`).
|
|
82
|
+
2. `plasmic_read_component` / `plasmic_get_design` → pull the page/component structure into the design read.
|
|
83
|
+
3. `plasmic_get_tokens` → extract tokens into `.design/STATE.md` `<design_system>` for downstream generator targeting.
|
|
84
|
+
|
|
85
|
+
This is a **read** — no code is emitted at this stage. The canvas read is what later stages reason about.
|
|
86
|
+
|
|
87
|
+
### Generator stage — emit code
|
|
88
|
+
|
|
89
|
+
The generator stage delegates to `agents/design-component-generator.md`. That agent's `<!-- impl: plasmic -->` section calls the Plasmic codegen path:
|
|
90
|
+
|
|
91
|
+
1. The agent resolves the canvas component to emit (from the canvas-stage read).
|
|
92
|
+
2. It calls `plasmic_generate_code` / `plasmic_emit_component` (or the loader/codegen API on the token path).
|
|
93
|
+
3. The emitted source is surfaced as a **proposal**, not auto-inserted.
|
|
94
|
+
|
|
95
|
+
### Proposal → Confirm
|
|
96
|
+
|
|
97
|
+
Both roles are non-destructive. The canvas read is informational; the generator emit is a **proposal**. The design-executor surfaces the proposed component code to the user/executor, who confirms before any code is written into the project. No automatic insertion, no automatic overwrite of existing components.
|
|
98
|
+
|
|
99
|
+
---
|
|
100
|
+
|
|
101
|
+
## Fallback Behavior
|
|
102
|
+
|
|
103
|
+
When `plasmic: not_configured`:
|
|
104
|
+
- Print: `Plasmic not configured — canvas read and code emit skipped.`
|
|
105
|
+
- **Canvas role** degrades gracefully: the canvas stage falls back to other available design sources (e.g. Figma); Plasmic is simply not offered as a source.
|
|
106
|
+
- **Generator role** degrades to code-only: the generator stage falls back to other available generators (Magic Patterns if `magic-patterns: available`, then 21st.dev if `21st-dev: available` — see `connections/21st-dev.md`), and finally to a manual component build.
|
|
107
|
+
|
|
108
|
+
Plasmic is **additive and never blocks**: with neither role configured, the pipeline proceeds on its existing canvas source and existing generators exactly as before.
|
|
109
|
+
|
|
110
|
+
---
|
|
111
|
+
|
|
112
|
+
Do NOT edit the connection index here — the 37.1 wiring plan adds the Active-Connections row + matrix entries (canvas + generator).
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
# v0.dev — Connection Specification
|
|
2
|
+
|
|
3
|
+
This file is the connection specification for v0.dev within the get-design-done pipeline. v0.dev is Vercel's generative-UI tool (AI-native, Wave 2): prompt in, React/Tailwind/shadcn component code out. It is a **generator-category** connection — same family as [21st.dev](21st-dev.md) and [Magic Patterns](magic-patterns.md) — and plugs into the shared component-generator agent as a new implementation (Phase 14 pattern). See `connections/connections.md` for the full connection index and capability matrix.
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## Setup
|
|
8
|
+
|
|
9
|
+
### Prerequisites
|
|
10
|
+
|
|
11
|
+
**Path A — MCP (preferred):**
|
|
12
|
+
- A v0.dev MCP server reachable from your Claude environment (probe surfaces the tools).
|
|
13
|
+
- No additional setup once the server is registered and the session is restarted.
|
|
14
|
+
|
|
15
|
+
**Path B — REST + API key (fallback, phase default):**
|
|
16
|
+
- A v0.dev account and API key from [v0.dev](https://v0.dev) (Vercel's **v0 Platform API**).
|
|
17
|
+
- `V0_API_KEY` environment variable set.
|
|
18
|
+
- Calls hit the v0 Platform API over HTTPS; no local server required.
|
|
19
|
+
|
|
20
|
+
Per the phase default, **probe MCP first, then fall back to REST + `V0_API_KEY`**. The Platform API is the stable contract; MCP tool names may evolve, so treat MCP as the fast path and the key as the durable one.
|
|
21
|
+
|
|
22
|
+
### Verification
|
|
23
|
+
|
|
24
|
+
```
|
|
25
|
+
ToolSearch({ query: "v0", max_results: 5 })
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
Non-empty results including a v0 generate tool → MCP available (Path A).
|
|
29
|
+
Empty → check `V0_API_KEY`; if set, Path B is active. If unset, v0.dev is not configured.
|
|
30
|
+
|
|
31
|
+
---
|
|
32
|
+
|
|
33
|
+
## Probe Pattern
|
|
34
|
+
|
|
35
|
+
v0.dev uses a two-path probe — MCP-first, then API key.
|
|
36
|
+
|
|
37
|
+
```
|
|
38
|
+
ToolSearch({ query: "v0", max_results: 5 })
|
|
39
|
+
→ Non-empty → v0: available (mcp)
|
|
40
|
+
→ Empty → check V0_API_KEY env var
|
|
41
|
+
set → v0: available (api)
|
|
42
|
+
unset → v0: not_configured
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
This resolves to a **three-value** status. Write the result to `.design/STATE.md` `<connections>`:
|
|
46
|
+
|
|
47
|
+
```
|
|
48
|
+
v0: <not_configured | available (mcp) | available (api)>
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
The generator stage reads this value to decide whether the v0 implementation path is selectable.
|
|
52
|
+
|
|
53
|
+
---
|
|
54
|
+
|
|
55
|
+
## v0.dev Tools / API
|
|
56
|
+
|
|
57
|
+
v0.dev contributes a single core capability at the generator stage: **generate a component from a prompt plus design-system context**. Exact tool/endpoint names are not pinned here — verify them at runtime via the probe (MCP) or the current Platform API docs (REST).
|
|
58
|
+
|
|
59
|
+
| Capability | Stage | Purpose |
|
|
60
|
+
|------------|-------|---------|
|
|
61
|
+
| generate component | generator | Prompt + DS context → React/Tailwind/shadcn source; returns `{ code, preview_url }` (shape verified at runtime) |
|
|
62
|
+
| iterate / refine | generator | Follow-up prompt against a prior generation to refine output before any write |
|
|
63
|
+
|
|
64
|
+
**MCP path:** call the discovered generate tool with the DS-aware prompt; read code + preview from its response.
|
|
65
|
+
**REST path:** POST the prompt to the v0 Platform API generate endpoint with `Authorization: Bearer ${V0_API_KEY}`; parse code + preview from the JSON response.
|
|
66
|
+
|
|
67
|
+
Both paths return generated source plus (typically) a hosted preview URL. Field names differ by transport — resolve them at runtime, do not hardcode against this table.
|
|
68
|
+
|
|
69
|
+
---
|
|
70
|
+
|
|
71
|
+
## Pipeline Integration
|
|
72
|
+
|
|
73
|
+
v0.dev is **generator-category**: it contributes at the **generator** stage only, as one implementation inside the shared generator agent. The agent's `<!-- impl: v0 -->` section in `agents/design-component-generator.md` holds the v0-specific prompt assembly and response handling.
|
|
74
|
+
|
|
75
|
+
| Stage | What v0.dev provides |
|
|
76
|
+
|-------|----------------------|
|
|
77
|
+
| generator | Prompt + DS context → component source via the `<!-- impl: v0 -->` path in `agents/design-component-generator.md` |
|
|
78
|
+
| generator | `preview_url` (when returned) written to `.design/STATE.md` `<generator>` block for the verify stage |
|
|
79
|
+
|
|
80
|
+
### DS-Aware Prompting
|
|
81
|
+
|
|
82
|
+
Before invoking v0.dev, the generator reads the detected design system from `.design/STATE.md` `<design_system>` (populated upstream — see [Magic Patterns](magic-patterns.md) for the shared DS-detection logic). The `<!-- impl: v0 -->` section folds that context into the prompt: target framework (React), styling (Tailwind), and component library (shadcn/ui when present), plus any token or convention notes. v0.dev is shadcn-native, so a shadcn target maps cleanly; other systems are passed as explicit prompt constraints.
|
|
83
|
+
|
|
84
|
+
### Proposal → Confirm
|
|
85
|
+
|
|
86
|
+
v0.dev output is **proposed, never auto-written**. The generator surfaces the generated code (and preview, if any) as a proposal; the executor confirms with the user before anything lands in `src/`. This matches the prior-art and proposal gates used by the sibling generator implementations — no automatic code insertion.
|
|
87
|
+
|
|
88
|
+
---
|
|
89
|
+
|
|
90
|
+
## Fallback Behavior
|
|
91
|
+
|
|
92
|
+
When `v0: not_configured`:
|
|
93
|
+
- Print: `v0.dev not configured — generator impl skipped.`
|
|
94
|
+
- Falls back to another generator implementation if available: [21st.dev](21st-dev.md) or [Magic Patterns](magic-patterns.md).
|
|
95
|
+
- If no generator is configured, the generator stage proceeds with a code-only manual build.
|
|
96
|
+
- v0.dev **never blocks** the pipeline — it degrades to a sibling generator or to manual code, and the stage continues either way.
|
|
97
|
+
|
|
98
|
+
---
|
|
99
|
+
|
|
100
|
+
Do NOT edit the connection index here — the 37.1 wiring plan adds the Active-Connections row + matrix entry.
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
# Webflow — Connection Specification
|
|
2
|
+
|
|
3
|
+
This file is the connection specification for Webflow within the get-design-done (GDD) pipeline. Webflow is an AI-native Wave 2 generator-category, code-capable canvas: GDD reads a Webflow site's structure and styles and uses them as a **design-adaptation source** — it reads the site's existing design language and emits it as a source for adaptation. GDD does **not** author Webflow CMS schemas, publish content, or write back to the site. See `connections/21st-dev.md` for the structural template this spec follows, and `connections/connections.md` for the full connection index and capability matrix.
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## Setup
|
|
8
|
+
|
|
9
|
+
### Prerequisites
|
|
10
|
+
|
|
11
|
+
You need a Webflow site to read from, plus one read path:
|
|
12
|
+
|
|
13
|
+
**Path A — Webflow MCP (preferred):**
|
|
14
|
+
- The Webflow MCP server registered in your Claude environment (exposes the Webflow Data API as tools).
|
|
15
|
+
- No additional env setup required once the connector is enabled.
|
|
16
|
+
|
|
17
|
+
**Path B — API token fallback:**
|
|
18
|
+
- A Webflow account with at least one site, at [webflow.com](https://webflow.com).
|
|
19
|
+
- A Data API token (Site settings → Apps & integrations → API access) scoped read-only.
|
|
20
|
+
- `WEBFLOW_API_TOKEN` environment variable set, used against the Data API at [developers.webflow.com](https://developers.webflow.com).
|
|
21
|
+
|
|
22
|
+
### Verification
|
|
23
|
+
|
|
24
|
+
```
|
|
25
|
+
ToolSearch({ query: "webflow", max_results: 5 })
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
Non-empty results (e.g. a site-list / pages / styles read tool) → Webflow MCP available (Path A).
|
|
29
|
+
Empty → check `WEBFLOW_API_TOKEN` and fall back to direct Data API reads (Path B), then restart the Claude Code session if you just registered the connector.
|
|
30
|
+
|
|
31
|
+
---
|
|
32
|
+
|
|
33
|
+
## Probe Pattern
|
|
34
|
+
|
|
35
|
+
Webflow uses an MCP-first probe with an API-token env fallback. Resolve to one of three values and write it to `.design/STATE.md` `<connections>`.
|
|
36
|
+
|
|
37
|
+
```
|
|
38
|
+
ToolSearch({ query: "webflow", max_results: 5 })
|
|
39
|
+
→ Non-empty → webflow: available (MCP path)
|
|
40
|
+
→ Empty → check WEBFLOW_API_TOKEN env var
|
|
41
|
+
set → webflow: available (API-token path)
|
|
42
|
+
unset → webflow: not_configured
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
A separate `unavailable` status is reserved for the case where the MCP tool is present in the session but errors on probe (auth failure, site offline, rate-limited) — treat it the same as `not_configured` for gating (skip Webflow steps), but record it distinctly.
|
|
46
|
+
|
|
47
|
+
Three-value status schema (mirrors `connections/connections.md`):
|
|
48
|
+
|
|
49
|
+
| Status | Meaning |
|
|
50
|
+
|--------|---------|
|
|
51
|
+
| `available` | Webflow read path confirmed (MCP tool responsive, or `WEBFLOW_API_TOKEN` set) |
|
|
52
|
+
| `unavailable` | MCP tool present but errored on probe (auth/site/rate-limit) |
|
|
53
|
+
| `not_configured` | No MCP tool and no API token — Webflow not wired in this session |
|
|
54
|
+
|
|
55
|
+
Write result to STATE.md `<connections>`: `webflow: <status>`
|
|
56
|
+
|
|
57
|
+
---
|
|
58
|
+
|
|
59
|
+
## Webflow Tools
|
|
60
|
+
|
|
61
|
+
Tools are described generically — exact names depend on the registered MCP server (Path A) or are equivalent Data API read calls (Path B). All are **read-only** in GDD's usage.
|
|
62
|
+
|
|
63
|
+
| Tool (generic) | Stage | Purpose |
|
|
64
|
+
|----------------|-------|---------|
|
|
65
|
+
| read site structure | design | Enumerate the site's pages and DOM/element hierarchy — the structural skeleton of the existing design |
|
|
66
|
+
| read styles | design | Read style classes, typography, color, spacing, and breakpoint definitions — the site's existing design language |
|
|
67
|
+
| read components | design | Read reusable components / symbols and their composition, for pattern adaptation |
|
|
68
|
+
|
|
69
|
+
These reads supply raw material for adaptation. GDD never calls a Webflow write/publish/CMS-mutation tool, even when the registered MCP server exposes one.
|
|
70
|
+
|
|
71
|
+
---
|
|
72
|
+
|
|
73
|
+
## Pipeline Integration
|
|
74
|
+
|
|
75
|
+
Webflow is a **generator-category** connection that contributes at the **design** stage as a structure/adaptation source.
|
|
76
|
+
|
|
77
|
+
| Stage | What Webflow provides |
|
|
78
|
+
|-------|------------------------|
|
|
79
|
+
| design | **Adaptation source**: read the existing site's structure, styles, and components; emit the design language as a source the design stage adapts from |
|
|
80
|
+
|
|
81
|
+
### Adaptation-source flow (design stage)
|
|
82
|
+
|
|
83
|
+
1. Probe resolves `webflow: available`.
|
|
84
|
+
2. Read site structure + styles (+ components) via the available path.
|
|
85
|
+
3. Emit the extracted design language as an **adaptation source** for the design stage — structure and style become reference material the generator adapts, alongside other sources (e.g. the project design system, 21st.dev prior art).
|
|
86
|
+
4. The design-executor produces GDD-native output (code / DESIGN.md) informed by that source. Nothing is written back to Webflow.
|
|
87
|
+
|
|
88
|
+
This is a **read-and-adapt** integration, not a round trip. The Webflow site is treated as inspiration and structural reference; GDD owns the emitted output.
|
|
89
|
+
|
|
90
|
+
### Explicitly out of scope
|
|
91
|
+
|
|
92
|
+
- GDD reads structure; it does **not** author or mutate Webflow **CMS schemas** (collections, fields, items). It is a design-adaptation source, not a CMS authoring tool.
|
|
93
|
+
- No publishing, no content writes, no site mutations of any kind.
|
|
94
|
+
|
|
95
|
+
---
|
|
96
|
+
|
|
97
|
+
## Fallback Behavior
|
|
98
|
+
|
|
99
|
+
When `webflow: not_configured` (or `unavailable`):
|
|
100
|
+
|
|
101
|
+
- Print: `Webflow not configured — adaptation source skipped, proceeding code-only.`
|
|
102
|
+
- The design stage **degrades to code-only**: it proceeds from the project design system and any other available sources without the Webflow design language.
|
|
103
|
+
- Webflow never blocks the pipeline. A missing Webflow connection only removes one optional adaptation source; the design stage continues normally.
|
|
104
|
+
|
|
105
|
+
---
|
|
106
|
+
|
|
107
|
+
Do NOT edit the connection index here — the 37.1 wiring plan adds the Active-Connections row + matrix entry.
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@hegemonart/get-design-done",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.37.1",
|
|
4
4
|
"description": "A design-quality pipeline for AI coding agents: brief, plan, implement, and verify UI work against your design system.",
|
|
5
5
|
"author": "Hegemon",
|
|
6
6
|
"homepage": "https://github.com/hegemonart/get-design-done",
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: gdd-connections
|
|
3
|
-
description: "Interactive onboarding wizard for the
|
|
3
|
+
description: "Interactive onboarding wizard for the 27 external integrations the pipeline supports — probes all (`figma`, `refero`, `preview`, `storybook`, `chromatic`, `graphify`, `pinterest`, `claude-design`, `paper-design`, `pencil-dev`, `21st-dev`, `magic-patterns`, `lazyweb`, `mobbin`, `slack`, `discord`, `linear`, `jira`, `notion`, `lottie`, `rive`, `framer`, `penpot`, `webflow`, `v0-dev`, `plasmic`, `builder-io`), recommends based on project type, walks the user through setup (auto-run MCP install or copy-command fallback), writes results to `STATE.md <connections>`. Use after `/gdd:new-project` or whenever the user wants to add, inspect, or skip a connection. Re-runnable anytime."
|
|
4
4
|
argument-hint: "[list | <connection-name> | --auto]"
|
|
5
5
|
user-invocable: true
|
|
6
6
|
tools: Read, Write, Bash, Glob, Grep, AskUserQuestion, ToolSearch
|
|
@@ -8,11 +8,11 @@ tools: Read, Write, Bash, Glob, Grep, AskUserQuestion, ToolSearch
|
|
|
8
8
|
|
|
9
9
|
# /gdd:connections
|
|
10
10
|
|
|
11
|
-
Interactive onboarding for the
|
|
11
|
+
Interactive onboarding for the 27 external integrations the pipeline supports. Replaces "probe silently at scan entry and hope the user noticed" with an explicit "here is what can plug in, here is how."
|
|
12
12
|
|
|
13
13
|
Canonical per-connection specs live in `../../connections/<name>.md` (one file per integration). The capability matrix + probe-pattern spec live in `../../connections/connections.md`. This skill is the **user-facing front end** for those specs.
|
|
14
14
|
|
|
15
|
-
For the
|
|
15
|
+
For the 27 probe scripts (MCP + HTTP + CLI + file probes), bucket categorization, per-connection setup screen, auto-run eligibility matrix, value-prop one-liners, and STATE.md / config.json write contracts, see `./connections-onboarding.md`. For the cross-skill probe pattern + connection-handshake summary, see `../../reference/shared-preamble.md#connection-handshake-summary`. For the cross-skill output discipline, see `../../reference/shared-preamble.md#output-contract-reminders`.
|
|
16
16
|
|
|
17
17
|
---
|
|
18
18
|
|
|
@@ -38,7 +38,7 @@ For the 21 probe scripts (MCP + HTTP + CLI + file probes), bucket categorization
|
|
|
38
38
|
|
|
39
39
|
## Workflow
|
|
40
40
|
|
|
41
|
-
1. **Probe all
|
|
41
|
+
1. **Probe all 27 connections** — run every probe script per `./connections-onboarding.md#step-1--probe-all-27-connections`. MCP probes use `ToolSearch` first; HTTP / CLI / file probes follow non-MCP patterns. Merge results into `STATE.md <connections>` with the three-value schema (`available | unavailable | not_configured`) — never add new values.
|
|
42
42
|
2. **Categorize + build summary** — bucket each probe result (available / recommended / optional / skipped / unavailable) using project-hint detection. Detail + recommendation mapping: `./connections-onboarding.md#step-2--bucket-categorization`.
|
|
43
43
|
3. **Print summary table** — show buckets + value-prop one-liners (verbatim from `./connections-onboarding.md#step-3--summary-table`).
|
|
44
44
|
4. **Route by mode** — `list` / `--auto` exits after summary; `<name>` jumps straight to Step 5; default mode opens an AskUserQuestion (configure recommended / pick one by one / configure all optional / re-check specific / exit). Routing detail: `./connections-onboarding.md#step-4--route-by-mode`.
|
|
@@ -9,7 +9,7 @@ last_updated: 2026-05-18
|
|
|
9
9
|
|
|
10
10
|
Source: extracted from `skills/connections/SKILL.md` (Phase 28.5 rework — D-10 extract-then-link).
|
|
11
11
|
The skill's load-bearing routing + invocation-mode dispatch stays in `../skills/connections/SKILL.md`;
|
|
12
|
-
this file holds the
|
|
12
|
+
this file holds the 27 probe scripts, bucket categorization, per-connection setup screen,
|
|
13
13
|
auto-run eligibility matrix, value-prop one-liners, and STATE.md / config.json write contracts.
|
|
14
14
|
|
|
15
15
|
# Connections Onboarding Procedure
|
|
@@ -27,7 +27,7 @@ this file does NOT duplicate them; it points at them by name.
|
|
|
27
27
|
|
|
28
28
|
---
|
|
29
29
|
|
|
30
|
-
## Step 1 — Probe all
|
|
30
|
+
## Step 1 — Probe all 27 connections
|
|
31
31
|
|
|
32
32
|
Run every probe below in order. MCP probes call `ToolSearch` first (deferred tools fail silently without it). Write every result to `STATE.md <connections>` when done.
|
|
33
33
|
|
|
@@ -196,7 +196,49 @@ Bash: find . -name "*.riv" -not -path "*/node_modules/*" 2>/dev/null | head
|
|
|
196
196
|
→ none → rive: not_configured
|
|
197
197
|
```
|
|
198
198
|
|
|
199
|
-
|
|
199
|
+
**framer:** (AI-native Wave 2 — canvas; MCP or API token)
|
|
200
|
+
```
|
|
201
|
+
ToolSearch({ query: "framer", max_results: 5 })
|
|
202
|
+
→ Empty → framer: not_configured
|
|
203
|
+
→ Non-empty → framer: available
|
|
204
|
+
```
|
|
205
|
+
|
|
206
|
+
**penpot:** (AI-native Wave 2 — canvas; self-hosted URL/token or cloud)
|
|
207
|
+
```
|
|
208
|
+
ToolSearch({ query: "penpot", max_results: 5 })
|
|
209
|
+
→ Empty → penpot: not_configured
|
|
210
|
+
→ Non-empty → penpot: available
|
|
211
|
+
```
|
|
212
|
+
|
|
213
|
+
**webflow:** (AI-native Wave 2 — generator; MCP or WEBFLOW token)
|
|
214
|
+
```
|
|
215
|
+
ToolSearch({ query: "webflow", max_results: 5 })
|
|
216
|
+
→ Empty → webflow: not_configured
|
|
217
|
+
→ Non-empty → webflow: available
|
|
218
|
+
```
|
|
219
|
+
|
|
220
|
+
**v0-dev:** (AI-native Wave 2 — generator; MCP-first, else V0_API_KEY)
|
|
221
|
+
```
|
|
222
|
+
ToolSearch({ query: "v0", max_results: 5 })
|
|
223
|
+
→ Empty → v0-dev: not_configured
|
|
224
|
+
→ Non-empty → v0-dev: available
|
|
225
|
+
```
|
|
226
|
+
|
|
227
|
+
**plasmic:** (AI-native Wave 2 — generator+canvas; MCP or token)
|
|
228
|
+
```
|
|
229
|
+
ToolSearch({ query: "plasmic", max_results: 5 })
|
|
230
|
+
→ Empty → plasmic: not_configured
|
|
231
|
+
→ Non-empty → plasmic: available
|
|
232
|
+
```
|
|
233
|
+
|
|
234
|
+
**builder-io:** (AI-native Wave 2 — generator; MCP-first, else BUILDER_API_KEY)
|
|
235
|
+
```
|
|
236
|
+
ToolSearch({ query: "builder", max_results: 5 })
|
|
237
|
+
→ Empty → builder-io: not_configured
|
|
238
|
+
→ Non-empty → builder-io: available
|
|
239
|
+
```
|
|
240
|
+
|
|
241
|
+
After all 27 probes complete, merge results into `STATE.md <connections>`. Preserve the three-value schema verbatim (`available | unavailable | not_configured`). Do not add new values.
|
|
200
242
|
|
|
201
243
|
---
|
|
202
244
|
|
|
@@ -286,6 +328,12 @@ One-line value props (use verbatim):
|
|
|
286
328
|
| notion | export — `/gdd:export --format notion` writes a stakeholder page (degrade-to-HTML) |
|
|
287
329
|
| lottie | verify — Lottie JSON motion check (frame-rate / duration / bloat / perf-budget), WARN-never-block |
|
|
288
330
|
| rive | verify — Rive `.riv` motion check (size + state-machine reachability via the opt-in runtime), WARN-never-block |
|
|
331
|
+
| framer | design — read Framer frames + write proposals (canvas, Wave 2) |
|
|
332
|
+
| penpot | design — open-source Figma alt; read boards (self-hosted or cloud) |
|
|
333
|
+
| webflow | design — read site structure as an adaptation source (Wave 2) |
|
|
334
|
+
| v0-dev | generator — Vercel v0 prompt→component (MCP-first → REST + V0_API_KEY) |
|
|
335
|
+
| plasmic | generator + canvas — emit code + read the Plasmic canvas |
|
|
336
|
+
| builder-io | generator — Builder.io Visual Copilot (pull-only this phase) |
|
|
289
337
|
|
|
290
338
|
---
|
|
291
339
|
|
|
@@ -313,7 +361,7 @@ options:
|
|
|
313
361
|
- "Exit" → emit ## CONNECTIONS COMPLETE, exit
|
|
314
362
|
```
|
|
315
363
|
|
|
316
|
-
If recommended bucket is empty, swap that option for "Show all
|
|
364
|
+
If recommended bucket is empty, swap that option for "Show all 27 and pick."
|
|
317
365
|
|
|
318
366
|
---
|
|
319
367
|
|
|
@@ -379,6 +427,12 @@ options:
|
|
|
379
427
|
| notion | `claude mcp add notion ...` (Notion MCP) | ✓ yes | Reversible MCP add; OAuth on first call |
|
|
380
428
|
| lottie | (file-based — no install; drop a Lottie `.json` export in the repo) | n/a | Detected from Lottie exports / a `lottie-web` dep; live player opt-in |
|
|
381
429
|
| rive | (file-based — no install; add a `.riv` export / `@rive-app` dep) | n/a | Detected from `.riv` files / a `@rive-app` dep; Rive runtime opt-in |
|
|
430
|
+
| framer | `claude mcp add framer ...` (or API token) | ✓ yes | Reversible MCP add; canvas-category |
|
|
431
|
+
| penpot | `claude mcp add penpot ...` (self-hosted URL or cloud + token) | ✓ yes | Reversible; self-host vs cloud |
|
|
432
|
+
| webflow | `claude mcp add webflow ...` (or WEBFLOW token) | ✓ yes | Reversible; reads structure, not CMS authoring |
|
|
433
|
+
| v0-dev | `claude mcp add v0 ...` (or V0_API_KEY) | ✓ yes | Reversible; MCP-first → REST fallback |
|
|
434
|
+
| plasmic | `claude mcp add plasmic ...` (or token) | ✓ yes | Reversible; dual canvas+generator |
|
|
435
|
+
| builder-io | `claude mcp add builder ...` (or BUILDER_API_KEY) | ✓ yes | Reversible; pull-only this phase |
|
|
382
436
|
|
|
383
437
|
For non-auto-run connections, hide the "Run install command now" option entirely in 5.3.
|
|
384
438
|
|