@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,28 +1,28 @@
1
- # Tailwind CSS v3 → v4 Migration Rule Library
1
+ # Tailwind CSS v3 → v4 - Migration Rule Library
2
2
 
3
- This is a **proposal-only** rule library consumed by `agents/ds-migration-planner.md` and the pure `scripts/lib/migration/codemod-gen.cjs`. It encodes the concrete, mechanical changes between Tailwind CSS v3 and v4 so the planner can template codemods. GDD never auto-applies any rule below every codemod is surfaced as a reviewable diff the USER inspects and runs.
3
+ This is a **proposal-only** rule library consumed by `agents/ds-migration-planner.md` and the pure `scripts/lib/migration/codemod-gen.cjs`. It encodes the concrete, mechanical changes between Tailwind CSS v3 and v4 so the planner can template codemods. GDD never auto-applies any rule below - every codemod is surfaced as a reviewable diff the USER inspects and runs.
4
4
 
5
- A note the planner should carry into any plan it writes: v4 raised its browser baseline (it targets modern Safari / Chrome / Firefox and leans on native CSS cascade layers, `@property`, and `color-mix()`). A project that must support older browsers is **not** a clean migration target the planner should surface that as a blocker rather than emitting codemods, since no class rename below can recover the dropped baseline.
5
+ A note the planner should carry into any plan it writes: v4 raised its browser baseline (it targets modern Safari / Chrome / Firefox and leans on native CSS cascade layers, `@property`, and `color-mix()`). A project that must support older browsers is **not** a clean migration target - the planner should surface that as a blocker rather than emitting codemods, since no class rename below can recover the dropped baseline.
6
6
 
7
7
  ## Detection
8
8
 
9
- Detect Tailwind and the v3→v4 boundary from `package.json` **alone** no file-content scanning is required for the gate. The planner reads `dependencies` + `devDependencies` and classifies:
9
+ Detect Tailwind and the v3→v4 boundary from `package.json` **alone** - no file-content scanning is required for the gate. The planner reads `dependencies` + `devDependencies` and classifies:
10
10
 
11
- - **Tailwind present** a `tailwindcss` key appears under `dependencies` or `devDependencies`. If absent, the project is out of scope and no rules apply.
11
+ - **Tailwind present** - a `tailwindcss` key appears under `dependencies` or `devDependencies`. If absent, the project is out of scope and no rules apply.
12
12
 
13
- - **On v3** the `tailwindcss` semver range resolves to `^3` / `~3` / `3.x`. Corroborating signals:
13
+ - **On v3** - the `tailwindcss` semver range resolves to `^3` / `~3` / `3.x`. Corroborating signals:
14
14
  - a `tailwind.config.js` (or `.cjs` / `.mjs` / `.ts`) referenced by the build config, and
15
15
  - a PostCSS pipeline that lists the bare `tailwindcss` plugin (in v3 the PostCSS plugin ships *inside* the core package).
16
16
 
17
- - **On v4** the `tailwindcss` range resolves to `^4` / `4.x`, **and/or** one of the dedicated build packages is present:
18
- - `@tailwindcss/postcss` the PostCSS plugin, which **moved out of core** into its own package in v4 (a high-confidence v4 marker), or
19
- - `@tailwindcss/vite` the first-party Vite plugin (used instead of PostCSS in Vite projects).
17
+ - **On v4** - the `tailwindcss` range resolves to `^4` / `4.x`, **and/or** one of the dedicated build packages is present:
18
+ - `@tailwindcss/postcss` - the PostCSS plugin, which **moved out of core** into its own package in v4 (a high-confidence v4 marker), or
19
+ - `@tailwindcss/vite` - the first-party Vite plugin (used instead of PostCSS in Vite projects).
20
20
 
21
- - **Migration candidate** `tailwindcss@^3` with **no** `@tailwindcss/postcss` and **no** `@tailwindcss/vite`. A `tailwind.config.js` that survives the version bump is the signal that the JS-config → CSS-first migration (TW4-02) has not yet run.
21
+ - **Migration candidate** - `tailwindcss@^3` with **no** `@tailwindcss/postcss` and **no** `@tailwindcss/vite`. A `tailwind.config.js` that survives the version bump is the signal that the JS-config → CSS-first migration (TW4-02) has not yet run.
22
22
 
23
- - **Build-tool target** a `vite` dependency steers the planner toward the `@tailwindcss/vite` install target; otherwise assume the `@tailwindcss/postcss` PostCSS target. Do **not** infer Tailwind from a lockfile alone require the manifest entry so the gate stays deterministic.
23
+ - **Build-tool target** - a `vite` dependency steers the planner toward the `@tailwindcss/vite` install target; otherwise assume the `@tailwindcss/postcss` PostCSS target. Do **not** infer Tailwind from a lockfile alone - require the manifest entry so the gate stays deterministic.
24
24
 
25
- Reading the semver range: treat a leading `^3` / `~3` / `3` / `3.x` as v3, and `^4` / `4` / `4.x` as v4. A wildcard (`*`) or git/`file:` specifier is **ambiguous** the planner should fall back to the corroborating signals above (presence of `@tailwindcss/postcss`, a surviving `tailwind.config.js`) and, if still unresolved, mark detection as inconclusive rather than guessing. Detection is package.json-only by design; the per-class renames in the table are confirmed later against source by the codemod step, not by this gate.
25
+ Reading the semver range: treat a leading `^3` / `~3` / `3` / `3.x` as v3, and `^4` / `4` / `4.x` as v4. A wildcard (`*`) or git/`file:` specifier is **ambiguous** - the planner should fall back to the corroborating signals above (presence of `@tailwindcss/postcss`, a surviving `tailwind.config.js`) and, if still unresolved, mark detection as inconclusive rather than guessing. Detection is package.json-only by design; the per-class renames in the table are confirmed later against source by the codemod step, not by this gate.
26
26
 
27
27
  ## Migration rules
28
28
 
@@ -33,7 +33,7 @@ Rule IDs are stable. `Kind ∈ rename-class | rename-prop | remove-component | t
33
33
  | TW4-01 | rename-prop | `@tailwind base; @tailwind components; @tailwind utilities;` → `@import "tailwindcss";` | The three v3 directives collapse into a single CSS import. Fully mechanical; affects the one entry CSS file. |
34
34
  | TW4-02 | token-rename | `tailwind.config.js` (JS `theme`) → `@theme { … }` (CSS-first) | Theme moves into CSS custom properties under `@theme`. The JS config is still loadable via an `@config "./tailwind.config.js";` bridge, but the native v4 target is CSS. Highest-effort rule in the set. |
35
35
  | TW4-03 | token-rename | `theme(colors.red.500)` in CSS → `var(--color-red-500)` | `@theme` tokens are emitted as real CSS variables, so `theme()` lookups and arbitrary values resolve to `var(--…)` references instead. |
36
- | TW4-04 | rename-class | `shadow-sm` → `shadow-xs` | Box-shadow scale shifted one step down. **High visual delta** every `shadow-sm` renders visibly smaller after the bump. |
36
+ | TW4-04 | rename-class | `shadow-sm` → `shadow-xs` | Box-shadow scale shifted one step down. **High visual delta** - every `shadow-sm` renders visibly smaller after the bump. |
37
37
  | TW4-05 | rename-class | `shadow` → `shadow-sm` | The bare `shadow` alias is removed; the old default maps to the new explicit `shadow-sm`. |
38
38
  | TW4-06 | rename-class | `drop-shadow` → `drop-shadow-sm` | Same bare-alias removal as TW4-05, applied across the `drop-shadow-*` filter scale. |
39
39
  | TW4-07 | rename-class | `blur-sm` → `blur-xs` | Blur scale shifted one step down, mirroring the shadow scale. |
@@ -47,27 +47,27 @@ Rule IDs are stable. `Kind ∈ rename-class | rename-prop | remove-component | t
47
47
  | TW4-15 | rename-class | `flex-shrink-0` / `flex-grow` → `shrink-0` / `grow` | The `flex-` prefix on shrink/grow was already deprecated in v3 and is removed in v4. Pure prefix strip, no value change. |
