@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,449 @@
|
|
|
1
|
+
# Behavioral Nudges — Expertise Module
|
|
2
|
+
|
|
3
|
+
> Behavioral nudges are subtle design interventions that guide users toward beneficial actions without restricting choice. This module covers cognitive load reduction, smart defaults, ADHD-friendly interfaces, motivation scaffolding, time-boxing UX, opt-out completion, and ethical notification design — with implementation-level code patterns. Theory lives in `persuasive-design.md` and `cognitive-load.md`.
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## 1. Theoretical Foundations
|
|
8
|
+
|
|
9
|
+
**Thaler & Sunstein — Nudge (2008).** Richard Thaler (Nobel Prize in Economics, 2017) demonstrated that choice architecture — how options are presented — shapes decisions more than the options themselves. Designers who control the choice environment have an ethical obligation to nudge toward outcomes that benefit the user, not the business.
|
|
10
|
+
|
|
11
|
+
**BJ Fogg — Behavior Model (B=MAP).** Behavior occurs when Motivation, Ability, and Prompt converge simultaneously. If users are not taking an action, diagnose which component is missing before adding more prompts.
|
|
12
|
+
|
|
13
|
+
| Component | Low | High |
|
|
14
|
+
|-----------|-----|------|
|
|
15
|
+
| Motivation | User does not care about the outcome | User urgently wants the outcome |
|
|
16
|
+
| Ability | Task requires 15 steps and expert knowledge | Task requires 1 tap |
|
|
17
|
+
| Prompt | No visible trigger; user must remember | Clear, timely, contextual cue |
|
|
18
|
+
|
|
19
|
+
**Kahneman — Thinking, Fast and Slow (2011).** System 1 (fast, automatic) handles most interface interactions. System 2 (slow, deliberate) activates for complex decisions. Nudges work because they target System 1. When a nudge requires System 2 processing, it becomes a demand, not a nudge.
|
|
20
|
+
|
|
21
|
+
**Nir Eyal — Hooked (2014).** The Hook Model (Trigger > Action > Variable Reward > Investment) explains habit formation. Duolingo exemplifies this at scale: 300M+ users, 80% of revenue from free users nudged to premium via ethical retention mechanics.
|
|
22
|
+
|
|
23
|
+
**Google Material Design Accessibility.** ADHD-friendly interface guidelines: reduce visual clutter, minimize decisions per screen, provide persistent external memory (visible state), and support micro-task completion. These principles benefit all users under cognitive load.
|
|
24
|
+
|
|
25
|
+
---
|
|
26
|
+
|
|
27
|
+
## 2. Cognitive Load Reduction
|
|
28
|
+
|
|
29
|
+
Show the right thing at the right time. Hide everything else behind progressive disclosure.
|
|
30
|
+
|
|
31
|
+
### 2.1 Hick's Law in Practice
|
|
32
|
+
|
|
33
|
+
Decision time increases logarithmically with options. Showing 50 tasks on login is paralyzing — show 1 actionable item.
|
|
34
|
+
|
|
35
|
+
```typescript
|
|
36
|
+
// Progressive task list — show next action, not entire backlog
|
|
37
|
+
function getNextAction(tasks: Task[]): Task | null {
|
|
38
|
+
const inProgress = tasks.find(t => t.status === 'in_progress');
|
|
39
|
+
if (inProgress) return inProgress;
|
|
40
|
+
|
|
41
|
+
const highest = tasks
|
|
42
|
+
.filter(t => t.status === 'pending')
|
|
43
|
+
.sort((a, b) => b.priority - a.priority)[0];
|
|
44
|
+
return highest ?? null;
|
|
45
|
+
}
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
### 2.2 Chunking and Grouping
|
|
49
|
+
|
|
50
|
+
Target 3-5 items per visible group. Beyond 5, the group needs subgroups or progressive disclosure.
|
|
51
|
+
|
|
52
|
+
```typescript
|
|
53
|
+
function chunkByCategory<T extends { category: string }>(
|
|
54
|
+
items: T[],
|
|
55
|
+
visiblePerChunk: number = 5,
|
|
56
|
+
): { label: string; items: T[]; hasMore: boolean; totalCount: number }[] {
|
|
57
|
+
const grouped = Map.groupBy(items, (item) => item.category);
|
|
58
|
+
return Array.from(grouped.entries()).map(([label, group]) => ({
|
|
59
|
+
label,
|
|
60
|
+
items: group.slice(0, visiblePerChunk),
|
|
61
|
+
hasMore: group.length > visiblePerChunk,
|
|
62
|
+
totalCount: group.length,
|
|
63
|
+
}));
|
|
64
|
+
}
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
### 2.3 Progressive Loading
|
|
68
|
+
|
|
69
|
+
Prefer infinite scroll with progress indication over pagination. Pagination forces a decision ("which page?"). Always show a position indicator — "Showing 15 of 47" — so users retain spatial awareness.
|
|
70
|
+
|
|
71
|
+
### 2.4 Collapsible Sections
|
|
72
|
+
|
|
73
|
+
Expand the most recently interacted section. Collapse everything else. Persist expanded state in local preferences across sessions.
|
|
74
|
+
|
|
75
|
+
```typescript
|
|
76
|
+
function getDefaultExpandedSections(
|
|
77
|
+
sections: string[],
|
|
78
|
+
recentActivity: { sectionId: string; timestamp: number }[],
|
|
79
|
+
): Set<string> {
|
|
80
|
+
if (recentActivity.length === 0) return new Set(sections.slice(0, 1));
|
|
81
|
+
const sorted = [...recentActivity].sort((a, b) => b.timestamp - a.timestamp);
|
|
82
|
+
return new Set([sorted[0].sectionId]);
|
|
83
|
+
}
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
---
|
|
87
|
+
|
|
88
|
+
## 3. Default Bias
|
|
89
|
+
|
|
90
|
+
Defaults are the most powerful nudge. 70-90% of users never change default settings — default selection is an ethical act.
|
|
91
|
+
|
|
92
|
+
### 3.1 Principles
|
|
93
|
+
|
|
94
|
+
- Pre-fill forms with the most common correct value (not the most profitable one)
|
|
95
|
+
- Highlight recommended options visually, but never pre-select consent-sensitive choices
|
|
96
|
+
- Use user history as the default when available ("Last time you chose Express Shipping")
|
|
97
|
+
|
|
98
|
+
### 3.2 Ethical Framework
|
|
99
|
+
|
|
100
|
+
| Pattern | When Ethical | When Dark Pattern |
|
|
101
|
+
|---------|-------------|-------------------|
|
|
102
|
+
| Pre-selected checkbox | Newsletter toggle in account settings | Hidden consent in purchase flow |
|
|
103
|
+
| Recommended option | Plan comparison with clear labeling | Bundled upsells disguised as features |
|
|
104
|
+
| Auto-enrollment | Security features (2FA, backup) | Paid subscriptions, recurring charges |
|
|
105
|
+
| Pre-filled quantity | "1" in e-commerce cart | "3" to inflate order value |
|
|
106
|
+
| Default sort order | Most relevant to user query | Most profitable for business |
|
|
107
|
+
|
|
108
|
+
### 3.3 Implementation
|
|
109
|
+
|
|
110
|
+
```typescript
|
|
111
|
+
interface DefaultConfig<T> {
|
|
112
|
+
value: T;
|
|
113
|
+
source: 'user_history' | 'most_common' | 'safest' | 'system';
|
|
114
|
+
overridable: boolean;
|
|
115
|
+
requiresExplicitConsent: boolean;
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
function resolveDefault<T>(
|
|
119
|
+
userHistory: T | undefined,
|
|
120
|
+
safest: T,
|
|
121
|
+
): DefaultConfig<T> {
|
|
122
|
+
if (userHistory !== undefined) {
|
|
123
|
+
return { value: userHistory, source: 'user_history', overridable: true, requiresExplicitConsent: false };
|
|
124
|
+
}
|
|
125
|
+
return { value: safest, source: 'safest', overridable: true, requiresExplicitConsent: false };
|
|
126
|
+
}
|
|
127
|
+
```
|
|
128
|
+
|
|
129
|
+
When user history is absent, prefer the safest default over the most common. Safety protects the user; convenience optimizes for speed. When they conflict, safety wins.
|
|
130
|
+
|
|
131
|
+
---
|
|
132
|
+
|
|
133
|
+
## 4. ADHD-Friendly Patterns
|
|
134
|
+
|
|
135
|
+
These patterns benefit all users but are essential for the estimated 5-8% of adults with ADHD. Core challenges: sustained attention difficulty, executive function deficits, and working memory limitations.
|
|
136
|
+
|
|
137
|
+
### 4.1 Micro-Sprints
|
|
138
|
+
|
|
139
|
+
Break work into 5-10-15 minute blocks. Never suggest an initial block longer than 15 minutes — activation energy for "work for an hour" is dramatically higher than "just 5 minutes."
|
|
140
|
+
|
|
141
|
+
```typescript
|
|
142
|
+
interface MicroSprint {
|
|
143
|
+
taskId: string;
|
|
144
|
+
durationMinutes: 5 | 10 | 15;
|
|
145
|
+
breakMinutes: 2 | 5;
|
|
146
|
+
completedSprints: number;
|
|
147
|
+
streak: number;
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
function generateNudge(sprint: MicroSprint): string {
|
|
151
|
+
if (sprint.completedSprints === 0) return "Just 5 minutes. Ready?";
|
|
152
|
+
if (sprint.completedSprints === 1) return "One done! Keep going?";
|
|
153
|
+
if (sprint.streak >= 3) return `${sprint.streak}-sprint streak! Take a break?`;
|
|
154
|
+
return `${sprint.completedSprints} done. Another round?`;
|
|
155
|
+
}
|
|
156
|
+
```
|
|
157
|
+
|
|
158
|
+
Design rationale: initial prompt uses shortest duration; post-first celebrates before asking for more; at 3+ consecutive sprints, suggest a break to prevent hyperfocus burnout.
|
|
159
|
+
|
|
160
|
+
### 4.2 Momentum Building (Small Wins Chain)
|
|
161
|
+
|
|
162
|
+
Order tasks so the first completable item takes under 2 minutes. Completion generates dopamine and reduces perceived weight of remaining tasks.
|
|
163
|
+
|
|
164
|
+
```typescript
|
|
165
|
+
function sortForMomentum(tasks: Task[]): Task[] {
|
|
166
|
+
return [...tasks].sort((a, b) => {
|
|
167
|
+
const aQuick = (a.estimatedMinutes ?? Infinity) <= 2 ? 0 : 1;
|
|
168
|
+
const bQuick = (b.estimatedMinutes ?? Infinity) <= 2 ? 0 : 1;
|
|
169
|
+
if (aQuick !== bQuick) return aQuick - bQuick;
|
|
170
|
+
return b.priority - a.priority;
|
|
171
|
+
});
|
|
172
|
+
}
|
|
173
|
+
```
|
|
174
|
+
|
|
175
|
+
### 4.3 External Working Memory
|
|
176
|
+
|
|
177
|
+
Never rely on the user remembering where they left off — show them:
|
|
178
|
+
- Always display current task context (what am I working on?)
|
|
179
|
+
- Show breadcrumb trails (how did I get here?)
|
|
180
|
+
- Persist draft state automatically (what was I typing?)
|
|
181
|
+
- Surface recent items prominently (what did I do last?)
|
|
182
|
+
|
|
183
|
+
### 4.4 Reducing Context-Switching Costs
|
|
184
|
+
|
|
185
|
+
Every interruption costs 15-25 minutes of refocus time (Gloria Mark, UC Irvine). Design for deep work:
|
|
186
|
+
- "Focus mode" suppressing non-critical notifications
|
|
187
|
+
- Deferred notification queue delivering at natural break points
|
|
188
|
+
- Single-task views hiding navigation during active work
|
|
189
|
+
- Re-entry summaries after breaks ("You were editing Section 3, paragraph 2")
|
|
190
|
+
|
|
191
|
+
---
|
|
192
|
+
|
|
193
|
+
## 5. Motivation Scaffolding
|
|
194
|
+
|
|
195
|
+
Motivation is a design variable, not a personality trait. Build it through environmental cues.
|
|
196
|
+
|
|
197
|
+
### 5.1 Progress Bars
|
|
198
|
+
|
|
199
|
+
Always show progress >0%. An empty bar feels hopeless. The "endowed progress effect" (Nunes & Dreze, 2006) increases completion rates by 15-20%.
|
|
200
|
+
|
|
201
|
+
```typescript
|
|
202
|
+
function calculateDisplayProgress(completed: number, total: number): number {
|
|
203
|
+
return Math.min(Math.max(completed / total, 0.05), 1.0);
|
|
204
|
+
}
|
|
205
|
+
```
|
|
206
|
+
|
|
207
|
+
```css
|
|
208
|
+
.progress-bar {
|
|
209
|
+
transition: width 0.6s cubic-bezier(0.22, 1, 0.36, 1);
|
|
210
|
+
min-width: 5%;
|
|
211
|
+
}
|
|
212
|
+
.progress-bar[data-complete="true"] {
|
|
213
|
+
animation: celebrate 0.8s ease-out;
|
|
214
|
+
}
|
|
215
|
+
@keyframes celebrate {
|
|
216
|
+
0%, 100% { transform: scaleX(1); }
|
|
217
|
+
50% { transform: scaleX(1.02); }
|
|
218
|
+
}
|
|
219
|
+
```
|
|
220
|
+
|
|
221
|
+
### 5.2 Streak Counters with Grace Periods
|
|
222
|
+
|
|
223
|
+
Losing a streak causes permanent churn. Always include a grace period — at minimum, 1 missed day without breaking the streak.
|
|
224
|
+
|
|
225
|
+
```typescript
|
|
226
|
+
interface StreakState {
|
|
227
|
+
currentStreak: number;
|
|
228
|
+
longestStreak: number;
|
|
229
|
+
lastActivityDate: string; // ISO date
|
|
230
|
+
gracePeriodUsed: boolean;
|
|
231
|
+
}
|
|
232
|
+
|
|
233
|
+
function updateStreak(state: StreakState, today: string): StreakState {
|
|
234
|
+
const daysDiff = Math.floor(
|
|
235
|
+
(new Date(today).getTime() - new Date(state.lastActivityDate).getTime()) / 86_400_000,
|
|
236
|
+
);
|
|
237
|
+
|
|
238
|
+
if (daysDiff <= 1) {
|
|
239
|
+
const newStreak = daysDiff === 0 ? state.currentStreak : state.currentStreak + 1;
|
|
240
|
+
return { currentStreak: newStreak, longestStreak: Math.max(state.longestStreak, newStreak), lastActivityDate: today, gracePeriodUsed: false };
|
|
241
|
+
}
|
|
242
|
+
if (daysDiff === 2 && !state.gracePeriodUsed) {
|
|
243
|
+
const newStreak = state.currentStreak + 1;
|
|
244
|
+
return { currentStreak: newStreak, longestStreak: Math.max(state.longestStreak, newStreak), lastActivityDate: today, gracePeriodUsed: true };
|
|
245
|
+
}
|
|
246
|
+
return { currentStreak: 1, longestStreak: state.longestStreak, lastActivityDate: today, gracePeriodUsed: false };
|
|
247
|
+
}
|
|
248
|
+
```
|
|
249
|
+
|
|
250
|
+
### 5.3 Celebration Moments
|
|
251
|
+
|
|
252
|
+
Deploy animations at milestones only — first task completed, streak milestones (7, 30, 100 days), level-ups, project completions. Overuse causes celebration fatigue.
|
|
253
|
+
|
|
254
|
+
### 5.4 Social Proof
|
|
255
|
+
|
|
256
|
+
"3 teammates completed this today" motivates more than "1,000 users completed this." Proximity amplifies social proof. Use the closest reference group: team > department > company > all users.
|
|
257
|
+
|
|
258
|
+
### 5.5 Variable Reward Schedules
|
|
259
|
+
|
|
260
|
+
Unexpected positive feedback activates dopamine more strongly than predictable rewards. Schedule at random intervals (~1 in 5-7 eligible interactions, max 1 per session). Optimize for task completion, not time-in-app.
|
|
261
|
+
|
|
262
|
+
---
|
|
263
|
+
|
|
264
|
+
## 6. Time-Boxing UX
|
|
265
|
+
|
|
266
|
+
Time-boxing transforms open-ended work into bounded sprints. The constraint reduces anxiety and increases output.
|
|
267
|
+
|
|
268
|
+
### 6.1 Pomodoro Integration
|
|
269
|
+
|
|
270
|
+
```typescript
|
|
271
|
+
interface TimeBox {
|
|
272
|
+
taskId: string;
|
|
273
|
+
workMinutes: number;
|
|
274
|
+
breakMinutes: number;
|
|
275
|
+
startedAt: number;
|
|
276
|
+
state: 'working' | 'break' | 'paused' | 'complete';
|
|
277
|
+
}
|
|
278
|
+
|
|
279
|
+
function getTimeRemaining(box: TimeBox, now: number): number {
|
|
280
|
+
const elapsed = (now - box.startedAt) / 60_000;
|
|
281
|
+
const duration = box.state === 'break' ? box.breakMinutes : box.workMinutes;
|
|
282
|
+
return Math.max(duration - elapsed, 0);
|
|
283
|
+
}
|
|
284
|
+
```
|
|
285
|
+
|
|
286
|
+
Support standard Pomodoro (25/5) with customization. Starting a timer should be as easy as starting the task.
|
|
287
|
+
|
|
288
|
+
### 6.2 Deadline-Aware Interfaces
|
|
289
|
+
|
|
290
|
+
Gentle urgency, not panic. Color-code by proximity: green (>3 days), amber (1-3 days), red (<1 day). Never use countdown timers for deadlines unless the user explicitly opted in.
|
|
291
|
+
|
|
292
|
+
### 6.3 Time Estimates
|
|
293
|
+
|
|
294
|
+
Display estimated time on every task. Reduces planning anxiety and enables matching tasks to available time slots.
|
|
295
|
+
|
|
296
|
+
### 6.4 Quick-Win Sorting
|
|
297
|
+
|
|
298
|
+
Sort by estimated duration ascending. Users who are stuck often have motivation but cannot find a starting point.
|
|
299
|
+
|
|
300
|
+
---
|
|
301
|
+
|
|
302
|
+
## 7. Opt-Out Completion
|
|
303
|
+
|
|
304
|
+
The moment a flow feels coercive, trust evaporates. Design every multi-step process with exits.
|
|
305
|
+
|
|
306
|
+
- **"Save and finish later" always visible** — a styled button, not a hidden link
|
|
307
|
+
- **No countdown pressure** unless user explicitly opted in
|
|
308
|
+
- **Graceful degradation** — auto-save partial state; resume exactly where the user left off
|
|
309
|
+
- **Exit surveys: 1 question max**, never blocking, "Skip" as the most prominent option
|
|
310
|
+
- **No guilt language** — never "Are you sure?" or "You'll lose your progress!" Instead: "Your progress is saved. Come back anytime."
|
|
311
|
+
|
|
312
|
+
```html
|
|
313
|
+
<div class="flow-footer">
|
|
314
|
+
<button class="btn-primary" type="submit">Continue</button>
|
|
315
|
+
<button class="btn-secondary" type="button" data-action="save-and-exit">
|
|
316
|
+
Save and finish later
|
|
317
|
+
</button>
|
|
318
|
+
</div>
|
|
319
|
+
|
|
320
|
+
<dialog class="exit-dialog">
|
|
321
|
+
<p>Your progress is saved. You can pick up right where you left off.</p>
|
|
322
|
+
<button class="btn-primary" data-action="leave">Leave</button>
|
|
323
|
+
<button class="btn-ghost" data-action="stay">Keep working</button>
|
|
324
|
+
</dialog>
|
|
325
|
+
```
|
|
326
|
+
|
|
327
|
+
### 7.1 Partial State Persistence
|
|
328
|
+
|
|
329
|
+
```typescript
|
|
330
|
+
interface PartialFlowState {
|
|
331
|
+
flowId: string;
|
|
332
|
+
currentStep: number;
|
|
333
|
+
totalSteps: number;
|
|
334
|
+
data: Record<string, unknown>;
|
|
335
|
+
savedAt: number;
|
|
336
|
+
}
|
|
337
|
+
|
|
338
|
+
function resumeOrStart(flowId: string, totalSteps: number): PartialFlowState {
|
|
339
|
+
const saved = localStorage.getItem(`flow_state_${flowId}`);
|
|
340
|
+
if (saved) {
|
|
341
|
+
const parsed: PartialFlowState = JSON.parse(saved);
|
|
342
|
+
const thirtyDays = 30 * 24 * 60 * 60 * 1000;
|
|
343
|
+
if (Date.now() - parsed.savedAt < thirtyDays) return parsed;
|
|
344
|
+
}
|
|
345
|
+
return { flowId, currentStep: 0, totalSteps, data: {}, savedAt: Date.now() };
|
|
346
|
+
}
|
|
347
|
+
```
|
|
348
|
+
|
|
349
|
+
---
|
|
350
|
+
|
|
351
|
+
## 8. Notification Design
|
|
352
|
+
|
|
353
|
+
A notification that does not lead to an immediate, valuable action is not a nudge — it is an interruption.
|
|
354
|
+
|
|
355
|
+
### 8.1 Batch Over Individual
|
|
356
|
+
|
|
357
|
+
Batch non-urgent notifications into daily or weekly digests. Individual pings for non-urgent events cause fatigue.
|
|
358
|
+
|
|
359
|
+
### 8.2 Actionable Only
|
|
360
|
+
|
|
361
|
+
| Notification Type | Actionable? | Verdict |
|
|
362
|
+
|-------------------|-------------|---------|
|
|
363
|
+
| "Task assigned to you" | Yes — open task | Send |
|
|
364
|
+
| "You haven't logged in for 3 days" | No — guilt trip | Do not send |
|
|
365
|
+
| "Your report is ready" | Yes — download | Send |
|
|
366
|
+
| "Just checking in!" | No — no action | Do not send |
|
|
367
|
+
| "3 tasks due tomorrow" | Yes — review tasks | Send |
|
|
368
|
+
| "Someone liked your post" | Marginal | Batch into digest |
|
|
369
|
+
|
|
370
|
+
### 8.3 User-Controlled Frequency
|
|
371
|
+
|
|
372
|
+
Per-category toggles, not just global on/off. Default to the least intrusive channel (in-app badge, not push).
|
|
373
|
+
|
|
374
|
+
### 8.4 Smart Timing
|
|
375
|
+
|
|
376
|
+
Never send during focus hours. Infer quiet hours from usage patterns when not explicitly set.
|
|
377
|
+
|
|
378
|
+
```typescript
|
|
379
|
+
function shouldSendNow(
|
|
380
|
+
quietStart: number, quietEnd: number, currentHour: number,
|
|
381
|
+
): boolean {
|
|
382
|
+
if (quietStart < quietEnd) {
|
|
383
|
+
return currentHour < quietStart || currentHour >= quietEnd;
|
|
384
|
+
}
|
|
385
|
+
// Wraps midnight (e.g., 22:00-07:00)
|
|
386
|
+
return currentHour >= quietEnd && currentHour < quietStart;
|
|
387
|
+
}
|
|
388
|
+
```
|
|
389
|
+
|
|
390
|
+
---
|
|
391
|
+
|
|
392
|
+
## 9. Anti-Patterns
|
|
393
|
+
|
|
394
|
+
These patterns masquerade as nudges but violate user autonomy or cause psychological harm.
|
|
395
|
+
|
|
396
|
+
**9.1 Overwhelming Task Dumps.** Showing the entire backlog on login. Users cannot process 50 items — they process 0 and close the app.
|
|
397
|
+
|
|
398
|
+
**9.2 Guilt-Driven Notifications.** "You haven't logged in for 3 days!" weaponizes absence. Instead, on return: "Welcome back. Here's where you left off."
|
|
399
|
+
|
|
400
|
+
**9.3 Infinite Scroll Without Progress.** Without a position indicator ("30 of 120"), users lose spatial awareness.
|
|
401
|
+
|
|
402
|
+
**9.4 Forced Completion Flows.** No exit means the user is trapped, not nudged. Every step must offer "Save and finish later."
|
|
403
|
+
|
|
404
|
+
**9.5 Dark Patterns Disguised as Nudges.** Pre-checked upgrades, confirm-shaming ("No thanks, I don't want to save money"). Test: would the user thank you for this default?
|
|
405
|
+
|
|
406
|
+
**9.6 Gamification That Punishes.** Losing streaks, negative scoring, public shame leaderboards. Gamification should only add — never subtract from baseline.
|
|
407
|
+
|
|
408
|
+
**9.7 Social Pressure Notifications.** "Everyone else has finished!" creates anxiety. Social proof should inspire, not shame.
|
|
409
|
+
|
|
410
|
+
**9.8 Arbitrary Urgency.** "Only 2 left!" when there are 2,000. Fake scarcity permanently erodes trust.
|
|
411
|
+
|
|
412
|
+
**9.9 Dopamine Hijacking.** Variable rewards optimized for time-in-app rather than task completion. That is manipulation, not nudging.
|
|
413
|
+
|
|
414
|
+
**9.10 Asymmetric Friction.** Signup in one click, cancellation in seven steps. Opt-in and opt-out must require symmetric effort.
|
|
415
|
+
|
|
416
|
+
---
|
|
417
|
+
|
|
418
|
+
## 10. Implementation Checklist
|
|
419
|
+
|
|
420
|
+
- [ ] Each nudge targets exactly one behavior
|
|
421
|
+
- [ ] The nudge operates on System 1 (fast, automatic)
|
|
422
|
+
- [ ] Default values serve the user's interest, not the business's
|
|
423
|
+
- [ ] Users can override every default with minimal friction
|
|
424
|
+
- [ ] Consent-sensitive choices are never pre-selected
|
|
425
|
+
- [ ] Progress indicators show >0% from the start
|
|
426
|
+
- [ ] Streaks include a grace period of at least 1 missed day
|
|
427
|
+
- [ ] Notifications are actionable — "what should I do?" has a clear answer
|
|
428
|
+
- [ ] No guilt language in any user-facing copy
|
|
429
|
+
- [ ] Exit is always available, visible, and preserves partial state
|
|
430
|
+
- [ ] Time pressure is opt-in only
|
|
431
|
+
- [ ] Social proof uses proximate reference groups
|
|
432
|
+
- [ ] Variable rewards optimize for task completion, not time-in-app
|
|
433
|
+
- [ ] Opt-in and opt-out require symmetric effort
|
|
434
|
+
- [ ] The nudge passes the "would the user thank you?" test
|
|
435
|
+
|
|
436
|
+
---
|
|
437
|
+
|
|
438
|
+
## 11. Measuring Nudge Effectiveness
|
|
439
|
+
|
|
440
|
+
| Metric | What It Measures | Healthy Signal |
|
|
441
|
+
|--------|-----------------|----------------|
|
|
442
|
+
| Task completion rate | Did the nudge help finish? | Increase without time-in-app increase |
|
|
443
|
+
| Time to first action | Did it reduce activation energy? | Decrease |
|
|
444
|
+
| Return rate (7-day) | Did it build habit? | Increase |
|
|
445
|
+
| Opt-out rate | Did it feel coercive? | Below 5% |
|
|
446
|
+
| Feature discovery | Did it surface hidden value? | Feature adoption increase |
|
|
447
|
+
| Reported satisfaction | Did it feel helpful? | No decrease |
|
|
448
|
+
|
|
449
|
+
If a nudge increases engagement but decreases satisfaction, it is not a nudge — it is a manipulation. Remove it.
|