@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
- # Chip / Tag Benchmark Spec
1
+ # Chip / Tag - Benchmark Spec
2
2
 
3
3
  **Harvested from**: Material 3, Carbon, Atlassian, Mantine
4
4
  **Wave**: 3 · **Category**: Feedback
@@ -7,7 +7,7 @@
7
7
 
8
8
  ## Purpose
9
9
 
10
- A chip (or tag) is a compact, interactive label that represents an attribute, filter, or selection. It is commonly used for multi-select filter interfaces, tag-input fields (user-generated labels), one-time suggestion prompts, and static display labels. Each variant has distinct interaction semantics filter chips toggle on/off, input chips are removable, suggestion chips trigger a one-time action, and display chips are static. *(Material 3, Carbon, Atlassian, Mantine agree on the four-variant taxonomy)*
10
+ A chip (or tag) is a compact, interactive label that represents an attribute, filter, or selection. It is commonly used for multi-select filter interfaces, tag-input fields (user-generated labels), one-time suggestion prompts, and static display labels. Each variant has distinct interaction semantics - filter chips toggle on/off, input chips are removable, suggestion chips trigger a one-time action, and display chips are static. *(Material 3, Carbon, Atlassian, Mantine agree on the four-variant taxonomy)*
11
11
 
12
12
  *UUPM app-interface: filter chips in search/filter UIs and tag input patterns (MIT attribution)*
13
13
 
@@ -51,13 +51,13 @@ A chip (or tag) is a compact, interactive label that represents an attribute, fi
51
51
 
52
52
  | State | Trigger | Visual | ARIA |
53
53
  |-------|---------|--------|------|
54
- | default | | Rest fill + label | |
55
- | hover | pointer over chip | Background tint (+8%) | |
56
- | focus | keyboard focus on chip | focus-visible ring (2px) | |
54
+ | default | - | Rest fill + label | - |
55
+ | hover | pointer over chip | Background tint (+8%) | - |
56
+ | focus | keyboard focus on chip | focus-visible ring (2px) | - |
57
57
  | selected (filter) | click / Enter / Space | Filled background; checkmark icon | `aria-pressed="true"` |
58
58
  | unselected (filter) | click / Enter / Space | Outline style | `aria-pressed="false"` |
59
59
  | disabled | `disabled` / `aria-disabled` | 38% opacity; cursor not-allowed | `aria-disabled="true"` |
60
- | remove focus | Tab to × button | Focus ring on × | |
60
+ | remove focus | Tab to × button | Focus ring on × | - |
61
61
 
62
62
  ---
63
63
 
@@ -79,11 +79,11 @@ A chip (or tag) is a compact, interactive label that represents an attribute, fi
79
79
 
80
80
  ## Typography
81
81
 
82
- - Label: body-sm (13–14px/400) same scale as form labels
83
- - No bold weight chip label is a tag, not a heading or CTA
82
+ - Label: body-sm (13–14px/400) - same scale as form labels
83
+ - No bold weight - chip label is a tag, not a heading or CTA
84
84
  - Truncate with ellipsis only when chip is in a fixed-width container; prefer wrapping chip set to natural width
85
85
 
86
- Cross-link: `reference/typography.md` body-sm definition
86
+ Cross-link: `reference/typography.md` - body-sm definition
87
87
 
88
88
  ---
89
89
 
@@ -94,7 +94,7 @@ Cross-link: `reference/typography.md` — body-sm definition
94
94
 
95
95
  ### Keyboard Contract
96
96
 
97
- *Quoted verbatim from WAI-ARIA APG https://www.w3.org/WAI/ARIA/apg/patterns/listbox/ W3C 2024*
97
+ *Quoted verbatim from WAI-ARIA APG - https://www.w3.org/WAI/ARIA/apg/patterns/listbox/ - W3C - 2024*
98
98
 
99
99
  | Key | Action |
100
100
  |-----|--------|
@@ -106,14 +106,14 @@ Cross-link: `reference/typography.md` — body-sm definition
106
106
 
107
107
  ### Accessibility Rules
108
108
 
109
- - Filter chip used as standalone toggle MUST have `aria-pressed="true|false"` absence means screen readers cannot report toggle state *(WAI-ARIA APG)*
109
+ - Filter chip used as standalone toggle MUST have `aria-pressed="true|false"` - absence means screen readers cannot report toggle state *(WAI-ARIA APG)*
110
110
  - Filter chips inside a multi-select group SHOULD use `role="option"` inside `role="listbox"` with `aria-multiselectable="true"` *(WAI-ARIA APG)*
111
- - Remove button MUST have an independent `aria-label` describing what it removes: `aria-label="Remove Python tag"` the × glyph alone is not an accessible name *(WAI-ARIA APG, Material 3)*
111
+ - Remove button MUST have an independent `aria-label` describing what it removes: `aria-label="Remove Python tag"` - the × glyph alone is not an accessible name *(WAI-ARIA APG, Material 3)*
112
112
  - Remove button MUST be a separate focusable element, NOT a click handler on the chip label *(Carbon, Atlassian)*
