@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
- # Rich-Text Editor Benchmark Spec
1
+ # Rich-Text Editor - Benchmark Spec
2
2
 
3
3
  **Harvested from**: Tiptap/ProseMirror, Lexical (Meta), Slate.js, Atlassian Fabric Editor
4
4
  **Wave**: 5 · **Category**: Advanced
@@ -30,7 +30,7 @@ A Rich-Text Editor (RTE) provides WYSIWYG content authoring with inline formatti
30
30
  | Editable area | Yes | `contenteditable="true"` + `role="textbox"` + `aria-multiline="true"` |
31
31
  | Toolbar | Yes (for formatting) | `role="toolbar"` + `aria-label`; groups via `role="group"` |
32
32
  | Toolbar buttons | Yes | `role="button"`; toggle buttons add `aria-pressed` |
33
- | Placeholder | No | CSS `[data-placeholder]::before` NOT HTML attribute |
33
+ | Placeholder | No | CSS `[data-placeholder]::before` - NOT HTML attribute |
34
34
  | Mention list | No | `role="listbox"` floating suggestion list triggered by `@` |
35
35
  | Character count | No | `aria-live="polite"` updated region |
36
36
  | Read-only overlay | No | `contenteditable="false"` + `aria-readonly="true"` |
@@ -56,10 +56,10 @@ A Rich-Text Editor (RTE) provides WYSIWYG content authoring with inline formatti
56
56
 
57
57
  | State | Trigger | Visual | ARIA |
58
58
  |-------|---------|--------|------|
59
- | default | | Cursor; toolbar buttons at rest | |
60
- | focused | Click or Tab into editable area | Focus ring on editable container | |
59
+ | default | - | Cursor; toolbar buttons at rest | - |
60
+ | focused | Click or Tab into editable area | Focus ring on editable container | - |
61
61
  | toolbar button active | Text with formatting selected | `aria-pressed="true"` on toggle button | `aria-pressed="true"` |
62
- | placeholder | No content in editable area | Placeholder text via CSS ::before | |
62
+ | placeholder | No content in editable area | Placeholder text via CSS ::before | - |
63
63
  | read-only | `readOnly` prop | No cursor change; grayed toolbar | `aria-readonly="true"`, `contenteditable="false"` |
64
64
  | disabled | `disabled` prop | 38% opacity; no interaction | `aria-disabled="true"` |
65
65
  | mention-open | `@` typed | Floating listbox appears | `role="listbox"` visible |
@@ -77,18 +77,18 @@ A Rich-Text Editor (RTE) provides WYSIWYG content authoring with inline formatti
77
77
 
78
78
  **Norm**: Editor area grows with content (auto-height); enforce max-height with overflow scroll if needed. Toolbar buttons follow button-sm/md sizing with 8px gaps between groups *(Atlassian, Tiptap)*.
79
79
 
80
- Cross-link: `reference/surfaces.md` toolbar button hit targets.
80
+ Cross-link: `reference/surfaces.md` - toolbar button hit targets.
81
81
 
82
82
  ---
83
83
 
84
84
  ## Typography
85
85
 
86
86
  - Editor content: body-md, line-height 1.6 for readable long-form text
87
- - Heading 1: 2em; Heading 2: 1.5em; Heading 3: 1.25em relative to editor base font
87
+ - Heading 1: 2em; Heading 2: 1.5em; Heading 3: 1.25em - relative to editor base font
88
88
  - Code blocks: monospace, 0.9em, background token surface-code
89
89
  - Placeholder text: same size/font as body, secondary color via CSS
90
90
 
91
- Cross-link: `reference/typography.md` heading scale, code font stack.
91
+ Cross-link: `reference/typography.md` - heading scale, code font stack.
92
92
 
93
93
  ---
94
94
 
@@ -99,7 +99,7 @@ Cross-link: `reference/typography.md` — heading scale, code font stack.
99
99
 
100
100
  ### Keyboard Contract
101
101
 
102
- *Derived from WAI-ARIA APG toolbar pattern https://www.w3.org/WAI/ARIA/apg/patterns/toolbar/ W3C 2024, and standard contenteditable browser behavior*
102
+ *Derived from WAI-ARIA APG toolbar pattern - https://www.w3.org/WAI/ARIA/apg/patterns/toolbar/ - W3C - 2024, and standard contenteditable browser behavior*
103
103
 
104
104
  | Key | Action |
105
105
  |-----|--------|
@@ -120,15 +120,15 @@ Cross-link: `reference/typography.md` — heading scale, code font stack.
120
120
 
121
121
  ### Accessibility Rules
122
122
 
123
- - Editable area MUST have `role="textbox"` bare `contenteditable` is announced as a generic region by most AT
124
- - `aria-multiline="true"` MUST be set announces correct Enter-key behavior to screen readers
123
+ - Editable area MUST have `role="textbox"` - bare `contenteditable` is announced as a generic region by most AT
124
+ - `aria-multiline="true"` MUST be set - announces correct Enter-key behavior to screen readers
125
125
  - Toolbar toggle buttons (bold, italic, lists) MUST use `aria-pressed="true/false"` to reflect current selection state
