@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
@@ -9,113 +9,113 @@ Eight controlled transition families derived from the hyperframes registry. Each
9
9
 
10
10
  ## 1. 3d
11
11
 
12
- The 3d family covers transitions driven by depth and perspective. Elements rotate or flip along a spatial axis so the viewer perceives them moving through three-dimensional space rather than sliding across a flat surface. The visual character is physical and mechanical content feels like it has mass, faces, and hinge points. Timing curves should emphasize the acceleration and deceleration of a real object rotating under gravity.
12
+ The 3d family covers transitions driven by depth and perspective. Elements rotate or flip along a spatial axis so the viewer perceives them moving through three-dimensional space rather than sliding across a flat surface. The visual character is physical and mechanical - content feels like it has mass, faces, and hinge points. Timing curves should emphasize the acceleration and deceleration of a real object rotating under gravity.
13
13
 
14
14
  **Canonical examples:** `flip-x`, `flip-y`, `rotate-3d-left`, `cube-left`
15
15
 
16
16
  ### When to use
17
17
 
18
- - **Page flips in book or document viewers** the metaphor of a literal page turning reinforces the reading model.
19
- - **Card flip interactions** revealing the back of a card (e.g., a flashcard, a product tile showing detail) benefits from the physical flip metaphor.
20
- - **Onboarding carousel slides** a cube or rotating panel transition communicates sequential steps with a stronger sense of progression than a flat slide.
18
+ - **Page flips in book or document viewers** - the metaphor of a literal page turning reinforces the reading model.
19
+ - **Card flip interactions** - revealing the back of a card (e.g., a flashcard, a product tile showing detail) benefits from the physical flip metaphor.
20
+ - **Onboarding carousel slides** - a cube or rotating panel transition communicates sequential steps with a stronger sense of progression than a flat slide.
21
21
 
22
22
  ---
23
23
 
24
24
  ## 2. blur
25
25
 
26
- The blur family transitions content by shifting focus: the outgoing element loses sharpness while the incoming element sharpens into clarity. The motion resembles a camera rack-focus attention narrows onto a single point and then expands to the new content. Unlike most transition families, blur operates in the depth-of-field axis rather than the spatial or temporal axis, making it feel intimate and selective.
26
+ The blur family transitions content by shifting focus: the outgoing element loses sharpness while the incoming element sharpens into clarity. The motion resembles a camera rack-focus - attention narrows onto a single point and then expands to the new content. Unlike most transition families, blur operates in the depth-of-field axis rather than the spatial or temporal axis, making it feel intimate and selective.
27
27
 
28
28
  **Canonical examples:** `blur-in`, `blur-out`, `blur-in-up`, `blur-in-down`
29
29
 
30
30
  ### When to use
31
31
 
32
- - **Focus-mode overlays** blurring underlying content when a modal, drawer, or spotlight opens communicates that the rest of the UI has receded.
33
- - **Photo gallery lightbox opens** racking focus from thumbnail to full image reinforces the zoom metaphor without a disorienting scale jump.
34
- - **Loading skeleton to content** blurring out a skeleton and sharpening in the real content feels more organic than an abrupt swap or a flat cross-fade.
32
+ - **Focus-mode overlays** - blurring underlying content when a modal, drawer, or spotlight opens communicates that the rest of the UI has receded.
33
+ - **Photo gallery lightbox opens** - racking focus from thumbnail to full image reinforces the zoom metaphor without a disorienting scale jump.
34
+ - **Loading skeleton to content** - blurring out a skeleton and sharpening in the real content feels more organic than an abrupt swap or a flat cross-fade.
35
35
 
36
36
  ---
37
37
 
38
38
  ## 3. cover
39
39
 
40
- The cover family uses a fill or wipe that expands from one edge to conceal the outgoing content and simultaneously reveal the incoming content behind it. The transition is directional left, right, up, or down giving users a strong spatial cue about where they are navigating. The incoming content is already fully rendered beneath the cover layer, so there is no compositional ambiguity mid-transition.
40
+ The cover family uses a fill or wipe that expands from one edge to conceal the outgoing content and simultaneously reveal the incoming content behind it. The transition is directional - left, right, up, or down - giving users a strong spatial cue about where they are navigating. The incoming content is already fully rendered beneath the cover layer, so there is no compositional ambiguity mid-transition.
41
41
 
42
42
  **Canonical examples:** `cover-left`, `cover-right`, `cover-up`, `cover-down`
43
43
 
44
44
  ### When to use
45
45
 
46
- - **Route transitions in marketing sites** a cover wipe from the current page edge toward the next reinforces the left-to-right or top-to-bottom navigation model.
47
- - **Section reveals on scroll** covering the previous section as the next one rises into view creates a satisfying page-turning rhythm for long-form content.
48
- - **Slide-panel opens** a drawer or side panel that covers the main content from its natural edge feels grounded rather than floating.
46
+ - **Route transitions in marketing sites** - a cover wipe from the current page edge toward the next reinforces the left-to-right or top-to-bottom navigation model.
47
+ - **Section reveals on scroll** - covering the previous section as the next one rises into view creates a satisfying page-turning rhythm for long-form content.
48
+ - **Slide-panel opens** - a drawer or side panel that covers the main content from its natural edge feels grounded rather than floating.
49
49
 
50
50
  ---
51
51
 
52
52
  ## 4. destruction
53
53
 
54
- The destruction family fragments outgoing content before new content appears. Elements shatter, explode, pixelate, or break apart into constituent pieces that scatter or dissolve. The transition is intentionally dramatic and high-entropy it signals a decisive, irreversible state change rather than a soft navigation event. Because of its visual weight, destruction transitions should be reserved for moments where the drama is earned.
54
+ The destruction family fragments outgoing content before new content appears. Elements shatter, explode, pixelate, or break apart into constituent pieces that scatter or dissolve. The transition is intentionally dramatic and high-entropy - it signals a decisive, irreversible state change rather than a soft navigation event. Because of its visual weight, destruction transitions should be reserved for moments where the drama is earned.
55
55
 
