@hegemonart/get-design-done 1.42.0 → 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 (425) hide show
  1. package/.claude-plugin/marketplace.json +2 -2
  2. package/.claude-plugin/plugin.json +1 -1
  3. package/CHANGELOG.md +1080 -1038
  4. package/README.md +157 -155
  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 +3 -3
  64. package/dist/claude-code/.claude/skills/analyze-dependencies/SKILL.md +10 -10
  65. package/dist/claude-code/.claude/skills/apply-reflections/SKILL.md +13 -13
  66. package/dist/claude-code/.claude/skills/apply-reflections/apply-reflections-procedure.md +20 -20
  67. package/dist/claude-code/.claude/skills/audit/SKILL.md +7 -7
  68. package/dist/claude-code/.claude/skills/bandit-status/SKILL.md +7 -7
  69. package/dist/claude-code/.claude/skills/benchmark/SKILL.md +7 -7
  70. package/dist/claude-code/.claude/skills/bootstrap-ds/SKILL.md +10 -10
  71. package/dist/claude-code/.claude/skills/brief/SKILL.md +20 -20
  72. package/dist/claude-code/.claude/skills/budget/SKILL.md +4 -4
  73. package/dist/claude-code/.claude/skills/cache-manager/SKILL.md +6 -6
  74. package/dist/claude-code/.claude/skills/cache-manager/cache-policy.md +5 -5
  75. package/dist/claude-code/.claude/skills/check-update/SKILL.md +5 -5
  76. package/dist/claude-code/.claude/skills/compare/SKILL.md +15 -15
  77. package/dist/claude-code/.claude/skills/compare/compare-rubric.md +17 -17
  78. package/dist/claude-code/.claude/skills/complete-cycle/SKILL.md +5 -5
  79. package/dist/claude-code/.claude/skills/connections/SKILL.md +11 -11
  80. package/dist/claude-code/.claude/skills/connections/connections-onboarding.md +76 -76
  81. package/dist/claude-code/.claude/skills/continue/SKILL.md +2 -2
  82. package/dist/claude-code/.claude/skills/darkmode/SKILL.md +17 -17
  83. package/dist/claude-code/.claude/skills/darkmode/darkmode-audit-procedure.md +7 -7
  84. package/dist/claude-code/.claude/skills/debug/SKILL.md +3 -3
  85. package/dist/claude-code/.claude/skills/debug/debug-feedback-loops.md +12 -12
  86. package/dist/claude-code/.claude/skills/design/SKILL.md +12 -12
  87. package/dist/claude-code/.claude/skills/design/design-procedure.md +23 -23
  88. package/dist/claude-code/.claude/skills/discover/SKILL.md +7 -7
  89. package/dist/claude-code/.claude/skills/discover/discover-procedure.md +18 -18
  90. package/dist/claude-code/.claude/skills/discuss/SKILL.md +12 -12
  91. package/dist/claude-code/.claude/skills/do/SKILL.md +1 -1
  92. package/dist/claude-code/.claude/skills/explore/SKILL.md +21 -21
  93. package/dist/claude-code/.claude/skills/explore/explore-procedure.md +48 -48
  94. package/dist/claude-code/.claude/skills/export/SKILL.md +9 -9
  95. package/dist/claude-code/.claude/skills/extract-learnings/SKILL.md +5 -5
  96. package/dist/claude-code/.claude/skills/fast/SKILL.md +7 -7
  97. package/dist/claude-code/.claude/skills/figma-extract/SKILL.md +11 -11
  98. package/dist/claude-code/.claude/skills/figma-write/SKILL.md +6 -6
  99. package/dist/claude-code/.claude/skills/graphify/SKILL.md +4 -4
  100. package/dist/claude-code/.claude/skills/health/SKILL.md +16 -16
  101. package/dist/claude-code/.claude/skills/health/health-mcp-detection.md +3 -3
  102. package/dist/claude-code/.claude/skills/health/health-skill-length-report.md +6 -6
  103. package/dist/claude-code/.claude/skills/help/SKILL.md +1 -1
  104. package/dist/claude-code/.claude/skills/list-assumptions/SKILL.md +4 -4
  105. package/dist/claude-code/.claude/skills/map/SKILL.md +12 -12
  106. package/dist/claude-code/.claude/skills/migrate/SKILL.md +5 -5
  107. package/dist/claude-code/.claude/skills/new-cycle/SKILL.md +2 -2
  108. package/dist/claude-code/.claude/skills/new-cycle/milestone-completeness-rubric.md +16 -16
  109. package/dist/claude-code/.claude/skills/new-project/SKILL.md +1 -1
  110. package/dist/claude-code/.claude/skills/next/SKILL.md +5 -5
  111. package/dist/claude-code/.claude/skills/note/SKILL.md +1 -1
  112. package/dist/claude-code/.claude/skills/openrouter-status/SKILL.md +4 -4
  113. package/dist/claude-code/.claude/skills/optimize/SKILL.md +15 -15
  114. package/dist/claude-code/.claude/skills/pause/SKILL.md +5 -5
  115. package/dist/claude-code/.claude/skills/peer-cli-add/SKILL.md +11 -11
  116. package/dist/claude-code/.claude/skills/peer-cli-add/peer-cli-protocol.md +39 -39
  117. package/dist/claude-code/.claude/skills/peer-cli-customize/SKILL.md +14 -14
  118. package/dist/claude-code/.claude/skills/peers/SKILL.md +4 -4
  119. package/dist/claude-code/.claude/skills/plan/SKILL.md +13 -13
  120. package/dist/claude-code/.claude/skills/plan/plan-procedure.md +24 -24
  121. package/dist/claude-code/.claude/skills/plant-seed/SKILL.md +4 -4
  122. package/dist/claude-code/.claude/skills/pr-branch/SKILL.md +2 -2
  123. package/dist/claude-code/.claude/skills/progress/SKILL.md +15 -15
  124. package/dist/claude-code/.claude/skills/quality-gate/SKILL.md +22 -22
  125. package/dist/claude-code/.claude/skills/quality-gate/threat-modeling.md +19 -19
  126. package/dist/claude-code/.claude/skills/quick/SKILL.md +5 -5
  127. package/dist/claude-code/.claude/skills/reapply-patches/SKILL.md +7 -7
  128. package/dist/claude-code/.claude/skills/reflect/SKILL.md +3 -3
  129. package/dist/claude-code/.claude/skills/reflect/procedures/capability-gap-scan.md +11 -11
  130. package/dist/claude-code/.claude/skills/report-issue/SKILL.md +5 -5
  131. package/dist/claude-code/.claude/skills/report-issue/report-issue-procedure.md +27 -27
  132. package/dist/claude-code/.claude/skills/resume/SKILL.md +9 -9
  133. package/dist/claude-code/.claude/skills/review-backlog/SKILL.md +3 -3
  134. package/dist/claude-code/.claude/skills/review-decisions/SKILL.md +3 -3
  135. package/dist/claude-code/.claude/skills/roi/SKILL.md +5 -5
  136. package/dist/claude-code/.claude/skills/rollout-status/SKILL.md +4 -4
  137. package/dist/claude-code/.claude/skills/router/SKILL.md +11 -11
  138. package/dist/claude-code/.claude/skills/router/capability-gap-emitter.md +6 -6
  139. package/dist/claude-code/.claude/skills/router/router-pick-emitter.md +9 -9
  140. package/dist/claude-code/.claude/skills/router/router-rules.md +7 -7
  141. package/dist/claude-code/.claude/skills/scan/SKILL.md +16 -16
  142. package/dist/claude-code/.claude/skills/scan/scan-procedure.md +42 -42
  143. package/dist/claude-code/.claude/skills/settings/SKILL.md +2 -2
  144. package/dist/claude-code/.claude/skills/ship/SKILL.md +7 -7
  145. package/dist/claude-code/.claude/skills/sketch/SKILL.md +10 -10
  146. package/dist/claude-code/.claude/skills/sketch-wrap-up/SKILL.md +12 -12
  147. package/dist/claude-code/.claude/skills/skill-manifest/SKILL.md +5 -5
  148. package/dist/claude-code/.claude/skills/spike/SKILL.md +7 -7
  149. package/dist/claude-code/.claude/skills/spike-wrap-up/SKILL.md +13 -13
  150. package/dist/claude-code/.claude/skills/start/SKILL.md +8 -8
  151. package/dist/claude-code/.claude/skills/start/start-procedure.md +9 -9
  152. package/dist/claude-code/.claude/skills/stats/SKILL.md +5 -5
  153. package/dist/claude-code/.claude/skills/style/SKILL.md +12 -12
  154. package/dist/claude-code/.claude/skills/style/style-doc-procedure.md +12 -12
  155. package/dist/claude-code/.claude/skills/synthesize/SKILL.md +10 -10
  156. package/dist/claude-code/.claude/skills/timeline/SKILL.md +4 -4
  157. package/dist/claude-code/.claude/skills/todo/SKILL.md +3 -3
  158. package/dist/claude-code/.claude/skills/turn-closeout/SKILL.md +10 -10
  159. package/dist/claude-code/.claude/skills/unlock-decision/SKILL.md +3 -3
  160. package/dist/claude-code/.claude/skills/update/SKILL.md +9 -9
  161. package/dist/claude-code/.claude/skills/using-gdd/SKILL.md +17 -17
  162. package/dist/claude-code/.claude/skills/verify/SKILL.md +13 -13
  163. package/dist/claude-code/.claude/skills/verify/verify-procedure.md +34 -34
  164. package/dist/claude-code/.claude/skills/warm-cache/SKILL.md +8 -8
  165. package/dist/claude-code/.claude/skills/watch-authorities/SKILL.md +9 -9
  166. package/dist/claude-code/.claude/skills/zoom-out/SKILL.md +4 -4
  167. package/package.json +5 -2
  168. package/reference/DEPRECATIONS.md +10 -10
  169. package/reference/STATE-TEMPLATE.md +26 -26
  170. package/reference/accessibility.md +13 -13
  171. package/reference/adr-format.md +13 -13
  172. package/reference/ai-native-tool-interface.md +5 -5
  173. package/reference/anti-patterns.md +9 -9
  174. package/reference/architecture-vocabulary.md +31 -31
  175. package/reference/audit-scoring.md +13 -13
  176. package/reference/authority-feeds.md +36 -36
  177. package/reference/bandit-integration.md +25 -25
  178. package/reference/brand-voice.md +36 -36
  179. package/reference/capability-gap-stage-gate.md +20 -20
  180. package/reference/checklists.md +26 -26
  181. package/reference/cli-localization.md +13 -13
  182. package/reference/codex-tools.md +2 -2
  183. package/reference/color-theory.md +28 -28
  184. package/reference/component-authoring.md +4 -4
  185. package/reference/components/README.md +13 -13
  186. package/reference/components/TEMPLATE.md +13 -13
  187. package/reference/components/accordion.md +15 -15
  188. package/reference/components/alert.md +25 -25
  189. package/reference/components/badge.md +18 -18
  190. package/reference/components/breadcrumbs.md +24 -24
  191. package/reference/components/button.md +21 -21
  192. package/reference/components/card.md +13 -13
  193. package/reference/components/checkbox.md +20 -20
  194. package/reference/components/chip.md +20 -20
  195. package/reference/components/command-palette.md +15 -15
  196. package/reference/components/date-picker.md +22 -22
  197. package/reference/components/drawer.md +13 -13
  198. package/reference/components/file-upload.md +22 -22
  199. package/reference/components/input.md +18 -18
  200. package/reference/components/label.md +25 -25
  201. package/reference/components/link.md +19 -19
  202. package/reference/components/list.md +17 -17
  203. package/reference/components/menu.md +19 -19
  204. package/reference/components/modal-dialog.md +16 -16
  205. package/reference/components/navbar.md +19 -19
  206. package/reference/components/pagination.md +18 -18
  207. package/reference/components/popover.md +12 -12
  208. package/reference/components/progress.md +18 -18
  209. package/reference/components/radio.md +17 -17
  210. package/reference/components/rich-text-editor.md +24 -24
  211. package/reference/components/select-combobox.md +16 -16
  212. package/reference/components/sidebar.md +15 -15
  213. package/reference/components/skeleton.md +20 -20
  214. package/reference/components/slider.md +20 -20
  215. package/reference/components/stepper.md +24 -24
  216. package/reference/components/switch.md +19 -19
  217. package/reference/components/table.md +21 -21
  218. package/reference/components/tabs.md +11 -11
  219. package/reference/components/toast.md +19 -19
  220. package/reference/components/tooltip.md +19 -19
  221. package/reference/components/tree.md +17 -17
  222. package/reference/composition.md +38 -38
  223. package/reference/config-schema.md +37 -37
  224. package/reference/context-md-format.md +9 -9
  225. package/reference/contrast-advanced.md +29 -29
  226. package/reference/conversational-ui.md +17 -17
  227. package/reference/cost-governance.md +14 -14
  228. package/reference/css-grid-layout.md +8 -8
  229. package/reference/cycle-handoff-preamble.md +3 -3
  230. package/reference/data-visualization.md +67 -67
  231. package/reference/debugger-philosophy.md +5 -5
  232. package/reference/design-system-guidance.md +21 -21
  233. package/reference/design-systems-catalog.md +20 -20
  234. package/reference/design-variants.md +11 -11
  235. package/reference/domains/civic-patterns.md +10 -10
  236. package/reference/domains/finance-patterns.md +9 -9
  237. package/reference/domains/gaming-patterns.md +9 -9
  238. package/reference/domains/healthcare-patterns.md +11 -11
  239. package/reference/ds-bootstrap-rubric.md +13 -13
  240. package/reference/email-design.md +22 -22
  241. package/reference/emotional-design.md +10 -10
  242. package/reference/error-recovery.md +11 -11
  243. package/reference/export-formats.md +7 -7
  244. package/reference/figma-sandbox.md +6 -6
  245. package/reference/first-principles.md +10 -10
  246. package/reference/form-patterns.md +26 -26
  247. package/reference/framer-motion-patterns.md +49 -49
  248. package/reference/gdd-runtime-audit.md +17 -17
  249. package/reference/gdd-threat-model.md +44 -44
  250. package/reference/gemini-tools.md +3 -3
  251. package/reference/gestalt.md +24 -24
  252. package/reference/heuristics.md +32 -32
  253. package/reference/i18n.md +44 -44
  254. package/reference/iconography.md +24 -24
  255. package/reference/image-optimization.md +14 -14
  256. package/reference/information-architecture.md +47 -47
  257. package/reference/intel-schema.md +1 -1
  258. package/reference/known-failure-modes.md +37 -37
  259. package/reference/meta-rules.md +5 -5
  260. package/reference/migrations/material-3-to-4.md +17 -17
  261. package/reference/migrations/mui-v6.md +16 -16
  262. package/reference/migrations/shadcn-v2.md +25 -25
  263. package/reference/migrations/tailwind-v4.md +21 -21
  264. package/reference/model-prices.md +3 -3
  265. package/reference/model-tiers.md +40 -40
  266. package/reference/motion-advanced.md +21 -21
  267. package/reference/motion-easings.md +29 -29
  268. package/reference/motion-interpolate.md +1 -1
  269. package/reference/motion-spring.md +13 -13
  270. package/reference/motion-transition-taxonomy.md +34 -34
  271. package/reference/motion.md +31 -31
  272. package/reference/multi-author-model.md +13 -13
  273. package/reference/native-platforms.md +28 -28
  274. package/reference/notification-routing.md +6 -6
  275. package/reference/onboarding-progressive-disclosure.md +32 -32
  276. package/reference/openrouter-tier-mapping.md +8 -8
  277. package/reference/palette-catalog.md +37 -37
  278. package/reference/parallelism-rules.md +20 -20
  279. package/reference/peer-cli-capabilities.md +14 -14
  280. package/reference/peer-protocols.md +21 -21
  281. package/reference/perf-budget.md +21 -21
  282. package/reference/performance.md +22 -22
  283. package/reference/platforms.md +51 -51
  284. package/reference/pr-review-integration.md +7 -7
  285. package/reference/prices/antigravity.md +3 -3
  286. package/reference/prices/augment.md +3 -3
  287. package/reference/prices/claude.md +2 -2
  288. package/reference/prices/cline.md +4 -4
  289. package/reference/prices/codebuddy.md +3 -3
  290. package/reference/prices/codex.md +2 -2
  291. package/reference/prices/copilot.md +3 -3
  292. package/reference/prices/cursor.md +3 -3
  293. package/reference/prices/gemini.md +2 -2
  294. package/reference/prices/kilo.md +3 -3
  295. package/reference/prices/opencode.md +4 -4
  296. package/reference/prices/qwen.md +2 -2
  297. package/reference/prices/trae.md +3 -3
  298. package/reference/prices/windsurf.md +3 -3
  299. package/reference/prices.openrouter.md +5 -5
  300. package/reference/print-design.md +36 -36
  301. package/reference/priority-matrix.md +2 -2
  302. package/reference/project-skills-guide.md +3 -3
  303. package/reference/proportion-systems.md +23 -23
  304. package/reference/pseudonymization-rules.md +30 -30
  305. package/reference/retrieval-contract.md +14 -14
  306. package/reference/review-format.md +7 -7
  307. package/reference/rollout-coordination.md +10 -10
  308. package/reference/rtl-cjk-cultural.md +39 -39
  309. package/reference/runtime-models.md +28 -28
  310. package/reference/shared-preamble.md +26 -26
  311. package/reference/skill-authoring-contract.md +16 -16
  312. package/reference/skill-placeholders.md +3 -3
  313. package/reference/start-interview.md +10 -10
  314. package/reference/style-vocabulary.md +25 -25
  315. package/reference/surfaces.md +4 -4
  316. package/reference/ticket-sync.md +9 -9
  317. package/reference/typography.md +64 -64
  318. package/reference/user-research.md +54 -54
  319. package/reference/variable-fonts-loading.md +15 -15
  320. package/reference/visual-hierarchy-layout.md +41 -41
  321. package/scripts/lib/manifest/prose-denylist.json +1 -1
  322. package/skills/add-backlog/SKILL.md +3 -3
  323. package/skills/analyze-dependencies/SKILL.md +10 -10
  324. package/skills/apply-reflections/SKILL.md +13 -13
  325. package/skills/apply-reflections/apply-reflections-procedure.md +20 -20
  326. package/skills/audit/SKILL.md +7 -7
  327. package/skills/bandit-status/SKILL.md +7 -7
  328. package/skills/benchmark/SKILL.md +7 -7
  329. package/skills/bootstrap-ds/SKILL.md +10 -10
  330. package/skills/brief/SKILL.md +20 -20
  331. package/skills/budget/SKILL.md +4 -4
  332. package/skills/cache-manager/SKILL.md +6 -6
  333. package/skills/cache-manager/cache-policy.md +5 -5
  334. package/skills/check-update/SKILL.md +5 -5
  335. package/skills/compare/SKILL.md +15 -15
  336. package/skills/compare/compare-rubric.md +17 -17
  337. package/skills/complete-cycle/SKILL.md +5 -5
  338. package/skills/connections/SKILL.md +11 -11
  339. package/skills/connections/connections-onboarding.md +76 -76
  340. package/skills/continue/SKILL.md +2 -2
  341. package/skills/darkmode/SKILL.md +17 -17
  342. package/skills/darkmode/darkmode-audit-procedure.md +7 -7
  343. package/skills/debug/SKILL.md +3 -3
  344. package/skills/debug/debug-feedback-loops.md +12 -12
  345. package/skills/design/SKILL.md +12 -12
  346. package/skills/design/design-procedure.md +23 -23
  347. package/skills/discover/SKILL.md +7 -7
  348. package/skills/discover/discover-procedure.md +18 -18
  349. package/skills/discuss/SKILL.md +12 -12
  350. package/skills/do/SKILL.md +1 -1
  351. package/skills/explore/SKILL.md +21 -21
  352. package/skills/explore/explore-procedure.md +48 -48
  353. package/skills/export/SKILL.md +9 -9
  354. package/skills/extract-learnings/SKILL.md +5 -5
  355. package/skills/fast/SKILL.md +7 -7
  356. package/skills/figma-extract/SKILL.md +11 -11
  357. package/skills/figma-write/SKILL.md +6 -6
  358. package/skills/graphify/SKILL.md +4 -4
  359. package/skills/health/SKILL.md +16 -16
  360. package/skills/health/health-mcp-detection.md +3 -3
  361. package/skills/health/health-skill-length-report.md +6 -6
  362. package/skills/help/SKILL.md +1 -1
  363. package/skills/list-assumptions/SKILL.md +4 -4
  364. package/skills/map/SKILL.md +12 -12
  365. package/skills/migrate/SKILL.md +5 -5
  366. package/skills/new-cycle/SKILL.md +2 -2
  367. package/skills/new-cycle/milestone-completeness-rubric.md +16 -16
  368. package/skills/new-project/SKILL.md +1 -1
  369. package/skills/next/SKILL.md +5 -5
  370. package/skills/note/SKILL.md +1 -1
  371. package/skills/openrouter-status/SKILL.md +4 -4
  372. package/skills/optimize/SKILL.md +15 -15
  373. package/skills/pause/SKILL.md +5 -5
  374. package/skills/peer-cli-add/SKILL.md +11 -11
  375. package/skills/peer-cli-add/peer-cli-protocol.md +39 -39
  376. package/skills/peer-cli-customize/SKILL.md +14 -14
  377. package/skills/peers/SKILL.md +4 -4
  378. package/skills/plan/SKILL.md +13 -13
  379. package/skills/plan/plan-procedure.md +24 -24
  380. package/skills/plant-seed/SKILL.md +4 -4
  381. package/skills/pr-branch/SKILL.md +2 -2
  382. package/skills/progress/SKILL.md +15 -15
  383. package/skills/quality-gate/SKILL.md +22 -22
  384. package/skills/quality-gate/threat-modeling.md +19 -19
  385. package/skills/quick/SKILL.md +5 -5
  386. package/skills/reapply-patches/SKILL.md +7 -7
  387. package/skills/reflect/SKILL.md +3 -3
  388. package/skills/reflect/procedures/capability-gap-scan.md +11 -11
  389. package/skills/report-issue/SKILL.md +5 -5
  390. package/skills/report-issue/report-issue-procedure.md +27 -27
  391. package/skills/resume/SKILL.md +9 -9
  392. package/skills/review-backlog/SKILL.md +3 -3
  393. package/skills/review-decisions/SKILL.md +3 -3
  394. package/skills/roi/SKILL.md +5 -5
  395. package/skills/rollout-status/SKILL.md +4 -4
  396. package/skills/router/SKILL.md +11 -11
  397. package/skills/router/capability-gap-emitter.md +6 -6
  398. package/skills/router/router-pick-emitter.md +9 -9
  399. package/skills/router/router-rules.md +7 -7
  400. package/skills/scan/SKILL.md +16 -16
  401. package/skills/scan/scan-procedure.md +42 -42
  402. package/skills/settings/SKILL.md +2 -2
  403. package/skills/ship/SKILL.md +7 -7
  404. package/skills/sketch/SKILL.md +10 -10
  405. package/skills/sketch-wrap-up/SKILL.md +12 -12
  406. package/skills/skill-manifest/SKILL.md +5 -5
  407. package/skills/spike/SKILL.md +7 -7
  408. package/skills/spike-wrap-up/SKILL.md +13 -13
  409. package/skills/start/SKILL.md +8 -8
  410. package/skills/start/start-procedure.md +9 -9
  411. package/skills/stats/SKILL.md +5 -5
  412. package/skills/style/SKILL.md +12 -12
  413. package/skills/style/style-doc-procedure.md +12 -12
  414. package/skills/synthesize/SKILL.md +10 -10
  415. package/skills/timeline/SKILL.md +4 -4
  416. package/skills/todo/SKILL.md +3 -3
  417. package/skills/turn-closeout/SKILL.md +10 -10
  418. package/skills/unlock-decision/SKILL.md +3 -3
  419. package/skills/update/SKILL.md +9 -9
  420. package/skills/using-gdd/SKILL.md +17 -17
  421. package/skills/verify/SKILL.md +13 -13
  422. package/skills/verify/verify-procedure.md +34 -34
  423. package/skills/warm-cache/SKILL.md +8 -8
  424. package/skills/watch-authorities/SKILL.md +9 -9
  425. package/skills/zoom-out/SKILL.md +4 -4