126
- - Placeholder MUST use CSS `[data-placeholder]::before` content not a `placeholder` HTML attribute on contenteditable (screen readers read it incorrectly or not at all)
127
- - Keyboard shortcuts MUST be documented in a tooltip or help section not assumed
128
- - Read-only: set both `contenteditable="false"` AND `aria-readonly="true"` contenteditable="false" alone is insufficient for AT
126
+ - Placeholder MUST use CSS `[data-placeholder]::before` content - not a `placeholder` HTML attribute on contenteditable (screen readers read it incorrectly or not at all)
127
+ - Keyboard shortcuts MUST be documented in a tooltip or help section - not assumed
128
+ - Read-only: set both `contenteditable="false"` AND `aria-readonly="true"` - contenteditable="false" alone is insufficient for AT
129
129
  - Mention listbox MUST use `role="listbox"` with `role="option"` items; focused option uses `aria-selected="true"`
130
130
 
131
- Cross-link: `reference/accessibility.md` contenteditable accessibility, toolbar pattern.
131
+ Cross-link: `reference/accessibility.md` - contenteditable accessibility, toolbar pattern.
132
132
 
133
133
  ---
134
134
 
@@ -142,9 +142,9 @@ Cross-link: `reference/accessibility.md` — contenteditable accessibility, tool
142
142
  | Bubble toolbar appear | 150ms | ease-out | Fade in above selection |
143
143
  | Bubble toolbar dismiss | 80ms | ease-in | Fade out on deselect |
144
144
 
145
- **BAN**: Do not animate text reflow on formatting changes typing performance is critical; any CSS transition on editor content causes visual jitter.
145
+ **BAN**: Do not animate text reflow on formatting changes - typing performance is critical; any CSS transition on editor content causes visual jitter.
146
146
 
147
- Cross-link: `reference/motion.md` reduced-motion: remove mention list slide; keep instant formatting toggle.
147
+ Cross-link: `reference/motion.md` - reduced-motion: remove mention list slide; keep instant formatting toggle.
148
148
 
149
149
  ---
150
150
 
@@ -157,9 +157,9 @@ Cross-link: `reference/motion.md` — reduced-motion: remove mention list slide;
157
157
  - Document keyboard shortcuts in a tooltip or accessible help dialog *(Atlassian Fabric Editor)*
158
158
 
159
159
  ### Don't
160
- - Don't use bare `contenteditable` without `role="textbox"` AT announces it as a generic landmark *(diverges from all 4 systems)*
161
- - Don't omit `aria-pressed` on toggle buttons AT users cannot determine current formatting state *(WAI-ARIA APG)*
162
- - Don't use a `placeholder` HTML attribute on contenteditable it is not a valid attribute and screen reader behavior is undefined *(MDN, Tiptap docs)*
160
+ - Don't use bare `contenteditable` without `role="textbox"` - AT announces it as a generic landmark *(diverges from all 4 systems)*
161
+ - Don't omit `aria-pressed` on toggle buttons - AT users cannot determine current formatting state *(WAI-ARIA APG)*
162
+ - Don't use a `placeholder` HTML attribute on contenteditable - it is not a valid attribute and screen reader behavior is undefined *(MDN, Tiptap docs)*
163
163
  - Don't suppress `outline` on the editable area without a custom focus-visible ring *(WCAG 2.4.7)*
164
164
 
165
165
  ---
@@ -168,8 +168,8 @@ Cross-link: `reference/motion.md` — reduced-motion: remove mention list slide;
168
168
 
169
169
  | Anti-pattern | Entry |
170
170
  |--------------|-------|
171
- | BAN-06 | contenteditable without role="textbox" `reference/anti-patterns.md#ban-06` |
172
- | BAN-04 | transition: all on editor content causing reflow jank `reference/anti-patterns.md#ban-04` |
171
+ | BAN-06 | contenteditable without role="textbox" - `reference/anti-patterns.md#ban-06` |
172
+ | BAN-04 | transition: all on editor content causing reflow jank - `reference/anti-patterns.md#ban-04` |
173
173
 
174
174
  ---
175
175
 
@@ -181,7 +181,7 @@ Cross-link: `reference/motion.md` — reduced-motion: remove mention list slide;
181
181
  | Toolbar toggle buttons need aria-pressed | WAI-ARIA APG toolbar pattern |
182
182
  | Placeholder via CSS ::before, not HTML attribute | Tiptap docs, Atlassian Fabric Editor |
183
183
  | Mention list uses role="listbox" + role="option" | Tiptap mention extension, Lexical mention plugin |
184
- | Ctrl/Cmd+B/I/U keyboard shortcuts are standard | Lexical, Tiptap, Slate all implement these |
184
+ | Ctrl/Cmd+B/I/U keyboard shortcuts are standard | Lexical, Tiptap, Slate - all implement these |
185
185
 
186
186
  Full system URLs: `connections/design-corpora.md`
187
187
 
@@ -221,6 +221,6 @@ grep -rn 'mention\|@mention\|MentionList' src/ | grep -v 'role="listbox"'
221
221
  </div>