113
113
  - Touch target for remove button MUST be ≥ 32×32px via padding even if the visual × is 16–20px *(WCAG 2.5.5)*
114
- - Display chips have no role they are presentational; if they carry meaningful status, use `role="status"` or integrate into an Alert *(Atlassian Lozenge guidance)*
114
+ - Display chips have no role - they are presentational; if they carry meaningful status, use `role="status"` or integrate into an Alert *(Atlassian Lozenge guidance)*
115
115
 
116
- Cross-link: `reference/accessibility.md` `aria-pressed`, `listbox`, touch targets
116
+ Cross-link: `reference/accessibility.md` - `aria-pressed`, `listbox`, touch targets
117
117
 
118
118
  ---
119
119
 
@@ -126,9 +126,9 @@ Cross-link: `reference/accessibility.md` — `aria-pressed`, `listbox`, touch ta
126
126
  | Chip add (expand width) | 150ms | ease-out | Width expands from 0 |
127
127
  | Hover background | 80ms | ease-out | Subtle tint only |
128
128
 
129
- **BAN**: Full-page reflow animation when removing a chip collapse width inline; do not shift unrelated page sections. Do not use `transition: all` (catches unintended border/shadow changes).
129
+ **BAN**: Full-page reflow animation when removing a chip - collapse width inline; do not shift unrelated page sections. Do not use `transition: all` (catches unintended border/shadow changes).
130
130
 
131
- Cross-link: `reference/motion.md` `prefers-reduced-motion`: skip width animation, instant add/remove
131
+ Cross-link: `reference/motion.md` - `prefers-reduced-motion`: skip width animation, instant add/remove
132
132
 
133
133
  ---
134
134
 
@@ -141,10 +141,10 @@ Cross-link: `reference/motion.md` — `prefers-reduced-motion`: skip width anima
141
141
  - Ensure touch target ≥ 32px height; extend remove button via padding *(WCAG 2.5.5)*
142
142
 
143
143
  ### Don't
144
- - Don't put filter chips without `aria-pressed` screen readers cannot report selected state *(WAI-ARIA APG)*
145
- - Don't use the same click handler for chip label and remove remove must be independently focusable *(Carbon, Atlassian)*
146
- - Don't truncate chip label in narrow containers without a tooltip truncated tags lose meaning *(Polaris, Mantine)*
147
- - Don't use display chips for dynamic statuses that change use Alert or Badge instead *(Atlassian)*
144
+ - Don't put filter chips without `aria-pressed` - screen readers cannot report selected state *(WAI-ARIA APG)*
145
+ - Don't use the same click handler for chip label and remove - remove must be independently focusable *(Carbon, Atlassian)*
146
+ - Don't truncate chip label in narrow containers without a tooltip - truncated tags lose meaning *(Polaris, Mantine)*
147
+ - Don't use display chips for dynamic statuses that change - use Alert or Badge instead *(Atlassian)*
148
148
 
149
149
  ---
150
150
 
@@ -1,4 +1,4 @@
1
- # Command Palette Benchmark Spec
1
+ # Command Palette - Benchmark Spec
2
2
 
3
3
  **Harvested from**: Linear, Raycast, Radix CMDK, GitHub Primer, UUPM (app-interface, MIT)
4
4
  **Wave**: 4 · **Category**: Navigation & Data
@@ -64,7 +64,7 @@ A command palette is a keyboard-first global launcher that lets users search acr
64
64
 
65
65
  | State | Trigger | Visual | ARIA |
66
66
  |-------|---------|--------|------|
67
- | closed | | Dialog hidden | |
67
+ | closed | - | Dialog hidden | - |
68
68
  | open | Cmd/Ctrl+K | Dialog visible; input focused | `aria-expanded="true"` on combobox |
69
69
  | empty | no query | Placeholder or recent items | `aria-expanded="true"` |
70
70
  | searching | typing | Results update in real-time | `aria-live="polite"` on results region |
@@ -97,7 +97,7 @@ A command palette is a keyboard-first global launcher that lets users search acr
97
97
  - Section heading: label-xs (11px), uppercase, weight 600, `color: --text-subtle`, `aria-hidden="true"` if role="group" handles it
98
98
  - Keyboard shortcut hints: label-xs (11px), `color: --text-subtle`, right-aligned, `aria-hidden="true"`
99
99
 
100
- Cross-link: `reference/typography.md` body-md, label scale
100
+ Cross-link: `reference/typography.md` - body-md, label scale
101
101
 
102
102
  ---
103
103
 
@@ -108,7 +108,7 @@ Cross-link: `reference/typography.md` — body-md, label scale
108
108
 
109
109
  ### Keyboard Contract
110
110
 
111
- *Quoted verbatim from WAI-ARIA APG https://www.w3.org/WAI/ARIA/apg/patterns/combobox/ and https://www.w3.org/WAI/ARIA/apg/patterns/dialog-modal/ W3C 2024*
111
+ *Quoted verbatim from WAI-ARIA APG - https://www.w3.org/WAI/ARIA/apg/patterns/combobox/ and https://www.w3.org/WAI/ARIA/apg/patterns/dialog-modal/ - W3C - 2024*
112
112
 