56
56
  **Canonical examples:** `shatter`, `explode`, `pixelate-out`, `break-apart`
57
57
 
58
58
  ### When to use
59
59
 
60
- - **Onboarding celebrations** completing a significant setup milestone (connecting an account, finishing a profile) can warrant a brief destruction-style break of the previous step.
61
- - **Error states (use sparingly)** a pixelate-out or shatter on a failed action can reinforce the severity of the error without a generic fade, but overuse deadens the signal.
62
- - **Game-style transitions** level completions, score reveals, or achievement unlocks in game-adjacent products match the genre conventions users already associate with this visual language.
60
+ - **Onboarding celebrations** - completing a significant setup milestone (connecting an account, finishing a profile) can warrant a brief destruction-style break of the previous step.
61
+ - **Error states (use sparingly)** - a pixelate-out or shatter on a failed action can reinforce the severity of the error without a generic fade, but overuse deadens the signal.
62
+ - **Game-style transitions** - level completions, score reveals, or achievement unlocks in game-adjacent products match the genre conventions users already associate with this visual language.
63
63
 
64
64
  ---
65
65
 
66
66
  ## 5. dissolve
67
67
 
68
- The dissolve family cross-fades both the outgoing and incoming content so they overlap during the transition period. Neither element is hidden at the midpoint the viewer sees a superimposition of both states. This creates a sense of continuity and blending rather than replacement. Dissolves feel gentle and temporal: time is passing, but the context is preserved.
68
+ The dissolve family cross-fades both the outgoing and incoming content so they overlap during the transition period. Neither element is hidden at the midpoint - the viewer sees a superimposition of both states. This creates a sense of continuity and blending rather than replacement. Dissolves feel gentle and temporal: time is passing, but the context is preserved.
69
69
 
70
70
  **Canonical examples:** `dissolve`, `fade-through-black`, `fade-through-white`, `morph-dissolve`
71
71
 
72
72
  ### When to use
73
73
 
74
- - **Content replacement where continuity matters** updating a detail panel or a card's content without navigating away benefits from dissolve so the user understands they are still in the same location.
75
- - **Photo slideshows** the classic cross-dissolve between images preserves the sense of a continuous viewing experience.
76
- - **Wizard step changes** stepping through a multi-step form where each step occupies the same spatial region reads more clearly with a dissolve than a directional slide, because the user has not navigated anywhere.
74
+ - **Content replacement where continuity matters** - updating a detail panel or a card's content without navigating away benefits from dissolve so the user understands they are still in the same location.
75
+ - **Photo slideshows** - the classic cross-dissolve between images preserves the sense of a continuous viewing experience.
76
+ - **Wizard step changes** - stepping through a multi-step form where each step occupies the same spatial region reads more clearly with a dissolve than a directional slide, because the user has not navigated anywhere.
77
77
 
78
78
  ---
79
79
 
80
80
  ## 6. distortion
81
81
 
82
- The distortion family applies mesh warping, ripple, stretch, or liquid deformation to content during the transition. Rather than moving content spatially or temporally, distortion transitions make the pixels themselves behave like a physical medium rubber, water, or fabric that stretches and snaps back. The effect is visceral and tactile. Used well, it adds a signature moment that makes a product feel materially distinct.
82
+ The distortion family applies mesh warping, ripple, stretch, or liquid deformation to content during the transition. Rather than moving content spatially or temporally, distortion transitions make the pixels themselves behave like a physical medium - rubber, water, or fabric - that stretches and snaps back. The effect is visceral and tactile. Used well, it adds a signature moment that makes a product feel materially distinct.
83
83
 
84
84
  **Canonical examples:** `warp`, `ripple`, `stretch-in`, `liquid`
85
85
 
86
86
  ### When to use
87
87
 
88
- - **Creative and editorial contexts** design portfolios, editorial publications, and art-directed landing pages where differentiation is a primary goal.
89
- - **Unique brand moments** a single, well-timed warp or ripple on a hero image transition can become a brand signature without overwhelming the interface.
90
- - **Hero section transitions on marketing sites** distortion applied at the seam between a full-bleed hero and the next section creates a visceral scroll reward that flat transitions cannot match.
88
+ - **Creative and editorial contexts** - design portfolios, editorial publications, and art-directed landing pages where differentiation is a primary goal.
89
+ - **Unique brand moments** - a single, well-timed warp or ripple on a hero image transition can become a brand signature without overwhelming the interface.
90
+ - **Hero section transitions on marketing sites** - distortion applied at the seam between a full-bleed hero and the next section creates a visceral scroll reward that flat transitions cannot match.
91
91
 
92
92
  ---
93
93
 
94
94
  ## 7. grid
95
95
 
96
- The grid family breaks content into a regular matrix of tiles that animate independently entering, exiting, flipping, or fading in a choreographed sequence. The grid subdivision can be dense (many small tiles for a mosaic effect) or coarse (a few large panels). The transition communicates that the content is composed of discrete pieces, which suits imagery and portfolio work where the grid metaphor is already meaningful.
96
+ The grid family breaks content into a regular matrix of tiles that animate independently - entering, exiting, flipping, or fading in a choreographed sequence. The grid subdivision can be dense (many small tiles for a mosaic effect) or coarse (a few large panels). The transition communicates that the content is composed of discrete pieces, which suits imagery and portfolio work where the grid metaphor is already meaningful.
97
97
 
98
98
  **Canonical examples:** `grid-in`, `grid-out`, `checkerboard`, `tile-flip`
99
99
 
100
100
  ### When to use
101
101
 