222
222
  ```
223
223
 
224
- **Why it fails**: (1) Bare `contenteditable` is announced by most AT as a generic region, not a text input users do not know they can type. (2) `placeholder` is not a valid HTML attribute on `<div>` screen readers do not announce it. (3) Toolbar buttons have no `aria-pressed` AT cannot determine if bold/italic is currently active. (4) `document.execCommand` is deprecated.
224
+ **Why it fails**: (1) Bare `contenteditable` is announced by most AT as a generic region, not a text input - users do not know they can type. (2) `placeholder` is not a valid HTML attribute on `<div>` - screen readers do not announce it. (3) Toolbar buttons have no `aria-pressed` - AT cannot determine if bold/italic is currently active. (4) `document.execCommand` is deprecated.
225
225
  **Grep detection**: `grep -rn 'contenteditable="true"' src/ | grep -v 'role="textbox"'`
226
226
  **Fix**: Add `role="textbox"` + `aria-multiline="true"` + `aria-label="Post body"` to the editable div; implement placeholder via CSS `[data-empty]::before { content: attr(data-placeholder) }`; add `aria-pressed="true/false"` to toolbar toggle buttons; use a modern editor library (Tiptap, Lexical) instead of execCommand.
@@ -1,4 +1,4 @@
1
- # Select / Combobox Benchmark Spec
1
+ # Select / Combobox - Benchmark Spec
2
2
 
3
3
  **Harvested from**: Radix UI, WAI-ARIA APG, Carbon, Headless UI, Mantine, Material 3, Ant Design, shadcn/ui
4
4
  **Wave**: 1 · **Category**: Inputs
@@ -44,14 +44,14 @@ Label *
44
44
 
45
45
  | Variant | Description | Systems |
46
46
  |---------|-------------|---------|
47
- | Native select | `<select>` minimal, accessible, no custom styling | All (as baseline) |
47
+ | Native select | `<select>` - minimal, accessible, no custom styling | All (as baseline) |
48
48
  | Custom select | Styled trigger + listbox; no filter | Radix, Carbon, shadcn |
49
49
  | Combobox | Trigger + text filter + listbox | Radix, Mantine, Headless UI, Ant |
50
50
  | Multi-select | Multiple `aria-selected="true"` options; tag display | Mantine, Ant, Carbon |
51
51
  | Async / searchable | Options loaded on query; loading state in listbox | Mantine, Ant, shadcn |
52
52
 
53
53
  **Norm** (≥5/18): custom select must replicate native keyboard behavior exactly.
54
- **Diverge**: tag vs. chip display for multi-select Mantine uses tags, Ant uses chips, Carbon uses checkboxes in dropdown. Checkbox approach is most accessible (state is visible without removing focus from listbox).
54
+ **Diverge**: tag vs. chip display for multi-select - Mantine uses tags, Ant uses chips, Carbon uses checkboxes in dropdown. Checkbox approach is most accessible (state is visible without removing focus from listbox).
55
55
 
56
56
  ---
57
57
 
@@ -59,7 +59,7 @@ Label *
59
59
 
60
60
  | State | Trigger | Visual | ARIA |
61
61
  |-------|---------|--------|------|
62
- | default | | Resting trigger | `aria-expanded="false"` |
62
+ | default | - | Resting trigger | `aria-expanded="false"` |
63
63
  | open | trigger activated | Dropdown visible | `aria-expanded="true"` |
64
64
  | option hovered | pointer | Option highlighted | `aria-activedescendant` updated |
65
65
  | option selected | Enter / click | Checkmark or filled circle | `aria-selected="true"` |
@@ -78,7 +78,7 @@ Label *
78
78
  | md (default) | 40px | 36px | 16px |
79
79
  | lg | 48px | 44px | 16px |
80
80
 
81
- Max dropdown height: 240px with internal scroll prevents viewport overflow without pagination.
81
+ Max dropdown height: 240px with internal scroll - prevents viewport overflow without pagination.
82
82
  Option min-height: 36px (md) for touch targets *(Material 3, Polaris)*
83
83
 
84
84
  ---
@@ -87,7 +87,7 @@ Option min-height: 36px (md) for touch targets *(Material 3, Polaris)*
87
87
 
88
88
  - Trigger value: same weight/size as input (14px/400)
89
89
  - Option text: 14px/400; selected option: 14px/500
90
- - Group label: 11px/600 uppercase, muted colour not an option, not focusable
90
+ - Group label: 11px/600 uppercase, muted colour - not an option, not focusable
91
91
 
92
92
  ---
93
93
 
@@ -96,9 +96,9 @@ Option min-height: 36px (md) for touch targets *(Material 3, Polaris)*
96
96
  > **WAI-ARIA role**: `combobox` on trigger (select pattern); `listbox` on dropdown; `option` on items
97
97
  > **Required attributes**: `aria-expanded`, `aria-haspopup="listbox"`, `aria-controls` (trigger→listbox), `aria-activedescendant` (updated on option focus)
98
98
 
99
- ### Keyboard Contract Select (Listbox Pattern)
99
+ ### Keyboard Contract - Select (Listbox Pattern)
100
100
 
101
- *Quoted verbatim from WAI-ARIA APG https://www.w3.org/WAI/ARIA/apg/patterns/listbox/ W3C 2024*
101
+ *Quoted verbatim from WAI-ARIA APG - https://www.w3.org/WAI/ARIA/apg/patterns/listbox/ - W3C - 2024*
102
102
 
103
103
  | Key | Action |
104
104
  |-----|--------|
@@ -112,9 +112,9 @@ Option min-height: 36px (md) for touch targets *(Material 3, Polaris)*
112
112
  | Tab | Closes listbox; moves focus to next element |
113
113
  | Printable character | (Type-ahead) Moves focus to next option starting with typed character |
114
114
 
115
- ### Keyboard Contract Combobox
115
+ ### Keyboard Contract - Combobox
116
116
 
117
- *Quoted verbatim from WAI-ARIA APG https://www.w3.org/WAI/ARIA/apg/patterns/combobox/ W3C 2024*
117
+ *Quoted verbatim from WAI-ARIA APG - https://www.w3.org/WAI/ARIA/apg/patterns/combobox/ - W3C - 2024*
118
118
 
119
119
  | Key | Action |
120
120
  |-----|--------|
@@ -128,7 +128,7 @@ Option min-height: 36px (md) for touch targets *(Material 3, Polaris)*
128
128
 
129
129
  ### Accessibility Rules
130
130
 
131
- - `aria-activedescendant` on trigger MUST update as options are highlighted screen readers follow this, not DOM focus
131
+ - `aria-activedescendant` on trigger MUST update as options are highlighted - screen readers follow this, not DOM focus
132
132
  - Options must have unique `id` attributes (for `aria-activedescendant` reference)
133
133
  - Grouping: `role="group"` with `aria-label` wrapping grouped `role="option"` items
134
134
  - Empty state: announce via `aria-live="polite"` region when filter returns no results
@@ -144,7 +144,7 @@ Option min-height: 36px (md) for touch targets *(Material 3, Polaris)*
144
144
  | Dropdown close | 80ms | ease-in | Fade only |
145
145
  | Option highlight | 60ms | ease | Background colour only |
146
146
 
147
- Cross-link: `reference/motion.md` `AnimatePresence` pattern for mount/unmount
147
+ Cross-link: `reference/motion.md` - `AnimatePresence` pattern for mount/unmount
148
148
 
149
149
  ---
150
150
 
@@ -157,9 +157,9 @@ Cross-link: `reference/motion.md` — `AnimatePresence` pattern for mount/unmoun
157
157
  - Limit dropdown height to ~6–8 options; add scroll for more *(Carbon, Material 3)*
158
158
 
159
159
  ### Don't
160
- - Don't close the dropdown on every keystroke in combobox mode only on selection or Escape *(WAI-ARIA APG)*
161
- - Don't use a select for navigation use a nav + router *(Carbon, Primer)*
162
- - Don't disable scroll inside the listbox virtualise instead for large lists *(Mantine, Ant)*
160
+ - Don't close the dropdown on every keystroke in combobox mode - only on selection or Escape *(WAI-ARIA APG)*
161
+ - Don't use a select for navigation - use a nav + router *(Carbon, Primer)*
162
+ - Don't disable scroll inside the listbox - virtualise instead for large lists *(Mantine, Ant)*
163
163
  - Don't place interactive elements (links, buttons) inside `role="option"` *(WAI-ARIA APG)*
164
164
 
165
165
  ---
@@ -168,7 +168,7 @@ Cross-link: `reference/motion.md` — `AnimatePresence` pattern for mount/unmoun
168
168
 
169
169
  | Anti-pattern | Entry |
170
170
  |--------------|-------|
171
- | Custom select without ARIA | `reference/anti-patterns.md` ARIA role omission pattern |
171
+ | Custom select without ARIA | `reference/anti-patterns.md` - ARIA role omission pattern |
172
172
 
173
173
  ---
174
174
 
@@ -1,4 +1,4 @@
1
- # Sidebar (Collapsible Side Navigation Panel) Benchmark Spec
1
+ # Sidebar (Collapsible Side Navigation Panel) - Benchmark Spec
2
2
 
3
3
  **Harvested from**: Material 3, Carbon, Polaris, Atlassian, UUPM (app-interface, MIT)
4
4
  **Wave**: 4 · **Category**: Navigation
@@ -7,7 +7,7 @@
7
7
 
8
8
  ## Purpose
9
9
 
10
- A sidebar provides persistent or collapsible secondary navigation along the vertical axis of an application. In expanded state it shows icon + label; in collapsed state it shows icon only (with a tooltip). It is distinct from a Drawer (which is a modal overlay see `drawer.md`) and from a Navbar (primary horizontal navigation). Use a sidebar for application-level section switching and hierarchical settings navigation. *(Material 3 Navigation Drawer, Carbon UI Shell Left Nav, Atlassian SideNavigation, Polaris Navigation agree)*
10
+ A sidebar provides persistent or collapsible secondary navigation along the vertical axis of an application. In expanded state it shows icon + label; in collapsed state it shows icon only (with a tooltip). It is distinct from a Drawer (which is a modal overlay - see `drawer.md`) and from a Navbar (primary horizontal navigation). Use a sidebar for application-level section switching and hierarchical settings navigation. *(Material 3 Navigation Drawer, Carbon UI Shell Left Nav, Atlassian SideNavigation, Polaris Navigation agree)*
11
11
 
12
12
  ---
13
13
 
@@ -59,9 +59,9 @@ A sidebar provides persistent or collapsible secondary navigation along the vert
59
59
  |-------|---------|--------|------|
60
60
  | expanded | default or toggle | Full width, labels visible | `aria-expanded="true"` on toggle |
61
61
  | collapsed | toggle click | Icon-only, labels hidden | `aria-expanded="false"` on toggle |
62
- | item-default | | Resting fill | |
63
- | item-hover | pointer over | 8% overlay | |
64
- | item-focus | keyboard focus | 2px focus-visible ring | |
62
+ | item-default | - | Resting fill | - |
63
+ | item-hover | pointer over | 8% overlay | - |
64
+ | item-focus | keyboard focus | 2px focus-visible ring | - |
65
65
  | item-active | current route | Filled pill or left indicator bar | `aria-current="page"` |
66
66
  | subsection-open | button click | Children visible; chevron rotated 180° | `aria-expanded="true"` on section button |
67
67
  | subsection-closed | button click | Children hidden | `aria-expanded="false"` on section button |
@@ -74,7 +74,7 @@ A sidebar provides persistent or collapsible secondary navigation along the vert
74
74
  |-------|-------|-------------|----------------|
75
75
  | Expanded | 240–280px | 40px | 16px |
76
76
  | Collapsed | 48–64px | 40px | 12px (centered icon) |
77
- | Sub-item indent | | 36px | 32px (16px base + 16px indent) |
77
+ | Sub-item indent | - | 36px | 32px (16px base + 16px indent) |
78
78
 
79
79
  **Norm**: 240px expanded width (Carbon, Atlassian, Polaris). 40px item height matches button defaults.
80
80
 
@@ -84,10 +84,10 @@ A sidebar provides persistent or collapsible secondary navigation along the vert
84
84
 
85
85
  - Nav item label: body-sm (13–14px), weight 400; active item weight 500 or 600
86
86
  - Sub-section heading (if present): label-xs (11–12px), uppercase, weight 600, `color: --text-subtle`
87
- - Tooltip: body-xs (11–12px) concise, matches item label exactly in collapsed state
88
- - Never truncate nav item labels resize the sidebar or abbreviate the label intentionally
87
+ - Tooltip: body-xs (11–12px) - concise, matches item label exactly in collapsed state
88
+ - Never truncate nav item labels - resize the sidebar or abbreviate the label intentionally
89
89
 
90
- Cross-link: `reference/typography.md` label scale, body-sm
90
+ Cross-link: `reference/typography.md` - label scale, body-sm
91
91
 
92
92
  ---
93
93
 
@@ -98,7 +98,7 @@ Cross-link: `reference/typography.md` — label scale, body-sm
98
98
 
99
99
  ### Keyboard Contract
100
100
 
101
- *Quoted verbatim from WAI-ARIA APG https://www.w3.org/WAI/ARIA/apg/patterns/disclosure/ W3C 2024*
101
+ *Quoted verbatim from WAI-ARIA APG - https://www.w3.org/WAI/ARIA/apg/patterns/disclosure/ - W3C - 2024*
102
102
 
103
103
  | Key | Action |
104
104
  |-----|--------|
@@ -116,7 +116,7 @@ Cross-link: `reference/typography.md` — label scale, body-sm
116
116
  - In collapsed state, each icon-only item MUST have a tooltip AND `aria-label` (tooltip is not a substitute for accessible name)
117
117
  - `aria-current="page"` MUST be present on the currently active item
118
118
 
119
- Cross-link: `reference/accessibility.md` landmark labelling, disclosure pattern
119
+ Cross-link: `reference/accessibility.md` - landmark labelling, disclosure pattern
120
120
 
121
121
  ---
122
122
 
@@ -130,9 +130,9 @@ Cross-link: `reference/accessibility.md` — landmark labelling, disclosure patt
130
130
  | Chevron rotate | 150ms | ease-in-out | 0° → 180° on open |
131
131
  | Label fade in | 100ms | ease-out | Delay until width ≥ 140px to prevent overlap |
132
132
 
133
- **BAN**: Animating sidebar width using `transition: all` catches unrelated property changes and causes jank.
133
+ **BAN**: Animating sidebar width using `transition: all` - catches unrelated property changes and causes jank.
134
134
 
135
- Cross-link: `reference/motion.md` layout transitions, BAN-04
135
+ Cross-link: `reference/motion.md` - layout transitions, BAN-04
136
136
 
137
137
  ---
138
138
 
@@ -145,7 +145,7 @@ Cross-link: `reference/motion.md` — layout transitions, BAN-04
145
145
  - Use `aria-expanded` on sub-section toggles *(WAI-ARIA APG disclosure pattern)*
146
146
 
147
147
  ### Don't
148
- - Don't use `<a href="#">` for items that don't navigate breaks bookmark/open-in-new-tab expectations *(Carbon, WAI-ARIA)*
148
+ - Don't use `<a href="#">` for items that don't navigate - breaks bookmark/open-in-new-tab expectations *(Carbon, WAI-ARIA)*
149
149
  - Don't hide sub-items with `display: none` without also removing them from tab order *(WCAG 2.1.1)*
150
150
  - Don't use the same `aria-label` on both sidebar nav and top navbar *(WAI-ARIA landmark uniqueness)*
151
151
  - Don't collapse the sidebar below 44px touch target width on mobile *(WCAG 2.5.5)*
@@ -156,7 +156,7 @@ Cross-link: `reference/motion.md` — layout transitions, BAN-04
156
156
 
157
157
  | Anti-pattern | Entry |
158
158
  |--------------|-------|
159
- | BAN-04 | `transition: all` on interactive elements `reference/anti-patterns.md#ban-04` |
159
+ | BAN-04 | `transition: all` on interactive elements - `reference/anti-patterns.md#ban-04` |
160
160
 