113
113
  | Key | Action |
114
114
  |-----|--------|
@@ -123,14 +123,14 @@ Cross-link: `reference/typography.md` — body-md, label scale
123
123
 
124
124
  ### Accessibility Rules
125
125
 
126
- - Dialog MUST have `aria-modal="true"` prevents AT from reading content outside the palette
126
+ - Dialog MUST have `aria-modal="true"` - prevents AT from reading content outside the palette
127
127
  - `role="combobox"` input MUST have `aria-controls` pointing to the `role="listbox"` `id`
128
128
  - `aria-live="polite"` on the results region ensures AT announces result count changes and empty state
129
129
  - Focus MUST be trapped within the dialog while it is open (Tab/Shift+Tab cycle inside)
130
130
  - On close, focus MUST return to the element that triggered the palette (not body)
131
- - Keyboard shortcut hints (`⌘K`, `↵`) MUST be `aria-hidden="true"` the shortcut must be registered separately
131
+ - Keyboard shortcut hints (`⌘K`, `↵`) MUST be `aria-hidden="true"` - the shortcut must be registered separately
132
132
 
133
- Cross-link: `reference/accessibility.md` dialog focus trap, combobox pattern, live regions
133
+ Cross-link: `reference/accessibility.md` - dialog focus trap, combobox pattern, live regions
134
134
 
135
135
  ---
136
136
 
@@ -144,9 +144,9 @@ Cross-link: `reference/accessibility.md` — dialog focus trap, combobox pattern
144
144
  | Backdrop fade in | 150ms | ease-out | Opacity 0→0.5 |
145
145
  | Item selection flash | 80ms | ease-out | Brief fill before execute |
146
146
 
147
- **BAN**: Do not animate result item reordering as the user types causes visual instability and is disorienting for AT users with animations enabled.
147
+ **BAN**: Do not animate result item reordering as the user types - causes visual instability and is disorienting for AT users with animations enabled.
148
148
 
149
- Cross-link: `reference/motion.md` dialog entry, BAN-04
149
+ Cross-link: `reference/motion.md` - dialog entry, BAN-04
150
150
 
151
151
  ---
152
152
 
@@ -159,10 +159,10 @@ Cross-link: `reference/motion.md` — dialog entry, BAN-04
159
159
  - Use `role="group"` + `aria-label` for result sections *(WAI-ARIA APG, Linear, Raycast)*
160
160
 
161
161
  ### Don't
162
- - Don't build a custom overlay without `role="dialog"` + `aria-modal` screen readers will read background content *(WCAG 1.3.1)*
163
- - Don't omit `aria-controls` on the combobox AT cannot associate input with results *(WAI-ARIA APG combobox)*
164
- - Don't open on hover or auto-focus Cmd/Ctrl+K is the expected trigger *(Linear, Raycast convention)*
165
- - Don't dismiss on every Escape keypress inside nested command flows first Escape should exit sub-level, second closes palette *(Raycast, Linear)*
162
+ - Don't build a custom overlay without `role="dialog"` + `aria-modal` - screen readers will read background content *(WCAG 1.3.1)*
163
+ - Don't omit `aria-controls` on the combobox - AT cannot associate input with results *(WAI-ARIA APG combobox)*
164
+ - Don't open on hover or auto-focus - Cmd/Ctrl+K is the expected trigger *(Linear, Raycast convention)*
165
+ - Don't dismiss on every Escape keypress inside nested command flows - first Escape should exit sub-level, second closes palette *(Raycast, Linear)*
166
166
 
167
167
  ---
168
168
 
@@ -170,7 +170,7 @@ Cross-link: `reference/motion.md` — dialog entry, BAN-04
170
170
 
171
171
  | Anti-pattern | Entry |
172
172
  |--------------|-------|
173
- | BAN-04 | `transition: all` on results list `reference/anti-patterns.md#ban-04` |
173
+ | BAN-04 | `transition: all` on results list - `reference/anti-patterns.md#ban-04` |
174
174
 
175
175
  ---
176
176
 
@@ -223,6 +223,6 @@ grep -rn 'command.*palette\|cmd.*results\|cmdk' src/ | grep 'results\|listbox' |
223
223
  </div>
