@hegemonart/get-design-done 1.42.0 → 1.44.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.claude-plugin/marketplace.json +2 -2
- package/.claude-plugin/plugin.json +1 -1
- package/CHANGELOG.md +1126 -1038
- package/README.md +159 -155
- package/SKILL.md +42 -42
- package/agents/README.md +53 -53
- package/agents/a11y-mapper.md +3 -3
- package/agents/component-benchmark-harvester.md +8 -8
- package/agents/component-benchmark-synthesizer.md +11 -11
- package/agents/component-taxonomy-mapper.md +5 -5
- package/agents/compose-executor.md +25 -25
- package/agents/conflict-resolver.md +8 -8
- package/agents/cost-forecaster.md +12 -12
- package/agents/decision-journal-exporter.md +5 -5
- package/agents/design-advisor.md +19 -19
- package/agents/design-assumptions-analyzer.md +16 -16
- package/agents/design-auditor.md +39 -39
- package/agents/design-authority-watcher.md +28 -28
- package/agents/design-component-generator.md +27 -27
- package/agents/design-context-builder.md +66 -66
- package/agents/design-context-checker-gate.md +5 -5
- package/agents/design-context-checker.md +20 -20
- package/agents/design-discussant.md +23 -23
- package/agents/design-doc-writer.md +12 -12
- package/agents/design-executor.md +38 -38
- package/agents/design-figma-writer.md +31 -31
- package/agents/design-fixer.md +27 -27
- package/agents/design-integration-checker-gate.md +5 -5
- package/agents/design-integration-checker.md +29 -29
- package/agents/design-paper-writer.md +14 -14
- package/agents/design-pattern-mapper.md +9 -9
- package/agents/design-pencil-writer.md +12 -12
- package/agents/design-phase-researcher.md +14 -14
- package/agents/design-plan-checker.md +13 -13
- package/agents/design-planner.md +24 -24
- package/agents/design-reflector.md +48 -48
- package/agents/design-research-synthesizer.md +21 -21
- package/agents/design-start-writer.md +7 -7
- package/agents/design-update-checker.md +8 -8
- package/agents/design-verifier-gate.md +5 -5
- package/agents/design-verifier.md +80 -80
- package/agents/ds-generator.md +14 -14
- package/agents/ds-migration-planner.md +12 -12
- package/agents/email-executor.md +26 -26
- package/agents/experiment-result-ingester.md +10 -10
- package/agents/flutter-executor.md +28 -28
- package/agents/gdd-graph-refresh.md +10 -10
- package/agents/gdd-intel-updater.md +11 -11
- package/agents/gdd-learnings-extractor.md +2 -2
- package/agents/motion-mapper.md +8 -8
- package/agents/motion-verifier.md +16 -16
- package/agents/pdf-executor.md +27 -27
- package/agents/perf-analyzer.md +20 -20
- package/agents/pr-commenter.md +24 -24
- package/agents/prototype-gate.md +29 -29
- package/agents/quality-gate-runner.md +21 -21
- package/agents/rollout-coordinator.md +8 -8
- package/agents/swift-executor.md +41 -41
- package/agents/ticket-sync-agent.md +19 -19
- package/agents/token-mapper.md +6 -6
- package/agents/user-research-synthesizer.md +13 -13
- package/agents/visual-hierarchy-mapper.md +2 -2
- package/dist/claude-code/.claude/skills/add-backlog/SKILL.md +3 -3
- package/dist/claude-code/.claude/skills/analyze-dependencies/SKILL.md +10 -10
- package/dist/claude-code/.claude/skills/apply-reflections/SKILL.md +13 -13
- package/dist/claude-code/.claude/skills/apply-reflections/apply-reflections-procedure.md +20 -20
- package/dist/claude-code/.claude/skills/audit/SKILL.md +7 -7
- package/dist/claude-code/.claude/skills/bandit-status/SKILL.md +7 -7
- package/dist/claude-code/.claude/skills/benchmark/SKILL.md +7 -7
- package/dist/claude-code/.claude/skills/bootstrap-ds/SKILL.md +10 -10
- package/dist/claude-code/.claude/skills/brief/SKILL.md +20 -20
- package/dist/claude-code/.claude/skills/budget/SKILL.md +4 -4
- package/dist/claude-code/.claude/skills/cache-manager/SKILL.md +6 -6
- package/dist/claude-code/.claude/skills/cache-manager/cache-policy.md +5 -5
- package/dist/claude-code/.claude/skills/check-update/SKILL.md +5 -5
- package/dist/claude-code/.claude/skills/compare/SKILL.md +15 -15
- package/dist/claude-code/.claude/skills/compare/compare-rubric.md +17 -17
- package/dist/claude-code/.claude/skills/complete-cycle/SKILL.md +5 -5
- package/dist/claude-code/.claude/skills/connections/SKILL.md +11 -11
- package/dist/claude-code/.claude/skills/connections/connections-onboarding.md +76 -76
- package/dist/claude-code/.claude/skills/continue/SKILL.md +2 -2
- package/dist/claude-code/.claude/skills/darkmode/SKILL.md +17 -17
- package/dist/claude-code/.claude/skills/darkmode/darkmode-audit-procedure.md +7 -7
- package/dist/claude-code/.claude/skills/debug/SKILL.md +3 -3
- package/dist/claude-code/.claude/skills/debug/debug-feedback-loops.md +12 -12
- package/dist/claude-code/.claude/skills/design/SKILL.md +12 -12
- package/dist/claude-code/.claude/skills/design/design-procedure.md +23 -23
- package/dist/claude-code/.claude/skills/discover/SKILL.md +7 -7
- package/dist/claude-code/.claude/skills/discover/discover-procedure.md +18 -18
- package/dist/claude-code/.claude/skills/discuss/SKILL.md +12 -12
- package/dist/claude-code/.claude/skills/do/SKILL.md +1 -1
- package/dist/claude-code/.claude/skills/explore/SKILL.md +21 -21
- package/dist/claude-code/.claude/skills/explore/explore-procedure.md +48 -48
- package/dist/claude-code/.claude/skills/export/SKILL.md +9 -9
- package/dist/claude-code/.claude/skills/extract-learnings/SKILL.md +5 -5
- package/dist/claude-code/.claude/skills/fast/SKILL.md +7 -7
- package/dist/claude-code/.claude/skills/figma-extract/SKILL.md +11 -11
- package/dist/claude-code/.claude/skills/figma-write/SKILL.md +6 -6
- package/dist/claude-code/.claude/skills/graphify/SKILL.md +4 -4
- package/dist/claude-code/.claude/skills/health/SKILL.md +16 -16
- package/dist/claude-code/.claude/skills/health/health-mcp-detection.md +3 -3
- package/dist/claude-code/.claude/skills/health/health-skill-length-report.md +6 -6
- package/dist/claude-code/.claude/skills/help/SKILL.md +1 -1
- package/dist/claude-code/.claude/skills/list-assumptions/SKILL.md +4 -4
- package/dist/claude-code/.claude/skills/map/SKILL.md +12 -12
- package/dist/claude-code/.claude/skills/migrate/SKILL.md +5 -5
- package/dist/claude-code/.claude/skills/new-cycle/SKILL.md +2 -2
- package/dist/claude-code/.claude/skills/new-cycle/milestone-completeness-rubric.md +16 -16
- package/dist/claude-code/.claude/skills/new-project/SKILL.md +1 -1
- package/dist/claude-code/.claude/skills/next/SKILL.md +5 -5
- package/dist/claude-code/.claude/skills/note/SKILL.md +1 -1
- package/dist/claude-code/.claude/skills/openrouter-status/SKILL.md +4 -4
- package/dist/claude-code/.claude/skills/optimize/SKILL.md +15 -15
- package/dist/claude-code/.claude/skills/pause/SKILL.md +5 -5
- package/dist/claude-code/.claude/skills/peer-cli-add/SKILL.md +11 -11
- package/dist/claude-code/.claude/skills/peer-cli-add/peer-cli-protocol.md +39 -39
- package/dist/claude-code/.claude/skills/peer-cli-customize/SKILL.md +14 -14
- package/dist/claude-code/.claude/skills/peers/SKILL.md +4 -4
- package/dist/claude-code/.claude/skills/plan/SKILL.md +13 -13
- package/dist/claude-code/.claude/skills/plan/plan-procedure.md +24 -24
- package/dist/claude-code/.claude/skills/plant-seed/SKILL.md +4 -4
- package/dist/claude-code/.claude/skills/pr-branch/SKILL.md +2 -2
- package/dist/claude-code/.claude/skills/progress/SKILL.md +15 -15
- package/dist/claude-code/.claude/skills/quality-gate/SKILL.md +22 -22
- package/dist/claude-code/.claude/skills/quality-gate/threat-modeling.md +19 -19
- package/dist/claude-code/.claude/skills/quick/SKILL.md +5 -5
- package/dist/claude-code/.claude/skills/reapply-patches/SKILL.md +7 -7
- package/dist/claude-code/.claude/skills/reflect/SKILL.md +3 -3
- package/dist/claude-code/.claude/skills/reflect/procedures/capability-gap-scan.md +11 -11
- package/dist/claude-code/.claude/skills/report-issue/SKILL.md +5 -5
- package/dist/claude-code/.claude/skills/report-issue/report-issue-procedure.md +27 -27
- package/dist/claude-code/.claude/skills/resume/SKILL.md +9 -9
- package/dist/claude-code/.claude/skills/review-backlog/SKILL.md +3 -3
- package/dist/claude-code/.claude/skills/review-decisions/SKILL.md +3 -3
- package/dist/claude-code/.claude/skills/roi/SKILL.md +5 -5
- package/dist/claude-code/.claude/skills/rollout-status/SKILL.md +4 -4
- package/dist/claude-code/.claude/skills/router/SKILL.md +11 -11
- package/dist/claude-code/.claude/skills/router/capability-gap-emitter.md +6 -6
- package/dist/claude-code/.claude/skills/router/router-pick-emitter.md +9 -9
- package/dist/claude-code/.claude/skills/router/router-rules.md +7 -7
- package/dist/claude-code/.claude/skills/scan/SKILL.md +16 -16
- package/dist/claude-code/.claude/skills/scan/scan-procedure.md +42 -42
- package/dist/claude-code/.claude/skills/settings/SKILL.md +2 -2
- package/dist/claude-code/.claude/skills/ship/SKILL.md +7 -7
- package/dist/claude-code/.claude/skills/sketch/SKILL.md +10 -10
- package/dist/claude-code/.claude/skills/sketch-wrap-up/SKILL.md +12 -12
- package/dist/claude-code/.claude/skills/skill-manifest/SKILL.md +5 -5
- package/dist/claude-code/.claude/skills/spike/SKILL.md +7 -7
- package/dist/claude-code/.claude/skills/spike-wrap-up/SKILL.md +13 -13
- package/dist/claude-code/.claude/skills/start/SKILL.md +8 -8
- package/dist/claude-code/.claude/skills/start/start-procedure.md +9 -9
- package/dist/claude-code/.claude/skills/stats/SKILL.md +5 -5
- package/dist/claude-code/.claude/skills/style/SKILL.md +12 -12
- package/dist/claude-code/.claude/skills/style/style-doc-procedure.md +12 -12
- package/dist/claude-code/.claude/skills/synthesize/SKILL.md +10 -10
- package/dist/claude-code/.claude/skills/timeline/SKILL.md +4 -4
- package/dist/claude-code/.claude/skills/todo/SKILL.md +3 -3
- package/dist/claude-code/.claude/skills/turn-closeout/SKILL.md +10 -10
- package/dist/claude-code/.claude/skills/unlock-decision/SKILL.md +3 -3
- package/dist/claude-code/.claude/skills/update/SKILL.md +9 -9
- package/dist/claude-code/.claude/skills/using-gdd/SKILL.md +17 -17
- package/dist/claude-code/.claude/skills/verify/SKILL.md +13 -13
- package/dist/claude-code/.claude/skills/verify/verify-procedure.md +34 -34
- package/dist/claude-code/.claude/skills/warm-cache/SKILL.md +8 -8
- package/dist/claude-code/.claude/skills/watch-authorities/SKILL.md +9 -9
- package/dist/claude-code/.claude/skills/zoom-out/SKILL.md +4 -4
- package/package.json +9 -2
- package/reference/DEPRECATIONS.md +10 -10
- package/reference/STATE-TEMPLATE.md +26 -26
- package/reference/accessibility.md +13 -13
- package/reference/adr-format.md +13 -13
- package/reference/ai-native-tool-interface.md +5 -5
- package/reference/anti-patterns.md +9 -9
- package/reference/architecture-vocabulary.md +31 -31
- package/reference/audit-scoring.md +13 -13
- package/reference/authority-feeds.md +36 -36
- package/reference/bandit-integration.md +25 -25
- package/reference/brand-voice.md +36 -36
- package/reference/capability-gap-stage-gate.md +20 -20
- package/reference/checklists.md +26 -26
- package/reference/cli-localization.md +13 -13
- package/reference/codex-tools.md +2 -2
- package/reference/color-theory.md +28 -28
- package/reference/component-authoring.md +4 -4
- package/reference/components/README.md +13 -13
- package/reference/components/TEMPLATE.md +13 -13
- package/reference/components/accordion.md +15 -15
- package/reference/components/alert.md +25 -25
- package/reference/components/badge.md +18 -18
- package/reference/components/breadcrumbs.md +24 -24
- package/reference/components/button.md +21 -21
- package/reference/components/card.md +13 -13
- package/reference/components/checkbox.md +20 -20
- package/reference/components/chip.md +20 -20
- package/reference/components/command-palette.md +15 -15
- package/reference/components/date-picker.md +22 -22
- package/reference/components/drawer.md +13 -13
- package/reference/components/file-upload.md +22 -22
- package/reference/components/input.md +18 -18
- package/reference/components/label.md +25 -25
- package/reference/components/link.md +19 -19
- package/reference/components/list.md +17 -17
- package/reference/components/menu.md +19 -19
- package/reference/components/modal-dialog.md +16 -16
- package/reference/components/navbar.md +19 -19
- package/reference/components/pagination.md +18 -18
- package/reference/components/popover.md +12 -12
- package/reference/components/progress.md +18 -18
- package/reference/components/radio.md +17 -17
- package/reference/components/rich-text-editor.md +24 -24
- package/reference/components/select-combobox.md +16 -16
- package/reference/components/sidebar.md +15 -15
- package/reference/components/skeleton.md +20 -20
- package/reference/components/slider.md +20 -20
- package/reference/components/stepper.md +24 -24
- package/reference/components/switch.md +19 -19
- package/reference/components/table.md +21 -21
- package/reference/components/tabs.md +11 -11
- package/reference/components/toast.md +19 -19
- package/reference/components/tooltip.md +19 -19
- package/reference/components/tree.md +17 -17
- package/reference/composition.md +38 -38
- package/reference/config-schema.md +37 -37
- package/reference/context-md-format.md +9 -9
- package/reference/contrast-advanced.md +29 -29
- package/reference/conversational-ui.md +17 -17
- package/reference/cost-governance.md +14 -14
- package/reference/css-grid-layout.md +8 -8
- package/reference/cycle-handoff-preamble.md +3 -3
- package/reference/data-visualization.md +67 -67
- package/reference/debugger-philosophy.md +5 -5
- package/reference/design-system-guidance.md +21 -21
- package/reference/design-systems-catalog.md +20 -20
- package/reference/design-variants.md +11 -11
- package/reference/domains/civic-patterns.md +10 -10
- package/reference/domains/finance-patterns.md +9 -9
- package/reference/domains/gaming-patterns.md +9 -9
- package/reference/domains/healthcare-patterns.md +11 -11
- package/reference/ds-bootstrap-rubric.md +13 -13
- package/reference/email-design.md +22 -22
- package/reference/emotional-design.md +10 -10
- package/reference/error-recovery.md +11 -11
- package/reference/export-formats.md +7 -7
- package/reference/figma-sandbox.md +6 -6
- package/reference/first-principles.md +10 -10
- package/reference/form-patterns.md +26 -26
- package/reference/framer-motion-patterns.md +49 -49
- package/reference/gdd-runtime-audit.md +17 -17
- package/reference/gdd-threat-model.md +44 -44
- package/reference/gemini-tools.md +3 -3
- package/reference/gestalt.md +24 -24
- package/reference/heuristics.md +32 -32
- package/reference/i18n.md +44 -44
- package/reference/iconography.md +24 -24
- package/reference/image-optimization.md +14 -14
- package/reference/information-architecture.md +47 -47
- package/reference/intel-schema.md +1 -1
- package/reference/known-failure-modes.md +37 -37
- package/reference/meta-rules.md +5 -5
- package/reference/migrations/material-3-to-4.md +17 -17
- package/reference/migrations/mui-v6.md +16 -16
- package/reference/migrations/shadcn-v2.md +25 -25
- package/reference/migrations/tailwind-v4.md +21 -21
- package/reference/model-prices.md +3 -3
- package/reference/model-tiers.md +40 -40
- package/reference/motion-advanced.md +21 -21
- package/reference/motion-easings.md +29 -29
- package/reference/motion-interpolate.md +1 -1
- package/reference/motion-spring.md +13 -13
- package/reference/motion-transition-taxonomy.md +34 -34
- package/reference/motion.md +31 -31
- package/reference/multi-author-model.md +13 -13
- package/reference/native-platforms.md +28 -28
- package/reference/notification-routing.md +6 -6
- package/reference/onboarding-progressive-disclosure.md +32 -32
- package/reference/openrouter-tier-mapping.md +8 -8
- package/reference/palette-catalog.md +37 -37
- package/reference/parallelism-rules.md +20 -20
- package/reference/peer-cli-capabilities.md +14 -14
- package/reference/peer-protocols.md +21 -21
- package/reference/perf-budget.md +21 -21
- package/reference/performance.md +22 -22
- package/reference/platforms.md +51 -51
- package/reference/pr-review-integration.md +7 -7
- package/reference/prices/antigravity.md +3 -3
- package/reference/prices/augment.md +3 -3
- package/reference/prices/claude.md +2 -2
- package/reference/prices/cline.md +4 -4
- package/reference/prices/codebuddy.md +3 -3
- package/reference/prices/codex.md +2 -2
- package/reference/prices/copilot.md +3 -3
- package/reference/prices/cursor.md +3 -3
- package/reference/prices/gemini.md +2 -2
- package/reference/prices/kilo.md +3 -3
- package/reference/prices/opencode.md +4 -4
- package/reference/prices/qwen.md +2 -2
- package/reference/prices/trae.md +3 -3
- package/reference/prices/windsurf.md +3 -3
- package/reference/prices.openrouter.md +5 -5
- package/reference/print-design.md +36 -36
- package/reference/priority-matrix.md +2 -2
- package/reference/project-skills-guide.md +3 -3
- package/reference/proportion-systems.md +23 -23
- package/reference/pseudonymization-rules.md +30 -30
- package/reference/retrieval-contract.md +14 -14
- package/reference/review-format.md +7 -7
- package/reference/rollout-coordination.md +10 -10
- package/reference/rtl-cjk-cultural.md +39 -39
- package/reference/runtime-models.md +28 -28
- package/reference/shared-preamble.md +26 -26
- package/reference/skill-authoring-contract.md +16 -16
- package/reference/skill-placeholders.md +3 -3
- package/reference/start-interview.md +10 -10
- package/reference/style-vocabulary.md +25 -25
- package/reference/surfaces.md +4 -4
- package/reference/ticket-sync.md +9 -9
- package/reference/typography.md +64 -64
- package/reference/user-research.md +54 -54
- package/reference/variable-fonts-loading.md +15 -15
- package/reference/visual-hierarchy-layout.md +41 -41
- package/scripts/lib/harness-freshness.cjs +59 -0
- package/scripts/lib/health-mirror/index.cjs +27 -0
- package/scripts/lib/manifest/harnesses.json +280 -14
- package/scripts/lib/manifest/prose-denylist.json +1 -1
- package/scripts/lib/manifest/schemas/harnesses.schema.json +32 -0
- package/sdk/mcp/gdd-mcp/server.js +125 -0
- package/skills/add-backlog/SKILL.md +3 -3
- package/skills/analyze-dependencies/SKILL.md +10 -10
- package/skills/apply-reflections/SKILL.md +13 -13
- package/skills/apply-reflections/apply-reflections-procedure.md +20 -20
- package/skills/audit/SKILL.md +7 -7
- package/skills/bandit-status/SKILL.md +7 -7
- package/skills/benchmark/SKILL.md +7 -7
- package/skills/bootstrap-ds/SKILL.md +10 -10
- package/skills/brief/SKILL.md +20 -20
- package/skills/budget/SKILL.md +4 -4
- package/skills/cache-manager/SKILL.md +6 -6
- package/skills/cache-manager/cache-policy.md +5 -5
- package/skills/check-update/SKILL.md +5 -5
- package/skills/compare/SKILL.md +15 -15
- package/skills/compare/compare-rubric.md +17 -17
- package/skills/complete-cycle/SKILL.md +5 -5
- package/skills/connections/SKILL.md +11 -11
- package/skills/connections/connections-onboarding.md +76 -76
- package/skills/continue/SKILL.md +2 -2
- package/skills/darkmode/SKILL.md +17 -17
- package/skills/darkmode/darkmode-audit-procedure.md +7 -7
- package/skills/debug/SKILL.md +3 -3
- package/skills/debug/debug-feedback-loops.md +12 -12
- package/skills/design/SKILL.md +12 -12
- package/skills/design/design-procedure.md +23 -23
- package/skills/discover/SKILL.md +7 -7
- package/skills/discover/discover-procedure.md +18 -18
- package/skills/discuss/SKILL.md +12 -12
- package/skills/do/SKILL.md +1 -1
- package/skills/explore/SKILL.md +21 -21
- package/skills/explore/explore-procedure.md +48 -48
- package/skills/export/SKILL.md +9 -9
- package/skills/extract-learnings/SKILL.md +5 -5
- package/skills/fast/SKILL.md +7 -7
- package/skills/figma-extract/SKILL.md +11 -11
- package/skills/figma-write/SKILL.md +6 -6
- package/skills/graphify/SKILL.md +4 -4
- package/skills/health/SKILL.md +16 -16
- package/skills/health/health-mcp-detection.md +3 -3
- package/skills/health/health-skill-length-report.md +6 -6
- package/skills/help/SKILL.md +1 -1
- package/skills/list-assumptions/SKILL.md +4 -4
- package/skills/map/SKILL.md +12 -12
- package/skills/migrate/SKILL.md +5 -5
- package/skills/new-cycle/SKILL.md +2 -2
- package/skills/new-cycle/milestone-completeness-rubric.md +16 -16
- package/skills/new-project/SKILL.md +1 -1
- package/skills/next/SKILL.md +5 -5
- package/skills/note/SKILL.md +1 -1
- package/skills/openrouter-status/SKILL.md +4 -4
- package/skills/optimize/SKILL.md +15 -15
- package/skills/pause/SKILL.md +5 -5
- package/skills/peer-cli-add/SKILL.md +11 -11
- package/skills/peer-cli-add/peer-cli-protocol.md +39 -39
- package/skills/peer-cli-customize/SKILL.md +14 -14
- package/skills/peers/SKILL.md +4 -4
- package/skills/plan/SKILL.md +13 -13
- package/skills/plan/plan-procedure.md +24 -24
- package/skills/plant-seed/SKILL.md +4 -4
- package/skills/pr-branch/SKILL.md +2 -2
- package/skills/progress/SKILL.md +15 -15
- package/skills/quality-gate/SKILL.md +22 -22
- package/skills/quality-gate/threat-modeling.md +19 -19
- package/skills/quick/SKILL.md +5 -5
- package/skills/reapply-patches/SKILL.md +7 -7
- package/skills/reflect/SKILL.md +3 -3
- package/skills/reflect/procedures/capability-gap-scan.md +11 -11
- package/skills/report-issue/SKILL.md +5 -5
- package/skills/report-issue/report-issue-procedure.md +27 -27
- package/skills/resume/SKILL.md +9 -9
- package/skills/review-backlog/SKILL.md +3 -3
- package/skills/review-decisions/SKILL.md +3 -3
- package/skills/roi/SKILL.md +5 -5
- package/skills/rollout-status/SKILL.md +4 -4
- package/skills/router/SKILL.md +11 -11
- package/skills/router/capability-gap-emitter.md +6 -6
- package/skills/router/router-pick-emitter.md +9 -9
- package/skills/router/router-rules.md +7 -7
- package/skills/scan/SKILL.md +16 -16
- package/skills/scan/scan-procedure.md +42 -42
- package/skills/settings/SKILL.md +2 -2
- package/skills/ship/SKILL.md +7 -7
- package/skills/sketch/SKILL.md +10 -10
- package/skills/sketch-wrap-up/SKILL.md +12 -12
- package/skills/skill-manifest/SKILL.md +5 -5
- package/skills/spike/SKILL.md +7 -7
- package/skills/spike-wrap-up/SKILL.md +13 -13
- package/skills/start/SKILL.md +8 -8
- package/skills/start/start-procedure.md +9 -9
- package/skills/stats/SKILL.md +5 -5
- package/skills/style/SKILL.md +12 -12
- package/skills/style/style-doc-procedure.md +12 -12
- package/skills/synthesize/SKILL.md +10 -10
- package/skills/timeline/SKILL.md +4 -4
- package/skills/todo/SKILL.md +3 -3
- package/skills/turn-closeout/SKILL.md +10 -10
- package/skills/unlock-decision/SKILL.md +3 -3
- package/skills/update/SKILL.md +9 -9
- package/skills/using-gdd/SKILL.md +17 -17
- package/skills/verify/SKILL.md +13 -13
- package/skills/verify/verify-procedure.md +34 -34
- package/skills/warm-cache/SKILL.md +8 -8
- package/skills/watch-authorities/SKILL.md +9 -9
- package/skills/zoom-out/SKILL.md +4 -4
|
@@ -7,7 +7,7 @@ tags: [debug, feedback-loop, deterministic-signal, iterate-on-loop, mit-port, ma
|
|
|
7
7
|
last_updated: 2026-05-18
|
|
8
8
|
---
|
|
9
9
|
|
|
10
|
-
Source: mattpocock/skills (MIT)
|
|
10
|
+
Source: mattpocock/skills (MIT) - engineering/diagnose Phase 1 - adapted with permission. See `../NOTICE` for the full attribution block.
|
|
11
11
|
|
|
12
12
|
# Debug Feedback Loops
|
|
13
13
|
|
|
@@ -17,7 +17,7 @@ Build a feedback loop before any hypothesizing. A feedback loop is a determinist
|
|
|
17
17
|
|
|
18
18
|
## The 10 construction paths
|
|
19
19
|
|
|
20
|
-
Listed in priority order
|
|
20
|
+
Listed in priority order - try the cheaper, faster paths first. Each entry: when to reach for it, the shape of the loop, and the verification snippet.
|
|
21
21
|
|
|
22
22
|
### 1. Failing test
|
|
23
23
|
|
|
@@ -45,7 +45,7 @@ When to reach: the bug is visible only in a rendered browser context; DOM-level
|
|
|
45
45
|
|
|
46
46
|
### 5. Trace replay
|
|
47
47
|
|
|
48
|
-
For bugs reproducible from a captured execution trace, replay the trace deterministically. `rr` on Linux for native binaries, record-and-replay plugins for some browsers, Chrome DevTools recording for web, or a captured production trace for distributed systems. Replays are bit-for-bit reproducible
|
|
48
|
+
For bugs reproducible from a captured execution trace, replay the trace deterministically. `rr` on Linux for native binaries, record-and-replay plugins for some browsers, Chrome DevTools recording for web, or a captured production trace for distributed systems. Replays are bit-for-bit reproducible - the gold standard for non-deterministic bugs that have been captured once.
|
|
49
49
|
|
|
50
50
|
When to reach: the bug is hard to reproduce live but you have a captured trace; the trace runtime is available; bit-identical replay is achievable.
|
|
51
51
|
|
|
@@ -75,7 +75,7 @@ When to reach: a known-good reference implementation exists; the buggy code is s
|
|
|
75
75
|
|
|
76
76
|
### 10. HITL bash (Human In The Loop)
|
|
77
77
|
|
|
78
|
-
Last resort. A documented sequence of bash commands a human runs that produces a pass/fail signal. Slower (human in the path), but better than no loop. The agent reads stdout/stderr; the human reads the screen and reports. Use only when no automatable signal is available
|
|
78
|
+
Last resort. A documented sequence of bash commands a human runs that produces a pass/fail signal. Slower (human in the path), but better than no loop. The agent reads stdout/stderr; the human reads the screen and reports. Use only when no automatable signal is available - physical hardware, vendor portals, manual eyeball checks.
|
|
79
79
|
|
|
80
80
|
When to reach: every other path is blocked by an unautomatable surface; the human cost is acceptable for the duration of the investigation; the loop will be retired or upgraded the moment any earlier path becomes possible.
|
|
81
81
|
|
|
@@ -86,20 +86,20 @@ The loop is a first-class artifact. Iterate on it before iterating on hypotheses
|
|
|
86
86
|
- **Cache setup**: hoist expensive setup (DB seed, fixture load, container start) out of the loop body. Run the loop only on the fast inner part. Use `--no-rebuild`, persistent containers, or test-runner watch modes.
|
|
87
87
|
- **Narrow scope**: if the loop runs the full test suite to verify one bug, narrow to just the failing test/group. Fewer side-effects, faster iterations. `pytest -k`, `jest -t`, `vitest --testNamePattern`, `go test -run` are your friends.
|
|
88
88
|
- **Pin time**: when the bug is time-dependent, freeze the clock (`sinon.useFakeTimers`, `jest.useFakeTimers`, `freezegun`, `time-machine`). Removes wallclock as a variable.
|
|
89
|
-
- **Seed RNG**: every random source gets a fixed seed in the loop. `Math.random`, `crypto.randomBytes`, `random.seed(...)`, `rand::SeedableRng`. Determinism over coverage
|
|
89
|
+
- **Seed RNG**: every random source gets a fixed seed in the loop. `Math.random`, `crypto.randomBytes`, `random.seed(...)`, `rand::SeedableRng`. Determinism over coverage - the loop must be bit-identical given the same code state.
|
|
90
90
|
- **Isolate filesystem**: run in a `tmpdir`; reset between iterations. Avoids "fixed on my machine" via stale state. Bind-mount or copy fixtures into the tmpdir per iteration.
|
|
91
91
|
- **Freeze network**: mock or record/replay all outbound calls (`nock`, `vcr`, `polly.js`, `mitmproxy --replay`). Real-network loops are non-deterministic by definition.
|
|
92
92
|
|
|
93
|
-
The discipline: every iteration of the loop should be bit-identical given the same code state. If two iterations differ without a code change, the loop has a hidden input
|
|
93
|
+
The discipline: every iteration of the loop should be bit-identical given the same code state. If two iterations differ without a code change, the loop has a hidden input - find it and pin it before continuing.
|
|
94
94
|
|
|
95
95
|
## Non-deterministic bugs
|
|
96
96
|
|
|
97
|
-
Some bugs surface only sometimes. The goal is NOT a clean repro
|
|
97
|
+
Some bugs surface only sometimes. The goal is NOT a clean repro - the goal is to raise the reproduction rate to debuggable.
|
|
98
98
|
|
|
99
99
|
- **Measure baseline rate**: run the loop N=20 times. Note pass/fail count. Record the rate so you can tell whether later changes helped.
|
|
100
100
|
- **Raise stressors**: add concurrency, contention, memory pressure, network jitter (use `tc qdisc add dev lo root netem delay 100ms 50ms` on Linux, `Network Link Conditioner` on macOS). Re-measure.
|
|
101
101
|
- **Target the suspect axis**: if you suspect a race, add a deterministic sleep at the suspect point and measure. If reproduction jumps to 100% with sleep, the race is in that region. If it stays at baseline, the race is elsewhere.
|
|
102
|
-
- **A 30% reproduction rate is debuggable.** A 5% rate isn't
|
|
102
|
+
- **A 30% reproduction rate is debuggable.** A 5% rate isn't - keep raising stressors until you cross 30%. At 30% you can iterate; at 5% you're guessing whether your fix helped or you got lucky.
|
|
103
103
|
|
|
104
104
|
## When the loop is good enough
|
|
105
105
|
|
|
@@ -107,13 +107,13 @@ The loop is good enough when:
|
|
|
107
107
|
|
|
108
108
|
- It runs in under a minute (preferably under 10 seconds).
|
|
109
109
|
- It's deterministic (or, for non-determinism, reproduces at least 30% of the time).
|
|
110
|
-
- It's automatable
|
|
110
|
+
- It's automatable - no human in the inner loop except by explicit choice (Path 10).
|
|
111
111
|
- A fresh agent could pick up the loop and run it without context.
|
|
112
112
|
|
|
113
113
|
Only after the loop is good enough should you proceed to hypothesizing the fix. The hypothesis cycle is governed by `./debugger-philosophy.md` (one variable at a time, do not stop at first plausible cause, the bug is where you didn't look).
|
|
114
114
|
|
|
115
115
|
## Cross-references
|
|
116
116
|
|
|
117
|
-
- `./debugger-philosophy.md`
|
|
118
|
-
- `../skills/debug/SKILL.md`
|
|
119
|
-
- `../NOTICE`
|
|
117
|
+
- `./debugger-philosophy.md` - companion framing; the hypothesis-cycle discipline that runs in Phase 2 once the loop is in place.
|
|
118
|
+
- `../skills/debug/SKILL.md` - Phase 1 of the debug skill mandates this catalog before any hypothesis generation.
|
|
119
|
+
- `../NOTICE` - full mattpocock/skills MIT attribution.
|
package/skills/design/SKILL.md
CHANGED
|
@@ -6,7 +6,7 @@ user-invocable: true
|
|
|
6
6
|
tools: Read, Write, Bash, Grep, Glob, Task, AskUserQuestion, mcp__gdd_state__get, mcp__gdd_state__transition_stage, mcp__gdd_state__update_progress, mcp__gdd_state__set_status, mcp__gdd_state__add_blocker, mcp__gdd_state__resolve_blocker, mcp__gdd_state__checkpoint
|
|
7
7
|
---
|
|
8
8
|
|
|
9
|
-
# Get Design Done
|
|
9
|
+
# Get Design Done - Design
|
|
10
10
|
|
|
11
11
|
**Stage 4 of 5** in the get-design-done pipeline. Thin orchestrator. All design execution intelligence lives in `agents/design-executor.md`.
|
|
12
12
|
|
|
@@ -28,25 +28,25 @@ Detail: `./design-procedure.md` §Stage entry.
|
|
|
28
28
|
|
|
29
29
|
- `--auto` -> `auto_mode=true` (no mid-stage prompts; architectural deviations stop the individual task but continue the rest).
|
|
30
30
|
- `--parallel` -> `parallel_mode=true` (use worktree isolation for `Parallel: true` tasks).
|
|
31
|
-
- `--variants N` -> `variants_mode` (default N=2): for tasks that build a user-facing surface, the executor emits **N competing, hypothesis-tagged variants** (`<variant id component pattern hypothesis>`) instead of one. Before generating, consult the `design_arms` posterior (`scripts/lib/ds-arms/design-arms-store.cjs`) to bias toward patterns that have won prior A/B / user-research outcomes
|
|
31
|
+
- `--variants N` -> `variants_mode` (default N=2): for tasks that build a user-facing surface, the executor emits **N competing, hypothesis-tagged variants** (`<variant id component pattern hypothesis>`) instead of one. Before generating, consult the `design_arms` posterior (`scripts/lib/ds-arms/design-arms-store.cjs`) to bias toward patterns that have won prior A/B / user-research outcomes - **advisory, never directive** (the user's explicit choice always wins). The tagged variants flow to A/B (LaunchDarkly/Statsig/GrowthBook) for outcome ingestion. Full schema + the outcome loop: `../../reference/design-variants.md`.
|
|
32
32
|
- **Directionally-open check** (skipped if `auto_mode`): scan DESIGN-PLAN.md for tasks whose criteria read "explore N directions" / "pick a visual approach" and suggest `/gdd:sketch` first.
|
|
33
|
-
- **Project-local conventions**: include any `./.claude/skills/design-*-conventions.md` and `~/.claude/gdd/global-skills/*.md` in every executor's `<required_reading>`
|
|
33
|
+
- **Project-local conventions**: include any `./.claude/skills/design-*-conventions.md` and `~/.claude/gdd/global-skills/*.md` in every executor's `<required_reading>` - global conventions inform but do not override project-local D-XX decisions.
|
|
34
34
|
- **`.stories.tsx` stub**: after each new component file is created by the executor, emit a CSF stub alongside if `.storybook/` exists or `"storybook"` is in `package.json`, even with the dev server offline. Detail: `./design-procedure.md` §.stories.tsx Stub.
|
|
35
35
|
|
|
36
36
|
---
|
|
37
37
|
|
|
38
|
-
## Step 1
|
|
38
|
+
## Step 1 - Parse DESIGN-PLAN.md
|
|
39
39
|
|
|
40
40
|
Read `.design/DESIGN-PLAN.md`. Partition tasks by `## Wave N` heading. Within each wave, partition by `Parallel: true` vs `Parallel: false`. Compute `total_tasks` for the `task_progress` denominator. If resuming, skip tasks whose `.design/tasks/task-NN.md` already exists.
|
|
41
41
|
|
|
42
42
|
---
|
|
43
43
|
|
|
44
|
-
## Step 2
|
|
44
|
+
## Step 2 - Wave-by-Wave Execution
|
|
45
45
|
|
|
46
46
|
For each wave in order:
|
|
47
47
|
|
|
48
48
|
1. **Parallelism decision (per wave)**: read `.design/config.json` `parallelism`, collect candidates, check `Touches:` / `writes:` / `parallel-safe` / `typical-duration-seconds`, apply `reference/parallelism-rules.md` hard->soft. Overlapping `Touches:` split into sequential sub-waves. Record verdict via `mcp__gdd_state__update_progress` with `status: "design_wave_<N>_parallelism: <parallel|serial>, reason=<short-reason>"`.
|
|
49
|
-
2. **Executor STATE.md protocol** (inlined verbatim into every `design-executor` prompt): executors update STATE.md ONLY via `gdd-state` MCP tools
|
|
49
|
+
2. **Executor STATE.md protocol** (inlined verbatim into every `design-executor` prompt): executors update STATE.md ONLY via `gdd-state` MCP tools - `update_progress`, `add_blocker`, `resolve_blocker`. NEVER `Read`+`Write` `.design/STATE.md` directly. The MCP tools enforce the lockfile (Plan 20-01) and emit mutation events (Plan 20-06) so concurrent executors serialize safely.
|
|
50
50
|
3. **Parallel batch** (when `parallel_mode=true` AND any `Parallel: true` tasks in wave): announce the partition, spawn all `Parallel: true` tasks via concurrent `Task("design-executor", ..., isolation: "worktree")` calls in ONE response, wait for all `## EXECUTION COMPLETE` markers, merge worktrees (non-overlapping `Touches:` guarantees no conflicts; surface any conflict to the user before continuing), then `update_progress` + `checkpoint`.
|
|
51
51
|
4. **Sequential tail** (`Parallel: false` or `parallel_mode=false`): spawn one `design-executor` at a time (no worktree isolation), waiting for each `## EXECUTION COMPLETE` and emitting `update_progress` per task; `checkpoint` after the final task of the wave.
|
|
52
52
|
|
|
@@ -54,11 +54,11 @@ Full executor prompts (parallel + sequential variants) and the merge-worktrees p
|
|
|
54
54
|
|
|
55
55
|
---
|
|
56
56
|
|
|
57
|
-
## Step 3
|
|
57
|
+
## Step 3 - Wave Checkpoint
|
|
58
58
|
|
|
59
59
|
After each wave, unless `auto_mode=true`, prompt: "Ready for Wave [N+1]? (yes / review first)". Skip in `auto_mode`.
|
|
60
60
|
|
|
61
|
-
## Step 4
|
|
61
|
+
## Step 4 - Handle Deviations
|
|
62
62
|
|
|
63
63
|
Check task-NN.md files for `status: deviation`. If found: `mcp__gdd_state__get` -> read `state.blockers`, present affected task IDs + blocker descriptions, offer (a) stop, (b) continue. `auto_mode`: continue, log. When a blocker is later fixed by a follow-up task: `mcp__gdd_state__resolve_blocker`.
|
|
64
64
|
|
|
@@ -66,8 +66,8 @@ Check task-NN.md files for `status: deviation`. If found: `mcp__gdd_state__get`
|
|
|
66
66
|
|
|
67
67
|
## State Update (exit)
|
|
68
68
|
|
|
69
|
-
1. `mcp__gdd_state__set_status` -> `"design_complete"`
|
|
70
|
-
2. `mcp__gdd_state__checkpoint`
|
|
69
|
+
1. `mcp__gdd_state__set_status` -> `"design_complete"` - marks the stage complete WITHOUT transitioning (verify owns its own `transition_stage` on entry).
|
|
70
|
+
2. `mcp__gdd_state__checkpoint` - stamps `last_checkpoint`, appends `design_completed_at` to `<timestamps>`.
|
|
71
71
|
|
|
72
72
|
## After Completion
|
|
73
73
|
|
|
@@ -83,14 +83,14 @@ After all tasks finish, if STATE.md `<connections>` has `figma: available`, offe
|
|
|
83
83
|
Do NOT transition to verify (or invoke `/gdd:verify`) until `.design/DESIGN-SUMMARY.md` is committed. If this project uses a custom `.design` location, read the artifact path from `.design/STATE.md` rather than assuming the default.
|
|
84
84
|
</HARD-GATE>
|
|
85
85
|
|
|
86
|
-
## Rationalizations
|
|
86
|
+
## Rationalizations - Thought to Reality
|
|
87
87
|
|
|
88
88
|
The excuses an agent uses to cut corners during design implementation, and the cost of each:
|
|
89
89
|
|
|
90
90
|
| Thought | Reality |
|
|
91
91
|
|---------|---------|
|
|
92
92
|
| "I can skip planning for this small task and just implement it." | Plan-skipped tasks blow scope per cycle telemetry; the gate is for the typical case, not the exception. |
|
|
93
|
-
| "These two tasks touch nearby files but I'll run them in parallel anyway." | Overlapping `Touches:` in a parallel batch produce merge conflicts that silently drop one task's work
|
|
93
|
+
| "These two tasks touch nearby files but I'll run them in parallel anyway." | Overlapping `Touches:` in a parallel batch produce merge conflicts that silently drop one task's work - split into sequential sub-waves. |
|
|
94
94
|
| "Hardcoding this value is faster than wiring the token." | A hardcoded value is a stub the verifier catches as drift from the design tokens; you pay for it twice. |
|
|
95
95
|
| "I'll emit the `.stories.tsx` stub later when Storybook is back up." | The CSF stub must land with the component or the next cycle's visual-regression scope misses it entirely. |
|
|
96
96
|
| "This deviation is minor, I won't record a blocker." | An unrecorded deviation can't be resolved by a follow-up task, so it leaks into verify as an unexplained gap. |
|
|
@@ -7,8 +7,8 @@ tags: [design, procedure, extracted, pipeline-stage, execute, wave-coordination]
|
|
|
7
7
|
last_updated: 2026-05-18
|
|
8
8
|
---
|
|
9
9
|
|
|
10
|
-
Source: extracted from `skills/design/SKILL.md` (Phase 28.5 rework
|
|
11
|
-
The skill's
|
|
10
|
+
Source: extracted from `skills/design/SKILL.md` (Phase 28.5 rework - D-10 extract-then-link).
|
|
11
|
+
The skill's essential workflow stays in `../skills/design/SKILL.md`; this file holds the
|
|
12
12
|
detail the agent reaches for when executing a specific step (agent spawn prompts, wave
|
|
13
13
|
coordination, executor STATE.md protocol, figma-write dispatch).
|
|
14
14
|
|
|
@@ -16,7 +16,7 @@ coordination, executor STATE.md protocol, figma-write dispatch).
|
|
|
16
16
|
|
|
17
17
|
Detailed procedure for the get-design-done `design` Stage 4 orchestrator. Companion to
|
|
18
18
|
`../skills/design/SKILL.md`. Read this file when executing a specific design step; the
|
|
19
|
-
SKILL.md keeps the
|
|
19
|
+
SKILL.md keeps the essential wave-iteration workflow + decision tree, this file holds
|
|
20
20
|
the full executor prompts and parallelism semantics.
|
|
21
21
|
|
|
22
22
|
---
|
|
@@ -25,7 +25,7 @@ the full executor prompts and parallelism semantics.
|
|
|
25
25
|
|
|
26
26
|
1. Call `mcp__gdd_state__transition_stage` with `to: "design"`.
|
|
27
27
|
- Gate failure surfaces `error.context.blockers` to the user; do not advance.
|
|
28
|
-
- If the transition succeeds and the prior stage was already `design` with `status: in_progress`, this is a RESUME
|
|
28
|
+
- If the transition succeeds and the prior stage was already `design` with `status: in_progress`, this is a RESUME - use `task_progress` numerator as source of truth and skip tasks that already have a corresponding `.design/tasks/task-NN.md` file.
|
|
29
29
|
2. Call `mcp__gdd_state__get` -> snapshot `state`; read `state.position.wave` to decide execution plan.
|
|
30
30
|
|
|
31
31
|
Abort only if `.design/DESIGN-PLAN.md` is missing:
|
|
@@ -40,17 +40,17 @@ Abort only if `.design/DESIGN-PLAN.md` is missing:
|
|
|
40
40
|
|
|
41
41
|
---
|
|
42
42
|
|
|
43
|
-
## Pre-execution
|
|
43
|
+
## Pre-execution - Directionally-open check
|
|
44
44
|
|
|
45
|
-
Scan DESIGN-PLAN.md for tasks marked as "directionally open" (exploration-appropriate
|
|
45
|
+
Scan DESIGN-PLAN.md for tasks marked as "directionally open" (exploration-appropriate - e.g., tasks whose acceptance criteria read "explore N directions" or "pick a visual approach"). If any are found, print:
|
|
46
46
|
|
|
47
|
-
> "Tasks [IDs] appear directionally open
|
|
47
|
+
> "Tasks [IDs] appear directionally open - consider running `/gdd:sketch` first to explore variants before implementation."
|
|
48
48
|
|
|
49
49
|
Skip if `auto_mode=true`.
|
|
50
50
|
|
|
51
|
-
## Pre-execution
|
|
51
|
+
## Pre-execution - Project-local conventions
|
|
52
52
|
|
|
53
|
-
When spawning the executor, include any `./.claude/skills/design-*-conventions.md` files in `<required_reading>` so the executor sees project-local design conventions (typography, color, layout, motion, component, interaction decisions codified from prior sketch wrap-ups). Also include any `~/.claude/gdd/global-skills/*.md` files if the directory exists
|
|
53
|
+
When spawning the executor, include any `./.claude/skills/design-*-conventions.md` files in `<required_reading>` so the executor sees project-local design conventions (typography, color, layout, motion, component, interaction decisions codified from prior sketch wrap-ups). Also include any `~/.claude/gdd/global-skills/*.md` files if the directory exists - global skills are cross-project conventions that inform but do not override project-local D-XX decisions.
|
|
54
54
|
|
|
55
55
|
---
|
|
56
56
|
|
|
@@ -58,12 +58,12 @@ When spawning the executor, include any `./.claude/skills/design-*-conventions.m
|
|
|
58
58
|
|
|
59
59
|
After every new component file is created by the design-executor:
|
|
60
60
|
|
|
61
|
-
Step 1
|
|
61
|
+
Step 1 - Check project detection (does not require server running):
|
|
62
62
|
Bash: ls .storybook/ 2>/dev/null || grep '"storybook"' package.json 2>/dev/null
|
|
63
63
|
-> Found -> storybook_project: true
|
|
64
64
|
-> Not found -> skip .stories.tsx emission
|
|
65
65
|
|
|
66
|
-
Step 2
|
|
66
|
+
Step 2 - When storybook_project: true, emit a CSF stub alongside the component:
|
|
67
67
|
File: `<same directory as component>/<ComponentName>.stories.tsx`
|
|
68
68
|
Content follows CSF format (see `connections/storybook.md` for full template):
|
|
69
69
|
- Import `Meta` and `StoryObj` from `@storybook/react`
|
|
@@ -77,7 +77,7 @@ the dev server is running. New components need stories even in offline/CI contex
|
|
|
77
77
|
|
|
78
78
|
---
|
|
79
79
|
|
|
80
|
-
## Step 1
|
|
80
|
+
## Step 1 - Parse DESIGN-PLAN.md
|
|
81
81
|
|
|
82
82
|
Read `.design/DESIGN-PLAN.md`. Partition tasks by `## Wave N` heading. Within each wave, partition by `Parallel: true` vs `Parallel: false`. Compute `total_tasks` for `task_progress` denominator.
|
|
83
83
|
|
|
@@ -91,23 +91,23 @@ For each wave:
|
|
|
91
91
|
1. Read `.design/config.json` `parallelism` (or defaults from `reference/config-schema.md`).
|
|
92
92
|
2. Collect candidates in the wave; check `Touches:`, `writes:`, `parallel-safe`, and `typical-duration-seconds` fields.
|
|
93
93
|
3. Apply rules in order from `reference/parallelism-rules.md` (hard -> soft). Overlapping Touches split into sequential sub-waves.
|
|
94
|
-
4. Record the parallelism decision for this wave via `mcp__gdd_state__update_progress` with `task_progress: "<completed>/<total>"` and `status: "design_wave_<N>_parallelism: <parallel|serial>, reason=<short-reason>"`
|
|
94
|
+
4. Record the parallelism decision for this wave via `mcp__gdd_state__update_progress` with `task_progress: "<completed>/<total>"` and `status: "design_wave_<N>_parallelism: <parallel|serial>, reason=<short-reason>"` - the status string is the canonical carrier (mirrors the plan-stage convention from Plan 20-09; a dedicated tool may be added in a follow-on plan).
|
|
95
95
|
5. If `parallel`: spawn all candidates via concurrent `Task()` calls in one response. If `serial`: spawn sequentially.
|
|
96
96
|
|
|
97
97
|
### Executor prompt template (applies to every spawned design-executor)
|
|
98
98
|
|
|
99
99
|
Every spawned executor receives the following STATE.md contract in its prompt:
|
|
100
100
|
|
|
101
|
-
> **STATE.md mutation protocol**
|
|
101
|
+
> **STATE.md mutation protocol** - When you complete a task in your assigned batch, update STATE.md ONLY via the `gdd-state` MCP tools. Specifically:
|
|
102
102
|
> - Report task progress: `mcp__gdd_state__update_progress` with your new `task_progress` fraction.
|
|
103
103
|
> - Add blockers: `mcp__gdd_state__add_blocker` with `{ stage: "design", date: <today>, text: "..." }`.
|
|
104
104
|
> - Resolve your own blockers on fix: `mcp__gdd_state__resolve_blocker` with the blocker id.
|
|
105
105
|
>
|
|
106
|
-
> Do NOT `Read` + `Write` `.design/STATE.md` directly
|
|
106
|
+
> Do NOT `Read` + `Write` `.design/STATE.md` directly - the MCP tools enforce the lockfile and emit mutation events. Direct writes corrupt parallel state.
|
|
107
107
|
|
|
108
108
|
Inline this protocol block verbatim inside every design-executor prompt in both the parallel-batch and sequential-tail spawns below. Concurrent executors (Phase 10.1 parallel mode) each emit `update_progress` calls; the lockfile (Plan 20-01) and event stream (Plan 20-06) serialize them safely.
|
|
109
109
|
|
|
110
|
-
## Step 2
|
|
110
|
+
## Step 2 - Wave-by-Wave Execution
|
|
111
111
|
|
|
112
112
|
For each Wave in order (Wave 1, Wave 2, ...):
|
|
113
113
|
|
|
@@ -160,7 +160,7 @@ Emit `## EXECUTION COMPLETE` when done.
|
|
|
160
160
|
|
|
161
161
|
Wait for all parallel tasks to emit `## EXECUTION COMPLETE`.
|
|
162
162
|
|
|
163
|
-
**Merge worktrees** (preserved from v2.1.0
|
|
163
|
+
**Merge worktrees** (preserved from v2.1.0 - do not redesign):
|
|
164
164
|
|
|
165
165
|
```
|
|
166
166
|
=== Parallel batch complete ===
|
|
@@ -176,7 +176,7 @@ Merge each worktree branch back into the working directory. Each agent touched n
|
|
|
176
176
|
After merge, roll up the batch's progress:
|
|
177
177
|
|
|
178
178
|
- Call `mcp__gdd_state__update_progress` with `task_progress: "<completed>/<total>"` and `status: "design_wave_<N>_parallel_batch_complete"`.
|
|
179
|
-
- Call `mcp__gdd_state__checkpoint`
|
|
179
|
+
- Call `mcp__gdd_state__checkpoint` - records the wave boundary in `<timestamps>` and bumps `last_checkpoint`.
|
|
180
180
|
|
|
181
181
|
### Sequential tail (Parallel: false tasks, or all tasks if `parallel_mode=false`)
|
|
182
182
|
|
|
@@ -222,11 +222,11 @@ Emit `## EXECUTION COMPLETE` when done.
|
|
|
222
222
|
|
|
223
223
|
After each task completes, call `mcp__gdd_state__update_progress` with the new `task_progress: "<completed>/<total>"` and `status: "design_wave_<N>_task_<NN>_complete"`.
|
|
224
224
|
|
|
225
|
-
After the final sequential task of the wave, call `mcp__gdd_state__checkpoint`
|
|
225
|
+
After the final sequential task of the wave, call `mcp__gdd_state__checkpoint` - records the wave boundary in `<timestamps>` and bumps `last_checkpoint`.
|
|
226
226
|
|
|
227
227
|
---
|
|
228
228
|
|
|
229
|
-
## Step 3
|
|
229
|
+
## Step 3 - Wave Checkpoint
|
|
230
230
|
|
|
231
231
|
After each wave (unless `--auto` flag was passed):
|
|
232
232
|
|
|
@@ -243,7 +243,7 @@ Skip checkpoint if `auto_mode=true`.
|
|
|
243
243
|
|
|
244
244
|
---
|
|
245
245
|
|
|
246
|
-
## Step 4
|
|
246
|
+
## Step 4 - Handle Deviations
|
|
247
247
|
|
|
248
248
|
After each wave, check task-NN.md files for `status: deviation`. If any found:
|
|
249
249
|
|
|
@@ -256,8 +256,8 @@ After each wave, check task-NN.md files for `status: deviation`. If any found:
|
|
|
256
256
|
|
|
257
257
|
## State Update (exit)
|
|
258
258
|
|
|
259
|
-
1. Call `mcp__gdd_state__set_status` with `status: "design_complete"`
|
|
260
|
-
2. Call `mcp__gdd_state__checkpoint`
|
|
259
|
+
1. Call `mcp__gdd_state__set_status` with `status: "design_complete"` - marks the stage completed without transitioning; verify calls `transition_stage` on its entry, keeping the transition atomic with the owning stage.
|
|
260
|
+
2. Call `mcp__gdd_state__checkpoint` - stamps `last_checkpoint` and appends a `design_completed_at` entry to `<timestamps>`.
|
|
261
261
|
|
|
262
262
|
---
|
|
263
263
|
|
package/skills/discover/SKILL.md
CHANGED
|
@@ -5,7 +5,7 @@ argument-hint: "[--auto]"
|
|
|
5
5
|
user-invocable: true
|
|
6
6
|
---
|
|
7
7
|
|
|
8
|
-
# Get Design Done
|
|
8
|
+
# Get Design Done - Discover
|
|
9
9
|
|
|
10
10
|
**Stage 1.5 of 4.** Produces `.design/DESIGN-CONTEXT.md`.
|
|
11
11
|
|
|
@@ -16,10 +16,10 @@ Full procedure detail: `./discover-procedure.md`.
|
|
|
16
16
|
## State Integration
|
|
17
17
|
|
|
18
18
|
1. Read `.design/STATE.md`.
|
|
19
|
-
- **Missing** -> create minimal skeleton from `reference/STATE-TEMPLATE.md` (stage=discover, status=in_progress, task_progress=0/1) and log warning "STATE.md not found
|
|
19
|
+
- **Missing** -> create minimal skeleton from `reference/STATE-TEMPLATE.md` (stage=discover, status=in_progress, task_progress=0/1) and log warning "STATE.md not found - created fresh. If this is a resumed session, run /get-design-done:scan first."
|
|
20
20
|
- **Present + stage==discover + status==in_progress** -> RESUME (continue interview; do not reset).
|
|
21
21
|
- **Otherwise** -> normal transition: set frontmatter stage=discover, `<position>` stage=discover, status=in_progress, task_progress=0/1.
|
|
22
|
-
2. Probe connection availability. ToolSearch runs FIRST (MCP tools may be in the deferred tool set). Run three probes
|
|
22
|
+
2. Probe connection availability. ToolSearch runs FIRST (MCP tools may be in the deferred tool set). Run three probes - A (Figma, variant-agnostic with prefix tiebreaker), B (Refero, ToolSearch-only), C (Pinterest, ToolSearch-only). After all probes, write `<connections>` to STATE.md so the builder doesn't re-probe. Full probe specs: `./discover-procedure.md` §Connection Probes.
|
|
23
23
|
3. Update `last_checkpoint`. Write STATE.md.
|
|
24
24
|
|
|
25
25
|
---
|
|
@@ -30,13 +30,13 @@ When `--auto` is passed to the builder: if `tailwind.config.{js,cjs,mjs,ts}` exi
|
|
|
30
30
|
|
|
31
31
|
---
|
|
32
32
|
|
|
33
|
-
## Step 1
|
|
33
|
+
## Step 1 - Spawn design-context-builder
|
|
34
34
|
|
|
35
35
|
Spawn `design-context-builder` -> `.design/DESIGN-CONTEXT.md`. The agent auto-detects via grep/glob first and interviews only for areas where auto-detect returned no confident answer. Baseline audit directory chain: `src/` -> `app/` -> `pages/` -> `lib/` -> flag "layout unknown". Common gray areas to probe (Area 7): font-change risk, token-layer introduction risk, component rebuild-vs-restyle. Wait for `## CONTEXT COMPLETE`, then update STATE.md `task_progress = 0.5`. Full prompt: `./discover-procedure.md` §Step 1.
|
|
36
36
|
|
|
37
37
|
---
|
|
38
38
|
|
|
39
|
-
## Step 1.75
|
|
39
|
+
## Step 1.75 - Lazy gate: should design-context-checker run? (Plan 10.1-04, D-21)
|
|
40
40
|
|
|
41
41
|
Spawn the cheap Haiku gate `design-context-checker-gate` before the full checker. It applies the single-file heuristic (is `DESIGN-CONTEXT.md` in `git diff --name-only HEAD~1..HEAD`?) and emits JSON + `## GATE COMPLETE`. On `spawn: false`: append `lazy_skipped: true` telemetry row, skip Step 2, set STATE.md `<position>` as if checker passed. On `spawn: true`: proceed to Step 2. On first-run discover the gate always returns `spawn: true` (builder just wrote the file); the gate meaningfully short-circuits only on re-runs where the builder made no changes. Full prompt: `./discover-procedure.md` §Step 1.75.
|
|
42
42
|
|
|
@@ -44,13 +44,13 @@ Spawn the cheap Haiku gate `design-context-checker-gate` before the full checker
|
|
|
44
44
|
|
|
45
45
|
---
|
|
46
46
|
|
|
47
|
-
## Step 2
|
|
47
|
+
## Step 2 - Spawn design-context-checker
|
|
48
48
|
|
|
49
49
|
Spawn `design-context-checker` with `<required_reading>` on STATE.md + DESIGN-CONTEXT.md. The agent validates DESIGN-CONTEXT.md across 6 dimensions and returns APPROVED or BLOCKED with per-dimension verdicts. Wait for `## CONTEXT CHECK COMPLETE`. Full prompt: `./discover-procedure.md` §Step 2.
|
|
50
50
|
|
|
51
51
|
---
|
|
52
52
|
|
|
53
|
-
## Step 3
|
|
53
|
+
## Step 3 - Handle checker verdict
|
|
54
54
|
|
|
55
55
|
- **APPROVED** -> proceed to state update.
|
|
56
56
|
- **BLOCKED** -> present blocked dimensions to user, offer fix-and-retry loop (re-spawn builder with specific fix instructions). Do not proceed to planning.
|
|
@@ -7,8 +7,8 @@ tags: [discover, procedure, extracted, pipeline-stage, connection-probe, design-
|
|
|
7
7
|
last_updated: 2026-05-18
|
|
8
8
|
---
|
|
9
9
|
|
|
10
|
-
Source: extracted from `skills/discover/SKILL.md` (Phase 28.5 rework
|
|
11
|
-
The skill's
|
|
10
|
+
Source: extracted from `skills/discover/SKILL.md` (Phase 28.5 rework - D-10 extract-then-link).
|
|
11
|
+
The skill's essential workflow stays in `../skills/discover/SKILL.md`; this file holds the
|
|
12
12
|
detail the agent reaches for when executing a specific step (state integration, three
|
|
13
13
|
connection probes, design-context-builder + design-context-checker agent prompts, lazy gate
|
|
14
14
|
prompt, auto-mode CSS detection).
|
|
@@ -23,17 +23,17 @@ Detailed procedure for the get-design-done `discover` Stage 1.5 orchestrator. Co
|
|
|
23
23
|
## State Integration
|
|
24
24
|
|
|
25
25
|
1. Read `.design/STATE.md`.
|
|
26
|
-
- If missing: create minimal skeleton from `reference/STATE-TEMPLATE.md` with stage=discover, status=in_progress, task_progress=0/1, and log warning: "STATE.md not found
|
|
27
|
-
- If present and stage==discover and status==in_progress: RESUME
|
|
28
|
-
- Otherwise: normal transition
|
|
29
|
-
2. **Probe connection availability**
|
|
26
|
+
- If missing: create minimal skeleton from `reference/STATE-TEMPLATE.md` with stage=discover, status=in_progress, task_progress=0/1, and log warning: "STATE.md not found - created fresh. If this is a resumed session, run /get-design-done:scan first."
|
|
27
|
+
- If present and stage==discover and status==in_progress: RESUME - continue existing interview; do not reset.
|
|
28
|
+
- Otherwise: normal transition - set frontmatter stage=discover, <position> stage=discover, status=in_progress, task_progress=0/1.
|
|
29
|
+
2. **Probe connection availability** - ToolSearch runs FIRST because MCP tools may be in the deferred tool set. This is the canonical probe pattern (spec lives in `connections/connections.md`; copied inline because SKILL.md has no include mechanism - if the probe pattern changes, update all stages that copied it). See §Connection Probes below.
|
|
30
30
|
3. Update last_checkpoint. Write STATE.md.
|
|
31
31
|
|
|
32
32
|
---
|
|
33
33
|
|
|
34
34
|
## Connection Probes
|
|
35
35
|
|
|
36
|
-
### A
|
|
36
|
+
### A - Figma probe (variant-agnostic)
|
|
37
37
|
|
|
38
38
|
```
|
|
39
39
|
A1. ToolSearch({ query: "figma get_metadata use_figma", max_results: 10 })
|
|
@@ -50,7 +50,7 @@ A4. Call {prefix}get_metadata:
|
|
|
50
50
|
Error -> figma: unavailable
|
|
51
51
|
```
|
|
52
52
|
|
|
53
|
-
### B
|
|
53
|
+
### B - Refero probe (ToolSearch presence is sufficient - no tool call needed)
|
|
54
54
|
|
|
55
55
|
```
|
|
56
56
|
B1. ToolSearch({ query: "refero", max_results: 5 })
|
|
@@ -58,7 +58,7 @@ B2. Empty result -> refero: not_configured
|
|
|
58
58
|
Non-empty -> refero: available
|
|
59
59
|
```
|
|
60
60
|
|
|
61
|
-
### C
|
|
61
|
+
### C - Pinterest probe (ToolSearch-only, same pattern as Refero)
|
|
62
62
|
|
|
63
63
|
```
|
|
64
64
|
C1. ToolSearch({ query: "mcp-pinterest", max_results: 5 })
|
|
@@ -66,9 +66,9 @@ C2. Empty result -> pinterest: not_configured
|
|
|
66
66
|
Non-empty -> pinterest: available
|
|
67
67
|
```
|
|
68
68
|
|
|
69
|
-
No live `pinterest_search` call at probe time
|
|
69
|
+
No live `pinterest_search` call at probe time - ToolSearch presence is sufficient. The synthesizer makes the actual search calls.
|
|
70
70
|
|
|
71
|
-
### D
|
|
71
|
+
### D - Lazyweb probe (ToolSearch-only - free, discover Tier 1 per D-01)
|
|
72
72
|
|
|
73
73
|
```
|
|
74
74
|
D1. ToolSearch({ query: "lazyweb", max_results: 5 })
|
|
@@ -76,7 +76,7 @@ D2. Empty result -> lazyweb: not_configured
|
|
|
76
76
|
Non-empty -> lazyweb: available
|
|
77
77
|
```
|
|
78
78
|
|
|
79
|
-
### E
|
|
79
|
+
### E - Mobbin probe (ToolSearch-only - paid, discover Tier 2 per D-01)
|
|
80
80
|
|
|
81
81
|
```
|
|
82
82
|
E1. ToolSearch({ query: "mobbin", max_results: 5 })
|
|
@@ -102,7 +102,7 @@ Auto Mode CSS detection (when `auto_mode: true` is passed to the builder):
|
|
|
102
102
|
|
|
103
103
|
---
|
|
104
104
|
|
|
105
|
-
## Step 1
|
|
105
|
+
## Step 1 - Spawn design-context-builder
|
|
106
106
|
|
|
107
107
|
```
|
|
108
108
|
Task("design-context-builder", """
|
|
@@ -140,7 +140,7 @@ Wait for `## CONTEXT COMPLETE`. Update STATE.md task_progress = 0.5.
|
|
|
140
140
|
|
|
141
141
|
---
|
|
142
142
|
|
|
143
|
-
## Step 1.75
|
|
143
|
+
## Step 1.75 - Lazy gate: should design-context-checker run? (Plan 10.1-04, D-21)
|
|
144
144
|
|
|
145
145
|
Spawn the cheap Haiku gate before the full context-checker:
|
|
146
146
|
|
|
@@ -152,8 +152,8 @@ Spawn the cheap Haiku gate before the full context-checker:
|
|
|
152
152
|
You are the design-context-checker-gate.
|
|
153
153
|
|
|
154
154
|
Context:
|
|
155
|
-
diff_files: <git diff
|
|
156
|
-
diff_body: (not needed
|
|
155
|
+
diff_files: <git diff `--name-only` HEAD~1..HEAD>
|
|
156
|
+
diff_body: (not needed - single-file heuristic)
|
|
157
157
|
baseline_sha: <HEAD~1>
|
|
158
158
|
|
|
159
159
|
Apply the heuristic (DESIGN-CONTEXT.md in diff_files?). Emit JSON + `## GATE COMPLETE`.
|
|
@@ -170,7 +170,7 @@ Wait for `## GATE COMPLETE`. Parse JSON:
|
|
|
170
170
|
|
|
171
171
|
---
|
|
172
172
|
|
|
173
|
-
## Step 2
|
|
173
|
+
## Step 2 - Spawn design-context-checker
|
|
174
174
|
|
|
175
175
|
```
|
|
176
176
|
Task("design-context-checker", """
|
|
@@ -190,7 +190,7 @@ Wait for `## CONTEXT CHECK COMPLETE`.
|
|
|
190
190
|
|
|
191
191
|
---
|
|
192
192
|
|
|
193
|
-
## Step 3
|
|
193
|
+
## Step 3 - Handle checker verdict
|
|
194
194
|
|
|
195
195
|
If APPROVED: proceed to state update.
|
|
196
196
|
If BLOCKED: present dimensions that BLOCKED to user, offer fix-and-retry loop (re-spawn builder with specific fix instructions). Do not proceed to planning.
|
package/skills/discuss/SKILL.md
CHANGED
|
@@ -9,7 +9,7 @@ tools: Read, Write, Task
|
|
|
9
9
|
|
|
10
10
|
**Role:** You are the `/gdd:discuss` command. You spawn the `design-discussant` agent with the right mode and context.
|
|
11
11
|
|
|
12
|
-
## Step 1
|
|
12
|
+
## Step 1 - Read state
|
|
13
13
|
|
|
14
14
|
Read `.design/STATE.md`. Note:
|
|
15
15
|
- Current `cycle:` frontmatter value
|
|
@@ -17,7 +17,7 @@ Read `.design/STATE.md`. Note:
|
|
|
17
17
|
|
|
18
18
|
If `.design/STATE.md` does not exist, tell the user to run `/gdd:brief` first and stop.
|
|
19
19
|
|
|
20
|
-
## Step 2
|
|
20
|
+
## Step 2 - Parse arguments
|
|
21
21
|
|
|
22
22
|
Inspect `$ARGUMENTS`:
|
|
23
23
|
- Free-text before flags → `<topic>`
|
|
@@ -25,7 +25,7 @@ Inspect `$ARGUMENTS`:
|
|
|
25
25
|
- `--spec` → Socratic ambiguity scoring mode
|
|
26
26
|
- `--cycle <name>` → scope decisions to that cycle
|
|
27
27
|
|
|
28
|
-
## Step 3
|
|
28
|
+
## Step 3 - Spawn design-discussant
|
|
29
29
|
|
|
30
30
|
```
|
|
31
31
|
Task("design-discussant", """
|
|
@@ -47,15 +47,15 @@ Emit `## DISCUSS COMPLETE` when done.
|
|
|
47
47
|
|
|
48
48
|
Use only the modes the user actually passed. Missing flags → `<mode>normal</mode>`.
|
|
49
49
|
|
|
50
|
-
## Step 4
|
|
50
|
+
## Step 4 - Inline glossary maintenance (CONTEXT.md)
|
|
51
51
|
|
|
52
52
|
When a fuzzy phrase is resolved into a sharper term, or a new domain concept is named
|
|
53
53
|
during the interview: write to `./CONTEXT.md` IMMEDIATELY (do NOT batch). Use the schema
|
|
54
|
-
in `./../../reference/context-md-format.md`
|
|
54
|
+
in `./../../reference/context-md-format.md` - H2 heading per term, body paragraph,
|
|
55
55
|
optional `**Aliases:**` line for term-merging. Multi-context repos use `CONTEXT-MAP.md`
|
|
56
56
|
plus per-area `<area>/CONTEXT.md`. CONTEXT.md is lazy-created on the first term write.
|
|
57
57
|
|
|
58
|
-
## Step 5
|
|
58
|
+
## Step 5 - Session wrap: ADR-offer scan
|
|
59
59
|
|
|
60
60
|
For each decision recorded this session, check ALL three criteria from
|
|
61
61
|
`./../../reference/adr-format.md`: (a) **hard-to-reverse**, (b) **surprising-without-context**,
|
|
@@ -63,7 +63,7 @@ For each decision recorded this session, check ALL three criteria from
|
|
|
63
63
|
ANY criterion fails, the decision stays in STATE.md `<decisions>`. Routine choices are
|
|
64
64
|
NEVER auto-promoted.
|
|
65
65
|
|
|
66
|
-
## Step 6
|
|
66
|
+
## Step 6 - Report
|
|
67
67
|
|
|
68
68
|
Wait for `## DISCUSS COMPLETE`. Re-read STATE.md. Count new D-XX entries since Step 1. Print:
|
|
69
69
|
|
|
@@ -77,20 +77,20 @@ Cycle: <name or "default">
|
|
|
77
77
|
|
|
78
78
|
## Constraints
|
|
79
79
|
|
|
80
|
-
- Do not run the interview yourself
|
|
80
|
+
- Do not run the interview yourself - always spawn the agent.
|
|
81
81
|
- Do not touch files outside `.design/`.
|
|
82
82
|
|
|
83
|
-
## Rationalizations
|
|
83
|
+
## Rationalizations - Thought to Reality
|
|
84
84
|
|
|
85
85
|
The shortcuts an agent takes during a discuss session, and what each one costs the decision record:
|
|
86
86
|
|
|
87
87
|
| Thought | Reality |
|
|
88
88
|
|---------|---------|
|
|
89
89
|
| "I'll ask all eight questions at once to save time." | Batched questions overwhelm the user; one-at-a-time keeps each decision clean and prevents coupled answers. |
|
|
90
|
-
| "I can run the interview inline instead of spawning the discussant." | The skill's contract is to always spawn the agent
|
|
90
|
+
| "I can run the interview inline instead of spawning the discussant." | The skill's contract is to always spawn the agent - running it yourself skips the discussant's mode handling and D-XX numbering. |
|
|
91
91
|
| "This answer is good enough, I'll record it as a decision without follow-up." | A vague answer ("modern", "clean") recorded as a D-XX locks in an undecided premise; reject and re-ask once. |
|
|
92
92
|
| "I'll batch all the new D-XX entries into STATE.md at the end." | Decisions written atomically per answer survive an interrupted session; batching loses everything if the session drops. |
|
|
93
|
-
| "The glossary term can wait until I write the summary." | CONTEXT.md is written immediately per term
|
|
94
|
-
| "Every decision this session is worth an ADR." | ADRs require all three criteria (hard-to-reverse, surprising, real-tradeoff); auto-promoting routine choices buries the genuinely
|
|
93
|
+
| "The glossary term can wait until I write the summary." | CONTEXT.md is written immediately per term - a deferred glossary entry is a naming inconsistency the next cycle inherits. |
|
|
94
|
+
| "Every decision this session is worth an ADR." | ADRs require all three criteria (hard-to-reverse, surprising, real-tradeoff); auto-promoting routine choices buries the genuinely essential ones. |
|
|
95
95
|
|
|
96
96
|
## DISCUSS COMMAND COMPLETE
|
package/skills/do/SKILL.md
CHANGED
|
@@ -40,6 +40,6 @@ Takes a free-form description, maps it to a `/gdd:*` command, confirms with the
|
|
|
40
40
|
## Do Not
|
|
41
41
|
|
|
42
42
|
- Do not execute the target command without confirmation.
|
|
43
|
-
- Do not invent new commands
|
|
43
|
+
- Do not invent new commands - if no intent matches, say so and list the closest options.
|
|
44
44
|
|
|
45
45
|
## DO COMPLETE
|