@hegemonart/get-design-done 1.42.0 → 1.44.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (430) hide show
  1. package/.claude-plugin/marketplace.json +2 -2
  2. package/.claude-plugin/plugin.json +1 -1
  3. package/CHANGELOG.md +1126 -1038
  4. package/README.md +159 -155
  5. package/SKILL.md +42 -42
  6. package/agents/README.md +53 -53
  7. package/agents/a11y-mapper.md +3 -3
  8. package/agents/component-benchmark-harvester.md +8 -8
  9. package/agents/component-benchmark-synthesizer.md +11 -11
  10. package/agents/component-taxonomy-mapper.md +5 -5
  11. package/agents/compose-executor.md +25 -25
  12. package/agents/conflict-resolver.md +8 -8
  13. package/agents/cost-forecaster.md +12 -12
  14. package/agents/decision-journal-exporter.md +5 -5
  15. package/agents/design-advisor.md +19 -19
  16. package/agents/design-assumptions-analyzer.md +16 -16
  17. package/agents/design-auditor.md +39 -39
  18. package/agents/design-authority-watcher.md +28 -28
  19. package/agents/design-component-generator.md +27 -27
  20. package/agents/design-context-builder.md +66 -66
  21. package/agents/design-context-checker-gate.md +5 -5
  22. package/agents/design-context-checker.md +20 -20
  23. package/agents/design-discussant.md +23 -23
  24. package/agents/design-doc-writer.md +12 -12
  25. package/agents/design-executor.md +38 -38
  26. package/agents/design-figma-writer.md +31 -31
  27. package/agents/design-fixer.md +27 -27
  28. package/agents/design-integration-checker-gate.md +5 -5
  29. package/agents/design-integration-checker.md +29 -29
  30. package/agents/design-paper-writer.md +14 -14
  31. package/agents/design-pattern-mapper.md +9 -9
  32. package/agents/design-pencil-writer.md +12 -12
  33. package/agents/design-phase-researcher.md +14 -14
  34. package/agents/design-plan-checker.md +13 -13
  35. package/agents/design-planner.md +24 -24
  36. package/agents/design-reflector.md +48 -48
  37. package/agents/design-research-synthesizer.md +21 -21
  38. package/agents/design-start-writer.md +7 -7
  39. package/agents/design-update-checker.md +8 -8
  40. package/agents/design-verifier-gate.md +5 -5
  41. package/agents/design-verifier.md +80 -80
  42. package/agents/ds-generator.md +14 -14
  43. package/agents/ds-migration-planner.md +12 -12
  44. package/agents/email-executor.md +26 -26
  45. package/agents/experiment-result-ingester.md +10 -10
  46. package/agents/flutter-executor.md +28 -28
  47. package/agents/gdd-graph-refresh.md +10 -10
  48. package/agents/gdd-intel-updater.md +11 -11
  49. package/agents/gdd-learnings-extractor.md +2 -2
  50. package/agents/motion-mapper.md +8 -8
  51. package/agents/motion-verifier.md +16 -16
  52. package/agents/pdf-executor.md +27 -27
  53. package/agents/perf-analyzer.md +20 -20
  54. package/agents/pr-commenter.md +24 -24
  55. package/agents/prototype-gate.md +29 -29
  56. package/agents/quality-gate-runner.md +21 -21
  57. package/agents/rollout-coordinator.md +8 -8
  58. package/agents/swift-executor.md +41 -41
  59. package/agents/ticket-sync-agent.md +19 -19
  60. package/agents/token-mapper.md +6 -6
  61. package/agents/user-research-synthesizer.md +13 -13
  62. package/agents/visual-hierarchy-mapper.md +2 -2
  63. package/dist/claude-code/.claude/skills/add-backlog/SKILL.md +3 -3
  64. package/dist/claude-code/.claude/skills/analyze-dependencies/SKILL.md +10 -10
  65. package/dist/claude-code/.claude/skills/apply-reflections/SKILL.md +13 -13
  66. package/dist/claude-code/.claude/skills/apply-reflections/apply-reflections-procedure.md +20 -20
  67. package/dist/claude-code/.claude/skills/audit/SKILL.md +7 -7
  68. package/dist/claude-code/.claude/skills/bandit-status/SKILL.md +7 -7
  69. package/dist/claude-code/.claude/skills/benchmark/SKILL.md +7 -7
  70. package/dist/claude-code/.claude/skills/bootstrap-ds/SKILL.md +10 -10
  71. package/dist/claude-code/.claude/skills/brief/SKILL.md +20 -20
  72. package/dist/claude-code/.claude/skills/budget/SKILL.md +4 -4
  73. package/dist/claude-code/.claude/skills/cache-manager/SKILL.md +6 -6
  74. package/dist/claude-code/.claude/skills/cache-manager/cache-policy.md +5 -5
  75. package/dist/claude-code/.claude/skills/check-update/SKILL.md +5 -5
  76. package/dist/claude-code/.claude/skills/compare/SKILL.md +15 -15
  77. package/dist/claude-code/.claude/skills/compare/compare-rubric.md +17 -17
  78. package/dist/claude-code/.claude/skills/complete-cycle/SKILL.md +5 -5
  79. package/dist/claude-code/.claude/skills/connections/SKILL.md +11 -11
  80. package/dist/claude-code/.claude/skills/connections/connections-onboarding.md +76 -76
  81. package/dist/claude-code/.claude/skills/continue/SKILL.md +2 -2
  82. package/dist/claude-code/.claude/skills/darkmode/SKILL.md +17 -17
  83. package/dist/claude-code/.claude/skills/darkmode/darkmode-audit-procedure.md +7 -7
  84. package/dist/claude-code/.claude/skills/debug/SKILL.md +3 -3
  85. package/dist/claude-code/.claude/skills/debug/debug-feedback-loops.md +12 -12
  86. package/dist/claude-code/.claude/skills/design/SKILL.md +12 -12
  87. package/dist/claude-code/.claude/skills/design/design-procedure.md +23 -23
  88. package/dist/claude-code/.claude/skills/discover/SKILL.md +7 -7
  89. package/dist/claude-code/.claude/skills/discover/discover-procedure.md +18 -18
  90. package/dist/claude-code/.claude/skills/discuss/SKILL.md +12 -12
  91. package/dist/claude-code/.claude/skills/do/SKILL.md +1 -1
  92. package/dist/claude-code/.claude/skills/explore/SKILL.md +21 -21
  93. package/dist/claude-code/.claude/skills/explore/explore-procedure.md +48 -48
  94. package/dist/claude-code/.claude/skills/export/SKILL.md +9 -9
  95. package/dist/claude-code/.claude/skills/extract-learnings/SKILL.md +5 -5
  96. package/dist/claude-code/.claude/skills/fast/SKILL.md +7 -7
  97. package/dist/claude-code/.claude/skills/figma-extract/SKILL.md +11 -11
  98. package/dist/claude-code/.claude/skills/figma-write/SKILL.md +6 -6
  99. package/dist/claude-code/.claude/skills/graphify/SKILL.md +4 -4
  100. package/dist/claude-code/.claude/skills/health/SKILL.md +16 -16
  101. package/dist/claude-code/.claude/skills/health/health-mcp-detection.md +3 -3
  102. package/dist/claude-code/.claude/skills/health/health-skill-length-report.md +6 -6
  103. package/dist/claude-code/.claude/skills/help/SKILL.md +1 -1
  104. package/dist/claude-code/.claude/skills/list-assumptions/SKILL.md +4 -4
  105. package/dist/claude-code/.claude/skills/map/SKILL.md +12 -12
  106. package/dist/claude-code/.claude/skills/migrate/SKILL.md +5 -5
  107. package/dist/claude-code/.claude/skills/new-cycle/SKILL.md +2 -2
  108. package/dist/claude-code/.claude/skills/new-cycle/milestone-completeness-rubric.md +16 -16
  109. package/dist/claude-code/.claude/skills/new-project/SKILL.md +1 -1
  110. package/dist/claude-code/.claude/skills/next/SKILL.md +5 -5
  111. package/dist/claude-code/.claude/skills/note/SKILL.md +1 -1
  112. package/dist/claude-code/.claude/skills/openrouter-status/SKILL.md +4 -4
  113. package/dist/claude-code/.claude/skills/optimize/SKILL.md +15 -15
  114. package/dist/claude-code/.claude/skills/pause/SKILL.md +5 -5
  115. package/dist/claude-code/.claude/skills/peer-cli-add/SKILL.md +11 -11
  116. package/dist/claude-code/.claude/skills/peer-cli-add/peer-cli-protocol.md +39 -39
  117. package/dist/claude-code/.claude/skills/peer-cli-customize/SKILL.md +14 -14
  118. package/dist/claude-code/.claude/skills/peers/SKILL.md +4 -4
  119. package/dist/claude-code/.claude/skills/plan/SKILL.md +13 -13
  120. package/dist/claude-code/.claude/skills/plan/plan-procedure.md +24 -24
  121. package/dist/claude-code/.claude/skills/plant-seed/SKILL.md +4 -4
  122. package/dist/claude-code/.claude/skills/pr-branch/SKILL.md +2 -2
  123. package/dist/claude-code/.claude/skills/progress/SKILL.md +15 -15
  124. package/dist/claude-code/.claude/skills/quality-gate/SKILL.md +22 -22
  125. package/dist/claude-code/.claude/skills/quality-gate/threat-modeling.md +19 -19
  126. package/dist/claude-code/.claude/skills/quick/SKILL.md +5 -5
  127. package/dist/claude-code/.claude/skills/reapply-patches/SKILL.md +7 -7
  128. package/dist/claude-code/.claude/skills/reflect/SKILL.md +3 -3
  129. package/dist/claude-code/.claude/skills/reflect/procedures/capability-gap-scan.md +11 -11
  130. package/dist/claude-code/.claude/skills/report-issue/SKILL.md +5 -5
  131. package/dist/claude-code/.claude/skills/report-issue/report-issue-procedure.md +27 -27
  132. package/dist/claude-code/.claude/skills/resume/SKILL.md +9 -9
  133. package/dist/claude-code/.claude/skills/review-backlog/SKILL.md +3 -3
  134. package/dist/claude-code/.claude/skills/review-decisions/SKILL.md +3 -3
  135. package/dist/claude-code/.claude/skills/roi/SKILL.md +5 -5
  136. package/dist/claude-code/.claude/skills/rollout-status/SKILL.md +4 -4
  137. package/dist/claude-code/.claude/skills/router/SKILL.md +11 -11
  138. package/dist/claude-code/.claude/skills/router/capability-gap-emitter.md +6 -6
  139. package/dist/claude-code/.claude/skills/router/router-pick-emitter.md +9 -9
  140. package/dist/claude-code/.claude/skills/router/router-rules.md +7 -7
  141. package/dist/claude-code/.claude/skills/scan/SKILL.md +16 -16
  142. package/dist/claude-code/.claude/skills/scan/scan-procedure.md +42 -42
  143. package/dist/claude-code/.claude/skills/settings/SKILL.md +2 -2
  144. package/dist/claude-code/.claude/skills/ship/SKILL.md +7 -7
  145. package/dist/claude-code/.claude/skills/sketch/SKILL.md +10 -10
  146. package/dist/claude-code/.claude/skills/sketch-wrap-up/SKILL.md +12 -12
  147. package/dist/claude-code/.claude/skills/skill-manifest/SKILL.md +5 -5
  148. package/dist/claude-code/.claude/skills/spike/SKILL.md +7 -7
  149. package/dist/claude-code/.claude/skills/spike-wrap-up/SKILL.md +13 -13
  150. package/dist/claude-code/.claude/skills/start/SKILL.md +8 -8
  151. package/dist/claude-code/.claude/skills/start/start-procedure.md +9 -9
  152. package/dist/claude-code/.claude/skills/stats/SKILL.md +5 -5
  153. package/dist/claude-code/.claude/skills/style/SKILL.md +12 -12
  154. package/dist/claude-code/.claude/skills/style/style-doc-procedure.md +12 -12
  155. package/dist/claude-code/.claude/skills/synthesize/SKILL.md +10 -10
  156. package/dist/claude-code/.claude/skills/timeline/SKILL.md +4 -4
  157. package/dist/claude-code/.claude/skills/todo/SKILL.md +3 -3
  158. package/dist/claude-code/.claude/skills/turn-closeout/SKILL.md +10 -10
  159. package/dist/claude-code/.claude/skills/unlock-decision/SKILL.md +3 -3
  160. package/dist/claude-code/.claude/skills/update/SKILL.md +9 -9
  161. package/dist/claude-code/.claude/skills/using-gdd/SKILL.md +17 -17
  162. package/dist/claude-code/.claude/skills/verify/SKILL.md +13 -13
  163. package/dist/claude-code/.claude/skills/verify/verify-procedure.md +34 -34
  164. package/dist/claude-code/.claude/skills/warm-cache/SKILL.md +8 -8
  165. package/dist/claude-code/.claude/skills/watch-authorities/SKILL.md +9 -9
  166. package/dist/claude-code/.claude/skills/zoom-out/SKILL.md +4 -4
  167. package/package.json +9 -2
  168. package/reference/DEPRECATIONS.md +10 -10
  169. package/reference/STATE-TEMPLATE.md +26 -26
  170. package/reference/accessibility.md +13 -13
  171. package/reference/adr-format.md +13 -13
  172. package/reference/ai-native-tool-interface.md +5 -5
  173. package/reference/anti-patterns.md +9 -9
  174. package/reference/architecture-vocabulary.md +31 -31
  175. package/reference/audit-scoring.md +13 -13
  176. package/reference/authority-feeds.md +36 -36
  177. package/reference/bandit-integration.md +25 -25
  178. package/reference/brand-voice.md +36 -36
  179. package/reference/capability-gap-stage-gate.md +20 -20
  180. package/reference/checklists.md +26 -26
  181. package/reference/cli-localization.md +13 -13
  182. package/reference/codex-tools.md +2 -2
  183. package/reference/color-theory.md +28 -28
  184. package/reference/component-authoring.md +4 -4
  185. package/reference/components/README.md +13 -13
  186. package/reference/components/TEMPLATE.md +13 -13
  187. package/reference/components/accordion.md +15 -15
  188. package/reference/components/alert.md +25 -25
  189. package/reference/components/badge.md +18 -18
  190. package/reference/components/breadcrumbs.md +24 -24
  191. package/reference/components/button.md +21 -21
  192. package/reference/components/card.md +13 -13
  193. package/reference/components/checkbox.md +20 -20
  194. package/reference/components/chip.md +20 -20
  195. package/reference/components/command-palette.md +15 -15
  196. package/reference/components/date-picker.md +22 -22
  197. package/reference/components/drawer.md +13 -13
  198. package/reference/components/file-upload.md +22 -22
  199. package/reference/components/input.md +18 -18
  200. package/reference/components/label.md +25 -25
  201. package/reference/components/link.md +19 -19
  202. package/reference/components/list.md +17 -17
  203. package/reference/components/menu.md +19 -19
  204. package/reference/components/modal-dialog.md +16 -16
  205. package/reference/components/navbar.md +19 -19
  206. package/reference/components/pagination.md +18 -18
  207. package/reference/components/popover.md +12 -12
  208. package/reference/components/progress.md +18 -18
  209. package/reference/components/radio.md +17 -17
  210. package/reference/components/rich-text-editor.md +24 -24
  211. package/reference/components/select-combobox.md +16 -16
  212. package/reference/components/sidebar.md +15 -15
  213. package/reference/components/skeleton.md +20 -20
  214. package/reference/components/slider.md +20 -20
  215. package/reference/components/stepper.md +24 -24
  216. package/reference/components/switch.md +19 -19
  217. package/reference/components/table.md +21 -21
  218. package/reference/components/tabs.md +11 -11
  219. package/reference/components/toast.md +19 -19
  220. package/reference/components/tooltip.md +19 -19
  221. package/reference/components/tree.md +17 -17
  222. package/reference/composition.md +38 -38
  223. package/reference/config-schema.md +37 -37
  224. package/reference/context-md-format.md +9 -9
  225. package/reference/contrast-advanced.md +29 -29
  226. package/reference/conversational-ui.md +17 -17
  227. package/reference/cost-governance.md +14 -14
  228. package/reference/css-grid-layout.md +8 -8
  229. package/reference/cycle-handoff-preamble.md +3 -3
  230. package/reference/data-visualization.md +67 -67
  231. package/reference/debugger-philosophy.md +5 -5
  232. package/reference/design-system-guidance.md +21 -21
  233. package/reference/design-systems-catalog.md +20 -20
  234. package/reference/design-variants.md +11 -11
  235. package/reference/domains/civic-patterns.md +10 -10
  236. package/reference/domains/finance-patterns.md +9 -9
  237. package/reference/domains/gaming-patterns.md +9 -9
  238. package/reference/domains/healthcare-patterns.md +11 -11
  239. package/reference/ds-bootstrap-rubric.md +13 -13
  240. package/reference/email-design.md +22 -22
  241. package/reference/emotional-design.md +10 -10
  242. package/reference/error-recovery.md +11 -11
  243. package/reference/export-formats.md +7 -7
  244. package/reference/figma-sandbox.md +6 -6
  245. package/reference/first-principles.md +10 -10
  246. package/reference/form-patterns.md +26 -26
  247. package/reference/framer-motion-patterns.md +49 -49
  248. package/reference/gdd-runtime-audit.md +17 -17
  249. package/reference/gdd-threat-model.md +44 -44
  250. package/reference/gemini-tools.md +3 -3
  251. package/reference/gestalt.md +24 -24
  252. package/reference/heuristics.md +32 -32
  253. package/reference/i18n.md +44 -44
  254. package/reference/iconography.md +24 -24
  255. package/reference/image-optimization.md +14 -14
  256. package/reference/information-architecture.md +47 -47
  257. package/reference/intel-schema.md +1 -1
  258. package/reference/known-failure-modes.md +37 -37
  259. package/reference/meta-rules.md +5 -5
  260. package/reference/migrations/material-3-to-4.md +17 -17
  261. package/reference/migrations/mui-v6.md +16 -16
  262. package/reference/migrations/shadcn-v2.md +25 -25
  263. package/reference/migrations/tailwind-v4.md +21 -21
  264. package/reference/model-prices.md +3 -3
  265. package/reference/model-tiers.md +40 -40
  266. package/reference/motion-advanced.md +21 -21
  267. package/reference/motion-easings.md +29 -29
  268. package/reference/motion-interpolate.md +1 -1
  269. package/reference/motion-spring.md +13 -13
  270. package/reference/motion-transition-taxonomy.md +34 -34
  271. package/reference/motion.md +31 -31
  272. package/reference/multi-author-model.md +13 -13
  273. package/reference/native-platforms.md +28 -28
  274. package/reference/notification-routing.md +6 -6
  275. package/reference/onboarding-progressive-disclosure.md +32 -32
  276. package/reference/openrouter-tier-mapping.md +8 -8
  277. package/reference/palette-catalog.md +37 -37
  278. package/reference/parallelism-rules.md +20 -20
  279. package/reference/peer-cli-capabilities.md +14 -14
  280. package/reference/peer-protocols.md +21 -21
  281. package/reference/perf-budget.md +21 -21
  282. package/reference/performance.md +22 -22
  283. package/reference/platforms.md +51 -51
  284. package/reference/pr-review-integration.md +7 -7
  285. package/reference/prices/antigravity.md +3 -3
  286. package/reference/prices/augment.md +3 -3
  287. package/reference/prices/claude.md +2 -2
  288. package/reference/prices/cline.md +4 -4
  289. package/reference/prices/codebuddy.md +3 -3
  290. package/reference/prices/codex.md +2 -2
  291. package/reference/prices/copilot.md +3 -3
  292. package/reference/prices/cursor.md +3 -3
  293. package/reference/prices/gemini.md +2 -2
  294. package/reference/prices/kilo.md +3 -3
  295. package/reference/prices/opencode.md +4 -4
  296. package/reference/prices/qwen.md +2 -2
  297. package/reference/prices/trae.md +3 -3
  298. package/reference/prices/windsurf.md +3 -3
  299. package/reference/prices.openrouter.md +5 -5
  300. package/reference/print-design.md +36 -36
  301. package/reference/priority-matrix.md +2 -2
  302. package/reference/project-skills-guide.md +3 -3
  303. package/reference/proportion-systems.md +23 -23
  304. package/reference/pseudonymization-rules.md +30 -30
  305. package/reference/retrieval-contract.md +14 -14
  306. package/reference/review-format.md +7 -7
  307. package/reference/rollout-coordination.md +10 -10
  308. package/reference/rtl-cjk-cultural.md +39 -39
  309. package/reference/runtime-models.md +28 -28
  310. package/reference/shared-preamble.md +26 -26
  311. package/reference/skill-authoring-contract.md +16 -16
  312. package/reference/skill-placeholders.md +3 -3
  313. package/reference/start-interview.md +10 -10
  314. package/reference/style-vocabulary.md +25 -25
  315. package/reference/surfaces.md +4 -4
  316. package/reference/ticket-sync.md +9 -9
  317. package/reference/typography.md +64 -64
  318. package/reference/user-research.md +54 -54
  319. package/reference/variable-fonts-loading.md +15 -15
  320. package/reference/visual-hierarchy-layout.md +41 -41
  321. package/scripts/lib/harness-freshness.cjs +59 -0
  322. package/scripts/lib/health-mirror/index.cjs +27 -0
  323. package/scripts/lib/manifest/harnesses.json +280 -14
  324. package/scripts/lib/manifest/prose-denylist.json +1 -1
  325. package/scripts/lib/manifest/schemas/harnesses.schema.json +32 -0
  326. package/sdk/mcp/gdd-mcp/server.js +125 -0
  327. package/skills/add-backlog/SKILL.md +3 -3
  328. package/skills/analyze-dependencies/SKILL.md +10 -10
  329. package/skills/apply-reflections/SKILL.md +13 -13
  330. package/skills/apply-reflections/apply-reflections-procedure.md +20 -20
  331. package/skills/audit/SKILL.md +7 -7
  332. package/skills/bandit-status/SKILL.md +7 -7
  333. package/skills/benchmark/SKILL.md +7 -7
  334. package/skills/bootstrap-ds/SKILL.md +10 -10
  335. package/skills/brief/SKILL.md +20 -20
  336. package/skills/budget/SKILL.md +4 -4
  337. package/skills/cache-manager/SKILL.md +6 -6
  338. package/skills/cache-manager/cache-policy.md +5 -5
  339. package/skills/check-update/SKILL.md +5 -5
  340. package/skills/compare/SKILL.md +15 -15
  341. package/skills/compare/compare-rubric.md +17 -17
  342. package/skills/complete-cycle/SKILL.md +5 -5
  343. package/skills/connections/SKILL.md +11 -11
  344. package/skills/connections/connections-onboarding.md +76 -76
  345. package/skills/continue/SKILL.md +2 -2
  346. package/skills/darkmode/SKILL.md +17 -17
  347. package/skills/darkmode/darkmode-audit-procedure.md +7 -7
  348. package/skills/debug/SKILL.md +3 -3
  349. package/skills/debug/debug-feedback-loops.md +12 -12
  350. package/skills/design/SKILL.md +12 -12
  351. package/skills/design/design-procedure.md +23 -23
  352. package/skills/discover/SKILL.md +7 -7
  353. package/skills/discover/discover-procedure.md +18 -18
  354. package/skills/discuss/SKILL.md +12 -12
  355. package/skills/do/SKILL.md +1 -1
  356. package/skills/explore/SKILL.md +21 -21
  357. package/skills/explore/explore-procedure.md +48 -48
  358. package/skills/export/SKILL.md +9 -9
  359. package/skills/extract-learnings/SKILL.md +5 -5
  360. package/skills/fast/SKILL.md +7 -7
  361. package/skills/figma-extract/SKILL.md +11 -11
  362. package/skills/figma-write/SKILL.md +6 -6
  363. package/skills/graphify/SKILL.md +4 -4
  364. package/skills/health/SKILL.md +16 -16
  365. package/skills/health/health-mcp-detection.md +3 -3
  366. package/skills/health/health-skill-length-report.md +6 -6
  367. package/skills/help/SKILL.md +1 -1
  368. package/skills/list-assumptions/SKILL.md +4 -4
  369. package/skills/map/SKILL.md +12 -12
  370. package/skills/migrate/SKILL.md +5 -5
  371. package/skills/new-cycle/SKILL.md +2 -2
  372. package/skills/new-cycle/milestone-completeness-rubric.md +16 -16
  373. package/skills/new-project/SKILL.md +1 -1
  374. package/skills/next/SKILL.md +5 -5
  375. package/skills/note/SKILL.md +1 -1
  376. package/skills/openrouter-status/SKILL.md +4 -4
  377. package/skills/optimize/SKILL.md +15 -15
  378. package/skills/pause/SKILL.md +5 -5
  379. package/skills/peer-cli-add/SKILL.md +11 -11
  380. package/skills/peer-cli-add/peer-cli-protocol.md +39 -39
  381. package/skills/peer-cli-customize/SKILL.md +14 -14
  382. package/skills/peers/SKILL.md +4 -4
  383. package/skills/plan/SKILL.md +13 -13
  384. package/skills/plan/plan-procedure.md +24 -24
  385. package/skills/plant-seed/SKILL.md +4 -4
  386. package/skills/pr-branch/SKILL.md +2 -2
  387. package/skills/progress/SKILL.md +15 -15
  388. package/skills/quality-gate/SKILL.md +22 -22
  389. package/skills/quality-gate/threat-modeling.md +19 -19
  390. package/skills/quick/SKILL.md +5 -5
  391. package/skills/reapply-patches/SKILL.md +7 -7
  392. package/skills/reflect/SKILL.md +3 -3
  393. package/skills/reflect/procedures/capability-gap-scan.md +11 -11
  394. package/skills/report-issue/SKILL.md +5 -5
  395. package/skills/report-issue/report-issue-procedure.md +27 -27
  396. package/skills/resume/SKILL.md +9 -9
  397. package/skills/review-backlog/SKILL.md +3 -3
  398. package/skills/review-decisions/SKILL.md +3 -3
  399. package/skills/roi/SKILL.md +5 -5
  400. package/skills/rollout-status/SKILL.md +4 -4
  401. package/skills/router/SKILL.md +11 -11
  402. package/skills/router/capability-gap-emitter.md +6 -6
  403. package/skills/router/router-pick-emitter.md +9 -9
  404. package/skills/router/router-rules.md +7 -7
  405. package/skills/scan/SKILL.md +16 -16
  406. package/skills/scan/scan-procedure.md +42 -42
  407. package/skills/settings/SKILL.md +2 -2
  408. package/skills/ship/SKILL.md +7 -7
  409. package/skills/sketch/SKILL.md +10 -10
  410. package/skills/sketch-wrap-up/SKILL.md +12 -12
  411. package/skills/skill-manifest/SKILL.md +5 -5
  412. package/skills/spike/SKILL.md +7 -7
  413. package/skills/spike-wrap-up/SKILL.md +13 -13
  414. package/skills/start/SKILL.md +8 -8
  415. package/skills/start/start-procedure.md +9 -9
  416. package/skills/stats/SKILL.md +5 -5
  417. package/skills/style/SKILL.md +12 -12
  418. package/skills/style/style-doc-procedure.md +12 -12
  419. package/skills/synthesize/SKILL.md +10 -10
  420. package/skills/timeline/SKILL.md +4 -4
  421. package/skills/todo/SKILL.md +3 -3
  422. package/skills/turn-closeout/SKILL.md +10 -10
  423. package/skills/unlock-decision/SKILL.md +3 -3
  424. package/skills/update/SKILL.md +9 -9
  425. package/skills/using-gdd/SKILL.md +17 -17
  426. package/skills/verify/SKILL.md +13 -13
  427. package/skills/verify/verify-procedure.md +34 -34
  428. package/skills/warm-cache/SKILL.md +8 -8
  429. package/skills/watch-authorities/SKILL.md +9 -9
  430. package/skills/zoom-out/SKILL.md +4 -4
