@hegemonart/get-design-done 1.42.0 → 1.44.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 (430) hide show
  1. package/.claude-plugin/marketplace.json +2 -2
  2. package/.claude-plugin/plugin.json +1 -1
  3. package/CHANGELOG.md +1126 -1038
  4. package/README.md +159 -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 +9 -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/harness-freshness.cjs +59 -0
  322. package/scripts/lib/health-mirror/index.cjs +27 -0
  323. package/scripts/lib/manifest/harnesses.json +280 -14
  324. package/scripts/lib/manifest/prose-denylist.json +1 -1
  325. package/scripts/lib/manifest/schemas/harnesses.schema.json +32 -0
  326. package/sdk/mcp/gdd-mcp/server.js +125 -0
  327. package/skills/add-backlog/SKILL.md +3 -3
  328. package/skills/analyze-dependencies/SKILL.md +10 -10
  329. package/skills/apply-reflections/SKILL.md +13 -13
  330. package/skills/apply-reflections/apply-reflections-procedure.md +20 -20
  331. package/skills/audit/SKILL.md +7 -7
  332. package/skills/bandit-status/SKILL.md +7 -7
  333. package/skills/benchmark/SKILL.md +7 -7
  334. package/skills/bootstrap-ds/SKILL.md +10 -10
  335. package/skills/brief/SKILL.md +20 -20
  336. package/skills/budget/SKILL.md +4 -4
  337. package/skills/cache-manager/SKILL.md +6 -6
  338. package/skills/cache-manager/cache-policy.md +5 -5
  339. package/skills/check-update/SKILL.md +5 -5
  340. package/skills/compare/SKILL.md +15 -15
  341. package/skills/compare/compare-rubric.md +17 -17
  342. package/skills/complete-cycle/SKILL.md +5 -5
  343. package/skills/connections/SKILL.md +11 -11
  344. package/skills/connections/connections-onboarding.md +76 -76
  345. package/skills/continue/SKILL.md +2 -2
  346. package/skills/darkmode/SKILL.md +17 -17
  347. package/skills/darkmode/darkmode-audit-procedure.md +7 -7
  348. package/skills/debug/SKILL.md +3 -3
  349. package/skills/debug/debug-feedback-loops.md +12 -12
  350. package/skills/design/SKILL.md +12 -12
  351. package/skills/design/design-procedure.md +23 -23
  352. package/skills/discover/SKILL.md +7 -7
  353. package/skills/discover/discover-procedure.md +18 -18
  354. package/skills/discuss/SKILL.md +12 -12
  355. package/skills/do/SKILL.md +1 -1
  356. package/skills/explore/SKILL.md +21 -21
  357. package/skills/explore/explore-procedure.md +48 -48
  358. package/skills/export/SKILL.md +9 -9
  359. package/skills/extract-learnings/SKILL.md +5 -5
  360. package/skills/fast/SKILL.md +7 -7
  361. package/skills/figma-extract/SKILL.md +11 -11
  362. package/skills/figma-write/SKILL.md +6 -6
  363. package/skills/graphify/SKILL.md +4 -4
  364. package/skills/health/SKILL.md +16 -16
  365. package/skills/health/health-mcp-detection.md +3 -3
  366. package/skills/health/health-skill-length-report.md +6 -6
  367. package/skills/help/SKILL.md +1 -1
  368. package/skills/list-assumptions/SKILL.md +4 -4
  369. package/skills/map/SKILL.md +12 -12
  370. package/skills/migrate/SKILL.md +5 -5
  371. package/skills/new-cycle/SKILL.md +2 -2
  372. package/skills/new-cycle/milestone-completeness-rubric.md +16 -16
  373. package/skills/new-project/SKILL.md +1 -1
  374. package/skills/next/SKILL.md +5 -5
  375. package/skills/note/SKILL.md +1 -1
  376. package/skills/openrouter-status/SKILL.md +4 -4
  377. package/skills/optimize/SKILL.md +15 -15
  378. package/skills/pause/SKILL.md +5 -5
  379. package/skills/peer-cli-add/SKILL.md +11 -11
  380. package/skills/peer-cli-add/peer-cli-protocol.md +39 -39
  381. package/skills/peer-cli-customize/SKILL.md +14 -14
  382. package/skills/peers/SKILL.md +4 -4
  383. package/skills/plan/SKILL.md +13 -13
  384. package/skills/plan/plan-procedure.md +24 -24
  385. package/skills/plant-seed/SKILL.md +4 -4
  386. package/skills/pr-branch/SKILL.md +2 -2
  387. package/skills/progress/SKILL.md +15 -15
  388. package/skills/quality-gate/SKILL.md +22 -22
  389. package/skills/quality-gate/threat-modeling.md +19 -19
  390. package/skills/quick/SKILL.md +5 -5
  391. package/skills/reapply-patches/SKILL.md +7 -7
  392. package/skills/reflect/SKILL.md +3 -3
  393. package/skills/reflect/procedures/capability-gap-scan.md +11 -11
  394. package/skills/report-issue/SKILL.md +5 -5
  395. package/skills/report-issue/report-issue-procedure.md +27 -27
  396. package/skills/resume/SKILL.md +9 -9
  397. package/skills/review-backlog/SKILL.md +3 -3
  398. package/skills/review-decisions/SKILL.md +3 -3
  399. package/skills/roi/SKILL.md +5 -5
  400. package/skills/rollout-status/SKILL.md +4 -4
  401. package/skills/router/SKILL.md +11 -11
  402. package/skills/router/capability-gap-emitter.md +6 -6
  403. package/skills/router/router-pick-emitter.md +9 -9
  404. package/skills/router/router-rules.md +7 -7
  405. package/skills/scan/SKILL.md +16 -16
  406. package/skills/scan/scan-procedure.md +42 -42
  407. package/skills/settings/SKILL.md +2 -2
  408. package/skills/ship/SKILL.md +7 -7
  409. package/skills/sketch/SKILL.md +10 -10
  410. package/skills/sketch-wrap-up/SKILL.md +12 -12
  411. package/skills/skill-manifest/SKILL.md +5 -5
  412. package/skills/spike/SKILL.md +7 -7
  413. package/skills/spike-wrap-up/SKILL.md +13 -13
  414. package/skills/start/SKILL.md +8 -8
  415. package/skills/start/start-procedure.md +9 -9
  416. package/skills/stats/SKILL.md +5 -5
  417. package/skills/style/SKILL.md +12 -12
  418. package/skills/style/style-doc-procedure.md +12 -12
  419. package/skills/synthesize/SKILL.md +10 -10
  420. package/skills/timeline/SKILL.md +4 -4
  421. package/skills/todo/SKILL.md +3 -3
  422. package/skills/turn-closeout/SKILL.md +10 -10
  423. package/skills/unlock-decision/SKILL.md +3 -3
  424. package/skills/update/SKILL.md +9 -9
  425. package/skills/using-gdd/SKILL.md +17 -17
  426. package/skills/verify/SKILL.md +13 -13
  427. package/skills/verify/verify-procedure.md +34 -34
  428. package/skills/warm-cache/SKILL.md +8 -8
  429. package/skills/watch-authorities/SKILL.md +9 -9
  430. package/skills/zoom-out/SKILL.md +4 -4
