@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,505 @@
|
|
|
1
|
+
# Mobile Startup Time — Performance Expertise Module
|
|
2
|
+
|
|
3
|
+
> App startup time is the first impression users have of your app. 53% of mobile users abandon apps that take longer than 3 seconds to load (Google). Cold start times above 2 seconds correlate with 25% higher Day-1 abandonment. Users form a lasting opinion of app quality within the first 3 seconds of interaction, and apps rated below 3.5 stars see significantly reduced store visibility.
|
|
4
|
+
|
|
5
|
+
> **Impact:** Critical
|
|
6
|
+
> **Applies to:** Mobile (iOS, Android, Flutter, React Native)
|
|
7
|
+
> **Key metrics:** Cold start time, Warm start time, Hot start time, Time to Initial Display (TTID), Time to Full Display (TTFD)
|
|
8
|
+
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
## Why This Matters
|
|
12
|
+
|
|
13
|
+
- **53% of mobile users** leave if an app does not load within 3 seconds (Google — "The Need for Mobile Speed").
|
|
14
|
+
- Load time 1s to 3s: bounce probability rises **32%**. 1s to 5s: **90%**. 1s to 10s: **123%** (Google/SOASTA).
|
|
15
|
+
- Sites loading within 5s see **25% higher ad viewability**, **70% longer sessions**, **35% lower bounce rate** vs 19s loads.
|
|
16
|
+
- **25% of users** abandon an app after one use. **77%** abandon within 3 days of install.
|
|
17
|
+
- Apps rated above **4.5 stars** receive **3x more installs** on average.
|
|
18
|
+
- Apps reducing crash rates from 2% to 0.5% jumped **dozens of ranking positions** in stores.
|
|
19
|
+
|
|
20
|
+
### Real Case Studies
|
|
21
|
+
|
|
22
|
+
| Company | Platform | Improvement | Key Technique |
|
|
23
|
+
|---------|----------|-------------|---------------|
|
|
24
|
+
| **Turo** | Android | **77% faster** cold start (84% at p50) | Removed splash animation, parallel async requests, Baseline Profiles (+15%) |
|
|
25
|
+
| **DoorDash** | iOS | **60% faster** launch | Optimized Swift protocol conformance checks, command hashing (29% faster alone) |
|
|
26
|
+
| **Zomato** | Android | **20% faster** cold start | Baseline Profiles (3.47s to 2.81s), AOT compilation of critical paths |
|
|
27
|
+
| **Fintech startup** | Flutter | **48% faster** (2.5s to 1.3s) | Tree-shaking, lazy loading, app size 45MB to 32MB |
|
|
28
|
+
|
|
29
|
+
---
|
|
30
|
+
|
|
31
|
+
## Performance Budgets & Targets
|
|
32
|
+
|
|
33
|
+
| Metric | Excellent | Acceptable | Poor | Unacceptable |
|
|
34
|
+
|--------|-----------|------------|------|--------------|
|
|
35
|
+
| **Cold start (flagship)** | < 800ms | < 1.5s | 1.5–3s | > 3s |
|
|
36
|
+
| **Cold start (mid-range)** | < 1.2s | < 2s | 2–4s | > 4s |
|
|
37
|
+
| **Cold start (low-end)** | < 2s | < 3s | 3–5s | > 5s |
|
|
38
|
+
| **Warm start** | < 400ms | < 800ms | 800ms–2s | > 2s |
|
|
39
|
+
| **Hot start** | < 150ms | < 300ms | 300ms–1s | > 1s |
|
|
40
|
+
| **TTID** | < 500ms | < 1s | 1–2s | > 2s |
|
|
41
|
+
| **TTFD** | < 1.5s | < 2.5s | 2.5–4s | > 4s |
|
|
42
|
+
| **iOS pre-main** | < 200ms | < 400ms | 400ms–1s | > 1s |
|
|
43
|
+
|
|
44
|
+
**Android Vitals thresholds:** Cold >= 5s excessive, Warm >= 2s, Hot >= 1.5s. Google recommends < 500ms cold start (aggressive ideal). Top-100 apps: **39%** achieve cold launch < 2s, **73%** < 3s.
|
|
45
|
+
|
|
46
|
+
**iOS:** Watchdog kills apps failing to launch within ~20s. Pre-main target < 400ms.
|
|
47
|
+
|
|
48
|
+
**Flutter:** Cold start target < 2s on mid-range. Engine init overhead: 300–800ms on first launch.
|
|
49
|
+
|
|
50
|
+
**React Native:** With Hermes, target cold TTI < 2s. Without Hermes: expect 30–50% slower.
|
|
51
|
+
|
|
52
|
+
---
|
|
53
|
+
|
|
54
|
+
## Understanding Startup States
|
|
55
|
+
|
|
56
|
+
**Cold Start** — App process not in memory. System must: load binary, create process, init runtime (ART/dyld/Dart VM), load dynamic libraries, run static initializers, create Application/AppDelegate, create first Activity/VC, render first frame. Always the slowest path.
|
|
57
|
+
|
|
58
|
+
**Warm Start** — Process in memory but UI destroyed. Recreates Activity/VC and restores state. Typically **40–60% faster** than cold.
|
|
59
|
+
|
|
60
|
+
**Hot Start** — App fully in memory, brought to foreground. Usually < 200ms on modern devices.
|
|
61
|
+
|
|
62
|
+
---
|
|
63
|
+
|
|
64
|
+
## Measurement & Profiling
|
|
65
|
+
|
|
66
|
+
### Android
|
|
67
|
+
```bash
|
|
68
|
+
# Cold start measurement
|
|
69
|
+
adb shell am force-stop com.example.app
|
|
70
|
+
adb shell am start-activity -W -n com.example.app/.MainActivity
|
|
71
|
+
# Output: TotalTime, WaitTime, LaunchState (COLD/WARM/HOT)
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
**Macrobenchmark (CI-ready):**
|
|
75
|
+
```kotlin
|
|
76
|
+
@Test
|
|
77
|
+
fun startupCold() = benchmarkRule.measureRepeated(
|
|
78
|
+
packageName = "com.example.app",
|
|
79
|
+
metrics = listOf(StartupTimingMetric()),
|
|
80
|
+
iterations = 10,
|
|
81
|
+
startupMode = StartupMode.COLD
|
|
82
|
+
) {
|
|
83
|
+
pressHome()
|
|
84
|
+
startActivityAndWait()
|
|
85
|
+
}
|
|
86
|
+
// Outputs: timeToInitialDisplayMs, timeToFullDisplayMs — JSON for CI
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
**Also use:** Android Vitals (real-user percentiles), Perfetto/Systrace (detailed traces).
|
|
90
|
+
|
|
91
|
+
### iOS
|
|
92
|
+
```
|
|
93
|
+
# Xcode scheme → Environment Variables:
|
|
94
|
+
DYLD_PRINT_STATISTICS = 1
|
|
95
|
+
# Shows: dylib loading, rebase/binding, ObjC setup, initializer time
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
**XCTest (CI-ready):**
|
|
99
|
+
```swift
|
|
100
|
+
func testColdLaunchTime() throws {
|
|
101
|
+
measure(metrics: [XCTApplicationLaunchMetric()]) {
|
|
102
|
+
XCUIApplication().launch()
|
|
103
|
+
}
|
|
104
|
+
// 10 iterations, set baselines in Xcode for regression detection
|
|
105
|
+
}
|
|
106
|
+
```
|
|
107
|
+
|
|
108
|
+
**Also use:** Instruments App Launch template, MetricKit (production, delivers daily reports).
|
|
109
|
+
|
|
110
|
+
### Flutter
|
|
111
|
+
```bash
|
|
112
|
+
flutter run --trace-startup --profile
|
|
113
|
+
# Outputs startup_info.json: engineEnterTimestampMicros, timeToFirstFrameMicros
|
|
114
|
+
```
|
|
115
|
+
```dart
|
|
116
|
+
import 'dart:developer';
|
|
117
|
+
Timeline.startSync('DI Setup');
|
|
118
|
+
setupDependencyInjection();
|
|
119
|
+
Timeline.finishSync();
|
|
120
|
+
```
|
|
121
|
+
|
|
122
|
+
### React Native
|
|
123
|
+
```javascript
|
|
124
|
+
performance.mark('app_start');
|
|
125
|
+
// ... init code ...
|
|
126
|
+
performance.mark('first_render');
|
|
127
|
+
performance.measure('startup', 'app_start', 'first_render');
|
|
128
|
+
```
|
|
129
|
+
**Also use:** Flipper Performance plugin, Hermes sampling profiler.
|
|
130
|
+
|
|
131
|
+
### CI Automation Strategy
|
|
132
|
+
```
|
|
133
|
+
1. Run startup benchmark on every PR (Macrobenchmark / XCTest)
|
|
134
|
+
2. Track p50, p90, p99 across device tiers
|
|
135
|
+
3. CI thresholds: p50 cold > 2s = warning, > 3s = failure, p90 cold > 5s = failure
|
|
136
|
+
4. Store in time-series DB, dashboard with trend lines and alerts
|
|
137
|
+
```
|
|
138
|
+
|
|
139
|
+
---
|
|
140
|
+
|
|
141
|
+
## Common Bottlenecks (Ranked by Impact)
|
|
142
|
+
|
|
143
|
+
**1. Too Many Initializations at Launch** (200–2000ms)
|
|
144
|
+
Detect: Profile Application.onCreate / didFinishLaunching for synchronous init calls.
|
|
145
|
+
Fix: Defer non-critical SDKs. Only init what the first screen needs.
|
|
146
|
+
|
|
147
|
+
**2. Synchronous Network Calls at Startup** (500–5000ms+)
|
|
148
|
+
Detect: Main thread blocked on network I/O in trace. Turo's primary bottleneck.
|
|
149
|
+
Fix: Async requests, show cached/skeleton content.
|
|
150
|
+
|
|
151
|
+
**3. Heavy Third-Party SDK Init** (100–800ms per SDK)
|
|
152
|
+
Detect: DYLD_PRINT_STATISTICS (iOS), ContentProvider init time (Android). Firebase, analytics, crash SDKs.
|
|
153
|
+
Fix: Defer analytics/crash init to after first frame. Remove unused SDKs.
|
|
154
|
+
|
|
155
|
+
**4. Dynamic Library Loading (iOS)** (10–50ms per framework)
|
|
156
|
+
Detect: DYLD_PRINT_STATISTICS → dylib loading. 100+ dynamic frameworks = 500ms+.
|
|
157
|
+
Fix: Convert to static libraries. Swift 6 `@StaticDependency` reduces dyld loading by **35%**.
|
|
158
|
+
|
|
159
|
+
**5. Dex/Class Loading (Android)** (200–1500ms)
|
|
160
|
+
Detect: Perfetto classloading time. Multidex on older Android especially affected.
|
|
161
|
+
Fix: Baseline Profiles (up to **30%** improvement), R8 full mode, App Startup library.
|
|
162
|
+
|
|
163
|
+
**6. Large Splash Screen Assets** (100–500ms)
|
|
164
|
+
Fix: Use vector drawables/PDF assets. System splash API (Android 12+).
|
|
165
|
+
|
|
166
|
+
**7. Main Thread Blocking I/O** (50–2000ms)
|
|
167
|
+
Fix: Background threads for all disk I/O. Async SharedPreferences/UserDefaults.
|
|
168
|
+
|
|
169
|
+
**8. Excessive DI Setup** (50–500ms)
|
|
170
|
+
Detect: Profile DI container init. Koin (runtime) > Dagger/Hilt (compile-time) overhead.
|
|
171
|
+
Fix: Compile-time DI for large graphs. Lazy-inject non-critical deps.
|
|
172
|
+
|
|
173
|
+
**9. Database Migrations on First Run** (100–3000ms)
|
|
174
|
+
Fix: Background thread migrations. Progress indicator for large migrations.
|
|
175
|
+
|
|
176
|
+
**10. Custom Font Loading** (50–300ms per family)
|
|
177
|
+
Fix: System fonts where possible. Preloaded fonts in manifest/Info.plist.
|
|
178
|
+
|
|
179
|
+
**11. ContentProvider Auto-Init (Android)** (50–200ms each)
|
|
180
|
+
Fix: App Startup library to replace ContentProvider-based initialization.
|
|
181
|
+
|
|
182
|
+
**12. Swift Protocol Conformance Checks (iOS)**
|
|
183
|
+
DoorDash found significant overhead. Fix: Reduce protocol abstractions in hot launch paths (**29% faster**).
|
|
184
|
+
|
|
185
|
+
**13. Unused Feature Module Loading** (100–500ms)
|
|
186
|
+
Fix: Dynamic feature modules loaded on-demand, not at startup.
|
|
187
|
+
|
|
188
|
+
**14. Image Preloading** (50–400ms)
|
|
189
|
+
Fix: Only load first-frame images. Async loading for rest.
|
|
190
|
+
|
|
191
|
+
**15. Analytics Event Queue Flush** (50–300ms)
|
|
192
|
+
Fix: Defer flush to after first frame. Background batch dispatch.
|
|
193
|
+
|
|
194
|
+
---
|
|
195
|
+
|
|
196
|
+
## Optimization Patterns
|
|
197
|
+
|
|
198
|
+
### 1. Lazy Initialization (Android)
|
|
199
|
+
```kotlin
|
|
200
|
+
// BEFORE: ~830ms blocking in onCreate
|
|
201
|
+
class MyApplication : Application() {
|
|
202
|
+
override fun onCreate() {
|
|
203
|
+
super.onCreate()
|
|
204
|
+
FirebaseApp.initializeApp(this) // ~150ms
|
|
205
|
+
CrashReporting.init(this) // ~100ms
|
|
206
|
+
AnalyticsSDK.init(this, config) // ~200ms
|
|
207
|
+
ImageLoader.init(this) // ~80ms
|
|
208
|
+
DatabaseManager.init(this) // ~120ms
|
|
209
|
+
FeatureFlagService.init(this) // ~180ms
|
|
210
|
+
}
|
|
211
|
+
}
|
|
212
|
+
|
|
213
|
+
// AFTER: ~80ms blocking, rest deferred
|
|
214
|
+
class MyApplication : Application() {
|
|
215
|
+
override fun onCreate() {
|
|
216
|
+
super.onCreate()
|
|
217
|
+
ImageLoader.init(this) // Only what first frame needs
|
|
218
|
+
}
|
|
219
|
+
}
|
|
220
|
+
object ServiceLocator {
|
|
221
|
+
val analytics by lazy { AnalyticsSDK.init(appContext, config) }
|
|
222
|
+
val crashReporting by lazy { CrashReporting.init(appContext) }
|
|
223
|
+
}
|
|
224
|
+
class MainActivity : AppCompatActivity() {
|
|
225
|
+
override fun onResume() {
|
|
226
|
+
super.onResume()
|
|
227
|
+
window.decorView.post { // After first frame
|
|
228
|
+
lifecycleScope.launch(Dispatchers.Default) {
|
|
229
|
+
FirebaseApp.initializeApp(applicationContext)
|
|
230
|
+
ServiceLocator.crashReporting
|
|
231
|
+
ServiceLocator.analytics
|
|
232
|
+
}
|
|
233
|
+
}
|
|
234
|
+
}
|
|
235
|
+
}
|
|
236
|
+
```
|
|
237
|
+
|
|
238
|
+
### 2. Parallel Initialization (iOS)
|
|
239
|
+
```swift
|
|
240
|
+
// BEFORE: ~600ms sequential
|
|
241
|
+
func application(_ app: UIApplication, didFinishLaunchingWithOptions opts: ...) -> Bool {
|
|
242
|
+
FirebaseApp.configure() // ~180ms
|
|
243
|
+
Crashlytics.initialize() // ~120ms
|
|
244
|
+
Analytics.configure(with: config) // ~150ms
|
|
245
|
+
NetworkManager.shared.configure() // ~90ms
|
|
246
|
+
ThemeManager.apply() // ~60ms
|
|
247
|
+
return true
|
|
248
|
+
}
|
|
249
|
+
|
|
250
|
+
// AFTER: ~60ms blocking, rest parallel
|
|
251
|
+
func application(_ app: UIApplication, didFinishLaunchingWithOptions opts: ...) -> Bool {
|
|
252
|
+
ThemeManager.apply() // Only critical-path
|
|
253
|
+
let bgQueue = DispatchQueue.global(qos: .utility)
|
|
254
|
+
bgQueue.async { FirebaseApp.configure() }
|
|
255
|
+
bgQueue.async { Crashlytics.initialize(); Analytics.configure(with: config) }
|
|
256
|
+
bgQueue.async { NetworkManager.shared.configure() }
|
|
257
|
+
return true
|
|
258
|
+
}
|
|
259
|
+
```
|
|
260
|
+
|
|
261
|
+
### 3. Baseline Profile Generation (Android)
|
|
262
|
+
```kotlin
|
|
263
|
+
@Test
|
|
264
|
+
fun generateStartupProfile() {
|
|
265
|
+
rule.collect(packageName = "com.example.app", maxIterations = 15) {
|
|
266
|
+
pressHome()
|
|
267
|
+
startActivityAndWait()
|
|
268
|
+
device.findObject(By.res("home_feed")).wait(Until.hasObject(By.res("feed_item")), 5_000)
|
|
269
|
+
}
|
|
270
|
+
}
|
|
271
|
+
// Place in src/main/baseline-prof.txt. Google Play AOT-compiles on install.
|
|
272
|
+
// Expected: 15–30% faster cold start.
|
|
273
|
+
```
|
|
274
|
+
|
|
275
|
+
### 4. Flutter Deferred Loading
|
|
276
|
+
```dart
|
|
277
|
+
// BEFORE: blocks first frame
|
|
278
|
+
void main() async {
|
|
279
|
+
WidgetsFlutterBinding.ensureInitialized();
|
|
280
|
+
await Firebase.initializeApp(); // ~200ms
|
|
281
|
+
await Hive.initFlutter(); // ~150ms
|
|
282
|
+
await loadRemoteConfig(); // ~500ms (network!)
|
|
283
|
+
runApp(const MyApp());
|
|
284
|
+
}
|
|
285
|
+
|
|
286
|
+
// AFTER: near-instant first frame
|
|
287
|
+
void main() {
|
|
288
|
+
WidgetsFlutterBinding.ensureInitialized();
|
|
289
|
+
runApp(const MyApp());
|
|
290
|
+
}
|
|
291
|
+
class MyApp extends StatelessWidget {
|
|
292
|
+
@override Widget build(BuildContext context) {
|
|
293
|
+
return MaterialApp(home: FutureBuilder(
|
|
294
|
+
future: Future.wait([Firebase.initializeApp(), Hive.initFlutter()]),
|
|
295
|
+
builder: (ctx, snap) => snap.connectionState == ConnectionState.done
|
|
296
|
+
? const HomeScreen() : const ShimmerPlaceholder(),
|
|
297
|
+
));
|
|
298
|
+
}
|
|
299
|
+
}
|
|
300
|
+
```
|
|
301
|
+
|
|
302
|
+
### 5. React Native Hermes + Inline Requires
|
|
303
|
+
```javascript
|
|
304
|
+
// metro.config.js
|
|
305
|
+
module.exports = {
|
|
306
|
+
transformer: { getTransformOptions: async () => ({
|
|
307
|
+
transform: { inlineRequires: true },
|
|
308
|
+
})},
|
|
309
|
+
};
|
|
310
|
+
|
|
311
|
+
// App.js — defer non-critical init
|
|
312
|
+
useEffect(() => {
|
|
313
|
+
InteractionManager.runAfterInteractions(() => {
|
|
314
|
+
const { initAnalytics } = require('./services/analytics');
|
|
315
|
+
const { initCrashReporting } = require('./services/crashes');
|
|
316
|
+
initAnalytics();
|
|
317
|
+
initCrashReporting();
|
|
318
|
+
});
|
|
319
|
+
}, []);
|
|
320
|
+
// Hermes + inlineRequires: cold TTI 3.6s → 2.1s (42% faster)
|
|
321
|
+
```
|
|
322
|
+
|
|
323
|
+
### 6. iOS Static Linking Migration
|
|
324
|
+
```ruby
|
|
325
|
+
# Podfile — convert dynamic to static
|
|
326
|
+
platform :ios, '16.0'
|
|
327
|
+
use_frameworks! :linkage => :static
|
|
328
|
+
|
|
329
|
+
# Result: dylib loading 850ms → 120ms (67% reduction)
|
|
330
|
+
# Apps with 50+ frameworks save 200–500ms pre-main
|
|
331
|
+
```
|
|
332
|
+
|
|
333
|
+
---
|
|
334
|
+
|
|
335
|
+
## Anti-Patterns
|
|
336
|
+
|
|
337
|
+
1. **"Initialize Everything at Startup Just in Case"** — Loading all SDKs synchronously adds 500–2000ms for services the user may never need that session. Categorize as critical/deferred/lazy.
|
|
338
|
+
|
|
339
|
+
2. **Synchronous Initialization Chains** — SDK A→B→C all sequential when some branches could parallelize. Map the dependency graph, parallelize independent branches.
|
|
340
|
+
|
|
341
|
+
3. **Network Calls Before Showing UI** — Adds full round-trip (200–5000ms). Cache last config locally, show cached content, update async.
|
|
342
|
+
|
|
343
|
+
4. **Heavy Custom Splash Animations** — Fixed delays that cannot be optimized. Turo saved time by removing their 1s splash. Use system splash, dismiss when content ready.
|
|
344
|
+
|
|
345
|
+
5. **Eager Feature Module Loading** — 100–500ms of class loading for unused screens. Use dynamic feature modules, init on navigation.
|
|
346
|
+
|
|
347
|
+
6. **Blocking on Remote Config** — `fetchAndActivate()` synchronous = 200–2000ms network delay. Use cached values, fetch in background, apply next launch.
|
|
348
|
+
|
|
349
|
+
7. **Unoptimized R8/ProGuard** — Broad keep rules = larger DEX, more classes to load. Use R8 full mode, precise keep rules.
|
|
350
|
+
|
|
351
|
+
---
|
|
352
|
+
|
|
353
|
+
## Architecture-Level Decisions
|
|
354
|
+
|
|
355
|
+
### Modular Initialization Pipeline
|
|
356
|
+
```
|
|
357
|
+
Phase 1: CRITICAL (main thread, sync, < 200ms)
|
|
358
|
+
└── Core DI (minimal), theme, first-screen ViewModel + cached data
|
|
359
|
+
|
|
360
|
+
Phase 2: FIRST FRAME RENDERED — user sees content/skeleton
|
|
361
|
+
|
|
362
|
+
Phase 3: DEFERRED (background, < 2s after first frame)
|
|
363
|
+
└── Analytics, crash reporting, push registration, network refresh
|
|
364
|
+
|
|
365
|
+
Phase 4: LAZY (on-demand, < 500ms when triggered)
|
|
366
|
+
└── Social login, payments, camera, feature-specific libs
|
|
367
|
+
```
|
|
368
|
+
|
|
369
|
+
### DI Framework Impact
|
|
370
|
+
|
|
371
|
+
| Framework | Startup Overhead | Best For |
|
|
372
|
+
|-----------|-----------------|----------|
|
|
373
|
+
| **Dagger/Hilt** | Near-zero (compile-time) | Large apps, perf-critical |
|
|
374
|
+
| **Koin** | 50–300ms (runtime) | Small-medium apps |
|
|
375
|
+
| **GetIt (Flutter)** | 10–100ms | Flutter apps |
|
|
376
|
+
| **Manual DI** | Zero | Simple apps, max control |
|
|
377
|
+
|
|
378
|
+
### Splash vs. Skeleton Screens
|
|
379
|
+
|
|
380
|
+
Skeleton screens feel **20–30% faster** than spinners (research on perceived wait times). Use system splash to cover cold start gap, transition to skeleton for content loading. Never add artificial delays.
|
|
381
|
+
|
|
382
|
+
---
|
|
383
|
+
|
|
384
|
+
## Decision Tree: "My App Is Slow to Start"
|
|
385
|
+
|
|
386
|
+
```
|
|
387
|
+
Cold start issue?
|
|
388
|
+
├── YES → Pre-main or post-main?
|
|
389
|
+
│ ├── PRE-MAIN (iOS)
|
|
390
|
+
│ │ ├── dylib loading > 200ms → static linking
|
|
391
|
+
│ │ ├── initializer time > 500ms → audit +load, defer to didFinishLaunching
|
|
392
|
+
│ │ └── ObjC setup > 100ms → reduce ObjC classes, use Swift structs
|
|
393
|
+
│ └── POST-MAIN
|
|
394
|
+
│ ├── SDKs init synchronously → defer to after first frame
|
|
395
|
+
│ ├── Network blocking main thread → async + cached/skeleton
|
|
396
|
+
│ ├── DI setup > 200ms → compile-time DI, lazy inject
|
|
397
|
+
│ └── Complex first frame → simplify, skeleton, defer layouts
|
|
398
|
+
├── WARM start → optimize onCreateView/viewDidLoad, reduce saved state size
|
|
399
|
+
└── HOT start → remove non-UI work from onResume/viewWillAppear
|
|
400
|
+
```
|
|
401
|
+
|
|
402
|
+
---
|
|
403
|
+
|
|
404
|
+
## Testing & Regression Prevention
|
|
405
|
+
|
|
406
|
+
**CI Pipeline:**
|
|
407
|
+
```yaml
|
|
408
|
+
# Android: Macrobenchmark in GitHub Actions
|
|
409
|
+
- uses: reactivecircus/android-emulator-runner@v2
|
|
410
|
+
with:
|
|
411
|
+
script: ./gradlew :benchmark:connectedAndroidTest
|
|
412
|
+
- run: |
|
|
413
|
+
COLD=$(jq '.benchmarks[0].metrics.timeToInitialDisplayMs.median' results.json)
|
|
414
|
+
[ $(echo "$COLD > 2000" | bc) -eq 1 ] && exit 1
|
|
415
|
+
|
|
416
|
+
# iOS: XCTest performance
|
|
417
|
+
- run: xcodebuild test -scheme PerformanceTests -destination "platform=iOS Simulator,name=iPhone 15"
|
|
418
|
+
```
|
|
419
|
+
|
|
420
|
+
**Regression Strategy:**
|
|
421
|
+
1. Baseline on known-good build (p50, p90, p99)
|
|
422
|
+
2. Per-PR checks: flag > 10% regression as warning, > 20% as failure
|
|
423
|
+
3. Production: Android Vitals + MetricKit + custom telemetry
|
|
424
|
+
4. Quarterly review — startup time creeps up with new features
|
|
425
|
+
|
|
426
|
+
**Device Farm:** Firebase Test Lab / AWS Device Farm. Always include one low-end device (2GB RAM). Never rely only on emulator benchmarks.
|
|
427
|
+
|
|
428
|
+
---
|
|
429
|
+
|
|
430
|
+
## Quick Reference
|
|
431
|
+
|
|
432
|
+
### Optimization Impact Summary
|
|
433
|
+
|
|
434
|
+
| Technique | Improvement | Effort | Platform |
|
|
435
|
+
|-----------|------------|--------|----------|
|
|
436
|
+
| Defer SDK init | 200–800ms | Low | All |
|
|
437
|
+
| Baseline Profiles | 15–30% cold start | Medium | Android |
|
|
438
|
+
| Static linking | 200–500ms pre-main | Medium | iOS |
|
|
439
|
+
| Hermes engine | 30–50% cold start | Low | React Native |
|
|
440
|
+
| Inline requires | 10–20% cold start | Low | React Native |
|
|
441
|
+
| Parallel init | 30–60% of init time | Medium | All |
|
|
442
|
+
| App Startup library | 100–300ms | Low | Android |
|
|
443
|
+
| Remove splash delay | 500–2000ms | Low | All |
|
|
444
|
+
| Compile-time DI | 50–300ms vs runtime | High | Android |
|
|
445
|
+
| R8 full mode | 10–20% cold start | Low | Android |
|
|
446
|
+
| Isolate-based init | 100–500ms off main | Medium | Flutter |
|
|
447
|
+
| Skeleton screens | 20–30% perceived | Medium | All |
|
|
448
|
+
|
|
449
|
+
### Measurement Tools
|
|
450
|
+
|
|
451
|
+
| Tool | Platform | Use Case |
|
|
452
|
+
|------|----------|----------|
|
|
453
|
+
| `adb shell am start -W` | Android | Quick local measurement |
|
|
454
|
+
| Macrobenchmark | Android | CI regression testing |
|
|
455
|
+
| Android Vitals | Android | Production monitoring |
|
|
456
|
+
| Perfetto / Systrace | Android | Deep investigation |
|
|
457
|
+
| DYLD_PRINT_STATISTICS | iOS | Pre-main breakdown |
|
|
458
|
+
| Instruments App Launch | iOS | Deep investigation |
|
|
459
|
+
| MetricKit | iOS | Production monitoring |
|
|
460
|
+
| XCTApplicationLaunchMetric | iOS | CI regression testing |
|
|
461
|
+
| `flutter run --trace-startup` | Flutter | Quick measurement |
|
|
462
|
+
| Flipper Performance | React Native | Thread analysis |
|
|
463
|
+
|
|
464
|
+
### Startup Audit Checklist
|
|
465
|
+
```
|
|
466
|
+
[ ] Profile cold start on a mid-range device (not your dev phone)
|
|
467
|
+
[ ] Measure pre-main time (iOS) or process init time (Android)
|
|
468
|
+
[ ] List all initializations in Application.onCreate / didFinishLaunching
|
|
469
|
+
[ ] Categorize each as: Critical / Deferred / Lazy
|
|
470
|
+
[ ] Defer non-critical items to post-first-frame background thread
|
|
471
|
+
[ ] Audit third-party SDKs for ContentProvider auto-init (Android)
|
|
472
|
+
[ ] Check dynamic framework count (iOS) — consider static linking
|
|
473
|
+
[ ] Generate and ship Baseline Profiles (Android)
|
|
474
|
+
[ ] Enable Hermes engine (React Native)
|
|
475
|
+
[ ] Set up automated startup benchmark in CI
|
|
476
|
+
[ ] Configure production monitoring (Android Vitals / MetricKit)
|
|
477
|
+
[ ] Set performance budget and regression alerts
|
|
478
|
+
[ ] Test on lowest-tier target device
|
|
479
|
+
[ ] Review startup time quarterly
|
|
480
|
+
```
|
|
481
|
+
|
|
482
|
+
---
|
|
483
|
+
|
|
484
|
+
*Researched: 2026-03-08*
|
|
485
|
+
|
|
486
|
+
*Sources:*
|
|
487
|
+
- [App startup time — Android Developers](https://developer.android.com/topic/performance/vitals/launch-time)
|
|
488
|
+
- [Turo: 77% Android startup reduction](https://medium.com/turo-engineering/how-we-reduced-our-android-startup-time-by-77-650cc113c3dc)
|
|
489
|
+
- [DoorDash: 60% iOS launch time reduction](https://careersatdoordash.com/blog/how-we-reduced-our-ios-app-launch-time-by-60/)
|
|
490
|
+
- [Zomato: 20% improvement with Baseline Profiles](https://blog.zomato.com/how-we-improved-our-android-app-startup-time-by-over-20-with-baseline-profile)
|
|
491
|
+
- [Google: 53% abandon sites > 3s](https://www.thinkwithgoogle.com/marketing-strategies/app-and-mobile/page-load-time-statistics/)
|
|
492
|
+
- [Google: Page load bounce rate statistics](https://www.marketingdive.com/news/google-53-of-mobile-users-abandon-sites-that-take-over-3-seconds-to-load/426070/)
|
|
493
|
+
- [Reducing your app's launch time — Apple Developer](https://developer.apple.com/documentation/xcode/reducing-your-app-s-launch-time)
|
|
494
|
+
- [Cut iOS Launch Time by 50% in 2025 — Static Linking, Swift 6](https://medium.com/@vrxrszsb/cut-ios-app-launch-time-by-50-in-2025-advanced-strategies-with-xcode-16-static-linking-and-bfb8997af3d0)
|
|
495
|
+
- [iOS App Launch time analysis — Globant](https://medium.com/globant/ios-app-launch-time-analysis-and-optimization-a219ee81447c)
|
|
496
|
+
- [Hermes in 2025 — React Native](https://medium.com/@devonmobile/hermes-in-2025-the-invisible-engine-powering-a-faster-react-native-955711815acd)
|
|
497
|
+
- [Hermes V1 in React Native 0.82](https://medium.com/react-native-journal/hermes-v1-in-react-native-0-82-unlocking-faster-startup-times-bfd0cf1b107c)
|
|
498
|
+
- [Macrobenchmark — Android Developers](https://developer.android.com/topic/performance/benchmarking/macrobenchmark-overview)
|
|
499
|
+
- [Baseline Profiles — Android Developers](https://developer.android.com/topic/performance/baselineprofiles/overview)
|
|
500
|
+
- [XCTApplicationLaunchMetric — Apple Developer](https://developer.apple.com/documentation/xctest/xctapplicationlaunchmetric)
|
|
501
|
+
- [MetricKit launch time — SwiftLee](https://www.avanderlee.com/swift/metrickit-launch-time/)
|
|
502
|
+
- [Skeleton screen design — LogRocket](https://blog.logrocket.com/ux-design/skeleton-loading-screen-design/)
|
|
503
|
+
- [Benchmarking Koin vs Dagger Hilt 2024 — droidcon](https://www.droidcon.com/2024/12/03/benchmarking-koin-vs-dagger-hilt-in-modern-android-development-2024/)
|
|
504
|
+
- [Flutter Cold Start Optimization](https://writeflow.medium.com/flutter-cold-start-optimization-make-your-app-launch-2-faster-32d762af49c9)
|
|
505
|
+
- [Emerge Tools — Android Startup Performance](https://docs.emergetools.com/docs/android-startup-performance-testing-1)
|