@hegemonart/get-design-done 1.41.5 → 1.43.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (434) hide show
  1. package/.claude-plugin/marketplace.json +2 -2
  2. package/.claude-plugin/plugin.json +1 -1
  3. package/CHANGELOG.md +1120 -1029
  4. package/README.md +158 -154
  5. package/SKILL.md +42 -42
  6. package/agents/README.md +53 -53
  7. package/agents/a11y-mapper.md +3 -3
  8. package/agents/component-benchmark-harvester.md +8 -8
  9. package/agents/component-benchmark-synthesizer.md +11 -11
  10. package/agents/component-taxonomy-mapper.md +5 -5
  11. package/agents/compose-executor.md +25 -25
  12. package/agents/conflict-resolver.md +8 -8
  13. package/agents/cost-forecaster.md +12 -12
  14. package/agents/decision-journal-exporter.md +5 -5
  15. package/agents/design-advisor.md +19 -19
  16. package/agents/design-assumptions-analyzer.md +16 -16
  17. package/agents/design-auditor.md +39 -39
  18. package/agents/design-authority-watcher.md +28 -28
  19. package/agents/design-component-generator.md +27 -27
  20. package/agents/design-context-builder.md +66 -66
  21. package/agents/design-context-checker-gate.md +5 -5
  22. package/agents/design-context-checker.md +20 -20
  23. package/agents/design-discussant.md +23 -23
  24. package/agents/design-doc-writer.md +12 -12
  25. package/agents/design-executor.md +38 -38
  26. package/agents/design-figma-writer.md +31 -31
  27. package/agents/design-fixer.md +27 -27
  28. package/agents/design-integration-checker-gate.md +5 -5
  29. package/agents/design-integration-checker.md +29 -29
  30. package/agents/design-paper-writer.md +14 -14
  31. package/agents/design-pattern-mapper.md +9 -9
  32. package/agents/design-pencil-writer.md +12 -12
  33. package/agents/design-phase-researcher.md +14 -14
  34. package/agents/design-plan-checker.md +13 -13
  35. package/agents/design-planner.md +24 -24
  36. package/agents/design-reflector.md +48 -48
  37. package/agents/design-research-synthesizer.md +21 -21
  38. package/agents/design-start-writer.md +7 -7
  39. package/agents/design-update-checker.md +8 -8
  40. package/agents/design-verifier-gate.md +5 -5
  41. package/agents/design-verifier.md +80 -80
  42. package/agents/ds-generator.md +14 -14
  43. package/agents/ds-migration-planner.md +12 -12
  44. package/agents/email-executor.md +26 -26
  45. package/agents/experiment-result-ingester.md +10 -10
  46. package/agents/flutter-executor.md +28 -28
  47. package/agents/gdd-graph-refresh.md +10 -10
  48. package/agents/gdd-intel-updater.md +11 -11
  49. package/agents/gdd-learnings-extractor.md +2 -2
  50. package/agents/motion-mapper.md +8 -8
  51. package/agents/motion-verifier.md +16 -16
  52. package/agents/pdf-executor.md +27 -27
  53. package/agents/perf-analyzer.md +20 -20
  54. package/agents/pr-commenter.md +24 -24
  55. package/agents/prototype-gate.md +29 -29
  56. package/agents/quality-gate-runner.md +21 -21
  57. package/agents/rollout-coordinator.md +8 -8
  58. package/agents/swift-executor.md +41 -41
  59. package/agents/ticket-sync-agent.md +19 -19
  60. package/agents/token-mapper.md +6 -6
  61. package/agents/user-research-synthesizer.md +13 -13
  62. package/agents/visual-hierarchy-mapper.md +2 -2
  63. package/dist/claude-code/.claude/skills/add-backlog/SKILL.md +48 -0
  64. package/dist/claude-code/.claude/skills/analyze-dependencies/SKILL.md +95 -0
  65. package/dist/claude-code/.claude/skills/apply-reflections/SKILL.md +92 -0
  66. package/dist/claude-code/.claude/skills/apply-reflections/apply-reflections-procedure.md +170 -0
  67. package/dist/claude-code/.claude/skills/audit/SKILL.md +79 -0
  68. package/dist/claude-code/.claude/skills/bandit-status/SKILL.md +94 -0
  69. package/dist/claude-code/.claude/skills/benchmark/SKILL.md +65 -0
  70. package/dist/claude-code/.claude/skills/bootstrap-ds/SKILL.md +43 -0
  71. package/dist/claude-code/.claude/skills/brief/SKILL.md +128 -0
  72. package/dist/claude-code/.claude/skills/budget/SKILL.md +45 -0
  73. package/dist/claude-code/.claude/skills/cache-manager/SKILL.md +66 -0
  74. package/dist/claude-code/.claude/skills/cache-manager/cache-policy.md +126 -0
  75. package/dist/claude-code/.claude/skills/check-update/SKILL.md +98 -0
  76. package/dist/claude-code/.claude/skills/compare/SKILL.md +82 -0
  77. package/dist/claude-code/.claude/skills/compare/compare-rubric.md +171 -0
  78. package/dist/claude-code/.claude/skills/complete-cycle/SKILL.md +81 -0
  79. package/dist/claude-code/.claude/skills/connections/SKILL.md +71 -0
  80. package/dist/claude-code/.claude/skills/connections/connections-onboarding.md +608 -0
  81. package/dist/claude-code/.claude/skills/continue/SKILL.md +24 -0
  82. package/dist/claude-code/.claude/skills/darkmode/SKILL.md +76 -0
  83. package/dist/claude-code/.claude/skills/darkmode/darkmode-audit-procedure.md +258 -0
  84. package/dist/claude-code/.claude/skills/debug/SKILL.md +41 -0
  85. package/dist/claude-code/.claude/skills/debug/debug-feedback-loops.md +119 -0
  86. package/dist/claude-code/.claude/skills/design/SKILL.md +99 -0
  87. package/dist/claude-code/.claude/skills/design/design-procedure.md +304 -0
  88. package/dist/claude-code/.claude/skills/discover/SKILL.md +72 -0
  89. package/dist/claude-code/.claude/skills/discover/discover-procedure.md +222 -0
  90. package/dist/claude-code/.claude/skills/discuss/SKILL.md +96 -0
  91. package/dist/claude-code/.claude/skills/do/SKILL.md +45 -0
  92. package/dist/claude-code/.claude/skills/explore/SKILL.md +105 -0
  93. package/dist/claude-code/.claude/skills/explore/explore-procedure.md +267 -0
  94. package/dist/claude-code/.claude/skills/export/SKILL.md +30 -0
  95. package/dist/claude-code/.claude/skills/extract-learnings/SKILL.md +98 -0
  96. package/dist/claude-code/.claude/skills/fast/SKILL.md +91 -0
  97. package/dist/claude-code/.claude/skills/figma-extract/SKILL.md +64 -0
  98. package/dist/claude-code/.claude/skills/figma-write/SKILL.md +39 -0
  99. package/dist/claude-code/.claude/skills/graphify/SKILL.md +49 -0
  100. package/dist/claude-code/.claude/skills/health/SKILL.md +99 -0
  101. package/dist/claude-code/.claude/skills/health/health-mcp-detection.md +44 -0
  102. package/dist/claude-code/.claude/skills/health/health-skill-length-report.md +69 -0
  103. package/dist/claude-code/.claude/skills/help/SKILL.md +87 -0
  104. package/dist/claude-code/.claude/skills/list-assumptions/SKILL.md +61 -0
  105. package/dist/claude-code/.claude/skills/locale/SKILL.md +51 -0
  106. package/dist/claude-code/.claude/skills/map/SKILL.md +89 -0
  107. package/dist/claude-code/.claude/skills/migrate/SKILL.md +70 -0
  108. package/dist/claude-code/.claude/skills/new-cycle/SKILL.md +37 -0
  109. package/dist/claude-code/.claude/skills/new-cycle/milestone-completeness-rubric.md +87 -0
  110. package/dist/claude-code/.claude/skills/new-project/SKILL.md +53 -0
  111. package/dist/claude-code/.claude/skills/next/SKILL.md +68 -0
  112. package/dist/claude-code/.claude/skills/note/SKILL.md +48 -0
  113. package/dist/claude-code/.claude/skills/openrouter-status/SKILL.md +86 -0
  114. package/dist/claude-code/.claude/skills/optimize/SKILL.md +97 -0
  115. package/dist/claude-code/.claude/skills/pause/SKILL.md +77 -0
  116. package/dist/claude-code/.claude/skills/peer-cli-add/SKILL.md +88 -0
  117. package/dist/claude-code/.claude/skills/peer-cli-add/peer-cli-protocol.md +161 -0
  118. package/dist/claude-code/.claude/skills/peer-cli-customize/SKILL.md +90 -0
  119. package/dist/claude-code/.claude/skills/peers/SKILL.md +96 -0
  120. package/dist/claude-code/.claude/skills/plan/SKILL.md +105 -0
  121. package/dist/claude-code/.claude/skills/plan/plan-procedure.md +278 -0
  122. package/dist/claude-code/.claude/skills/plant-seed/SKILL.md +48 -0
  123. package/dist/claude-code/.claude/skills/pr-branch/SKILL.md +32 -0
  124. package/dist/claude-code/.claude/skills/progress/SKILL.md +95 -0
  125. package/dist/claude-code/.claude/skills/quality-gate/SKILL.md +90 -0
  126. package/dist/claude-code/.claude/skills/quality-gate/threat-modeling.md +101 -0
  127. package/dist/claude-code/.claude/skills/quick/SKILL.md +44 -0
  128. package/dist/claude-code/.claude/skills/reapply-patches/SKILL.md +32 -0
  129. package/dist/claude-code/.claude/skills/recall/SKILL.md +75 -0
  130. package/dist/claude-code/.claude/skills/reflect/SKILL.md +85 -0
  131. package/dist/claude-code/.claude/skills/reflect/procedures/capability-gap-scan.md +120 -0
  132. package/dist/claude-code/.claude/skills/report-issue/SKILL.md +53 -0
  133. package/dist/claude-code/.claude/skills/report-issue/report-issue-procedure.md +120 -0
  134. package/dist/claude-code/.claude/skills/resume/SKILL.md +93 -0
  135. package/dist/claude-code/.claude/skills/review-backlog/SKILL.md +46 -0
  136. package/dist/claude-code/.claude/skills/review-decisions/SKILL.md +42 -0
  137. package/dist/claude-code/.claude/skills/roi/SKILL.md +54 -0
  138. package/dist/claude-code/.claude/skills/rollout-status/SKILL.md +35 -0
  139. package/dist/claude-code/.claude/skills/router/SKILL.md +89 -0
  140. package/dist/claude-code/.claude/skills/router/capability-gap-emitter.md +65 -0
  141. package/dist/claude-code/.claude/skills/router/router-pick-emitter.md +78 -0
  142. package/dist/claude-code/.claude/skills/router/router-rules.md +84 -0
  143. package/dist/claude-code/.claude/skills/scan/SKILL.md +92 -0
  144. package/dist/claude-code/.claude/skills/scan/scan-procedure.md +732 -0
  145. package/dist/claude-code/.claude/skills/settings/SKILL.md +87 -0
  146. package/dist/claude-code/.claude/skills/ship/SKILL.md +48 -0
  147. package/dist/claude-code/.claude/skills/sketch/SKILL.md +78 -0
  148. package/dist/claude-code/.claude/skills/sketch-wrap-up/SKILL.md +92 -0
  149. package/dist/claude-code/.claude/skills/skill-manifest/SKILL.md +79 -0
  150. package/dist/claude-code/.claude/skills/spike/SKILL.md +67 -0
  151. package/dist/claude-code/.claude/skills/spike-wrap-up/SKILL.md +86 -0
  152. package/dist/claude-code/.claude/skills/start/SKILL.md +67 -0
  153. package/dist/claude-code/.claude/skills/start/start-procedure.md +115 -0
  154. package/dist/claude-code/.claude/skills/stats/SKILL.md +51 -0
  155. package/dist/claude-code/.claude/skills/style/SKILL.md +71 -0
  156. package/dist/claude-code/.claude/skills/style/style-doc-procedure.md +150 -0
  157. package/dist/claude-code/.claude/skills/synthesize/SKILL.md +94 -0
  158. package/dist/claude-code/.claude/skills/timeline/SKILL.md +66 -0
  159. package/dist/claude-code/.claude/skills/todo/SKILL.md +64 -0
  160. package/dist/claude-code/.claude/skills/turn-closeout/SKILL.md +95 -0
  161. package/dist/claude-code/.claude/skills/undo/SKILL.md +31 -0
  162. package/dist/claude-code/.claude/skills/unlock-decision/SKILL.md +54 -0
  163. package/dist/claude-code/.claude/skills/update/SKILL.md +56 -0
  164. package/dist/claude-code/.claude/skills/using-gdd/SKILL.md +78 -0
  165. package/dist/claude-code/.claude/skills/verify/SKILL.md +113 -0
  166. package/dist/claude-code/.claude/skills/verify/verify-procedure.md +512 -0
  167. package/dist/claude-code/.claude/skills/warm-cache/SKILL.md +81 -0
  168. package/dist/claude-code/.claude/skills/watch-authorities/SKILL.md +82 -0
  169. package/dist/claude-code/.claude/skills/zoom-out/SKILL.md +26 -0
  170. package/package.json +8 -2
  171. package/reference/DEPRECATIONS.md +21 -7
  172. package/reference/STATE-TEMPLATE.md +26 -26
  173. package/reference/accessibility.md +13 -13
  174. package/reference/adr-format.md +13 -13
  175. package/reference/ai-native-tool-interface.md +5 -5
  176. package/reference/anti-patterns.md +9 -9
  177. package/reference/architecture-vocabulary.md +31 -31
  178. package/reference/audit-scoring.md +13 -13
  179. package/reference/authority-feeds.md +36 -36
  180. package/reference/bandit-integration.md +25 -25
  181. package/reference/brand-voice.md +36 -36
  182. package/reference/capability-gap-stage-gate.md +20 -20
  183. package/reference/checklists.md +26 -26
  184. package/reference/cli-localization.md +13 -13
  185. package/reference/codex-tools.md +2 -2
  186. package/reference/color-theory.md +28 -28
  187. package/reference/component-authoring.md +4 -4
  188. package/reference/components/README.md +13 -13
  189. package/reference/components/TEMPLATE.md +13 -13
  190. package/reference/components/accordion.md +15 -15
  191. package/reference/components/alert.md +25 -25
  192. package/reference/components/badge.md +18 -18
  193. package/reference/components/breadcrumbs.md +24 -24
  194. package/reference/components/button.md +21 -21
  195. package/reference/components/card.md +13 -13
  196. package/reference/components/checkbox.md +20 -20
  197. package/reference/components/chip.md +20 -20
  198. package/reference/components/command-palette.md +15 -15
  199. package/reference/components/date-picker.md +22 -22
  200. package/reference/components/drawer.md +13 -13
  201. package/reference/components/file-upload.md +22 -22
  202. package/reference/components/input.md +18 -18
  203. package/reference/components/label.md +25 -25
  204. package/reference/components/link.md +19 -19
  205. package/reference/components/list.md +17 -17
  206. package/reference/components/menu.md +19 -19
  207. package/reference/components/modal-dialog.md +16 -16
  208. package/reference/components/navbar.md +19 -19
  209. package/reference/components/pagination.md +18 -18
  210. package/reference/components/popover.md +12 -12
  211. package/reference/components/progress.md +18 -18
  212. package/reference/components/radio.md +17 -17
  213. package/reference/components/rich-text-editor.md +24 -24
  214. package/reference/components/select-combobox.md +16 -16
  215. package/reference/components/sidebar.md +15 -15
  216. package/reference/components/skeleton.md +20 -20
  217. package/reference/components/slider.md +20 -20
  218. package/reference/components/stepper.md +24 -24
  219. package/reference/components/switch.md +19 -19
  220. package/reference/components/table.md +21 -21
  221. package/reference/components/tabs.md +11 -11
  222. package/reference/components/toast.md +19 -19
  223. package/reference/components/tooltip.md +19 -19
  224. package/reference/components/tree.md +17 -17
  225. package/reference/composition.md +38 -38
  226. package/reference/config-schema.md +37 -37
  227. package/reference/context-md-format.md +9 -9
  228. package/reference/contrast-advanced.md +29 -29
  229. package/reference/conversational-ui.md +17 -17
  230. package/reference/cost-governance.md +14 -14
  231. package/reference/css-grid-layout.md +8 -8
  232. package/reference/cycle-handoff-preamble.md +3 -3
  233. package/reference/data-visualization.md +67 -67
  234. package/reference/debugger-philosophy.md +5 -5
  235. package/reference/design-system-guidance.md +21 -21
  236. package/reference/design-systems-catalog.md +20 -20
  237. package/reference/design-variants.md +11 -11
  238. package/reference/domains/civic-patterns.md +10 -10
  239. package/reference/domains/finance-patterns.md +9 -9
  240. package/reference/domains/gaming-patterns.md +9 -9
  241. package/reference/domains/healthcare-patterns.md +11 -11
  242. package/reference/ds-bootstrap-rubric.md +13 -13
  243. package/reference/email-design.md +22 -22
  244. package/reference/emotional-design.md +10 -10
  245. package/reference/error-recovery.md +11 -11
  246. package/reference/export-formats.md +7 -7
  247. package/reference/figma-sandbox.md +6 -6
  248. package/reference/first-principles.md +10 -10
  249. package/reference/form-patterns.md +26 -26
  250. package/reference/framer-motion-patterns.md +49 -49
  251. package/reference/gdd-runtime-audit.md +17 -17
  252. package/reference/gdd-threat-model.md +44 -44
  253. package/reference/gemini-tools.md +3 -3
  254. package/reference/gestalt.md +24 -24
  255. package/reference/heuristics.md +32 -32
  256. package/reference/i18n.md +44 -44
  257. package/reference/iconography.md +24 -24
  258. package/reference/image-optimization.md +14 -14
  259. package/reference/information-architecture.md +47 -47
  260. package/reference/intel-schema.md +1 -1
  261. package/reference/known-failure-modes.md +37 -37
  262. package/reference/meta-rules.md +5 -5
  263. package/reference/migrations/material-3-to-4.md +17 -17
  264. package/reference/migrations/mui-v6.md +16 -16
  265. package/reference/migrations/shadcn-v2.md +25 -25
  266. package/reference/migrations/tailwind-v4.md +21 -21
  267. package/reference/model-prices.md +3 -3
  268. package/reference/model-tiers.md +40 -40
  269. package/reference/motion-advanced.md +21 -21
  270. package/reference/motion-easings.md +29 -29
  271. package/reference/motion-interpolate.md +1 -1
  272. package/reference/motion-spring.md +13 -13
  273. package/reference/motion-transition-taxonomy.md +34 -34
  274. package/reference/motion.md +31 -31
  275. package/reference/multi-author-model.md +13 -13
  276. package/reference/native-platforms.md +28 -28
  277. package/reference/notification-routing.md +6 -6
  278. package/reference/onboarding-progressive-disclosure.md +32 -32
  279. package/reference/openrouter-tier-mapping.md +8 -8
  280. package/reference/palette-catalog.md +37 -37
  281. package/reference/parallelism-rules.md +20 -20
  282. package/reference/peer-cli-capabilities.md +14 -14
  283. package/reference/peer-protocols.md +21 -21
  284. package/reference/perf-budget.md +21 -21
  285. package/reference/performance.md +22 -22
  286. package/reference/platforms.md +51 -51
  287. package/reference/pr-review-integration.md +7 -7
  288. package/reference/prices/antigravity.md +3 -3
  289. package/reference/prices/augment.md +3 -3
  290. package/reference/prices/claude.md +2 -2
  291. package/reference/prices/cline.md +4 -4
  292. package/reference/prices/codebuddy.md +3 -3
  293. package/reference/prices/codex.md +2 -2
  294. package/reference/prices/copilot.md +3 -3
  295. package/reference/prices/cursor.md +3 -3
  296. package/reference/prices/gemini.md +2 -2
  297. package/reference/prices/kilo.md +3 -3
  298. package/reference/prices/opencode.md +4 -4
  299. package/reference/prices/qwen.md +2 -2
  300. package/reference/prices/trae.md +3 -3
  301. package/reference/prices/windsurf.md +3 -3
  302. package/reference/prices.openrouter.md +5 -5
  303. package/reference/print-design.md +36 -36
  304. package/reference/priority-matrix.md +2 -2
  305. package/reference/project-skills-guide.md +3 -3
  306. package/reference/proportion-systems.md +23 -23
  307. package/reference/pseudonymization-rules.md +30 -30
  308. package/reference/registry.json +7 -0
  309. package/reference/retrieval-contract.md +14 -14
  310. package/reference/review-format.md +7 -7
  311. package/reference/rollout-coordination.md +10 -10
  312. package/reference/rtl-cjk-cultural.md +39 -39
  313. package/reference/runtime-models.md +28 -28
  314. package/reference/shared-preamble.md +26 -26
  315. package/reference/skill-authoring-contract.md +16 -16
  316. package/reference/skill-placeholders.md +71 -0
  317. package/reference/start-interview.md +10 -10
  318. package/reference/style-vocabulary.md +25 -25
  319. package/reference/surfaces.md +4 -4
  320. package/reference/ticket-sync.md +9 -9
  321. package/reference/typography.md +64 -64
  322. package/reference/user-research.md +54 -54
  323. package/reference/variable-fonts-loading.md +15 -15
  324. package/reference/visual-hierarchy-layout.md +41 -41
  325. package/scripts/lib/build/factory.cjs +62 -0
  326. package/scripts/lib/build/harness-configs.cjs +64 -0
  327. package/scripts/lib/manifest/prose-denylist.json +1 -1
  328. package/sdk/cli/commands/build.ts +106 -0
  329. package/sdk/cli/index.js +84 -2
  330. package/sdk/cli/index.ts +7 -0
  331. package/skills/add-backlog/SKILL.md +3 -3
  332. package/skills/analyze-dependencies/SKILL.md +10 -10
  333. package/skills/apply-reflections/SKILL.md +13 -13
  334. package/skills/apply-reflections/apply-reflections-procedure.md +20 -20
  335. package/skills/audit/SKILL.md +7 -7
  336. package/skills/bandit-status/SKILL.md +7 -7
  337. package/skills/benchmark/SKILL.md +7 -7
  338. package/skills/bootstrap-ds/SKILL.md +10 -10
  339. package/skills/brief/SKILL.md +20 -20
  340. package/skills/budget/SKILL.md +4 -4
  341. package/skills/cache-manager/SKILL.md +6 -6
  342. package/skills/cache-manager/cache-policy.md +5 -5
  343. package/skills/check-update/SKILL.md +5 -5
  344. package/skills/compare/SKILL.md +15 -15
  345. package/skills/compare/compare-rubric.md +17 -17
  346. package/skills/complete-cycle/SKILL.md +5 -5
  347. package/skills/connections/SKILL.md +11 -11
  348. package/skills/connections/connections-onboarding.md +76 -76
  349. package/skills/continue/SKILL.md +2 -2
  350. package/skills/darkmode/SKILL.md +17 -17
  351. package/skills/darkmode/darkmode-audit-procedure.md +7 -7
  352. package/skills/debug/SKILL.md +3 -3
  353. package/skills/debug/debug-feedback-loops.md +12 -12
  354. package/skills/design/SKILL.md +12 -12
  355. package/skills/design/design-procedure.md +23 -23
  356. package/skills/discover/SKILL.md +7 -7
  357. package/skills/discover/discover-procedure.md +18 -18
  358. package/skills/discuss/SKILL.md +12 -12
  359. package/skills/do/SKILL.md +1 -1
  360. package/skills/explore/SKILL.md +21 -21
  361. package/skills/explore/explore-procedure.md +48 -48
  362. package/skills/export/SKILL.md +9 -9
  363. package/skills/extract-learnings/SKILL.md +5 -5
  364. package/skills/fast/SKILL.md +7 -7
  365. package/skills/figma-extract/SKILL.md +11 -11
  366. package/skills/figma-write/SKILL.md +6 -6
  367. package/skills/graphify/SKILL.md +4 -4
  368. package/skills/health/SKILL.md +16 -16
  369. package/skills/health/health-mcp-detection.md +3 -3
  370. package/skills/health/health-skill-length-report.md +6 -6
  371. package/skills/help/SKILL.md +1 -1
  372. package/skills/list-assumptions/SKILL.md +4 -4
  373. package/skills/map/SKILL.md +12 -12
  374. package/skills/migrate/SKILL.md +5 -5
  375. package/skills/new-cycle/SKILL.md +2 -2
  376. package/skills/new-cycle/milestone-completeness-rubric.md +16 -16
  377. package/skills/new-project/SKILL.md +1 -1
  378. package/skills/next/SKILL.md +5 -5
  379. package/skills/note/SKILL.md +1 -1
  380. package/skills/openrouter-status/SKILL.md +4 -4
  381. package/skills/optimize/SKILL.md +15 -15
  382. package/skills/pause/SKILL.md +5 -5
  383. package/skills/peer-cli-add/SKILL.md +11 -11
  384. package/skills/peer-cli-add/peer-cli-protocol.md +39 -39
  385. package/skills/peer-cli-customize/SKILL.md +14 -14
  386. package/skills/peers/SKILL.md +4 -4
  387. package/skills/plan/SKILL.md +13 -13
  388. package/skills/plan/plan-procedure.md +24 -24
  389. package/skills/plant-seed/SKILL.md +4 -4
  390. package/skills/pr-branch/SKILL.md +2 -2
  391. package/skills/progress/SKILL.md +15 -15
  392. package/skills/quality-gate/SKILL.md +22 -22
  393. package/skills/quality-gate/threat-modeling.md +19 -19
  394. package/skills/quick/SKILL.md +5 -5
  395. package/skills/reapply-patches/SKILL.md +7 -7
  396. package/skills/reflect/SKILL.md +3 -3
  397. package/skills/reflect/procedures/capability-gap-scan.md +11 -11
  398. package/skills/report-issue/SKILL.md +5 -5
  399. package/skills/report-issue/report-issue-procedure.md +27 -27
  400. package/skills/resume/SKILL.md +9 -9
  401. package/skills/review-backlog/SKILL.md +3 -3
  402. package/skills/review-decisions/SKILL.md +3 -3
  403. package/skills/roi/SKILL.md +5 -5
  404. package/skills/rollout-status/SKILL.md +4 -4
  405. package/skills/router/SKILL.md +11 -11
  406. package/skills/router/capability-gap-emitter.md +6 -6
  407. package/skills/router/router-pick-emitter.md +9 -9
  408. package/skills/router/router-rules.md +7 -7
  409. package/skills/scan/SKILL.md +16 -16
  410. package/skills/scan/scan-procedure.md +42 -42
  411. package/skills/settings/SKILL.md +2 -2
  412. package/skills/ship/SKILL.md +7 -7
  413. package/skills/sketch/SKILL.md +10 -10
  414. package/skills/sketch-wrap-up/SKILL.md +12 -12
  415. package/skills/skill-manifest/SKILL.md +5 -5
  416. package/skills/spike/SKILL.md +7 -7
  417. package/skills/spike-wrap-up/SKILL.md +13 -13
  418. package/skills/start/SKILL.md +8 -8
  419. package/skills/start/start-procedure.md +9 -9
  420. package/skills/stats/SKILL.md +5 -5
  421. package/skills/style/SKILL.md +12 -12
  422. package/skills/style/style-doc-procedure.md +12 -12
  423. package/skills/synthesize/SKILL.md +10 -10
  424. package/skills/timeline/SKILL.md +4 -4
  425. package/skills/todo/SKILL.md +3 -3
  426. package/skills/turn-closeout/SKILL.md +10 -10
  427. package/skills/unlock-decision/SKILL.md +3 -3
  428. package/skills/update/SKILL.md +9 -9
  429. package/skills/using-gdd/SKILL.md +17 -17
  430. package/skills/verify/SKILL.md +13 -13
  431. package/skills/verify/verify-procedure.md +34 -34
  432. package/skills/warm-cache/SKILL.md +8 -8
  433. package/skills/watch-authorities/SKILL.md +9 -9
  434. package/skills/zoom-out/SKILL.md +4 -4
