@hegemonart/get-design-done 1.42.0 → 1.43.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (425) hide show
  1. package/.claude-plugin/marketplace.json +2 -2
  2. package/.claude-plugin/plugin.json +1 -1
  3. package/CHANGELOG.md +1080 -1038
  4. package/README.md +157 -155
  5. package/SKILL.md +42 -42
  6. package/agents/README.md +53 -53
  7. package/agents/a11y-mapper.md +3 -3
  8. package/agents/component-benchmark-harvester.md +8 -8
  9. package/agents/component-benchmark-synthesizer.md +11 -11
  10. package/agents/component-taxonomy-mapper.md +5 -5
  11. package/agents/compose-executor.md +25 -25
  12. package/agents/conflict-resolver.md +8 -8
  13. package/agents/cost-forecaster.md +12 -12
  14. package/agents/decision-journal-exporter.md +5 -5
  15. package/agents/design-advisor.md +19 -19
  16. package/agents/design-assumptions-analyzer.md +16 -16
  17. package/agents/design-auditor.md +39 -39
  18. package/agents/design-authority-watcher.md +28 -28
  19. package/agents/design-component-generator.md +27 -27
  20. package/agents/design-context-builder.md +66 -66
  21. package/agents/design-context-checker-gate.md +5 -5
  22. package/agents/design-context-checker.md +20 -20
  23. package/agents/design-discussant.md +23 -23
  24. package/agents/design-doc-writer.md +12 -12
  25. package/agents/design-executor.md +38 -38
  26. package/agents/design-figma-writer.md +31 -31
  27. package/agents/design-fixer.md +27 -27
  28. package/agents/design-integration-checker-gate.md +5 -5
  29. package/agents/design-integration-checker.md +29 -29
  30. package/agents/design-paper-writer.md +14 -14
  31. package/agents/design-pattern-mapper.md +9 -9
  32. package/agents/design-pencil-writer.md +12 -12
  33. package/agents/design-phase-researcher.md +14 -14
  34. package/agents/design-plan-checker.md +13 -13
  35. package/agents/design-planner.md +24 -24
  36. package/agents/design-reflector.md +48 -48
  37. package/agents/design-research-synthesizer.md +21 -21
  38. package/agents/design-start-writer.md +7 -7
  39. package/agents/design-update-checker.md +8 -8
  40. package/agents/design-verifier-gate.md +5 -5
  41. package/agents/design-verifier.md +80 -80
  42. package/agents/ds-generator.md +14 -14
  43. package/agents/ds-migration-planner.md +12 -12
  44. package/agents/email-executor.md +26 -26
  45. package/agents/experiment-result-ingester.md +10 -10
  46. package/agents/flutter-executor.md +28 -28
  47. package/agents/gdd-graph-refresh.md +10 -10
  48. package/agents/gdd-intel-updater.md +11 -11
  49. package/agents/gdd-learnings-extractor.md +2 -2
  50. package/agents/motion-mapper.md +8 -8
  51. package/agents/motion-verifier.md +16 -16
  52. package/agents/pdf-executor.md +27 -27
  53. package/agents/perf-analyzer.md +20 -20
  54. package/agents/pr-commenter.md +24 -24
  55. package/agents/prototype-gate.md +29 -29
  56. package/agents/quality-gate-runner.md +21 -21
  57. package/agents/rollout-coordinator.md +8 -8
  58. package/agents/swift-executor.md +41 -41
  59. package/agents/ticket-sync-agent.md +19 -19
  60. package/agents/token-mapper.md +6 -6
  61. package/agents/user-research-synthesizer.md +13 -13
  62. package/agents/visual-hierarchy-mapper.md +2 -2
  63. package/dist/claude-code/.claude/skills/add-backlog/SKILL.md +3 -3
  64. package/dist/claude-code/.claude/skills/analyze-dependencies/SKILL.md +10 -10
  65. package/dist/claude-code/.claude/skills/apply-reflections/SKILL.md +13 -13
  66. package/dist/claude-code/.claude/skills/apply-reflections/apply-reflections-procedure.md +20 -20
  67. package/dist/claude-code/.claude/skills/audit/SKILL.md +7 -7
  68. package/dist/claude-code/.claude/skills/bandit-status/SKILL.md +7 -7
  69. package/dist/claude-code/.claude/skills/benchmark/SKILL.md +7 -7
  70. package/dist/claude-code/.claude/skills/bootstrap-ds/SKILL.md +10 -10
  71. package/dist/claude-code/.claude/skills/brief/SKILL.md +20 -20
  72. package/dist/claude-code/.claude/skills/budget/SKILL.md +4 -4
  73. package/dist/claude-code/.claude/skills/cache-manager/SKILL.md +6 -6
  74. package/dist/claude-code/.claude/skills/cache-manager/cache-policy.md +5 -5
  75. package/dist/claude-code/.claude/skills/check-update/SKILL.md +5 -5
  76. package/dist/claude-code/.claude/skills/compare/SKILL.md +15 -15
  77. package/dist/claude-code/.claude/skills/compare/compare-rubric.md +17 -17
  78. package/dist/claude-code/.claude/skills/complete-cycle/SKILL.md +5 -5
  79. package/dist/claude-code/.claude/skills/connections/SKILL.md +11 -11
  80. package/dist/claude-code/.claude/skills/connections/connections-onboarding.md +76 -76
  81. package/dist/claude-code/.claude/skills/continue/SKILL.md +2 -2
  82. package/dist/claude-code/.claude/skills/darkmode/SKILL.md +17 -17
  83. package/dist/claude-code/.claude/skills/darkmode/darkmode-audit-procedure.md +7 -7
  84. package/dist/claude-code/.claude/skills/debug/SKILL.md +3 -3
  85. package/dist/claude-code/.claude/skills/debug/debug-feedback-loops.md +12 -12
  86. package/dist/claude-code/.claude/skills/design/SKILL.md +12 -12
  87. package/dist/claude-code/.claude/skills/design/design-procedure.md +23 -23
  88. package/dist/claude-code/.claude/skills/discover/SKILL.md +7 -7
  89. package/dist/claude-code/.claude/skills/discover/discover-procedure.md +18 -18
  90. package/dist/claude-code/.claude/skills/discuss/SKILL.md +12 -12
  91. package/dist/claude-code/.claude/skills/do/SKILL.md +1 -1
  92. package/dist/claude-code/.claude/skills/explore/SKILL.md +21 -21
  93. package/dist/claude-code/.claude/skills/explore/explore-procedure.md +48 -48
  94. package/dist/claude-code/.claude/skills/export/SKILL.md +9 -9
  95. package/dist/claude-code/.claude/skills/extract-learnings/SKILL.md +5 -5
  96. package/dist/claude-code/.claude/skills/fast/SKILL.md +7 -7
  97. package/dist/claude-code/.claude/skills/figma-extract/SKILL.md +11 -11
  98. package/dist/claude-code/.claude/skills/figma-write/SKILL.md +6 -6
  99. package/dist/claude-code/.claude/skills/graphify/SKILL.md +4 -4
  100. package/dist/claude-code/.claude/skills/health/SKILL.md +16 -16
  101. package/dist/claude-code/.claude/skills/health/health-mcp-detection.md +3 -3
  102. package/dist/claude-code/.claude/skills/health/health-skill-length-report.md +6 -6
  103. package/dist/claude-code/.claude/skills/help/SKILL.md +1 -1
  104. package/dist/claude-code/.claude/skills/list-assumptions/SKILL.md +4 -4
  105. package/dist/claude-code/.claude/skills/map/SKILL.md +12 -12
  106. package/dist/claude-code/.claude/skills/migrate/SKILL.md +5 -5
  107. package/dist/claude-code/.claude/skills/new-cycle/SKILL.md +2 -2
  108. package/dist/claude-code/.claude/skills/new-cycle/milestone-completeness-rubric.md +16 -16
  109. package/dist/claude-code/.claude/skills/new-project/SKILL.md +1 -1
  110. package/dist/claude-code/.claude/skills/next/SKILL.md +5 -5
  111. package/dist/claude-code/.claude/skills/note/SKILL.md +1 -1
  112. package/dist/claude-code/.claude/skills/openrouter-status/SKILL.md +4 -4
  113. package/dist/claude-code/.claude/skills/optimize/SKILL.md +15 -15
  114. package/dist/claude-code/.claude/skills/pause/SKILL.md +5 -5
  115. package/dist/claude-code/.claude/skills/peer-cli-add/SKILL.md +11 -11
  116. package/dist/claude-code/.claude/skills/peer-cli-add/peer-cli-protocol.md +39 -39
  117. package/dist/claude-code/.claude/skills/peer-cli-customize/SKILL.md +14 -14
  118. package/dist/claude-code/.claude/skills/peers/SKILL.md +4 -4
  119. package/dist/claude-code/.claude/skills/plan/SKILL.md +13 -13
  120. package/dist/claude-code/.claude/skills/plan/plan-procedure.md +24 -24
  121. package/dist/claude-code/.claude/skills/plant-seed/SKILL.md +4 -4
  122. package/dist/claude-code/.claude/skills/pr-branch/SKILL.md +2 -2
  123. package/dist/claude-code/.claude/skills/progress/SKILL.md +15 -15
  124. package/dist/claude-code/.claude/skills/quality-gate/SKILL.md +22 -22
  125. package/dist/claude-code/.claude/skills/quality-gate/threat-modeling.md +19 -19
  126. package/dist/claude-code/.claude/skills/quick/SKILL.md +5 -5
  127. package/dist/claude-code/.claude/skills/reapply-patches/SKILL.md +7 -7
  128. package/dist/claude-code/.claude/skills/reflect/SKILL.md +3 -3
  129. package/dist/claude-code/.claude/skills/reflect/procedures/capability-gap-scan.md +11 -11
  130. package/dist/claude-code/.claude/skills/report-issue/SKILL.md +5 -5
  131. package/dist/claude-code/.claude/skills/report-issue/report-issue-procedure.md +27 -27
  132. package/dist/claude-code/.claude/skills/resume/SKILL.md +9 -9
  133. package/dist/claude-code/.claude/skills/review-backlog/SKILL.md +3 -3
  134. package/dist/claude-code/.claude/skills/review-decisions/SKILL.md +3 -3
  135. package/dist/claude-code/.claude/skills/roi/SKILL.md +5 -5
  136. package/dist/claude-code/.claude/skills/rollout-status/SKILL.md +4 -4
  137. package/dist/claude-code/.claude/skills/router/SKILL.md +11 -11
  138. package/dist/claude-code/.claude/skills/router/capability-gap-emitter.md +6 -6
  139. package/dist/claude-code/.claude/skills/router/router-pick-emitter.md +9 -9
  140. package/dist/claude-code/.claude/skills/router/router-rules.md +7 -7
  141. package/dist/claude-code/.claude/skills/scan/SKILL.md +16 -16
  142. package/dist/claude-code/.claude/skills/scan/scan-procedure.md +42 -42
  143. package/dist/claude-code/.claude/skills/settings/SKILL.md +2 -2
  144. package/dist/claude-code/.claude/skills/ship/SKILL.md +7 -7
  145. package/dist/claude-code/.claude/skills/sketch/SKILL.md +10 -10
  146. package/dist/claude-code/.claude/skills/sketch-wrap-up/SKILL.md +12 -12
  147. package/dist/claude-code/.claude/skills/skill-manifest/SKILL.md +5 -5
  148. package/dist/claude-code/.claude/skills/spike/SKILL.md +7 -7
  149. package/dist/claude-code/.claude/skills/spike-wrap-up/SKILL.md +13 -13
  150. package/dist/claude-code/.claude/skills/start/SKILL.md +8 -8
  151. package/dist/claude-code/.claude/skills/start/start-procedure.md +9 -9
  152. package/dist/claude-code/.claude/skills/stats/SKILL.md +5 -5
  153. package/dist/claude-code/.claude/skills/style/SKILL.md +12 -12
  154. package/dist/claude-code/.claude/skills/style/style-doc-procedure.md +12 -12
  155. package/dist/claude-code/.claude/skills/synthesize/SKILL.md +10 -10
  156. package/dist/claude-code/.claude/skills/timeline/SKILL.md +4 -4
  157. package/dist/claude-code/.claude/skills/todo/SKILL.md +3 -3
  158. package/dist/claude-code/.claude/skills/turn-closeout/SKILL.md +10 -10
  159. package/dist/claude-code/.claude/skills/unlock-decision/SKILL.md +3 -3
  160. package/dist/claude-code/.claude/skills/update/SKILL.md +9 -9
  161. package/dist/claude-code/.claude/skills/using-gdd/SKILL.md +17 -17
  162. package/dist/claude-code/.claude/skills/verify/SKILL.md +13 -13
  163. package/dist/claude-code/.claude/skills/verify/verify-procedure.md +34 -34
  164. package/dist/claude-code/.claude/skills/warm-cache/SKILL.md +8 -8
  165. package/dist/claude-code/.claude/skills/watch-authorities/SKILL.md +9 -9
  166. package/dist/claude-code/.claude/skills/zoom-out/SKILL.md +4 -4
  167. package/package.json +5 -2
  168. package/reference/DEPRECATIONS.md +10 -10
  169. package/reference/STATE-TEMPLATE.md +26 -26
  170. package/reference/accessibility.md +13 -13
  171. package/reference/adr-format.md +13 -13
  172. package/reference/ai-native-tool-interface.md +5 -5
  173. package/reference/anti-patterns.md +9 -9
  174. package/reference/architecture-vocabulary.md +31 -31
  175. package/reference/audit-scoring.md +13 -13
  176. package/reference/authority-feeds.md +36 -36
  177. package/reference/bandit-integration.md +25 -25
  178. package/reference/brand-voice.md +36 -36
  179. package/reference/capability-gap-stage-gate.md +20 -20
  180. package/reference/checklists.md +26 -26
  181. package/reference/cli-localization.md +13 -13
  182. package/reference/codex-tools.md +2 -2
  183. package/reference/color-theory.md +28 -28
  184. package/reference/component-authoring.md +4 -4
  185. package/reference/components/README.md +13 -13
  186. package/reference/components/TEMPLATE.md +13 -13
  187. package/reference/components/accordion.md +15 -15
  188. package/reference/components/alert.md +25 -25
  189. package/reference/components/badge.md +18 -18
  190. package/reference/components/breadcrumbs.md +24 -24
  191. package/reference/components/button.md +21 -21
  192. package/reference/components/card.md +13 -13
  193. package/reference/components/checkbox.md +20 -20
  194. package/reference/components/chip.md +20 -20
  195. package/reference/components/command-palette.md +15 -15
  196. package/reference/components/date-picker.md +22 -22
  197. package/reference/components/drawer.md +13 -13
  198. package/reference/components/file-upload.md +22 -22
  199. package/reference/components/input.md +18 -18
  200. package/reference/components/label.md +25 -25
  201. package/reference/components/link.md +19 -19
  202. package/reference/components/list.md +17 -17
  203. package/reference/components/menu.md +19 -19
  204. package/reference/components/modal-dialog.md +16 -16
  205. package/reference/components/navbar.md +19 -19
  206. package/reference/components/pagination.md +18 -18
  207. package/reference/components/popover.md +12 -12
  208. package/reference/components/progress.md +18 -18
  209. package/reference/components/radio.md +17 -17
  210. package/reference/components/rich-text-editor.md +24 -24
  211. package/reference/components/select-combobox.md +16 -16
  212. package/reference/components/sidebar.md +15 -15
  213. package/reference/components/skeleton.md +20 -20
  214. package/reference/components/slider.md +20 -20
  215. package/reference/components/stepper.md +24 -24
  216. package/reference/components/switch.md +19 -19
  217. package/reference/components/table.md +21 -21
  218. package/reference/components/tabs.md +11 -11
  219. package/reference/components/toast.md +19 -19
  220. package/reference/components/tooltip.md +19 -19
  221. package/reference/components/tree.md +17 -17
  222. package/reference/composition.md +38 -38
  223. package/reference/config-schema.md +37 -37
  224. package/reference/context-md-format.md +9 -9
  225. package/reference/contrast-advanced.md +29 -29
  226. package/reference/conversational-ui.md +17 -17
  227. package/reference/cost-governance.md +14 -14
  228. package/reference/css-grid-layout.md +8 -8
  229. package/reference/cycle-handoff-preamble.md +3 -3
  230. package/reference/data-visualization.md +67 -67
  231. package/reference/debugger-philosophy.md +5 -5
  232. package/reference/design-system-guidance.md +21 -21
  233. package/reference/design-systems-catalog.md +20 -20
  234. package/reference/design-variants.md +11 -11
  235. package/reference/domains/civic-patterns.md +10 -10
  236. package/reference/domains/finance-patterns.md +9 -9
  237. package/reference/domains/gaming-patterns.md +9 -9
  238. package/reference/domains/healthcare-patterns.md +11 -11
  239. package/reference/ds-bootstrap-rubric.md +13 -13
  240. package/reference/email-design.md +22 -22
  241. package/reference/emotional-design.md +10 -10
  242. package/reference/error-recovery.md +11 -11
  243. package/reference/export-formats.md +7 -7
  244. package/reference/figma-sandbox.md +6 -6
  245. package/reference/first-principles.md +10 -10
  246. package/reference/form-patterns.md +26 -26
  247. package/reference/framer-motion-patterns.md +49 -49
  248. package/reference/gdd-runtime-audit.md +17 -17
  249. package/reference/gdd-threat-model.md +44 -44
  250. package/reference/gemini-tools.md +3 -3
  251. package/reference/gestalt.md +24 -24
  252. package/reference/heuristics.md +32 -32
  253. package/reference/i18n.md +44 -44
  254. package/reference/iconography.md +24 -24
  255. package/reference/image-optimization.md +14 -14
  256. package/reference/information-architecture.md +47 -47
  257. package/reference/intel-schema.md +1 -1
  258. package/reference/known-failure-modes.md +37 -37
  259. package/reference/meta-rules.md +5 -5
  260. package/reference/migrations/material-3-to-4.md +17 -17
  261. package/reference/migrations/mui-v6.md +16 -16
  262. package/reference/migrations/shadcn-v2.md +25 -25
  263. package/reference/migrations/tailwind-v4.md +21 -21
  264. package/reference/model-prices.md +3 -3
  265. package/reference/model-tiers.md +40 -40
  266. package/reference/motion-advanced.md +21 -21
  267. package/reference/motion-easings.md +29 -29
  268. package/reference/motion-interpolate.md +1 -1
  269. package/reference/motion-spring.md +13 -13
  270. package/reference/motion-transition-taxonomy.md +34 -34
  271. package/reference/motion.md +31 -31
  272. package/reference/multi-author-model.md +13 -13
  273. package/reference/native-platforms.md +28 -28
  274. package/reference/notification-routing.md +6 -6
  275. package/reference/onboarding-progressive-disclosure.md +32 -32
  276. package/reference/openrouter-tier-mapping.md +8 -8
  277. package/reference/palette-catalog.md +37 -37
  278. package/reference/parallelism-rules.md +20 -20
  279. package/reference/peer-cli-capabilities.md +14 -14
  280. package/reference/peer-protocols.md +21 -21
  281. package/reference/perf-budget.md +21 -21
  282. package/reference/performance.md +22 -22
  283. package/reference/platforms.md +51 -51
  284. package/reference/pr-review-integration.md +7 -7
  285. package/reference/prices/antigravity.md +3 -3
  286. package/reference/prices/augment.md +3 -3
  287. package/reference/prices/claude.md +2 -2
  288. package/reference/prices/cline.md +4 -4
  289. package/reference/prices/codebuddy.md +3 -3
  290. package/reference/prices/codex.md +2 -2
  291. package/reference/prices/copilot.md +3 -3
  292. package/reference/prices/cursor.md +3 -3
  293. package/reference/prices/gemini.md +2 -2
  294. package/reference/prices/kilo.md +3 -3
  295. package/reference/prices/opencode.md +4 -4
  296. package/reference/prices/qwen.md +2 -2
  297. package/reference/prices/trae.md +3 -3
  298. package/reference/prices/windsurf.md +3 -3
  299. package/reference/prices.openrouter.md +5 -5
  300. package/reference/print-design.md +36 -36
  301. package/reference/priority-matrix.md +2 -2
  302. package/reference/project-skills-guide.md +3 -3
  303. package/reference/proportion-systems.md +23 -23
  304. package/reference/pseudonymization-rules.md +30 -30
  305. package/reference/retrieval-contract.md +14 -14
  306. package/reference/review-format.md +7 -7
  307. package/reference/rollout-coordination.md +10 -10
  308. package/reference/rtl-cjk-cultural.md +39 -39
  309. package/reference/runtime-models.md +28 -28
  310. package/reference/shared-preamble.md +26 -26
  311. package/reference/skill-authoring-contract.md +16 -16
  312. package/reference/skill-placeholders.md +3 -3
  313. package/reference/start-interview.md +10 -10
  314. package/reference/style-vocabulary.md +25 -25
  315. package/reference/surfaces.md +4 -4
  316. package/reference/ticket-sync.md +9 -9
  317. package/reference/typography.md +64 -64
  318. package/reference/user-research.md +54 -54
  319. package/reference/variable-fonts-loading.md +15 -15
  320. package/reference/visual-hierarchy-layout.md +41 -41
  321. package/scripts/lib/manifest/prose-denylist.json +1 -1
  322. package/skills/add-backlog/SKILL.md +3 -3
  323. package/skills/analyze-dependencies/SKILL.md +10 -10
  324. package/skills/apply-reflections/SKILL.md +13 -13
  325. package/skills/apply-reflections/apply-reflections-procedure.md +20 -20
  326. package/skills/audit/SKILL.md +7 -7
  327. package/skills/bandit-status/SKILL.md +7 -7
  328. package/skills/benchmark/SKILL.md +7 -7
  329. package/skills/bootstrap-ds/SKILL.md +10 -10
  330. package/skills/brief/SKILL.md +20 -20
  331. package/skills/budget/SKILL.md +4 -4
  332. package/skills/cache-manager/SKILL.md +6 -6
  333. package/skills/cache-manager/cache-policy.md +5 -5
  334. package/skills/check-update/SKILL.md +5 -5
  335. package/skills/compare/SKILL.md +15 -15
  336. package/skills/compare/compare-rubric.md +17 -17
  337. package/skills/complete-cycle/SKILL.md +5 -5
  338. package/skills/connections/SKILL.md +11 -11
  339. package/skills/connections/connections-onboarding.md +76 -76
  340. package/skills/continue/SKILL.md +2 -2
  341. package/skills/darkmode/SKILL.md +17 -17
  342. package/skills/darkmode/darkmode-audit-procedure.md +7 -7
  343. package/skills/debug/SKILL.md +3 -3
  344. package/skills/debug/debug-feedback-loops.md +12 -12
  345. package/skills/design/SKILL.md +12 -12
  346. package/skills/design/design-procedure.md +23 -23
  347. package/skills/discover/SKILL.md +7 -7
  348. package/skills/discover/discover-procedure.md +18 -18
  349. package/skills/discuss/SKILL.md +12 -12
  350. package/skills/do/SKILL.md +1 -1
  351. package/skills/explore/SKILL.md +21 -21
  352. package/skills/explore/explore-procedure.md +48 -48
  353. package/skills/export/SKILL.md +9 -9
  354. package/skills/extract-learnings/SKILL.md +5 -5
  355. package/skills/fast/SKILL.md +7 -7
  356. package/skills/figma-extract/SKILL.md +11 -11
  357. package/skills/figma-write/SKILL.md +6 -6
  358. package/skills/graphify/SKILL.md +4 -4
  359. package/skills/health/SKILL.md +16 -16
  360. package/skills/health/health-mcp-detection.md +3 -3
  361. package/skills/health/health-skill-length-report.md +6 -6
  362. package/skills/help/SKILL.md +1 -1
  363. package/skills/list-assumptions/SKILL.md +4 -4
  364. package/skills/map/SKILL.md +12 -12
  365. package/skills/migrate/SKILL.md +5 -5
  366. package/skills/new-cycle/SKILL.md +2 -2
  367. package/skills/new-cycle/milestone-completeness-rubric.md +16 -16
  368. package/skills/new-project/SKILL.md +1 -1
  369. package/skills/next/SKILL.md +5 -5
  370. package/skills/note/SKILL.md +1 -1
  371. package/skills/openrouter-status/SKILL.md +4 -4
  372. package/skills/optimize/SKILL.md +15 -15
  373. package/skills/pause/SKILL.md +5 -5
  374. package/skills/peer-cli-add/SKILL.md +11 -11
  375. package/skills/peer-cli-add/peer-cli-protocol.md +39 -39
  376. package/skills/peer-cli-customize/SKILL.md +14 -14
  377. package/skills/peers/SKILL.md +4 -4
  378. package/skills/plan/SKILL.md +13 -13
  379. package/skills/plan/plan-procedure.md +24 -24
  380. package/skills/plant-seed/SKILL.md +4 -4
  381. package/skills/pr-branch/SKILL.md +2 -2
  382. package/skills/progress/SKILL.md +15 -15
  383. package/skills/quality-gate/SKILL.md +22 -22
  384. package/skills/quality-gate/threat-modeling.md +19 -19
  385. package/skills/quick/SKILL.md +5 -5
  386. package/skills/reapply-patches/SKILL.md +7 -7
  387. package/skills/reflect/SKILL.md +3 -3
  388. package/skills/reflect/procedures/capability-gap-scan.md +11 -11
  389. package/skills/report-issue/SKILL.md +5 -5
  390. package/skills/report-issue/report-issue-procedure.md +27 -27
  391. package/skills/resume/SKILL.md +9 -9
  392. package/skills/review-backlog/SKILL.md +3 -3
  393. package/skills/review-decisions/SKILL.md +3 -3
  394. package/skills/roi/SKILL.md +5 -5
  395. package/skills/rollout-status/SKILL.md +4 -4
  396. package/skills/router/SKILL.md +11 -11
  397. package/skills/router/capability-gap-emitter.md +6 -6
  398. package/skills/router/router-pick-emitter.md +9 -9
  399. package/skills/router/router-rules.md +7 -7
  400. package/skills/scan/SKILL.md +16 -16
  401. package/skills/scan/scan-procedure.md +42 -42
  402. package/skills/settings/SKILL.md +2 -2
  403. package/skills/ship/SKILL.md +7 -7
  404. package/skills/sketch/SKILL.md +10 -10
  405. package/skills/sketch-wrap-up/SKILL.md +12 -12
  406. package/skills/skill-manifest/SKILL.md +5 -5
  407. package/skills/spike/SKILL.md +7 -7
  408. package/skills/spike-wrap-up/SKILL.md +13 -13
  409. package/skills/start/SKILL.md +8 -8
  410. package/skills/start/start-procedure.md +9 -9
  411. package/skills/stats/SKILL.md +5 -5
  412. package/skills/style/SKILL.md +12 -12
  413. package/skills/style/style-doc-procedure.md +12 -12
  414. package/skills/synthesize/SKILL.md +10 -10
  415. package/skills/timeline/SKILL.md +4 -4
  416. package/skills/todo/SKILL.md +3 -3
  417. package/skills/turn-closeout/SKILL.md +10 -10
  418. package/skills/unlock-decision/SKILL.md +3 -3
  419. package/skills/update/SKILL.md +9 -9
  420. package/skills/using-gdd/SKILL.md +17 -17
  421. package/skills/verify/SKILL.md +13 -13
  422. package/skills/verify/verify-procedure.md +34 -34
  423. package/skills/warm-cache/SKILL.md +8 -8
  424. package/skills/watch-authorities/SKILL.md +9 -9
  425. package/skills/zoom-out/SKILL.md +4 -4