102
- - **Portfolio galleries** revealing a new set of work by animating each thumbnail cell independently reinforces the gallery grid metaphor.
103
- - **Image reveals** a grid-in where tiles appear in a wave pattern draws the eye across the composition before the full image settles.
104
- - **Dramatic content transitions in editorial contexts** a checkerboard or tile-flip between major sections of an editorial layout creates a theatrical reveal suited to magazine-style layouts.
102
+ - **Portfolio galleries** - revealing a new set of work by animating each thumbnail cell independently reinforces the gallery grid metaphor.
103
+ - **Image reveals** - a grid-in where tiles appear in a wave pattern draws the eye across the composition before the full image settles.
104
+ - **Dramatic content transitions in editorial contexts** - a checkerboard or tile-flip between major sections of an editorial layout creates a theatrical reveal suited to magazine-style layouts.
105
105
 
106
106
  ---
107
107
 
108
108
  ## 8. light
109
109
 
110
- The light family uses luminosity effects flash, glow, lens flare, or bloom to punctuate the moment of transition. Rather than moving content spatially, light transitions overwhelm the frame briefly with brightness or radiant energy before the new content resolves. The effect is momentary and climactic, borrowed from cinematic language where a burst of light signals a revelation, a completion, or the passage of significance.
110
+ The light family uses luminosity effects - flash, glow, lens flare, or bloom - to punctuate the moment of transition. Rather than moving content spatially, light transitions overwhelm the frame briefly with brightness or radiant energy before the new content resolves. The effect is momentary and climactic, borrowed from cinematic language where a burst of light signals a revelation, a completion, or the passage of significance.
111
111
 
112
112
  **Canonical examples:** `flash`, `whiteout`, `bloom`, `lens-flare`
113
113
 
114
114
  ### When to use
115
115
 
116
- - **Onboarding completions** a flash or bloom when the user finishes setup signals that something important has happened.
117
- - **Achievement unlocks** reward moments in any product (reaching a milestone, earning a badge) suit light transitions because brightness is universally read as positive and celebratory.
118
- - **Brand-moment animations and moments of delight** a subtle lens-flare or glow on a signature interaction (e.g., hitting a streak, confirming a purchase) adds warmth without disrupting flow.
116
+ - **Onboarding completions** - a flash or bloom when the user finishes setup signals that something important has happened.
117
+ - **Achievement unlocks** - reward moments in any product (reaching a milestone, earning a badge) suit light transitions because brightness is universally read as positive and celebratory.
118
+ - **Brand-moment animations and moments of delight** - a subtle lens-flare or glow on a signature interaction (e.g., hitting a streak, confirming a purchase) adds warmth without disrupting flow.
119
119
 
120
120
  ---
121
121
 
@@ -140,13 +140,13 @@ Quick-reference guide for selecting the right transition family based on visual
140
140
 
141
141
  Transition family choice constrains the appropriate duration range. The duration system (defined in `reference/motion.md`) maps timing to semantic classes: narrative, slow, standard, quick, and instant.
142
142
 
143
- **3d and destruction** require slow-to-narrative durations (400–700 ms). Their visual complexity rotating geometry, fragmenting particles needs time to resolve clearly. At quick durations they read as broken or glitchy rather than intentional.
143
+ **3d and destruction** require slow-to-narrative durations (400–700 ms). Their visual complexity - rotating geometry, fragmenting particles - needs time to resolve clearly. At quick durations they read as broken or glitchy rather than intentional.
144
144
 
145
145
  **distortion** works best in the slow-to-standard range (300–500 ms). Warping too fast looks like an artifact; too slow it becomes self-indulgent. The sweet spot is long enough to feel physical but short enough to feel responsive.
146
146
 
147
147
  **grid** tolerates a wider range depending on tile count. Coarse grids (2×2 or 3×3) can run at standard (200–300 ms); dense mosaics need slow (350–500 ms) so individual tile motion is legible.
148
148
 
149
- **light** transitions are typically the shortest of the heavy-weight families. A flash or whiteout at 150–250 ms (standard-to-quick) feels like a camera flash instantaneous and climactic. Extending it past 400 ms turns a flash into a fade.
149
+ **light** transitions are typically the shortest of the heavy-weight families. A flash or whiteout at 150–250 ms (standard-to-quick) feels like a camera flash - instantaneous and climactic. Extending it past 400 ms turns a flash into a fade.
150
150
 
151
151
  **dissolve and cover** are the workhorses of the system. Both operate comfortably at standard (200–300 ms) and can be compressed to quick (100–150 ms) for secondary navigation without losing legibility. They are the default choice when in doubt.
152
152
 
@@ -1,6 +1,6 @@
1
1
  # Motion & Animation Framework
2
2
 
3
- Based on Emil Kowalski's design engineering philosophy. Apply these rules in order do not skip to "how should this animate" before answering "should this animate."
3
+ Based on Emil Kowalski's design engineering philosophy. Apply these rules in order - do not skip to "how should this animate" before answering "should this animate."
4
4
 
5
5
  ---
6
6
 
@@ -10,11 +10,11 @@ Based on Emil Kowalski's design engineering philosophy. Apply these rules in ord
10
10
 
11
11
  | Action frequency | Decision |
12
12
  |---|---|
13
- | 100+/day keyboard shortcuts, command palette, list navigation | **No animation. Ever.** |
14
- | Tens/day hover states, toggles, tab switching | Remove or keep to <80ms. No delay. |
15
- | Occasional modals opening, drawers, toasts | Standard animation (150–300ms) |
16
- | Rare onboarding, celebrations, first-time flows | Can add personality and delight |
17
- | Once loading splash, page transitions | Full animation budget |
13
+ | 100+/day - keyboard shortcuts, command palette, list navigation | **No animation. Ever.** |
14
+ | Tens/day - hover states, toggles, tab switching | Remove or keep to <80ms. No delay. |
15
+ | Occasional - modals opening, drawers, toasts | Standard animation (150–300ms) |
16
+ | Rare - onboarding, celebrations, first-time flows | Can add personality and delight |
17
+ | Once - loading splash, page transitions | Full animation budget |
18
18
 