@@ -1,4 +1,4 @@
1
- # Notification Routing the event→channel contract for `scripts/lib/notify/dispatch.cjs`
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 PR URL + top-line audit) |
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 the single chokepoint)
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`) **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.
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** notification delivery is a best-effort side surface, never a pipeline gate (D-03).
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 wired when available; redact for secrets is the must here); Microsoft Teams; rich blocks/embeds (plain text in v1); scheduled digests (event-driven only).
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-leverage 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.
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 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 |
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 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.
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 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.
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 starting at zero signals a daunting amount of work ahead.
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 it should annotate without obscuring.
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 elements whose purpose or location a reasonable user would not discover through normal exploration.
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 do not mix `?`, `ℹ`, and `…` as help affordances in the same interface.
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** 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.
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** 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.
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 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.
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 not a step-by-step walkthrough.
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** 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?
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 font pairing, spacing, and color are coherent enough that the product feels intentional
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 it is being abandoned.
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 it is the specific moment when the product's promise becomes real and personal to the user.
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" it was "see a feed of people you actually care about."
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 "your files everywhere" only became real once the first file was genuinely accessible on a second device.
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** 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.
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 it is a requirement.
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 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.
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 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.
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 user interviews, session recordings, or both.
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 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.
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` the same `VALID_TIERS` the
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 the priciest premium id from a closed namespace. This is the
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 typically the mid-priced closed model, or the strongest open model when
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 the
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 important so the
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 even if that id is not present
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 never OpenRouter-only (D-08).
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 Industry-Vertical Color Systems
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 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.
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 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.).
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 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`.
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 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.
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 Verify pairing.** After choosing the palette, consult `reference/typography.md` for matching typeface pairings that reinforce the vertical's tone.
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) 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.
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 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. |
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 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. |
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) distinct from destructive red which is darker; warm background mirrors food photography warmth. 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) - 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 earthy and grounded. 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 - 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 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. |
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 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. |
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 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. |
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 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.
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 not a guess. Every stage orchestrator computes and writes a verdict before any multi-agent spawn. Operators can audit the decision without rerunning.
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 this doc is the human-readable mirror) to decide
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 this prevents accidental
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 it routes the role and
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 `codex` < `copilot` < `cursor` < `gemini` < `qwen` and
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` the unlisted peer is treated
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: `[]` empty, nothing
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 thread-oriented, supports resume across calls (currently unused;
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 users who
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` central dispatch, single source of
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` per-peer thin adapters
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` protocol clients
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` long-lived session per
148
+ - `scripts/lib/peer-cli/broker-lifecycle.cjs` - long-lived session per
149
149
  `(peer, workspace)` (Plan 27-03).
150
- - Phase 27 CONTEXT.md decision log including D-05 (this matrix),
150
+ - Phase 27 CONTEXT.md - decision log including D-05 (this matrix),
151
151
  D-07 (transparent fallback), D-11 (opt-in gating).