@hegemonart/get-design-done 1.41.5 → 1.43.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (434) hide show
  1. package/.claude-plugin/marketplace.json +2 -2
  2. package/.claude-plugin/plugin.json +1 -1
  3. package/CHANGELOG.md +1120 -1029
  4. package/README.md +158 -154
  5. package/SKILL.md +42 -42
  6. package/agents/README.md +53 -53
  7. package/agents/a11y-mapper.md +3 -3
  8. package/agents/component-benchmark-harvester.md +8 -8
  9. package/agents/component-benchmark-synthesizer.md +11 -11
  10. package/agents/component-taxonomy-mapper.md +5 -5
  11. package/agents/compose-executor.md +25 -25
  12. package/agents/conflict-resolver.md +8 -8
  13. package/agents/cost-forecaster.md +12 -12
  14. package/agents/decision-journal-exporter.md +5 -5
  15. package/agents/design-advisor.md +19 -19
  16. package/agents/design-assumptions-analyzer.md +16 -16
  17. package/agents/design-auditor.md +39 -39
  18. package/agents/design-authority-watcher.md +28 -28
  19. package/agents/design-component-generator.md +27 -27
  20. package/agents/design-context-builder.md +66 -66
  21. package/agents/design-context-checker-gate.md +5 -5
  22. package/agents/design-context-checker.md +20 -20
  23. package/agents/design-discussant.md +23 -23
  24. package/agents/design-doc-writer.md +12 -12
  25. package/agents/design-executor.md +38 -38
  26. package/agents/design-figma-writer.md +31 -31
  27. package/agents/design-fixer.md +27 -27
  28. package/agents/design-integration-checker-gate.md +5 -5
  29. package/agents/design-integration-checker.md +29 -29
  30. package/agents/design-paper-writer.md +14 -14
  31. package/agents/design-pattern-mapper.md +9 -9
  32. package/agents/design-pencil-writer.md +12 -12
  33. package/agents/design-phase-researcher.md +14 -14
  34. package/agents/design-plan-checker.md +13 -13
  35. package/agents/design-planner.md +24 -24
  36. package/agents/design-reflector.md +48 -48
  37. package/agents/design-research-synthesizer.md +21 -21
  38. package/agents/design-start-writer.md +7 -7
  39. package/agents/design-update-checker.md +8 -8
  40. package/agents/design-verifier-gate.md +5 -5
  41. package/agents/design-verifier.md +80 -80
  42. package/agents/ds-generator.md +14 -14
  43. package/agents/ds-migration-planner.md +12 -12
  44. package/agents/email-executor.md +26 -26
  45. package/agents/experiment-result-ingester.md +10 -10
  46. package/agents/flutter-executor.md +28 -28
  47. package/agents/gdd-graph-refresh.md +10 -10
  48. package/agents/gdd-intel-updater.md +11 -11
  49. package/agents/gdd-learnings-extractor.md +2 -2
  50. package/agents/motion-mapper.md +8 -8
  51. package/agents/motion-verifier.md +16 -16
  52. package/agents/pdf-executor.md +27 -27
  53. package/agents/perf-analyzer.md +20 -20
  54. package/agents/pr-commenter.md +24 -24
  55. package/agents/prototype-gate.md +29 -29
  56. package/agents/quality-gate-runner.md +21 -21
  57. package/agents/rollout-coordinator.md +8 -8
  58. package/agents/swift-executor.md +41 -41
  59. package/agents/ticket-sync-agent.md +19 -19
  60. package/agents/token-mapper.md +6 -6
  61. package/agents/user-research-synthesizer.md +13 -13
  62. package/agents/visual-hierarchy-mapper.md +2 -2
  63. package/dist/claude-code/.claude/skills/add-backlog/SKILL.md +48 -0
  64. package/dist/claude-code/.claude/skills/analyze-dependencies/SKILL.md +95 -0
  65. package/dist/claude-code/.claude/skills/apply-reflections/SKILL.md +92 -0
  66. package/dist/claude-code/.claude/skills/apply-reflections/apply-reflections-procedure.md +170 -0
  67. package/dist/claude-code/.claude/skills/audit/SKILL.md +79 -0
  68. package/dist/claude-code/.claude/skills/bandit-status/SKILL.md +94 -0
  69. package/dist/claude-code/.claude/skills/benchmark/SKILL.md +65 -0
  70. package/dist/claude-code/.claude/skills/bootstrap-ds/SKILL.md +43 -0
  71. package/dist/claude-code/.claude/skills/brief/SKILL.md +128 -0
  72. package/dist/claude-code/.claude/skills/budget/SKILL.md +45 -0
  73. package/dist/claude-code/.claude/skills/cache-manager/SKILL.md +66 -0
  74. package/dist/claude-code/.claude/skills/cache-manager/cache-policy.md +126 -0
  75. package/dist/claude-code/.claude/skills/check-update/SKILL.md +98 -0
  76. package/dist/claude-code/.claude/skills/compare/SKILL.md +82 -0
  77. package/dist/claude-code/.claude/skills/compare/compare-rubric.md +171 -0
  78. package/dist/claude-code/.claude/skills/complete-cycle/SKILL.md +81 -0
  79. package/dist/claude-code/.claude/skills/connections/SKILL.md +71 -0
  80. package/dist/claude-code/.claude/skills/connections/connections-onboarding.md +608 -0
  81. package/dist/claude-code/.claude/skills/continue/SKILL.md +24 -0
  82. package/dist/claude-code/.claude/skills/darkmode/SKILL.md +76 -0
  83. package/dist/claude-code/.claude/skills/darkmode/darkmode-audit-procedure.md +258 -0
  84. package/dist/claude-code/.claude/skills/debug/SKILL.md +41 -0
  85. package/dist/claude-code/.claude/skills/debug/debug-feedback-loops.md +119 -0
  86. package/dist/claude-code/.claude/skills/design/SKILL.md +99 -0
  87. package/dist/claude-code/.claude/skills/design/design-procedure.md +304 -0
  88. package/dist/claude-code/.claude/skills/discover/SKILL.md +72 -0
  89. package/dist/claude-code/.claude/skills/discover/discover-procedure.md +222 -0
  90. package/dist/claude-code/.claude/skills/discuss/SKILL.md +96 -0
  91. package/dist/claude-code/.claude/skills/do/SKILL.md +45 -0
  92. package/dist/claude-code/.claude/skills/explore/SKILL.md +105 -0
  93. package/dist/claude-code/.claude/skills/explore/explore-procedure.md +267 -0
  94. package/dist/claude-code/.claude/skills/export/SKILL.md +30 -0
  95. package/dist/claude-code/.claude/skills/extract-learnings/SKILL.md +98 -0
  96. package/dist/claude-code/.claude/skills/fast/SKILL.md +91 -0
  97. package/dist/claude-code/.claude/skills/figma-extract/SKILL.md +64 -0
  98. package/dist/claude-code/.claude/skills/figma-write/SKILL.md +39 -0
  99. package/dist/claude-code/.claude/skills/graphify/SKILL.md +49 -0
  100. package/dist/claude-code/.claude/skills/health/SKILL.md +99 -0
  101. package/dist/claude-code/.claude/skills/health/health-mcp-detection.md +44 -0
  102. package/dist/claude-code/.claude/skills/health/health-skill-length-report.md +69 -0
  103. package/dist/claude-code/.claude/skills/help/SKILL.md +87 -0
  104. package/dist/claude-code/.claude/skills/list-assumptions/SKILL.md +61 -0
  105. package/dist/claude-code/.claude/skills/locale/SKILL.md +51 -0
  106. package/dist/claude-code/.claude/skills/map/SKILL.md +89 -0
  107. package/dist/claude-code/.claude/skills/migrate/SKILL.md +70 -0
  108. package/dist/claude-code/.claude/skills/new-cycle/SKILL.md +37 -0
  109. package/dist/claude-code/.claude/skills/new-cycle/milestone-completeness-rubric.md +87 -0
  110. package/dist/claude-code/.claude/skills/new-project/SKILL.md +53 -0
  111. package/dist/claude-code/.claude/skills/next/SKILL.md +68 -0
  112. package/dist/claude-code/.claude/skills/note/SKILL.md +48 -0
  113. package/dist/claude-code/.claude/skills/openrouter-status/SKILL.md +86 -0
  114. package/dist/claude-code/.claude/skills/optimize/SKILL.md +97 -0
  115. package/dist/claude-code/.claude/skills/pause/SKILL.md +77 -0
  116. package/dist/claude-code/.claude/skills/peer-cli-add/SKILL.md +88 -0
  117. package/dist/claude-code/.claude/skills/peer-cli-add/peer-cli-protocol.md +161 -0
  118. package/dist/claude-code/.claude/skills/peer-cli-customize/SKILL.md +90 -0
  119. package/dist/claude-code/.claude/skills/peers/SKILL.md +96 -0
  120. package/dist/claude-code/.claude/skills/plan/SKILL.md +105 -0
  121. package/dist/claude-code/.claude/skills/plan/plan-procedure.md +278 -0
  122. package/dist/claude-code/.claude/skills/plant-seed/SKILL.md +48 -0
  123. package/dist/claude-code/.claude/skills/pr-branch/SKILL.md +32 -0
  124. package/dist/claude-code/.claude/skills/progress/SKILL.md +95 -0
  125. package/dist/claude-code/.claude/skills/quality-gate/SKILL.md +90 -0
  126. package/dist/claude-code/.claude/skills/quality-gate/threat-modeling.md +101 -0
  127. package/dist/claude-code/.claude/skills/quick/SKILL.md +44 -0
  128. package/dist/claude-code/.claude/skills/reapply-patches/SKILL.md +32 -0
  129. package/dist/claude-code/.claude/skills/recall/SKILL.md +75 -0
  130. package/dist/claude-code/.claude/skills/reflect/SKILL.md +85 -0
  131. package/dist/claude-code/.claude/skills/reflect/procedures/capability-gap-scan.md +120 -0
  132. package/dist/claude-code/.claude/skills/report-issue/SKILL.md +53 -0
  133. package/dist/claude-code/.claude/skills/report-issue/report-issue-procedure.md +120 -0
  134. package/dist/claude-code/.claude/skills/resume/SKILL.md +93 -0
  135. package/dist/claude-code/.claude/skills/review-backlog/SKILL.md +46 -0
  136. package/dist/claude-code/.claude/skills/review-decisions/SKILL.md +42 -0
  137. package/dist/claude-code/.claude/skills/roi/SKILL.md +54 -0
  138. package/dist/claude-code/.claude/skills/rollout-status/SKILL.md +35 -0
  139. package/dist/claude-code/.claude/skills/router/SKILL.md +89 -0
  140. package/dist/claude-code/.claude/skills/router/capability-gap-emitter.md +65 -0
  141. package/dist/claude-code/.claude/skills/router/router-pick-emitter.md +78 -0
  142. package/dist/claude-code/.claude/skills/router/router-rules.md +84 -0
  143. package/dist/claude-code/.claude/skills/scan/SKILL.md +92 -0
  144. package/dist/claude-code/.claude/skills/scan/scan-procedure.md +732 -0
  145. package/dist/claude-code/.claude/skills/settings/SKILL.md +87 -0
  146. package/dist/claude-code/.claude/skills/ship/SKILL.md +48 -0
  147. package/dist/claude-code/.claude/skills/sketch/SKILL.md +78 -0
  148. package/dist/claude-code/.claude/skills/sketch-wrap-up/SKILL.md +92 -0
  149. package/dist/claude-code/.claude/skills/skill-manifest/SKILL.md +79 -0
  150. package/dist/claude-code/.claude/skills/spike/SKILL.md +67 -0
  151. package/dist/claude-code/.claude/skills/spike-wrap-up/SKILL.md +86 -0
  152. package/dist/claude-code/.claude/skills/start/SKILL.md +67 -0
  153. package/dist/claude-code/.claude/skills/start/start-procedure.md +115 -0
  154. package/dist/claude-code/.claude/skills/stats/SKILL.md +51 -0
  155. package/dist/claude-code/.claude/skills/style/SKILL.md +71 -0
  156. package/dist/claude-code/.claude/skills/style/style-doc-procedure.md +150 -0
  157. package/dist/claude-code/.claude/skills/synthesize/SKILL.md +94 -0
  158. package/dist/claude-code/.claude/skills/timeline/SKILL.md +66 -0
  159. package/dist/claude-code/.claude/skills/todo/SKILL.md +64 -0
  160. package/dist/claude-code/.claude/skills/turn-closeout/SKILL.md +95 -0
  161. package/dist/claude-code/.claude/skills/undo/SKILL.md +31 -0
  162. package/dist/claude-code/.claude/skills/unlock-decision/SKILL.md +54 -0
  163. package/dist/claude-code/.claude/skills/update/SKILL.md +56 -0
  164. package/dist/claude-code/.claude/skills/using-gdd/SKILL.md +78 -0
  165. package/dist/claude-code/.claude/skills/verify/SKILL.md +113 -0
  166. package/dist/claude-code/.claude/skills/verify/verify-procedure.md +512 -0
  167. package/dist/claude-code/.claude/skills/warm-cache/SKILL.md +81 -0
  168. package/dist/claude-code/.claude/skills/watch-authorities/SKILL.md +82 -0
  169. package/dist/claude-code/.claude/skills/zoom-out/SKILL.md +26 -0
  170. package/package.json +8 -2
  171. package/reference/DEPRECATIONS.md +21 -7
  172. package/reference/STATE-TEMPLATE.md +26 -26
  173. package/reference/accessibility.md +13 -13
  174. package/reference/adr-format.md +13 -13
  175. package/reference/ai-native-tool-interface.md +5 -5
  176. package/reference/anti-patterns.md +9 -9
  177. package/reference/architecture-vocabulary.md +31 -31
  178. package/reference/audit-scoring.md +13 -13
  179. package/reference/authority-feeds.md +36 -36
  180. package/reference/bandit-integration.md +25 -25
  181. package/reference/brand-voice.md +36 -36
  182. package/reference/capability-gap-stage-gate.md +20 -20
  183. package/reference/checklists.md +26 -26
  184. package/reference/cli-localization.md +13 -13
  185. package/reference/codex-tools.md +2 -2
  186. package/reference/color-theory.md +28 -28
  187. package/reference/component-authoring.md +4 -4
  188. package/reference/components/README.md +13 -13
  189. package/reference/components/TEMPLATE.md +13 -13
  190. package/reference/components/accordion.md +15 -15
  191. package/reference/components/alert.md +25 -25
  192. package/reference/components/badge.md +18 -18
  193. package/reference/components/breadcrumbs.md +24 -24
  194. package/reference/components/button.md +21 -21
  195. package/reference/components/card.md +13 -13
  196. package/reference/components/checkbox.md +20 -20
  197. package/reference/components/chip.md +20 -20
  198. package/reference/components/command-palette.md +15 -15
  199. package/reference/components/date-picker.md +22 -22
  200. package/reference/components/drawer.md +13 -13
  201. package/reference/components/file-upload.md +22 -22
  202. package/reference/components/input.md +18 -18
  203. package/reference/components/label.md +25 -25
  204. package/reference/components/link.md +19 -19
  205. package/reference/components/list.md +17 -17
  206. package/reference/components/menu.md +19 -19
  207. package/reference/components/modal-dialog.md +16 -16
  208. package/reference/components/navbar.md +19 -19
  209. package/reference/components/pagination.md +18 -18
  210. package/reference/components/popover.md +12 -12
  211. package/reference/components/progress.md +18 -18
  212. package/reference/components/radio.md +17 -17
  213. package/reference/components/rich-text-editor.md +24 -24
  214. package/reference/components/select-combobox.md +16 -16
  215. package/reference/components/sidebar.md +15 -15
  216. package/reference/components/skeleton.md +20 -20
  217. package/reference/components/slider.md +20 -20
  218. package/reference/components/stepper.md +24 -24
  219. package/reference/components/switch.md +19 -19
  220. package/reference/components/table.md +21 -21
  221. package/reference/components/tabs.md +11 -11
  222. package/reference/components/toast.md +19 -19
  223. package/reference/components/tooltip.md +19 -19
  224. package/reference/components/tree.md +17 -17
  225. package/reference/composition.md +38 -38
  226. package/reference/config-schema.md +37 -37
  227. package/reference/context-md-format.md +9 -9
  228. package/reference/contrast-advanced.md +29 -29
  229. package/reference/conversational-ui.md +17 -17
  230. package/reference/cost-governance.md +14 -14
  231. package/reference/css-grid-layout.md +8 -8
  232. package/reference/cycle-handoff-preamble.md +3 -3
  233. package/reference/data-visualization.md +67 -67
  234. package/reference/debugger-philosophy.md +5 -5
  235. package/reference/design-system-guidance.md +21 -21
  236. package/reference/design-systems-catalog.md +20 -20
  237. package/reference/design-variants.md +11 -11
  238. package/reference/domains/civic-patterns.md +10 -10
  239. package/reference/domains/finance-patterns.md +9 -9
  240. package/reference/domains/gaming-patterns.md +9 -9
  241. package/reference/domains/healthcare-patterns.md +11 -11
  242. package/reference/ds-bootstrap-rubric.md +13 -13
  243. package/reference/email-design.md +22 -22
  244. package/reference/emotional-design.md +10 -10
  245. package/reference/error-recovery.md +11 -11
  246. package/reference/export-formats.md +7 -7
  247. package/reference/figma-sandbox.md +6 -6
  248. package/reference/first-principles.md +10 -10
  249. package/reference/form-patterns.md +26 -26
  250. package/reference/framer-motion-patterns.md +49 -49
  251. package/reference/gdd-runtime-audit.md +17 -17
  252. package/reference/gdd-threat-model.md +44 -44
  253. package/reference/gemini-tools.md +3 -3
  254. package/reference/gestalt.md +24 -24
  255. package/reference/heuristics.md +32 -32
  256. package/reference/i18n.md +44 -44
  257. package/reference/iconography.md +24 -24
  258. package/reference/image-optimization.md +14 -14
  259. package/reference/information-architecture.md +47 -47
  260. package/reference/intel-schema.md +1 -1
  261. package/reference/known-failure-modes.md +37 -37
  262. package/reference/meta-rules.md +5 -5
  263. package/reference/migrations/material-3-to-4.md +17 -17
  264. package/reference/migrations/mui-v6.md +16 -16
  265. package/reference/migrations/shadcn-v2.md +25 -25
  266. package/reference/migrations/tailwind-v4.md +21 -21
  267. package/reference/model-prices.md +3 -3
  268. package/reference/model-tiers.md +40 -40
  269. package/reference/motion-advanced.md +21 -21
  270. package/reference/motion-easings.md +29 -29
  271. package/reference/motion-interpolate.md +1 -1
  272. package/reference/motion-spring.md +13 -13
  273. package/reference/motion-transition-taxonomy.md +34 -34
  274. package/reference/motion.md +31 -31
  275. package/reference/multi-author-model.md +13 -13
  276. package/reference/native-platforms.md +28 -28
  277. package/reference/notification-routing.md +6 -6
  278. package/reference/onboarding-progressive-disclosure.md +32 -32
  279. package/reference/openrouter-tier-mapping.md +8 -8
  280. package/reference/palette-catalog.md +37 -37
  281. package/reference/parallelism-rules.md +20 -20
  282. package/reference/peer-cli-capabilities.md +14 -14
  283. package/reference/peer-protocols.md +21 -21
  284. package/reference/perf-budget.md +21 -21
  285. package/reference/performance.md +22 -22
  286. package/reference/platforms.md +51 -51
  287. package/reference/pr-review-integration.md +7 -7
  288. package/reference/prices/antigravity.md +3 -3
  289. package/reference/prices/augment.md +3 -3
  290. package/reference/prices/claude.md +2 -2
  291. package/reference/prices/cline.md +4 -4
  292. package/reference/prices/codebuddy.md +3 -3
  293. package/reference/prices/codex.md +2 -2
  294. package/reference/prices/copilot.md +3 -3
  295. package/reference/prices/cursor.md +3 -3
  296. package/reference/prices/gemini.md +2 -2
  297. package/reference/prices/kilo.md +3 -3
  298. package/reference/prices/opencode.md +4 -4
  299. package/reference/prices/qwen.md +2 -2
  300. package/reference/prices/trae.md +3 -3
  301. package/reference/prices/windsurf.md +3 -3
  302. package/reference/prices.openrouter.md +5 -5
  303. package/reference/print-design.md +36 -36
  304. package/reference/priority-matrix.md +2 -2
  305. package/reference/project-skills-guide.md +3 -3
  306. package/reference/proportion-systems.md +23 -23
  307. package/reference/pseudonymization-rules.md +30 -30
  308. package/reference/registry.json +7 -0
  309. package/reference/retrieval-contract.md +14 -14
  310. package/reference/review-format.md +7 -7
  311. package/reference/rollout-coordination.md +10 -10
  312. package/reference/rtl-cjk-cultural.md +39 -39
  313. package/reference/runtime-models.md +28 -28
  314. package/reference/shared-preamble.md +26 -26
  315. package/reference/skill-authoring-contract.md +16 -16
  316. package/reference/skill-placeholders.md +71 -0
  317. package/reference/start-interview.md +10 -10
  318. package/reference/style-vocabulary.md +25 -25
  319. package/reference/surfaces.md +4 -4
  320. package/reference/ticket-sync.md +9 -9
  321. package/reference/typography.md +64 -64
  322. package/reference/user-research.md +54 -54
  323. package/reference/variable-fonts-loading.md +15 -15
  324. package/reference/visual-hierarchy-layout.md +41 -41
  325. package/scripts/lib/build/factory.cjs +62 -0
  326. package/scripts/lib/build/harness-configs.cjs +64 -0
  327. package/scripts/lib/manifest/prose-denylist.json +1 -1
  328. package/sdk/cli/commands/build.ts +106 -0
  329. package/sdk/cli/index.js +84 -2
  330. package/sdk/cli/index.ts +7 -0
  331. package/skills/add-backlog/SKILL.md +3 -3
  332. package/skills/analyze-dependencies/SKILL.md +10 -10
  333. package/skills/apply-reflections/SKILL.md +13 -13
  334. package/skills/apply-reflections/apply-reflections-procedure.md +20 -20
  335. package/skills/audit/SKILL.md +7 -7
  336. package/skills/bandit-status/SKILL.md +7 -7
  337. package/skills/benchmark/SKILL.md +7 -7
  338. package/skills/bootstrap-ds/SKILL.md +10 -10
  339. package/skills/brief/SKILL.md +20 -20
  340. package/skills/budget/SKILL.md +4 -4
  341. package/skills/cache-manager/SKILL.md +6 -6
  342. package/skills/cache-manager/cache-policy.md +5 -5
  343. package/skills/check-update/SKILL.md +5 -5
  344. package/skills/compare/SKILL.md +15 -15
  345. package/skills/compare/compare-rubric.md +17 -17
  346. package/skills/complete-cycle/SKILL.md +5 -5
  347. package/skills/connections/SKILL.md +11 -11
  348. package/skills/connections/connections-onboarding.md +76 -76
  349. package/skills/continue/SKILL.md +2 -2
  350. package/skills/darkmode/SKILL.md +17 -17
  351. package/skills/darkmode/darkmode-audit-procedure.md +7 -7
  352. package/skills/debug/SKILL.md +3 -3
  353. package/skills/debug/debug-feedback-loops.md +12 -12
  354. package/skills/design/SKILL.md +12 -12
  355. package/skills/design/design-procedure.md +23 -23
  356. package/skills/discover/SKILL.md +7 -7
  357. package/skills/discover/discover-procedure.md +18 -18
  358. package/skills/discuss/SKILL.md +12 -12
  359. package/skills/do/SKILL.md +1 -1
  360. package/skills/explore/SKILL.md +21 -21
  361. package/skills/explore/explore-procedure.md +48 -48
  362. package/skills/export/SKILL.md +9 -9
  363. package/skills/extract-learnings/SKILL.md +5 -5
  364. package/skills/fast/SKILL.md +7 -7
  365. package/skills/figma-extract/SKILL.md +11 -11
  366. package/skills/figma-write/SKILL.md +6 -6
  367. package/skills/graphify/SKILL.md +4 -4
  368. package/skills/health/SKILL.md +16 -16
  369. package/skills/health/health-mcp-detection.md +3 -3
  370. package/skills/health/health-skill-length-report.md +6 -6
  371. package/skills/help/SKILL.md +1 -1
  372. package/skills/list-assumptions/SKILL.md +4 -4
  373. package/skills/map/SKILL.md +12 -12
  374. package/skills/migrate/SKILL.md +5 -5
  375. package/skills/new-cycle/SKILL.md +2 -2
  376. package/skills/new-cycle/milestone-completeness-rubric.md +16 -16
  377. package/skills/new-project/SKILL.md +1 -1
  378. package/skills/next/SKILL.md +5 -5
  379. package/skills/note/SKILL.md +1 -1
  380. package/skills/openrouter-status/SKILL.md +4 -4
  381. package/skills/optimize/SKILL.md +15 -15
  382. package/skills/pause/SKILL.md +5 -5
  383. package/skills/peer-cli-add/SKILL.md +11 -11
  384. package/skills/peer-cli-add/peer-cli-protocol.md +39 -39
  385. package/skills/peer-cli-customize/SKILL.md +14 -14
  386. package/skills/peers/SKILL.md +4 -4
  387. package/skills/plan/SKILL.md +13 -13
  388. package/skills/plan/plan-procedure.md +24 -24
  389. package/skills/plant-seed/SKILL.md +4 -4
  390. package/skills/pr-branch/SKILL.md +2 -2
  391. package/skills/progress/SKILL.md +15 -15
  392. package/skills/quality-gate/SKILL.md +22 -22
  393. package/skills/quality-gate/threat-modeling.md +19 -19
  394. package/skills/quick/SKILL.md +5 -5
  395. package/skills/reapply-patches/SKILL.md +7 -7
  396. package/skills/reflect/SKILL.md +3 -3
  397. package/skills/reflect/procedures/capability-gap-scan.md +11 -11
  398. package/skills/report-issue/SKILL.md +5 -5
  399. package/skills/report-issue/report-issue-procedure.md +27 -27
  400. package/skills/resume/SKILL.md +9 -9
  401. package/skills/review-backlog/SKILL.md +3 -3
  402. package/skills/review-decisions/SKILL.md +3 -3
  403. package/skills/roi/SKILL.md +5 -5
  404. package/skills/rollout-status/SKILL.md +4 -4
  405. package/skills/router/SKILL.md +11 -11
  406. package/skills/router/capability-gap-emitter.md +6 -6
  407. package/skills/router/router-pick-emitter.md +9 -9
  408. package/skills/router/router-rules.md +7 -7
  409. package/skills/scan/SKILL.md +16 -16
  410. package/skills/scan/scan-procedure.md +42 -42
  411. package/skills/settings/SKILL.md +2 -2
  412. package/skills/ship/SKILL.md +7 -7
  413. package/skills/sketch/SKILL.md +10 -10
  414. package/skills/sketch-wrap-up/SKILL.md +12 -12
  415. package/skills/skill-manifest/SKILL.md +5 -5
  416. package/skills/spike/SKILL.md +7 -7
  417. package/skills/spike-wrap-up/SKILL.md +13 -13
  418. package/skills/start/SKILL.md +8 -8
  419. package/skills/start/start-procedure.md +9 -9
  420. package/skills/stats/SKILL.md +5 -5
  421. package/skills/style/SKILL.md +12 -12
  422. package/skills/style/style-doc-procedure.md +12 -12
  423. package/skills/synthesize/SKILL.md +10 -10
  424. package/skills/timeline/SKILL.md +4 -4
  425. package/skills/todo/SKILL.md +3 -3
  426. package/skills/turn-closeout/SKILL.md +10 -10
  427. package/skills/unlock-decision/SKILL.md +3 -3
  428. package/skills/update/SKILL.md +9 -9
  429. package/skills/using-gdd/SKILL.md +17 -17
  430. package/skills/verify/SKILL.md +13 -13
  431. package/skills/verify/verify-procedure.md +34 -34
  432. package/skills/warm-cache/SKILL.md +8 -8
  433. package/skills/watch-authorities/SKILL.md +9 -9
  434. package/skills/zoom-out/SKILL.md +4 -4