@@ -1,4 +1,4 @@
1
- # Menu (Dropdown / Context Menu) Benchmark Spec
1
+ # Menu (Dropdown / Context Menu) - Benchmark Spec
2
2
 
3
3
  **Harvested from**: Radix UI, WAI-ARIA APG, Carbon, Atlassian, Material 3, Polaris
4
4
  **Wave**: 4 · **Category**: Navigation
@@ -7,7 +7,7 @@
7
7
 
8
8
  ## Purpose
9
9
 
10
- A menu presents a list of actions or options in a temporary overlay anchored to a trigger element. It differs from a Select/Combobox (which chooses a value) a menu executes commands or navigates. Use a Dropdown Menu for trigger-button scenarios; use a Context Menu for right-click/long-press on an element. *(Radix DropdownMenu, Carbon OverflowMenu, Atlassian DropdownMenu, WAI-ARIA APG Menu agree: menus are action lists, not value selectors)*
10
+ A menu presents a list of actions or options in a temporary overlay anchored to a trigger element. It differs from a Select/Combobox (which chooses a value) - a menu executes commands or navigates. Use a Dropdown Menu for trigger-button scenarios; use a Context Menu for right-click/long-press on an element. *(Radix DropdownMenu, Carbon OverflowMenu, Atlassian DropdownMenu, WAI-ARIA APG Menu agree: menus are action lists, not value selectors)*
11
11
 
