@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,130 @@
|
|
|
1
|
+
# post-tool-lint
|
|
2
|
+
|
|
3
|
+
> `PostToolUse` · Guard · Validates JavaScript file syntax immediately after any write that produces a `.js` file.
|
|
4
|
+
|
|
5
|
+
| Property | Value |
|
|
6
|
+
|---|---|
|
|
7
|
+
| **Script** | `hooks/post-tool-lint` |
|
|
8
|
+
| **Trigger event** | After a tool write that produces a `.js` file |
|
|
9
|
+
| **Failure mode** | Syntax error blocks — exits `2` |
|
|
10
|
+
| **Exit codes** | `0` allow · `2` syntax error |
|
|
11
|
+
|
|
12
|
+
## What It Guards
|
|
13
|
+
|
|
14
|
+
`post-tool-lint` catches JavaScript syntax errors the moment a `.js` file is written — before the error can propagate to a test run or a runtime crash. It runs `node --check` on the written file immediately after each write, producing an actionable error message pinpointing exactly which file has the problem.
|
|
15
|
+
|
|
16
|
+
This is the fastest possible syntax feedback loop: error surfaces at write time, not at execution time.
|
|
17
|
+
|
|
18
|
+
## Trigger Event
|
|
19
|
+
|
|
20
|
+
Fires after any tool execution that writes a file. Checks whether the written file path ends in `.js`. If not, exits immediately with `0` (no-op). If yes, runs the syntax check.
|
|
21
|
+
|
|
22
|
+
## Logic
|
|
23
|
+
|
|
24
|
+
1. **Read payload** — attempt to parse tool input JSON from stdin; fall back to `CLAUDE_TOOL_FILE_PATH` env variable.
|
|
25
|
+
2. **Extract file path** — from `tool_input.file_path` in payload or the env variable.
|
|
26
|
+
3. **Check extension** — if not `.js`, exit `0` immediately (no-op for all other file types).
|
|
27
|
+
4. **Check file existence** — if the file doesn't exist on disk, exit `0` (write may have been blocked or virtual).
|
|
28
|
+
5. **Run `node --check`** — execute syntax-only validation (no execution, no side effects).
|
|
29
|
+
6. **If valid** — exit `0`.
|
|
30
|
+
7. **If syntax error** — write error details to stderr. Exit `2`.
|
|
31
|
+
|
|
32
|
+
## Configuration
|
|
33
|
+
|
|
34
|
+
| Parameter | Source | Description |
|
|
35
|
+
|---|---|---|
|
|
36
|
+
| File path | `tool_input.file_path` or `CLAUDE_TOOL_FILE_PATH` | The `.js` file to lint |
|
|
37
|
+
|
|
38
|
+
The hook is stateless — no configuration files or manifests needed.
|
|
39
|
+
|
|
40
|
+
## What Happens on Violation
|
|
41
|
+
|
|
42
|
+
When a `.js` file has a syntax error:
|
|
43
|
+
|
|
44
|
+
1. Script writes a detailed error to stderr:
|
|
45
|
+
```
|
|
46
|
+
Syntax error in src/middleware/rate-limit.js:
|
|
47
|
+
/path/to/src/middleware/rate-limit.js:23
|
|
48
|
+
const foo = {
|
|
49
|
+
^
|
|
50
|
+
SyntaxError: Unexpected token '}'
|
|
51
|
+
```
|
|
52
|
+
2. Script exits `2`.
|
|
53
|
+
3. The host surfaces the error to the agent.
|
|
54
|
+
4. The agent must fix the syntax error and rewrite the file.
|
|
55
|
+
|
|
56
|
+
> [!WARNING]
|
|
57
|
+
> Exit `2` from this hook means the last write produced invalid JavaScript. Do not continue to the next implementation step — fix the syntax error first. A broken `.js` file that passes to the next tool call is harder to debug than one caught immediately.
|
|
58
|
+
|
|
59
|
+
## Example
|
|
60
|
+
|
|
61
|
+
**Scenario:** Agent writes a middleware file with a missing closing brace.
|
|
62
|
+
|
|
63
|
+
```javascript
|
|
64
|
+
// Written: src/middleware/rate-limit.js (line 23 has missing brace)
|
|
65
|
+
export function rateLimit(options) {
|
|
66
|
+
return (req, res, next) => {
|
|
67
|
+
const tokens = getTokens(req.auth);
|
|
68
|
+
if (tokens <= 0) {
|
|
69
|
+
return res.status(429).json({ error: 'Rate limit exceeded' });
|
|
70
|
+
// Missing: closing brace for if block
|
|
71
|
+
next();
|
|
72
|
+
};
|
|
73
|
+
}
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
```
|
|
77
|
+
post-tool-lint fires:
|
|
78
|
+
File: src/middleware/rate-limit.js
|
|
79
|
+
Extension: .js — proceed with check
|
|
80
|
+
Runs: node --check src/middleware/rate-limit.js
|
|
81
|
+
|
|
82
|
+
Syntax error in src/middleware/rate-limit.js:
|
|
83
|
+
...
|
|
84
|
+
SyntaxError: Unexpected token '}'
|
|
85
|
+
at line 28
|
|
86
|
+
|
|
87
|
+
Exit: 2
|
|
88
|
+
|
|
89
|
+
Agent receives the error:
|
|
90
|
+
"Syntax error in the written file. Fixing the missing closing brace in the if block."
|
|
91
|
+
[Agent rewrites the file with correct syntax]
|
|
92
|
+
|
|
93
|
+
post-tool-lint fires again:
|
|
94
|
+
node --check → exits 0
|
|
95
|
+
Exit: 0 — file is valid
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
**Scenario:** Agent writes a markdown file — hook is a no-op.
|
|
99
|
+
|
|
100
|
+
```
|
|
101
|
+
post-tool-lint fires:
|
|
102
|
+
File: docs/plans/2026-03-13-design.md
|
|
103
|
+
Extension: .md — not .js, exit 0 immediately
|
|
104
|
+
```
|
|
105
|
+
|
|
106
|
+
## Testing
|
|
107
|
+
|
|
108
|
+
```bash
|
|
109
|
+
# Test with a valid JS file
|
|
110
|
+
echo 'const x = 1;' > /tmp/test-valid.js
|
|
111
|
+
CLAUDE_TOOL_FILE_PATH=/tmp/test-valid.js node hooks/post-tool-lint
|
|
112
|
+
echo $? # Expected: 0
|
|
113
|
+
|
|
114
|
+
# Test with an invalid JS file
|
|
115
|
+
echo 'const x = {' > /tmp/test-invalid.js
|
|
116
|
+
CLAUDE_TOOL_FILE_PATH=/tmp/test-invalid.js node hooks/post-tool-lint
|
|
117
|
+
echo $? # Expected: 2
|
|
118
|
+
|
|
119
|
+
# Test with a non-JS file (no-op)
|
|
120
|
+
CLAUDE_TOOL_FILE_PATH=/tmp/README.md node hooks/post-tool-lint
|
|
121
|
+
echo $? # Expected: 0
|
|
122
|
+
|
|
123
|
+
# Test with JSON payload
|
|
124
|
+
echo '{"tool_input":{"file_path":"/tmp/test-valid.js"}}' | node hooks/post-tool-lint
|
|
125
|
+
echo $? # Expected: 0
|
|
126
|
+
```
|
|
127
|
+
|
|
128
|
+
## Scope
|
|
129
|
+
|
|
130
|
+
`post-tool-lint` only checks `.js` files. TypeScript, JSON, YAML, and other file types are not checked by this hook. TypeScript syntax validation requires a separate tsc-based hook.
|
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
# pre_compact_summary
|
|
2
|
+
|
|
3
|
+
> `PreCompact` · Observability · Summarizes captured session state before context compaction or handoff so nothing is lost when the context window shrinks.
|
|
4
|
+
|
|
5
|
+
| Property | Value |
|
|
6
|
+
|---|---|
|
|
7
|
+
| **Hook ID** | `pre_compact_summary` |
|
|
8
|
+
| **Trigger event** | Before context compaction or session handoff |
|
|
9
|
+
| **Failure mode** | `warn` — exits 0, compaction proceeds even if summary fails |
|
|
10
|
+
| **Exit codes** | `0` always |
|
|
11
|
+
|
|
12
|
+
## What It Guards
|
|
13
|
+
|
|
14
|
+
Context compaction discards detail to make room. `pre_compact_summary` runs immediately before compaction and writes a structured summary of everything captured in the current run — tool executions, outcomes, findings — so that information survives the compaction in human-readable form.
|
|
15
|
+
|
|
16
|
+
Without this hook, compaction discards the raw `events.ndjson` detail and the next agent turn starts with no record of what was executed or what happened.
|
|
17
|
+
|
|
18
|
+
## Trigger Event
|
|
19
|
+
|
|
20
|
+
Fires immediately before the host performs context compaction or before a session handoff is initiated.
|
|
21
|
+
|
|
22
|
+
## Logic
|
|
23
|
+
|
|
24
|
+
1. **Receive run ID** — identify the current session's state directory.
|
|
25
|
+
2. **Read `events.ndjson`** — load the complete event stream for this run.
|
|
26
|
+
3. **Read any capture files** — load content from capture paths registered during the run.
|
|
27
|
+
4. **Produce summary** — synthesize events and captures into a structured `summary.md`.
|
|
28
|
+
5. **Write `summary.md`** — persist to the run state directory.
|
|
29
|
+
6. **Exit 0** — compaction proceeds regardless.
|
|
30
|
+
|
|
31
|
+
## Configuration
|
|
32
|
+
|
|
33
|
+
| Parameter | Required | Description |
|
|
34
|
+
|---|---|---|
|
|
35
|
+
| `run_id` | Yes | The current session run identifier |
|
|
36
|
+
|
|
37
|
+
## What Happens on Violation
|
|
38
|
+
|
|
39
|
+
This hook does not block. On failure:
|
|
40
|
+
|
|
41
|
+
| Condition | Outcome |
|
|
42
|
+
|---|---|
|
|
43
|
+
| `events.ndjson` not found | Warning emitted; summary written with "no events captured" note |
|
|
44
|
+
| Write fails | Warning to stderr; compaction proceeds without summary |
|
|
45
|
+
| Hook encounters an error | Warning emitted; compaction proceeds |
|
|
46
|
+
|
|
47
|
+
**Side effects produced:**
|
|
48
|
+
|
|
49
|
+
| Artifact | Location | Description |
|
|
50
|
+
|---|---|---|
|
|
51
|
+
| `summary.md` | `~/.wazir/projects/<slug>/summary.md` | Structured summary of session captured state |
|
|
52
|
+
|
|
53
|
+
## Summary Format
|
|
54
|
+
|
|
55
|
+
```markdown
|
|
56
|
+
# Session Summary — run-42 — 2026-03-13T10:45:00Z
|
|
57
|
+
|
|
58
|
+
## Tool Executions (7)
|
|
59
|
+
| Command | Exit | Capture |
|
|
60
|
+
|---------|------|---------|
|
|
61
|
+
| npm test | 0 | captures/npm-test-001.txt (47KB, 127 passing) |
|
|
62
|
+
| node tooling/src/cli.js validate hooks | 0 | — |
|
|
63
|
+
| git diff | 0 | captures/git-diff-001.txt (12KB) |
|
|
64
|
+
|
|
65
|
+
## Key Findings
|
|
66
|
+
- All 127 tests passing after rate-limit middleware implementation
|
|
67
|
+
- Hook validation: all 7 hooks validated
|
|
68
|
+
|
|
69
|
+
## Captures
|
|
70
|
+
- captures/npm-test-001.txt — full test run output (47KB)
|
|
71
|
+
- captures/git-diff-001.txt — diff of changes in session (12KB)
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
## Example
|
|
75
|
+
|
|
76
|
+
**Scenario:** Long implementation session is about to compact.
|
|
77
|
+
|
|
78
|
+
```
|
|
79
|
+
Agent has run 7 commands during the session. Context is 85% full.
|
|
80
|
+
Host triggers context compaction.
|
|
81
|
+
|
|
82
|
+
pre_compact_summary fires:
|
|
83
|
+
→ Reads events.ndjson (7 events)
|
|
84
|
+
→ Reads 3 capture files
|
|
85
|
+
→ Produces summary.md:
|
|
86
|
+
7 tool executions
|
|
87
|
+
2 capture files (60KB total)
|
|
88
|
+
All verifications passed
|
|
89
|
+
→ Writes to ~/.wazir/projects/myapp/summary.md
|
|
90
|
+
|
|
91
|
+
Context compacts. Raw event detail discarded.
|
|
92
|
+
Next agent turn reads summary.md — session continuity preserved.
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
## Testing
|
|
96
|
+
|
|
97
|
+
```bash
|
|
98
|
+
# Initialize and add test events
|
|
99
|
+
wazir capture init
|
|
100
|
+
wazir capture event --command "npm test" --exit-code 0
|
|
101
|
+
|
|
102
|
+
# Run the summary
|
|
103
|
+
wazir capture summary
|
|
104
|
+
|
|
105
|
+
# Check the output
|
|
106
|
+
cat ~/.wazir/projects/wazir/summary.md
|
|
107
|
+
|
|
108
|
+
# Validate hook definition
|
|
109
|
+
node tooling/src/cli.js validate hooks
|
|
110
|
+
```
|
|
111
|
+
|
|
112
|
+
> [!TIP]
|
|
113
|
+
> The `stop_handoff_harvest` hook also produces a `summary.md` — but at session end, not at compaction time. `pre_compact_summary` may fire multiple times in a long session; `stop_handoff_harvest` fires exactly once.
|
|
114
|
+
|
|
115
|
+
## Host Fallback
|
|
116
|
+
|
|
117
|
+
| Host | Fallback |
|
|
118
|
+
|---|---|
|
|
119
|
+
| Claude | `native_or_wrapper` |
|
|
120
|
+
| Codex | `wrapper_command` |
|
|
121
|
+
| Gemini | `wrapper_command` |
|
|
122
|
+
| Cursor | `wrapper_command` |
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
# pre_tool_capture_route
|
|
2
|
+
|
|
3
|
+
> `PreToolUse` · Capture · Routes large command output away from model context before the tool runs.
|
|
4
|
+
|
|
5
|
+
| Property | Value |
|
|
6
|
+
|---|---|
|
|
7
|
+
| **Hook ID** | `pre_tool_capture_route` |
|
|
8
|
+
| **Trigger event** | Before a tool execution that may produce large output |
|
|
9
|
+
| **Failure mode** | `warn` — exits 0, never blocks tool execution |
|
|
10
|
+
| **Exit codes** | `0` always |
|
|
11
|
+
|
|
12
|
+
## What It Guards
|
|
13
|
+
|
|
14
|
+
`pre_tool_capture_route` prevents large tool outputs from flooding the model's context window. When a command is about to run that could produce substantial output (test suites, build logs, audit results), this hook registers a capture target so the output is written to disk rather than injected directly into the model's active context.
|
|
15
|
+
|
|
16
|
+
Without this hook, large outputs can consume the context window, degrade response quality, and trigger expensive context compaction cycles.
|
|
17
|
+
|
|
18
|
+
## Trigger Event
|
|
19
|
+
|
|
20
|
+
Fires before each tool execution, evaluated against the command being run to determine whether capture routing is needed.
|
|
21
|
+
|
|
22
|
+
## Logic
|
|
23
|
+
|
|
24
|
+
1. **Receive command** — the incoming tool's command string is passed as input.
|
|
25
|
+
2. **Evaluate output size risk** — assess whether the command is likely to produce large output (e.g., full test suites, build systems, log tails, dependency scans).
|
|
26
|
+
3. **Register capture target** — if routing is warranted, create a capture path where output will be written (a file under the run's state directory).
|
|
27
|
+
4. **Emit capture path** — return the `capture_path` so the tool execution layer knows where to redirect output.
|
|
28
|
+
5. **Exit 0** — tool execution proceeds in all cases.
|
|
29
|
+
|
|
30
|
+
## Configuration
|
|
31
|
+
|
|
32
|
+
| Parameter | Required | Description |
|
|
33
|
+
|---|---|---|
|
|
34
|
+
| `command` | Yes | The command string about to be executed |
|
|
35
|
+
|
|
36
|
+
## What Happens on Violation
|
|
37
|
+
|
|
38
|
+
This hook does not block. On failure or when routing is not needed:
|
|
39
|
+
|
|
40
|
+
| Condition | Outcome |
|
|
41
|
+
|---|---|
|
|
42
|
+
| Command unlikely to produce large output | No capture path registered; output goes to context normally |
|
|
43
|
+
| Hook encounters an error | Warning emitted; tool proceeds without capture routing |
|
|
44
|
+
|
|
45
|
+
**Side effects produced:**
|
|
46
|
+
|
|
47
|
+
| Artifact | Location | Description |
|
|
48
|
+
|---|---|---|
|
|
49
|
+
| `capture_path` | State root | File path where captured output will be written |
|
|
50
|
+
| Capture target registration | Session state | Records the intent to capture for this command |
|
|
51
|
+
|
|
52
|
+
## Example
|
|
53
|
+
|
|
54
|
+
**Scenario:** Agent is about to run a full test suite.
|
|
55
|
+
|
|
56
|
+
```
|
|
57
|
+
Pre-tool hook fires with: { "command": "npm test" }
|
|
58
|
+
|
|
59
|
+
Hook evaluates: npm test likely produces > 500 lines of output
|
|
60
|
+
Hook creates capture target: ~/.wazir/projects/myapp/captures/run-42/npm-test-001.txt
|
|
61
|
+
Hook returns: { "capture_path": "~/.wazir/projects/myapp/captures/run-42/npm-test-001.txt" }
|
|
62
|
+
|
|
63
|
+
Tool execution proceeds, output routed to capture path.
|
|
64
|
+
Model context receives a summary reference rather than raw test output.
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
**Scenario:** Agent runs a small targeted command.
|
|
68
|
+
|
|
69
|
+
```
|
|
70
|
+
Pre-tool hook fires with: { "command": "node --version" }
|
|
71
|
+
|
|
72
|
+
Hook evaluates: single-line output, no capture needed.
|
|
73
|
+
No capture path registered.
|
|
74
|
+
Output goes directly to context normally.
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
## Testing
|
|
78
|
+
|
|
79
|
+
```bash
|
|
80
|
+
# Validate hook definition
|
|
81
|
+
node tooling/src/cli.js validate hooks
|
|
82
|
+
|
|
83
|
+
# Test capture init (which pre_tool_capture_route depends on)
|
|
84
|
+
wazir capture init
|
|
85
|
+
|
|
86
|
+
# Test capture route registration
|
|
87
|
+
wazir capture route --path /tmp/test-capture.txt
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
> [!TIP]
|
|
91
|
+
> The `post_tool_capture` hook is the counterpart to this hook — it writes the actual captured output after tool execution. Both hooks must be registered for the capture pipeline to work end-to-end.
|
|
92
|
+
|
|
93
|
+
## Host Fallback
|
|
94
|
+
|
|
95
|
+
| Host | Fallback |
|
|
96
|
+
|---|---|
|
|
97
|
+
| Claude | `native_hook` |
|
|
98
|
+
| Codex | `wrapper_command` |
|
|
99
|
+
| Gemini | `wrapper_command` |
|
|
100
|
+
| Cursor | `native_or_wrapper` |
|
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
# protected_path_write_guard
|
|
2
|
+
|
|
3
|
+
> `PreToolUse` · Guard · Blocks writes to canonical protected paths outside approved regeneration flows. Hard stop — exit 42.
|
|
4
|
+
|
|
5
|
+
| Property | Value |
|
|
6
|
+
|---|---|
|
|
7
|
+
| **Hook ID** | `protected_path_write_guard` |
|
|
8
|
+
| **Trigger event** | Any write operation targeting a protected path |
|
|
9
|
+
| **Failure mode** | `block` — exits `42` on violation |
|
|
10
|
+
| **Exit codes** | `0` allow · `42` block |
|
|
11
|
+
| **Script** | `hooks/protected-path-write-guard` |
|
|
12
|
+
|
|
13
|
+
## What It Guards
|
|
14
|
+
|
|
15
|
+
`protected_path_write_guard` enforces the boundary between read-only operator truth and agent-modifiable surfaces. Certain paths in the Wazir repo are canonical — they define roles, schemas, workflows, and host exports. Modifying them outside of the approved `export build` regeneration flow would silently corrupt the project's source of truth.
|
|
16
|
+
|
|
17
|
+
This guard is a hard block. Exit code `42` causes the host to reject the write immediately.
|
|
18
|
+
|
|
19
|
+
## Protected Paths
|
|
20
|
+
|
|
21
|
+
| Path | Why Protected |
|
|
22
|
+
|---|---|
|
|
23
|
+
| `input/` | Operator-supplied requirements — read-only by agents |
|
|
24
|
+
| `roles/` | Canonical role contracts — modified only by maintainers |
|
|
25
|
+
| `workflows/` | Phase entrypoints — modified only by maintainers |
|
|
26
|
+
| `schemas/` | Validation schemas — modified only by maintainers |
|
|
27
|
+
| `exports/hosts/` | Generated host packages — regenerated only via `export build` |
|
|
28
|
+
|
|
29
|
+
## Trigger Event
|
|
30
|
+
|
|
31
|
+
Fires before any file write operation. Receives the target path as input and evaluates it against the protected path list from `wazir.manifest.yaml`.
|
|
32
|
+
|
|
33
|
+
## Logic
|
|
34
|
+
|
|
35
|
+
1. **Read target path** from tool input payload.
|
|
36
|
+
2. **Load protected paths** from manifest (`wazir.manifest.yaml → protected_paths`).
|
|
37
|
+
3. **Evaluate match** — does the target path fall under any protected path prefix?
|
|
38
|
+
4. **If no match** — write is allowed. Exit `0`.
|
|
39
|
+
5. **If match** — write is blocked. Emit guard decision JSON to stdout. Exit `42`.
|
|
40
|
+
|
|
41
|
+
```javascript
|
|
42
|
+
// Decision shape
|
|
43
|
+
{ "guard_decision": { "allowed": false, "reason": "protected path: input/" } }
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
## Configuration
|
|
47
|
+
|
|
48
|
+
| Parameter | Required | Source | Description |
|
|
49
|
+
|---|---|---|---|
|
|
50
|
+
| `target_path` | Yes | Tool input payload | The file path being written |
|
|
51
|
+
| Protected paths list | Yes | `wazir.manifest.yaml` | `protected_paths` array |
|
|
52
|
+
|
|
53
|
+
## What Happens on Violation
|
|
54
|
+
|
|
55
|
+
When a write targets a protected path:
|
|
56
|
+
|
|
57
|
+
1. Guard emits `{ "guard_decision": { "allowed": false } }` to stdout.
|
|
58
|
+
2. Script exits `42`.
|
|
59
|
+
3. The host rejects the write operation.
|
|
60
|
+
4. The agent receives a block notification.
|
|
61
|
+
5. No write occurs.
|
|
62
|
+
|
|
63
|
+
The agent should respond to a `42` exit by:
|
|
64
|
+
- Explaining why the write was blocked.
|
|
65
|
+
- Asking the operator if a regeneration flow should be triggered (`export build`) if the intent was to update exports.
|
|
66
|
+
- Proceeding without the write if the intent was a direct edit of a protected file.
|
|
67
|
+
|
|
68
|
+
> [!WARNING]
|
|
69
|
+
> Exit code `42` is not an error — it is an intentional block. Do not retry the write. Do not attempt to work around the guard by writing to a temporary path and then moving the file.
|
|
70
|
+
|
|
71
|
+
## Example
|
|
72
|
+
|
|
73
|
+
**Scenario:** Agent attempts to directly edit a role file.
|
|
74
|
+
|
|
75
|
+
```
|
|
76
|
+
Agent attempts: Write to roles/executor.md
|
|
77
|
+
|
|
78
|
+
protected_path_write_guard fires:
|
|
79
|
+
Input: { "target_path": "roles/executor.md" }
|
|
80
|
+
Checks against protected_paths: ["input", "roles", "workflows", "schemas", "exports/hosts"]
|
|
81
|
+
Match found: "roles"
|
|
82
|
+
Output: { "guard_decision": { "allowed": false, "reason": "protected path: roles/" } }
|
|
83
|
+
Exit: 42
|
|
84
|
+
|
|
85
|
+
Host blocks the write.
|
|
86
|
+
Agent receives block notification.
|
|
87
|
+
Agent responds: "roles/executor.md is a protected canonical path and cannot be written directly.
|
|
88
|
+
To modify role contracts, make changes through the maintainer review process."
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
**Scenario:** Agent writes to an allowed path.
|
|
92
|
+
|
|
93
|
+
```
|
|
94
|
+
Agent attempts: Write to docs/plans/2026-03-13-design.md
|
|
95
|
+
|
|
96
|
+
protected_path_write_guard fires:
|
|
97
|
+
Input: { "target_path": "docs/plans/2026-03-13-design.md" }
|
|
98
|
+
Checks against protected_paths — no match.
|
|
99
|
+
Output: { "guard_decision": { "allowed": true } }
|
|
100
|
+
Exit: 0
|
|
101
|
+
|
|
102
|
+
Write proceeds normally.
|
|
103
|
+
```
|
|
104
|
+
|
|
105
|
+
## Testing
|
|
106
|
+
|
|
107
|
+
```bash
|
|
108
|
+
# Test the guard script directly
|
|
109
|
+
echo '{"target_path": "input/requirements.md"}' | node hooks/protected-path-write-guard
|
|
110
|
+
# Expected exit: 42
|
|
111
|
+
# Expected stdout: {"guard_decision":{"allowed":false,...}}
|
|
112
|
+
|
|
113
|
+
echo '{"target_path": "docs/plans/my-plan.md"}' | node hooks/protected-path-write-guard
|
|
114
|
+
# Expected exit: 0
|
|
115
|
+
# Expected stdout: {"guard_decision":{"allowed":true}}
|
|
116
|
+
|
|
117
|
+
# Validate hook definition
|
|
118
|
+
node tooling/src/cli.js validate hooks
|
|
119
|
+
```
|
|
120
|
+
|
|
121
|
+
## Host Fallback
|
|
122
|
+
|
|
123
|
+
| Host | Fallback |
|
|
124
|
+
|---|---|
|
|
125
|
+
| Claude | `native_or_wrapper` |
|
|
126
|
+
| Codex | `wrapper_command` |
|
|
127
|
+
| Gemini | `wrapper_command` |
|
|
128
|
+
| Cursor | `native_or_wrapper` |
|
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
# session_start
|
|
2
|
+
|
|
3
|
+
> `PreToolUse` · Observability · Initializes run-local status capture and injects the skill bootstrap at every session start.
|
|
4
|
+
|
|
5
|
+
| Property | Value |
|
|
6
|
+
|---|---|
|
|
7
|
+
| **Hook ID** | `session_start` |
|
|
8
|
+
| **Trigger event** | Session begins |
|
|
9
|
+
| **Failure mode** | `capture` — always exits 0, never blocks the session |
|
|
10
|
+
| **Exit codes** | `0` always |
|
|
11
|
+
| **Script** | `hooks/session-start` |
|
|
12
|
+
|
|
13
|
+
## What It Guards
|
|
14
|
+
|
|
15
|
+
`session_start` does two things: it bootstraps skill discovery by injecting the `wz:using-skills` skill content into the agent's system context, and it initializes the run-local `status.json` file that all other capture hooks write to throughout the session.
|
|
16
|
+
|
|
17
|
+
Without this hook firing correctly:
|
|
18
|
+
- Skills are not auto-discovered — the agent operates without the skill framework.
|
|
19
|
+
- Capture hooks have no status file to append to — observability is broken.
|
|
20
|
+
|
|
21
|
+
## Trigger Event
|
|
22
|
+
|
|
23
|
+
Fires once at the start of every session, before any tool or agent response.
|
|
24
|
+
|
|
25
|
+
## Logic
|
|
26
|
+
|
|
27
|
+
1. **Resolve skill file** — locate `skills/using-skills/SKILL.md` relative to the hooks directory.
|
|
28
|
+
2. **Read skill content** — read the full `SKILL.md` file.
|
|
29
|
+
3. **Write to stdout** — emit the skill content wrapped in `<EXTREMELY_IMPORTANT>` tags so the host injects it as a system-level instruction.
|
|
30
|
+
4. **Exit 0** — session proceeds regardless of outcome.
|
|
31
|
+
|
|
32
|
+
If `SKILL.md` is not found:
|
|
33
|
+
1. Write a `<system-reminder>` warning to stdout indicating the skill is missing.
|
|
34
|
+
2. Exit 0 — session proceeds without skill bootstrap.
|
|
35
|
+
|
|
36
|
+
## Configuration
|
|
37
|
+
|
|
38
|
+
| Parameter | Source | Description |
|
|
39
|
+
|---|---|---|
|
|
40
|
+
| `project_root` | Runtime (resolved from script location) | Root of the Wazir repo |
|
|
41
|
+
| `run_id` | Runtime (session context) | Unique identifier for this session run |
|
|
42
|
+
| Skill file path | Hardcoded relative: `skills/using-skills/SKILL.md` | Location of the bootstrap skill |
|
|
43
|
+
|
|
44
|
+
## What Happens on Violation
|
|
45
|
+
|
|
46
|
+
This hook does not block. It always exits 0. Failure modes:
|
|
47
|
+
|
|
48
|
+
| Condition | Outcome |
|
|
49
|
+
|---|---|
|
|
50
|
+
| `SKILL.md` not found | Warning emitted to stdout; session proceeds without skill bootstrap |
|
|
51
|
+
| Script parse/runtime error | Error written to stderr; session proceeds |
|
|
52
|
+
|
|
53
|
+
**Side effects produced:**
|
|
54
|
+
|
|
55
|
+
| Artifact | Location | Description |
|
|
56
|
+
|---|---|---|
|
|
57
|
+
| `status.json` | `~/.wazir/projects/<slug>/status.json` | Run-local status file, initialized for this session |
|
|
58
|
+
| Skill content | Agent system context | Full `wz:using-skills` skill injected as `<EXTREMELY_IMPORTANT>` |
|
|
59
|
+
|
|
60
|
+
## Example
|
|
61
|
+
|
|
62
|
+
**Normal operation:**
|
|
63
|
+
|
|
64
|
+
```bash
|
|
65
|
+
node hooks/session-start
|
|
66
|
+
# Stdout:
|
|
67
|
+
<EXTREMELY_IMPORTANT>
|
|
68
|
+
You have skills.
|
|
69
|
+
|
|
70
|
+
**Below is the full content of your 'wz:using-skills' skill:**
|
|
71
|
+
|
|
72
|
+
---
|
|
73
|
+
name: wz:using-skills
|
|
74
|
+
...
|
|
75
|
+
</EXTREMELY_IMPORTANT>
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
**Missing skill file:**
|
|
79
|
+
|
|
80
|
+
```bash
|
|
81
|
+
# After removing skills/using-skills/SKILL.md
|
|
82
|
+
node hooks/session-start
|
|
83
|
+
# Stdout:
|
|
84
|
+
<system-reminder>
|
|
85
|
+
WARNING: wz:using-skills skill not found at /path/to/skills/using-skills/SKILL.md
|
|
86
|
+
The Wazir skill bootstrap is not available. Skills will not be auto-discovered.
|
|
87
|
+
Run: check that skills/using-skills/SKILL.md exists.
|
|
88
|
+
</system-reminder>
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
## Testing
|
|
92
|
+
|
|
93
|
+
```bash
|
|
94
|
+
# Verify normal operation
|
|
95
|
+
node hooks/session-start | head -3
|
|
96
|
+
# Expected: <EXTREMELY_IMPORTANT>
|
|
97
|
+
|
|
98
|
+
# Verify skill content is present
|
|
99
|
+
node hooks/session-start | grep "wz:using-skills"
|
|
100
|
+
# Expected: name: wz:using-skills
|
|
101
|
+
|
|
102
|
+
# Verify graceful degradation
|
|
103
|
+
mv skills/using-skills/SKILL.md /tmp/SKILL.md.bak
|
|
104
|
+
node hooks/session-start | grep "WARNING"
|
|
105
|
+
# Expected: WARNING: wz:using-skills skill not found
|
|
106
|
+
mv /tmp/SKILL.md.bak skills/using-skills/SKILL.md
|
|
107
|
+
|
|
108
|
+
# Validate hook definition against schema
|
|
109
|
+
node tooling/src/cli.js validate hooks
|
|
110
|
+
```
|
|
111
|
+
|
|
112
|
+
## Host Fallback
|
|
113
|
+
|
|
114
|
+
| Host | Fallback |
|
|
115
|
+
|---|---|
|
|
116
|
+
| Claude | `native_hook` |
|
|
117
|
+
| Codex | `wrapper_command` |
|
|
118
|
+
| Gemini | `wrapper_command` |
|
|
119
|
+
| Cursor | `native_or_wrapper` |
|