@hegemonart/get-design-done 1.41.5 → 1.43.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (434) hide show
  1. package/.claude-plugin/marketplace.json +2 -2
  2. package/.claude-plugin/plugin.json +1 -1
  3. package/CHANGELOG.md +1120 -1029
  4. package/README.md +158 -154
  5. package/SKILL.md +42 -42
  6. package/agents/README.md +53 -53
  7. package/agents/a11y-mapper.md +3 -3
  8. package/agents/component-benchmark-harvester.md +8 -8
  9. package/agents/component-benchmark-synthesizer.md +11 -11
  10. package/agents/component-taxonomy-mapper.md +5 -5
  11. package/agents/compose-executor.md +25 -25
  12. package/agents/conflict-resolver.md +8 -8
  13. package/agents/cost-forecaster.md +12 -12
  14. package/agents/decision-journal-exporter.md +5 -5
  15. package/agents/design-advisor.md +19 -19
  16. package/agents/design-assumptions-analyzer.md +16 -16
  17. package/agents/design-auditor.md +39 -39
  18. package/agents/design-authority-watcher.md +28 -28
  19. package/agents/design-component-generator.md +27 -27
  20. package/agents/design-context-builder.md +66 -66
  21. package/agents/design-context-checker-gate.md +5 -5
  22. package/agents/design-context-checker.md +20 -20
  23. package/agents/design-discussant.md +23 -23
  24. package/agents/design-doc-writer.md +12 -12
  25. package/agents/design-executor.md +38 -38
  26. package/agents/design-figma-writer.md +31 -31
  27. package/agents/design-fixer.md +27 -27
  28. package/agents/design-integration-checker-gate.md +5 -5
  29. package/agents/design-integration-checker.md +29 -29
  30. package/agents/design-paper-writer.md +14 -14
  31. package/agents/design-pattern-mapper.md +9 -9
  32. package/agents/design-pencil-writer.md +12 -12
  33. package/agents/design-phase-researcher.md +14 -14
  34. package/agents/design-plan-checker.md +13 -13
  35. package/agents/design-planner.md +24 -24
  36. package/agents/design-reflector.md +48 -48
  37. package/agents/design-research-synthesizer.md +21 -21
  38. package/agents/design-start-writer.md +7 -7
  39. package/agents/design-update-checker.md +8 -8
  40. package/agents/design-verifier-gate.md +5 -5
  41. package/agents/design-verifier.md +80 -80
  42. package/agents/ds-generator.md +14 -14
  43. package/agents/ds-migration-planner.md +12 -12
  44. package/agents/email-executor.md +26 -26
  45. package/agents/experiment-result-ingester.md +10 -10
  46. package/agents/flutter-executor.md +28 -28
  47. package/agents/gdd-graph-refresh.md +10 -10
  48. package/agents/gdd-intel-updater.md +11 -11
  49. package/agents/gdd-learnings-extractor.md +2 -2
  50. package/agents/motion-mapper.md +8 -8
  51. package/agents/motion-verifier.md +16 -16
  52. package/agents/pdf-executor.md +27 -27
  53. package/agents/perf-analyzer.md +20 -20
  54. package/agents/pr-commenter.md +24 -24
  55. package/agents/prototype-gate.md +29 -29
  56. package/agents/quality-gate-runner.md +21 -21
  57. package/agents/rollout-coordinator.md +8 -8
  58. package/agents/swift-executor.md +41 -41
  59. package/agents/ticket-sync-agent.md +19 -19
  60. package/agents/token-mapper.md +6 -6
  61. package/agents/user-research-synthesizer.md +13 -13
  62. package/agents/visual-hierarchy-mapper.md +2 -2
  63. package/dist/claude-code/.claude/skills/add-backlog/SKILL.md +48 -0
  64. package/dist/claude-code/.claude/skills/analyze-dependencies/SKILL.md +95 -0
  65. package/dist/claude-code/.claude/skills/apply-reflections/SKILL.md +92 -0
  66. package/dist/claude-code/.claude/skills/apply-reflections/apply-reflections-procedure.md +170 -0
  67. package/dist/claude-code/.claude/skills/audit/SKILL.md +79 -0
  68. package/dist/claude-code/.claude/skills/bandit-status/SKILL.md +94 -0
  69. package/dist/claude-code/.claude/skills/benchmark/SKILL.md +65 -0
  70. package/dist/claude-code/.claude/skills/bootstrap-ds/SKILL.md +43 -0
  71. package/dist/claude-code/.claude/skills/brief/SKILL.md +128 -0
  72. package/dist/claude-code/.claude/skills/budget/SKILL.md +45 -0
  73. package/dist/claude-code/.claude/skills/cache-manager/SKILL.md +66 -0
  74. package/dist/claude-code/.claude/skills/cache-manager/cache-policy.md +126 -0
  75. package/dist/claude-code/.claude/skills/check-update/SKILL.md +98 -0
  76. package/dist/claude-code/.claude/skills/compare/SKILL.md +82 -0
  77. package/dist/claude-code/.claude/skills/compare/compare-rubric.md +171 -0
  78. package/dist/claude-code/.claude/skills/complete-cycle/SKILL.md +81 -0
  79. package/dist/claude-code/.claude/skills/connections/SKILL.md +71 -0
  80. package/dist/claude-code/.claude/skills/connections/connections-onboarding.md +608 -0
  81. package/dist/claude-code/.claude/skills/continue/SKILL.md +24 -0
  82. package/dist/claude-code/.claude/skills/darkmode/SKILL.md +76 -0
  83. package/dist/claude-code/.claude/skills/darkmode/darkmode-audit-procedure.md +258 -0
  84. package/dist/claude-code/.claude/skills/debug/SKILL.md +41 -0
  85. package/dist/claude-code/.claude/skills/debug/debug-feedback-loops.md +119 -0
  86. package/dist/claude-code/.claude/skills/design/SKILL.md +99 -0
  87. package/dist/claude-code/.claude/skills/design/design-procedure.md +304 -0
  88. package/dist/claude-code/.claude/skills/discover/SKILL.md +72 -0
  89. package/dist/claude-code/.claude/skills/discover/discover-procedure.md +222 -0
  90. package/dist/claude-code/.claude/skills/discuss/SKILL.md +96 -0
  91. package/dist/claude-code/.claude/skills/do/SKILL.md +45 -0
  92. package/dist/claude-code/.claude/skills/explore/SKILL.md +105 -0
  93. package/dist/claude-code/.claude/skills/explore/explore-procedure.md +267 -0
  94. package/dist/claude-code/.claude/skills/export/SKILL.md +30 -0
  95. package/dist/claude-code/.claude/skills/extract-learnings/SKILL.md +98 -0
  96. package/dist/claude-code/.claude/skills/fast/SKILL.md +91 -0
  97. package/dist/claude-code/.claude/skills/figma-extract/SKILL.md +64 -0
  98. package/dist/claude-code/.claude/skills/figma-write/SKILL.md +39 -0
  99. package/dist/claude-code/.claude/skills/graphify/SKILL.md +49 -0
  100. package/dist/claude-code/.claude/skills/health/SKILL.md +99 -0
  101. package/dist/claude-code/.claude/skills/health/health-mcp-detection.md +44 -0
  102. package/dist/claude-code/.claude/skills/health/health-skill-length-report.md +69 -0
  103. package/dist/claude-code/.claude/skills/help/SKILL.md +87 -0
  104. package/dist/claude-code/.claude/skills/list-assumptions/SKILL.md +61 -0
  105. package/dist/claude-code/.claude/skills/locale/SKILL.md +51 -0
  106. package/dist/claude-code/.claude/skills/map/SKILL.md +89 -0
  107. package/dist/claude-code/.claude/skills/migrate/SKILL.md +70 -0
  108. package/dist/claude-code/.claude/skills/new-cycle/SKILL.md +37 -0
  109. package/dist/claude-code/.claude/skills/new-cycle/milestone-completeness-rubric.md +87 -0
  110. package/dist/claude-code/.claude/skills/new-project/SKILL.md +53 -0
  111. package/dist/claude-code/.claude/skills/next/SKILL.md +68 -0
  112. package/dist/claude-code/.claude/skills/note/SKILL.md +48 -0
  113. package/dist/claude-code/.claude/skills/openrouter-status/SKILL.md +86 -0
  114. package/dist/claude-code/.claude/skills/optimize/SKILL.md +97 -0
  115. package/dist/claude-code/.claude/skills/pause/SKILL.md +77 -0
  116. package/dist/claude-code/.claude/skills/peer-cli-add/SKILL.md +88 -0
  117. package/dist/claude-code/.claude/skills/peer-cli-add/peer-cli-protocol.md +161 -0
  118. package/dist/claude-code/.claude/skills/peer-cli-customize/SKILL.md +90 -0
  119. package/dist/claude-code/.claude/skills/peers/SKILL.md +96 -0
  120. package/dist/claude-code/.claude/skills/plan/SKILL.md +105 -0
  121. package/dist/claude-code/.claude/skills/plan/plan-procedure.md +278 -0
  122. package/dist/claude-code/.claude/skills/plant-seed/SKILL.md +48 -0
  123. package/dist/claude-code/.claude/skills/pr-branch/SKILL.md +32 -0
  124. package/dist/claude-code/.claude/skills/progress/SKILL.md +95 -0
  125. package/dist/claude-code/.claude/skills/quality-gate/SKILL.md +90 -0
  126. package/dist/claude-code/.claude/skills/quality-gate/threat-modeling.md +101 -0
  127. package/dist/claude-code/.claude/skills/quick/SKILL.md +44 -0
  128. package/dist/claude-code/.claude/skills/reapply-patches/SKILL.md +32 -0
  129. package/dist/claude-code/.claude/skills/recall/SKILL.md +75 -0
  130. package/dist/claude-code/.claude/skills/reflect/SKILL.md +85 -0
  131. package/dist/claude-code/.claude/skills/reflect/procedures/capability-gap-scan.md +120 -0
  132. package/dist/claude-code/.claude/skills/report-issue/SKILL.md +53 -0
  133. package/dist/claude-code/.claude/skills/report-issue/report-issue-procedure.md +120 -0
  134. package/dist/claude-code/.claude/skills/resume/SKILL.md +93 -0
  135. package/dist/claude-code/.claude/skills/review-backlog/SKILL.md +46 -0
  136. package/dist/claude-code/.claude/skills/review-decisions/SKILL.md +42 -0
  137. package/dist/claude-code/.claude/skills/roi/SKILL.md +54 -0
  138. package/dist/claude-code/.claude/skills/rollout-status/SKILL.md +35 -0
  139. package/dist/claude-code/.claude/skills/router/SKILL.md +89 -0
  140. package/dist/claude-code/.claude/skills/router/capability-gap-emitter.md +65 -0
  141. package/dist/claude-code/.claude/skills/router/router-pick-emitter.md +78 -0
  142. package/dist/claude-code/.claude/skills/router/router-rules.md +84 -0
  143. package/dist/claude-code/.claude/skills/scan/SKILL.md +92 -0
  144. package/dist/claude-code/.claude/skills/scan/scan-procedure.md +732 -0
  145. package/dist/claude-code/.claude/skills/settings/SKILL.md +87 -0
  146. package/dist/claude-code/.claude/skills/ship/SKILL.md +48 -0
  147. package/dist/claude-code/.claude/skills/sketch/SKILL.md +78 -0
  148. package/dist/claude-code/.claude/skills/sketch-wrap-up/SKILL.md +92 -0
  149. package/dist/claude-code/.claude/skills/skill-manifest/SKILL.md +79 -0
  150. package/dist/claude-code/.claude/skills/spike/SKILL.md +67 -0
  151. package/dist/claude-code/.claude/skills/spike-wrap-up/SKILL.md +86 -0
  152. package/dist/claude-code/.claude/skills/start/SKILL.md +67 -0
  153. package/dist/claude-code/.claude/skills/start/start-procedure.md +115 -0
  154. package/dist/claude-code/.claude/skills/stats/SKILL.md +51 -0
  155. package/dist/claude-code/.claude/skills/style/SKILL.md +71 -0
  156. package/dist/claude-code/.claude/skills/style/style-doc-procedure.md +150 -0
  157. package/dist/claude-code/.claude/skills/synthesize/SKILL.md +94 -0
  158. package/dist/claude-code/.claude/skills/timeline/SKILL.md +66 -0
  159. package/dist/claude-code/.claude/skills/todo/SKILL.md +64 -0
  160. package/dist/claude-code/.claude/skills/turn-closeout/SKILL.md +95 -0
  161. package/dist/claude-code/.claude/skills/undo/SKILL.md +31 -0
  162. package/dist/claude-code/.claude/skills/unlock-decision/SKILL.md +54 -0
  163. package/dist/claude-code/.claude/skills/update/SKILL.md +56 -0
  164. package/dist/claude-code/.claude/skills/using-gdd/SKILL.md +78 -0
  165. package/dist/claude-code/.claude/skills/verify/SKILL.md +113 -0
  166. package/dist/claude-code/.claude/skills/verify/verify-procedure.md +512 -0
  167. package/dist/claude-code/.claude/skills/warm-cache/SKILL.md +81 -0
  168. package/dist/claude-code/.claude/skills/watch-authorities/SKILL.md +82 -0
  169. package/dist/claude-code/.claude/skills/zoom-out/SKILL.md +26 -0
  170. package/package.json +8 -2
  171. package/reference/DEPRECATIONS.md +21 -7
  172. package/reference/STATE-TEMPLATE.md +26 -26
  173. package/reference/accessibility.md +13 -13
  174. package/reference/adr-format.md +13 -13
  175. package/reference/ai-native-tool-interface.md +5 -5
  176. package/reference/anti-patterns.md +9 -9
  177. package/reference/architecture-vocabulary.md +31 -31
  178. package/reference/audit-scoring.md +13 -13
  179. package/reference/authority-feeds.md +36 -36
  180. package/reference/bandit-integration.md +25 -25
  181. package/reference/brand-voice.md +36 -36
  182. package/reference/capability-gap-stage-gate.md +20 -20
  183. package/reference/checklists.md +26 -26
  184. package/reference/cli-localization.md +13 -13
  185. package/reference/codex-tools.md +2 -2
  186. package/reference/color-theory.md +28 -28
  187. package/reference/component-authoring.md +4 -4
  188. package/reference/components/README.md +13 -13
  189. package/reference/components/TEMPLATE.md +13 -13
  190. package/reference/components/accordion.md +15 -15
  191. package/reference/components/alert.md +25 -25
  192. package/reference/components/badge.md +18 -18
  193. package/reference/components/breadcrumbs.md +24 -24
  194. package/reference/components/button.md +21 -21
  195. package/reference/components/card.md +13 -13
  196. package/reference/components/checkbox.md +20 -20
  197. package/reference/components/chip.md +20 -20
  198. package/reference/components/command-palette.md +15 -15
  199. package/reference/components/date-picker.md +22 -22
  200. package/reference/components/drawer.md +13 -13
  201. package/reference/components/file-upload.md +22 -22
  202. package/reference/components/input.md +18 -18
  203. package/reference/components/label.md +25 -25
  204. package/reference/components/link.md +19 -19
  205. package/reference/components/list.md +17 -17
  206. package/reference/components/menu.md +19 -19
  207. package/reference/components/modal-dialog.md +16 -16
  208. package/reference/components/navbar.md +19 -19
  209. package/reference/components/pagination.md +18 -18
  210. package/reference/components/popover.md +12 -12
  211. package/reference/components/progress.md +18 -18
  212. package/reference/components/radio.md +17 -17
  213. package/reference/components/rich-text-editor.md +24 -24
  214. package/reference/components/select-combobox.md +16 -16
  215. package/reference/components/sidebar.md +15 -15
  216. package/reference/components/skeleton.md +20 -20
  217. package/reference/components/slider.md +20 -20
  218. package/reference/components/stepper.md +24 -24
  219. package/reference/components/switch.md +19 -19
  220. package/reference/components/table.md +21 -21
  221. package/reference/components/tabs.md +11 -11
  222. package/reference/components/toast.md +19 -19
  223. package/reference/components/tooltip.md +19 -19
  224. package/reference/components/tree.md +17 -17
  225. package/reference/composition.md +38 -38
  226. package/reference/config-schema.md +37 -37
  227. package/reference/context-md-format.md +9 -9
  228. package/reference/contrast-advanced.md +29 -29
  229. package/reference/conversational-ui.md +17 -17
  230. package/reference/cost-governance.md +14 -14
  231. package/reference/css-grid-layout.md +8 -8
  232. package/reference/cycle-handoff-preamble.md +3 -3
  233. package/reference/data-visualization.md +67 -67
  234. package/reference/debugger-philosophy.md +5 -5
  235. package/reference/design-system-guidance.md +21 -21
  236. package/reference/design-systems-catalog.md +20 -20
  237. package/reference/design-variants.md +11 -11
  238. package/reference/domains/civic-patterns.md +10 -10
  239. package/reference/domains/finance-patterns.md +9 -9
  240. package/reference/domains/gaming-patterns.md +9 -9
  241. package/reference/domains/healthcare-patterns.md +11 -11
  242. package/reference/ds-bootstrap-rubric.md +13 -13
  243. package/reference/email-design.md +22 -22
  244. package/reference/emotional-design.md +10 -10
  245. package/reference/error-recovery.md +11 -11
  246. package/reference/export-formats.md +7 -7
  247. package/reference/figma-sandbox.md +6 -6
  248. package/reference/first-principles.md +10 -10
  249. package/reference/form-patterns.md +26 -26
  250. package/reference/framer-motion-patterns.md +49 -49
  251. package/reference/gdd-runtime-audit.md +17 -17
  252. package/reference/gdd-threat-model.md +44 -44
  253. package/reference/gemini-tools.md +3 -3
  254. package/reference/gestalt.md +24 -24
  255. package/reference/heuristics.md +32 -32
  256. package/reference/i18n.md +44 -44
  257. package/reference/iconography.md +24 -24
  258. package/reference/image-optimization.md +14 -14
  259. package/reference/information-architecture.md +47 -47
  260. package/reference/intel-schema.md +1 -1
  261. package/reference/known-failure-modes.md +37 -37
  262. package/reference/meta-rules.md +5 -5
  263. package/reference/migrations/material-3-to-4.md +17 -17
  264. package/reference/migrations/mui-v6.md +16 -16
  265. package/reference/migrations/shadcn-v2.md +25 -25
  266. package/reference/migrations/tailwind-v4.md +21 -21
  267. package/reference/model-prices.md +3 -3
  268. package/reference/model-tiers.md +40 -40
  269. package/reference/motion-advanced.md +21 -21
  270. package/reference/motion-easings.md +29 -29
  271. package/reference/motion-interpolate.md +1 -1
  272. package/reference/motion-spring.md +13 -13
  273. package/reference/motion-transition-taxonomy.md +34 -34
  274. package/reference/motion.md +31 -31
  275. package/reference/multi-author-model.md +13 -13
  276. package/reference/native-platforms.md +28 -28
  277. package/reference/notification-routing.md +6 -6
  278. package/reference/onboarding-progressive-disclosure.md +32 -32
  279. package/reference/openrouter-tier-mapping.md +8 -8
  280. package/reference/palette-catalog.md +37 -37
  281. package/reference/parallelism-rules.md +20 -20
  282. package/reference/peer-cli-capabilities.md +14 -14
  283. package/reference/peer-protocols.md +21 -21
  284. package/reference/perf-budget.md +21 -21
  285. package/reference/performance.md +22 -22
  286. package/reference/platforms.md +51 -51
  287. package/reference/pr-review-integration.md +7 -7
  288. package/reference/prices/antigravity.md +3 -3
  289. package/reference/prices/augment.md +3 -3
  290. package/reference/prices/claude.md +2 -2
  291. package/reference/prices/cline.md +4 -4
  292. package/reference/prices/codebuddy.md +3 -3
  293. package/reference/prices/codex.md +2 -2
  294. package/reference/prices/copilot.md +3 -3
  295. package/reference/prices/cursor.md +3 -3
  296. package/reference/prices/gemini.md +2 -2
  297. package/reference/prices/kilo.md +3 -3
  298. package/reference/prices/opencode.md +4 -4
  299. package/reference/prices/qwen.md +2 -2
  300. package/reference/prices/trae.md +3 -3
  301. package/reference/prices/windsurf.md +3 -3
  302. package/reference/prices.openrouter.md +5 -5
  303. package/reference/print-design.md +36 -36
  304. package/reference/priority-matrix.md +2 -2
  305. package/reference/project-skills-guide.md +3 -3
  306. package/reference/proportion-systems.md +23 -23
  307. package/reference/pseudonymization-rules.md +30 -30
  308. package/reference/registry.json +7 -0
  309. package/reference/retrieval-contract.md +14 -14
  310. package/reference/review-format.md +7 -7
  311. package/reference/rollout-coordination.md +10 -10
  312. package/reference/rtl-cjk-cultural.md +39 -39
  313. package/reference/runtime-models.md +28 -28
  314. package/reference/shared-preamble.md +26 -26
  315. package/reference/skill-authoring-contract.md +16 -16
  316. package/reference/skill-placeholders.md +71 -0
  317. package/reference/start-interview.md +10 -10
  318. package/reference/style-vocabulary.md +25 -25
  319. package/reference/surfaces.md +4 -4
  320. package/reference/ticket-sync.md +9 -9
  321. package/reference/typography.md +64 -64
  322. package/reference/user-research.md +54 -54
  323. package/reference/variable-fonts-loading.md +15 -15
  324. package/reference/visual-hierarchy-layout.md +41 -41
  325. package/scripts/lib/build/factory.cjs +62 -0
  326. package/scripts/lib/build/harness-configs.cjs +64 -0
  327. package/scripts/lib/manifest/prose-denylist.json +1 -1
  328. package/sdk/cli/commands/build.ts +106 -0
  329. package/sdk/cli/index.js +84 -2
  330. package/sdk/cli/index.ts +7 -0
  331. package/skills/add-backlog/SKILL.md +3 -3
  332. package/skills/analyze-dependencies/SKILL.md +10 -10
  333. package/skills/apply-reflections/SKILL.md +13 -13
  334. package/skills/apply-reflections/apply-reflections-procedure.md +20 -20
  335. package/skills/audit/SKILL.md +7 -7
  336. package/skills/bandit-status/SKILL.md +7 -7
  337. package/skills/benchmark/SKILL.md +7 -7
  338. package/skills/bootstrap-ds/SKILL.md +10 -10
  339. package/skills/brief/SKILL.md +20 -20
  340. package/skills/budget/SKILL.md +4 -4
  341. package/skills/cache-manager/SKILL.md +6 -6
  342. package/skills/cache-manager/cache-policy.md +5 -5
  343. package/skills/check-update/SKILL.md +5 -5
  344. package/skills/compare/SKILL.md +15 -15
  345. package/skills/compare/compare-rubric.md +17 -17
  346. package/skills/complete-cycle/SKILL.md +5 -5
  347. package/skills/connections/SKILL.md +11 -11
  348. package/skills/connections/connections-onboarding.md +76 -76
  349. package/skills/continue/SKILL.md +2 -2
  350. package/skills/darkmode/SKILL.md +17 -17
  351. package/skills/darkmode/darkmode-audit-procedure.md +7 -7
  352. package/skills/debug/SKILL.md +3 -3
  353. package/skills/debug/debug-feedback-loops.md +12 -12
  354. package/skills/design/SKILL.md +12 -12
  355. package/skills/design/design-procedure.md +23 -23
  356. package/skills/discover/SKILL.md +7 -7
  357. package/skills/discover/discover-procedure.md +18 -18
  358. package/skills/discuss/SKILL.md +12 -12
  359. package/skills/do/SKILL.md +1 -1
  360. package/skills/explore/SKILL.md +21 -21
  361. package/skills/explore/explore-procedure.md +48 -48
  362. package/skills/export/SKILL.md +9 -9
  363. package/skills/extract-learnings/SKILL.md +5 -5
  364. package/skills/fast/SKILL.md +7 -7
  365. package/skills/figma-extract/SKILL.md +11 -11
  366. package/skills/figma-write/SKILL.md +6 -6
  367. package/skills/graphify/SKILL.md +4 -4
  368. package/skills/health/SKILL.md +16 -16
  369. package/skills/health/health-mcp-detection.md +3 -3
  370. package/skills/health/health-skill-length-report.md +6 -6
  371. package/skills/help/SKILL.md +1 -1
  372. package/skills/list-assumptions/SKILL.md +4 -4
  373. package/skills/map/SKILL.md +12 -12
  374. package/skills/migrate/SKILL.md +5 -5
  375. package/skills/new-cycle/SKILL.md +2 -2
  376. package/skills/new-cycle/milestone-completeness-rubric.md +16 -16
  377. package/skills/new-project/SKILL.md +1 -1
  378. package/skills/next/SKILL.md +5 -5
  379. package/skills/note/SKILL.md +1 -1
  380. package/skills/openrouter-status/SKILL.md +4 -4
  381. package/skills/optimize/SKILL.md +15 -15
  382. package/skills/pause/SKILL.md +5 -5
  383. package/skills/peer-cli-add/SKILL.md +11 -11
  384. package/skills/peer-cli-add/peer-cli-protocol.md +39 -39
  385. package/skills/peer-cli-customize/SKILL.md +14 -14
  386. package/skills/peers/SKILL.md +4 -4
  387. package/skills/plan/SKILL.md +13 -13
  388. package/skills/plan/plan-procedure.md +24 -24
  389. package/skills/plant-seed/SKILL.md +4 -4
  390. package/skills/pr-branch/SKILL.md +2 -2
  391. package/skills/progress/SKILL.md +15 -15
  392. package/skills/quality-gate/SKILL.md +22 -22
  393. package/skills/quality-gate/threat-modeling.md +19 -19
  394. package/skills/quick/SKILL.md +5 -5
  395. package/skills/reapply-patches/SKILL.md +7 -7
  396. package/skills/reflect/SKILL.md +3 -3
  397. package/skills/reflect/procedures/capability-gap-scan.md +11 -11
  398. package/skills/report-issue/SKILL.md +5 -5
  399. package/skills/report-issue/report-issue-procedure.md +27 -27
  400. package/skills/resume/SKILL.md +9 -9
  401. package/skills/review-backlog/SKILL.md +3 -3
  402. package/skills/review-decisions/SKILL.md +3 -3
  403. package/skills/roi/SKILL.md +5 -5
  404. package/skills/rollout-status/SKILL.md +4 -4
  405. package/skills/router/SKILL.md +11 -11
  406. package/skills/router/capability-gap-emitter.md +6 -6
  407. package/skills/router/router-pick-emitter.md +9 -9
  408. package/skills/router/router-rules.md +7 -7
  409. package/skills/scan/SKILL.md +16 -16
  410. package/skills/scan/scan-procedure.md +42 -42
  411. package/skills/settings/SKILL.md +2 -2
  412. package/skills/ship/SKILL.md +7 -7
  413. package/skills/sketch/SKILL.md +10 -10
  414. package/skills/sketch-wrap-up/SKILL.md +12 -12
  415. package/skills/skill-manifest/SKILL.md +5 -5
  416. package/skills/spike/SKILL.md +7 -7
  417. package/skills/spike-wrap-up/SKILL.md +13 -13
  418. package/skills/start/SKILL.md +8 -8
  419. package/skills/start/start-procedure.md +9 -9
  420. package/skills/stats/SKILL.md +5 -5
  421. package/skills/style/SKILL.md +12 -12
  422. package/skills/style/style-doc-procedure.md +12 -12
  423. package/skills/synthesize/SKILL.md +10 -10
  424. package/skills/timeline/SKILL.md +4 -4
  425. package/skills/todo/SKILL.md +3 -3
  426. package/skills/turn-closeout/SKILL.md +10 -10
  427. package/skills/unlock-decision/SKILL.md +3 -3
  428. package/skills/update/SKILL.md +9 -9
  429. package/skills/using-gdd/SKILL.md +17 -17
  430. package/skills/verify/SKILL.md +13 -13
  431. package/skills/verify/verify-procedure.md +34 -34
  432. package/skills/warm-cache/SKILL.md +8 -8
  433. package/skills/watch-authorities/SKILL.md +9 -9
  434. package/skills/zoom-out/SKILL.md +4 -4
