@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,789 @@
|
|
|
1
|
+
# Content Consumption Patterns
|
|
2
|
+
|
|
3
|
+
> Design expertise module for feeds, articles, media players, and all content-consumption surfaces.
|
|
4
|
+
> Covers anatomy, best-in-class examples, user flows, micro-interactions, anti-patterns,
|
|
5
|
+
> accessibility, cross-platform adaptation, and decision frameworks.
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## 1. Pattern Anatomy
|
|
10
|
+
|
|
11
|
+
### 1.1 Feeds
|
|
12
|
+
|
|
13
|
+
A feed is a reverse-chronological or algorithmically-ranked stream of content cards
|
|
14
|
+
that updates continuously. Feeds are the dominant content discovery surface on the
|
|
15
|
+
modern web and in mobile applications.
|
|
16
|
+
|
|
17
|
+
**Structural elements:**
|
|
18
|
+
|
|
19
|
+
- **Feed item / card** -- the atomic unit containing headline, media thumbnail,
|
|
20
|
+
metadata (author, timestamp, engagement counts), and action affordances (like,
|
|
21
|
+
share, save). Card anatomy varies by content type but should remain internally
|
|
22
|
+
consistent within a single feed.
|
|
23
|
+
- **Feed header** -- houses filter tabs (For You | Following | Topics), search
|
|
24
|
+
entry point, and optionally a story tray or featured content slot.
|
|
25
|
+
- **Interstitial slots** -- ads, suggested follows, or topic prompts injected
|
|
26
|
+
between organic items at predictable intervals (every 5-8 items is common).
|
|
27
|
+
Interstitials must be visually distinct from organic content to avoid deceptive
|
|
28
|
+
patterns.
|
|
29
|
+
- **Loading boundary** -- the trigger point for fetching the next batch; can be a
|
|
30
|
+
skeleton screen, shimmer placeholder, or "Load More" button depending on the
|
|
31
|
+
scroll strategy.
|
|
32
|
+
- **Empty state** -- shown when the feed has no content (new user, filtered to
|
|
33
|
+
zero results). Must guide the user toward action: "Follow topics to fill your
|
|
34
|
+
feed" or "No results -- try different filters."
|
|
35
|
+
|
|
36
|
+
**Key principles (NNG):**
|
|
37
|
+
|
|
38
|
+
- Show 1.5-2.5 cards in the initial viewport to signal scrollability.
|
|
39
|
+
- Maintain consistent card height/aspect ratio to prevent layout shift.
|
|
40
|
+
- Preserve scroll position on back-navigation; losing position is a top user complaint.
|
|
41
|
+
- Provide clear visual separation between items (whitespace, dividers, or card edges).
|
|
42
|
+
- New content should appear via a non-intrusive banner ("5 new posts") rather than
|
|
43
|
+
auto-inserting at the top, which causes disorienting layout shift.
|
|
44
|
+
- Feed items should communicate content type at a glance (video icon overlay, podcast
|
|
45
|
+
waveform indicator, article read time badge).
|
|
46
|
+
|
|
47
|
+
### 1.2 Articles / Long-Form Reading
|
|
48
|
+
|
|
49
|
+
Article layouts prioritize sustained reading. The goal is to minimize distractions and
|
|
50
|
+
maximize typographic clarity so users can enter and maintain a flow state.
|
|
51
|
+
|
|
52
|
+
**Structural elements:**
|
|
53
|
+
|
|
54
|
+
- **Hero area** -- headline, byline, publish date, estimated read time, hero image or
|
|
55
|
+
illustration. The hero sets the emotional tone and establishes content credibility.
|
|
56
|
+
- **Body content** -- structured with subheadings (H2/H3), pull quotes, inline images,
|
|
57
|
+
embedded media, and code blocks where relevant. Well-structured body text enables
|
|
58
|
+
both deep reading and scanning.
|
|
59
|
+
- **Progress indicator** -- a thin bar at the top of the viewport showing scroll
|
|
60
|
+
percentage through the article (Medium's signature pattern).
|
|
61
|
+
- **Sticky utilities** -- floating actions for sharing, bookmarking, or adjusting
|
|
62
|
+
reading preferences (font size, theme). These persist without obscuring content.
|
|
63
|
+
- **Table of contents** -- for articles exceeding 2,000 words, a sticky or collapsible
|
|
64
|
+
TOC aids navigation. Can highlight the current section during scroll.
|
|
65
|
+
- **Related content** -- recommended articles at the article's end or in a sidebar
|
|
66
|
+
on wider viewports. Surfaced based on topic, author, or reading history.
|
|
67
|
+
- **Comments / reactions** -- engagement section placed below the article body,
|
|
68
|
+
never interrupting the reading flow.
|
|
69
|
+
|
|
70
|
+
**Typography (NNG, web.dev):**
|
|
71
|
+
|
|
72
|
+
- Body text: 16-20px, line-height 1.5-1.7, measure (line length) of 50-75 characters.
|
|
73
|
+
- Serif or humanist sans-serif fonts improve long-form readability.
|
|
74
|
+
- Adequate paragraph spacing (1em-1.5em between paragraphs).
|
|
75
|
+
- Dark-on-light as default; provide a dark mode toggle for low-light reading.
|
|
76
|
+
- Heading hierarchy must be visually distinct: size, weight, and spacing should
|
|
77
|
+
clearly differentiate H1 from H2 from H3.
|
|
78
|
+
|
|
79
|
+
### 1.3 Media Players
|
|
80
|
+
|
|
81
|
+
**Video:** playback controls (play/pause, seek with preview thumbnails, volume, fullscreen,
|
|
82
|
+
speed, quality), overlay controls that auto-hide after 3-5s, captions toggle (default on),
|
|
83
|
+
Picture-in-Picture, theater/cinema mode.
|
|
84
|
+
|
|
85
|
+
**Audio:** persistent mini-player (bottom bar across navigation), queue management with
|
|
86
|
+
drag-to-reorder, playback controls (play/pause, skip, shuffle, repeat, seek), now-playing
|
|
87
|
+
view with album art and lyrics.
|
|
88
|
+
|
|
89
|
+
**Performance:** adaptive bitrate streaming (HLS/DASH), preload metadata only until user
|
|
90
|
+
initiates playback, reserve exact player dimensions to prevent CLS (web.dev target: < 0.1).
|
|
91
|
+
|
|
92
|
+
### 1.4 Carousels
|
|
93
|
+
|
|
94
|
+
NNG research shows users exhibit banner blindness toward carousels. Click-through rates
|
|
95
|
+
drop sharply after slide 1. Auto-forwarding carousels frustrate users by interrupting interaction.
|
|
96
|
+
|
|
97
|
+
**When carousels work:** homogeneous items of equal importance, gallery browsing, touch
|
|
98
|
+
devices where horizontal swipe is natural.
|
|
99
|
+
|
|
100
|
+
**Guidelines:** show partial next item to signal scrollability, provide visible controls
|
|
101
|
+
(arrows + dots), auto-forward at 1s per 3 words (NNG), pause on hover/focus, never
|
|
102
|
+
auto-forward on mobile, limit to 5-7 items.
|
|
103
|
+
|
|
104
|
+
### 1.5 Stories
|
|
105
|
+
|
|
106
|
+
Full-screen, ephemeral content consumed via tap-to-advance. Pioneered by Snapchat.
|
|
107
|
+
|
|
108
|
+
**Elements:** story tray (horizontal avatar row with unseen indicator rings), full-screen
|
|
109
|
+
viewer with tap zones (left=back, right=forward, hold=pause, swipe-down=dismiss),
|
|
110
|
+
segmented progress bars, interactive overlays (polls, stickers, links).
|
|
111
|
+
|
|
112
|
+
**Principles:** mobile-first, minimal chrome, auto-advance 5-7s for images, full duration
|
|
113
|
+
for video, haptic feedback on interactions.
|
|
114
|
+
|
|
115
|
+
### 1.6 Reader Mode
|
|
116
|
+
|
|
117
|
+
Strips navigation, ads, and chrome to present article text in an optimized layout.
|
|
118
|
+
|
|
119
|
+
**Approaches:** browser-native (Safari Reader, Firefox Reader View), app-native (Medium,
|
|
120
|
+
Pocket, Apple News), site-provided focus toggle. Features include adjustable font/size/spacing,
|
|
121
|
+
theme options (light/dark/sepia), text-to-speech, read time display, progress persistence.
|
|
122
|
+
|
|
123
|
+
**Implementation:** use semantic HTML (`<article>`, `<main>`, `<h1>`-`<h6>`) so browser
|
|
124
|
+
reader modes extract content correctly.
|
|
125
|
+
|
|
126
|
+
### 1.7 Infinite Scroll
|
|
127
|
+
|
|
128
|
+
**NNG guidance:** use when content is homogeneous and users browse without a specific goal
|
|
129
|
+
(social, news, galleries). Avoid for goal-oriented tasks, when footer access matters, or
|
|
130
|
+
for users with accessibility/bandwidth constraints.
|
|
131
|
+
|
|
132
|
+
**Requirements:** skeleton loading states, scroll position preservation on back-nav, URL
|
|
133
|
+
reflecting approximate position, "Back to top" button, progress indicator ("Showing 40 of ~200").
|
|
134
|
+
|
|
135
|
+
**Alternatives:** "Load More" button, hybrid pagination, traditional pages.
|
|
136
|
+
|
|
137
|
+
### 1.8 Pagination
|
|
138
|
+
|
|
139
|
+
**Advantages:** clear position/total awareness, bookmarkable pages, predictable performance,
|
|
140
|
+
footer access, better SEO (web.dev).
|
|
141
|
+
|
|
142
|
+
**Guidelines:** show current page + first/last + 2-3 adjacent, include Prev/Next with
|
|
143
|
+
keyboard shortcuts, persist state in URL, show result range ("21-40 of 312"), on mobile
|
|
144
|
+
consider "Load More" hybrid.
|
|
145
|
+
|
|
146
|
+
---
|
|
147
|
+
|
|
148
|
+
## 2. Best-in-Class Examples
|
|
149
|
+
|
|
150
|
+
### 2.1 Medium
|
|
151
|
+
|
|
152
|
+
**What they do well:**
|
|
153
|
+
- Clean, typographically focused reading with 680px content width and serif body text
|
|
154
|
+
(Charter font), creating a book-like reading environment.
|
|
155
|
+
- Estimated read time displayed on every article card and at the article top, setting
|
|
156
|
+
clear expectations before the user commits.
|
|
157
|
+
- Green scroll progress bar at the top of the viewport provides continuous feedback.
|
|
158
|
+
- Nuanced clap interaction (up to 50 claps per reader) allows graduated appreciation
|
|
159
|
+
beyond a binary like/dislike.
|
|
160
|
+
- Series and publications provide content organization beyond individual posts.
|
|
161
|
+
- Highlighted text can be shared or commented on directly (inline annotation).
|
|
162
|
+
|
|
163
|
+
**Lessons:** read time estimates reduce bounce; progress indicators maintain reading
|
|
164
|
+
momentum; constrained content width improves readability; inline annotations encourage
|
|
165
|
+
deeper engagement.
|
|
166
|
+
|
|
167
|
+
### 2.2 YouTube
|
|
168
|
+
|
|
169
|
+
**What they do well:**
|
|
170
|
+
- Thumbnail-driven discovery with hover-to-preview (3-second silent GIF on desktop),
|
|
171
|
+
reducing the cost of evaluating whether to watch.
|
|
172
|
+
- Video chapters with labeled timestamps in the seek bar and description dramatically
|
|
173
|
+
improve navigation within long-form content.
|
|
174
|
+
- Picture-in-Picture and mini-player persist playback across page navigation.
|
|
175
|
+
- Shorts (vertical short-form) integrated alongside traditional long-form content using
|
|
176
|
+
TikTok-style vertical swipe interface.
|
|
177
|
+
- Playback speed control (0.25x-2x) and comprehensive caption/subtitle support.
|
|
178
|
+
- Watch Later queue and playlist management for deferred consumption.
|
|
179
|
+
- Theater and fullscreen modes provide graduated levels of immersion.
|
|
180
|
+
|
|
181
|
+
**Lessons:** chapters improve long-content navigation; hover previews reduce evaluation
|
|
182
|
+
cost; persistent mini-player respects user investment in ongoing media; offering both
|
|
183
|
+
short-form and long-form on the same platform serves different consumption modes.
|
|
184
|
+
|
|
185
|
+
### 2.3 Twitter / X
|
|
186
|
+
|
|
187
|
+
**What they do well:**
|
|
188
|
+
- Dual-timeline model: "For You" (algorithmic) and "Following" (chronological) gives
|
|
189
|
+
users agency over their consumption mode.
|
|
190
|
+
- "Show N new posts" banner prevents layout shift rather than auto-inserting content
|
|
191
|
+
at the top, preserving the user's reading position.
|
|
192
|
+
- Bookmarks for private saving, distinct from public "likes," serving different intents.
|
|
193
|
+
- Lists for curated sub-feeds organized by topic, interest, or social circle.
|
|
194
|
+
- Threaded conversations with visible reply chains and quote retweets for commentary.
|
|
195
|
+
- Media previews inline (images, videos, link cards) with consistent aspect ratios.
|
|
196
|
+
- Real-time update model aligned with the platform's breaking-news identity.
|
|
197
|
+
|
|
198
|
+
**Lessons:** offering both algorithmic and chronological views respects diverse user needs;
|
|
199
|
+
private bookmarks vs. public likes serve fundamentally different intents; non-intrusive
|
|
200
|
+
new-content banners prevent disorienting layout shifts.
|
|
201
|
+
|
|
202
|
+
### 2.4 Spotify
|
|
203
|
+
|
|
204
|
+
**What they do well:**
|
|
205
|
+
- Persistent bottom mini-player with album art, track info, and core controls visible
|
|
206
|
+
across every screen in the app.
|
|
207
|
+
- "Now Playing" full-screen view with lyrics synced to playback in real time.
|
|
208
|
+
- Discover Weekly and Daily Mix playlists demonstrate personalized algorithmic curation
|
|
209
|
+
that users actively anticipate (habitual engagement).
|
|
210
|
+
- Offline download for premium users with clear download status indicators
|
|
211
|
+
(downloading, downloaded, error).
|
|
212
|
+
- Spotify Connect enables seamless cross-device handoff between phone, desktop, speaker,
|
|
213
|
+
car, and smart TV.
|
|
214
|
+
- TikTok-inspired vertical scroll feed for music and podcast discovery.
|
|
215
|
+
- Queue management with drag-to-reorder provides granular playback control.
|
|
216
|
+
|
|
217
|
+
**Lessons:** persistent players must never block primary content navigation; cross-device
|
|
218
|
+
continuity is a premium differentiator; download/offline status should be immediately
|
|
219
|
+
visible without opening a detail view.
|
|
220
|
+
|
|
221
|
+
### 2.5 Apple News
|
|
222
|
+
|
|
223
|
+
**What they do well:**
|
|
224
|
+
- Editorially curated "Top Stories" combined with algorithmic "Trending" and personalized
|
|
225
|
+
"For You" sections, blending human judgment with machine learning.
|
|
226
|
+
- Magazine-quality layout with large hero images, typographic hierarchy, and sectioned
|
|
227
|
+
browsing by topic (Apple News Format supports parallax headers, mosaics, pull quotes).
|
|
228
|
+
- Dynamic Type support for system-level font scaling, ensuring accessibility compliance
|
|
229
|
+
across all content.
|
|
230
|
+
- Offline reading: articles are cached automatically for consumption without connectivity.
|
|
231
|
+
- "Save" functionality with a dedicated "Saved" tab in the primary navigation.
|
|
232
|
+
- Publisher branding preserved within a consistent reading chrome.
|
|
233
|
+
|
|
234
|
+
**Lessons:** editorial curation combined with personalization builds trust and discovery;
|
|
235
|
+
Dynamic Type is essential for inclusive design on Apple platforms; offline caching should
|
|
236
|
+
be seamless (automatic), not a manual download action.
|
|
237
|
+
|
|
238
|
+
### 2.6 Substack
|
|
239
|
+
|
|
240
|
+
**What they do well:**
|
|
241
|
+
- Newsletter-first design: email delivery as primary consumption channel, web as
|
|
242
|
+
secondary. This inverts the typical web-first model and provides reliable delivery
|
|
243
|
+
directly to the user's inbox.
|
|
244
|
+
- Minimal, distraction-free reading layout with wide text measure and generous line
|
|
245
|
+
height -- no sidebar clutter, no ad placements.
|
|
246
|
+
- Threaded discussion section below articles encourages community engagement.
|
|
247
|
+
- Podcast and audio integration within the same publication interface.
|
|
248
|
+
- "Restacks" (similar to retweets) enable cross-publication discovery in the Substack
|
|
249
|
+
app's Notes feed.
|
|
250
|
+
- Clear paywall demarcation: free preview content ends with an explicit boundary
|
|
251
|
+
before subscriber-only sections begin.
|
|
252
|
+
|
|
253
|
+
**Lessons:** email as a consumption channel provides reliable content delivery outside
|
|
254
|
+
algorithmic gatekeeping; clean layouts without sidebars improve reading retention;
|
|
255
|
+
clear paywall boundaries prevent user frustration and build subscription trust.
|
|
256
|
+
|
|
257
|
+
### 2.7 TikTok
|
|
258
|
+
|
|
259
|
+
**What they do well:**
|
|
260
|
+
- Full-screen vertical video as the sole content unit provides maximum immersion with
|
|
261
|
+
zero chrome distraction.
|
|
262
|
+
- Single-swipe navigation: swipe up = next video. Eliminates choice paralysis by
|
|
263
|
+
removing browsing decisions entirely. Each swipe is a natural punctuation mark.
|
|
264
|
+
- Algorithmic "For You Page" eliminates the need for a social graph to discover
|
|
265
|
+
content -- the algorithm finds content for the user based on engagement signals.
|
|
266
|
+
- Engagement controls positioned on the right edge (like, comment, share, save, sound)
|
|
267
|
+
within easy thumb reach.
|
|
268
|
+
- Sound-on by default, aligned with the immersive full-screen paradigm (but captions
|
|
269
|
+
are essential for accessibility and sound-off contexts).
|
|
270
|
+
- Creator tools integrated directly into the consumption flow, lowering the barrier
|
|
271
|
+
between consuming and creating.
|
|
272
|
+
|
|
273
|
+
**Lessons:** removing navigation decisions increases engagement but raises ethical
|
|
274
|
+
questions about attention capture and compulsive use; full-screen video demands
|
|
275
|
+
sound-aware design (always provide captions); algorithmic discovery can outperform
|
|
276
|
+
social-graph-based discovery for content-first platforms.
|
|
277
|
+
|
|
278
|
+
---
|
|
279
|
+
|
|
280
|
+
## 3. User Flow Mapping
|
|
281
|
+
|
|
282
|
+
### 3.1 Core Flow
|
|
283
|
+
```
|
|
284
|
+
[Discovery] [Evaluation] [Consumption] [Post-Consumption]
|
|
285
|
+
| | | |
|
|
286
|
+
v v v v
|
|
287
|
+
Browse Feed ---> Preview/Scan ---> Read/Watch/Listen ---> React/Save/Share
|
|
288
|
+
| | | |
|
|
289
|
+
|-- Search |-- Read headline |-- Scroll/seek |-- Like/clap
|
|
290
|
+
|-- Explore |-- View thumbnail |-- Adjust settings |-- Bookmark/save
|
|
291
|
+
|-- Notifications |-- Check read time |-- Pause/resume |-- Share
|
|
292
|
+
|-- Recommendations |-- Scan first para |-- Take notes |-- Comment
|
|
293
|
+
|-- Deep links |-- Check source |-- Highlight |-- Add to list
|
|
294
|
+
```
|
|
295
|
+
|
|
296
|
+
**Entry points into consumption:**
|
|
297
|
+
|
|
298
|
+
1. **Feed scroll** -- user opens app/site, begins scrolling the default feed.
|
|
299
|
+
2. **Search** -- user has intent, types a query, evaluates results.
|
|
300
|
+
3. **Notification** -- push or in-app alert draws user to specific content.
|
|
301
|
+
4. **Deep link** -- shared URL opens directly to content.
|
|
302
|
+
5. **Recommendation** -- algorithmic suggestion (email digest, "You might like").
|
|
303
|
+
|
|
304
|
+
**Transition to consumption:** the tap/click on a feed card is the critical conversion
|
|
305
|
+
point. Reduce friction with fast page load (< 2.5s LCP per web.dev), smooth animation
|
|
306
|
+
into the content view, and immediate content visibility. On mobile, shared-element
|
|
307
|
+
transitions (thumbnail expanding into hero image) provide spatial continuity.
|
|
308
|
+
|
|
309
|
+
### 3.2 Saving and Bookmarking
|
|
310
|
+
|
|
311
|
+
**User intents for saving:**
|
|
312
|
+
|
|
313
|
+
- "Read later" -- deferring consumption to a more convenient time or context.
|
|
314
|
+
- "Reference" -- saving content for future re-consultation or citation.
|
|
315
|
+
- "Curate" -- collecting content into themed collections, lists, or boards.
|
|
316
|
+
- "Share later" -- saving to forward to others at an appropriate time.
|
|
317
|
+
|
|
318
|
+
**Design requirements:**
|
|
319
|
+
|
|
320
|
+
- One-tap save with clear visual confirmation (icon state change + toast).
|
|
321
|
+
- Organization into folders, collections, or tags for retrieval.
|
|
322
|
+
- A dedicated "Saved" or "Library" section accessible from primary navigation.
|
|
323
|
+
- Cross-device sync so saved content appears on all logged-in surfaces.
|
|
324
|
+
- Offline availability for saved content, especially on mobile.
|
|
325
|
+
- Bulk management: select multiple, move to folder, delete, export.
|
|
326
|
+
|
|
327
|
+
### 3.3 Sharing
|
|
328
|
+
|
|
329
|
+
```
|
|
330
|
+
Tap Share --> Share Sheet --> Select Channel --> Confirm/Send
|
|
331
|
+
|
|
|
332
|
+
|-- Copy link (most used; always place first)
|
|
333
|
+
|-- Native share sheet (iOS/Android)
|
|
334
|
+
|-- Direct message within app
|
|
335
|
+
|-- Social platforms (quick-share icons)
|
|
336
|
+
|-- Email
|
|
337
|
+
|-- Embed code (for publishers/bloggers)
|
|
338
|
+
```
|
|
339
|
+
|
|
340
|
+
**Design considerations:** pre-populate share text with title and URL. Support deep
|
|
341
|
+
links that open to specific content position (timestamp for video, paragraph for
|
|
342
|
+
articles). Track share attribution for analytics without exposing user data. Provide
|
|
343
|
+
"Copied!" confirmation with haptic feedback when copying link.
|
|
344
|
+
|
|
345
|
+
### 3.4 Offline Reading
|
|
346
|
+
|
|
347
|
+
**Implementation patterns:**
|
|
348
|
+
|
|
349
|
+
- **Automatic caching** -- cache recently viewed and saved articles via Service Worker
|
|
350
|
+
using a cache-first or stale-while-revalidate strategy. Users should not need to
|
|
351
|
+
explicitly "download" content they have already viewed.
|
|
352
|
+
- **Explicit download** -- user taps a download icon; content is stored for offline
|
|
353
|
+
access with clear status indicators (downloading, downloaded, error, update available).
|
|
354
|
+
- **Graceful degradation** -- when offline, show cached content with a subtle banner:
|
|
355
|
+
"You're offline. Showing saved content." Hide actions that require connectivity
|
|
356
|
+
(commenting, sharing) or show them disabled with a tooltip.
|
|
357
|
+
- **Sync on reconnect** -- queue actions taken offline (likes, bookmarks, progress
|
|
358
|
+
updates) and sync when connectivity returns via Background Sync API.
|
|
359
|
+
|
|
360
|
+
**Technical approach (PWA):** Service Worker intercepts fetch requests and serves cached
|
|
361
|
+
responses. IndexedDB stores structured content (article text, metadata). Cache API stores
|
|
362
|
+
media assets. Background Sync API queues mutations for later execution.
|
|
363
|
+
|
|
364
|
+
### 3.5 Progress Tracking
|
|
365
|
+
|
|
366
|
+
**Types of progress:**
|
|
367
|
+
|
|
368
|
+
- **Scroll progress** -- percentage of article read, shown as a progress bar or
|
|
369
|
+
percentage indicator. The primary metric for text content.
|
|
370
|
+
- **Media progress** -- timestamp position within audio/video content. Enables
|
|
371
|
+
resume-where-you-left-off across sessions and devices.
|
|
372
|
+
- **Series progress** -- which episodes, chapters, or installments have been completed
|
|
373
|
+
in a multi-part series. Shows both individual and overall completion.
|
|
374
|
+
- **Course progress** -- completion status across modules and lessons with milestones.
|
|
375
|
+
|
|
376
|
+
**Implementation:** store progress server-side for authenticated users, localStorage for
|
|
377
|
+
anonymous. Update on scroll events (debounced, every 5-10% increment to avoid excessive
|
|
378
|
+
writes). Display on feed cards: "45% read" or a subtle progress bar on the card thumbnail.
|
|
379
|
+
Allow users to mark content as "finished" or reset to "unread."
|
|
380
|
+
|
|
381
|
+
### 3.6 Read Position Memory
|
|
382
|
+
|
|
383
|
+
NNG research on spatial memory demonstrates that users build mental models of where they
|
|
384
|
+
are within content. Losing position forces re-orientation, increasing cognitive load and
|
|
385
|
+
causing frustration.
|
|
386
|
+
|
|
387
|
+
**Implementation approaches:**
|
|
388
|
+
|
|
389
|
+
- **Scroll position restoration** -- on back-navigation or app relaunch, restore the
|
|
390
|
+
exact scroll position within an article or feed.
|
|
391
|
+
- **Last-read marker** -- a subtle visual indicator showing where the user previously
|
|
392
|
+
stopped reading (Kindle's "furthest page read" model).
|
|
393
|
+
- **Feed position** -- when returning to a feed, show the last-seen position rather than
|
|
394
|
+
jumping to the top with new content. Store the ID of the last-seen item rather than
|
|
395
|
+
pixel offset (more resilient to content changes).
|
|
396
|
+
- **Cross-device sync** -- sync read position across devices so users can pick up where
|
|
397
|
+
they left off (essential for long-form and serial content).
|
|
398
|
+
|
|
399
|
+
**Technical considerations:** store element anchor (more resilient to layout changes than
|
|
400
|
+
pixel offset) via Intersection Observer. Debounce position updates to avoid excessive
|
|
401
|
+
writes. For feeds, store the last-seen item ID rather than scroll offset.
|
|
402
|
+
|
|
403
|
+
---
|
|
404
|
+
|
|
405
|
+
## 4. Micro-Interactions
|
|
406
|
+
|
|
407
|
+
### 4.1 Pull-to-Refresh
|
|
408
|
+
User pulls down from scroll top. Resistance increases with distance (rubber-band physics).
|
|
409
|
+
Spinner or branded animation appears (threshold: 60-80px). Content refreshes; "Updated just
|
|
410
|
+
now" or "3 new posts" confirms. On web, use `overscroll-behavior: contain` to prevent
|
|
411
|
+
browser-native conflicts.
|
|
412
|
+
|
|
413
|
+
### 4.2 Scroll Progress Indicator
|
|
414
|
+
|
|
415
|
+
**Variants:**
|
|
416
|
+
|
|
417
|
+
- **Top bar** -- thin horizontal bar filling left-to-right as the user scrolls
|
|
418
|
+
(Medium's signature pattern). Most common and least intrusive.
|
|
419
|
+
- **Side rail** -- vertical progress track on the right side with section markers,
|
|
420
|
+
useful for long articles with distinct sections.
|
|
421
|
+
- **Floating indicator** -- small circle or badge showing percentage or minutes
|
|
422
|
+
remaining. Less common but useful for minimal UIs.
|
|
423
|
+
- **Chapter dots** -- for sectioned content, dots indicating major content divisions
|
|
424
|
+
with the current section highlighted.
|
|
425
|
+
|
|
426
|
+
**Technical implementation:**
|
|
427
|
+
|
|
428
|
+
```
|
|
429
|
+
progress = scrollTop / (scrollHeight - clientHeight)
|
|
430
|
+
```
|
|
431
|
+
|
|
432
|
+
Update on `requestAnimationFrame` for smooth rendering. Animate via `transform: scaleX()`
|
|
433
|
+
(GPU-composited) rather than `width` to avoid layout repaints. Use `will-change: transform`
|
|
434
|
+
on the progress element for GPU acceleration.
|
|
435
|
+
|
|
436
|
+
### 4.3 Bookmark Animation
|
|
437
|
+
Icon fills/changes color on tap (outline to solid). Brief scale-up animation (100ms to 1.2x,
|
|
438
|
+
ease back). Haptic feedback (light impact on iOS, click on Android). Confirmation toast:
|
|
439
|
+
"Saved to Reading List" with Undo action (available for 5+ seconds).
|
|
440
|
+
|
|
441
|
+
### 4.4 Share Sheet
|
|
442
|
+
Slides up from bottom with spring animation (300-400ms). Dim background overlay. Close on
|
|
443
|
+
tap outside, swipe down, or close button. Hybrid approach: custom sheet with top targets
|
|
444
|
+
(Copy Link, Messages, Twitter, Email) + "More..." for native sheet. "Copied!" with
|
|
445
|
+
checkmark animation for link copy.
|
|
446
|
+
|
|
447
|
+
### 4.5 Read Time Estimate
|
|
448
|
+
Formula: `Math.ceil(wordCount / 200)` (200-250 WPM average). Add 12s per image, media
|
|
449
|
+
duration for embeds. Display as "X min read" on cards and article headers. Can update
|
|
450
|
+
dynamically: "3 min left" based on scroll position.
|
|
451
|
+
|
|
452
|
+
### 4.6 Like / Reaction Animations
|
|
453
|
+
|
|
454
|
+
**Patterns across platforms:**
|
|
455
|
+
|
|
456
|
+
- **Twitter/X heart** -- outline to filled red with a brief particle burst animation.
|
|
457
|
+
- **Facebook reactions** -- long-press reveals emoji picker with float-up animation;
|
|
458
|
+
selected reaction scales up with a bounce.
|
|
459
|
+
- **Medium clap** -- cumulative counter with bounce animation per clap; confetti at
|
|
460
|
+
milestones.
|
|
461
|
+
- **TikTok heart** -- floating hearts rise from the tap point with physics-based drift.
|
|
462
|
+
|
|
463
|
+
**Guidelines:** keep animations under 300ms for tap-triggered interactions. Provide both
|
|
464
|
+
visual and haptic feedback. Support undo (un-like) with a reverse animation. Use CSS
|
|
465
|
+
animations or GPU-composited layers to avoid blocking the UI thread.
|
|
466
|
+
|
|
467
|
+
### 4.7 Content Loading States
|
|
468
|
+
|
|
469
|
+
**Skeleton screens:** render gray placeholder blocks matching the shape and layout of
|
|
470
|
+
incoming content. Use a shimmer animation (subtle left-to-right gradient sweep) to
|
|
471
|
+
indicate active loading. Skeleton screens reduce perceived load time by ~31% compared
|
|
472
|
+
to spinners (Bill Chung, 2020).
|
|
473
|
+
|
|
474
|
+
**Progressive image loading:** load a tiny blurred placeholder (LQIP -- Low Quality Image
|
|
475
|
+
Placeholder) and cross-fade to the full-resolution image on load. Use `loading="lazy"`
|
|
476
|
+
for off-screen images (web.dev). Set explicit `width` and `height` attributes on all
|
|
477
|
+
images to prevent CLS during load.
|
|
478
|
+
|
|
479
|
+
---
|
|
480
|
+
|
|
481
|
+
## 5. Anti-Patterns
|
|
482
|
+
|
|
483
|
+
### 5.1 Autoplay with Sound
|
|
484
|
+
Video/audio playing with sound on load without user initiation. Startles users, causes page
|
|
485
|
+
abandonment, violates accessibility guidelines. Browsers block it by default. **Fix:** autoplay
|
|
486
|
+
muted with visible toggle and captions; respect `prefers-reduced-motion`.
|
|
487
|
+
|
|
488
|
+
### 5.2 Content Shift During Scroll
|
|
489
|
+
Elements resize or ads load without reserved space, causing content to jump. Users lose
|
|
490
|
+
reading position; mis-taps on mobile. CLS > 0.25 is poor (web.dev). **Fix:** explicit
|
|
491
|
+
dimensions for all media, fixed-size ad containers, `content-visibility: auto` with
|
|
492
|
+
`contain-intrinsic-size`.
|
|
493
|
+
|
|
494
|
+
### 5.3 Infinite Scroll Without Progress
|
|
495
|
+
Endless scroll with no position/volume indication. Loss of orientation, contributes to
|
|
496
|
+
doomscrolling and regret. NNG warns against this specifically. **Fix:** show item count,
|
|
497
|
+
"Back to Top" button, URL position, hybrid pagination.
|
|
498
|
+
|
|
499
|
+
### 5.4 No Save/Bookmark Functionality
|
|
500
|
+
Content cannot be saved for later. Users resort to screenshots or self-messaging. Content
|
|
501
|
+
is less likely to be revisited or shared. **Fix:** one-tap save with collections, cross-device
|
|
502
|
+
sync, offline access.
|
|
503
|
+
|
|
504
|
+
### 5.5 Clickbait Titles
|
|
505
|
+
Headlines promise what the content does not deliver. Erodes trust, increases bounce, damages
|
|
506
|
+
platform credibility. **Fix:** editorial guidelines requiring specificity; honest headlines
|
|
507
|
+
often outperform clickbait in long-term retention.
|
|
508
|
+
|
|
509
|
+
### 5.6 Interstitials Blocking Content
|
|
510
|
+
Full-screen overlays (email capture, app-install, cookie mega-banners) before engagement.
|
|
511
|
+
Google penalizes intrusive interstitials. Users close reflexively. **Fix:** inline banners,
|
|
512
|
+
bottom sheets, delayed prompts (after 30s or 50% scroll), Smart App Banners.
|
|
513
|
+
|
|
514
|
+
### 5.7 Auto-Forwarding Carousels
|
|
515
|
+
Carousels rotating at designer-determined pace. Interrupts reading, inaccessible for motor
|
|
516
|
+
impairments. NNG confirms user frustration. **Fix:** pause on hover/focus, slow timing
|
|
517
|
+
(1s/3 words), clear manual controls.
|
|
518
|
+
|
|
519
|
+
### 5.8 Pagination Without State Preservation
|
|
520
|
+
Page state not in URL; refresh/back resets to page 1. Position loss, pages unshareable.
|
|
521
|
+
**Fix:** reflect page/filters in URL via `replaceState`.
|
|
522
|
+
|
|
523
|
+
### 5.9 Aggressive Push Notification Prompts
|
|
524
|
+
Permission request on first visit before user has experienced value. High dismissal; denied
|
|
525
|
+
permissions are permanent (browser limitation). **Fix:** prompt after meaningful engagement;
|
|
526
|
+
custom pre-prompt explaining value before browser dialog.
|
|
527
|
+
|
|
528
|
+
### 5.10 Disabling Text Selection
|
|
529
|
+
CSS `user-select: none` or JS event prevention. Prevents quoting, blocks assistive tech,
|
|
530
|
+
frustrates power users, does not prevent content theft. **Fix:** allow selection; append
|
|
531
|
+
attribution to copied text if needed.
|
|
532
|
+
|
|
533
|
+
### 5.11 Infinite Feeds Without Stop Mechanism
|
|
534
|
+
No natural stopping point, encouraging compulsive consumption. Exploits variable-ratio
|
|
535
|
+
reinforcement. Under regulatory scrutiny (EU DSA, US KIDS Act). Research: 24.8% increase
|
|
536
|
+
in mindless viewing from autoplay. **Fix:** time reminders, "You're all caught up" markers
|
|
537
|
+
(Instagram), chronological feeds with natural end.
|
|
538
|
+
|
|
539
|
+
### 5.12 Hidden or Broken Dark Mode
|
|
540
|
+
No dark mode, or dark mode with illegible content (images without backgrounds). Eye strain
|
|
541
|
+
in low-light, broken system-level inversion. **Fix:** robust dark mode via `prefers-color-scheme`,
|
|
542
|
+
test all content types in both themes, use semantic color tokens.
|
|
543
|
+
|
|
544
|
+
---
|
|
545
|
+
|
|
546
|
+
## 6. Accessibility
|
|
547
|
+
|
|
548
|
+
### 6.1 Alternative Text (WCAG 1.1.1)
|
|
549
|
+
Every informative image needs descriptive alt text conveying purpose. Decorative images:
|
|
550
|
+
`alt=""`. Complex images (charts): alt text + `aria-describedby`. Feed thumbnails: describe
|
|
551
|
+
the content, not "thumbnail." Prompt user-uploaded image authors for alt text.
|
|
552
|
+
|
|
553
|
+
### 6.2 Captions (WCAG 1.2.2, 1.2.4)
|
|
554
|
+
All pre-recorded video with audio requires synchronized captions. Live content needs real-time
|
|
555
|
+
captions where feasible. Include speaker ID, sound effects, musical cues. Support WebVTT.
|
|
556
|
+
Provide caption customization (size, color, background, position). Auto-generated captions
|
|
557
|
+
(ASR) have 10-15% error rates; review before publishing.
|
|
558
|
+
|
|
559
|
+
### 6.3 Transcripts (WCAG 1.2.1, 1.2.3)
|
|
560
|
+
Audio-only content (podcasts) must have text transcripts. Video should offer transcripts as
|
|
561
|
+
caption alternative. Place on same page, collapsible. Include timestamps. Make searchable.
|
|
562
|
+
|
|
563
|
+
### 6.4 Reader Mode
|
|
564
|
+
Removes clutter for cognitive disabilities. Provides predictable layout. Enables per-user
|
|
565
|
+
customization. Implement with semantic HTML so browser reader modes extract content correctly.
|
|
566
|
+
|
|
567
|
+
### 6.5 Adjustable Text Size (WCAG 1.4.4)
|
|
568
|
+
Text resizable to 200% without content loss. Use relative units (rem, em, %). iOS: support
|
|
569
|
+
Dynamic Type via system text styles. Android: use `sp` units. Web: test at 200% zoom.
|
|
570
|
+
|
|
571
|
+
### 6.6 Reduced Motion (WCAG 2.3.1, web.dev)
|
|
572
|
+
No flashing > 3x/second. Controls to pause/stop auto-playing animation. Respect
|
|
573
|
+
`prefers-reduced-motion`: replace animations with instant state changes or opacity fades,
|
|
574
|
+
show static poster for auto-playing background video, provide explicit Play button.
|
|
575
|
+
|
|
576
|
+
```css
|
|
577
|
+
@media (prefers-reduced-motion: reduce) {
|
|
578
|
+
*, *::before, *::after {
|
|
579
|
+
animation-duration: 0.01ms !important;
|
|
580
|
+
transition-duration: 0.01ms !important;
|
|
581
|
+
scroll-behavior: auto !important;
|
|
582
|
+
}
|
|
583
|
+
}
|
|
584
|
+
```
|
|
585
|
+
|
|
586
|
+
### 6.7 Keyboard and Screen Reader
|
|
587
|
+
All interactions keyboard accessible (WCAG 2.1.1). Media: Space=play/pause, Arrows=seek,
|
|
588
|
+
M=mute, F=fullscreen. Feed items focusable via Tab. Carousels: Arrow key navigation.
|
|
589
|
+
Focus management: move focus to article heading on open, return to feed item on close.
|
|
590
|
+
`aria-live` for dynamic updates. Progress bars: `aria-valuenow/min/max`. Carousel: announce
|
|
591
|
+
"Slide N of M." Infinite scroll: announce new content loads.
|
|
592
|
+
|
|
593
|
+
---
|
|
594
|
+
|
|
595
|
+
## 7. Cross-Platform Adaptation
|
|
596
|
+
|
|
597
|
+
### 7.1 Mobile (< 640px)
|
|
598
|
+
|
|
599
|
+
**Layout:** single-column feed with full-width cards. Bottom navigation bar with content
|
|
600
|
+
categories (Feed, Search, Library, Profile). Full-screen media consumption (stories, videos,
|
|
601
|
+
articles). Swipe gestures for primary navigation (swipe to dismiss, swipe between items).
|
|
602
|
+
|
|
603
|
+
**Content adaptations:**
|
|
604
|
+
- Truncate article previews to 2-3 lines in feed cards.
|
|
605
|
+
- Use a bottom sheet for share/save actions instead of modal dialogs.
|
|
606
|
+
- Collapse secondary metadata (read time, category) into expandable rows.
|
|
607
|
+
- Prioritize thumb-zone placement for primary actions (like, share, save) --
|
|
608
|
+
bottom 40% of screen is the comfortable reach zone.
|
|
609
|
+
|
|
610
|
+
**Performance:** aggressive lazy loading for off-screen images. Reduced image quality with
|
|
611
|
+
high-DPI displays (use `srcset` and `sizes`). Limit initial feed load to 10-15 items.
|
|
612
|
+
Use skeleton screens exclusively (never spinners on mobile).
|
|
613
|
+
|
|
614
|
+
### 7.2 Tablet (640-1024px)
|
|
615
|
+
|
|
616
|
+
**Layout:** two-column feed (masonry or grid) to leverage horizontal space. Split-view
|
|
617
|
+
for feed + article side-by-side (iPad multitasking model). Sidebar navigation (collapsible)
|
|
618
|
+
replacing bottom tab bar. Landscape mode may show article + comments side-by-side.
|
|
619
|
+
|
|
620
|
+
**Content adaptations:** show more metadata per card (full description, larger thumbnails).
|
|
621
|
+
Reader mode can use wider margins and larger font for a book-like reading experience.
|
|
622
|
+
Video players can use theater mode without fullscreen. Touch targets remain minimum 44x44pt
|
|
623
|
+
(Apple HIG) / 48x48dp (Material Design).
|
|
624
|
+
|
|
625
|
+
### 7.3 Desktop (> 1024px)
|
|
626
|
+
|
|
627
|
+
**Layout:** multi-column layout: sidebar navigation + feed + detail panel. Maximum content
|
|
628
|
+
width constraint (680-720px for articles, ~1200px for feeds) with centered alignment.
|
|
629
|
+
Persistent sidebar for navigation, bookmarks, and trending content.
|
|
630
|
+
|
|
631
|
+
**Content adaptations:**
|
|
632
|
+
- Hover states for preview (video thumbnails, article summaries).
|
|
633
|
+
- Keyboard shortcuts for power users (J/K=next/prev, S=save, L=like, B=bookmark).
|
|
634
|
+
- Inline expansion: click a feed card to expand the article in-place rather than
|
|
635
|
+
navigating to a new page.
|
|
636
|
+
- Multi-panel reading: article in center, table of contents on left, related on right.
|
|
637
|
+
- Picture-in-Picture for video while browsing other content.
|
|
638
|
+
|
|
639
|
+
### 7.4 Cross-Platform Continuity
|
|
640
|
+
|
|
641
|
+
**State synchronization:**
|
|
642
|
+
- Read position synced across devices (open article on phone, continue on tablet).
|
|
643
|
+
- Playback position for audio/video maintained across sessions and devices.
|
|
644
|
+
- Save/bookmark state immediately reflected across all logged-in surfaces.
|
|
645
|
+
- Notification state (read/unread) synchronized to prevent duplicate alerting.
|
|
646
|
+
|
|
647
|
+
**Technical approach:** real-time sync via WebSocket or Server-Sent Events for active
|
|
648
|
+
sessions. Periodic sync via REST API for background state. Conflict resolution:
|
|
649
|
+
last-write-wins for position data; union merge for collections (bookmarks, read history).
|
|
650
|
+
Offline queue with reconciliation on reconnect.
|
|
651
|
+
|
|
652
|
+
### 7.5 Emerging Form Factors
|
|
653
|
+
|
|
654
|
+
**Smartwatch:** headlines only with "Send to Phone" for full reading. Audio content
|
|
655
|
+
playback with basic controls. Notification-driven content consumption.
|
|
656
|
+
|
|
657
|
+
**TV / Large screen (10-foot UI):** large text (minimum 24px effective), focus-based
|
|
658
|
+
navigation with clear focus indicators. Media player with remote-friendly controls.
|
|
659
|
+
D-pad navigation with spatial focus model.
|
|
660
|
+
|
|
661
|
+
**Foldable devices:** adapt layout on fold state change (folded = single column,
|
|
662
|
+
unfolded = split view with feed + article). Use CSS fold APIs and Android Jetpack
|
|
663
|
+
WindowManager for fold detection and hinge awareness.
|
|
664
|
+
|
|
665
|
+
---
|
|
666
|
+
|
|
667
|
+
## 8. Decision Tree
|
|
668
|
+
|
|
669
|
+
### 8.1 Feed vs. Timeline vs. Paginated
|
|
670
|
+
```
|
|
671
|
+
User intent = Browse/Discover?
|
|
672
|
+
Homogeneous + unbounded --> ALGORITHMIC FEED (TikTok, YouTube Home)
|
|
673
|
+
Homogeneous + bounded --> CURATED GRID (Netflix categories, Spotify playlists)
|
|
674
|
+
Mixed content types --> CHRONOLOGICAL TIMELINE (Twitter Following, Mastodon)
|
|
675
|
+
|
|
676
|
+
User intent = Search/Find?
|
|
677
|
+
--> PAGINATED RESULTS (Google, e-commerce)
|
|
678
|
+
|
|
679
|
+
User intent = Sequential consumption?
|
|
680
|
+
--> LINEAR NAVIGATION (chapters, courses, podcast episodes)
|
|
681
|
+
```
|
|
682
|
+
|
|
683
|
+
### 8.2 Infinite Scroll vs. Pagination
|
|
684
|
+
```
|
|
685
|
+
Entertainment/social, casual browsing --> INFINITE SCROLL
|
|
686
|
+
+ progress indicator, back-to-top, position memory, "all caught up" stop
|
|
687
|
+
|
|
688
|
+
Search results or catalog --> PAGINATION
|
|
689
|
+
+ generous page size 20-50, keyboard nav, URL state, result count
|
|
690
|
+
|
|
691
|
+
Mix of browsing and goal-oriented --> LOAD MORE BUTTON
|
|
692
|
+
Initial set + "Load 20 More" for user control without pagination friction
|
|
693
|
+
|
|
694
|
+
Editorial/news --> INFINITE SCROLL + SECTION BREAKS
|
|
695
|
+
Section headers ("Earlier Today") + optional "Load More" between sections
|
|
696
|
+
|
|
697
|
+
Footer content needed --> PAGINATION or LOAD MORE
|
|
698
|
+
Infinite scroll makes footers unreachable (NNG)
|
|
699
|
+
```
|
|
700
|
+
|
|
701
|
+
### 8.3 Content Layout
|
|
702
|
+
```
|
|
703
|
+
Long-form text --> Single-column 680-720px, serif font, progress bar
|
|
704
|
+
Short text + media --> Card-based feed with thumbnails
|
|
705
|
+
Short-form video --> Full-screen vertical (TikTok model)
|
|
706
|
+
Long-form video --> Theater/cinema mode (YouTube model)
|
|
707
|
+
Audio-first --> Persistent mini-player + browse UI (Spotify model)
|
|
708
|
+
Image-first --> Grid/masonry with tap-to-expand (Pinterest model)
|
|
709
|
+
```
|
|
710
|
+
|
|
711
|
+
---
|
|
712
|
+
|
|
713
|
+
## 9. Quick Reference Checklist
|
|
714
|
+
|
|
715
|
+
### Content Structure
|
|
716
|
+
- [ ] Clear hierarchy (headline > subhead > body > metadata)
|
|
717
|
+
- [ ] Read time / media duration displayed
|
|
718
|
+
- [ ] Semantic HTML (article, h1-h6, main)
|
|
719
|
+
- [ ] Explicit image dimensions to prevent CLS
|
|
720
|
+
- [ ] Content width constrained for readability (50-75 char measure)
|
|
721
|
+
|
|
722
|
+
### Navigation and Discovery
|
|
723
|
+
- [ ] Feed browse AND search available
|
|
724
|
+
- [ ] Clear visual separation between feed items
|
|
725
|
+
- [ ] Content type immediately identifiable
|
|
726
|
+
- [ ] Algorithmic and chronological options both available
|
|
727
|
+
- [ ] New content indicator without layout shift
|
|
728
|
+
|
|
729
|
+
### Consumption Experience
|
|
730
|
+
- [ ] Scroll/playback progress visually indicated
|
|
731
|
+
- [ ] Position remembered across sessions and devices
|
|
732
|
+
- [ ] Reader mode / distraction-free view for long-form
|
|
733
|
+
- [ ] Adjustable font size, line height, theme
|
|
734
|
+
- [ ] Full media controls (play, pause, seek, speed, volume, captions)
|
|
735
|
+
- [ ] PiP or mini-player persists during navigation
|
|
736
|
+
|
|
737
|
+
### Saving and Sharing
|
|
738
|
+
- [ ] One-tap save with visual + haptic confirmation
|
|
739
|
+
- [ ] Collections/folders for saved content
|
|
740
|
+
- [ ] Offline availability for saved content
|
|
741
|
+
- [ ] Copy link as first/most prominent share option
|
|
742
|
+
- [ ] Deep links to specific content position
|
|
743
|
+
|
|
744
|
+
### Performance (web.dev)
|
|
745
|
+
- [ ] LCP < 2.5s, CLS < 0.1, INP < 200ms
|
|
746
|
+
- [ ] Lazy loading for off-screen images
|
|
747
|
+
- [ ] Skeleton screens for loading states
|
|
748
|
+
- [ ] Adaptive media quality by network
|
|
749
|
+
|
|
750
|
+
### Accessibility (WCAG 2.1 AA)
|
|
751
|
+
- [ ] Alt text on all informative images
|
|
752
|
+
- [ ] Captions on all video, transcripts for audio
|
|
753
|
+
- [ ] Text resizable to 200%
|
|
754
|
+
- [ ] Color contrast 4.5:1 for body text
|
|
755
|
+
- [ ] `prefers-reduced-motion` respected
|
|
756
|
+
- [ ] All interactions keyboard accessible
|
|
757
|
+
- [ ] Focus management on content transitions
|
|
758
|
+
- [ ] `aria-live` for dynamic content updates
|
|
759
|
+
|
|
760
|
+
### Anti-Pattern Avoidance
|
|
761
|
+
- [ ] No autoplay with sound
|
|
762
|
+
- [ ] No layout shift during scroll
|
|
763
|
+
- [ ] No infinite scroll without progress
|
|
764
|
+
- [ ] No interstitials blocking first-visit content
|
|
765
|
+
- [ ] No auto-forward carousels without pause
|
|
766
|
+
- [ ] No disabled text selection
|
|
767
|
+
- [ ] No missing save/bookmark
|
|
768
|
+
- [ ] No pagination without URL state
|
|
769
|
+
|
|
770
|
+
---
|
|
771
|
+
|
|
772
|
+
## Sources
|
|
773
|
+
|
|
774
|
+
- [NNG: Infinite Scrolling: When to Use It, When to Avoid It](https://www.nngroup.com/articles/infinite-scrolling-tips/)
|
|
775
|
+
- [NNG: Carousel Usability: Designing an Effective UI](https://www.nngroup.com/articles/designing-effective-carousels/)
|
|
776
|
+
- [NNG: Microinteractions in User Experience](https://www.nngroup.com/articles/microinteractions/)
|
|
777
|
+
- [NNG: Spatial Memory: Why It Matters for UX Design](https://www.nngroup.com/articles/spatial-memory/)
|
|
778
|
+
- [NNG: Scrolling and Attention](https://www.nngroup.com/articles/scrolling-and-attention/)
|
|
779
|
+
- [NNG: Auto-Forwarding Carousels Annoy Users](https://www.nngroup.com/articles/auto-forwarding/)
|
|
780
|
+
- [web.dev: Cumulative Layout Shift (CLS)](https://web.dev/articles/cls)
|
|
781
|
+
- [web.dev: Optimize CLS](https://web.dev/articles/optimize-cls)
|
|
782
|
+
- [web.dev: Browser-level Image Lazy Loading](https://web.dev/articles/browser-level-image-lazy-loading)
|
|
783
|
+
- [web.dev: prefers-reduced-motion](https://web.dev/articles/prefers-reduced-motion)
|
|
784
|
+
- [W3C: WCAG 2.1](https://www.w3.org/TR/WCAG21/)
|
|
785
|
+
- [W3C WAI: Transcripts](https://www.w3.org/WAI/media/av/transcripts/)
|
|
786
|
+
- [MDN: prefers-reduced-motion](https://developer.mozilla.org/en-US/docs/Web/CSS/@media/prefers-reduced-motion)
|
|
787
|
+
- [MDN: Responsive Web Design](https://developer.mozilla.org/en-US/docs/Learn_web_development/Core/CSS_layout/Responsive_Design)
|
|
788
|
+
- [UX Collective: Interaction Design of Instagram Stories](https://uxdesign.cc/the-powerful-interaction-design-of-instagram-stories-47cdeb30e5b6)
|
|
789
|
+
- [Deceptive Patterns: Exploiting Addiction](https://www.deceptive.design/book/contents/chapter-11)
|