@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
|
@@ -8,8 +8,8 @@ This is the canonical template for the design pipeline's runtime state file.
|
|
|
8
8
|
- `.design/` is gitignored (not distributed with the plugin); only this template ships.
|
|
9
9
|
|
|
10
10
|
**Distinction from `.planning/STATE.md`:**
|
|
11
|
-
- `.planning/STATE.md` is GSD development state
|
|
12
|
-
- `.design/STATE.md` is pipeline runtime state
|
|
11
|
+
- `.planning/STATE.md` is GSD development state - used by the developers building this plugin.
|
|
12
|
+
- `.design/STATE.md` is pipeline runtime state - used by the pipeline when it runs in a user's project.
|
|
13
13
|
- Keep them strictly separate. Cross-references between them are deferred to Phase 6 per CONTEXT.md.
|
|
14
14
|
|
|
15
15
|
---
|
|
@@ -140,22 +140,22 @@ verify_completed_at: ~
|
|
|
140
140
|
| Field | Type | Set by | Purpose |
|
|
141
141
|
|-------|------|--------|---------|
|
|
142
142
|
| `pipeline_state_version` | float | fixed at `1.0` | Forward-compat marker for future format changes |
|
|
143
|
-
| `stage` | enum | every stage at entry | Current stage
|
|
143
|
+
| `stage` | enum | every stage at entry | Current stage - one of: `brief|explore|plan|design|verify` |
|
|
144
144
|
| `cycle` | string | lifecycle commands | Cycle identifier for Wave B multi-cycle projects (default: empty string) |
|
|
145
145
|
| `wave` | int | every stage | Wave number within current stage |
|
|
146
|
-
| `started_at` | ISO 8601 | scan at creation | Immutable
|
|
146
|
+
| `started_at` | ISO 8601 | scan at creation | Immutable - never updated after creation |
|
|
147
147
|
| `last_checkpoint` | ISO 8601 | every stage at exit | Updated on every stage transition and on mid-stage checkpoint |
|
|
148
148
|
|
|
149
149
|
### `<position>`
|
|
150
150
|
|
|
151
|
-
Mirrors frontmatter stage/wave plus progress and status. Duplication is intentional
|
|
151
|
+
Mirrors frontmatter stage/wave plus progress and status. Duplication is intentional - frontmatter is scannable by tooling; `<position>` is scannable by prose reading.
|
|
152
152
|
|
|
153
|
-
- `task_progress`: `<completed>/<total>`
|
|
153
|
+
- `task_progress`: `<completed>/<total>` - e.g. `3/7` means 3 of 7 tasks in the current stage complete
|
|
154
154
|
- `status`: one of
|
|
155
|
-
- `initialized`
|
|
156
|
-
- `in_progress`
|
|
157
|
-
- `completed`
|
|
158
|
-
- `blocked`
|
|
155
|
+
- `initialized` - scan just created the file, no work done
|
|
156
|
+
- `in_progress` - stage is actively running
|
|
157
|
+
- `completed` - stage finished successfully; next stage may begin
|
|
158
|
+
- `blocked` - stage cannot proceed; see `<blockers>`
|
|
159
159
|
|
|
160
160
|
### `<decisions>`
|
|
161
161
|
|
|
@@ -173,25 +173,25 @@ Discover stage populates with observable behaviors. Verify stage updates status.
|
|
|
173
173
|
|
|
174
174
|
### `<prototyping>`
|
|
175
175
|
|
|
176
|
-
Phase 25 surface (D-01). A checkpoint log
|
|
176
|
+
Phase 25 surface (D-01). A checkpoint log - NOT a stage. Tracks sketch and spike outcomes plus cycle-scoped skip suppressions for the prototype gate.
|
|
177
177
|
|
|
178
|
-
- `<sketch slug=… cycle=… decision=D-XX status=resolved/>`
|
|
179
|
-
- `<spike slug=… cycle=… decision=D-XX verdict=yes|no|partial status=resolved/>`
|
|
180
|
-
- `<skipped at=… cycle=… reason=…/>`
|
|
178
|
+
- `<sketch slug=… cycle=… decision=D-XX status=resolved/>` - written by `sketch-wrap-up` after a sketch resolves into a D-XX decision.
|
|
179
|
+
- `<spike slug=… cycle=… decision=D-XX verdict=yes|no|partial status=resolved/>` - written by `spike-wrap-up` after a spike resolves; `verdict` captures the answer.
|
|
180
|
+
- `<skipped at=… cycle=… reason=…/>` - written by the prototype gate when the user declines to sketch/spike at a firing point. Cycle-scoped suppression (D-02): a `<skipped/>` entry suppresses re-asking for the rest of the named cycle.
|
|
181
181
|
|
|
182
|
-
The block is **optional**
|
|
182
|
+
The block is **optional** - fresh STATE.md files do not carry it. The serializer omits the block entirely when no entries exist; appending the first entry is what materializes the block.
|
|
183
183
|
|
|
184
184
|
### `<quality_gate>`
|
|
185
185
|
|
|
186
|
-
Phase 25 surface (Plan 25-03 / D-06..D-09). Captures the most recent run of the Stage 4.5 quality gate (lint / typecheck / test / visual-regression) between Design and Verify. The block houses a single self-closing `<run/>` element
|
|
186
|
+
Phase 25 surface (Plan 25-03 / D-06..D-09). Captures the most recent run of the Stage 4.5 quality gate (lint / typecheck / test / visual-regression) between Design and Verify. The block houses a single self-closing `<run/>` element - append-mode is overkill, so each gate completion overwrites the entry.
|
|
187
187
|
|
|
188
|
-
- `started_at`
|
|
189
|
-
- `completed_at`
|
|
190
|
-
- `status`
|
|
191
|
-
- `iteration`
|
|
192
|
-
- `commands_run`
|
|
188
|
+
- `started_at` - ISO 8601 at which the parallel command run entered.
|
|
189
|
+
- `completed_at` - ISO 8601 at which the gate produced its terminal status.
|
|
190
|
+
- `status` - `pass | fail | timeout | skipped`. `pass` clears the verify-entry gate; `fail` blocks; `timeout` warns + proceeds (D-07); `skipped` indicates the detection chain resolved zero commands.
|
|
191
|
+
- `iteration` - non-negative integer fix-loop count (D-08). `1` = single clean pass; `N === max_iters` with `status === 'fail'` = bounded exhaustion.
|
|
192
|
+
- `commands_run` - comma-separated names of the commands actually executed in Step 2 (e.g., `lint,typecheck,test`). Empty string when `status === 'skipped'`.
|
|
193
193
|
|
|
194
|
-
The block is **optional**
|
|
194
|
+
The block is **optional** - fresh STATE.md files do not carry it. The serializer omits the block entirely when `quality_gate === null`; the SKILL writes the first `<run/>` to materialize it.
|
|
195
195
|
|
|
196
196
|
### `<connections>`
|
|
197
197
|
|
|
@@ -202,7 +202,7 @@ One line per external connection. Detected at scan entry via MCP availability pr
|
|
|
202
202
|
|
|
203
203
|
### `<blockers>`
|
|
204
204
|
|
|
205
|
-
Append-only log of active blockers. Format: `[stage] [ISO date]: [description]`. Cleared manually when blocker resolves (do not auto-clear
|
|
205
|
+
Append-only log of active blockers. Format: `[stage] [ISO date]: [description]`. Cleared manually when blocker resolves (do not auto-clear - preserve the record).
|
|
206
206
|
|
|
207
207
|
### `<timestamps>`
|
|
208
208
|
|
|
@@ -217,7 +217,7 @@ Every stage that runs in the pipeline MUST follow this contract when reading and
|
|
|
217
217
|
**At entry:**
|
|
218
218
|
1. Read `.design/STATE.md`. If the file does not exist and the current stage is `scan`, create it from this template with `started_at` = now and `last_checkpoint` = now; otherwise abort with a clear error ("run scan first").
|
|
219
219
|
2. Parse frontmatter `stage` and `<position>` `status`.
|
|
220
|
-
3. If `stage == current_stage` and `status == in_progress`: RESUME
|
|
220
|
+
3. If `stage == current_stage` and `status == in_progress`: RESUME - pick up from `task_progress` offset; do not reset progress.
|
|
221
221
|
4. If `stage != current_stage`: this is a normal stage transition. Set frontmatter `stage = current_stage`, `<position>` `stage = current_stage`, `<position>` `status = in_progress`, `<position>` `task_progress = 0/<total>`.
|
|
222
222
|
5. Update `<connections>` by probing each MCP tool; write the detected status.
|
|
223
223
|
6. Update `last_checkpoint` to now.
|
|
@@ -248,6 +248,6 @@ Every stage that runs in the pipeline MUST follow this contract when reading and
|
|
|
248
248
|
## Notes for Phase 2 implementors
|
|
249
249
|
|
|
250
250
|
- Do not add new top-level XML sections without updating this template.
|
|
251
|
-
- The write contract is non-negotiable
|
|
251
|
+
- The write contract is non-negotiable - stages that skip the read-at-entry step break resume.
|
|
252
252
|
- `<decisions>` and `<must_haves>` identifiers are sequential per-project, not globally unique. A new pipeline run on the same project starts at `D-01` / `M-01`.
|
|
253
|
-
- When in doubt, prefer appending new fields to existing sections over introducing new sections
|
|
253
|
+
- When in doubt, prefer appending new fields to existing sections over introducing new sections - preserves compatibility with `pipeline_state_version: 1.0`.
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
# Accessibility
|
|
1
|
+
# Accessibility - Thresholds and Requirements
|
|
2
2
|
|
|
3
3
|
These are concrete, measurable standards. WCAG 2.1 AA is the minimum baseline for all design work unless the client explicitly requires AAA or specifies otherwise.
|
|
4
4
|
|
|
5
5
|
---
|
|
6
6
|
|
|
7
|
-
## WCAG 2.1 AA
|
|
7
|
+
## WCAG 2.1 AA - Required Thresholds
|
|
8
8
|
|
|
9
9
|
### Color Contrast
|
|
10
10
|
|
|
@@ -12,20 +12,20 @@ These are concrete, measurable standards. WCAG 2.1 AA is the minimum baseline fo
|
|
|
12
12
|
|---|---|---|
|
|
13
13
|
| Normal text (< 18pt / < 14pt bold) | **4.5 : 1** | 7 : 1 |
|
|
14
14
|
| Large text (≥ 18pt or ≥ 14pt bold) | **3 : 1** | 4.5 : 1 |
|
|
15
|
-
| UI components and graphical objects | **3 : 1** |
|
|
16
|
-
| Decorative elements | No requirement |
|
|
15
|
+
| UI components and graphical objects | **3 : 1** | - |
|
|
16
|
+
| Decorative elements | No requirement | - |
|
|
17
17
|
|
|
18
18
|
**Calculate contrast**: `(L1 + 0.05) / (L2 + 0.05)` where L1 is the lighter luminance.
|
|
19
19
|
|
|
20
20
|
Common pitfalls:
|
|
21
|
-
- Placeholder text in inputs: must meet 4.5:1 (often doesn't
|
|
21
|
+
- Placeholder text in inputs: must meet 4.5:1 (often doesn't - gray placeholders fail)
|
|
22
22
|
- Disabled state text: WCAG exempts disabled elements, but aim for ≥ 3:1 anyway
|
|
23
23
|
- Link color vs body text: must be distinguishable by more than color alone (underline or 3:1 ratio vs background)
|
|
24
24
|
- Focus ring color vs its background: must meet 3:1
|
|
25
25
|
|
|
26
26
|
Tools: Use browser DevTools > Accessibility tab, or pass hex values through contrast calculation.
|
|
27
27
|
|
|
28
|
-
**See also:** [`./contrast-advanced.md`](./contrast-advanced.md)
|
|
28
|
+
**See also:** [`./contrast-advanced.md`](./contrast-advanced.md) - APCA (WCAG 3 draft) for perceptual contrast when WCAG 2.1 4.5:1 misranks thin/large/colored text. Recommended dual-target pattern: enforce WCAG 2.1 AA as a floor + APCA Lc-thresholds (75 / 60 / 45 / 30) for perceptual accuracy.
|
|
29
29
|
|
|
30
30
|
### Touch Target Size
|
|
31
31
|
|
|
@@ -34,7 +34,7 @@ Tools: Use browser DevTools > Accessibility tab, or pass hex values through cont
|
|
|
34
34
|
| iOS (Apple HIG) | **44 × 44 pt** |
|
|
35
35
|
| Android (Material Design) | **48 × 48 dp** |
|
|
36
36
|
| Web (WCAG 2.5.5 AAA) | **44 × 44 px** |
|
|
37
|
-
| Web (WCAG 2.5.8 AA
|
|
37
|
+
| Web (WCAG 2.5.8 AA - WCAG 2.2) | **24 × 24 px** (minimum, with spacing) |
|
|
38
38
|
|
|
39
39
|
Recommended target: 44 × 44 px on all platforms. Never smaller for primary actions.
|
|
40
40
|
|
|
@@ -49,7 +49,7 @@ hitSlop={{ top: 8, bottom: 8, left: 8, right: 8 }}
|
|
|
49
49
|
|
|
50
50
|
All interactive elements must have a visible focus indicator.
|
|
51
51
|
|
|
52
|
-
**Required for WCAG 2.4.11 (AA
|
|
52
|
+
**Required for WCAG 2.4.11 (AA - WCAG 2.2):**
|
|
53
53
|
- Focus indicator at minimum: **2px solid** outline, encloses the component
|
|
54
54
|
- Contrast between focused and unfocused: **3:1**
|
|
55
55
|
- Focus indicator doesn't overlap component content
|
|
@@ -71,13 +71,13 @@ Recommended focus ring: **3px solid**, `2px offset`, brand primary or `#2563eb`.
|
|
|
71
71
|
|
|
72
72
|
### Semantic Structure
|
|
73
73
|
|
|
74
|
-
- One `<h1>` per page. Headings are sequential: `h1` → `h2` → `h3`
|
|
75
|
-
- Interactive elements are focusable: use `<button>` for buttons, `<a href>` for links
|
|
76
|
-
- Form inputs have associated `<label for="id">`
|
|
74
|
+
- One `<h1>` per page. Headings are sequential: `h1` → `h2` → `h3` - never skip levels.
|
|
75
|
+
- Interactive elements are focusable: use `<button>` for buttons, `<a href>` for links - never `<div onClick>`.
|
|
76
|
+
- Form inputs have associated `<label for="id">` - not just placeholder text.
|
|
77
77
|
- Images have descriptive `alt=""` for meaningful images; `alt=""` for decorative.
|
|
78
78
|
- Icon-only buttons have `aria-label`: `<button aria-label="Close dialog">×</button>`.
|
|
79
79
|
|
|
80
|
-
**See:** [`./i18n.md`](./i18n.md) §WCAG i18n for SC 3.1.1 (`<html lang>`) and SC 3.1.2 (`<span lang="…">` language-of-parts) patterns
|
|
80
|
+
**See:** [`./i18n.md`](./i18n.md) §WCAG i18n for SC 3.1.1 (`<html lang>`) and SC 3.1.2 (`<span lang="…">` language-of-parts) patterns - screen readers select voice/pronunciation packs from these attributes; a missing or wrong `lang` value forces the user to hear French announced in an English accent.
|
|
81
81
|
|
|
82
82
|
### Color Must Not Be The Only Differentiator
|
|
83
83
|
|
|
@@ -154,7 +154,7 @@ font-size: 16px;
|
|
|
154
154
|
|
|
155
155
|
All animations must respect `prefers-reduced-motion: reduce`. See `reference/motion.md`.
|
|
156
156
|
|
|
157
|
-
The `prefers-reduced-motion` check is an accessibility requirement (WCAG 2.3.3 AAA; WCAG 2.2 reduces to recommendation
|
|
157
|
+
The `prefers-reduced-motion` check is an accessibility requirement (WCAG 2.3.3 AAA; WCAG 2.2 reduces to recommendation - but implement it regardless).
|
|
158
158
|
|
|
159
159
|
---
|
|
160
160
|
|
package/reference/adr-format.md
CHANGED
|
@@ -7,13 +7,13 @@ tags: [adr, decision, project-scoped, architecture, offer-gate]
|
|
|
7
7
|
last_updated: 2026-05-18
|
|
8
8
|
---
|
|
9
9
|
|
|
10
|
-
Source: mattpocock/skills (MIT)
|
|
10
|
+
Source: mattpocock/skills (MIT) - adapted with permission. See `../NOTICE` for the full attribution block.
|
|
11
11
|
|
|
12
12
|
# ADR Format
|
|
13
13
|
|
|
14
14
|
An Architecture Decision Record (ADR) is a project-scoped record of a decision that
|
|
15
15
|
outlives the current cycle. ADRs live at `docs/adr/NNNN-<slug>.md` (zero-padded sequence,
|
|
16
|
-
kebab-case slug) and are offered SPARINGLY
|
|
16
|
+
kebab-case slug) and are offered SPARINGLY - only when all three criteria of the offer
|
|
17
17
|
gate hold (D-04). Most decisions stay in `STATE.md` and roll over with the cycle; ADRs
|
|
18
18
|
are the rare exception. See `./context-md-format.md` for the lighter glossary form that
|
|
19
19
|
shares the same project-scoped lifetime.
|
|
@@ -31,12 +31,12 @@ the decision in `STATE.md` instead.
|
|
|
31
31
|
stated reasons. Decisions with no plausible alternative (e.g., "use HTTPS") do not
|
|
32
32
|
qualify.
|
|
33
33
|
|
|
34
|
-
Worked example
|
|
34
|
+
Worked example - **qualifier:** "Switch from REST to GraphQL for the public API."
|
|
35
35
|
Hard-to-reverse (clients integrate against the schema), surprising-without-context (most
|
|
36
36
|
greenfield APIs default to REST), real-tradeoff (tRPC and gRPC were rejected for stated
|
|
37
37
|
reasons). Ship an ADR.
|
|
38
38
|
|
|
39
|
-
Worked example
|
|
39
|
+
Worked example - **disqualifier:** "Rename the `users` table to `accounts`." Hard-to-reverse,
|
|
40
40
|
but the rationale is obvious from the rename and there is no real alternative once the
|
|
41
41
|
domain has settled on the word. Log in `STATE.md`, not an ADR.
|
|
42
42
|
|
|
@@ -63,14 +63,14 @@ supersedes: <optional — ADR number this one replaces, e.g., "0042">
|
|
|
63
63
|
## Body structure
|
|
64
64
|
|
|
65
65
|
The ADR body uses four `##` sections in the following order. Each section is a thin
|
|
66
|
-
paragraph or short bullet list
|
|
66
|
+
paragraph or short bullet list - ADRs are decision records, not design docs.
|
|
67
67
|
|
|
68
|
-
- `## Context`
|
|
68
|
+
- `## Context` - what situation made this decision necessary; cite the originating
|
|
69
69
|
cycle's `BRIEF.md` or `STATE.md` if relevant.
|
|
70
|
-
- `## Decision`
|
|
71
|
-
- `## Alternatives`
|
|
70
|
+
- `## Decision` - what was chosen, stated as an imperative.
|
|
71
|
+
- `## Alternatives` - what was considered and rejected, with brief rationale per
|
|
72
72
|
alternative.
|
|
73
|
-
- `## Consequences`
|
|
73
|
+
- `## Consequences` - what this enables, what it costs, what it constrains downstream.
|
|
74
74
|
|
|
75
75
|
## Status lifecycle
|
|
76
76
|
|
|
@@ -81,16 +81,16 @@ truth; transitions are explicit, never silent.
|
|
|
81
81
|
does not cite Proposed ADRs.
|
|
82
82
|
- **Accepted.** Decision active; downstream work cites this ADR by number.
|
|
83
83
|
- **Superseded.** Replaced by a later ADR. The later ADR's `supersedes:` field points
|
|
84
|
-
here, and this ADR's status is flipped to Superseded. NEVER delete a Superseded ADR
|
|
84
|
+
here, and this ADR's status is flipped to Superseded. NEVER delete a Superseded ADR -
|
|
85
85
|
the audit trail is the point.
|
|
86
86
|
- **Deprecated.** No longer relevant (e.g., the system the ADR governed was removed).
|
|
87
87
|
Kept for history.
|
|
88
88
|
|
|
89
89
|
## Cross-references
|
|
90
90
|
|
|
91
|
-
- Domain terms used in the ADR body should already appear in `CONTEXT.md`
|
|
91
|
+
- Domain terms used in the ADR body should already appear in `CONTEXT.md` - see
|
|
92
92
|
`./context-md-format.md`. If a term is missing, the writer adds it before referencing it.
|
|
93
|
-
- Cycle-scoped decisions (most routine choices) stay in `STATE.md`
|
|
93
|
+
- Cycle-scoped decisions (most routine choices) stay in `STATE.md` - see
|
|
94
94
|
`./STATE-TEMPLATE.md`.
|
|
95
|
-
- Skill structural rules (length cap, frontmatter, progressive disclosure)
|
|
95
|
+
- Skill structural rules (length cap, frontmatter, progressive disclosure) - see
|
|
96
96
|
`./skill-authoring-contract.md`.
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
# AI-Native Design Tool Interface
|
|
1
|
+
# AI-Native Design Tool Interface - Capability Contract
|
|
2
2
|
|
|
3
3
|
This file defines the capability-based contract that AI-native design tools must implement to integrate with the get-design-done pipeline. Two sub-categories are defined: **canvas** and **component-generator**. Future tools implement one sub-category and plug in via the same probe/read/write or probe/generate/adopt surface.
|
|
4
4
|
|
|
@@ -26,8 +26,8 @@ write(proposal) → { confirmed | rejected }
|
|
|
26
26
|
```
|
|
27
27
|
|
|
28
28
|
**Implementations:**
|
|
29
|
-
- `connections/paper-design.md`
|
|
30
|
-
- `connections/pencil-dev.md`
|
|
29
|
+
- `connections/paper-design.md` - MCP-based; 24-tool server; budget: 100 calls/week (free)
|
|
30
|
+
- `connections/pencil-dev.md` - file-based; `.pen` YAML spec files; git-tracked; no MCP
|
|
31
31
|
|
|
32
32
|
**Pipeline stages:** `explore` (read) + `verify` (screenshot) + `design` (write via writer agent)
|
|
33
33
|
|
|
@@ -53,8 +53,8 @@ adopt(variant: object) → { confirmed | rejected }
|
|
|
53
53
|
```
|
|
54
54
|
|
|
55
55
|
**Implementations:**
|
|
56
|
-
- `connections/21st-dev.md`
|
|
57
|
-
- `connections/magic-patterns.md`
|
|
56
|
+
- `connections/21st-dev.md` - Magic MCP; `npx @21st-dev/magic@latest init`; marketplace prior-art gate
|
|
57
|
+
- `connections/magic-patterns.md` - Claude connector (`mcp__magic_patterns*`) + API key fallback; DS-aware generation
|
|
58
58
|
|
|
59
59
|
**Pipeline stages:** `explore` (prior-art gate for 21st.dev) + `design` (generate + adopt)
|
|
60
60
|
|
|
@@ -8,7 +8,7 @@ Use during Discover (baseline audit), Design (prevention), and Verify (complianc
|
|
|
8
8
|
|
|
9
9
|
Before shipping any artifact: **"If I told someone 'AI made this,' would they believe me immediately?"**
|
|
10
10
|
|
|
11
|
-
If yes
|
|
11
|
+
If yes - redo. The training-set monoculture has specific fingerprints. Learn them all.
|
|
12
12
|
|
|
13
13
|
---
|
|
14
14
|
|
|
@@ -28,7 +28,7 @@ border-right: 3px solid #6366f1;
|
|
|
28
28
|
|
|
29
29
|
**Why**: The border-left accent card is the most recognizable AI default. It signals no design thinking happened.
|
|
30
30
|
|
|
31
|
-
**Fix**: Use different element structure
|
|
31
|
+
**Fix**: Use different element structure - colored icon, colored background section, or inline accent element.
|
|
32
32
|
|
|
33
33
|
**Grep**: `border-left:\s*[2-9][0-9]*px|border-right:\s*[2-9][0-9]*px`
|
|
34
34
|
|
|
@@ -89,7 +89,7 @@ background: rgb(0, 0, 0);
|
|
|
89
89
|
|
|
90
90
|
**Why**: Pure black in dark mode creates harsh contrast and looks amateur.
|
|
91
91
|
|
|
92
|
-
**Fix**: oklch(12% 0 0) through oklch(18% 0.005 [hue])
|
|
92
|
+
**Fix**: oklch(12% 0 0) through oklch(18% 0.005 [hue]) - slightly warm or cool near-black.
|
|
93
93
|
|
|
94
94
|
**Grep**: `background.*#000000|background.*rgb\(0,\s*0,\s*0\)`
|
|
95
95
|
|
|
@@ -194,7 +194,7 @@ Glassmorphism as the default card treatment signals no layout thinking.
|
|
|
194
194
|
|
|
195
195
|
Using Inter, DM Sans, Space Grotesk, or Plus Jakarta Sans without a documented brand reason.
|
|
196
196
|
|
|
197
|
-
**Test**: Can you give 3 concrete reasons this font matches the product's brand? If not
|
|
197
|
+
**Test**: Can you give 3 concrete reasons this font matches the product's brand? If not - choose again.
|
|
198
198
|
|
|
199
199
|
### SLOP-06: Card-in-Card
|
|
200
200
|
|
|
@@ -235,7 +235,7 @@ Pastel-colored isometric illustrations with floating icons. Figma community temp
|
|
|
235
235
|
### Color Errors
|
|
236
236
|
|
|
237
237
|
- Gray on colored backgrounds (fails contrast, not "subtle")
|
|
238
|
-
- Pure gray neutrals
|
|
238
|
+
- Pure gray neutrals - add 0.005–0.015 chroma toward brand hue
|
|
239
239
|
- Red + green as the only meaning carrier (colorblind failure)
|
|
240
240
|
- Text over image without scrim or overlay
|
|
241
241
|
- Alpha-heavy transparency everywhere (incomplete palette signal)
|
|
@@ -274,7 +274,7 @@ Pastel-colored isometric illustrations with floating icons. Figma community temp
|
|
|
274
274
|
|
|
275
275
|
- `ease-in` on entrances (use `ease-out`)
|
|
276
276
|
- Same duration for enter and exit (exit should be 60–70% of enter)
|
|
277
|
-
- Animating `width`/`height` (triggers layout
|
|
277
|
+
- Animating `width`/`height` (triggers layout - use `transform` only)
|
|
278
278
|
- No `prefers-reduced-motion` media query
|
|
279
279
|
- Popover origin `transform-origin: center` (should come from trigger element)
|
|
280
280
|
- Button with no `:active` press feedback
|
|
@@ -292,11 +292,11 @@ Pastel-colored isometric illustrations with floating icons. Figma community temp
|
|
|
292
292
|
- No progressive disclosure on long forms (show all fields upfront)
|
|
293
293
|
|
|
294
294
|
### Feedback
|
|
295
|
-
- Instant (0ms) state transitions
|
|
295
|
+
- Instant (0ms) state transitions - feels broken
|
|
296
296
|
- "Loading..." spinners with no context ("Loading contacts..." is better)
|
|
297
297
|
- Success toast that blocks the next interaction
|
|
298
298
|
- Destructive action with no undo and no confirmation
|
|
299
|
-
- Confirmation dialog for reversible action (annoyance
|
|
299
|
+
- Confirmation dialog for reversible action (annoyance - use undo instead)
|
|
300
300
|
|
|
301
301
|
### Navigation
|
|
302
302
|
- Browser back button breaks app state
|
|
@@ -359,7 +359,7 @@ If YES to any → rewrite that element before proceeding.
|
|
|
359
359
|
|
|
360
360
|
bdId: BAN-10
|
|
361
361
|
|
|
362
|
-
Applying the same `border-radius` to a container and an element inside it (when the element is separated by padding) makes the inner element appear to "float"
|
|
362
|
+
Applying the same `border-radius` to a container and an element inside it (when the element is separated by padding) makes the inner element appear to "float" - the radii should be concentric, not equal.
|
|
363
363
|
|
|
364
364
|
**Grep (Tailwind):**
|
|
365
365
|
```
|
|
@@ -7,11 +7,11 @@ tags: [architecture, ousterhout, module, interface, depth, seam, adapter, levera
|
|
|
7
7
|
last_updated: 2026-05-18
|
|
8
8
|
---
|
|
9
9
|
|
|
10
|
-
Source: mattpocock/skills (MIT) via Ousterhout, *A Philosophy of Software Design*
|
|
10
|
+
Source: mattpocock/skills (MIT) via Ousterhout, *A Philosophy of Software Design* - adapted with permission. See `../NOTICE` for the full attribution block.
|
|
11
11
|
|
|
12
12
|
# Architecture Vocabulary
|
|
13
13
|
|
|
14
|
-
A shared vocabulary for architectural reasoning across GDD skills. Same words mean the same things across `zoom-out`, `debug`, `analyze-dependencies`, `map`, `quality-gate`, and the planning skills
|
|
14
|
+
A shared vocabulary for architectural reasoning across GDD skills. Same words mean the same things across `zoom-out`, `debug`, `analyze-dependencies`, `map`, `quality-gate`, and the planning skills - so agents and humans do not re-litigate "what did you mean by *module*" every conversation. Drawn from John Ousterhout's *A Philosophy of Software Design* via mattpocock's `improve-codebase-architecture/LANGUAGE.md`. GDD design-engineering analogs are surfaced where applicable - a UI component is a module, a design-token API is an interface, a token theme is an adapter.
|
|
15
15
|
|
|
16
16
|
This file is the canonical reference; skills cite it instead of re-defining terms inline.
|
|
17
17
|
|
|
@@ -19,13 +19,13 @@ This file is the canonical reference; skills cite it instead of re-defining term
|
|
|
19
19
|
|
|
20
20
|
A unit of code that hides implementation behind an interface. The module's value to its caller is everything inside that the caller no longer has to think about.
|
|
21
21
|
|
|
22
|
-
- A React component is a module
|
|
23
|
-
- A skill is a module
|
|
22
|
+
- A React component is a module - props are the interface, internal state and effects are the implementation.
|
|
23
|
+
- A skill is a module - frontmatter + workflow are the interface, the SKILL.md body is the implementation.
|
|
24
24
|
- See `./design-system-guidance.md` for the design-system-level analog: a component is a module; the token contract is its interface.
|
|
25
25
|
|
|
26
26
|
## Interface
|
|
27
27
|
|
|
28
|
-
What a module exposes to callers
|
|
28
|
+
What a module exposes to callers - function signatures, props, return types, error contracts, side-effect promises. The interface is what callers depend on; everything else they must NOT depend on. Small, stable interfaces are the goal.
|
|
29
29
|
|
|
30
30
|
- `function fetchUser(id: string): Promise<User>` is the interface. How `fetchUser` calls the database is implementation.
|
|
31
31
|
- A React component's `props` plus its rendered DOM contract is the interface; useState, useEffect, internal helpers are not.
|
|
@@ -33,27 +33,27 @@ What a module exposes to callers — function signatures, props, return types, e
|
|
|
33
33
|
|
|
34
34
|
## Implementation
|
|
35
35
|
|
|
36
|
-
What the module hides
|
|
36
|
+
What the module hides - the code that does the work. Callers must not depend on it. Implementation is free to change as long as the interface holds.
|
|
37
37
|
|
|
38
38
|
- Switching `fetchUser` from REST to GraphQL without changing the call site = implementation change without interface change. Healthy.
|
|
39
39
|
- Renaming a private helper inside a React component does not break callers. Healthy.
|
|
40
|
-
- Exposing a class's "private" field that callers started reading turns implementation into de-facto interface. Unhealthy
|
|
40
|
+
- Exposing a class's "private" field that callers started reading turns implementation into de-facto interface. Unhealthy - fix by either formalizing the field as interface or stopping the leak.
|
|
41
41
|
|
|
42
42
|
## Depth
|
|
43
43
|
|
|
44
|
-
A module is **deep** when the interface is simple and the implementation hides genuine complexity. A module is **shallow** when the interface is as complex as the implementation
|
|
44
|
+
A module is **deep** when the interface is simple and the implementation hides genuine complexity. A module is **shallow** when the interface is as complex as the implementation - the wrapper adds no use and just shuffles the caller's mental load sideways.
|
|
45
45
|
|
|
46
|
-
- `Array.sort()` is deep
|
|
47
|
-
- `class Wrapper { getX() { return this.x; } }` is shallow
|
|
46
|
+
- `Array.sort()` is deep - one method name hides ~50 lines of comparison-sort logic plus stable-ordering guarantees.
|
|
47
|
+
- `class Wrapper { getX() { return this.x; } }` is shallow - the wrapper adds no use; the caller has to know about `Wrapper` AND `x`.
|
|
48
48
|
- Asymmetry in the caller's favor is the goal. Shallow modules cost the caller mental complexity without paying it back.
|
|
49
|
-
- See `./component-authoring.md` "Minimal API"
|
|
49
|
+
- See `./component-authoring.md` "Minimal API" - a 1-prop `<Image src=... />` that handles preload, lazy load, srcset, blur placeholder, error fallback is the depth principle applied to component design.
|
|
50
50
|
|
|
51
51
|
## Seam
|
|
52
52
|
|
|
53
|
-
The boundary where two abstractions meet
|
|
53
|
+
The boundary where two abstractions meet - where one module's interface is consumed by another. Seams are where you can replace one side without touching the other.
|
|
54
54
|
|
|
55
|
-
- **Hypothetical seam.** Only one implementation exists behind the boundary. Nothing yet validates the abstraction is meaningful
|
|
56
|
-
- **Real seam.** Two or more implementations exist; the boundary has been proved
|
|
55
|
+
- **Hypothetical seam.** Only one implementation exists behind the boundary. Nothing yet validates the abstraction is meaningful - the seam is a possibility statement.
|
|
56
|
+
- **Real seam.** Two or more implementations exist; the boundary has been proved essential by actual substitution. The seam is evidence.
|
|
57
57
|
- "One adapter = hypothetical seam; two adapters = real seam." See `## Principles` below.
|
|
58
58
|
- A `fetchUser` function backed only by Postgres is hypothetical; once a test double + a Postgres impl coexist, the seam is real.
|
|
59
59
|
|
|
@@ -61,42 +61,42 @@ The boundary where two abstractions meet — where one module's interface is con
|
|
|
61
61
|
|
|
62
62
|
A module that transforms one interface into another to enable substitution behind a seam. Adapters create seams; the count of distinct adapters approximates the seam's realism.
|
|
63
63
|
|
|
64
|
-
- A Redux-to-Zustand adapter exposes Redux's `store.dispatch` while wrapping a Zustand store underneath
|
|
64
|
+
- A Redux-to-Zustand adapter exposes Redux's `store.dispatch` while wrapping a Zustand store underneath - callers keep their Redux API; the implementation moved.
|
|
65
65
|
- A design-token theme is an adapter: it transforms one token contract (`--color-bg`) into specific concrete values (`oklch(98% 0 0)` in light theme, `oklch(15% 0 0)` in dark).
|
|
66
|
-
- An `acp-client` plus an `asp-client` are two adapters over the same "peer-CLI" seam
|
|
66
|
+
- An `acp-client` plus an `asp-client` are two adapters over the same "peer-CLI" seam - the second one proves the seam is meaningful (Phase 27).
|
|
67
67
|
|
|
68
|
-
##
|
|
68
|
+
## Use
|
|
69
69
|
|
|
70
|
-
The ratio of work-the-system-does to interface-the-caller-touches. High
|
|
70
|
+
The ratio of work-the-system-does to interface-the-caller-touches. High use = high depth = the caller buys a lot of work for a little API. Architectural choices that maximize use reduce future cost across all callers.
|
|
71
71
|
|
|
72
|
-
- `<Image />` with a `src` prop that handles preload, lazy load, srcset generation, blur placeholder, error fallback
|
|
73
|
-
- A 5-prop `<Button variant size leftIcon rightIcon onClick />` that only renders a styled `<button>`
|
|
74
|
-
-
|
|
72
|
+
- `<Image />` with a `src` prop that handles preload, lazy load, srcset generation, blur placeholder, error fallback - high use from a 1-prop API. Every caller benefits.
|
|
73
|
+
- A 5-prop `<Button variant size leftIcon rightIcon onClick />` that only renders a styled `<button>` - low use; the caller is still doing most of the configuration work.
|
|
74
|
+
- Use compounds. A high-impact primitive used by 20 components multiplies the original investment 20×.
|
|
75
75
|
|
|
76
76
|
## Locality
|
|
77
77
|
|
|
78
|
-
Related changes happen in the same place; unrelated changes do not ripple. Spatial cohesion of the change footprint. Locality is what makes a codebase "easy to modify"
|
|
78
|
+
Related changes happen in the same place; unrelated changes do not ripple. Spatial cohesion of the change footprint. Locality is what makes a codebase "easy to modify" - you can find the thing and change just the thing.
|
|
79
79
|
|
|
80
80
|
- Healthy: adding a new chart type touches `chart-types/<new-type>.ts` only.
|
|
81
81
|
- Broken: adding a new chart type touches `chart-types.ts` AND `chart-renderer.ts` AND `chart-config.ts` AND `chart-styles.css` AND `chart-icons.svg`. The system is forcing the author to remember 5 files for a 1-concept change.
|
|
82
|
-
- Test it with the **deletion test** (see `## Principles`)
|
|
82
|
+
- Test it with the **deletion test** (see `## Principles`) - if removing the feature requires touching the same N files, locality is asymmetric and the abstraction is leaking.
|
|
83
83
|
|
|
84
84
|
## Principles
|
|
85
85
|
|
|
86
|
-
Three
|
|
86
|
+
Three essential rules that operationalize the vocabulary above. Each one is a question you can ask during review.
|
|
87
87
|
|
|
88
|
-
- **Deletion test.** Can you delete the implementation and the interface still tells callers what they could do? If yes, the interface is well-defined and the module is properly encapsulated. If no, the interface is leaking implementation
|
|
89
|
-
- **Interface is the test surface.** Tests target the interface; implementation churn does not churn tests. If a refactor that preserves behavior breaks tests, the test was implementation-coupled
|
|
90
|
-
- **One adapter = hypothetical seam; two adapters = real seam.** One substitution is a possibility statement; two substitutions are evidence the boundary is meaningful. Do not over-design seams without ≥2 implementations
|
|
88
|
+
- **Deletion test.** Can you delete the implementation and the interface still tells callers what they could do? If yes, the interface is well-defined and the module is properly encapsulated. If no, the interface is leaking implementation - callers are reaching past the abstraction. Apply this when reviewing a new module: imagine deleting the body; can a reader still describe the surface from the signature alone?
|
|
89
|
+
- **Interface is the test surface.** Tests target the interface; implementation churn does not churn tests. If a refactor that preserves behavior breaks tests, the test was implementation-coupled - fix the test, not the refactor. This is also the diagnostic for whether you have a real interface at all: if you cannot test through it, the interface is too narrow or the implementation is leaking.
|
|
90
|
+
- **One adapter = hypothetical seam; two adapters = real seam.** One substitution is a possibility statement; two substitutions are evidence the boundary is meaningful. Do not over-design seams without ≥2 implementations - the second one teaches you what the seam actually needs. This is YAGNI for boundaries: ship the first impl, extract the seam when the second one arrives.
|
|
91
91
|
|
|
92
92
|
## How this applies to skill authoring
|
|
93
93
|
|
|
94
|
-
Skills are modules. The frontmatter (`name`, `description`, `tags`) plus the workflow signature is the interface; the SKILL.md body is the implementation. A deep skill has a small, predictable interface (clear when to invoke, clear output shape) hiding genuine workflow value. A shallow skill is one whose body adds little beyond what the frontmatter already implies
|
|
94
|
+
Skills are modules. The frontmatter (`name`, `description`, `tags`) plus the workflow signature is the interface; the SKILL.md body is the implementation. A deep skill has a small, predictable interface (clear when to invoke, clear output shape) hiding genuine workflow value. A shallow skill is one whose body adds little beyond what the frontmatter already implies - those skills should be either deepened or deleted. The skill-authoring contract's 100-line cap is the depth principle applied to skills: if the implementation cannot fit in 100 lines, either the workflow is too broad (split it) or supporting domain content should move to `reference/*.md` (extract-then-link, D-10). See `./skill-authoring-contract.md` for the full spec.
|
|
95
95
|
|
|
96
96
|
## Cross-references
|
|
97
97
|
|
|
98
|
-
- Design-system-level analog
|
|
99
|
-
- Component-library-level analog
|
|
100
|
-
- Skill-authoring application
|
|
98
|
+
- Design-system-level analog - component-as-module, design-token-as-interface: see `./design-system-guidance.md`.
|
|
99
|
+
- Component-library-level analog - the 6-principle quality standard (Minimal API, Composability, ...): see `./component-authoring.md`.
|
|
100
|
+
- Skill-authoring application - extract-then-link, 100-line cap, refs-one-level-deep: see `./skill-authoring-contract.md`.
|
|
101
101
|
- `CONTEXT.md` glossary format (project-scoped ubiquitous language alongside this vocabulary): see `./context-md-format.md`.
|
|
102
102
|
- ADR format (heavier project-scoped decisions about architectural seams): see `./adr-format.md`.
|
|
@@ -8,7 +8,7 @@ Use during Discover (establishing baseline) and Verify (measuring improvement).
|
|
|
8
8
|
|
|
9
9
|
| Level | Code | Impact | Action |
|
|
10
10
|
|---|---|---|---|
|
|
11
|
-
| Blocker | **P0** | Breaks functionality or violates a hard requirement | Fix before shipping
|
|
11
|
+
| Blocker | **P0** | Breaks functionality or violates a hard requirement | Fix before shipping - no exceptions |
|
|
12
12
|
| Major | **P1** | Significantly degrades UX or fails accessibility standard | Fix in this design pass |
|
|
13
13
|
| Minor | **P2** | Noticeable issue but doesn't break flows | Fix if time allows |
|
|
14
14
|
| Cosmetic | **P3** | Polish item only, subjective quality issue | Deferred to polish pass |
|
|
@@ -24,10 +24,10 @@ Score each category 0–10. Overall score = weighted average.
|
|
|
24
24
|
| Score | Criteria |
|
|
25
25
|
|---|---|
|
|
26
26
|
| 10 | All WCAG 2.1 AA criteria pass. Keyboard nav works end-to-end. Focus rings visible. No color-only meaning. |
|
|
27
|
-
| 8–9 | Minor issues
|
|
28
|
-
| 5–7 | Several violations
|
|
29
|
-
| 3–4 | Multiple failures
|
|
30
|
-
| 0–2 | Critical failures
|
|
27
|
+
| 8–9 | Minor issues - 1–2 non-critical violations, no contrast failures on primary text |
|
|
28
|
+
| 5–7 | Several violations - contrast issues on secondary text, some missing labels |
|
|
29
|
+
| 3–4 | Multiple failures - some interactive elements inaccessible, missing alt text |
|
|
30
|
+
| 0–2 | Critical failures - primary text fails contrast, keyboard nav broken, missing form labels |
|
|
31
31
|
|
|
32
32
|
Auto-checkable:
|
|
33
33
|
- Body text contrast ≥ 4.5:1
|
|
@@ -73,7 +73,7 @@ grep -rEn "(padding|margin|gap):\s*(8|12|16)px" src/ --include="*.css" 2>/dev/nu
|
|
|
73
73
|
grep -rEn "(margin-top|margin-bottom|gap):\s*(32|40|48|64)px" src/ --include="*.css" 2>/dev/null | head -5
|
|
74
74
|
```
|
|
75
75
|
|
|
76
|
-
These patterns supplement the qualitative rubric above
|
|
76
|
+
These patterns supplement the qualitative rubric above - they cannot replace
|
|
77
77
|
visual inspection but reduce false positives during automated audit passes.
|
|
78
78
|
|
|
79
79
|
### 3. Typography (Weight: 15%)
|
|
@@ -162,11 +162,11 @@ Score = (Accessibility × 0.25)
|
|
|
162
162
|
|
|
163
163
|
| Grade | Score | Meaning |
|
|
164
164
|
|---|---|---|
|
|
165
|
-
| A | 90–100 | Excellent
|
|
166
|
-
| B | 75–89 | Good
|
|
167
|
-
| C | 60–74 | Acceptable
|
|
168
|
-
| D | 45–59 | Poor
|
|
169
|
-
| F | 0–44 | Failing
|
|
165
|
+
| A | 90–100 | Excellent - production ready |
|
|
166
|
+
| B | 75–89 | Good - minor polish needed |
|
|
167
|
+
| C | 60–74 | Acceptable - notable issues to address |
|
|
168
|
+
| D | 45–59 | Poor - significant redesign needed |
|
|
169
|
+
| F | 0–44 | Failing - fundamental problems |
|
|
170
170
|
|
|
171
171
|
---
|
|
172
172
|
|
|
@@ -226,7 +226,7 @@ Check for (see `reference/checklists.md` Micro-Polish Check gate):
|
|
|
226
226
|
- Font smoothing at `:root` only
|
|
227
227
|
- Dynamic numbers: `font-variant-numeric: tabular-nums`
|
|
228
228
|
- Nested elements: concentric radius (`innerRadius = outerRadius − padding`)
|
|
229
|
-
- Images: `outline: 1px solid rgba(0,0,0,0.08)`
|
|
229
|
+
- Images: `outline: 1px solid rgba(0,0,0,0.08)` - no tinted outlines
|
|
230
230
|
- Interactive elements <40px: `::after` hit-area extension to 40×40
|
|
231
231
|
- Press feedback: `scale(0.96)` exactly
|
|
232
232
|
- `AnimatePresence` on persistent UI: `initial={false}`
|
|
@@ -239,7 +239,7 @@ Check for (see `reference/checklists.md` Micro-Polish Check gate):
|
|
|
239
239
|
|
|
240
240
|
## Lens-Tags (Orthogonal)
|
|
241
241
|
|
|
242
|
-
Tags auditors attach to findings under existing pillars to record cross-cutting dimensions without changing the pillar structure or weights. Same orthogonal pattern as Phase 19.6 `emotion_levels` and `authoring_principles`. Adding a lens-tag does NOT change pillar weights, scoring math, or audit output format
|
|
242
|
+
Tags auditors attach to findings under existing pillars to record cross-cutting dimensions without changing the pillar structure or weights. Same orthogonal pattern as Phase 19.6 `emotion_levels` and `authoring_principles`. Adding a lens-tag does NOT change pillar weights, scoring math, or audit output format - it is a label on an existing finding.
|
|
243
243
|
|
|
244
244
|
### `composition_alignment`
|
|
245
245
|
|