@@ -1,4 +1,4 @@
1
- # Modal / Dialog Benchmark Spec
1
+ # Modal / Dialog - Benchmark Spec
2
2
 
3
3
  **Harvested from**: Radix UI Dialog, WAI-ARIA APG, Material 3, Atlassian, Carbon, Mantine, shadcn/ui, Fluent 2
4
4
  **Wave**: 2 · **Category**: Containers
@@ -7,7 +7,7 @@
7
7
 
8
8
  ## Purpose
9
9
 
10
- A modal dialog is a blocking overlay that requires user interaction before returning to the main content. It is rendered in a portal above the page, traps keyboard focus within itself, prevents interaction with the background, and closes on Escape. Use modals sparingly they interrupt flow. Prefer inline feedback or slide-out drawers for non-critical workflows. *(Material 3, Atlassian, Polaris all advise modal restraint)*
10
+ A modal dialog is a blocking overlay that requires user interaction before returning to the main content. It is rendered in a portal above the page, traps keyboard focus within itself, prevents interaction with the background, and closes on Escape. Use modals sparingly - they interrupt flow. Prefer inline feedback or slide-out drawers for non-critical workflows. *(Material 3, Atlassian, Polaris all advise modal restraint)*
11
11
 
12
12
  ---
13
13
 