@@ -1,4 +1,4 @@
1
- # Badge Benchmark Spec
1
+ # Badge - Benchmark Spec
2
2
 
3
3
  **Harvested from**: Material 3, Polaris, Carbon, Radix
4
4
  **Wave**: 3 · **Category**: Feedback
@@ -7,7 +7,7 @@
7
7
 
8
8
  ## Purpose
9
9
 
10
- A badge is a compact numeric counter or status indicator overlaid on or beside a parent element (icon, avatar, button) to communicate a count (unread messages, notification count) or status (online, offline, busy). It is purely decorative the accessible count or status is surfaced through the parent element's `aria-label`. *(Material 3, Polaris, Carbon, Radix agree: badge is decorative; parent carries accessible state)*
10
+ A badge is a compact numeric counter or status indicator overlaid on or beside a parent element (icon, avatar, button) to communicate a count (unread messages, notification count) or status (online, offline, busy). It is purely decorative - the accessible count or status is surfaced through the parent element's `aria-label`. *(Material 3, Polaris, Carbon, Radix agree: badge is decorative; parent carries accessible state)*
11
11
 
12
12
  ---
13
13
 
@@ -36,7 +36,7 @@ A badge is a compact numeric counter or status indicator overlaid on or beside a
36
36
  | Badge element | Yes | Pill or circle shape containing count or dot |