12
12
  ---
13
13
 
@@ -29,7 +29,7 @@ A menu presents a list of actions or options in a temporary overlay anchored to
29
29
  | Trigger | Yes | `<button>` with `aria-haspopup="menu"` + `aria-expanded` |
30
30
  | Menu container | Yes | `role="menu"` + `aria-labelledby` pointing to trigger |
31
31
  | Menu item | Yes | `role="menuitem"` on each action |
32
- | Separator | No | `role="separator"` groups related items |
32
+ | Separator | No | `role="separator"` - groups related items |
33
33
  | Checkbox item | No | `role="menuitemcheckbox"` + `aria-checked` |
34
34
  | Radio item | No | `role="menuitemradio"` + `aria-checked`; group in `role="group"` |
35
35
  | Sub-menu trigger | No | `role="menuitem"` + `aria-haspopup="menu"` + `aria-expanded` |
@@ -56,7 +56,7 @@ A menu presents a list of actions or options in a temporary overlay anchored to
56
56
 
57
57
  | State | Trigger | Visual | ARIA |
58
58
  |-------|---------|--------|------|
59
- | closed | | Trigger visible; overlay hidden | `aria-expanded="false"` on trigger |
59
+ | closed | - | Trigger visible; overlay hidden | `aria-expanded="false"` on trigger |
60
60
  | open | Click trigger | Overlay visible; first item focused | `aria-expanded="true"` on trigger |