161
161
  ---
162
162
 
@@ -1,4 +1,4 @@
1
- # Skeleton Benchmark Spec
1
+ # Skeleton - Benchmark Spec
2
2
 
3
3
  **Harvested from**: Polaris, Carbon, Atlassian, Mantine
4
4
  **Wave**: 3 · **Category**: Feedback
@@ -7,7 +7,7 @@
7
7
 
8
8
  ## Purpose
9
9
 
10
- A skeleton screen is a loading placeholder that mirrors the shape of the content it will replace text lines, images, cards, avatars. It reduces perceived wait time by showing the structural layout before real data arrives, preventing the jarring reflow that occurs when content suddenly appears. Use skeleton when the content shape is known; use an indeterminate spinner or progress bar when shape is unknown. *(Polaris, Carbon, Atlassian, Mantine agree: skeleton = shape-matched placeholder, not generic spinner)*
10
+ A skeleton screen is a loading placeholder that mirrors the shape of the content it will replace - text lines, images, cards, avatars. It reduces perceived wait time by showing the structural layout before real data arrives, preventing the jarring reflow that occurs when content suddenly appears. Use skeleton when the content shape is known; use an indeterminate spinner or progress bar when shape is unknown. *(Polaris, Carbon, Atlassian, Mantine agree: skeleton = shape-matched placeholder, not generic spinner)*
11
11
 
