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,14 @@
|
|
|
1
|
+
Sources:
|
|
2
|
+
- ISTQB Certified Tester Foundation Level syllabus 4.0.1: https://istqb.org/wp-content/uploads/2024/11/ISTQB_CTFL_Syllabus_v4.0.1.pdf
|
|
3
|
+
- ISTQB CTFL 4.0 release notes: https://www.istqb.org/istqb-releases-certified-tester-foundation-level-v4-0-ctfl/
|
|
4
|
+
- Claude Code subagents: https://code.claude.com/docs/en/sub-agents
|
|
5
|
+
- Codex custom agents: https://learn.chatgpt.com/docs/agent-configuration/subagents
|
|
6
|
+
|
|
7
|
+
Adapted:
|
|
8
|
+
- Kept test-basis traceability, risk focus, meaningful evidence, and defect-versus-missing-proof separation.
|
|
9
|
+
- Narrowed the role to review and release evidence for one ticket or diff.
|
|
10
|
+
- Added the shared Void specialist identity, budget, failure, and JSON output contract.
|
|
11
|
+
|
|
12
|
+
Rejected:
|
|
13
|
+
- Certification vocabulary, process ceremony, test implementation, and release authority.
|
|
14
|
+
- Architecture, security, product, and visual-design ownership.
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
schemaVersion: 1
|
|
2
|
+
id: core:test-qa-engineer
|
|
3
|
+
version: 2
|
|
4
|
+
name: test-qa-engineer
|
|
5
|
+
description: Reviews behavioral coverage, failure paths, and release evidence without editing the project.
|
|
6
|
+
scope: quality
|
|
7
|
+
independence: fresh-context
|
|
8
|
+
writeAccess: none
|
|
9
|
+
stages: [pre-implementation, post-implementation]
|
|
10
|
+
appliesWhen:
|
|
11
|
+
any:
|
|
12
|
+
- qa-baseline
|
|
13
|
+
- qa
|
|
14
|
+
- tdd
|
|
15
|
+
- code-change
|
|
16
|
+
inputs:
|
|
17
|
+
- ticket
|
|
18
|
+
- acceptance-criteria
|
|
19
|
+
- diff
|
|
20
|
+
- tests
|
|
21
|
+
- verification-evidence
|
|
22
|
+
outputs:
|
|
23
|
+
- verdict
|
|
24
|
+
- findings
|
|
25
|
+
- evidenceRequests
|
|
26
|
+
- limitations
|
|
27
|
+
budgets:
|
|
28
|
+
contextTokens: 12000
|
|
29
|
+
maxTurns: 2
|
|
30
|
+
failurePolicy: block-on-critical
|
|
31
|
+
instructions: >-
|
|
32
|
+
Own acceptance-criteria coverage, meaningful assertions, failure paths, regression risk, flakiness,
|
|
33
|
+
and release evidence. Distinguish missing proof from a proven defect and request the smallest useful
|
|
34
|
+
verification. Do not perform architecture, security, product, or visual-design review and never edit
|
|
35
|
+
tests or implementation.
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
Sources:
|
|
2
|
+
- W3C Web Content Accessibility Guidelines 2.2: https://www.w3.org/TR/WCAG22/
|
|
3
|
+
- Apple Human Interface Guidelines, Visual design: https://developer.apple.com/design/human-interface-guidelines/visual-design
|
|
4
|
+
- Playwright visual comparisons: https://playwright.dev/docs/test-snapshots
|
|
5
|
+
- Vercel agent skills, frontend-design: https://github.com/vercel-labs/agent-skills
|
|
6
|
+
- Claude Code subagents: https://code.claude.com/docs/en/sub-agents
|
|
7
|
+
- Codex custom agents: https://learn.chatgpt.com/docs/agent-configuration/subagents
|
|
8
|
+
|
|
9
|
+
Adapted:
|
|
10
|
+
- Kept evidence-grounded responsive, state, hierarchy, contrast, keyboard, and visual-distinctiveness review.
|
|
11
|
+
- Added a six-dimension 8/10 floor and current-diff binding for every screenshot and test proof.
|
|
12
|
+
- Split post-build judgment from build-time design and live browser operation to preserve fresh context and one-role scope.
|
|
13
|
+
- DEV-843: retained conservative selection while requiring revision-bound rendered-scope assessment before capture obligations; a guidance-only N/A completes scope assessment, not visual certification.
|
|
14
|
+
|
|
15
|
+
Rejected:
|
|
16
|
+
- LLM-only visual certification, self-authored screenshots, brand invention, implementation, browser driving, functional QA, and architecture or security review.
|
|
17
|
+
- Snapshot approval without current diff identity and applicable state coverage.
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
schemaVersion: 1
|
|
2
|
+
id: core:visual-craft-director
|
|
3
|
+
version: 3
|
|
4
|
+
name: visual-craft-director
|
|
5
|
+
description: Independently reviews rendered UI craft, responsive states, accessibility, and current-diff visual evidence after implementation.
|
|
6
|
+
scope: visual-craft
|
|
7
|
+
independence: fresh-context
|
|
8
|
+
writeAccess: none
|
|
9
|
+
stages: [post-implementation]
|
|
10
|
+
appliesWhen:
|
|
11
|
+
any:
|
|
12
|
+
- ux-ui
|
|
13
|
+
- frontend-change
|
|
14
|
+
- profile-react
|
|
15
|
+
- profile-expo
|
|
16
|
+
inputs:
|
|
17
|
+
- ticket
|
|
18
|
+
- acceptance-criteria
|
|
19
|
+
- design-contract
|
|
20
|
+
- current-diff
|
|
21
|
+
- mobile-screenshots
|
|
22
|
+
- desktop-screenshots
|
|
23
|
+
- state-evidence
|
|
24
|
+
- test-evidence
|
|
25
|
+
outputs:
|
|
26
|
+
- verdict
|
|
27
|
+
- findings
|
|
28
|
+
- evidenceRequests
|
|
29
|
+
- limitations
|
|
30
|
+
budgets:
|
|
31
|
+
contextTokens: 16000
|
|
32
|
+
maxTurns: 3
|
|
33
|
+
failurePolicy: block-on-critical
|
|
34
|
+
instructions: >-
|
|
35
|
+
Own the post-implementation visual-craft verdict in a context distinct from the builder and
|
|
36
|
+
pre-build designer. Selection by a UI subject, frontend profile, or changed path requests a
|
|
37
|
+
scope assessment; it does not establish that a rendered interface changed. First establish
|
|
38
|
+
applicability from the complete relevant current diff, touched paths, and supplied artifacts.
|
|
39
|
+
Inspect behavior, including templates and renderers in arbitrary source files, not extensions
|
|
40
|
+
alone. Mixed guidance and rendered-UI changes require visual review. An empty pre-implementation
|
|
41
|
+
diff does not prove non-applicability when UI work is planned.
|
|
42
|
+
If the complete relevant post-implementation evidence establishes that no rendered interface
|
|
43
|
+
changed, return pass with an explicit "Rendered-UI review not applicable" explanation in
|
|
44
|
+
limitations, naming the inspected paths and why their changes do not affect a rendered surface.
|
|
45
|
+
This completes the scope assessment, not visual certification: do not invent craft scores,
|
|
46
|
+
screenshots, or claims of visual quality. Guidance about UI and a frontend profile alone do not
|
|
47
|
+
require captures.
|
|
48
|
+
Resolve relevant omissions through permitted exact-path reads only when their content is
|
|
49
|
+
demonstrably bound to the reviewed revision and canonical review receipt. A SHA label alone is
|
|
50
|
+
insufficient. Explain why an unresolved omission is irrelevant before excluding it; missing,
|
|
51
|
+
truncated, stale, or unbound relevant evidence requires blocked with an evidence request.
|
|
52
|
+
When rendered UI changes, review current-diff mobile and desktop captures for every applicable state.
|
|
53
|
+
Score hierarchy, information architecture, interaction states, responsive intent,
|
|
54
|
+
distinctiveness, and accessibility from 0 to 10; any dimension below 8 requires changes.
|
|
55
|
+
Reject generic generated-UI reflexes and ground every finding in a supplied screenshot or
|
|
56
|
+
repository path. For applicable visual review, missing browser access, missing viewport or state
|
|
57
|
+
captures, captures not tied to the current diff, or absent behavioral test proof requires a
|
|
58
|
+
blocked verdict. Do not certify visual quality from
|
|
59
|
+
prose or model judgment alone, invent brand identity, edit code, drive the browser, or perform
|
|
60
|
+
architecture, security, and functional QA review.
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
// Bun 1.3.14: exit 1 means either advisories or a failed registry request.
|
|
2
|
+
// Interpret only a recognized JSON response; ambiguous output never passes.
|
|
3
|
+
import { spawnSync } from 'node:child_process';
|
|
4
|
+
import { appendFileSync, mkdirSync, writeFileSync } from 'node:fs';
|
|
5
|
+
import { join } from 'node:path';
|
|
6
|
+
|
|
7
|
+
const scope = 'npm advisories for packages Bun 1.3.14 sends to its default registry';
|
|
8
|
+
const severities = new Set(['info', 'low', 'moderate', 'high', 'critical']);
|
|
9
|
+
const object = (value) => typeof value === 'object' && value !== null && !Array.isArray(value);
|
|
10
|
+
const advisory = (value) => object(value)
|
|
11
|
+
&& (typeof value.id === 'number' || typeof value.id === 'string')
|
|
12
|
+
&& ['url', 'title', 'vulnerable_versions'].every((key) => typeof value[key] === 'string' && value[key].length > 0)
|
|
13
|
+
&& severities.has(value.severity);
|
|
14
|
+
|
|
15
|
+
function classify(result) {
|
|
16
|
+
if (result.error || result.signal || ![0, 1].includes(result.status)) {
|
|
17
|
+
return { state: 'unavailable', exitCode: 2, reason: 'audit-process-failed' };
|
|
18
|
+
}
|
|
19
|
+
let response;
|
|
20
|
+
try {
|
|
21
|
+
response = JSON.parse(result.stdout);
|
|
22
|
+
} catch {
|
|
23
|
+
return { state: 'unavailable', exitCode: 2, reason: 'invalid-registry-json' };
|
|
24
|
+
}
|
|
25
|
+
if (object(response)) {
|
|
26
|
+
const entries = Object.entries(response);
|
|
27
|
+
if (entries.length === 0 && result.status === 0) {
|
|
28
|
+
return { state: 'clean', exitCode: 0, reason: 'no-advisories-in-response' };
|
|
29
|
+
}
|
|
30
|
+
if (entries.length > 0 && entries.every(([name, values]) => name.length > 0
|
|
31
|
+
&& Array.isArray(values) && values.length > 0 && values.every(advisory))) {
|
|
32
|
+
return { state: 'vulnerabilities', exitCode: 1, reason: 'advisories-returned', advisories: response };
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
return { state: 'unavailable', exitCode: 2, reason: 'unrecognized-registry-response' };
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
if (process.argv.length !== 3) {
|
|
39
|
+
process.stderr.write('Usage: node dependency-audit.mjs <report-directory>\n');
|
|
40
|
+
process.exitCode = 2;
|
|
41
|
+
} else {
|
|
42
|
+
const result = spawnSync('bun', ['audit', '--json'], {
|
|
43
|
+
encoding: 'utf8', shell: false, timeout: 120_000, maxBuffer: 1_048_576,
|
|
44
|
+
});
|
|
45
|
+
const report = { schemaVersion: 1, scope, ...classify(result) };
|
|
46
|
+
const directory = process.argv[2];
|
|
47
|
+
mkdirSync(directory, { recursive: true });
|
|
48
|
+
writeFileSync(join(directory, 'result.json'), `${JSON.stringify(report, null, 2)}\n`);
|
|
49
|
+
const summary = `## Dependency audit: ${report.state}\n\nScope: ${scope}.\n\nReason: ${report.reason}. Exit code: ${report.exitCode}.\n\nUnavailability is not a clean audit. This result does not certify dependencies outside the stated scope.\n`;
|
|
50
|
+
writeFileSync(join(directory, 'summary.md'), summary);
|
|
51
|
+
if (process.env.GITHUB_STEP_SUMMARY) appendFileSync(process.env.GITHUB_STEP_SUMMARY, summary);
|
|
52
|
+
process.stdout.write(summary);
|
|
53
|
+
process.exitCode = report.exitCode;
|
|
54
|
+
}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
# Manual consumer template: copy this workflow and its companion script.
|
|
2
|
+
# See docs/DEPENDENCY-AUDIT.md before adopting; no consumer CI is overwritten.
|
|
3
|
+
name: void-dependency-audit
|
|
4
|
+
|
|
5
|
+
on:
|
|
6
|
+
push:
|
|
7
|
+
branches: [main]
|
|
8
|
+
pull_request:
|
|
9
|
+
workflow_dispatch:
|
|
10
|
+
|
|
11
|
+
permissions:
|
|
12
|
+
contents: read
|
|
13
|
+
|
|
14
|
+
jobs:
|
|
15
|
+
dependency-audit:
|
|
16
|
+
runs-on: ubuntu-latest
|
|
17
|
+
timeout-minutes: 10
|
|
18
|
+
steps:
|
|
19
|
+
- uses: actions/checkout@d23441a48e516b6c34aea4fa41551a30e30af803 # v6
|
|
20
|
+
- uses: actions/setup-node@249970729cb0ef3589644e2896645e5dc5ba9c38 # v6
|
|
21
|
+
with:
|
|
22
|
+
node-version: 24
|
|
23
|
+
- uses: oven-sh/setup-bun@735343b667d3e6f658f44d0eca948eb6282f2b76 # v2.0.2
|
|
24
|
+
with:
|
|
25
|
+
bun-version: 1.3.14
|
|
26
|
+
- name: Classify dependency audit
|
|
27
|
+
run: node .github/scripts/dependency-audit.mjs "$RUNNER_TEMP/dependency-audit"
|
|
28
|
+
- name: Preserve audit report
|
|
29
|
+
if: always()
|
|
30
|
+
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7
|
|
31
|
+
with:
|
|
32
|
+
name: dependency-audit
|
|
33
|
+
path: ${{ runner.temp }}/dependency-audit
|
|
34
|
+
if-no-files-found: error
|
|
35
|
+
retention-days: 7
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
# Periodic security baseline.
|
|
2
|
+
#
|
|
3
|
+
# Copy into `.github/workflows/` and adjust the schedule. Nothing here depends
|
|
4
|
+
# on a security vendor: the baseline runs whatever scanners the runner happens
|
|
5
|
+
# to have, names the ones it did not find, and reports the surface it could not
|
|
6
|
+
# measure as degraded or blocked — never green.
|
|
7
|
+
#
|
|
8
|
+
# That is the point of running it with no scanner installed at all: the result
|
|
9
|
+
# is honest about measuring almost nothing, instead of a green tick that means
|
|
10
|
+
# "we did not look".
|
|
11
|
+
#
|
|
12
|
+
# Third-party actions are pinned by commit SHA, with the tag in a comment. A
|
|
13
|
+
# mutable tag is a supply-chain hole: whoever controls it controls what runs
|
|
14
|
+
# with your token.
|
|
15
|
+
name: void-security
|
|
16
|
+
|
|
17
|
+
on:
|
|
18
|
+
schedule:
|
|
19
|
+
# Weekly, Monday 04:17 UTC. Change this to whatever cadence you can act on:
|
|
20
|
+
# a scan nobody reads on Monday morning is a scan that is not being run.
|
|
21
|
+
# Avoid the top of the hour — GitHub queues those the heaviest.
|
|
22
|
+
- cron: '17 4 * * 1'
|
|
23
|
+
workflow_dispatch:
|
|
24
|
+
inputs:
|
|
25
|
+
mode:
|
|
26
|
+
description: Mission mode to judge findings against
|
|
27
|
+
required: false
|
|
28
|
+
default: team
|
|
29
|
+
type: choice
|
|
30
|
+
options: [fast, team, fortress]
|
|
31
|
+
prelaunch:
|
|
32
|
+
description: Hold the run to the stricter pre-launch bar
|
|
33
|
+
required: false
|
|
34
|
+
default: false
|
|
35
|
+
type: boolean
|
|
36
|
+
|
|
37
|
+
permissions:
|
|
38
|
+
contents: read
|
|
39
|
+
|
|
40
|
+
jobs:
|
|
41
|
+
baseline:
|
|
42
|
+
runs-on: ubuntu-latest
|
|
43
|
+
# A scan that hangs must not hold a runner all day.
|
|
44
|
+
timeout-minutes: 30
|
|
45
|
+
steps:
|
|
46
|
+
- uses: actions/checkout@d23441a48e516b6c34aea4fa41551a30e30af803 # v6
|
|
47
|
+
with:
|
|
48
|
+
# `dir` scanning reads the working tree, so no history is needed. A
|
|
49
|
+
# full-history secret audit is its own job — see the note at the end.
|
|
50
|
+
fetch-depth: 1
|
|
51
|
+
|
|
52
|
+
- uses: actions/setup-node@249970729cb0ef3589644e2896645e5dc5ba9c38 # v6
|
|
53
|
+
with:
|
|
54
|
+
node-version: 22
|
|
55
|
+
|
|
56
|
+
# Optional. Delete either line and the baseline still runs; it will name
|
|
57
|
+
# the missing tool and refuse to call the result complete.
|
|
58
|
+
#
|
|
59
|
+
# Both are installed from their own release channel rather than through a
|
|
60
|
+
# marketplace action, so nothing third-party runs with this job's token.
|
|
61
|
+
- name: Install optional scanners
|
|
62
|
+
run: |
|
|
63
|
+
set -euo pipefail
|
|
64
|
+
python3 -m pip install --quiet semgrep
|
|
65
|
+
curl -sSfL https://raw.githubusercontent.com/gitleaks/gitleaks/master/scripts/install.sh | sh -s -- -b "$RUNNER_TEMP/bin"
|
|
66
|
+
echo "$RUNNER_TEMP/bin" >> "$GITHUB_PATH"
|
|
67
|
+
|
|
68
|
+
- name: Security baseline
|
|
69
|
+
run: >
|
|
70
|
+
npx --yes voidmachine security scan
|
|
71
|
+
--mode ${{ inputs.mode || 'team' }}
|
|
72
|
+
${{ inputs.prelaunch && '--prelaunch' || '' }}
|
|
73
|
+
--json
|
|
74
|
+
# The scan exits non-zero when the verdict is `blocked`, which fails this job.
|
|
75
|
+
# That is deliberate: a scan that errored or could not reach its required proof
|
|
76
|
+
# has not told you the code is fine, only that nobody looked properly.
|
|
77
|
+
#
|
|
78
|
+
# Not covered here, on purpose:
|
|
79
|
+
#
|
|
80
|
+
# - A DAST run needs `--target` and an authorization naming the host, its
|
|
81
|
+
# authorizer and an expiry. It belongs in a workflow of its own, against an
|
|
82
|
+
# ephemeral environment, and never on a schedule that outlives the grant.
|
|
83
|
+
# - Auditing the full git history for secrets is a separate, slower job:
|
|
84
|
+
# `gitleaks git` walks every commit, which costs minutes to re-answer a
|
|
85
|
+
# question that only changes at the tip.
|