48
48
  | TW4-16 | new-default | default border / divide color `gray-200` → `currentColor` | v4 borders and dividers default to `currentColor`, not `gray-200`. To preserve the v3 look, set `@theme { --color-border: …; }` or add explicit `border-gray-200`. **High visual delta.** |
49
49
  | TW4-17 | rename-prop | `@layer utilities { … }` (custom utility) → `@utility name { … }` | Registering custom utilities now uses the `@utility` API; plain `@layer utilities` blocks no longer register sortable utilities. `@layer base` for resets still works. |
50
- | TW4-18 | rename-prop | `corePlugins` / `safelist` (JS config) → `@source inline(…)` + CSS theme | v4 has no `corePlugins` toggle and content detection is automatic; explicit safelisting moves to `@source inline(...)`. Flag for manual handling not a 1:1 token swap. |
50
+ | TW4-18 | rename-prop | `corePlugins` / `safelist` (JS config) → `@source inline(…)` + CSS theme | v4 has no `corePlugins` toggle and content detection is automatic; explicit safelisting moves to `@source inline(...)`. Flag for manual handling - not a 1:1 token swap. |
51
51
 
52
52
  ## Impact notes
53
53
 
54
- **High visual delta require manual review and a screenshot diff before accepting:**
54
+ **High visual delta - require manual review and a screenshot diff before accepting:**
55
55
 
56
56
  - **Scale shifts (TW4-04 through TW4-10).** Shadow, blur, and radius scales all shifted one step down. A blanket find/replace is correct *only if* the project used the default scale. Any project that overrode these in `tailwind.config.js` must reconcile against TW4-02 first, or the rename compounds with a custom scale and yields wrong sizes. Treat these seven rules as one coordinated set, not independent edits.
57
57
  - **Ring width + color (TW4-11, TW4-12).** The default ring went from 3px/blue to 1px/currentColor. Focus rings are an accessibility surface, so both the width (`ring-3`) and color (`ring-blue-500`) rewrites should be reviewed against focus-visible states rather than applied silently.
58
58
  - **Default border / divide color (TW4-16) and outline (TW4-13).** The `currentColor` border default and the `outline-none` → `outline-hidden` rename change visible chrome and focus behavior across the whole app. These are the two rules most likely to look "broken" immediately post-migration; verify against a representative page set.
59
59
 
60
- **Mechanical low risk, still proposal-only:**
60
+ **Mechanical - low risk, still proposal-only:**
61
61
 
62
- - **Import directive (TW4-01)** and **flex-prefix strip (TW4-15)** are deterministic textual swaps with no visual consequence safe to batch, but still emitted as a reviewable diff.
63
- - **Opacity slash syntax (TW4-14)** is mechanical per-utility, but the codemod must pair the correct color literal with the opacity value confirm it preserves the original color when expanding `bg-opacity-50` into `bg-<color>/50`.
62
+ - **Import directive (TW4-01)** and **flex-prefix strip (TW4-15)** are deterministic textual swaps with no visual consequence - safe to batch, but still emitted as a reviewable diff.
63
+ - **Opacity slash syntax (TW4-14)** is mechanical per-utility, but the codemod must pair the correct color literal with the opacity value - confirm it preserves the original color when expanding `bg-opacity-50` into `bg-<color>/50`.
64
64
 
65
- **Needs a human design decision not auto-templatable:**
65
+ **Needs a human design decision - not auto-templatable:**
66
66
 
67
67
  - **CSS-first theme (TW4-02), `theme()` rewrites (TW4-03), custom-utility migration (TW4-17), and config-feature removal (TW4-18)** depend on the project's actual theme shape and custom utilities. The planner should emit a scaffold (an `@theme` block skeleton plus an `@config` bridge note) and hand the remainder to the USER rather than attempting a full automatic translation. The `@config` directive is the recommended interim bridge so a project can adopt the v4 build packages *before* fully porting its JS theme.
68
68
 
69
69
  **Application order and idempotency (for `codemod-gen.cjs`):**
70
70
 
71
- - The shadow, blur, and radius scales each contain a **shift hazard**: renaming the bare alias up one step (e.g. TW4-05 `shadow` → `shadow-sm`) and shifting the named step down (TW4-04 `shadow-sm` → `shadow-xs`) target overlapping tokens. A naive two-pass run can double-apply `shadow` becomes `shadow-sm` becomes `shadow-xs`. Templates must rename in a **single atomic pass** (match the original token, map to its final value) so each utility is rewritten exactly once. The same hazard applies to the `blur-*` (TW4-07/08) and `rounded-*` (TW4-09/10) pairs.
71
+ - The shadow, blur, and radius scales each contain a **shift hazard**: renaming the bare alias up one step (e.g. TW4-05 `shadow` → `shadow-sm`) and shifting the named step down (TW4-04 `shadow-sm` → `shadow-xs`) target overlapping tokens. A naive two-pass run can double-apply - `shadow` becomes `shadow-sm` becomes `shadow-xs`. Templates must rename in a **single atomic pass** (match the original token, map to its final value) so each utility is rewritten exactly once. The same hazard applies to the `blur-*` (TW4-07/08) and `rounded-*` (TW4-09/10) pairs.
72
72
  - Run the entry-CSS rules (**TW4-01**, then the **TW4-02 / TW4-03 / TW4-17** theme scaffold) before the class renames, so the build is parseable under v4 before utility classes change. Class renames (TW4-04 through TW4-16) operate on template/markup files and are independent of each other once the single-pass rule above is respected.
73
- - Every generated codemod should be **idempotent** re-running it on already-migrated source must be a no-op. The planner surfaces the full set as one reviewable changeset; the USER applies it, not GDD.
73
+ - Every generated codemod should be **idempotent** - re-running it on already-migrated source must be a no-op. The planner surfaces the full set as one reviewable changeset; the USER applies it, not GDD.
@@ -1,6 +1,6 @@
1
- # Model Prices Router
1
+ # Model Prices - Router
2
2
 