61
61
  | item-hover / focus | Arrow keys or pointer | Item highlight (8% overlay) | `tabindex="-1"` managed via roving tabindex |
62
62
  | item-disabled | `disabled` prop | 38% opacity, cursor: default | `aria-disabled="true"` on item |
@@ -82,12 +82,12 @@ A menu presents a list of actions or options in a temporary overlay anchored to
82
82
 
83
83
  ## Typography
84
84
 
85
- - Item label: body-sm (13–14px), weight 400 not bold; action labels read as text, not controls
85
+ - Item label: body-sm (13–14px), weight 400 - not bold; action labels read as text, not controls
86
86
  - Destructive items: same weight, color token `--color-text-danger`
87
87
  - Keyboard shortcut hints: body-xs (11–12px), muted color, right-aligned, `aria-hidden="true"`
88
88
  - Truncate item labels with `text-overflow: ellipsis`; never wrap item text
89
89
 
90
- Cross-link: `reference/typography.md` body-sm scale
90
+ Cross-link: `reference/typography.md` - body-sm scale
91
91
 
92
92
  ---
93
93
 
@@ -98,7 +98,7 @@ Cross-link: `reference/typography.md` — body-sm scale
98
98
 
99
99
  ### Keyboard Contract
100
100
 
101
- *Quoted verbatim from WAI-ARIA APG https://www.w3.org/WAI/ARIA/apg/patterns/menu-button/ W3C 2024*
101
+ *Quoted verbatim from WAI-ARIA APG - https://www.w3.org/WAI/ARIA/apg/patterns/menu-button/ - W3C - 2024*
102
102
 