19
19
  **Critical rule**: Never animate keyboard-initiated actions. They repeat hundreds of times daily. Every ms of animation is felt.
20
20
 
@@ -26,7 +26,7 @@ Valid animation purposes only. If it doesn't serve one of these, remove it.
26
26
  |---|---|
27
27
  | **Spatial consistency** | Toast enters/exits same edge each time |
28
28
  | **State indication** | Button morphs to show loading → success |
29
- | **Cause-effect explanation** | Item deletion item flies to trash |
29
+ | **Cause-effect explanation** | Item deletion - item flies to trash |
30
30
  | **Feedback** | Button scales 0.97 on press |
31
31
  | **Prevent jarring changes** | Content appearing/disappearing needs transition |
32
32
 
@@ -36,9 +36,9 @@ Invalid purposes: "It looks cool", "It feels modern", "Other apps do it."
36
36
 
37
37
  | Element state | Easing | Rationale |
38
38
  |---|---|---|
39
- | **Entering** | `ease-out` (fast start, slow end) | Feels responsive starts immediately |
40
- | **Exiting** | `ease-in` (slow start, fast end) | Gets out of the way doesn't linger |
41
- | **State transition** (same element) | `ease-in-out` | Natural neither abrupt start nor end |
39
+ | **Entering** | `ease-out` (fast start, slow end) | Feels responsive - starts immediately |
40
+ | **Exiting** | `ease-in` (slow start, fast end) | Gets out of the way - doesn't linger |
41
+ | **State transition** (same element) | `ease-in-out` | Natural - neither abrupt start nor end |
42
42
  | **Interactive/draggable** | Spring physics | Follows finger/cursor naturally |
43
43
  | **Bounce/elastic** | **Never** | Feels toy-like and dated |
44
44
 
@@ -92,7 +92,7 @@ Exception: `filter` (blur) is GPU-accelerated in modern browsers but battery-exp
92
92
  When animating a list of items entering:
93
93
  - Stagger delay: **30–50ms** per item
94
94
  - Maximum stagger depth: **6–8 items** (items beyond that appear simultaneously)
95
- - Direction: top-to-bottom OR left-to-right never random
95
+ - Direction: top-to-bottom OR left-to-right - never random
96
96
 
97
97
  ```css
98
98
  .item:nth-child(1) { animation-delay: 0ms; }
@@ -121,7 +121,7 @@ button:not(:active) {
121
121
  ```
122
122
 
123
123
  Scale range: **0.95–0.98** for buttons. **0.97** is the safest default.
124
- Never scale below 0.90 it looks broken.
124
+ Never scale below 0.90 - it looks broken.
125
125
 
126
126
  ---
127
127
 
@@ -169,7 +169,7 @@ The best animations are ones users cannot describe but notice when absent. Signs
169
169
  - Removing the animation makes the UI feel broken
170
170
  - Users say "it feels premium" but can't point to any specific feature
171
171
 
172
- This is the goal. Not "look at this animation" "why does this feel so good to use?"
172
+ This is the goal. Not "look at this animation" - "why does this feel so good to use?"
173
173
 
174
174
  ---
175
175
 
@@ -238,7 +238,7 @@ Rule of thumb: for UI micro-interactions use stiffness 150–250, damping 20–3
238
238
 
239
239
  ## Scroll-Triggered Animations
240
240
 
241
- Use IntersectionObserver for scroll-reveal effects it replaces scroll-event
241
+ Use IntersectionObserver for scroll-reveal effects - it replaces scroll-event
242
242
  listeners with a throttled browser-native API.
243
243
 
244
244
  ### Basic pattern
@@ -271,15 +271,15 @@ document.querySelectorAll('.reveal').forEach(el => observer.observe(el));
271
271
 
272
272
  ### Once vs repeat
273
273
 
274
- - **Once** call `observer.unobserve(entry.target)` after first intersection.
274
+ - **Once** - call `observer.unobserve(entry.target)` after first intersection.
275
275
  Use for: hero reveals, one-shot entrance animations, stat counters.
276
- - **Repeat** leave observer active. Use for: progress indicators, parallax effects,
276
+ - **Repeat** - leave observer active. Use for: progress indicators, parallax effects,
277
277
  sticky nav state changes.
278
278
 
279
279
  ### Performance rules
280
280
 
281
281
  1. Animate only `transform` and `opacity` (GPU-accelerated). Avoid `top`, `left`, `width`, `height`.
282
- 2. No debounce/throttle needed IntersectionObserver is already throttled by the browser.
282
+ 2. No debounce/throttle needed - IntersectionObserver is already throttled by the browser.
283
283
  3. For many elements, share a single observer instance and call `observe()` once per element.
284
284
  4. Prefer CSS transitions triggered by a class toggle over requestAnimationFrame loops.
285
285
  5. Use `will-change: transform, opacity` sparingly (only on elements that animate repeatedly).
@@ -287,11 +287,11 @@ document.querySelectorAll('.reveal').forEach(el => observer.observe(el));
287
287
  ---
288
288
 
289
289
  ## MIFB Micro-Motion Extensions
290
- Source: jakubkrehel/make-interfaces-feel-better (MIT) motion.md
290
+ Source: jakubkrehel/make-interfaces-feel-better (MIT) - motion.md
291
291
 
292
292
  ### Interruptible Animations
293
293
 
294
- Use CSS transitions for interactive elements because transitions retarget mid-animation when a user moves their cursor away before a hover animation completes, the transition reverses smoothly from wherever it currently is. Keyframe animations restart from the beginning, creating a jarring jump.
294
+ Use CSS transitions for interactive elements because transitions retarget mid-animation - when a user moves their cursor away before a hover animation completes, the transition reverses smoothly from wherever it currently is. Keyframe animations restart from the beginning, creating a jarring jump.
295
295
 
296
296
  **Decision rule:**
297
297
  - Interactive states (hover, focus, active, pressed): always CSS transitions
