@hegemonart/get-design-done 1.42.0 → 1.43.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.claude-plugin/marketplace.json +2 -2
- package/.claude-plugin/plugin.json +1 -1
- package/CHANGELOG.md +1080 -1038
- package/README.md +157 -155
- package/SKILL.md +42 -42
- package/agents/README.md +53 -53
- package/agents/a11y-mapper.md +3 -3
- package/agents/component-benchmark-harvester.md +8 -8
- package/agents/component-benchmark-synthesizer.md +11 -11
- package/agents/component-taxonomy-mapper.md +5 -5
- package/agents/compose-executor.md +25 -25
- package/agents/conflict-resolver.md +8 -8
- package/agents/cost-forecaster.md +12 -12
- package/agents/decision-journal-exporter.md +5 -5
- package/agents/design-advisor.md +19 -19
- package/agents/design-assumptions-analyzer.md +16 -16
- package/agents/design-auditor.md +39 -39
- package/agents/design-authority-watcher.md +28 -28
- package/agents/design-component-generator.md +27 -27
- package/agents/design-context-builder.md +66 -66
- package/agents/design-context-checker-gate.md +5 -5
- package/agents/design-context-checker.md +20 -20
- package/agents/design-discussant.md +23 -23
- package/agents/design-doc-writer.md +12 -12
- package/agents/design-executor.md +38 -38
- package/agents/design-figma-writer.md +31 -31
- package/agents/design-fixer.md +27 -27
- package/agents/design-integration-checker-gate.md +5 -5
- package/agents/design-integration-checker.md +29 -29
- package/agents/design-paper-writer.md +14 -14
- package/agents/design-pattern-mapper.md +9 -9
- package/agents/design-pencil-writer.md +12 -12
- package/agents/design-phase-researcher.md +14 -14
- package/agents/design-plan-checker.md +13 -13
- package/agents/design-planner.md +24 -24
- package/agents/design-reflector.md +48 -48
- package/agents/design-research-synthesizer.md +21 -21
- package/agents/design-start-writer.md +7 -7
- package/agents/design-update-checker.md +8 -8
- package/agents/design-verifier-gate.md +5 -5
- package/agents/design-verifier.md +80 -80
- package/agents/ds-generator.md +14 -14
- package/agents/ds-migration-planner.md +12 -12
- package/agents/email-executor.md +26 -26
- package/agents/experiment-result-ingester.md +10 -10
- package/agents/flutter-executor.md +28 -28
- package/agents/gdd-graph-refresh.md +10 -10
- package/agents/gdd-intel-updater.md +11 -11
- package/agents/gdd-learnings-extractor.md +2 -2
- package/agents/motion-mapper.md +8 -8
- package/agents/motion-verifier.md +16 -16
- package/agents/pdf-executor.md +27 -27
- package/agents/perf-analyzer.md +20 -20
- package/agents/pr-commenter.md +24 -24
- package/agents/prototype-gate.md +29 -29
- package/agents/quality-gate-runner.md +21 -21
- package/agents/rollout-coordinator.md +8 -8
- package/agents/swift-executor.md +41 -41
- package/agents/ticket-sync-agent.md +19 -19
- package/agents/token-mapper.md +6 -6
- package/agents/user-research-synthesizer.md +13 -13
- package/agents/visual-hierarchy-mapper.md +2 -2
- package/dist/claude-code/.claude/skills/add-backlog/SKILL.md +3 -3
- package/dist/claude-code/.claude/skills/analyze-dependencies/SKILL.md +10 -10
- package/dist/claude-code/.claude/skills/apply-reflections/SKILL.md +13 -13
- package/dist/claude-code/.claude/skills/apply-reflections/apply-reflections-procedure.md +20 -20
- package/dist/claude-code/.claude/skills/audit/SKILL.md +7 -7
- package/dist/claude-code/.claude/skills/bandit-status/SKILL.md +7 -7
- package/dist/claude-code/.claude/skills/benchmark/SKILL.md +7 -7
- package/dist/claude-code/.claude/skills/bootstrap-ds/SKILL.md +10 -10
- package/dist/claude-code/.claude/skills/brief/SKILL.md +20 -20
- package/dist/claude-code/.claude/skills/budget/SKILL.md +4 -4
- package/dist/claude-code/.claude/skills/cache-manager/SKILL.md +6 -6
- package/dist/claude-code/.claude/skills/cache-manager/cache-policy.md +5 -5
- package/dist/claude-code/.claude/skills/check-update/SKILL.md +5 -5
- package/dist/claude-code/.claude/skills/compare/SKILL.md +15 -15
- package/dist/claude-code/.claude/skills/compare/compare-rubric.md +17 -17
- package/dist/claude-code/.claude/skills/complete-cycle/SKILL.md +5 -5
- package/dist/claude-code/.claude/skills/connections/SKILL.md +11 -11
- package/dist/claude-code/.claude/skills/connections/connections-onboarding.md +76 -76
- package/dist/claude-code/.claude/skills/continue/SKILL.md +2 -2
- package/dist/claude-code/.claude/skills/darkmode/SKILL.md +17 -17
- package/dist/claude-code/.claude/skills/darkmode/darkmode-audit-procedure.md +7 -7
- package/dist/claude-code/.claude/skills/debug/SKILL.md +3 -3
- package/dist/claude-code/.claude/skills/debug/debug-feedback-loops.md +12 -12
- package/dist/claude-code/.claude/skills/design/SKILL.md +12 -12
- package/dist/claude-code/.claude/skills/design/design-procedure.md +23 -23
- package/dist/claude-code/.claude/skills/discover/SKILL.md +7 -7
- package/dist/claude-code/.claude/skills/discover/discover-procedure.md +18 -18
- package/dist/claude-code/.claude/skills/discuss/SKILL.md +12 -12
- package/dist/claude-code/.claude/skills/do/SKILL.md +1 -1
- package/dist/claude-code/.claude/skills/explore/SKILL.md +21 -21
- package/dist/claude-code/.claude/skills/explore/explore-procedure.md +48 -48
- package/dist/claude-code/.claude/skills/export/SKILL.md +9 -9
- package/dist/claude-code/.claude/skills/extract-learnings/SKILL.md +5 -5
- package/dist/claude-code/.claude/skills/fast/SKILL.md +7 -7
- package/dist/claude-code/.claude/skills/figma-extract/SKILL.md +11 -11
- package/dist/claude-code/.claude/skills/figma-write/SKILL.md +6 -6
- package/dist/claude-code/.claude/skills/graphify/SKILL.md +4 -4
- package/dist/claude-code/.claude/skills/health/SKILL.md +16 -16
- package/dist/claude-code/.claude/skills/health/health-mcp-detection.md +3 -3
- package/dist/claude-code/.claude/skills/health/health-skill-length-report.md +6 -6
- package/dist/claude-code/.claude/skills/help/SKILL.md +1 -1
- package/dist/claude-code/.claude/skills/list-assumptions/SKILL.md +4 -4
- package/dist/claude-code/.claude/skills/map/SKILL.md +12 -12
- package/dist/claude-code/.claude/skills/migrate/SKILL.md +5 -5
- package/dist/claude-code/.claude/skills/new-cycle/SKILL.md +2 -2
- package/dist/claude-code/.claude/skills/new-cycle/milestone-completeness-rubric.md +16 -16
- package/dist/claude-code/.claude/skills/new-project/SKILL.md +1 -1
- package/dist/claude-code/.claude/skills/next/SKILL.md +5 -5
- package/dist/claude-code/.claude/skills/note/SKILL.md +1 -1
- package/dist/claude-code/.claude/skills/openrouter-status/SKILL.md +4 -4
- package/dist/claude-code/.claude/skills/optimize/SKILL.md +15 -15
- package/dist/claude-code/.claude/skills/pause/SKILL.md +5 -5
- package/dist/claude-code/.claude/skills/peer-cli-add/SKILL.md +11 -11
- package/dist/claude-code/.claude/skills/peer-cli-add/peer-cli-protocol.md +39 -39
- package/dist/claude-code/.claude/skills/peer-cli-customize/SKILL.md +14 -14
- package/dist/claude-code/.claude/skills/peers/SKILL.md +4 -4
- package/dist/claude-code/.claude/skills/plan/SKILL.md +13 -13
- package/dist/claude-code/.claude/skills/plan/plan-procedure.md +24 -24
- package/dist/claude-code/.claude/skills/plant-seed/SKILL.md +4 -4
- package/dist/claude-code/.claude/skills/pr-branch/SKILL.md +2 -2
- package/dist/claude-code/.claude/skills/progress/SKILL.md +15 -15
- package/dist/claude-code/.claude/skills/quality-gate/SKILL.md +22 -22
- package/dist/claude-code/.claude/skills/quality-gate/threat-modeling.md +19 -19
- package/dist/claude-code/.claude/skills/quick/SKILL.md +5 -5
- package/dist/claude-code/.claude/skills/reapply-patches/SKILL.md +7 -7
- package/dist/claude-code/.claude/skills/reflect/SKILL.md +3 -3
- package/dist/claude-code/.claude/skills/reflect/procedures/capability-gap-scan.md +11 -11
- package/dist/claude-code/.claude/skills/report-issue/SKILL.md +5 -5
- package/dist/claude-code/.claude/skills/report-issue/report-issue-procedure.md +27 -27
- package/dist/claude-code/.claude/skills/resume/SKILL.md +9 -9
- package/dist/claude-code/.claude/skills/review-backlog/SKILL.md +3 -3
- package/dist/claude-code/.claude/skills/review-decisions/SKILL.md +3 -3
- package/dist/claude-code/.claude/skills/roi/SKILL.md +5 -5
- package/dist/claude-code/.claude/skills/rollout-status/SKILL.md +4 -4
- package/dist/claude-code/.claude/skills/router/SKILL.md +11 -11
- package/dist/claude-code/.claude/skills/router/capability-gap-emitter.md +6 -6
- package/dist/claude-code/.claude/skills/router/router-pick-emitter.md +9 -9
- package/dist/claude-code/.claude/skills/router/router-rules.md +7 -7
- package/dist/claude-code/.claude/skills/scan/SKILL.md +16 -16
- package/dist/claude-code/.claude/skills/scan/scan-procedure.md +42 -42
- package/dist/claude-code/.claude/skills/settings/SKILL.md +2 -2
- package/dist/claude-code/.claude/skills/ship/SKILL.md +7 -7
- package/dist/claude-code/.claude/skills/sketch/SKILL.md +10 -10
- package/dist/claude-code/.claude/skills/sketch-wrap-up/SKILL.md +12 -12
- package/dist/claude-code/.claude/skills/skill-manifest/SKILL.md +5 -5
- package/dist/claude-code/.claude/skills/spike/SKILL.md +7 -7
- package/dist/claude-code/.claude/skills/spike-wrap-up/SKILL.md +13 -13
- package/dist/claude-code/.claude/skills/start/SKILL.md +8 -8
- package/dist/claude-code/.claude/skills/start/start-procedure.md +9 -9
- package/dist/claude-code/.claude/skills/stats/SKILL.md +5 -5
- package/dist/claude-code/.claude/skills/style/SKILL.md +12 -12
- package/dist/claude-code/.claude/skills/style/style-doc-procedure.md +12 -12
- package/dist/claude-code/.claude/skills/synthesize/SKILL.md +10 -10
- package/dist/claude-code/.claude/skills/timeline/SKILL.md +4 -4
- package/dist/claude-code/.claude/skills/todo/SKILL.md +3 -3
- package/dist/claude-code/.claude/skills/turn-closeout/SKILL.md +10 -10
- package/dist/claude-code/.claude/skills/unlock-decision/SKILL.md +3 -3
- package/dist/claude-code/.claude/skills/update/SKILL.md +9 -9
- package/dist/claude-code/.claude/skills/using-gdd/SKILL.md +17 -17
- package/dist/claude-code/.claude/skills/verify/SKILL.md +13 -13
- package/dist/claude-code/.claude/skills/verify/verify-procedure.md +34 -34
- package/dist/claude-code/.claude/skills/warm-cache/SKILL.md +8 -8
- package/dist/claude-code/.claude/skills/watch-authorities/SKILL.md +9 -9
- package/dist/claude-code/.claude/skills/zoom-out/SKILL.md +4 -4
- package/package.json +5 -2
- package/reference/DEPRECATIONS.md +10 -10
- package/reference/STATE-TEMPLATE.md +26 -26
- package/reference/accessibility.md +13 -13
- package/reference/adr-format.md +13 -13
- package/reference/ai-native-tool-interface.md +5 -5
- package/reference/anti-patterns.md +9 -9
- package/reference/architecture-vocabulary.md +31 -31
- package/reference/audit-scoring.md +13 -13
- package/reference/authority-feeds.md +36 -36
- package/reference/bandit-integration.md +25 -25
- package/reference/brand-voice.md +36 -36
- package/reference/capability-gap-stage-gate.md +20 -20
- package/reference/checklists.md +26 -26
- package/reference/cli-localization.md +13 -13
- package/reference/codex-tools.md +2 -2
- package/reference/color-theory.md +28 -28
- package/reference/component-authoring.md +4 -4
- package/reference/components/README.md +13 -13
- package/reference/components/TEMPLATE.md +13 -13
- package/reference/components/accordion.md +15 -15
- package/reference/components/alert.md +25 -25
- package/reference/components/badge.md +18 -18
- package/reference/components/breadcrumbs.md +24 -24
- package/reference/components/button.md +21 -21
- package/reference/components/card.md +13 -13
- package/reference/components/checkbox.md +20 -20
- package/reference/components/chip.md +20 -20
- package/reference/components/command-palette.md +15 -15
- package/reference/components/date-picker.md +22 -22
- package/reference/components/drawer.md +13 -13
- package/reference/components/file-upload.md +22 -22
- package/reference/components/input.md +18 -18
- package/reference/components/label.md +25 -25
- package/reference/components/link.md +19 -19
- package/reference/components/list.md +17 -17
- package/reference/components/menu.md +19 -19
- package/reference/components/modal-dialog.md +16 -16
- package/reference/components/navbar.md +19 -19
- package/reference/components/pagination.md +18 -18
- package/reference/components/popover.md +12 -12
- package/reference/components/progress.md +18 -18
- package/reference/components/radio.md +17 -17
- package/reference/components/rich-text-editor.md +24 -24
- package/reference/components/select-combobox.md +16 -16
- package/reference/components/sidebar.md +15 -15
- package/reference/components/skeleton.md +20 -20
- package/reference/components/slider.md +20 -20
- package/reference/components/stepper.md +24 -24
- package/reference/components/switch.md +19 -19
- package/reference/components/table.md +21 -21
- package/reference/components/tabs.md +11 -11
- package/reference/components/toast.md +19 -19
- package/reference/components/tooltip.md +19 -19
- package/reference/components/tree.md +17 -17
- package/reference/composition.md +38 -38
- package/reference/config-schema.md +37 -37
- package/reference/context-md-format.md +9 -9
- package/reference/contrast-advanced.md +29 -29
- package/reference/conversational-ui.md +17 -17
- package/reference/cost-governance.md +14 -14
- package/reference/css-grid-layout.md +8 -8
- package/reference/cycle-handoff-preamble.md +3 -3
- package/reference/data-visualization.md +67 -67
- package/reference/debugger-philosophy.md +5 -5
- package/reference/design-system-guidance.md +21 -21
- package/reference/design-systems-catalog.md +20 -20
- package/reference/design-variants.md +11 -11
- package/reference/domains/civic-patterns.md +10 -10
- package/reference/domains/finance-patterns.md +9 -9
- package/reference/domains/gaming-patterns.md +9 -9
- package/reference/domains/healthcare-patterns.md +11 -11
- package/reference/ds-bootstrap-rubric.md +13 -13
- package/reference/email-design.md +22 -22
- package/reference/emotional-design.md +10 -10
- package/reference/error-recovery.md +11 -11
- package/reference/export-formats.md +7 -7
- package/reference/figma-sandbox.md +6 -6
- package/reference/first-principles.md +10 -10
- package/reference/form-patterns.md +26 -26
- package/reference/framer-motion-patterns.md +49 -49
- package/reference/gdd-runtime-audit.md +17 -17
- package/reference/gdd-threat-model.md +44 -44
- package/reference/gemini-tools.md +3 -3
- package/reference/gestalt.md +24 -24
- package/reference/heuristics.md +32 -32
- package/reference/i18n.md +44 -44
- package/reference/iconography.md +24 -24
- package/reference/image-optimization.md +14 -14
- package/reference/information-architecture.md +47 -47
- package/reference/intel-schema.md +1 -1
- package/reference/known-failure-modes.md +37 -37
- package/reference/meta-rules.md +5 -5
- package/reference/migrations/material-3-to-4.md +17 -17
- package/reference/migrations/mui-v6.md +16 -16
- package/reference/migrations/shadcn-v2.md +25 -25
- package/reference/migrations/tailwind-v4.md +21 -21
- package/reference/model-prices.md +3 -3
- package/reference/model-tiers.md +40 -40
- package/reference/motion-advanced.md +21 -21
- package/reference/motion-easings.md +29 -29
- package/reference/motion-interpolate.md +1 -1
- package/reference/motion-spring.md +13 -13
- package/reference/motion-transition-taxonomy.md +34 -34
- package/reference/motion.md +31 -31
- package/reference/multi-author-model.md +13 -13
- package/reference/native-platforms.md +28 -28
- package/reference/notification-routing.md +6 -6
- package/reference/onboarding-progressive-disclosure.md +32 -32
- package/reference/openrouter-tier-mapping.md +8 -8
- package/reference/palette-catalog.md +37 -37
- package/reference/parallelism-rules.md +20 -20
- package/reference/peer-cli-capabilities.md +14 -14
- package/reference/peer-protocols.md +21 -21
- package/reference/perf-budget.md +21 -21
- package/reference/performance.md +22 -22
- package/reference/platforms.md +51 -51
- package/reference/pr-review-integration.md +7 -7
- package/reference/prices/antigravity.md +3 -3
- package/reference/prices/augment.md +3 -3
- package/reference/prices/claude.md +2 -2
- package/reference/prices/cline.md +4 -4
- package/reference/prices/codebuddy.md +3 -3
- package/reference/prices/codex.md +2 -2
- package/reference/prices/copilot.md +3 -3
- package/reference/prices/cursor.md +3 -3
- package/reference/prices/gemini.md +2 -2
- package/reference/prices/kilo.md +3 -3
- package/reference/prices/opencode.md +4 -4
- package/reference/prices/qwen.md +2 -2
- package/reference/prices/trae.md +3 -3
- package/reference/prices/windsurf.md +3 -3
- package/reference/prices.openrouter.md +5 -5
- package/reference/print-design.md +36 -36
- package/reference/priority-matrix.md +2 -2
- package/reference/project-skills-guide.md +3 -3
- package/reference/proportion-systems.md +23 -23
- package/reference/pseudonymization-rules.md +30 -30
- package/reference/retrieval-contract.md +14 -14
- package/reference/review-format.md +7 -7
- package/reference/rollout-coordination.md +10 -10
- package/reference/rtl-cjk-cultural.md +39 -39
- package/reference/runtime-models.md +28 -28
- package/reference/shared-preamble.md +26 -26
- package/reference/skill-authoring-contract.md +16 -16
- package/reference/skill-placeholders.md +3 -3
- package/reference/start-interview.md +10 -10
- package/reference/style-vocabulary.md +25 -25
- package/reference/surfaces.md +4 -4
- package/reference/ticket-sync.md +9 -9
- package/reference/typography.md +64 -64
- package/reference/user-research.md +54 -54
- package/reference/variable-fonts-loading.md +15 -15
- package/reference/visual-hierarchy-layout.md +41 -41
- package/scripts/lib/manifest/prose-denylist.json +1 -1
- package/skills/add-backlog/SKILL.md +3 -3
- package/skills/analyze-dependencies/SKILL.md +10 -10
- package/skills/apply-reflections/SKILL.md +13 -13
- package/skills/apply-reflections/apply-reflections-procedure.md +20 -20
- package/skills/audit/SKILL.md +7 -7
- package/skills/bandit-status/SKILL.md +7 -7
- package/skills/benchmark/SKILL.md +7 -7
- package/skills/bootstrap-ds/SKILL.md +10 -10
- package/skills/brief/SKILL.md +20 -20
- package/skills/budget/SKILL.md +4 -4
- package/skills/cache-manager/SKILL.md +6 -6
- package/skills/cache-manager/cache-policy.md +5 -5
- package/skills/check-update/SKILL.md +5 -5
- package/skills/compare/SKILL.md +15 -15
- package/skills/compare/compare-rubric.md +17 -17
- package/skills/complete-cycle/SKILL.md +5 -5
- package/skills/connections/SKILL.md +11 -11
- package/skills/connections/connections-onboarding.md +76 -76
- package/skills/continue/SKILL.md +2 -2
- package/skills/darkmode/SKILL.md +17 -17
- package/skills/darkmode/darkmode-audit-procedure.md +7 -7
- package/skills/debug/SKILL.md +3 -3
- package/skills/debug/debug-feedback-loops.md +12 -12
- package/skills/design/SKILL.md +12 -12
- package/skills/design/design-procedure.md +23 -23
- package/skills/discover/SKILL.md +7 -7
- package/skills/discover/discover-procedure.md +18 -18
- package/skills/discuss/SKILL.md +12 -12
- package/skills/do/SKILL.md +1 -1
- package/skills/explore/SKILL.md +21 -21
- package/skills/explore/explore-procedure.md +48 -48
- package/skills/export/SKILL.md +9 -9
- package/skills/extract-learnings/SKILL.md +5 -5
- package/skills/fast/SKILL.md +7 -7
- package/skills/figma-extract/SKILL.md +11 -11
- package/skills/figma-write/SKILL.md +6 -6
- package/skills/graphify/SKILL.md +4 -4
- package/skills/health/SKILL.md +16 -16
- package/skills/health/health-mcp-detection.md +3 -3
- package/skills/health/health-skill-length-report.md +6 -6
- package/skills/help/SKILL.md +1 -1
- package/skills/list-assumptions/SKILL.md +4 -4
- package/skills/map/SKILL.md +12 -12
- package/skills/migrate/SKILL.md +5 -5
- package/skills/new-cycle/SKILL.md +2 -2
- package/skills/new-cycle/milestone-completeness-rubric.md +16 -16
- package/skills/new-project/SKILL.md +1 -1
- package/skills/next/SKILL.md +5 -5
- package/skills/note/SKILL.md +1 -1
- package/skills/openrouter-status/SKILL.md +4 -4
- package/skills/optimize/SKILL.md +15 -15
- package/skills/pause/SKILL.md +5 -5
- package/skills/peer-cli-add/SKILL.md +11 -11
- package/skills/peer-cli-add/peer-cli-protocol.md +39 -39
- package/skills/peer-cli-customize/SKILL.md +14 -14
- package/skills/peers/SKILL.md +4 -4
- package/skills/plan/SKILL.md +13 -13
- package/skills/plan/plan-procedure.md +24 -24
- package/skills/plant-seed/SKILL.md +4 -4
- package/skills/pr-branch/SKILL.md +2 -2
- package/skills/progress/SKILL.md +15 -15
- package/skills/quality-gate/SKILL.md +22 -22
- package/skills/quality-gate/threat-modeling.md +19 -19
- package/skills/quick/SKILL.md +5 -5
- package/skills/reapply-patches/SKILL.md +7 -7
- package/skills/reflect/SKILL.md +3 -3
- package/skills/reflect/procedures/capability-gap-scan.md +11 -11
- package/skills/report-issue/SKILL.md +5 -5
- package/skills/report-issue/report-issue-procedure.md +27 -27
- package/skills/resume/SKILL.md +9 -9
- package/skills/review-backlog/SKILL.md +3 -3
- package/skills/review-decisions/SKILL.md +3 -3
- package/skills/roi/SKILL.md +5 -5
- package/skills/rollout-status/SKILL.md +4 -4
- package/skills/router/SKILL.md +11 -11
- package/skills/router/capability-gap-emitter.md +6 -6
- package/skills/router/router-pick-emitter.md +9 -9
- package/skills/router/router-rules.md +7 -7
- package/skills/scan/SKILL.md +16 -16
- package/skills/scan/scan-procedure.md +42 -42
- package/skills/settings/SKILL.md +2 -2
- package/skills/ship/SKILL.md +7 -7
- package/skills/sketch/SKILL.md +10 -10
- package/skills/sketch-wrap-up/SKILL.md +12 -12
- package/skills/skill-manifest/SKILL.md +5 -5
- package/skills/spike/SKILL.md +7 -7
- package/skills/spike-wrap-up/SKILL.md +13 -13
- package/skills/start/SKILL.md +8 -8
- package/skills/start/start-procedure.md +9 -9
- package/skills/stats/SKILL.md +5 -5
- package/skills/style/SKILL.md +12 -12
- package/skills/style/style-doc-procedure.md +12 -12
- package/skills/synthesize/SKILL.md +10 -10
- package/skills/timeline/SKILL.md +4 -4
- package/skills/todo/SKILL.md +3 -3
- package/skills/turn-closeout/SKILL.md +10 -10
- package/skills/unlock-decision/SKILL.md +3 -3
- package/skills/update/SKILL.md +9 -9
- package/skills/using-gdd/SKILL.md +17 -17
- package/skills/verify/SKILL.md +13 -13
- package/skills/verify/verify-procedure.md +34 -34
- package/skills/warm-cache/SKILL.md +8 -8
- package/skills/watch-authorities/SKILL.md +9 -9
- package/skills/zoom-out/SKILL.md +4 -4
package/reference/typography.md
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
# Typography
|
|
1
|
+
# Typography - Scale, Pairing, and Hierarchy
|
|
2
2
|
|
|
3
3
|
---
|
|
4
4
|
|
|
@@ -12,14 +12,14 @@ Choose a ratio and base size. Common ratios:
|
|
|
12
12
|
|---|---|---|
|
|
13
13
|
| 1.067 | Minor Second | Dense UIs, data-heavy dashboards |
|
|
14
14
|
| 1.125 | Major Second | Conservative, corporate |
|
|
15
|
-
| 1.200 | Minor Third | Balanced
|
|
15
|
+
| 1.200 | Minor Third | Balanced - most SaaS products |
|
|
16
16
|
| 1.250 | Major Third | Consumer, editorial |
|
|
17
17
|
| 1.333 | Perfect Fourth | Strong hierarchy, marketing |
|
|
18
18
|
| 1.414 | Augmented Fourth | Bold, magazine-style |
|
|
19
19
|
| 1.500 | Perfect Fifth | Very dramatic hierarchy |
|
|
20
20
|
| 1.618 | Golden Ratio | Maximum visual drama |
|
|
21
21
|
|
|
22
|
-
**Standard scale (base 16px, ratio 1.25
|
|
22
|
+
**Standard scale (base 16px, ratio 1.25 - Major Third):**
|
|
23
23
|
|
|
24
24
|
| Token | Size | Use |
|
|
25
25
|
|---|---|---|
|
|
@@ -35,7 +35,7 @@ Choose a ratio and base size. Common ratios:
|
|
|
35
35
|
|
|
36
36
|
Never create a scale ad-hoc. Pick one ratio, generate the scale, use only values in the scale.
|
|
37
37
|
|
|
38
|
-
**See:** [`./proportion-systems.md`](./proportion-systems.md) §Modular Relationships for how the type scale ties to spacing / sizing / radius scales
|
|
38
|
+
**See:** [`./proportion-systems.md`](./proportion-systems.md) §Modular Relationships for how the type scale ties to spacing / sizing / radius scales - when one ratio drives all four scales the whole UI gains a single rhythm rather than four independently-tuned progressions.
|
|
39
39
|
|
|
40
40
|
---
|
|
41
41
|
|
|
@@ -71,9 +71,9 @@ Enforce with `max-width`: `65ch` for body containers works with any font size.
|
|
|
71
71
|
| Display headings | **700 – 900** | Bold commands attention |
|
|
72
72
|
| Page headings | **600 – 700** | Strong but not display-level |
|
|
73
73
|
| Section headings | **500 – 600** | Distinguish from body |
|
|
74
|
-
| Body text | **400** | Regular
|
|
74
|
+
| Body text | **400** | Regular - no emphasis weight |
|
|
75
75
|
| UI labels | **500** | Slightly heavier than body |
|
|
76
|
-
| Captions | **400** | Regular
|
|
76
|
+
| Captions | **400** | Regular - size reduces emphasis |
|
|
77
77
|
| Monospace code | **400 – 500** | |
|
|
78
78
|
|
|
79
79
|
**Rule**: Never use `font-weight: 300` (light) on small text. It becomes illegible below 16px.
|
|
@@ -83,51 +83,51 @@ Enforce with `max-width`: `65ch` for body containers works with any font size.
|
|
|
83
83
|
## Proven Font Pairings
|
|
84
84
|
|
|
85
85
|
### For SaaS / Productivity
|
|
86
|
-
- **Plus Jakarta Sans** (headers) + **Plus Jakarta Sans** (body)
|
|
87
|
-
- **DM Sans** (headers) + **DM Sans** (body)
|
|
88
|
-
- **Outfit** + **Work Sans**
|
|
86
|
+
- **Plus Jakarta Sans** (headers) + **Plus Jakarta Sans** (body) - single-family, geometric, modern
|
|
87
|
+
- **DM Sans** (headers) + **DM Sans** (body) - clean, contemporary
|
|
88
|
+
- **Outfit** + **Work Sans** - geometric, startup feel
|
|
89
89
|
|
|
90
90
|
### For Consumer / Marketing
|
|
91
|
-
- **Playfair Display** + **Inter**
|
|
92
|
-
- **Cormorant Garamond** + **Montserrat**
|
|
93
|
-
- **Syne** + **Manrope**
|
|
91
|
+
- **Playfair Display** + **Inter** - editorial contrast (serif header, sans body)
|
|
92
|
+
- **Cormorant Garamond** + **Montserrat** - luxury, refined
|
|
93
|
+
- **Syne** + **Manrope** - fashion-forward, editorial
|
|
94
94
|
|
|
95
95
|
### For Finance / Enterprise
|
|
96
|
-
- **IBM Plex Sans** (all)
|
|
97
|
-
- **Lexend** + **Source Sans 3**
|
|
98
|
-
- **Libre Bodoni** + **Public Sans**
|
|
96
|
+
- **IBM Plex Sans** (all) - technical, neutral, reliable
|
|
97
|
+
- **Lexend** + **Source Sans 3** - corporate, trustworthy, accessible
|
|
98
|
+
- **Libre Bodoni** + **Public Sans** - news editorial, authority
|
|
99
99
|
|
|
100
100
|
### For Developer Tools / Technical
|
|
101
|
-
- **JetBrains Mono** (code) + **IBM Plex Sans** (UI)
|
|
102
|
-
- **Fira Code** + **Fira Sans**
|
|
103
|
-
- **Geist Mono** + **Geist** (Vercel)
|
|
101
|
+
- **JetBrains Mono** (code) + **IBM Plex Sans** (UI) - technical, consistent
|
|
102
|
+
- **Fira Code** + **Fira Sans** - same family, harmonious
|
|
103
|
+
- **Geist Mono** + **Geist** (Vercel) - modern technical
|
|
104
104
|
|
|
105
105
|
### For Bold / Expressive
|
|
106
|
-
- **Bebas Neue** + **Source Sans 3**
|
|
107
|
-
- **Syne** + **Epilogue**
|
|
108
|
-
- **Clash Display** + **Satoshi**
|
|
106
|
+
- **Bebas Neue** + **Source Sans 3** - display contrast, impactful
|
|
107
|
+
- **Syne** + **Epilogue** - editorial, contemporary
|
|
108
|
+
- **Clash Display** + **Satoshi** - startup bold, premium
|
|
109
109
|
|
|
110
110
|
### For Accessibility-First
|
|
111
|
-
- **Atkinson Hyperlegible** (all)
|
|
112
|
-
- **Lexend** (all)
|
|
111
|
+
- **Atkinson Hyperlegible** (all) - designed for low-vision readers
|
|
112
|
+
- **Lexend** (all) - designed to improve reading fluency
|
|
113
113
|
|
|
114
114
|
---
|
|
115
115
|
|
|
116
116
|
## Typographic Anti-Patterns
|
|
117
117
|
|
|
118
|
-
**Inter as the default**
|
|
118
|
+
**Inter as the default** - Inter is excellent but requires a reason. "I used Inter" is not a typographic decision. If there's no brand reason for Inter specifically, explore the pairing list above.
|
|
119
119
|
|
|
120
|
-
**Space Grotesk without purpose**
|
|
120
|
+
**Space Grotesk without purpose** - frequently used as a "quirky technical" font. Overused.
|
|
121
121
|
|
|
122
|
-
**Mismatched personality**
|
|
122
|
+
**Mismatched personality** - serif heading on a developer tool, playful font on a medical platform, condensed display on body text.
|
|
123
123
|
|
|
124
|
-
**Too many families**
|
|
124
|
+
**Too many families** - maximum **2 font families** in a UI. More than that = chaos. (Exceptions: monospace for code is a 3rd that doesn't count.)
|
|
125
125
|
|
|
126
|
-
**Light weights on small text**
|
|
126
|
+
**Light weights on small text** - `font-weight: 300` below 16px fails contrast and readability.
|
|
127
127
|
|
|
128
|
-
**All caps body text**
|
|
128
|
+
**All caps body text** - reserved for: labels, badges, category markers, short UI labels only. Never for sentences or paragraphs.
|
|
129
129
|
|
|
130
|
-
**Inconsistent tracking**
|
|
130
|
+
**Inconsistent tracking** - only use `letter-spacing` intentionally. Positive tracking on uppercase labels is fine. Negative tracking on small body text reduces readability. Random tracking changes across components signal lack of system.
|
|
131
131
|
|
|
132
132
|
---
|
|
133
133
|
|
|
@@ -179,7 +179,7 @@ as a starting point (adjust for specific constraints).
|
|
|
179
179
|
|
|
180
180
|
| Archetype | Character | Recommended Pairing |
|
|
181
181
|
|-----------|-----------|---------------------|
|
|
182
|
-
| SaaS / productivity | clear, neutral, utilitarian | Inter (UI) + Inter (body)
|
|
182
|
+
| SaaS / productivity | clear, neutral, utilitarian | Inter (UI) + Inter (body) - single family |
|
|
183
183
|
| Consumer / editorial | warm, opinionated, expressive | Fraunces or GT Sectra (display) + Inter (body) |
|
|
184
184
|
| Enterprise / finance | authoritative, conservative | IBM Plex Sans (UI) + IBM Plex Serif (body) |
|
|
185
185
|
| Developer tools | technical, efficient | Geist (UI) + Geist Mono (code) |
|
|
@@ -193,7 +193,7 @@ as a starting point (adjust for specific constraints).
|
|
|
193
193
|
|
|
194
194
|
Variable fonts expose typographic axes that can be animated or set per-context
|
|
195
195
|
via `font-variation-settings`. Prefer variable fonts over static family fallbacks
|
|
196
|
-
when available
|
|
196
|
+
when available - one file covers all weights and widths.
|
|
197
197
|
|
|
198
198
|
### Common axes
|
|
199
199
|
|
|
@@ -235,7 +235,7 @@ font-family: 'InterVariable', 'Inter', -apple-system, system-ui, sans-serif;
|
|
|
235
235
|
---
|
|
236
236
|
|
|
237
237
|
## Micro-Typography
|
|
238
|
-
Source: jakubkrehel/make-interfaces-feel-better (MIT)
|
|
238
|
+
Source: jakubkrehel/make-interfaces-feel-better (MIT) - typography.md
|
|
239
239
|
|
|
240
240
|
### text-wrap
|
|
241
241
|
|
|
@@ -243,7 +243,7 @@ Use `text-wrap: balance` for headings to prevent orphaned single words:
|
|
|
243
243
|
```css
|
|
244
244
|
h1, h2, h3 { text-wrap: balance; }
|
|
245
245
|
```
|
|
246
|
-
Chromium supports up to 6 lines, Firefox up to 10. Do not apply to body text (performance cost scales with line count). For body copy and captions, use `text-wrap: pretty` instead
|
|
246
|
+
Chromium supports up to 6 lines, Firefox up to 10. Do not apply to body text (performance cost scales with line count). For body copy and captions, use `text-wrap: pretty` instead - it prevents widows (dangling last words) without the line-count restriction.
|
|
247
247
|
|
|
248
248
|
### Font smoothing
|
|
249
249
|
|
|
@@ -254,7 +254,7 @@ Apply antialiasing at root level only:
|
|
|
254
254
|
-moz-osx-font-smoothing: grayscale;
|
|
255
255
|
}
|
|
256
256
|
```
|
|
257
|
-
Never apply per-element
|
|
257
|
+
Never apply per-element - this creates inconsistency within a single text block and is one of the most common micro-typography mistakes. The antialiased value makes text appear slightly thinner/lighter, which is generally preferred for UI type at modern screen densities.
|
|
258
258
|
|
|
259
259
|
### Tabular numerals
|
|
260
260
|
|
|
@@ -262,52 +262,52 @@ Use tabular-nums on any surface where numbers change dynamically or need to alig
|
|
|
262
262
|
```css
|
|
263
263
|
.counter, .price, .timer, .table-cell { font-variant-numeric: tabular-nums; }
|
|
264
264
|
```
|
|
265
|
-
Proportional numerals (the default) cause text to shift width when numbers change, creating a distracting jitter in timers and prices. Exception: Inter's `1` character widens slightly with tabular-nums
|
|
265
|
+
Proportional numerals (the default) cause text to shift width when numbers change, creating a distracting jitter in timers and prices. Exception: Inter's `1` character widens slightly with tabular-nums - test at your numeric composition before committing.
|
|
266
266
|
|
|
267
267
|
## Font Pairings Catalog
|
|
268
|
-
Source: nextlevelbuilder/ui-ux-pro-max-skill (MIT)
|
|
268
|
+
Source: nextlevelbuilder/ui-ux-pro-max-skill (MIT) - data/typography.csv
|
|
269
269
|
|
|
270
270
|
57 professionally curated pairings grouped by use-case vertical. For font loading, see `reference/data/google-fonts.csv` for the full 1923-font reference.
|
|
271
271
|
|
|
272
272
|
### SaaS / Productivity
|
|
273
|
-
- **Inter + Inter** (mono weight hierarchy)
|
|
274
|
-
- **Inter + JetBrains Mono**
|
|
275
|
-
- **Geist Sans + Geist Mono**
|
|
276
|
-
- **Outfit + DM Mono**
|
|
273
|
+
- **Inter + Inter** (mono weight hierarchy) - The "safe default" for app UIs. Use regular (400) for body, medium (500) for labels, semibold (600) for headings. Consistent x-height, excellent at small sizes.
|
|
274
|
+
- **Inter + JetBrains Mono** - For dev tools and dashboards with code display. JetBrains Mono has excellent legibility at 12-14px.
|
|
275
|
+
- **Geist Sans + Geist Mono** - Vercel's pair; clean, modern, designed together.
|
|
276
|
+
- **Outfit + DM Mono** - Friendly SaaS feel with clear code fallback.
|
|
277
277
|
|
|
278
278
|
### Consumer / Marketing
|
|
279
|
-
- **Satoshi + Cabinet Grotesk**
|
|
280
|
-
- **Plus Jakarta Sans + Syne**
|
|
281
|
-
- **DM Sans + DM Serif Display**
|
|
282
|
-
- **Nunito + Source Code Pro**
|
|
279
|
+
- **Satoshi + Cabinet Grotesk** - High-energy, modern consumer feel.
|
|
280
|
+
- **Plus Jakarta Sans + Syne** - Playful but legible; works for creative consumer apps.
|
|
281
|
+
- **DM Sans + DM Serif Display** - Classic pairing; editorial headers, clean body.
|
|
282
|
+
- **Nunito + Source Code Pro** - Approachable and friendly.
|
|
283
283
|
|
|
284
284
|
### Finance / Enterprise
|
|
285
|
-
- **IBM Plex Sans + IBM Plex Mono**
|
|
286
|
-
- **Source Sans 3 + Source Code Pro**
|
|
287
|
-
- **Lato + Roboto Mono**
|
|
285
|
+
- **IBM Plex Sans + IBM Plex Mono** - Authoritative, systematic, designed for data-heavy interfaces.
|
|
286
|
+
- **Source Sans 3 + Source Code Pro** - Adobe's workhorse pair; widely trusted.
|
|
287
|
+
- **Lato + Roboto Mono** - Clean, neutral enterprise pair.
|
|
288
288
|
|
|
289
289
|
### Editorial / Publishing
|
|
290
|
-
- **Playfair Display + Source Serif 4**
|
|
291
|
-
- **Cormorant Garamond + Proza Libre**
|
|
292
|
-
- **Libre Baskerville + Libre Franklin**
|
|
293
|
-
- **EB Garamond + Lato**
|
|
290
|
+
- **Playfair Display + Source Serif 4** - High contrast serif headers with readable body serif.
|
|
291
|
+
- **Cormorant Garamond + Proza Libre** - Elegant luxury/editorial tone.
|
|
292
|
+
- **Libre Baskerville + Libre Franklin** - Free-license editorial pair.
|
|
293
|
+
- **EB Garamond + Lato** - Classic print feel with modern body.
|
|
294
294
|
|
|
295
295
|
### Wellness / Health
|
|
296
|
-
- **Nunito + Nunito Sans**
|
|
297
|
-
- **Quicksand + Work Sans**
|
|
298
|
-
- **Raleway + Open Sans**
|
|
296
|
+
- **Nunito + Nunito Sans** - Soft, approachable, consistent x-height.
|
|
297
|
+
- **Quicksand + Work Sans** - Rounded, friendly, healthcare-appropriate.
|
|
298
|
+
- **Raleway + Open Sans** - Clean and welcoming.
|
|
299
299
|
|
|
300
300
|
### Dev Tools
|
|
301
|
-
- **JetBrains Mono + Inter**
|
|
302
|
-
- **Fira Code + Fira Sans**
|
|
303
|
-
- **Cascadia Code + Segoe UI**
|
|
301
|
+
- **JetBrains Mono + Inter** - Code-first, UI-second; natural for developer tools.
|
|
302
|
+
- **Fira Code + Fira Sans** - Cohesive family; ligatures available.
|
|
303
|
+
- **Cascadia Code + Segoe UI** - Microsoft's modern dev pair.
|
|
304
304
|
|
|
305
305
|
### Luxury / Fashion
|
|
306
|
-
- **Cormorant + Montserrat**
|
|
307
|
-
- **Bodoni Moda + Jost**
|
|
308
|
-
- **Playfair Display + Raleway**
|
|
306
|
+
- **Cormorant + Montserrat** - High contrast serif + geometric sans; classic luxury.
|
|
307
|
+
- **Bodoni Moda + Jost** - Fashion editorial feel.
|
|
308
|
+
- **Playfair Display + Raleway** - Elegant header + clean body.
|
|
309
309
|
|
|
310
310
|
### Gaming / Entertainment
|
|
311
|
-
- **Syne + DM Sans**
|
|
312
|
-
- **Bebas Neue + Open Sans**
|
|
313
|
-
- **Exo 2 + Roboto**
|
|
311
|
+
- **Syne + DM Sans** - Bold, energetic headers; clean readable body.
|
|
312
|
+
- **Bebas Neue + Open Sans** - Impact headlines; neutral body.
|
|
313
|
+
- **Exo 2 + Roboto** - Futuristic but readable.
|
|
@@ -17,7 +17,7 @@ Every method sits in one of four quadrants defined by two axes: whether the goal
|
|
|
17
17
|
|
|
18
18
|
**Evaluative research** answers "Does this solution work, and how well?" It is appropriate once a concept, prototype, or live product exists. Outputs are pass/fail rates, benchmarks, and ranked preference scores.
|
|
19
19
|
|
|
20
|
-
Mixing quadrants in the same study is usually a mistake
|
|
20
|
+
Mixing quadrants in the same study is usually a mistake - participants primed by evaluation tasks answer generative questions defensively. Plan separate sessions or separate phases.
|
|
21
21
|
|
|
22
22
|
---
|
|
23
23
|
|
|
@@ -25,7 +25,7 @@ Mixing quadrants in the same study is usually a mistake — participants primed
|
|
|
25
25
|
|
|
26
26
|
### Contextual Interviews / User Interviews
|
|
27
27
|
|
|
28
|
-
A contextual interview is a structured or semi-structured conversation conducted in the environment where the work actually happens
|
|
28
|
+
A contextual interview is a structured or semi-structured conversation conducted in the environment where the work actually happens - at a desk, in a kitchen, on a shop floor. A plain user interview happens in a neutral setting (a conference room, a video call) and relies on self-report rather than observation. Contextual interviews surface discrepancies between what people say they do and what they actually do; plain interviews are faster to schedule and sufficient when behavior is verbal or cognitive.
|
|
29
29
|
|
|
30
30
|
**When to use:** Early discovery, when you need to understand goals, mental models, workarounds, and emotional context before any design artifact exists.
|
|
31
31
|
|
|
@@ -34,14 +34,14 @@ A contextual interview is a structured or semi-structured conversation conducted
|
|
|
34
34
|
**Key pitfalls:**
|
|
35
35
|
- Asking leading questions ("Do you find the checkout confusing?") primes the answer
|
|
36
36
|
- Asking hypothetical questions ("Would you use a feature that…?") produces aspirational fiction, not real behavior
|
|
37
|
-
- Failing to probe the last three minutes of a story
|
|
37
|
+
- Failing to probe the last three minutes of a story - "tell me more about that" almost always yields the real insight
|
|
38
38
|
- Recording without consent, or failing to inform participants how data will be used
|
|
39
39
|
|
|
40
40
|
---
|
|
41
41
|
|
|
42
42
|
### Field Observation (Diary Studies, Shadowing)
|
|
43
43
|
|
|
44
|
-
Field observation captures behavior as it naturally unfolds, without a researcher present (diary study) or with a researcher silently present (shadowing). In a **diary study**, participants self-report via a structured log
|
|
44
|
+
Field observation captures behavior as it naturally unfolds, without a researcher present (diary study) or with a researcher silently present (shadowing). In a **diary study**, participants self-report via a structured log - a form, a voice note, or a photo - triggered by an event or a fixed schedule over days to weeks. In **shadowing**, the researcher follows a participant through a real work session and takes notes or records video.
|
|
45
45
|
|
|
46
46
|
**When to use:** When the behavior of interest is distributed across time (diary) or deeply embedded in a physical environment (shadowing); when recall in an interview would be too compressed or distorted.
|
|
47
47
|
|
|
@@ -49,7 +49,7 @@ Field observation captures behavior as it naturally unfolds, without a researche
|
|
|
49
49
|
|
|
50
50
|
**Key pitfalls:**
|
|
51
51
|
- Diary prompts that are too long or too frequent cause abandonment
|
|
52
|
-
- Shadowing creates an observer effect
|
|
52
|
+
- Shadowing creates an observer effect - participants perform "correct" behavior rather than habitual behavior; use this method alongside analytics to cross-check
|
|
53
53
|
- Diary data requires significant cleaning before synthesis; budget time accordingly
|
|
54
54
|
|
|
55
55
|
---
|
|
@@ -63,25 +63,25 @@ A survey collects self-reported data at scale through a fixed set of questions d
|
|
|
63
63
|
**Sample size:** For a ±5% margin of error at 95% confidence in a large population, n = 385. For ±3%, n = 1067. Smaller populations require proportionally larger samples relative to population size.
|
|
64
64
|
|
|
65
65
|
**Key pitfalls:**
|
|
66
|
-
- Question order effects
|
|
67
|
-
- Acquiescence bias
|
|
68
|
-
- Survivorship bias
|
|
66
|
+
- Question order effects - put sensitive or demographic questions last
|
|
67
|
+
- Acquiescence bias - respondents agree with statements regardless of content; use balanced scales (Likert with both positive and negative anchors)
|
|
68
|
+
- Survivorship bias - survey respondents are not the same as non-respondents; a 10% response rate produces a self-selected sample
|
|
69
69
|
- Treating ordinal Likert data as interval data for arithmetic mean comparisons
|
|
70
70
|
|
|
71
71
|
---
|
|
72
72
|
|
|
73
73
|
### Card Sorting
|
|
74
74
|
|
|
75
|
-
Card sorting asks participants to organize a set of labeled cards (representing content, features, or navigation items) into groups that make sense to them. **Open card sorting** lets participants create their own group names
|
|
75
|
+
Card sorting asks participants to organize a set of labeled cards (representing content, features, or navigation items) into groups that make sense to them. **Open card sorting** lets participants create their own group names - this reveals the mental model. **Closed card sorting** provides predefined categories - this tests whether an existing structure matches expectations. **Hybrid card sorting** asks participants to sort into predefined categories but allows them to create new ones when nothing fits.
|
|
76
76
|
|
|
77
|
-
**Output:** Group labels (open) surface vocabulary and categories that match user language. A **dendrogram**
|
|
77
|
+
**Output:** Group labels (open) surface vocabulary and categories that match user language. A **dendrogram** - a tree diagram produced by cluster analysis - shows which cards are grouped together most consistently across participants, revealing the underlying mental model numerically.
|
|
78
78
|
|
|
79
79
|
**When to use:** Before designing information architecture; after tree testing reveals a structure that is failing.
|
|
80
80
|
|
|
81
81
|
**Sample size:** 15–20 participants for open sorting; 30+ for closed sorting where you want statistical confidence in the clusters.
|
|
82
82
|
|
|
83
83
|
**Key pitfalls:**
|
|
84
|
-
- Cards that are ambiguous produce noise, not insight
|
|
84
|
+
- Cards that are ambiguous produce noise, not insight - pilot test card labels first
|
|
85
85
|
- Too many cards (>60) causes fatigue; split into focused subsets
|
|
86
86
|
- Dendrograms look authoritative but are sensitive to the distance algorithm chosen; report the algorithm and test alternative cuts
|
|
87
87
|
|
|
@@ -89,12 +89,12 @@ Card sorting asks participants to organize a set of labeled cards (representing
|
|
|
89
89
|
|
|
90
90
|
### Tree Testing
|
|
91
91
|
|
|
92
|
-
Tree testing evaluates an information architecture by asking participants to find content using only the text labels of a navigation tree
|
|
92
|
+
Tree testing evaluates an information architecture by asking participants to find content using only the text labels of a navigation tree - no visual design, no search, no breadcrumbs. Participants are given a task ("Find the return policy for a purchased item") and navigate the tree until they select a destination. The test isolates whether the structure and labeling work, independent of visual presentation.
|
|
93
93
|
|
|
94
94
|
**Output:**
|
|
95
|
-
- **Success rate**
|
|
96
|
-
- **Directness**
|
|
97
|
-
- **Time on task**
|
|
95
|
+
- **Success rate** - percentage of participants who reached the correct destination. >75% = good; >60% = acceptable; below 60% = the path needs redesign.
|
|
96
|
+
- **Directness** - percentage of successful participants who reached the answer without backtracking. High directness means the path is intuitive; high success with low directness means participants found it eventually but the labels are misleading.
|
|
97
|
+
- **Time on task** - useful for comparing two versions of a tree; not meaningful in isolation.
|
|
98
98
|
|
|
99
99
|
**When to use:** Before building navigation; after card sorting to validate that an IA derived from participant groups actually works for task completion.
|
|
100
100
|
|
|
@@ -102,7 +102,7 @@ Tree testing evaluates an information architecture by asking participants to fin
|
|
|
102
102
|
|
|
103
103
|
**Key pitfalls:**
|
|
104
104
|
- Tasks that hint at the answer ("Find the Privacy section in Settings") teach rather than test
|
|
105
|
-
- A tree that passes at 76% success for one task may still fail for a different task
|
|
105
|
+
- A tree that passes at 76% success for one task may still fail for a different task - test all high-traffic paths
|
|
106
106
|
- Do not test more than 10 tasks per session without randomization to prevent fatigue effects
|
|
107
107
|
|
|
108
108
|
---
|
|
@@ -116,7 +116,7 @@ Preference testing presents two or more design options and asks participants to
|
|
|
116
116
|
**Sample size:** 50–100 participants for a binary preference test to achieve statistically meaningful proportions.
|
|
117
117
|
|
|
118
118
|
**Key pitfalls:**
|
|
119
|
-
- Preference does not equal usability
|
|
119
|
+
- Preference does not equal usability - participants consistently prefer interfaces they can use, but can prefer a beautiful interface they cannot use over an ugly one they can
|
|
120
120
|
- Options must be shown in randomized order to control for primacy and recency bias
|
|
121
121
|
- "Why did you choose this?" follow-ups suffer from post-hoc rationalization; treat qualitative reasons as directional, not causal
|
|
122
122
|
|
|
@@ -131,7 +131,7 @@ A first-click test measures where participants click first when presented with a
|
|
|
131
131
|
**Sample size:** 20–40 participants provides sufficient data for heatmap patterns and task success rates.
|
|
132
132
|
|
|
133
133
|
**Key pitfalls:**
|
|
134
|
-
- A click in the right location for the wrong reason (the participant was guessing) is not a pass
|
|
134
|
+
- A click in the right location for the wrong reason (the participant was guessing) is not a pass - follow up with "why did you click there?"
|
|
135
135
|
- First-click tests do not account for context built up from prior pages; test each page in context when the flow matters
|
|
136
136
|
- Heatmaps with small n look authoritative but individual outlier clicks distort the visualization
|
|
137
137
|
|
|
@@ -146,9 +146,9 @@ A 5-second test exposes participants to a design for exactly five seconds, then
|
|
|
146
146
|
**Sample size:** 20–50 participants; the test is fast enough that larger samples are easy to recruit.
|
|
147
147
|
|
|
148
148
|
**Key pitfalls:**
|
|
149
|
-
- Questions asked immediately after exposure must be closed or very specific
|
|
149
|
+
- Questions asked immediately after exposure must be closed or very specific - open-ended questions produce memory artifacts, not design feedback
|
|
150
150
|
- The 5-second window captures attention and memory, not comprehension or usability; do not use this to predict task performance
|
|
151
|
-
- Results are highly sensitive to the specific question asked
|
|
151
|
+
- Results are highly sensitive to the specific question asked - "What is this page for?" and "What do you remember?" produce different data from the same exposure
|
|
152
152
|
|
|
153
153
|
---
|
|
154
154
|
|
|
@@ -165,7 +165,7 @@ The rule does **not** apply to:
|
|
|
165
165
|
- Surveys where you need generalizable proportions (requires hundreds)
|
|
166
166
|
- A/B tests where you need to detect a treatment effect (requires thousands)
|
|
167
167
|
- Tree tests where success-rate benchmarks must be reliable (requires 50+)
|
|
168
|
-
- Studies with heterogeneous populations
|
|
168
|
+
- Studies with heterogeneous populations - run 5 users per distinct segment
|
|
169
169
|
|
|
170
170
|
Misapplying the "5 users" rule to quantitative contexts is a common and costly error. A sample of five will tell you which problems exist, not how often they occur.
|
|
171
171
|
|
|
@@ -198,7 +198,7 @@ For smaller populations, apply the finite population correction. These figures a
|
|
|
198
198
|
|
|
199
199
|
## Synthesis Techniques
|
|
200
200
|
|
|
201
|
-
Raw research data
|
|
201
|
+
Raw research data - interview transcripts, survey responses, diary entries - does not become insight until it is actively interpreted and structured. Three frameworks cover most synthesis needs.
|
|
202
202
|
|
|
203
203
|
### Affinity Diagrams (KJ Method)
|
|
204
204
|
|
|
@@ -206,11 +206,11 @@ An affinity diagram (developed by Jiro Kawakita, hence KJ method) organizes qual
|
|
|
206
206
|
|
|
207
207
|
**Process:**
|
|
208
208
|
1. Write each distinct observation, quote, or behavior on a separate note (physical or digital)
|
|
209
|
-
2. Silently sort notes into groups based on natural similarity
|
|
209
|
+
2. Silently sort notes into groups based on natural similarity - team members work in parallel, moving notes without discussion
|
|
210
210
|
3. Once sorting slows, name each cluster with a header that captures the insight, not just the topic ("Users abandon checkout when shipping cost appears late" rather than "Shipping")
|
|
211
211
|
4. Merge or split clusters until the structure is stable
|
|
212
212
|
|
|
213
|
-
**When done:** Clustering is complete when new data no longer creates new groups
|
|
213
|
+
**When done:** Clustering is complete when new data no longer creates new groups - typically after three to four passes with a complete data set. If a new interview consistently produces notes that fit existing clusters without creating new ones, theoretical saturation has been reached.
|
|
214
214
|
|
|
215
215
|
### Jobs-to-be-Done
|
|
216
216
|
|
|
@@ -219,9 +219,9 @@ Jobs-to-be-Done (JTBD) frames user behavior around the progress a person is tryi
|
|
|
219
219
|
> **"When I [situation], I want to [motivation/goal], so I can [expected outcome]."**
|
|
220
220
|
|
|
221
221
|
JTBD distinguishes three job layers:
|
|
222
|
-
- **Functional job**
|
|
223
|
-
- **Social job**
|
|
224
|
-
- **Emotional job**
|
|
222
|
+
- **Functional job** - the practical task being accomplished ("When I'm running low on groceries, I want to reorder my usual items quickly, so I can avoid running out")
|
|
223
|
+
- **Social job** - how the person wants to be perceived while doing it ("so my family sees me as organized and dependable")
|
|
224
|
+
- **Emotional job** - how the person wants to feel ("so I don't feel the anxiety of an empty fridge")
|
|
225
225
|
|
|
226
226
|
Designs that serve only the functional job often feel transactional. Designs that also address emotional and social jobs create habitual use and preference. Surface all three layers during synthesis by asking "and why does that matter to you?" until the answer is about identity or feeling, not functionality.
|
|
227
227
|
|
|
@@ -230,11 +230,11 @@ Designs that serve only the functional job often feel transactional. Designs tha
|
|
|
230
230
|
A user journey map visualizes the sequence of steps a user takes to accomplish a goal, annotated with emotional valence, touchpoints, and observations at each step.
|
|
231
231
|
|
|
232
232
|
**Key components:**
|
|
233
|
-
- **Stages**
|
|
234
|
-
- **Touchpoints**
|
|
235
|
-
- **Emotional valence**
|
|
236
|
-
- **Moments of truth**
|
|
237
|
-
- **Pain points and gains**
|
|
233
|
+
- **Stages** - the high-level phases of the experience (Awareness, Onboarding, First Use, Routine Use, Problem Recovery)
|
|
234
|
+
- **Touchpoints** - every channel or interface the user contacts (email, app, support chat, physical receipt)
|
|
235
|
+
- **Emotional valence** - a curve showing frustration, confusion, delight, or confidence at each step, derived from research data, not assumed
|
|
236
|
+
- **Moments of truth** - the two or three steps where user trust is won or lost; these are the highest-impact design targets
|
|
237
|
+
- **Pain points and gains** - specific friction (long wait, confusing label, missing feedback) and specific delights (unexpected shortcut, empathetic error message)
|
|
238
238
|
|
|
239
239
|
A journey map built from assumed experience is a risk document, not a research artifact. Only map journeys from observed or reported user behavior; mark any step built on assumption explicitly so it can be validated.
|
|
240
240
|
|
|
@@ -247,21 +247,21 @@ A/B testing (controlled experiment) measures the causal effect of a design chang
|
|
|
247
247
|
### Sample Size and Power
|
|
248
248
|
|
|
249
249
|
Pre-register the following before running any experiment:
|
|
250
|
-
- **Primary metric**
|
|
251
|
-
- **MDE**
|
|
252
|
-
- **Baseline rate**
|
|
253
|
-
- **Power**
|
|
254
|
-
- **Significance threshold**
|
|
250
|
+
- **Primary metric** - the single metric the test is designed to move (conversion rate, session length, activation)
|
|
251
|
+
- **MDE** - the smallest relative improvement worth shipping; smaller MDEs require larger samples
|
|
252
|
+
- **Baseline rate** - the current value of the primary metric, measured over a representative period
|
|
253
|
+
- **Power** - 80% (β = 0.20) is the standard minimum; 90% is appropriate when the cost of a missed effect is high
|
|
254
|
+
- **Significance threshold** - α = 0.05 (5% Type I error rate) is standard; use α = 0.01 for high-stakes decisions or multiple simultaneous tests
|
|
255
255
|
|
|
256
256
|
### Sequential vs Fixed-Horizon Testing
|
|
257
257
|
|
|
258
|
-
**Fixed-horizon testing** requires committing to a sample size before the experiment begins and not checking results until that sample is collected. Peeking at results and stopping early when significance is reached inflates the Type I error rate dramatically
|
|
258
|
+
**Fixed-horizon testing** requires committing to a sample size before the experiment begins and not checking results until that sample is collected. Peeking at results and stopping early when significance is reached inflates the Type I error rate dramatically - running 20 checks at α = 0.05 raises the effective false-positive rate to ~64%.
|
|
259
259
|
|
|
260
260
|
**Sequential testing** (e.g., using always-valid confidence sequences or mSPRT methods) allows early stopping while controlling error rates. It is safer when experiments run on volatile traffic or when shipping quickly matters. Sequential tests typically require 20–30% more total sample on average but eliminate the false-positive inflation from peeking. Use sequential testing as the default when your tooling supports it.
|
|
261
261
|
|
|
262
262
|
### Primary Metric vs Guardrail Metrics
|
|
263
263
|
|
|
264
|
-
Before launching any test, define the **guardrail metrics**
|
|
264
|
+
Before launching any test, define the **guardrail metrics** - the metrics that must not decline as a condition of shipping, regardless of the primary metric result.
|
|
265
265
|
|
|
266
266
|
- **Primary metric:** checkout completion rate
|
|
267
267
|
- **Guardrail metrics:** page load time (must not increase >50ms), return rate (must not increase >1pp), customer support contact rate (must not increase)
|
|
@@ -270,7 +270,7 @@ A treatment that improves checkout completion by 8% while increasing support con
|
|
|
270
270
|
|
|
271
271
|
### Novelty Effect
|
|
272
272
|
|
|
273
|
-
New UI patterns, colors, or flows often see inflated positive effects in the first week because users engage with anything that is different. To avoid shipping a change that performs well only because it is new, run experiments for **at least two full business cycles** (typically two weeks for B2C products) before reading results. Monitor the treatment effect over time
|
|
273
|
+
New UI patterns, colors, or flows often see inflated positive effects in the first week because users engage with anything that is different. To avoid shipping a change that performs well only because it is new, run experiments for **at least two full business cycles** (typically two weeks for B2C products) before reading results. Monitor the treatment effect over time - a novelty lift decays; a genuine improvement holds flat or grows.
|
|
274
274
|
|
|
275
275
|
---
|
|
276
276
|
|
|
@@ -282,9 +282,9 @@ Quantitative analytics tells you what users are doing at scale, but it cannot te
|
|
|
282
282
|
|
|
283
283
|
A funnel analysis counts users at each step of a defined sequence (landing → sign-up → onboarding → first key action → activation) and reports the drop-off rate between steps. A large drop between two steps identifies a problem worth investigating; it does not explain the cause.
|
|
284
284
|
|
|
285
|
-
**Correct interpretation:** "60% of users who start sign-up do not complete it
|
|
285
|
+
**Correct interpretation:** "60% of users who start sign-up do not complete it - this step warrants usability testing and exit surveys."
|
|
286
286
|
|
|
287
|
-
**Incorrect interpretation:** "The sign-up form is confusing
|
|
287
|
+
**Incorrect interpretation:** "The sign-up form is confusing - we should simplify it." Funnels explain what, not why. The drop may be caused by form friction, price discovery too late, technical errors on specific devices, or users deliberately deferring. Research the step before redesigning it.
|
|
288
288
|
|
|
289
289
|
### Cohort Retention Curves
|
|
290
290
|
|
|
@@ -292,7 +292,7 @@ A cohort retention curve shows what percentage of users acquired in a given peri
|
|
|
292
292
|
|
|
293
293
|
- **Early drop (Day 1–3):** Users are not completing onboarding or are not reaching the first moment of value; the onboarding flow is the design target
|
|
294
294
|
- **Mid drop (Day 7–14):** Users completed onboarding but are not forming a usage habit; engagement features (reminders, progress, social hooks) and the core loop are the design targets
|
|
295
|
-
- **Late drop (Day 30+):** Users had a habit but lost it; this indicates habit failure, not acquisition or onboarding issues
|
|
295
|
+
- **Late drop (Day 30+):** Users had a habit but lost it; this indicates habit failure, not acquisition or onboarding issues - investigate trigger frequency, competing alternatives, and changing life context
|
|
296
296
|
|
|
297
297
|
A flat retention curve (asymptoting above zero) is the signal that product-market fit exists for at least a subset of users.
|
|
298
298
|
|
|
@@ -304,17 +304,17 @@ Heatmaps aggregate mouse movement, scroll depth, and click positions across many
|
|
|
304
304
|
- **Click heatmaps lie on dynamic content.** Carousels, tabs, and modal triggers change what is rendered at a coordinate; aggregated clicks on a static screenshot misrepresent where those clicks actually landed.
|
|
305
305
|
- **Move maps are proxies.** Eye-tracking research shows mouse position correlates with gaze only roughly (r ≈ 0.64); do not treat move heatmaps as attention maps.
|
|
306
306
|
|
|
307
|
-
Use heatmaps to generate hypotheses ("Almost nobody clicks the secondary CTA
|
|
307
|
+
Use heatmaps to generate hypotheses ("Almost nobody clicks the secondary CTA - maybe it is not visible enough at typical scroll depths") and confirm those hypotheses with usability testing or A/B tests.
|
|
308
308
|
|
|
309
309
|
### Session Recordings
|
|
310
310
|
|
|
311
311
|
Session recordings capture individual user interactions as video replays. They are the analytics tool closest to observational research and the most time-intensive to analyze at scale.
|
|
312
312
|
|
|
313
313
|
**Patterns that indicate design problems:**
|
|
314
|
-
- **Rage clicks**
|
|
315
|
-
- **Dead clicks**
|
|
316
|
-
- **Scroll-and-return patterns**
|
|
317
|
-
- **U-turns on multi-step flows**
|
|
314
|
+
- **Rage clicks** - repeated rapid clicks on an element, indicating the user believes something should be clickable and it is not (or it is broken)
|
|
315
|
+
- **Dead clicks** - clicks on non-interactive elements, indicating visual affordance is misleading
|
|
316
|
+
- **Scroll-and-return patterns** - the user scrolls past a point, returns, and re-reads it, indicating the content is ambiguous or the action they need is not where they expected it
|
|
317
|
+
- **U-turns on multi-step flows** - navigating forward then immediately back, indicating confusion or missing information at the forward step
|
|
318
318
|
|
|
319
319
|
Sampling strategy matters: watch recordings filtered by the segment of users you are trying to understand (new users on mobile, users who abandoned checkout) rather than random sessions. Random sessions produce anecdote, not insight.
|
|
320
320
|
|
|
@@ -322,28 +322,28 @@ Sampling strategy matters: watch recordings filtered by the segment of users you
|
|
|
322
322
|
|
|
323
323
|
## Research Ethics
|
|
324
324
|
|
|
325
|
-
Ethical research practice is not only a moral obligation
|
|
325
|
+
Ethical research practice is not only a moral obligation - it also produces better data. Participants who feel respected and safe give more candid and accurate responses.
|
|
326
326
|
|
|
327
327
|
### Informed Consent
|
|
328
328
|
|
|
329
|
-
Every participant must be told, before the session begins: what they will be asked to do, how long it will take, whether the session will be recorded (audio, video, or screen), who will have access to recordings and data, and how data will be stored and eventually deleted. Consent must be explicit and voluntary
|
|
329
|
+
Every participant must be told, before the session begins: what they will be asked to do, how long it will take, whether the session will be recorded (audio, video, or screen), who will have access to recordings and data, and how data will be stored and eventually deleted. Consent must be explicit and voluntary - a participant who feels they cannot say no has not given meaningful consent.
|
|
330
330
|
|
|
331
331
|
For unmoderated remote studies (tree tests, surveys, unmoderated usability tests), informed consent is captured in a pre-task screen that participants must actively acknowledge before proceeding.
|
|
332
332
|
|
|
333
333
|
### Observer Effect
|
|
334
334
|
|
|
335
|
-
The presence of a researcher
|
|
335
|
+
The presence of a researcher - or even the knowledge that behavior is being observed - changes that behavior. Participants tend to perform more carefully, ask more clarifying questions, and avoid the shortcuts and workarounds that characterize natural use. This is the Hawthorne effect applied to usability research.
|
|
336
336
|
|
|
337
337
|
**Mitigations:**
|
|
338
338
|
- Use diary studies and screen recordings to capture naturalistic behavior without researcher presence
|
|
339
339
|
- In moderated sessions, use indirect tasks ("Show me how you would accomplish X") rather than direct observation ("Try to do X while I watch")
|
|
340
|
-
- Cross-reference moderated findings with analytics
|
|
340
|
+
- Cross-reference moderated findings with analytics - discrepancies between observed behavior and logged behavior indicate observer effect
|
|
341
341
|
|
|
342
342
|
### Data Minimization
|
|
343
343
|
|
|
344
344
|
Collect only the data you will actually analyze. If the research question does not require knowing a participant's age, do not ask for it. If screen recordings will not be reviewed, do not record them. At rest, research data should be:
|
|
345
345
|
- Stored in access-controlled systems, not personal drives or shared folders
|
|
346
|
-
- Anonymized or pseudonymized
|
|
346
|
+
- Anonymized or pseudonymized - names replaced with participant IDs, identifying details removed from quotes before sharing
|
|
347
347
|
- Deleted on a defined schedule once the synthesis is complete
|
|
348
348
|
|
|
349
349
|
Retaining raw recordings indefinitely is a liability, not a resource.
|
|
@@ -354,7 +354,7 @@ Research involving **children under 13**, **users with cognitive or developmenta
|
|
|
354
354
|
|
|
355
355
|
- Parental or guardian consent for minors, in addition to the participant's own assent
|
|
356
356
|
- Simplified consent language and extended time for participants with cognitive disabilities
|
|
357
|
-
- Safeguarding protocols
|
|
357
|
+
- Safeguarding protocols - a defined plan for what happens if a participant discloses distress during a session
|
|
358
358
|
- Avoiding incentive structures that exploit vulnerability (large cash payments to economically precarious participants create coercive pressure)
|
|
359
359
|
|
|
360
360
|
When in doubt about whether a population qualifies for heightened review, treat them as though they do. The cost of over-protecting participants is low; the cost of under-protecting them is not.
|