@@ -50,7 +50,7 @@ A modal dialog is a blocking overlay that requires user interaction before retur
50
50
  | Scrollable content | Body scrolls; header/footer sticky | All |
51
51
 
52
52
  **Norm** (≥6/18): Escape closes; backdrop click may close (configurable); focus trapped inside.
53
- **Diverge**: backdrop-click-to-close Material 3 and shadcn default to close; Atlassian and Carbon recommend NOT closing on backdrop click to prevent accidental dismissal of forms.
53
+ **Diverge**: backdrop-click-to-close - Material 3 and shadcn default to close; Atlassian and Carbon recommend NOT closing on backdrop click to prevent accidental dismissal of forms.
54
54
 
55
55
  ---
56
56
 
@@ -71,12 +71,12 @@ A modal dialog is a blocking overlay that requires user interaction before retur
71
71
  | sm | 400px | 80vh | Confirm dialogs |
72
72
  | md (default) | 560px | 80vh | Standard |
73
73
  | lg | 720px | 90vh | Complex forms |
74
- | full | 100vw/100vh | | Mobile sheet pattern |
74
+ | full | 100vw/100vh | - | Mobile sheet pattern |
75
75
 
76
76
  Padding: 24px (header/footer), 24px (body horizontal), 20px (body vertical).