@@ -1,4 +1,4 @@
1
- # Iconography Reference Guide
1
+ # Iconography - Reference Guide
2
2
 
3
3
  Icons are a precise visual language. Every sizing, weight, metaphor, and accessibility decision either reinforces or undermines the system's communicative intent. This reference establishes canonical rules for icon usage across the get-design-done framework.
4
4
 
@@ -6,21 +6,21 @@ Icons are a precise visual language. Every sizing, weight, metaphor, and accessi
6
6
 
7
7
  ## 1. Optical Sizing & Stroke Weight
8
8
 
9
- Icons are not scalable art objects that merely get bigger they are optical instruments tuned to specific viewing contexts. A 16px icon rendered with the same stroke weight as a 32px icon will look fragile and thin at small sizes, because the eye perceives stroke weight relative to the overall icon bounding box.
9
+ Icons are not scalable art objects that merely get bigger - they are optical instruments tuned to specific viewing contexts. A 16px icon rendered with the same stroke weight as a 32px icon will look fragile and thin at small sizes, because the eye perceives stroke weight relative to the overall icon bounding box.
10
10
 
11
11
  **Canonical stroke weights by icon size:**
12
12
 
13
13
  | Icon size | Recommended stroke | Why |
14
14
  |-----------|-------------------|-----|