37
37
  | Count / label text | Conditional | Present for count/icon variants; absent for dot |
38
38
  | Parent element | Yes (for attached) | Carries `aria-label` with accessible count |
39
- | Dot indicator | No | Status dot variant no number, pure color/shape |
39
+ | Dot indicator | No | Status dot variant - no number, pure color/shape |
40
40
 
41
41
  ---
42
42
 
@@ -70,7 +70,7 @@ A badge is a compact numeric counter or status indicator overlaid on or beside a
70
70
  |---------|-----------|-----------|-----------|-------|
71
71
  | Count (sm) | 16px | 16px (= height) | 10px/500 | Single digit fills circle |
72
72
  | Count (md) | 20px | 20px (= height) | 12px/500 | Two-digit + "99+" |
73
- | Dot | 8px | 8px | | No text; absolute top-right |
73
+ | Dot | 8px | 8px | - | No text; absolute top-right |
74
74
 
75
75
  - **Shape**: pill when width > height; circle when width = height (single digit)
76
76
  - **Position** (attached): `position: absolute; top: -4px; right: -4px` relative to parent
@@ -82,11 +82,11 @@ A badge is a compact numeric counter or status indicator overlaid on or beside a
82
82
 
83
83
  ## Typography
84
84
 
85
- - Count text: 10–12px / 500 (medium weight) legible at small scale
85
+ - Count text: 10–12px / 500 (medium weight) - legible at small scale
86
86
  - No wrapping; never truncate count text; use "99+" cap instead