@@ -1,4 +1,4 @@
1
- # Accordion Benchmark Spec
1
+ # Accordion - Benchmark Spec
2
2
 
3
3
  **Harvested from**: WAI-ARIA APG, Radix UI, Carbon, Chakra UI, Material 3, Mantine, shadcn/ui, Atlassian
4
4
  **Wave**: 2 · **Category**: Containers
@@ -7,7 +7,7 @@
7
7
 
8
8
  ## Purpose
9
9
 
10
- An accordion is a vertically stacked set of headers that each reveal or conceal an associated section of content when activated. It reduces visual clutter by hiding content that is not immediately relevant. The header MUST be a button (or have `role="button"`) users must be able to activate sections by keyboard. *(WAI-ARIA APG, Radix, Carbon all agree)*
10
+ An accordion is a vertically stacked set of headers that each reveal or conceal an associated section of content when activated. It reduces visual clutter by hiding content that is not immediately relevant. The header MUST be a button (or have `role="button"`) - users must be able to activate sections by keyboard. *(WAI-ARIA APG, Radix, Carbon all agree)*
11
11
 
12
12
  ---
13
13
 
@@ -47,7 +47,7 @@ An accordion is a vertically stacked set of headers that each reveal or conceal
47
47
  | With icon | Leading icon per header | Carbon, Atlassian |