@@ -314,11 +314,11 @@ For multi-element entrances (card grids, lists, feature sections):
314
314
  - Entrance transform: `opacity: 0 → 1` + `translateY(12px → 0)` + `blur(4px → 0)`
315
315
  - Entrance duration: 300ms, `ease-out`
316
316
  - Exit transform: `opacity: 1 → 0` + `translateY(0 → -12px)` (opposite direction, smaller offset)
317
- - Exit duration: 150ms (half the entrance duration exits should be faster)
317
+ - Exit duration: 150ms (half the entrance duration - exits should be faster)
318
318
 
319
- The blur component adds a depth cue that makes entrances feel less flat. Keep blur modest (4px) the goal is a subtle focus effect, not a visible blur.
319
+ The blur component adds a depth cue that makes entrances feel less flat. Keep blur modest (4px) - the goal is a subtle focus effect, not a visible blur.
320
320
 
321
- ### Contextual Icon Animations Cross-Fade Pattern
321
+ ### Contextual Icon Animations - Cross-Fade Pattern
322
322
 
323
323
  When swapping two icons (e.g., play ↔ pause, chevron-up ↔ chevron-down, bookmark ↔ bookmarked), use this exact cross-fade spec:
324
324
 
@@ -326,7 +326,7 @@ When swapping two icons (e.g., play ↔ pause, chevron-up ↔ chevron-down, book
326
326
  - `scale: 0.25 → 1` (entering), `scale: 1 → 0.25` (exiting)
327
327
  - `opacity: 0 → 1` (entering), `opacity: 1 → 0` (exiting)
328
328
  - `filter: blur(4px) → blur(0)` (entering), `blur(0) → blur(4px)` (exiting)
329
- - `transition: { type: "spring", duration: 0.3, bounce: 0 }` **bounce MUST be 0**
329
+ - `transition: { type: "spring", duration: 0.3, bounce: 0 }` - **bounce MUST be 0**
330
330
 
331
331
  **CSS fallback (no Framer):**
332
332
  - Keep both icons in the DOM, one `position: absolute`
@@ -335,14 +335,14 @@ When swapping two icons (e.g., play ↔ pause, chevron-up ↔ chevron-down, book
335
335
 
336
336
  The scale + blur combination creates a focus-snap effect that feels intentional rather than mechanical. The `bounce: 0` hard constraint exists because any bounce on a 0.25-scale origin point makes icons appear to "pop" invasively.
337
337
 
338
- ### Scale on Press Canonical Value
338
+ ### Scale on Press - Canonical Value
339
339
 
340
340
  The canonical scale value for press feedback is **`0.96`**.
341
341
 
342
342
  Rules:
343
- - Never use `scale(0.95)` too large, feels unresponsive
344
- - Never use `scale(0.97)` too subtle at high DPI, not perceived as feedback
345
- - Never use `scale(0.98)` or higher imperceptible
343
+ - Never use `scale(0.95)` - too large, feels unresponsive
344
+ - Never use `scale(0.97)` - too subtle at high DPI, not perceived as feedback
345
+ - Never use `scale(0.98)` or higher - imperceptible
346
346
  - `0.96` is the ONLY correct value for standard interactive elements
347
347
 
348
348
  Tailwind: `active:scale-[0.96]`
@@ -363,13 +363,13 @@ When `AnimatePresence` wraps UI that exists in the DOM before it enters the anim
363
363
  </AnimatePresence>
364
364
  ```
365
365
 
366
- Without `initial={false}`, Framer will animate the FIRST render of children meaning UI that's immediately visible on page load will "fade in" unnecessarily. This creates a flash/flicker that signals poor craftsmanship.
366
+ Without `initial={false}`, Framer will animate the FIRST render of children - meaning UI that's immediately visible on page load will "fade in" unnecessarily. This creates a flash/flicker that signals poor craftsmanship.
367
367
 
368
368
  **Rule:** Any `AnimatePresence` wrapping persistent UI should have `initial={false}`.
369
369
 
370
- ### will-change GPU Property Table
370
+ ### will-change - GPU Property Table
371
371
 
372
- Only add `will-change` when you observe first-frame stutter on lower-end hardware. Do NOT add it preemptively it consumes GPU memory continuously for every element that has it.
372
+ Only add `will-change` when you observe first-frame stutter on lower-end hardware. Do NOT add it preemptively - it consumes GPU memory continuously for every element that has it.
373
373
 
374
374
  GPU-compositable properties (safe with will-change):
375
375
  | Property | will-change value |
@@ -379,7 +379,7 @@ GPU-compositable properties (safe with will-change):
379
379
  | filter (blur, brightness, contrast) | `filter` |
380
380
  | clip-path | `clip-path` |
381
381
 
382
- Never use `will-change: all` or `will-change: contents` this forces the entire element and its subtree onto a new compositor layer, thrashing memory.
382
+ Never use `will-change: all` or `will-change: contents` - this forces the entire element and its subtree onto a new compositor layer, thrashing memory.
383
383
 
384
384
  Remove `will-change` after the animation completes if applied dynamically:
385
385
  ```js
@@ -1,12 +1,12 @@
1
- # Multi-Author Model Team Collaboration Contract
1
+ # Multi-Author Model - Team Collaboration Contract
2
2
 
3
3
  Phase 40 contract. GDD's single-process baseline (Phase 20 lockfile + atomic STATE.md RMW) is safe for
4
4
  one operator. This file is the contract for **multiple developers** working a design in parallel: how
5
5
  STATE.md merges, how decisions are attributed and reviewed, how writes coordinate across processes,
6
- and who is allowed to write what. Everything here is **git-native + advisory** no server, no live
6
+ and who is allowed to write what. Everything here is **git-native + advisory** - no server, no live
7
7
  multiplayer, no SSO.
8
8
 
9
- ## 1. Multi-writer STATE.md git-merge-driver with per-section semantic merge
9
+ ## 1. Multi-writer STATE.md - git-merge-driver with per-section semantic merge
10
10
 
11
11
  GDD does **not** ship a CRDT or OT engine. The chosen model (lowest risk, highest familiarity) is a
12
12
  **git merge driver with per-section semantic conflict detection**. The append-mostly `<decisions>`
@@ -17,8 +17,8 @@ block is the common case: two branches each adding a new `D-NN` must merge clean
17
17
  - **Equal duplicates collapse.** The same `D-NN` with identical text/status/attribution on both sides
18
18
  is kept once.
19
19
  - **Divergence is the only conflict.** The same `D-NN` with different text or status on the two sides
20
- is a genuine conflict surfaced to `agents/conflict-resolver.md`, never auto-resolved.
21
- - **Decisions are durable.** A `D-NN` removed on one side but unchanged on the other is **kept** a
20
+ is a genuine conflict - surfaced to `agents/conflict-resolver.md`, never auto-resolved.
21
+ - **Decisions are durable.** A `D-NN` removed on one side but unchanged on the other is **kept** - a
22
22
  decision is never silently deleted by a merge; removal goes through the unlock flow (§3).
23
23
 
24
24
  A single-value section (e.g. `status`) merges with `mergeStatusScalar`: if only one side changed, take
@@ -32,13 +32,13 @@ A decision line carries an **optional** attribution suffix:
32
32
  D-07: Use OKLCH design tokens (locked) [author=alice co-author=gdd-3f9a]
33
33
  ```
34
34
 
35
- - `author` the git user who made the decision.
36
- - `co-author` the GDD instance id (which machine/agent run produced it).
35
+ - `author` - the git user who made the decision.
36
+ - `co-author` - the GDD instance id (which machine/agent run produced it).
37
37
 
38
38
  The suffix is backward-compatible: a plain `D-01: text (locked)` parses with `author`/`co-author` =
39
39
  null. `scripts/lib/collab/attribution.cjs` parses + formats the line and groups decisions by author.
40
40
  `agents/design-reflector.md` reads attribution to surface **per-author patterns** (who tends to lock
41
- early, whose decisions get reverted). This is the SC#5 "attribution field" encoded in the line, not
41
+ early, whose decisions get reverted). This is the SC#5 "attribution field" - encoded in the line, not
42
42
  a schema-breaking change to the `Decision` type.
43
43
 
44
44
  ## 3. Async review queue + decision locks
@@ -64,10 +64,10 @@ proposed → reviewing → approved → locked
64
64
  mode the Phase 20 defaults apply (`maxWaitMs: 5000`). When `collab.multi_writer_enabled: true`, a
65
65
  teammate's write may be queued, so the policy waits up to **30 s** with a **100 ms** backoff poll and a
66
66
  2-minute stale threshold. `collab.lock_timeout_ms` overrides the wait. The gdd-state MCP write path
67
- passes these options to the existing advisory lock coordinated multi-process writes, no new lock
67
+ passes these options to the existing advisory lock - coordinated multi-process writes, no new lock
68
68
  mechanism.
69
69
 
70
- ## 5. Sectional handoff `gdd_cycle_mode`
70
+ ## 5. Sectional handoff - `gdd_cycle_mode`
71
71
 
72
72
  `.design/config.json#gdd_cycle_mode` partitions a cycle by role (`scripts/lib/collab/cycle-mode.cjs`):
73
73
 
@@ -77,7 +77,7 @@ mechanism.
77
77
  | `dev` | Plan, Design, Verify |
78
78
  | `full` | all (the default / current behavior) |
79
79
 
80
- `stagePermitted(mode, stage)` gates STATE writes by stage a designer-mode cycle cannot write Plan/Design
80
+ `stagePermitted(mode, stage)` gates STATE writes by stage - a designer-mode cycle cannot write Plan/Design
81
81
  state, and vice versa. This lets a designer hand a brief to a dev without either overwriting the other's
82
82
  sections.
83
83
 
@@ -101,9 +101,9 @@ permissive (`owner` can do everything); an override can restrict, e.g. "only `@l
101
101
  ## 8. Cross-machine sync (opt-in)
102
102
 
103
103
  `scripts/lib/collab/sync-backend.cjs` `resolveBackend(config)` selects the `.design/` sync backend:
104
- `git` (the **default** existing behavior), or an opt-in `s3` / `git-lfs` for orgs whose git
104
+ `git` (the **default** - existing behavior), or an opt-in `s3` / `git-lfs` for orgs whose git
105
105
  push/pull cadence is too slow. Sync is **opt-in and off by default**; a live S3/LFS client is out of
106
- scope for this phase the selector + contract ship, the backend is pluggable.
106
+ scope for this phase - the selector + contract ship, the backend is pluggable.
107
107
 
108
108
  ## Boundaries
109
109
 
@@ -1,9 +1,9 @@
1
- # Native Platforms Token-Bridge Spec
1
+ # Native Platforms - Token-Bridge Spec
2
2
 
3
3
  This reference is the **token→native-code bridge**: it specifies how the canonical
4
4
  CSS-token form produced by the Phase-23 token engine
5
- (`scripts/lib/design-tokens/`) maps onto the three native theme systems
6
- SwiftUI, Jetpack Compose, and Flutter and pins down the **precision contract**
5
+ (`scripts/lib/design-tokens/`) maps onto the three native theme systems -
6
+ SwiftUI, Jetpack Compose, and Flutter - and pins down the **precision contract**
7
7
  that defines what "token identity preserved" means for the deterministic
8
8
  round-trip (`reference/native-platforms.md` is the authority that
9
9
  `test/suite/native-token-bridge.test.cjs` asserts against).
@@ -13,15 +13,15 @@ have distinct jobs and must not be confused:
13
13
 
14
14
  | File | Job |
15
15
  | --- | --- |
16
- | `reference/platforms.md` (Phase 19) | Interaction **conventions** navigation, safe areas, gestures, native typography, haptics. *Behavioral* knowledge the executors reference when laying out a screen. |
17
- | `reference/native-platforms.md` (Phase 34.1, this file) | The token→theme **bridge** how a design token (`#3B82F6`, `16px`, `Inter`) becomes a SwiftUI `Color` / Compose `Color(0x…)` / Flutter `Color(0x…)`, plus the precision contract for the round-trip. *Structural* knowledge the emitters implement. |
16
+ | `reference/platforms.md` (Phase 19) | Interaction **conventions** - navigation, safe areas, gestures, native typography, haptics. *Behavioral* knowledge the executors reference when laying out a screen. |
17
+ | `reference/native-platforms.md` (Phase 34.1, this file) | The token→theme **bridge** - how a design token (`#3B82F6`, `16px`, `Inter`) becomes a SwiftUI `Color` / Compose `Color(0x…)` / Flutter `Color(0x…)`, plus the precision contract for the round-trip. *Structural* knowledge the emitters implement. |
18
18
 
19
19
  Per **D-02** the bridge **extends** the Phase-23 engine with three new emitters
20
20
  (`scripts/lib/design-tokens/{swift,compose,flutter}.cjs`) rather than forking a
21
21
  separate native IR. There is one canonical token form (below) and one set of
22
22
  readers; the native emitters are additional *sinks* on the same facade. Per
23
- **D-10** the round-trip operates at the **token level** deterministic emit +
24
- re-extract with documented precision never full-view parsing and never a live
23
+ **D-10** the round-trip operates at the **token level** - deterministic emit +
24
+ re-extract with documented precision - never full-view parsing and never a live
25
25
  simulator, so the default `npm test` stays green on any machine.
26
26
 
27
27
  ---
@@ -55,7 +55,7 @@ whose values are the raw token values as strings.
55
55
  ```
56
56
 
57
57
  Each emitter accepts either the full Phase-23 `TokenSet`
58
- (`{ tokens, source?, format? }`) **or** a bare `{ tokens }` object it reads
58
+ (`{ tokens, source?, format? }`) **or** a bare `{ tokens }` object - it reads
59
59
  `tokenSet.tokens` and throws a `TypeError` only when no `.tokens` object is
60
60
  present.
61
61
 
@@ -77,20 +77,20 @@ to decide whether a value is a color, a dimension, or a string:
77
77
  A value is **always** re-sniffed regardless of prefix, so a `#…` value under a
78
78
  non-color prefix is still emitted as a color and a `Npx` value under a non-space
79
79
  prefix is still emitted as a dimension. The prefix is the hint; the value is the
80
- authority. This keeps the bridge robust against arbitrary token-naming schemes.
80
+ authority. This keeps the bridge solid against arbitrary token-naming schemes.
81
81
 
82
82
  ---
83
83
 
84
84
  ## 3. SwiftUI mapping
85
85
 
86
86
  Target: a Swift source string exposing an `enum` of static theme constants
87
- (`enum GDDTheme { … }`) colors as `Color`, dimensions as `CGFloat` points,
87
+ (`enum GDDTheme { … }`) - colors as `Color`, dimensions as `CGFloat` points,
88
88
  typography families as `String` (and an optional `Font` helper).
89
89
 
90
90
  | Token | SwiftUI form |
91
91
  | --- | --- |
92
92
  | color `#RRGGBB` | `Color(red: R/255.0, green: G/255.0, blue: B/255.0, opacity: A/255.0)` from the 8-bit channels |
93
- | dimension `Npx` | `CGFloat` point literal integer `N` (pt) |
93
+ | dimension `Npx` | `CGFloat` point literal - integer `N` (pt) |
94
94
  | font-family | `String` literal (`"Inter, system-ui"`) |
95
95
 
96
96
  Illustrative (2-line) snippet:
@@ -102,7 +102,7 @@ static let space4: CGFloat = 16
102
102
 
103
103
  SwiftUI uses normalized `0.0…1.0` channel fractions; to keep the round-trip
104
104
  **exact** the emitter writes each channel as the 8-bit numerator over `255.0`
105
- (e.g. `59.0/255.0`) rather than a pre-divided decimal the re-extractor reads
105
+ (e.g. `59.0/255.0`) rather than a pre-divided decimal - the re-extractor reads
106
106
  the numerator back as the integer channel, avoiding float drift. The `Color` /
107
107
  `Font` / `ViewModifier` consumption pattern (applying the constants to views) is
108
108
  the executor's job; this emitter produces the *constants*.
@@ -144,7 +144,7 @@ carries the typography tokens, plus a constants class
144
144
  | Token | Flutter form |
145
145
  | --- | --- |
146
146
  | color `#RRGGBB` | `Color(0xAARRGGBB)` (alpha-first, 8 hex digits) |
147
- | dimension `Npx` | logical-px **double** `N.0` |
147
+ | dimension `Npx` | logical-px **double** - `N.0` |
148
148
  | typography family | `String` (`fontFamily: 'Inter'`) |
149
149
 
150
150
  Illustrative (2-line) snippet:
@@ -155,7 +155,7 @@ static const space4 = 16.0;
155
155
  ```
156
156
 
157
157
  Flutter measures in logical pixels and keeps the value as a `double` (`16.0`),
158
- so unlike pt/dp Flutter dimensions are **not** rounded to integers; the
158
+ so - unlike pt/dp - Flutter dimensions are **not** rounded to integers; the
159
159
  fractional part survives.
160
160
 
161
161
  ---
@@ -164,29 +164,29 @@ fractional part survives.
164
164
 
165
165
  This section is the crux. It defines, per value category, exactly what
166
166
  information the emit → re-extract round-trip preserves. The test asserts token
167
- identity **within this precision** not bit-exact floats, not lossy
167
+ identity **within this precision** - not bit-exact floats, not lossy
168
168
  approximation. An emitter is correct **iff** `reextract(emit({tokens}))`
169
169
  reproduces every token in the identity set under these rules.
170
170
 
171
- ### COLOR 8-bit-per-channel, EXACT
171
+ ### COLOR - 8-bit-per-channel, EXACT
172
172
 
173
173
  - Accepted input forms: `#RGB`, `#RRGGBB`, `#RGBA`, `#RRGGBBAA` (case-insensitive).
174
174
  - `#RGB` / `#RGBA` shorthand **expands** to `#RRGGBB` / `#RRGGBBAA` by
175
175
  duplicating each nibble (`#3af` → `#33aaff`). This expansion is part of the
176
176
  contract: the re-extractor recovers the **expanded** `#RRGGBB(AA)` form, so
177
177
  `#3af` round-trips to `#33aaff` (canonically equal, the documented identity).
178
- - Each channel is an 8-bit integer (0–255) and is preserved **exactly** no
178
+ - Each channel is an 8-bit integer (0–255) and is preserved **exactly** - no
179
179
  channel may be off by one. SwiftUI stores channels as `N.0/255.0` numerators;
180
180
  Compose/Flutter store them in a `0xAARRGGBB` literal. Both forms recover the
181
181
  identical 8-bit channels.
182
182
  - **Alpha:** when the input has no alpha (`#RGB`/`#RRGGBB`) the emitted color is
183
- **opaque** alpha byte `0xFF` (Compose/Flutter) / `opacity: 255.0/255.0`
183
+ **opaque** - alpha byte `0xFF` (Compose/Flutter) / `opacity: 255.0/255.0`
184
184
  (SwiftUI). The re-extractor emits an alpha channel **only when the original
185
185
  had one**: a 6-digit input round-trips to a 6-digit `#RRGGBB` (the implied
186
186
  opaque alpha is dropped on the way back); an 8-digit input round-trips to the
187
187
  8-digit `#RRGGBBAA`. This keeps `#3B82F6 → #3B82F6` an exact identity.
188
188
 
189
- ### DIMENSION integer pt/dp, logical-px double
189
+ ### DIMENSION - integer pt/dp, logical-px double
190
190
 
191
191
  - Accepted input: `Npx` or a bare unit-less number (`16px`, `16`). The unit is
192
192
  normalised to `px` on the canonical side.
@@ -200,7 +200,7 @@ reproduces every token in the identity set under these rules.
200
200
  - The re-extractor always recovers the canonical `Npx` string form, so the
201
201
  emit→re-extract identity for an integer dimension is `"16px" === "16px"`.
202
202
 
203
- ### `rem` / `em` passed through verbatim (non-mappable)
203
+ ### `rem` / `em` - passed through verbatim (non-mappable)
204
204
 
205
205
  `rem`/`em` values depend on a root/element font-size that the token map does not
206
206
  carry, so they are **not** converted. They are treated as **non-mappable**
@@ -208,18 +208,18 @@ carry, so they are **not** converted. They are treated as **non-mappable**
208
208
  identity set. (A future plan may add an explicit base-size option; until then,
209
209
  verbatim pass-through is the stated, deterministic behavior.)
210
210
 
211
- ### TYPOGRAPHY / NAMED VALUES string pass-through
211
+ ### TYPOGRAPHY / NAMED VALUES - string pass-through
212
212
 
213
213
  `font-family`, `font-weight`, named sizes, and any other string token are
214
214
  emitted **verbatim** as a string literal and recovered **string-equal**
215
215
  (`"Inter, system-ui" → "Inter, system-ui"`). No normalisation, no quoting
216
216
  changes that alter the recovered string.
217
217
 
218
- ### NON-MAPPABLE verbatim, EXCLUDED from the identity set
218
+ ### NON-MAPPABLE - verbatim, EXCLUDED from the identity set
219
219
 
220
- Values the emitter cannot represent as a native primitive CSS `var(--x)`
220
+ Values the emitter cannot represent as a native primitive - CSS `var(--x)`
221
221
  references, `calc(…)` expressions, gradients (`linear-gradient(…)`), and `rem`/
222
- `em` dimensions are **passed through verbatim** into a raw-string slot
222
+ `em` dimensions - are **passed through verbatim** into a raw-string slot
223
223
  (a trailing comment such as `// non-mappable: <name> = <value>` or the language
224
224
  equivalent) so no information is lost, and are **explicitly excluded** from the
225
225
  round-trip identity assertion. The contract documents them as
@@ -256,18 +256,18 @@ regression baseline.
256
256
  This reference is registered in
257
257
  [`reference/registry.json`](./registry.json) as the `native-platforms` entry
258
258
  (type `heuristic`, phase `34.1`) so the registry round-trip test
259
- (`test/suite/reference-registry.test.cjs`) stays green every `reference/*.md`
259
+ (`test/suite/reference-registry.test.cjs`) stays green - every `reference/*.md`
260
260
  must be registered and resolve (D-05, the 33.5-01 lesson).
261
261
 
262
262
  ---
263
263
 
264
264
  ## 9. Cross-references
265
265
 
266
- - [`reference/platforms.md`](./platforms.md) the interaction-conventions
266
+ - [`reference/platforms.md`](./platforms.md) - the interaction-conventions
267
267
  sibling (navigation, safe areas, gestures, native typography). Executors read
268
268
  **both**: this file for the token→theme bridge, that file for layout/behavior.
269
- - `scripts/lib/design-tokens/` the Phase-23 token engine this bridge extends
269
+ - `scripts/lib/design-tokens/` - the Phase-23 token engine this bridge extends
270
270
  (`index.cjs` facade + `css-vars` / `js-const` / `tailwind` / `figma` readers +
271
271
  the new `swift` / `compose` / `flutter` emitters).
272
- - `test/fixtures/mapper-outputs/tokens.json` the canonical token fixture the
272
+ - `test/fixtures/mapper-outputs/tokens.json` - the canonical token fixture the
273
273
  round-trip test derives its map from.