224
224
  ```
225
225
 
226
- **Why it fails**: No `role="dialog"` AT does not treat this as a modal, and screen readers continue reading background content; no focus trap; input lacks `role="combobox"` and `aria-controls`; results have no `role="listbox"`; items have no `role="option"` or `aria-selected`; no `aria-live` region for result updates.
226
+ **Why it fails**: No `role="dialog"` - AT does not treat this as a modal, and screen readers continue reading background content; no focus trap; input lacks `role="combobox"` and `aria-controls`; results have no `role="listbox"`; items have no `role="option"` or `aria-selected`; no `aria-live` region for result updates.
227
227
  **Grep detection**: `grep -rn 'command.*palette\|cmdk\|command-menu' src/ | grep '<div' | grep -v 'role='`
228
228
  **Fix**: Use `role="dialog"` + `aria-modal="true"` on the overlay; implement focus trap; add `role="combobox"` + `aria-controls` to input; add `role="listbox"` to results container; add `role="option"` + `aria-selected` to each item; add `aria-live="polite"` to results region.
@@ -1,4 +1,4 @@
1
- # Date Picker Benchmark Spec
1
+ # Date Picker - Benchmark Spec
2
2
 
3
3
  **Harvested from**: Material 3, Carbon Design System, Atlassian Design System, Mantine DatePicker
4
4
  **Wave**: 5 · **Category**: Advanced
@@ -31,7 +31,7 @@ Range variant adds a second input field for end date.
31
31
  | Part | Required | Notes |
32
32
  |------|----------|-------|
33
33
  | Text input | Yes | Shows selected date; accepts direct keyboard entry |
34
- | Format hint label | Yes | Visible "MM/DD/YYYY" supplement NOT placeholder only |
34
+ | Format hint label | Yes | Visible "MM/DD/YYYY" supplement - NOT placeholder only |
35
35
  | Calendar trigger button | Yes | Opens/closes popover; `aria-label="Open calendar"` |
36
36
  | Popover (dialog) | Yes | `role="dialog"` + `aria-modal="true"` + focus trap |
37
37
  | Month navigation | Yes | Previous/next month buttons; keyboard Page Up/Down |
@@ -59,13 +59,13 @@ Range variant adds a second input field for end date.
59
59
 
60
60
  | State | Trigger | Visual | ARIA |
61
61
  |-------|---------|--------|------|
62
- | default | | Resting input + trigger icon | |
62
+ | default | - | Resting input + trigger icon | - |
63
63
  | open | Trigger click or input focus + Enter | Popover visible, focus moves inside | `aria-expanded="true"` on trigger |
64
- | day hover | Pointer over day | Background highlight | |
65
- | day focus | Keyboard navigation | Focus-visible ring on day button | |
64
+ | day hover | Pointer over day | Background highlight | - |
65
+ | day focus | Keyboard navigation | Focus-visible ring on day button | - |
66
66
  | day selected | Enter/Space or click | Filled background (brand color) | `aria-pressed="true"` on day button |
67
- | range-in-progress | Start selected, end not yet | Partial fill from start | |
68
- | range-complete | Both start and end selected | Full highlight between dates | |
67
+ | range-in-progress | Start selected, end not yet | Partial fill from start | - |
68
+ | range-complete | Both start and end selected | Full highlight between dates | - |
69
69
  | disabled date | Date excluded by min/max/filter | Muted; `tabindex="-1"` | `aria-disabled="true"` on day button |
70
70
  | error | Invalid date typed | Red border + error message | `aria-invalid="true"` on input |
71
71
 
@@ -82,7 +82,7 @@ Range variant adds a second input field for end date.
82
82
  **Norm**: 288px popover width fits a standard 7-column month grid with comfortable padding *(Carbon, Mantine)*.
83
83
  Day cells must be ≥32px to meet minimum touch-target guidance; prefer 40px for mixed pointer/touch contexts.
84
84
 
85
- Cross-link: `reference/surfaces.md` minimum 44×44px accessible tap target via padding.
85
+ Cross-link: `reference/surfaces.md` - minimum 44×44px accessible tap target via padding.
86
86
 
87
87
  ---
88
88
 
@@ -91,9 +91,9 @@ Cross-link: `reference/surfaces.md` — minimum 44×44px accessible tap target v
91
91
  - Input text: body-md weight 400; monospace or tabular-nums variant for date digits aids alignment
92
92
  - Day numbers: body-sm, center-aligned within cell
93
93
  - Month/year header: body-md weight 600
94
- - Format hint ("MM/DD/YYYY"): caption-sm, secondary color attached as visible `<label>` supplement or `<span aria-hidden="true">` paired with `aria-describedby` on the input
94
+ - Format hint ("MM/DD/YYYY"): caption-sm, secondary color - attached as visible `<label>` supplement or `<span aria-hidden="true">` paired with `aria-describedby` on the input
95
95
 
96
- Cross-link: `reference/typography.md` tabular-nums for date/time fields.
96
+ Cross-link: `reference/typography.md` - tabular-nums for date/time fields.
97
97
 
98
98
  ---
99
99
 
@@ -104,7 +104,7 @@ Cross-link: `reference/typography.md` — tabular-nums for date/time fields.
104
104
 
105
105
  ### Keyboard Contract
106
106
 
107
- *Adapted from WAI-ARIA APG https://www.w3.org/WAI/ARIA/apg/patterns/dialog-modal/ and grid pattern W3C 2024*
107
+ *Adapted from WAI-ARIA APG - https://www.w3.org/WAI/ARIA/apg/patterns/dialog-modal/ and grid pattern - W3C - 2024*
108
108
 
109
109
  | Key | Action |
110
110
  |-----|--------|
@@ -122,7 +122,7 @@ Cross-link: `reference/typography.md` — tabular-nums for date/time fields.
122
122
 
123
123
  ### Accessibility Rules
124
124
 
125
- - Calendar popover MUST use `role="dialog"` + `aria-modal="true"` do not use a plain `<div>` overlay
125
+ - Calendar popover MUST use `role="dialog"` + `aria-modal="true"` - do not use a plain `<div>` overlay
126
126
  - Focus MUST be trapped inside the open calendar; Escape closes and returns focus to the trigger
127
127
  - Each selectable day MUST be a `<button>` (or element with `role="button"`) so keyboard and AT users can activate it
128
128
  - Date format hint MUST be visible text, not only a placeholder (placeholder disappears on input and is not consistently announced)
@@ -130,7 +130,7 @@ Cross-link: `reference/typography.md` — tabular-nums for date/time fields.
130
130
  - Range variant: announce selected range via `aria-label` on day buttons (e.g., `aria-label="April 15, 2025, start of range"`)
131
131
  - Mobile: provide native `<input type="date">` fallback when touch device detected or user preference set
132
132
 
133
- Cross-link: `reference/accessibility.md` focus-trap pattern, dialog role requirements.
133
+ Cross-link: `reference/accessibility.md` - focus-trap pattern, dialog role requirements.
134
134
 
135
135
  ---
136
136
 
@@ -144,9 +144,9 @@ Cross-link: `reference/accessibility.md` — focus-trap pattern, dialog role req
144
144
  | Day selection | 80ms | ease-out | Fill background color |
145
145
  | Range fill | 150ms | ease-out | Animate fill between dates |
146
146
 
147
- **BAN**: Do not animate the calendar grid with a full-page slide disorienting for keyboard users navigating by month.
147
+ **BAN**: Do not animate the calendar grid with a full-page slide - disorienting for keyboard users navigating by month.
148
148
 
149
- Cross-link: `reference/motion.md` reduced-motion: omit slide, keep instant day selection.
149
+ Cross-link: `reference/motion.md` - reduced-motion: omit slide, keep instant day selection.
150
150
 
151
151
  ---
152
152
 
@@ -155,14 +155,14 @@ Cross-link: `reference/motion.md` — reduced-motion: omit slide, keep instant d
155
155
  ### Do
156
156
  - Show the date format as visible text ("MM/DD/YYYY") near the input *(Carbon, Atlassian)*
157
157
  - Ensure keyboard users can navigate the entire calendar without a pointer *(WAI-ARIA APG)*
158
- - Allow direct text entry in the input field some users know the date and do not need the calendar *(Mantine, Carbon)*
158
+ - Allow direct text entry in the input field - some users know the date and do not need the calendar *(Mantine, Carbon)*
159
159
  - Support locale-aware first day of week (Sunday vs. Monday) and locale month/day names *(Material 3, Mantine)*
160
160
 
161
161
  ### Don't
162
- - Don't use `<table>` with click-only cells add `role="grid"` and full keyboard navigation *(WCAG 2.1 §2.1.1)*
163
- - Don't use placeholder text alone to convey the date format placeholder vanishes on input *(Carbon, Atlassian)*
164
- - Don't trap focus permanently Escape must always close the popover and restore focus *(WAI-ARIA APG)*
165
- - Don't omit the native `<input type="date">` for mobile custom calendars are unusable on small touch screens *(Material 3)*
162
+ - Don't use `<table>` with click-only cells - add `role="grid"` and full keyboard navigation *(WCAG 2.1 §2.1.1)*
163
+ - Don't use placeholder text alone to convey the date format - placeholder vanishes on input *(Carbon, Atlassian)*
164
+ - Don't trap focus permanently - Escape must always close the popover and restore focus *(WAI-ARIA APG)*
165
+ - Don't omit the native `<input type="date">` for mobile - custom calendars are unusable on small touch screens *(Material 3)*
166
166
 
167
167
  ---
168
168
 
@@ -170,8 +170,8 @@ Cross-link: `reference/motion.md` — reduced-motion: omit slide, keep instant d
170
170
 
171
171
  | Anti-pattern | Entry |
172
172
  |--------------|-------|
173
- | BAN-07 | Placeholder as only label/hint `reference/anti-patterns.md#ban-07` |
174
- | BAN-12 | Custom overlay without focus trap `reference/anti-patterns.md#ban-12` |
173
+ | BAN-07 | Placeholder as only label/hint - `reference/anti-patterns.md#ban-07` |
174
+ | BAN-12 | Custom overlay without focus trap - `reference/anti-patterns.md#ban-12` |
175
175
 