48
48
 
49
49
  **Norm** (≥5/18): chevron icon rotates on open (180°); panel animates height.
50
- **Diverge**: single-open vs. multi-open Radix defaults to multi-open (more flexible); Material 3 defaults to single-open (simpler UX). Multi-open is safer for long FAQ pages where users may want to compare sections.
50
+ **Diverge**: single-open vs. multi-open - Radix defaults to multi-open (more flexible); Material 3 defaults to single-open (simpler UX). Multi-open is safer for long FAQ pages where users may want to compare sections.
51
51
 
52
52
  ---
53
53
 
@@ -57,8 +57,8 @@ An accordion is a vertically stacked set of headers that each reveal or conceal
57
57
  |-------|---------|--------|------|
58
58
  | collapsed | default | Panel hidden | `aria-expanded="false"` on button |
59
59
  | expanded | button activated | Panel visible | `aria-expanded="true"` on button |
60
- | hover | pointer over header | Header background tint | |
61
- | focus | keyboard | 2px focus ring on button | |
60
+ | hover | pointer over header | Header background tint | - |
61
+ | focus | keyboard | 2px focus ring on button | - |
62
62
  | disabled | programmatic | 38% opacity; non-interactive | `aria-disabled="true"` on button |
63
63
 
64
64
  ---