15
15
  | 16px | 1.5px | At 16px, a 1px stroke disappears on most non-retina displays; 1.5px gives enough mass without filling the internal counter spaces |
16
- | 20px | 1.5–2px | Transition size match the body text weight; if using medium-weight body copy, lean toward 2px |
16
+ | 20px | 1.5–2px | Transition size - match the body text weight; if using medium-weight body copy, lean toward 2px |
17
17
  | 24px | 2px | The most common "default" icon grid. 2px is the industry convention (Lucide, Heroicons, Feather all default here) |
18
18
  | 32px | 2–2.5px | Larger icons need more weight to avoid looking drawn with a fine pen against the heavier surrounding UI |
19
19
  | 48px+ | 2.5–3px | Display-size icons (app icons, hero illustrations) should be optically balanced to read boldly at distance |
20
20
 
21
21
  **Pixel alignment rules:** Icons on an even grid (16px, 24px, 32px) align their strokes to whole pixels. Icons on an odd grid (20px, 28px) should have strokes centered on 0.5px boundaries to avoid sub-pixel blur on non-retina displays. For SVG exports, always set `shape-rendering: crispEdges` on icon wrappers, and center the viewBox exactly on the pixel grid (e.g., `viewBox="0 0 24 24"`, not `"0.5 0.5 23 23"`). A stroke centered on the path boundary will anti-alias; a stroke offset by 0.5px will render sharply.
22
22
 
23
- **See:** [`./composition.md`](./composition.md) §Optical vs. Mathematical Centering for why icon glyphs (chevrons, play triangles, asymmetric arrows) need a small (−1 to −2px) nudge from mathematical center the visual-weight asymmetry of the glyph shifts perceived center away from the geometric centroid.
23
+ **See:** [`./composition.md`](./composition.md) §Optical vs. Mathematical Centering for why icon glyphs (chevrons, play triangles, asymmetric arrows) need a small (−1 to −2px) nudge from mathematical center - the visual-weight asymmetry of the glyph shifts perceived center away from the geometric centroid.
24
24
 
25
25
  ---
26
26
 
@@ -28,7 +28,7 @@ Icons are not scalable art objects that merely get bigger — they are optical i
28
28
 
29
29
  Never mix stroke weights within the same UI surface. Mixing a 1.5px outline icon next to a 2px icon in the same toolbar creates a visual discord that users register as "something feels off" even if they cannot articulate why. The eye calibrates to a baseline weight, and deviations feel like errors.
30
30
 
31
- **The typography matching principle:** Icon weight should correspond to the surrounding text weight. A regular-weight body paragraph (400) pairs with a regular or medium icon (1.5–2px stroke). A bold heading (700) pairs with a bold or filled icon variant. This alignment creates a perception of visual kinship the icon "belongs" to the text alongside it rather than floating in from a different design register.
31
+ **The typography matching principle:** Icon weight should correspond to the surrounding text weight. A regular-weight body paragraph (400) pairs with a regular or medium icon (1.5–2px stroke). A bold heading (700) pairs with a bold or filled icon variant. This alignment creates a perception of visual kinship - the icon "belongs" to the text alongside it rather than floating in from a different design register.
32
32
 
33
33
  **Practical rule:** Choose one icon library per product surface and use it exclusively. If a specific icon is unavailable in your chosen library, draw it using the same stroke grammar rather than importing a single icon from a different library. The visual inconsistency of mixing libraries is nearly always worse than an imperfect icon from the right library.
34
34
 
@@ -36,31 +36,31 @@ Never mix stroke weights within the same UI surface. Mixing a 1.5px outline icon
36
36
 
37
37
  ## 3. Metaphor Taxonomy
38
38
 
39
- Icons communicate meaning through shared cultural metaphors. Understanding the four functional categories prevents category errors using a navigation metaphor for an action, or a status metaphor for wayfinding.
39
+ Icons communicate meaning through shared cultural metaphors. Understanding the four functional categories prevents category errors - using a navigation metaphor for an action, or a status metaphor for wayfinding.
40
40
 
41
41
  ### Functional (Action) Icons
42
42
 