@@ -1,4 +1,4 @@
1
- # Slider Benchmark Spec
1
+ # Slider - Benchmark Spec
2
2
 
3
3
  **Harvested from**: WAI-ARIA APG Slider pattern, Material 3, Radix Slider, Carbon Design System
4
4
  **Wave**: 5 · **Category**: Advanced
@@ -8,7 +8,7 @@
8
8
 
9
9
  ## Purpose
10
10
 
11
- A Slider lets users select a numeric value (or range of values) by dragging a thumb along a track. It is appropriate when the range of values is meaningful as a continuum volume, price, opacity, temperature and the exact numeric value matters less than relative position. For precise numeric entry, pair the slider with a text input. For a range, use two thumbs. *(Material 3, Carbon, Radix agree: slider = continuous or discrete value selection with visual track.)*
11
+ A Slider lets users select a numeric value (or range of values) by dragging a thumb along a track. It is appropriate when the range of values is meaningful as a continuum - volume, price, opacity, temperature - and the exact numeric value matters less than relative position. For precise numeric entry, pair the slider with a text input. For a range, use two thumbs. *(Material 3, Carbon, Radix agree: slider = continuous or discrete value selection with visual track.)*
12
12
 
13
13
  ---
14
14
 
@@ -56,10 +56,10 @@ Range:
56
56
 
57
57
  | State | Trigger | Visual | ARIA |
58
58
  |-------|---------|--------|------|
59
- | default | | Track + thumb at resting position | `aria-valuenow` reflects current value |
60
- | hover | Pointer over thumb | Thumb expands or shows halo | |
61
- | focus | Keyboard focus on thumb | Focus-visible ring on thumb | |
62
- | dragging / active | Mousedown / touch on thumb | Value tooltip visible; thumb slightly enlarged | |
59
+ | default | - | Track + thumb at resting position | `aria-valuenow` reflects current value |
60
+ | hover | Pointer over thumb | Thumb expands or shows halo | - |
61
+ | focus | Keyboard focus on thumb | Focus-visible ring on thumb | - |
62
+ | dragging / active | Mousedown / touch on thumb | Value tooltip visible; thumb slightly enlarged | - |
63
63
  | disabled | `disabled` / `aria-disabled` | 38% opacity; cursor: not-allowed | `aria-disabled="true"` |
64
64
 
65
65
  ---
@@ -74,7 +74,7 @@ Range:
74
74
 
75
75
  **Norm**: 4px track height (Material 3, Carbon). Thumb visual diameter 20px with ::before/::after expanding the touch target to ≥44px without inflating layout.
76
76
 
77
- Cross-link: `reference/surfaces.md` 44×44px touch-target minimum; use padding trick, not enlarged visual.
77
+ Cross-link: `reference/surfaces.md` - 44×44px touch-target minimum; use padding trick, not enlarged visual.
78
78
 
79
79
  ---
80
80
 
@@ -84,7 +84,7 @@ Cross-link: `reference/surfaces.md` — 44×44px touch-target minimum; use paddi
84
84
  - Tick labels: caption-xs, secondary color, centered below tick mark
85
85
  - Min/Max endpoint labels: caption-sm, secondary color, flush with track ends
86
86
 
87
- Cross-link: `reference/typography.md` tabular-nums on value tooltip so digits don't shift width during drag.
87
+ Cross-link: `reference/typography.md` - tabular-nums on value tooltip so digits don't shift width during drag.
88
88
 
89
89
  ---
90
90
 
@@ -95,7 +95,7 @@ Cross-link: `reference/typography.md` — tabular-nums on value tooltip so digit
95
95
 
96
96
  ### Keyboard Contract
97
97
 
98
- *Quoted verbatim from WAI-ARIA APG https://www.w3.org/WAI/ARIA/apg/patterns/slider/ W3C 2024*
98
+ *Quoted verbatim from WAI-ARIA APG - https://www.w3.org/WAI/ARIA/apg/patterns/slider/ - W3C - 2024*
99
99
 
100
100
  | Key | Action |
101
101
  |-----|--------|
@@ -112,12 +112,12 @@ Cross-link: `reference/typography.md` — tabular-nums on value tooltip so digit
112
112
 
113
113
  - Every slider thumb MUST have `aria-valuenow`; update it continuously during drag
114
114
  - `aria-valuetext` MUST be provided when raw number is not human-readable (e.g., "Low", "Medium", "High" for a quality setting, or "$45" for a price)
115
- - Range slider: label each thumb distinctly (e.g., `aria-label="Minimum price"` and `aria-label="Maximum price"`) identical labels confuse screen readers
115
+ - Range slider: label each thumb distinctly (e.g., `aria-label="Minimum price"` and `aria-label="Maximum price"`) - identical labels confuse screen readers
116
116
  - Thumb touch target MUST be ≥44×44px; use `::before`/`::after` pseudo-element padding if visual thumb is smaller
117
- - Do not use `<input type="range">` hidden behind a custom div without ARIA the native element is preferable when no custom styling is required
117
+ - Do not use `<input type="range">` hidden behind a custom div without ARIA - the native element is preferable when no custom styling is required
118
118
  - Disabled sliders: use `aria-disabled="true"`; keep thumb in tab order so AT can announce the current value
119
119
 
120
- Cross-link: `reference/accessibility.md` slider role, aria-valuetext guidance.
120
+ Cross-link: `reference/accessibility.md` - slider role, aria-valuetext guidance.
121
121
 
122
122
  ---
123
123
 
@@ -125,15 +125,15 @@ Cross-link: `reference/accessibility.md` — slider role, aria-valuetext guidanc
125
125
 
126
126
  | Transition | Duration | Easing | Notes |
127
127
  |------------|----------|--------|-------|
128
- | Thumb drag | 0ms | | No easing on drag follows pointer exactly |
128
+ | Thumb drag | 0ms | - | No easing on drag - follows pointer exactly |
129
129
  | Keyboard step | 80ms | ease-out | Smooth snap to new position |
130
130
  | Value tooltip appear | 100ms | ease-out | Fade in on focus/drag |
131
131
  | Value tooltip dismiss | 150ms | ease-in | Fade out on blur |
132
132
  | Tick mark appear | 120ms | ease-out | When switching to discrete mode |
133
133
 
134
- **BAN**: Do not add momentum or inertia easing to thumb drag feels broken and breaks accessibility (thumb does not match pointer).
134
+ **BAN**: Do not add momentum or inertia easing to thumb drag - feels broken and breaks accessibility (thumb does not match pointer).
135
135
 