3
- **Phase 26 D-08 router.** This file used to carry a single Anthropic-only price table. As of v1.26.0 it links to per-runtime sub-tables one file per runtime under `reference/prices/`. Budget-enforcer + cost-aggregator load the sub-table for the active runtime (resolved via `scripts/lib/runtime-detect.cjs`) and tag every `events.jsonl` cost row with the runtime ID.
3
+ **Phase 26 D-08 router.** This file used to carry a single Anthropic-only price table. As of v1.26.0 it links to per-runtime sub-tables - one file per runtime under `reference/prices/`. Budget-enforcer + cost-aggregator load the sub-table for the active runtime (resolved via `scripts/lib/runtime-detect.cjs`) and tag every `events.jsonl` cost row with the runtime ID.
4
4
 
5
5
  For the model→tier mapping (which model name corresponds to opus/sonnet/haiku per runtime), see `reference/runtime-models.md`.
6
6
 
@@ -45,7 +45,7 @@ When `cache_hit: true`, the formula re-runs with `cached_input_per_1m` in place
45
45
 
46
46
  When a cost lookup misses (model not present in the runtime's sub-table, or runtime sub-table is a stub), `scripts/lib/budget-enforcer.cjs` falls back to `reference/prices/claude.md` and emits a `cost_lookup_fallback` event. This keeps the pipeline running on stub runtimes while authority-watcher (Phase 13.2) flags drift for follow-up.
47
47
 
48
- If `claude.md` ALSO misses the model, the spawn proceeds with `cost_usd: null` and a `cost_lookup_failed` event the existing fail-open contract from Phase 20-13.
48
+ If `claude.md` ALSO misses the model, the spawn proceeds with `cost_usd: null` and a `cost_lookup_failed` event - the existing fail-open contract from Phase 20-13.
49
49
 
50
50
  ## Transitional fallback (v1.25 and earlier)
51
51
 
@@ -1,41 +1,41 @@
1
- # Model Tiers Selection Guide + Per-Agent Map
1
+ # Model Tiers - Selection Guide + Per-Agent Map
2
2
 
3
- **Purpose:** Source of truth for the `default-tier: haiku|sonnet|opus` frontmatter field carried by every agent at `agents/*.md`. Tiers are one of three Anthropic model classes priced in `reference/model-prices.md`.
3
+ **Purpose:** Source of truth for the `default-tier: haiku|sonnet|opus` frontmatter field carried by every agent at `agents/*.md`. Tiers are one of three Anthropic model classes - priced in `reference/model-prices.md`.
4
4
 
5
- Phase 10.1 (OPT-06) locked the initial per-agent tier assignment. Phase 11's `design-reflector` (`agents/design-reflector.md`) proposes refinements from measured `.design/agent-metrics.json` data; no auto-apply proposals flow through `/gdd:apply-reflections` and `/gdd:optimize`.
5
+ Phase 10.1 (OPT-06) locked the initial per-agent tier assignment. Phase 11's `design-reflector` (`agents/design-reflector.md`) proposes refinements from measured `.design/agent-metrics.json` data; no auto-apply - proposals flow through `/gdd:apply-reflections` and `/gdd:optimize`.
6
6
 
7
7
  ---
8
8
 
9
9
  ## Tier Assignment Rules
10
10
 
11
- ### haiku Verifiers and checkers with deterministic rubrics
11
+ ### haiku - Verifiers and checkers with deterministic rubrics
12
12
 
13
13
  Pick `haiku` when the agent is:
14
14
  - Applying a fixed scoring rubric (`design-verifier` runs five deterministic passes with numeric category scores).
15
15
  - Producing a boolean + rationale answer (`design-plan-checker`, `design-context-checker`, `design-integration-checker` all return "gaps found" + structured list).
16
- - Performing a read-only state sync (`gdd-graph-refresh` mirrors graph state no reasoning density beyond schema matching).
17
- - Running at high frequency where cost compounds (checkers run on every `/gdd:verify` pass cost multiplies with iterations).
16
+ - Performing a read-only state sync (`gdd-graph-refresh` mirrors graph state - no reasoning density beyond schema matching).
17
+ - Running at high frequency where cost compounds (checkers run on every `/gdd:verify` pass - cost multiplies with iterations).
18
18
 
19
19
  Haiku's ~20x price advantage over Opus per 1M tokens (see `reference/model-prices.md`) makes it correct for deterministic-rubric work where the marginal quality gain of larger models is negligible.
20
20
 
21
- ### sonnet Researchers, mappers, doc-writers, executors, fixers
21
+ ### sonnet - Researchers, mappers, doc-writers, executors, fixers
22
22
 
23
23
  Pick `sonnet` when the agent is:
24
24
  - Doing open-ended pattern recognition on codebase data (`a11y-mapper`, `component-taxonomy-mapper`, `design-pattern-mapper`, `motion-mapper`, `token-mapper`, `visual-hierarchy-mapper`).
25
25
  - Synthesizing prose from structured input (`design-doc-writer`, `design-research-synthesizer`, `design-context-builder`).
26
26
  - Executing a concrete plan under supervision (`design-executor`, `design-fixer`, `design-figma-writer`).
27
- - Conducting targeted research under a time budget (`design-phase-researcher` 2-minute web-search budget).
27
+ - Conducting targeted research under a time budget (`design-phase-researcher` - 2-minute web-search budget).
28
28
  - Updating / extracting / maintaining project state (`gdd-intel-updater`, `gdd-learnings-extractor`, `design-auditor`).
29
29
 
30
- Sonnet balances reasoning density against cost. This is the default if you're uncertain about an agent's role, it's probably sonnet.
30
+ Sonnet balances reasoning density against cost. This is the default - if you're uncertain about an agent's role, it's probably sonnet.
31
31
 
32
- ### opus Planners, critics, advisors, strategic reflectors
32
+ ### opus - Planners, critics, advisors, strategic reflectors
33
33
 
34
34
  Pick `opus` when the agent is:
35
- - Proposing a plan that downstream executors will follow (`design-planner` the plan becomes the contract for the whole design stage).
36
- - Critiquing or advising on ambiguity (`design-advisor`, `design-assumptions-analyzer` these agents question the prompt itself).
35
+ - Proposing a plan that downstream executors will follow (`design-planner` - the plan becomes the contract for the whole design stage).
36
+ - Critiquing or advising on ambiguity (`design-advisor`, `design-assumptions-analyzer` - these agents question the prompt itself).
37
37
  - Facilitating interactive decision-gathering (`design-discussant`).
38
- - Cross-phase strategic reasoning (`design-reflector` Phase 11 proposes changes to the plugin itself from measured data).
38
+ - Cross-phase strategic reasoning (`design-reflector` - Phase 11 - proposes changes to the plugin itself from measured data).
39
39
 
40
40
  Opus cost (~5x Sonnet, ~25x Haiku) is justified only when a single wrong decision cascades into many downstream agent spawns. Planners fit. Mappers don't.
41
41
 
@@ -46,16 +46,16 @@ Opus cost (~5x Sonnet, ~25x Haiku) is justified only when a single wrong decisio
46
46
  | Agent | Role class | default-tier | Rationale |
47
47
  |-------|------------|--------------|-----------|
48
48
  | design-verifier | Verifier | haiku | Runs a deterministic 5-pass scoring rubric; Haiku handles structured grading without quality loss. |
49
- | design-plan-checker | Checker | haiku | Checks the plan against a fixed schema boolean + gap-list output. |
50
- | design-context-checker | Checker | haiku | Checks context completeness against a schema boolean + gap-list output. |
51
- | design-integration-checker | Checker | haiku | Checks cross-artifact references deterministic link-integrity work. |
52
- | gdd-graph-refresh | Refresh agent | haiku | Rebuilds graph at .design/graph/graph.json from intel slices no reasoning density required. |
49
+ | design-plan-checker | Checker | haiku | Checks the plan against a fixed schema - boolean + gap-list output. |
50
+ | design-context-checker | Checker | haiku | Checks context completeness against a schema - boolean + gap-list output. |
51
+ | design-integration-checker | Checker | haiku | Checks cross-artifact references - deterministic link-integrity work. |
52
+ | gdd-graph-refresh | Refresh agent | haiku | Rebuilds graph at .design/graph/graph.json from intel slices - no reasoning density required. |
53
53
  | a11y-mapper | Mapper | sonnet | Open-ended a11y pattern recognition across many files; Sonnet's breadth matters. |
54
- | component-taxonomy-mapper | Mapper | sonnet | Classifies components by role requires nuance Haiku lacks, not enough to warrant Opus. |
54
+ | component-taxonomy-mapper | Mapper | sonnet | Classifies components by role - requires nuance Haiku lacks, not enough to warrant Opus. |
55
55
  | design-auditor | Worker | sonnet | Emits structured findings from code inspection; Sonnet balances depth with cost. |
56
- | design-context-builder | Builder | sonnet | Assembles DESIGN-CONTEXT.md from discover outputs prose synthesis. |
56
+ | design-context-builder | Builder | sonnet | Assembles DESIGN-CONTEXT.md from discover outputs - prose synthesis. |
57
57
  | design-doc-writer | Writer | sonnet | Produces polished prose documentation; Sonnet's style quality is sufficient. |
58
- | design-executor | Executor | sonnet | Follows an Opus-authored plan executes rather than plans. |
58
+ | design-executor | Executor | sonnet | Follows an Opus-authored plan - executes rather than plans. |
59
59
  | design-figma-writer | Writer | sonnet | Emits Figma-formatted output from existing spec. |
60
60
  | design-fixer | Fixer | sonnet | Applies targeted fixes to a localized artifact; structured input, structured diff output. |
61
61
  | design-pattern-mapper | Mapper | sonnet | Catalogs design patterns present in codebase. |
@@ -63,16 +63,16 @@ Opus cost (~5x Sonnet, ~25x Haiku) is justified only when a single wrong decisio
63
63
  | design-research-synthesizer | Synthesizer | sonnet | Collapses multiple research outputs into one; synthesis is Sonnet territory. |
64
64
  | gdd-intel-updater | Updater | sonnet | Refreshes .planning/intel/ files from current codebase. |
65
65
  | gdd-learnings-extractor | Extractor | sonnet | Pulls decisions + lessons + patterns from phase artifacts. |
66
- | motion-mapper | Mapper | sonnet | Inventories motion patterns open-ended visual reasoning. |
67
- | token-mapper | Mapper | sonnet | Extracts design tokens from source pattern recognition across files. |
68
- | visual-hierarchy-mapper | Mapper | sonnet | Maps visual hierarchy signals breadth across many files. |
69
- | design-advisor | Advisor | opus | Questions prompts to surface ambiguity wrong advice cascades. |
70
- | design-assumptions-analyzer | Critic | opus | Surfaces load-bearing assumptions before planning one wrong assumption derails the phase. |
71
- | design-discussant | Facilitator | opus | Interactive decision gathering user-facing, quality-critical. |
72
- | design-planner | Planner | opus | Authors DESIGN-PLAN.md the contract every downstream agent follows. |
73
- | design-reflector | Strategic reflector | opus | Phase 11 reads telemetry + proposes changes to the plugin itself. |
66
+ | motion-mapper | Mapper | sonnet | Inventories motion patterns - open-ended visual reasoning. |
67
+ | token-mapper | Mapper | sonnet | Extracts design tokens from source - pattern recognition across files. |
68
+ | visual-hierarchy-mapper | Mapper | sonnet | Maps visual hierarchy signals - breadth across many files. |
69
+ | design-advisor | Advisor | opus | Questions prompts to surface ambiguity - wrong advice cascades. |
70
+ | design-assumptions-analyzer | Critic | opus | Surfaces essential assumptions before planning - one wrong assumption derails the phase. |
71
+ | design-discussant | Facilitator | opus | Interactive decision gathering - user-facing, quality-critical. |
72
+ | design-planner | Planner | opus | Authors DESIGN-PLAN.md - the contract every downstream agent follows. |
73
+ | design-reflector | Strategic reflector | opus | Phase 11 - reads telemetry + proposes changes to the plugin itself. |
74
74
 
75
- **Row count:** 26 matches the agent suite ls. Every row has a rationale; no blank rationales.
75
+ **Row count:** 26 - matches the agent suite ls. Every row has a rationale; no blank rationales.
76
76
 
77
77
  ---
78
78
 
@@ -80,14 +80,14 @@ Opus cost (~5x Sonnet, ~25x Haiku) is justified only when a single wrong decisio
80
80
 
81
81
  When the budget-enforcer hook resolves which tier to spawn an agent at, it walks this precedence (D-04):
82
82
 
83
- 1. **`.design/budget.json.tier_overrides[{agent_name}]`** per-project configuration. Wins over frontmatter. Use this knob when the project has budget constraints that differ from the plugin defaults.
84
- 2. **Agent frontmatter `default-tier`** (this file's per-agent map) plugin default. Set at authoring time.
85
- 3. **Hardcoded fallback `"sonnet"`** belt-and-suspenders in `hooks/budget-enforcer.js` for agents that somehow lack the frontmatter field. Should never fire in practice after Phase 10.1.
83
+ 1. **`.design/budget.json.tier_overrides[{agent_name}]`** - per-project configuration. Wins over frontmatter. Use this knob when the project has budget constraints that differ from the plugin defaults.
84
+ 2. **Agent frontmatter `default-tier`** (this file's per-agent map) - plugin default. Set at authoring time.
85
+ 3. **Hardcoded fallback `"sonnet"`** - belt-and-suspenders in `hooks/budget-enforcer.js` for agents that somehow lack the frontmatter field. Should never fire in practice after Phase 10.1.
86
86
 
87
87
  Plus two modifiers that can override the above at spawn time:
88
88
 
89
89
  - **`auto_downgrade_on_cap: true`** (D-03): at 80% of `per_task_cap_usd`, the hook force-downgrades the tier to `haiku` for the remainder of the task, regardless of the precedence chain. Logged as `tier_downgraded: true` in `.design/telemetry/costs.jsonl`.
90
- - **Hard-cap block** (D-02): at 100% of `per_task_cap_usd` or `per_phase_cap_usd`, the hook blocks the spawn outright. Tier is irrelevant nothing runs.
90
+ - **Hard-cap block** (D-02): at 100% of `per_task_cap_usd` or `per_phase_cap_usd`, the hook blocks the spawn outright. Tier is irrelevant - nothing runs.
91
91
 
92
92
  ---
93
93
 
@@ -95,8 +95,8 @@ Plus two modifiers that can override the above at spawn time:
95
95
 
96
96
  The plugin ships with the Per-Agent Tier Map above as a well-reasoned baseline. **Do not hand-edit agent frontmatter `default-tier` fields without evidence.** Two legitimate paths to change a tier assignment:
97
97
 
98
- 1. **Phase 11 reflector proposal.** `agents/design-reflector.md` reads `.design/agent-metrics.json` and surfaces cases where measured `gap_rate` or `deviation_rate` suggests a tier is too low (verifier missed gaps a Sonnet would catch) or too high (planner over-reasoned simple plans a Sonnet would handle). Proposals flow through `/gdd:apply-reflections` user-reviewed, never auto-applied.
99
- 2. **Budget constraint.** Project-level override via `.design/budget.json.tier_overrides` does not require touching the frontmatter.
98
+ 1. **Phase 11 reflector proposal.** `agents/design-reflector.md` reads `.design/agent-metrics.json` and surfaces cases where measured `gap_rate` or `deviation_rate` suggests a tier is too low (verifier missed gaps a Sonnet would catch) or too high (planner over-reasoned simple plans a Sonnet would handle). Proposals flow through `/gdd:apply-reflections` - user-reviewed, never auto-applied.
99
+ 2. **Budget constraint.** Project-level override via `.design/budget.json.tier_overrides` - does not require touching the frontmatter.
100
100
 
101
101
  Signals that a tier move might be warranted (Phase 11 reflector's heuristics):
102
102
  - **Downgrade signal** (Sonnet → Haiku, or Opus → Sonnet): agent's `gap_rate < 10%` over ≥ 10 runs AND measured output length < 25% of `size_budget` ceiling → agent is over-provisioned.
@@ -108,11 +108,11 @@ Phase 11's reflector encodes these heuristics. This section documents the philos
108
108
 
109
109
  ## Integration Points
110
110
 
111
- - **`hooks/budget-enforcer.js`** (Plan 10.1-01 Task 04) implements the precedence chain above. `resolveTier(agent, agentDefaultTier, overrides)` is the concrete function.
112
- - **`skills/router/SKILL.md`** (Plan 10.1-01 Task 03) consults this file's tier map + `reference/model-prices.md` to produce `estimated_cost_usd` pre-spawn.
113
- - **`skills/optimize/SKILL.md`** (Plan 10.1-04) advisory command; may suggest tier moves based on telemetry + this doc's heuristics.
114
- - **`agents/design-reflector.md`** (Phase 11, already merged) may propose edits to this file + paired frontmatter updates. Proposals land in `.design/reflections/` for user review.
111
+ - **`hooks/budget-enforcer.js`** (Plan 10.1-01 Task 04) - implements the precedence chain above. `resolveTier(agent, agentDefaultTier, overrides)` is the concrete function.
112
+ - **`skills/router/SKILL.md`** (Plan 10.1-01 Task 03) - consults this file's tier map + `reference/model-prices.md` to produce `estimated_cost_usd` pre-spawn.
113
+ - **`skills/optimize/SKILL.md`** (Plan 10.1-04) - advisory command; may suggest tier moves based on telemetry + this doc's heuristics.
114
+ - **`agents/design-reflector.md`** (Phase 11, already merged) - may propose edits to this file + paired frontmatter updates. Proposals land in `.design/reflections/` for user review.
115
115
 
116
116
  ---
117
117
 
118
- *Maintained as part of Phase 10.1 (OPT-06). Edits to the Per-Agent Tier Map MUST be paired with matching frontmatter edits in `agents/*.md` the two are the same fact stored twice (router cross-checks). A mismatch indicates drift; Phase 11 reflector detects and reports it.*
118
+ *Maintained as part of Phase 10.1 (OPT-06). Edits to the Per-Agent Tier Map MUST be paired with matching frontmatter edits in `agents/*.md` - the two are the same fact stored twice (router cross-checks). A mismatch indicates drift; Phase 11 reflector detects and reports it.*
@@ -10,9 +10,9 @@
10
10
 
11
11
  Spring animations are governed by three parameters that model a physical spring:
12
12
 
13
- - **stiffness** how tightly wound the spring is; higher = faster, snappier response
14
- - **damping** friction applied to the oscillation; higher = settles faster with less bounce
15
- - **mass** inertia of the object; higher = slower start and more overshoot
13
+ - **stiffness** - how tightly wound the spring is; higher = faster, snappier response
14
+ - **damping** - friction applied to the oscillation; higher = settles faster with less bounce
15
+ - **mass** - inertia of the object; higher = slower start and more overshoot
16
16
 
17
17
  The damping ratio `ζ = damping / (2 * Math.sqrt(stiffness * mass))` determines behavior:
18
18
 
@@ -222,10 +222,10 @@ el.animate(
222
222
 
223
223
  ### The Four Steps
224
224
 
225
- 1. **First** record the element's current bounding rect (`getBoundingClientRect()`)
226
- 2. **Last** apply the DOM change, then record the new rect
227
- 3. **Invert** set a CSS transform that moves the element back to its "First" position
228
- 4. **Play** animate the transform to identity (`0, 0, scale(1)`)
225
+ 1. **First** - record the element's current bounding rect (`getBoundingClientRect()`)
226
+ 2. **Last** - apply the DOM change, then record the new rect
227
+ 3. **Invert** - set a CSS transform that moves the element back to its "First" position
228
+ 4. **Play** - animate the transform to identity (`0, 0, scale(1)`)
229
229
 
230
230
  ```ts
231
231
  function flip(el: HTMLElement, applyChange: () => void) {
@@ -577,7 +577,7 @@ function CompareSlider({ before, after }: { before: string; after: string }) {
577
577
 
578
578
  ## Blur-to-Mask Crossfades
579
579
 
580
- Use a short `filter: blur()` during state transitions to bridge the visual gap between two overlapping states it softens the hard edge that appears when opacity alone creates a ghost.
580
+ Use a short `filter: blur()` during state transitions to bridge the visual gap between two overlapping states - it softens the hard edge that appears when opacity alone creates a ghost.
581
581
 
582
582
  ```tsx
583
583
  <motion.div
@@ -591,10 +591,10 @@ Use a short `filter: blur()` during state transitions to bridge the visual gap b
591
591
  ```
592
592
 
593
593
  **Rules:**
594
- - Cap blur under 20px on non-animated elements Safari allocates GPU memory per blurred layer, causing stutter at high values
594
+ - Cap blur under 20px on non-animated elements - Safari allocates GPU memory per blurred layer, causing stutter at high values
595
595
  - Pair with `scale(0.97)` for press feedback; the scale signals physical depth while blur softens content churn
596
596
  - Use for: skeleton → content, loading → loaded image, optimistic update → confirmed state
597
- - Do NOT use for layout shifts blur does not mask reflow artifacts
597
+ - Do NOT use for layout shifts - blur does not mask reflow artifacts
598
598
 
599
599
  ---
600
600
 
@@ -710,7 +710,7 @@ Motion values are a **design decision**, not a technical default. They communica
710
710
  | Interruptible UI (toggles, toasts) | `bounce: 0`, transitions not keyframes | Must retarget without pop |
711
711
  | Height + opacity combos | Trial and error per library | `height: auto` is not animatable in CSS; each library handles it differently |
712
712
 
713
- **Do not mix** snappy dashboard animations with bouncy spring animations in the same product the conflicting personalities create a sense that the UI was assembled from parts.
713
+ **Do not mix** snappy dashboard animations with bouncy spring animations in the same product - the conflicting personalities create a sense that the UI was assembled from parts.
714
714
 
715
715
  ---
716
716
 
@@ -744,7 +744,7 @@ Fresh eyes catch what in-the-moment iteration misses. Animations feel correct wh
744
744
 
745
745
  ---
746
746
 
747
- ## Disney's 12 Principles UX Mapping
747
+ ## Disney's 12 Principles - UX Mapping
748
748
 
749
749
  Original source: Frank Thomas & Ollie Johnston, *The Illusion of Life: Disney Animation* (1981). The 12 principles were developed for hand-drawn character animation; the UX mappings below translate each to interface motion.
750
750
 
@@ -752,7 +752,7 @@ Original source: Frank Thomas & Ollie Johnston, *The Illusion of Life: Disney An
752
752
 
753
753
  ### 1. Squash and Stretch
754
754
 
755
- **Animation:** Objects deform under force squash on impact, stretch during fast movement.
755
+ **Animation:** Objects deform under force - squash on impact, stretch during fast movement.
756
756
 
757
757
  **UX mapping:** Scale feedback communicates physical weight and responsiveness.
758
758
  ```tsx
@@ -763,7 +763,7 @@ Original source: Frank Thomas & Ollie Johnston, *The Illusion of Life: Disney An
763
763
  transition={{ type: "spring", stiffness: 500, damping: 30 }}
764
764
  />
765
765
  ```
766
- **Rule:** Constrain squash/stretch to ≤5% deviation more reads as glitchy, not physical.
766
+ **Rule:** Constrain squash/stretch to ≤5% deviation - more reads as glitchy, not physical.
767
767
 
768
768
  ---
769
769
 
@@ -799,7 +799,7 @@ Original source: Frank Thomas & Ollie Johnston, *The Illusion of Life: Disney An
799
799
 
800
800
  **Animation:** Straight-ahead: draw each frame in sequence. Pose-to-pose: define key positions and interpolate.
801
801
 
802
- **UX mapping:** All CSS transitions and spring animations are pose-to-pose by definition you define start and end states. This means:
802
+ **UX mapping:** All CSS transitions and spring animations are pose-to-pose by definition - you define start and end states. This means:
803
803
  - Transitions retarget smoothly when interrupted (see CSS Transitions vs Keyframes section above)
804
804
  - The in-between frames are computed by the engine, not designed
805
805
  - Design the **poses** (states) carefully; the interpolation handles itself
@@ -872,7 +872,7 @@ transition: transform 0.2s cubic-bezier(0.4, 0, 1, 1);
872
872
  - Success state: checkmark draws itself after the confirmation color appears
873
873
  - Delete: item fades + the list count badge decrements with a small number-flip animation
874
874
 
875
- **Rule:** Secondary actions must complete before or simultaneously with the primary never after. They reinforce, not extend.
875
+ **Rule:** Secondary actions must complete before or simultaneously with the primary - never after. They reinforce, not extend.
876
876
 
877
877
  ---
878
878
 
@@ -915,17 +915,17 @@ transition: transform 0.2s cubic-bezier(0.4, 0, 1, 1);
915
915
 
916
916
  **Animation:** Characters have weight, depth, and obey perspective; they feel three-dimensional.
917
917
 
918
- **UX mapping:** UI elements should feel visually grounded not floating. Shadows, depth layering, and transform-origin choices communicate which layer an element lives on.
919
- - Drawers and sheets slide from an edge they feel physically attached
920
- - Modals emerge from center or from the triggering element they float above the page
921
- - Tooltips appear near the cursor they are attached to the pointer
918
+ **UX mapping:** UI elements should feel visually grounded - not floating. Shadows, depth layering, and transform-origin choices communicate which layer an element lives on.
919
+ - Drawers and sheets slide from an edge - they feel physically attached
920
+ - Modals emerge from center or from the triggering element - they float above the page
921
+ - Tooltips appear near the cursor - they are attached to the pointer
922
922
  - `transform-origin` must match where the element conceptually emerges from
923
923
 
924
924
  ---
925
925
 
926
926
  ### 12. Appeal
927
927
 
928
- **Animation:** Characters have a quality that makes the audience want to watch them not necessarily cute, but interesting.
928
+ **Animation:** Characters have a quality that makes the audience want to watch them - not necessarily cute, but interesting.
929
929
 
930
930
  **UX mapping:** Animation has personality that is consistent with the product's brand.
931
931
 
@@ -9,23 +9,23 @@ Canonical easing curve presets derived from React Native's `Easing` module, adap
9
9
 
10
10
  | Token | CSS `cubic-bezier` | Character | Settle (spring/bounce) |
11
11
  |---|---|---|---|
12
- | `--ease-linear` | `cubic-bezier(0,0,1,1)` | Constant rate | |
13
- | `--ease-quad-in` | `cubic-bezier(0.55,0,1,1)` | Slow start | |
14
- | `--ease-quad-out` | `cubic-bezier(0,0,0.45,1)` | Slow end | |
15
- | `--ease-quad-in-out` | `cubic-bezier(0.455,0.03,0.515,0.955)` | Slow both | |
16
- | `--ease-cubic-in` | `cubic-bezier(0.55,0.055,0.675,0.19)` | Aggressive start | |
17
- | `--ease-cubic-out` | `cubic-bezier(0.215,0.61,0.355,1)` | Aggressive end | |
18
- | `--ease-cubic-in-out` | `cubic-bezier(0.645,0.045,0.355,1)` | Strong S-curve | |
19
- | `--ease-sin-in` | `cubic-bezier(0.47,0,0.745,0.715)` | Gentle start | |
20
- | `--ease-sin-out` | `cubic-bezier(0.39,0.575,0.565,1)` | Gentle end | |
21
- | `--ease-sin-in-out` | `cubic-bezier(0.445,0.05,0.55,0.95)` | Smooth S-curve | |
22
- | `--ease-circle-in` | `cubic-bezier(0.6,0.04,0.98,0.335)` | Circular arc start | |
23
- | `--ease-circle-out` | `cubic-bezier(0.075,0.82,0.165,1)` | Circular arc end | |
24
- | `--ease-exp-in` | `cubic-bezier(0.95,0.05,0.795,0.035)` | Explosive start | |
25
- | `--ease-exp-out` | `cubic-bezier(0.19,1,0.22,1)` | Explosive end | |
12
+ | `--ease-linear` | `cubic-bezier(0,0,1,1)` | Constant rate | - |
13
+ | `--ease-quad-in` | `cubic-bezier(0.55,0,1,1)` | Slow start | - |
14
+ | `--ease-quad-out` | `cubic-bezier(0,0,0.45,1)` | Slow end | - |
15
+ | `--ease-quad-in-out` | `cubic-bezier(0.455,0.03,0.515,0.955)` | Slow both | - |
16
+ | `--ease-cubic-in` | `cubic-bezier(0.55,0.055,0.675,0.19)` | Aggressive start | - |
17
+ | `--ease-cubic-out` | `cubic-bezier(0.215,0.61,0.355,1)` | Aggressive end | - |
18
+ | `--ease-cubic-in-out` | `cubic-bezier(0.645,0.045,0.355,1)` | Strong S-curve | - |
19
+ | `--ease-sin-in` | `cubic-bezier(0.47,0,0.745,0.715)` | Gentle start | - |
20
+ | `--ease-sin-out` | `cubic-bezier(0.39,0.575,0.565,1)` | Gentle end | - |
21
+ | `--ease-sin-in-out` | `cubic-bezier(0.445,0.05,0.55,0.95)` | Smooth S-curve | - |
22
+ | `--ease-circle-in` | `cubic-bezier(0.6,0.04,0.98,0.335)` | Circular arc start | - |
23
+ | `--ease-circle-out` | `cubic-bezier(0.075,0.82,0.165,1)` | Circular arc end | - |
24
+ | `--ease-exp-in` | `cubic-bezier(0.95,0.05,0.795,0.035)` | Explosive start | - |
25
+ | `--ease-exp-out` | `cubic-bezier(0.19,1,0.22,1)` | Explosive end | - |
26
26
  | `--ease-elastic` | `linear(...)` baked | Overshoot + settle | ~500ms |
27
- | `--ease-back-in` | `cubic-bezier(0.6,-0.28,0.735,0.045)` | Anticipation | |
28
- | `--ease-back-out` | `cubic-bezier(0.175,0.885,0.32,1.275)` | Overshoot | |
27
+ | `--ease-back-in` | `cubic-bezier(0.6,-0.28,0.735,0.045)` | Anticipation | - |
28
+ | `--ease-back-out` | `cubic-bezier(0.175,0.885,0.32,1.275)` | Overshoot | - |
29
29
  | `--ease-bounce-out` | `linear(...)` baked | Bounces at end | ~420ms |
30
30
 
31
31
  ---
@@ -60,7 +60,7 @@ Easing.linear
60
60
 
61
61
  ### `quad`
62
62
 
63
- Quadratic acceleration proportional to `t²`.
63
+ Quadratic - acceleration proportional to `t²`.
64
64
 
65
65
  - **Human name:** Quad (ease-in-out)
66
66
  - **Character:** Subtle, polished. Most common choice for UI transitions.
@@ -85,7 +85,7 @@ Easing.inOut(Easing.quad)
85
85
 
86
86
  ### `cubic`
87
87
 
88
- Cubic acceleration proportional to `t³`. More pronounced than quad.
88
+ Cubic - acceleration proportional to `t³`. More pronounced than quad.
89
89
 
90
90
  - **Human name:** Cubic (ease-in-out)
91
91
  - **Character:** Snappy, decisive. Good for panels, drawers, menus.
@@ -109,7 +109,7 @@ Easing.inOut(Easing.cubic)
109
109
 
110
110
  ### `poly(n)`
111
111
 
112
- Generalised polynomial `t^n`. Quad is `poly(2)`, cubic is `poly(3)`.
112
+ Generalised polynomial - `t^n`. Quad is `poly(2)`, cubic is `poly(3)`.
113
113
 
114
114
  - **Human name:** Poly-n
115
115
  - **Character:** Tunable. Higher `n` = harder snap.
@@ -121,13 +121,13 @@ Easing.poly(5) // quintic
121
121
  Easing.in(Easing.poly(4))
122
122
  ```
123
123
 
124
- No direct CSS equivalent approximate with a `cubic-bezier` or bake to `linear()`.
124
+ No direct CSS equivalent - approximate with a `cubic-bezier` or bake to `linear()`.
125
125
 
126
126
  ---
127
127
 
128
128
  ### `sin`
129
129
 
130
- Sinusoidal easing shaped by the sine function. Smooth and natural.
130
+ Sinusoidal - easing shaped by the sine function. Smooth and natural.
131
131
 
132
132
  - **Human name:** Sine
133
133
  - **Character:** Organic, gentle. Works well for ambient or breathing animations.
@@ -150,7 +150,7 @@ Easing.sin
150
150
 
151
151
  ### `circle`
152
152
 
153
- Circular arc based on `sqrt(1 - t²)`. Sharp acceleration at the end of its range.
153
+ Circular arc - based on `sqrt(1 - t²)`. Sharp acceleration at the end of its range.
154
154
 
155
155
  - **Human name:** Circ
156
156
  - **Character:** Abrupt, dramatic. Use sparingly for emphasis.
@@ -172,7 +172,7 @@ Easing.circle
172
172
 
173
173
  ### `exp`
174
174
 
175
- Exponential `2^(10 * (t - 1))`. Starts near-zero, ends explosively.
175
+ Exponential - `2^(10 * (t - 1))`. Starts near-zero, ends explosively.
176
176
 
177
177
  - **Human name:** Expo
178
178
  - **Character:** High-impact. Good for reveal animations, hero entrances.
@@ -226,7 +226,7 @@ Easing.out(Easing.elastic(1, 1))
226
226
 
227
227
  ### `back(s)`
228
228
 
229
- Anticipation curve slightly retracts before moving forward (or overshoots then settles).
229
+ Anticipation curve - slightly retracts before moving forward (or overshoots then settles).
230
230
 
231
231
  - **Human name:** Back
232
232
  - **Character:** Mechanical delight. Communicates intentionality.
@@ -250,7 +250,7 @@ Easing.out(Easing.back(2.5)) // stronger overshoot
250
250
 
251
251
  ### `bounce`
252
252
 
253
- Simulates a physical bounce the value bounces off the endpoint.
253
+ Simulates a physical bounce - the value bounces off the endpoint.
254
254
 
255
255
  - **Human name:** Bounce
256
256
  - **Character:** Playful, energetic. Use for game-like or informal UIs.
@@ -278,7 +278,7 @@ Easing.bounce
278
278
 
279
279
  ### `bezier(x1, y1, x2, y2)`
280
280
 
281
- Raw cubic Bézier the same primitive that powers all CSS `cubic-bezier()` calls.
281
+ Raw cubic Bézier - the same primitive that powers all CSS `cubic-bezier()` calls.
282
282
 
283
283
  - **Human name:** Custom Bézier
284
284
  - **Character:** Whatever you specify.
@@ -307,8 +307,8 @@ Given a base easing function `f(t)` where `t ∈ [0, 1]`:
307
307
 
308
308
  | Wrapper | Formula | Effect |
309
309
  |---|---|---|
310
- | `in(f)` | `f(t)` | Acceleration at start slow → fast |
311
- | `out(f)` | `1 - f(1 - t)` | Deceleration at end fast → slow |
310
+ | `in(f)` | `f(t)` | Acceleration at start - slow → fast |
311
+ | `out(f)` | `1 - f(1 - t)` | Deceleration at end - fast → slow |
312
312
  | `inOut(f)` | `t < 0.5 ? f(2t)/2 : 1 - f(2(1-t))/2` | Slow start and end |
313
313
 
314
314
  ### Examples
@@ -340,7 +340,7 @@ const easeInElastic = easeIn(elastic(1, 1));
340
340
 
341
341
  ---
342
342
 
343
- ## CSS Custom Properties Full Token Set
343
+ ## CSS Custom Properties - Full Token Set
344
344
 
345
345
  ```css
346
346
  :root {
@@ -3,7 +3,7 @@
3
3
 
4
4
  # Motion Interpolation
5
5
 
6
- Interpolation is the mechanism that maps any changing value progress, scroll position, pointer delta, elapsed time into any animated output range. Every animation in a system can be decomposed into a single canonical form.
6
+ Interpolation is the mechanism that maps any changing value - progress, scroll position, pointer delta, elapsed time - into any animated output range. Every animation in a system can be decomposed into a single canonical form.
7
7
 
8
8
  ---
9
9
 
@@ -3,7 +3,7 @@
3
3
 
4
4
  # Motion Springs
5
5
 
6
- Spring animations model physical mass-spring-damper systems. Unlike tween animations, springs are driven by physics rather than duration they respond to velocity and settle naturally, making them ideal for interactions that require a sense of weight.
6
+ Spring animations model physical mass-spring-damper systems. Unlike tween animations, springs are driven by physics rather than duration - they respond to velocity and settle naturally, making them ideal for interactions that require a sense of weight.
7
7
 
8
8
  ---
9
9
 
@@ -13,7 +13,7 @@ Every spring is defined by three parameters:
13
13
 
14
14
  ### Stiffness (`k`)
15
15
 
16
- The spring constant how strongly the spring pulls toward the target.
16
+ The spring constant - how strongly the spring pulls toward the target.
17
17
 
18
18
  - **Low stiffness** (80–150): soft, gentle, slow to accelerate
19
19
  - **Medium stiffness** (150–300): standard UI feel
@@ -25,7 +25,7 @@ Higher stiffness = faster animation, more acceleration. Does not affect whether
25
25
 
26
26
  ### Damping (`c`)
27
27
 
28
- The friction coefficient how quickly oscillation energy is removed.
28
+ The friction coefficient - how quickly oscillation energy is removed.
29
29
 
30
30
  - **Low damping relative to stiffness**: spring oscillates (undershooted)
31
31
  - **Damping at critical value**: spring settles exactly without oscillation
@@ -95,7 +95,7 @@ stiffness: 180 | damping: 12 | mass: 1
95
95
  settle time: ~600ms | overshoots: yes (pronounced, 2–3 cycles)
96
96
  ```
97
97
 
98
- High energy, bouncy. Use for playful or expressive interactions celebratory states, game-like UIs, avatar reactions. Not appropriate for productivity or enterprise UIs.
98
+ High energy, bouncy. Use for playful or expressive interactions - celebratory states, game-like UIs, avatar reactions. Not appropriate for productivity or enterprise UIs.
99
99
 
100
100
  ```js
101
101
  // Framer Motion
@@ -133,7 +133,7 @@ stiffness: 280 | damping: 60 | mass: 1
133
133
  settle time: ~800ms | overshoots: no (overdamped)
134
134
  ```
135
135
 
136
- Overdamped spring creeps gently to target with no oscillation. Feels heavy and deliberate. Good for large layout changes, full-screen transitions, onboarding sequences.
136
+ Overdamped spring - creeps gently to target with no oscillation. Feels heavy and deliberate. Good for large layout changes, full-screen transitions, onboarding sequences.
137
137
 
138
138
  ```js
139
139
  // Framer Motion
@@ -203,17 +203,17 @@ The baked approximation loses velocity responsiveness (a real spring reacts to i
203
203
 
204
204
  ### Use spring when:
205
205
 
206
- - **Drag release / throw** the animation should carry the momentum from the gesture. Springs naturally handle initial velocity; tweens cannot.
207
- - **Toggle state** a checkbox, switch, or button that needs to feel responsive and alive. The `stiff` preset is standard here.
208
- - **Interactive hover / follow** cursor-tracking, magnetic elements. Springs give a sense of physical weight.
209
- - **Interrupt-safe sequences** if the user reverses a motion mid-way, springs handle the reversal gracefully by inheriting the current velocity.
206
+ - **Drag release / throw** - the animation should carry the momentum from the gesture. Springs naturally handle initial velocity; tweens cannot.
207
+ - **Toggle state** - a checkbox, switch, or button that needs to feel responsive and alive. The `stiff` preset is standard here.
208
+ - **Interactive hover / follow** - cursor-tracking, magnetic elements. Springs give a sense of physical weight.
209
+ - **Interrupt-safe sequences** - if the user reverses a motion mid-way, springs handle the reversal gracefully by inheriting the current velocity.
210
210
 
211
211
  ### Use tween (eased duration) when:
212
212
 
213
- - **Navigation transitions** page or route changes should complete in a fixed, predictable time. A spring may not settle in time if interrupted.
214
- - **Data-driven state changes** tab switches, accordion open/close, tooltip appear. A 200–300ms cubic-out tween is predictable and familiar.
215
- - **Reduced motion** when `prefers-reduced-motion` is active, replace all springs with short (150ms) linear or ease-out tweens. Springs are inherently bouncy; motion-sensitive users should never see oscillation.
216
- - **Synchronized choreography** when multiple elements must start and end together (e.g., a staggered list entrance), tweens with explicit durations are easier to coordinate.
213
+ - **Navigation transitions** - page or route changes should complete in a fixed, predictable time. A spring may not settle in time if interrupted.
214
+ - **Data-driven state changes** - tab switches, accordion open/close, tooltip appear. A 200–300ms cubic-out tween is predictable and familiar.
215
+ - **Reduced motion** - when `prefers-reduced-motion` is active, replace all springs with short (150ms) linear or ease-out tweens. Springs are inherently bouncy; motion-sensitive users should never see oscillation.
216
+ - **Synchronized choreography** - when multiple elements must start and end together (e.g., a staggered list entrance), tweens with explicit durations are easier to coordinate.
217
217
 
218
218
  ```css
219
219
  @media (prefers-reduced-motion: reduce) {