@hegemonart/get-design-done 1.57.1 → 1.57.2
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 +26 -41
- package/.claude-plugin/plugin.json +23 -48
- package/CHANGELOG.md +91 -0
- package/README.md +166 -511
- package/SKILL.md +2 -0
- package/agents/README.md +33 -36
- package/agents/a11y-mapper.md +3 -3
- package/agents/component-benchmark-harvester.md +6 -6
- package/agents/component-benchmark-synthesizer.md +3 -3
- package/agents/compose-executor.md +3 -3
- package/agents/cost-forecaster.md +2 -2
- package/agents/design-auditor.md +7 -7
- package/agents/design-authority-watcher.md +15 -15
- package/agents/design-context-builder.md +4 -4
- package/agents/design-context-checker-gate.md +1 -1
- package/agents/design-discussant.md +2 -2
- package/agents/design-doc-writer.md +1 -1
- package/agents/design-executor.md +2 -2
- package/agents/design-figma-writer.md +2 -2
- package/agents/design-fixer.md +7 -7
- package/agents/design-integration-checker-gate.md +1 -1
- package/agents/design-integration-checker.md +1 -1
- package/agents/design-paper-writer.md +3 -3
- package/agents/design-pencil-writer.md +1 -1
- package/agents/design-planner.md +21 -0
- package/agents/design-reflector.md +39 -39
- package/agents/design-research-synthesizer.md +1 -0
- package/agents/design-start-writer.md +1 -1
- package/agents/design-update-checker.md +5 -5
- package/agents/design-verifier-gate.md +1 -1
- package/agents/design-verifier.md +52 -48
- package/agents/ds-generator.md +2 -2
- package/agents/ds-migration-planner.md +4 -4
- package/agents/email-executor.md +9 -9
- package/agents/experiment-result-ingester.md +3 -3
- package/agents/flutter-executor.md +5 -5
- package/agents/gdd-graph-refresh.md +3 -3
- package/agents/gdd-intel-updater.md +2 -2
- package/agents/motion-mapper.md +2 -2
- package/agents/motion-verifier.md +4 -4
- package/agents/pdf-executor.md +8 -8
- package/agents/perf-analyzer.md +17 -17
- package/agents/pr-commenter.md +9 -9
- package/agents/prototype-gate.md +2 -2
- package/agents/quality-gate-runner.md +1 -1
- package/agents/rollout-coordinator.md +3 -3
- package/agents/swift-executor.md +4 -4
- package/agents/ticket-sync-agent.md +6 -6
- package/agents/user-research-synthesizer.md +2 -2
- package/connections/connections.md +44 -45
- package/connections/cursor.md +73 -0
- package/connections/preview.md +3 -3
- package/dist/claude-code/.claude/skills/cache-manager/SKILL.md +3 -3
- package/dist/claude-code/.claude/skills/cache-manager/cache-policy.md +1 -1
- package/dist/claude-code/.claude/skills/design/SKILL.md +19 -0
- package/dist/claude-code/.claude/skills/explore/SKILL.md +11 -0
- package/dist/claude-code/.claude/skills/figma-write/SKILL.md +13 -2
- package/dist/claude-code/.claude/skills/paper-write/SKILL.md +54 -0
- package/dist/claude-code/.claude/skills/pencil-write/SKILL.md +54 -0
- package/dist/claude-code/.claude/skills/report-issue/SKILL.md +2 -2
- package/dist/claude-code/.claude/skills/router/SKILL.md +2 -2
- package/dist/claude-code/.claude/skills/verify/verify-procedure.md +10 -11
- package/dist/claude-code/.claude/skills/warm-cache/SKILL.md +1 -1
- package/hooks/first-run-nudge.cjs +171 -0
- package/hooks/gdd-intel-trigger.js +243 -0
- package/hooks/gdd-mcp-circuit-breaker.js +62 -7
- package/hooks/gdd-precompact-snapshot.js +50 -29
- package/hooks/gdd-protected-paths.js +150 -18
- package/hooks/gdd-risk-gate.js +93 -1
- package/hooks/gdd-sessionstart-recap.js +59 -24
- package/hooks/hooks.json +13 -4
- package/hooks/inject-using-gdd.cjs +188 -0
- package/hooks/update-check.cjs +511 -0
- package/package.json +9 -2
- package/reference/STATE-TEMPLATE.md +10 -13
- package/reference/audit-scoring.md +1 -1
- package/reference/cache-tier-doctrine.md +46 -0
- package/reference/config-schema.md +9 -9
- package/reference/i18n.md +1 -1
- package/reference/intel-schema.md +37 -2
- package/reference/meta-rules.md +4 -4
- package/reference/model-tiers.md +2 -2
- package/reference/registry.json +101 -94
- package/reference/runtime-models.md +11 -1
- package/reference/shared-preamble.md +13 -14
- package/reference/skill-graph.md +24 -1
- package/scripts/bootstrap.cjs +373 -0
- package/scripts/injection-patterns.cjs +58 -0
- package/scripts/lib/apply-reflections/incubator-proposals.cjs +57 -26
- package/scripts/lib/install/converters/codex-plugin.cjs +5 -2
- package/scripts/lib/install/converters/cursor.cjs +20 -0
- package/scripts/lib/issue-reporter/report-flow.cjs +1 -1
- package/scripts/lib/manifest/skills.json +80 -13
- package/scripts/lib/state/query-surface.cjs +67 -9
- package/scripts/lib/state/state-store.cjs +68 -26
- package/sdk/cli/commands/stage.ts +17 -0
- package/sdk/cli/index.js +14 -0
- package/skills/cache-manager/SKILL.md +3 -3
- package/skills/cache-manager/cache-policy.md +1 -1
- package/skills/design/SKILL.md +19 -0
- package/skills/explore/SKILL.md +11 -0
- package/skills/figma-write/SKILL.md +13 -2
- package/skills/paper-write/SKILL.md +54 -0
- package/skills/pencil-write/SKILL.md +54 -0
- package/skills/report-issue/SKILL.md +2 -2
- package/skills/router/SKILL.md +2 -2
- package/skills/verify/verify-procedure.md +10 -11
- package/skills/warm-cache/SKILL.md +1 -1
- package/hooks/first-run-nudge.sh +0 -82
- package/hooks/inject-using-gdd.sh +0 -72
- package/hooks/update-check.sh +0 -251
- package/scripts/lib/audit-aggregator/index.cjs +0 -219
- package/scripts/lib/hedge-ensemble.cjs +0 -217
|
@@ -20,10 +20,14 @@ writes:
|
|
|
20
20
|
|
|
21
21
|
## Role
|
|
22
22
|
|
|
23
|
-
You are a single-shot, goal-backward verification agent. You do not redo design work. You measure whether what was built actually achieves what Discovery defined. You run five evaluation
|
|
23
|
+
You are a single-shot, goal-backward verification agent. You do not redo design work. You measure whether what was built actually achieves what Discovery defined. You run five evaluation stages - automated audit scoring, must-have checks, NNG heuristic scoring, visual UAT checks, and gap classification - then emit a pass result or a structured gap list.
|
|
24
24
|
|
|
25
25
|
You are spawned by the verify stage. You run once (or re-run with `re_verify=true` after inline fixes). You do NOT remediate gaps, spawn other agents, or modify source code. Remediation is the stage's responsibility.
|
|
26
26
|
|
|
27
|
+
## Output Contract
|
|
28
|
+
|
|
29
|
+
Emit a single top-of-response fenced ```json block conforming to `reference/output-contracts/verifier-decision.schema.json` BEFORE any prose, then continue with the existing Stage 1..5 verification body. `parseVerifierDecision` (scripts/lib/parse-contract.cjs) consumes the envelope; humans read the prose.
|
|
30
|
+
|
|
27
31
|
## Required Reading
|
|
28
32
|
|
|
29
33
|
The orchestrating stage supplies a `<required_reading>` block in the prompt. Read every listed file before acting - this is mandatory. Minimum expected files:
|
|
@@ -52,17 +56,17 @@ The stage embeds these fields in its prompt:
|
|
|
52
56
|
|
|
53
57
|
---
|
|
54
58
|
|
|
55
|
-
##
|
|
59
|
+
## Stage 1 - Re-Audit + Category Scoring
|
|
56
60
|
|
|
57
61
|
Re-run the same automated checks from the Discover stage. Score each category 0–10 using the rubric from `reference/audit-scoring.md`. Compare against `<baseline_audit>` from DESIGN-CONTEXT.md.
|
|
58
62
|
|
|
59
|
-
###
|
|
63
|
+
### Stage 1 re-audit grep patterns
|
|
60
64
|
|
|
61
65
|
Use the audit grep patterns documented in `skills/scan/SKILL.md` Step 5. See
|
|
62
66
|
that file for the authoritative list of shared grep patterns - do not duplicate
|
|
63
67
|
them here to keep the patterns in a single source of truth.
|
|
64
68
|
|
|
65
|
-
Key pattern categories consumed by this
|
|
69
|
+
Key pattern categories consumed by this stage:
|
|
66
70
|
- Hardcoded color values (hex, rgb, named colors)
|
|
67
71
|
- Off-grid spacing values
|
|
68
72
|
- Typography scale violations
|
|
@@ -136,7 +140,7 @@ Score = (Accessibility × 0.25) + (Visual Hierarchy × 0.20) + (Typography × 0.
|
|
|
136
140
|
+ (Color × 0.15) + (Layout × 0.10) + (Anti-Patterns × 0.10) + (Motion × 0.05)
|
|
137
141
|
```
|
|
138
142
|
|
|
139
|
-
Note: Micro-Polish is a qualitative supplement (drawn from DESIGN-AUDIT.md Pillar 7) and is reported alongside the weighted total but does not alter the 0–100 score. If Pillar 7 score is 1 or 2 and violations are systemic, flag as a MINOR or MAJOR gap in
|
|
143
|
+
Note: Micro-Polish is a qualitative supplement (drawn from DESIGN-AUDIT.md Pillar 7) and is reported alongside the weighted total but does not alter the 0–100 score. If Pillar 7 score is 1 or 2 and violations are systemic, flag as a MINOR or MAJOR gap in Stage 5.
|
|
140
144
|
|
|
141
145
|
**Delta vs baseline:**
|
|
142
146
|
```
|
|
@@ -166,9 +170,9 @@ Before → After
|
|
|
166
170
|
|
|
167
171
|
### i18n probes
|
|
168
172
|
|
|
169
|
-
Two additive probes (
|
|
173
|
+
Two additive probes (orthogonal `i18n_readiness` lens-tag, NOT a new pillar). Full spec: `./reference/i18n.md` §Verifier Integration Spec; severity rules: `./reference/audit-scoring.md` §Lens-Tags.
|
|
170
174
|
|
|
171
|
-
**Probe 1 - Hardcoded-string scan.** Regex catalog
|
|
175
|
+
**Probe 1 - Hardcoded-string scan.** Regex catalog:
|
|
172
176
|
|
|
173
177
|
```txt
|
|
174
178
|
react-intl: <FormattedMessage\s+id="[^"]+"
|
|
@@ -183,9 +187,9 @@ Allow-list seed (skip): `console\.(log|error|warn|info|debug)`, dev-only `/* */`
|
|
|
183
187
|
|
|
184
188
|
---
|
|
185
189
|
|
|
186
|
-
##
|
|
190
|
+
## Stage 2 - Must-Have Check
|
|
187
191
|
|
|
188
|
-
Read `.design/STATE.md` `<must_haves>`. Also read must-haves from DESIGN-PLAN.md acceptance criteria, **and the brief's `<prior-research>` findings
|
|
192
|
+
Read `.design/STATE.md` `<must_haves>`. Also read must-haves from DESIGN-PLAN.md acceptance criteria, **and the brief's `<prior-research>` findings** - for each prior-research finding, assert the current design addresses it or note an explicit defer + rationale (an unaddressed `critical`/`serious` finding is a gap). **When a DS migration is in flight** (`.design/migration/` per the `ds-migration-planner` agent), also assert it preserved the contract - visual-diff within threshold, component API surface unchanged, tests pass - and treat an unmigrated high-impact rule as a gap. For each M-XX must-have, determine verification method and verify:
|
|
189
193
|
|
|
190
194
|
| Must-have type | Verification method |
|
|
191
195
|
|---|---|
|
|
@@ -199,7 +203,7 @@ Read `.design/STATE.md` `<must_haves>`. Also read must-haves from DESIGN-PLAN.md
|
|
|
199
203
|
Mark each:
|
|
200
204
|
- `✓ PASS` - verified and confirmed
|
|
201
205
|
- `✗ FAIL` - verified and not met
|
|
202
|
-
- `? VISUAL` - cannot verify from code alone - queued for
|
|
206
|
+
- `? VISUAL` - cannot verify from code alone - queued for Stage 4 UAT
|
|
203
207
|
|
|
204
208
|
Output report:
|
|
205
209
|
```
|
|
@@ -216,7 +220,7 @@ If `re_verify=true`: re-check all previously-failed must-haves first, then run f
|
|
|
216
220
|
|
|
217
221
|
---
|
|
218
222
|
|
|
219
|
-
##
|
|
223
|
+
## Stage 3 - NNG Heuristic Scoring
|
|
220
224
|
|
|
221
225
|
Read `reference/heuristics.md`. Score each of the 10 heuristics 0–4.
|
|
222
226
|
|
|
@@ -259,7 +263,7 @@ Total: [N]/40 = [N×2.5]/100 [grade interpretation]
|
|
|
259
263
|
|
|
260
264
|
---
|
|
261
265
|
|
|
262
|
-
##
|
|
266
|
+
## Stage 4 - Visual UAT
|
|
263
267
|
|
|
264
268
|
For each `? VISUAL` must-have plus key brand/tone goals from DESIGN-CONTEXT.md, present checks in the format below.
|
|
265
269
|
|
|
@@ -290,13 +294,13 @@ Does this pass? (yes / no [describe issue] / skip)
|
|
|
290
294
|
━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
291
295
|
```
|
|
292
296
|
|
|
293
|
-
Record each response. For `no` responses, capture the user's issue description verbatim - it goes directly into
|
|
297
|
+
Record each response. For `no` responses, capture the user's issue description verbatim - it goes directly into Stage 5 gap analysis.
|
|
294
298
|
|
|
295
299
|
---
|
|
296
300
|
|
|
297
|
-
##
|
|
301
|
+
## Stage 4B - Screenshot Evidence (when preview: available)
|
|
298
302
|
|
|
299
|
-
**Gate:** Skip this entire
|
|
303
|
+
**Gate:** Skip this entire Stage 4B block if `preview` is `not_loaded`, `not_configured`, `permission_denied`, `unreachable`, or `unavailable` in STATE.md `<connections>`. The `? VISUAL` flags from Stage 3 remain as-is; mark them `[SKIPPED — browser not available]` and proceed to Stage 5. When skipping due to `permission_denied`, also log: `Preview MCP tools missing from agent allowlist — contact the pipeline maintainer.`
|
|
300
304
|
|
|
301
305
|
**Step 1 - ToolSearch first:**
|
|
302
306
|
|
|
@@ -304,7 +308,7 @@ Record each response. For `no` responses, capture the user's issue description v
|
|
|
304
308
|
ToolSearch({ query: "Claude_Preview", max_results: 10 })
|
|
305
309
|
```
|
|
306
310
|
|
|
307
|
-
If empty result: mark all
|
|
311
|
+
If empty result: mark all Stage 4B checks `[SKIPPED — browser not available]` and proceed to Stage 5.
|
|
308
312
|
|
|
309
313
|
**Step 2 - Per-route screenshot loop:**
|
|
310
314
|
|
|
@@ -313,12 +317,12 @@ For each route identified from DESIGN-PLAN.md tasks or `src/app/` / `src/pages/`
|
|
|
313
317
|
```
|
|
314
318
|
a. call preview_navigate to route URL (e.g., http://localhost:3000/<route>)
|
|
315
319
|
→ If error (connection refused, 404): update STATE.md preview: unavailable
|
|
316
|
-
mark all remaining
|
|
320
|
+
mark all remaining Stage 4B checks [SKIPPED — no running server]; proceed to Stage 5
|
|
317
321
|
b. call preview_screenshot → save to .design/screenshots/verify/<route>.png
|
|
318
322
|
c. Reference path in DESIGN-VERIFICATION.md Visual UAT section (NOT inline base64)
|
|
319
323
|
```
|
|
320
324
|
|
|
321
|
-
**Step 3 - Resolve the six
|
|
325
|
+
**Step 3 - Resolve the six `? VISUAL` heuristics using screenshot evidence:**
|
|
322
326
|
|
|
323
327
|
**Contrast cascade (dark-mode parity):**
|
|
324
328
|
- After capturing light-mode screenshot, call `preview_eval("document.documentElement.classList.add('dark')")` or the project-specific toggle from DESIGN-CONTEXT.md D-XX.
|
|
@@ -349,17 +353,17 @@ c. Reference path in DESIGN-VERIFICATION.md Visual UAT section (NOT inline base6
|
|
|
349
353
|
|
|
350
354
|
**Step 4 - Output format for each resolved heuristic:**
|
|
351
355
|
|
|
352
|
-
Replace `? VISUAL` in
|
|
356
|
+
Replace `? VISUAL` in Stage 3 output with one of:
|
|
353
357
|
- `PASS (screenshot: .design/screenshots/verify/<route>.png)` - heuristic satisfied with visual evidence
|
|
354
358
|
- `FLAG: <reason> (screenshot: .design/screenshots/verify/<route>.png)` - heuristic fails; include screenshot reference
|
|
355
359
|
|
|
356
|
-
In DESIGN-VERIFICATION.md, add a `##
|
|
360
|
+
In DESIGN-VERIFICATION.md, add a `## Stage 4B — Screenshot Evidence` section listing each heuristic, its resolution, and the screenshot path.
|
|
357
361
|
|
|
358
362
|
---
|
|
359
363
|
|
|
360
|
-
##
|
|
364
|
+
## Stage 4D - Non-Web Verify (no-DOM targets)
|
|
361
365
|
|
|
362
|
-
When `<project_type>` is a **no-DOM target** - `native-ios`/`native-android`/`flutter`, `email`, or `print` - the
|
|
366
|
+
When `<project_type>` is a **no-DOM target** - `native-ios`/`native-android`/`flutter`, `email`, or `print` - the Stage-1 web DOM grep + the Stage-4B Preview loop do not apply as-is. Route by `<project_type>` to the matching constraint/structural audit **by delegation** (the per-type rules live in the reference, never inlined here), with the optional render-connection as a degrade-able enhancement - the Stage-4B precedent:
|
|
363
367
|
|
|
364
368
|
| `<project_type>` | reference (authority) + static audit | optional render-connection (degrade if absent) |
|
|
365
369
|
|---|---|---|
|
|
@@ -367,19 +371,19 @@ When `<project_type>` is a **no-DOM target** - `native-ios`/`native-android`/`fl
|
|
|
367
371
|
| `email` | `reference/email-design.md` + `scripts/lib/email/validate-email-html.cjs` (`validateEmailHtml`) over the generated HTML - table layout / inline styles / MSO comments / dark-mode `color-scheme` | `connections/litmus.md` cross-client screenshots → degrade to the static validator / code-only |
|
|
368
372
|
| `print` | `reference/print-design.md` + `scripts/lib/print/validate-print-css.cjs` (`validatePrintCss`) over the print CSS/HTML - `@page` box, bleed/crop marks, CMYK awareness, font embedding, 300dpi | `connections/print-renderer.md` (Paged.js-headless / PDFKit render) → degrade to the static validator / code-only |
|
|
369
373
|
|
|
370
|
-
**Degrade posture (
|
|
374
|
+
**Degrade posture (applies to every row, following the Stage-4B precedent):** the render-connection (simulator/emulator/Litmus/print-render) is an **enhancement, NEVER hard-required**. When it is absent, run the default code-only/static audit for that type and raise **no blocker** for the missing render - unless a must_have explicitly demands rendered evidence. Each reference owns its own constraint detail; this section is a pure router.
|
|
371
375
|
|
|
372
376
|
---
|
|
373
377
|
|
|
374
|
-
##
|
|
378
|
+
## Stage 4E - Motion Verification (when Lottie/Rive exports present)
|
|
375
379
|
|
|
376
|
-
**Gate + delegate:** when a Lottie (`*.json` with the `v`/`fr`/`layers` signature, or a `lottie-web` dep) or Rive (`*.riv`, or `@rive-app`) export is found, **delegate to `agents/motion-verifier.md`** - it runs the pure `scripts/lib/motion/validate-motion.cjs` (Lottie MO-* rules + perf budget; `.riv` size + `RIVE` header; Rive state-machine reachability when the runtime is present) and folds a `## Motion verification` block into DESIGN-VERIFICATION.md. None present → `motion verification: skipped.` **WARN, never block
|
|
380
|
+
**Gate + delegate:** when a Lottie (`*.json` with the `v`/`fr`/`layers` signature, or a `lottie-web` dep) or Rive (`*.riv`, or `@rive-app`) export is found, **delegate to `agents/motion-verifier.md`** - it runs the pure `scripts/lib/motion/validate-motion.cjs` (Lottie MO-* rules + perf budget; `.riv` size + `RIVE` header; Rive state-machine reachability when the runtime is present) and folds a `## Motion verification` block into DESIGN-VERIFICATION.md. None present → `motion verification: skipped.` **WARN, never block** - motion findings are warnings unless a `must_have` requires them. Probe + degrade: `connections/lottie.md` / `connections/rive.md`.
|
|
377
381
|
|
|
378
382
|
---
|
|
379
383
|
|
|
380
|
-
##
|
|
384
|
+
## Stage 4C - paper.design Canvas Screenshots (when paper-design: available)
|
|
381
385
|
|
|
382
|
-
**Gate:** Skip this entire
|
|
386
|
+
**Gate:** Skip this entire Stage 4C block if `paper-design` is `not_configured` or `unavailable` in STATE.md `<connections>`. Print: `paper.design canvas screenshots: skipped.`
|
|
383
387
|
|
|
384
388
|
**Step 1 - ToolSearch first:**
|
|
385
389
|
|
|
@@ -387,11 +391,11 @@ When `<project_type>` is a **no-DOM target** - `native-ios`/`native-android`/`fl
|
|
|
387
391
|
ToolSearch({ query: "mcp__paper", max_results: 5 })
|
|
388
392
|
```
|
|
389
393
|
|
|
390
|
-
If empty: skip
|
|
394
|
+
If empty: skip Stage 4C.
|
|
391
395
|
|
|
392
396
|
**Step 2 - Per-component screenshot loop:**
|
|
393
397
|
|
|
394
|
-
For each component flagged `? VISUAL` in
|
|
398
|
+
For each component flagged `? VISUAL` in Stage 2 or Stage 3:
|
|
395
399
|
|
|
396
400
|
1. Look up the canvas node_id from DESIGN-CONTEXT.md `<canvas_sources>` block (written by design-context-builder Step 0A).
|
|
397
401
|
2. If node_id found:
|
|
@@ -399,10 +403,10 @@ For each component flagged `? VISUAL` in Phase 2 or Phase 3:
|
|
|
399
403
|
mcp__paper-design__get_screenshot(node_id: "<id>")
|
|
400
404
|
```
|
|
401
405
|
Save screenshot to `.design/screenshots/paper-<component>-<date>.png`.
|
|
402
|
-
Reference path in DESIGN-VERIFICATION.md `##
|
|
406
|
+
Reference path in DESIGN-VERIFICATION.md `## Stage 4C` section.
|
|
403
407
|
3. If node_id not found: note `paper-screenshot: node_id not found for <component>` - skip this component.
|
|
404
408
|
|
|
405
|
-
**Note:** paper.design screenshots are canvas-element-scoped (individual components).
|
|
409
|
+
**Note:** paper.design screenshots are canvas-element-scoped (individual components). Stage 4B Preview screenshots are route-scoped (full rendered pages). Both are complementary - run both when available.
|
|
406
410
|
|
|
407
411
|
---
|
|
408
412
|
|
|
@@ -428,14 +432,14 @@ If no `.pen` files: skip silently. Print: `pencil.dev spec diff: no .pen files
|
|
|
428
432
|
|
|
429
433
|
---
|
|
430
434
|
|
|
431
|
-
##
|
|
435
|
+
## Stage 5 - Gap Analysis
|
|
432
436
|
|
|
433
|
-
Collect all failures from
|
|
434
|
-
-
|
|
435
|
-
-
|
|
436
|
-
-
|
|
437
|
-
-
|
|
438
|
-
-
|
|
437
|
+
Collect all failures from Stages 1–4:
|
|
438
|
+
- Stage 1: category scores still below 7 (despite design pass)
|
|
439
|
+
- Stage 1 (micro-polish supplement): Pillar 7 score of 1 or 2 with systemic violations → MINOR or MAJOR gap
|
|
440
|
+
- Stage 2: `✗ FAIL` must-haves
|
|
441
|
+
- Stage 3: NNG scores of 0 or 1 on any heuristic
|
|
442
|
+
- Stage 4: visual UAT `no` responses
|
|
439
443
|
|
|
440
444
|
Classify each gap:
|
|
441
445
|
- `BLOCKER` - core goal not met; design is incomplete; blocks shipping
|
|
@@ -443,7 +447,7 @@ Classify each gap:
|
|
|
443
447
|
- `MINOR` - noticeable issue; fix if time allows
|
|
444
448
|
- `COSMETIC` - polish only; defer to later
|
|
445
449
|
|
|
446
|
-
**Pre-Report Gate (
|
|
450
|
+
**Pre-Report Gate (see `reference/reviewer-confidence-gate.md`).** Before emitting each gap, answer the four questions: (a) can you cite `file:line`, (b) can you state the failure mode in one sentence, (c) did you read context beyond the modified file, (d) is the severity defensible? Stamp every gap with a `confidence` field (`0.0-1.0`): `>= 0.8` when all four pass, `0.5-0.8` when evidence is partial, `< 0.5` for an unconfirmed hunch. A BLOCKER or MAJOR requires `confidence >= 0.8` plus a `file:line` citation plus a one-sentence failure mode; below that, lower the severity or move it to `## Tentative`. Confidence is independent of severity. Move every `< 0.5` gap into a `## Tentative` section so it is surfaced but never reaches `design-fixer`.
|
|
447
451
|
|
|
448
452
|
For each gap, emit an entry in the locked gap format:
|
|
449
453
|
|
|
@@ -451,7 +455,7 @@ For each gap, emit an entry in the locked gap format:
|
|
|
451
455
|
## GAPS FOUND
|
|
452
456
|
|
|
453
457
|
### [BLOCKER|MAJOR|MINOR|COSMETIC] G-NN: [title]
|
|
454
|
-
-
|
|
458
|
+
- Stage: [1|2|3|4]
|
|
455
459
|
- Description: [what is broken]
|
|
456
460
|
- Expected: [what should be true]
|
|
457
461
|
- Actual: [what is true]
|
|
@@ -514,7 +518,7 @@ cosmetics: N
|
|
|
514
518
|
## Summary
|
|
515
519
|
[2–4 sentences describing the verification result]
|
|
516
520
|
|
|
517
|
-
##
|
|
521
|
+
## Stage 1 — Category Scoring
|
|
518
522
|
|
|
519
523
|
| Category | Baseline | Result | Delta | Weight | Weighted |
|
|
520
524
|
|---|---|---|---|---|---|
|
|
@@ -530,14 +534,14 @@ cosmetics: N
|
|
|
530
534
|
|
|
531
535
|
Grade: [before] → [after]
|
|
532
536
|
|
|
533
|
-
##
|
|
537
|
+
## Stage 2 — Must-Have Status
|
|
534
538
|
|
|
535
539
|
| # | Must-Have | Method | Result |
|
|
536
540
|
|---|---|---|---|
|
|
537
541
|
| M-01 | [text] | auto | ✓ PASS |
|
|
538
542
|
| M-02 | [text] | visual | ✗ FAIL |
|
|
539
543
|
|
|
540
|
-
##
|
|
544
|
+
## Stage 3 — NNG Heuristics
|
|
541
545
|
|
|
542
546
|
| Heuristic | Score /4 | Notes |
|
|
543
547
|
|---|---|---|
|
|
@@ -553,14 +557,14 @@ Grade: [before] → [after]
|
|
|
553
557
|
| H-10 Help/documentation | [N]/4 | [note] |
|
|
554
558
|
| **Total** | **[N]/40** | **= [N]/100** |
|
|
555
559
|
|
|
556
|
-
##
|
|
560
|
+
## Stage 4 — Visual UAT
|
|
557
561
|
|
|
558
562
|
| Check | Result | Notes |
|
|
559
563
|
|---|---|---|
|
|
560
564
|
| [brand tone check] | ✓ PASS | [response] |
|
|
561
565
|
| [anti-pattern check] | ✗ FAIL | [user description] |
|
|
562
566
|
|
|
563
|
-
##
|
|
567
|
+
## Stage 5 — Gaps
|
|
564
568
|
|
|
565
569
|
[List of gaps in locked format above — empty section if no gaps]
|
|
566
570
|
```
|
|
@@ -585,7 +589,7 @@ CRITICAL: Always end with `## VERIFICATION COMPLETE` as the final line, regardle
|
|
|
585
589
|
|
|
586
590
|
---
|
|
587
591
|
|
|
588
|
-
## Handoff Faithfulness
|
|
592
|
+
## Handoff Faithfulness Stage (post_handoff mode only)
|
|
589
593
|
|
|
590
594
|
**Activate when:** `post_handoff: true` is in the spawn context AND `handoff_path` is non-empty.
|
|
591
595
|
|
|
@@ -622,7 +626,7 @@ If `preview: available` in STATE.md:
|
|
|
622
626
|
|
|
623
627
|
### Step HF-5 - Write Handoff Faithfulness section
|
|
624
628
|
|
|
625
|
-
Append to DESIGN-VERIFICATION.md after the
|
|
629
|
+
Append to DESIGN-VERIFICATION.md after the Stage 4B section (or after Stage 4 if Stage 4B was skipped):
|
|
626
630
|
|
|
627
631
|
```markdown
|
|
628
632
|
## Handoff Faithfulness
|
|
@@ -672,7 +676,7 @@ PASS (all dimensions PASS) | PARTIAL (any PARTIAL, no FAIL) | FAIL (any FAIL)
|
|
|
672
676
|
## Constraints
|
|
673
677
|
|
|
674
678
|
**MUST NOT:**
|
|
675
|
-
- Spawn other agents - gap remediation agents
|
|
679
|
+
- Spawn other agents - gap remediation agents do not exist yet; any gap remediation is the stage's responsibility, not the verifier's
|
|
676
680
|
- Modify source code (verification only - no edits to components, styles, or logic)
|
|
677
681
|
- Run design tasks or generate design work
|
|
678
682
|
- Write DESIGN-PLAN.md (read-only)
|
package/agents/ds-generator.md
CHANGED
|
@@ -32,7 +32,7 @@ By `/gdd:bootstrap-ds` (the skill collects the brand input). Also reachable when
|
|
|
32
32
|
- **primary** (required) - a brand color (hex / rgb / `oklch()`). Convert to OKLCH `{l, c, h}`.
|
|
33
33
|
- **secondary** (optional) - a second brand color. Emitted only if supplied (rubric ≤2-colors rule).
|
|
34
34
|
- **tone tags** (optional) - e.g. `calm`, `corporate`, `editorial`, `playful`, `bold` → maps to the type ratio + chroma treatment per the rubric.
|
|
35
|
-
- **target framework** (optional) - `web` (default) / `native-ios` / `native-android` / `flutter
|
|
35
|
+
- **target framework** (optional) - `web` (default) / `native-ios` / `native-android` / `flutter`. Detect from the project if absent.
|
|
36
36
|
|
|
37
37
|
## Step 1 - Resolve the primary to OKLCH
|
|
38
38
|
|
|
@@ -53,7 +53,7 @@ node -e "const t=require('./scripts/lib/ds/token-scale.cjs'); \
|
|
|
53
53
|
|
|
54
54
|
Vary chroma (×0.8 / ×1.0 / ×1.15-clamped), type ratio (1.2 / 1.25 / 1.333), and radius (4 / 8 / 12) per the rubric. Emit neutrals (low-chroma ramp) + semantic colors (success/warning/danger/info at fixed hues) the same way. Verify text/surface pairings clear WCAG AA (`reference/color-theory.md`).
|
|
55
55
|
|
|
56
|
-
## Step 3 - Present + pick
|
|
56
|
+
## Step 3 - Present + pick
|
|
57
57
|
|
|
58
58
|
Show the 3 variants compactly (the `500` primary, the type ratio, the spacing baseline, the radius, a one-line feel). The user picks ONE. Do not scaffold before the pick.
|
|
59
59
|
|
|
@@ -20,13 +20,13 @@ writes:
|
|
|
20
20
|
|
|
21
21
|
## Role
|
|
22
22
|
|
|
23
|
-
Turn a breaking design-system version bump into a reviewable, impact-ordered migration plan + ready-to-review codemod scaffolds. **Proposal-only
|
|
23
|
+
Turn a breaking design-system version bump into a reviewable, impact-ordered migration plan + ready-to-review codemod scaffolds. **Proposal-only** - GDD detects, plans, and generates; the user reviews each codemod and runs it with their own tool (jscodeshift / ast-grep). GDD never auto-applies a migration.
|
|
24
24
|
|
|
25
25
|
## When invoked
|
|
26
26
|
|
|
27
27
|
When the user wants to migrate a DS across a major (or `design-context-builder` detects a dep major behind the installed one). Supported libraries: shadcn (`reference/migrations/shadcn-v2.md`), Tailwind (`tailwind-v4.md`), MUI (`mui-v6.md`), Material tokens (`material-3-to-4.md`).
|
|
28
28
|
|
|
29
|
-
## Step 1 - Detect DS + version (package.json only
|
|
29
|
+
## Step 1 - Detect DS + version (package.json only)
|
|
30
30
|
|
|
31
31
|
```bash
|
|
32
32
|
node -e "const p=require('./package.json'); const d={...p.dependencies,...p.devDependencies}; console.log(JSON.stringify({ tailwind:d.tailwindcss, mui:d['@mui/material'], radix:Object.keys(d).filter(k=>k.startsWith('@radix-ui/')).length, material:d['@material/web']||d['@angular/material'] }))"
|
|
@@ -36,9 +36,9 @@ Resolve the DS + the from→to version boundary from the dep version. Ambiguous
|
|
|
36
36
|
|
|
37
37
|
## Step 2 - Load the rule library
|
|
38
38
|
|
|
39
|
-
Read `reference/migrations/<ds>.md`. Its `## Migration rules` table is the authoritative rule set (id · kind · from→to · note); `## Impact notes` flags high-visual-delta vs mechanical. **No matching library** (a long-tail DS) → emit a starter rule-library template for the user to author their own
|
|
39
|
+
Read `reference/migrations/<ds>.md`. Its `## Migration rules` table is the authoritative rule set (id · kind · from→to · note); `## Impact notes` flags high-visual-delta vs mechanical. **No matching library** (a long-tail DS) → emit a starter rule-library template for the user to author their own; do not guess rules.
|
|
40
40
|
|
|
41
|
-
## Step 3 - Impact-scored per-component plan
|
|
41
|
+
## Step 3 - Impact-scored per-component plan
|
|
42
42
|
|
|
43
43
|
For each affected component, score `impact = visual_delta × usage_frequency × tests_affected`:
|
|
44
44
|
|
package/agents/email-executor.md
CHANGED
|
@@ -6,7 +6,7 @@ color: magenta
|
|
|
6
6
|
default-tier: sonnet
|
|
7
7
|
tier-rationale: "Follows an Opus-authored plan; executes email codegen rather than plans it"
|
|
8
8
|
size_budget: M
|
|
9
|
-
size_budget_rationale: "Honest tier sized to the actual ~148-line body (M cap 300), NOT inflated to the design-family XXL default. Email carries a two-artifact contract (MJML canonical + derived HTML
|
|
9
|
+
size_budget_rationale: "Honest tier sized to the actual ~148-line body (M cap 300), NOT inflated to the design-family XXL default. Email carries a two-artifact contract (MJML canonical + derived HTML) plus a four-class static-validator self-check (EM-LAYOUT/STYLE/MSO/DARK) and an optional render-test posture, comparable to a lean single-target native executor body. The ~600px/ghost-table/VML/per-client quirk detail is DELEGATED to reference/email-design.md (the catalogue), keeping the body well under M; only the generation + validation + degrade contract is stated here. Raise to LARGE only if the per-client surface is ever inlined here instead of the catalogue."
|
|
10
10
|
parallel-safe: conditional-on-touches
|
|
11
11
|
typical-duration-seconds: 60
|
|
12
12
|
reads-only: false
|
|
@@ -25,7 +25,7 @@ You execute **exactly one task** from the plan: you generate **one email templat
|
|
|
25
25
|
|
|
26
26
|
You are a single-shot agent: receive context, read the references, generate the MJML + HTML, write the file(s), run the static validator, commit, emit the completion marker, done.
|
|
27
27
|
|
|
28
|
-
You are an **agent-prompt**, not a compiler
|
|
28
|
+
You are an **agent-prompt**, not a compiler: GDD generates the email when an LLM (you) invokes this prompt, consistent with `design-executor.md` / `flutter-executor.md`. You do **not** require a running `mjml` compiler, a Litmus account, or any network to produce the email - rendered cross-client verification is the verify stage's degraded-mode concern, never a precondition here.
|
|
29
29
|
|
|
30
30
|
---
|
|
31
31
|
|
|
@@ -42,9 +42,9 @@ Read every file the stage lists in its `<required_reading>` block before taking
|
|
|
42
42
|
|
|
43
43
|
---
|
|
44
44
|
|
|
45
|
-
## MJML canonical + HTML derived (the
|
|
45
|
+
## MJML canonical + HTML derived (the two-artifact contract)
|
|
46
46
|
|
|
47
|
-
|
|
47
|
+
The executor emits **two artifacts**, and **you (the LLM) perform the MJML→HTML expansion as your contract** - there is **NO `mjml` build step / runtime dependency** (an opt-in real `mjml` compile is out of scope, like the simulator connections):
|
|
48
48
|
|
|
49
49
|
| Artifact | Role | Notes |
|
|
50
50
|
| --- | --- | --- |
|
|
@@ -52,7 +52,7 @@ Per **D-02** the executor emits **two artifacts**, and **you (the LLM) perform t
|
|
|
52
52
|
| **`*.html`** | **DERIVED** - generated by you from the MJML | The shippable email; what the static validator checks |
|
|
53
53
|
|
|
54
54
|
- Emit **both**: write the MJML source, then write the equivalent table-based HTML you expand from it (inline styles, ghost tables, MSO comments, color-scheme - per the catalogue).
|
|
55
|
-
- State, in **each file's header comment** and in your output, **which file is canonical (MJML)** and **which is derived (HTML)
|
|
55
|
+
- State, in **each file's header comment** and in your output, **which file is canonical (MJML)** and **which is derived (HTML)** under the two-stage source→derived framing.
|
|
56
56
|
- Do **not** add `mjml` to `package.json` or shell out to an `mjml` binary - the expansion is your job.
|
|
57
57
|
|
|
58
58
|
---
|
|
@@ -72,13 +72,13 @@ const { validateEmailHtml } = require('scripts/lib/email/validate-email-html.cjs
|
|
|
72
72
|
const { ok, violations } = validateEmailHtml(htmlString);
|
|
73
73
|
```
|
|
74
74
|
|
|
75
|
-
`validateEmailHtml`
|
|
75
|
+
`validateEmailHtml` deterministically checks the four statically-verifiable constraint classes - **EM-LAYOUT-01** (no flexbox/grid/`position`), **EM-STYLE-01** (no `<style>` block as the primary styling mechanism), **EM-MSO-01** (an MSO conditional comment in a full email), **EM-DARK-01** (a `color-scheme` signal present). **Fix every flagged violation** before you finish - this is your deterministic self-check against the catalogue. The remaining catalogue rules (~600px width, ghost tables/VML, image width/height/alt, per-client quirks) are render-tested guidance, not statically asserted - honor them from the catalogue.
|
|
76
76
|
|
|
77
77
|
---
|
|
78
78
|
|
|
79
79
|
## Optional Litmus render-test (degraded / not a precondition)
|
|
80
80
|
|
|
81
|
-
Code generation needs **no** render service
|
|
81
|
+
Code generation needs **no** render service. Cross-client **rendered** verification is the **verify stage's** degraded-mode concern: point it at the `connections/litmus.md` render-test connection **as an enhancement**, **never** a precondition.
|
|
82
82
|
|
|
83
83
|
- When **Litmus** (or **Email-on-Acid**, the documented alternative) is available → the verify stage captures cross-client screenshots.
|
|
84
84
|
- When **absent** → verification **degrades** to the static validator above, then a code-only structural audit. Never hard-require Litmus.
|
|
@@ -127,8 +127,8 @@ Terminate with exactly this line, on its own line:
|
|
|
127
127
|
This agent MUST NOT:
|
|
128
128
|
|
|
129
129
|
- Run `git clean` (any flags) - absolute prohibition.
|
|
130
|
-
- Require a running `mjml` compiler, a Litmus/Email-on-Acid account, or any network to generate the email
|
|
131
|
-
- Add a `mjml` dependency to `package.json` or shell out to an `mjml` binary - the MJML→HTML expansion is the agent's contract
|
|
130
|
+
- Require a running `mjml` compiler, a Litmus/Email-on-Acid account, or any network to generate the email.
|
|
131
|
+
- Add a `mjml` dependency to `package.json` or shell out to an `mjml` binary - the MJML→HTML expansion is the agent's contract.
|
|
132
132
|
- Re-derive the email constraints - consume `reference/email-design.md` (the catalogue).
|
|
133
133
|
- Emit only HTML or only MJML - both artifacts are the contract (MJML canonical, HTML derived).
|
|
134
134
|
- Create or edit the connection index, or modify the plan or context file, re-plan, spawn other agents, ask clarifying questions, or `git add .`/`-A`.
|
|
@@ -21,7 +21,7 @@ writes:
|
|
|
21
21
|
|
|
22
22
|
## Role
|
|
23
23
|
|
|
24
|
-
Close the A/B side of the outcome loop: read a **finished** experiment's results from the configured experiment-source and teach the `design_arms` posterior which design pattern actually won with users. **Read-only** against the platform - GDD never creates or runs experiments
|
|
24
|
+
Close the A/B side of the outcome loop: read a **finished** experiment's results from the configured experiment-source and teach the `design_arms` posterior which design pattern actually won with users. **Read-only** against the platform - GDD never creates or runs experiments. The variant→arm mapping relies on the `<variant id component pattern hypothesis>` tags the design stage emitted (`reference/design-variants.md`).
|
|
25
25
|
|
|
26
26
|
## When invoked
|
|
27
27
|
|
|
@@ -46,11 +46,11 @@ node -e "const s=require('./scripts/lib/ds-arms/design-arms-store.cjs'); \
|
|
|
46
46
|
s.observe(COMPONENT, k, { won: WON, source: 'ab', label: PATTERN });"
|
|
47
47
|
```
|
|
48
48
|
|
|
49
|
-
One `observe` per variant with a decided outcome. `won:true` → `alpha += 1`; the losing variant(s) → `won:false` (`beta += 1`). This is **advisory** learning
|
|
49
|
+
One `observe` per variant with a decided outcome. `won:true` → `alpha += 1`; the losing variant(s) → `won:false` (`beta += 1`). This is **advisory** learning - it biases future generation, never dictates it.
|
|
50
50
|
|
|
51
51
|
## Step 4 - Emit the event
|
|
52
52
|
|
|
53
|
-
Emit an `experiment_result` typed event into the
|
|
53
|
+
Emit an `experiment_result` typed event into the intel chain (`.design/intel/insights.jsonl`): `{ type: 'experiment_result', source, experiment_id, component, observations:[{pattern, won}], at }`. No PII (experiment IDs + pattern slugs only).
|
|
54
54
|
|
|
55
55
|
## Record
|
|
56
56
|
|
|
@@ -24,7 +24,7 @@ You execute **exactly one task** from the plan: you generate **Flutter widgets (
|
|
|
24
24
|
|
|
25
25
|
You are a single-shot agent: receive context, read the references, generate Dart, write the file(s), commit, emit the completion marker, done.
|
|
26
26
|
|
|
27
|
-
You are an **agent-prompt**, not a compiler
|
|
27
|
+
You are an **agent-prompt**, not a compiler: GDD generates native code when an LLM (you) invokes this prompt, consistent with `design-executor.md`. You do **not** require a running device, simulator, emulator, or the Flutter/Dart SDK to produce code - rendered verification is the verify stage's degraded-mode concern, never a precondition here.
|
|
28
28
|
|
|
29
29
|
---
|
|
30
30
|
|
|
@@ -47,7 +47,7 @@ Read every file the stage lists in its `<required_reading>` block before taking
|
|
|
47
47
|
Canonical design tokens become Flutter theme primitives through the **34.1-01 token-bridge**, not through ad-hoc conversion you invent. The bridge is:
|
|
48
48
|
|
|
49
49
|
- the spec - `reference/native-platforms.md` (§5 Flutter mapping + §6 precision contract), and
|
|
50
|
-
- the emitter - **`emitFlutter`** from `scripts/lib/design-tokens/` (the
|
|
50
|
+
- the emitter - **`emitFlutter`** from `scripts/lib/design-tokens/` (the token-bridge facade extended with the Flutter sink).
|
|
51
51
|
|
|
52
52
|
`emitFlutter(tokenSet)` turns the flat `{ tokens }` map into the Dart `ThemeData`/`ColorScheme`/`TextTheme` constants (colors as `Color(0xAARRGGBB)`, dimensions as logical-px `double`, families as `String`). **You consume that output** - you do **not** re-derive how `#3B82F6` becomes a `Color`. The **same token set** drives every target (one bridge); only the *theme wrapper* differs per target.
|
|
53
53
|
|
|
@@ -99,13 +99,13 @@ Apply automatically; track each in the task output `## Deviations` section.
|
|
|
99
99
|
|
|
100
100
|
## Verification - degraded / optional (no SDK required)
|
|
101
101
|
|
|
102
|
-
Code generation needs **no** device/SDK
|
|
102
|
+
Code generation needs **no** device/SDK. Rendered verification is the **verify stage's** degraded-mode concern - point it at the **reused** connections, by name, never a precondition here:
|
|
103
103
|
|
|
104
104
|
- **iOS** target → `xcode-simulator` connection (from 34.1-02).
|
|
105
105
|
- **Android** target → `android-emulator` connection (from 34.1-03).
|
|
106
106
|
- **Web** target → the existing **Preview** connection.
|
|
107
107
|
|
|
108
|
-
Flutter ships **no connection doc of its own** - its targets reuse those three. When a connection is absent, verification degrades to snapshot-diff on supplied screenshots, then a code-only structural audit
|
|
108
|
+
Flutter ships **no connection doc of its own** - its targets reuse those three. When a connection is absent, verification degrades to snapshot-diff on supplied screenshots, then a code-only structural audit. Never hard-require a simulator.
|
|
109
109
|
|
|
110
110
|
---
|
|
111
111
|
|
|
@@ -126,7 +126,7 @@ Terminate with exactly this line, on its own line:
|
|
|
126
126
|
This agent MUST NOT:
|
|
127
127
|
|
|
128
128
|
- Run `git clean` (any flags) - absolute prohibition.
|
|
129
|
-
- Require a running device/simulator/emulator or the Flutter/Dart SDK to generate code
|
|
129
|
+
- Require a running device/simulator/emulator or the Flutter/Dart SDK to generate code.
|
|
130
130
|
- Re-derive the token→theme mapping - consume the bridge (`emitFlutter` / `reference/native-platforms.md`).
|
|
131
131
|
- Emit a single shared theme for all targets - Material targets get Material 3, the iOS target gets Cupertino (the multi-target contract).
|
|
132
132
|
- Create a connection doc for Flutter or edit the connection index - its targets reuse `xcode-simulator`/`android-emulator`/`Preview`.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: gdd-graph-refresh
|
|
3
|
-
description: "Refreshes the knowledge graph at .design/graph/graph.json from .design/intel/ slices using the native bin/gdd-graph CLI. Run after gdd-intel-updater to keep the semantic graph current.
|
|
3
|
+
description: "Refreshes the knowledge graph at .design/graph/graph.json from .design/intel/ slices using the native bin/gdd-graph CLI. Run after gdd-intel-updater to keep the semantic graph current. Intel and graph share a single {from,to,kind,weight?} schema, so no translation step is needed."
|
|
4
4
|
tools: Bash, Read, Write
|
|
5
5
|
color: green
|
|
6
6
|
default-tier: haiku
|
|
@@ -16,7 +16,7 @@ writes:
|
|
|
16
16
|
|
|
17
17
|
# gdd-graph-refresh
|
|
18
18
|
|
|
19
|
-
**Role:** Refresh the project knowledge graph at `.design/graph/graph.json` from the intel store at `.design/intel/`. Reads intel slices and (re)builds the graph via the native `bin/gdd-graph build` command.
|
|
19
|
+
**Role:** Refresh the project knowledge graph at `.design/graph/graph.json` from the intel store at `.design/intel/`. Reads intel slices and (re)builds the graph via the native `bin/gdd-graph build` command. Intel and graph share a single `{from,to,kind,weight?}` edge schema, so there is no translation step - `gdd-graph build` ingests intel slices directly.
|
|
20
20
|
|
|
21
21
|
## When to invoke
|
|
22
22
|
|
|
@@ -44,7 +44,7 @@ If `false`: print "Graphify not enabled in .design/config.json - skipping refres
|
|
|
44
44
|
|
|
45
45
|
### Step 3 - Rebuild graph from intel slices
|
|
46
46
|
|
|
47
|
-
|
|
47
|
+
With the shared `{from,to,kind,weight?}` schema between intel and graph, the canonical refresh is a single `build` invocation. No per-node iteration, no translation step.
|
|
48
48
|
|
|
49
49
|
```bash
|
|
50
50
|
node bin/gdd-graph build
|
|
@@ -64,9 +64,9 @@ Expected: `components.json decisions.json debt.json dependencies.json exports.js
|
|
|
64
64
|
|
|
65
65
|
Report any missing slices as warnings.
|
|
66
66
|
|
|
67
|
-
### Step 3.5 - Sync `.design/intel/agent-tiers.json`
|
|
67
|
+
### Step 3.5 - Sync `.design/intel/agent-tiers.json`
|
|
68
68
|
|
|
69
|
-
|
|
69
|
+
The runtime-neutral `reasoning-class` alias for `default-tier` lets downstream tooling read tier information without re-parsing markdown via `.design/intel/agent-tiers.json`. Both fields MUST be populated per agent so consumers do not have to know the equivalence table - the intel-updater is the single source of truth that fills the missing field via the locked map:
|
|
70
70
|
|
|
71
71
|
| `reasoning-class` | `default-tier` |
|
|
72
72
|
|-------------------|----------------|
|
package/agents/motion-mapper.md
CHANGED
|
@@ -26,7 +26,7 @@ You inventory motion and animation patterns. Zero session memory. You do not mod
|
|
|
26
26
|
## Required Reading
|
|
27
27
|
|
|
28
28
|
- `.design/STATE.md`
|
|
29
|
-
- `reference/motion.md` (if present) - **the motion domain-index
|
|
29
|
+
- `reference/motion.md` (if present) - **the motion domain-index: start here.** It indexes the
|
|
30
30
|
motion fragments below with a "use this when" pointer for each. Load a specific fragment ONLY when you reach the classification step that needs it (drill-in), not all of them up front.
|
|
31
31
|
- Drill-in fragments (load on demand, per the index in `motion.md`):
|
|
32
32
|
- `reference/motion-advanced.md` - advanced patterns: spring physics, scroll-driven, FLIP, View Transitions API, gesture/drag mechanics, clip-path patterns, blur crossfades, Framer Motion hardware-accel gotcha
|
|
@@ -69,7 +69,7 @@ From the collected values, bucket by:
|
|
|
69
69
|
- Normal: 200–400ms
|
|
70
70
|
- Slow: >400ms
|
|
71
71
|
|
|
72
|
-
## Advanced Scan Patterns
|
|
72
|
+
## Advanced Scan Patterns
|
|
73
73
|
|
|
74
74
|
When `reference/motion-advanced.md` is present, additionally scan for:
|
|
75
75
|
|
|
@@ -19,9 +19,9 @@ writes: []
|
|
|
19
19
|
|
|
20
20
|
## Role
|
|
21
21
|
|
|
22
|
-
At verify time, open the motion **exports** a project ships (Lottie JSON, Rive `.riv`) and surface motion-quality + performance concerns the 7-pillar code audit cannot see - frame-rate sanity, duration, embedded-asset bloat, bundle budget, and (for Rive) state-machine reachability. Motion exists as a *principle
|
|
22
|
+
At verify time, open the motion **exports** a project ships (Lottie JSON, Rive `.riv`) and surface motion-quality + performance concerns the 7-pillar code audit cannot see - frame-rate sanity, duration, embedded-asset bloat, bundle budget, and (for Rive) state-machine reachability. Motion exists as a *principle*; this agent makes it a *verifiable artifact*.
|
|
23
23
|
|
|
24
|
-
**Hard rule
|
|
24
|
+
**Hard rule: WARN, never block.** Every finding is a warning in `DESIGN-VERIFICATION.md`, never a `<blocker>` - motion is creative, not contractually broken. The single exception: a `must_have` that *explicitly* requires motion verification (then a failed check escalates to that must_have).
|
|
25
25
|
|
|
26
26
|
## When invoked
|
|
27
27
|
|
|
@@ -61,7 +61,7 @@ Map each returned warning to a verify finding (all WARN):
|
|
|
61
61
|
|
|
62
62
|
The validator also returns `info` (fr, layers, durationSeconds, embeddedAssets) - narrate it in the report.
|
|
63
63
|
|
|
64
|
-
## Step 3 - Check Rive (`.riv` is binary - be honest
|
|
64
|
+
## Step 3 - Check Rive (`.riv` is binary - be honest)
|
|
65
65
|
|
|
66
66
|
Pure JS cannot parse the `.riv` state-machine graph. The static floor is:
|
|
67
67
|
|
|
@@ -76,7 +76,7 @@ Read the cap from `.design/config.json` → `motion_budget_kb` (fallback **200 K
|
|
|
76
76
|
|
|
77
77
|
## Degrade behavior
|
|
78
78
|
|
|
79
|
-
- No Lottie player / no Rive runtime → the pure `validate-motion.cjs` (Lottie) + size/header (Rive) is the deterministic floor; then a code-only review of how the animation is loaded/triggered. Never blocks
|
|
79
|
+
- No Lottie player / no Rive runtime → the pure `validate-motion.cjs` (Lottie) + size/header (Rive) is the deterministic floor; then a code-only review of how the animation is loaded/triggered. Never blocks.
|
|
80
80
|
- No motion exports at all → this agent is not invoked.
|
|
81
81
|
|
|
82
82
|
## Record
|