136
- Cross-link: `reference/motion.md` reduced-motion: remove keyboard-step animation; thumb jumps instantly.
136
+ Cross-link: `reference/motion.md` - reduced-motion: remove keyboard-step animation; thumb jumps instantly.
137
137
 
138
138
  ---
139
139
 
@@ -146,9 +146,9 @@ Cross-link: `reference/motion.md` — reduced-motion: remove keyboard-step anima
146
146
  - Show tick marks only for discrete sliders with ≤10 steps *(Material 3, Carbon)*
147
147
 
148
148
  ### Don't
149
- - Don't build a slider from `<div>` with mouse events only no keyboard, no ARIA *(diverges from all 4 systems)*
150
- - Don't omit `aria-valuenow` updates during drag AT users hear a stale value *(WAI-ARIA APG)*
151
- - Don't let the visual thumb area be smaller than 12px with no hit-area expansion fails WCAG 2.5.8 *(Material 3)*
149
+ - Don't build a slider from `<div>` with mouse events only - no keyboard, no ARIA *(diverges from all 4 systems)*
150
+ - Don't omit `aria-valuenow` updates during drag - AT users hear a stale value *(WAI-ARIA APG)*
151
+ - Don't let the visual thumb area be smaller than 12px with no hit-area expansion - fails WCAG 2.5.8 *(Material 3)*
152
152
  - Don't use identical `aria-label` for both range thumbs *(WAI-ARIA APG)*
153
153
 
154
154
  ---
@@ -157,8 +157,8 @@ Cross-link: `reference/motion.md` — reduced-motion: remove keyboard-step anima
157
157
 
158
158
  | Anti-pattern | Entry |
159
159
  |--------------|-------|
160
- | BAN-09 | Custom interactive widget with mouse events only, no keyboard `reference/anti-patterns.md#ban-09` |
161
- | BAN-11 | Touch target below 44px without padding expansion `reference/anti-patterns.md#ban-11` |
160
+ | BAN-09 | Custom interactive widget with mouse events only, no keyboard - `reference/anti-patterns.md#ban-09` |
161
+ | BAN-11 | Touch target below 44px without padding expansion - `reference/anti-patterns.md#ban-11` |
162
162
 
163
163
  ---
164
164
 
@@ -1,4 +1,4 @@
1
- # Stepper / Wizard Benchmark Spec
1
+ # Stepper / Wizard - Benchmark Spec
2
2
 
3
3
  **Harvested from**: Carbon (ProgressIndicator + StepNavigation), Material 3 Stepper, Atlassian Design System, Mantine Stepper
4
4
  **Wave**: 5 · **Category**: Advanced
@@ -8,7 +8,7 @@
8
8
 
9
9
  ## Purpose
10
10
 
11
- A Stepper (or Wizard) guides users through a sequential multi-step flow onboarding, checkout, multi-page forms, settings setup. It communicates how many steps exist, which step is current, which are complete, and which are upcoming. Unlike Tabs (free navigation), a linear Stepper enforces order: the user must complete the current step before advancing. *(Carbon, Material 3, Atlassian, Mantine agree: step indicator list + content area + explicit Next/Back buttons is the canonical wizard pattern.)*
11
+ A Stepper (or Wizard) guides users through a sequential multi-step flow - onboarding, checkout, multi-page forms, settings setup. It communicates how many steps exist, which step is current, which are complete, and which are upcoming. Unlike Tabs (free navigation), a linear Stepper enforces order: the user must complete the current step before advancing. *(Carbon, Material 3, Atlassian, Mantine agree: step indicator list + content area + explicit Next/Back buttons is the canonical wizard pattern.)*
12
12
 
13
13
  ---
14
14
 
@@ -59,7 +59,7 @@ Actions:
59
59
 
60
60
  | State | Trigger | Visual | ARIA |
61
61
  |-------|---------|--------|------|
62
- | upcoming | Step not yet reached | Muted circle/number, secondary text color | |
62
+ | upcoming | Step not yet reached | Muted circle/number, secondary text color | - |
63
63
  | current | Active step | Brand-color filled circle; bold label | `aria-current="step"` |
64
64
  | completed | Step passed + valid | Check icon; full-opacity; clickable if non-linear | `aria-label="Step N: [name] - completed"` |
65
65
  | error | Step has validation errors | Error color circle; error icon | `aria-label="Step N: [name] - has errors"` |
@@ -77,7 +77,7 @@ Actions:
77
77
 
78
78
  **Norm**: Step circles 32px default *(Carbon, Mantine)*. Horizontal spacing between steps should scale with the available width so the indicator spans the container. Connector line is centered between circles.
79
79
 
80
- Cross-link: `reference/surfaces.md` minimum 44×44px touch target for clickable step indicators.
80
+ Cross-link: `reference/surfaces.md` - minimum 44×44px touch target for clickable step indicators.
81
81
 
82
82
  ---
83
83
 
@@ -86,9 +86,9 @@ Cross-link: `reference/surfaces.md` — minimum 44×44px touch target for clicka
86
86
  - Step label: body-sm (completed/upcoming) → body-sm weight 600 (current)
87
87
  - Step number/icon inside circle: caption-sm, center-aligned
88
88
  - Step description (optional sub-label): caption-sm, secondary color
89
- - Action buttons: body-md, weight 500 same as standard button spec
89
+ - Action buttons: body-md, weight 500 - same as standard button spec
90
90
 
91
- Cross-link: `reference/typography.md` label weight change for current state.
91
+ Cross-link: `reference/typography.md` - label weight change for current state.
92
92
 
93
93
  ---
94
94
 
@@ -99,27 +99,27 @@ Cross-link: `reference/typography.md` — label weight change for current state.
99
99
 
100
100
  ### Keyboard Contract
101
101
 
102
- *Derived from WAI-ARIA APG list and button patterns https://www.w3.org/WAI/ARIA/apg/ W3C 2024*
102
+ *Derived from WAI-ARIA APG list and button patterns - https://www.w3.org/WAI/ARIA/apg/ - W3C - 2024*
103
103
 
104
104
  | Key | Action |
105
105
  |-----|--------|
106
106
  | Tab | Move focus through interactive elements: clickable completed steps (non-linear), Back button, Next/Submit button |
107
107
  | Enter / Space | Activate focused Back, Next, Submit button; activate clickable completed step (non-linear) |
108
- | (No arrow-key navigation) | Steps are NOT tabs do not implement roving tabindex / arrow-key navigation between steps |
108
+ | (No arrow-key navigation) | Steps are NOT tabs - do not implement roving tabindex / arrow-key navigation between steps |
109
109
 
110
110
  Steps are NOT `role="tab"` and do not use the tab keyboard pattern. Upcoming steps are not focusable in linear mode. Only completed steps are interactive (and focusable) in non-linear mode.