43
- Functional icons represent user-initiated operations: save, delete, copy, filter, sort, upload, download. They answer the question "what can I do here?" Their metaphors must be action-verifiable a user looking at the icon should be able to predict the outcome of clicking it. The floppy disk for "save" is a dead metaphor that persists by convention, not visual logic; prefer more literal representations (cloud-upload for cloud save, checkmark-circle for "mark complete") where the action is unambiguous without cultural baggage.
43
+ Functional icons represent user-initiated operations: save, delete, copy, filter, sort, upload, download. They answer the question "what can I do here?" Their metaphors must be action-verifiable - a user looking at the icon should be able to predict the outcome of clicking it. The floppy disk for "save" is a dead metaphor that persists by convention, not visual logic; prefer more literal representations (cloud-upload for cloud save, checkmark-circle for "mark complete") where the action is unambiguous without cultural baggage.
44
44
 
45
45
  **Recognition test:** Cover the label. Can a first-time user accurately predict what clicking this icon will do? If fewer than 80% of testers answer correctly in usability studies, pair the icon with a text label.
46
46
 
47
47
  ### Status Icons
48
48
 
49
- Status icons communicate system state: success, warning, error, loading, offline, syncing. They answer "what is the system telling me?" Their metaphors are highly convention-bound: green circle-check for success, yellow triangle-exclamation for warning, red circle-X for error. Deviating from these conventions introduces cognitive load users must re-learn your system's visual language rather than drawing on years of software experience.
49
+ Status icons communicate system state: success, warning, error, loading, offline, syncing. They answer "what is the system telling me?" Their metaphors are highly convention-bound: green circle-check for success, yellow triangle-exclamation for warning, red circle-X for error. Deviating from these conventions introduces cognitive load - users must re-learn your system's visual language rather than drawing on years of software experience.
50
50
 
51
- **When to use:** Status icons appear adjacent to data fields, system messages, toast notifications, and form validation. They must never be used as the sole indicator of status for users with color vision deficiency always pair with a distinct shape and a text description.
51
+ **When to use:** Status icons appear adjacent to data fields, system messages, toast notifications, and form validation. They must never be used as the sole indicator of status for users with color vision deficiency - always pair with a distinct shape and a text description.
52
52
 
53
53
  ### Navigation (Wayfinding) Icons
54
54
 
55
- Navigation icons orient users within an information space: home, back, forward, menu, close, external-link, settings. They answer "where am I and how do I move?" Their metaphors are cartographic and gestural arrows indicate direction of travel, the house represents the origin point, the hamburger menu represents a collapsed list.
55
+ Navigation icons orient users within an information space: home, back, forward, menu, close, external-link, settings. They answer "where am I and how do I move?" Their metaphors are cartographic and gestural - arrows indicate direction of travel, the house represents the origin point, the hamburger menu represents a collapsed list.
56
56
 
57
57
  **When to use:** Navigation icons appear in navbars, breadcrumbs, sidebars, and dialog controls. Because wayfinding is critical to task completion, navigation icons should almost always be paired with visible labels until the product has established enough user familiarity to support icon-only navigation (typically after repeated-use screens with power users).
58
58
 
59
59
  ### Brand Icons
60
60
 
61
- Brand icons represent identity: logos, product wordmarks, social platform logos, and payment method marks. They follow the brand owner's guidelines, not the product's icon system. Never apply your system's stroke weight or color palette to third-party brand marks use the official SVG assets. Brand icons communicate "who or what" rather than action, status, or direction.
61
+ Brand icons represent identity: logos, product wordmarks, social platform logos, and payment method marks. They follow the brand owner's guidelines, not the product's icon system. Never apply your system's stroke weight or color palette to third-party brand marks - use the official SVG assets. Brand icons communicate "who or what" rather than action, status, or direction.
62
62
 
63
- **Source: nextlevelbuilder/ui-ux-pro-max-skill (MIT) data/icons.csv**
63
+ **Source: nextlevelbuilder/ui-ux-pro-max-skill (MIT) - data/icons.csv**
64
64
 
65
65
  ---
66
66
 
@@ -90,7 +90,7 @@ A common mistake is inverting an icon library's default black strokes to `#FFFFF
90
90
 
91
91
  ## 5. Icon Animation Guidelines
92
92
 
93
- Animated icons communicate state transitions they are not decorative flourishes. Every animation should signal a specific semantic event: a state change the user caused, a process completing, or feedback confirming an action.
93
+ Animated icons communicate state transitions - they are not decorative flourishes. Every animation should signal a specific semantic event: a state change the user caused, a process completing, or feedback confirming an action.
94
94
 
95
95
  **Morphing between states (cross-fade pattern):**
96
96
 
@@ -117,11 +117,11 @@ When transitioning between two icons (e.g., play → pause, bookmark-outline →
117
117
  }
118
118
  ```
119
119
 
120
- This pattern (scale 0.25→1, opacity 0→1, blur 4→0) creates a "materialization" feel that communicates emergence the new state is coming into existence rather than simply swapping. Duration should be 150–200ms; shorter feels mechanical, longer feels sluggish.
120
+ This pattern (scale 0.25→1, opacity 0→1, blur 4→0) creates a "materialization" feel that communicates emergence - the new state is coming into existence rather than simply swapping. Duration should be 150–200ms; shorter feels mechanical, longer feels sluggish.
121
121
 
122
- **Rotation for loading states:** A continuous 360° rotation at 700–900ms per revolution communicates "waiting for external process." Use `animation-timing-function: linear` easing causes visual pulsing that reads as multiple distinct events rather than a continuous state. The rotation axis must be the center of the icon's bounding box.
122
+ **Rotation for loading states:** A continuous 360° rotation at 700–900ms per revolution communicates "waiting for external process." Use `animation-timing-function: linear` - easing causes visual pulsing that reads as multiple distinct events rather than a continuous state. The rotation axis must be the center of the icon's bounding box.
123
123
 
124
- **Entrance for success states:** A success icon (checkmark, circle-check) should entrance with a brief overshoot scale from 0 to 1.1 then settle to 1.0 over 250–300ms using a spring-like timing function (`cubic-bezier(0.175, 0.885, 0.32, 1.275)`). This micro-bounce communicates "confirmed" rather than merely "appeared."
124
+ **Entrance for success states:** A success icon (checkmark, circle-check) should entrance with a brief overshoot - scale from 0 to 1.1 then settle to 1.0 - over 250–300ms using a spring-like timing function (`cubic-bezier(0.175, 0.885, 0.32, 1.275)`). This micro-bounce communicates "confirmed" rather than merely "appeared."
125
125
 
126
126
  **Respect prefers-reduced-motion:** All icon animations must be disabled or reduced to an instant opacity transition when `@media (prefers-reduced-motion: reduce)` is active.
127
127
 
@@ -140,7 +140,7 @@ The single most common accessibility error in icon implementation is failing to
140
140
  </button>
141
141
  ```
142
142
 
143
- The `aria-label` on the button describes the action. The SVG itself receives `aria-hidden="true"` to prevent screen readers from announcing "svg" or the icon's internal text elements. Never rely on `title` elements within SVG for accessible names in interactive contexts browser support is inconsistent.
143
+ The `aria-label` on the button describes the action. The SVG itself receives `aria-hidden="true"` to prevent screen readers from announcing "svg" or the icon's internal text elements. Never rely on `title` elements within SVG for accessible names in interactive contexts - browser support is inconsistent.
144
144
 
145
145
  **Decorative icons require `aria-hidden="true"`:**
146
146
 
@@ -160,7 +160,7 @@ When visible text already conveys the full meaning, the icon is decorative. Hidi
160
160
 
161
161
  ## 7. Touch Target Pairing
162
162
 
163
- Visual icon size and interactive touch target size are different concerns. A 16px icon is visually appropriate for compact UI contexts, but an interactive area of 16×16px fails accessibility and usability standards fingers are much larger than icons.
163
+ Visual icon size and interactive touch target size are different concerns. A 16px icon is visually appropriate for compact UI contexts, but an interactive area of 16×16px fails accessibility and usability standards - fingers are much larger than icons.
164
164
 
165
165
  **Minimum interactive touch targets:**
166
166
 
@@ -199,19 +199,19 @@ The visual icon remains 20px; the interactive zone expands to 40px. On touch dev
199
199
 
200
200
  ## 8. Public Icon Library Catalog
201
201
 
202
- Choosing an icon library is an architectural decision all icons in a product surface should come from a single library to ensure stroke weight and visual grammar consistency. These are the major open-source libraries with their key characteristics.
202
+ Choosing an icon library is an architectural decision - all icons in a product surface should come from a single library to ensure stroke weight and visual grammar consistency. These are the major open-source libraries with their key characteristics.
203
203
 
204
204
  ### Lucide Icons
205
- Over 1,000 icons under the MIT license. Stroke-based with a consistent 2px stroke weight on a 24px grid. This is the default icon library for shadcn/ui components and has become the de facto standard for React-based design systems. Strong community maintenance with frequent additions. Import individual icons by name to enable tree-shaking: `import { ChevronRight } from 'lucide-react'`. Never import the entire library the barrel export will bloat bundles.
205
+ Over 1,000 icons under the MIT license. Stroke-based with a consistent 2px stroke weight on a 24px grid. This is the default icon library for shadcn/ui components and has become the de facto standard for React-based design systems. Strong community maintenance with frequent additions. Import individual icons by name to enable tree-shaking: `import { ChevronRight } from 'lucide-react'`. Never import the entire library - the barrel export will bloat bundles.
206
206
 
207
207
  ### Phosphor Icons
208
- Available in six weights thin, light, regular, bold, fill, and duotone making it one of the most expressive icon systems available. MIT licensed. Ideal for products where visual hierarchy needs to be communicated through icon weight variation (e.g., active nav item uses bold, inactive uses regular). The duotone variant provides a two-tone fill that works well in marketing and onboarding contexts.
208
+ Available in six weights - thin, light, regular, bold, fill, and duotone - making it one of the most expressive icon systems available. MIT licensed. Ideal for products where visual hierarchy needs to be communicated through icon weight variation (e.g., active nav item uses bold, inactive uses regular). The duotone variant provides a two-tone fill that works well in marketing and onboarding contexts.
209
209
 
210
210
  ### Heroicons
211
- Produced by the Tailwind CSS team. Available in outline and solid variants on a 24px grid. MIT licensed. The outline variant is a 1.5px stroke, which is slightly lighter than Lucide's 2px choose based on whether your typography leans toward light or regular weight. First-class Tailwind integration and React/Vue packages available.
211
+ Produced by the Tailwind CSS team. Available in outline and solid variants on a 24px grid. MIT licensed. The outline variant is a 1.5px stroke, which is slightly lighter than Lucide's 2px - choose based on whether your typography leans toward light or regular weight. First-class Tailwind integration and React/Vue packages available.
212
212
 
213
213
  ### Radix Icons
214
- Designed specifically for the 15px grid rather than the standard 24px grid, making Radix Icons uniquely suited for dense, compact UI contexts form fields, inline badges, data table actions. They pair directly with Radix UI primitives and share the same design philosophy: functional, unobtrusive, and predictable. MIT licensed.
214
+ Designed specifically for the 15px grid rather than the standard 24px grid, making Radix Icons uniquely suited for dense, compact UI contexts - form fields, inline badges, data table actions. They pair directly with Radix UI primitives and share the same design philosophy: functional, unobtrusive, and predictable. MIT licensed.
215
215
 