87
- - Letter-spacing: 0 tight spacing at 10–12px scale
87
+ - Letter-spacing: 0 - tight spacing at 10–12px scale
88
88
 
89
- Cross-link: `reference/typography.md` small label scale (10–12px)
89
+ Cross-link: `reference/typography.md` - small label scale (10–12px)
90
90
 
91
91
  ---
92
92
 
@@ -97,7 +97,7 @@ Cross-link: `reference/typography.md` — small label scale (10–12px)
97
97
 
98
98
  ### Keyboard Contract
99
99
 
100
- *Quoted verbatim from WAI-ARIA APG https://www.w3.org/WAI/ARIA/apg/ W3C 2024*
100
+ *Quoted verbatim from WAI-ARIA APG - https://www.w3.org/WAI/ARIA/apg/ - W3C - 2024*
101
101
 
102
102
  | Key | Action |
103
103
  |-----|--------|
@@ -107,14 +107,14 @@ Badge never receives focus. It is a purely visual overlay. All keyboard interact
107
107
 
108
108
  ### Accessibility Rules
109
109
 
110
- - Badge element itself MUST have `aria-hidden="true"` screen readers should not announce the badge number separately; they read it as part of the parent's `aria-label`
110
+ - Badge element itself MUST have `aria-hidden="true"` - screen readers should not announce the badge number separately; they read it as part of the parent's `aria-label`
111
111
  - Parent element MUST have an `aria-label` that includes the count: `aria-label="Messages, 3 unread"` *(WAI-ARIA APG, Material 3)*
112
- - Parent `aria-label` MUST be updated dynamically when count changes use `aria-live` on the parent if the count changes while the page is rendered *(WCAG 4.1.3)*
113
- - Zero badge: if badge is hidden at zero, remove it from DOM (or `display: none`) do NOT leave it with empty text in the DOM *(Polaris)*
112
+ - Parent `aria-label` MUST be updated dynamically when count changes - use `aria-live` on the parent if the count changes while the page is rendered *(WCAG 4.1.3)*
113
+ - Zero badge: if badge is hidden at zero, remove it from DOM (or `display: none`) - do NOT leave it with empty text in the DOM *(Polaris)*
114
114
  - Dot variant: parent `aria-label` MUST include the status: `aria-label="User profile, status: online"` *(Radix)*
115
- - Never rely on badge color alone to communicate status include text in parent `aria-label` *(WCAG 1.4.1)*
115
+ - Never rely on badge color alone to communicate status - include text in parent `aria-label` *(WCAG 1.4.1)*
116
116
 
117
- Cross-link: `reference/accessibility.md` dynamic label updates, aria-live
117
+ Cross-link: `reference/accessibility.md` - dynamic label updates, aria-live
118
118
 
119
119
  ---
120
120
 
@@ -126,9 +126,9 @@ Cross-link: `reference/accessibility.md` — dynamic label updates, aria-live
126
126
  | Badge appear | 100ms | ease-out | Fade + scale from 0.5 |
127
127
  | Badge disappear (at zero) | 80ms | ease-in | Fade + scale to 0 |
128
128
 