111
111
 
112
112
  ### Accessibility Rules
113
113
 
114
- - Step indicators MUST use `role="list"` + `role="listitem"` not `role="tablist"` + `role="tab"` (tabs allow free navigation; wizard steps do not)
115
- - Current step MUST have `aria-current="step"` this is the correct token (not `aria-selected` or `aria-checked`)
114
+ - Step indicators MUST use `role="list"` + `role="listitem"` - not `role="tablist"` + `role="tab"` (tabs allow free navigation; wizard steps do not)
115
+ - Current step MUST have `aria-current="step"` - this is the correct token (not `aria-selected` or `aria-checked`)
116
116
  - Completed steps in non-linear mode MUST be `<button>` elements (or have `role="button"` + `tabindex="0"`) with `aria-label` including the step name and "completed" state
117
- - Step connector lines MUST be `aria-hidden="true"` they are purely decorative
117
+ - Step connector lines MUST be `aria-hidden="true"` - they are purely decorative
118
118
  - Validate current step before allowing Next; display inline error messages with `aria-describedby` associations
119
- - "Next", "Back", and "Submit" MUST be explicit text labels do not use icon-only navigation buttons
119
+ - "Next", "Back", and "Submit" MUST be explicit text labels - do not use icon-only navigation buttons
120
120
  - Announce step transitions via `aria-live="polite"` on the content region header (e.g., "Step 2 of 4: Profile")
121
121
 
122
- Cross-link: `reference/accessibility.md` aria-current values, list semantics.
122
+ Cross-link: `reference/accessibility.md` - aria-current values, list semantics.
123
123
 
124
124
  ---
125
125
 
@@ -132,25 +132,25 @@ Cross-link: `reference/accessibility.md` — aria-current values, list semantics
132
132
  | Error state appear | 150ms | ease-out | Circle color change + icon fade in |
133
133
  | Back navigation | 200ms | ease-in-out | Slide right (reverse direction) |
134
134
 
135
- **BAN**: Do not use the same slide direction for both forward and backward step navigation direction must be consistent with the mental model (forward = left, backward = right).
135
+ **BAN**: Do not use the same slide direction for both forward and backward step navigation - direction must be consistent with the mental model (forward = left, backward = right).
136
136
 
137
- Cross-link: `reference/motion.md` reduced-motion: skip slide; cross-fade content area only.
137
+ Cross-link: `reference/motion.md` - reduced-motion: skip slide; cross-fade content area only.
138
138
 
139
139
  ---
140
140
 
141
141
  ## Do / Don't
142
142
 
143
143
  ### Do
144
- - Use `role="list"` for the step indicator steps are a list, not a tab set *(WAI-ARIA APG, Carbon)*
144
+ - Use `role="list"` for the step indicator - steps are a list, not a tab set *(WAI-ARIA APG, Carbon)*
145
145
  - Set `aria-current="step"` on the active step *(WAI-ARIA spec §aria-current)*
146
146
  - Validate the current step before advancing and show inline errors *(Carbon, Atlassian)*
147
- - Label Back/Next/Submit buttons explicitly not icons or chevrons *(Material 3, Carbon, Mantine)*
147
+ - Label Back/Next/Submit buttons explicitly - not icons or chevrons *(Material 3, Carbon, Mantine)*
148
148
 
149
149
  ### Don't
150
- - Don't use `role="tablist"` for steps tabs allow free navigation; wizard steps are ordered and gated *(diverges from all 4 systems)*
151
- - Don't allow jumping to future unvisited steps in linear mode breaks the sequential contract *(Carbon, Atlassian)*
152
- - Don't use `aria-selected` on steps `aria-current="step"` is the correct token *(WAI-ARIA spec)*
153
- - Don't omit the Back button users must be able to correct previous steps *(Material 3, Atlassian)*
150
+ - Don't use `role="tablist"` for steps - tabs allow free navigation; wizard steps are ordered and gated *(diverges from all 4 systems)*
151
+ - Don't allow jumping to future unvisited steps in linear mode - breaks the sequential contract *(Carbon, Atlassian)*
152
+ - Don't use `aria-selected` on steps - `aria-current="step"` is the correct token *(WAI-ARIA spec)*
153
+ - Don't omit the Back button - users must be able to correct previous steps *(Material 3, Atlassian)*
154
154
 
155
155
  ---
156
156
 
@@ -158,8 +158,8 @@ Cross-link: `reference/motion.md` — reduced-motion: skip slide; cross-fade con
158
158
 
159
159
  | Anti-pattern | Entry |
160
160
  |--------------|-------|
161
- | BAN-14 | Stepper using role="tablist" semantically incorrect navigation model `reference/anti-patterns.md#ban-14` |
162
- | BAN-07 | Missing aria-current on active step `reference/anti-patterns.md#ban-07` |
161
+ | BAN-14 | Stepper using role="tablist" - semantically incorrect navigation model - `reference/anti-patterns.md#ban-14` |
162
+ | BAN-07 | Missing aria-current on active step - `reference/anti-patterns.md#ban-07` |
163
163
 
164
164
  ---
165
165
 
@@ -215,6 +215,6 @@ grep -rn 'wizard.*next\|stepper.*next\|wizard.*back\|stepper.*back' src/ | grep
215
215
  </ul>