103
103
  | Key | Action |
104
104
  |-----|--------|
@@ -115,14 +115,14 @@ Cross-link: `reference/typography.md` — body-sm scale
115
115
 
116
116
  ### Accessibility Rules
117
117
 
118
- - Menu MUST open on click only never on hover for primary open (hover may preview sub-menus)
118
+ - Menu MUST open on click only - never on hover for primary open (hover may preview sub-menus)
119
119
  - All items MUST be reachable by keyboard; no mouse-only items
120
120
  - Focus returns to the trigger element when the menu closes
121
- - Keyboard shortcut labels (e.g. "⌘K") are `aria-hidden="true"` the shortcut must be registered separately
121
+ - Keyboard shortcut labels (e.g. "⌘K") are `aria-hidden="true"` - the shortcut must be registered separately
122
122
  - `role="separator"` dividers are not focusable
123
123
  - Disabled items use `aria-disabled="true"` (keep focusable so AT users know the option exists)
124
124
 
125
- Cross-link: `reference/accessibility.md` focus management, roving tabindex
125
+ Cross-link: `reference/accessibility.md` - focus management, roving tabindex
126
126
 
127
127
  ---
128
128
 
@@ -135,9 +135,9 @@ Cross-link: `reference/accessibility.md` — focus management, roving tabindex
135
135
  | Item highlight | 80ms | ease-out | Background color transition only |