176
176
  ---
177
177
 
@@ -1,4 +1,4 @@
1
- # Drawer / Sheet Benchmark Spec
1
+ # Drawer / Sheet - Benchmark Spec
2
2
 
3
3
  **Harvested from**: Material 3, Polaris (Sheet), Carbon, Atlassian, Mantine, shadcn/ui, Headless UI, Apple HIG
4
4
  **Wave**: 2 · **Category**: Containers
@@ -7,7 +7,7 @@
7
7
 
8
8
  ## Purpose
9
9
 
10
- A drawer (or sheet) is a panel that slides in from an edge of the viewport. It is less disruptive than a modal for workflows that benefit from co-existing with the background detail panels, navigation menus, filter sidebars, multi-step flows. Like a modal, it traps focus and requires Escape to close. Unlike a modal, the backdrop is optional and can be semi-transparent. *(Material 3, Carbon, Polaris all position drawer as less disruptive than modal)*
10
+ A drawer (or sheet) is a panel that slides in from an edge of the viewport. It is less disruptive than a modal for workflows that benefit from co-existing with the background - detail panels, navigation menus, filter sidebars, multi-step flows. Like a modal, it traps focus and requires Escape to close. Unlike a modal, the backdrop is optional and can be semi-transparent. *(Material 3, Carbon, Polaris all position drawer as less disruptive than modal)*
11
11
 