216
216
  ```
217
217
 
218
- **Why it fails**: `role="tablist"` implies that all tabs are independently activatable and content switches freely this is correct for Tabs but wrong for a wizard where steps are gated. AT users expect arrow-key navigation between tabs; in a wizard this would allow jumping to uncompleted future steps. `aria-selected` is the tab token; the correct token for a wizard is `aria-current="step"`.
218
+ **Why it fails**: `role="tablist"` implies that all tabs are independently activatable and content switches freely - this is correct for Tabs but wrong for a wizard where steps are gated. AT users expect arrow-key navigation between tabs; in a wizard this would allow jumping to uncompleted future steps. `aria-selected` is the tab token; the correct token for a wizard is `aria-current="step"`.
219
219
  **Grep detection**: `grep -rn 'role="tablist"' src/ | grep -i 'step\|wizard'`
220
220
  **Fix**: Replace `<ul role="tablist">` with `<ol role="list">` (ordered list signals sequence), each `<li>` with `role="listitem"`, remove `aria-selected`, and add `aria-current="step"` to the current step. Make only completed steps keyboard-focusable (as `<button>`) in non-linear mode; upcoming steps are not interactive.
@@ -1,4 +1,4 @@
1
- # Switch Benchmark Spec
1
+ # Switch - Benchmark Spec
2
2
 
3
3
  **Harvested from**: Apple HIG, Material 3, Radix UI, Spectrum (Adobe), Polaris, Fluent 2, Mantine, shadcn/ui
4
4
  **Wave**: 1 · **Category**: Inputs
@@ -7,7 +7,7 @@
7
7
 
8
8
  ## Purpose
9
9
 
10
- A switch (toggle) represents an immediate binary action changes take effect without a confirm step, like enabling dark mode or activating a feature. It differs from a checkbox in this immediacy: a checkbox is a form option submitted later; a switch acts now. Do not use a switch inside a form that requires a submit button to apply changes. *(Apple HIG, Material 3, Polaris all distinguish switch from checkbox this way)*
10
+ A switch (toggle) represents an immediate binary action - changes take effect without a confirm step, like enabling dark mode or activating a feature. It differs from a checkbox in this immediacy: a checkbox is a form option submitted later; a switch acts now. Do not use a switch inside a form that requires a submit button to apply changes. *(Apple HIG, Material 3, Polaris all distinguish switch from checkbox this way)*
11
11
 
12
12
  ---
13
13
 
@@ -41,7 +41,7 @@ Label ← visible text describing the setting
41
41
  | Large | 32px height | Material 3, Apple HIG |
42
42
 
43
43
  **Norm** (≥5/18): label appears to the left of the switch (LTR); toggle is right-aligned.
44
- **Diverge**: thumb icon vs. bare thumb Material 3 adds check icon on ON, x on OFF; most others use bare thumb. Bare is simpler and more portable across themes.
44
+ **Diverge**: thumb icon vs. bare thumb - Material 3 adds check icon on ON, x on OFF; most others use bare thumb. Bare is simpler and more portable across themes.
45
45
 
46
46
  ---
47
47
 
@@ -51,8 +51,8 @@ Label ← visible text describing the setting
51
51
  |-------|--------|------|
52
52
  | OFF (unchecked) | Thumb left, track muted | `aria-checked="false"` |
53
53
  | ON (checked) | Thumb right, track colored | `aria-checked="true"` |
54
- | hover | Thumb scale up slightly (1.1×) | |
55
- | focus | 2px focus ring around track | |
54
+ | hover | Thumb scale up slightly (1.1×) | - |
55
+ | focus | 2px focus ring around track | - |
56
56
  | disabled OFF | 38% opacity, thumb left | `aria-disabled="true"` |
57
57
  | disabled ON | 38% opacity, thumb right | `aria-disabled="true"` |
58
58
 
@@ -66,17 +66,17 @@ Label ← visible text describing the setting
66
66
  | md (default) | 44×24px | 20px | 44×44px |
67
67
  | lg | 52×28px | 24px | 48×48px |
68
68
 
69
- Track radius: `border-radius: 9999px` (pill shape all 8 systems agree).
69
+ Track radius: `border-radius: 9999px` (pill shape - all 8 systems agree).
70
70
  Thumb travel: track width − thumb diameter − (2 × inset padding ≈ 2px).
71
71
 
72
- Cross-link: `reference/surfaces.md` concentric radius rule does NOT apply here (pill shape is intentional, not nested radius)
72
+ Cross-link: `reference/surfaces.md` - concentric radius rule does NOT apply here (pill shape is intentional, not nested radius)
73
73
 
74
74
  ---
75
75
 
76
76
  ## Typography
77
77
 
78
78
  - Label: 14px/400 body weight; not distinguished from surrounding text
79
- - State text (optional): 10–11px/600 uppercase inside track ensure ≥4.5:1 contrast against track colour
79
+ - State text (optional): 10–11px/600 uppercase inside track - ensure ≥4.5:1 contrast against track colour
80
80
 
81
81
  ---
82
82
 
@@ -87,7 +87,7 @@ Cross-link: `reference/surfaces.md` — concentric radius rule does NOT apply he
87
87
 
88
88
  ### Keyboard Contract
89
89
 
90
- *Quoted verbatim from WAI-ARIA APG https://www.w3.org/WAI/ARIA/apg/patterns/switch/ W3C 2024*
90
+ *Quoted verbatim from WAI-ARIA APG - https://www.w3.org/WAI/ARIA/apg/patterns/switch/ - W3C - 2024*
91
91
 
92
92
  | Key | Action |
93
93
  |-----|--------|
@@ -96,9 +96,9 @@ Cross-link: `reference/surfaces.md` — concentric radius rule does NOT apply he
96
96
 
97
97
  ### Accessibility Rules
98
98
 
99
- - `role="switch"` with `aria-checked="true/false"` not `role="checkbox"` (different semantic contract; switch implies immediate action)
99
+ - `role="switch"` with `aria-checked="true/false"` - not `role="checkbox"` (different semantic contract; switch implies immediate action)
100
100
  - Label MUST be associated: `<label>` with `for` on the switch element, or `aria-label`/`aria-labelledby`
101
- - State text ("ON"/"OFF") inside the track is a visual enhancement only it MUST NOT be the sole accessible name
101
+ - State text ("ON"/"OFF") inside the track is a visual enhancement only - it MUST NOT be the sole accessible name
102
102
  - Disabled: use `aria-disabled="true"` (not native `disabled` attr) if keyboard focus should remain (e.g. to explain why it's disabled via tooltip)
103
103
  - Announce state change via `aria-live="polite"` if switching triggers a significant UI change distant from the control
104
104
 
@@ -113,7 +113,7 @@ Cross-link: `reference/surfaces.md` — concentric radius rule does NOT apply he
113
113
  | Thumb scale on hover | 80ms | ease | 1→1.1× scale |
114
114
  | Press scale | 80ms | ease | 1→0.96× (canonical press scale) |
115
115
 
116
- Cross-link: `reference/motion.md` spring bounce=0 canonical values, canonical scale-on-press 0.96
116
+ Cross-link: `reference/motion.md` - spring bounce=0 canonical values, canonical scale-on-press 0.96
117
117
 
118
118
  ---
119
119
 
@@ -121,15 +121,15 @@ Cross-link: `reference/motion.md` — spring bounce=0 canonical values, canonica
121
121
 
122
122
  ### Do
123
123
  - Use `role="switch"` not `role="checkbox"` for toggle-with-immediate-effect *(WAI-ARIA APG, Radix)*
124
- - Animate the thumb sliding static snap removes the "toggle" affordance *(Apple HIG, Material 3)*
124
+ - Animate the thumb sliding - static snap removes the "toggle" affordance *(Apple HIG, Material 3)*
125
125
  - Place label to the left of the switch in LTR layouts *(Apple HIG, Material 3, Polaris)*
126
- - Apply changes immediately on toggle no submit button required *(Apple HIG, Polaris)*
126
+ - Apply changes immediately on toggle - no submit button required *(Apple HIG, Polaris)*
127
127
 
128
128
  ### Don't
129
- - Don't use a switch inside a form where the user must click "Save" use a checkbox *(Apple HIG, Polaris)*
130
- - Don't rely on track colour alone to communicate state (colour blind users) add icon or label *(Spectrum, Material 3)*
131
- - Don't use the same `aria-label` for ON and OFF states screen readers read the current state via `aria-checked` *(WAI-ARIA APG)*
132
- - Don't animate thumb with `transition: all` it catches border-radius changes and causes thumb deformation *(BAN-04)*
129
+ - Don't use a switch inside a form where the user must click "Save" - use a checkbox *(Apple HIG, Polaris)*
130
+ - Don't rely on track colour alone to communicate state (colour blind users) - add icon or label *(Spectrum, Material 3)*
131
+ - Don't use the same `aria-label` for ON and OFF states - screen readers read the current state via `aria-checked` *(WAI-ARIA APG)*
132
+ - Don't animate thumb with `transition: all` - it catches border-radius changes and causes thumb deformation *(BAN-04)*
133
133
 
134
134
  ---
135
135
 
@@ -137,7 +137,7 @@ Cross-link: `reference/motion.md` — spring bounce=0 canonical values, canonica
137
137
 
138
138
  | Anti-pattern | Entry |
139
139
  |--------------|-------|
140
- | BAN-04 | `transition: all` `reference/anti-patterns.md#ban-04` |
140
+ | BAN-04 | `transition: all` - `reference/anti-patterns.md#ban-04` |
141
141
  | Checkbox semantics for immediate-action toggle | `reference/anti-patterns.md` |