129
- **BAN**: Continuous bounce animation on badge implies urgency and is distracting; one-shot pulse on value change is acceptable.
129
+ **BAN**: Continuous bounce animation on badge - implies urgency and is distracting; one-shot pulse on value change is acceptable.
130
130
 
131
- Cross-link: `reference/motion.md` scale-in/scale-out; `prefers-reduced-motion`: skip all badge animation
131
+ Cross-link: `reference/motion.md` - scale-in/scale-out; `prefers-reduced-motion`: skip all badge animation
132
132
 
133
133
  ---
134
134
 
@@ -142,9 +142,9 @@ Cross-link: `reference/motion.md` — scale-in/scale-out; `prefers-reduced-motio
142
142
 
143
143
  ### Don't
144
144
  - Don't surface badge count only through color (dot badge without parent label) *(WCAG 1.4.1)*
145
- - Don't put interactive content in a badge it is always decorative *(Material 3, Carbon)*
146
- - Don't animate badge continuously one-shot pulse on value change only *(Polaris)*
147
- - Don't use badge text as the only accessible notification always update parent `aria-label` *(WAI-ARIA APG)*
145
+ - Don't put interactive content in a badge - it is always decorative *(Material 3, Carbon)*
146
+ - Don't animate badge continuously - one-shot pulse on value change only *(Polaris)*
147
+ - Don't use badge text as the only accessible notification - always update parent `aria-label` *(WAI-ARIA APG)*
148
148
 
149
149
  ---
150
150
 
@@ -1,4 +1,4 @@
1
- # Breadcrumbs Benchmark Spec
1
+ # Breadcrumbs - Benchmark Spec
2
2
 
3
3
  **Harvested from**: WAI-ARIA APG, Carbon, Polaris, Material 3, Atlassian
4
4
  **Wave**: 4 · **Category**: Navigation
@@ -7,7 +7,7 @@
7
7
 
8
8
  ## Purpose
9
9
 
10
- A breadcrumb trail shows a user's location within a hierarchical navigation structure, providing a supplemental path back to any ancestor page. It is not primary navigation the current page is always the last item and is never a link. Breadcrumbs are most valuable in deep hierarchies (> 2 levels) and information-dense applications. *(WAI-ARIA APG breadcrumb pattern, Carbon, Polaris, Material 3, Atlassian all define breadcrumb as a supplemental location indicator)*
10
+ A breadcrumb trail shows a user's location within a hierarchical navigation structure, providing a supplemental path back to any ancestor page. It is not primary navigation - the current page is always the last item and is never a link. Breadcrumbs are most valuable in deep hierarchies (> 2 levels) and information-dense applications. *(WAI-ARIA APG breadcrumb pattern, Carbon, Polaris, Material 3, Atlassian all define breadcrumb as a supplemental location indicator)*
11
11
 
12
12
  ---
13
13
 
@@ -26,7 +26,7 @@ A breadcrumb trail shows a user's location within a hierarchical navigation stru
26
26
  | Part | Required | Notes |
27
27
  |------|----------|-------|
28
28
  | `<nav>` container | Yes | `role="navigation"` + `aria-label="Breadcrumb"` |
29
- | `<ol>` list | Yes | Ordered list sequence matters |
29
+ | `<ol>` list | Yes | Ordered list - sequence matters |
30
30
  | `<li>` items | Yes | One per level in the path |
31
31
  | Ancestor links | Yes | `<a href>` pointing to each ancestor URL |
32
32
  | Current page | Yes | Plain text `<span>` (not a link) + `aria-current="page"` |
@@ -45,7 +45,7 @@ A breadcrumb trail shows a user's location within a hierarchical navigation stru
45
45
  | Large / heading-inline | Larger type, sits beside or below a page title | Polaris, Atlassian |
46
46
 
47
47
  **Norm** (≥4 systems agree): separator is `aria-hidden`; current page uses `aria-current="page"`; last item is never a link.
48
- **Diverge**: Polaris uses `>` as separator; Carbon uses `/`; Material 3 uses `›` (chevron). All are acceptable choose to match your product's visual language.
48
+ **Diverge**: Polaris uses `>` as separator; Carbon uses `/`; Material 3 uses `›` (chevron). All are acceptable - choose to match your product's visual language.
49
49
 
50
50
  ---
51
51
 
@@ -53,10 +53,10 @@ A breadcrumb trail shows a user's location within a hierarchical navigation stru
53
53
 
54
54
  | State | Trigger | Visual | ARIA |
55
55
  |-------|---------|--------|------|
56
- | default | | Ancestor links + muted separator + current page text | |
57
- | link-hover | pointer over ancestor | Underline or color shift | |
58
- | link-focus | keyboard focus on ancestor | 2px focus-visible ring | |
59
- | current | | No underline; muted or bold treatment; not clickable | `aria-current="page"` |
56
+ | default | - | Ancestor links + muted separator + current page text | - |
57
+ | link-hover | pointer over ancestor | Underline or color shift | - |
58
+ | link-focus | keyboard focus on ancestor | 2px focus-visible ring | - |
59
+ | current | - | No underline; muted or bold treatment; not clickable | `aria-current="page"` |
60
60
  | truncated | path > 4 levels | Middle items hidden; "…" button shown | `aria-label="Show full path"` on ellipsis button |
61
61
 
62
62
  ---
@@ -80,9 +80,9 @@ A breadcrumb trail shows a user's location within a hierarchical navigation stru
80
80
  - Ancestor links: body-sm, weight 400, `color: --text-link`; underline on hover
81
81
  - Current page: body-sm, weight 500 or 600 (bold for emphasis), `color: --text-primary`; no underline
82
82
  - Separator: body-sm, `color: --text-subtle`, `aria-hidden="true"`
83
- - Do not use uppercase or letter-spacing on breadcrumb items they should read as natural path segments
83
+ - Do not use uppercase or letter-spacing on breadcrumb items - they should read as natural path segments
84
84
 
85
- Cross-link: `reference/typography.md` body-sm, link color tokens
85
+ Cross-link: `reference/typography.md` - body-sm, link color tokens
86
86
 
87
87
  ---
88
88
 
@@ -93,7 +93,7 @@ Cross-link: `reference/typography.md` — body-sm, link color tokens
93
93
 
94
94
  ### Keyboard Contract
95
95
 
96
- *Quoted verbatim from WAI-ARIA APG https://www.w3.org/WAI/ARIA/apg/patterns/breadcrumb/ W3C 2024*
96
+ *Quoted verbatim from WAI-ARIA APG - https://www.w3.org/WAI/ARIA/apg/patterns/breadcrumb/ - W3C - 2024*
97
97
 
98
98
  | Key | Action |
99
99
  |-----|--------|
@@ -103,13 +103,13 @@ Cross-link: `reference/typography.md` — body-sm, link color tokens
103
103
 
104
104
  ### Accessibility Rules
105
105
 
106
- - `aria-current="page"` MUST be on the last item (current page) this is the primary AT signal
107
- - Separators MUST be `aria-hidden="true"` screen readers should announce "Home, Products, Widget Pro" not "Home › Products › Widget Pro"
108
- - The current page item MUST NOT be a link it is the user's current location
106
+ - `aria-current="page"` MUST be on the last item (current page) - this is the primary AT signal
107
+ - Separators MUST be `aria-hidden="true"` - screen readers should announce "Home, Products, Widget Pro" not "Home › Products › Widget Pro"
108
+ - The current page item MUST NOT be a link - it is the user's current location
109
109
  - `<ol>` conveys that order matters; do not use `<ul>` or a `<div>` list
110
110
  - `aria-label="Breadcrumb"` distinguishes this nav from primary/secondary navigation landmarks
111
111
 
112
- Cross-link: `reference/accessibility.md` aria-current, landmark labelling
112
+ Cross-link: `reference/accessibility.md` - aria-current, landmark labelling
113
113
 
114
114
  ---
115
115
 
@@ -120,25 +120,25 @@ Cross-link: `reference/accessibility.md` — aria-current, landmark labelling
120
120
  | Ellipsis expand | 150ms | ease-out | Reveal hidden items inline |
121
121
  | Ellipsis collapse | 120ms | ease-in | Hide middle items |
122
122
 
123
- **BAN**: Do not animate the breadcrumb trail on route change route transitions are the page's responsibility, not the breadcrumb's.
123
+ **BAN**: Do not animate the breadcrumb trail on route change - route transitions are the page's responsibility, not the breadcrumb's.
124
124
 
125
- Cross-link: `reference/motion.md` layout transitions
125
+ Cross-link: `reference/motion.md` - layout transitions
126
126
 
127
127
  ---
128
128
 
129
129
  ## Do / Don't
130
130
 
131
131
  ### Do
132
- - Use `<ol>` for the list order is meaningful in a hierarchical path *(WAI-ARIA APG)*
133
- - Mark the current page with `aria-current="page"` not just a CSS class *(WAI-ARIA APG, Atlassian)*
132
+ - Use `<ol>` for the list - order is meaningful in a hierarchical path *(WAI-ARIA APG)*
133
+ - Mark the current page with `aria-current="page"` - not just a CSS class *(WAI-ARIA APG, Atlassian)*
134
134
  - Hide separators with `aria-hidden="true"` *(WAI-ARIA APG, Carbon, Polaris)*
135
135
  - Truncate middle items (not first/last) when path exceeds 4 levels *(Carbon, Polaris, Atlassian)*
136
136
 
137
137
  ### Don't
138
- - Don't make the current page item a link it creates a circular self-referential link *(WAI-ARIA APG)*
139
- - Don't include separator text inside link labels `aria-hidden` the separator element, not the link *(WAI-ARIA APG)*
140
- - Don't use breadcrumbs as the only navigation method they supplement; primary nav is required *(Material 3, Polaris)*
141
- - Don't truncate the root or current page items users need anchoring context at both ends *(Carbon, Atlassian)*
138
+ - Don't make the current page item a link - it creates a circular self-referential link *(WAI-ARIA APG)*
139
+ - Don't include separator text inside link labels - `aria-hidden` the separator element, not the link *(WAI-ARIA APG)*
140
+ - Don't use breadcrumbs as the only navigation method - they supplement; primary nav is required *(Material 3, Polaris)*
141
+ - Don't truncate the root or current page items - users need anchoring context at both ends *(Carbon, Atlassian)*
142
142
 
143
143
  ---
144
144
 
@@ -146,7 +146,7 @@ Cross-link: `reference/motion.md` — layout transitions
146
146
 
147
147
  | Anti-pattern | Entry |
148
148
  |--------------|-------|
149
- | BAN-07 | Missing `aria-current` on active navigation items `reference/anti-patterns.md#ban-07` |
149
+ | BAN-07 | Missing `aria-current` on active navigation items - `reference/anti-patterns.md#ban-07` |
150
150
 