12
12
  ---
13
13
 
@@ -55,13 +55,13 @@ Bottom sheet (mobile):
55
55
  | Partial height | 60–80vh, overlays | Mobile bottom sheet | Apple HIG, Material 3 |
56
56
 
57
57
  **Norm** (≥5/18): right-side is default; bottom sheet for mobile.
58
- **Diverge**: backdrop-click-to-close same debate as modal; for navigation drawers, backdrop click should close; for form/detail drawers, configurable.
58
+ **Diverge**: backdrop-click-to-close - same debate as modal; for navigation drawers, backdrop click should close; for form/detail drawers, configurable.
59
59
 
60
60
  ---
61
61
 
62
62
  ## States
63
63
 
64
- Same as Modal/Dialog see `modal-dialog.md`. Key differences:
64
+ Same as Modal/Dialog - see `modal-dialog.md`. Key differences:
65
65
 
66
66
  | State | Drawer-specific |
67
67
  |-------|-----------------|
@@ -80,7 +80,7 @@ Same as Modal/Dialog — see `modal-dialog.md`. Key differences:
80
80
  | Bottom sheet | 60–100vh | Drag handle at 12px × 36px |
81
81
  | Padding | 20–24px | Match modal padding |
82
82
 
83
- Cross-link: `reference/surfaces.md` shadow on drawer edge (unilateral shadow)
83
+ Cross-link: `reference/surfaces.md` - shadow on drawer edge (unilateral shadow)
84
84
 
85
85
  ---
86
86
 