12
12
  ---
13
13
 
@@ -67,18 +67,18 @@ A skeleton screen is a loading placeholder that mirrors the shape of the content
67
67
  | Image block | Match target image aspect ratio | 16:9, 1:1, 4:3 common |
68
68
  | Gap between text lines | 8px | Matches body line-height rhythm |
69
69
 
70
- **Norm**: Match exact pixel dimensions of the content being replaced layout shift score is zero when skeleton matches final content size *(Polaris, Mantine)*.
70
+ **Norm**: Match exact pixel dimensions of the content being replaced - layout shift score is zero when skeleton matches final content size *(Polaris, Mantine)*.
71
71
 
72
72
  ---
73
73
 
74
74
  ## Typography
75
75
 
76
- Skeleton shapes are purely visual no typography content. However:
76
+ Skeleton shapes are purely visual - no typography content. However:
77
77
  - Text-line height should match the `line-height` of the real text it replaces
78
78
  - Heading skeleton height should match the heading's `font-size` + leading
79
- - Do NOT use placeholder text ("Loading…") inside skeleton shapes use `aria-label` on the container instead
79
+ - Do NOT use placeholder text ("Loading…") inside skeleton shapes - use `aria-label` on the container instead
80
80
 
81
- Cross-link: `reference/typography.md` line-height scale for matching skeleton dimensions
81
+ Cross-link: `reference/typography.md` - line-height scale for matching skeleton dimensions
82
82
 