151
151
  ---
152
152
 
@@ -1,4 +1,4 @@
1
- # Button Benchmark Spec
1
+ # Button - Benchmark Spec
2
2
 
3
3
  **Harvested from**: Material 3, Polaris, Carbon, Fluent 2, Radix, shadcn/ui, Primer, Atlassian
4
4
  **Wave**: 1 · **Category**: Inputs
@@ -7,7 +7,7 @@
7
7
 
8
8
  ## Purpose
9
9
 
10
- A button triggers a discrete action in the current context submitting a form, opening a dialog, executing a command. It is not a navigation element (use Link for href-based navigation). Buttons have an explicit visual affordance of clickability and must communicate their current state (loading, disabled) clearly. *(Material 3, Carbon, Polaris agree: button = action trigger, not navigation)*
10
+ A button triggers a discrete action in the current context - submitting a form, opening a dialog, executing a command. It is not a navigation element (use Link for href-based navigation). Buttons have an explicit visual affordance of clickability and must communicate their current state (loading, disabled) clearly. *(Material 3, Carbon, Polaris agree: button = action trigger, not navigation)*
11
11
 
12
12
  ---
13
13
 
@@ -42,7 +42,7 @@ A button triggers a discrete action in the current context — submitting a form
42
42
  | Link-style | Looks like link, behaves as button | Carbon, Primer |
43
43
 
44
44
  **Norm** (≥6/18 systems agree): primary/secondary/ghost hierarchy; one primary per viewport section.
45
- **Diverge**: "tertiary" naming (Material 3) vs. "ghost" (Carbon) vs. "plain" (Polaris) same visual intent, different labels.
45
+ **Diverge**: "tertiary" naming (Material 3) vs. "ghost" (Carbon) vs. "plain" (Polaris) - same visual intent, different labels.
46
46
 
47
47
  ---
48
48
 
@@ -50,15 +50,15 @@ A button triggers a discrete action in the current context — submitting a form
50
50
 
51
51
  | State | Trigger | Visual | ARIA |
52
52
  |-------|---------|--------|------|
53
- | default | | Resting fill/border | |
54
- | hover | pointer over | 8% overlay (light) / 8% overlay (dark) | |
55
- | focus | keyboard focus | 2px focus-visible ring, 2px offset | |
56
- | active / pressed | mousedown / Space / Enter | 12% overlay; scale 0.96 | |
53
+ | default | - | Resting fill/border | - |
54
+ | hover | pointer over | 8% overlay (light) / 8% overlay (dark) | - |
55
+ | focus | keyboard focus | 2px focus-visible ring, 2px offset | - |
56
+ | active / pressed | mousedown / Space / Enter | 12% overlay; scale 0.96 | - |
57
57
  | disabled | `disabled` attr | 38% opacity; cursor: not-allowed | `disabled` attr |
58
58
  | loading | async action in flight | Spinner, `aria-busy="true"` | `aria-busy="true"` |
59
59
 
60
60
  **Norm**: 96% scale on press (Material 3, shadcn, Carbon confirm). 38% opacity for disabled (Material 3 spec).
61
- **Diverge**: hover overlay vs. background tint systems use either approach; overlay is more theme-portable.
61
+ **Diverge**: hover overlay vs. background tint - systems use either approach; overlay is more theme-portable.
62
62
 
63
63
  ---
64
64
 
@@ -71,17 +71,17 @@ A button triggers a discrete action in the current context — submitting a form
71
71
  | lg | 48px | 24px | 96px | 16px/500 |
72
72
 
73
73
  **Norm**: 40px default height (Carbon, Polaris, Fluent all confirm). Min-width prevents single-character buttons.
74
- Cross-link: `reference/surfaces.md` hit-area rule (minimum 44×44px accessible tap target via padding, not height).
74
+ Cross-link: `reference/surfaces.md` - hit-area rule (minimum 44×44px accessible tap target via padding, not height).
75
75
 
76
76
  ---
77
77
 
78
78
  ## Typography
79
79
 
80
- - Weight: 500 (medium) not bold; distinguishes from body text without being heavy *(Material 3, Carbon)*
80
+ - Weight: 500 (medium) - not bold; distinguishes from body text without being heavy *(Material 3, Carbon)*
81
81
  - Letter-spacing: +0.01em for sm/md, 0 for lg
82
- - No text truncation resize button or use icon-only variant; truncated button labels break affordance
82
+ - No text truncation - resize button or use icon-only variant; truncated button labels break affordance
83
83
 
84
- Cross-link: `reference/typography.md` tabular-nums rule (use on loading counters, not labels)
84
+ Cross-link: `reference/typography.md` - tabular-nums rule (use on loading counters, not labels)
85
85
 
86
86
  ---
87
87
 