@@ -94,21 +94,21 @@ Cross-link: `reference/surfaces.md` — shadow on drawer edge (unilateral shadow
94
94
 
95
95
  ## Keyboard & Accessibility
96
96
 
97
- > **WAI-ARIA role**: `dialog` (same as modal drawer is a type of dialog)
97
+ > **WAI-ARIA role**: `dialog` (same as modal - drawer is a type of dialog)
98
98
  > **Required attributes**: `aria-modal="true"`, `aria-labelledby` (title id)
99
99
 
100
100
  ### Keyboard Contract
101
101
 
102
- *Quoted verbatim from WAI-ARIA APG https://www.w3.org/WAI/ARIA/apg/patterns/dialog-modal/ W3C 2024*
102
+ *Quoted verbatim from WAI-ARIA APG - https://www.w3.org/WAI/ARIA/apg/patterns/dialog-modal/ - W3C - 2024*
103
103
 
104
104
  Same Tab/Shift+Tab/Escape contract as modal (see `modal-dialog.md`).
105
105
 
106
106
  ### Drawer-specific Accessibility Rules
107
107
 
108
- - Focus trap: MUST trap focus inside the drawer while open same as modal
108
+ - Focus trap: MUST trap focus inside the drawer while open - same as modal
109
109
  - On open: focus moves to first focusable element (or close button if no primary action)
110
110
  - On close: focus MUST return to the element that triggered the drawer open
111
- - Navigation drawer (`role="navigation"`): if the drawer IS the main nav, use `role="navigation"` + `aria-label="Main"` instead of `role="dialog"`; different keyboard contract (no focus trap it IS a landmark)
111
+ - Navigation drawer (`role="navigation"`): if the drawer IS the main nav, use `role="navigation"` + `aria-label="Main"` instead of `role="dialog"`; different keyboard contract (no focus trap - it IS a landmark)
112
112
  - Background `inert`: set `inert` attribute (or equivalent) on background content when drawer is open
113
113
 
114
114
  ---
@@ -123,23 +123,23 @@ Same Tab/Shift+Tab/Escape contract as modal (see `modal-dialog.md`).
123
123
  | Backdrop fade | 200ms | ease | opacity 0→0.4 |
124
124
 
125
125
  Swipe-to-close (bottom sheet): detect `pointerup` with velocity + displacement threshold.
126
- Cross-link: `reference/motion.md` spring bounce=0, `prefers-reduced-motion` (disable slide, instant toggle)
126
+ Cross-link: `reference/motion.md` - spring bounce=0, `prefers-reduced-motion` (disable slide, instant toggle)
127
127
 
128
128
  ---
129
129
 
130
130
  ## Do / Don't
131
131
 
132
132
  ### Do
133
- - Trap focus inside the drawer when open same rule as modal *(WAI-ARIA APG)*
133
+ - Trap focus inside the drawer when open - same rule as modal *(WAI-ARIA APG)*
134
134
  - Return focus to the trigger element on close *(WAI-ARIA APG, Radix, Mantine)*
135
135
  - Use right-side drawer for content-detail panels; left-side for navigation *(Material 3, Carbon)*
136
136
  - Support swipe-to-close on bottom sheets for mobile *(Apple HIG, Material 3)*
137
137
 
138
138
  ### Don't
139
- - Don't use `role="navigation"` for content drawers only for navigation-purpose drawers *(WAI-ARIA APG)*
139
+ - Don't use `role="navigation"` for content drawers - only for navigation-purpose drawers *(WAI-ARIA APG)*
140
140
  - Don't let Tab escape the drawer while it's open *(WAI-ARIA APG)*
141
141
  - Don't disable background scroll without setting `overflow:hidden` on body *(all systems)*
142
- - Don't slide from top for content top drawers conflict with browser UI and notifications *(Material 3)*
142
+ - Don't slide from top for content - top drawers conflict with browser UI and notifications *(Material 3)*
143
143
 
144
144
  ---
145
145
 
@@ -1,4 +1,4 @@
1
- # File Upload Benchmark Spec
1
+ # File Upload - Benchmark Spec
2
2
 
3
3
  **Harvested from**: Polaris (DropZone), Carbon (FileUploader), Atlassian Design System, Material 3
4
4
  **Wave**: 5 · **Category**: Advanced
@@ -34,7 +34,7 @@ File list (appears after selection):
34
34
  | Part | Required | Notes |
35
35
  |------|----------|-------|
36
36
  | Drop zone container | Yes | Dashed border; drag-over changes fill + border color |
37
- | `<input type="file">` | Yes | MUST be accessible (not `display:none`) keyboard fallback |
37
+ | `<input type="file">` | Yes | MUST be accessible (not `display:none`) - keyboard fallback |
38
38
  | Browse trigger button | Yes | Visually activates the file input; must be a `<button>` or `<label>` |
39
39
  | File list | Yes (when files selected) | Per-file name, size, status, progress bar, remove button |
40
40
  | Progress bar | Yes (during upload) | `role="progressbar"` + `aria-valuenow` per file or overall |
@@ -62,11 +62,11 @@ File list (appears after selection):
62
62
 
63
63
  | State | Trigger | Visual | ARIA |
64
64
  |-------|---------|--------|------|
65
- | default | | Dashed border, instructional text | |
65
+ | default | - | Dashed border, instructional text | - |
66
66
  | drag-over | File dragged over zone | Filled background + solid border color change | `aria-dropeffect="copy"` (deprecated but still useful) |
67
- | drag-invalid | Wrong file type dragged over | Error border color; tooltip/message | |
67
+ | drag-invalid | Wrong file type dragged over | Error border color; tooltip/message | - |
68
68
  | uploading | File being sent | Per-file progress bar animating | `aria-valuenow` on progressbar |
69
- | upload-done | Transfer complete | Check icon; status text "Done" | |
69
+ | upload-done | Transfer complete | Check icon; status text "Done" | - |
70
70
  | upload-error | Transfer failed | Error icon; error message per file | `aria-live="assertive"` error region |
71
71
  | disabled | `disabled` prop | 38% opacity; drag events ignored | `aria-disabled="true"` on zone |
72
72
 
@@ -80,9 +80,9 @@ File list (appears after selection):
80
80
  | md (default) | 128px | 8px | 14px |
81
81
  | lg | 200px | 12px | 16px |
82
82
 
83
- **Norm**: Drop zone should be large enough that it is comfortably hittable 128px minimum height for default. File list rows are 48–56px tall for accessible remove-button target size *(Carbon, Polaris)*.
83
+ **Norm**: Drop zone should be large enough that it is comfortably hittable - 128px minimum height for default. File list rows are 48–56px tall for accessible remove-button target size *(Carbon, Polaris)*.
84
84
 
85
- Cross-link: `reference/surfaces.md` minimum 44×44px touch targets for remove buttons.
85
+ Cross-link: `reference/surfaces.md` - minimum 44×44px touch targets for remove buttons.
86
86
 
87
87
  ---
88
88
 
@@ -94,7 +94,7 @@ Cross-link: `reference/surfaces.md` — minimum 44×44px touch targets for remov
94
94
  - File size: caption-sm, secondary color
95
95
  - Status text (Done / Error): caption-sm, success or error semantic color
96
96
 
97
- Cross-link: `reference/typography.md` truncation rules.
97
+ Cross-link: `reference/typography.md` - truncation rules.
98
98
 
99
99
  ---
100
100
 
@@ -105,12 +105,12 @@ Cross-link: `reference/typography.md` — truncation rules.
105
105
 
106
106
  ### Keyboard Contract
107
107
 
108
- *Derived from native `<input type="file">` behavior and WAI-ARIA APG button pattern W3C 2024*
108
+ *Derived from native `<input type="file">` behavior and WAI-ARIA APG button pattern - W3C - 2024*
109
109
 
110
110
  | Key | Action |
111
111
  |-----|--------|
112
112
  | Tab | Move focus to browse button / file input |
113
- | Enter / Space | Activate browse button opens native file picker dialog |
113
+ | Enter / Space | Activate browse button - opens native file picker dialog |
114
114
  | Tab (in file list) | Move through file items and remove buttons |
115
115
  | Enter / Space (on remove button) | Remove file from list |
116
116
 
@@ -118,15 +118,15 @@ Drag-and-drop is pointer-only; keyboard users MUST be able to complete the entir
118
118
 
119
119
  ### Accessibility Rules
120
120
 
121
- - `<input type="file">` MUST NOT use `display:none` or `visibility:hidden` use `opacity:0` positioned absolutely with dimensions matching the trigger, OR keep a visible file input alongside the drop zone
121
+ - `<input type="file">` MUST NOT use `display:none` or `visibility:hidden` - use `opacity:0` positioned absolutely with dimensions matching the trigger, OR keep a visible file input alongside the drop zone
122
122
  - The browse trigger MUST be a `<button>` or `<label for="file-input">` so it is keyboard-focusable and activates the input
123
- - Remove buttons MUST have `aria-label="Remove [filename]"` an icon-only ✕ with no accessible name fails AT users
124
- - Upload errors MUST be announced via `aria-live="assertive"` do not rely solely on visual indicators
123
+ - Remove buttons MUST have `aria-label="Remove [filename]"` - an icon-only ✕ with no accessible name fails AT users
124
+ - Upload errors MUST be announced via `aria-live="assertive"` - do not rely solely on visual indicators
125
125
  - Progress bars MUST keep `aria-valuenow` updated throughout upload
126
126
  - `accept` attribute MUST match the visible allowed-types hint text so users are not surprised by rejection
127
127
  - File list additions/removals should be announced via `aria-live="polite"` on the list container
128
128
 
129
- Cross-link: `reference/accessibility.md` aria-live regions, accessible file input patterns.
129
+ Cross-link: `reference/accessibility.md` - aria-live regions, accessible file input patterns.
130
130
 
131
131
  ---
132
132
 
@@ -140,9 +140,9 @@ Cross-link: `reference/accessibility.md` — aria-live regions, accessible file
140
140
  | Progress bar fill | continuous | linear | Matches upload byte progress |
141
141
  | Upload complete tick | 200ms | ease-out | Check icon draw animation |
142
142
 
143
- **BAN**: Do not animate progress bar with CSS only at a fixed pace progress MUST reflect actual upload percentage via `aria-valuenow`.
143
+ **BAN**: Do not animate progress bar with CSS only at a fixed pace - progress MUST reflect actual upload percentage via `aria-valuenow`.
144
144
 
145
- Cross-link: `reference/motion.md` reduced-motion: skip slide/collapse animations; keep progress bar updates.
145
+ Cross-link: `reference/motion.md` - reduced-motion: skip slide/collapse animations; keep progress bar updates.
146
146
 
147
147
  ---
148
148
 
@@ -155,10 +155,10 @@ Cross-link: `reference/motion.md` — reduced-motion: skip slide/collapse animat
155
155
  - Announce upload errors via `aria-live="assertive"` *(WCAG 2.1 §4.1.3 Status Messages)*
156
156
 
157
157
  ### Don't
158
- - Don't use `display:none` on the file input keyboard and AT users cannot trigger the picker *(WCAG 2.1 §2.1.1)*
159
- - Don't omit the `accept` hint text users should know allowed types before selecting *(Polaris, Carbon)*
160
- - Don't show only drag-drop UI with no browse button drag is inaccessible to keyboard users *(Carbon, Atlassian)*
161
- - Don't use a generic `aria-label="Remove"` on remove buttons AT users cannot identify which file *(Carbon)*
158
+ - Don't use `display:none` on the file input - keyboard and AT users cannot trigger the picker *(WCAG 2.1 §2.1.1)*
159
+ - Don't omit the `accept` hint text - users should know allowed types before selecting *(Polaris, Carbon)*
160
+ - Don't show only drag-drop UI with no browse button - drag is inaccessible to keyboard users *(Carbon, Atlassian)*
161
+ - Don't use a generic `aria-label="Remove"` on remove buttons - AT users cannot identify which file *(Carbon)*
162
162
 
163
163
  ---
164
164
 
@@ -166,8 +166,8 @@ Cross-link: `reference/motion.md` — reduced-motion: skip slide/collapse animat
166
166
 
167
167
  | Anti-pattern | Entry |
168
168
  |--------------|-------|
169
- | BAN-08 | File input hidden with display:none keyboard inaccessible `reference/anti-patterns.md#ban-08` |
170
- | BAN-13 | Icon-only action button without aria-label `reference/anti-patterns.md#ban-13` |
169
+ | BAN-08 | File input hidden with display:none - keyboard inaccessible - `reference/anti-patterns.md#ban-08` |
170
+ | BAN-13 | Icon-only action button without aria-label - `reference/anti-patterns.md#ban-13` |
171
171
 
172
172
  ---
173
173