voidmachine 0.0.0 → 4.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/LICENSE +21 -0
- package/README.md +123 -4
- package/bin/void-harness.mjs +12 -0
- package/bin/void-machine.mjs +12 -0
- package/core-assets/.claude-plugin/plugin.json +253 -0
- package/core-assets/.gitkeep +0 -0
- package/core-assets/PHILOSOPHY.md +218 -0
- package/core-assets/PROJECT-DOCTRINE.template.md +14 -0
- package/core-assets/adapters/security/manifest.yaml +96 -0
- package/core-assets/agents/.gitkeep +0 -0
- package/core-assets/agents/accessibility-specialist.md +59 -0
- package/core-assets/agents/api-integration-engineer.md +59 -0
- package/core-assets/agents/code-explorer.md +94 -0
- package/core-assets/agents/code-explorer.source +7 -0
- package/core-assets/agents/data-migration-engineer.md +59 -0
- package/core-assets/agents/devex-docs-engineer.md +57 -0
- package/core-assets/agents/doctrine-critic.md +91 -0
- package/core-assets/agents/doctrine-critic.source +11 -0
- package/core-assets/agents/domain-architect.md +56 -0
- package/core-assets/agents/experience-designer.md +59 -0
- package/core-assets/agents/frontend-engineer.md +60 -0
- package/core-assets/agents/independent-code-reviewer.md +61 -0
- package/core-assets/agents/migration-planner.md +97 -0
- package/core-assets/agents/migration-planner.source +7 -0
- package/core-assets/agents/observability-sre-engineer.md +59 -0
- package/core-assets/agents/pdf-specialist.md +58 -0
- package/core-assets/agents/performance-engineer.md +58 -0
- package/core-assets/agents/product-challenger.md +55 -0
- package/core-assets/agents/security-engineer.md +66 -0
- package/core-assets/agents/silent-failure-hunter.md +94 -0
- package/core-assets/agents/silent-failure-hunter.source +8 -0
- package/core-assets/agents/solution-architect.md +57 -0
- package/core-assets/agents/test-qa-engineer.md +60 -0
- package/core-assets/agents/type-design-analyzer.md +93 -0
- package/core-assets/agents/type-design-analyzer.source +8 -0
- package/core-assets/agents/visual-craft-director.md +62 -0
- package/core-assets/codex/hooks.json +157 -0
- package/core-assets/contract-history/visual-craft-director/v2.yaml +43 -0
- package/core-assets/data/catalog.v3.json +10479 -0
- package/core-assets/data/certification.json +1800 -0
- package/core-assets/data/identity.json +8 -0
- package/core-assets/data/model.json +4226 -0
- package/core-assets/enforce/ci-enforce.sh +183 -0
- package/core-assets/hooks/_checks.sh +145 -0
- package/core-assets/hooks/_hooklib.sh +163 -0
- package/core-assets/hooks/_syntax-worker.cjs +503 -0
- package/core-assets/hooks/_void-hook.mjs +5459 -0
- package/core-assets/hooks/activation-meter.sh +13 -0
- package/core-assets/hooks/anti-ai-slop-grep.sh +38 -0
- package/core-assets/hooks/auto-format.sh +9 -0
- package/core-assets/hooks/axe-precommit.sh +35 -0
- package/core-assets/hooks/block-dangerous-bash.sh +10 -0
- package/core-assets/hooks/block-protected-push.sh +81 -0
- package/core-assets/hooks/boundary-direction-check.sh +10 -0
- package/core-assets/hooks/control-character-grep.sh +10 -0
- package/core-assets/hooks/fowler-refactors.txt +71 -0
- package/core-assets/hooks/large-cl-grep.sh +9 -0
- package/core-assets/hooks/llm-cost-precommit.sh +55 -0
- package/core-assets/hooks/migration-lint.sh +58 -0
- package/core-assets/hooks/migration-pr-template.sh +55 -0
- package/core-assets/hooks/no-ai-design-slop.sh +10 -0
- package/core-assets/hooks/no-any-grep.sh +10 -0
- package/core-assets/hooks/no-as-cast-grep.sh +10 -0
- package/core-assets/hooks/no-console-log-grep.sh +10 -0
- package/core-assets/hooks/no-null-grep.sh +10 -0
- package/core-assets/hooks/no-only-no-skip.sh +10 -0
- package/core-assets/hooks/outcome-meter.sh +13 -0
- package/core-assets/hooks/pre-PR-review-evidence.sh +47 -0
- package/core-assets/hooks/protect-sensitive-files.sh +10 -0
- package/core-assets/hooks/refactor-named-grep.sh +49 -0
- package/core-assets/hooks/secret-in-content.sh +10 -0
- package/core-assets/hooks/sessionstart-context.sh +9 -0
- package/core-assets/hooks/stop-typecheck.sh +9 -0
- package/core-assets/hooks/tdd-guard.md +90 -0
- package/core-assets/hooks/tdd-guard.sh +10 -0
- package/core-assets/hooks/test-name-lint.sh +10 -0
- package/core-assets/hooks/tidying-commit-prefix.sh +37 -0
- package/core-assets/hooks/trim-large-output.sh +9 -0
- package/core-assets/hooks/tsc-noemit-precommit.sh +22 -0
- package/core-assets/hooks/ubiquitous-language-lint.sh +58 -0
- package/core-assets/hooks/viewport-screenshot-gate.sh +48 -0
- package/core-assets/modules/.gitkeep +0 -0
- package/core-assets/packs/pack-mobile/skills/void-eas-build-profile/.source +7 -0
- package/core-assets/packs/pack-mobile/skills/void-eas-build-profile/SKILL.md +164 -0
- package/core-assets/packs/pack-mobile/skills/void-eas-build-profile/harness.yaml +14 -0
- package/core-assets/packs/pack-mobile/skills/void-expo-config-plugins/.source +7 -0
- package/core-assets/packs/pack-mobile/skills/void-expo-config-plugins/SKILL.md +178 -0
- package/core-assets/packs/pack-mobile/skills/void-expo-config-plugins/harness.yaml +14 -0
- package/core-assets/packs/pack-mobile/skills/void-expo-router-pattern/.source +8 -0
- package/core-assets/packs/pack-mobile/skills/void-expo-router-pattern/SKILL.md +209 -0
- package/core-assets/packs/pack-mobile/skills/void-expo-router-pattern/harness.yaml +14 -0
- package/core-assets/packs/pack-mobile/skills/void-ota-update-strategy/.source +7 -0
- package/core-assets/packs/pack-mobile/skills/void-ota-update-strategy/SKILL.md +194 -0
- package/core-assets/packs/pack-mobile/skills/void-ota-update-strategy/harness.yaml +14 -0
- package/core-assets/packs/pack-monorepo/skills/void-dependency-direction/.source +5 -0
- package/core-assets/packs/pack-monorepo/skills/void-dependency-direction/SKILL.md +160 -0
- package/core-assets/packs/pack-monorepo/skills/void-dependency-direction/harness.yaml +14 -0
- package/core-assets/packs/pack-monorepo/skills/void-package-extraction/.source +5 -0
- package/core-assets/packs/pack-monorepo/skills/void-package-extraction/SKILL.md +70 -0
- package/core-assets/packs/pack-monorepo/skills/void-package-extraction/harness.yaml +14 -0
- package/core-assets/packs/pack-monorepo/skills/void-service-package/.source +5 -0
- package/core-assets/packs/pack-monorepo/skills/void-service-package/SKILL.md +122 -0
- package/core-assets/packs/pack-monorepo/skills/void-service-package/harness.yaml +14 -0
- package/core-assets/packs/pack-monorepo/skills/void-turbo-pipeline-tuning/.source +7 -0
- package/core-assets/packs/pack-monorepo/skills/void-turbo-pipeline-tuning/SKILL.md +116 -0
- package/core-assets/packs/pack-monorepo/skills/void-turbo-pipeline-tuning/harness.yaml +14 -0
- package/core-assets/packs/pack-nextjs/skills/void-cache-component-pattern/.source +5 -0
- package/core-assets/packs/pack-nextjs/skills/void-cache-component-pattern/SKILL.md +162 -0
- package/core-assets/packs/pack-nextjs/skills/void-cache-component-pattern/harness.yaml +14 -0
- package/core-assets/packs/pack-nextjs/skills/void-instrumentation-setup/.source +5 -0
- package/core-assets/packs/pack-nextjs/skills/void-instrumentation-setup/SKILL.md +161 -0
- package/core-assets/packs/pack-nextjs/skills/void-instrumentation-setup/harness.yaml +14 -0
- package/core-assets/packs/pack-nextjs/skills/void-loading-error-boundaries/.source +5 -0
- package/core-assets/packs/pack-nextjs/skills/void-loading-error-boundaries/SKILL.md +176 -0
- package/core-assets/packs/pack-nextjs/skills/void-loading-error-boundaries/harness.yaml +14 -0
- package/core-assets/packs/pack-nextjs/skills/void-parallel-routes-slots/.source +5 -0
- package/core-assets/packs/pack-nextjs/skills/void-parallel-routes-slots/SKILL.md +129 -0
- package/core-assets/packs/pack-nextjs/skills/void-parallel-routes-slots/harness.yaml +14 -0
- package/core-assets/packs/pack-nextjs/skills/void-route-group-decision/.source +5 -0
- package/core-assets/packs/pack-nextjs/skills/void-route-group-decision/SKILL.md +107 -0
- package/core-assets/packs/pack-nextjs/skills/void-route-group-decision/harness.yaml +14 -0
- package/core-assets/packs/pack-pwa/skills/void-install-prompt-ux/.source +5 -0
- package/core-assets/packs/pack-pwa/skills/void-install-prompt-ux/SKILL.md +153 -0
- package/core-assets/packs/pack-pwa/skills/void-install-prompt-ux/harness.yaml +14 -0
- package/core-assets/packs/pack-pwa/skills/void-manifest-checklist/.source +5 -0
- package/core-assets/packs/pack-pwa/skills/void-manifest-checklist/SKILL.md +204 -0
- package/core-assets/packs/pack-pwa/skills/void-manifest-checklist/harness.yaml +14 -0
- package/core-assets/packs/pack-pwa/skills/void-offline-first-mutation/.source +8 -0
- package/core-assets/packs/pack-pwa/skills/void-offline-first-mutation/SKILL.md +266 -0
- package/core-assets/packs/pack-pwa/skills/void-offline-first-mutation/harness.yaml +14 -0
- package/core-assets/packs/pack-pwa/skills/void-service-worker-strategy/.source +5 -0
- package/core-assets/packs/pack-pwa/skills/void-service-worker-strategy/SKILL.md +178 -0
- package/core-assets/packs/pack-pwa/skills/void-service-worker-strategy/harness.yaml +14 -0
- package/core-assets/packs/pack-react/skills/void-accessibility-check/.source +8 -0
- package/core-assets/packs/pack-react/skills/void-accessibility-check/SKILL.md +136 -0
- package/core-assets/packs/pack-react/skills/void-accessibility-check/harness.yaml +14 -0
- package/core-assets/packs/pack-react/skills/void-client-vs-server-component/.source +5 -0
- package/core-assets/packs/pack-react/skills/void-client-vs-server-component/SKILL.md +116 -0
- package/core-assets/packs/pack-react/skills/void-client-vs-server-component/harness.yaml +14 -0
- package/core-assets/packs/pack-react/skills/void-form-pattern/.source +7 -0
- package/core-assets/packs/pack-react/skills/void-form-pattern/SKILL.md +157 -0
- package/core-assets/packs/pack-react/skills/void-form-pattern/harness.yaml +14 -0
- package/core-assets/packs/pack-react/skills/void-state-architecture/.source +5 -0
- package/core-assets/packs/pack-react/skills/void-state-architecture/SKILL.md +160 -0
- package/core-assets/packs/pack-react/skills/void-state-architecture/harness.yaml +14 -0
- package/core-assets/packs/pack-server/skills/void-background-job-pattern/.source +6 -0
- package/core-assets/packs/pack-server/skills/void-background-job-pattern/SKILL.md +214 -0
- package/core-assets/packs/pack-server/skills/void-background-job-pattern/harness.yaml +14 -0
- package/core-assets/packs/pack-server/skills/void-drizzle-migration-safe/.source +6 -0
- package/core-assets/packs/pack-server/skills/void-drizzle-migration-safe/SKILL.md +168 -0
- package/core-assets/packs/pack-server/skills/void-drizzle-migration-safe/harness.yaml +14 -0
- package/core-assets/packs/pack-server/skills/void-env-validation/.source +6 -0
- package/core-assets/packs/pack-server/skills/void-env-validation/SKILL.md +131 -0
- package/core-assets/packs/pack-server/skills/void-env-validation/harness.yaml +14 -0
- package/core-assets/packs/pack-server/skills/void-rate-limit-strategy/.source +6 -0
- package/core-assets/packs/pack-server/skills/void-rate-limit-strategy/SKILL.md +149 -0
- package/core-assets/packs/pack-server/skills/void-rate-limit-strategy/harness.yaml +14 -0
- package/core-assets/packs/pack-server/skills/void-server-action/.source +7 -0
- package/core-assets/packs/pack-server/skills/void-server-action/SKILL.md +181 -0
- package/core-assets/packs/pack-server/skills/void-server-action/harness.yaml +14 -0
- package/core-assets/packs/pack-server/skills/void-testing-server-modules/.source +7 -0
- package/core-assets/packs/pack-server/skills/void-testing-server-modules/SKILL.md +73 -0
- package/core-assets/packs/pack-server/skills/void-testing-server-modules/harness.yaml +14 -0
- package/core-assets/packs/pack-server/skills/void-webhook-handler-pattern/.source +7 -0
- package/core-assets/packs/pack-server/skills/void-webhook-handler-pattern/SKILL.md +205 -0
- package/core-assets/packs/pack-server/skills/void-webhook-handler-pattern/harness.yaml +14 -0
- package/core-assets/policies/core.yaml +95 -0
- package/core-assets/policies/ui.yaml +23 -0
- package/core-assets/profiles/base.yaml +29 -0
- package/core-assets/profiles/expo-config.yaml +36 -0
- package/core-assets/profiles/expo.yaml +35 -0
- package/core-assets/profiles/monorepo.yaml +33 -0
- package/core-assets/profiles/nextjs-config.yaml +31 -0
- package/core-assets/profiles/nextjs.yaml +31 -0
- package/core-assets/profiles/node-server.yaml +31 -0
- package/core-assets/profiles/pwa.yaml +33 -0
- package/core-assets/profiles/react.yaml +39 -0
- package/core-assets/profiles/sql.yaml +39 -0
- package/core-assets/profiles/typescript.yaml +39 -0
- package/core-assets/skills/.gitkeep +0 -0
- package/core-assets/skills/void-accessibility/.source +15 -0
- package/core-assets/skills/void-accessibility/SKILL.md +275 -0
- package/core-assets/skills/void-accessibility/harness.yaml +17 -0
- package/core-assets/skills/void-api-and-interface-design/.source +13 -0
- package/core-assets/skills/void-api-and-interface-design/SKILL.md +231 -0
- package/core-assets/skills/void-api-and-interface-design/harness.yaml +16 -0
- package/core-assets/skills/void-async-safety/.source +13 -0
- package/core-assets/skills/void-async-safety/SKILL.md +287 -0
- package/core-assets/skills/void-async-safety/harness.yaml +16 -0
- package/core-assets/skills/void-audit/.source +15 -0
- package/core-assets/skills/void-audit/SKILL.md +83 -0
- package/core-assets/skills/void-audit/harness.yaml +14 -0
- package/core-assets/skills/void-autopilot/.source +21 -0
- package/core-assets/skills/void-autopilot/SKILL.md +358 -0
- package/core-assets/skills/void-autopilot/harness.yaml +14 -0
- package/core-assets/skills/void-brainstorm/.source +14 -0
- package/core-assets/skills/void-brainstorm/SKILL.md +271 -0
- package/core-assets/skills/void-brainstorm/harness.yaml +14 -0
- package/core-assets/skills/void-checkpoint/.source +39 -0
- package/core-assets/skills/void-checkpoint/SKILL.md +227 -0
- package/core-assets/skills/void-checkpoint/harness.yaml +14 -0
- package/core-assets/skills/void-claude-md/.source +15 -0
- package/core-assets/skills/void-claude-md/SKILL.md +180 -0
- package/core-assets/skills/void-claude-md/harness.yaml +14 -0
- package/core-assets/skills/void-code-review/.source +14 -0
- package/core-assets/skills/void-code-review/SKILL.md +232 -0
- package/core-assets/skills/void-code-review/harness.yaml +15 -0
- package/core-assets/skills/void-commit-discipline/.source +9 -0
- package/core-assets/skills/void-commit-discipline/SKILL.md +211 -0
- package/core-assets/skills/void-commit-discipline/harness.yaml +15 -0
- package/core-assets/skills/void-context/.source +15 -0
- package/core-assets/skills/void-context/SKILL.md +167 -0
- package/core-assets/skills/void-context/harness.yaml +14 -0
- package/core-assets/skills/void-debug/.source +11 -0
- package/core-assets/skills/void-debug/SKILL.md +211 -0
- package/core-assets/skills/void-debug/harness.yaml +14 -0
- package/core-assets/skills/void-decide/.source +9 -0
- package/core-assets/skills/void-decide/SKILL.md +147 -0
- package/core-assets/skills/void-decide/harness.yaml +14 -0
- package/core-assets/skills/void-devex-audit/.source +8 -0
- package/core-assets/skills/void-devex-audit/SKILL.md +113 -0
- package/core-assets/skills/void-devex-audit/harness.yaml +15 -0
- package/core-assets/skills/void-doctor/.source +15 -0
- package/core-assets/skills/void-doctor/SKILL.md +83 -0
- package/core-assets/skills/void-doctor/harness.yaml +14 -0
- package/core-assets/skills/void-domain-driven-design/.source +13 -0
- package/core-assets/skills/void-domain-driven-design/SKILL.md +292 -0
- package/core-assets/skills/void-domain-driven-design/harness.yaml +15 -0
- package/core-assets/skills/void-frontend-design/.source +19 -0
- package/core-assets/skills/void-frontend-design/SKILL.md +274 -0
- package/core-assets/skills/void-frontend-design/harness.yaml +17 -0
- package/core-assets/skills/void-functional/.source +14 -0
- package/core-assets/skills/void-functional/SKILL.md +312 -0
- package/core-assets/skills/void-functional/harness.yaml +15 -0
- package/core-assets/skills/void-graph/.source +15 -0
- package/core-assets/skills/void-graph/SKILL.md +80 -0
- package/core-assets/skills/void-graph/harness.yaml +14 -0
- package/core-assets/skills/void-hexagonal-architecture/.source +12 -0
- package/core-assets/skills/void-hexagonal-architecture/SKILL.md +276 -0
- package/core-assets/skills/void-hexagonal-architecture/harness.yaml +15 -0
- package/core-assets/skills/void-implement/.source +39 -0
- package/core-assets/skills/void-implement/SKILL.md +183 -0
- package/core-assets/skills/void-implement/harness.yaml +14 -0
- package/core-assets/skills/void-learn/.source +13 -0
- package/core-assets/skills/void-learn/SKILL.md +226 -0
- package/core-assets/skills/void-learn/harness.yaml +14 -0
- package/core-assets/skills/void-llm-cost-discipline/.source +13 -0
- package/core-assets/skills/void-llm-cost-discipline/SKILL.md +299 -0
- package/core-assets/skills/void-llm-cost-discipline/harness.yaml +15 -0
- package/core-assets/skills/void-make-pdf/.source +9 -0
- package/core-assets/skills/void-make-pdf/SKILL.md +52 -0
- package/core-assets/skills/void-make-pdf/harness.yaml +15 -0
- package/core-assets/skills/void-merge/.source +8 -0
- package/core-assets/skills/void-merge/SKILL.md +111 -0
- package/core-assets/skills/void-merge/harness.yaml +14 -0
- package/core-assets/skills/void-migrations/.source +13 -0
- package/core-assets/skills/void-migrations/SKILL.md +264 -0
- package/core-assets/skills/void-migrations/harness.yaml +17 -0
- package/core-assets/skills/void-observability/.source +12 -0
- package/core-assets/skills/void-observability/SKILL.md +245 -0
- package/core-assets/skills/void-observability/harness.yaml +15 -0
- package/core-assets/skills/void-plan/.source +15 -0
- package/core-assets/skills/void-plan/SKILL.md +239 -0
- package/core-assets/skills/void-plan/harness.yaml +14 -0
- package/core-assets/skills/void-plan-review/.source +12 -0
- package/core-assets/skills/void-plan-review/SKILL.md +128 -0
- package/core-assets/skills/void-plan-review/harness.yaml +15 -0
- package/core-assets/skills/void-qa/.source +15 -0
- package/core-assets/skills/void-qa/SKILL.md +103 -0
- package/core-assets/skills/void-qa/harness.yaml +15 -0
- package/core-assets/skills/void-refactor/.source +9 -0
- package/core-assets/skills/void-refactor/SKILL.md +220 -0
- package/core-assets/skills/void-refactor/harness.yaml +15 -0
- package/core-assets/skills/void-retrospective/.source +9 -0
- package/core-assets/skills/void-retrospective/SKILL.md +71 -0
- package/core-assets/skills/void-retrospective/harness.yaml +15 -0
- package/core-assets/skills/void-security-audit/.source +12 -0
- package/core-assets/skills/void-security-audit/SKILL.md +138 -0
- package/core-assets/skills/void-security-audit/harness.yaml +15 -0
- package/core-assets/skills/void-security-guidance/.source +12 -0
- package/core-assets/skills/void-security-guidance/SKILL.md +255 -0
- package/core-assets/skills/void-security-guidance/harness.yaml +15 -0
- package/core-assets/skills/void-source-driven-development/.source +12 -0
- package/core-assets/skills/void-source-driven-development/SKILL.md +158 -0
- package/core-assets/skills/void-source-driven-development/harness.yaml +15 -0
- package/core-assets/skills/void-tdd/.source +15 -0
- package/core-assets/skills/void-tdd/SKILL.md +394 -0
- package/core-assets/skills/void-tdd/harness.yaml +15 -0
- package/core-assets/skills/void-testing/.source +19 -0
- package/core-assets/skills/void-testing/SKILL.md +301 -0
- package/core-assets/skills/void-testing/harness.yaml +17 -0
- package/core-assets/skills/void-ticket/.source +18 -0
- package/core-assets/skills/void-ticket/SKILL.md +239 -0
- package/core-assets/skills/void-ticket/harness.yaml +14 -0
- package/core-assets/skills/void-typescript-strict/.source +10 -0
- package/core-assets/skills/void-typescript-strict/SKILL.md +294 -0
- package/core-assets/skills/void-typescript-strict/harness.yaml +17 -0
- package/core-assets/skills/void-ui-review/.source +12 -0
- package/core-assets/skills/void-ui-review/SKILL.md +97 -0
- package/core-assets/skills/void-ui-review/harness.yaml +15 -0
- package/core-assets/skills/void-verify/.source +12 -0
- package/core-assets/skills/void-verify/SKILL.md +184 -0
- package/core-assets/skills/void-verify/harness.yaml +15 -0
- package/core-assets/specialists/accessibility-specialist.source +11 -0
- package/core-assets/specialists/accessibility-specialist.yaml +30 -0
- package/core-assets/specialists/api-integration-engineer.source +11 -0
- package/core-assets/specialists/api-integration-engineer.yaml +30 -0
- package/core-assets/specialists/data-migration-engineer.source +11 -0
- package/core-assets/specialists/data-migration-engineer.yaml +30 -0
- package/core-assets/specialists/devex-docs-engineer.source +11 -0
- package/core-assets/specialists/devex-docs-engineer.yaml +29 -0
- package/core-assets/specialists/domain-architect.source +11 -0
- package/core-assets/specialists/domain-architect.yaml +28 -0
- package/core-assets/specialists/experience-designer.source +15 -0
- package/core-assets/specialists/experience-designer.yaml +38 -0
- package/core-assets/specialists/frontend-engineer.source +11 -0
- package/core-assets/specialists/frontend-engineer.yaml +32 -0
- package/core-assets/specialists/independent-code-reviewer.source +10 -0
- package/core-assets/specialists/independent-code-reviewer.yaml +37 -0
- package/core-assets/specialists/migrations.json +15 -0
- package/core-assets/specialists/observability-sre-engineer.source +11 -0
- package/core-assets/specialists/observability-sre-engineer.yaml +30 -0
- package/core-assets/specialists/pdf-specialist.source +11 -0
- package/core-assets/specialists/pdf-specialist.yaml +29 -0
- package/core-assets/specialists/performance-engineer.source +11 -0
- package/core-assets/specialists/performance-engineer.yaml +29 -0
- package/core-assets/specialists/product-challenger.source +10 -0
- package/core-assets/specialists/product-challenger.yaml +27 -0
- package/core-assets/specialists/security-engineer.source +13 -0
- package/core-assets/specialists/security-engineer.yaml +41 -0
- package/core-assets/specialists/solution-architect.source +13 -0
- package/core-assets/specialists/solution-architect.yaml +32 -0
- package/core-assets/specialists/test-qa-engineer.source +14 -0
- package/core-assets/specialists/test-qa-engineer.yaml +35 -0
- package/core-assets/specialists/visual-craft-director.source +17 -0
- package/core-assets/specialists/visual-craft-director.yaml +60 -0
- package/core-assets/templates/github/dependency-audit.mjs +54 -0
- package/core-assets/templates/github/void-dependency-audit.yml +35 -0
- package/core-assets/templates/github/void-security.yml +85 -0
- package/dist/main.js +57001 -0
- package/package.json +66 -4
|
@@ -0,0 +1,180 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: void-claude-md
|
|
3
|
+
description: Author a lean, runnable CLAUDE.md (or AGENTS.md). Only universal instructions; defer detail to docs; push style to linters and certainties to hooks. Use when writing or auditing a project CLAUDE.md.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# claude-md
|
|
7
|
+
|
|
8
|
+
A CLAUDE.md is not free documentation. Claude Code injects it wrapped in a system-reminder that says it "may or may not be relevant," and the system prompt already spends on the order of fifty instructions before yours arrive. Every line you add competes for the model's attention with every other line, so a bloated CLAUDE.md does not make the agent more careful — it dilutes the few instructions that actually matter and quietly buries them. This skill governs how the harness writes the CLAUDE.md files it ships into consumer projects: minimal, universal, runnable, with detail deferred and certainties mechanized.
|
|
9
|
+
|
|
10
|
+
**Attribution**: see `.source` in this directory.
|
|
11
|
+
|
|
12
|
+
---
|
|
13
|
+
|
|
14
|
+
## The load-bearing insight
|
|
15
|
+
|
|
16
|
+
The CLAUDE.md is appended to the system prompt with a "may or may not be relevant" framing. That framing is the whole game:
|
|
17
|
+
|
|
18
|
+
- It is **not** a contract the model must obey. It is context the model weighs.
|
|
19
|
+
- Attention is finite and shared. A 400-line CLAUDE.md does not give you 400 enforced rules; it gives you 400 things competing to be the one the model attends to this turn.
|
|
20
|
+
- So the question for every line is never "is this true?" but **"does this earn a slot against everything else here?"**
|
|
21
|
+
|
|
22
|
+
Target ~60 lines. Hard ceiling well under 150 instructions. If you are past that, you are not documenting — you are hoping.
|
|
23
|
+
|
|
24
|
+
---
|
|
25
|
+
|
|
26
|
+
## What belongs in CLAUDE.md
|
|
27
|
+
|
|
28
|
+
Only the **universal** and the **load-bearing**:
|
|
29
|
+
|
|
30
|
+
- How to run the project: build, test, dev server, the one command that proves the agent's change works.
|
|
31
|
+
- Repo-wide architecture in one or two sentences (where domain lives, where infra lives) — enough to orient, not a tour.
|
|
32
|
+
- Project-wide invariants that have no mechanical enforcer yet (a boundary no linter checks, a domain rule).
|
|
33
|
+
- Pointers to the docs that hold the detail (progressive disclosure, below).
|
|
34
|
+
|
|
35
|
+
That is most of it. A good CLAUDE.md is short because almost everything else has a better home.
|
|
36
|
+
|
|
37
|
+
---
|
|
38
|
+
|
|
39
|
+
## What does NOT belong (and where it goes)
|
|
40
|
+
|
|
41
|
+
| Tempting to inline | Why it does not earn its slot | Where it belongs |
|
|
42
|
+
|---|---|---|
|
|
43
|
+
| Code style, formatting, naming, import order | An LLM is a probabilistic stylist; a linter is deterministic. Never send an LLM to do a linter's job. | hooks / formatter / linter config |
|
|
44
|
+
| Code snippets / example implementations | They rot the moment the referenced code changes, and lie silently after. | a `file:line` reference to the real code |
|
|
45
|
+
| Anything that must happen 100% of the time | An instruction is obeyed *probabilistically*; a hook fires *always*. | a hook |
|
|
46
|
+
| Deterministic config: permissions, tool attribution, env | CLAUDE.md is read by a fallible reader; settings is read by the runtime. | `settings.json` |
|
|
47
|
+
| Long process docs, runbooks, deep architecture | Burns the budget for content needed only occasionally. | `agent_docs/…` or `.void/…`, referenced on demand |
|
|
48
|
+
| Per-feature or per-subdir specifics | Not universal; pollutes every unrelated task. | a nested `CLAUDE.md` in that subdir, or a doc |
|
|
49
|
+
|
|
50
|
+
The pattern is one rule: **route each instruction to its strongest enforcer.** The strongest enforcer is almost never the CLAUDE.md.
|
|
51
|
+
|
|
52
|
+
---
|
|
53
|
+
|
|
54
|
+
## Progressive disclosure
|
|
55
|
+
|
|
56
|
+
Do not inline detail you need only sometimes. State the pointer, not the payload:
|
|
57
|
+
|
|
58
|
+
```markdown
|
|
59
|
+
Database migrations follow a strict expand/contract protocol.
|
|
60
|
+
Read `agent_docs/migrations.md` before touching any migration.
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
The agent reads the doc when the task calls for it and pays zero budget when it does not. This is how a 60-line CLAUDE.md governs a large codebase: it is an index into deeper docs, not the docs themselves.
|
|
64
|
+
|
|
65
|
+
For genuinely conditional guidance, scope it tightly:
|
|
66
|
+
|
|
67
|
+
```markdown
|
|
68
|
+
<important if="editing files under packages/billing/">
|
|
69
|
+
Money is integer cents, never floats. See `agent_docs/money.md`.
|
|
70
|
+
</important>
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
A narrow `if` condition keeps the instruction out of attention for every task it does not apply to. A wide or vague condition is just an always-on instruction wearing a costume.
|
|
74
|
+
|
|
75
|
+
---
|
|
76
|
+
|
|
77
|
+
## Runnable, not aspirational
|
|
78
|
+
|
|
79
|
+
A CLAUDE.md is correct only if it is **runnable**: an agent that reads "run the tests with `pnpm test`" and runs it must succeed on the first try, in a clean checkout. The same goes for build and dev commands.
|
|
80
|
+
|
|
81
|
+
- A command that needs an undocumented setup step is a broken instruction, not a terse one.
|
|
82
|
+
- Test the CLAUDE.md the way you would test code: fresh clone, follow it literally, see if it works.
|
|
83
|
+
- An aspirational CLAUDE.md ("we lint with X" — but the lint script is missing) teaches the agent to distrust the whole file.
|
|
84
|
+
|
|
85
|
+
---
|
|
86
|
+
|
|
87
|
+
## Auditing an existing CLAUDE.md
|
|
88
|
+
|
|
89
|
+
The harness must be able to prune its own and its consumers' files. Walk every line with one question:
|
|
90
|
+
|
|
91
|
+
**"Would removing this line cause the agent to make an error?"** If not, cut it.
|
|
92
|
+
|
|
93
|
+
Pruning checklist:
|
|
94
|
+
|
|
95
|
+
- [ ] **Style/format rules** → move to linter/formatter, delete from CLAUDE.md.
|
|
96
|
+
- [ ] **Certainties** ("always run X after Y") → convert to a hook, delete the instruction.
|
|
97
|
+
- [ ] **Code snippets** → replace with a `file:line` reference.
|
|
98
|
+
- [ ] **Deep/occasional detail** → extract to `agent_docs/…` or `.void/…`, leave a pointer.
|
|
99
|
+
- [ ] **Non-universal specifics** → move to a nested `CLAUDE.md` or a doc.
|
|
100
|
+
- [ ] **Deterministic config** → move to `settings.json`.
|
|
101
|
+
- [ ] **Vague/decorative lines** ("write clean code", "be careful") → delete; they cost a slot and enforce nothing.
|
|
102
|
+
- [ ] **Unconditional lines that apply only sometimes** → wrap in a narrow `<important if="…">` or move out.
|
|
103
|
+
- [ ] **Stale commands** → verify each is runnable from a clean checkout; fix or remove.
|
|
104
|
+
|
|
105
|
+
A CLAUDE.md gets *shorter* over a healthy project's life, not longer. Growth without pruning is the default failure.
|
|
106
|
+
|
|
107
|
+
---
|
|
108
|
+
|
|
109
|
+
## Composition with other skills
|
|
110
|
+
|
|
111
|
+
- **`void-context`**: the foundation. Context is the constraint; CLAUDE.md spends from the same budget every task pays. This skill is that principle applied to the always-on prompt.
|
|
112
|
+
- **`void-source-driven-development`**: when CLAUDE.md points at a deferred doc, that doc grounds tool config in version-matched official sources rather than inlining remembered config into the prompt.
|
|
113
|
+
- **`void-learn`**: the harness *produces* CLAUDE.md files for consumer projects; this skill is the doctrine those generated files must obey. A "the harness should add X to CLAUDE.md" gap (Branch B) is judged against this skill before it lands. When a user states a *project-specific* rule, learn (Branch A) routes it; this skill answers *where it lands* — universal certainty → hook; deterministic → settings; project invariant with no enforcer → a lean CLAUDE.md line; deep detail → a deferred doc.
|
|
114
|
+
|
|
115
|
+
---
|
|
116
|
+
|
|
117
|
+
## Rationalizations
|
|
118
|
+
|
|
119
|
+
| Rationalization | Reality |
|
|
120
|
+
|---|---|
|
|
121
|
+
| "More instructions make the agent more careful." | More instructions dilute attention; the rule that mattered is now buried among forty that did not. Fewer, sharper lines win. |
|
|
122
|
+
| "I'll inline the style rules so it always formats right." | It will *not* always format right — instructions are probabilistic. A formatter is deterministic. Send the linter, not the LLM. |
|
|
123
|
+
| "A short code example makes it concrete." | The example rots when the code moves and then lies. A `file:line` pointer stays true. |
|
|
124
|
+
| "This is important, so it has to live in CLAUDE.md." | If it must happen every time, it is a hook, not an instruction. CLAUDE.md cannot guarantee 'every time.' |
|
|
125
|
+
| "Better to over-document than miss something." | Over-documenting is how you miss something: the signal drowns. Pruning is documentation. |
|
|
126
|
+
| "I'll just let `/init` generate it." | Auto-generated CLAUDE.md is bloated by default — it inlines style, snippets, and obvious facts. Generate, then prune hard against the audit checklist. |
|
|
127
|
+
| "It's only a few extra lines." | Every line evicts attention from the others. There is no free line in an always-on prompt. |
|
|
128
|
+
|
|
129
|
+
---
|
|
130
|
+
|
|
131
|
+
## Verification
|
|
132
|
+
|
|
133
|
+
Before shipping or approving a CLAUDE.md:
|
|
134
|
+
|
|
135
|
+
- [ ] Length near the ~60-line target; well under the ~150-instruction ceiling.
|
|
136
|
+
- [ ] No code-style/format/naming rules (those live in linter/formatter config).
|
|
137
|
+
- [ ] No code snippets that can rot — references are `file:line`.
|
|
138
|
+
- [ ] Every "must happen every time" certainty is a hook, not an instruction.
|
|
139
|
+
- [ ] Deterministic config (permissions, attribution, env) is in `settings.json`, not here.
|
|
140
|
+
- [ ] Deep/occasional detail is deferred to `agent_docs/…` or `.void/…` with an explicit "read it when…" pointer.
|
|
141
|
+
- [ ] Conditional guidance uses a narrowly-scoped `<important if="…">`, not an always-on line.
|
|
142
|
+
- [ ] Every line survives "would removing it cause an error?" — no decorative or vague filler.
|
|
143
|
+
- [ ] Runnable: build/test/dev commands succeed from a clean checkout on the first try.
|
|
144
|
+
|
|
145
|
+
If any box is unchecked, the file is spending attention budget it has not earned.
|
|
146
|
+
|
|
147
|
+
---
|
|
148
|
+
|
|
149
|
+
## Anti-rules
|
|
150
|
+
|
|
151
|
+
- MUST NOT put code-style, formatting, or naming rules in CLAUDE.md — those are a linter's job.
|
|
152
|
+
- MUST NOT inline code snippets — reference `file:line` so they cannot rot.
|
|
153
|
+
- MUST NOT encode an every-time certainty as an instruction — make it a hook.
|
|
154
|
+
- MUST NOT inline deterministic config (permissions, attribution, env) — put it in `settings.json`.
|
|
155
|
+
- MUST NOT add non-universal or decorative lines — every line must earn its attention slot.
|
|
156
|
+
- MUST NOT ship an auto-generated CLAUDE.md unpruned — generate, then audit it down.
|
|
157
|
+
- MUST NOT leave an unrunnable command in the file — verify from a clean checkout.
|
|
158
|
+
|
|
159
|
+
---
|
|
160
|
+
|
|
161
|
+
## When you are stuck
|
|
162
|
+
|
|
163
|
+
| Problem | Solution |
|
|
164
|
+
|---|---|
|
|
165
|
+
| Unsure if a line belongs | Ask "would removing it cause an error?" No → cut it. |
|
|
166
|
+
| The file keeps growing | You are adding without pruning. Run the audit checklist; route each line to its strongest enforcer. |
|
|
167
|
+
| Want a rule enforced 100% of the time | That is a hook, not a CLAUDE.md line. |
|
|
168
|
+
| Need a lot of detail somewhere | Defer it to `agent_docs/…` / `.void/…` and leave a one-line pointer. |
|
|
169
|
+
| A rule applies only to one area | Nested `CLAUDE.md` in that subdir, or a narrow `<important if="…">`. |
|
|
170
|
+
| `/init` produced something huge | Treat it as a draft; prune hard against the audit checklist before shipping. |
|
|
171
|
+
|
|
172
|
+
---
|
|
173
|
+
|
|
174
|
+
## Final rule
|
|
175
|
+
|
|
176
|
+
```
|
|
177
|
+
CLAUDE.md → only universal, load-bearing, runnable lines; style to linters,
|
|
178
|
+
certainties to hooks, config to settings, detail to deferred docs.
|
|
179
|
+
Otherwise → it spends attention budget it never earned, and buries the rules that mattered.
|
|
180
|
+
```
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
# Harness metadata for this skill. Not part of the Agent Skills
|
|
2
|
+
# specification, and never copied into a consumer project: the SKILL.md
|
|
3
|
+
# beside it stays portable and validates against the official six fields.
|
|
4
|
+
# Read by this repository's graph, and by the installer for `runtimes`.
|
|
5
|
+
kind: standard
|
|
6
|
+
owner: folpe
|
|
7
|
+
runtimes: [claude, codex]
|
|
8
|
+
enforcement:
|
|
9
|
+
floor: ci
|
|
10
|
+
inline:
|
|
11
|
+
claude: active
|
|
12
|
+
codex: active
|
|
13
|
+
hermes: ci-only
|
|
14
|
+
eval_targets: [claude/anthropic/opus]
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
Sources for `void-code-review` skill (see `docs/plans/skill-audits/void-code-review.md` for full audit):
|
|
2
|
+
|
|
3
|
+
- citypaul/.dotfiles pr-reviewer skill — dimensions list, blocker vs nit distinction
|
|
4
|
+
- superpowers/requesting-code-review + receiving-code-review — request perspective + absorb-feedback discipline
|
|
5
|
+
- Google "engineering practices" code review docs — https://google.github.io/eng-practices/review/reviewer/ — CL Size, How to handle pushback
|
|
6
|
+
- gstack /code-review — composed at effort levels low/medium/high/max/ultra (diff analysis)
|
|
7
|
+
- gstack /codex review — composed for independent second opinion (different model family)
|
|
8
|
+
- gstack /review (PR review) — composed at PR level for SQL safety + LLM trust boundary
|
|
9
|
+
|
|
10
|
+
Strategy: distill + compose. Skill orchestrates dimensions + composition; a diff-analysis tool does the enumeration; the `doctrine-critic` agent handles the doctrine-conformance deep pass (security routes to void-security-audit).
|
|
11
|
+
|
|
12
|
+
Tool repoint (DEV-399, 2026-07-10): the enumeration engine was gstack `/code-review` and the second opinion was gstack `/codex review`. Both were repointed off gstack — the enumeration now runs Claude Code's **native `/code-review`** (low→ultra, `--comment`/`--fix`), the second opinion runs the standalone **`codex` CLI** (`~/.local/bin/codex`, cross-model, survives the gstack teardown). This unblocks DEV-395 (gstack teardown); the gstack lines above are historical attribution, not live dependencies. `/benchmark` (perf) and `/ship` remain gstack-composed pending DEV-401 / DEV-400.
|
|
13
|
+
|
|
14
|
+
Companion hooks: pre-PR-review-evidence, large-cl-grep, blocker-prefix-grep.
|
|
@@ -0,0 +1,232 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: void-code-review
|
|
3
|
+
description: Pre-PR critical pass. Six dimensions (correctness, tests, security, structure, readability, perf). Two modes (strict/souple). Composes the native /void-code-review and codex CLI. Use on a diff.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# code-review — voidcorp craftsman edition
|
|
7
|
+
|
|
8
|
+
A review without a framework is "the first ten things I noticed." This skill provides the framework: six dimensions in order, blocker vs nit, evidence block in the PR body, two modes, explicit composition with Claude Code's native `/void-code-review` and specialized agents. The skill orchestrates; it does not duplicate the deep-pass agents.
|
|
9
|
+
|
|
10
|
+
**Attribution**: see `.source` in this directory.
|
|
11
|
+
|
|
12
|
+
---
|
|
13
|
+
|
|
14
|
+
## Six dimensions, in order
|
|
15
|
+
|
|
16
|
+
The order matters. A correctness issue blocks regardless of beautiful structure. A perf issue does not block if the first four dimensions are clean.
|
|
17
|
+
|
|
18
|
+
1. **Correctness** — does it do what it claims? edge cases? error paths? composes with `void-tdd` (cycle evidence) and `void-debug` (root cause for fixes).
|
|
19
|
+
2. **Tests** — failing test before the code? real code over mocks? names describe behavior? composes with `void-testing`.
|
|
20
|
+
3. **Security** — input validated at trust boundaries? secrets handled? SQL safe? LLM input untrusted? composes with `void-security-guidance` (which routes deep audits to `void-security-audit`).
|
|
21
|
+
4. **Structure** — boundaries respected (no domain importing infrastructure)? service/repository split? function lengths? composes with `void-hexagonal-architecture`, `void-domain-driven-design`, `void-refactor`, and the `doctrine-critic` agent.
|
|
22
|
+
5. **Readability** — names? exhaustive switches? `any` slips? `as` casts? composes with `void-typescript-strict`.
|
|
23
|
+
6. **Performance** — obvious O(n²) inside loops? leaky reactive subscriptions? unbounded queries? measured claims come from the project's perf tooling (Lighthouse CI, bundlesize), not guesses.
|
|
24
|
+
|
|
25
|
+
A11y, observability, LLM cost discipline ride inside dimensions 1-6 (e.g. missing a11y is a Correctness issue at the UI boundary; missing structured log is a Structure issue at the service layer).
|
|
26
|
+
|
|
27
|
+
### Leverage hierarchy in review
|
|
28
|
+
|
|
29
|
+
Spend attention where defects cost the most. An upstream design or contract flaw (Correctness, Structure) cascades through everything downstream; a code-detail nit (Readability) stays local. Surface the high-leverage defects first, and weight scrutiny toward them.
|
|
30
|
+
|
|
31
|
+
Do not over-engineer the review itself: report only what touches correctness or the stated requirements, not every possible finding. A reviewer who flags every theoretical improvement buries the one BLOCKER that matters. When in doubt, the bar is "would shipping this without the fix be wrong?" — if not, it is at most a `NIT:`.
|
|
32
|
+
|
|
33
|
+
---
|
|
34
|
+
|
|
35
|
+
## Blocker vs nit
|
|
36
|
+
|
|
37
|
+
Every comment is explicitly prefixed:
|
|
38
|
+
|
|
39
|
+
- **`BLOCKER:`** — must be fixed before merge. Block the PR.
|
|
40
|
+
- **`NIT:`** — suggestion. Author decides. Does NOT block.
|
|
41
|
+
- **`QUESTION:`** — clarification request. May escalate to BLOCKER if answer reveals a defect.
|
|
42
|
+
- **`PRAISE:`** — explicit acknowledgement of good code (rare, but valued).
|
|
43
|
+
|
|
44
|
+
Style / naming / minor structure: `NIT:`. Correctness / missing test / security / boundary violation: `BLOCKER:`.
|
|
45
|
+
|
|
46
|
+
A review that does not use the prefixes is incomplete. The companion hook `blocker-prefix-grep` produces the BLOCKER/NIT count for the evidence block.
|
|
47
|
+
|
|
48
|
+
---
|
|
49
|
+
|
|
50
|
+
## PR body — review evidence
|
|
51
|
+
|
|
52
|
+
Every PR in strict mode includes a Review Evidence block:
|
|
53
|
+
|
|
54
|
+
```markdown
|
|
55
|
+
## Review Evidence
|
|
56
|
+
|
|
57
|
+
- **Mode**: strict
|
|
58
|
+
- **Reviewer runtime**: native independent reviewer or codex CLI (one general pass)
|
|
59
|
+
- **Dimensions covered**:
|
|
60
|
+
- [x] Correctness — tdd evidence verified (RED commit c925187, GREEN 5e0055b)
|
|
61
|
+
- [x] Tests — 4/4 passing, mutation score 94%, no business mocks
|
|
62
|
+
- [x] Security — trust boundary validated via Zod at /api/checkout
|
|
63
|
+
- [x] Structure — services do not touch DB (repository pattern verified)
|
|
64
|
+
- [x] Readability — typescript-strict clean (no any, no rogue as)
|
|
65
|
+
- [x] Performance — no measured claim, no obvious smell
|
|
66
|
+
- **Blockers raised**: 0
|
|
67
|
+
- **Nits raised**: 2 (variable rename suggestion, helper extraction suggestion)
|
|
68
|
+
- **Claude vs Codex disagreement**: none
|
|
69
|
+
- **Skipped dimension**: none
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
If a dimension is skipped, the reason is explicit. If Claude and Codex disagree, the deltas are surfaced — not silently arbitrated.
|
|
73
|
+
|
|
74
|
+
The companion hook `pre-PR-review-evidence` warns if the PR body lacks this block (strict mode).
|
|
75
|
+
|
|
76
|
+
---
|
|
77
|
+
|
|
78
|
+
## CL Size discipline
|
|
79
|
+
|
|
80
|
+
PRs larger than ~400 LOC of diff should either:
|
|
81
|
+
|
|
82
|
+
- Be split into multiple PRs each focused on one concern
|
|
83
|
+
- Or include a `large-cl-justification: <reason>` marker in a commit message
|
|
84
|
+
|
|
85
|
+
Review quality decays after ~400 added LOC. The optional `large-cl-grep` adapter warns without blocking when a branch exceeds the threshold. It reads Git only: no forge, `gh`, or `jq` dependency.
|
|
86
|
+
|
|
87
|
+
---
|
|
88
|
+
|
|
89
|
+
## Modes
|
|
90
|
+
|
|
91
|
+
| Mode | Trigger | Posture |
|
|
92
|
+
|---|---|---|
|
|
93
|
+
| **strict** | PR targeting `main` / `develop` / release branches. Pre-PR final pass. | All six dimensions checked. Blockers fail. Evidence block REQUIRED. Default effort: native `/void-code-review medium`, escalate to `ultra` for high-stakes diffs. Select one independent reviewer runtime. |
|
|
94
|
+
| **souple** | In-progress feedback on a feature branch during work. WIP commits. | Dimensions checked at user discretion. No evidence block required. Default effort: native `/void-code-review low` or `medium`. |
|
|
95
|
+
|
|
96
|
+
---
|
|
97
|
+
|
|
98
|
+
## Composition with specialized agents and tools
|
|
99
|
+
|
|
100
|
+
| Dimension | Composed with |
|
|
101
|
+
|---|---|
|
|
102
|
+
| Correctness, Tests | `void-tdd` skill (verify cycle), `void-testing` skill (verify quality), `doctrine-critic` agent (doctrine conformance) |
|
|
103
|
+
| Security | `void-security-guidance` skill, `doctrine-critic` agent (flags boundaries), `void-security-audit` (only at user request for full audit) |
|
|
104
|
+
| Structure | `void-hexagonal-architecture` skill, `void-domain-driven-design` skill, `doctrine-critic` agent (boundary spirit) |
|
|
105
|
+
| Readability | `void-typescript-strict` skill, Biome (formatter) |
|
|
106
|
+
| Performance | the project's perf tooling (Lighthouse CI, bundlesize) for measured claims; this skill flags only obvious smells |
|
|
107
|
+
| Independent reviewer alternative | `codex review` (choose this or the native independent reviewer for the general pass) |
|
|
108
|
+
| Diff analysis at high effort | native `/void-code-review medium` / `high` / `ultra` |
|
|
109
|
+
|
|
110
|
+
The skill is the orchestration. Specialized agents and the native `/void-code-review` do the heavy work.
|
|
111
|
+
|
|
112
|
+
---
|
|
113
|
+
|
|
114
|
+
## Operating procedure
|
|
115
|
+
|
|
116
|
+
### Pre-condition (strict mode)
|
|
117
|
+
|
|
118
|
+
- The PR's HEAD has been built and tested locally / in CI. No build errors or failing required tests. Lint findings block only for a demonstrated consequence.
|
|
119
|
+
- Inspect output for leaked data and actionable errors; advisory diagnostics do not reopen review.
|
|
120
|
+
- The PR description includes a clear "what" and "why."
|
|
121
|
+
|
|
122
|
+
If any pre-condition fails, the review pauses — fix the pre-condition first.
|
|
123
|
+
|
|
124
|
+
### Pass
|
|
125
|
+
|
|
126
|
+
1. Bind the task, acceptance criteria, exact commit and base before reading. Prefer a dedicated
|
|
127
|
+
worktree pinned to the commit, with native read-only permissions. The reviewer never edits.
|
|
128
|
+
2. Perform one independent general review across the six dimensions. Report only demonstrated
|
|
129
|
+
consequences in scope. Every blocker names its violated criterion, concrete consequence,
|
|
130
|
+
evidence and resolution condition. Style and optional refactoring remain advisory.
|
|
131
|
+
3. Preserve the minimal review receipt and original result: reviewer, subject, conclusions,
|
|
132
|
+
proofs and defect resolutions. Record missing or refused native identity as an exact
|
|
133
|
+
provenance limitation; it alone cannot reject a traceable independent review. Do not invent
|
|
134
|
+
independence or accept self-review as a substitute.
|
|
135
|
+
4. The author corrects blockers or records a reasoned disagreement. After each correction batch,
|
|
136
|
+
verify only the corrections and affected behavior. Reuse unaffected conclusions and proofs;
|
|
137
|
+
never restart the general review. Newly raised blockers must demonstrate a correction
|
|
138
|
+
regression or a concrete defect within the original scope.
|
|
139
|
+
5. Follow `void-implement`'s maximum two correction batches. Incomplete review, resumption and
|
|
140
|
+
transport repair do not consume or reset that budget. Advisory findings never request a
|
|
141
|
+
correction cycle. At the limit, report unresolved defects with cause and next action.
|
|
142
|
+
6. The orchestrator may request one independent opinion on a disputed point and retain it
|
|
143
|
+
as evidence for targeted verification, without reopening general review or resetting the
|
|
144
|
+
budget. No separate automatic arbitration command is provided. Escalate beyond-mandate
|
|
145
|
+
decisions to the human. Retain historical
|
|
146
|
+
findings and their resolutions; never call an unresolved blocking defect conformant.
|
|
147
|
+
|
|
148
|
+
|
|
149
|
+
### Author response (Google practices)
|
|
150
|
+
|
|
151
|
+
- Address every BLOCKER (fix or reasoned pushback).
|
|
152
|
+
- Read every NIT. Address those you agree with; ignore the rest.
|
|
153
|
+
- Treat QUESTION as a thinking prompt — answer or escalate.
|
|
154
|
+
- Push back when you disagree. Reviewer may hold ground with a clear "why."
|
|
155
|
+
|
|
156
|
+
---
|
|
157
|
+
|
|
158
|
+
## Banned
|
|
159
|
+
|
|
160
|
+
### "LGTM" reviews
|
|
161
|
+
|
|
162
|
+
A review that does not list the dimensions checked is not a review. Even "everything looks fine" requires the evidence block in strict mode.
|
|
163
|
+
|
|
164
|
+
### File-by-file linear walk
|
|
165
|
+
|
|
166
|
+
Default to dimension-by-dimension across the whole diff. Linear walk misses cross-file issues (service change without its repository update, schema change without its consumer update).
|
|
167
|
+
|
|
168
|
+
### Style / naming bikeshedding marked as BLOCKER
|
|
169
|
+
|
|
170
|
+
Style is solved by Biome + `void-typescript-strict`, not by reviewer preference. Anything stylistic is `NIT:` at most.
|
|
171
|
+
|
|
172
|
+
### Architectural-rewrite suggestions inside the PR
|
|
173
|
+
|
|
174
|
+
If the diff reveals a structural problem larger than the diff, add a `QUESTION:` comment + suggest a follow-up issue. Do not block on "rewrite this PR." Scope creep at review time tanks velocity.
|
|
175
|
+
|
|
176
|
+
### Silent disagreement between Claude and Codex
|
|
177
|
+
|
|
178
|
+
Disagreements are surfaced. Not averaged. The user decides.
|
|
179
|
+
|
|
180
|
+
---
|
|
181
|
+
|
|
182
|
+
## Composition summary
|
|
183
|
+
|
|
184
|
+
- **Upstream**: `void-verify` (the author claims the code is ready before review starts).
|
|
185
|
+
- **Downstream**: `void-commit-discipline` (the merge commit follows conventional commit + always-say-why), then the ship step (`void-implement` pass 11 + `gh` lands the PR; release-please owns versions).
|
|
186
|
+
- **Side-by-side**: the `doctrine-critic` agent (doctrine conformance, read-only).
|
|
187
|
+
|
|
188
|
+
---
|
|
189
|
+
|
|
190
|
+
## Companion hooks
|
|
191
|
+
|
|
192
|
+
- **`pre-PR-review-evidence`** (pre-push) — warn if PR body lacks the Review Evidence block (strict mode)
|
|
193
|
+
- **`large-cl-grep`** (optional pre-push) — warn if the branch adds > 400 LOC without a commit-message `large-cl-justification:` marker
|
|
194
|
+
- **`blocker-prefix-grep`** (post-review) — informational: count BLOCKER vs NIT comments for the evidence block
|
|
195
|
+
|
|
196
|
+
See `../../hooks/`.
|
|
197
|
+
|
|
198
|
+
---
|
|
199
|
+
|
|
200
|
+
## Anti-rules
|
|
201
|
+
|
|
202
|
+
- MUST NOT decide whether to ship — user owns the merge decision.
|
|
203
|
+
- MUST NOT block on style / naming (Biome + `void-typescript-strict` jobs).
|
|
204
|
+
- MUST NOT suggest scope expansion inside the PR — escalate to follow-up.
|
|
205
|
+
- MUST NOT duplicate `doctrine-critic` or `void-security-audit` work — delegate.
|
|
206
|
+
- MUST NOT silently arbitrate Claude-vs-Codex disagreements — surface them.
|
|
207
|
+
- MUST NOT mark style nit as BLOCKER.
|
|
208
|
+
- MUST NOT pass a review when the test suite has not been observed passing on the PR's HEAD.
|
|
209
|
+
|
|
210
|
+
---
|
|
211
|
+
|
|
212
|
+
## When you are stuck
|
|
213
|
+
|
|
214
|
+
| Problem | Solution |
|
|
215
|
+
|---|---|
|
|
216
|
+
| Review feels shallow | You skipped a dimension. Walk all six in order. |
|
|
217
|
+
| Cannot tell BLOCKER from NIT | Correctness / security / missing test / boundary violation = BLOCKER. Everything else = NIT. |
|
|
218
|
+
| Diff is too large to review | Ask the author to split, or invoke `large-cl-justification:` if truly atomic. |
|
|
219
|
+
| Found a structural rot beyond the diff | `QUESTION:` + suggest follow-up issue. Do not block this PR on it. |
|
|
220
|
+
| Claude and Codex disagree | Surface the delta. Let the author/user decide. |
|
|
221
|
+
| Cannot reach pristine output | Pre-condition failed. Pause the review until fixed. |
|
|
222
|
+
|
|
223
|
+
---
|
|
224
|
+
|
|
225
|
+
## Final rule
|
|
226
|
+
|
|
227
|
+
```
|
|
228
|
+
A review → six dimensions in order, blockers explicit, evidence in PR body (strict), delegated where deep.
|
|
229
|
+
Otherwise → it is not a voidcorp code-review.
|
|
230
|
+
```
|
|
231
|
+
|
|
232
|
+
The independent reviewer examines the committed result. The author owns all code changes.
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
# Harness metadata for this skill. Not part of the Agent Skills
|
|
2
|
+
# specification, and never copied into a consumer project: the SKILL.md
|
|
3
|
+
# beside it stays portable and validates against the official six fields.
|
|
4
|
+
# Read by this repository's graph, and by the installer for `runtimes`.
|
|
5
|
+
kind: action
|
|
6
|
+
activation: always
|
|
7
|
+
owner: folpe
|
|
8
|
+
runtimes: [claude, codex]
|
|
9
|
+
enforcement:
|
|
10
|
+
floor: ci
|
|
11
|
+
inline:
|
|
12
|
+
claude: pretooluse
|
|
13
|
+
codex: pretooluse
|
|
14
|
+
hermes: ci-only
|
|
15
|
+
eval_targets: [claude/anthropic/opus]
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
Sources for `void-commit-discipline` skill (see `docs/plans/skill-audits/void-commit-discipline.md` for full audit):
|
|
2
|
+
|
|
3
|
+
- Conventional Commits spec — https://www.conventionalcommits.org — foundation, allowed type list, footer conventions.
|
|
4
|
+
- Folpe "always say why" rule (from DECLIK CLAUDE.md) — load-bearing addition: substantive commits MUST explain rationale.
|
|
5
|
+
- citypaul/.dotfiles commit guidance — body wrapping, subject style.
|
|
6
|
+
|
|
7
|
+
Strategy: original. Slim skill. Conventional Commits + Folpe "why" + scope guidance.
|
|
8
|
+
|
|
9
|
+
Companion hooks: commitlint-precommit (pack-monorepo), tidying-commit-prefix (core, already shipped), refactor-named-grep (core, already shipped), no-emdash-no-emoji-in-commit-msg (pack-monorepo).
|