@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
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
# Notification Routing
|
|
1
|
+
# Notification Routing - the event→channel contract for `scripts/lib/notify/dispatch.cjs`
|
|
2
2
|
|
|
3
3
|
How GDD routes pipeline events to the Team-Surfaces notification channels (Slack + Discord), redacts every outbound body, and degrades to a noop when a channel is unconfigured or disabled. Consumed by `scripts/lib/notify/dispatch.cjs`; the channel specs are `connections/slack.md` + `connections/discord.md`.
|
|
4
4
|
|
|
@@ -12,7 +12,7 @@ Event type → channels (overridable via `.design/config.json#notifications.rout
|
|
|
12
12
|
|---|---|---|
|
|
13
13
|
| `verify_fail` | a verify must-have failed | slack + discord (the "critical" surface) |
|
|
14
14
|
| `audit_pass` | an audit cleared the quality floor | slack + discord (the "digest" surface) |
|
|
15
|
-
| `ship` | a PR was created (`/gdd:ship`) | slack + discord (digest
|
|
15
|
+
| `ship` | a PR was created (`/gdd:ship`) | slack + discord (digest - PR URL + top-line audit) |
|
|
16
16
|
|
|
17
17
|
A user narrows or splits this in `.design/config.json`:
|
|
18
18
|
|
|
@@ -28,7 +28,7 @@ A user narrows or splits this in `.design/config.json`:
|
|
|
28
28
|
|
|
29
29
|
Unlisted event types route to nothing (no notification). Unknown channels are skipped.
|
|
30
30
|
|
|
31
|
-
## Redaction (mandatory
|
|
31
|
+
## Redaction (mandatory - the single chokepoint)
|
|
32
32
|
|
|
33
33
|
`dispatch(event)` builds the outbound body as `redact(summary + "\n" + details)` using `scripts/lib/redact.cjs` (11 secret/token patterns, Phase 22 + 33.5) **before** any POST. There is exactly one egress chokepoint; no notify path constructs an un-redacted outbound body. The static test `test/suite/notify-privacy-guard.test.cjs` asserts every `scripts/lib/notify/*.cjs` references `redact`.
|
|
34
34
|
|
|
@@ -43,12 +43,12 @@ A channel is a noop when **either**:
|
|
|
43
43
|
|
|
44
44
|
## Outbound transport (no SDK, injectable, allowlisted)
|
|
45
45
|
|
|
46
|
-
`dispatch(event, { fetchImpl, config, env })` POSTs `{ <field>: body }` to the channel's webhook URL (Slack `text`, Discord `content`) via an **injectable `fetchImpl`** (defaults to global `fetch`)
|
|
46
|
+
`dispatch(event, { fetchImpl, config, env })` POSTs `{ <field>: body }` to the channel's webhook URL (Slack `text`, Discord `content`) via an **injectable `fetchImpl`** (defaults to global `fetch`) - **no `@slack/*` / `discord.js` dependency** (D-02). Tests inject a stub fetchImpl (no live network - D-08). The module is allowlisted under the Phase-33.5 outbound gate (`scripts/security/outbound-allowlist.json` → `scripts/lib/notify/**`) with a threat-model egress entry.
|
|
47
47
|
|
|
48
48
|
## Degrade-to-noop (never blocks the pipeline)
|
|
49
49
|
|
|
50
|
-
For each routed channel, a missing webhook URL → `skipped (not_configured)`; kill-switch on → `skipped (disabled)`; a POST failure → `error` (logged, not thrown). `dispatch` returns `Array<{ channel, status, reason? }>` and **never throws**
|
|
50
|
+
For each routed channel, a missing webhook URL → `skipped (not_configured)`; kill-switch on → `skipped (disabled)`; a POST failure → `error` (logged, not thrown). `dispatch` returns `Array<{ channel, status, reason? }>` and **never throws** - notification delivery is a best-effort side surface, never a pipeline gate (D-03).
|
|
51
51
|
|
|
52
52
|
## Out of scope (per Phase 35 split)
|
|
53
53
|
|
|
54
|
-
Linear/Jira ticket-sync (Phase 35.3); PR-inline (35.1); `pseudonymize.cjs` identity-masking (Phase 30
|
|
54
|
+
Linear/Jira ticket-sync (Phase 35.3); PR-inline (35.1); `pseudonymize.cjs` identity-masking (Phase 30 - wired when available; redact for secrets is the must here); Microsoft Teams; rich blocks/embeds (plain text in v1); scheduled digests (event-driven only).
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Onboarding & Progressive Disclosure
|
|
2
2
|
|
|
3
|
-
New-user experience is the highest-
|
|
3
|
+
New-user experience is the highest-impact surface in any product. A user who does not reach the aha moment in the first session almost never returns. These guidelines encode the research and failure patterns accumulated across thousands of product launches into concrete, actionable rules.
|
|
4
4
|
|
|
5
5
|
---
|
|
6
6
|
|
|
@@ -10,16 +10,16 @@ Four dominant patterns exist for first-run experiences. Choosing the wrong one f
|
|
|
10
10
|
|
|
11
11
|
| Pattern | When to use | Cognitive load | Completion rate signal | Best for product type |
|
|
12
12
|
|---|---|---|---|---|
|
|
13
|
-
| **Empty-state onboarding** | Product value is only visible once data exists; blank canvas is the default state | Low
|
|
14
|
-
| **Product tour** | Interface is dense or non-obvious; terminology requires context | Medium
|
|
15
|
-
| **Checklist-style** | Value comes from setup completion; multiple required steps exist | Medium-high
|
|
13
|
+
| **Empty-state onboarding** | Product value is only visible once data exists; blank canvas is the default state | Low - user acts on their own terms | First meaningful action taken (e.g. first item created) | Creation tools, CRMs, project trackers |
|
|
14
|
+
| **Product tour** | Interface is dense or non-obvious; terminology requires context | Medium - user is passive during tour | Tour completion rate (misleading - see note) | Feature-rich SaaS dashboards, admin tools |
|
|
15
|
+
| **Checklist-style** | Value comes from setup completion; multiple required steps exist | Medium-high - visible task debt | Checklist completion %, items checked per session | Configuration-heavy tools, integrations |
|
|
16
16
|
| **Progressive disclosure** | Product has many features but a clear primary use case; depth should follow intent | Low at entry, scales with engagement | Feature adoption breadth over time | Consumer apps, platforms with power users |
|
|
17
17
|
|
|
18
|
-
**Empty-state onboarding** works because the blank state communicates what belongs there. A well-designed empty state
|
|
18
|
+
**Empty-state onboarding** works because the blank state communicates what belongs there. A well-designed empty state - with a clear headline, one CTA, and an illustrative hint - removes the need for any separate tutorial. The first action the user takes is the onboarding. The empty state must not look like an error; it should look like an invitation. Use an illustration or icon that visually previews the populated state, so users understand what they are working toward.
|
|
19
19
|
|
|
20
|
-
**Product tours** have notoriously misleading completion metrics. A user who clicks through all seven steps of a tour has not learned the product; they have dismissed it. Tours are most defensible when they label unfamiliar terminology (e.g. "This is your Workspace
|
|
20
|
+
**Product tours** have notoriously misleading completion metrics. A user who clicks through all seven steps of a tour has not learned the product; they have dismissed it. Tours are most defensible when they label unfamiliar terminology (e.g. "This is your Workspace - all your projects live here") rather than demonstrating features the user should simply use. If you do run a tour, keep it to five steps maximum, make every step skippable, and allow re-entry from a persistent help menu.
|
|
21
21
|
|
|
22
|
-
**Checklist-style onboarding** creates explicit visible progress. The risk is that users who skip to step 4 feel the overhead of incomplete items above them. Keep checklists short (five items maximum) and mark steps as skippable where appropriate. Celebrate completion with a visual reward. Progress bars within checklists should start at roughly 20% complete before the user takes any action
|
|
22
|
+
**Checklist-style onboarding** creates explicit visible progress. The risk is that users who skip to step 4 feel the overhead of incomplete items above them. Keep checklists short (five items maximum) and mark steps as skippable where appropriate. Celebrate completion with a visual reward. Progress bars within checklists should start at roughly 20% complete before the user takes any action - starting at zero signals a daunting amount of work ahead.
|
|
23
23
|
|
|
24
24
|
**Progressive disclosure** is the correct default for most modern products. Surface only what is needed at each stage of the user's journey and reveal depth as intent emerges. The cost of this approach is instrumentation: you must know what your users are actually doing in order to know what to surface next. Without event tracking and funnel analysis, progressive disclosure devolves into guesswork about which features to promote and when.
|
|
25
25
|
|
|
@@ -32,14 +32,14 @@ Four dominant patterns exist for first-run experiences. Choosing the wrong one f
|
|
|
32
32
|
Tooltips surface contextual information at the moment of relevance without blocking interaction. Follow these placement rules strictly:
|
|
33
33
|
|
|
34
34
|
- Position tooltips above the target element by default; fall back to right, left, then below only when viewport space requires it.
|
|
35
|
-
- Never place a tooltip over the element it describes
|
|
35
|
+
- Never place a tooltip over the element it describes - it should annotate without obscuring.
|
|
36
36
|
- A dismiss button (×) is required on any tooltip that is not triggered by hover alone. Users must always have a clear, explicit path to close.
|
|
37
37
|
- Cap tooltip hints at **three per session**. A fourth tooltip in the same session means the user has seen enough hints that the interface should simply be better, not that more hints are needed.
|
|
38
38
|
- Do not re-show a dismissed tooltip within the same session. Respecting the dismissal is the contract.
|
|
39
39
|
|
|
40
40
|
### Spotlight / Coach Marks
|
|
41
41
|
|
|
42
|
-
Spotlight overlays draw attention to a specific UI element by dimming the surrounding interface. Use them only for genuinely non-obvious interaction points
|
|
42
|
+
Spotlight overlays draw attention to a specific UI element by dimming the surrounding interface. Use them only for genuinely non-obvious interaction points - elements whose purpose or location a reasonable user would not discover through normal exploration.
|
|
43
43
|
|
|
44
44
|
Never use coach marks for:
|
|
45
45
|
|
|
@@ -65,7 +65,7 @@ Help icons, drawers, and inline `?` affordances provide depth on demand without
|
|
|
65
65
|
- Place `?` icons immediately to the right of the label they annotate, at the same vertical center.
|
|
66
66
|
- Use a help drawer (slide-in panel) when the content exceeds three sentences. Modals are inappropriate for help content because they block the interface the user is trying to understand.
|
|
67
67
|
- Distinguish between hover-triggered tooltips (quick factual answers, ≤ 20 words) and click-triggered drawers (procedural explanations, examples, links to documentation).
|
|
68
|
-
- Help icons should use a consistent icon throughout the product
|
|
68
|
+
- Help icons should use a consistent icon throughout the product - do not mix `?`, `ℹ`, and `…` as help affordances in the same interface.
|
|
69
69
|
|
|
70
70
|
---
|
|
71
71
|
|
|
@@ -83,9 +83,9 @@ Concretely: let the user reach their first meaningful outcome, then surface the
|
|
|
83
83
|
|
|
84
84
|
These two metrics measure different things and should never be conflated:
|
|
85
85
|
|
|
86
|
-
**Activation metric**
|
|
86
|
+
**Activation metric** - the event that indicates a user has experienced the product's core value for the first time. It is a binary event measured once. Examples: first project created, first file synced, first message sent.
|
|
87
87
|
|
|
88
|
-
**Habituation metric**
|
|
88
|
+
**Habituation metric** - the behavioral pattern that indicates a user has formed a habit around the product. It is a frequency measure over a time window. Examples: 3 sessions per week for 4 consecutive weeks, 5 actions per session on 7 of the last 10 days.
|
|
89
89
|
|
|
90
90
|
Activation predicts retention at day 7. Habituation predicts retention at day 30 and beyond. Optimizing only for activation produces users who try the product once and never return. Optimizing for habituation without a clear activation path means most users never get far enough to form the habit.
|
|
91
91
|
|
|
@@ -101,9 +101,9 @@ If your product genuinely requires more than three setup steps before value is d
|
|
|
101
101
|
|
|
102
102
|
Users who land in a product for the first time are in a state of orienting, not learning. They are trying to understand whether the product is relevant to them, not how to become experts.
|
|
103
103
|
|
|
104
|
-
Surface a "Start guided tour" CTA on the **second session**, not the first. By the second session, the user has self-selected
|
|
104
|
+
Surface a "Start guided tour" CTA on the **second session**, not the first. By the second session, the user has self-selected - they came back, which means something in the first session was interesting enough to return to. They are now in a learning state, not an evaluation state, and will benefit from structured guidance.
|
|
105
105
|
|
|
106
|
-
First-session tutorials should be limited to a single contextual hint or a dismissible welcome banner
|
|
106
|
+
First-session tutorials should be limited to a single contextual hint or a dismissible welcome banner - not a step-by-step walkthrough.
|
|
107
107
|
|
|
108
108
|
---
|
|
109
109
|
|
|
@@ -111,9 +111,9 @@ First-session tutorials should be limited to a single contextual hint or a dismi
|
|
|
111
111
|
|
|
112
112
|
Within five seconds of landing on a product for the first time, users form judgments on three dimensions that are extremely difficult to revise:
|
|
113
113
|
|
|
114
|
-
1. **Value proposition clarity**
|
|
115
|
-
2. **Trust signals**
|
|
116
|
-
3. **Visual confidence**
|
|
114
|
+
1. **Value proposition clarity** - Do I understand what this product does and who it is for?
|
|
115
|
+
2. **Trust signals** - Does this look credible, maintained, and professional?
|
|
116
|
+
3. **Visual confidence** - Does the design itself inspire confidence in the product's quality?
|
|
117
117
|
|
|
118
118
|
These are not conscious evaluations. They are fast, affective responses to visual and linguistic signals. A product that fails the 5-second test loses users before any feature or flow is ever reached.
|
|
119
119
|
|
|
@@ -122,9 +122,9 @@ These are not conscious evaluations. They are fast, affective responses to visua
|
|
|
122
122
|
**What passing looks like:**
|
|
123
123
|
- The headline names the outcome, not the mechanism ("Ship faster without context switching" rather than "A collaborative project management platform")
|
|
124
124
|
- At least one social proof or trust signal is visible above the fold (customer count, recognizable logo, security badge)
|
|
125
|
-
- The visual design is internally consistent
|
|
125
|
+
- The visual design is internally consistent - font pairing, spacing, and color are coherent enough that the product feels intentional
|
|
126
126
|
|
|
127
|
-
A screen that takes longer than five seconds to parse is not being evaluated
|
|
127
|
+
A screen that takes longer than five seconds to parse is not being evaluated - it is being abandoned.
|
|
128
128
|
|
|
129
129
|
**Common failures:**
|
|
130
130
|
|
|
@@ -144,7 +144,7 @@ Run the 5-second test on every major entry point: homepage, onboarding email lan
|
|
|
144
144
|
|
|
145
145
|
### Defining the Aha Moment
|
|
146
146
|
|
|
147
|
-
The aha moment is the first time a user experiences the core value the product was built to deliver. It is not a feature adoption event and not an engagement metric
|
|
147
|
+
The aha moment is the first time a user experiences the core value the product was built to deliver. It is not a feature adoption event and not an engagement metric - it is the specific moment when the product's promise becomes real and personal to the user.
|
|
148
148
|
|
|
149
149
|
Without a defined aha moment, onboarding cannot be optimized because there is no agreed destination to optimize toward.
|
|
150
150
|
|
|
@@ -152,9 +152,9 @@ Without a defined aha moment, onboarding cannot be optimized because there is no
|
|
|
152
152
|
|
|
153
153
|
The most cited aha moments in product history illustrate what the concept means in practice:
|
|
154
154
|
|
|
155
|
-
- **Twitter**: Users who followed at least 10 accounts within their first 48 hours retained at a dramatically higher rate than those who did not. The aha moment was not "post a tweet"
|
|
155
|
+
- **Twitter**: Users who followed at least 10 accounts within their first 48 hours retained at a dramatically higher rate than those who did not. The aha moment was not "post a tweet" - it was "see a feed of people you actually care about."
|
|
156
156
|
- **Slack**: Teams that exchanged at least 2,000 messages retained at over 90%. The aha moment emerged from the accumulated experience of communication flow, not from any single interaction.
|
|
157
|
-
- **Dropbox**: Users who synced at least one file experienced the aha moment. The product's promise
|
|
157
|
+
- **Dropbox**: Users who synced at least one file experienced the aha moment. The product's promise - "your files everywhere" - only became real once the first file was genuinely accessible on a second device.
|
|
158
158
|
|
|
159
159
|
In all three cases, the aha moment is an outcome state, not a feature interaction. This distinction matters for instrumentation.
|
|
160
160
|
|
|
@@ -162,11 +162,11 @@ In all three cases, the aha moment is an outcome state, not a feature interactio
|
|
|
162
162
|
|
|
163
163
|
To find your product's aha moment, run the following analysis:
|
|
164
164
|
|
|
165
|
-
1. **Define candidate activation events**
|
|
166
|
-
2. **Build retention cohorts by activation event**
|
|
167
|
-
3. **Identify the event with the largest retention delta**
|
|
168
|
-
4. **Validate with qualitative research**
|
|
169
|
-
5. **Reduce the time-to-aha**
|
|
165
|
+
1. **Define candidate activation events** - identify 5–10 behavioral events that plausibly represent first value (first export, first share, first search with results, first item added, etc.).
|
|
166
|
+
2. **Build retention cohorts by activation event** - for each candidate event, create two cohorts: users who performed the event in their first session vs. users who did not. Measure day-7 and day-30 retention for each cohort.
|
|
167
|
+
3. **Identify the event with the largest retention delta** - the event whose presence most strongly predicts that users will still be active 30 days later is your aha moment proxy.
|
|
168
|
+
4. **Validate with qualitative research** - confirm with user interviews that users who performed the event actually experienced a moment of genuine value, not just navigated through a flow.
|
|
169
|
+
5. **Reduce the time-to-aha** - once the event is identified, redesign onboarding to move the user toward that event as quickly as possible, removing every unnecessary step in between.
|
|
170
170
|
|
|
171
171
|
The aha moment is a hypothesis that must be re-evaluated as the product evolves. A feature change or new user segment can shift the activation event.
|
|
172
172
|
|
|
@@ -180,17 +180,17 @@ A forced tour blocks access to the product until the user completes a tutorial s
|
|
|
180
180
|
|
|
181
181
|
Users who complete forced tours do so under duress, not interest. Their completion rate looks healthy in analytics, but their recall of tour content is near zero. More critically, the forced-tour experience establishes a negative first emotional association with the product that carries forward into subsequent sessions.
|
|
182
182
|
|
|
183
|
-
**Never gate the product behind tutorial completion.** The skip button is not a concession
|
|
183
|
+
**Never gate the product behind tutorial completion.** The skip button is not a concession - it is a requirement.
|
|
184
184
|
|
|
185
185
|
### Blocking Modal Overlays
|
|
186
186
|
|
|
187
|
-
Modal overlays that cover the interface to display instructional content are problematic on two grounds. First, they prevent the user from interacting with the very interface they are being instructed about
|
|
187
|
+
Modal overlays that cover the interface to display instructional content are problematic on two grounds. First, they prevent the user from interacting with the very interface they are being instructed about - learning by doing is impossible when the interface is obscured. Second, full-screen modal overlays frequently fail WCAG 2.1 Success Criterion 1.3.4 (Orientation) and 2.1.2 (No Keyboard Trap) when implemented without proper focus management, making them inaccessible to keyboard and screen reader users.
|
|
188
188
|
|
|
189
189
|
Use inline empty states, contextual tooltips, or side drawers for instructional content. Reserve modals for actions that require a decision before proceeding, not for passive information delivery.
|
|
190
190
|
|
|
191
191
|
### Tooltip Spam
|
|
192
192
|
|
|
193
|
-
Displaying more than three tooltips simultaneously creates cognitive overload. The user cannot process multiple concurrent annotations
|
|
193
|
+
Displaying more than three tooltips simultaneously creates cognitive overload. The user cannot process multiple concurrent annotations - they will either dismiss all of them without reading or abandon the session. Three concurrent tooltips is already at the upper threshold of what users will tolerate; two is better; one is the correct default.
|
|
194
194
|
|
|
195
195
|
If your interface requires more than three tooltips to be usable, the interface needs redesign, not more tooltips.
|
|
196
196
|
|
|
@@ -216,9 +216,9 @@ Onboarding is only improvable if it is measured. The following metrics form the
|
|
|
216
216
|
|
|
217
217
|
**Activation rate** is the percentage of new users who reach the activation event within a defined window (typically 7 days). Baseline activation rates vary widely by product category, but any activation rate below 40% warrants investigation. An activation rate above 70% is a strong signal.
|
|
218
218
|
|
|
219
|
-
**Onboarding funnel drop-off** tracks step-by-step completion rates through any sequential onboarding flow. Every step should be instrumented individually. Drop-off above 30% at any single step is a red flag requiring immediate qualitative investigation
|
|
219
|
+
**Onboarding funnel drop-off** tracks step-by-step completion rates through any sequential onboarding flow. Every step should be instrumented individually. Drop-off above 30% at any single step is a red flag requiring immediate qualitative investigation - user interviews, session recordings, or both.
|
|
220
220
|
|
|
221
|
-
**Feature discovery breadth** measures how many distinct features or feature areas a user touches in their first 14 days. Low breadth in early sessions is not necessarily a problem
|
|
221
|
+
**Feature discovery breadth** measures how many distinct features or feature areas a user touches in their first 14 days. Low breadth in early sessions is not necessarily a problem - focused users often have the highest retention - but anomalously low breadth combined with low retention indicates that users are not finding the product's range of value.
|
|
222
222
|
|
|
223
223
|
| Metric | Healthy range | Warning threshold |
|
|
224
224
|
|---|---|---|
|
|
@@ -9,7 +9,7 @@ source of the mapping. Phase 33.6, decision D-03 (heuristic + override), D-04
|
|
|
9
9
|
## What it maps
|
|
10
10
|
|
|
11
11
|
The plugin speaks one tier vocabulary everywhere a model tier is named in
|
|
12
|
-
frontmatter or config: `opus`, `sonnet`, `haiku`
|
|
12
|
+
frontmatter or config: `opus`, `sonnet`, `haiku` - the same `VALID_TIERS` the
|
|
13
13
|
Phase-26 `tier-resolver.cjs` enforces. OpenRouter, by contrast, exposes a flat
|
|
14
14
|
catalog of provider-prefixed model ids (`anthropic/claude-opus-4-7`,
|
|
15
15
|
`meta-llama/llama-3.1-8b-instruct`, `qwen/qwen-2.5-72b-instruct`, …). The adapter
|
|
@@ -29,18 +29,18 @@ The adapter's public `resolve(tier)` always speaks `opus` / `sonnet` / `haiku`;
|
|
|
29
29
|
## The buckets
|
|
30
30
|
|
|
31
31
|
- **opus (HIGH) = top-tier closed.** The most capable closed-vendor model in the
|
|
32
|
-
catalog
|
|
32
|
+
catalog - the priciest premium id from a closed namespace. This is the
|
|
33
33
|
"spare-no-expense, hardest reasoning" slot.
|
|
34
34
|
- **sonnet (MEDIUM) = mid / top-open.** A capable model that sits below the opus
|
|
35
|
-
pick
|
|
35
|
+
pick - typically the mid-priced closed model, or the strongest open model when
|
|
36
36
|
no second closed tier is present. The everyday workhorse slot.
|
|
37
|
-
- **haiku (LOW) = cheap open.** The cheapest capable OPEN model
|
|
37
|
+
- **haiku (LOW) = cheap open.** The cheapest capable OPEN model - the
|
|
38
38
|
fast/inexpensive slot for high-volume, low-stakes calls.
|
|
39
39
|
|
|
40
40
|
## The signals
|
|
41
41
|
|
|
42
42
|
The heuristic is computed from fields already present on each catalog model, so it
|
|
43
|
-
stays deterministic for a fixed catalog (no clock, no randomness
|
|
43
|
+
stays deterministic for a fixed catalog (no clock, no randomness - important so the
|
|
44
44
|
33.6-04 golden baseline is stable):
|
|
45
45
|
|
|
46
46
|
- **Namespace (closed vs open).** The id prefix before the `/` names the vendor.
|
|
@@ -77,7 +77,7 @@ an exact catalog id via `.design/config.json`:
|
|
|
77
77
|
```
|
|
78
78
|
|
|
79
79
|
An override **wins** over the heuristic: when `openrouter_tier_overrides[tier]` is a
|
|
80
|
-
non-empty string, the adapter returns it verbatim
|
|
80
|
+
non-empty string, the adapter returns it verbatim - even if that id is not present
|
|
81
81
|
in the live catalog (the user's explicit choice is honored over catalog membership).
|
|
82
82
|
Tests inject the same map via `opts.overrides` instead of reading the live config
|
|
83
83
|
file, so the override path is exercised hermetically. The config read is best-effort:
|
|
@@ -86,12 +86,12 @@ rather than throwing.
|
|
|
86
86
|
|
|
87
87
|
## The graceful-null contract
|
|
88
88
|
|
|
89
|
-
OpenRouter is opt-in ALONGSIDE native provider auth
|
|
89
|
+
OpenRouter is opt-in ALONGSIDE native provider auth - never OpenRouter-only (D-08).
|
|
90
90
|
When no catalog is available (no cache, an empty `models[]`, or a `readCatalog` that
|
|
91
91
|
returns null) AND no override applies to the requested tier, `resolve` returns
|
|
92
92
|
`null`. A `null` is not an error: it is the signal that the caller (the router /
|
|
93
93
|
budget-enforcer, wired in 33.6-03) should fall back to the native provider via the
|
|
94
|
-
existing `scripts/lib/tier-resolver.cjs` fallback chain. The adapter NEVER throws
|
|
94
|
+
existing `scripts/lib/tier-resolver.cjs` fallback chain. The adapter NEVER throws -
|
|
95
95
|
an unknown tier, a missing config, a corrupt cache, or garbage options all degrade to
|
|
96
96
|
`null` (or to an override when one applies). This keeps OpenRouter a strictly
|
|
97
97
|
additive capability: turning it off, or having it fail to fetch, can never break a
|
|
@@ -6,23 +6,23 @@ source: "nextlevelbuilder/ui-ux-pro-max-skill (MIT) — data/colors.csv"
|
|
|
6
6
|
tags: [color, palette, wcag, industry]
|
|
7
7
|
---
|
|
8
8
|
|
|
9
|
-
# Palette Catalog
|
|
9
|
+
# Palette Catalog - Industry-Vertical Color Systems
|
|
10
10
|
|
|
11
11
|
This catalog gives design agents and the brief-stage palette picker a pre-verified starting point for every major industry vertical. Rather than selecting colors ad-hoc, an agent reads the vertical row that matches the product type, adopts the baseline tokens, then adjusts tints and shades to establish brand uniqueness without sacrificing legibility.
|
|
12
12
|
|
|
13
13
|
## How to Use This Catalog
|
|
14
14
|
|
|
15
|
-
**Step 1
|
|
15
|
+
**Step 1 - Identify the vertical.** Match the product type to the closest row. When a product spans verticals (e.g., a wellness fintech), prefer the primary revenue model as the anchor vertical and borrow the accent color from the secondary vertical.
|
|
16
16
|
|
|
17
|
-
**Step 2
|
|
17
|
+
**Step 2 - Adopt the baseline palette.** The hex values below represent the semantic center of each role: Primary, Secondary, Accent, Background, Foreground, Card, Muted, Border, Destructive. Downstream agents (design-executor, token-mapper) map these directly to CSS custom property names (`--color-primary`, `--color-secondary`, etc.).
|
|
18
18
|
|
|
19
|
-
**Step 3
|
|
19
|
+
**Step 3 - Cross-check brand voice.** Palette choice must align with the voice axis established in the brief. A palette that reads "authoritative navy" conflicts with a voice direction of "playful and irreverent." Resolve conflicts in favor of the voice axis - palettes are easier to shift than voice. For industry voice conventions, see `reference/brand-voice.md`.
|
|
20
20
|
|
|
21
|
-
**Step 4
|
|
21
|
+
**Step 4 - Adjust for brand uniqueness.** All values here are mid-point baselines. Shift the primary hue ±15°, adjust lightness ±10%, or introduce a proprietary tint to differentiate the brand. Do not use these hex values verbatim in production without at least one brand-distinguishing adjustment.
|
|
22
22
|
|
|
23
23
|
**See:** [`./color-theory.md`](./color-theory.md) §Color Harmonies for the OKLCH model that grounds these hue-shift instructions (perceptual lightness preserved across hues; sRGB ±15° distorts perceived brightness asymmetrically across yellow/blue).
|
|
24
24
|
|
|
25
|
-
**Step 5
|
|
25
|
+
**Step 5 - Verify pairing.** After choosing the palette, consult `reference/typography.md` for matching typeface pairings that reinforce the vertical's tone.
|
|
26
26
|
|
|
27
27
|
## WCAG Compliance Notes
|
|
28
28
|
|
|
@@ -30,8 +30,8 @@ All palettes in this catalog are designed to meet WCAG 2.1 AA as a baseline:
|
|
|
30
30
|
|
|
31
31
|
- **Body text:** Foreground-on-Background must achieve a contrast ratio of at least **4.5:1**. All rows in this table satisfy this requirement at the listed values.
|
|
32
32
|
- **UI elements (icons, borders, input outlines):** Must achieve at least **3:1** against their adjacent background. Verify muted and border values when used as sole affordance indicators.
|
|
33
|
-
- **Destructive actions:** The Destructive color is always shown against white (On-Primary)
|
|
34
|
-
- **Dark mode:** This catalog covers light-mode baselines. For dark mode, invert the lightness scale
|
|
33
|
+
- **Destructive actions:** The Destructive color is always shown against white (On-Primary) - verify contrast when placed on colored backgrounds.
|
|
34
|
+
- **Dark mode:** This catalog covers light-mode baselines. For dark mode, invert the lightness scale - Background moves to #0A0A0A–#1C1C1E range, Foreground to #F5F5F5, and Primary desaturates by 20% to reduce eye strain. See `reference/accessibility.md` for dark-mode token guidance.
|
|
35
35
|
|
|
36
36
|
> Note: Neumorphism palettes are not represented here because they structurally fail WCAG contrast requirements in most implementations. If a brief requests a neumorphic style, escalate to design-advisor before proceeding with palette selection.
|
|
37
37
|
|
|
@@ -42,43 +42,43 @@ All palettes in this catalog are designed to meet WCAG 2.1 AA as a baseline:
|
|
|
42
42
|
| FinTech/Banking | #1A56DB | #FFFFFF | #0E9F6E | #FFFFFF | #F05252 | #F9FAFB | #111928 | #FFFFFF | #F3F4F6 | #E5E7EB | #E02424 | Authoritative navy-blue signals trust and regulatory solidity; green secondary for positive account states and confirmations; red destructive for irreversible transfers and deletions. WCAG verified. |
|
|
43
43
|
| Healthcare/Medical | #0E9F6E | #FFFFFF | #1A56DB | #FFFFFF | #FF8A4C | #F9FAFB | #111928 | #FFFFFF | #F3F4F6 | #E5E7EB | #E02424 | Clinical green primary communicates health and safety; blue secondary for informational states; amber accent for caution alerts. Avoids emergency red as primary to prevent alarm. WCAG verified. |
|
|
44
44
|
| SaaS/B2B Tools | #6875F5 | #FFFFFF | #0E9F6E | #FFFFFF | #F05252 | #FFFFFF | #111928 | #F9FAFB | #F3F4F6 | #E5E7EB | #E02424 | Periwinkle-purple primary is the contemporary B2B SaaS signal (productively calm, not boring blue); green secondary for success states; red destructive. Cards slightly off-white to create depth without shadows. WCAG verified. |
|
|
45
|
-
| E-commerce/Retail | #D97706 | #FFFFFF | #1A56DB | #FFFFFF | #E02424 | #FFFFFF | #111928 | #F9FAFB | #FEF3C7 | #E5E7EB | #DC2626 | Amber primary drives purchase urgency and warmth; blue secondary for trust (payments, account); muted in warm-yellow family for promotional surfaces. Avoid pure red as primary
|
|
46
|
-
| Gaming/Entertainment | #7E3AF2 | #FFFFFF | #FF8A4C | #111928 | #F05252 | #111928 | #F9FAFB | #1F2937 | #374151 | #4B5563 | #EF4444 | Deep violet primary on dark background
|
|
47
|
-
| Social/Community | #3F83F8 | #FFFFFF | #0E9F6E | #FFFFFF | #F05252 | #FFFFFF | #111928 | #F9FAFB | #EFF6FF | #E5E7EB | #DC2626 | Friendly blue primary
|
|
45
|
+
| E-commerce/Retail | #D97706 | #FFFFFF | #1A56DB | #FFFFFF | #E02424 | #FFFFFF | #111928 | #F9FAFB | #FEF3C7 | #E5E7EB | #DC2626 | Amber primary drives purchase urgency and warmth; blue secondary for trust (payments, account); muted in warm-yellow family for promotional surfaces. Avoid pure red as primary - reserve for destructive/sale badges. WCAG verified. |
|
|
46
|
+
| Gaming/Entertainment | #7E3AF2 | #FFFFFF | #FF8A4C | #111928 | #F05252 | #111928 | #F9FAFB | #1F2937 | #374151 | #4B5563 | #EF4444 | Deep violet primary on dark background - high visual energy without neon; amber accent for XP/reward moments; dark card on near-black background creates depth. Light foreground on dark background meets 4.5:1. WCAG verified. |
|
|
47
|
+
| Social/Community | #3F83F8 | #FFFFFF | #0E9F6E | #FFFFFF | #F05252 | #FFFFFF | #111928 | #F9FAFB | #EFF6FF | #E5E7EB | #DC2626 | Friendly blue primary - approachable, not corporate; green for connection/online states; light muted sky for feed background separation. WCAG verified. |
|
|
48
48
|
| Developer Tools | #0F172A | #F8FAFC | #6875F5 | #FFFFFF | #22D3EE | #F8FAFC | #0F172A | #FFFFFF | #F1F5F9 | #CBD5E1 | #EF4444 | Near-black primary on white for precision and professionalism; purple secondary for interactive elements; cyan accent for syntax-highlight-inspired pops. Matches developer expectations set by GitHub, Linear, Vercel. WCAG verified. |
|
|
49
|
-
| EdTech/Learning | #FF8A4C | #FFFFFF | #6875F5 | #FFFFFF | #0E9F6E | #FFFBEB | #111928 | #FFFFFF | #FEF3C7 | #FDE68A | #DC2626 | Warm amber primary is energizing and optimistic
|
|
50
|
-
| Legal/Compliance | #1E3A5F | #FFFFFF | #374151 | #FFFFFF | #B45309 | #F9FAFB | #111928 | #FFFFFF | #F3F4F6 | #D1D5DB | #DC2626 | Deep navy primary signals authority, gravity, and precision; slate secondary for neutral UI chrome; amber accent for deadlines and flagged items. No bright colors
|
|
51
|
-
| HR/People Ops | #7E3AF2 | #FFFFFF | #FF8A4C | #FFFFFF | #0E9F6E | #FAF5FF | #111928 | #FFFFFF | #F3F4F6 | #E9D5FF | #DC2626 | Violet primary balances authority and empathy
|
|
49
|
+
| EdTech/Learning | #FF8A4C | #FFFFFF | #6875F5 | #FFFFFF | #0E9F6E | #FFFBEB | #111928 | #FFFFFF | #FEF3C7 | #FDE68A | #DC2626 | Warm amber primary is energizing and optimistic - signals motivation and focus; violet secondary for interactive quiz/exercise elements; warm background avoids clinical white. WCAG verified. |
|
|
50
|
+
| Legal/Compliance | #1E3A5F | #FFFFFF | #374151 | #FFFFFF | #B45309 | #F9FAFB | #111928 | #FFFFFF | #F3F4F6 | #D1D5DB | #DC2626 | Deep navy primary signals authority, gravity, and precision; slate secondary for neutral UI chrome; amber accent for deadlines and flagged items. No bright colors - the palette communicates seriousness. WCAG verified. |
|
|
51
|
+
| HR/People Ops | #7E3AF2 | #FFFFFF | #FF8A4C | #FFFFFF | #0E9F6E | #FAF5FF | #111928 | #FFFFFF | #F3F4F6 | #E9D5FF | #DC2626 | Violet primary balances authority and empathy - appropriate for people-management contexts; amber secondary for recognition/reward surfaces; lavender muted for soft separation. WCAG verified. |
|
|
52
52
|
| Real Estate/Property | #065F46 | #FFFFFF | #1A56DB | #FFFFFF | #B45309 | #F9FAFB | #111928 | #FFFFFF | #F3F4F6 | #E5E7EB | #DC2626 | Deep forest green primary signals land, stability, and value; blue secondary for financing/trust contexts; amber accent for featured/premium listings. Avoids the overused real-estate red. WCAG verified. |
|
|
53
53
|
| Travel/Hospitality | #1A56DB | #FFFFFF | #0E9F6E | #FFFFFF | #FF8A4C | #EFF6FF | #111928 | #FFFFFF | #DBEAFE | #BFDBFE | #DC2626 | Sky blue primary evokes open skies and freedom; green secondary for bookings confirmed and eco-travel; warm amber accent for warmth of destination discovery. Sky-tinted muted background is distinctive. WCAG verified. |
|
|
54
|
-
| Food/Delivery | #D97706 | #FFFFFF | #E02424 | #FFFFFF | #0E9F6E | #FFFBEB | #111928 | #FFFFFF | #FEF3C7 | #FDE68A | #B91C1C | Amber primary stimulates appetite and speed; red secondary for urgency (limited offers, spicy badge)
|
|
54
|
+
| Food/Delivery | #D97706 | #FFFFFF | #E02424 | #FFFFFF | #0E9F6E | #FFFBEB | #111928 | #FFFFFF | #FEF3C7 | #FDE68A | #B91C1C | Amber primary stimulates appetite and speed; red secondary for urgency (limited offers, spicy badge) - distinct from destructive red which is darker; warm background mirrors food photography warmth. WCAG verified. |
|
|
55
55
|
| Fitness/Wellness | #047857 | #FFFFFF | #1A56DB | #FFFFFF | #F05252 | #F0FDF4 | #111928 | #FFFFFF | #DCFCE7 | #BBF7D0 | #DC2626 | Saturated green primary signals vitality, growth, and health achievement; blue secondary for calm recovery/sleep contexts; red accent for intensity/max-effort moments. Green-tinted background reinforces wellness. WCAG verified. |
|
|
56
|
-
| Non-profit/NGO | #065F46 | #FFFFFF | #D97706 | #111928 | #1A56DB | #F9FAFB | #111928 | #FFFFFF | #F3F4F6 | #E5E7EB | #DC2626 | Deep green primary signals mission and environmental conscience; amber secondary for warmth and community; blue accent for data/impact reporting. Avoid corporate-looking palettes
|
|
56
|
+
| Non-profit/NGO | #065F46 | #FFFFFF | #D97706 | #111928 | #1A56DB | #F9FAFB | #111928 | #FFFFFF | #F3F4F6 | #E5E7EB | #DC2626 | Deep green primary signals mission and environmental conscience; amber secondary for warmth and community; blue accent for data/impact reporting. Avoid corporate-looking palettes - earthy and grounded. WCAG verified. |
|
|
57
57
|
| Government/Civic | #1E3A5F | #FFFFFF | #374151 | #FFFFFF | #D97706 | #F9FAFB | #111928 | #FFFFFF | #F3F4F6 | #D1D5DB | #DC2626 | Deep navy is the global convention for government digital services (GOV.UK, USWDS, Australian DTA); slate secondary for dense information displays; amber accent for notices and alerts. Trust through convention. WCAG verified. |
|
|
58
|
-
| Luxury/Fashion | #111928 | #F9FAFB | #374151 | #F9FAFB | #B45309 | #FFFFFF | #111928 | #F9FAFB | #F9FAFB | #E5E7EB | #DC2626 | Near-black primary on white background is the international language of luxury
|
|
59
|
-
| Media/Publishing | #111928 | #F9FAFB | #E02424 | #FFFFFF | #D97706 | #FFFFFF | #111928 | #F9FAFB | #F3F4F6 | #E5E7EB | #B91C1C | Near-black primary on white mirrors newspaper printing conventions
|
|
60
|
-
| Analytics/BI | #1A56DB | #FFFFFF | #0E9F6E | #FFFFFF | #FF8A4C | #F9FAFB | #111928 | #FFFFFF | #F3F4F6 | #E5E7EB | #DC2626 | Blue primary is the universal data-visualization anchor color
|
|
61
|
-
| AI/ML Platform | #4F46E5 | #FFFFFF | #7E3AF2 | #FFFFFF | #22D3EE | #0F172A | #F8FAFC | #1E293B | #334155 | #475569 | #EF4444 | Indigo primary on dark background
|
|
58
|
+
| Luxury/Fashion | #111928 | #F9FAFB | #374151 | #F9FAFB | #B45309 | #FFFFFF | #111928 | #F9FAFB | #F9FAFB | #E5E7EB | #DC2626 | Near-black primary on white background is the international language of luxury - Chanel, Saint Laurent, Bottega; slate secondary for layered surfaces; gold-amber accent for price points and premium badges. Minimum color = maximum status. WCAG verified. |
|
|
59
|
+
| Media/Publishing | #111928 | #F9FAFB | #E02424 | #FFFFFF | #D97706 | #FFFFFF | #111928 | #F9FAFB | #F3F4F6 | #E5E7EB | #B91C1C | Near-black primary on white mirrors newspaper printing conventions - ink on paper; red secondary for breaking news, featured sections, and editorial accents (NYT, BBC, The Guardian pattern); amber for secondary sections. WCAG verified. |
|
|
60
|
+
| Analytics/BI | #1A56DB | #FFFFFF | #0E9F6E | #FFFFFF | #FF8A4C | #F9FAFB | #111928 | #FFFFFF | #F3F4F6 | #E5E7EB | #DC2626 | Blue primary is the universal data-visualization anchor color - maps cleanly to sequential chart palettes; green secondary for positive delta/growth; amber accent for cautionary thresholds. Minimal decoration - the data is the hero. WCAG verified. |
|
|
61
|
+
| AI/ML Platform | #4F46E5 | #FFFFFF | #7E3AF2 | #FFFFFF | #22D3EE | #0F172A | #F8FAFC | #1E293B | #334155 | #475569 | #EF4444 | Indigo primary on dark background - the established AI product visual language (Anthropic, Cohere, Mistral); violet secondary for model/capability exploration; cyan accent for real-time/streaming states. Dark-first layout. WCAG verified. |
|
|
62
62
|
| Cybersecurity | #1E3A5F | #FFFFFF | #0E9F6E | #FFFFFF | #22D3EE | #0A0A0A | #F8FAFC | #111827 | #1F2937 | #374151 | #EF4444 | Deep navy on near-black background signals a monitoring environment; green secondary for "all clear" / healthy system states; cyan accent for network traffic visualization and active scanning states. Terminal-inspired palette. WCAG verified. |
|
|
63
|
-
| Logistics/Supply Chain | #D97706 | #111928 | #1A56DB | #FFFFFF | #0E9F6E | #FFFBEB | #111928 | #FFFFFF | #FEF3C7 | #FDE68A | #DC2626 | Amber primary mirrors physical logistics
|
|
64
|
-
| Insurance | #1E3A5F | #FFFFFF | #0E9F6E | #FFFFFF | #D97706 | #F9FAFB | #111928 | #FFFFFF | #F3F4F6 | #D1D5DB | #DC2626 | Navy primary signals protection, stability, and reliability
|
|
65
|
-
| Automotive | #111928 | #F9FAFB | #374151 | #F9FAFB | #E02424 | #F9FAFB | #111928 | #FFFFFF | #F3F4F6 | #D1D5DB | #B91C1C | Near-black primary matches the premium automotive convention
|
|
66
|
-
| Agriculture/AgriTech | #065F46 | #FFFFFF | #D97706 | #111928 | #1A56DB | #F0FDF4 | #111928 | #FFFFFF | #DCFCE7 | #A7F3D0 | #DC2626 | Deep green primary is literal and honest
|
|
67
|
-
| CleanTech/Sustainability | #047857 | #FFFFFF | #1A56DB | #FFFFFF | #D97706 | #F0FDF4 | #111928 | #FFFFFF | #DCFCE7 | #BBF7D0 | #DC2626 | Rich emerald primary signals genuine environmental commitment
|
|
68
|
-
| Pharmaceutical | #1E3A5F | #FFFFFF | #0E9F6E | #FFFFFF | #FF8A4C | #F9FAFB | #111928 | #FFFFFF | #F3F4F6 | #D1D5DB | #DC2626 | Regulated navy primary signals clinical authority and FDA compliance; green secondary for dosage confirmed and health-positive states; amber accent for contraindications and warnings. Never use red as primary
|
|
69
|
-
| Architecture/AEC | #374151 | #FFFFFF | #D97706 | #111928 | #1A56DB | #F9FAFB | #111928 | #FFFFFF | #F3F4F6 | #E5E7EB | #DC2626 | Slate primary evokes material neutrality
|
|
70
|
-
| Interior Design | #92400E | #FFFFFF | #065F46 | #FFFFFF | #1E3A5F | #FFFBEB | #111928 | #FFFFFF | #FEF3C7 | #FDE68A | #DC2626 | Warm terracotta-brown primary evokes material warmth
|
|
71
|
-
| Music/Audio | #111928 | #F9FAFB | #7E3AF2 | #FFFFFF | #F05252 | #0A0A0A | #F9FAFB | #1F2937 | #374151 | #4B5563 | #EF4444 | Near-black dark primary
|
|
72
|
-
| Photography/Video | #111928 | #F9FAFB | #374151 | #F9FAFB | #FF8A4C | #0A0A0A | #F9FAFB | #1F2937 | #374151 | #4B5563 | #EF4444 | Near-black dark canvas lets photography and video content take center stage
|
|
63
|
+
| Logistics/Supply Chain | #D97706 | #111928 | #1A56DB | #FFFFFF | #0E9F6E | #FFFBEB | #111928 | #FFFFFF | #FEF3C7 | #FDE68A | #DC2626 | Amber primary mirrors physical logistics - high-vis safety colors, warehouse signage, shipping labels; blue secondary for tracking/digital interfaces; warm background differentiates from generic enterprise SaaS. WCAG verified. |
|
|
64
|
+
| Insurance | #1E3A5F | #FFFFFF | #0E9F6E | #FFFFFF | #D97706 | #F9FAFB | #111928 | #FFFFFF | #F3F4F6 | #D1D5DB | #DC2626 | Navy primary signals protection, stability, and reliability - the universal insurance palette anchor (Allianz, AXA pattern); green secondary for claims approved and policy active states; amber for upcoming renewals and caution. WCAG verified. |
|
|
65
|
+
| Automotive | #111928 | #F9FAFB | #374151 | #F9FAFB | #E02424 | #F9FAFB | #111928 | #FFFFFF | #F3F4F6 | #D1D5DB | #B91C1C | Near-black primary matches the premium automotive convention - matte dark, precision engineering; red accent for performance/sport trims and urgency (limited availability); silver-gray secondary for neutral chrome surfaces. WCAG verified. |
|
|
66
|
+
| Agriculture/AgriTech | #065F46 | #FFFFFF | #D97706 | #111928 | #1A56DB | #F0FDF4 | #111928 | #FFFFFF | #DCFCE7 | #A7F3D0 | #DC2626 | Deep green primary is literal and honest - crops, fields, sustainability; amber secondary for harvest, yield, soil richness; blue accent for water management and satellite data. Green-tinted background grounds the product in nature. WCAG verified. |
|
|
67
|
+
| CleanTech/Sustainability | #047857 | #FFFFFF | #1A56DB | #FFFFFF | #D97706 | #F0FDF4 | #111928 | #FFFFFF | #DCFCE7 | #BBF7D0 | #DC2626 | Rich emerald primary signals genuine environmental commitment - distinct from generic "eco green"; blue secondary for water/energy resource tracking; amber accent for carbon credit and offset metrics. Avoid greenwashing: use the earthy tones. WCAG verified. |
|
|
68
|
+
| Pharmaceutical | #1E3A5F | #FFFFFF | #0E9F6E | #FFFFFF | #FF8A4C | #F9FAFB | #111928 | #FFFFFF | #F3F4F6 | #D1D5DB | #DC2626 | Regulated navy primary signals clinical authority and FDA compliance; green secondary for dosage confirmed and health-positive states; amber accent for contraindications and warnings. Never use red as primary - reserved for severe adverse events only. WCAG verified. |
|
|
69
|
+
| Architecture/AEC | #374151 | #FFFFFF | #D97706 | #111928 | #1A56DB | #F9FAFB | #111928 | #FFFFFF | #F3F4F6 | #E5E7EB | #DC2626 | Slate primary evokes material neutrality - concrete, steel, rendered surfaces; amber secondary for warmth of wood, brick, and material samples; blue accent for technical drawings and BIM layers. Restrained palette mirrors blueprint conventions. WCAG verified. |
|
|
70
|
+
| Interior Design | #92400E | #FFFFFF | #065F46 | #FFFFFF | #1E3A5F | #FFFBEB | #111928 | #FFFFFF | #FEF3C7 | #FDE68A | #DC2626 | Warm terracotta-brown primary evokes material warmth - timber, linen, clay; deep green secondary for biophilic design moments and plant integration; warm cream background mimics actual interior photography styling. WCAG verified. |
|
|
71
|
+
| Music/Audio | #111928 | #F9FAFB | #7E3AF2 | #FFFFFF | #F05252 | #0A0A0A | #F9FAFB | #1F2937 | #374151 | #4B5563 | #EF4444 | Near-black dark primary - music is a dark-mode-first medium (Spotify, SoundCloud, Apple Music pattern); violet secondary for playlist/discovery surfaces; red accent for recording states and live moments. WCAG verified on dark background. |
|
|
72
|
+
| Photography/Video | #111928 | #F9FAFB | #374151 | #F9FAFB | #FF8A4C | #0A0A0A | #F9FAFB | #1F2937 | #374151 | #4B5563 | #EF4444 | Near-black dark canvas lets photography and video content take center stage - the UI must disappear; slate secondary for control surfaces; amber accent for selected states and active tools. WCAG verified on dark background. |
|
|
73
73
|
| Crypto/Web3 | #4F46E5 | #FFFFFF | #0E9F6E | #FFFFFF | #F59E0B | #0F172A | #F8FAFC | #1E293B | #334155 | #475569 | #EF4444 | Indigo on dark background signals the crypto-native aesthetic (Coinbase, Uniswap pattern); green secondary for price-up and confirmed transaction states; gold accent for high-value wallet events. Dark-first mandatory. WCAG verified. |
|
|
74
74
|
| Marketing/AdTech | #D97706 | #111928 | #E02424 | #FFFFFF | #7E3AF2 | #FFFFFF | #111928 | #F9FAFB | #FEF3C7 | #FDE68A | #B91C1C | Amber primary signals campaign energy and conversion urgency; red secondary for CTAs and limited-offer badges; violet accent for creative/brand moments. Warm background differentiates from SaaS tools. WCAG verified. |
|
|
75
|
-
| Recruitment/HR Tech | #7E3AF2 | #FFFFFF | #1A56DB | #FFFFFF | #0E9F6E | #FAF5FF | #111928 | #FFFFFF | #F3E8FF | #E9D5FF | #DC2626 | Violet primary signals human potential and opportunity
|
|
76
|
-
| Customer Support/CX | #0E9F6E | #FFFFFF | #3F83F8 | #FFFFFF | #FF8A4C | #F9FAFB | #111928 | #FFFFFF | #F3F4F6 | #E5E7EB | #DC2626 | Green primary signals resolution and "all good"
|
|
77
|
-
| E-learning/MOOC | #6875F5 | #FFFFFF | #FF8A4C | #FFFFFF | #0E9F6E | #F9FAFB | #111928 | #FFFFFF | #EFF6FF | #E0E7FF | #DC2626 | Periwinkle primary is academically focused yet modern
|
|
78
|
-
| Telemedicine | #1A56DB | #FFFFFF | #0E9F6E | #FFFFFF | #FF8A4C | #EFF6FF | #111928 | #FFFFFF | #DBEAFE | #BFDBFE | #DC2626 | Blue primary signals clinical authority and digital trust
|
|
79
|
-
| Smart Home/IoT | #1E3A5F | #FFFFFF | #0E9F6E | #FFFFFF | #F59E0B | #F9FAFB | #111928 | #FFFFFF | #F3F4F6 | #E5E7EB | #DC2626 | Deep navy primary signals reliable infrastructure and always-on connectivity; green secondary for device-online and automation-active states; amber accent for device warnings and energy usage peaks. Functional palette
|
|
80
|
-
| Manufacturing/Industrial | #374151 | #FFFFFF | #D97706 | #111928 | #1A56DB | #F9FAFB | #111928 | #FFFFFF | #F3F4F6 | #D1D5DB | #DC2626 | Slate primary mirrors industrial material honesty
|
|
81
|
-
| Construction | #D97706 | #111928 | #374151 | #FFFFFF | #1A56DB | #FFFBEB | #111928 | #FFFFFF | #FEF3C7 | #FDE68A | #B91C1C | Amber primary is literal high-vis construction site signaling
|
|
75
|
+
| Recruitment/HR Tech | #7E3AF2 | #FFFFFF | #1A56DB | #FFFFFF | #0E9F6E | #FAF5FF | #111928 | #FFFFFF | #F3E8FF | #E9D5FF | #DC2626 | Violet primary signals human potential and opportunity - differentiated from corporate blue; navy secondary for employer-side trust; green accent for application submitted and offer extended. Lavender muted backgrounds are distinctive in the space. WCAG verified. |
|
|
76
|
+
| Customer Support/CX | #0E9F6E | #FFFFFF | #3F83F8 | #FFFFFF | #FF8A4C | #F9FAFB | #111928 | #FFFFFF | #F3F4F6 | #E5E7EB | #DC2626 | Green primary signals resolution and "all good" - the opposite of customer frustration red; blue secondary for informational knowledge base surfaces; amber accent for escalation and SLA-risk alerts. WCAG verified. |
|
|
77
|
+
| E-learning/MOOC | #6875F5 | #FFFFFF | #FF8A4C | #FFFFFF | #0E9F6E | #F9FAFB | #111928 | #FFFFFF | #EFF6FF | #E0E7FF | #DC2626 | Periwinkle primary is academically focused yet modern - bridges EdTech energy with SaaS discipline; amber secondary for assignment deadlines and achievement badges; green accent for progress and course completion. WCAG verified. |
|
|
78
|
+
| Telemedicine | #1A56DB | #FFFFFF | #0E9F6E | #FFFFFF | #FF8A4C | #EFF6FF | #111928 | #FFFFFF | #DBEAFE | #BFDBFE | #DC2626 | Blue primary signals clinical authority and digital trust - video-consult contexts require colors that photograph well on video call backgrounds; green secondary for patient-status OK and prescription-ready states; sky-blue background creates a calm, clinical context. WCAG verified. |
|
|
79
|
+
| Smart Home/IoT | #1E3A5F | #FFFFFF | #0E9F6E | #FFFFFF | #F59E0B | #F9FAFB | #111928 | #FFFFFF | #F3F4F6 | #E5E7EB | #DC2626 | Deep navy primary signals reliable infrastructure and always-on connectivity; green secondary for device-online and automation-active states; amber accent for device warnings and energy usage peaks. Functional palette - never decorative. WCAG verified. |
|
|
80
|
+
| Manufacturing/Industrial | #374151 | #FFFFFF | #D97706 | #111928 | #1A56DB | #F9FAFB | #111928 | #FFFFFF | #F3F4F6 | #D1D5DB | #DC2626 | Slate primary mirrors industrial material honesty - steel, aluminum, precision tooling; amber secondary mirrors high-visibility safety equipment conventions; blue accent for digital HMI overlays and OEE dashboards. Avoid soft consumer palettes. WCAG verified. |
|
|
81
|
+
| Construction | #D97706 | #111928 | #374151 | #FFFFFF | #1A56DB | #FFFBEB | #111928 | #FFFFFF | #FEF3C7 | #FDE68A | #B91C1C | Amber primary is literal high-vis construction site signaling - hard hats, caution tape, equipment; slate secondary for technical drawing and plan review surfaces; blue accent for BIM integration and weather/site tracking. Warm background. WCAG verified. |
|
|
82
82
|
|
|
83
83
|
For matching typography pairings by vertical, see `reference/typography.md`.
|
|
84
84
|
For industry voice conventions that must align with palette choice, see `reference/brand-voice.md`.
|
|
@@ -4,25 +4,25 @@ The decision engine reads these rules at every stage spawn point and writes its
|
|
|
4
4
|
|
|
5
5
|
---
|
|
6
6
|
|
|
7
|
-
## Hard Rules
|
|
8
|
-
|
|
9
|
-
1. **Sequential dependency**
|
|
10
|
-
2. **Shared write conflict**
|
|
11
|
-
3. **Interactive agent**
|
|
12
|
-
4. **Single task**
|
|
13
|
-
5. **Overlapping Touches**
|
|
14
|
-
6. **Schema migrations**
|
|
15
|
-
7. **Rate-limited external API**
|
|
16
|
-
|
|
17
|
-
## Soft Rules
|
|
18
|
-
|
|
19
|
-
8. **Below savings threshold**
|
|
20
|
-
9. **All candidates fast**
|
|
21
|
-
10. **Beyond max_parallel_agents cap**
|
|
22
|
-
11. **Worktree isolation unavailable**
|
|
23
|
-
12. **Below min_tasks_to_parallelize**
|
|
24
|
-
13. **Large context**
|
|
25
|
-
14. **Token-costly agents**
|
|
7
|
+
## Hard Rules - Always Serial (override everything)
|
|
8
|
+
|
|
9
|
+
1. **Sequential dependency** - Agent B requires output from Agent A → serial.
|
|
10
|
+
2. **Shared write conflict** - Two agents write to the same file path (intersecting `writes:` fields) → serial.
|
|
11
|
+
3. **Interactive agent** - Agent requires `AskUserQuestion` during execution → serial. Interactive agents cannot be parallelized.
|
|
12
|
+
4. **Single task** - Only 1 candidate in the wave → serial (nothing to parallelize).
|
|
13
|
+
5. **Overlapping Touches** - Two tasks have overlapping `Touches:` fields (same file paths) → serial.
|
|
14
|
+
6. **Schema migrations** - Any agent altering database schema (migrations, `ALTER TABLE`, index changes) → serial within its wave.
|
|
15
|
+
7. **Rate-limited external API** - Agents calling an external API with shared rate limits (same auth token, same quota) → serial.
|
|
16
|
+
|
|
17
|
+
## Soft Rules - Prefer Serial (yield to config overrides)
|
|
18
|
+
|
|
19
|
+
8. **Below savings threshold** - `sum(typical-duration-seconds) - max(typical-duration-seconds) < config.min_estimated_savings_seconds` (default 30s) → prefer serial.
|
|
20
|
+
9. **All candidates fast** - Every candidate has `typical-duration-seconds < 10` → parallel overhead may exceed savings → prefer serial.
|
|
21
|
+
10. **Beyond max_parallel_agents cap** - N candidates > `config.max_parallel_agents` → split into sequential waves of `max_parallel_agents` each.
|
|
22
|
+
11. **Worktree isolation unavailable** - `worktree_isolation: true` in config but git worktrees not available → fall back to serial.
|
|
23
|
+
12. **Below min_tasks_to_parallelize** - Fewer than `config.min_tasks_to_parallelize` (default 2) eligible → serial.
|
|
24
|
+
13. **Large context** - Any candidate's `<required_reading>` total is >100K tokens - risk of context bloat in concurrent dispatch → prefer serial.
|
|
25
|
+
14. **Token-costly agents** - Agents tagged `model: opus` with `typical-duration-seconds > 120s` - prefer serial to avoid bursty spend unless explicitly opted in.
|
|
26
26
|
|
|
27
27
|
---
|
|
28
28
|
|
|
@@ -105,4 +105,4 @@ WRITE verdict to STATE.md <parallelism_decision>
|
|
|
105
105
|
|
|
106
106
|
## Why this is a first-class primitive
|
|
107
107
|
|
|
108
|
-
"Why didn't it parallelize?" becomes a one-file STATE.md read
|
|
108
|
+
"Why didn't it parallelize?" becomes a one-file STATE.md read - not a guess. Every stage orchestrator computes and writes a verdict before any multi-agent spawn. Operators can audit the decision without rerunning.
|
|
@@ -4,7 +4,7 @@ Last verified: 2026-04-29
|
|
|
4
4
|
|
|
5
5
|
Authoritative capability matrix for the peer-CLI delegation layer (Phase 27).
|
|
6
6
|
The registry at `scripts/lib/peer-cli/registry.cjs` reads this map (encoded as
|
|
7
|
-
data in the `.cjs` source
|
|
7
|
+
data in the `.cjs` source - this doc is the human-readable mirror) to decide
|
|
8
8
|
which peer-CLI claims which agent role and which protocol to speak.
|
|
9
9
|
|
|
10
10
|
If you change this matrix, you MUST also change `CAPABILITY_MATRIX` in
|
|
@@ -14,7 +14,7 @@ The two are version-locked by Phase 27 D-05.
|
|
|
14
14
|
## Capability matrix
|
|
15
15
|
|
|
16
16
|
Each peer claims a fixed set of agent roles. The registry refuses to dispatch
|
|
17
|
-
a role to a peer that does not claim it
|
|
17
|
+
a role to a peer that does not claim it - this prevents accidental
|
|
18
18
|
mis-delegations like "let's try `design-auditor` against Qwen" that produce
|
|
19
19
|
garbage output (Phase 27 CONTEXT D-05).
|
|
20
20
|
|
|
@@ -28,19 +28,19 @@ garbage output (Phase 27 CONTEXT D-05).
|
|
|
28
28
|
|
|
29
29
|
Slash-command translation lives in each per-peer adapter
|
|
30
30
|
(`scripts/lib/peer-cli/adapters/<peer>.cjs`, landed by Plan 27-04). The
|
|
31
|
-
registry never invokes slash commands directly
|
|
31
|
+
registry never invokes slash commands directly - it routes the role and
|
|
32
32
|
delegates prompt-prefixing + slash translation to the adapter.
|
|
33
33
|
|
|
34
34
|
## Tie-breaking when two peers claim the same role
|
|
35
35
|
|
|
36
36
|
`research` is claimed by both `gemini` and `copilot`. When the registry's
|
|
37
37
|
`findPeerFor('research', tier)` runs, it walks peers in alphabetical order
|
|
38
|
-
of peer ID
|
|
38
|
+
of peer ID - `codex` < `copilot` < `cursor` < `gemini` < `qwen` - and
|
|
39
39
|
returns the first one that passes the health probe. So `copilot` wins
|
|
40
40
|
`research` over `gemini` when both are installed and allowlisted.
|
|
41
41
|
|
|
42
42
|
Users can override this by removing one of the two from
|
|
43
|
-
`.design/config.json#peer_cli.enabled_peers`
|
|
43
|
+
`.design/config.json#peer_cli.enabled_peers` - the unlisted peer is treated
|
|
44
44
|
as absent regardless of installation status (Phase 27 D-11 opt-in gating).
|
|
45
45
|
|
|
46
46
|
## Opt-in gating (D-11)
|
|
@@ -48,7 +48,7 @@ as absent regardless of installation status (Phase 27 D-11 opt-in gating).
|
|
|
48
48
|
A peer is dispatched to ONLY when:
|
|
49
49
|
|
|
50
50
|
1. The peer ID appears in `.design/config.json#peer_cli.enabled_peers`
|
|
51
|
-
(an array of allowlisted peer IDs). Default: `[]`
|
|
51
|
+
(an array of allowlisted peer IDs). Default: `[]` - empty, nothing
|
|
52
52
|
dispatches.
|
|
53
53
|
2. The peer's adapter module loads at `scripts/lib/peer-cli/adapters/<peer>.cjs`.
|
|
54
54
|
3. The adapter's `peerBinary()` resolver returns a path that exists on disk.
|
|
@@ -63,7 +63,7 @@ or broken peer must never break the cycle.
|
|
|
63
63
|
### `codex` (ASP)
|
|
64
64
|
|
|
65
65
|
OpenAI Codex CLI invoked as `codex app-server`. Speaks the App Server
|
|
66
|
-
Protocol
|
|
66
|
+
Protocol - thread-oriented, supports resume across calls (currently unused;
|
|
67
67
|
v1.27 always starts fresh threads).
|
|
68
68
|
|
|
69
69
|
- **Provenance:** runtime entry in `scripts/lib/install/runtimes.cjs` (`id: 'codex'`).
|
|
@@ -98,7 +98,7 @@ workflows.
|
|
|
98
98
|
### `copilot` (ACP)
|
|
99
99
|
|
|
100
100
|
GitHub Copilot CLI in ACP mode. Claims `review` and `research`. Tends to
|
|
101
|
-
win `research` against `gemini` on alphabetical tie-break
|
|
101
|
+
win `research` against `gemini` on alphabetical tie-break - users who
|
|
102
102
|
prefer Gemini for research should remove `copilot` from `enabled_peers`.
|
|
103
103
|
|
|
104
104
|
- **Provenance:** runtime entry in `scripts/lib/install/runtimes.cjs` (`id: 'copilot'`).
|
|
@@ -124,7 +124,7 @@ To add a new peer-CLI to the matrix:
|
|
|
124
124
|
Plan 27-10). It walks the protocol-fit check, the role-claim audit, the
|
|
125
125
|
adapter scaffold, and the test coverage required.
|
|
126
126
|
2. Append the peer to `CAPABILITY_MATRIX` in `scripts/lib/peer-cli/registry.cjs`
|
|
127
|
-
AND to the table at the top of this file. The two MUST stay in sync
|
|
127
|
+
AND to the table at the top of this file. The two MUST stay in sync -
|
|
128
128
|
the test suite (`tests/peer-cli-registry.test.cjs`) asserts the matrix
|
|
129
129
|
shape.
|
|
130
130
|
3. Add a `<peer>.cjs` adapter under `scripts/lib/peer-cli/adapters/`.
|
|
@@ -139,13 +139,13 @@ a peer, reverse the steps above plus update `tests/phase-27-baseline.test.cjs`.
|
|
|
139
139
|
|
|
140
140
|
## Cross-references
|
|
141
141
|
|
|
142
|
-
- `scripts/lib/peer-cli/registry.cjs`
|
|
142
|
+
- `scripts/lib/peer-cli/registry.cjs` - central dispatch, single source of
|
|
143
143
|
truth for the capability matrix as code.
|
|
144
|
-
- `scripts/lib/peer-cli/adapters/*.cjs`
|
|
144
|
+
- `scripts/lib/peer-cli/adapters/*.cjs` - per-peer thin adapters
|
|
145
145
|
(Plan 27-04).
|
|
146
|
-
- `scripts/lib/peer-cli/{acp,asp}-client.cjs`
|
|
146
|
+
- `scripts/lib/peer-cli/{acp,asp}-client.cjs` - protocol clients
|
|
147
147
|
(Plans 27-01 / 27-02).
|
|
148
|
-
- `scripts/lib/peer-cli/broker-lifecycle.cjs`
|
|
148
|
+
- `scripts/lib/peer-cli/broker-lifecycle.cjs` - long-lived session per
|
|
149
149
|
`(peer, workspace)` (Plan 27-03).
|
|
150
|
-
- Phase 27 CONTEXT.md
|
|
150
|
+
- Phase 27 CONTEXT.md - decision log including D-05 (this matrix),
|
|
151
151
|
D-07 (transparent fallback), D-11 (opt-in gating).
|