216
216
  ### Tabler Icons
217
217
  Over 3,000 icons with a consistent 2px stroke on a 24px grid. The largest coherent stroke-based icon set available. MIT licensed. Excellent for applications requiring coverage of unusual domains (medical, scientific, geographic) that other libraries do not address. Actively maintained with SVG optimization.
@@ -223,7 +223,7 @@ Clean, minimal line icons on a 24px grid. MIT licensed. Characterized by a sligh
223
223
  Open-source with filled and line variants in each icon, organized into semantic categories (system, business, media, communication, etc.). The parallel line/filled pairing makes it straightforward to communicate active vs. inactive states without switching libraries.
224
224
 
225
225
  ### SF Symbols
226
- Apple's system-native icon library, available exclusively on Apple platforms (iOS, macOS, watchOS, visionOS). Variable weights that match the San Francisco typeface when the user adjusts text size or boldness in system settings, SF Symbols adjust proportionally. Not available for web or Android; use only in native Swift/SwiftUI or UIKit contexts. Access via `Image(systemName:)` in SwiftUI.
226
+ Apple's system-native icon library, available exclusively on Apple platforms (iOS, macOS, watchOS, visionOS). Variable weights that match the San Francisco typeface - when the user adjusts text size or boldness in system settings, SF Symbols adjust proportionally. Not available for web or Android; use only in native Swift/SwiftUI or UIKit contexts. Access via `Image(systemName:)` in SwiftUI.
227
227
 
228
228
  ### Feather
229
229
  A minimal, classic icon set with 287 icons on a 24px grid at a 2px stroke. MIT licensed. Feather is older than many alternatives on this list and receives fewer updates, but its visual grammar is exceptionally clean and it remains a reliable choice for products that prioritize restraint. The limited catalog means it works best for simple, focused applications rather than complex dashboards.
@@ -18,14 +18,14 @@ Practical reference for responsive images, modern formats, loading strategies, a
18
18
  | **JPEG XL** | Limited (Chrome 91–109 behind flag; Safari 17+) | 20–60% smaller | Medium | Yes | No | Future-proofing; not yet viable as primary format |
19
19
  | **PNG** | Universal (100%) | Lossless only | Fast | Yes | No | Logos, UI icons needing lossless or transparency |
20
20
  | **SVG** | Universal (100%) | Vector = tiny | N/A | Yes | Yes | Icons, logos, illustrations with clean paths |
21
- | **GIF** | Universal (100%) | Poor | Fast | 1-bit | Yes | Avoid use WebP or video instead |
21
+ | **GIF** | Universal (100%) | Poor | Fast | 1-bit | Yes | Avoid - use WebP or video instead |
22
22
 
23
23
  ### Decision Rules
24
24
 
25
25
  - **Default for photos**: serve AVIF with WebP fallback, JPEG last resort.
26
26
  - **Default for UI assets with transparency**: WebP with PNG fallback.
27
27
  - **Icons/logos**: SVG always; PNG fallback only for email.
28
- - **Animated content**: WebP animated or `<video autoplay muted loop>` never GIF.
28
+ - **Animated content**: WebP animated or `<video autoplay muted loop>` - never GIF.
29
29
  - **JPEG XL**: Do not use as primary format until Safari + Chrome stable support lands.
30
30
 
31
31
  ```html
@@ -90,12 +90,12 @@ Example: image renders at 480px on mobile at 2x DPR → need a 960px source →
90
90
  ```
91
91
 
92
92
  Breakpoint widths to always generate sources for:
93
- - `480w` small mobile
94
- - `768w` large mobile / portrait tablet
95
- - `960w` landscape tablet / small desktop
96
- - `1280w` standard desktop
97
- - `1920w` full HD desktop
98
- - `2560w` retina desktop / 2x of 1280
93
+ - `480w` - small mobile
94
+ - `768w` - large mobile / portrait tablet
95
+ - `960w` - landscape tablet / small desktop
96
+ - `1280w` - standard desktop
97
+ - `1920w` - full HD desktop
98
+ - `2560w` - retina desktop / 2x of 1280
99
99
 
100
100
  ### Density Descriptors (x descriptors)
101
101
 