@@ -77,7 +77,7 @@ An accordion is a vertically stacked set of headers that each reveal or conceal
77
77
 
78
78
  ## Typography
79
79
 
80
- - Header: 14–16px/500 slightly heavier than panel body
80
+ - Header: 14–16px/500 - slightly heavier than panel body
81
81
  - Panel body: 14px/400
82
82
  - Disabled header: same size, 38% opacity
83
83
 
@@ -91,7 +91,7 @@ An accordion is a vertically stacked set of headers that each reveal or conceal
91
91
 
92
92
  ### Keyboard Contract
93
93
 
94
- *Quoted verbatim from WAI-ARIA APG https://www.w3.org/WAI/ARIA/apg/patterns/accordion/ W3C 2024*
94
+ *Quoted verbatim from WAI-ARIA APG - https://www.w3.org/WAI/ARIA/apg/patterns/accordion/ - W3C - 2024*
95
95
 
96
96
  | Key | Action |
97
97
  |-----|--------|
@@ -107,12 +107,12 @@ Arrow/Home/End navigation is optional; Tab navigation between headers is always
107
107
 
108
108
  ### Accessibility Rules
109
109
 
110
- - Header MUST be wrapped in an `<h2>`–`<h6>` tag to maintain document outline the heading level should match the surrounding page hierarchy
111
- - The trigger MUST be a `<button>` (or `role="button"`) `<div>` headers are inaccessible by keyboard
110
+ - Header MUST be wrapped in an `<h2>`–`<h6>` tag to maintain document outline - the heading level should match the surrounding page hierarchy
111
+ - The trigger MUST be a `<button>` (or `role="button"`) - `<div>` headers are inaccessible by keyboard
112
112
  - `aria-expanded` MUST be on the trigger button, not the panel