136
136
  | Sub-menu enter | 120ms | ease-out | Same as menu enter |
137
137
 
138
- **BAN**: `transition: all` on menu items triggers layout thrash on width changes.
138
+ **BAN**: `transition: all` on menu items - triggers layout thrash on width changes.
139
139
 
140
- Cross-link: `reference/motion.md` overlay entry pattern, BAN-04
140
+ Cross-link: `reference/motion.md` - overlay entry pattern, BAN-04
141
141
 
142
142
  ---
143
143
 
@@ -145,15 +145,15 @@ Cross-link: `reference/motion.md` — overlay entry pattern, BAN-04
145
145
 
146
146
  ### Do
147
147
  - Use `role="menu"` + `role="menuitem"` for all action menus *(WAI-ARIA APG)*
148
- - Group related items with `role="separator"` keep groups ≤ 7 items *(Carbon, Atlassian)*
148
+ - Group related items with `role="separator"` - keep groups ≤ 7 items *(Carbon, Atlassian)*
149
149
  - Return focus to the trigger on close *(WAI-ARIA APG)*
150
150
  - Use `role="menuitemcheckbox"` for persistent toggle states *(Radix, Material 3)*
151
151
 
152
152
  ### Don't
153
- - Don't open the menu on hover as the primary interaction keyboard users can't discover hover *(WCAG 1.3.3)*
154
- - Don't exceed 2 levels of sub-menus deeply nested menus are cognitively expensive *(Atlassian, Carbon)*
155
- - Don't put form controls (inputs, sliders) inside a menu use a Popover instead *(WAI-ARIA APG)*
156
- - Don't use `<div>` items without `role="menuitem"` invisible to screen readers *(WAI-ARIA)*
153
+ - Don't open the menu on hover as the primary interaction - keyboard users can't discover hover *(WCAG 1.3.3)*
154
+ - Don't exceed 2 levels of sub-menus - deeply nested menus are cognitively expensive *(Atlassian, Carbon)*
155
+ - Don't put form controls (inputs, sliders) inside a menu - use a Popover instead *(WAI-ARIA APG)*
156
+ - Don't use `<div>` items without `role="menuitem"` - invisible to screen readers *(WAI-ARIA)*
157
157
 