77
77
  Body scroll: `overflow-y: auto` with `overscroll-behavior: contain`.
78
78
 
79
- Cross-link: `reference/surfaces.md` concentric radius, elevation (shadow-as-border)
79
+ Cross-link: `reference/surfaces.md` - concentric radius, elevation (shadow-as-border)
80
80
 
81
81
  ---
82
82
 
@@ -95,7 +95,7 @@ Cross-link: `reference/surfaces.md` — concentric radius, elevation (shadow-as-
95
95
 
96
96
  ### Keyboard Contract
97
97
 
98
- *Quoted verbatim from WAI-ARIA APG https://www.w3.org/WAI/ARIA/apg/patterns/dialog-modal/ W3C 2024*
98
+ *Quoted verbatim from WAI-ARIA APG - https://www.w3.org/WAI/ARIA/apg/patterns/dialog-modal/ - W3C - 2024*
99
99
 
100
100
  | Key | Action |
101
101
  |-----|--------|
@@ -106,13 +106,13 @@ Cross-link: `reference/surfaces.md` — concentric radius, elevation (shadow-as-
106
106
  ### Focus Management
107
107
 
108
108
  1. **On open**: focus moves to the first focusable element inside the dialog (or to the dialog itself if no focusable children)
109
- 2. **While open**: Tab/Shift+Tab cycle only within the dialog focus MUST NOT leave the dialog
109
+ 2. **While open**: Tab/Shift+Tab cycle only within the dialog - focus MUST NOT leave the dialog
110
110
  3. **On close**: focus MUST return to the element that triggered the dialog open
111
111
 
112
112
  ### Accessibility Rules
113
113
 
114
- - `aria-modal="true"` MUST be set tells AT to ignore background content (supplement with `inert` attribute on background for browsers without full `aria-modal` support)
115
- - Dialog title MUST have an `id` referenced by `aria-labelledby` screen reader announces "Dialog: [title]" on open
114
+ - `aria-modal="true"` MUST be set - tells AT to ignore background content (supplement with `inert` attribute on background for browsers without full `aria-modal` support)
115
+ - Dialog title MUST have an `id` referenced by `aria-labelledby` - screen reader announces "Dialog: [title]" on open
116
116
  - `role="alertdialog"` for confirmation dialogs where the user must respond (delete confirmations, logout confirmation)
117
117
  - Scroll-lock: prevent `<body>` scroll when dialog is open (`overflow: hidden` on `<body>`)
118
118
  - Portal: render dialog in `document.body` to escape stacking context issues (z-index isolation)
@@ -126,10 +126,10 @@ Cross-link: `reference/surfaces.md` — concentric radius, elevation (shadow-as-
126
126
  | Backdrop fade in | 200ms | ease-out | opacity 0→0.5 |
127
127
  | Dialog enter | 200ms | ease-out | scale 0.95→1 + fade |
128
128
  | Dialog exit | 150ms | ease-in | scale 1→0.95 + fade |
129
- | Backdrop fade out | 150ms | ease-in | |
129
+ | Backdrop fade out | 150ms | ease-in | - |
130
130
 
131
131
  Use `AnimatePresence` (Framer Motion) or `data-state` + CSS for mount/unmount animation.
132
- Cross-link: `reference/motion.md` `AnimatePresence initial={false}`, `prefers-reduced-motion`
132
+ Cross-link: `reference/motion.md` - `AnimatePresence initial={false}`, `prefers-reduced-motion`
133
133
 
134
134
  ---
135
135
 
@@ -142,10 +142,10 @@ Cross-link: `reference/motion.md` — `AnimatePresence initial={false}`, `prefer
142
142
  - Set `overflow:hidden` on `<body>` to prevent background scroll *(Material 3, Carbon)*
143
143
 
144
144
  ### Don't
145
- - Don't close on backdrop click for dialogs with form input data loss risk *(Atlassian, Carbon)*
146
- - Don't use `role="dialog"` without `aria-labelledby` dialog is announced without a name *(WAI-ARIA APG)*
147
- - Don't use `display:none` to hide a dialog use DOM removal or `hidden` attribute for correct AT behavior *(WAI-ARIA APG)*
148
- - Don't stack more than 2 dialogs use a single dialog with internal step navigation *(Material 3, Atlassian)*
145
+ - Don't close on backdrop click for dialogs with form input - data loss risk *(Atlassian, Carbon)*
146
+ - Don't use `role="dialog"` without `aria-labelledby` - dialog is announced without a name *(WAI-ARIA APG)*
147
+ - Don't use `display:none` to hide a dialog - use DOM removal or `hidden` attribute for correct AT behavior *(WAI-ARIA APG)*
148
+ - Don't stack more than 2 dialogs - use a single dialog with internal step navigation *(Material 3, Atlassian)*
149
149
 
150
150
  ---
151
151
 
@@ -205,6 +205,6 @@ grep -rn 'modal.*open\|isOpen.*modal' src/ | grep -v 'overflow\|scroll-lock\|bod
205
205
  </div>
206
206
  ```
207
207
 
208
- **Why it fails**: No `role="dialog"`, no `aria-modal`, no `aria-labelledby` screen readers cannot announce the dialog name or suppress background content. Tab escapes the modal. Escape does nothing.
208
+ **Why it fails**: No `role="dialog"`, no `aria-modal`, no `aria-labelledby` - screen readers cannot announce the dialog name or suppress background content. Tab escapes the modal. Escape does nothing.
209
209
  **Grep detection**: `grep -rn 'class.*modal\|class.*dialog' src/ | grep -v 'role=\|aria-'`
210
210
  **Fix**: Use Radix `<Dialog>` or implement WAI-ARIA dialog pattern with `role="dialog"`, `aria-modal="true"`, `aria-labelledby`, focus trap, Escape handler, and portal rendering.
@@ -1,4 +1,4 @@
1
- # Navbar (Top Navigation Bar) Benchmark Spec
1
+ # Navbar (Top Navigation Bar) - Benchmark Spec
2
2
 
3
3
  **Harvested from**: Material 3, Carbon, Polaris, Atlassian, Primer, UUPM (app-interface, MIT)
4
4
  **Wave**: 4 · **Category**: Navigation
@@ -22,7 +22,7 @@ A navbar is the primary horizontal navigation surface at the top of an applicati
22
22
 
23
23
  | Part | Required | Notes |
24
24
  |------|----------|-------|
25
- | `<header>` wrapper | Yes | `role="banner"` one per page |
25
+ | `<header>` wrapper | Yes | `role="banner"` - one per page |
26
26
  | `<nav>` | Yes | `role="navigation"` + `aria-label="Primary"` |
27
27
  | Skip-to-main link | Yes | First focusable element; `href="#main-content"`; visible on focus |
28
28
  | Logo / home link | Yes | `<a href="/">` with `aria-label="[App name] home"` |
@@ -53,10 +53,10 @@ A navbar is the primary horizontal navigation surface at the top of an applicati
53
53
 
54
54
  | State | Trigger | Visual | ARIA |
55
55
  |-------|---------|--------|------|
56
- | default | | Full nav visible, no shadow | |
57
- | scrolled | scroll > 0 | `box-shadow` bottom border appears | |
58
- | nav-item-hover | pointer over item | underline or bg highlight | |
59
- | nav-item-focus | keyboard focus | 2px focus-visible ring | |
56
+ | default | - | Full nav visible, no shadow | - |
57
+ | scrolled | scroll > 0 | `box-shadow` bottom border appears | - |
58
+ | nav-item-hover | pointer over item | underline or bg highlight | - |
59
+ | nav-item-focus | keyboard focus | 2px focus-visible ring | - |
60
60
  | nav-item-active | current route | `font-weight: 600` + indicator underline or pill | `aria-current="page"` |
61
61
  | mobile-collapsed | viewport < breakpoint | Nav items hidden; hamburger visible | `aria-expanded="false"` on hamburger |
62
62
  | mobile-expanded | hamburger activated | Nav items shown as vertical list | `aria-expanded="true"` on hamburger |
@@ -81,9 +81,9 @@ Mobile breakpoint: collapse at ≤768px (Carbon, Polaris); ≤960px for complex
81
81
  - Nav item labels: body-sm to body-md (13–15px), weight 500 for active, 400 for inactive
82
82
  - Active item visual distinction must not rely on color alone (add font-weight or underline indicator)
83
83
  - Secondary action icons: 20px, with `aria-label` on each button
84
- - Skip link text: `body-sm`, matches surrounding text it only needs to be visible on focus
84
+ - Skip link text: `body-sm`, matches surrounding text - it only needs to be visible on focus
85
85
 
86
- Cross-link: `reference/typography.md` body scale, weight tokens
86
+ Cross-link: `reference/typography.md` - body scale, weight tokens
87
87
 
88
88
  ---
89
89
 
@@ -94,7 +94,7 @@ Cross-link: `reference/typography.md` — body scale, weight tokens
94
94
 
95
95
  ### Keyboard Contract
96
96
 
97
- *Quoted verbatim from WAI-ARIA APG https://www.w3.org/WAI/ARIA/apg/patterns/landmark-regions/ W3C 2024*
97
+ *Quoted verbatim from WAI-ARIA APG - https://www.w3.org/WAI/ARIA/apg/patterns/landmark-regions/ - W3C - 2024*
98
98
 
99
99
  | Key | Action |
100
100
  |-----|--------|
@@ -105,13 +105,13 @@ Cross-link: `reference/typography.md` — body scale, weight tokens
105
105
 
106
106
  ### Accessibility Rules
107
107
 
108
- - `<nav>` MUST have `aria-label="Primary"` multiple `<nav>` landmarks on a page must all be distinctly labelled
109
- - Skip-to-main link MUST be the first focusable element on the page keyboard users need to bypass repetitive nav
110
- - Active nav item MUST use `aria-current="page"` color alone is insufficient for AT users
111
- - Hamburger button MUST have `aria-expanded` and `aria-controls` AT users need to know the nav state
108
+ - `<nav>` MUST have `aria-label="Primary"` - multiple `<nav>` landmarks on a page must all be distinctly labelled
109
+ - Skip-to-main link MUST be the first focusable element on the page - keyboard users need to bypass repetitive nav
110
+ - Active nav item MUST use `aria-current="page"` - color alone is insufficient for AT users
111
+ - Hamburger button MUST have `aria-expanded` and `aria-controls` - AT users need to know the nav state
112
112
  - `role="banner"` MUST appear only once per page (one `<header>` at page level)
113
113
 
114
- Cross-link: `reference/accessibility.md` landmark regions, skip navigation
114
+ Cross-link: `reference/accessibility.md` - landmark regions, skip navigation
115
115
 
116
116
  ---
117
117
 
@@ -124,9 +124,9 @@ Cross-link: `reference/accessibility.md` — landmark regions, skip navigation
124
124
  | Mobile menu close | 150ms | ease-in | Collapse |
125
125
  | Transparent → opaque on scroll | 200ms | ease-out | Background-color transition |
126
126
 
127
- **BAN**: Animating navbar height on scroll causes layout reflow and jank on every scroll event.
127
+ **BAN**: Animating navbar height on scroll - causes layout reflow and jank on every scroll event.
128
128
 
129
- Cross-link: `reference/motion.md` layout-affecting transitions
129
+ Cross-link: `reference/motion.md` - layout-affecting transitions
130
130
 
131
131
  ---
132
132
 
@@ -139,9 +139,9 @@ Cross-link: `reference/motion.md` — layout-affecting transitions
139
139
  - Manage z-index explicitly on sticky navbars to prevent overlap issues *(Material 3, Carbon)*
140
140
 
141
141
  ### Don't
142
- - Don't use multiple unlabelled `<nav>` landmarks screen reader users can't distinguish them *(WCAG 4.1.2)*
142
+ - Don't use multiple unlabelled `<nav>` landmarks - screen reader users can't distinguish them *(WCAG 4.1.2)*
143
143
  - Don't rely on color alone to indicate the active nav item *(WCAG 1.4.1)*
144
- - Don't put more than 7 primary nav items overwhelming and hard to scan *(Carbon, Polaris HIG)*
144
+ - Don't put more than 7 primary nav items - overwhelming and hard to scan *(Carbon, Polaris HIG)*
145
145
  - Don't use `position: fixed` on mobile without accounting for virtual keyboard displacement
146
146
 
147
147
  ---
@@ -150,7 +150,7 @@ Cross-link: `reference/motion.md` — layout-affecting transitions
150
150
 
151
151
  | Anti-pattern | Entry |
152
152
  |--------------|-------|
153
- | BAN-04 | `transition: all` on interactive elements `reference/anti-patterns.md#ban-04` |
153
+ | BAN-04 | `transition: all` on interactive elements - `reference/anti-patterns.md#ban-04` |
154
154
 
155
155
  ---
156
156
 
@@ -1,4 +1,4 @@
1
- # Pagination Benchmark Spec
1
+ # Pagination - Benchmark Spec
2
2
 
3
3
  **Harvested from**: Carbon, Polaris, Atlassian, Mantine, Material 3, UUPM (app-interface, MIT)
4
4
  **Wave**: 4 · **Category**: Navigation
@@ -53,12 +53,12 @@ Pagination divides a large dataset into discrete pages and provides controls to
53
53
 
54
54
  | State | Trigger | Visual | ARIA |
55
55
  |-------|---------|--------|------|
56
- | default | | All buttons enabled except current page | |
57
- | current-page | | Filled/highlighted button | `aria-current="page"` |
56
+ | default | - | All buttons enabled except current page | - |
57
+ | current-page | - | Filled/highlighted button | `aria-current="page"` |
58
58
  | prev-disabled | page = 1 | Previous button dimmed | `disabled` or `aria-disabled="true"` |
59
59
  | next-disabled | page = last | Next button dimmed | `disabled` or `aria-disabled="true"` |
60
- | button-hover | pointer over | 8% overlay | |
61
- | button-focus | keyboard focus | 2px focus-visible ring | |
60
+ | button-hover | pointer over | 8% overlay | - |
61
+ | button-focus | keyboard focus | 2px focus-visible ring | - |
62
62
  | loading | page change in flight | Spinner overlay on content; buttons retain focus | `aria-busy="true"` on results region |
63
63
 
64
64
  ---
@@ -84,7 +84,7 @@ Pagination divides a large dataset into discrete pages and provides controls to
84
84
  - Results summary: body-sm, `color: --text-subtle`
85
85
  - Per-page label: label-sm (12px), always visible above or beside the select
86
86
 
87
- Cross-link: `reference/typography.md` body-sm, label scale
87
+ Cross-link: `reference/typography.md` - body-sm, label scale
88
88
 
89
89
  ---
90
90
 
@@ -95,7 +95,7 @@ Cross-link: `reference/typography.md` — body-sm, label scale
95
95
 
96
96
  ### Keyboard Contract
97
97
 
98
- *Quoted verbatim from WAI-ARIA APG https://www.w3.org/WAI/ARIA/apg/patterns/landmark-regions/ W3C 2024*
98
+ *Quoted verbatim from WAI-ARIA APG - https://www.w3.org/WAI/ARIA/apg/patterns/landmark-regions/ - W3C - 2024*
99
99
 
100
100
  | Key | Action |
101
101
  |-----|--------|
@@ -105,14 +105,14 @@ Cross-link: `reference/typography.md` — body-sm, label scale
105
105
 
106
106
  ### Accessibility Rules
107
107
 
108
- - `aria-label="Pagination"` MUST be on the `<nav>` distinguishes from other navigation landmarks on the page
109
- - `aria-current="page"` MUST be on the currently active page button screen readers announce "Page 3, current"
108
+ - `aria-label="Pagination"` MUST be on the `<nav>` - distinguishes from other navigation landmarks on the page
109
+ - `aria-current="page"` MUST be on the currently active page button - screen readers announce "Page 3, current"
110
110
  - Previous button on page 1 and Next button on last page MUST use `disabled` or `aria-disabled="true"` + visually dimmed
111
111
  - `aria-label` on each page number button ("Page 1", "Page 2") prevents screen readers from just announcing the number alone
112
112
  - Results summary text MUST use `aria-live="polite"` so screen reader users hear the count update after page change
113
- - Per-page `<select>` MUST have a visible `<label>` not just a placeholder
113
+ - Per-page `<select>` MUST have a visible `<label>` - not just a placeholder
114
114
 
115
- Cross-link: `reference/accessibility.md` aria-current, landmark labelling, live regions
115
+ Cross-link: `reference/accessibility.md` - aria-current, landmark labelling, live regions
116
116
 
117
117
  ---
118
118
 
@@ -124,9 +124,9 @@ Cross-link: `reference/accessibility.md` — aria-current, landmark labelling, l
124
124
  | Page change content transition | 150ms | ease-out | Fade the results region; managed by page, not pagination |
125
125
  | Ellipsis expand (if interactive) | 120ms | ease-out | Reveal hidden page buttons |
126
126
 
127
- **BAN**: Do not animate the pagination bar itself when a page changes only the content region transitions.
127
+ **BAN**: Do not animate the pagination bar itself when a page changes - only the content region transitions.
128
128
 
129
- Cross-link: `reference/motion.md` content region transitions
129
+ Cross-link: `reference/motion.md` - content region transitions
130
130
 
131
131
  ---
132
132
 
@@ -139,10 +139,10 @@ Cross-link: `reference/motion.md` — content region transitions
139
139
  - Show a results summary ("Showing 51–75 of 587") near the pagination controls *(Carbon, Polaris)*
140
140
 
141
141
  ### Don't
142
- - Don't use `<a href>` with pushState without `aria-current` screen readers won't know which page is current *(WAI-ARIA)*
143
- - Don't show more than 7 page buttons without ellipsis truncation visually overwhelming *(Carbon, Mantine)*
144
- - Don't disable the Previous/Next buttons with only visual styling use `disabled` attr or `aria-disabled` *(WCAG 1.4.3)*
145
- - Don't place pagination at the top only bottom placement is expected; both positions is acceptable *(Polaris, Carbon)*
142
+ - Don't use `<a href>` with pushState without `aria-current` - screen readers won't know which page is current *(WAI-ARIA)*
143
+ - Don't show more than 7 page buttons without ellipsis truncation - visually overwhelming *(Carbon, Mantine)*
144
+ - Don't disable the Previous/Next buttons with only visual styling - use `disabled` attr or `aria-disabled` *(WCAG 1.4.3)*
145
+ - Don't place pagination at the top only - bottom placement is expected; both positions is acceptable *(Polaris, Carbon)*
146
146
 
147
147
  ---
148
148
 
@@ -150,7 +150,7 @@ Cross-link: `reference/motion.md` — content region transitions
150
150
 
151
151
  | Anti-pattern | Entry |
152
152
  |--------------|-------|
153
- | BAN-07 | Missing `aria-current` on active navigation items `reference/anti-patterns.md#ban-07` |
153
+ | BAN-07 | Missing `aria-current` on active navigation items - `reference/anti-patterns.md#ban-07` |
154
154
 
155
155
  ---
156
156
 
@@ -1,4 +1,4 @@
1
- # Popover Benchmark Spec
1
+ # Popover - Benchmark Spec
2
2
 
3
3
  **Harvested from**: Radix UI Popover, Floating UI, Mantine, Atlassian, WAI-ARIA APG, shadcn/ui, Carbon, Material 3
4
4
  **Wave**: 2 · **Category**: Containers
@@ -48,7 +48,7 @@ A popover is an anchored overlay that appears beside a trigger element, containi
48
48
  | Inline picker | Date, color, emoji picker | Material 3, Mantine |
49
49
 
50
50
  **Norm** (≥5/18): Escape closes; outside-click closes; arrow pointer indicates anchor.
51
- **Diverge**: focus trap Radix Popover does NOT trap focus (non-modal); Radix Dialog DOES. Use Dialog-pattern when content isolation is required.
51
+ **Diverge**: focus trap - Radix Popover does NOT trap focus (non-modal); Radix Dialog DOES. Use Dialog-pattern when content isolation is required.
52
52
 
53
53
  ---
54
54
 
@@ -64,7 +64,7 @@ A popover is an anchored overlay that appears beside a trigger element, containi
64
64
 
65
65
  ## Positioning
66
66
 
67
- *Per Floating UI https://floating-ui.com MIT 2024*
67
+ *Per Floating UI - https://floating-ui.com - MIT - 2024*
68
68
 
69
69
  | Property | Recommended Value | Notes |
70
70
  |----------|-------------------|-------|
@@ -97,7 +97,7 @@ Positioning must update on scroll and resize (`autoUpdate` from Floating UI).
97
97
 
98
98
  ### Keyboard Contract
99
99
 
100
- *Quoted verbatim from WAI-ARIA APG https://www.w3.org/WAI/ARIA/apg/patterns/dialogmodal/ (non-modal variant) W3C 2024*
100
+ *Quoted verbatim from WAI-ARIA APG - https://www.w3.org/WAI/ARIA/apg/patterns/dialogmodal/ (non-modal variant) - W3C - 2024*
101
101
 
102
102
  | Key | Action |
103
103
  |-----|--------|
@@ -112,7 +112,7 @@ Positioning must update on scroll and resize (`autoUpdate` from Floating UI).
112
112
  - When popover is dismissed, focus MUST return to the trigger element
113
113
  - Non-modal popover: Tab MAY leave the popover (focus is not trapped)
114
114
  - Modal popover (form isolation): add `role="dialog"` + `aria-modal="true"` + focus trap
115
- - Popover with interactive content: do NOT use `role="tooltip"` tooltip cannot contain interactive elements
115
+ - Popover with interactive content: do NOT use `role="tooltip"` - tooltip cannot contain interactive elements
116
116
 
117
117
  ---
118
118
 
@@ -122,25 +122,25 @@ Positioning must update on scroll and resize (`autoUpdate` from Floating UI).
122
122
  |------------|----------|--------|-------|
123
123
  | Open | 120ms | ease-out | scale 0.95→1 + fade; origin at trigger |
124
124
  | Close | 80ms | ease-in | fade only |
125
- | Position update | 0ms | | No animation on reposition (prevents jank on scroll) |
125
+ | Position update | 0ms | - | No animation on reposition (prevents jank on scroll) |
126
126
 
127
- Cross-link: `reference/motion.md` `AnimatePresence`, `data-state` trigger for CSS transitions
127
+ Cross-link: `reference/motion.md` - `AnimatePresence`, `data-state` trigger for CSS transitions
128
128
 
129
129
  ---
130
130
 
131
131
  ## Do / Don't
132
132
 
133
133
  ### Do
134
- - Use Floating UI or equivalent for positioning manual positioning breaks on scroll and viewport edge *(Radix, Mantine, shadcn)*
134
+ - Use Floating UI or equivalent for positioning - manual positioning breaks on scroll and viewport edge *(Radix, Mantine, shadcn)*
135
135
  - Dismiss on outside-click AND Escape *(WAI-ARIA APG, Radix, all systems)*
136
136
  - Return focus to trigger on close *(WAI-ARIA APG)*
137
137
  - Auto-flip and auto-shift so popover stays in viewport *(Floating UI)*
138
138
 
139
139
  ### Don't
140
- - Don't use `role="tooltip"` for popovers with interactive content tooltip has a different contract *(WAI-ARIA APG)*
141
- - Don't position with `position: absolute` without a Floating UI it will misalign on scroll *(Floating UI docs)*
142
- - Don't make popovers wider than 360px use a modal for complex content *(Atlassian, Carbon)*
143
- - Don't auto-open popovers on hover use tooltip for hover-triggered content *(Radix, WAI-ARIA APG)*
140
+ - Don't use `role="tooltip"` for popovers with interactive content - tooltip has a different contract *(WAI-ARIA APG)*
141
+ - Don't position with `position: absolute` without a Floating UI - it will misalign on scroll *(Floating UI docs)*
142
+ - Don't make popovers wider than 360px - use a modal for complex content *(Atlassian, Carbon)*
143
+ - Don't auto-open popovers on hover - use tooltip for hover-triggered content *(Radix, WAI-ARIA APG)*
144
144
 
145
145
  ---
146
146
 
@@ -1,4 +1,4 @@
1
- # Progress Benchmark Spec
1
+ # Progress - Benchmark Spec
2
2
 
3
3
  **Harvested from**: Material 3, Carbon (ProgressIndicator), Polaris, Mantine
4
4
  **Wave**: 3 · **Category**: Feedback
@@ -33,8 +33,8 @@ A progress indicator communicates the status of an ongoing operation. Determinat
33
33
  |------|----------|-------|
34
34
  | Track | Yes | Background rail (linear) or ring background (circular) |
35
35
  | Fill / indicator | Yes | Foreground showing progress amount |
36
- | Label (visually hidden ok) | Yes | `aria-label` or `aria-labelledby` describes what is loading |
37
- | Value text | No | Rendered percentage (e.g. "45%") supplement to ARIA value |
36
+ | Label (visually hidden ok) | Yes | `aria-label` or `aria-labelledby` - describes what is loading |
37
+ | Value text | No | Rendered percentage (e.g. "45%") - supplement to ARIA value |
38
38
 
39
39
  ---
40
40
 
@@ -70,7 +70,7 @@ A progress indicator communicates the status of an ongoing operation. Determinat
70
70
  | Size | Height | Notes |
71
71
  |------|--------|-------|
72
72
  | sm | 4px (default) | Decorative; thin above content |
73
- | md | 8px | Accessible minimum recommended when bar is the primary indicator |
73
+ | md | 8px | Accessible minimum - recommended when bar is the primary indicator |
74
74
  | lg | 12px | High-emphasis; file upload, step progress |
75
75
 
76
76
  **Circular**
@@ -87,11 +87,11 @@ A progress indicator communicates the status of an ongoing operation. Determinat
87
87
 
88
88
  ## Typography
89
89
 
90
- - Value label (if shown): numeric-sm (12px/tabular-nums) percentage readability
91
- - Associated label (if visible): body-sm (14px/400) describes what is loading
90
+ - Value label (if shown): numeric-sm (12px/tabular-nums) - percentage readability
91
+ - Associated label (if visible): body-sm (14px/400) - describes what is loading
92
92
  - Do not truncate the associated label; use a visually-hidden version if space is constrained
93
93
 
94
- Cross-link: `reference/typography.md` tabular-nums for percentage values
94
+ Cross-link: `reference/typography.md` - tabular-nums for percentage values
95
95
 
96
96
  ---
97
97
 
@@ -102,7 +102,7 @@ Cross-link: `reference/typography.md` — tabular-nums for percentage values
102
102
 
103
103
  ### Keyboard Contract
104
104
 
105
- *Quoted verbatim from WAI-ARIA APG https://www.w3.org/WAI/ARIA/apg/patterns/meter/ W3C 2024*
105
+ *Quoted verbatim from WAI-ARIA APG - https://www.w3.org/WAI/ARIA/apg/patterns/meter/ - W3C - 2024*
106
106
 
107
107
  | Key | Action |
108
108
  |-----|--------|
@@ -112,14 +112,14 @@ Progress indicators are read-only status elements. They receive no keyboard focu
112
112
 
113
113
  ### Accessibility Rules
114
114
 
115
- - `aria-label` or `aria-labelledby` MUST describe what is loading (e.g. "Uploading file", "Loading results") a bare `role="progressbar"` with no label is announced as empty *(WAI-ARIA APG)*
115
+ - `aria-label` or `aria-labelledby` MUST describe what is loading (e.g. "Uploading file", "Loading results") - a bare `role="progressbar"` with no label is announced as empty *(WAI-ARIA APG)*
116
116
  - Determinate bars MUST include `aria-valuenow` matching the current integer percentage *(WAI-ARIA APG)*
117
117
  - Indeterminate bars MUST omit `aria-valuenow` and instead set `aria-valuetext="Loading"` or similar *(WAI-ARIA APG)*
118
118
  - `aria-valuemin` and `aria-valuemax` MUST be present on all progress bars (default 0 and 100)
119
- - Indeterminate animation MUST respect `prefers-reduced-motion` reduce to opacity pulse or static indicator *(WCAG 2.3.3)*
119
+ - Indeterminate animation MUST respect `prefers-reduced-motion` - reduce to opacity pulse or static indicator *(WCAG 2.3.3)*
120
120
  - Color contrast of fill vs. track MUST meet 3:1 minimum for non-text UI components *(WCAG 1.4.11)*
121
121
 
122
- Cross-link: `reference/accessibility.md` `prefers-reduced-motion`, WCAG 1.4.11
122
+ Cross-link: `reference/accessibility.md` - `prefers-reduced-motion`, WCAG 1.4.11
123
123
 
124
124
  ---
125
125
 
@@ -132,9 +132,9 @@ Cross-link: `reference/accessibility.md` — `prefers-reduced-motion`, WCAG 1.4.
132
132
  | Circular spin | 1.2s | linear | Single full rotation per cycle |
133
133
  | Complete → remove | 400ms | ease-in | Brief hold at 100% then fade/collapse |
134
134
 
135
- **BAN**: Bouncing or elasticity on indeterminate loop communicates false progress rhythm. Do not use `transition: all` (catches color changes during theme swap).
135
+ **BAN**: Bouncing or elasticity on indeterminate loop - communicates false progress rhythm. Do not use `transition: all` (catches color changes during theme swap).
136
136
 
137
- Cross-link: `reference/motion.md` `prefers-reduced-motion`: replace sweep with opacity 0.5→1 pulse
137
+ Cross-link: `reference/motion.md` - `prefers-reduced-motion`: replace sweep with opacity 0.5→1 pulse
138
138
 
139
139
  ---
140
140
 
@@ -143,14 +143,14 @@ Cross-link: `reference/motion.md` — `prefers-reduced-motion`: replace sweep wi
143
143
  ### Do
144
144
  - Always provide `aria-label` describing what is loading *(WAI-ARIA APG)*
145
145
  - Use `aria-valuenow` on determinate variants and omit on indeterminate *(WAI-ARIA APG)*
146
- - Use 8px+ height for standalone linear bars 4px bars lack sufficient touch and visual target *(Carbon)*
146
+ - Use 8px+ height for standalone linear bars - 4px bars lack sufficient touch and visual target *(Carbon)*
147
147
  - Transition fill smoothly (300ms ease-out) when value updates *(Material 3, Mantine)*
148
148
 
149
149
  ### Don't
150
- - Don't use `aria-valuenow` on indeterminate bars it implies a known value *(WAI-ARIA APG)*
151
- - Don't show a spinner (circular indeterminate) when content shape is known use Skeleton instead *(Carbon, Polaris)*
152
- - Don't remove the progress bar the instant it hits 100% hold briefly so the completion is registered *(Material 3)*
153
- - Don't animate with infinite bounce implies bouncing progress rhythm *(Carbon, Mantine)*
150
+ - Don't use `aria-valuenow` on indeterminate bars - it implies a known value *(WAI-ARIA APG)*
151
+ - Don't show a spinner (circular indeterminate) when content shape is known - use Skeleton instead *(Carbon, Polaris)*
152
+ - Don't remove the progress bar the instant it hits 100% - hold briefly so the completion is registered *(Material 3)*
153
+ - Don't animate with infinite bounce - implies bouncing progress rhythm *(Carbon, Mantine)*
154
154
 
155
155
  ---
156
156
 
@@ -1,4 +1,4 @@
1
- # Radio Benchmark Spec
1
+ # Radio - Benchmark Spec
2
2
 
3
3
  **Harvested from**: Material 3, Carbon, Fluent 2, Mantine, WAI-ARIA APG, Polaris, Ant Design, Chakra UI
4
4
  **Wave**: 1 · **Category**: Inputs
@@ -7,7 +7,7 @@
7
7
 
8
8
  ## Purpose
9
9
 
10
- A radio button represents one option within a mutually exclusive group. Selecting one radio button deselects all others in the same group. Always wrap radio buttons in a `<fieldset>` + `<legend>` and group them with the same `name` attribute. Never use a single radio button it creates an unresettable state. Use a checkbox for binary choices.
10
+ A radio button represents one option within a mutually exclusive group. Selecting one radio button deselects all others in the same group. Always wrap radio buttons in a `<fieldset>` + `<legend>` and group them with the same `name` attribute. Never use a single radio button - it creates an unresettable state. Use a checkbox for binary choices.
11
11
 
12
12
  ---
13
13
 
@@ -44,7 +44,7 @@ A radio button represents one option within a mutually exclusive group. Selectin
44
44
  | Button group | Segmented-control appearance | Material 3, Fluent 2, Carbon |
45
45
 
46
46
  **Norm** (≥6/18): vertical stacking default; horizontal allowed for ≤3 short labels.
47
- **Diverge**: button-group vs. radio-card visual styling differs but keyboard contract is identical.
47
+ **Diverge**: button-group vs. radio-card - visual styling differs but keyboard contract is identical.
48
48
 
49
49
  ---
50
50
 
@@ -52,10 +52,10 @@ A radio button represents one option within a mutually exclusive group. Selectin
52
52
 
53
53
  | State | Trigger | Visual | ARIA |
54
54
  |-------|---------|--------|------|
55
- | unselected | default | Empty circle | |
55
+ | unselected | default | Empty circle | - |
56
56
  | selected | user interaction / programmatic | Filled dot | `checked` attr |
57
- | hover | pointer over | Circle border darkens | |
58
- | focus | keyboard (Tab into group) | 2px focus ring on currently selected / first | |
57
+ | hover | pointer over | Circle border darkens | - |
58
+ | focus | keyboard (Tab into group) | 2px focus ring on currently selected / first | - |
59
59
  | disabled | `disabled` attr | 38% opacity | `aria-disabled="true"` |
60
60
  | error | group-level | Red border on legend/container | `aria-describedby` on `<fieldset>` |
61
61
 
@@ -71,14 +71,14 @@ A radio button represents one option within a mutually exclusive group. Selectin
71
71
  | Item spacing (vertical) | 8–12px | *(Carbon: 8px, Material 3: 8px)* |
72
72
  | Touch target | 44×44px via pseudo-element | `reference/surfaces.md` |
73
73
 
74
- Cross-link: `reference/surfaces.md` hit-area pseudo-element pattern
74
+ Cross-link: `reference/surfaces.md` - hit-area pseudo-element pattern
75
75
 
76
76
  ---
77
77
 
78
78
  ## Typography
79
79
 
80
- - Label: 14px/400 same as body; option is a choice, not a heading
81
- - Legend: 14px/500 or 12px/600 uppercase distinct from option labels
80
+ - Label: 14px/400 - same as body; option is a choice, not a heading
81
+ - Legend: 14px/500 or 12px/600 uppercase - distinct from option labels
82
82
  - Helper/error: 12px/400
83
83
 
84
84
  ---
@@ -91,7 +91,7 @@ Cross-link: `reference/surfaces.md` — hit-area pseudo-element pattern
91
91
 
92
92
  ### Keyboard Contract
93
93
 
94
- *Quoted verbatim from WAI-ARIA APG https://www.w3.org/WAI/ARIA/apg/patterns/radio/ W3C 2024*
94
+ *Quoted verbatim from WAI-ARIA APG - https://www.w3.org/WAI/ARIA/apg/patterns/radio/ - W3C - 2024*
95
95
 
96
96
  | Key | Action |
97
97
  |-----|--------|
@@ -105,10 +105,10 @@ Cross-link: `reference/surfaces.md` — hit-area pseudo-element pattern
105
105
 
106
106
  ### Accessibility Rules
107
107
 
108
- - `<fieldset>` + `<legend>` MUST wrap the entire group legend text is prepended to each option announcement
108
+ - `<fieldset>` + `<legend>` MUST wrap the entire group - legend text is prepended to each option announcement
109
109
  - All radios in a group MUST share the same `name` attribute
110
- - Tab focuses the selected radio (or first, if none selected) arrow keys navigate within the group
111
- - Never use a single radio button it creates a state the user cannot unset; use a checkbox
110
+ - Tab focuses the selected radio (or first, if none selected) - arrow keys navigate within the group
111
+ - Never use a single radio button - it creates a state the user cannot unset; use a checkbox
112
112
  - Error state applies to the group: `aria-describedby` on the `<fieldset>` or `role="radiogroup"` container
113
113
  - `required`: apply to all radios in the group or use `aria-required` on the group container
114
114
 
@@ -122,7 +122,7 @@ Cross-link: `reference/surfaces.md` — hit-area pseudo-element pattern
122
122
  | Deselect | 80ms | ease | Dot scale 1→0 |
123
123
  | Hover border | 80ms | ease | Border colour only |
124
124
 
125
- Cross-link: `reference/motion.md` `prefers-reduced-motion`: skip dot animation, show fill instantly
125
+ Cross-link: `reference/motion.md` - `prefers-reduced-motion`: skip dot animation, show fill instantly
126
126
 
127
127
  ---
128
128
 
@@ -132,11 +132,11 @@ Cross-link: `reference/motion.md` — `prefers-reduced-motion`: skip dot animati
132
132
  - Always use `<fieldset>` + `<legend>` for the group *(WAI-ARIA APG, Carbon, Polaris)*
133
133
  - Use the same `name` attribute for all radios in a group *(HTML spec, all systems)*
134
134
  - Pre-select a default option where appropriate to reduce cognitive load *(Material 3, Polaris)*
135
- - Use arrow keys to navigate within a group Tab moves to the group, not each item *(WAI-ARIA APG)*
135
+ - Use arrow keys to navigate within a group - Tab moves to the group, not each item *(WAI-ARIA APG)*
136
136
 
137
137
  ### Don't
138
- - Don't use a single radio button use a checkbox instead *(Material 3, Carbon, WAI-ARIA APG)*
139
- - Don't use radio buttons for mutually exclusive options that require confirmation use a select *(Polaris)*
138
+ - Don't use a single radio button - use a checkbox instead *(Material 3, Carbon, WAI-ARIA APG)*
139
+ - Don't use radio buttons for mutually exclusive options that require confirmation - use a select *(Polaris)*
140
140
  - Don't mix radio and checkbox styles in the same group *(Carbon, Polaris)*
141
141
  - Don't require the user to make a selection before seeing other page content (premature required state) *(Polaris)*
142
142