83
83
  ---
84
84
 
@@ -89,7 +89,7 @@ Cross-link: `reference/typography.md` — line-height scale for matching skeleto
89
89
 
90
90
  ### Keyboard Contract
91
91
 
92
- *Quoted verbatim from WAI-ARIA APG https://www.w3.org/WAI/ARIA/apg/ W3C 2024*
92
+ *Quoted verbatim from WAI-ARIA APG - https://www.w3.org/WAI/ARIA/apg/ - W3C - 2024*
93
93
 
94
94
  | Key | Action |
95
95
  |-----|--------|
@@ -99,13 +99,13 @@ Skeleton elements must not receive focus. The container is not focusable unless
99
99
 
100
100
  ### Accessibility Rules
101
101
 
102
- - Every skeleton shape element MUST have `aria-hidden="true"` blank shapes announced by screen readers ("image", "text") confuse users *(Polaris, Carbon)*
102
+ - Every skeleton shape element MUST have `aria-hidden="true"` - blank shapes announced by screen readers ("image", "text") confuse users *(Polaris, Carbon)*
103
103
  - The container MUST have `aria-busy="true"` while loading, set to `false` (or removed) when content appears *(WAI-ARIA APG)*
104
- - The container MUST have `aria-label="Loading…"` or equivalent this is what screen readers announce while `aria-busy="true"` *(WAI-ARIA APG)*
105
- - Do NOT use skeleton as the only loading indicator for screen reader users announce loading state via live region if the transition is programmatic *(Carbon)*
106
- - Shimmer animation MUST be suppressed under `prefers-reduced-motion` use static fill instead *(WCAG 2.3.3)*
104
+ - The container MUST have `aria-label="Loading…"` or equivalent - this is what screen readers announce while `aria-busy="true"` *(WAI-ARIA APG)*
105
+ - Do NOT use skeleton as the only loading indicator for screen reader users - announce loading state via live region if the transition is programmatic *(Carbon)*
106
+ - Shimmer animation MUST be suppressed under `prefers-reduced-motion` - use static fill instead *(WCAG 2.3.3)*
107
107
 
108
- Cross-link: `reference/accessibility.md` `aria-busy`, `prefers-reduced-motion`
108
+ Cross-link: `reference/accessibility.md` - `aria-busy`, `prefers-reduced-motion`
109
109
 
110
110
  ---
111
111
 