@@ -118,7 +118,7 @@ Use `x` descriptors only when the image always renders at a fixed CSS size (e.g.
118
118
 
119
119
  ## 3. Responsive Art Direction
120
120
 
121
- Art direction changes the image content (crop, composition, subject) at different viewport sizes not just resolution. Use `<picture>` with `media` attributes.
121
+ Art direction changes the image content (crop, composition, subject) at different viewport sizes - not just resolution. Use `<picture>` with `media` attributes.
122
122
 
123
123
  ### `<picture>` + `<source>` Pattern
124
124
 
@@ -164,7 +164,7 @@ Art direction changes the image content (crop, composition, subject) at differen
164
164
 
165
165
  1. `<source>` elements are evaluated top-to-bottom; first match wins.
166
166
  2. Place mobile/narrow sources first when using `max-width` media queries.
167
- 3. Always end with a plain `<img>` it is the fallback AND the element browsers use for accessibility attributes.
167
+ 3. Always end with a plain `<img>` - it is the fallback AND the element browsers use for accessibility attributes.
168
168
  4. The `type` attribute on `<source>` enables format negotiation without JS.
169
169
 
170
170
  ### Combining Art Direction + Format Negotiation
@@ -294,7 +294,7 @@ Native browser lazy loading. Defers fetching images outside the viewport.
294
294
  <img src="photo.jpg" alt="Gallery item" loading="lazy" width="800" height="600">
295
295
  ```
296
296
 
297
- **Critical rule**: Never apply `loading="lazy"` to the LCP (Largest Contentful Paint) image. The LCP image must be fetched immediately. Identify it as the largest above-the-fold image hero, product shot, or article lead image.
297
+ **Critical rule**: Never apply `loading="lazy"` to the LCP (Largest Contentful Paint) image. The LCP image must be fetched immediately. Identify it as the largest above-the-fold image - hero, product shot, or article lead image.
298
298
 
299
299
  ### Intersection Observer Pattern
300
300
 
@@ -336,7 +336,7 @@ lazyImages.forEach(img => observer.observe(img));
336
336
  ### Lazy Loading Rules Summary
337
337
 
338
338
  - `loading="lazy"` on all below-the-fold images.
339
- - Never on LCP image use `fetchpriority="high"` instead.
339
+ - Never on LCP image - use `fetchpriority="high"` instead.
340
340
  - Set explicit `width` and `height` on every `<img>` to prevent layout shift (CLS).
341
341
  - `rootMargin: '200px'` is a safe default for IntersectionObserver to preload slightly early.
342
342
 
@@ -355,7 +355,7 @@ lazyImages.forEach(img => observer.observe(img));
355
355
  ### When to Apply
356
356
 
357
357
  - Apply to all large images that are not LCP-critical.
358
- - **Do not** apply to the LCP image synchronous decoding ensures the image renders as soon as it loads, which improves LCP score.
358
+ - **Do not** apply to the LCP image - synchronous decoding ensures the image renders as soon as it loads, which improves LCP score.
359
359
  - Combine with `loading="lazy"` on below-the-fold images.
360
360
 
361
361
  ```html
@@ -402,7 +402,7 @@ lazyImages.forEach(img => observer.observe(img));
402
402
 
403
403
  ### Rules
404
404
 
405
- - Apply to **exactly one** image per page the LCP candidate.
405
+ - Apply to **exactly one** image per page - the LCP candidate.
406
406
  - Do not use on multiple images; it degrades priority scheduling.
407
407
  - Use `fetchpriority="low"` on decorative or off-screen images you know will not be needed soon.
408
408
  - Works on `<img>`, `<link rel="preload">`, and `fetch()` calls.
@@ -1,6 +1,6 @@
1
1
  # Information Architecture
2
2
 
3
- Information architecture (IA) is the structural design of shared information environments. In practice, it answers three questions for every user at every moment: Where am I? Where can I go? What will I find there? Poor IA is invisible to designers because they already know the answers it becomes visible only when users get lost, give up, or call support. The sections below cover navigation patterns, depth rules, research methods, wayfinding signals, and the IA decisions embedded in URLs and search.
3
+ Information architecture (IA) is the structural design of shared information environments. In practice, it answers three questions for every user at every moment: Where am I? Where can I go? What will I find there? Poor IA is invisible to designers because they already know the answers - it becomes visible only when users get lost, give up, or call support. The sections below cover navigation patterns, depth rules, research methods, wayfinding signals, and the IA decisions embedded in URLs and search.
4
4
 
5
5
  ---
6
6
 
@@ -10,73 +10,73 @@ No single navigation pattern fits all products. The right choice depends on cont
10
10
 
11
11
  ### Hub-and-Spoke
12
12
 
13
- **Definition:** A central home or dashboard acts as the hub; users travel outward to destination screens and return to the hub to begin the next task. There is no direct path between spokes every journey passes through the center.
13
+ **Definition:** A central home or dashboard acts as the hub; users travel outward to destination screens and return to the hub to begin the next task. There is no direct path between spokes - every journey passes through the center.
14
14
 
15
- **When to use:** Hub-and-spoke is correct for mobile applications where tasks are discrete and sequential banking apps, food delivery, ride-hailing, onboarding flows, and multi-step transaction flows all fit this model. It is also appropriate when users complete one task at a time and context from one task does not carry over to another.
15
+ **When to use:** Hub-and-spoke is correct for mobile applications where tasks are discrete and sequential - banking apps, food delivery, ride-hailing, onboarding flows, and multi-step transaction flows all fit this model. It is also appropriate when users complete one task at a time and context from one task does not carry over to another.
16
16
 
17
- **When NOT to use:** Do not use hub-and-spoke when users need to cross-reference content across destinations, move fluidly between sections, or maintain spatial awareness of a larger content body. A CMS, a design tool, or an analytics dashboard all require users to hold multiple contexts simultaneously forcing every transition through a hub creates unnecessary friction.
17
+ **When NOT to use:** Do not use hub-and-spoke when users need to cross-reference content across destinations, move fluidly between sections, or maintain spatial awareness of a larger content body. A CMS, a design tool, or an analytics dashboard all require users to hold multiple contexts simultaneously - forcing every transition through a hub creates unnecessary friction.
18
18
 
19
- **Common mistakes:** Adding too many spokes to the hub turns the dashboard into an unnavigable index. More than seven to nine top-level destinations on the hub signals that the IA needs a different model, not more spokes. A second mistake is designing spokes that are so isolated they cannot share context users who need to compare information from two spokes are forced into a hub-and-spoke-and-hub-and-spoke sequence that creates unnecessary cognitive overhead.
19
+ **Common mistakes:** Adding too many spokes to the hub turns the dashboard into an unnavigable index. More than seven to nine top-level destinations on the hub signals that the IA needs a different model, not more spokes. A second mistake is designing spokes that are so isolated they cannot share context - users who need to compare information from two spokes are forced into a hub-and-spoke-and-hub-and-spoke sequence that creates unnecessary cognitive overhead.
20
20
 
21
21
  ---
22
22
 
23
23
  ### Nested (Hierarchical)
24
24
 
25
- **Definition:** Content is organized as a tree: parent categories contain child categories, which contain grandchild items. Navigation moves explicitly from broader to narrower drilling down to reach specific content.
25
+ **Definition:** Content is organized as a tree: parent categories contain child categories, which contain grandchild items. Navigation moves explicitly from broader to narrower - drilling down to reach specific content.
26
26
 
27
- **When to use:** Nested navigation suits content that is genuinely taxonomic file explorers, e-commerce category trees, documentation sites with chapters and sub-chapters, and administrative settings panels. The model works when the hierarchy reflects real-world mental models that users arrive with. A user who already knows they want "Electronics → Laptops → 15-inch" will find nested navigation fast and satisfying.
27
+ **When to use:** Nested navigation suits content that is genuinely taxonomic - file explorers, e-commerce category trees, documentation sites with chapters and sub-chapters, and administrative settings panels. The model works when the hierarchy reflects real-world mental models that users arrive with. A user who already knows they want "Electronics → Laptops → 15-inch" will find nested navigation fast and satisfying.
28
28
 
29
- **When NOT to use:** Do not use nested navigation when items belong to more than one parent category, when users lack a pre-formed mental model of the hierarchy, or when the tree depth exceeds four levels. Nested navigation also breaks down when the category labels are ambiguous users cannot commit to a branch when they are uncertain which branch contains their target.
29
+ **When NOT to use:** Do not use nested navigation when items belong to more than one parent category, when users lack a pre-formed mental model of the hierarchy, or when the tree depth exceeds four levels. Nested navigation also breaks down when the category labels are ambiguous - users cannot commit to a branch when they are uncertain which branch contains their target.
30
30
 
31
- **Common mistakes:** The most damaging mistake is designing a hierarchy that reflects the organization's internal structure rather than the user's mental model. An insurance company's product hierarchy follows business lines; a customer's mental model follows life events ("I'm buying a car," "I'm having a baby"). These rarely align without deliberate IA research. A second mistake is creating leaf nodes that are too shallow a category containing only two or three items signals that the hierarchy was over-specified and should be collapsed upward.
31
+ **Common mistakes:** The most damaging mistake is designing a hierarchy that reflects the organization's internal structure rather than the user's mental model. An insurance company's product hierarchy follows business lines; a customer's mental model follows life events ("I'm buying a car," "I'm having a baby"). These rarely align without deliberate IA research. A second mistake is creating leaf nodes that are too shallow - a category containing only two or three items signals that the hierarchy was over-specified and should be collapsed upward.
32
32
 
33
33
  ---
34
34
 
35
35
  ### Faceted
36
36
 
37
- **Definition:** Content is filtered through multiple parallel, independent attributes simultaneously. Users narrow a result set by selecting values across dimensions price range, color, brand, rating without committing to a single hierarchical path.
37
+ **Definition:** Content is filtered through multiple parallel, independent attributes simultaneously. Users narrow a result set by selecting values across dimensions - price range, color, brand, rating - without committing to a single hierarchical path.
38
38
 
39
- **When to use:** Faceted navigation is correct for large, multi-attribute content sets where users approach from different starting points. Product catalogs, job boards, property listings, academic literature search, and any context where users have heterogeneous filtering priorities all benefit from faceted navigation. It respects the fact that different users weight attributes differently one shopper leads with price, another with brand, another with availability.
39
+ **When to use:** Faceted navigation is correct for large, multi-attribute content sets where users approach from different starting points. Product catalogs, job boards, property listings, academic literature search, and any context where users have heterogeneous filtering priorities all benefit from faceted navigation. It respects the fact that different users weight attributes differently - one shopper leads with price, another with brand, another with availability.
40
40
 
41
- **When NOT to use:** Do not apply faceted navigation to small content sets (fewer than ~50 items), to content where attributes are not independent of each other, or to contexts where discovery is the primary goal. A curated editorial experience should not be faceted it should be sequenced. Faceted navigation also fails when the attribute vocabulary is opaque to users: if users do not understand what a facet means, they cannot use it to filter.
41
+ **When NOT to use:** Do not apply faceted navigation to small content sets (fewer than ~50 items), to content where attributes are not independent of each other, or to contexts where discovery is the primary goal. A curated editorial experience should not be faceted - it should be sequenced. Faceted navigation also fails when the attribute vocabulary is opaque to users: if users do not understand what a facet means, they cannot use it to filter.
42
42
 
43
- **Common mistakes:** Showing too many facets at once overwhelms users and buries the most useful filters beneath low-value ones. The correct approach is to surface the three to five highest-signal facets and hide the rest behind progressive disclosure. A second mistake is allowing facet combinations that produce zero results without feedback a user who selects three facets and sees an empty state has been failed by the system, which should prevent impossible combinations or warn before they occur.
43
+ **Common mistakes:** Showing too many facets at once overwhelms users and buries the most useful filters beneath low-value ones. The correct approach is to surface the three to five highest-signal facets and hide the rest behind progressive disclosure. A second mistake is allowing facet combinations that produce zero results without feedback - a user who selects three facets and sees an empty state has been failed by the system, which should prevent impossible combinations or warn before they occur.
44
44
 
45
45
  ---
46
46
 
47
47
  ### Flat (Same-Level)
48
48
 
49
- **Definition:** All content lives at a single depth. There are no parent-child relationships every item is a peer. Navigation means moving laterally across a collection rather than drilling down into it.
49
+ **Definition:** All content lives at a single depth. There are no parent-child relationships - every item is a peer. Navigation means moving laterally across a collection rather than drilling down into it.
50
50
 
51
- **When to use:** Flat navigation is correct for streams, feeds, and timelines social media feeds, notification inboxes, activity logs, and news aggregators. It is also appropriate for small, finite content sets where every item is equally accessible and no meaningful taxonomy exists. A settings panel with twelve options can be flat; a settings panel with sixty options cannot.
51
+ **When to use:** Flat navigation is correct for streams, feeds, and timelines - social media feeds, notification inboxes, activity logs, and news aggregators. It is also appropriate for small, finite content sets where every item is equally accessible and no meaningful taxonomy exists. A settings panel with twelve options can be flat; a settings panel with sixty options cannot.
52
52
 
53
- **When NOT to use:** Do not use flat navigation for large content sets. A flat structure with more than thirty to forty items becomes a scroll-based search problem, not a navigation problem. Flat navigation also fails when items have meaningful relationships that should be surfaced if items cluster into natural groups, those groups should be represented in the structure.
53
+ **When NOT to use:** Do not use flat navigation for large content sets. A flat structure with more than thirty to forty items becomes a scroll-based search problem, not a navigation problem. Flat navigation also fails when items have meaningful relationships that should be surfaced - if items cluster into natural groups, those groups should be represented in the structure.
54
54
 
55
- **Common mistakes:** Treating flat navigation as the absence of IA rather than a deliberate structural choice. Flat does not mean unorganized items in a flat structure still need to be sequenced, grouped visually, or sorted in a way that supports the user's task. A flat feed with no sorting or grouping is a list of equal noise.
55
+ **Common mistakes:** Treating flat navigation as the absence of IA rather than a deliberate structural choice. Flat does not mean unorganized - items in a flat structure still need to be sequenced, grouped visually, or sorted in a way that supports the user's task. A flat feed with no sorting or grouping is a list of equal noise.
56
56
 
57
57
  ---
58
58
 
59
59
  ### Mega-Menu
60
60
 
61
- **Definition:** A persistent top navigation bar expands on hover or click to reveal a large, structured panel often with multiple columns, category headers, images, and links without navigating away from the current page.
61
+ **Definition:** A persistent top navigation bar expands on hover or click to reveal a large, structured panel - often with multiple columns, category headers, images, and links - without navigating away from the current page.
62
62
 
63
63
  **When to use:** Mega-menus are correct for large e-commerce sites, enterprise software with many feature areas, and any product where users need to move between dozens of top-level destinations without losing their current context. They are effective when the content taxonomy is stable, well-understood by users, and dense enough that a standard dropdown would require three or more levels of nesting.
64
64
 
65
- **When NOT to use:** Do not use a mega-menu for products with fewer than eight to ten top-level destinations a standard nav bar or sidebar handles this more cleanly. Mega-menus are also wrong for mobile-first products, where the interaction model (hover) does not translate to touch and the screen real estate does not accommodate wide panels.
65
+ **When NOT to use:** Do not use a mega-menu for products with fewer than eight to ten top-level destinations - a standard nav bar or sidebar handles this more cleanly. Mega-menus are also wrong for mobile-first products, where the interaction model (hover) does not translate to touch and the screen real estate does not accommodate wide panels.
66
66
 
67
- **Common mistakes:** Hover-triggered mega-menus introduce a Fitts's Law problem users must move the pointer from the trigger to the panel without accidentally leaving the hover zone, which closes the menu. The fix is a diagonal tolerance zone (mouse movement toward the panel keeps the menu open) or switching to click-triggered behavior. A second mistake is including too many items without meaningful grouping a mega-menu with sixty links in a single undifferentiated column is not better than a standard dropdown; it is worse.
67
+ **Common mistakes:** Hover-triggered mega-menus introduce a Fitts's Law problem - users must move the pointer from the trigger to the panel without accidentally leaving the hover zone, which closes the menu. The fix is a diagonal tolerance zone (mouse movement toward the panel keeps the menu open) or switching to click-triggered behavior. A second mistake is including too many items without meaningful grouping - a mega-menu with sixty links in a single undifferentiated column is not better than a standard dropdown; it is worse.
68
68
 
69
69
  ---
70
70
 
71
71
  ### Command Palette (Cmd+K)
72
72
 
73
- **Definition:** A modal search-and-command interface, triggered by a keyboard shortcut, that allows users to navigate to any destination, trigger any action, or run any command by typing a query without using the visible navigation at all.
73
+ **Definition:** A modal search-and-command interface, triggered by a keyboard shortcut, that allows users to navigate to any destination, trigger any action, or run any command by typing a query - without using the visible navigation at all.
74
74
 
75
- **When to use:** Command palettes are correct for developer tools, design applications, text editors, and any product where a significant portion of users are power users who build muscle memory for frequent actions. They are additive, not primary they exist alongside conventional navigation and accelerate users who have internalized the product's vocabulary.
75
+ **When to use:** Command palettes are correct for developer tools, design applications, text editors, and any product where a significant portion of users are power users who build muscle memory for frequent actions. They are additive, not primary - they exist alongside conventional navigation and accelerate users who have internalized the product's vocabulary.
76
76
 
77
- **When NOT to use:** Do not treat a command palette as a substitute for coherent navigation. A command palette cannot help a user who does not know what to ask for it is a speed tool for users who already know the destination, not a discovery tool for users who do not. It is also inappropriate as a primary navigation mechanism in consumer products where most users are occasional visitors.
77
+ **When NOT to use:** Do not treat a command palette as a substitute for coherent navigation. A command palette cannot help a user who does not know what to ask for - it is a speed tool for users who already know the destination, not a discovery tool for users who do not. It is also inappropriate as a primary navigation mechanism in consumer products where most users are occasional visitors.
78
78
 
79
- **Common mistakes:** Omitting fuzzy matching forces users to type exact command names, which punishes imperfect recall. The palette should match partial strings and surface close alternatives. A second mistake is limiting the palette to navigation links and excluding commands the value of a command palette compounds when it surfaces actions (create new file, assign to user, publish draft) that would otherwise require three or four clicks through modal interfaces.
79
+ **Common mistakes:** Omitting fuzzy matching forces users to type exact command names, which punishes imperfect recall. The palette should match partial strings and surface close alternatives. A second mistake is limiting the palette to navigation links and excluding commands - the value of a command palette compounds when it surfaces actions (create new file, assign to user, publish draft) that would otherwise require three or four clicks through modal interfaces.
80
80
 
81
81
  ---
82
82
 
@@ -84,7 +84,7 @@ No single navigation pattern fits all products. The right choice depends on cont
84
84
 
85
85
  ### The 3-Click Rule Debunked
86
86
 
87
- The "3-click rule" the folk wisdom that users should reach any content within three clicks or they will abandon the site has been tested empirically and found to be false. Research by Joshua Porter (2003) showed no significant increase in task abandonment at three clicks compared to twelve clicks, provided that each click felt like progress. Users tolerate many clicks when they trust that each click is moving them toward their goal. They abandon quickly when a single click feels uncertain or misdirected. The implication is that click count is the wrong metric; navigational confidence is the right one.
87
+ The "3-click rule" - the folk wisdom that users should reach any content within three clicks or they will abandon the site - has been tested empirically and found to be false. Research by Joshua Porter (2003) showed no significant increase in task abandonment at three clicks compared to twelve clicks, provided that each click felt like progress. Users tolerate many clicks when they trust that each click is moving them toward their goal. They abandon quickly when a single click feels uncertain or misdirected. The implication is that click count is the wrong metric; navigational confidence is the right one.
88
88
 
89
89
  ### Scent-of-Information
90
90
 
@@ -103,7 +103,7 @@ Research on spatial disorientation in hierarchical navigation consistently finds
103
103
 
104
104
  ### Wide vs. Deep
105
105
 
106
- When the content volume forces a choice between a wide structure (many items per level, fewer levels) and a deep structure (fewer items per level, more levels), prefer wide. Seven options across two levels gives the user a manageable decision at each step they scan seven options, make a choice, scan seven options again. Three options across four levels forces four sequential decisions with three options each, compounding uncertainty at every step. The combinatorial clarity of a wide structure is almost always easier to navigate than the sequential uncertainty of a deep one.
106
+ When the content volume forces a choice between a wide structure (many items per level, fewer levels) and a deep structure (fewer items per level, more levels), prefer wide. Seven options across two levels gives the user a manageable decision at each step - they scan seven options, make a choice, scan seven options again. Three options across four levels forces four sequential decisions with three options each, compounding uncertainty at every step. The combinatorial clarity of a wide structure is almost always easier to navigate than the sequential uncertainty of a deep one.
107
107
 
108
108
  ---
109
109
 
@@ -113,7 +113,7 @@ Card sorting is a generative research method that reveals users' mental models f
113
113
 
114
114
  ### Open Card Sort
115
115
 
116
- In an open card sort, participants are given cards labeled with content items and asked to group the cards however makes sense to them, then name each group. The designer provides no predefined categories. The output is a collection of emergent groupings and participant-generated labels. Analysis identifies clusters items that multiple participants placed together and the vocabulary participants used to name those clusters. Open card sorts are the right method when the IA is being designed from scratch or when there is genuine uncertainty about how users conceptualize the content domain.
116
+ In an open card sort, participants are given cards labeled with content items and asked to group the cards however makes sense to them, then name each group. The designer provides no predefined categories. The output is a collection of emergent groupings and participant-generated labels. Analysis identifies clusters - items that multiple participants placed together - and the vocabulary participants used to name those clusters. Open card sorts are the right method when the IA is being designed from scratch or when there is genuine uncertainty about how users conceptualize the content domain.
117
117
 
118
118
  ### Closed Card Sort
119
119
 
@@ -121,17 +121,17 @@ In a closed card sort, participants sort cards into predefined categories chosen
121
121
 
122
122
  ### Hybrid Card Sort
123
123
 
124
- In a hybrid card sort, participants sort into predefined categories but may also create new categories when existing ones do not fit. This balances validation (closed) with discovery (open). Hybrid sorts are best for early-stage IA validation when the designer has a candidate structure but wants to discover blind spots items that users persistently refuse to place in the predefined categories signal that the taxonomy is missing a meaningful grouping.
124
+ In a hybrid card sort, participants sort into predefined categories but may also create new categories when existing ones do not fit. This balances validation (closed) with discovery (open). Hybrid sorts are best for early-stage IA validation when the designer has a candidate structure but wants to discover blind spots - items that users persistently refuse to place in the predefined categories signal that the taxonomy is missing a meaningful grouping.
125
125
 
126
126
  ### Reading a Dendrogram
127
127
 
128
- Card sort analysis tools generate a dendrogram a tree diagram showing how often items were placed together across participants. Items that cluster at the top of the dendrogram (joined early, with high similarity scores) belong together in the navigation; items that cluster late (joined only because everything must eventually merge) are weakly associated. Items that appear in multiple clusters across different participants are IA ambiguities: users genuinely disagree about where they belong, which signals that the item's label or scope is unclear. Ambiguous items require either better labeling, placement in multiple locations, or redesign of the item's concept before the IA can be finalized.
128
+ Card sort analysis tools generate a dendrogram - a tree diagram showing how often items were placed together across participants. Items that cluster at the top of the dendrogram (joined early, with high similarity scores) belong together in the navigation; items that cluster late (joined only because everything must eventually merge) are weakly associated. Items that appear in multiple clusters across different participants are IA ambiguities: users genuinely disagree about where they belong, which signals that the item's label or scope is unclear. Ambiguous items require either better labeling, placement in multiple locations, or redesign of the item's concept before the IA can be finalized.
129
129
 
130
130
  ---
131
131
 
132
132
  ## 4. Tree Testing
133
133
 
134
- Tree testing validates an IA structure by presenting users with the navigation tree text only, no visual design and asking them to find specific items. Because there is no visual design to influence behavior, tree testing isolates the IA's structural clarity from its visual presentation.
134
+ Tree testing validates an IA structure by presenting users with the navigation tree - text only, no visual design - and asking them to find specific items. Because there is no visual design to influence behavior, tree testing isolates the IA's structural clarity from its visual presentation.
135
135
 
136
136
  ### Success Rate
137
137
 
@@ -143,37 +143,37 @@ Success rate measures the percentage of participants who found the correct item.
143
143
  | 60–75% | Acceptable; improve labeling before launch |
144
144
  | <60% | Structural problem; restructure required |
145
145
 
146
- A success rate below 60% is not a labeling problem it is a structure problem. Improving labels on a fundamentally wrong structure will raise the score modestly but will not fix the underlying mismatch between the IA and users' mental models.
146
+ A success rate below 60% is not a labeling problem - it is a structure problem. Improving labels on a fundamentally wrong structure will raise the score modestly but will not fix the underlying mismatch between the IA and users' mental models.
147
147
 
148
148
  ### Directness
149
149
 
150
- Directness measures what percentage of users navigated directly to the correct branch without backtracking. A high success rate with low directness reveals a specific failure mode: users eventually found the item, but only after exploring wrong branches first. This pattern indicates that labels are misleading even when the structure is correct users are being drawn to the wrong branch by a label that implies the target content, then redirected. Low directness is a reliable signal that high-scent labels on incorrect branches are competing with the correct destination.
150
+ Directness measures what percentage of users navigated directly to the correct branch without backtracking. A high success rate with low directness reveals a specific failure mode: users eventually found the item, but only after exploring wrong branches first. This pattern indicates that labels are misleading even when the structure is correct - users are being drawn to the wrong branch by a label that implies the target content, then redirected. Low directness is a reliable signal that high-scent labels on incorrect branches are competing with the correct destination.
151
151
 
152
152
  ### Time-on-Task
153
153
 
154
- Time-on-task compares user navigation time against an expert baseline. An expert who knows the structure performs the task to establish a reference time. Users who take more than twice the expert time are experiencing significant navigational friction they are backtracking, hesitating at ambiguous labels, or exploring dead ends before finding the correct path. Time-on-task above 2× the expert baseline should trigger qualitative follow-up to understand where users are stalling.
154
+ Time-on-task compares user navigation time against an expert baseline. An expert who knows the structure performs the task to establish a reference time. Users who take more than twice the expert time are experiencing significant navigational friction - they are backtracking, hesitating at ambiguous labels, or exploring dead ends before finding the correct path. Time-on-task above 2× the expert baseline should trigger qualitative follow-up to understand where users are stalling.
155
155
 
156
156
  ---
157
157
 
158
158
  ## 5. Wayfinding
159
159
 
160
- Wayfinding is the set of signals that answer the user's question "where am I?" at every point in the product. Users need orientation cues at every level of the hierarchy without them, the product feels like a maze even when the structure is correct.
160
+ Wayfinding is the set of signals that answer the user's question "where am I?" at every point in the product. Users need orientation cues at every level of the hierarchy - without them, the product feels like a maze even when the structure is correct.
161
161
 
162
162
  ### Breadcrumbs
163
163
 
164
- Breadcrumbs are mandatory at navigation depth three and above. They provide both a location signal (you are here) and an escape route (return to a higher level without using the back button). Implementation requires two accessibility attributes: `aria-label="Breadcrumb"` on the containing `<nav>` element, and `aria-current="page"` on the final item in the trail. Breadcrumbs should reflect the IA hierarchy, not the user's click history they are a map, not a path trace. Do not use breadcrumbs at depth one or two; they add visual noise without navigational value at shallow depths.
164
+ Breadcrumbs are mandatory at navigation depth three and above. They provide both a location signal (you are here) and an escape route (return to a higher level without using the back button). Implementation requires two accessibility attributes: `aria-label="Breadcrumb"` on the containing `<nav>` element, and `aria-current="page"` on the final item in the trail. Breadcrumbs should reflect the IA hierarchy, not the user's click history - they are a map, not a path trace. Do not use breadcrumbs at depth one or two; they add visual noise without navigational value at shallow depths.
165
165
 
166
166
  ### Progress Indicators
167
167
 
168
- Progress indicators serve wayfinding in multi-step flows by answering "how far along am I and how much remains?" They should communicate the total number of steps upfront users make commitment decisions based on total cost, and hiding the endpoint is a dark pattern that erodes trust when the true length is revealed. Never add steps to a flow mid-sequence after the user has begun; if the flow must branch, show the branch as a conditional path rather than as a surprise extension. The visual treatment should distinguish completed steps, the current step, and remaining steps active state alone is insufficient.
168
+ Progress indicators serve wayfinding in multi-step flows by answering "how far along am I and how much remains?" They should communicate the total number of steps upfront - users make commitment decisions based on total cost, and hiding the endpoint is a dark pattern that erodes trust when the true length is revealed. Never add steps to a flow mid-sequence after the user has begun; if the flow must branch, show the branch as a conditional path rather than as a surprise extension. The visual treatment should distinguish completed steps, the current step, and remaining steps - active state alone is insufficient.
169
169
 
170
170
  ### Orientation Cues
171
171
 
172
- Every screen needs at least three orientation signals: the active state in the navigation (which section is selected), the page title (what this page is called), and section headings within the content (how this page is organized). These signals work together to maintain the user's spatial model of the product. When any of the three is missing, users compensate by re-reading navigation labels or scrolling back to the top both are friction that well-designed orientation cues eliminate.
172
+ Every screen needs at least three orientation signals: the active state in the navigation (which section is selected), the page title (what this page is called), and section headings within the content (how this page is organized). These signals work together to maintain the user's spatial model of the product. When any of the three is missing, users compensate by re-reading navigation labels or scrolling back to the top - both are friction that well-designed orientation cues eliminate.
173
173
 
174
174
  ### Back-Button Contract
175
175
 
176
- The browser back button carries a strong user expectation: pressing it returns to the previous logical state. This contract is violated whenever back navigates to an unexpected location, triggers a data loss warning, or causes a full page reload that discards scroll position or filled form data. Single-page applications must manage browser history explicitly to honor this contract pushState for new views, replaceState for filter changes that should not create new history entries. A back-button that shows a "you will lose your changes" modal is almost always a sign that the state management design is wrong, not that users should save more often.
176
+ The browser back button carries a strong user expectation: pressing it returns to the previous logical state. This contract is violated whenever back navigates to an unexpected location, triggers a data loss warning, or causes a full page reload that discards scroll position or filled form data. Single-page applications must manage browser history explicitly to honor this contract - pushState for new views, replaceState for filter changes that should not create new history entries. A back-button that shows a "you will lose your changes" modal is almost always a sign that the state management design is wrong, not that users should save more often.
177
177
 
178
178
  ---
179
179
 
@@ -181,15 +181,15 @@ The browser back button carries a strong user expectation: pressing it returns t
181
181
 
182
182
  ### URL Structure Reflects IA
183
183
 
184
- The URL is the IA made visible. A well-structured URL encodes the user's location in the hierarchy and gives users a mental model of the content space before the page loads. `/products/electronics/laptops/macbook-pro` communicates four levels of IA at a glance; a user who reads that URL understands where they are, what the parent categories are, and can predict what they will find by truncating the path. URLs should be designed in parallel with the IA structure, not retrofitted afterward mismatches between the URL structure and the navigation structure create disorientation.
184
+ The URL is the IA made visible. A well-structured URL encodes the user's location in the hierarchy and gives users a mental model of the content space before the page loads. `/products/electronics/laptops/macbook-pro` communicates four levels of IA at a glance; a user who reads that URL understands where they are, what the parent categories are, and can predict what they will find by truncating the path. URLs should be designed in parallel with the IA structure, not retrofitted afterward - mismatches between the URL structure and the navigation structure create disorientation.
185
185
 
186
186
  ### Canonical URLs
187
187
 
188
- Every content page should have exactly one canonical URL. Parameter proliferation multiple URL forms that all resolve to the same content fragments link equity, confuses users who share URLs, and makes it impossible to use the URL as an orientation tool. Filter and sort parameters in primary navigation (category pages, search results) should use clean path segments or a minimal, consistent parameter scheme. Session tokens, tracking parameters, and internal state identifiers should not appear in canonical URLs. The `<link rel="canonical">` tag is a fallback for URL normalization, not a substitute for URL discipline.
188
+ Every content page should have exactly one canonical URL. Parameter proliferation - multiple URL forms that all resolve to the same content - fragments link equity, confuses users who share URLs, and makes it impossible to use the URL as an orientation tool. Filter and sort parameters in primary navigation (category pages, search results) should use clean path segments or a minimal, consistent parameter scheme. Session tokens, tracking parameters, and internal state identifiers should not appear in canonical URLs. The `<link rel="canonical">` tag is a fallback for URL normalization, not a substitute for URL discipline.
189
189
 
190
190
  ### Semantic Slugs
191
191
 
192
- Content URLs should use human-readable slugs derived from the content title, not opaque numeric identifiers. `/articles/how-to-center-a-div` tells a user and a search engine what the page contains before they visit it. `/articles/1234` communicates nothing. Semantic slugs serve three IA purposes: they reinforce content identity, they aid orientation in the URL bar, and they build trust by making the destination legible before the page loads. When titles change, retain the original slug and redirect to the new one rather than changing the canonical URL URL stability is a form of user trust.
192
+ Content URLs should use human-readable slugs derived from the content title, not opaque numeric identifiers. `/articles/how-to-center-a-div` tells a user - and a search engine - what the page contains before they visit it. `/articles/1234` communicates nothing. Semantic slugs serve three IA purposes: they reinforce content identity, they aid orientation in the URL bar, and they build trust by making the destination legible before the page loads. When titles change, retain the original slug and redirect to the new one rather than changing the canonical URL - URL stability is a form of user trust.
193
193
 
194
194
  ---
195
195
 
@@ -199,11 +199,11 @@ Search and browse are complementary navigation strategies, not competing ones. T
199
199
 
200
200
  ### When Search Wins
201
201
 
202
- Search is the fastest path for users who know what they want and can express it in words. A user who wants "MacBook Pro 14-inch M3" will find it faster by typing than by navigating five levels of product hierarchy. Search also scales to large content sets where browse becomes impractical a catalog of one million products cannot be browsed; it must be searched. The failure mode for search is vocabulary mismatch: users who do not know the product's terminology cannot formulate a successful query. A user who wants "noise-canceling headphones" may not know a specific brand name or model identifier, and a search engine that requires precise vocabulary will return nothing useful.
202
+ Search is the fastest path for users who know what they want and can express it in words. A user who wants "MacBook Pro 14-inch M3" will find it faster by typing than by navigating five levels of product hierarchy. Search also scales to large content sets where browse becomes impractical - a catalog of one million products cannot be browsed; it must be searched. The failure mode for search is vocabulary mismatch: users who do not know the product's terminology cannot formulate a successful query. A user who wants "noise-canceling headphones" may not know a specific brand name or model identifier, and a search engine that requires precise vocabulary will return nothing useful.
203
203
 
204
204
  ### When Browse Wins
205
205
 
206
- Browse is necessary for discovery users who are exploring rather than seeking a specific target, users who are learning the product's content space, and users who do not yet know the vocabulary of the domain. A first-time visitor to an e-commerce site discovers product categories by browsing; they cannot search for a category they did not know existed. Browse also serves users who make decisions through comparison seeing all options in a category simultaneously is a different cognitive task than searching for options one at a time.
206
+ Browse is necessary for discovery - users who are exploring rather than seeking a specific target, users who are learning the product's content space, and users who do not yet know the vocabulary of the domain. A first-time visitor to an e-commerce site discovers product categories by browsing; they cannot search for a category they did not know existed. Browse also serves users who make decisions through comparison - seeing all options in a category simultaneously is a different cognitive task than searching for options one at a time.
207
207
 
208
208
  ### Providing Both
209
209
 
@@ -211,7 +211,7 @@ The rule is to provide both search and browse, and to ensure that neither is the
211
211
 
212
212
  ### Autocomplete
213
213
 
214
- Autocomplete reduces the vocabulary mismatch problem by surfacing valid query terms as users type. It must handle synonyms (headphones / earphones / earbuds should all surface the same category), common misspellings (a typo-tolerant matching algorithm, not exact string matching), and partial matches (the query "mac" should surface MacBook before the user has finished typing). Autocomplete that returns zero results for a near-miss query fails silently the user sees nothing and concludes that the content does not exist. The system should always return something, even if it is a suggestion to browse a related category.
214
+ Autocomplete reduces the vocabulary mismatch problem by surfacing valid query terms as users type. It must handle synonyms (headphones / earphones / earbuds should all surface the same category), common misspellings (a typo-tolerant matching algorithm, not exact string matching), and partial matches (the query "mac" should surface MacBook before the user has finished typing). Autocomplete that returns zero results for a near-miss query fails silently - the user sees nothing and concludes that the content does not exist. The system should always return something, even if it is a suggestion to browse a related category.
215
215
 
216
216
  ---
217
217
 
@@ -221,11 +221,11 @@ Faceted navigation is a specific navigation pattern that deserves its own detail
221
221
 
222
222
  ### Attribute Facets
223
223
 
224
- Attribute facets are non-hierarchical, independent dimensions color, size, price range, rating, availability. Users may select multiple values within a single facet (red or blue) and across multiple facets (red, size M, under $50) simultaneously. Each selection narrows the result set by the intersection of all active filters. Attribute facets should be multi-select by default within a single facet requiring users to choose only one value per facet (single-select) is a common implementation mistake that forces sequential filtering rather than parallel narrowing.
224
+ Attribute facets are non-hierarchical, independent dimensions - color, size, price range, rating, availability. Users may select multiple values within a single facet (red or blue) and across multiple facets (red, size M, under $50) simultaneously. Each selection narrows the result set by the intersection of all active filters. Attribute facets should be multi-select by default within a single facet - requiring users to choose only one value per facet (single-select) is a common implementation mistake that forces sequential filtering rather than parallel narrowing.
225
225
 
226
226
  ### Hierarchical Facets
227
227
 
228
- Hierarchical facets have parent-child relationships: selecting a parent value constrains the available child values. A "Category" facet that shows Electronics → Laptops → Gaming Laptops is hierarchical selecting "Laptops" hides subcategories from other categories and reveals laptop-specific subcategories. Hierarchical facets are appropriate when the attribute space is genuinely taxonomic and when child values are meaningless without their parent context. They are inappropriate when users need to select values from multiple branches of the hierarchy simultaneously.
228
+ Hierarchical facets have parent-child relationships: selecting a parent value constrains the available child values. A "Category" facet that shows Electronics → Laptops → Gaming Laptops is hierarchical - selecting "Laptops" hides subcategories from other categories and reveals laptop-specific subcategories. Hierarchical facets are appropriate when the attribute space is genuinely taxonomic and when child values are meaningless without their parent context. They are inappropriate when users need to select values from multiple branches of the hierarchy simultaneously.
229
229
 
230
230
  ### Progressive Disclosure of Facets
231
231
 
@@ -233,7 +233,7 @@ Showing all available facets simultaneously creates a filtering interface that r
233
233
 
234
234
  ### Facet Count Display
235
235
 
236
- Showing the item count beside each facet value communicates two things: the density of information behind that filter value, and whether a given combination is possible. A facet value showing "(0)" tells users that selecting it in combination with existing filters will produce an empty result this information should be surfaced before the user clicks, not after. Count display also helps users calibrate their filtering strategy: a facet value with 847 items and one with 3 items communicate different search territory. Hiding counts forces users to click and discover, which creates unnecessary round-trips between the filter controls and the result set.
236
+ Showing the item count beside each facet value communicates two things: the density of information behind that filter value, and whether a given combination is possible. A facet value showing "(0)" tells users that selecting it in combination with existing filters will produce an empty result - this information should be surfaced before the user clicks, not after. Count display also helps users calibrate their filtering strategy: a facet value with 847 items and one with 3 items communicate different search territory. Hiding counts forces users to click and discover, which creates unnecessary round-trips between the filter controls and the result set.
237
237
 
238
238
  ---
239
239
 
@@ -1,7 +1,7 @@
1
1
  # Intel Store Schema
2
2
 
3
3
  Version: 1.0.0
4
- Path: `.design/intel/` (gitignored runtime data only)
4
+ Path: `.design/intel/` (gitignored - runtime data only)
5
5
 
6
6
  ## Overview
7
7