@wazir-dev/cli 1.0.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/AGENTS.md +111 -0
- package/CHANGELOG.md +14 -0
- package/CONTRIBUTING.md +101 -0
- package/LICENSE +21 -0
- package/README.md +314 -0
- package/assets/composition-engine.mmd +34 -0
- package/assets/demo-script.sh +17 -0
- package/assets/logo-dark.svg +14 -0
- package/assets/logo.svg +14 -0
- package/assets/pipeline.mmd +39 -0
- package/assets/record-demo.sh +51 -0
- package/docs/README.md +51 -0
- package/docs/adapters/context-mode.md +60 -0
- package/docs/concepts/architecture.md +87 -0
- package/docs/concepts/artifact-model.md +60 -0
- package/docs/concepts/composition-engine.md +36 -0
- package/docs/concepts/indexing-and-recall.md +160 -0
- package/docs/concepts/observability.md +41 -0
- package/docs/concepts/roles-and-workflows.md +59 -0
- package/docs/concepts/terminology-policy.md +27 -0
- package/docs/getting-started/01-installation.md +78 -0
- package/docs/getting-started/02-first-run.md +102 -0
- package/docs/getting-started/03-adding-to-project.md +15 -0
- package/docs/getting-started/04-host-setup.md +15 -0
- package/docs/guides/ci-integration.md +15 -0
- package/docs/guides/creating-skills.md +15 -0
- package/docs/guides/expertise-module-authoring.md +15 -0
- package/docs/guides/hook-development.md +15 -0
- package/docs/guides/memory-and-learnings.md +34 -0
- package/docs/guides/multi-host-export.md +15 -0
- package/docs/guides/troubleshooting.md +101 -0
- package/docs/guides/writing-custom-roles.md +15 -0
- package/docs/plans/2026-03-15-cli-pipeline-integration-design.md +592 -0
- package/docs/plans/2026-03-15-cli-pipeline-integration-plan.md +598 -0
- package/docs/plans/2026-03-15-docs-enforcement-plan.md +238 -0
- package/docs/readmes/INDEX.md +99 -0
- package/docs/readmes/features/expertise/README.md +171 -0
- package/docs/readmes/features/exports/README.md +222 -0
- package/docs/readmes/features/hooks/README.md +103 -0
- package/docs/readmes/features/hooks/loop-cap-guard.md +133 -0
- package/docs/readmes/features/hooks/post-tool-capture.md +121 -0
- package/docs/readmes/features/hooks/post-tool-lint.md +130 -0
- package/docs/readmes/features/hooks/pre-compact-summary.md +122 -0
- package/docs/readmes/features/hooks/pre-tool-capture-route.md +100 -0
- package/docs/readmes/features/hooks/protected-path-write-guard.md +128 -0
- package/docs/readmes/features/hooks/session-start.md +119 -0
- package/docs/readmes/features/hooks/stop-handoff-harvest.md +125 -0
- package/docs/readmes/features/roles/README.md +157 -0
- package/docs/readmes/features/roles/clarifier.md +152 -0
- package/docs/readmes/features/roles/content-author.md +190 -0
- package/docs/readmes/features/roles/designer.md +193 -0
- package/docs/readmes/features/roles/executor.md +184 -0
- package/docs/readmes/features/roles/learner.md +210 -0
- package/docs/readmes/features/roles/planner.md +182 -0
- package/docs/readmes/features/roles/researcher.md +164 -0
- package/docs/readmes/features/roles/reviewer.md +184 -0
- package/docs/readmes/features/roles/specifier.md +162 -0
- package/docs/readmes/features/roles/verifier.md +215 -0
- package/docs/readmes/features/schemas/README.md +178 -0
- package/docs/readmes/features/skills/README.md +63 -0
- package/docs/readmes/features/skills/brainstorming.md +96 -0
- package/docs/readmes/features/skills/debugging.md +148 -0
- package/docs/readmes/features/skills/design.md +120 -0
- package/docs/readmes/features/skills/prepare-next.md +109 -0
- package/docs/readmes/features/skills/run-audit.md +159 -0
- package/docs/readmes/features/skills/scan-project.md +109 -0
- package/docs/readmes/features/skills/self-audit.md +176 -0
- package/docs/readmes/features/skills/tdd.md +137 -0
- package/docs/readmes/features/skills/using-skills.md +92 -0
- package/docs/readmes/features/skills/verification.md +120 -0
- package/docs/readmes/features/skills/writing-plans.md +104 -0
- package/docs/readmes/features/tooling/README.md +320 -0
- package/docs/readmes/features/workflows/README.md +186 -0
- package/docs/readmes/features/workflows/author.md +181 -0
- package/docs/readmes/features/workflows/clarify.md +154 -0
- package/docs/readmes/features/workflows/design-review.md +171 -0
- package/docs/readmes/features/workflows/design.md +169 -0
- package/docs/readmes/features/workflows/discover.md +162 -0
- package/docs/readmes/features/workflows/execute.md +173 -0
- package/docs/readmes/features/workflows/learn.md +167 -0
- package/docs/readmes/features/workflows/plan-review.md +165 -0
- package/docs/readmes/features/workflows/plan.md +170 -0
- package/docs/readmes/features/workflows/prepare-next.md +167 -0
- package/docs/readmes/features/workflows/review.md +169 -0
- package/docs/readmes/features/workflows/run-audit.md +191 -0
- package/docs/readmes/features/workflows/spec-challenge.md +159 -0
- package/docs/readmes/features/workflows/specify.md +160 -0
- package/docs/readmes/features/workflows/verify.md +177 -0
- package/docs/readmes/packages/README.md +50 -0
- package/docs/readmes/packages/ajv.md +117 -0
- package/docs/readmes/packages/context-mode.md +118 -0
- package/docs/readmes/packages/gray-matter.md +116 -0
- package/docs/readmes/packages/node-test.md +137 -0
- package/docs/readmes/packages/yaml.md +112 -0
- package/docs/reference/configuration-reference.md +159 -0
- package/docs/reference/expertise-index.md +52 -0
- package/docs/reference/git-flow.md +43 -0
- package/docs/reference/hooks.md +87 -0
- package/docs/reference/host-exports.md +50 -0
- package/docs/reference/launch-checklist.md +172 -0
- package/docs/reference/marketplace-listings.md +76 -0
- package/docs/reference/release-process.md +34 -0
- package/docs/reference/roles-reference.md +77 -0
- package/docs/reference/skills.md +33 -0
- package/docs/reference/templates.md +29 -0
- package/docs/reference/tooling-cli.md +94 -0
- package/docs/truth-claims.yaml +222 -0
- package/expertise/PROGRESS.md +63 -0
- package/expertise/README.md +18 -0
- package/expertise/antipatterns/PROGRESS.md +56 -0
- package/expertise/antipatterns/backend/api-design-antipatterns.md +1271 -0
- package/expertise/antipatterns/backend/auth-antipatterns.md +1195 -0
- package/expertise/antipatterns/backend/caching-antipatterns.md +622 -0
- package/expertise/antipatterns/backend/database-antipatterns.md +1038 -0
- package/expertise/antipatterns/backend/index.md +24 -0
- package/expertise/antipatterns/backend/microservices-antipatterns.md +850 -0
- package/expertise/antipatterns/code/architecture-antipatterns.md +919 -0
- package/expertise/antipatterns/code/async-antipatterns.md +622 -0
- package/expertise/antipatterns/code/code-smells.md +1186 -0
- package/expertise/antipatterns/code/dependency-antipatterns.md +1209 -0
- package/expertise/antipatterns/code/error-handling-antipatterns.md +1360 -0
- package/expertise/antipatterns/code/index.md +27 -0
- package/expertise/antipatterns/code/naming-and-abstraction.md +1118 -0
- package/expertise/antipatterns/code/state-management-antipatterns.md +1076 -0
- package/expertise/antipatterns/code/testing-antipatterns.md +1053 -0
- package/expertise/antipatterns/design/accessibility-antipatterns.md +1136 -0
- package/expertise/antipatterns/design/dark-patterns.md +1121 -0
- package/expertise/antipatterns/design/index.md +22 -0
- package/expertise/antipatterns/design/ui-antipatterns.md +1202 -0
- package/expertise/antipatterns/design/ux-antipatterns.md +680 -0
- package/expertise/antipatterns/frontend/css-layout-antipatterns.md +691 -0
- package/expertise/antipatterns/frontend/flutter-antipatterns.md +1827 -0
- package/expertise/antipatterns/frontend/index.md +23 -0
- package/expertise/antipatterns/frontend/mobile-antipatterns.md +573 -0
- package/expertise/antipatterns/frontend/react-antipatterns.md +1128 -0
- package/expertise/antipatterns/frontend/spa-antipatterns.md +1235 -0
- package/expertise/antipatterns/index.md +31 -0
- package/expertise/antipatterns/performance/index.md +20 -0
- package/expertise/antipatterns/performance/performance-antipatterns.md +1013 -0
- package/expertise/antipatterns/performance/premature-optimization.md +623 -0
- package/expertise/antipatterns/performance/scaling-antipatterns.md +785 -0
- package/expertise/antipatterns/process/ai-coding-antipatterns.md +853 -0
- package/expertise/antipatterns/process/code-review-antipatterns.md +656 -0
- package/expertise/antipatterns/process/deployment-antipatterns.md +920 -0
- package/expertise/antipatterns/process/index.md +23 -0
- package/expertise/antipatterns/process/technical-debt-antipatterns.md +647 -0
- package/expertise/antipatterns/security/index.md +20 -0
- package/expertise/antipatterns/security/secrets-antipatterns.md +849 -0
- package/expertise/antipatterns/security/security-theater.md +843 -0
- package/expertise/antipatterns/security/vulnerability-patterns.md +801 -0
- package/expertise/architecture/PROGRESS.md +70 -0
- package/expertise/architecture/data/caching-architecture.md +671 -0
- package/expertise/architecture/data/data-consistency.md +574 -0
- package/expertise/architecture/data/data-modeling.md +536 -0
- package/expertise/architecture/data/event-streams-and-queues.md +634 -0
- package/expertise/architecture/data/index.md +25 -0
- package/expertise/architecture/data/search-architecture.md +663 -0
- package/expertise/architecture/data/sql-vs-nosql.md +708 -0
- package/expertise/architecture/decisions/architecture-decision-records.md +640 -0
- package/expertise/architecture/decisions/build-vs-buy.md +616 -0
- package/expertise/architecture/decisions/index.md +23 -0
- package/expertise/architecture/decisions/monolith-to-microservices.md +790 -0
- package/expertise/architecture/decisions/technology-selection.md +616 -0
- package/expertise/architecture/distributed/cap-theorem-and-tradeoffs.md +800 -0
- package/expertise/architecture/distributed/circuit-breaker-bulkhead.md +741 -0
- package/expertise/architecture/distributed/consensus-and-coordination.md +796 -0
- package/expertise/architecture/distributed/distributed-systems-fundamentals.md +564 -0
- package/expertise/architecture/distributed/idempotency-and-retry.md +796 -0
- package/expertise/architecture/distributed/index.md +25 -0
- package/expertise/architecture/distributed/saga-pattern.md +797 -0
- package/expertise/architecture/foundations/architectural-thinking.md +460 -0
- package/expertise/architecture/foundations/coupling-and-cohesion.md +770 -0
- package/expertise/architecture/foundations/design-principles-solid.md +649 -0
- package/expertise/architecture/foundations/domain-driven-design.md +719 -0
- package/expertise/architecture/foundations/index.md +25 -0
- package/expertise/architecture/foundations/separation-of-concerns.md +472 -0
- package/expertise/architecture/foundations/twelve-factor-app.md +797 -0
- package/expertise/architecture/index.md +34 -0
- package/expertise/architecture/integration/api-design-graphql.md +638 -0
- package/expertise/architecture/integration/api-design-grpc.md +804 -0
- package/expertise/architecture/integration/api-design-rest.md +892 -0
- package/expertise/architecture/integration/index.md +25 -0
- package/expertise/architecture/integration/third-party-integration.md +795 -0
- package/expertise/architecture/integration/webhooks-and-callbacks.md +1152 -0
- package/expertise/architecture/integration/websockets-realtime.md +791 -0
- package/expertise/architecture/mobile-architecture/index.md +22 -0
- package/expertise/architecture/mobile-architecture/mobile-app-architecture.md +780 -0
- package/expertise/architecture/mobile-architecture/mobile-backend-for-frontend.md +670 -0
- package/expertise/architecture/mobile-architecture/offline-first.md +719 -0
- package/expertise/architecture/mobile-architecture/push-and-sync.md +782 -0
- package/expertise/architecture/patterns/cqrs-event-sourcing.md +717 -0
- package/expertise/architecture/patterns/event-driven.md +797 -0
- package/expertise/architecture/patterns/hexagonal-clean-architecture.md +870 -0
- package/expertise/architecture/patterns/index.md +27 -0
- package/expertise/architecture/patterns/layered-architecture.md +736 -0
- package/expertise/architecture/patterns/microservices.md +753 -0
- package/expertise/architecture/patterns/modular-monolith.md +692 -0
- package/expertise/architecture/patterns/monolith.md +626 -0
- package/expertise/architecture/patterns/plugin-architecture.md +735 -0
- package/expertise/architecture/patterns/serverless.md +780 -0
- package/expertise/architecture/scaling/database-scaling.md +615 -0
- package/expertise/architecture/scaling/feature-flags-and-rollouts.md +757 -0
- package/expertise/architecture/scaling/horizontal-vs-vertical.md +606 -0
- package/expertise/architecture/scaling/index.md +24 -0
- package/expertise/architecture/scaling/multi-tenancy.md +800 -0
- package/expertise/architecture/scaling/stateless-design.md +787 -0
- package/expertise/backend/embedded-firmware.md +625 -0
- package/expertise/backend/go.md +853 -0
- package/expertise/backend/index.md +24 -0
- package/expertise/backend/java-spring.md +448 -0
- package/expertise/backend/node-typescript.md +625 -0
- package/expertise/backend/python-fastapi.md +724 -0
- package/expertise/backend/rust.md +458 -0
- package/expertise/backend/solidity.md +711 -0
- package/expertise/composition-map.yaml +443 -0
- package/expertise/content/foundations/content-modeling.md +395 -0
- package/expertise/content/foundations/editorial-standards.md +449 -0
- package/expertise/content/foundations/index.md +24 -0
- package/expertise/content/foundations/microcopy.md +455 -0
- package/expertise/content/foundations/terminology-governance.md +509 -0
- package/expertise/content/index.md +34 -0
- package/expertise/content/patterns/accessibility-copy.md +518 -0
- package/expertise/content/patterns/index.md +24 -0
- package/expertise/content/patterns/notification-content.md +433 -0
- package/expertise/content/patterns/sample-content.md +486 -0
- package/expertise/content/patterns/state-copy.md +439 -0
- package/expertise/design/PROGRESS.md +58 -0
- package/expertise/design/disciplines/dark-mode-theming.md +577 -0
- package/expertise/design/disciplines/design-systems.md +595 -0
- package/expertise/design/disciplines/index.md +25 -0
- package/expertise/design/disciplines/information-architecture.md +800 -0
- package/expertise/design/disciplines/interaction-design.md +788 -0
- package/expertise/design/disciplines/responsive-design.md +552 -0
- package/expertise/design/disciplines/usability-testing.md +516 -0
- package/expertise/design/disciplines/user-research.md +792 -0
- package/expertise/design/foundations/accessibility-design.md +796 -0
- package/expertise/design/foundations/color-theory.md +797 -0
- package/expertise/design/foundations/iconography.md +795 -0
- package/expertise/design/foundations/index.md +26 -0
- package/expertise/design/foundations/motion-and-animation.md +653 -0
- package/expertise/design/foundations/rtl-design.md +585 -0
- package/expertise/design/foundations/spacing-and-layout.md +607 -0
- package/expertise/design/foundations/typography.md +800 -0
- package/expertise/design/foundations/visual-hierarchy.md +761 -0
- package/expertise/design/index.md +32 -0
- package/expertise/design/patterns/authentication-flows.md +474 -0
- package/expertise/design/patterns/content-consumption.md +789 -0
- package/expertise/design/patterns/data-display.md +618 -0
- package/expertise/design/patterns/e-commerce.md +1494 -0
- package/expertise/design/patterns/feedback-and-states.md +642 -0
- package/expertise/design/patterns/forms-and-input.md +819 -0
- package/expertise/design/patterns/gamification.md +801 -0
- package/expertise/design/patterns/index.md +31 -0
- package/expertise/design/patterns/microinteractions.md +449 -0
- package/expertise/design/patterns/navigation.md +800 -0
- package/expertise/design/patterns/notifications.md +705 -0
- package/expertise/design/patterns/onboarding.md +700 -0
- package/expertise/design/patterns/search-and-filter.md +601 -0
- package/expertise/design/patterns/settings-and-preferences.md +768 -0
- package/expertise/design/patterns/social-and-community.md +748 -0
- package/expertise/design/platforms/desktop-native.md +612 -0
- package/expertise/design/platforms/index.md +25 -0
- package/expertise/design/platforms/mobile-android.md +825 -0
- package/expertise/design/platforms/mobile-cross-platform.md +983 -0
- package/expertise/design/platforms/mobile-ios.md +699 -0
- package/expertise/design/platforms/tablet.md +794 -0
- package/expertise/design/platforms/web-dashboard.md +790 -0
- package/expertise/design/platforms/web-responsive.md +550 -0
- package/expertise/design/psychology/behavioral-nudges.md +449 -0
- package/expertise/design/psychology/cognitive-load.md +1191 -0
- package/expertise/design/psychology/error-psychology.md +778 -0
- package/expertise/design/psychology/index.md +22 -0
- package/expertise/design/psychology/persuasive-design.md +736 -0
- package/expertise/design/psychology/user-mental-models.md +623 -0
- package/expertise/design/tooling/open-pencil.md +266 -0
- package/expertise/frontend/angular.md +1073 -0
- package/expertise/frontend/desktop-electron.md +546 -0
- package/expertise/frontend/flutter.md +782 -0
- package/expertise/frontend/index.md +27 -0
- package/expertise/frontend/native-android.md +409 -0
- package/expertise/frontend/native-ios.md +490 -0
- package/expertise/frontend/react-native.md +1160 -0
- package/expertise/frontend/react.md +808 -0
- package/expertise/frontend/vue.md +1089 -0
- package/expertise/humanize/domain-rules-code.md +79 -0
- package/expertise/humanize/domain-rules-content.md +67 -0
- package/expertise/humanize/domain-rules-technical-docs.md +56 -0
- package/expertise/humanize/index.md +35 -0
- package/expertise/humanize/self-audit-checklist.md +87 -0
- package/expertise/humanize/sentence-patterns.md +218 -0
- package/expertise/humanize/vocabulary-blacklist.md +105 -0
- package/expertise/i18n/PROGRESS.md +65 -0
- package/expertise/i18n/advanced/accessibility-and-i18n.md +28 -0
- package/expertise/i18n/advanced/bidirectional-text-algorithm.md +38 -0
- package/expertise/i18n/advanced/complex-scripts.md +30 -0
- package/expertise/i18n/advanced/performance-and-i18n.md +27 -0
- package/expertise/i18n/advanced/testing-i18n.md +28 -0
- package/expertise/i18n/content/content-adaptation.md +23 -0
- package/expertise/i18n/content/locale-specific-formatting.md +23 -0
- package/expertise/i18n/content/machine-translation-integration.md +28 -0
- package/expertise/i18n/content/translation-management.md +29 -0
- package/expertise/i18n/foundations/date-time-calendars.md +67 -0
- package/expertise/i18n/foundations/i18n-architecture.md +272 -0
- package/expertise/i18n/foundations/locale-and-language-tags.md +79 -0
- package/expertise/i18n/foundations/numbers-currency-units.md +61 -0
- package/expertise/i18n/foundations/pluralization-and-gender.md +109 -0
- package/expertise/i18n/foundations/string-externalization.md +236 -0
- package/expertise/i18n/foundations/text-direction-bidi.md +241 -0
- package/expertise/i18n/foundations/unicode-and-encoding.md +86 -0
- package/expertise/i18n/index.md +38 -0
- package/expertise/i18n/platform/backend-i18n.md +31 -0
- package/expertise/i18n/platform/flutter-i18n.md +148 -0
- package/expertise/i18n/platform/native-android-i18n.md +36 -0
- package/expertise/i18n/platform/native-ios-i18n.md +36 -0
- package/expertise/i18n/platform/react-i18n.md +103 -0
- package/expertise/i18n/platform/web-css-i18n.md +81 -0
- package/expertise/i18n/rtl/arabic-specific.md +175 -0
- package/expertise/i18n/rtl/hebrew-specific.md +149 -0
- package/expertise/i18n/rtl/rtl-animations-and-transitions.md +111 -0
- package/expertise/i18n/rtl/rtl-forms-and-input.md +161 -0
- package/expertise/i18n/rtl/rtl-fundamentals.md +211 -0
- package/expertise/i18n/rtl/rtl-icons-and-images.md +181 -0
- package/expertise/i18n/rtl/rtl-layout-mirroring.md +252 -0
- package/expertise/i18n/rtl/rtl-navigation-and-gestures.md +107 -0
- package/expertise/i18n/rtl/rtl-testing-and-qa.md +147 -0
- package/expertise/i18n/rtl/rtl-typography.md +160 -0
- package/expertise/index.md +113 -0
- package/expertise/index.yaml +216 -0
- package/expertise/infrastructure/cloud-aws.md +597 -0
- package/expertise/infrastructure/cloud-gcp.md +599 -0
- package/expertise/infrastructure/cybersecurity.md +816 -0
- package/expertise/infrastructure/database-mongodb.md +447 -0
- package/expertise/infrastructure/database-postgres.md +400 -0
- package/expertise/infrastructure/devops-cicd.md +787 -0
- package/expertise/infrastructure/index.md +27 -0
- package/expertise/performance/PROGRESS.md +50 -0
- package/expertise/performance/backend/api-latency.md +1204 -0
- package/expertise/performance/backend/background-jobs.md +506 -0
- package/expertise/performance/backend/connection-pooling.md +1209 -0
- package/expertise/performance/backend/database-query-optimization.md +515 -0
- package/expertise/performance/backend/index.md +23 -0
- package/expertise/performance/backend/rate-limiting-and-throttling.md +971 -0
- package/expertise/performance/foundations/algorithmic-complexity.md +954 -0
- package/expertise/performance/foundations/caching-strategies.md +489 -0
- package/expertise/performance/foundations/concurrency-and-parallelism.md +847 -0
- package/expertise/performance/foundations/index.md +24 -0
- package/expertise/performance/foundations/measuring-and-profiling.md +440 -0
- package/expertise/performance/foundations/memory-management.md +964 -0
- package/expertise/performance/foundations/performance-budgets.md +1314 -0
- package/expertise/performance/index.md +31 -0
- package/expertise/performance/infrastructure/auto-scaling.md +1059 -0
- package/expertise/performance/infrastructure/cdn-and-edge.md +1081 -0
- package/expertise/performance/infrastructure/index.md +22 -0
- package/expertise/performance/infrastructure/load-balancing.md +1081 -0
- package/expertise/performance/infrastructure/observability.md +1079 -0
- package/expertise/performance/mobile/index.md +23 -0
- package/expertise/performance/mobile/mobile-animations.md +544 -0
- package/expertise/performance/mobile/mobile-memory-battery.md +416 -0
- package/expertise/performance/mobile/mobile-network.md +452 -0
- package/expertise/performance/mobile/mobile-rendering.md +599 -0
- package/expertise/performance/mobile/mobile-startup-time.md +505 -0
- package/expertise/performance/platform-specific/flutter-performance.md +647 -0
- package/expertise/performance/platform-specific/index.md +22 -0
- package/expertise/performance/platform-specific/node-performance.md +1307 -0
- package/expertise/performance/platform-specific/postgres-performance.md +1366 -0
- package/expertise/performance/platform-specific/react-performance.md +1403 -0
- package/expertise/performance/web/bundle-optimization.md +1239 -0
- package/expertise/performance/web/image-and-media.md +636 -0
- package/expertise/performance/web/index.md +24 -0
- package/expertise/performance/web/network-optimization.md +1133 -0
- package/expertise/performance/web/rendering-performance.md +1098 -0
- package/expertise/performance/web/ssr-and-hydration.md +918 -0
- package/expertise/performance/web/web-vitals.md +1374 -0
- package/expertise/quality/accessibility.md +985 -0
- package/expertise/quality/evidence-based-verification.md +499 -0
- package/expertise/quality/index.md +24 -0
- package/expertise/quality/ml-model-audit.md +614 -0
- package/expertise/quality/performance.md +600 -0
- package/expertise/quality/testing-api.md +891 -0
- package/expertise/quality/testing-mobile.md +496 -0
- package/expertise/quality/testing-web.md +849 -0
- package/expertise/security/PROGRESS.md +54 -0
- package/expertise/security/agentic-identity.md +540 -0
- package/expertise/security/compliance-frameworks.md +601 -0
- package/expertise/security/data/data-encryption.md +364 -0
- package/expertise/security/data/data-privacy-gdpr.md +692 -0
- package/expertise/security/data/database-security.md +1171 -0
- package/expertise/security/data/index.md +22 -0
- package/expertise/security/data/pii-handling.md +531 -0
- package/expertise/security/foundations/authentication.md +1041 -0
- package/expertise/security/foundations/authorization.md +603 -0
- package/expertise/security/foundations/cryptography.md +1001 -0
- package/expertise/security/foundations/index.md +25 -0
- package/expertise/security/foundations/owasp-top-10.md +1354 -0
- package/expertise/security/foundations/secrets-management.md +1217 -0
- package/expertise/security/foundations/secure-sdlc.md +700 -0
- package/expertise/security/foundations/supply-chain-security.md +698 -0
- package/expertise/security/index.md +31 -0
- package/expertise/security/infrastructure/cloud-security-aws.md +1296 -0
- package/expertise/security/infrastructure/cloud-security-gcp.md +1376 -0
- package/expertise/security/infrastructure/container-security.md +721 -0
- package/expertise/security/infrastructure/incident-response.md +1295 -0
- package/expertise/security/infrastructure/index.md +24 -0
- package/expertise/security/infrastructure/logging-and-monitoring.md +1618 -0
- package/expertise/security/infrastructure/network-security.md +1337 -0
- package/expertise/security/mobile/index.md +23 -0
- package/expertise/security/mobile/mobile-android-security.md +1218 -0
- package/expertise/security/mobile/mobile-binary-protection.md +1229 -0
- package/expertise/security/mobile/mobile-data-storage.md +1265 -0
- package/expertise/security/mobile/mobile-ios-security.md +1401 -0
- package/expertise/security/mobile/mobile-network-security.md +1520 -0
- package/expertise/security/smart-contract-security.md +594 -0
- package/expertise/security/testing/index.md +22 -0
- package/expertise/security/testing/penetration-testing.md +1258 -0
- package/expertise/security/testing/security-code-review.md +1765 -0
- package/expertise/security/testing/threat-modeling.md +1074 -0
- package/expertise/security/testing/vulnerability-scanning.md +1062 -0
- package/expertise/security/web/api-security.md +586 -0
- package/expertise/security/web/cors-and-headers.md +433 -0
- package/expertise/security/web/csrf.md +562 -0
- package/expertise/security/web/file-upload.md +1477 -0
- package/expertise/security/web/index.md +25 -0
- package/expertise/security/web/injection.md +1375 -0
- package/expertise/security/web/session-management.md +1101 -0
- package/expertise/security/web/xss.md +1158 -0
- package/exports/README.md +17 -0
- package/exports/hosts/claude/.claude/agents/clarifier.md +42 -0
- package/exports/hosts/claude/.claude/agents/content-author.md +63 -0
- package/exports/hosts/claude/.claude/agents/designer.md +55 -0
- package/exports/hosts/claude/.claude/agents/executor.md +55 -0
- package/exports/hosts/claude/.claude/agents/learner.md +51 -0
- package/exports/hosts/claude/.claude/agents/planner.md +53 -0
- package/exports/hosts/claude/.claude/agents/researcher.md +43 -0
- package/exports/hosts/claude/.claude/agents/reviewer.md +54 -0
- package/exports/hosts/claude/.claude/agents/specifier.md +47 -0
- package/exports/hosts/claude/.claude/agents/verifier.md +71 -0
- package/exports/hosts/claude/.claude/commands/author.md +42 -0
- package/exports/hosts/claude/.claude/commands/clarify.md +38 -0
- package/exports/hosts/claude/.claude/commands/design-review.md +46 -0
- package/exports/hosts/claude/.claude/commands/design.md +44 -0
- package/exports/hosts/claude/.claude/commands/discover.md +37 -0
- package/exports/hosts/claude/.claude/commands/execute.md +48 -0
- package/exports/hosts/claude/.claude/commands/learn.md +38 -0
- package/exports/hosts/claude/.claude/commands/plan-review.md +42 -0
- package/exports/hosts/claude/.claude/commands/plan.md +39 -0
- package/exports/hosts/claude/.claude/commands/prepare-next.md +37 -0
- package/exports/hosts/claude/.claude/commands/review.md +40 -0
- package/exports/hosts/claude/.claude/commands/run-audit.md +41 -0
- package/exports/hosts/claude/.claude/commands/spec-challenge.md +41 -0
- package/exports/hosts/claude/.claude/commands/specify.md +38 -0
- package/exports/hosts/claude/.claude/commands/verify.md +37 -0
- package/exports/hosts/claude/.claude/settings.json +34 -0
- package/exports/hosts/claude/CLAUDE.md +19 -0
- package/exports/hosts/claude/export.manifest.json +38 -0
- package/exports/hosts/claude/host-package.json +67 -0
- package/exports/hosts/codex/AGENTS.md +19 -0
- package/exports/hosts/codex/export.manifest.json +38 -0
- package/exports/hosts/codex/host-package.json +41 -0
- package/exports/hosts/cursor/.cursor/hooks.json +16 -0
- package/exports/hosts/cursor/.cursor/rules/wazir-core.mdc +19 -0
- package/exports/hosts/cursor/export.manifest.json +38 -0
- package/exports/hosts/cursor/host-package.json +42 -0
- package/exports/hosts/gemini/GEMINI.md +19 -0
- package/exports/hosts/gemini/export.manifest.json +38 -0
- package/exports/hosts/gemini/host-package.json +41 -0
- package/hooks/README.md +18 -0
- package/hooks/definitions/loop_cap_guard.yaml +21 -0
- package/hooks/definitions/post_tool_capture.yaml +24 -0
- package/hooks/definitions/pre_compact_summary.yaml +19 -0
- package/hooks/definitions/pre_tool_capture_route.yaml +19 -0
- package/hooks/definitions/protected_path_write_guard.yaml +19 -0
- package/hooks/definitions/session_start.yaml +19 -0
- package/hooks/definitions/stop_handoff_harvest.yaml +20 -0
- package/hooks/loop-cap-guard +17 -0
- package/hooks/post-tool-lint +36 -0
- package/hooks/protected-path-write-guard +17 -0
- package/hooks/session-start +41 -0
- package/llms-full.txt +2355 -0
- package/llms.txt +43 -0
- package/package.json +79 -0
- package/roles/README.md +20 -0
- package/roles/clarifier.md +42 -0
- package/roles/content-author.md +63 -0
- package/roles/designer.md +55 -0
- package/roles/executor.md +55 -0
- package/roles/learner.md +51 -0
- package/roles/planner.md +53 -0
- package/roles/researcher.md +43 -0
- package/roles/reviewer.md +54 -0
- package/roles/specifier.md +47 -0
- package/roles/verifier.md +71 -0
- package/schemas/README.md +24 -0
- package/schemas/accepted-learning.schema.json +20 -0
- package/schemas/author-artifact.schema.json +156 -0
- package/schemas/clarification.schema.json +19 -0
- package/schemas/design-artifact.schema.json +80 -0
- package/schemas/docs-claim.schema.json +18 -0
- package/schemas/export-manifest.schema.json +20 -0
- package/schemas/hook.schema.json +67 -0
- package/schemas/host-export-package.schema.json +18 -0
- package/schemas/implementation-plan.schema.json +19 -0
- package/schemas/proposed-learning.schema.json +19 -0
- package/schemas/research.schema.json +18 -0
- package/schemas/review.schema.json +29 -0
- package/schemas/run-manifest.schema.json +18 -0
- package/schemas/spec-challenge.schema.json +18 -0
- package/schemas/spec.schema.json +20 -0
- package/schemas/usage.schema.json +102 -0
- package/schemas/verification-proof.schema.json +29 -0
- package/schemas/wazir-manifest.schema.json +173 -0
- package/skills/README.md +40 -0
- package/skills/brainstorming/SKILL.md +77 -0
- package/skills/debugging/SKILL.md +50 -0
- package/skills/design/SKILL.md +61 -0
- package/skills/dispatching-parallel-agents/SKILL.md +128 -0
- package/skills/executing-plans/SKILL.md +70 -0
- package/skills/finishing-a-development-branch/SKILL.md +169 -0
- package/skills/humanize/SKILL.md +123 -0
- package/skills/init-pipeline/SKILL.md +124 -0
- package/skills/prepare-next/SKILL.md +20 -0
- package/skills/receiving-code-review/SKILL.md +123 -0
- package/skills/requesting-code-review/SKILL.md +105 -0
- package/skills/requesting-code-review/code-reviewer.md +108 -0
- package/skills/run-audit/SKILL.md +197 -0
- package/skills/scan-project/SKILL.md +41 -0
- package/skills/self-audit/SKILL.md +153 -0
- package/skills/subagent-driven-development/SKILL.md +154 -0
- package/skills/subagent-driven-development/code-quality-reviewer-prompt.md +26 -0
- package/skills/subagent-driven-development/implementer-prompt.md +102 -0
- package/skills/subagent-driven-development/spec-reviewer-prompt.md +61 -0
- package/skills/tdd/SKILL.md +23 -0
- package/skills/using-git-worktrees/SKILL.md +163 -0
- package/skills/using-skills/SKILL.md +95 -0
- package/skills/verification/SKILL.md +22 -0
- package/skills/wazir/SKILL.md +463 -0
- package/skills/writing-plans/SKILL.md +30 -0
- package/skills/writing-skills/SKILL.md +157 -0
- package/skills/writing-skills/anthropic-best-practices.md +122 -0
- package/skills/writing-skills/persuasion-principles.md +50 -0
- package/templates/README.md +20 -0
- package/templates/artifacts/README.md +10 -0
- package/templates/artifacts/accepted-learning.md +19 -0
- package/templates/artifacts/accepted-learning.template.json +12 -0
- package/templates/artifacts/author.md +74 -0
- package/templates/artifacts/author.template.json +19 -0
- package/templates/artifacts/clarification.md +21 -0
- package/templates/artifacts/clarification.template.json +12 -0
- package/templates/artifacts/execute-notes.md +19 -0
- package/templates/artifacts/implementation-plan.md +21 -0
- package/templates/artifacts/implementation-plan.template.json +11 -0
- package/templates/artifacts/learning-proposal.md +19 -0
- package/templates/artifacts/next-run-handoff.md +21 -0
- package/templates/artifacts/plan-review.md +19 -0
- package/templates/artifacts/proposed-learning.template.json +12 -0
- package/templates/artifacts/research.md +21 -0
- package/templates/artifacts/research.template.json +12 -0
- package/templates/artifacts/review-findings.md +19 -0
- package/templates/artifacts/review.template.json +11 -0
- package/templates/artifacts/run-manifest.template.json +8 -0
- package/templates/artifacts/spec-challenge.md +19 -0
- package/templates/artifacts/spec-challenge.template.json +11 -0
- package/templates/artifacts/spec.md +21 -0
- package/templates/artifacts/spec.template.json +12 -0
- package/templates/artifacts/verification-proof.md +19 -0
- package/templates/artifacts/verification-proof.template.json +11 -0
- package/templates/examples/accepted-learning.example.json +14 -0
- package/templates/examples/author.example.json +152 -0
- package/templates/examples/clarification.example.json +15 -0
- package/templates/examples/docs-claim.example.json +8 -0
- package/templates/examples/export-manifest.example.json +7 -0
- package/templates/examples/host-export-package.example.json +11 -0
- package/templates/examples/implementation-plan.example.json +17 -0
- package/templates/examples/proposed-learning.example.json +13 -0
- package/templates/examples/research.example.json +15 -0
- package/templates/examples/research.example.md +6 -0
- package/templates/examples/review.example.json +17 -0
- package/templates/examples/run-manifest.example.json +9 -0
- package/templates/examples/spec-challenge.example.json +14 -0
- package/templates/examples/spec.example.json +21 -0
- package/templates/examples/verification-proof.example.json +21 -0
- package/templates/examples/wazir-manifest.example.yaml +65 -0
- package/templates/task-definition-schema.md +99 -0
- package/tooling/README.md +20 -0
- package/tooling/src/adapters/context-mode.js +50 -0
- package/tooling/src/capture/command.js +376 -0
- package/tooling/src/capture/store.js +99 -0
- package/tooling/src/capture/usage.js +270 -0
- package/tooling/src/checks/branches.js +50 -0
- package/tooling/src/checks/brand-truth.js +110 -0
- package/tooling/src/checks/changelog.js +231 -0
- package/tooling/src/checks/command-registry.js +36 -0
- package/tooling/src/checks/commits.js +102 -0
- package/tooling/src/checks/docs-drift.js +103 -0
- package/tooling/src/checks/docs-truth.js +201 -0
- package/tooling/src/checks/runtime-surface.js +156 -0
- package/tooling/src/cli.js +116 -0
- package/tooling/src/command-options.js +56 -0
- package/tooling/src/commands/validate.js +320 -0
- package/tooling/src/doctor/command.js +91 -0
- package/tooling/src/export/command.js +77 -0
- package/tooling/src/export/compiler.js +498 -0
- package/tooling/src/guards/loop-cap-guard.js +52 -0
- package/tooling/src/guards/protected-path-write-guard.js +67 -0
- package/tooling/src/index/command.js +152 -0
- package/tooling/src/index/storage.js +1061 -0
- package/tooling/src/index/summarizers.js +261 -0
- package/tooling/src/loaders.js +18 -0
- package/tooling/src/project-root.js +22 -0
- package/tooling/src/recall/command.js +225 -0
- package/tooling/src/schema-validator.js +30 -0
- package/tooling/src/state-root.js +40 -0
- package/tooling/src/status/command.js +71 -0
- package/wazir.manifest.yaml +135 -0
- package/workflows/README.md +19 -0
- package/workflows/author.md +42 -0
- package/workflows/clarify.md +38 -0
- package/workflows/design-review.md +46 -0
- package/workflows/design.md +44 -0
- package/workflows/discover.md +37 -0
- package/workflows/execute.md +48 -0
- package/workflows/learn.md +38 -0
- package/workflows/plan-review.md +42 -0
- package/workflows/plan.md +39 -0
- package/workflows/prepare-next.md +37 -0
- package/workflows/review.md +40 -0
- package/workflows/run-audit.md +41 -0
- package/workflows/spec-challenge.md +41 -0
- package/workflows/specify.md +38 -0
- package/workflows/verify.md +37 -0
|
@@ -0,0 +1,761 @@
|
|
|
1
|
+
# Visual Hierarchy -- Design Expertise Module
|
|
2
|
+
|
|
3
|
+
> Visual hierarchy is the deliberate arrangement of design elements so that users
|
|
4
|
+
> instantly perceive their relative importance, navigate content effortlessly, and
|
|
5
|
+
> take the intended actions. It is the single most consequential skill in interface
|
|
6
|
+
> design because every layout decision either clarifies or confuses the user's path.
|
|
7
|
+
|
|
8
|
+
> **Category:** Foundation
|
|
9
|
+
> **Applies to:** All (Web, iOS, Android, Desktop, Responsive)
|
|
10
|
+
> **Key sources:** Material Design 3 (m3.material.io), Apple Human Interface Guidelines (developer.apple.com/design/human-interface-guidelines), Ant Design (ant.design/docs/spec), Nielsen Norman Group eye-tracking research (nngroup.com), WCAG 2.1 (w3.org/WAI/WCAG21)
|
|
11
|
+
|
|
12
|
+
---
|
|
13
|
+
|
|
14
|
+
## 1. Core Principles
|
|
15
|
+
|
|
16
|
+
### 1.1 What Visual Hierarchy Is
|
|
17
|
+
|
|
18
|
+
Visual hierarchy is the principle of arranging elements so that people instantly
|
|
19
|
+
recognize their order of importance on a screen or page. It governs what the eye
|
|
20
|
+
sees first, second, and last. A strong hierarchy means users can scan a page in
|
|
21
|
+
under 3 seconds and understand both what it contains and what they should do next.
|
|
22
|
+
|
|
23
|
+
Every element on a screen competes for attention. Hierarchy is how you referee
|
|
24
|
+
that competition.
|
|
25
|
+
|
|
26
|
+
### 1.2 The Science Behind Hierarchy
|
|
27
|
+
|
|
28
|
+
#### Gestalt Principles
|
|
29
|
+
|
|
30
|
+
The Gestalt laws of perception, established in early 20th-century psychology and
|
|
31
|
+
validated repeatedly in modern UX research, explain how humans group visual
|
|
32
|
+
information:
|
|
33
|
+
|
|
34
|
+
| Principle | Definition | Hierarchy Application |
|
|
35
|
+
|-----------|-----------|----------------------|
|
|
36
|
+
| **Proximity** | Elements near each other are perceived as a group | Group related controls; separate unrelated sections with whitespace |
|
|
37
|
+
| **Similarity** | Elements sharing visual traits (color, shape, size) are perceived as related | Use consistent styling for elements at the same hierarchy level |
|
|
38
|
+
| **Continuity** | The eye follows smooth lines and curves | Align elements along clear axes to guide scanning |
|
|
39
|
+
| **Closure** | The brain completes incomplete shapes | Cards and containers do not need full borders |
|
|
40
|
+
| **Figure/Ground** | The eye separates foreground from background | Elevated surfaces (shadows, overlays) create depth hierarchy |
|
|
41
|
+
| **Common Region** | Elements inside a boundary are perceived as grouped | Cards, sections, and panels create logical clusters |
|
|
42
|
+
| **Focal Point** | An element that stands out visually captures attention first | The primary CTA should be the strongest focal point |
|
|
43
|
+
|
|
44
|
+
#### Eye-Tracking Patterns
|
|
45
|
+
|
|
46
|
+
Nielsen Norman Group's landmark eye-tracking study (232 users, thousands of web
|
|
47
|
+
pages) identified consistent scanning behaviors:
|
|
48
|
+
|
|
49
|
+
**F-Pattern (text-heavy pages):**
|
|
50
|
+
Users read the first horizontal line across the top, drop down and read a shorter
|
|
51
|
+
second line, then scan vertically down the left edge. This is the dominant
|
|
52
|
+
pattern for content pages, articles, and search results. Implications: place the
|
|
53
|
+
most critical information in the first two lines; use clear headings as anchors
|
|
54
|
+
along the left edge; front-load key words in every line.
|
|
55
|
+
|
|
56
|
+
**Z-Pattern (sparse, visual pages):**
|
|
57
|
+
On pages with minimal text (landing pages, hero sections), the eye moves from
|
|
58
|
+
top-left to top-right, diagonally to bottom-left, then across to bottom-right.
|
|
59
|
+
Implications: place your logo/brand top-left, primary value proposition top-right
|
|
60
|
+
or center, and primary CTA at the terminal point (bottom-right of the Z).
|
|
61
|
+
|
|
62
|
+
**Layer-Cake Pattern (structured content):**
|
|
63
|
+
When headings are visually distinct, users scan only the headings, skipping body
|
|
64
|
+
text until a heading matches their intent. Implications: headings must be
|
|
65
|
+
self-sufficient summaries, not decorative labels.
|
|
66
|
+
|
|
67
|
+
**Spotted Pattern (scanning for a specific target):**
|
|
68
|
+
Users skip large blocks and fixate on distinctive elements -- links, bold text,
|
|
69
|
+
numbers, icons. Implications: make interactive elements visually distinct from
|
|
70
|
+
static content.
|
|
71
|
+
|
|
72
|
+
#### Visual Weight
|
|
73
|
+
|
|
74
|
+
Visual weight is the perceived "heaviness" of an element -- how much it pulls
|
|
75
|
+
the eye. Elements with high visual weight are seen first. The primary levers:
|
|
76
|
+
|
|
77
|
+
1. **Size** -- Larger elements have more weight. A 32px headline pulls more than 14px body text.
|
|
78
|
+
2. **Color saturation and warmth** -- Saturated, warm colors (red, orange) carry more weight than desaturated, cool colors (gray, light blue).
|
|
79
|
+
3. **Contrast** -- High-contrast elements (dark on light, or vice versa) dominate low-contrast neighbors.
|
|
80
|
+
4. **Density/complexity** -- A detailed illustration has more weight than a flat icon.
|
|
81
|
+
5. **Position** -- Elements above the fold and toward the top-left (in LTR languages) are scanned first.
|
|
82
|
+
6. **Isolation** -- An element surrounded by whitespace carries disproportionate weight (the "hero" effect).
|
|
83
|
+
7. **Motion** -- Animated elements capture attention before static ones (use sparingly).
|
|
84
|
+
|
|
85
|
+
### 1.3 The Six Tools of Hierarchy
|
|
86
|
+
|
|
87
|
+
#### Size
|
|
88
|
+
|
|
89
|
+
The most direct hierarchy signal. Larger elements are more important. Design
|
|
90
|
+
systems formalize this into type scales:
|
|
91
|
+
|
|
92
|
+
**Material Design 3 Type Scale (complete values):**
|
|
93
|
+
|
|
94
|
+
| Role | Size | Weight | Typical Use |
|
|
95
|
+
|------|------|--------|-------------|
|
|
96
|
+
| Display Large | 57px/sp | Regular (400) | Hero headlines, splash screens |
|
|
97
|
+
| Display Medium | 45px/sp | Regular (400) | Section heroes |
|
|
98
|
+
| Display Small | 36px/sp | Regular (400) | Feature callouts |
|
|
99
|
+
| Headline Large | 32px/sp | Regular (400) | Page titles |
|
|
100
|
+
| Headline Medium | 28px/sp | Regular (400) | Section titles |
|
|
101
|
+
| Headline Small | 24px/sp | Regular (400) | Card titles, dialogs |
|
|
102
|
+
| Title Large | 22px/sp | Regular (400) | App bar titles |
|
|
103
|
+
| Title Medium | 16px/sp | Medium (500) | Subheadings |
|
|
104
|
+
| Title Small | 14px/sp | Medium (500) | Tab labels |
|
|
105
|
+
| Body Large | 16px/sp | Regular (400) | Primary body text |
|
|
106
|
+
| Body Medium | 14px/sp | Regular (400) | Default body text |
|
|
107
|
+
| Body Small | 12px/sp | Regular (400) | Captions, metadata |
|
|
108
|
+
| Label Large | 14px/sp | Medium (500) | Button labels |
|
|
109
|
+
| Label Medium | 12px/sp | Medium (500) | Form labels, chips |
|
|
110
|
+
| Label Small | 11px/sp | Medium (500) | Timestamps, badges |
|
|
111
|
+
|
|
112
|
+
**Ratio guidance:** Adjacent hierarchy levels should differ by at least 20-30%
|
|
113
|
+
in size. The M3 scale uses roughly a 1.2x-1.25x ratio between adjacent levels
|
|
114
|
+
(e.g., 14 -> 16 -> 22 -> 24 -> 28 -> 32). If two text elements are within 2px
|
|
115
|
+
of each other, they read as the same level.
|
|
116
|
+
|
|
117
|
+
**Ant Design Type Scale:**
|
|
118
|
+
Ant Design uses a 14px base with a scale derived from natural logarithms and the
|
|
119
|
+
pentatonic musical scale: 12, 14, 16, 20, 24, 30, 38, 46, 56, 68px. The system
|
|
120
|
+
recommends limiting any single screen to 3-5 font sizes to maintain restraint.
|
|
121
|
+
|
|
122
|
+
#### Color
|
|
123
|
+
|
|
124
|
+
Color establishes hierarchy through three mechanisms:
|
|
125
|
+
|
|
126
|
+
1. **Brand/primary color** signals the most important interactive element (primary CTA).
|
|
127
|
+
2. **Semantic color** conveys meaning (red = destructive, green = success, yellow = warning).
|
|
128
|
+
3. **Neutral scale** (grays) creates layers: darker text = more important, lighter text = secondary.
|
|
129
|
+
|
|
130
|
+
**Color hierarchy ladder (light theme):**
|
|
131
|
+
- Level 1 (primary text): #1A1A1A or equivalent, ~87% opacity black -- headings, primary labels
|
|
132
|
+
- Level 2 (secondary text): #616161 or ~60% opacity black -- body text, descriptions
|
|
133
|
+
- Level 3 (tertiary text): #9E9E9E or ~38% opacity black -- placeholders, timestamps, metadata
|
|
134
|
+
- Level 4 (disabled): #BDBDBD or ~26% opacity black -- disabled states
|
|
135
|
+
|
|
136
|
+
**Color hierarchy ladder (dark theme):**
|
|
137
|
+
- Level 1: #FFFFFF or ~87% opacity white
|
|
138
|
+
- Level 2: #B3B3B3 or ~60% opacity white
|
|
139
|
+
- Level 3: #808080 or ~38% opacity white
|
|
140
|
+
- Level 4: #666666 or ~26% opacity white
|
|
141
|
+
|
|
142
|
+
#### Contrast
|
|
143
|
+
|
|
144
|
+
WCAG 2.1 defines minimum contrast ratios:
|
|
145
|
+
|
|
146
|
+
| Standard | Normal Text (<18pt / <14pt bold) | Large Text (>=18pt / >=14pt bold) | UI Components |
|
|
147
|
+
|----------|----------------------------------|----------------------------------|---------------|
|
|
148
|
+
| AA (minimum) | 4.5:1 | 3:1 | 3:1 |
|
|
149
|
+
| AAA (enhanced) | 7:1 | 4.5:1 | N/A |
|
|
150
|
+
|
|
151
|
+
Contrast is a hierarchy amplifier: the highest-contrast element on the page is
|
|
152
|
+
seen first. A primary button with 8:1 contrast will dominate a secondary button
|
|
153
|
+
at 4.5:1 contrast. Use contrast differentials deliberately -- the primary action
|
|
154
|
+
should have the highest contrast on the page, secondary actions lower, and
|
|
155
|
+
tertiary actions lower still.
|
|
156
|
+
|
|
157
|
+
#### Spacing
|
|
158
|
+
|
|
159
|
+
Spacing controls grouping (proximity) and emphasis (isolation). The standard
|
|
160
|
+
approach is a spacing scale based on a 4px baseline grid:
|
|
161
|
+
|
|
162
|
+
**Recommended spacing scale (4px base):**
|
|
163
|
+
|
|
164
|
+
| Token | Value | Use |
|
|
165
|
+
|-------|-------|-----|
|
|
166
|
+
| space-xs | 4px | Inline icon gap, tight padding |
|
|
167
|
+
| space-sm | 8px | Related element gap, compact padding |
|
|
168
|
+
| space-md | 16px | Default padding, form field gap |
|
|
169
|
+
| space-lg | 24px | Section separation, card padding |
|
|
170
|
+
| space-xl | 32px | Major section gap |
|
|
171
|
+
| space-2xl | 48px | Page section separation |
|
|
172
|
+
| space-3xl | 64px | Hero section padding, page margins |
|
|
173
|
+
| space-4xl | 96px | Landing page section breaks |
|
|
174
|
+
|
|
175
|
+
**Key rule:** Internal spacing (padding within an element) should always be less
|
|
176
|
+
than or equal to external spacing (margin between elements). This ensures
|
|
177
|
+
elements read as cohesive units. If a card has 16px internal padding, the gap
|
|
178
|
+
between cards should be >= 16px.
|
|
179
|
+
|
|
180
|
+
**Material Design 3** uses a 4dp baseline grid for fine adjustments and common
|
|
181
|
+
increments of 8, 12, 16, 24, and 32dp for component spacing.
|
|
182
|
+
|
|
183
|
+
**Ant Design** uses three primary spacing values: 8px (small), 16px (medium),
|
|
184
|
+
24px (large), all on an 8px grid baseline.
|
|
185
|
+
|
|
186
|
+
#### Alignment
|
|
187
|
+
|
|
188
|
+
Alignment creates invisible lines that the eye follows (Gestalt continuity).
|
|
189
|
+
Strong alignment reduces visual noise and creates orderly scanning paths.
|
|
190
|
+
|
|
191
|
+
- Left-align body text in LTR languages (ragged right is easier to read than justified)
|
|
192
|
+
- Align form labels and inputs on a consistent vertical axis
|
|
193
|
+
- Use a column grid (4-column mobile, 8-column tablet, 12-column desktop) to create alignment guides
|
|
194
|
+
- Center-align only hero text and short headings; never center-align body paragraphs
|
|
195
|
+
|
|
196
|
+
#### Repetition
|
|
197
|
+
|
|
198
|
+
Repetition establishes patterns. Once users learn that "blue underlined text =
|
|
199
|
+
link" or "bold 24px text = section heading," they can scan efficiently because
|
|
200
|
+
the pattern is predictable. Breaking repetition signals a hierarchy shift
|
|
201
|
+
(intentional or accidental).
|
|
202
|
+
|
|
203
|
+
- Consistent styling for same-level elements reduces cognitive load
|
|
204
|
+
- Every style variation implies a hierarchy difference; unintentional variation creates confusion
|
|
205
|
+
- Limit the total number of distinct text styles per page to 4-6
|
|
206
|
+
|
|
207
|
+
### 1.4 How Hierarchy Differs Across Platforms
|
|
208
|
+
|
|
209
|
+
On mobile, vertical scrolling dominates and screen real estate is scarce, so
|
|
210
|
+
hierarchy is expressed primarily through vertical ordering and size contrast.
|
|
211
|
+
On desktop, wider viewports allow multi-column layouts where hierarchy uses both
|
|
212
|
+
horizontal position (left = primary in LTR) and vertical position (top = primary).
|
|
213
|
+
|
|
214
|
+
| Factor | Mobile | Web (Desktop) | Desktop App |
|
|
215
|
+
|--------|--------|--------------|-------------|
|
|
216
|
+
| Primary axis | Vertical scroll | Both axes | Both axes |
|
|
217
|
+
| Navigation | Tab bar (bottom) / hamburger | Top nav / sidebar | Menu bar + sidebar |
|
|
218
|
+
| Content density | Low-medium | Medium-high | High |
|
|
219
|
+
| Touch targets | 48dp / 44pt minimum | 24-32px clickable | 24-32px clickable |
|
|
220
|
+
| Type scale range | Narrower (12-28px typical) | Wider (11-57px) | Wider (11-48px) |
|
|
221
|
+
| Whitespace | Generous margins | Variable | Compact |
|
|
222
|
+
| Hierarchy layers | 2-3 levels | 3-5 levels | 3-5 levels |
|
|
223
|
+
|
|
224
|
+
---
|
|
225
|
+
|
|
226
|
+
## 2. Do's and Don'ts
|
|
227
|
+
|
|
228
|
+
### Do's
|
|
229
|
+
|
|
230
|
+
**D1. Use a constrained type scale with minimum 20% size jumps between levels.**
|
|
231
|
+
Adjacent hierarchy levels should be immediately distinguishable. If your heading
|
|
232
|
+
is 18px and your body is 16px, they read as the same level. Use at least a 1.2x
|
|
233
|
+
ratio: 14px body -> 18px subhead -> 22px heading -> 28px page title. Material
|
|
234
|
+
Design 3 uses jumps like 14 -> 16 -> 22 -> 24 -> 28 -> 32px.
|
|
235
|
+
|
|
236
|
+
**D2. Make the primary CTA 20-30% larger than secondary actions and use a filled style.**
|
|
237
|
+
A primary button at 48px height with a solid brand-color fill will dominate a
|
|
238
|
+
secondary 40px outlined button. The size and fill difference makes the action
|
|
239
|
+
hierarchy immediately clear without reading labels. Material Design 3 recommends
|
|
240
|
+
filled buttons for primary, outlined for secondary, and text buttons for tertiary.
|
|
241
|
+
|
|
242
|
+
**D3. Use whitespace to create hierarchy through isolation.**
|
|
243
|
+
An element surrounded by 48-64px of whitespace commands more attention than the
|
|
244
|
+
same element in a dense cluster. Apple's HIG specifically recommends "generous,
|
|
245
|
+
consistent whitespace to visually group related elements and separate distinct
|
|
246
|
+
sections." The hero CTA in a landing page should have at least 32px of breathing
|
|
247
|
+
room on all sides.
|
|
248
|
+
|
|
249
|
+
**D4. Limit each screen to 3-5 distinct font sizes.**
|
|
250
|
+
Ant Design explicitly recommends this constraint. More than 5 sizes creates
|
|
251
|
+
visual noise and makes it impossible for users to distinguish hierarchy levels.
|
|
252
|
+
A typical screen needs: heading, subheading, body, caption -- four sizes.
|
|
253
|
+
|
|
254
|
+
**D5. Front-load critical information in the first 40-60 characters of any text element.**
|
|
255
|
+
Eye-tracking confirms that users read the beginning of lines more carefully than
|
|
256
|
+
the middle or end (F-pattern). Place keywords, numbers, and action verbs at the
|
|
257
|
+
start of headings, list items, and button labels.
|
|
258
|
+
|
|
259
|
+
**D6. Maintain a 60-80 character line length for body text.**
|
|
260
|
+
Lines shorter than 40 characters cause excessive line-breaking and choppy reading.
|
|
261
|
+
Lines longer than 90 characters cause the eye to lose its place when returning
|
|
262
|
+
to the next line. At 16px with a standard font, this translates to approximately
|
|
263
|
+
480-640px content width.
|
|
264
|
+
|
|
265
|
+
**D7. Use the color hierarchy ladder consistently (87% / 60% / 38% opacity).**
|
|
266
|
+
Primary text at ~87% opacity (or #1A1A1A on white), secondary at ~60%
|
|
267
|
+
(or #616161), and tertiary at ~38% (or #9E9E9E). This creates three clear
|
|
268
|
+
typographic levels that users learn to interpret automatically.
|
|
269
|
+
|
|
270
|
+
**D8. Place the most important action at the terminal point of the scanning pattern.**
|
|
271
|
+
For Z-pattern layouts (landing pages), place the CTA at the bottom-right of the
|
|
272
|
+
Z. For F-pattern layouts (content pages), place the CTA below the first content
|
|
273
|
+
block or in a sticky element. The terminal point is where attention naturally
|
|
274
|
+
rests after scanning.
|
|
275
|
+
|
|
276
|
+
**D9. Use 44pt (iOS) or 48dp (Android) minimum touch targets, even if the visual element is smaller.**
|
|
277
|
+
The clickable/tappable area should meet platform minimums regardless of the
|
|
278
|
+
visual size of the icon or text. A 24x24px icon button should have 48x48dp of
|
|
279
|
+
tappable padding. This is both an accessibility requirement (WCAG 2.1 SC 2.5.5)
|
|
280
|
+
and a hierarchy signal -- interactive elements need sufficient presence.
|
|
281
|
+
|
|
282
|
+
**D10. Create depth hierarchy with consistent elevation levels.**
|
|
283
|
+
Material Design 3 uses elevation (0dp, 1dp, 3dp, 6dp, 8dp, 12dp) to layer
|
|
284
|
+
surfaces. Higher elements are "closer" to the user and more important. Use:
|
|
285
|
+
0dp for background, 1dp for cards, 3dp for app bars, 6dp for FABs, 8dp for
|
|
286
|
+
bottom sheets, 12dp for dialogs. Shadows should be consistent in direction and
|
|
287
|
+
softness.
|
|
288
|
+
|
|
289
|
+
**D11. Use a maximum of 2 typefaces per project (1 for headings, 1 for body).**
|
|
290
|
+
Each additional typeface introduces a new visual pattern the user must learn.
|
|
291
|
+
Most design systems use a single family: Material Design uses Roboto, Apple uses
|
|
292
|
+
San Francisco, Ant Design uses system fonts. If using two families, ensure they
|
|
293
|
+
have contrasting characteristics (serif + sans-serif, or display + text).
|
|
294
|
+
|
|
295
|
+
**D12. Align interactive elements on a clear vertical axis in forms and settings.**
|
|
296
|
+
Labels, inputs, and buttons should share a left edge (or label edge + input edge
|
|
297
|
+
in side-by-side layouts). Misaligned form elements slow scanning by 20-40%
|
|
298
|
+
because the eye must search for each field independently rather than following
|
|
299
|
+
a straight line.
|
|
300
|
+
|
|
301
|
+
**D13. Use icons as hierarchy accelerators, not decorators.**
|
|
302
|
+
An icon next to a label should reinforce the label's meaning and provide a
|
|
303
|
+
faster recognition path (spotted scanning pattern). Icons should be a consistent
|
|
304
|
+
size within each hierarchy level: 24px for primary actions, 20px for secondary,
|
|
305
|
+
16px for inline/metadata. Decorative icons that do not add meaning create noise.
|
|
306
|
+
|
|
307
|
+
### Don'ts
|
|
308
|
+
|
|
309
|
+
**X1. Do not create more than 3 competing focal points on a single screen.**
|
|
310
|
+
If everything is bold, nothing is bold. A screen with 3+ elements all demanding
|
|
311
|
+
primary attention causes "visual shouting" -- the user cannot determine where to
|
|
312
|
+
look first and experiences decision paralysis. Identify one primary, one
|
|
313
|
+
secondary, and let everything else recede.
|
|
314
|
+
|
|
315
|
+
**X2. Do not use pure black (#000000) text on pure white (#FFFFFF) backgrounds.**
|
|
316
|
+
The extreme contrast (21:1) causes halation -- the text appears to vibrate and
|
|
317
|
+
causes eye strain on screens. Use #1A1A1A to #212121 on #FFFFFF (approximately
|
|
318
|
+
17:1-18:1 contrast) or #FAFAFA backgrounds. Apple's HIG and Material Design
|
|
319
|
+
both avoid pure black on pure white in their default themes.
|
|
320
|
+
|
|
321
|
+
**X3. Do not center-align body text or any text block longer than 2 lines.**
|
|
322
|
+
Center-aligned text creates a ragged left edge, destroying the scanning anchor
|
|
323
|
+
that makes reading efficient. The eye must re-find the start of each line. Center
|
|
324
|
+
alignment is acceptable only for: single-line headings, short hero statements
|
|
325
|
+
(under 8-10 words), and modal titles.
|
|
326
|
+
|
|
327
|
+
**X4. Do not rely on color alone to communicate hierarchy.**
|
|
328
|
+
Approximately 8% of men and 0.5% of women have color vision deficiency.
|
|
329
|
+
Hierarchy that depends solely on color differences (e.g., red vs. green status
|
|
330
|
+
labels with no other visual distinction) fails for these users. Always pair
|
|
331
|
+
color with at least one other signal: size, weight, iconography, or position.
|
|
332
|
+
|
|
333
|
+
**X5. Do not use more than 3-4 font weights on a single page.**
|
|
334
|
+
Regular (400), Medium (500), and Bold (700) provide sufficient hierarchy range.
|
|
335
|
+
Adding Light (300) and Black (900) on the same page creates ambiguity -- users
|
|
336
|
+
cannot reliably distinguish 5 weight levels. Stick to 2-3 weights for clarity.
|
|
337
|
+
|
|
338
|
+
**X6. Do not place two same-size, same-style CTAs side by side without visual differentiation.**
|
|
339
|
+
Two identical buttons create a 50/50 split in attention and force the user to
|
|
340
|
+
read both labels to choose. Always differentiate: primary (filled) vs. secondary
|
|
341
|
+
(outlined), or primary (larger, colored) vs. secondary (smaller, neutral).
|
|
342
|
+
|
|
343
|
+
**X7. Do not use justified text in digital interfaces.**
|
|
344
|
+
Justified text creates uneven word spacing ("rivers of white") that disrupts
|
|
345
|
+
reading flow and is especially problematic on narrow mobile screens. Use
|
|
346
|
+
left-aligned (LTR) or right-aligned (RTL) body text exclusively.
|
|
347
|
+
|
|
348
|
+
**X8. Do not make interactive and non-interactive elements visually identical.**
|
|
349
|
+
If a clickable text link looks the same as surrounding body text (same color,
|
|
350
|
+
same weight, no underline), users will not discover it. Interactive elements
|
|
351
|
+
must differ from static text by at least two visual properties (e.g., color +
|
|
352
|
+
underline, or color + weight).
|
|
353
|
+
|
|
354
|
+
**X9. Do not use spacing smaller than 8px between distinct interactive elements.**
|
|
355
|
+
Elements closer than 8px risk accidental taps (especially on mobile) and read as
|
|
356
|
+
a single group (Gestalt proximity). Between distinct tap targets, maintain at
|
|
357
|
+
least 8px visual separation. Between distinct sections, use at least 24px.
|
|
358
|
+
|
|
359
|
+
**X10. Do not use more than 2 accent colors for interactive elements.**
|
|
360
|
+
One primary brand color for primary CTAs and one secondary color for secondary
|
|
361
|
+
actions. Adding a third interactive color creates ambiguity about which color
|
|
362
|
+
means "most important." Semantic colors (red, green, yellow) are exceptions
|
|
363
|
+
but should not compete with the primary CTA color.
|
|
364
|
+
|
|
365
|
+
**X11. Do not ignore the fold -- keep primary actions visible without scrolling.**
|
|
366
|
+
"Above the fold" still matters: Nielsen Norman Group research consistently shows
|
|
367
|
+
that content above the fold receives 57% more viewing time than content below.
|
|
368
|
+
The primary CTA and key value proposition must be visible in the initial
|
|
369
|
+
viewport.
|
|
370
|
+
|
|
371
|
+
**X12. Do not use low-contrast placeholder text as the only label for form fields.**
|
|
372
|
+
Placeholder text at 38-40% opacity disappears when the user starts typing,
|
|
373
|
+
removing the field's label. Always use a persistent label (above or beside the
|
|
374
|
+
field) with at least secondary-level contrast (60% opacity / 4.5:1 minimum).
|
|
375
|
+
|
|
376
|
+
**X13. Do not mix alignment systems within the same section.**
|
|
377
|
+
If a card uses left-aligned text, do not center-align the button within it. If a
|
|
378
|
+
form uses top-aligned labels, do not switch to side-aligned labels for one field.
|
|
379
|
+
Mixed alignment creates micro-friction that accumulates into a "messy" perception.
|
|
380
|
+
|
|
381
|
+
---
|
|
382
|
+
|
|
383
|
+
## 3. Platform Variations
|
|
384
|
+
|
|
385
|
+
### 3.1 iOS (Apple Human Interface Guidelines)
|
|
386
|
+
|
|
387
|
+
**Typography:**
|
|
388
|
+
- System font: San Francisco (SF Pro Display >= 20pt, SF Pro Text < 20pt)
|
|
389
|
+
- SF Pro Text uses wider letter spacing and heavier strokes for small sizes
|
|
390
|
+
- Dynamic Type ranges: xSmall through xxxLarge, plus AX1-AX5 accessibility sizes
|
|
391
|
+
- Minimum readable size: 11pt (Caption 2 built-in minimum)
|
|
392
|
+
- Body default: 17pt
|
|
393
|
+
- Large Title: 34pt
|
|
394
|
+
- Title 1: 28pt, Title 2: 22pt, Title 3: 20pt
|
|
395
|
+
- Headline: 17pt semibold
|
|
396
|
+
- Subhead: 15pt
|
|
397
|
+
- Footnote: 13pt, Caption 1: 12pt, Caption 2: 11pt
|
|
398
|
+
|
|
399
|
+
**Touch targets:** 44 x 44pt minimum (approximately 7mm physical)
|
|
400
|
+
|
|
401
|
+
**Spacing and layout:**
|
|
402
|
+
- Standard horizontal margins: 16pt (compact), 20pt (regular)
|
|
403
|
+
- Navigation bar height: 44pt (standard), 96pt (large title)
|
|
404
|
+
- Tab bar height: 49pt
|
|
405
|
+
- Default content padding: 16pt
|
|
406
|
+
- Section spacing in grouped tables: 35pt header, 8pt between sections
|
|
407
|
+
|
|
408
|
+
**Hierarchy approach:**
|
|
409
|
+
- Relies heavily on typography weight and size rather than color fills
|
|
410
|
+
- Uses translucency and blur (vibrancy) for depth hierarchy
|
|
411
|
+
- Liquid Glass design language (2025+) uses backdrop blur and semi-transparency
|
|
412
|
+
- Left-aligned, bold typography for alerts and critical text
|
|
413
|
+
- Minimal use of borders; prefers whitespace and grouping for separation
|
|
414
|
+
|
|
415
|
+
### 3.2 Android (Material Design 3)
|
|
416
|
+
|
|
417
|
+
**Typography:**
|
|
418
|
+
- System font: Roboto (default), customizable via Material Theme Builder
|
|
419
|
+
- Full 15-token type scale (see Section 1.3 table above)
|
|
420
|
+
- Base body size: 14sp (Body Medium)
|
|
421
|
+
- Minimum recommended: 11sp (Label Small)
|
|
422
|
+
|
|
423
|
+
**Touch targets:** 48 x 48dp minimum (approximately 9mm physical)
|
|
424
|
+
|
|
425
|
+
**Spacing and layout:**
|
|
426
|
+
- 4dp baseline grid
|
|
427
|
+
- Common spacing increments: 4, 8, 12, 16, 24, 32dp
|
|
428
|
+
- Standard horizontal margins: 16dp (compact), 24dp (medium), 24dp (expanded)
|
|
429
|
+
- App bar height: 64dp (standard), 152dp (large)
|
|
430
|
+
- Navigation bar (bottom): 80dp
|
|
431
|
+
- FAB: 56dp (standard), 96dp (large)
|
|
432
|
+
- Grid gutter: 8dp minimum
|
|
433
|
+
|
|
434
|
+
**Hierarchy approach:**
|
|
435
|
+
- Elevation (shadow) as primary depth hierarchy signal
|
|
436
|
+
- Color roles: primary, secondary, tertiary surfaces with tonal mapping
|
|
437
|
+
- Tonal elevation (surface tint color at varying opacities) in M3
|
|
438
|
+
- M3 Expressive (2025) introduces more expressive typography and bolder color
|
|
439
|
+
- Container shapes (rounded corners) differentiate hierarchy levels
|
|
440
|
+
|
|
441
|
+
### 3.3 Web (Responsive)
|
|
442
|
+
|
|
443
|
+
**Typography:**
|
|
444
|
+
- Base body: 16px (browser default, do not go smaller for body text)
|
|
445
|
+
- Heading scale (common): 14, 16, 20, 24, 32, 40, 48, 64px
|
|
446
|
+
- Minimum readable: 12px (absolute minimum; 14px preferred)
|
|
447
|
+
- Line height: 1.4-1.6x font size for body text (e.g., 16px / 24px line height)
|
|
448
|
+
- Paragraph max-width: 65-75 characters (approximately 600-700px at 16px)
|
|
449
|
+
|
|
450
|
+
**Touch/click targets:**
|
|
451
|
+
- WCAG 2.1 SC 2.5.5: 44 x 44px minimum for touch
|
|
452
|
+
- Desktop click targets: 24px minimum height, 32px preferred
|
|
453
|
+
- Link text: minimum 16px font size, underlined or distinguishable
|
|
454
|
+
|
|
455
|
+
**Spacing and layout:**
|
|
456
|
+
- 12-column grid (desktop), 8-column (tablet), 4-column (mobile)
|
|
457
|
+
- Gutter width: 16-24px (mobile), 24-32px (desktop)
|
|
458
|
+
- Page max-width: 1200-1440px typical
|
|
459
|
+
- Horizontal page margin: 16px (mobile), 24-64px (tablet), 64-120px (desktop)
|
|
460
|
+
- Section vertical spacing: 48-96px (desktop), 32-48px (mobile)
|
|
461
|
+
|
|
462
|
+
**Hierarchy approach:**
|
|
463
|
+
- Z-pattern for landing/marketing pages
|
|
464
|
+
- F-pattern for content/text-heavy pages
|
|
465
|
+
- Sticky headers and floating CTAs for persistent hierarchy anchors
|
|
466
|
+
- Responsive breakpoints: 320, 768, 1024, 1440px (common)
|
|
467
|
+
- Progressive disclosure: show primary content first, details on interaction
|
|
468
|
+
|
|
469
|
+
### 3.4 Desktop Applications
|
|
470
|
+
|
|
471
|
+
**Typography:**
|
|
472
|
+
- Denser than web; base body: 13-14px typical (macOS system: 13pt, Windows: 14px Segoe UI)
|
|
473
|
+
- Smaller minimum sizes acceptable due to closer viewing distance
|
|
474
|
+
- Menu text: 13px, toolbar labels: 11-12px
|
|
475
|
+
|
|
476
|
+
**Interaction targets:**
|
|
477
|
+
- Menu items: 20-24px height minimum
|
|
478
|
+
- Toolbar buttons: 24-32px
|
|
479
|
+
- Tree view items: 20-24px row height
|
|
480
|
+
|
|
481
|
+
**Hierarchy approach:**
|
|
482
|
+
- Menu bar provides top-level navigation hierarchy
|
|
483
|
+
- Sidebars/panels create spatial hierarchy (left = navigation, center = content, right = properties)
|
|
484
|
+
- Density is higher; users expect more information per screen
|
|
485
|
+
- Keyboard shortcuts provide alternative hierarchy navigation
|
|
486
|
+
|
|
487
|
+
---
|
|
488
|
+
|
|
489
|
+
## 4. Common Mistakes in AI-Generated Designs
|
|
490
|
+
|
|
491
|
+
AI design tools and AI-assisted layout generators have specific recurring
|
|
492
|
+
failure patterns related to visual hierarchy. These mistakes stem from the
|
|
493
|
+
models' tendency to optimize for visual balance and aesthetic appeal without
|
|
494
|
+
understanding the user's task flow.
|
|
495
|
+
|
|
496
|
+
### 4.1 Flat Hierarchy (Equal Weight Everywhere)
|
|
497
|
+
|
|
498
|
+
**The problem:** AI-generated layouts frequently give all elements near-equal
|
|
499
|
+
visual weight. Every text block is the same size, every button looks the same,
|
|
500
|
+
every card is identically styled. The result is a layout with no entry point --
|
|
501
|
+
the user's eye bounces randomly across the page.
|
|
502
|
+
|
|
503
|
+
**How to detect:** Squint at the layout (or blur it to 5px Gaussian blur). If no
|
|
504
|
+
element clearly stands out, the hierarchy is flat. You should see 1 dominant
|
|
505
|
+
element, 2-3 supporting elements, and everything else receding.
|
|
506
|
+
|
|
507
|
+
**How to fix:** Identify the single most important element (primary CTA or key
|
|
508
|
+
headline). Increase its size by 40-60% relative to everything else. Add
|
|
509
|
+
whitespace around it. Then establish 2-3 supporting elements at 70-80% of the
|
|
510
|
+
primary's visual weight.
|
|
511
|
+
|
|
512
|
+
### 4.2 Over-Decoration
|
|
513
|
+
|
|
514
|
+
**The problem:** AI tends to add visual embellishment -- gradients, shadows,
|
|
515
|
+
borders, background colors, icons -- to every element. This creates visual noise
|
|
516
|
+
that competes with actual content hierarchy. A card with a gradient background, a
|
|
517
|
+
drop shadow, a border, an icon, bold text, AND a colored badge has too many
|
|
518
|
+
signals fighting for attention.
|
|
519
|
+
|
|
520
|
+
**How to detect:** Count the number of distinct visual treatments on a single
|
|
521
|
+
component. More than 3 (e.g., color fill + shadow + icon) is usually excessive.
|
|
522
|
+
|
|
523
|
+
**How to fix:** Apply the "one signal per level" rule. Primary elements get the
|
|
524
|
+
strongest single signal (size OR color OR position). Remove redundant treatments.
|
|
525
|
+
A button does not need both a shadow AND a gradient AND a border.
|
|
526
|
+
|
|
527
|
+
### 4.3 Inconsistent Spacing
|
|
528
|
+
|
|
529
|
+
**The problem:** AI-generated layouts often use arbitrary spacing values
|
|
530
|
+
(13px here, 17px there, 22px elsewhere) rather than adhering to a spacing scale.
|
|
531
|
+
This creates subtle visual disorder that users feel but cannot articulate.
|
|
532
|
+
|
|
533
|
+
**How to detect:** Measure the spacing between elements. If values are not
|
|
534
|
+
multiples of 4px (or your chosen base unit), the spacing is inconsistent.
|
|
535
|
+
|
|
536
|
+
**How to fix:** Snap all spacing to a 4px or 8px grid. Use the spacing scale
|
|
537
|
+
from Section 1.3. Every margin, padding, and gap should be a token value.
|
|
538
|
+
|
|
539
|
+
### 4.4 Poor Button Hierarchy
|
|
540
|
+
|
|
541
|
+
**The problem:** AI frequently generates pages with multiple same-styled buttons
|
|
542
|
+
("Learn More," "Get Started," "Sign Up," "Contact Us") all as filled/primary
|
|
543
|
+
buttons. When every button is primary, none is primary.
|
|
544
|
+
|
|
545
|
+
**How to detect:** Count the filled/primary buttons on the screen. If more than
|
|
546
|
+
1-2 are visible simultaneously, the button hierarchy is broken.
|
|
547
|
+
|
|
548
|
+
**How to fix:** Designate exactly 1 primary (filled) button per viewport. Use
|
|
549
|
+
outlined style for secondary actions and text-only style for tertiary. In forms,
|
|
550
|
+
the submit action is primary; cancel is tertiary.
|
|
551
|
+
|
|
552
|
+
### 4.5 Text Hierarchy Compression
|
|
553
|
+
|
|
554
|
+
**The problem:** AI-generated designs often compress the type scale -- using 14px,
|
|
555
|
+
15px, 16px, and 17px all on the same page. These sizes are too close to create
|
|
556
|
+
perceptible hierarchy levels.
|
|
557
|
+
|
|
558
|
+
**How to detect:** List all font sizes used on the page. If any two adjacent
|
|
559
|
+
levels differ by less than 20% (e.g., 14px and 16px = 14% difference), the
|
|
560
|
+
hierarchy is compressed.
|
|
561
|
+
|
|
562
|
+
**How to fix:** Use a minimum 1.25x ratio between adjacent sizes. If body is
|
|
563
|
+
14px, the next level up should be at least 18px, then 22px, then 28px.
|
|
564
|
+
|
|
565
|
+
### 4.6 Ignoring Reading Patterns
|
|
566
|
+
|
|
567
|
+
**The problem:** AI layouts may place the most important element in a position
|
|
568
|
+
that contradicts natural scanning patterns -- e.g., the primary CTA in the
|
|
569
|
+
middle-left of a landing page (a dead zone in the Z-pattern), or critical
|
|
570
|
+
information at the bottom-right of a text-heavy page (ignored in F-pattern
|
|
571
|
+
scanning).
|
|
572
|
+
|
|
573
|
+
**How to detect:** Overlay the appropriate scanning pattern (Z or F) on the
|
|
574
|
+
layout. The primary CTA should land on the pattern's natural fixation points.
|
|
575
|
+
|
|
576
|
+
**How to fix:** Move the primary CTA to a scanning pattern hotspot. For Z-pattern
|
|
577
|
+
pages: top-right or bottom-right. For F-pattern pages: beginning of the first
|
|
578
|
+
or second horizontal bar, or inline with the left vertical scan line.
|
|
579
|
+
|
|
580
|
+
### 4.7 Aesthetic Balance Over Functional Hierarchy
|
|
581
|
+
|
|
582
|
+
**The problem:** AI models are often trained on visually "beautiful" designs and
|
|
583
|
+
may prioritize symmetry and balance over functional hierarchy. A perfectly
|
|
584
|
+
symmetric layout where the CTA is visually balanced by a decorative image has
|
|
585
|
+
weak hierarchy -- the CTA does not dominate.
|
|
586
|
+
|
|
587
|
+
**How to detect:** Ask: "Can I identify the primary action in under 2 seconds
|
|
588
|
+
without reading any text?" If not, aesthetic balance is overriding functional
|
|
589
|
+
hierarchy.
|
|
590
|
+
|
|
591
|
+
**How to fix:** Intentionally break symmetry in favor of the primary element.
|
|
592
|
+
The primary CTA should be visually heavier than its surroundings. Asymmetry
|
|
593
|
+
creates hierarchy; perfect symmetry creates equivalence.
|
|
594
|
+
|
|
595
|
+
### 4.8 Missing Content Grouping
|
|
596
|
+
|
|
597
|
+
**The problem:** AI-generated designs sometimes present all content as a flat list
|
|
598
|
+
without logical grouping. A settings page with 20 options all at the same level,
|
|
599
|
+
without sections or categories, is overwhelming.
|
|
600
|
+
|
|
601
|
+
**How to detect:** If a page has more than 7 items (Miller's law) at the same
|
|
602
|
+
visual level without grouping, it needs sections.
|
|
603
|
+
|
|
604
|
+
**How to fix:** Group related items using section headings, card containers, or
|
|
605
|
+
increased spacing between groups. Use the Gestalt principles of proximity and
|
|
606
|
+
common region.
|
|
607
|
+
|
|
608
|
+
### 4.9 Self-Verification Checklist for AI-Generated Designs
|
|
609
|
+
|
|
610
|
+
Before finalizing any AI-generated layout, verify:
|
|
611
|
+
|
|
612
|
+
- [ ] Can you identify the single most important element within 2 seconds?
|
|
613
|
+
- [ ] Does the primary CTA have the highest visual weight on the page?
|
|
614
|
+
- [ ] Are there 3 or fewer competing focal points visible at once?
|
|
615
|
+
- [ ] Do all spacing values align to a 4px or 8px grid?
|
|
616
|
+
- [ ] Are font sizes limited to 3-5 distinct values?
|
|
617
|
+
- [ ] Is there at least a 1.2x ratio between adjacent type levels?
|
|
618
|
+
- [ ] Does button styling differentiate primary, secondary, and tertiary actions?
|
|
619
|
+
- [ ] Is body text left-aligned (not center-aligned)?
|
|
620
|
+
- [ ] Do touch targets meet platform minimums (44pt iOS, 48dp Android)?
|
|
621
|
+
- [ ] Does text contrast meet WCAG AA (4.5:1 normal, 3:1 large)?
|
|
622
|
+
- [ ] Are interactive elements visually distinct from static content?
|
|
623
|
+
- [ ] Does the layout follow a natural scanning pattern (F or Z)?
|
|
624
|
+
- [ ] Is whitespace used consistently and from a defined spacing scale?
|
|
625
|
+
|
|
626
|
+
---
|
|
627
|
+
|
|
628
|
+
## 5. Decision Framework
|
|
629
|
+
|
|
630
|
+
### 5.1 When to Break Hierarchy Rules
|
|
631
|
+
|
|
632
|
+
Hierarchy rules are guidelines for common cases, not immutable laws. There are
|
|
633
|
+
legitimate reasons to break them:
|
|
634
|
+
|
|
635
|
+
**Break: Equal-weight CTAs (violating single-primary-action rule)**
|
|
636
|
+
When to break: A/B comparison screens, product comparison pages, or "Choose
|
|
637
|
+
your plan" layouts where the user genuinely needs to evaluate two equal options.
|
|
638
|
+
Dual-primary buttons are acceptable when the design intent is parity, not
|
|
639
|
+
priority.
|
|
640
|
+
|
|
641
|
+
**Break: Small touch targets (below 44pt / 48dp)**
|
|
642
|
+
When to break: Dense data tables, code editors, or professional tools where
|
|
643
|
+
users accept density trade-offs for efficiency. The target audience is desktop
|
|
644
|
+
users with a mouse. Always provide an accessible alternative (keyboard nav).
|
|
645
|
+
|
|
646
|
+
**Break: Center-aligned body text**
|
|
647
|
+
When to break: Poetry, quotes, or ceremonial/formal content where centered
|
|
648
|
+
alignment is a cultural convention. Keep it to 2-3 lines maximum.
|
|
649
|
+
|
|
650
|
+
**Break: More than 5 type sizes on a page**
|
|
651
|
+
When to break: Dashboard or analytics pages with multiple data visualization
|
|
652
|
+
levels (chart titles, axis labels, data values, annotations, legends). The
|
|
653
|
+
data complexity justifies additional levels, but each level must serve a clear
|
|
654
|
+
purpose.
|
|
655
|
+
|
|
656
|
+
**Break: Pure black text (#000000)**
|
|
657
|
+
When to break: High-contrast accessibility mode, where users have explicitly
|
|
658
|
+
opted in to maximum contrast. Respect user preferences over aesthetic guidelines.
|
|
659
|
+
|
|
660
|
+
**Break: Using motion for hierarchy**
|
|
661
|
+
When to break: Onboarding flows, empty states, or notification badges where a
|
|
662
|
+
subtle animation (pulse, fade-in) guides the user to an element they might
|
|
663
|
+
otherwise miss. Motion should be < 300ms and non-repeating after initial view.
|
|
664
|
+
|
|
665
|
+
### 5.2 Trade-Off Matrices
|
|
666
|
+
|
|
667
|
+
#### Density vs. Clarity
|
|
668
|
+
|
|
669
|
+
| Scenario | Lean Toward Density | Lean Toward Clarity |
|
|
670
|
+
|----------|-------------------|-------------------|
|
|
671
|
+
| Professional/expert tool | Yes | -- |
|
|
672
|
+
| Consumer mobile app | -- | Yes |
|
|
673
|
+
| Data-entry form (daily use) | Yes | -- |
|
|
674
|
+
| Onboarding/first-time experience | -- | Yes |
|
|
675
|
+
| E-commerce product listing | Balanced | Balanced |
|
|
676
|
+
| Dashboard (monitoring) | Yes | -- |
|
|
677
|
+
| Marketing landing page | -- | Yes |
|
|
678
|
+
| Settings/preferences | Balanced | -- |
|
|
679
|
+
|
|
680
|
+
**Density indicators:** Smaller type (13-14px base), tighter spacing (4-8px gaps),
|
|
681
|
+
more items per viewport, smaller touch targets, multi-column layouts.
|
|
682
|
+
|
|
683
|
+
**Clarity indicators:** Larger type (16-18px base), generous spacing (16-24px gaps),
|
|
684
|
+
fewer items per viewport, large touch targets, single-column or wide-column layouts.
|
|
685
|
+
|
|
686
|
+
#### Aesthetics vs. Usability
|
|
687
|
+
|
|
688
|
+
| When they conflict... | Choose usability when... | Choose aesthetics when... |
|
|
689
|
+
|----------------------|--------------------------|--------------------------|
|
|
690
|
+
| CTA prominence | Users need to complete a task (checkout, signup) | Brand perception is the primary goal (portfolio, brand site) |
|
|
691
|
+
| Whitespace usage | Content comprehension is critical | Visual impact and emotional response matter more |
|
|
692
|
+
| Color palette | Accessibility requirements must be met (always) | Never -- accessibility is non-negotiable |
|
|
693
|
+
| Typography expressiveness | Readability of body text is at stake | Display/headline text where expressiveness enhances communication |
|
|
694
|
+
| Animation/motion | Performance or accessibility is impacted | Delight and engagement are primary metrics |
|
|
695
|
+
|
|
696
|
+
**Non-negotiable:** Accessibility (contrast ratios, touch targets, screen reader
|
|
697
|
+
support) should never be sacrificed for aesthetics. A beautiful design that
|
|
698
|
+
excludes 8-15% of users is a failed design.
|
|
699
|
+
|
|
700
|
+
#### Consistency vs. Emphasis
|
|
701
|
+
|
|
702
|
+
| Situation | Maintain Consistency | Break for Emphasis |
|
|
703
|
+
|-----------|--------------------|--------------------|
|
|
704
|
+
| Normal page content | Yes | -- |
|
|
705
|
+
| Error or critical alert | -- | Yes (color, size, position) |
|
|
706
|
+
| Primary CTA among many actions | -- | Yes (filled vs. outlined) |
|
|
707
|
+
| Navigation items | Yes (same weight, size) | -- |
|
|
708
|
+
| New feature callout | -- | Yes (badge, animation) |
|
|
709
|
+
| Status messages | Yes (consistent semantic colors) | -- |
|
|
710
|
+
|
|
711
|
+
### 5.3 The Hierarchy Stress Test
|
|
712
|
+
|
|
713
|
+
Apply this three-step test to any layout:
|
|
714
|
+
|
|
715
|
+
**Step 1 -- The Blur Test:**
|
|
716
|
+
Apply a 5-8px Gaussian blur to the entire layout (or squint). The visual
|
|
717
|
+
hierarchy should still be readable: one dominant element, 2-3 supporting
|
|
718
|
+
elements, and a background of receding content. If the blurred layout looks
|
|
719
|
+
like uniform gray noise, the hierarchy has failed.
|
|
720
|
+
|
|
721
|
+
**Step 2 -- The 5-Second Test:**
|
|
722
|
+
Show the layout to someone for 5 seconds, then hide it. Ask: "What was this
|
|
723
|
+
page about? What were you supposed to do?" If they cannot answer both questions,
|
|
724
|
+
the hierarchy is not communicating intent.
|
|
725
|
+
|
|
726
|
+
**Step 3 -- The Grayscale Test:**
|
|
727
|
+
Convert the layout to grayscale. The hierarchy should still function through
|
|
728
|
+
size, weight, spacing, and position alone. If removing color destroys the
|
|
729
|
+
hierarchy, it was too dependent on color (violating accessibility principles).
|
|
730
|
+
|
|
731
|
+
---
|
|
732
|
+
|
|
733
|
+
## Quick Reference Checklist
|
|
734
|
+
|
|
735
|
+
Use this checklist to evaluate any interface layout for visual hierarchy quality.
|
|
736
|
+
Each item is pass/fail.
|
|
737
|
+
|
|
738
|
+
- [ ] **Single focal point:** One element clearly dominates the viewport (blur test passes)
|
|
739
|
+
- [ ] **Type scale discipline:** 3-5 font sizes maximum per screen, minimum 1.2x ratio between levels
|
|
740
|
+
- [ ] **Primary CTA prominence:** Primary action is filled/solid, 20-30% larger than secondary actions
|
|
741
|
+
- [ ] **Button hierarchy:** Max 1-2 filled buttons visible; secondary = outlined, tertiary = text-only
|
|
742
|
+
- [ ] **Contrast compliance:** All text meets WCAG AA (4.5:1 normal, 3:1 large text)
|
|
743
|
+
- [ ] **Color hierarchy:** Text uses 3 opacity levels (87%, 60%, 38%) or equivalent hex values
|
|
744
|
+
- [ ] **Spacing consistency:** All spacing values are multiples of 4px (or chosen base unit)
|
|
745
|
+
- [ ] **Internal <= external:** Padding within components is less than or equal to margins between them
|
|
746
|
+
- [ ] **Touch targets:** Interactive elements meet 44pt (iOS) or 48dp (Android) minimums
|
|
747
|
+
- [ ] **Alignment:** All elements align to a column grid; no orphaned alignments
|
|
748
|
+
- [ ] **Reading pattern:** Layout follows F-pattern (content) or Z-pattern (marketing) appropriately
|
|
749
|
+
- [ ] **Scanning anchors:** Headings are visually distinct and self-sufficient (layer-cake scannable)
|
|
750
|
+
- [ ] **Line length:** Body text is 60-80 characters per line (480-640px at 16px)
|
|
751
|
+
- [ ] **No visual shouting:** No more than 3 competing focal points per viewport
|
|
752
|
+
- [ ] **Text alignment:** Body text is left-aligned (LTR); center-alignment limited to short headings
|
|
753
|
+
- [ ] **Interactive distinction:** Links/buttons differ from static text by 2+ visual properties
|
|
754
|
+
- [ ] **Whitespace isolation:** Primary element has meaningful whitespace separation from neighbors
|
|
755
|
+
- [ ] **Grayscale test:** Hierarchy survives removal of color (size/weight/spacing carry it)
|
|
756
|
+
- [ ] **Platform compliance:** Typography and spacing follow platform-specific guidelines (M3 / HIG / Web)
|
|
757
|
+
- [ ] **Depth consistency:** Elevation/shadow levels are used consistently and in correct stacking order
|
|
758
|
+
|
|
759
|
+
---
|
|
760
|
+
|
|
761
|
+
*Researched: 2026-03-07 | Sources: Material Design 3 (m3.material.io/styles/typography, m3.material.io/foundations/layout), Apple Human Interface Guidelines (developer.apple.com/design/human-interface-guidelines/typography), Ant Design (ant.design/docs/spec/font, ant.design/docs/spec/proximity), Nielsen Norman Group (nngroup.com/articles/f-shaped-pattern-reading-web-content-discovered, nngroup.com/articles/text-scanning-patterns-eyetracking, nngroup.com/articles/principles-visual-design), WCAG 2.1 (w3.org/WAI/WCAG21/Understanding/contrast-minimum, w3.org/WAI/WCAG21/Understanding/non-text-contrast), Interaction Design Foundation (ixdf.org/literature/topics/visual-hierarchy, ixdf.org/literature/topics/gestalt-principles), Smashing Magazine (smashingmagazine.com/2014/12/design-principles-visual-weight-direction)*
|