@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,433 @@
|
|
|
1
|
+
# Notification Content Patterns
|
|
2
|
+
|
|
3
|
+
> **Module Type:** Pattern
|
|
4
|
+
> **Domain:** Content -- Multi-Channel Notification Systems
|
|
5
|
+
> **Authoritative Sources:** Apple Push Notification Guidelines, Firebase Cloud Messaging, Material Design 3, Mailchimp Content Style Guide, NNG, CAN-SPAM Act, GDPR
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## Quick Reference Checklist
|
|
10
|
+
|
|
11
|
+
1. Push titles under 50 characters; body under 100 characters
|
|
12
|
+
2. Email subject lines under 50 characters; preheader under 100 characters
|
|
13
|
+
3. Every notification answers: what happened, why it matters, what to do
|
|
14
|
+
4. Toast/snackbar auto-dismiss 3-5s for text under 20 words
|
|
15
|
+
5. One CTA per notification -- never present competing actions
|
|
16
|
+
6. Urgency level matches the notification channel (push = urgent, digest = low)
|
|
17
|
+
7. Variable data ({name}, {count}) has fallback values for null/missing
|
|
18
|
+
8. In-app banners persist until dismissed or resolved
|
|
19
|
+
9. System messages use neutral tone -- no marketing language
|
|
20
|
+
10. Email CTA button text is a specific verb phrase, not "Click here"
|
|
21
|
+
11. Notifications that require action include a deep link to the relevant screen
|
|
22
|
+
12. Batch related notifications ("3 new comments") instead of sending individually
|
|
23
|
+
13. Every notification type has an opt-out mechanism
|
|
24
|
+
14. Time-sensitive notifications include the relevant timestamp
|
|
25
|
+
15. Never send notifications for the user's own actions
|
|
26
|
+
|
|
27
|
+
---
|
|
28
|
+
|
|
29
|
+
## 1. Push Notifications
|
|
30
|
+
|
|
31
|
+
Push notifications interrupt the user outside the app. They must justify the interruption by being timely, relevant, and actionable.
|
|
32
|
+
|
|
33
|
+
### 1.1 Structure
|
|
34
|
+
|
|
35
|
+
| Element | Constraints | Purpose |
|
|
36
|
+
|---------|------------|---------|
|
|
37
|
+
| **Title** | 50 chars max (iOS truncates at ~50, Android at ~65) | Who or what: the source of the notification |
|
|
38
|
+
| **Body** | 100 chars max (iOS shows ~4 lines expanded, ~2 collapsed) | What happened + why it matters |
|
|
39
|
+
| **Action** | Deep link to specific screen | Where to go to respond |
|
|
40
|
+
| **Category** | Maps to notification settings | Allows user to mute by type |
|
|
41
|
+
| **Media** | Rich notification: image, video thumbnail | Visual context (optional) |
|
|
42
|
+
|
|
43
|
+
### 1.2 Examples by Type
|
|
44
|
+
|
|
45
|
+
**Direct messages:**
|
|
46
|
+
|
|
47
|
+
| Element | Copy |
|
|
48
|
+
|---------|------|
|
|
49
|
+
| Title | "Sarah Chen" |
|
|
50
|
+
| Body | "Can you review the Q3 report before tomorrow's meeting?" |
|
|
51
|
+
| Action | Open conversation with Sarah |
|
|
52
|
+
|
|
53
|
+
**Mentions and assignments:**
|
|
54
|
+
|
|
55
|
+
| Element | Copy |
|
|
56
|
+
|---------|------|
|
|
57
|
+
| Title | "You were mentioned in #design" |
|
|
58
|
+
| Body | "Alex: @you What do you think about the new navigation?" |
|
|
59
|
+
| Action | Open channel at mention |
|
|
60
|
+
|
|
61
|
+
**Status changes:**
|
|
62
|
+
|
|
63
|
+
| Element | Copy |
|
|
64
|
+
|---------|------|
|
|
65
|
+
| Title | "Build succeeded" |
|
|
66
|
+
| Body | "main branch deployed to production" |
|
|
67
|
+
| Action | Open deployment details |
|
|
68
|
+
|
|
69
|
+
**Reminders:**
|
|
70
|
+
|
|
71
|
+
| Element | Copy |
|
|
72
|
+
|---------|------|
|
|
73
|
+
| Title | "Reminder: Team standup" |
|
|
74
|
+
| Body | "Starts in 15 minutes. 6 attendees confirmed." |
|
|
75
|
+
| Action | Open calendar event |
|
|
76
|
+
|
|
77
|
+
**Alerts:**
|
|
78
|
+
|
|
79
|
+
| Element | Copy |
|
|
80
|
+
|---------|------|
|
|
81
|
+
| Title | "Payment failed" |
|
|
82
|
+
| Body | "Your subscription payment couldn't be processed. Update your billing info." |
|
|
83
|
+
| Action | Open billing settings |
|
|
84
|
+
|
|
85
|
+
### 1.3 Character Limit Reference
|
|
86
|
+
|
|
87
|
+
| Platform | Title | Body (collapsed) | Body (expanded) |
|
|
88
|
+
|----------|-------|-------------------|-----------------|
|
|
89
|
+
| iOS | ~50 chars | ~80 chars (2 lines) | ~200 chars (4 lines) |
|
|
90
|
+
| Android | ~65 chars | ~40 chars (1 line) | ~450 chars (big text style) |
|
|
91
|
+
| Web (Chrome) | ~50 chars | ~120 chars (2 lines) | N/A |
|
|
92
|
+
| macOS | ~50 chars | ~100 chars (2 lines) | ~200 chars (expanded) |
|
|
93
|
+
| watchOS | ~30 chars | ~60 chars | N/A |
|
|
94
|
+
|
|
95
|
+
**Rule of thumb:** Write for the smallest display. If the collapsed body must convey the full message, keep it under 80 characters.
|
|
96
|
+
|
|
97
|
+
### 1.4 Urgency Levels
|
|
98
|
+
|
|
99
|
+
| Level | Use For | Frequency | Sound/Vibrate |
|
|
100
|
+
|-------|---------|-----------|--------------|
|
|
101
|
+
| **Critical** | Security alerts, payment failures, service outages | Rare (<1/week) | Yes, override DND if allowed |
|
|
102
|
+
| **High** | Direct messages, mentions, assigned tasks | As they happen | Yes |
|
|
103
|
+
| **Medium** | Status changes, approvals needed, updates | Batched (hourly) | Default |
|
|
104
|
+
| **Low** | Tips, recommendations, social activity | Daily digest or in-app only | Silent |
|
|
105
|
+
|
|
106
|
+
---
|
|
107
|
+
|
|
108
|
+
## 2. Email Templates
|
|
109
|
+
|
|
110
|
+
Email is the workhorse notification channel. It handles everything push cannot: long-form content, receipts, digests, and communications requiring a paper trail.
|
|
111
|
+
|
|
112
|
+
### 2.1 Structure
|
|
113
|
+
|
|
114
|
+
| Element | Constraints | Purpose |
|
|
115
|
+
|---------|------------|---------|
|
|
116
|
+
| **From name** | Recognizable sender (product name or person + product) | Trust and open rate |
|
|
117
|
+
| **Subject line** | Under 50 chars; front-load the key information | Why to open this email |
|
|
118
|
+
| **Preheader** | Under 100 chars; complements subject, not repeats it | Preview text in inbox list |
|
|
119
|
+
| **Body** | Scannable; 1-3 short paragraphs max for transactional | What happened, context, next step |
|
|
120
|
+
| **CTA button** | Specific verb phrase; one primary CTA per email | What to do next |
|
|
121
|
+
| **Footer** | Unsubscribe link (legally required), company info | Compliance and opt-out |
|
|
122
|
+
|
|
123
|
+
### 2.2 Subject Line and Preheader Pairs
|
|
124
|
+
|
|
125
|
+
**Transactional:**
|
|
126
|
+
|
|
127
|
+
| Subject | Preheader |
|
|
128
|
+
|---------|-----------|
|
|
129
|
+
| "Your invoice for March 2025" | "Amount due: $49.00. Payment is due by April 1." |
|
|
130
|
+
| "Password reset requested" | "Use the link below to set a new password. Expires in 1 hour." |
|
|
131
|
+
| "Your export is ready" | "Download your data export (247 records, CSV format)." |
|
|
132
|
+
| "Welcome to [Product]" | "Your account is set up. Here's how to get started." |
|
|
133
|
+
| "[Name] invited you to [Workspace]" | "Join [Name]'s workspace to start collaborating." |
|
|
134
|
+
|
|
135
|
+
**Notifications:**
|
|
136
|
+
|
|
137
|
+
| Subject | Preheader |
|
|
138
|
+
|---------|-----------|
|
|
139
|
+
| "[Name] commented on your task" | "'Looks great, just one small change on the header.'" |
|
|
140
|
+
| "3 tasks due tomorrow" | "Design review, API docs update, and sprint planning." |
|
|
141
|
+
| "Your weekly summary" | "12 tasks completed, 3 new issues, 98% uptime." |
|
|
142
|
+
| "New sign-in from Chrome on Windows" | "If this wasn't you, secure your account now." |
|
|
143
|
+
|
|
144
|
+
**Digest:**
|
|
145
|
+
|
|
146
|
+
| Subject | Preheader |
|
|
147
|
+
|---------|-----------|
|
|
148
|
+
| "This week in [Workspace]" | "14 tasks completed, 2 milestones reached, 5 new discussions." |
|
|
149
|
+
| "Your monthly report for [Project]" | "Key metrics: 94% on-time delivery, 23 resolved issues." |
|
|
150
|
+
|
|
151
|
+
### 2.3 CTA Button Copy
|
|
152
|
+
|
|
153
|
+
| Bad | Good | Why |
|
|
154
|
+
|-----|------|-----|
|
|
155
|
+
| "Click here" | "View invoice" | Specific action, accessible (screen readers read button text) |
|
|
156
|
+
| "Learn more" | "See what changed" | Tells user what they'll find |
|
|
157
|
+
| "Submit" | "Confirm your email" | Names the action and object |
|
|
158
|
+
| "Go" | "Open your dashboard" | Clear destination |
|
|
159
|
+
| "OK" | "Accept invitation" | Specific verb + object |
|
|
160
|
+
|
|
161
|
+
**Rule:** CTA text should complete the sentence "I want to ___."
|
|
162
|
+
|
|
163
|
+
### 2.4 Email Body Patterns
|
|
164
|
+
|
|
165
|
+
**Transactional email body formula:**
|
|
166
|
+
1. One sentence stating what happened
|
|
167
|
+
2. Relevant details (amount, date, item name)
|
|
168
|
+
3. One CTA button
|
|
169
|
+
4. One sentence for fallback ("If you didn't request this, you can ignore this email.")
|
|
170
|
+
|
|
171
|
+
**Notification email body formula:**
|
|
172
|
+
1. Who did what ("[Name] commented on [item]")
|
|
173
|
+
2. Preview of the content (quoted comment text, task details)
|
|
174
|
+
3. One CTA button to view in-app
|
|
175
|
+
4. Notification preference link
|
|
176
|
+
|
|
177
|
+
---
|
|
178
|
+
|
|
179
|
+
## 3. In-App Notifications
|
|
180
|
+
|
|
181
|
+
In-app notifications appear within the application interface. They range from ephemeral toasts to persistent banners.
|
|
182
|
+
|
|
183
|
+
### 3.1 Toast / Snackbar
|
|
184
|
+
|
|
185
|
+
Lightweight, temporary feedback for completed actions.
|
|
186
|
+
|
|
187
|
+
| Scenario | Copy | Duration |
|
|
188
|
+
|----------|------|----------|
|
|
189
|
+
| Item saved | "Changes saved" | 3s |
|
|
190
|
+
| Item deleted | "Task deleted" + "Undo" | 8s |
|
|
191
|
+
| Copied to clipboard | "Link copied" | 3s |
|
|
192
|
+
| Settings updated | "Notification preferences saved" | 3s |
|
|
193
|
+
| Bulk action | "12 items archived" + "Undo" | 8s |
|
|
194
|
+
| Error (recoverable) | "Couldn't save changes. Try again." + "Retry" | 10s |
|
|
195
|
+
|
|
196
|
+
**Rules:**
|
|
197
|
+
- One toast visible at a time; queue additional ones
|
|
198
|
+
- Auto-dismiss 3-5s for informational, 8-10s if action button present
|
|
199
|
+
- Position: bottom-center (M3) or bottom-left (common web pattern)
|
|
200
|
+
- Never use toasts for errors that require user attention -- use inline messages
|
|
201
|
+
|
|
202
|
+
### 3.2 Banner
|
|
203
|
+
|
|
204
|
+
Persistent, full-width messages for system-wide or section-wide states.
|
|
205
|
+
|
|
206
|
+
| Type | Copy | Dismiss |
|
|
207
|
+
|------|------|---------|
|
|
208
|
+
| Trial expiring | "Your free trial ends in 3 days. Upgrade to keep your data." + CTA: "View plans" | Dismissible |
|
|
209
|
+
| Maintenance scheduled | "Scheduled maintenance on March 20, 2-4 AM UTC. Some features may be unavailable." | Dismissible |
|
|
210
|
+
| Account issue | "Your payment method was declined. Update it to avoid service interruption." + CTA: "Update billing" | Not dismissible until resolved |
|
|
211
|
+
| New feature | "Introducing automations. Set up rules to save time on repetitive tasks." + CTA: "Learn more" | Dismissible, don't show again |
|
|
212
|
+
| Security notice | "We've updated our privacy policy. Review the changes." + CTA: "Review" | Dismissible |
|
|
213
|
+
|
|
214
|
+
### 3.3 Modal Notifications
|
|
215
|
+
|
|
216
|
+
Modals interrupt the workflow. Reserve for critical information requiring acknowledgment.
|
|
217
|
+
|
|
218
|
+
| Scenario | Headline | Body | Actions |
|
|
219
|
+
|----------|----------|------|---------|
|
|
220
|
+
| Breaking change | "Action required: Update your integration" | "The v1 API will be retired on April 30. Update your integration to v2 to avoid disruption." | "View migration guide" / "Remind me later" |
|
|
221
|
+
| Terms update | "Updated terms of service" | "We've made changes to our terms effective March 1. Please review and accept to continue." | "Review terms" / "Sign out" |
|
|
222
|
+
| Session expired | "Session expired" | "You've been signed out due to inactivity." | "Sign in again" |
|
|
223
|
+
|
|
224
|
+
### 3.4 Notification Center / Inbox
|
|
225
|
+
|
|
226
|
+
The in-app notification list. Each entry follows a consistent structure.
|
|
227
|
+
|
|
228
|
+
**Entry structure:**
|
|
229
|
+
- **Icon/avatar:** Source of the notification (user avatar, system icon)
|
|
230
|
+
- **Primary text:** "[Actor] [action] [object]" -- e.g., "Sarah commented on 'Homepage redesign'"
|
|
231
|
+
- **Timestamp:** Relative ("2h ago") for recent, absolute ("Mar 12") for older
|
|
232
|
+
- **Read/unread indicator:** Bold or dot for unread
|
|
233
|
+
- **Deep link:** Tapping opens the relevant context
|
|
234
|
+
|
|
235
|
+
**Grouping:**
|
|
236
|
+
- Batch related notifications: "Alex and 4 others reacted to your post"
|
|
237
|
+
- Show expanded list on tap: individual reactions with timestamps
|
|
238
|
+
|
|
239
|
+
---
|
|
240
|
+
|
|
241
|
+
## 4. System Messages
|
|
242
|
+
|
|
243
|
+
System messages are generated by the application itself, not triggered by another user's action. They include automated alerts, scheduled reports, and operational notifications.
|
|
244
|
+
|
|
245
|
+
### 4.1 Automated Alerts
|
|
246
|
+
|
|
247
|
+
| Trigger | Copy |
|
|
248
|
+
|---------|------|
|
|
249
|
+
| Approaching quota | "You've used 80% of your storage (4.0 GB of 5.0 GB). Upgrade for more space." |
|
|
250
|
+
| Certificate expiring | "Your SSL certificate expires in 14 days. Renew it to avoid site downtime." |
|
|
251
|
+
| Unused feature | "You haven't set up backups yet. Enable automatic backups to protect your data." |
|
|
252
|
+
| Anomaly detected | "Unusual login activity detected from [location]. Was this you?" + "Yes, it was me" / "Secure my account" |
|
|
253
|
+
|
|
254
|
+
### 4.2 Scheduled Reports
|
|
255
|
+
|
|
256
|
+
| Type | Subject / Title | Content |
|
|
257
|
+
|------|----------------|---------|
|
|
258
|
+
| Daily digest | "Your daily summary for [date]" | Key metrics, action items, trending items |
|
|
259
|
+
| Weekly recap | "Week of [date range]: Your highlights" | Completed items, upcoming deadlines, team activity |
|
|
260
|
+
| Monthly report | "[Month] report for [Project]" | Aggregated metrics, trends, recommendations |
|
|
261
|
+
|
|
262
|
+
### 4.3 Lifecycle Messages
|
|
263
|
+
|
|
264
|
+
| Stage | Channel | Copy |
|
|
265
|
+
|-------|---------|------|
|
|
266
|
+
| Welcome | Email | "Welcome to [Product]. Here are 3 things to try first." |
|
|
267
|
+
| Activation prompt | Push + Email | "You haven't created your first [item] yet. It only takes a minute." |
|
|
268
|
+
| Re-engagement | Email | "It's been a while! Here's what's new since your last visit." |
|
|
269
|
+
| Churn risk | Email | "We noticed you haven't logged in recently. Is there anything we can help with?" |
|
|
270
|
+
| Cancellation followup | Email | "We're sorry to see you go. Your data will be available for 30 days if you change your mind." |
|
|
271
|
+
|
|
272
|
+
---
|
|
273
|
+
|
|
274
|
+
## 5. Variable Handling
|
|
275
|
+
|
|
276
|
+
Notifications contain dynamic data. Every variable must have a fallback for when the data is null, missing, or too long.
|
|
277
|
+
|
|
278
|
+
### 5.1 Common Variables and Fallbacks
|
|
279
|
+
|
|
280
|
+
| Variable | Example Value | Fallback | Truncation |
|
|
281
|
+
|----------|--------------|----------|------------|
|
|
282
|
+
| `{user_name}` | "Sarah Chen" | "Someone" | First name only if space is tight |
|
|
283
|
+
| `{item_name}` | "Q3 Marketing Plan" | "an item" | Truncate at 30 chars + "..." |
|
|
284
|
+
| `{count}` | "5" | "several" | N/A |
|
|
285
|
+
| `{date}` | "March 15, 2025" | "recently" | Short format: "Mar 15" |
|
|
286
|
+
| `{workspace}` | "Acme Design Team" | "your workspace" | Truncate at 25 chars + "..." |
|
|
287
|
+
| `{email}` | "sarah@acme.com" | "your email address" | Mask: "s***@acme.com" |
|
|
288
|
+
|
|
289
|
+
### 5.2 Pluralization
|
|
290
|
+
|
|
291
|
+
| Count | Copy |
|
|
292
|
+
|-------|------|
|
|
293
|
+
| 0 | "No new messages" |
|
|
294
|
+
| 1 | "1 new message" |
|
|
295
|
+
| 2-4 | "[N] new messages" |
|
|
296
|
+
| 5+ | "[N] new messages" |
|
|
297
|
+
| 100+ | "99+ new messages" |
|
|
298
|
+
|
|
299
|
+
**Rule:** Always handle 0, 1, and many. Some languages have additional plural forms (Russian has 3, Arabic has 6) -- use ICU MessageFormat for i18n.
|
|
300
|
+
|
|
301
|
+
### 5.3 Relative Timestamps
|
|
302
|
+
|
|
303
|
+
| Duration | Display |
|
|
304
|
+
|----------|---------|
|
|
305
|
+
| < 1 minute | "Just now" |
|
|
306
|
+
| 1-59 minutes | "[N]m ago" |
|
|
307
|
+
| 1-23 hours | "[N]h ago" |
|
|
308
|
+
| 1-6 days | "[N]d ago" |
|
|
309
|
+
| 7+ days | "Mar 12" (absolute date) |
|
|
310
|
+
| Different year | "Mar 12, 2024" (include year) |
|
|
311
|
+
|
|
312
|
+
---
|
|
313
|
+
|
|
314
|
+
## 6. Channel Constraints
|
|
315
|
+
|
|
316
|
+
### 6.1 Platform-Specific Limits
|
|
317
|
+
|
|
318
|
+
| Constraint | iOS | Android | Web Push | Email |
|
|
319
|
+
|-----------|-----|---------|----------|-------|
|
|
320
|
+
| Title length | ~50 chars | ~65 chars | ~50 chars | ~50 chars (subject) |
|
|
321
|
+
| Body length | ~200 chars (expanded) | ~450 chars (big text) | ~120 chars | No hard limit |
|
|
322
|
+
| Rich media | Images, video thumbnails | Images, big picture | Images (limited) | Images, HTML |
|
|
323
|
+
| Actions | Up to 4 category actions | Up to 3 action buttons | Up to 2 actions | CTA buttons in body |
|
|
324
|
+
| Sound | Custom sound file, up to 30s | Custom sound or channel default | Browser default | N/A |
|
|
325
|
+
| Grouping | Thread ID | Channel + group key | Tag | N/A |
|
|
326
|
+
| Rate limits | Throttled by system | Channel importance levels | Browser-managed | ISP reputation |
|
|
327
|
+
|
|
328
|
+
### 6.2 Deliverability Considerations
|
|
329
|
+
|
|
330
|
+
**Push:**
|
|
331
|
+
- iOS: Users must grant permission; prompt after demonstrating value
|
|
332
|
+
- Android 13+: POST_NOTIFICATIONS permission required at runtime
|
|
333
|
+
- Web: Browser permission dialog; use custom pre-prompt first
|
|
334
|
+
|
|
335
|
+
**Email:**
|
|
336
|
+
- Include text/plain alternative for every HTML email
|
|
337
|
+
- CAN-SPAM: physical address required, unsubscribe within 10 days
|
|
338
|
+
- GDPR: explicit consent for marketing; transactional exempt from consent
|
|
339
|
+
- SPF, DKIM, DMARC configured for sender domain
|
|
340
|
+
- Avoid spam trigger words in subject lines ("FREE," "Act Now," all caps)
|
|
341
|
+
|
|
342
|
+
---
|
|
343
|
+
|
|
344
|
+
## 7. Anti-Patterns
|
|
345
|
+
|
|
346
|
+
### 7.1 Notification Spam
|
|
347
|
+
|
|
348
|
+
Sending a push for every minor event. Users disable all notifications. **Fix:** Default to in-app or digest for low-priority events. Let users configure per-type preferences.
|
|
349
|
+
|
|
350
|
+
### 7.2 Duplicate Channels
|
|
351
|
+
|
|
352
|
+
Sending the same notification via push AND email AND in-app simultaneously. **Fix:** Use channel hierarchy: push for urgent, in-app for standard, email for digest. Never duplicate the same message across channels at the same time.
|
|
353
|
+
|
|
354
|
+
### 7.3 Missing Deep Links
|
|
355
|
+
|
|
356
|
+
"You have a new comment" that opens the app's home screen. **Fix:** Every notification deep links to the specific context (the comment, the task, the conversation).
|
|
357
|
+
|
|
358
|
+
### 7.4 No Opt-Out
|
|
359
|
+
|
|
360
|
+
Users cannot control which notifications they receive. **Fix:** Granular notification settings by type and channel. "Mute this conversation" for thread-level control.
|
|
361
|
+
|
|
362
|
+
### 7.5 Generic Subject Lines
|
|
363
|
+
|
|
364
|
+
"Notification from [Product]" or "[Product] Update" as the email subject. **Fix:** Lead with the specific content: "[Name] commented on your task."
|
|
365
|
+
|
|
366
|
+
### 7.6 Expired Action Links
|
|
367
|
+
|
|
368
|
+
Notification links that expire before the user acts on them. **Fix:** Links should remain valid for at least 30 days. If expired, redirect to a helpful page explaining what happened.
|
|
369
|
+
|
|
370
|
+
### 7.7 Self-Notifications
|
|
371
|
+
|
|
372
|
+
Notifying users about their own actions ("You created a task"). **Fix:** Never notify users about actions they just performed. Only notify about others' actions or system events.
|
|
373
|
+
|
|
374
|
+
### 7.8 Unsubscribe Friction
|
|
375
|
+
|
|
376
|
+
Requiring login, multiple clicks, or a "reason" form to unsubscribe from email. **Fix:** One-click unsubscribe (RFC 8058 List-Unsubscribe-Post header). No login required. No guilt trip.
|
|
377
|
+
|
|
378
|
+
---
|
|
379
|
+
|
|
380
|
+
## 8. Decision Tree
|
|
381
|
+
|
|
382
|
+
### 8.1 Choosing the Right Channel
|
|
383
|
+
|
|
384
|
+
```
|
|
385
|
+
How urgent is this notification?
|
|
386
|
+
+-- Critical (security, payment, outage)
|
|
387
|
+
| --> Push (even if DND, if platform allows) + Email
|
|
388
|
+
+-- High (direct message, mention, assignment)
|
|
389
|
+
| --> Push + In-app
|
|
390
|
+
+-- Medium (status change, approval needed)
|
|
391
|
+
| --> In-app + Include in next digest email
|
|
392
|
+
+-- Low (recommendation, tip, social)
|
|
393
|
+
--> In-app only, or daily/weekly digest email
|
|
394
|
+
```
|
|
395
|
+
|
|
396
|
+
### 8.2 Choosing the Right In-App Format
|
|
397
|
+
|
|
398
|
+
```
|
|
399
|
+
Is the user currently in the app?
|
|
400
|
+
+-- YES
|
|
401
|
+
| +-- Was it their action? --> Toast (success/error feedback)
|
|
402
|
+
| +-- Was it someone else's action? --> Notification badge + inbox entry
|
|
403
|
+
| +-- Is it system-wide? --> Banner
|
|
404
|
+
| +-- Does it require acknowledgment? --> Modal
|
|
405
|
+
+-- NO
|
|
406
|
+
+-- Is it urgent? --> Push notification
|
|
407
|
+
+-- Can it wait? --> In-app inbox entry + badge
|
|
408
|
+
+-- Is it a digest? --> Email
|
|
409
|
+
```
|
|
410
|
+
|
|
411
|
+
### 8.3 Batching vs. Individual
|
|
412
|
+
|
|
413
|
+
```
|
|
414
|
+
Will there be more of the same event within 5 minutes?
|
|
415
|
+
+-- YES --> Batch: "[Name] and [N] others [action]"
|
|
416
|
+
+-- NO --> Individual notification
|
|
417
|
+
+-- UNKNOWN --> Wait 30s for debounce, then decide
|
|
418
|
+
```
|
|
419
|
+
|
|
420
|
+
---
|
|
421
|
+
|
|
422
|
+
## References
|
|
423
|
+
|
|
424
|
+
- [Apple - Push Notifications](https://developer.apple.com/design/human-interface-guidelines/notifications)
|
|
425
|
+
- [Material Design 3 - Notifications](https://m3.material.io/foundations/content-design/notifications)
|
|
426
|
+
- [Firebase - Send Messages](https://firebase.google.com/docs/cloud-messaging/concept-options)
|
|
427
|
+
- [NNG - Push Notification Design](https://www.nngroup.com/articles/push-notification/)
|
|
428
|
+
- [Mailchimp - Email Design Guide](https://mailchimp.com/email-design-guide/)
|
|
429
|
+
- [Mailchimp - Writing Email Subject Lines](https://mailchimp.com/resources/email-subject-lines/)
|
|
430
|
+
- [CAN-SPAM Act Compliance](https://www.ftc.gov/business-guidance/resources/can-spam-act-compliance-guide-business)
|
|
431
|
+
- [RFC 8058 - One-Click Unsubscribe](https://www.rfc-editor.org/rfc/rfc8058)
|
|
432
|
+
- [Intercom - Notification Best Practices](https://www.intercom.com/blog/notification-best-practices/)
|
|
433
|
+
- [Shopify Polaris - Toast](https://polaris.shopify.com/components/feedback-indicators/toast)
|