142
142
 
143
143
  ---
@@ -1,4 +1,4 @@
1
- # Table (Data Table / Data Grid) Benchmark Spec
1
+ # Table (Data Table / Data Grid) - Benchmark Spec
2
2
 
3
3
  **Harvested from**: Carbon DataTable, Polaris DataTable, Atlassian DynamicTable, Ant Design Table, UUPM (app-interface, MIT)
4
4
  **Wave**: 4 · **Category**: Navigation & Data
@@ -63,15 +63,15 @@ A data table presents structured, comparable information in rows and columns. It
63
63
 
64
64
  | State | Trigger | Visual | ARIA |
65
65
  |-------|---------|--------|------|
66
- | default | | Alternating row colors or border separators | |
67
- | row-hover | pointer over row | Subtle row highlight (4% overlay) | |
66
+ | default | - | Alternating row colors or border separators | - |
67
+ | row-hover | pointer over row | Subtle row highlight (4% overlay) | - |
68
68
  | row-selected | checkbox checked | Row highlight; checkbox filled | `aria-selected="true"` on `<tr>` |
69
69
  | header-sort-asc | sort click | Arrow indicator up; column highlight | `aria-sort="ascending"` on `<th>` |
70
70
  | header-sort-desc | sort click again | Arrow indicator down | `aria-sort="descending"` on `<th>` |
71
71
  | header-sort-none | default or reset | No indicator | `aria-sort="none"` on sortable `<th>` |
72
- | header-focus | keyboard focus on sortable `<th>` | 2px focus-visible ring | |
72
+ | header-focus | keyboard focus on sortable `<th>` | 2px focus-visible ring | - |
73
73
  | loading | data fetch | Skeleton rows or spinner overlay | `aria-busy="true"` on table or container |
74
- | empty | no results | Empty state illustration + message | |
74
+ | empty | no results | Empty state illustration + message | - |
75
75
 
76
76
  ---
77
77
 
@@ -92,10 +92,10 @@ Virtualise rows when `rowCount > 200`; use TanStack Virtual or react-virtual.
92
92
 
93
93
  - Column header: body-sm or label-sm (12–13px), weight 600, `color: --text-secondary`
94
94
  - Cell text: body-sm (13–14px), weight 400
95
- - Numeric cells: `font-variant-numeric: tabular-nums` column values align on decimal point
95
+ - Numeric cells: `font-variant-numeric: tabular-nums` - column values align on decimal point
96
96
  - Truncation: `text-overflow: ellipsis` on cells with `max-width`; tooltip reveals full value on hover
97
97
 
98
- Cross-link: `reference/typography.md` tabular-nums, body-sm
98
+ Cross-link: `reference/typography.md` - tabular-nums, body-sm
99
99
 
100
100
  ---
101
101
 
@@ -106,7 +106,7 @@ Cross-link: `reference/typography.md` — tabular-nums, body-sm
106
106
 
107
107
  ### Keyboard Contract
108
108
 
109
- *Quoted verbatim from WAI-ARIA APG https://www.w3.org/WAI/ARIA/apg/patterns/grid/ W3C 2024*
109
+ *Quoted verbatim from WAI-ARIA APG - https://www.w3.org/WAI/ARIA/apg/patterns/grid/ - W3C - 2024*
110
110
 
111
111
  | Key | Action (role="grid") |
112
112
  |-----|---------------------|
@@ -123,14 +123,14 @@ Cross-link: `reference/typography.md` — tabular-nums, body-sm
123
123
 
124
124
  ### Accessibility Rules
125
125
 
126
- - ALL `<th>` column headers MUST have `scope="col"` missing scope breaks AT table navigation
126
+ - ALL `<th>` column headers MUST have `scope="col"` - missing scope breaks AT table navigation
127
127
  - Sortable `<th>` elements MUST have `aria-sort` with value `ascending`, `descending`, or `none`
128
- - Selected rows MUST use `aria-selected="true"` on `<tr>` CSS class alone is invisible to AT
128
+ - Selected rows MUST use `aria-selected="true"` on `<tr>` - CSS class alone is invisible to AT
129
129
  - `<table>` MUST have a `<caption>` or `aria-label` to announce the table's purpose
130
130
  - The responsive scroll wrapper MUST have `tabindex="0"` so keyboard users can scroll horizontally
131
131
  - `role="grid"` enables cell-level arrow-key navigation; use only when cells contain interactive controls
132
132
 
133
- Cross-link: `reference/accessibility.md` table semantics, grid pattern
133
+ Cross-link: `reference/accessibility.md` - table semantics, grid pattern
134
134
 
135
135
  ---
136
136
 
@@ -144,25 +144,25 @@ Cross-link: `reference/accessibility.md` — table semantics, grid pattern
144
144
  | Expandable row open | 150ms | ease-out | Height expand |
145
145
  | Skeleton shimmer | 1500ms | linear loop | Loading placeholder |
146
146
 
147
- **BAN**: Do not animate `width` on table columns causes full table relayout on every frame.
147
+ **BAN**: Do not animate `width` on table columns - causes full table relayout on every frame.
148
148
 
149
- Cross-link: `reference/motion.md` layout-affecting transitions, skeleton shimmer
149
+ Cross-link: `reference/motion.md` - layout-affecting transitions, skeleton shimmer
150
150
 
151
151
  ---
152
152
 
153
153
  ## Do / Don't
154
154
 
155
155
  ### Do