@@ -92,7 +92,7 @@ Cross-link: `reference/typography.md` — tabular-nums rule (use on loading coun
92
92
 
93
93
  ### Keyboard Contract
94
94
 
95
- *Quoted verbatim from WAI-ARIA APG https://www.w3.org/WAI/ARIA/apg/patterns/button/ W3C 2024*
95
+ *Quoted verbatim from WAI-ARIA APG - https://www.w3.org/WAI/ARIA/apg/patterns/button/ - W3C - 2024*
96
96
 
97
97
  | Key | Action |
98
98
  |-----|--------|
@@ -101,7 +101,7 @@ Cross-link: `reference/typography.md` — tabular-nums rule (use on loading coun
101
101
 
102
102
  ### Accessibility Rules
103
103
 
104
- - Icon-only buttons MUST have `aria-label` or `aria-labelledby` a tooltip is not a substitute
104
+ - Icon-only buttons MUST have `aria-label` or `aria-labelledby` - a tooltip is not a substitute
105
105
  - Loading state: set `aria-busy="true"` and disable pointer events; announce completion via `aria-live`
106
106
  - Disabled: use native `disabled` attribute (not `aria-disabled`) unless button must remain focusable for tooltip explanation
107
107
  - Never use `<div>` or `<a>` as a button trigger without `role="button"` and keyboard handlers
@@ -119,9 +119,9 @@ Cross-link: `reference/accessibility.md`
119
119
  | press scale (0.96) | 80ms | ease-in | Immediate tactile feedback |
120
120
  | loading spinner in | 150ms | ease-out | Replaces or overlays label |
121
121
 
122
- **BAN**: `transition: all` catches width change on loading and causes layout jank.
122
+ **BAN**: `transition: all` - catches width change on loading and causes layout jank.
123
123
 
124
- Cross-link: `reference/motion.md` canonical scale-on-press 0.96, BAN-04 (`transition: all`)
124
+ Cross-link: `reference/motion.md` - canonical scale-on-press 0.96, BAN-04 (`transition: all`)
125
125
 
126
126
  ---
127
127
 
@@ -134,10 +134,10 @@ Cross-link: `reference/motion.md` — canonical scale-on-press 0.96, BAN-04 (`tr
134
134
  - Maintain 8px minimum spacing between adjacent buttons *(Carbon, Fluent)*
135
135
 
136
136
  ### Don't
137
- - Don't use a button for navigation to another page use `<a href>` (Link) *(Carbon, Primer)*
138
- - Don't disable a button without explaining why prefer showing error state after submission *(Polaris)*
139
- - Don't use "Click here" or "Submit" as labels be specific about the action *(Polaris, Carbon)*
140
- - Don't truncate button labels buttons must fit their content *(Fluent, Atlassian)*
137
+ - Don't use a button for navigation to another page - use `<a href>` (Link) *(Carbon, Primer)*
138
+ - Don't disable a button without explaining why - prefer showing error state after submission *(Polaris)*
139
+ - Don't use "Click here" or "Submit" as labels - be specific about the action *(Polaris, Carbon)*
140
+ - Don't truncate button labels - buttons must fit their content *(Fluent, Atlassian)*
141
141
 
142
142
  ---
143
143
 
@@ -145,7 +145,7 @@ Cross-link: `reference/motion.md` — canonical scale-on-press 0.96, BAN-04 (`tr
145
145
 
146
146
  | Anti-pattern | Entry |
147
147
  |--------------|-------|
148
- | BAN-04 | `transition: all` on interactive elements `reference/anti-patterns.md#ban-04` |
148
+ | BAN-04 | `transition: all` on interactive elements - `reference/anti-patterns.md#ban-04` |
149
149
 
150
150
  ---
151
151
 
@@ -1,4 +1,4 @@
1
- # Card Benchmark Spec
1
+ # Card - Benchmark Spec
2
2
 
3
3
  **Harvested from**: Material 3, Polaris, Carbon, Atlassian, Mantine, shadcn/ui, Ant Design, Fluent 2
4
4
  **Wave**: 2 · **Category**: Containers
@@ -7,7 +7,7 @@
7
7
 
8
8
  ## Purpose
9
9
 
10
- A card is a contained surface that groups related information and actions. It is a visual container, not a navigation element by default only make the entire card clickable when the primary action is navigation and there is a single dominant action. Mixed-content cards with multiple actions should not be entirely clickable. *(Material 3, Polaris, Carbon all agree on this boundary)*
10
+ A card is a contained surface that groups related information and actions. It is a visual container, not a navigation element by default - only make the entire card clickable when the primary action is navigation and there is a single dominant action. Mixed-content cards with multiple actions should not be entirely clickable. *(Material 3, Polaris, Carbon all agree on this boundary)*
11
11
 
12
12
  ---
13
13
 
@@ -48,7 +48,7 @@ A card is a contained surface that groups related information and actions. It is
48
48
  | Compact | Dense layout; no media | Carbon, Fluent |
49
49
 
50
50
  **Norm** (≥5/18): outlined or elevated; ≤2 actions per card.
51
- **Diverge**: elevation vs. outline both are valid; use elevated for content that needs to float (dashboards), outlined for dense lists (tables of cards).
51
+ **Diverge**: elevation vs. outline - both are valid; use elevated for content that needs to float (dashboards), outlined for dense lists (tables of cards).
52
52
 
53
53
  ---
54
54
 
@@ -56,10 +56,10 @@ A card is a contained surface that groups related information and actions. It is
56
56
 
57
57
  | State | Trigger | Visual | ARIA/HTML |
58
58
  |-------|---------|--------|-----------|
59
- | default | | Resting surface | |
60
- | hover (clickable) | pointer | Shadow deepens or border darkens | |
61
- | focus (clickable) | keyboard | 2px focus ring on outer card | |
62
- | active (clickable) | mousedown | Scale 0.99 | |
59
+ | default | - | Resting surface | - |
60
+ | hover (clickable) | pointer | Shadow deepens or border darkens | - |
61
+ | focus (clickable) | keyboard | 2px focus ring on outer card | - |
62
+ | active (clickable) | mousedown | Scale 0.99 | - |
63
63
  | selected | programmatic | Border + background tint | `aria-selected="true"` |
64
64
  | loading | async content | Skeleton placeholder | `aria-busy="true"` |
65
65
  | disabled | programmatic | 38% opacity | `aria-disabled="true"` |
@@ -77,7 +77,7 @@ A card is a contained surface that groups related information and actions. It is
77
77
  | Max width | 480px (typical) | Grid controls actual width; max-width is a guideline |
78
78
  | Gap between cards | 16px (sm grid), 24px (md grid) | |
79
79
 
80
- Cross-link: `reference/surfaces.md` concentric radius, 3-layer shadow formula, elevation tokens
80
+ Cross-link: `reference/surfaces.md` - concentric radius, 3-layer shadow formula, elevation tokens
81
81
 
82
82
  ---
83
83
 
@@ -96,14 +96,14 @@ Cross-link: `reference/surfaces.md` — concentric radius, 3-layer shadow formul
96
96
 
97
97
  ### Clickable Card Rules
98
98
 
99
- *Per WAI-ARIA APG link + button patterns W3C 2024*
99
+ *Per WAI-ARIA APG link + button patterns - W3C - 2024*
100
100
 
101
101
  | Invocation | Element | Key |
102
102
  |------------|---------|-----|
103
103
  | Navigate to new page | `<a href>` wrapping or inside card | Enter |
104
104
  | Trigger action in context | `<button>` wrapping or inside card | Enter, Space |
105
105
 
106
- - **Do not wrap an entire card in `<a>` if it contains other interactive elements** (links, buttons inside) nested interactive elements are inaccessible by keyboard
106
+ - **Do not wrap an entire card in `<a>` if it contains other interactive elements** (links, buttons inside) - nested interactive elements are inaccessible by keyboard
107
107
  - Use the "card with primary action + secondary actions" pattern: one `<a>` stretched via `::after` pseudo-element to fill the card; secondary action buttons sit above in stacking context
108
108
 
109
109
  ### Accessibility Rules
@@ -123,7 +123,7 @@ Cross-link: `reference/surfaces.md` — concentric radius, 3-layer shadow formul
123
123
  | press scale | 80ms | ease | 1→0.99 (subtle; card is large) |
124
124
  | skeleton shimmer | 1.5s | linear loop | Respect `prefers-reduced-motion` |
125
125
 
126
- Cross-link: `reference/motion.md` Skeleton shimmer pattern, `prefers-reduced-motion`
126
+ Cross-link: `reference/motion.md` - Skeleton shimmer pattern, `prefers-reduced-motion`
127
127
 
128
128
  ---
129
129
 
@@ -139,7 +139,7 @@ Cross-link: `reference/motion.md` — Skeleton shimmer pattern, `prefers-reduced
139
139
  - Don't wrap the entire card in `<a>` if it contains other interactive elements *(WAI-ARIA APG)*
140
140
  - Don't use `<div>` as a clickable card without `role="button"` or `role="link"` + keyboard handler *(WAI-ARIA APG)*
141
141
  - Don't place the entire card title in a plain `<span>` when it could be `<h2>/<h3>` *(Atlassian, Carbon)*
142
- - Don't use more than 2 primary actions per card extract to a detail view *(Material 3, Polaris)*
142
+ - Don't use more than 2 primary actions per card - extract to a detail view *(Material 3, Polaris)*
143
143
 
144
144
  ---
145
145
 
@@ -197,4 +197,4 @@ grep -rn 'class.*card' src/ | xargs grep -L 'h[1-6]\|aria-label' 2>/dev/null
197
197
 
198
198
  **Why it fails**: Nested `<button>` inside `<a>` is invalid HTML. Keyboard users pressing Tab inside the link may reach the button, but Enter on the button may also trigger the link. Screen reader behavior is unpredictable.
199
199
  **Grep detection**: `grep -rn '<a.*href' src/ | xargs grep -l '<button' 2>/dev/null`
200
- **Fix**: Use the stretched-link pattern `<h3><a href="/product/42">Product Name</a></h3>` with `::after { position: absolute; inset: 0; }` on the `<a>`, and position the "Add to cart" button above via `position: relative; z-index: 1`.
200
+ **Fix**: Use the stretched-link pattern - `<h3><a href="/product/42">Product Name</a></h3>` with `::after { position: absolute; inset: 0; }` on the `<a>`, and position the "Add to cart" button above via `position: relative; z-index: 1`.
@@ -1,4 +1,4 @@
1
- # Checkbox Benchmark Spec
1
+ # Checkbox - Benchmark Spec
2
2
 
3
3
  **Harvested from**: Material 3, Carbon, Polaris, Ant Design, WAI-ARIA APG, Mantine, Chakra UI, Atlassian
4
4
  **Wave**: 1 · **Category**: Inputs
@@ -7,7 +7,7 @@
7
7
 
8
8
  ## Purpose
9
9
 
10
- A checkbox allows the user to select or deselect a binary option, or to represent an indeterminate state (partially selected group). Checkboxes are independent selecting one does not affect others. Use radio buttons for mutually exclusive choices within a group. Always group related checkboxes in a `<fieldset>` with a `<legend>`.
10
+ A checkbox allows the user to select or deselect a binary option, or to represent an indeterminate state (partially selected group). Checkboxes are independent - selecting one does not affect others. Use radio buttons for mutually exclusive choices within a group. Always group related checkboxes in a `<fieldset>` with a `<legend>`.
11
11
 
12
12
  ---
13
13
 
@@ -31,7 +31,7 @@ Group:
31
31
  | Part | Required | Notes |
32
32
  |------|----------|-------|
33
33
  | Input / control | Yes | Native `<input type="checkbox">` preferred |
34
- | Label | Yes | `<label for="id">` click zone includes label text |
34
+ | Label | Yes | `<label for="id">` - click zone includes label text |
35
35
  | Fieldset + legend | Yes (group) | Required when ≥2 related checkboxes |
36
36
  | Helper text | No | Below label; `aria-describedby` |
37
37
  | Error message | Conditional | Field-level or group-level |
@@ -49,8 +49,8 @@ Group:
49
49
  | Group | ≥2 checkboxes in `<fieldset>` | All |
50
50
  | With description | Label + helper text below | Material 3, Polaris, Carbon |
51
51
 
52
- **Norm** (≥6/18): indeterminate state is a visual-only UI state the underlying `checked` value is still boolean; set via DOM `.indeterminate` property, not HTML attribute.
53
- **Diverge**: size Material 3 uses 18px; Carbon 16px; Polaris 16px; Ant 14–16px. 16px is the de-facto norm.
52
+ **Norm** (≥6/18): indeterminate state is a visual-only UI state - the underlying `checked` value is still boolean; set via DOM `.indeterminate` property, not HTML attribute.
53
+ **Diverge**: size - Material 3 uses 18px; Carbon 16px; Polaris 16px; Ant 14–16px. 16px is the de-facto norm.
54
54
 
55
55
  ---
56
56
 
@@ -61,8 +61,8 @@ Group:
61
61
  | unchecked | default | Empty box | `aria-checked="false"` |
62
62
  | checked | user interaction | Checkmark | `aria-checked="true"` |
63
63
  | indeterminate | set via JS | Dash / minus | `aria-checked="mixed"` |
64
- | hover | pointer over | Box border darkens | |
65
- | focus | keyboard | 2px focus ring around box | |
64
+ | hover | pointer over | Box border darkens | - |
65
+ | focus | keyboard | 2px focus ring around box | - |
66
66
  | disabled unchecked | `disabled` | 38% opacity | `aria-disabled="true"` |
67
67
  | disabled checked | `disabled` | 38% opacity + check | `aria-disabled="true"` |
68
68
  | error | validation | Red box border | `aria-invalid="true"` |
@@ -79,14 +79,14 @@ Group:
79
79
  | Group item spacing | 8px vertical between items | *(Carbon, Material 3)* |
80
80
  | Indentation (nested) | 24px | When showing hierarchical groups |
81
81
 
82
- Cross-link: `reference/surfaces.md` hit-area pseudo-element pattern (44×44px minimum touch target)
82
+ Cross-link: `reference/surfaces.md` - hit-area pseudo-element pattern (44×44px minimum touch target)
83
83
 
84
84
  ---
85
85
 
86
86
  ## Typography
87
87
 
88
- - Label: 14px/400; same weight as body checkboxes are options, not headings
89
- - Legend: 14px/500 or 12px/600 uppercase distinguishes group from items
88
+ - Label: 14px/400; same weight as body - checkboxes are options, not headings
89
+ - Legend: 14px/500 or 12px/600 uppercase - distinguishes group from items
90
90
  - Helper/error: 12px/400
91
91
 
92
92
  ---
@@ -98,20 +98,20 @@ Cross-link: `reference/surfaces.md` — hit-area pseudo-element pattern (44×44p
98
98
 
99
99
  ### Keyboard Contract
100
100
 
101
- *Quoted verbatim from WAI-ARIA APG https://www.w3.org/WAI/ARIA/apg/patterns/checkbox/ W3C 2024*
101
+ *Quoted verbatim from WAI-ARIA APG - https://www.w3.org/WAI/ARIA/apg/patterns/checkbox/ - W3C - 2024*
102
102
 
103
103
  | Key | Action |
104
104
  |-----|--------|
105
105
  | Tab | Moves focus to the checkbox |
106
106
  | Space | Toggles the checkbox state (checked / unchecked / indeterminate) |
107
107
 
108
- Within a group: Tab moves between checkboxes (not arrow keys checkboxes are independent).
108
+ Within a group: Tab moves between checkboxes (not arrow keys - checkboxes are independent).
109
109
 
110
110
  ### Accessibility Rules
111
111
 
112
- - Label MUST be associated via `<label for="id">` clicking the label must toggle the checkbox
113
- - `<fieldset>` + `<legend>` MUST wrap every group of related checkboxes the legend provides group context to screen readers
114
- - Indeterminate state MUST be set via JS `.indeterminate = true` there is no HTML attribute; `aria-checked="mixed"` must be set simultaneously on `role="checkbox"` elements
112
+ - Label MUST be associated via `<label for="id">` - clicking the label must toggle the checkbox
113
+ - `<fieldset>` + `<legend>` MUST wrap every group of related checkboxes - the legend provides group context to screen readers
114
+ - Indeterminate state MUST be set via JS `.indeterminate = true` - there is no HTML attribute; `aria-checked="mixed"` must be set simultaneously on `role="checkbox"` elements
115
115
  - Disabled checkboxes: use native `disabled` attribute for form semantics; `aria-disabled="true"` if the element must remain in tab order (e.g. with explanatory tooltip)
116
116
  - Error state: `aria-invalid="true"` on the control; group-level error on the `<fieldset>` via `aria-describedby`
117
117
 
@@ -125,7 +125,7 @@ Within a group: Tab moves between checkboxes (not arrow keys — checkboxes are
125
125
  | indeterminate dash | 120ms | ease | Width animation of dash element |
126
126
  | hover border | 80ms | ease | Border colour only |
127
127
 
128
- Cross-link: `reference/motion.md` `prefers-reduced-motion`: skip path animation, show fill instantly
128
+ Cross-link: `reference/motion.md` - `prefers-reduced-motion`: skip path animation, show fill instantly
129
129
 
130
130
  ---
131
131
 
@@ -138,10 +138,10 @@ Cross-link: `reference/motion.md` — `prefers-reduced-motion`: skip path animat
138
138
  - Align label text to the top of the control in multiline label scenarios *(Carbon)*
139
139
 
140
140
  ### Don't
141
- - Don't use checkboxes for mutually exclusive options use radio buttons *(Material 3, Carbon, Polaris)*
141
+ - Don't use checkboxes for mutually exclusive options - use radio buttons *(Material 3, Carbon, Polaris)*
142
142
  - Don't use a custom `<div>` checkbox without `role="checkbox"` and keyboard handler *(WAI-ARIA APG)*
143
- - Don't set `aria-checked="mixed"` via HTML attribute it must be set dynamically *(WAI-ARIA APG)*
144
- - Don't rely on colour alone for checked state always include a visible checkmark *(WCAG 1.4.1)*
143
+ - Don't set `aria-checked="mixed"` via HTML attribute - it must be set dynamically *(WAI-ARIA APG)*
144
+ - Don't rely on colour alone for checked state - always include a visible checkmark *(WCAG 1.4.1)*
145
145
 
146
146
  ---
147
147
 
@@ -195,7 +195,7 @@ grep -rn 'indeterminate' src/ | grep 'setAttribute\|attr(' | grep '"true"'
195
195
  </div>
196
196
  ```
197
197
 
198
- **Why it fails**: Screen readers announce each option without the group context ("Email checkbox") users don't know what these options belong to without reading surrounding text.
198
+ **Why it fails**: Screen readers announce each option without the group context ("Email - checkbox") - users don't know what these options belong to without reading surrounding text.
199
199
  **Grep detection**: `grep -B5 'type="checkbox"' src/ | grep -v 'fieldset\|role="group"'`
200
200
  **Fix**:
201
201
  ```html