@@ -114,15 +114,15 @@ Cross-link: `reference/accessibility.md` — `aria-busy`, `prefers-reduced-motio
114
114
  | Transition | Duration | Easing | Notes |
115
115
  |------------|----------|--------|-------|
116
116
  | Shimmer sweep | 1.5s | ease-in-out | 130° gradient: transparent → surface-highlight → transparent |
117
- | Loop delay | 0.5s | | Pause between sweeps to avoid strobing |
117
+ | Loop delay | 0.5s | - | Pause between sweeps to avoid strobing |
118
118
  | Skeleton → content | 200ms | ease-out | Fade-in real content over skeleton |
119
119
 
120
- Shimmer gradient direction: 130 degrees (roughly top-left to bottom-right) matches natural reading direction.
120
+ Shimmer gradient direction: 130 degrees (roughly top-left to bottom-right) - matches natural reading direction.
121
121
  Background: `surface-variant` token (slightly darker than background surface, lighter than border).
122
122
 
123
- **BAN**: High-contrast shimmer (e.g. white → gray on dark) too visually noisy. Do NOT use spinner animation inside a skeleton shape. Under `prefers-reduced-motion`, remove the sweep entirely and use static fill.
123
+ **BAN**: High-contrast shimmer (e.g. white → gray on dark) - too visually noisy. Do NOT use spinner animation inside a skeleton shape. Under `prefers-reduced-motion`, remove the sweep entirely and use static fill.
124
124
 
125
- Cross-link: `reference/motion.md` `prefers-reduced-motion`: static fill, no gradient sweep
125
+ Cross-link: `reference/motion.md` - `prefers-reduced-motion`: static fill, no gradient sweep
126
126
 
127
127
  ---
128
128
 
@@ -135,10 +135,10 @@ Cross-link: `reference/motion.md` — `prefers-reduced-motion`: static fill, no
135
135
  - Set `aria-busy="true"` + `aria-label="Loading…"` on the container *(WAI-ARIA APG)*
136
136
 
137
137
  ### Don't
138
- - Don't use a spinner when content shape is known skeleton is always preferred for layout-bearing slots *(Carbon, Polaris)*
139
- - Don't use strong contrast for shimmer use `surface-variant` (low contrast) *(Atlassian, Mantine)*
140
- - Don't animate shimmer under `prefers-reduced-motion` use static fill *(WCAG 2.3.3)*
141
- - Don't add visible "Loading…" text inside skeleton shapes put it on the container via `aria-label` *(Carbon)*
138
+ - Don't use a spinner when content shape is known - skeleton is always preferred for layout-bearing slots *(Carbon, Polaris)*
139
+ - Don't use strong contrast for shimmer - use `surface-variant` (low contrast) *(Atlassian, Mantine)*
140
+ - Don't animate shimmer under `prefers-reduced-motion` - use static fill *(WCAG 2.3.3)*
141
+ - Don't add visible "Loading…" text inside skeleton shapes - put it on the container via `aria-label` *(Carbon)*
142
142
 
143
143
  ---
144
144
 
@@ -1,4 +1,4 @@
1
- # Slider Benchmark Spec
1
+ # Slider - Benchmark Spec
2
2
 
3
3
  **Harvested from**: WAI-ARIA APG Slider pattern, Material 3, Radix Slider, Carbon Design System
4
4
  **Wave**: 5 · **Category**: Advanced
@@ -8,7 +8,7 @@
8
8
 
9
9
  ## Purpose
10
10
 
11
- A Slider lets users select a numeric value (or range of values) by dragging a thumb along a track. It is appropriate when the range of values is meaningful as a continuum volume, price, opacity, temperature and the exact numeric value matters less than relative position. For precise numeric entry, pair the slider with a text input. For a range, use two thumbs. *(Material 3, Carbon, Radix agree: slider = continuous or discrete value selection with visual track.)*
11
+ A Slider lets users select a numeric value (or range of values) by dragging a thumb along a track. It is appropriate when the range of values is meaningful as a continuum - volume, price, opacity, temperature - and the exact numeric value matters less than relative position. For precise numeric entry, pair the slider with a text input. For a range, use two thumbs. *(Material 3, Carbon, Radix agree: slider = continuous or discrete value selection with visual track.)*
12
12
 
13
13
  ---
14
14
 
@@ -56,10 +56,10 @@ Range:
56
56
 
57
57
  | State | Trigger | Visual | ARIA |
58
58
  |-------|---------|--------|------|
59
- | default | | Track + thumb at resting position | `aria-valuenow` reflects current value |
60
- | hover | Pointer over thumb | Thumb expands or shows halo | |
61
- | focus | Keyboard focus on thumb | Focus-visible ring on thumb | |
62
- | dragging / active | Mousedown / touch on thumb | Value tooltip visible; thumb slightly enlarged | |
59
+ | default | - | Track + thumb at resting position | `aria-valuenow` reflects current value |
60
+ | hover | Pointer over thumb | Thumb expands or shows halo | - |
61
+ | focus | Keyboard focus on thumb | Focus-visible ring on thumb | - |
62
+ | dragging / active | Mousedown / touch on thumb | Value tooltip visible; thumb slightly enlarged | - |
63
63
  | disabled | `disabled` / `aria-disabled` | 38% opacity; cursor: not-allowed | `aria-disabled="true"` |
64
64
 
65
65
  ---
@@ -74,7 +74,7 @@ Range:
74
74
 
75
75
  **Norm**: 4px track height (Material 3, Carbon). Thumb visual diameter 20px with ::before/::after expanding the touch target to ≥44px without inflating layout.
76
76
 
77
- Cross-link: `reference/surfaces.md` 44×44px touch-target minimum; use padding trick, not enlarged visual.
77
+ Cross-link: `reference/surfaces.md` - 44×44px touch-target minimum; use padding trick, not enlarged visual.
78
78
 
79
79
  ---
80
80
 
@@ -84,7 +84,7 @@ Cross-link: `reference/surfaces.md` — 44×44px touch-target minimum; use paddi
84
84
  - Tick labels: caption-xs, secondary color, centered below tick mark
85
85
  - Min/Max endpoint labels: caption-sm, secondary color, flush with track ends
86
86
 
87
- Cross-link: `reference/typography.md` tabular-nums on value tooltip so digits don't shift width during drag.
87
+ Cross-link: `reference/typography.md` - tabular-nums on value tooltip so digits don't shift width during drag.
88
88
 
89
89
  ---
90
90
 
@@ -95,7 +95,7 @@ Cross-link: `reference/typography.md` — tabular-nums on value tooltip so digit
95
95
 
96
96
  ### Keyboard Contract
97
97
 
98
- *Quoted verbatim from WAI-ARIA APG https://www.w3.org/WAI/ARIA/apg/patterns/slider/ W3C 2024*
98
+ *Quoted verbatim from WAI-ARIA APG - https://www.w3.org/WAI/ARIA/apg/patterns/slider/ - W3C - 2024*
99
99
 
100
100
  | Key | Action |
101
101
  |-----|--------|
@@ -112,12 +112,12 @@ Cross-link: `reference/typography.md` — tabular-nums on value tooltip so digit
112
112
 
113
113
  - Every slider thumb MUST have `aria-valuenow`; update it continuously during drag
114
114
  - `aria-valuetext` MUST be provided when raw number is not human-readable (e.g., "Low", "Medium", "High" for a quality setting, or "$45" for a price)
115
- - Range slider: label each thumb distinctly (e.g., `aria-label="Minimum price"` and `aria-label="Maximum price"`) identical labels confuse screen readers
115
+ - Range slider: label each thumb distinctly (e.g., `aria-label="Minimum price"` and `aria-label="Maximum price"`) - identical labels confuse screen readers
116
116
  - Thumb touch target MUST be ≥44×44px; use `::before`/`::after` pseudo-element padding if visual thumb is smaller
117
- - Do not use `<input type="range">` hidden behind a custom div without ARIA the native element is preferable when no custom styling is required
117
+ - Do not use `<input type="range">` hidden behind a custom div without ARIA - the native element is preferable when no custom styling is required
118
118
  - Disabled sliders: use `aria-disabled="true"`; keep thumb in tab order so AT can announce the current value
119
119
 
120
- Cross-link: `reference/accessibility.md` slider role, aria-valuetext guidance.
120
+ Cross-link: `reference/accessibility.md` - slider role, aria-valuetext guidance.
121
121
 
122
122
  ---
123
123
 
@@ -125,15 +125,15 @@ Cross-link: `reference/accessibility.md` — slider role, aria-valuetext guidanc
125
125
 
126
126
  | Transition | Duration | Easing | Notes |
127
127
  |------------|----------|--------|-------|
128
- | Thumb drag | 0ms | | No easing on drag follows pointer exactly |
128
+ | Thumb drag | 0ms | - | No easing on drag - follows pointer exactly |
129
129
  | Keyboard step | 80ms | ease-out | Smooth snap to new position |
130
130
  | Value tooltip appear | 100ms | ease-out | Fade in on focus/drag |
131
131
  | Value tooltip dismiss | 150ms | ease-in | Fade out on blur |
132
132
  | Tick mark appear | 120ms | ease-out | When switching to discrete mode |
133
133
 
134
- **BAN**: Do not add momentum or inertia easing to thumb drag feels broken and breaks accessibility (thumb does not match pointer).
134
+ **BAN**: Do not add momentum or inertia easing to thumb drag - feels broken and breaks accessibility (thumb does not match pointer).
135
135
 
136
- Cross-link: `reference/motion.md` reduced-motion: remove keyboard-step animation; thumb jumps instantly.
136
+ Cross-link: `reference/motion.md` - reduced-motion: remove keyboard-step animation; thumb jumps instantly.
137
137
 
138
138
  ---
139
139
 
@@ -146,9 +146,9 @@ Cross-link: `reference/motion.md` — reduced-motion: remove keyboard-step anima
146
146
  - Show tick marks only for discrete sliders with ≤10 steps *(Material 3, Carbon)*
147
147
 
148
148
  ### Don't
149
- - Don't build a slider from `<div>` with mouse events only no keyboard, no ARIA *(diverges from all 4 systems)*
150
- - Don't omit `aria-valuenow` updates during drag AT users hear a stale value *(WAI-ARIA APG)*
151
- - Don't let the visual thumb area be smaller than 12px with no hit-area expansion fails WCAG 2.5.8 *(Material 3)*
149
+ - Don't build a slider from `<div>` with mouse events only - no keyboard, no ARIA *(diverges from all 4 systems)*
150
+ - Don't omit `aria-valuenow` updates during drag - AT users hear a stale value *(WAI-ARIA APG)*
151
+ - Don't let the visual thumb area be smaller than 12px with no hit-area expansion - fails WCAG 2.5.8 *(Material 3)*
152
152
  - Don't use identical `aria-label` for both range thumbs *(WAI-ARIA APG)*
153
153
 
154
154
  ---
@@ -157,8 +157,8 @@ Cross-link: `reference/motion.md` — reduced-motion: remove keyboard-step anima
157
157
 
158
158
  | Anti-pattern | Entry |
159
159
  |--------------|-------|
160
- | BAN-09 | Custom interactive widget with mouse events only, no keyboard `reference/anti-patterns.md#ban-09` |
161
- | BAN-11 | Touch target below 44px without padding expansion `reference/anti-patterns.md#ban-11` |
160
+ | BAN-09 | Custom interactive widget with mouse events only, no keyboard - `reference/anti-patterns.md#ban-09` |
161
+ | BAN-11 | Touch target below 44px without padding expansion - `reference/anti-patterns.md#ban-11` |
162
162
 
163
163
  ---
164
164