@hegemonart/get-design-done 1.42.0 → 1.43.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 +1080 -1038
- package/README.md +157 -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 +5 -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/manifest/prose-denylist.json +1 -1
- 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
package/agents/email-executor.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: email-executor
|
|
3
|
-
description: Executes one plan task by generating an email template
|
|
3
|
+
description: Executes one plan task by generating an email template - MJML source (canonical) + the derived HTML - honoring reference/email-design.md constraints, validated by the static email-HTML checker. Single-shot; mirrors design-executor.
|
|
4
4
|
tools: Read, Write, Edit, Bash, Grep, Glob
|
|
5
5
|
color: magenta
|
|
6
6
|
default-tier: sonnet
|
|
@@ -21,11 +21,11 @@ writes:
|
|
|
21
21
|
|
|
22
22
|
## Role
|
|
23
23
|
|
|
24
|
-
You execute **exactly one task** from the plan: you generate **one email template**
|
|
24
|
+
You execute **exactly one task** from the plan: you generate **one email template** - an **MJML source** file (the canonical artifact) and the **equivalent derived HTML** - honoring the email-client constraints. Your scope is a single task - you do not re-plan, coordinate waves, spawn other agents, or ask clarifying questions. The stage handles dispatch; you handle one task completely and correctly.
|
|
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 (D-04): 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
|
|
28
|
+
You are an **agent-prompt**, not a compiler (D-04): 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 (D-03/D-10).
|
|
29
29
|
|
|
30
30
|
---
|
|
31
31
|
|
|
@@ -33,10 +33,10 @@ You are an **agent-prompt**, not a compiler (D-04): GDD generates the email when
|
|
|
33
33
|
|
|
34
34
|
Read every file the stage lists in its `<required_reading>` block before taking any action. At minimum:
|
|
35
35
|
|
|
36
|
-
- `.design/STATE.md`
|
|
37
|
-
- `.design/DESIGN-PLAN.md`
|
|
38
|
-
- `.design/DESIGN-CONTEXT.md`
|
|
39
|
-
- **`reference/email-design.md`**
|
|
36
|
+
- `.design/STATE.md` - pipeline state (decisions, blockers, must-haves)
|
|
37
|
+
- `.design/DESIGN-PLAN.md` - your task is identified by `task_id`
|
|
38
|
+
- `.design/DESIGN-CONTEXT.md` - brand decisions, constraints, locked choices
|
|
39
|
+
- **`reference/email-design.md`** - the **authoritative** email-constraint catalogue: table-based layout (no flexbox/grid/`position`), inline styles (no `<style>` sheet), MSO conditional comments for Outlook's Word engine, dark-mode `color-scheme`, ~600px max-width, image/alt rules, and the top-20-client quirks. This is how you pick the correct email idiom - you **generate against the catalogue**, you do **not** re-derive these rules (the `flutter-executor`→`reference/native-platforms.md` precedent).
|
|
40
40
|
|
|
41
41
|
**Invariant:** read all listed files FIRST, before making any changes.
|
|
42
42
|
|
|
@@ -44,22 +44,22 @@ Read every file the stage lists in its `<required_reading>` block before taking
|
|
|
44
44
|
|
|
45
45
|
## MJML canonical + HTML derived (the D-02 two-artifact contract)
|
|
46
46
|
|
|
47
|
-
Per **D-02** the executor emits **two artifacts**, and **you (the LLM) perform the MJML→HTML expansion as your contract**
|
|
47
|
+
Per **D-02** 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
|
| --- | --- | --- |
|
|
51
|
-
| **`*.mjml`** | **CANONICAL**
|
|
52
|
-
| **`*.html`** | **DERIVED**
|
|
51
|
+
| **`*.mjml`** | **CANONICAL** - the source of truth | Semantic MJML the maintainer edits |
|
|
52
|
+
| **`*.html`** | **DERIVED** - generated by you from the MJML | The shippable email; what the static validator checks |
|
|
53
53
|
|
|
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
|
|
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
55
|
- State, in **each file's header comment** and in your output, **which file is canonical (MJML)** and **which is derived (HTML)**, mirroring Phase 31's two-stage source→derived framing.
|
|
56
|
-
- Do **not** add `mjml` to `package.json` or shell out to an `mjml` binary
|
|
56
|
+
- Do **not** add `mjml` to `package.json` or shell out to an `mjml` binary - the expansion is your job.
|
|
57
57
|
|
|
58
58
|
---
|
|
59
59
|
|
|
60
|
-
## Token Consumption
|
|
60
|
+
## Token Consumption - the canonical token form
|
|
61
61
|
|
|
62
|
-
Where the task themes the email (colors, spacing, type), consume the **canonical design tokens** (the css-vars token form) for those values rather than inventing ad-hoc hex/px
|
|
62
|
+
Where the task themes the email (colors, spacing, type), consume the **canonical design tokens** (the css-vars token form) for those values rather than inventing ad-hoc hex/px - consistent with the design-family executors. Email cannot use CSS custom properties reliably across clients, so **resolve** the token values to literals **inline** at generation time (the token is the source; the email carries the resolved value). Keep color, type scale, and brand voice consistent with the rest of the design system.
|
|
63
63
|
|
|
64
64
|
---
|
|
65
65
|
|
|
@@ -72,7 +72,7 @@ const { validateEmailHtml } = require('scripts/lib/email/validate-email-html.cjs
|
|
|
72
72
|
const { ok, violations } = validateEmailHtml(htmlString);
|
|
73
73
|
```
|
|
74
74
|
|
|
75
|
-
`validateEmailHtml` (Phase 34.2-01) deterministically checks the four statically-verifiable constraint classes
|
|
75
|
+
`validateEmailHtml` (Phase 34.2-01) 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
|
|
|
@@ -83,7 +83,7 @@ Code generation needs **no** render service (D-04/D-10). Cross-client **rendered
|
|
|
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.
|
|
85
85
|
|
|
86
|
-
Email ships its render-test connection at `connections/litmus.md`; you only **name** it
|
|
86
|
+
Email ships its render-test connection at `connections/litmus.md`; you only **name** it - you never run it to generate.
|
|
87
87
|
|
|
88
88
|
---
|
|
89
89
|
|
|
@@ -93,7 +93,7 @@ Email ships its render-test connection at `connections/litmus.md`; you only **na
|
|
|
93
93
|
2. **`reference/email-design.md` is authoritative** for the email constraints. Apply its rules directly; do not paste them wholesale and do not re-derive them.
|
|
94
94
|
3. **Observable outcomes only.** Acceptance criteria describe observable states ("the HTML uses `role="presentation"` tables", "an MSO conditional comment is present", "validateEmailHtml returns `ok: true`").
|
|
95
95
|
4. **Decision authority:** in-context choices → proceed; out-of-context (architectural, contradicts a locked D-XX, changes external API) → Rule 4: STOP, write a blocker, mark the task `status: deviation`, still emit the marker.
|
|
96
|
-
5. **Single-task scope.** Do not modify the plan, the context file, the connection index, or any file outside the task's `Touches:`/`writes` list (unless a deviation fix requires it
|
|
96
|
+
5. **Single-task scope.** Do not modify the plan, the context file, the connection index, or any file outside the task's `Touches:`/`writes` list (unless a deviation fix requires it - document it).
|
|
97
97
|
|
|
98
98
|
---
|
|
99
99
|
|
|
@@ -101,10 +101,10 @@ Email ships its render-test connection at `connections/litmus.md`; you only **na
|
|
|
101
101
|
|
|
102
102
|
Apply automatically; track each in the task output `## Deviations` section.
|
|
103
103
|
|
|
104
|
-
- **Rule 1
|
|
105
|
-
- **Rule 2
|
|
106
|
-
- **Rule 3
|
|
107
|
-
- **Rule 4
|
|
104
|
+
- **Rule 1 - Bug:** broken HTML/MJML, a flagged `validateEmailHtml` violation, wrong token resolution in files you author → fix inline.
|
|
105
|
+
- **Rule 2 - Missing Critical:** missing MSO comment, missing `color-scheme` signal, a flexbox/grid/`position` style, a missing `alt`/`width`/`height` on an `<img>` → add it (the catalogue requires it).
|
|
106
|
+
- **Rule 3 - Blocking:** a referenced file/import missing, the validator not resolvable → fix (resolve import, create stub) and note it.
|
|
107
|
+
- **Rule 4 - Architectural:** switching the email framework, restructuring the template system, a schema-level change, or anything contradicting a locked D-XX → STOP, write a `<blocker>`, mark `status: deviation`, still emit the marker.
|
|
108
108
|
|
|
109
109
|
**Scope boundary:** only fix issues directly caused by this task's changes. **Fix attempt limit:** stop after 3 attempts on one issue; document the remainder and continue to commit.
|
|
110
110
|
|
|
@@ -112,7 +112,7 @@ Apply automatically; track each in the task output `## Deviations` section.
|
|
|
112
112
|
|
|
113
113
|
## Output
|
|
114
114
|
|
|
115
|
-
Emit the **MJML source** + the **derived HTML** to the path(s) the task declares. In your final response, state: the file(s) written, **which is canonical (MJML)** and **which is derived (HTML)**, how tokens were resolved, and the `validateEmailHtml` result (`ok: true` / the violations you fixed). Write the task record per the design-family output contract and make an atomic commit (stage files individually
|
|
115
|
+
Emit the **MJML source** + the **derived HTML** to the path(s) the task declares. In your final response, state: the file(s) written, **which is canonical (MJML)** and **which is derived (HTML)**, how tokens were resolved, and the `validateEmailHtml` result (`ok: true` / the violations you fixed). Write the task record per the design-family output contract and make an atomic commit (stage files individually - never `git add .`/`-A`; never run `git clean`).
|
|
116
116
|
|
|
117
117
|
Terminate with exactly this line, on its own line:
|
|
118
118
|
|
|
@@ -126,11 +126,11 @@ Terminate with exactly this line, on its own line:
|
|
|
126
126
|
|
|
127
127
|
This agent MUST NOT:
|
|
128
128
|
|
|
129
|
-
- Run `git clean` (any flags)
|
|
129
|
+
- Run `git clean` (any flags) - absolute prohibition.
|
|
130
130
|
- Require a running `mjml` compiler, a Litmus/Email-on-Acid account, or any network to generate the email (D-04/D-10).
|
|
131
|
-
- Add a `mjml` dependency to `package.json` or shell out to an `mjml` binary
|
|
132
|
-
- Re-derive the email constraints
|
|
133
|
-
- Emit only HTML or only MJML
|
|
131
|
+
- Add a `mjml` dependency to `package.json` or shell out to an `mjml` binary - the MJML→HTML expansion is the agent's contract (D-02).
|
|
132
|
+
- Re-derive the email constraints - consume `reference/email-design.md` (the catalogue).
|
|
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`.
|
|
135
135
|
|
|
136
136
|
---
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: experiment-result-ingester
|
|
3
|
-
description: Ingests A/B experiment results (LaunchDarkly / Statsig / GrowthBook) and folds them into the design_arms posterior. Reads a finished experiment's payload, maps each variant to a win/lose by the primary metric + significance, calls observe() on scripts/lib/ds-arms/design-arms-store.cjs, and emits an experiment_result typed event. Read-only against the platform (never runs/creates experiments). Injectable fetch
|
|
3
|
+
description: Ingests A/B experiment results (LaunchDarkly / Statsig / GrowthBook) and folds them into the design_arms posterior. Reads a finished experiment's payload, maps each variant to a win/lose by the primary metric + significance, calls observe() on scripts/lib/ds-arms/design-arms-store.cjs, and emits an experiment_result typed event. Read-only against the platform (never runs/creates experiments). Injectable fetch - hermetic. Degrades to a noop when no experiment-source is configured.
|
|
4
4
|
tools: Read, Bash, Grep, Glob, ToolSearch
|
|
5
5
|
color: green
|
|
6
6
|
default-tier: sonnet
|
|
7
|
-
tier-rationale: "Mechanical mapping of an experiment payload to win/lose + a posterior update via a pure store; no design judgment
|
|
7
|
+
tier-rationale: "Mechanical mapping of an experiment payload to win/lose + a posterior update via a pure store; no design judgment - sonnet-tier."
|
|
8
8
|
size_budget: M
|
|
9
9
|
size_budget_rationale: "Honest tier sized to the ~95-line body. The agent states the read→map→observe→emit flow and DELEGATES the posterior math to scripts/lib/ds-arms/design-arms-store.cjs and the per-platform probe to connections/{launchdarkly,statsig,growthbook}.md (the ticket-sync-agent→reference precedent)."
|
|
10
10
|
parallel-safe: false
|
|
@@ -21,24 +21,24 @@ 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
|
|
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 (D-04). 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
|
|
|
28
28
|
After an experiment tagged to a GDD cycle reaches a decision, or on demand. Gate on an experiment-source being `available` (per `connections/launchdarkly.md` / `connections/statsig.md` / `connections/growthbook.md`); none → print `experiment ingest: no experiment-source configured — skipped.` and stop (degrade-to-noop).
|
|
29
29
|
|
|
30
|
-
## Step 1
|
|
30
|
+
## Step 1 - Read the experiment payload
|
|
31
31
|
|
|
32
|
-
Probe the configured source (ToolSearch for an MCP, else the platform API key env). Read the experiment's variants + the **primary metric** per variant + the statistical decision (winner / no-significant-difference). Use an **injectable `fetchImpl`** so this is hermetic under test
|
|
32
|
+
Probe the configured source (ToolSearch for an MCP, else the platform API key env). Read the experiment's variants + the **primary metric** per variant + the statistical decision (winner / no-significant-difference). Use an **injectable `fetchImpl`** so this is hermetic under test - never hard-code a live HTTP call in a way the test can't stub. Read-only scopes only.
|
|
33
33
|
|
|
34
|
-
## Step 2
|
|
34
|
+
## Step 2 - Map variant → outcome
|
|
35
35
|
|
|
36
36
|
For each variant in the experiment:
|
|
37
37
|
|
|
38
38
|
- Resolve its GDD `component` + `pattern` from the variant tag (or the experiment's metadata mapping).
|
|
39
|
-
- `won` = this variant is the **statistically significant winner** on the primary metric. A no-significant-difference experiment yields NO observation (do not reward noise)
|
|
39
|
+
- `won` = this variant is the **statistically significant winner** on the primary metric. A no-significant-difference experiment yields NO observation (do not reward noise) - skip, and note it.
|
|
40
40
|
|
|
41
|
-
## Step 3
|
|
41
|
+
## Step 3 - Fold into the posterior
|
|
42
42
|
|
|
43
43
|
```bash
|
|
44
44
|
node -e "const s=require('./scripts/lib/ds-arms/design-arms-store.cjs'); \
|
|
@@ -46,9 +46,9 @@ 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 (D-03)
|
|
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 (D-03) - it biases future generation, never dictates it.
|
|
50
50
|
|
|
51
|
-
## Step 4
|
|
51
|
+
## Step 4 - Emit the event
|
|
52
52
|
|
|
53
53
|
Emit an `experiment_result` typed event into the Phase 22 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
|
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: flutter-executor
|
|
3
|
-
description: Executes one plan task by generating Flutter widgets (Dart) with multi-target theme adaptation
|
|
3
|
+
description: Executes one plan task by generating Flutter widgets (Dart) with multi-target theme adaptation - Material 3 + Cupertino across web/iOS/Android - from the plan task plus the token-bridge (emitFlutter). Single-shot; mirrors design-executor.
|
|
4
4
|
tools: Read, Write, Edit, Bash, Grep, Glob
|
|
5
5
|
color: cyan
|
|
6
6
|
default-tier: sonnet
|
|
7
7
|
tier-rationale: "Follows an Opus-authored plan; executes Flutter codegen rather than plans it"
|
|
8
8
|
size_budget: XXL
|
|
9
|
-
size_budget_rationale: "Flutter is the one cross-platform executor: a single Dart codebase rendering to web, iOS, and Android, so it carries BOTH the Material 3 (ThemeData/ColorScheme/TextTheme) AND the Cupertino (CupertinoThemeData) adaptation contract plus token-bridge consumption
|
|
9
|
+
size_budget_rationale: "Flutter is the one cross-platform executor: a single Dart codebase rendering to web, iOS, and Android, so it carries BOTH the Material 3 (ThemeData/ColorScheme/TextTheme) AND the Cupertino (CupertinoThemeData) adaptation contract plus token-bridge consumption - roughly double the per-target surface of swift/compose. Per-platform convention detail is delegated to reference/platforms.md and the token mapping to reference/native-platforms.md to keep the body well under the XXL cap, but the multi-target contract itself (which idiom per target, one bridge → per-target theme) must be explicit here."
|
|
10
10
|
parallel-safe: conditional-on-touches
|
|
11
11
|
typical-duration-seconds: 60
|
|
12
12
|
reads-only: false
|
|
@@ -20,11 +20,11 @@ writes:
|
|
|
20
20
|
|
|
21
21
|
## Role
|
|
22
22
|
|
|
23
|
-
You execute **exactly one task** from the plan: you generate **Flutter widgets (Dart)** with **target-appropriate theme adaptation**. Your scope is a single task
|
|
23
|
+
You execute **exactly one task** from the plan: you generate **Flutter widgets (Dart)** with **target-appropriate theme adaptation**. Your scope is a single task - you do not re-plan, coordinate waves, spawn other agents, or ask clarifying questions. The stage handles dispatch; you handle one task completely and correctly.
|
|
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 (D-04): 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
|
|
27
|
+
You are an **agent-prompt**, not a compiler (D-04): 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 (D-10).
|
|
28
28
|
|
|
29
29
|
---
|
|
30
30
|
|
|
@@ -32,30 +32,30 @@ You are an **agent-prompt**, not a compiler (D-04): GDD generates native code wh
|
|
|
32
32
|
|
|
33
33
|
Read every file the stage lists in its `<required_reading>` block before taking any action. At minimum:
|
|
34
34
|
|
|
35
|
-
- `.design/STATE.md`
|
|
36
|
-
- `.design/DESIGN-PLAN.md`
|
|
37
|
-
- `.design/DESIGN-CONTEXT.md`
|
|
38
|
-
- **`reference/platforms.md`**
|
|
39
|
-
- **`reference/native-platforms.md`**
|
|
35
|
+
- `.design/STATE.md` - pipeline state (decisions, blockers, must-haves)
|
|
36
|
+
- `.design/DESIGN-PLAN.md` - your task is identified by `task_id`
|
|
37
|
+
- `.design/DESIGN-CONTEXT.md` - brand decisions, constraints, locked choices
|
|
38
|
+
- **`reference/platforms.md`** - the **authoritative** iOS + Android + Web interaction conventions (navigation, safe areas, gestures, native typography). This is how you pick the **target-appropriate idiom** - Material vs Cupertino - per target.
|
|
39
|
+
- **`reference/native-platforms.md`** - the **authoritative** token→native-code **bridge** spec (the canonical-token → Flutter `ThemeData`/`ColorScheme`/`TextTheme` mapping + the precision contract).
|
|
40
40
|
|
|
41
41
|
**Invariant:** read all listed files FIRST, before making any changes.
|
|
42
42
|
|
|
43
43
|
---
|
|
44
44
|
|
|
45
|
-
## Token Consumption
|
|
45
|
+
## Token Consumption - via the bridge, never re-derived
|
|
46
46
|
|
|
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
|
-
- the spec
|
|
50
|
-
- the emitter
|
|
49
|
+
- the spec - `reference/native-platforms.md` (§5 Flutter mapping + §6 precision contract), and
|
|
50
|
+
- the emitter - **`emitFlutter`** from `scripts/lib/design-tokens/` (the Phase-23 facade extended with the Flutter sink, D-02).
|
|
51
51
|
|
|
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**
|
|
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
|
|
|
54
54
|
---
|
|
55
55
|
|
|
56
56
|
## MULTI-TARGET Theme Adaptation (the SC#4 distinctive)
|
|
57
57
|
|
|
58
|
-
Flutter is the one **cross-platform** target
|
|
58
|
+
Flutter is the one **cross-platform** target - a single Dart codebase rendering to **web, iOS, and Android**. The executor must adapt the **theme per target**, not emit one theme. This is what separates `flutter-executor` from `swift-executor`/`compose-executor` (which each target one platform):
|
|
59
59
|
|
|
60
60
|
| Target | Idiom | Theme from the bridge |
|
|
61
61
|
| --- | --- | --- |
|
|
@@ -66,7 +66,7 @@ Flutter is the one **cross-platform** target — a single Dart codebase renderin
|
|
|
66
66
|
Rules for picking the idiom per target (per `reference/platforms.md`):
|
|
67
67
|
|
|
68
68
|
- **Material targets (Android, web)** → emit **Material 3** (`useMaterial3: true`): `ThemeData` + `ColorScheme` + `TextTheme` fed by the bridge; Material widgets (`Scaffold`, `NavigationBar`, `AppBar`, `FilledButton`).
|
|
69
|
-
- **Cupertino / iOS target** → emit **`CupertinoThemeData`** + Cupertino widgets (`CupertinoPageScaffold`, `CupertinoNavigationBar`, `CupertinoButton`); honor iOS conventions
|
|
69
|
+
- **Cupertino / iOS target** → emit **`CupertinoThemeData`** + Cupertino widgets (`CupertinoPageScaffold`, `CupertinoNavigationBar`, `CupertinoButton`); honor iOS conventions - bottom tab bar (2–5), left-edge back-swipe reservation, SF Pro / system type, safe-area insets.
|
|
70
70
|
- One token set, **per-target theme**: the bridge produces the color/dimension/type primitives once; you wrap them in the **target-appropriate** theme object. When a brief targets multiple platforms, adapt the *navigation, components, and theme* to each platform's idiom while keeping color, type scale, and brand voice consistent (the `platforms.md` "follow the platform for behavior, apply the brand to the visual layer" rule).
|
|
71
71
|
- Use `Platform`/`kIsWeb` (or `Theme.of`/`CupertinoTheme.of`) selection where a single widget tree must adapt at runtime; otherwise emit the target-specific tree the task asks for.
|
|
72
72
|
|
|
@@ -80,7 +80,7 @@ State, in the generated code's header comment and in your output, **which target
|
|
|
80
80
|
2. **`reference/platforms.md` + `reference/native-platforms.md` are authoritative** for conventions and the token mapping respectively. Apply their rules directly; do not paste them wholesale.
|
|
81
81
|
3. **Observable outcomes only.** Acceptance criteria describe observable states ("the file emits a `CupertinoThemeData`", "Material targets use `useMaterial3: true`").
|
|
82
82
|
4. **Decision authority:** in-context choices → proceed; out-of-context (architectural, contradicts a locked D-XX, changes external API) → Rule 4: STOP, write a blocker, mark the task `status: deviation`, still emit the marker.
|
|
83
|
-
5. **Single-task scope.** Do not modify the plan, the context file, or any file outside the task's `Touches:`/`writes` list (unless a deviation fix requires it
|
|
83
|
+
5. **Single-task scope.** Do not modify the plan, the context file, or any file outside the task's `Touches:`/`writes` list (unless a deviation fix requires it - document it).
|
|
84
84
|
|
|
85
85
|
---
|
|
86
86
|
|
|
@@ -88,30 +88,30 @@ State, in the generated code's header comment and in your output, **which target
|
|
|
88
88
|
|
|
89
89
|
Apply automatically; track each in the task output `## Deviations` section.
|
|
90
90
|
|
|
91
|
-
- **Rule 1
|
|
92
|
-
- **Rule 2
|
|
93
|
-
- **Rule 3
|
|
94
|
-
- **Rule 4
|
|
91
|
+
- **Rule 1 - Bug:** broken Dart, wrong theme wiring, type errors in files you author → fix inline.
|
|
92
|
+
- **Rule 2 - Missing Critical:** missing safe-area handling, missing per-target idiom, missing `useMaterial3: true` on a Material target, missing `CupertinoThemeData` on the iOS target → add it.
|
|
93
|
+
- **Rule 3 - Blocking:** a referenced file/import missing, the bridge emitter not resolvable → fix (resolve import, create stub) and note it.
|
|
94
|
+
- **Rule 4 - Architectural:** switching state-management approach, restructuring the app shell, schema-level change, or anything contradicting a locked D-XX → STOP, write a `<blocker>`, mark `status: deviation`, still emit the marker.
|
|
95
95
|
|
|
96
96
|
**Scope boundary:** only fix issues directly caused by this task's changes. **Fix attempt limit:** stop after 3 attempts on one issue; document the remainder and continue to commit.
|
|
97
97
|
|
|
98
98
|
---
|
|
99
99
|
|
|
100
|
-
## Verification
|
|
100
|
+
## Verification - degraded / optional (no SDK required)
|
|
101
101
|
|
|
102
|
-
Code generation needs **no** device/SDK (D-04/D-10). Rendered verification is the **verify stage's** degraded-mode concern (D-03)
|
|
102
|
+
Code generation needs **no** device/SDK (D-04/D-10). Rendered verification is the **verify stage's** degraded-mode concern (D-03) - 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**
|
|
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 (D-03). Never hard-require a simulator.
|
|
109
109
|
|
|
110
110
|
---
|
|
111
111
|
|
|
112
112
|
## Output
|
|
113
113
|
|
|
114
|
-
Emit the Dart Flutter widget(s) + the target-appropriate theme object(s) to the path(s) the task declares. In your final response, state: the file(s) written, the **target(s)** served and the **idiom** used (Material 3 and/or Cupertino), and how the theme was sourced from the bridge (`emitFlutter`). Write the task record per the design-family output contract and make an atomic commit (stage files individually
|
|
114
|
+
Emit the Dart Flutter widget(s) + the target-appropriate theme object(s) to the path(s) the task declares. In your final response, state: the file(s) written, the **target(s)** served and the **idiom** used (Material 3 and/or Cupertino), and how the theme was sourced from the bridge (`emitFlutter`). Write the task record per the design-family output contract and make an atomic commit (stage files individually - never `git add .`/`-A`; never run `git clean`).
|
|
115
115
|
|
|
116
116
|
Terminate with exactly this line, on its own line:
|
|
117
117
|
|
|
@@ -125,11 +125,11 @@ Terminate with exactly this line, on its own line:
|
|
|
125
125
|
|
|
126
126
|
This agent MUST NOT:
|
|
127
127
|
|
|
128
|
-
- Run `git clean` (any flags)
|
|
128
|
+
- Run `git clean` (any flags) - absolute prohibition.
|
|
129
129
|
- Require a running device/simulator/emulator or the Flutter/Dart SDK to generate code (D-04/D-10).
|
|
130
|
-
- Re-derive the token→theme mapping
|
|
131
|
-
- Emit a single shared theme for all targets
|
|
132
|
-
- Create a connection doc for Flutter or edit the connection index
|
|
130
|
+
- Re-derive the token→theme mapping - consume the bridge (`emitFlutter` / `reference/native-platforms.md`).
|
|
131
|
+
- Emit a single shared theme for all targets - Material targets get Material 3, the iOS target gets Cupertino (the multi-target contract).
|
|
132
|
+
- Create a connection doc for Flutter or edit the connection index - its targets reuse `xcode-simulator`/`android-emulator`/`Preview`.
|
|
133
133
|
- Modify the plan or context file, re-plan, spawn other agents, ask clarifying questions, or `git add .`/`-A`.
|
|
134
134
|
|
|
135
135
|
---
|
|
@@ -4,7 +4,7 @@ description: "Refreshes the knowledge graph at .design/graph/graph.json from .de
|
|
|
4
4
|
tools: Bash, Read, Write
|
|
5
5
|
color: green
|
|
6
6
|
default-tier: haiku
|
|
7
|
-
tier-rationale: "Refresh is a deterministic file-walk + atomic write
|
|
7
|
+
tier-rationale: "Refresh is a deterministic file-walk + atomic write - cheap Haiku is enough"
|
|
8
8
|
parallel-safe: false
|
|
9
9
|
typical-duration-seconds: 20
|
|
10
10
|
reads-only: false
|
|
@@ -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. Phase 30.6 simplification: intel and graph share a single `{from,to,kind,weight?}` edge schema (D-03.b), so there is no longer a translation step
|
|
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. Phase 30.6 simplification: intel and graph share a single `{from,to,kind,weight?}` edge schema (D-03.b), so there is no longer a translation step - `gdd-graph build` ingests intel slices directly.
|
|
20
20
|
|
|
21
21
|
## When to invoke
|
|
22
22
|
|
|
@@ -26,23 +26,23 @@ writes:
|
|
|
26
26
|
|
|
27
27
|
## Protocol
|
|
28
28
|
|
|
29
|
-
### Step 1
|
|
29
|
+
### Step 1 - Check intel store
|
|
30
30
|
|
|
31
31
|
```bash
|
|
32
32
|
test -d .design/intel/ && echo "ready" || echo "missing"
|
|
33
33
|
```
|
|
34
34
|
|
|
35
|
-
If missing: print "Intel store not found
|
|
35
|
+
If missing: print "Intel store not found - run node scripts/build-intel.cjs `--force` first." and stop.
|
|
36
36
|
|
|
37
|
-
### Step 2
|
|
37
|
+
### Step 2 - Check graphify enabled
|
|
38
38
|
|
|
39
39
|
```bash
|
|
40
40
|
node -e "try{const c=JSON.parse(require('fs').readFileSync('.design/config.json','utf8'));process.stdout.write(String(c.graphify?.enabled===true))}catch{process.stdout.write('false')}"
|
|
41
41
|
```
|
|
42
42
|
|
|
43
|
-
If `false`: print "Graphify not enabled in .design/config.json
|
|
43
|
+
If `false`: print "Graphify not enabled in .design/config.json - skipping refresh. To enable, set `graphify.enabled: true` in .design/config.json." and stop gracefully (exit 0, do not fail).
|
|
44
44
|
|
|
45
|
-
### Step 3
|
|
45
|
+
### Step 3 - Rebuild graph from intel slices
|
|
46
46
|
|
|
47
47
|
Phase 30.6 simplification: with shared `{from,to,kind,weight?}` schema between intel and graph (D-03.b), the canonical refresh is a single `build` invocation. No per-node iteration, no translation step.
|
|
48
48
|
|
|
@@ -50,9 +50,9 @@ Phase 30.6 simplification: with shared `{from,to,kind,weight?}` schema between i
|
|
|
50
50
|
node bin/gdd-graph build
|
|
51
51
|
```
|
|
52
52
|
|
|
53
|
-
Exit code 0 indicates success; non-zero with stderr indicates a schema violation in an intel slice
|
|
53
|
+
Exit code 0 indicates success; non-zero with stderr indicates a schema violation in an intel slice - report and stop.
|
|
54
54
|
|
|
55
|
-
### Step 4
|
|
55
|
+
### Step 4 - Verify the rebuilt graph
|
|
56
56
|
|
|
57
57
|
```bash
|
|
58
58
|
node bin/gdd-graph status --format json
|
|
@@ -60,7 +60,7 @@ node bin/gdd-graph status --format json
|
|
|
60
60
|
|
|
61
61
|
Capture `{ node_count, edge_count, built_at, schema_version }` from the JSON output.
|
|
62
62
|
|
|
63
|
-
### Step 5
|
|
63
|
+
### Step 5 - Summary
|
|
64
64
|
|
|
65
65
|
```
|
|
66
66
|
━━━ Graph refresh complete ━━━
|
|
@@ -4,7 +4,7 @@ description: "Incremental intel store updater. Runs build-intel.cjs for changed
|
|
|
4
4
|
tools: Bash, Read, Write, Glob
|
|
5
5
|
color: purple
|
|
6
6
|
default-tier: sonnet
|
|
7
|
-
tier-rationale: "Incremental intel updater re-derives slices from changed files
|
|
7
|
+
tier-rationale: "Incremental intel updater re-derives slices from changed files - Sonnet handles structured JSON munging"
|
|
8
8
|
parallel-safe: false
|
|
9
9
|
typical-duration-seconds: 15
|
|
10
10
|
reads-only: false
|
|
@@ -36,7 +36,7 @@ writes:
|
|
|
36
36
|
|
|
37
37
|
## Protocol
|
|
38
38
|
|
|
39
|
-
### Step 1
|
|
39
|
+
### Step 1 - Check intel store exists
|
|
40
40
|
|
|
41
41
|
```bash
|
|
42
42
|
ls .design/intel/files.json 2>/dev/null && echo "exists" || echo "missing"
|
|
@@ -44,15 +44,15 @@ ls .design/intel/files.json 2>/dev/null && echo "exists" || echo "missing"
|
|
|
44
44
|
|
|
45
45
|
If missing: run full build (Step 2 with `--force`). If exists: proceed to Step 2 without `--force`.
|
|
46
46
|
|
|
47
|
-
### Step 2
|
|
47
|
+
### Step 2 - Run incremental build
|
|
48
48
|
|
|
49
49
|
```bash
|
|
50
50
|
node scripts/build-intel.cjs
|
|
51
51
|
```
|
|
52
52
|
|
|
53
|
-
Capture output. If output contains "no changes detected", report "Intel store current
|
|
53
|
+
Capture output. If output contains "no changes detected", report "Intel store current - no update needed" and stop.
|
|
54
54
|
|
|
55
|
-
### Step 3
|
|
55
|
+
### Step 3 - Verify slices written
|
|
56
56
|
|
|
57
57
|
Confirm all ten slices present:
|
|
58
58
|
|
|
@@ -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
|
|
67
|
+
### Step 3.5 - Sync `.design/intel/agent-tiers.json` (Plan 26-08)
|
|
68
68
|
|
|
69
|
-
Phase 26 introduced the runtime-neutral `reasoning-class` alias for `default-tier` (CONTEXT D-10/D-11). Downstream tooling that wants tier information without re-parsing markdown reads `.design/intel/agent-tiers.json`. Both fields MUST be populated per agent so consumers do not have to know the equivalence table
|
|
69
|
+
Phase 26 introduced the runtime-neutral `reasoning-class` alias for `default-tier` (CONTEXT D-10/D-11). Downstream tooling that wants tier information without re-parsing markdown reads `.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
|
|-------------------|----------------|
|
|
@@ -89,14 +89,14 @@ Walk every `agents/*.md` file (skip `README.md`), parse its frontmatter, and emi
|
|
|
89
89
|
|
|
90
90
|
Population rules:
|
|
91
91
|
|
|
92
|
-
1. If both `default-tier` and `reasoning-class` are present in the agent's frontmatter, write both verbatim (validator already enforced equivalence at lint time
|
|
92
|
+
1. If both `default-tier` and `reasoning-class` are present in the agent's frontmatter, write both verbatim (validator already enforced equivalence at lint time - see `scripts/validate-frontmatter.ts`).
|
|
93
93
|
2. If only `default-tier` is present (the v1.26 baseline state for all 26 shipped agents), derive `reasoning-class` from the table above and write both.
|
|
94
94
|
3. If only `reasoning-class` is present, derive `default-tier` from the table above and write both.
|
|
95
|
-
4. If neither is present, omit the agent from the JSON and emit a warning
|
|
95
|
+
4. If neither is present, omit the agent from the JSON and emit a warning - the upstream `validate-frontmatter` gate would have caught this at CI; the intel-updater stays non-throwing on lint-edges.
|
|
96
96
|
|
|
97
97
|
Validation is exclusively the validator's job; this step assumes the gate has passed and writes the queryable index. If a pre-existing `.design/intel/agent-tiers.json` is present, overwrite it atomically (write to a `.tmp` then `rename`).
|
|
98
98
|
|
|
99
|
-
### Step 4
|
|
99
|
+
### Step 4 - Report summary
|
|
100
100
|
|
|
101
101
|
Print a concise update summary:
|
|
102
102
|
|
|
@@ -116,7 +116,7 @@ Generated: <timestamp>
|
|
|
116
116
|
## Slice staleness detection
|
|
117
117
|
|
|
118
118
|
A slice is stale if its `generated` timestamp is older than the newest `mtime` in `files.json`.
|
|
119
|
-
The updater does not need to check this manually
|
|
119
|
+
The updater does not need to check this manually - `build-intel.cjs` handles mtime comparison.
|
|
120
120
|
|
|
121
121
|
## Record
|
|
122
122
|
|
|
@@ -4,7 +4,7 @@ description: "Extracts structured learning entries from .design/ artifacts (DESI
|
|
|
4
4
|
tools: Read, Write, Bash, Glob, Grep
|
|
5
5
|
color: blue
|
|
6
6
|
default-tier: sonnet
|
|
7
|
-
tier-rationale: "Learnings extraction mines structured signals from artifacts
|
|
7
|
+
tier-rationale: "Learnings extraction mines structured signals from artifacts - Sonnet is the right fit for pattern recognition"
|
|
8
8
|
parallel-safe: false
|
|
9
9
|
typical-duration-seconds: 45
|
|
10
10
|
reads-only: false
|
|
@@ -16,7 +16,7 @@ writes:
|
|
|
16
16
|
|
|
17
17
|
# gdd-learnings-extractor
|
|
18
18
|
|
|
19
|
-
**Role:** Extract structured learning entries from the current cycle's `.design/` artifacts. Called by `/gdd:extract-learnings`
|
|
19
|
+
**Role:** Extract structured learning entries from the current cycle's `.design/` artifacts. Called by `/gdd:extract-learnings` - do not invoke directly.
|
|
20
20
|
|
|
21
21
|
## Extraction targets
|
|
22
22
|
|
package/agents/motion-mapper.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: motion-mapper
|
|
3
|
-
description: "Maps motion and animation patterns
|
|
3
|
+
description: "Maps motion and animation patterns - CSS transitions, framer-motion, GSAP, prefers-reduced-motion - to .design/map/motion.md."
|
|
4
4
|
tools: Read, Write, Bash, Grep, Glob
|
|
5
5
|
color: cyan
|
|
6
6
|
model: inherit
|
|
@@ -25,10 +25,10 @@ You inventory motion and animation patterns. Zero session memory. You do not mod
|
|
|
25
25
|
|
|
26
26
|
- `.design/STATE.md`
|
|
27
27
|
- `reference/motion.md` (if present)
|
|
28
|
-
- `reference/motion-advanced.md` (if present)
|
|
29
|
-
- `reference/motion-easings.md` (if present)
|
|
30
|
-
- `reference/motion-transition-taxonomy.md` (if present)
|
|
31
|
-
- `reference/motion-spring.md` (if present)
|
|
28
|
+
- `reference/motion-advanced.md` (if present) - advanced patterns: spring physics, scroll-driven, FLIP, View Transitions API, gesture/drag mechanics, clip-path patterns, blur crossfades, Framer Motion hardware-accel gotcha
|
|
29
|
+
- `reference/motion-easings.md` (if present) - 12 canonical easing presets; classify each detected easing against this catalog
|
|
30
|
+
- `reference/motion-transition-taxonomy.md` (if present) - 8 transition families; classify page/route transitions against this taxonomy
|
|
31
|
+
- `reference/motion-spring.md` (if present) - spring presets; classify spring configs against gentle/wobbly/stiff/slow
|
|
32
32
|
- Any files supplied by the orchestrator
|
|
33
33
|
|
|
34
34
|
## Scan Strategy
|
|
@@ -92,7 +92,7 @@ Classify easing values against the 12 canonical presets in `reference/motion-eas
|
|
|
92
92
|
Classify page/route transitions against the 8 families in `reference/motion-transition-taxonomy.md`.
|
|
93
93
|
Classify spring configs against the 4 presets in `reference/motion-spring.md`.
|
|
94
94
|
|
|
95
|
-
## Output Format
|
|
95
|
+
## Output Format - `.design/map/motion.md`
|
|
96
96
|
|
|
97
97
|
**The output MUST begin with a structured JSON block** enclosed in ` ```json ``` ` fences, followed by the prose sections. The JSON block must conform to `reference/output-contracts/motion-map.schema.json`. Malformed or missing blocks are validation failures.
|
|
98
98
|
|
|
@@ -180,7 +180,7 @@ After the standard motion inventory, emit a "Micro-motion findings" section with
|
|
|
180
180
|
- Report: these should use CSS transitions, not keyframe animations
|
|
181
181
|
|
|
182
182
|
4. **Missing AnimatePresence initial={false}**
|
|
183
|
-
- Grep: `<AnimatePresence(?![^>]*initial=\{false\})`
|
|
183
|
+
- Grep: `<AnimatePresence(?![^>]*initial=\{false\})` - AnimatePresence without initial={false}
|
|
184
184
|
- Report: file:line; check if the wrapped component is persistent UI (not route-level transitions)
|
|
185
185
|
|
|
186
186
|
5. **Icon cross-fade with wrong bounce**
|
|
@@ -189,7 +189,7 @@ After the standard motion inventory, emit a "Micro-motion findings" section with
|
|
|
189
189
|
|
|
190
190
|
6. **scale-on-press outside canonical range**
|
|
191
191
|
- Grep: `scale.*0\.9[578]|scale.*0\.9[0-4]|whileTap.*scale.*0\.9[578]`
|
|
192
|
-
- Report: file:line; canonical press scale is 0.96
|
|
192
|
+
- Report: file:line; canonical press scale is 0.96 - not 0.95, 0.97, 0.98
|
|
193
193
|
|
|
194
194
|
### Output format for this section:
|
|
195
195
|
```
|