156
- - Add `scope="col"` to every `<th>` screen readers use this to announce column context *(WAI-ARIA, Carbon)*
157
- - Use `aria-sort` on sortable headers not just a visual arrow icon *(Carbon, Polaris, Atlassian)*
156
+ - Add `scope="col"` to every `<th>` - screen readers use this to announce column context *(WAI-ARIA, Carbon)*
157
+ - Use `aria-sort` on sortable headers - not just a visual arrow icon *(Carbon, Polaris, Atlassian)*
158
158
  - Use `tabindex="0"` on horizontal scroll wrapper for keyboard accessibility *(WCAG 2.1.1)*
159
- - Virtualise rows at > 200 items prevents browser paint lag *(Carbon, Ant)*
159
+ - Virtualise rows at > 200 items - prevents browser paint lag *(Carbon, Ant)*
160
160
 
161
161
  ### Don't
162
- - Don't build a "table" with `<div>` elements and no ARIA grid roles invisible to AT *(WCAG 1.3.1)*
163
- - Don't use `aria-sort` on non-sortable columns misleads users into clicking non-interactive headers *(WAI-ARIA)*
164
- - Don't place `overflow-x: auto` on `<table>` directly wrap in a `<div>` with `tabindex="0"` *(WCAG 2.1.1)*
165
- - Don't use `display: contents` on `<thead>/<tbody>/<tr>` breaks AT table parsing *(WCAG 1.3.1)*
162
+ - Don't build a "table" with `<div>` elements and no ARIA grid roles - invisible to AT *(WCAG 1.3.1)*
163
+ - Don't use `aria-sort` on non-sortable columns - misleads users into clicking non-interactive headers *(WAI-ARIA)*
164
+ - Don't place `overflow-x: auto` on `<table>` directly - wrap in a `<div>` with `tabindex="0"` *(WCAG 2.1.1)*
165
+ - Don't use `display: contents` on `<thead>/<tbody>/<tr>` - breaks AT table parsing *(WCAG 1.3.1)*
166
166
 
167
167
  ---
168
168
 
@@ -170,7 +170,7 @@ Cross-link: `reference/motion.md` — layout-affecting transitions, skeleton shi
170
170
 
171
171
  | Anti-pattern | Entry |
172
172
  |--------------|-------|
173
- | BAN-04 | `transition: all` on table cells `reference/anti-patterns.md#ban-04` |
173
+ | BAN-04 | `transition: all` on table cells - `reference/anti-patterns.md#ban-04` |
174
174
 
175
175
  ---
176
176
 
@@ -1,4 +1,4 @@
1
- # Tabs Benchmark Spec
1
+ # Tabs - Benchmark Spec
2
2
 
3
3
  **Harvested from**: WAI-ARIA APG, Radix UI, Carbon, Mantine, Material 3, Chakra UI, Atlassian, Fluent 2
4
4
  **Wave**: 2 · **Category**: Containers
@@ -51,7 +51,7 @@ Vertical tabs (sidebar):
51
51
  | Icon + label | Icon above or beside label | Material 3, Carbon |
52
52
 
53
53
  **Norm** (≥6/18): arrow keys navigate between tabs; Tab key moves to active panel content.
54
- **Diverge**: automatic vs. manual activation automatic (arrow key selects immediately) vs. manual (arrow key moves focus, Enter selects). WAI-ARIA APG recommends manual for complex panels; Radix defaults to automatic.
54
+ **Diverge**: automatic vs. manual activation - automatic (arrow key selects immediately) vs. manual (arrow key moves focus, Enter selects). WAI-ARIA APG recommends manual for complex panels; Radix defaults to automatic.
55
55
 
56
56
  ---
57
57
 
@@ -96,7 +96,7 @@ Vertical tabs (sidebar):
96
96
 
97
97
  ### Keyboard Contract
98
98
 
99
- *Quoted verbatim from WAI-ARIA APG https://www.w3.org/WAI/ARIA/apg/patterns/tabs/ W3C 2024*
99
+ *Quoted verbatim from WAI-ARIA APG - https://www.w3.org/WAI/ARIA/apg/patterns/tabs/ - W3C - 2024*
100
100
 
101
101
  | Key | Action |
102
102
  |-----|--------|
@@ -116,12 +116,12 @@ Vertical tabs (sidebar):
116
116
 
117
117
  ### Accessibility Rules
118
118
 
119
- - Only the selected tab has `tabindex="0"` all other tabs have `tabindex="-1"` (roving tabindex pattern)
119
+ - Only the selected tab has `tabindex="0"` - all other tabs have `tabindex="-1"` (roving tabindex pattern)
120
120
  - `tablist` MUST have a label: `aria-label="[Section name]"` or `aria-labelledby`
121
121
  - Inactive panels MUST be hidden with `hidden` attribute (not just CSS) so AT skips them
122
122
  - Panel SHOULD have `tabindex="0"` to allow focusing the panel after Tab from the tablist
123
123
  - Icon-only tabs MUST have `aria-label` on the tab element
124
- - Linked tabs (tabs that change URL): use `role="link"` semantics or native `<a>` within tab but note this changes the keyboard contract
124
+ - Linked tabs (tabs that change URL): use `role="link"` semantics or native `<a>` within tab - but note this changes the keyboard contract
125
125
 
126
126
  ---
127
127
 
@@ -133,23 +133,23 @@ Vertical tabs (sidebar):
133
133
  | Panel fade | 150ms | ease | Crossfade between panels |
134
134
  | Scroll reveal | 200ms | ease | When scrolling to new active tab in overflow |
135
135
 
136
- Cross-link: `reference/motion.md` `prefers-reduced-motion`: disable indicator slide + panel fade
136
+ Cross-link: `reference/motion.md` - `prefers-reduced-motion`: disable indicator slide + panel fade
137
137
 
138
138
  ---
139
139
 
140
140
  ## Do / Don't
141
141
 
142
142
  ### Do
143
- - Use roving tabindex `tabindex="0"` on selected, `tabindex="-1"` on all others *(WAI-ARIA APG)*
143
+ - Use roving tabindex - `tabindex="0"` on selected, `tabindex="-1"` on all others *(WAI-ARIA APG)*
144
144
  - Navigate with arrow keys between tabs, not Tab key *(WAI-ARIA APG)*
145
145
  - Label the tablist with `aria-label` or `aria-labelledby` *(WAI-ARIA APG)*
146
146
  - Hide inactive panels with `hidden` attribute so AT skips them *(WAI-ARIA APG)*
147
147
 
148
148
  ### Don't