158
158
  ---
159
159
 
@@ -161,7 +161,7 @@ Cross-link: `reference/motion.md` — overlay entry pattern, BAN-04
161
161
 
162
162
  | Anti-pattern | Entry |
163
163
  |--------------|-------|
164
- | BAN-04 | `transition: all` on interactive elements `reference/anti-patterns.md#ban-04` |
164
+ | BAN-04 | `transition: all` on interactive elements - `reference/anti-patterns.md#ban-04` |
165
165
 
166
166
  ---
167
167
 
@@ -207,6 +207,6 @@ grep -rn 'role="menu"' src/ | grep -v 'aria-labelledby\|aria-label'
207
207
  </div>
208
208
  ```
209
209
 
210
- **Why it fails**: No `role="menu"` or `role="menuitem"` screen readers cannot announce this as a menu; items are not keyboard-navigable; no arrow-key navigation; trigger lacks `aria-haspopup` and `aria-expanded`.
210
+ **Why it fails**: No `role="menu"` or `role="menuitem"` - screen readers cannot announce this as a menu; items are not keyboard-navigable; no arrow-key navigation; trigger lacks `aria-haspopup` and `aria-expanded`.
211
211
  **Grep detection**: `grep -rn '<div.*onclick\|<div.*onClick' src/ | grep -i 'menu\|dropdown'`
212
212
  **Fix**: Use `<ul role="menu">` with `<li role="menuitem" tabindex="-1">` items, or a headless menu primitive (Radix DropdownMenu, Downshift).
@@ -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