@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,222 @@
|
|
|
1
|
+
# Host Exports
|
|
2
|
+
|
|
3
|
+
Wazir's export system compiles canonical role, workflow, and hook sources into
|
|
4
|
+
ready-to-deploy host packages for **Claude, Codex, Gemini, and Cursor**. Each host
|
|
5
|
+
gets a package shaped for its native integration model — no manual copying, no hand-
|
|
6
|
+
editing, no drift.
|
|
7
|
+
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
## What Host Exports Are
|
|
11
|
+
|
|
12
|
+
Every AI host has its own convention for loading agent instructions:
|
|
13
|
+
|
|
14
|
+
- Claude reads `CLAUDE.md`, `.claude/agents/`, and `.claude/commands/`
|
|
15
|
+
- Codex reads `AGENTS.md`
|
|
16
|
+
- Gemini reads `GEMINI.md`
|
|
17
|
+
- Cursor reads `.cursor/rules/` and `.cursor/hooks.json`
|
|
18
|
+
|
|
19
|
+
The export system generates all of these from a single set of canonical sources.
|
|
20
|
+
The canonical sources are the ground truth. The exports are derived artifacts.
|
|
21
|
+
|
|
22
|
+
**You never edit files in `exports/hosts/*` by hand.** Run `wazir export build`
|
|
23
|
+
and the compiler overwrites them from the canonical sources.
|
|
24
|
+
|
|
25
|
+
---
|
|
26
|
+
|
|
27
|
+
## Supported Hosts
|
|
28
|
+
|
|
29
|
+
| Host | Output path | Key files |
|
|
30
|
+
|---|---|---|
|
|
31
|
+
| Claude | `exports/hosts/claude/` | `CLAUDE.md`, `.claude/agents/*`, `.claude/commands/*`, `.claude/settings.json` |
|
|
32
|
+
| Codex | `exports/hosts/codex/` | `AGENTS.md` |
|
|
33
|
+
| Gemini | `exports/hosts/gemini/` | `GEMINI.md` |
|
|
34
|
+
| Cursor | `exports/hosts/cursor/` | `.cursor/rules/wazir-core.mdc`, `.cursor/hooks.json` |
|
|
35
|
+
|
|
36
|
+
---
|
|
37
|
+
|
|
38
|
+
## How Packages Are Generated
|
|
39
|
+
|
|
40
|
+
```
|
|
41
|
+
wazir export build
|
|
42
|
+
│
|
|
43
|
+
▼
|
|
44
|
+
1. Validate wazir.manifest.yaml
|
|
45
|
+
│
|
|
46
|
+
▼
|
|
47
|
+
2. Validate canonical hook definitions
|
|
48
|
+
│
|
|
49
|
+
▼
|
|
50
|
+
3. Collect canonical sources
|
|
51
|
+
┌────────────────────────────────┐
|
|
52
|
+
│ wazir.manifest.yaml │
|
|
53
|
+
│ roles/*.md (9 role files) │
|
|
54
|
+
│ workflows/*.md (13 workflows) │
|
|
55
|
+
│ hooks/definitions/*.yaml │
|
|
56
|
+
└────────────────────────────────┘
|
|
57
|
+
│
|
|
58
|
+
▼
|
|
59
|
+
4. SHA-256 hash each source file
|
|
60
|
+
│
|
|
61
|
+
▼
|
|
62
|
+
5. For each host in export_targets:
|
|
63
|
+
├── Render host-specific package files
|
|
64
|
+
├── Write host-package.json (sources + file list)
|
|
65
|
+
└── Write export.manifest.json (source hashes)
|
|
66
|
+
│
|
|
67
|
+
▼
|
|
68
|
+
exports/hosts/<host>/
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
The compiler (`tooling/src/export/compiler.js`) does not template files — it reads the
|
|
72
|
+
canonical Markdown directly and writes it into the host-appropriate directory structure.
|
|
73
|
+
This means roles and workflows appear verbatim in each host package.
|
|
74
|
+
|
|
75
|
+
---
|
|
76
|
+
|
|
77
|
+
## What Is Included in Each Package
|
|
78
|
+
|
|
79
|
+
### Claude
|
|
80
|
+
|
|
81
|
+
```
|
|
82
|
+
exports/hosts/claude/
|
|
83
|
+
CLAUDE.md Project bootstrap + canonical facts
|
|
84
|
+
.claude/agents/clarifier.md
|
|
85
|
+
.claude/agents/designer.md
|
|
86
|
+
.claude/agents/executor.md
|
|
87
|
+
.claude/agents/learner.md
|
|
88
|
+
.claude/agents/planner.md
|
|
89
|
+
.claude/agents/researcher.md
|
|
90
|
+
.claude/agents/reviewer.md
|
|
91
|
+
.claude/agents/specifier.md
|
|
92
|
+
.claude/agents/verifier.md
|
|
93
|
+
.claude/commands/clarify.md
|
|
94
|
+
.claude/commands/design.md
|
|
95
|
+
.claude/commands/design-review.md
|
|
96
|
+
.claude/commands/discover.md
|
|
97
|
+
.claude/commands/execute.md
|
|
98
|
+
.claude/commands/learn.md
|
|
99
|
+
.claude/commands/plan.md
|
|
100
|
+
.claude/commands/plan-review.md
|
|
101
|
+
.claude/commands/prepare-next.md
|
|
102
|
+
.claude/commands/review.md
|
|
103
|
+
.claude/commands/spec-challenge.md
|
|
104
|
+
.claude/commands/specify.md
|
|
105
|
+
.claude/commands/verify.md
|
|
106
|
+
.claude/settings.json
|
|
107
|
+
export.manifest.json Source hashes for drift detection
|
|
108
|
+
host-package.json Source list + generated file list
|
|
109
|
+
```
|
|
110
|
+
|
|
111
|
+
### Codex
|
|
112
|
+
|
|
113
|
+
```
|
|
114
|
+
exports/hosts/codex/
|
|
115
|
+
AGENTS.md Single combined instruction file
|
|
116
|
+
export.manifest.json
|
|
117
|
+
host-package.json
|
|
118
|
+
```
|
|
119
|
+
|
|
120
|
+
### Gemini
|
|
121
|
+
|
|
122
|
+
```
|
|
123
|
+
exports/hosts/gemini/
|
|
124
|
+
GEMINI.md Single combined instruction file
|
|
125
|
+
export.manifest.json
|
|
126
|
+
host-package.json
|
|
127
|
+
```
|
|
128
|
+
|
|
129
|
+
### Cursor
|
|
130
|
+
|
|
131
|
+
```
|
|
132
|
+
exports/hosts/cursor/
|
|
133
|
+
.cursor/rules/wazir-core.mdc
|
|
134
|
+
.cursor/hooks.json
|
|
135
|
+
export.manifest.json
|
|
136
|
+
host-package.json
|
|
137
|
+
```
|
|
138
|
+
|
|
139
|
+
---
|
|
140
|
+
|
|
141
|
+
## Drift Detection
|
|
142
|
+
|
|
143
|
+
Every export includes `export.manifest.json` — a map of canonical source paths to
|
|
144
|
+
their SHA-256 hashes at the time of the last build:
|
|
145
|
+
|
|
146
|
+
```json
|
|
147
|
+
{
|
|
148
|
+
"host": "claude",
|
|
149
|
+
"source_hashes": {
|
|
150
|
+
"wazir.manifest.yaml": "63d162af...",
|
|
151
|
+
"roles/clarifier.md": "5e59e8e7...",
|
|
152
|
+
"workflows/clarify.md": "93034dce...",
|
|
153
|
+
...
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
```
|
|
157
|
+
|
|
158
|
+
`wazir export --check` re-hashes the current canonical sources and compares them
|
|
159
|
+
against the stored hashes. If any source has changed since the last build, the check
|
|
160
|
+
fails non-zero — catching stale exports before they reach CI or production.
|
|
161
|
+
|
|
162
|
+
**Recommended CI workflow:**
|
|
163
|
+
|
|
164
|
+
```bash
|
|
165
|
+
# In CI, after any change to roles/, workflows/, or hooks/
|
|
166
|
+
wazir export --check
|
|
167
|
+
# Fails if exports are out of date — developer must run `export build` and commit
|
|
168
|
+
```
|
|
169
|
+
|
|
170
|
+
---
|
|
171
|
+
|
|
172
|
+
## Using Exports in Your Project
|
|
173
|
+
|
|
174
|
+
### Claude
|
|
175
|
+
|
|
176
|
+
Copy the contents of `exports/hosts/claude/` into your project root:
|
|
177
|
+
|
|
178
|
+
```bash
|
|
179
|
+
cp -r exports/hosts/claude/.claude /your/project/
|
|
180
|
+
cp exports/hosts/claude/CLAUDE.md /your/project/
|
|
181
|
+
```
|
|
182
|
+
|
|
183
|
+
Claude will automatically load `CLAUDE.md` as its system context and discover agents
|
|
184
|
+
and commands under `.claude/`.
|
|
185
|
+
|
|
186
|
+
### Codex
|
|
187
|
+
|
|
188
|
+
```bash
|
|
189
|
+
cp exports/hosts/codex/AGENTS.md /your/project/
|
|
190
|
+
```
|
|
191
|
+
|
|
192
|
+
### Gemini
|
|
193
|
+
|
|
194
|
+
```bash
|
|
195
|
+
cp exports/hosts/gemini/GEMINI.md /your/project/
|
|
196
|
+
```
|
|
197
|
+
|
|
198
|
+
### Cursor
|
|
199
|
+
|
|
200
|
+
```bash
|
|
201
|
+
cp -r exports/hosts/cursor/.cursor /your/project/
|
|
202
|
+
```
|
|
203
|
+
|
|
204
|
+
---
|
|
205
|
+
|
|
206
|
+
## Protected Paths
|
|
207
|
+
|
|
208
|
+
`exports/hosts/` is declared as a protected path in `wazir.manifest.yaml`. The
|
|
209
|
+
`protected_path_write_guard` hook prevents agents from writing directly to this
|
|
210
|
+
directory. All changes must flow through `wazir export build`.
|
|
211
|
+
|
|
212
|
+
---
|
|
213
|
+
|
|
214
|
+
## Commands
|
|
215
|
+
|
|
216
|
+
| Command | Description |
|
|
217
|
+
|---|---|
|
|
218
|
+
| `wazir export build` | Compile all host packages from canonical sources |
|
|
219
|
+
| `wazir export --check` | Verify packages are current; exits non-zero on drift |
|
|
220
|
+
|
|
221
|
+
Both commands resolve the project root automatically by walking upward to find
|
|
222
|
+
`wazir.manifest.yaml`.
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
# Hooks
|
|
2
|
+
|
|
3
|
+
> Canonical hook contracts that enforce protected paths, loop caps, capture routing, and session observability across every AI host.
|
|
4
|
+
|
|
5
|
+
Hooks are **product contracts first**. Each hook definition in `hooks/definitions/*.yaml` specifies the authoritative behavior. Host-specific native hooks or wrapper scripts must preserve that behavior — they cannot relax it.
|
|
6
|
+
|
|
7
|
+
## Hook Roster
|
|
8
|
+
|
|
9
|
+
| Hook ID | Type | Event | Failure Mode |
|
|
10
|
+
|---|---|---|---|
|
|
11
|
+
| [session_start](session-start.md) | Observability | Session begins | capture |
|
|
12
|
+
| [pre_tool_capture_route](pre-tool-capture-route.md) | Capture | Before large tool runs | warn |
|
|
13
|
+
| [post_tool_capture](post-tool-capture.md) | Capture | After every tool execution | capture |
|
|
14
|
+
| [pre_compact_summary](pre-compact-summary.md) | Observability | Before context compaction | warn |
|
|
15
|
+
| [stop_handoff_harvest](stop-handoff-harvest.md) | Observability | Session ends | capture |
|
|
16
|
+
| [protected_path_write_guard](protected-path-write-guard.md) | Guard | Write to protected path attempted | **block (exit 42)** |
|
|
17
|
+
| [loop_cap_guard](loop-cap-guard.md) | Guard | Phase iteration limit exceeded | **block (exit 43)** |
|
|
18
|
+
|
|
19
|
+
## Hook Categories
|
|
20
|
+
|
|
21
|
+
| Category | Members | Purpose |
|
|
22
|
+
|---|---|---|
|
|
23
|
+
| **Guards** | `protected_path_write_guard`, `loop_cap_guard` | Hard blocks — prevent unsafe actions |
|
|
24
|
+
| **Capture** | `pre_tool_capture_route`, `post_tool_capture` | Route and persist tool output outside model context |
|
|
25
|
+
| **Observability** | `session_start`, `pre_compact_summary`, `stop_handoff_harvest` | Session lifecycle events and handoff data |
|
|
26
|
+
|
|
27
|
+
## Guard Exit Codes
|
|
28
|
+
|
|
29
|
+
| Hook | Allowed | Blocked |
|
|
30
|
+
|---|---|---|
|
|
31
|
+
| `protected_path_write_guard` | `0` | `42` |
|
|
32
|
+
| `loop_cap_guard` | `0` | `43` |
|
|
33
|
+
|
|
34
|
+
## Source of Truth
|
|
35
|
+
|
|
36
|
+
```
|
|
37
|
+
hooks/definitions/*.yaml — canonical hook contracts
|
|
38
|
+
schemas/hook.schema.json — validation schema
|
|
39
|
+
wazir.manifest.yaml — required_hooks roster
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
Validate with:
|
|
43
|
+
```bash
|
|
44
|
+
node tooling/src/cli.js validate hooks
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
## Host Fallback Policy
|
|
48
|
+
|
|
49
|
+
Every hook definition specifies `host_fallback` guidance for Claude, Codex, Gemini, and Cursor. Fallbacks must preserve:
|
|
50
|
+
|
|
51
|
+
- The same trigger intent
|
|
52
|
+
- The same protected-path policy
|
|
53
|
+
- The same loop-cap policy
|
|
54
|
+
- The same observable outputs (or a documented equivalent)
|
|
55
|
+
|
|
56
|
+
| Hook ID | Claude | Codex | Gemini | Cursor |
|
|
57
|
+
|---|---|---|---|---|
|
|
58
|
+
| `session_start` | native_hook | wrapper | wrapper | native_or_wrapper |
|
|
59
|
+
| `pre_tool_capture_route` | native_hook | wrapper | wrapper | native_or_wrapper |
|
|
60
|
+
| `post_tool_capture` | native_hook | wrapper | wrapper | native_or_wrapper |
|
|
61
|
+
| `pre_compact_summary` | native_or_wrapper | wrapper | wrapper | wrapper |
|
|
62
|
+
| `stop_handoff_harvest` | native_hook | wrapper | wrapper | native_or_wrapper |
|
|
63
|
+
| `protected_path_write_guard` | native_or_wrapper | wrapper | wrapper | native_or_wrapper |
|
|
64
|
+
| `loop_cap_guard` | native_or_wrapper | wrapper | wrapper | native_or_wrapper |
|
|
65
|
+
|
|
66
|
+
## Protected Paths
|
|
67
|
+
|
|
68
|
+
The following paths are protected by `protected_path_write_guard`:
|
|
69
|
+
|
|
70
|
+
```
|
|
71
|
+
input/
|
|
72
|
+
roles/
|
|
73
|
+
workflows/
|
|
74
|
+
schemas/
|
|
75
|
+
exports/hosts/
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
Writes to these paths outside approved regeneration flows are blocked with exit code `42`.
|
|
79
|
+
|
|
80
|
+
## CLI Capture Commands
|
|
81
|
+
|
|
82
|
+
Capture hooks are backed by these CLI commands:
|
|
83
|
+
|
|
84
|
+
```bash
|
|
85
|
+
wazir capture init # initialize status.json for the run
|
|
86
|
+
wazir capture event # append an event to events.ndjson
|
|
87
|
+
wazir capture route # register a capture target path
|
|
88
|
+
wazir capture output # write captured tool output
|
|
89
|
+
wazir capture summary # produce summary.md before compaction
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
## Implementation Status
|
|
93
|
+
|
|
94
|
+
| Component | Status |
|
|
95
|
+
|---|---|
|
|
96
|
+
| Canonical hook definitions | Implemented |
|
|
97
|
+
| Schema validation | Implemented |
|
|
98
|
+
| CLI capture commands | Implemented |
|
|
99
|
+
| `protected-path-write-guard` script | Implemented |
|
|
100
|
+
| `loop-cap-guard` script | Implemented |
|
|
101
|
+
| `session-start` script | Implemented |
|
|
102
|
+
| `post-tool-lint` script | Implemented |
|
|
103
|
+
| Native execution helpers | Planned |
|
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
# loop_cap_guard
|
|
2
|
+
|
|
3
|
+
> `PreToolUse` · Guard · Stops additional loop iterations after the configured phase cap is reached. Hard stop — exit 43.
|
|
4
|
+
|
|
5
|
+
| Property | Value |
|
|
6
|
+
|---|---|
|
|
7
|
+
| **Hook ID** | `loop_cap_guard` |
|
|
8
|
+
| **Trigger event** | Before each phase iteration, after the cap threshold is reached |
|
|
9
|
+
| **Failure mode** | `block` — exits `43` on violation |
|
|
10
|
+
| **Exit codes** | `0` allow · `43` block |
|
|
11
|
+
| **Script** | `hooks/loop-cap-guard` |
|
|
12
|
+
|
|
13
|
+
## What It Guards
|
|
14
|
+
|
|
15
|
+
`loop_cap_guard` prevents runaway iteration. AI agents in a loop — debugging, verification retries, re-planning cycles — can iterate indefinitely when not constrained. This guard reads the current loop count from `status.json` and blocks the iteration if the configured cap for the current phase has been exceeded.
|
|
16
|
+
|
|
17
|
+
This is a hard block. Exit code `43` causes the host to reject the next iteration and surface the situation to the operator for a decision.
|
|
18
|
+
|
|
19
|
+
## Why Loop Caps Matter
|
|
20
|
+
|
|
21
|
+
| Without loop_cap_guard | With loop_cap_guard |
|
|
22
|
+
|---|---|
|
|
23
|
+
| Debug loop runs 20+ cycles, no resolution | Debug loop capped at 3 — unresolved after cap is reported |
|
|
24
|
+
| Verification retries forever on a flaky test | Verification retries capped — flakiness documented, escalated |
|
|
25
|
+
| Re-planning cycles consume entire context window | Re-planning capped — operator is asked to unblock |
|
|
26
|
+
| No way to distinguish "working hard" from "spinning" | Cap breach is an explicit signal: escalation needed |
|
|
27
|
+
|
|
28
|
+
## Trigger Event
|
|
29
|
+
|
|
30
|
+
Fires before each new iteration of a phase loop. Receives `run_id` and `phase` as inputs and reads the current iteration count from `status.json`.
|
|
31
|
+
|
|
32
|
+
## Logic
|
|
33
|
+
|
|
34
|
+
1. **Read payload** — `run_id` and `phase` from stdin.
|
|
35
|
+
2. **Read `status.json`** — load the current loop count for the phase.
|
|
36
|
+
3. **Load phase cap** — look up the configured cap for this phase.
|
|
37
|
+
4. **Evaluate** — is `current_count >= cap`?
|
|
38
|
+
5. **If under cap** — allow. Emit `{ "guard_decision": { "allowed": true } }`. Exit `0`.
|
|
39
|
+
6. **If at or over cap** — block. Emit `{ "guard_decision": { "allowed": false } }`. Exit `43`.
|
|
40
|
+
|
|
41
|
+
```javascript
|
|
42
|
+
// Decision shapes
|
|
43
|
+
{ "guard_decision": { "allowed": true } }
|
|
44
|
+
{ "guard_decision": { "allowed": false, "reason": "loop cap exceeded for phase: debug (cap: 3, current: 3)" } }
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
## Configuration
|
|
48
|
+
|
|
49
|
+
| Parameter | Required | Source | Description |
|
|
50
|
+
|---|---|---|---|
|
|
51
|
+
| `run_id` | Yes | Payload | Current session run identifier |
|
|
52
|
+
| `phase` | Yes | Payload | Phase name being iterated (e.g., `debug`, `verify`) |
|
|
53
|
+
| Phase caps | Yes | Status/config | Per-phase iteration limits |
|
|
54
|
+
|
|
55
|
+
## What Happens on Violation
|
|
56
|
+
|
|
57
|
+
When the loop cap is exceeded:
|
|
58
|
+
|
|
59
|
+
1. Guard emits `{ "guard_decision": { "allowed": false } }` to stdout.
|
|
60
|
+
2. Script exits `43`.
|
|
61
|
+
3. The host rejects the next iteration.
|
|
62
|
+
4. The agent receives a block notification.
|
|
63
|
+
5. The agent must surface the situation to the operator.
|
|
64
|
+
|
|
65
|
+
When the agent receives a `43` exit:
|
|
66
|
+
- Do not retry the blocked iteration.
|
|
67
|
+
- Do not invent certainty about what would have happened next.
|
|
68
|
+
- Record the block in the active execution artifact or handoff.
|
|
69
|
+
- Present the unresolved state and the evidence gathered so far to the operator.
|
|
70
|
+
- Ask the operator to decide: continue (with a raised cap), investigate differently, or defer.
|
|
71
|
+
|
|
72
|
+
> [!WARNING]
|
|
73
|
+
> A loop cap breach is not a failure of the agent — it is a signal that human judgment is needed. The correct response is escalation with evidence, not a workaround.
|
|
74
|
+
|
|
75
|
+
## Example
|
|
76
|
+
|
|
77
|
+
**Scenario:** Debugging loop reaches 3 cycles without resolving the issue.
|
|
78
|
+
|
|
79
|
+
```
|
|
80
|
+
Loop 1: wz:debugging cycle — hypothesis H1 tested, rejected
|
|
81
|
+
Loop 2: wz:debugging cycle — hypothesis H2 tested, rejected
|
|
82
|
+
Loop 3: wz:debugging cycle — hypothesis H3 tested, rejected
|
|
83
|
+
|
|
84
|
+
Loop 4 attempted:
|
|
85
|
+
loop_cap_guard fires:
|
|
86
|
+
Input: { "run_id": "run-42", "phase": "debug" }
|
|
87
|
+
Reads status.json: { "debug_loop_count": 3 }
|
|
88
|
+
Configured cap for "debug": 3
|
|
89
|
+
3 >= 3 → BLOCK
|
|
90
|
+
Output: { "guard_decision": { "allowed": false, "reason": "loop cap exceeded..." } }
|
|
91
|
+
Exit: 43
|
|
92
|
+
|
|
93
|
+
Host blocks Loop 4.
|
|
94
|
+
Agent responds:
|
|
95
|
+
"I've completed 3 debugging cycles without resolving the failure. The loop cap has been reached.
|
|
96
|
+
|
|
97
|
+
Evidence gathered:
|
|
98
|
+
- H1: Redis not connected (rejected — connection log shows it is connected)
|
|
99
|
+
- H2: Test setup race condition (rejected — added await, same failure)
|
|
100
|
+
- H3: Off-by-one in token count (rejected — manual inspection shows correct math)
|
|
101
|
+
|
|
102
|
+
Unresolved: I don't know why the middleware returns 200 instead of 429.
|
|
103
|
+
Next step options:
|
|
104
|
+
1. Add verbose debug logging and re-run with cap raised
|
|
105
|
+
2. Escalate to a human reviewer with the evidence above
|
|
106
|
+
3. Defer and open an issue"
|
|
107
|
+
```
|
|
108
|
+
|
|
109
|
+
## Testing
|
|
110
|
+
|
|
111
|
+
```bash
|
|
112
|
+
# Test the guard script
|
|
113
|
+
echo '{"run_id":"test-run","phase":"debug"}' | node hooks/loop-cap-guard
|
|
114
|
+
# With no status file: should allow (exit 0) — no loop count yet
|
|
115
|
+
|
|
116
|
+
# Test with a status file showing cap exceeded
|
|
117
|
+
# (requires setting up a status.json with loop count at cap)
|
|
118
|
+
|
|
119
|
+
# Validate hook definition
|
|
120
|
+
node tooling/src/cli.js validate hooks
|
|
121
|
+
|
|
122
|
+
# Doctor check (includes loop cap guard status)
|
|
123
|
+
node tooling/src/cli.js doctor --json
|
|
124
|
+
```
|
|
125
|
+
|
|
126
|
+
## Host Fallback
|
|
127
|
+
|
|
128
|
+
| Host | Fallback |
|
|
129
|
+
|---|---|
|
|
130
|
+
| Claude | `native_or_wrapper` |
|
|
131
|
+
| Codex | `wrapper_command` |
|
|
132
|
+
| Gemini | `wrapper_command` |
|
|
133
|
+
| Cursor | `native_or_wrapper` |
|
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
# post_tool_capture
|
|
2
|
+
|
|
3
|
+
> `PostToolUse` · Capture · Appends tool execution events and captures output metadata after every tool run.
|
|
4
|
+
|
|
5
|
+
| Property | Value |
|
|
6
|
+
|---|---|
|
|
7
|
+
| **Hook ID** | `post_tool_capture` |
|
|
8
|
+
| **Trigger event** | After every tool execution completes |
|
|
9
|
+
| **Failure mode** | `capture` — exits 0, never interrupts the agent |
|
|
10
|
+
| **Exit codes** | `0` always |
|
|
11
|
+
|
|
12
|
+
## What It Guards
|
|
13
|
+
|
|
14
|
+
`post_tool_capture` is the write half of the capture pipeline. After every tool executes, this hook appends a structured event record to `events.ndjson`, writes any captured output to the registered capture path, and updates `status.json` with the latest tool execution state.
|
|
15
|
+
|
|
16
|
+
This creates a complete, queryable record of every tool call in a session — the raw material for `pre_compact_summary` and `stop_handoff_harvest`.
|
|
17
|
+
|
|
18
|
+
## Trigger Event
|
|
19
|
+
|
|
20
|
+
Fires after every tool execution, receiving the command and exit code as inputs.
|
|
21
|
+
|
|
22
|
+
## Logic
|
|
23
|
+
|
|
24
|
+
1. **Receive execution result** — command string and exit code from the completed tool.
|
|
25
|
+
2. **Write captured output** — if a capture path was registered by `pre_tool_capture_route`, write the output to that file.
|
|
26
|
+
3. **Append event** — append a structured event to `events.ndjson` with timestamp, command, exit code, and capture path reference.
|
|
27
|
+
4. **Update status** — write latest tool execution state to `status.json`.
|
|
28
|
+
5. **Exit 0** — agent proceeds in all cases.
|
|
29
|
+
|
|
30
|
+
## Configuration
|
|
31
|
+
|
|
32
|
+
| Parameter | Required | Description |
|
|
33
|
+
|---|---|---|
|
|
34
|
+
| `command` | Yes | The command that just executed |
|
|
35
|
+
| `exit_code` | Yes | The exit code from the tool execution |
|
|
36
|
+
|
|
37
|
+
## What Happens on Violation
|
|
38
|
+
|
|
39
|
+
This hook does not block. On failure:
|
|
40
|
+
|
|
41
|
+
| Condition | Outcome |
|
|
42
|
+
|---|---|
|
|
43
|
+
| Write fails (disk full, permissions) | Error logged to stderr; agent proceeds |
|
|
44
|
+
| `status.json` not initialized | Event append attempted, may fail silently |
|
|
45
|
+
| No capture path registered | Output not written to file; event still recorded |
|
|
46
|
+
|
|
47
|
+
**Side effects produced:**
|
|
48
|
+
|
|
49
|
+
| Artifact | Location | Description |
|
|
50
|
+
|---|---|---|
|
|
51
|
+
| `events.ndjson` | `~/.wazir/projects/<slug>/events.ndjson` | Newline-delimited JSON event stream |
|
|
52
|
+
| Capture file | Registered capture path | Raw tool output (if capture was routed) |
|
|
53
|
+
| `status.json` | `~/.wazir/projects/<slug>/status.json` | Updated run status |
|
|
54
|
+
|
|
55
|
+
## Event Record Format
|
|
56
|
+
|
|
57
|
+
Each appended event has this shape:
|
|
58
|
+
|
|
59
|
+
```json
|
|
60
|
+
{
|
|
61
|
+
"ts": "2026-03-13T10:23:45.123Z",
|
|
62
|
+
"type": "tool_execution",
|
|
63
|
+
"command": "npm test",
|
|
64
|
+
"exit_code": 0,
|
|
65
|
+
"capture_path": "~/.wazir/projects/myapp/captures/run-42/npm-test-001.txt"
|
|
66
|
+
}
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
## Example
|
|
70
|
+
|
|
71
|
+
**Scenario:** Full session showing the capture pipeline in action.
|
|
72
|
+
|
|
73
|
+
```
|
|
74
|
+
1. session_start fires → status.json initialized
|
|
75
|
+
|
|
76
|
+
2. Agent runs: npm test
|
|
77
|
+
pre_tool_capture_route → capture_path registered: captures/run-42/npm-test-001.txt
|
|
78
|
+
Tool executes: npm test (exit 0, 127 tests passing)
|
|
79
|
+
post_tool_capture fires:
|
|
80
|
+
→ Writes test output to captures/run-42/npm-test-001.txt (47KB)
|
|
81
|
+
→ Appends to events.ndjson: { "command": "npm test", "exit_code": 0, ... }
|
|
82
|
+
→ Updates status.json: { "last_command": "npm test", "status": "ok" }
|
|
83
|
+
|
|
84
|
+
3. Agent runs: node --version
|
|
85
|
+
pre_tool_capture_route → no capture needed
|
|
86
|
+
Tool executes: node --version (exit 0)
|
|
87
|
+
post_tool_capture fires:
|
|
88
|
+
→ No capture file to write
|
|
89
|
+
→ Appends to events.ndjson: { "command": "node --version", "exit_code": 0 }
|
|
90
|
+
→ Updates status.json
|
|
91
|
+
|
|
92
|
+
4. pre_compact_summary fires → reads events.ndjson, produces summary.md
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
## Testing
|
|
96
|
+
|
|
97
|
+
```bash
|
|
98
|
+
# Initialize a test run
|
|
99
|
+
wazir capture init
|
|
100
|
+
|
|
101
|
+
# Simulate an event append
|
|
102
|
+
wazir capture event --command "npm test" --exit-code 0
|
|
103
|
+
|
|
104
|
+
# Check the events file
|
|
105
|
+
cat ~/.wazir/projects/wazir/events.ndjson
|
|
106
|
+
|
|
107
|
+
# Validate hook definition
|
|
108
|
+
node tooling/src/cli.js validate hooks
|
|
109
|
+
```
|
|
110
|
+
|
|
111
|
+
> [!TIP]
|
|
112
|
+
> The events.ndjson file is the authoritative session audit trail. `pre_compact_summary` and `stop_handoff_harvest` both read from it to produce their summaries.
|
|
113
|
+
|
|
114
|
+
## Host Fallback
|
|
115
|
+
|
|
116
|
+
| Host | Fallback |
|
|
117
|
+
|---|---|
|
|
118
|
+
| Claude | `native_hook` |
|
|
119
|
+
| Codex | `wrapper_command` |
|
|
120
|
+
| Gemini | `wrapper_command` |
|
|
121
|
+
| Cursor | `native_or_wrapper` |
|