113
- - Panel SHOULD have `role="region"` + `aria-labelledby` referencing the trigger button id this creates a named region for landmark navigation
113
+ - Panel SHOULD have `role="region"` + `aria-labelledby` referencing the trigger button id - this creates a named region for landmark navigation
114
114
  - `role="region"` should be omitted if there are more than 6 accordions (too many regions = noisy landmark nav)
115
- - Avoid `display:none` for the panel in open state use `hidden` or height animation
115
+ - Avoid `display:none` for the panel in open state - use `hidden` or height animation
116
116
 
117
117
  ---
118
118
 
@@ -131,7 +131,7 @@ Arrow/Home/End navigation is optional; Tab navigation between headers is always
131
131
  .panel > div { overflow: hidden; }
132
132
  ```
133
133
 
134
- Cross-link: `reference/motion.md` `prefers-reduced-motion`: skip height animation, instant toggle
134
+ Cross-link: `reference/motion.md` - `prefers-reduced-motion`: skip height animation, instant toggle
135
135
 
136
136
  ---
137
137
 
@@ -140,13 +140,13 @@ Cross-link: `reference/motion.md` — `prefers-reduced-motion`: skip height anim
140
140
  ### Do
141
141
  - Wrap header triggers in proper heading tags (`<h2>`–`<h6>`) *(WAI-ARIA APG, Carbon)*
142
142
  - Use `aria-expanded` on the trigger button, not on the panel *(WAI-ARIA APG)*
143
- - Animate height with `grid-template-rows` trick no JS height measurement needed *(CSS-only pattern)*
143
+ - Animate height with `grid-template-rows` trick - no JS height measurement needed *(CSS-only pattern)*
144
144
  - Support Tab navigation between accordion headers at minimum *(WAI-ARIA APG)*
145
145
 
146
146
  ### Don't
147
147
  - Don't use `<div>` as the accordion header without `role="button"` *(WAI-ARIA APG)*
148
- - Don't use `display:none` to hide the panel in collapsed state if you want animation use CSS grid trick *(CSS pattern)*
149
- - Don't use `role="region"` for more than 6 accordions excessive landmarks harm screen reader navigation *(WAI-ARIA APG note)*
148
+ - Don't use `display:none` to hide the panel in collapsed state if you want animation - use CSS grid trick *(CSS pattern)*
149
+ - Don't use `role="region"` for more than 6 accordions - excessive landmarks harm screen reader navigation *(WAI-ARIA APG note)*
150
150
  - Don't auto-close other panels in a "single-open" accordion without announcing the change *(Atlassian)*
151
151
 
152
152
  ---
@@ -1,4 +1,4 @@
1
- # Alert / Banner Benchmark Spec
1
+ # Alert / Banner - Benchmark Spec
2
2
 
3
3
  **Harvested from**: Material 3 (Banner), Carbon (InlineNotification), Polaris (Banner), Atlassian (SectionMessage)
4
4
  **Wave**: 3 · **Category**: Feedback
@@ -7,7 +7,7 @@
7
7
 
8
8
  ## Purpose
9
9
 
10
- An alert (inline notification or banner) is a persistent in-page message that communicates status, warnings, or errors relevant to the current context. Unlike Toast, it does not auto-dismiss it remains visible until the user dismisses it or the underlying condition resolves. Use alert for messages that require acknowledgement or that must remain visible for reference. *(Material 3, Carbon, Polaris, Atlassian agree: alert = persistent inline feedback)*
10
+ An alert (inline notification or banner) is a persistent in-page message that communicates status, warnings, or errors relevant to the current context. Unlike Toast, it does not auto-dismiss - it remains visible until the user dismisses it or the underlying condition resolves. Use alert for messages that require acknowledgement or that must remain visible for reference. *(Material 3, Carbon, Polaris, Atlassian agree: alert = persistent inline feedback)*
11
11
 
12
12
  ---
13
13
 
@@ -43,7 +43,7 @@ An alert (inline notification or banner) is a persistent in-page message that co
43
43
  | Warning | Amber; potentially harmful condition; `role="alert"` assertive | All |
44
44
  | Error | Red; failure or blocking condition; `role="alert"` assertive | All |
45
45
 
46
- **Norm** (≥4/18 systems agree): four-variant semantic model (info/success/warning/error) with matching color, icon, and role. Icon is REQUIRED color alone violates WCAG 1.4.1.
46
+ **Norm** (≥4/18 systems agree): four-variant semantic model (info/success/warning/error) with matching color, icon, and role. Icon is REQUIRED - color alone violates WCAG 1.4.1.
47
47
  **Diverge**: Atlassian names this "SectionMessage" and omits dismiss; Carbon always includes an X; Polaris supports titled and untitled variants; Material 3 "Banner" supports one CTA only.
48
48
 
49
49
  ---
@@ -53,8 +53,8 @@ An alert (inline notification or banner) is a persistent in-page message that co
53
53
  | State | Trigger | Visual | ARIA |
54
54
  |-------|---------|--------|------|
55
55
  | visible | render | Full opacity, inline position | `role="alert"` or `role="status"` |
56
- | hover | pointer over action | Action underline / background change | |
57
- | focus | keyboard on action/dismiss | focus-visible ring on button | |
56
+ | hover | pointer over action | Action underline / background change | - |
57
+ | focus | keyboard on action/dismiss | focus-visible ring on button | - |
58
58
  | dismissed | click dismiss button | Collapsed / removed | Removed from DOM |
59
59
 
60
60
  ---
@@ -78,11 +78,11 @@ An alert (inline notification or banner) is a persistent in-page message that co
78
78
 
79
79
  ## Typography
80
80
 
81
- - Title: label-md (14px/600) gives quick scannable context for complex errors
82
- - Message: body-sm (14px/400) readable at inline scale
83
- - Action: label-sm (13px/500) matches action button label weight
81
+ - Title: label-md (14px/600) - gives quick scannable context for complex errors
82
+ - Message: body-sm (14px/400) - readable at inline scale
83
+ - Action: label-sm (13px/500) - matches action button label weight
84
84
 
85
- Cross-link: `reference/typography.md` body-sm, label-md definitions
85
+ Cross-link: `reference/typography.md` - body-sm, label-md definitions
86
86
 
87
87
  ---
88
88
 
@@ -93,7 +93,7 @@ Cross-link: `reference/typography.md` — body-sm, label-md definitions
93
93
 
94
94
  ### Keyboard Contract
95
95
 
96
- *Quoted verbatim from WAI-ARIA APG https://www.w3.org/WAI/ARIA/apg/patterns/alert/ W3C 2024*
96
+ *Quoted verbatim from WAI-ARIA APG - https://www.w3.org/WAI/ARIA/apg/patterns/alert/ - W3C - 2024*
97
97
 
98
98
  | Key | Action |
99
99
  |-----|--------|
@@ -105,14 +105,14 @@ The alert container itself is not focusable. Child buttons follow standard butto
105
105
 
106
106
  ### Accessibility Rules
107
107
 
108
- - Icon MUST be `aria-hidden="true"` the icon is decorative reinforcement; the `role` and text carry the semantic meaning *(WCAG 1.4.1)*
109
- - Color MUST NOT be the sole differentiator between variants icon shape and text label must also differ *(WCAG 1.4.1)*
110
- - `role="alert"` causes immediate assertion by screen readers only use for error and warning severity
111
- - `role="status"` uses a polite live region appropriate for info and success
108
+ - Icon MUST be `aria-hidden="true"` - the icon is decorative reinforcement; the `role` and text carry the semantic meaning *(WCAG 1.4.1)*
109
+ - Color MUST NOT be the sole differentiator between variants - icon shape and text label must also differ *(WCAG 1.4.1)*
110
+ - `role="alert"` causes immediate assertion by screen readers - only use for error and warning severity
111
+ - `role="status"` uses a polite live region - appropriate for info and success
112
112
  - Dismiss button MUST have `aria-label` (e.g. `aria-label="Dismiss warning"`) *(WAI-ARIA APG)*
113
- - Do NOT auto-dismiss alerts that is Toast's job; alert stays until explicitly dismissed *(Carbon, Polaris)*
113
+ - Do NOT auto-dismiss alerts - that is Toast's job; alert stays until explicitly dismissed *(Carbon, Polaris)*
114
114
 
115
- Cross-link: `reference/accessibility.md` live-regions, color-contrast sections
115
+ Cross-link: `reference/accessibility.md` - live-regions, color-contrast sections
116
116
 
117
117
  ---
118
118
 
@@ -122,27 +122,27 @@ Cross-link: `reference/accessibility.md` — live-regions, color-contrast sectio
122
122
  |------------|----------|--------|-------|
123
123
  | Enter (height expand + fade) | 200ms | ease-out | Pushes content down; avoids position:fixed |
124
124
  | Exit (height collapse + fade) | 150ms | ease-in | Content reflows up as alert closes |
125
- | Icon entrance | 0ms | | No animation on icon; immediate |
125
+ | Icon entrance | 0ms | - | No animation on icon; immediate |
126
126
 
127
- **BAN**: Slide-in from edge (reserve for Toast). Alert is inline it should feel like content appearing, not a notification arriving.
127
+ **BAN**: Slide-in from edge (reserve for Toast). Alert is inline - it should feel like content appearing, not a notification arriving.
128
128
 
129
- Cross-link: `reference/motion.md` `prefers-reduced-motion`: skip height animation, instant show/hide
129
+ Cross-link: `reference/motion.md` - `prefers-reduced-motion`: skip height animation, instant show/hide
130
130
 
131
131
  ---
132
132
 
133
133
  ## Do / Don't
134
134
 
135
135
  ### Do
136
- - Always include an icon matching the semantic variant *(WCAG 1.4.1 color not sole differentiator)*
136
+ - Always include an icon matching the semantic variant *(WCAG 1.4.1 - color not sole differentiator)*
137
137
  - Use `role="alert"` for warning/error (assertive) and `role="status"` for info/success (polite) *(WAI-ARIA APG)*
138
138
  - Keep alert visible until the condition is resolved or user dismisses *(Carbon, Polaris)*
139
139
  - Use full-width for page-level alerts; rounded inline for component-level *(Material 3, Carbon)*
140
140
 
141
141
  ### Don't
142
- - Don't auto-dismiss alerts use Toast for transient messages *(Material 3, Carbon)*
143
- - Don't use color alone to distinguish severity always include an icon and text label *(WCAG 1.4.1)*
144
- - Don't stack more than 2 alerts in the same section consolidate into a single summary *(Polaris)*
145
- - Don't use `role="alert"` for info/success overly assertive announcements desensitize users *(WAI-ARIA APG)*
142
+ - Don't auto-dismiss alerts - use Toast for transient messages *(Material 3, Carbon)*
143
+ - Don't use color alone to distinguish severity - always include an icon and text label *(WCAG 1.4.1)*
144
+ - Don't stack more than 2 alerts in the same section - consolidate into a single summary *(Polaris)*
145
+ - Don't use `role="alert"` for info/success - overly assertive announcements desensitize users *(WAI-ARIA APG)*
146
146
 
147
147
  ---
148
148
 
@@ -193,6 +193,6 @@ grep -rn 'alert--error\|alert--warning\|alert-error\|alert-warning' src/ | grep
193
193
  </div>
194
194
  ```
195
195
 
196
- **Why it fails**: No `role="alert"` so screen readers do not announce the error message. Color class alone distinguishes severity users with color blindness or high-contrast themes cannot distinguish this from a neutral message. No icon provides a shape-based cue.
196
+ **Why it fails**: No `role="alert"` so screen readers do not announce the error message. Color class alone distinguishes severity - users with color blindness or high-contrast themes cannot distinguish this from a neutral message. No icon provides a shape-based cue.
197
197
  **Grep detection**: `grep -rn 'class.*alert--error\|class.*alert-error' src/ | grep -v 'role='`
198
198
  **Fix**: Add `role="alert"`, include an error icon with `aria-hidden="true"`, and ensure the variant is communicated through text or visually-hidden label in addition to color.
@@ -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