149
- - Don't use Tab key to navigate between tabs Tab moves in/out of the tablist *(WAI-ARIA APG)*
150
- - Don't show all tab panel content simultaneously defeats the purpose of tabs *(all systems)*
151
- - Don't use more than 7 tabs in a horizontal tab strip prefer a select or dropdown for overflow *(Carbon, Atlassian)*
152
- - Don't use tabs for steps that must be completed in order use a stepper *(Material 3, Atlassian)*
149
+ - Don't use Tab key to navigate between tabs - Tab moves in/out of the tablist *(WAI-ARIA APG)*
150
+ - Don't show all tab panel content simultaneously - defeats the purpose of tabs *(all systems)*
151
+ - Don't use more than 7 tabs in a horizontal tab strip - prefer a select or dropdown for overflow *(Carbon, Atlassian)*
152
+ - Don't use tabs for steps that must be completed in order - use a stepper *(Material 3, Atlassian)*
153
153
 
154
154
  ---
155
155
 
@@ -1,4 +1,4 @@
1
- # Toast / Snackbar Benchmark Spec
1
+ # Toast / Snackbar - Benchmark Spec
2
2
 
3
3
  **Harvested from**: Radix UI Toast, Material 3 (Snackbar), Polaris (Toast), Carbon (Notification Toast)
4
4
  **Wave**: 3 · **Category**: Feedback
@@ -52,7 +52,7 @@ A toast (snackbar) is a transient, non-blocking notification that appears briefl
52
52
  |-------|---------|--------|------|
53
53
  | entering | mount | Slide-in from bottom-right + fade-in, 200ms ease-out | Live region populated |
54
54
  | visible | auto | Full opacity, static position | `role="status"` or `role="alert"` |
55
- | hover / focus | pointer/keyboard | Auto-dismiss timer paused | |
55
+ | hover / focus | pointer/keyboard | Auto-dismiss timer paused | - |
56
56
  | exiting | dismiss / timeout | Slide-out + fade-out, 150ms ease-in | Removed from DOM |
57
57
  | queued | >3 toasts active | Off-screen; waits for visible slot | Not yet in DOM |
58
58
 
@@ -75,11 +75,11 @@ A toast (snackbar) is a transient, non-blocking notification that appears briefl
75
75
 
76
76
  ## Typography
77
77
 
78
- - Message: body-sm (14px/400) same as body to ensure readability at a glance
79
- - Action label: label-sm (13px/500) slightly heavier to signal interactivity
80
- - No wrapping beyond 2 lines if message exceeds 2 lines, use Alert instead
78
+ - Message: body-sm (14px/400) - same as body to ensure readability at a glance
79
+ - Action label: label-sm (13px/500) - slightly heavier to signal interactivity
80
+ - No wrapping beyond 2 lines - if message exceeds 2 lines, use Alert instead
81
81
 
82
- Cross-link: `reference/typography.md` body-sm, label-sm definitions
82
+ Cross-link: `reference/typography.md` - body-sm, label-sm definitions
83
83
 
84
84
  ---
85
85
 
@@ -90,7 +90,7 @@ Cross-link: `reference/typography.md` — body-sm, label-sm definitions
90
90
 
91
91
  ### Keyboard Contract
92
92
 
93
- *Quoted verbatim from WAI-ARIA APG https://www.w3.org/WAI/ARIA/apg/patterns/alert/ W3C 2024*
93
+ *Quoted verbatim from WAI-ARIA APG - https://www.w3.org/WAI/ARIA/apg/patterns/alert/ - W3C - 2024*
94
94
 
95
95
  | Key | Action |
96
96
  |-----|--------|
@@ -102,14 +102,14 @@ Toast container itself is not focusable. Only interactive children (action, dism
102
102
 
103
103
  ### Accessibility Rules
104
104
 
105
- - `role="alert"` on warning/error toasts causes immediate announcement by screen readers do NOT use for info/success (too noisy)
106
- - `role="status"` on info/success uses a polite live region announced at next opportunity
107
- - The live region container MUST be present in the DOM before the toast text is injected injecting `role="alert"` dynamically may not announce *(WCAG 4.1.3)*
108
- - Dismiss button MUST have `aria-label="Dismiss notification"` or similar the ✕ icon alone is not an accessible name
109
- - Auto-dismiss timer MUST pause when the toast is hovered or focused *(WCAG 2.2.1 Timing Adjustable)*
105
+ - `role="alert"` on warning/error toasts causes immediate announcement by screen readers - do NOT use for info/success (too noisy)
106
+ - `role="status"` on info/success uses a polite live region - announced at next opportunity
107
+ - The live region container MUST be present in the DOM before the toast text is injected - injecting `role="alert"` dynamically may not announce *(WCAG 4.1.3)*
108
+ - Dismiss button MUST have `aria-label="Dismiss notification"` or similar - the ✕ icon alone is not an accessible name
109
+ - Auto-dismiss timer MUST pause when the toast is hovered or focused *(WCAG 2.2.1 - Timing Adjustable)*
110
110
  - Error toasts MUST either be persistent or have an explicit dismiss mechanism *(Polaris, Carbon)*
111
111
 
112
- Cross-link: `reference/accessibility.md` live-regions section
112
+ Cross-link: `reference/accessibility.md` - live-regions section
113
113
 
114
114
  ---
115
115
 
@@ -121,9 +121,9 @@ Cross-link: `reference/accessibility.md` — live-regions section
121
121
  | Exit (slide-out + fade) | 150ms | ease-in | Reverse direction on dismiss |
122
122
  | Stack reflow | 150ms | ease-out | Other toasts shift position when one exits |
123
123
 
124
- **BAN**: Bouncing or spring physics on enter toast is informational, not celebratory. Avoid `transition: all` (catches layout shifts during stack reflow).
124
+ **BAN**: Bouncing or spring physics on enter - toast is informational, not celebratory. Avoid `transition: all` (catches layout shifts during stack reflow).
125
125
 
126
- Cross-link: `reference/motion.md` `prefers-reduced-motion`: skip slide, use fade-only at 100ms
126
+ Cross-link: `reference/motion.md` - `prefers-reduced-motion`: skip slide, use fade-only at 100ms
127
127
 
128
128
  ---
129
129
 
@@ -136,10 +136,10 @@ Cross-link: `reference/motion.md` — `prefers-reduced-motion`: skip slide, use
136
136
  - Keep message text ≤80 characters; use action button for follow-up *(Material 3, Polaris)*
137
137
 
138
138
  ### Don't
139
- - Don't use toast for errors that require user action use a modal or alert *(Material 3, Carbon)*
140
- - Don't stack more than 3 toasts queue the rest *(Radix, Polaris)*
141
- - Don't put more than one action in a toast use a modal for complex decisions *(Material 3)*
142
- - Don't rely on toast alone for critical status supplement with in-page feedback *(Carbon)*
139
+ - Don't use toast for errors that require user action - use a modal or alert *(Material 3, Carbon)*
140
+ - Don't stack more than 3 toasts - queue the rest *(Radix, Polaris)*
141
+ - Don't put more than one action in a toast - use a modal for complex decisions *(Material 3)*
142
+ - Don't rely on toast alone for critical status - supplement with in-page feedback *(Carbon)*
143
143
 
144
144
  ---
145
145