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,4226 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 1,
|
|
3
|
+
"nodes": [
|
|
4
|
+
{
|
|
5
|
+
"description": "Reviews applicable WCAG 2.2 AA semantics, keyboard and focus behavior, names, contrast, targets, errors, and assistive evidence.",
|
|
6
|
+
"id": "agent:accessibility-specialist",
|
|
7
|
+
"lines": 59,
|
|
8
|
+
"name": "accessibility-specialist",
|
|
9
|
+
"pack": null,
|
|
10
|
+
"source": "packages/core/agents/accessibility-specialist.md",
|
|
11
|
+
"staticTokens": 848,
|
|
12
|
+
"type": "agent"
|
|
13
|
+
},
|
|
14
|
+
{
|
|
15
|
+
"description": "Reviews public API and integration contracts for compatibility, validation, failure semantics, idempotency, and operability.",
|
|
16
|
+
"id": "agent:api-integration-engineer",
|
|
17
|
+
"lines": 59,
|
|
18
|
+
"name": "api-integration-engineer",
|
|
19
|
+
"pack": null,
|
|
20
|
+
"source": "packages/core/agents/api-integration-engineer.md",
|
|
21
|
+
"staticTokens": 850,
|
|
22
|
+
"type": "agent"
|
|
23
|
+
},
|
|
24
|
+
{
|
|
25
|
+
"description": "Read-only mapper of an unfamiliar codebase. Returns a compact structured map — entrypoints, main flows, dependencies, where things live. Does not judge or fix. Protects the main context window.",
|
|
26
|
+
"id": "agent:code-explorer",
|
|
27
|
+
"lines": 94,
|
|
28
|
+
"name": "code-explorer",
|
|
29
|
+
"pack": null,
|
|
30
|
+
"source": "packages/core/agents/code-explorer.md",
|
|
31
|
+
"staticTokens": 1019,
|
|
32
|
+
"type": "agent"
|
|
33
|
+
},
|
|
34
|
+
{
|
|
35
|
+
"description": "Reviews persistent schema changes, compatibility, backfills, locking, rollback, and production migration evidence.",
|
|
36
|
+
"id": "agent:data-migration-engineer",
|
|
37
|
+
"lines": 59,
|
|
38
|
+
"name": "data-migration-engineer",
|
|
39
|
+
"pack": null,
|
|
40
|
+
"source": "packages/core/agents/data-migration-engineer.md",
|
|
41
|
+
"staticTokens": 842,
|
|
42
|
+
"type": "agent"
|
|
43
|
+
},
|
|
44
|
+
{
|
|
45
|
+
"description": "Reviews developer-facing APIs, CLI, SDK, docs, onboarding, errors, examples, upgrades, and measured time to first success.",
|
|
46
|
+
"id": "agent:devex-docs-engineer",
|
|
47
|
+
"lines": 57,
|
|
48
|
+
"name": "devex-docs-engineer",
|
|
49
|
+
"pack": null,
|
|
50
|
+
"source": "packages/core/agents/devex-docs-engineer.md",
|
|
51
|
+
"staticTokens": 834,
|
|
52
|
+
"type": "agent"
|
|
53
|
+
},
|
|
54
|
+
{
|
|
55
|
+
"description": "Judges a diff against VoidCorp doctrine that hooks/reviewers miss: weak tests, over-abstraction, broken boundaries, anti-bloat. Read-only; routes security to security-audit, bugs to /void-code-review.",
|
|
56
|
+
"id": "agent:doctrine-critic",
|
|
57
|
+
"lines": 91,
|
|
58
|
+
"name": "doctrine-critic",
|
|
59
|
+
"pack": null,
|
|
60
|
+
"source": "packages/core/agents/doctrine-critic.md",
|
|
61
|
+
"staticTokens": 1130,
|
|
62
|
+
"type": "agent"
|
|
63
|
+
},
|
|
64
|
+
{
|
|
65
|
+
"description": "Reviews domain language, bounded contexts, aggregates, invariants, and translation boundaries without choosing infrastructure.",
|
|
66
|
+
"id": "agent:domain-architect",
|
|
67
|
+
"lines": 56,
|
|
68
|
+
"name": "domain-architect",
|
|
69
|
+
"pack": null,
|
|
70
|
+
"source": "packages/core/agents/domain-architect.md",
|
|
71
|
+
"staticTokens": 822,
|
|
72
|
+
"type": "agent"
|
|
73
|
+
},
|
|
74
|
+
{
|
|
75
|
+
"description": "Produces a build-ready UX brief from product intent, states, responsive needs, and accessibility constraints before UI implementation.",
|
|
76
|
+
"id": "agent:experience-designer",
|
|
77
|
+
"lines": 59,
|
|
78
|
+
"name": "experience-designer",
|
|
79
|
+
"pack": null,
|
|
80
|
+
"source": "packages/core/agents/experience-designer.md",
|
|
81
|
+
"staticTokens": 917,
|
|
82
|
+
"type": "agent"
|
|
83
|
+
},
|
|
84
|
+
{
|
|
85
|
+
"description": "Reviews frontend implementation structure, state modeling, responsive behavior, rendering boundaries, and design-system composition.",
|
|
86
|
+
"id": "agent:frontend-engineer",
|
|
87
|
+
"lines": 60,
|
|
88
|
+
"name": "frontend-engineer",
|
|
89
|
+
"pack": null,
|
|
90
|
+
"source": "packages/core/agents/frontend-engineer.md",
|
|
91
|
+
"staticTokens": 850,
|
|
92
|
+
"type": "agent"
|
|
93
|
+
},
|
|
94
|
+
{
|
|
95
|
+
"description": "Performs an independent diff review for correctness, maintainability, boundary compliance, and evidence-backed release blockers.",
|
|
96
|
+
"id": "agent:independent-code-reviewer",
|
|
97
|
+
"lines": 61,
|
|
98
|
+
"name": "independent-code-reviewer",
|
|
99
|
+
"pack": null,
|
|
100
|
+
"source": "packages/core/agents/independent-code-reviewer.md",
|
|
101
|
+
"staticTokens": 1361,
|
|
102
|
+
"type": "agent"
|
|
103
|
+
},
|
|
104
|
+
{
|
|
105
|
+
"description": "Read-only planner producing a sequenced, reversible migration plan (expand-contract, two-phase). Planning only, never execution. Complements migrations; routes execution to tdd/plan.",
|
|
106
|
+
"id": "agent:migration-planner",
|
|
107
|
+
"lines": 97,
|
|
108
|
+
"name": "migration-planner",
|
|
109
|
+
"pack": null,
|
|
110
|
+
"source": "packages/core/agents/migration-planner.md",
|
|
111
|
+
"staticTokens": 1160,
|
|
112
|
+
"type": "agent"
|
|
113
|
+
},
|
|
114
|
+
{
|
|
115
|
+
"description": "Reviews runtime reliability, telemetry, SLOs, failure containment, capacity, recovery, and actionable operational evidence.",
|
|
116
|
+
"id": "agent:observability-sre-engineer",
|
|
117
|
+
"lines": 59,
|
|
118
|
+
"name": "observability-sre-engineer",
|
|
119
|
+
"pack": null,
|
|
120
|
+
"source": "packages/core/agents/observability-sre-engineer.md",
|
|
121
|
+
"staticTokens": 846,
|
|
122
|
+
"type": "agent"
|
|
123
|
+
},
|
|
124
|
+
{
|
|
125
|
+
"description": "Reviews PDF inputs or deliverables for safe handling, faithful rendering, pagination, accessibility, and artifact evidence.",
|
|
126
|
+
"id": "agent:pdf-specialist",
|
|
127
|
+
"lines": 58,
|
|
128
|
+
"name": "pdf-specialist",
|
|
129
|
+
"pack": null,
|
|
130
|
+
"source": "packages/core/agents/pdf-specialist.md",
|
|
131
|
+
"staticTokens": 838,
|
|
132
|
+
"type": "agent"
|
|
133
|
+
},
|
|
134
|
+
{
|
|
135
|
+
"description": "Reviews measured latency, throughput, memory, bundle, query, and cost budgets against representative workloads.",
|
|
136
|
+
"id": "agent:performance-engineer",
|
|
137
|
+
"lines": 58,
|
|
138
|
+
"name": "performance-engineer",
|
|
139
|
+
"pack": null,
|
|
140
|
+
"source": "packages/core/agents/performance-engineer.md",
|
|
141
|
+
"staticTokens": 835,
|
|
142
|
+
"type": "agent"
|
|
143
|
+
},
|
|
144
|
+
{
|
|
145
|
+
"description": "Challenges product value, user outcome, scope, and acceptance criteria before implementation without inventing strategy.",
|
|
146
|
+
"id": "agent:product-challenger",
|
|
147
|
+
"lines": 55,
|
|
148
|
+
"name": "product-challenger",
|
|
149
|
+
"pack": null,
|
|
150
|
+
"source": "packages/core/agents/product-challenger.md",
|
|
151
|
+
"staticTokens": 828,
|
|
152
|
+
"type": "agent"
|
|
153
|
+
},
|
|
154
|
+
{
|
|
155
|
+
"description": "Reviews concrete trust boundaries and exploitable security risk without editing or attacking systems.",
|
|
156
|
+
"id": "agent:security-engineer",
|
|
157
|
+
"lines": 66,
|
|
158
|
+
"name": "security-engineer",
|
|
159
|
+
"pack": null,
|
|
160
|
+
"source": "packages/core/agents/security-engineer.md",
|
|
161
|
+
"staticTokens": 849,
|
|
162
|
+
"type": "agent"
|
|
163
|
+
},
|
|
164
|
+
{
|
|
165
|
+
"description": "Read-only hunter for silent failures only — empty catches, swallowed errors, un-awaited promises, ignored return codes, .catch(()=>{}). Not a general review. Routes bugs to /void-code-review.",
|
|
166
|
+
"id": "agent:silent-failure-hunter",
|
|
167
|
+
"lines": 94,
|
|
168
|
+
"name": "silent-failure-hunter",
|
|
169
|
+
"pack": null,
|
|
170
|
+
"source": "packages/core/agents/silent-failure-hunter.md",
|
|
171
|
+
"staticTokens": 1175,
|
|
172
|
+
"type": "agent"
|
|
173
|
+
},
|
|
174
|
+
{
|
|
175
|
+
"description": "Reviews architecture boundaries, trade-offs, and reversibility without editing the project.",
|
|
176
|
+
"id": "agent:solution-architect",
|
|
177
|
+
"lines": 57,
|
|
178
|
+
"name": "solution-architect",
|
|
179
|
+
"pack": null,
|
|
180
|
+
"source": "packages/core/agents/solution-architect.md",
|
|
181
|
+
"staticTokens": 814,
|
|
182
|
+
"type": "agent"
|
|
183
|
+
},
|
|
184
|
+
{
|
|
185
|
+
"description": "Reviews behavioral coverage, failure paths, and release evidence without editing the project.",
|
|
186
|
+
"id": "agent:test-qa-engineer",
|
|
187
|
+
"lines": 60,
|
|
188
|
+
"name": "test-qa-engineer",
|
|
189
|
+
"pack": null,
|
|
190
|
+
"source": "packages/core/agents/test-qa-engineer.md",
|
|
191
|
+
"staticTokens": 819,
|
|
192
|
+
"type": "agent"
|
|
193
|
+
},
|
|
194
|
+
{
|
|
195
|
+
"description": "Read-only judge of TYPE DESIGN only — illegal states representable, primitive obsession, missing discriminated unions, leaky boundary types. Not a general review. Routes bugs to /void-code-review.",
|
|
196
|
+
"id": "agent:type-design-analyzer",
|
|
197
|
+
"lines": 93,
|
|
198
|
+
"name": "type-design-analyzer",
|
|
199
|
+
"pack": null,
|
|
200
|
+
"source": "packages/core/agents/type-design-analyzer.md",
|
|
201
|
+
"staticTokens": 1189,
|
|
202
|
+
"type": "agent"
|
|
203
|
+
},
|
|
204
|
+
{
|
|
205
|
+
"description": "Independently reviews rendered UI craft, responsive states, accessibility, and current-diff visual evidence after implementation.",
|
|
206
|
+
"id": "agent:visual-craft-director",
|
|
207
|
+
"lines": 62,
|
|
208
|
+
"name": "visual-craft-director",
|
|
209
|
+
"pack": null,
|
|
210
|
+
"source": "packages/core/agents/visual-craft-director.md",
|
|
211
|
+
"staticTokens": 1324,
|
|
212
|
+
"type": "agent"
|
|
213
|
+
},
|
|
214
|
+
{
|
|
215
|
+
"description": "",
|
|
216
|
+
"id": "hook:activation-meter",
|
|
217
|
+
"lines": 13,
|
|
218
|
+
"name": "activation-meter",
|
|
219
|
+
"pack": null,
|
|
220
|
+
"source": "packages/core/hooks/activation-meter.sh",
|
|
221
|
+
"staticTokens": 108,
|
|
222
|
+
"type": "hook"
|
|
223
|
+
},
|
|
224
|
+
{
|
|
225
|
+
"description": "",
|
|
226
|
+
"id": "hook:anti-ai-slop-grep",
|
|
227
|
+
"lines": 38,
|
|
228
|
+
"name": "anti-ai-slop-grep",
|
|
229
|
+
"pack": null,
|
|
230
|
+
"source": "packages/core/hooks/anti-ai-slop-grep.sh",
|
|
231
|
+
"staticTokens": 366,
|
|
232
|
+
"type": "hook"
|
|
233
|
+
},
|
|
234
|
+
{
|
|
235
|
+
"description": "",
|
|
236
|
+
"id": "hook:auto-format",
|
|
237
|
+
"lines": 9,
|
|
238
|
+
"name": "auto-format",
|
|
239
|
+
"pack": null,
|
|
240
|
+
"source": "packages/core/hooks/auto-format.sh",
|
|
241
|
+
"staticTokens": 84,
|
|
242
|
+
"type": "hook"
|
|
243
|
+
},
|
|
244
|
+
{
|
|
245
|
+
"description": "",
|
|
246
|
+
"id": "hook:axe-precommit",
|
|
247
|
+
"lines": 35,
|
|
248
|
+
"name": "axe-precommit",
|
|
249
|
+
"pack": null,
|
|
250
|
+
"source": "packages/core/hooks/axe-precommit.sh",
|
|
251
|
+
"staticTokens": 326,
|
|
252
|
+
"type": "hook"
|
|
253
|
+
},
|
|
254
|
+
{
|
|
255
|
+
"description": "",
|
|
256
|
+
"id": "hook:block-dangerous-bash",
|
|
257
|
+
"lines": 10,
|
|
258
|
+
"name": "block-dangerous-bash",
|
|
259
|
+
"pack": null,
|
|
260
|
+
"source": "packages/core/hooks/block-dangerous-bash.sh",
|
|
261
|
+
"staticTokens": 96,
|
|
262
|
+
"type": "hook"
|
|
263
|
+
},
|
|
264
|
+
{
|
|
265
|
+
"description": "",
|
|
266
|
+
"id": "hook:block-protected-push",
|
|
267
|
+
"lines": 81,
|
|
268
|
+
"name": "block-protected-push",
|
|
269
|
+
"pack": null,
|
|
270
|
+
"source": "packages/core/hooks/block-protected-push.sh",
|
|
271
|
+
"staticTokens": 971,
|
|
272
|
+
"type": "hook"
|
|
273
|
+
},
|
|
274
|
+
{
|
|
275
|
+
"description": "",
|
|
276
|
+
"id": "hook:boundary-direction-check",
|
|
277
|
+
"lines": 10,
|
|
278
|
+
"name": "boundary-direction-check",
|
|
279
|
+
"pack": null,
|
|
280
|
+
"source": "packages/core/hooks/boundary-direction-check.sh",
|
|
281
|
+
"staticTokens": 96,
|
|
282
|
+
"type": "hook"
|
|
283
|
+
},
|
|
284
|
+
{
|
|
285
|
+
"description": "",
|
|
286
|
+
"id": "hook:control-character-grep",
|
|
287
|
+
"lines": 10,
|
|
288
|
+
"name": "control-character-grep",
|
|
289
|
+
"pack": null,
|
|
290
|
+
"source": "packages/core/hooks/control-character-grep.sh",
|
|
291
|
+
"staticTokens": 96,
|
|
292
|
+
"type": "hook"
|
|
293
|
+
},
|
|
294
|
+
{
|
|
295
|
+
"description": "",
|
|
296
|
+
"id": "hook:large-cl-grep",
|
|
297
|
+
"lines": 9,
|
|
298
|
+
"name": "large-cl-grep",
|
|
299
|
+
"pack": null,
|
|
300
|
+
"source": "packages/core/hooks/large-cl-grep.sh",
|
|
301
|
+
"staticTokens": 83,
|
|
302
|
+
"type": "hook"
|
|
303
|
+
},
|
|
304
|
+
{
|
|
305
|
+
"description": "",
|
|
306
|
+
"id": "hook:llm-cost-precommit",
|
|
307
|
+
"lines": 55,
|
|
308
|
+
"name": "llm-cost-precommit",
|
|
309
|
+
"pack": null,
|
|
310
|
+
"source": "packages/core/hooks/llm-cost-precommit.sh",
|
|
311
|
+
"staticTokens": 538,
|
|
312
|
+
"type": "hook"
|
|
313
|
+
},
|
|
314
|
+
{
|
|
315
|
+
"description": "",
|
|
316
|
+
"id": "hook:migration-lint",
|
|
317
|
+
"lines": 58,
|
|
318
|
+
"name": "migration-lint",
|
|
319
|
+
"pack": null,
|
|
320
|
+
"source": "packages/core/hooks/migration-lint.sh",
|
|
321
|
+
"staticTokens": 640,
|
|
322
|
+
"type": "hook"
|
|
323
|
+
},
|
|
324
|
+
{
|
|
325
|
+
"description": "",
|
|
326
|
+
"id": "hook:migration-pr-template",
|
|
327
|
+
"lines": 55,
|
|
328
|
+
"name": "migration-pr-template",
|
|
329
|
+
"pack": null,
|
|
330
|
+
"source": "packages/core/hooks/migration-pr-template.sh",
|
|
331
|
+
"staticTokens": 426,
|
|
332
|
+
"type": "hook"
|
|
333
|
+
},
|
|
334
|
+
{
|
|
335
|
+
"description": "",
|
|
336
|
+
"id": "hook:no-ai-design-slop",
|
|
337
|
+
"lines": 10,
|
|
338
|
+
"name": "no-ai-design-slop",
|
|
339
|
+
"pack": null,
|
|
340
|
+
"source": "packages/core/hooks/no-ai-design-slop.sh",
|
|
341
|
+
"staticTokens": 94,
|
|
342
|
+
"type": "hook"
|
|
343
|
+
},
|
|
344
|
+
{
|
|
345
|
+
"description": "",
|
|
346
|
+
"id": "hook:no-any-grep",
|
|
347
|
+
"lines": 10,
|
|
348
|
+
"name": "no-any-grep",
|
|
349
|
+
"pack": null,
|
|
350
|
+
"source": "packages/core/hooks/no-any-grep.sh",
|
|
351
|
+
"staticTokens": 93,
|
|
352
|
+
"type": "hook"
|
|
353
|
+
},
|
|
354
|
+
{
|
|
355
|
+
"description": "",
|
|
356
|
+
"id": "hook:no-as-cast-grep",
|
|
357
|
+
"lines": 10,
|
|
358
|
+
"name": "no-as-cast-grep",
|
|
359
|
+
"pack": null,
|
|
360
|
+
"source": "packages/core/hooks/no-as-cast-grep.sh",
|
|
361
|
+
"staticTokens": 94,
|
|
362
|
+
"type": "hook"
|
|
363
|
+
},
|
|
364
|
+
{
|
|
365
|
+
"description": "",
|
|
366
|
+
"id": "hook:no-console-log-grep",
|
|
367
|
+
"lines": 10,
|
|
368
|
+
"name": "no-console-log-grep",
|
|
369
|
+
"pack": null,
|
|
370
|
+
"source": "packages/core/hooks/no-console-log-grep.sh",
|
|
371
|
+
"staticTokens": 94,
|
|
372
|
+
"type": "hook"
|
|
373
|
+
},
|
|
374
|
+
{
|
|
375
|
+
"description": "",
|
|
376
|
+
"id": "hook:no-null-grep",
|
|
377
|
+
"lines": 10,
|
|
378
|
+
"name": "no-null-grep",
|
|
379
|
+
"pack": null,
|
|
380
|
+
"source": "packages/core/hooks/no-null-grep.sh",
|
|
381
|
+
"staticTokens": 93,
|
|
382
|
+
"type": "hook"
|
|
383
|
+
},
|
|
384
|
+
{
|
|
385
|
+
"description": "",
|
|
386
|
+
"id": "hook:no-only-no-skip",
|
|
387
|
+
"lines": 10,
|
|
388
|
+
"name": "no-only-no-skip",
|
|
389
|
+
"pack": null,
|
|
390
|
+
"source": "packages/core/hooks/no-only-no-skip.sh",
|
|
391
|
+
"staticTokens": 95,
|
|
392
|
+
"type": "hook"
|
|
393
|
+
},
|
|
394
|
+
{
|
|
395
|
+
"description": "",
|
|
396
|
+
"id": "hook:outcome-meter",
|
|
397
|
+
"lines": 13,
|
|
398
|
+
"name": "outcome-meter",
|
|
399
|
+
"pack": null,
|
|
400
|
+
"source": "packages/core/hooks/outcome-meter.sh",
|
|
401
|
+
"staticTokens": 104,
|
|
402
|
+
"type": "hook"
|
|
403
|
+
},
|
|
404
|
+
{
|
|
405
|
+
"description": "",
|
|
406
|
+
"id": "hook:pre-PR-review-evidence",
|
|
407
|
+
"lines": 47,
|
|
408
|
+
"name": "pre-PR-review-evidence",
|
|
409
|
+
"pack": null,
|
|
410
|
+
"source": "packages/core/hooks/pre-PR-review-evidence.sh",
|
|
411
|
+
"staticTokens": 376,
|
|
412
|
+
"type": "hook"
|
|
413
|
+
},
|
|
414
|
+
{
|
|
415
|
+
"description": "",
|
|
416
|
+
"id": "hook:protect-sensitive-files",
|
|
417
|
+
"lines": 10,
|
|
418
|
+
"name": "protect-sensitive-files",
|
|
419
|
+
"pack": null,
|
|
420
|
+
"source": "packages/core/hooks/protect-sensitive-files.sh",
|
|
421
|
+
"staticTokens": 95,
|
|
422
|
+
"type": "hook"
|
|
423
|
+
},
|
|
424
|
+
{
|
|
425
|
+
"description": "",
|
|
426
|
+
"id": "hook:refactor-named-grep",
|
|
427
|
+
"lines": 49,
|
|
428
|
+
"name": "refactor-named-grep",
|
|
429
|
+
"pack": null,
|
|
430
|
+
"source": "packages/core/hooks/refactor-named-grep.sh",
|
|
431
|
+
"staticTokens": 367,
|
|
432
|
+
"type": "hook"
|
|
433
|
+
},
|
|
434
|
+
{
|
|
435
|
+
"description": "",
|
|
436
|
+
"id": "hook:secret-in-content",
|
|
437
|
+
"lines": 10,
|
|
438
|
+
"name": "secret-in-content",
|
|
439
|
+
"pack": null,
|
|
440
|
+
"source": "packages/core/hooks/secret-in-content.sh",
|
|
441
|
+
"staticTokens": 95,
|
|
442
|
+
"type": "hook"
|
|
443
|
+
},
|
|
444
|
+
{
|
|
445
|
+
"description": "",
|
|
446
|
+
"id": "hook:sessionstart-context",
|
|
447
|
+
"lines": 9,
|
|
448
|
+
"name": "sessionstart-context",
|
|
449
|
+
"pack": null,
|
|
450
|
+
"source": "packages/core/hooks/sessionstart-context.sh",
|
|
451
|
+
"staticTokens": 87,
|
|
452
|
+
"type": "hook"
|
|
453
|
+
},
|
|
454
|
+
{
|
|
455
|
+
"description": "",
|
|
456
|
+
"id": "hook:stop-typecheck",
|
|
457
|
+
"lines": 9,
|
|
458
|
+
"name": "stop-typecheck",
|
|
459
|
+
"pack": null,
|
|
460
|
+
"source": "packages/core/hooks/stop-typecheck.sh",
|
|
461
|
+
"staticTokens": 84,
|
|
462
|
+
"type": "hook"
|
|
463
|
+
},
|
|
464
|
+
{
|
|
465
|
+
"description": "",
|
|
466
|
+
"id": "hook:tdd-guard",
|
|
467
|
+
"lines": 10,
|
|
468
|
+
"name": "tdd-guard",
|
|
469
|
+
"pack": null,
|
|
470
|
+
"source": "packages/core/hooks/tdd-guard.sh",
|
|
471
|
+
"staticTokens": 94,
|
|
472
|
+
"type": "hook"
|
|
473
|
+
},
|
|
474
|
+
{
|
|
475
|
+
"description": "",
|
|
476
|
+
"id": "hook:test-name-lint",
|
|
477
|
+
"lines": 10,
|
|
478
|
+
"name": "test-name-lint",
|
|
479
|
+
"pack": null,
|
|
480
|
+
"source": "packages/core/hooks/test-name-lint.sh",
|
|
481
|
+
"staticTokens": 94,
|
|
482
|
+
"type": "hook"
|
|
483
|
+
},
|
|
484
|
+
{
|
|
485
|
+
"description": "",
|
|
486
|
+
"id": "hook:tidying-commit-prefix",
|
|
487
|
+
"lines": 37,
|
|
488
|
+
"name": "tidying-commit-prefix",
|
|
489
|
+
"pack": null,
|
|
490
|
+
"source": "packages/core/hooks/tidying-commit-prefix.sh",
|
|
491
|
+
"staticTokens": 300,
|
|
492
|
+
"type": "hook"
|
|
493
|
+
},
|
|
494
|
+
{
|
|
495
|
+
"description": "",
|
|
496
|
+
"id": "hook:trim-large-output",
|
|
497
|
+
"lines": 9,
|
|
498
|
+
"name": "trim-large-output",
|
|
499
|
+
"pack": null,
|
|
500
|
+
"source": "packages/core/hooks/trim-large-output.sh",
|
|
501
|
+
"staticTokens": 83,
|
|
502
|
+
"type": "hook"
|
|
503
|
+
},
|
|
504
|
+
{
|
|
505
|
+
"description": "",
|
|
506
|
+
"id": "hook:tsc-noemit-precommit",
|
|
507
|
+
"lines": 22,
|
|
508
|
+
"name": "tsc-noemit-precommit",
|
|
509
|
+
"pack": null,
|
|
510
|
+
"source": "packages/core/hooks/tsc-noemit-precommit.sh",
|
|
511
|
+
"staticTokens": 192,
|
|
512
|
+
"type": "hook"
|
|
513
|
+
},
|
|
514
|
+
{
|
|
515
|
+
"description": "",
|
|
516
|
+
"id": "hook:ubiquitous-language-lint",
|
|
517
|
+
"lines": 58,
|
|
518
|
+
"name": "ubiquitous-language-lint",
|
|
519
|
+
"pack": null,
|
|
520
|
+
"source": "packages/core/hooks/ubiquitous-language-lint.sh",
|
|
521
|
+
"staticTokens": 533,
|
|
522
|
+
"type": "hook"
|
|
523
|
+
},
|
|
524
|
+
{
|
|
525
|
+
"description": "",
|
|
526
|
+
"id": "hook:viewport-screenshot-gate",
|
|
527
|
+
"lines": 48,
|
|
528
|
+
"name": "viewport-screenshot-gate",
|
|
529
|
+
"pack": null,
|
|
530
|
+
"source": "packages/core/hooks/viewport-screenshot-gate.sh",
|
|
531
|
+
"staticTokens": 542,
|
|
532
|
+
"type": "hook"
|
|
533
|
+
},
|
|
534
|
+
{
|
|
535
|
+
"description": "",
|
|
536
|
+
"id": "pack:pack-mobile",
|
|
537
|
+
"lines": 0,
|
|
538
|
+
"name": "pack-mobile",
|
|
539
|
+
"pack": null,
|
|
540
|
+
"source": "packages/packs/pack-mobile",
|
|
541
|
+
"staticTokens": 0,
|
|
542
|
+
"type": "pack"
|
|
543
|
+
},
|
|
544
|
+
{
|
|
545
|
+
"description": "",
|
|
546
|
+
"id": "pack:pack-monorepo",
|
|
547
|
+
"lines": 0,
|
|
548
|
+
"name": "pack-monorepo",
|
|
549
|
+
"pack": null,
|
|
550
|
+
"source": "packages/packs/pack-monorepo",
|
|
551
|
+
"staticTokens": 0,
|
|
552
|
+
"type": "pack"
|
|
553
|
+
},
|
|
554
|
+
{
|
|
555
|
+
"description": "",
|
|
556
|
+
"id": "pack:pack-nextjs",
|
|
557
|
+
"lines": 0,
|
|
558
|
+
"name": "pack-nextjs",
|
|
559
|
+
"pack": null,
|
|
560
|
+
"source": "packages/packs/pack-nextjs",
|
|
561
|
+
"staticTokens": 0,
|
|
562
|
+
"type": "pack"
|
|
563
|
+
},
|
|
564
|
+
{
|
|
565
|
+
"description": "",
|
|
566
|
+
"id": "pack:pack-pwa",
|
|
567
|
+
"lines": 0,
|
|
568
|
+
"name": "pack-pwa",
|
|
569
|
+
"pack": null,
|
|
570
|
+
"source": "packages/packs/pack-pwa",
|
|
571
|
+
"staticTokens": 0,
|
|
572
|
+
"type": "pack"
|
|
573
|
+
},
|
|
574
|
+
{
|
|
575
|
+
"description": "",
|
|
576
|
+
"id": "pack:pack-react",
|
|
577
|
+
"lines": 0,
|
|
578
|
+
"name": "pack-react",
|
|
579
|
+
"pack": null,
|
|
580
|
+
"source": "packages/packs/pack-react",
|
|
581
|
+
"staticTokens": 0,
|
|
582
|
+
"type": "pack"
|
|
583
|
+
},
|
|
584
|
+
{
|
|
585
|
+
"description": "",
|
|
586
|
+
"id": "pack:pack-server",
|
|
587
|
+
"lines": 0,
|
|
588
|
+
"name": "pack-server",
|
|
589
|
+
"pack": null,
|
|
590
|
+
"source": "packages/packs/pack-server",
|
|
591
|
+
"staticTokens": 0,
|
|
592
|
+
"type": "pack"
|
|
593
|
+
},
|
|
594
|
+
{
|
|
595
|
+
"description": "",
|
|
596
|
+
"id": "profile:base",
|
|
597
|
+
"lines": 29,
|
|
598
|
+
"name": "base",
|
|
599
|
+
"pack": null,
|
|
600
|
+
"source": "packages/core/profiles/base.yaml",
|
|
601
|
+
"staticTokens": 184,
|
|
602
|
+
"type": "profile"
|
|
603
|
+
},
|
|
604
|
+
{
|
|
605
|
+
"description": "",
|
|
606
|
+
"id": "profile:expo",
|
|
607
|
+
"lines": 35,
|
|
608
|
+
"name": "expo",
|
|
609
|
+
"pack": null,
|
|
610
|
+
"source": "packages/core/profiles/expo.yaml",
|
|
611
|
+
"staticTokens": 274,
|
|
612
|
+
"type": "profile"
|
|
613
|
+
},
|
|
614
|
+
{
|
|
615
|
+
"description": "",
|
|
616
|
+
"id": "profile:expo-config",
|
|
617
|
+
"lines": 36,
|
|
618
|
+
"name": "expo-config",
|
|
619
|
+
"pack": null,
|
|
620
|
+
"source": "packages/core/profiles/expo-config.yaml",
|
|
621
|
+
"staticTokens": 260,
|
|
622
|
+
"type": "profile"
|
|
623
|
+
},
|
|
624
|
+
{
|
|
625
|
+
"description": "",
|
|
626
|
+
"id": "profile:monorepo",
|
|
627
|
+
"lines": 33,
|
|
628
|
+
"name": "monorepo",
|
|
629
|
+
"pack": null,
|
|
630
|
+
"source": "packages/core/profiles/monorepo.yaml",
|
|
631
|
+
"staticTokens": 265,
|
|
632
|
+
"type": "profile"
|
|
633
|
+
},
|
|
634
|
+
{
|
|
635
|
+
"description": "",
|
|
636
|
+
"id": "profile:nextjs",
|
|
637
|
+
"lines": 31,
|
|
638
|
+
"name": "nextjs",
|
|
639
|
+
"pack": null,
|
|
640
|
+
"source": "packages/core/profiles/nextjs.yaml",
|
|
641
|
+
"staticTokens": 227,
|
|
642
|
+
"type": "profile"
|
|
643
|
+
},
|
|
644
|
+
{
|
|
645
|
+
"description": "",
|
|
646
|
+
"id": "profile:nextjs-config",
|
|
647
|
+
"lines": 31,
|
|
648
|
+
"name": "nextjs-config",
|
|
649
|
+
"pack": null,
|
|
650
|
+
"source": "packages/core/profiles/nextjs-config.yaml",
|
|
651
|
+
"staticTokens": 213,
|
|
652
|
+
"type": "profile"
|
|
653
|
+
},
|
|
654
|
+
{
|
|
655
|
+
"description": "",
|
|
656
|
+
"id": "profile:node-server",
|
|
657
|
+
"lines": 31,
|
|
658
|
+
"name": "node-server",
|
|
659
|
+
"pack": null,
|
|
660
|
+
"source": "packages/core/profiles/node-server.yaml",
|
|
661
|
+
"staticTokens": 247,
|
|
662
|
+
"type": "profile"
|
|
663
|
+
},
|
|
664
|
+
{
|
|
665
|
+
"description": "",
|
|
666
|
+
"id": "profile:pwa",
|
|
667
|
+
"lines": 33,
|
|
668
|
+
"name": "pwa",
|
|
669
|
+
"pack": null,
|
|
670
|
+
"source": "packages/core/profiles/pwa.yaml",
|
|
671
|
+
"staticTokens": 277,
|
|
672
|
+
"type": "profile"
|
|
673
|
+
},
|
|
674
|
+
{
|
|
675
|
+
"description": "",
|
|
676
|
+
"id": "profile:react",
|
|
677
|
+
"lines": 39,
|
|
678
|
+
"name": "react",
|
|
679
|
+
"pack": null,
|
|
680
|
+
"source": "packages/core/profiles/react.yaml",
|
|
681
|
+
"staticTokens": 256,
|
|
682
|
+
"type": "profile"
|
|
683
|
+
},
|
|
684
|
+
{
|
|
685
|
+
"description": "",
|
|
686
|
+
"id": "profile:sql",
|
|
687
|
+
"lines": 39,
|
|
688
|
+
"name": "sql",
|
|
689
|
+
"pack": null,
|
|
690
|
+
"source": "packages/core/profiles/sql.yaml",
|
|
691
|
+
"staticTokens": 299,
|
|
692
|
+
"type": "profile"
|
|
693
|
+
},
|
|
694
|
+
{
|
|
695
|
+
"description": "",
|
|
696
|
+
"id": "profile:typescript",
|
|
697
|
+
"lines": 39,
|
|
698
|
+
"name": "typescript",
|
|
699
|
+
"pack": null,
|
|
700
|
+
"source": "packages/core/profiles/typescript.yaml",
|
|
701
|
+
"staticTokens": 277,
|
|
702
|
+
"type": "profile"
|
|
703
|
+
},
|
|
704
|
+
{
|
|
705
|
+
"description": "Configure eas.json profiles (development, preview, production) with the right env, bundle ID, signing, distribution. The 3-profile structure that fits 95% of Expo apps.",
|
|
706
|
+
"enforcement": {
|
|
707
|
+
"floor": "ci",
|
|
708
|
+
"inline": {
|
|
709
|
+
"claude": "active",
|
|
710
|
+
"codex": "active",
|
|
711
|
+
"hermes": "ci-only"
|
|
712
|
+
}
|
|
713
|
+
},
|
|
714
|
+
"evalTargets": [
|
|
715
|
+
{
|
|
716
|
+
"provider": "anthropic",
|
|
717
|
+
"runtime": "claude",
|
|
718
|
+
"tier": "opus"
|
|
719
|
+
}
|
|
720
|
+
],
|
|
721
|
+
"id": "skill:pack-mobile/void-eas-build-profile",
|
|
722
|
+
"lines": 164,
|
|
723
|
+
"name": "void-eas-build-profile",
|
|
724
|
+
"owner": "folpe",
|
|
725
|
+
"pack": "pack-mobile",
|
|
726
|
+
"runtimes": [
|
|
727
|
+
"claude",
|
|
728
|
+
"codex"
|
|
729
|
+
],
|
|
730
|
+
"source": "packages/packs/pack-mobile/skills/void-eas-build-profile/SKILL.md",
|
|
731
|
+
"staticTokens": 1465,
|
|
732
|
+
"type": "skill"
|
|
733
|
+
},
|
|
734
|
+
{
|
|
735
|
+
"description": "Add native functionality to an Expo app via config plugins, never by ejecting. Pick existing Expo modules first, write a custom plugin only when none fits. Document everything in app.config.ts.",
|
|
736
|
+
"enforcement": {
|
|
737
|
+
"floor": "ci",
|
|
738
|
+
"inline": {
|
|
739
|
+
"claude": "active",
|
|
740
|
+
"codex": "active",
|
|
741
|
+
"hermes": "ci-only"
|
|
742
|
+
}
|
|
743
|
+
},
|
|
744
|
+
"evalTargets": [
|
|
745
|
+
{
|
|
746
|
+
"provider": "anthropic",
|
|
747
|
+
"runtime": "claude",
|
|
748
|
+
"tier": "opus"
|
|
749
|
+
}
|
|
750
|
+
],
|
|
751
|
+
"id": "skill:pack-mobile/void-expo-config-plugins",
|
|
752
|
+
"lines": 178,
|
|
753
|
+
"name": "void-expo-config-plugins",
|
|
754
|
+
"owner": "folpe",
|
|
755
|
+
"pack": "pack-mobile",
|
|
756
|
+
"runtimes": [
|
|
757
|
+
"claude",
|
|
758
|
+
"codex"
|
|
759
|
+
],
|
|
760
|
+
"source": "packages/packs/pack-mobile/skills/void-expo-config-plugins/SKILL.md",
|
|
761
|
+
"staticTokens": 1561,
|
|
762
|
+
"type": "skill"
|
|
763
|
+
},
|
|
764
|
+
{
|
|
765
|
+
"description": "File-based routing in Expo via expo-router — layouts, tabs, modals, deep links. Mirrors Next.js App Router so monorepos can share mental model. Stack-aware navigation patterns.",
|
|
766
|
+
"enforcement": {
|
|
767
|
+
"floor": "ci",
|
|
768
|
+
"inline": {
|
|
769
|
+
"claude": "active",
|
|
770
|
+
"codex": "active",
|
|
771
|
+
"hermes": "ci-only"
|
|
772
|
+
}
|
|
773
|
+
},
|
|
774
|
+
"evalTargets": [
|
|
775
|
+
{
|
|
776
|
+
"provider": "anthropic",
|
|
777
|
+
"runtime": "claude",
|
|
778
|
+
"tier": "opus"
|
|
779
|
+
}
|
|
780
|
+
],
|
|
781
|
+
"id": "skill:pack-mobile/void-expo-router-pattern",
|
|
782
|
+
"lines": 209,
|
|
783
|
+
"name": "void-expo-router-pattern",
|
|
784
|
+
"owner": "folpe",
|
|
785
|
+
"pack": "pack-mobile",
|
|
786
|
+
"runtimes": [
|
|
787
|
+
"claude",
|
|
788
|
+
"codex"
|
|
789
|
+
],
|
|
790
|
+
"source": "packages/packs/pack-mobile/skills/void-expo-router-pattern/SKILL.md",
|
|
791
|
+
"staticTokens": 1608,
|
|
792
|
+
"type": "skill"
|
|
793
|
+
},
|
|
794
|
+
{
|
|
795
|
+
"description": "Ship JS-only fixes via EAS Update; full rebuild via EAS Build. Runtime versions, channels, rollback. The \"when can I OTA vs when do I rebuild\" decision.",
|
|
796
|
+
"enforcement": {
|
|
797
|
+
"floor": "ci",
|
|
798
|
+
"inline": {
|
|
799
|
+
"claude": "active",
|
|
800
|
+
"codex": "active",
|
|
801
|
+
"hermes": "ci-only"
|
|
802
|
+
}
|
|
803
|
+
},
|
|
804
|
+
"evalTargets": [
|
|
805
|
+
{
|
|
806
|
+
"provider": "anthropic",
|
|
807
|
+
"runtime": "claude",
|
|
808
|
+
"tier": "opus"
|
|
809
|
+
}
|
|
810
|
+
],
|
|
811
|
+
"id": "skill:pack-mobile/void-ota-update-strategy",
|
|
812
|
+
"lines": 194,
|
|
813
|
+
"name": "void-ota-update-strategy",
|
|
814
|
+
"owner": "folpe",
|
|
815
|
+
"pack": "pack-mobile",
|
|
816
|
+
"runtimes": [
|
|
817
|
+
"claude",
|
|
818
|
+
"codex"
|
|
819
|
+
],
|
|
820
|
+
"source": "packages/packs/pack-mobile/skills/void-ota-update-strategy/SKILL.md",
|
|
821
|
+
"staticTokens": 1748,
|
|
822
|
+
"type": "skill"
|
|
823
|
+
},
|
|
824
|
+
{
|
|
825
|
+
"description": "Enforce the @repo/* import direction in a Turborepo workspace. Concrete violations + fixes. Composes with core:hexagonal-architecture and the boundary-direction-check hook.",
|
|
826
|
+
"enforcement": {
|
|
827
|
+
"floor": "ci",
|
|
828
|
+
"inline": {
|
|
829
|
+
"claude": "active",
|
|
830
|
+
"codex": "active",
|
|
831
|
+
"hermes": "ci-only"
|
|
832
|
+
}
|
|
833
|
+
},
|
|
834
|
+
"evalTargets": [
|
|
835
|
+
{
|
|
836
|
+
"provider": "anthropic",
|
|
837
|
+
"runtime": "claude",
|
|
838
|
+
"tier": "opus"
|
|
839
|
+
}
|
|
840
|
+
],
|
|
841
|
+
"id": "skill:pack-monorepo/void-dependency-direction",
|
|
842
|
+
"lines": 160,
|
|
843
|
+
"name": "void-dependency-direction",
|
|
844
|
+
"owner": "folpe",
|
|
845
|
+
"pack": "pack-monorepo",
|
|
846
|
+
"runtimes": [
|
|
847
|
+
"claude",
|
|
848
|
+
"codex"
|
|
849
|
+
],
|
|
850
|
+
"source": "packages/packs/pack-monorepo/skills/void-dependency-direction/SKILL.md",
|
|
851
|
+
"staticTokens": 1417,
|
|
852
|
+
"type": "skill"
|
|
853
|
+
},
|
|
854
|
+
{
|
|
855
|
+
"description": "Decide whether code in apps/<app>/ should be extracted into a new packages/<name>/ workspace. Most extractions are premature; this skill is the decision gate.",
|
|
856
|
+
"enforcement": {
|
|
857
|
+
"floor": "ci",
|
|
858
|
+
"inline": {
|
|
859
|
+
"claude": "active",
|
|
860
|
+
"codex": "active",
|
|
861
|
+
"hermes": "ci-only"
|
|
862
|
+
}
|
|
863
|
+
},
|
|
864
|
+
"evalTargets": [
|
|
865
|
+
{
|
|
866
|
+
"provider": "anthropic",
|
|
867
|
+
"runtime": "claude",
|
|
868
|
+
"tier": "opus"
|
|
869
|
+
}
|
|
870
|
+
],
|
|
871
|
+
"id": "skill:pack-monorepo/void-package-extraction",
|
|
872
|
+
"lines": 70,
|
|
873
|
+
"name": "void-package-extraction",
|
|
874
|
+
"owner": "folpe",
|
|
875
|
+
"pack": "pack-monorepo",
|
|
876
|
+
"runtimes": [
|
|
877
|
+
"claude",
|
|
878
|
+
"codex"
|
|
879
|
+
],
|
|
880
|
+
"source": "packages/packs/pack-monorepo/skills/void-package-extraction/SKILL.md",
|
|
881
|
+
"staticTokens": 1057,
|
|
882
|
+
"type": "skill"
|
|
883
|
+
},
|
|
884
|
+
{
|
|
885
|
+
"description": "Create or extend a packages/<name>/ service in a harness-monorepo workspace: the 5+5 file layout, @repo/* boundaries, ports-and-adapters direction. Composes with hexagonal-architecture, DDD.",
|
|
886
|
+
"enforcement": {
|
|
887
|
+
"floor": "ci",
|
|
888
|
+
"inline": {
|
|
889
|
+
"claude": "active",
|
|
890
|
+
"codex": "active",
|
|
891
|
+
"hermes": "ci-only"
|
|
892
|
+
}
|
|
893
|
+
},
|
|
894
|
+
"evalTargets": [
|
|
895
|
+
{
|
|
896
|
+
"provider": "anthropic",
|
|
897
|
+
"runtime": "claude",
|
|
898
|
+
"tier": "opus"
|
|
899
|
+
}
|
|
900
|
+
],
|
|
901
|
+
"id": "skill:pack-monorepo/void-service-package",
|
|
902
|
+
"lines": 122,
|
|
903
|
+
"name": "void-service-package",
|
|
904
|
+
"owner": "folpe",
|
|
905
|
+
"pack": "pack-monorepo",
|
|
906
|
+
"runtimes": [
|
|
907
|
+
"claude",
|
|
908
|
+
"codex"
|
|
909
|
+
],
|
|
910
|
+
"source": "packages/packs/pack-monorepo/skills/void-service-package/SKILL.md",
|
|
911
|
+
"staticTokens": 1472,
|
|
912
|
+
"type": "skill"
|
|
913
|
+
},
|
|
914
|
+
{
|
|
915
|
+
"description": "Configure turbo.json tasks correctly — dependsOn, outputs, cache keys, persistent tasks, remote cache. Get build speed right without over-engineering.",
|
|
916
|
+
"enforcement": {
|
|
917
|
+
"floor": "ci",
|
|
918
|
+
"inline": {
|
|
919
|
+
"claude": "active",
|
|
920
|
+
"codex": "active",
|
|
921
|
+
"hermes": "ci-only"
|
|
922
|
+
}
|
|
923
|
+
},
|
|
924
|
+
"evalTargets": [
|
|
925
|
+
{
|
|
926
|
+
"provider": "anthropic",
|
|
927
|
+
"runtime": "claude",
|
|
928
|
+
"tier": "opus"
|
|
929
|
+
}
|
|
930
|
+
],
|
|
931
|
+
"id": "skill:pack-monorepo/void-turbo-pipeline-tuning",
|
|
932
|
+
"lines": 116,
|
|
933
|
+
"name": "void-turbo-pipeline-tuning",
|
|
934
|
+
"owner": "folpe",
|
|
935
|
+
"pack": "pack-monorepo",
|
|
936
|
+
"runtimes": [
|
|
937
|
+
"claude",
|
|
938
|
+
"codex"
|
|
939
|
+
],
|
|
940
|
+
"source": "packages/packs/pack-monorepo/skills/void-turbo-pipeline-tuning/SKILL.md",
|
|
941
|
+
"staticTokens": 1290,
|
|
942
|
+
"type": "skill"
|
|
943
|
+
},
|
|
944
|
+
{
|
|
945
|
+
"description": "Use Next.js 16 Cache Components correctly — when to opt in ('use cache'), when to opt out ('use no cache'), cache key strategy, scoping by user/org. Default is cached; uncache deliberately.",
|
|
946
|
+
"enforcement": {
|
|
947
|
+
"floor": "ci",
|
|
948
|
+
"inline": {
|
|
949
|
+
"claude": "active",
|
|
950
|
+
"codex": "active",
|
|
951
|
+
"hermes": "ci-only"
|
|
952
|
+
}
|
|
953
|
+
},
|
|
954
|
+
"evalTargets": [
|
|
955
|
+
{
|
|
956
|
+
"provider": "anthropic",
|
|
957
|
+
"runtime": "claude",
|
|
958
|
+
"tier": "opus"
|
|
959
|
+
}
|
|
960
|
+
],
|
|
961
|
+
"id": "skill:pack-nextjs/void-cache-component-pattern",
|
|
962
|
+
"lines": 162,
|
|
963
|
+
"name": "void-cache-component-pattern",
|
|
964
|
+
"owner": "folpe",
|
|
965
|
+
"pack": "pack-nextjs",
|
|
966
|
+
"runtimes": [
|
|
967
|
+
"claude",
|
|
968
|
+
"codex"
|
|
969
|
+
],
|
|
970
|
+
"source": "packages/packs/pack-nextjs/skills/void-cache-component-pattern/SKILL.md",
|
|
971
|
+
"staticTokens": 1720,
|
|
972
|
+
"type": "skill"
|
|
973
|
+
},
|
|
974
|
+
{
|
|
975
|
+
"description": "Wire instrumentation.ts in Next.js 16 — Sentry, pino logger, OpenTelemetry traces. Edge vs Node runtime split. The single place observability is bootstrapped.",
|
|
976
|
+
"enforcement": {
|
|
977
|
+
"floor": "ci",
|
|
978
|
+
"inline": {
|
|
979
|
+
"claude": "active",
|
|
980
|
+
"codex": "active",
|
|
981
|
+
"hermes": "ci-only"
|
|
982
|
+
}
|
|
983
|
+
},
|
|
984
|
+
"evalTargets": [
|
|
985
|
+
{
|
|
986
|
+
"provider": "anthropic",
|
|
987
|
+
"runtime": "claude",
|
|
988
|
+
"tier": "opus"
|
|
989
|
+
}
|
|
990
|
+
],
|
|
991
|
+
"id": "skill:pack-nextjs/void-instrumentation-setup",
|
|
992
|
+
"lines": 161,
|
|
993
|
+
"name": "void-instrumentation-setup",
|
|
994
|
+
"owner": "folpe",
|
|
995
|
+
"pack": "pack-nextjs",
|
|
996
|
+
"runtimes": [
|
|
997
|
+
"claude",
|
|
998
|
+
"codex"
|
|
999
|
+
],
|
|
1000
|
+
"source": "packages/packs/pack-nextjs/skills/void-instrumentation-setup/SKILL.md",
|
|
1001
|
+
"staticTokens": 1397,
|
|
1002
|
+
"type": "skill"
|
|
1003
|
+
},
|
|
1004
|
+
{
|
|
1005
|
+
"description": "Place loading.tsx, error.tsx, not-found.tsx files at the right level — neither too high (poor UX) nor too low (unhandled errors). The skeleton matches the layout it replaces.",
|
|
1006
|
+
"enforcement": {
|
|
1007
|
+
"floor": "ci",
|
|
1008
|
+
"inline": {
|
|
1009
|
+
"claude": "active",
|
|
1010
|
+
"codex": "active",
|
|
1011
|
+
"hermes": "ci-only"
|
|
1012
|
+
}
|
|
1013
|
+
},
|
|
1014
|
+
"evalTargets": [
|
|
1015
|
+
{
|
|
1016
|
+
"provider": "anthropic",
|
|
1017
|
+
"runtime": "claude",
|
|
1018
|
+
"tier": "opus"
|
|
1019
|
+
}
|
|
1020
|
+
],
|
|
1021
|
+
"id": "skill:pack-nextjs/void-loading-error-boundaries",
|
|
1022
|
+
"lines": 176,
|
|
1023
|
+
"name": "void-loading-error-boundaries",
|
|
1024
|
+
"owner": "folpe",
|
|
1025
|
+
"pack": "pack-nextjs",
|
|
1026
|
+
"runtimes": [
|
|
1027
|
+
"claude",
|
|
1028
|
+
"codex"
|
|
1029
|
+
],
|
|
1030
|
+
"source": "packages/packs/pack-nextjs/skills/void-loading-error-boundaries/SKILL.md",
|
|
1031
|
+
"staticTokens": 1663,
|
|
1032
|
+
"type": "skill"
|
|
1033
|
+
},
|
|
1034
|
+
{
|
|
1035
|
+
"description": "Use Next.js parallel routes (@slot) and intercepting routes ((.)foo) — when they're the right tool, when they're an anti-pattern. The \"modal that's also a deep-linkable page\" archetype.",
|
|
1036
|
+
"enforcement": {
|
|
1037
|
+
"floor": "ci",
|
|
1038
|
+
"inline": {
|
|
1039
|
+
"claude": "active",
|
|
1040
|
+
"codex": "active",
|
|
1041
|
+
"hermes": "ci-only"
|
|
1042
|
+
}
|
|
1043
|
+
},
|
|
1044
|
+
"evalTargets": [
|
|
1045
|
+
{
|
|
1046
|
+
"provider": "anthropic",
|
|
1047
|
+
"runtime": "claude",
|
|
1048
|
+
"tier": "opus"
|
|
1049
|
+
}
|
|
1050
|
+
],
|
|
1051
|
+
"id": "skill:pack-nextjs/void-parallel-routes-slots",
|
|
1052
|
+
"lines": 129,
|
|
1053
|
+
"name": "void-parallel-routes-slots",
|
|
1054
|
+
"owner": "folpe",
|
|
1055
|
+
"pack": "pack-nextjs",
|
|
1056
|
+
"runtimes": [
|
|
1057
|
+
"claude",
|
|
1058
|
+
"codex"
|
|
1059
|
+
],
|
|
1060
|
+
"source": "packages/packs/pack-nextjs/skills/void-parallel-routes-slots/SKILL.md",
|
|
1061
|
+
"staticTokens": 1314,
|
|
1062
|
+
"type": "skill"
|
|
1063
|
+
},
|
|
1064
|
+
{
|
|
1065
|
+
"description": "Decide when to use a (route-group), what to name it, and how to share layouts. The void-machine convention groups by trust boundary, not by visual section.",
|
|
1066
|
+
"enforcement": {
|
|
1067
|
+
"floor": "ci",
|
|
1068
|
+
"inline": {
|
|
1069
|
+
"claude": "active",
|
|
1070
|
+
"codex": "active",
|
|
1071
|
+
"hermes": "ci-only"
|
|
1072
|
+
}
|
|
1073
|
+
},
|
|
1074
|
+
"evalTargets": [
|
|
1075
|
+
{
|
|
1076
|
+
"provider": "anthropic",
|
|
1077
|
+
"runtime": "claude",
|
|
1078
|
+
"tier": "opus"
|
|
1079
|
+
}
|
|
1080
|
+
],
|
|
1081
|
+
"id": "skill:pack-nextjs/void-route-group-decision",
|
|
1082
|
+
"lines": 107,
|
|
1083
|
+
"name": "void-route-group-decision",
|
|
1084
|
+
"owner": "folpe",
|
|
1085
|
+
"pack": "pack-nextjs",
|
|
1086
|
+
"runtimes": [
|
|
1087
|
+
"claude",
|
|
1088
|
+
"codex"
|
|
1089
|
+
],
|
|
1090
|
+
"source": "packages/packs/pack-nextjs/skills/void-route-group-decision/SKILL.md",
|
|
1091
|
+
"staticTokens": 1280,
|
|
1092
|
+
"type": "skill"
|
|
1093
|
+
},
|
|
1094
|
+
{
|
|
1095
|
+
"description": "Surface the PWA install prompt at the right moment (engagement signal) with the right UI (custom button, not auto-prompt). Capture beforeinstallprompt, defer, recover declined.",
|
|
1096
|
+
"enforcement": {
|
|
1097
|
+
"floor": "ci",
|
|
1098
|
+
"inline": {
|
|
1099
|
+
"claude": "active",
|
|
1100
|
+
"codex": "active",
|
|
1101
|
+
"hermes": "ci-only"
|
|
1102
|
+
}
|
|
1103
|
+
},
|
|
1104
|
+
"evalTargets": [
|
|
1105
|
+
{
|
|
1106
|
+
"provider": "anthropic",
|
|
1107
|
+
"runtime": "claude",
|
|
1108
|
+
"tier": "opus"
|
|
1109
|
+
}
|
|
1110
|
+
],
|
|
1111
|
+
"id": "skill:pack-pwa/void-install-prompt-ux",
|
|
1112
|
+
"lines": 153,
|
|
1113
|
+
"name": "void-install-prompt-ux",
|
|
1114
|
+
"owner": "folpe",
|
|
1115
|
+
"pack": "pack-pwa",
|
|
1116
|
+
"runtimes": [
|
|
1117
|
+
"claude",
|
|
1118
|
+
"codex"
|
|
1119
|
+
],
|
|
1120
|
+
"source": "packages/packs/pack-pwa/skills/void-install-prompt-ux/SKILL.md",
|
|
1121
|
+
"staticTokens": 1657,
|
|
1122
|
+
"type": "skill"
|
|
1123
|
+
},
|
|
1124
|
+
{
|
|
1125
|
+
"description": "Get manifest.webmanifest right the first time — required fields, icon sizes (192, 512, maskable), display modes, scope, start_url. Single artifact: every field motivated, no dead options.",
|
|
1126
|
+
"enforcement": {
|
|
1127
|
+
"floor": "ci",
|
|
1128
|
+
"inline": {
|
|
1129
|
+
"claude": "active",
|
|
1130
|
+
"codex": "active",
|
|
1131
|
+
"hermes": "ci-only"
|
|
1132
|
+
}
|
|
1133
|
+
},
|
|
1134
|
+
"evalTargets": [
|
|
1135
|
+
{
|
|
1136
|
+
"provider": "anthropic",
|
|
1137
|
+
"runtime": "claude",
|
|
1138
|
+
"tier": "opus"
|
|
1139
|
+
}
|
|
1140
|
+
],
|
|
1141
|
+
"id": "skill:pack-pwa/void-manifest-checklist",
|
|
1142
|
+
"lines": 204,
|
|
1143
|
+
"name": "void-manifest-checklist",
|
|
1144
|
+
"owner": "folpe",
|
|
1145
|
+
"pack": "pack-pwa",
|
|
1146
|
+
"runtimes": [
|
|
1147
|
+
"claude",
|
|
1148
|
+
"codex"
|
|
1149
|
+
],
|
|
1150
|
+
"source": "packages/packs/pack-pwa/skills/void-manifest-checklist/SKILL.md",
|
|
1151
|
+
"staticTokens": 1567,
|
|
1152
|
+
"type": "skill"
|
|
1153
|
+
},
|
|
1154
|
+
{
|
|
1155
|
+
"description": "Implement a UI mutation that works offline via the capture-queue + sync pattern: IndexedDB, optimistic UI, idempotency keys, retry, conflict resolution. Self-contained, no harness wrappers.",
|
|
1156
|
+
"enforcement": {
|
|
1157
|
+
"floor": "ci",
|
|
1158
|
+
"inline": {
|
|
1159
|
+
"claude": "active",
|
|
1160
|
+
"codex": "active",
|
|
1161
|
+
"hermes": "ci-only"
|
|
1162
|
+
}
|
|
1163
|
+
},
|
|
1164
|
+
"evalTargets": [
|
|
1165
|
+
{
|
|
1166
|
+
"provider": "anthropic",
|
|
1167
|
+
"runtime": "claude",
|
|
1168
|
+
"tier": "opus"
|
|
1169
|
+
}
|
|
1170
|
+
],
|
|
1171
|
+
"id": "skill:pack-pwa/void-offline-first-mutation",
|
|
1172
|
+
"lines": 266,
|
|
1173
|
+
"name": "void-offline-first-mutation",
|
|
1174
|
+
"owner": "folpe",
|
|
1175
|
+
"pack": "pack-pwa",
|
|
1176
|
+
"runtimes": [
|
|
1177
|
+
"claude",
|
|
1178
|
+
"codex"
|
|
1179
|
+
],
|
|
1180
|
+
"source": "packages/packs/pack-pwa/skills/void-offline-first-mutation/SKILL.md",
|
|
1181
|
+
"staticTokens": 2498,
|
|
1182
|
+
"type": "skill"
|
|
1183
|
+
},
|
|
1184
|
+
{
|
|
1185
|
+
"description": "Pick caching strategy per route class (NetworkFirst, CacheFirst, StaleWhileRevalidate, NetworkOnly), version your caches, handle update activation. Use Serwist (Next) or vite-plugin-pwa.",
|
|
1186
|
+
"enforcement": {
|
|
1187
|
+
"floor": "ci",
|
|
1188
|
+
"inline": {
|
|
1189
|
+
"claude": "active",
|
|
1190
|
+
"codex": "active",
|
|
1191
|
+
"hermes": "ci-only"
|
|
1192
|
+
}
|
|
1193
|
+
},
|
|
1194
|
+
"evalTargets": [
|
|
1195
|
+
{
|
|
1196
|
+
"provider": "anthropic",
|
|
1197
|
+
"runtime": "claude",
|
|
1198
|
+
"tier": "opus"
|
|
1199
|
+
}
|
|
1200
|
+
],
|
|
1201
|
+
"id": "skill:pack-pwa/void-service-worker-strategy",
|
|
1202
|
+
"lines": 178,
|
|
1203
|
+
"name": "void-service-worker-strategy",
|
|
1204
|
+
"owner": "folpe",
|
|
1205
|
+
"pack": "pack-pwa",
|
|
1206
|
+
"runtimes": [
|
|
1207
|
+
"claude",
|
|
1208
|
+
"codex"
|
|
1209
|
+
],
|
|
1210
|
+
"source": "packages/packs/pack-pwa/skills/void-service-worker-strategy/SKILL.md",
|
|
1211
|
+
"staticTokens": 1820,
|
|
1212
|
+
"type": "skill"
|
|
1213
|
+
},
|
|
1214
|
+
{
|
|
1215
|
+
"description": "Per-component accessibility checklist: semantic HTML, ARIA, keyboard, focus, contrast, touch targets. Auto-applies on any React component edit. Composes with accessibility.",
|
|
1216
|
+
"enforcement": {
|
|
1217
|
+
"floor": "ci",
|
|
1218
|
+
"inline": {
|
|
1219
|
+
"claude": "active",
|
|
1220
|
+
"codex": "active",
|
|
1221
|
+
"hermes": "ci-only"
|
|
1222
|
+
}
|
|
1223
|
+
},
|
|
1224
|
+
"evalTargets": [
|
|
1225
|
+
{
|
|
1226
|
+
"provider": "anthropic",
|
|
1227
|
+
"runtime": "claude",
|
|
1228
|
+
"tier": "opus"
|
|
1229
|
+
}
|
|
1230
|
+
],
|
|
1231
|
+
"id": "skill:pack-react/void-accessibility-check",
|
|
1232
|
+
"lines": 136,
|
|
1233
|
+
"name": "void-accessibility-check",
|
|
1234
|
+
"owner": "folpe",
|
|
1235
|
+
"pack": "pack-react",
|
|
1236
|
+
"runtimes": [
|
|
1237
|
+
"claude",
|
|
1238
|
+
"codex"
|
|
1239
|
+
],
|
|
1240
|
+
"source": "packages/packs/pack-react/skills/void-accessibility-check/SKILL.md",
|
|
1241
|
+
"staticTokens": 1538,
|
|
1242
|
+
"type": "skill"
|
|
1243
|
+
},
|
|
1244
|
+
{
|
|
1245
|
+
"description": "Decide which components run on server vs client in a React 19 / Next.js app and place the 'use client' boundary correctly. Server Components by default; client is the exception.",
|
|
1246
|
+
"enforcement": {
|
|
1247
|
+
"floor": "ci",
|
|
1248
|
+
"inline": {
|
|
1249
|
+
"claude": "active",
|
|
1250
|
+
"codex": "active",
|
|
1251
|
+
"hermes": "ci-only"
|
|
1252
|
+
}
|
|
1253
|
+
},
|
|
1254
|
+
"evalTargets": [
|
|
1255
|
+
{
|
|
1256
|
+
"provider": "anthropic",
|
|
1257
|
+
"runtime": "claude",
|
|
1258
|
+
"tier": "opus"
|
|
1259
|
+
}
|
|
1260
|
+
],
|
|
1261
|
+
"id": "skill:pack-react/void-client-vs-server-component",
|
|
1262
|
+
"lines": 116,
|
|
1263
|
+
"name": "void-client-vs-server-component",
|
|
1264
|
+
"owner": "folpe",
|
|
1265
|
+
"pack": "pack-react",
|
|
1266
|
+
"runtimes": [
|
|
1267
|
+
"claude",
|
|
1268
|
+
"codex"
|
|
1269
|
+
],
|
|
1270
|
+
"source": "packages/packs/pack-react/skills/void-client-vs-server-component/SKILL.md",
|
|
1271
|
+
"staticTokens": 1319,
|
|
1272
|
+
"type": "skill"
|
|
1273
|
+
},
|
|
1274
|
+
{
|
|
1275
|
+
"description": "Build forms with react-hook-form + Zod resolver (void-machine default): validation, error UX, submit flow with Server Actions. Composes with server-action.",
|
|
1276
|
+
"enforcement": {
|
|
1277
|
+
"floor": "ci",
|
|
1278
|
+
"inline": {
|
|
1279
|
+
"claude": "active",
|
|
1280
|
+
"codex": "active",
|
|
1281
|
+
"hermes": "ci-only"
|
|
1282
|
+
}
|
|
1283
|
+
},
|
|
1284
|
+
"evalTargets": [
|
|
1285
|
+
{
|
|
1286
|
+
"provider": "anthropic",
|
|
1287
|
+
"runtime": "claude",
|
|
1288
|
+
"tier": "opus"
|
|
1289
|
+
}
|
|
1290
|
+
],
|
|
1291
|
+
"id": "skill:pack-react/void-form-pattern",
|
|
1292
|
+
"lines": 157,
|
|
1293
|
+
"name": "void-form-pattern",
|
|
1294
|
+
"owner": "folpe",
|
|
1295
|
+
"pack": "pack-react",
|
|
1296
|
+
"runtimes": [
|
|
1297
|
+
"claude",
|
|
1298
|
+
"codex"
|
|
1299
|
+
],
|
|
1300
|
+
"source": "packages/packs/pack-react/skills/void-form-pattern/SKILL.md",
|
|
1301
|
+
"staticTokens": 1686,
|
|
1302
|
+
"type": "skill"
|
|
1303
|
+
},
|
|
1304
|
+
{
|
|
1305
|
+
"description": "Decide where state lives — local, lifted, URL, server, client global. The decision tree to avoid useState-in-the-wrong-place sprawl. Default to URL or server before reaching for global stores.",
|
|
1306
|
+
"enforcement": {
|
|
1307
|
+
"floor": "ci",
|
|
1308
|
+
"inline": {
|
|
1309
|
+
"claude": "active",
|
|
1310
|
+
"codex": "active",
|
|
1311
|
+
"hermes": "ci-only"
|
|
1312
|
+
}
|
|
1313
|
+
},
|
|
1314
|
+
"evalTargets": [
|
|
1315
|
+
{
|
|
1316
|
+
"provider": "anthropic",
|
|
1317
|
+
"runtime": "claude",
|
|
1318
|
+
"tier": "opus"
|
|
1319
|
+
}
|
|
1320
|
+
],
|
|
1321
|
+
"id": "skill:pack-react/void-state-architecture",
|
|
1322
|
+
"lines": 160,
|
|
1323
|
+
"name": "void-state-architecture",
|
|
1324
|
+
"owner": "folpe",
|
|
1325
|
+
"pack": "pack-react",
|
|
1326
|
+
"runtimes": [
|
|
1327
|
+
"claude",
|
|
1328
|
+
"codex"
|
|
1329
|
+
],
|
|
1330
|
+
"source": "packages/packs/pack-react/skills/void-state-architecture/SKILL.md",
|
|
1331
|
+
"staticTokens": 1676,
|
|
1332
|
+
"type": "skill"
|
|
1333
|
+
},
|
|
1334
|
+
{
|
|
1335
|
+
"description": "Run async work outside the request lifecycle: when to use a queue (Inngest, Trigger, Cloudflare Queues) vs a cron route. Idempotency, retry, dead-letter. Self-contained, no harness wrappers.",
|
|
1336
|
+
"enforcement": {
|
|
1337
|
+
"floor": "ci",
|
|
1338
|
+
"inline": {
|
|
1339
|
+
"claude": "active",
|
|
1340
|
+
"codex": "active",
|
|
1341
|
+
"hermes": "ci-only"
|
|
1342
|
+
}
|
|
1343
|
+
},
|
|
1344
|
+
"evalTargets": [
|
|
1345
|
+
{
|
|
1346
|
+
"provider": "anthropic",
|
|
1347
|
+
"runtime": "claude",
|
|
1348
|
+
"tier": "opus"
|
|
1349
|
+
}
|
|
1350
|
+
],
|
|
1351
|
+
"id": "skill:pack-server/void-background-job-pattern",
|
|
1352
|
+
"lines": 214,
|
|
1353
|
+
"name": "void-background-job-pattern",
|
|
1354
|
+
"owner": "folpe",
|
|
1355
|
+
"pack": "pack-server",
|
|
1356
|
+
"runtimes": [
|
|
1357
|
+
"claude",
|
|
1358
|
+
"codex"
|
|
1359
|
+
],
|
|
1360
|
+
"source": "packages/packs/pack-server/skills/void-background-job-pattern/SKILL.md",
|
|
1361
|
+
"staticTokens": 2235,
|
|
1362
|
+
"type": "skill"
|
|
1363
|
+
},
|
|
1364
|
+
{
|
|
1365
|
+
"description": "Write Drizzle migrations safe under concurrent traffic: zero-downtime add/rename of columns, indexes, FKs, enums. Composes with migrations for the generic discipline.",
|
|
1366
|
+
"enforcement": {
|
|
1367
|
+
"floor": "ci",
|
|
1368
|
+
"inline": {
|
|
1369
|
+
"claude": "active",
|
|
1370
|
+
"codex": "active",
|
|
1371
|
+
"hermes": "ci-only"
|
|
1372
|
+
}
|
|
1373
|
+
},
|
|
1374
|
+
"evalTargets": [
|
|
1375
|
+
{
|
|
1376
|
+
"provider": "anthropic",
|
|
1377
|
+
"runtime": "claude",
|
|
1378
|
+
"tier": "opus"
|
|
1379
|
+
}
|
|
1380
|
+
],
|
|
1381
|
+
"id": "skill:pack-server/void-drizzle-migration-safe",
|
|
1382
|
+
"lines": 168,
|
|
1383
|
+
"name": "void-drizzle-migration-safe",
|
|
1384
|
+
"owner": "folpe",
|
|
1385
|
+
"pack": "pack-server",
|
|
1386
|
+
"runtimes": [
|
|
1387
|
+
"claude",
|
|
1388
|
+
"codex"
|
|
1389
|
+
],
|
|
1390
|
+
"source": "packages/packs/pack-server/skills/void-drizzle-migration-safe/SKILL.md",
|
|
1391
|
+
"staticTokens": 2100,
|
|
1392
|
+
"type": "skill"
|
|
1393
|
+
},
|
|
1394
|
+
{
|
|
1395
|
+
"description": "Validate environment variables at boot via Zod in @repo/core/env. Separate PUBLIC (NEXT_PUBLIC_*) from server-only. Fail fast at startup; never raw process.env in business code.",
|
|
1396
|
+
"enforcement": {
|
|
1397
|
+
"floor": "ci",
|
|
1398
|
+
"inline": {
|
|
1399
|
+
"claude": "active",
|
|
1400
|
+
"codex": "active",
|
|
1401
|
+
"hermes": "ci-only"
|
|
1402
|
+
}
|
|
1403
|
+
},
|
|
1404
|
+
"evalTargets": [
|
|
1405
|
+
{
|
|
1406
|
+
"provider": "anthropic",
|
|
1407
|
+
"runtime": "claude",
|
|
1408
|
+
"tier": "opus"
|
|
1409
|
+
}
|
|
1410
|
+
],
|
|
1411
|
+
"id": "skill:pack-server/void-env-validation",
|
|
1412
|
+
"lines": 131,
|
|
1413
|
+
"name": "void-env-validation",
|
|
1414
|
+
"owner": "folpe",
|
|
1415
|
+
"pack": "pack-server",
|
|
1416
|
+
"runtimes": [
|
|
1417
|
+
"claude",
|
|
1418
|
+
"codex"
|
|
1419
|
+
],
|
|
1420
|
+
"source": "packages/packs/pack-server/skills/void-env-validation/SKILL.md",
|
|
1421
|
+
"staticTokens": 1407,
|
|
1422
|
+
"type": "skill"
|
|
1423
|
+
},
|
|
1424
|
+
{
|
|
1425
|
+
"description": "Choose rate limit window, max, and key strategy per action class. Per-user for authed, per-IP for public, escalation for auth-adjacent. Default values + when to deviate.",
|
|
1426
|
+
"enforcement": {
|
|
1427
|
+
"floor": "ci",
|
|
1428
|
+
"inline": {
|
|
1429
|
+
"claude": "active",
|
|
1430
|
+
"codex": "active",
|
|
1431
|
+
"hermes": "ci-only"
|
|
1432
|
+
}
|
|
1433
|
+
},
|
|
1434
|
+
"evalTargets": [
|
|
1435
|
+
{
|
|
1436
|
+
"provider": "anthropic",
|
|
1437
|
+
"runtime": "claude",
|
|
1438
|
+
"tier": "opus"
|
|
1439
|
+
}
|
|
1440
|
+
],
|
|
1441
|
+
"id": "skill:pack-server/void-rate-limit-strategy",
|
|
1442
|
+
"lines": 149,
|
|
1443
|
+
"name": "void-rate-limit-strategy",
|
|
1444
|
+
"owner": "folpe",
|
|
1445
|
+
"pack": "pack-server",
|
|
1446
|
+
"runtimes": [
|
|
1447
|
+
"claude",
|
|
1448
|
+
"codex"
|
|
1449
|
+
],
|
|
1450
|
+
"source": "packages/packs/pack-server/skills/void-rate-limit-strategy/SKILL.md",
|
|
1451
|
+
"staticTokens": 1721,
|
|
1452
|
+
"type": "skill"
|
|
1453
|
+
},
|
|
1454
|
+
{
|
|
1455
|
+
"description": "Create a Next.js 16 Server Action with the void trust-boundary checklist: Zod ingress, auth, rate limit, observability, structured errors. Composes with security-guidance, async-safety.",
|
|
1456
|
+
"enforcement": {
|
|
1457
|
+
"floor": "ci",
|
|
1458
|
+
"inline": {
|
|
1459
|
+
"claude": "active",
|
|
1460
|
+
"codex": "active",
|
|
1461
|
+
"hermes": "ci-only"
|
|
1462
|
+
}
|
|
1463
|
+
},
|
|
1464
|
+
"evalTargets": [
|
|
1465
|
+
{
|
|
1466
|
+
"provider": "anthropic",
|
|
1467
|
+
"runtime": "claude",
|
|
1468
|
+
"tier": "opus"
|
|
1469
|
+
}
|
|
1470
|
+
],
|
|
1471
|
+
"id": "skill:pack-server/void-server-action",
|
|
1472
|
+
"lines": 181,
|
|
1473
|
+
"name": "void-server-action",
|
|
1474
|
+
"owner": "folpe",
|
|
1475
|
+
"pack": "pack-server",
|
|
1476
|
+
"runtimes": [
|
|
1477
|
+
"claude",
|
|
1478
|
+
"codex"
|
|
1479
|
+
],
|
|
1480
|
+
"source": "packages/packs/pack-server/skills/void-server-action/SKILL.md",
|
|
1481
|
+
"staticTokens": 2124,
|
|
1482
|
+
"type": "skill"
|
|
1483
|
+
},
|
|
1484
|
+
{
|
|
1485
|
+
"description": "Unit-test modules guarded by server-only / client-only under Vitest by aliasing those packages to an empty stub. Test-time only; never a substitute for the real build-time boundary.",
|
|
1486
|
+
"enforcement": {
|
|
1487
|
+
"floor": "ci",
|
|
1488
|
+
"inline": {
|
|
1489
|
+
"claude": "active",
|
|
1490
|
+
"codex": "active",
|
|
1491
|
+
"hermes": "ci-only"
|
|
1492
|
+
}
|
|
1493
|
+
},
|
|
1494
|
+
"evalTargets": [
|
|
1495
|
+
{
|
|
1496
|
+
"provider": "anthropic",
|
|
1497
|
+
"runtime": "claude",
|
|
1498
|
+
"tier": "opus"
|
|
1499
|
+
}
|
|
1500
|
+
],
|
|
1501
|
+
"id": "skill:pack-server/void-testing-server-modules",
|
|
1502
|
+
"lines": 73,
|
|
1503
|
+
"name": "void-testing-server-modules",
|
|
1504
|
+
"owner": "folpe",
|
|
1505
|
+
"pack": "pack-server",
|
|
1506
|
+
"runtimes": [
|
|
1507
|
+
"claude",
|
|
1508
|
+
"codex"
|
|
1509
|
+
],
|
|
1510
|
+
"source": "packages/packs/pack-server/skills/void-testing-server-modules/SKILL.md",
|
|
1511
|
+
"staticTokens": 923,
|
|
1512
|
+
"type": "skill"
|
|
1513
|
+
},
|
|
1514
|
+
{
|
|
1515
|
+
"description": "Build a webhook handler with signature verification, idempotency, and dead-letter routing. Per-source patterns (Stripe, Resend, GitHub). Self-contained — no harness wrappers required.",
|
|
1516
|
+
"enforcement": {
|
|
1517
|
+
"floor": "ci",
|
|
1518
|
+
"inline": {
|
|
1519
|
+
"claude": "active",
|
|
1520
|
+
"codex": "active",
|
|
1521
|
+
"hermes": "ci-only"
|
|
1522
|
+
}
|
|
1523
|
+
},
|
|
1524
|
+
"evalTargets": [
|
|
1525
|
+
{
|
|
1526
|
+
"provider": "anthropic",
|
|
1527
|
+
"runtime": "claude",
|
|
1528
|
+
"tier": "opus"
|
|
1529
|
+
}
|
|
1530
|
+
],
|
|
1531
|
+
"id": "skill:pack-server/void-webhook-handler-pattern",
|
|
1532
|
+
"lines": 205,
|
|
1533
|
+
"name": "void-webhook-handler-pattern",
|
|
1534
|
+
"owner": "folpe",
|
|
1535
|
+
"pack": "pack-server",
|
|
1536
|
+
"runtimes": [
|
|
1537
|
+
"claude",
|
|
1538
|
+
"codex"
|
|
1539
|
+
],
|
|
1540
|
+
"source": "packages/packs/pack-server/skills/void-webhook-handler-pattern/SKILL.md",
|
|
1541
|
+
"staticTokens": 2123,
|
|
1542
|
+
"type": "skill"
|
|
1543
|
+
},
|
|
1544
|
+
{
|
|
1545
|
+
"activation": "always",
|
|
1546
|
+
"description": "WCAG 2.2 AA floor. Radix primitives only, touch >=44x44, keyboard parity, semantic HTML, form labels, aria-live errors, mobile-first dual-quality. Use when building or modifying UI.",
|
|
1547
|
+
"enforcement": {
|
|
1548
|
+
"floor": "ci",
|
|
1549
|
+
"inline": {
|
|
1550
|
+
"claude": "pretooluse",
|
|
1551
|
+
"codex": "pretooluse",
|
|
1552
|
+
"hermes": "ci-only"
|
|
1553
|
+
}
|
|
1554
|
+
},
|
|
1555
|
+
"evalTargets": [
|
|
1556
|
+
{
|
|
1557
|
+
"provider": "anthropic",
|
|
1558
|
+
"runtime": "claude",
|
|
1559
|
+
"tier": "opus"
|
|
1560
|
+
}
|
|
1561
|
+
],
|
|
1562
|
+
"id": "skill:void-accessibility",
|
|
1563
|
+
"lines": 275,
|
|
1564
|
+
"name": "void-accessibility",
|
|
1565
|
+
"owner": "folpe",
|
|
1566
|
+
"pack": null,
|
|
1567
|
+
"runtimes": [
|
|
1568
|
+
"claude",
|
|
1569
|
+
"codex"
|
|
1570
|
+
],
|
|
1571
|
+
"source": "packages/core/skills/void-accessibility/SKILL.md",
|
|
1572
|
+
"staticTokens": 2209,
|
|
1573
|
+
"triggers": {
|
|
1574
|
+
"extensions": [
|
|
1575
|
+
"tsx"
|
|
1576
|
+
]
|
|
1577
|
+
},
|
|
1578
|
+
"type": "skill"
|
|
1579
|
+
},
|
|
1580
|
+
{
|
|
1581
|
+
"description": "Contract-first design of any public interface — package exports, HTTP/REST, RPC/tRPC, SDK, module boundary. Minimal surface, stable boundary types, versioning. Use when shaping a public API.",
|
|
1582
|
+
"enforcement": {
|
|
1583
|
+
"floor": "ci",
|
|
1584
|
+
"inline": {
|
|
1585
|
+
"claude": "active",
|
|
1586
|
+
"codex": "active",
|
|
1587
|
+
"hermes": "ci-only"
|
|
1588
|
+
}
|
|
1589
|
+
},
|
|
1590
|
+
"evalTargets": [
|
|
1591
|
+
{
|
|
1592
|
+
"provider": "anthropic",
|
|
1593
|
+
"runtime": "claude",
|
|
1594
|
+
"tier": "opus"
|
|
1595
|
+
}
|
|
1596
|
+
],
|
|
1597
|
+
"id": "skill:void-api-and-interface-design",
|
|
1598
|
+
"lines": 231,
|
|
1599
|
+
"name": "void-api-and-interface-design",
|
|
1600
|
+
"owner": "folpe",
|
|
1601
|
+
"pack": null,
|
|
1602
|
+
"runtimes": [
|
|
1603
|
+
"claude",
|
|
1604
|
+
"codex"
|
|
1605
|
+
],
|
|
1606
|
+
"source": "packages/core/skills/void-api-and-interface-design/SKILL.md",
|
|
1607
|
+
"staticTokens": 3375,
|
|
1608
|
+
"triggers": {
|
|
1609
|
+
"globs": [
|
|
1610
|
+
"**/src/index.ts",
|
|
1611
|
+
"**/openapi*.{yaml,yml,json}",
|
|
1612
|
+
"**/*.openapi.ts",
|
|
1613
|
+
"**/trpc/**/router.ts"
|
|
1614
|
+
]
|
|
1615
|
+
},
|
|
1616
|
+
"type": "skill"
|
|
1617
|
+
},
|
|
1618
|
+
{
|
|
1619
|
+
"description": "Idempotency by design. At-least-once with consumer dedup. Signature verify, replay window, idempotency keys, outbox, bounded retries, DLQ. Use for async/webhook/job/cron code.",
|
|
1620
|
+
"enforcement": {
|
|
1621
|
+
"floor": "ci",
|
|
1622
|
+
"inline": {
|
|
1623
|
+
"claude": "active",
|
|
1624
|
+
"codex": "active",
|
|
1625
|
+
"hermes": "ci-only"
|
|
1626
|
+
}
|
|
1627
|
+
},
|
|
1628
|
+
"evalTargets": [
|
|
1629
|
+
{
|
|
1630
|
+
"provider": "anthropic",
|
|
1631
|
+
"runtime": "claude",
|
|
1632
|
+
"tier": "opus"
|
|
1633
|
+
}
|
|
1634
|
+
],
|
|
1635
|
+
"id": "skill:void-async-safety",
|
|
1636
|
+
"lines": 287,
|
|
1637
|
+
"name": "void-async-safety",
|
|
1638
|
+
"owner": "folpe",
|
|
1639
|
+
"pack": null,
|
|
1640
|
+
"runtimes": [
|
|
1641
|
+
"claude",
|
|
1642
|
+
"codex"
|
|
1643
|
+
],
|
|
1644
|
+
"source": "packages/core/skills/void-async-safety/SKILL.md",
|
|
1645
|
+
"staticTokens": 3048,
|
|
1646
|
+
"triggers": {
|
|
1647
|
+
"globs": [
|
|
1648
|
+
"**/webhooks/**",
|
|
1649
|
+
"**/jobs/**",
|
|
1650
|
+
"**/queues/**",
|
|
1651
|
+
"**/workers/**",
|
|
1652
|
+
"**/cron/**",
|
|
1653
|
+
"**/*.worker.ts"
|
|
1654
|
+
]
|
|
1655
|
+
},
|
|
1656
|
+
"type": "skill"
|
|
1657
|
+
},
|
|
1658
|
+
{
|
|
1659
|
+
"description": "Run the outbound audit over local mission events and surface skills that never fire, upstream deprecations and matrix conflicts, as proposals a human disposes of.",
|
|
1660
|
+
"enforcement": {
|
|
1661
|
+
"floor": "ci",
|
|
1662
|
+
"inline": {
|
|
1663
|
+
"claude": "active",
|
|
1664
|
+
"codex": "active",
|
|
1665
|
+
"hermes": "ci-only"
|
|
1666
|
+
}
|
|
1667
|
+
},
|
|
1668
|
+
"evalTargets": [
|
|
1669
|
+
{
|
|
1670
|
+
"provider": "anthropic",
|
|
1671
|
+
"runtime": "claude",
|
|
1672
|
+
"tier": "opus"
|
|
1673
|
+
}
|
|
1674
|
+
],
|
|
1675
|
+
"id": "skill:void-audit",
|
|
1676
|
+
"lines": 83,
|
|
1677
|
+
"name": "void-audit",
|
|
1678
|
+
"owner": "folpe",
|
|
1679
|
+
"pack": null,
|
|
1680
|
+
"runtimes": [
|
|
1681
|
+
"claude",
|
|
1682
|
+
"codex"
|
|
1683
|
+
],
|
|
1684
|
+
"source": "packages/core/skills/void-audit/SKILL.md",
|
|
1685
|
+
"staticTokens": 818,
|
|
1686
|
+
"type": "skill"
|
|
1687
|
+
},
|
|
1688
|
+
{
|
|
1689
|
+
"description": "Use to run the continuous delivery loop, where a curator ranks the backlog, up to four workers each run void-implement to a PR, and a bounded review gates the GitHub merge queue until drained or stopped.",
|
|
1690
|
+
"enforcement": {
|
|
1691
|
+
"floor": "ci",
|
|
1692
|
+
"inline": {
|
|
1693
|
+
"claude": "pretooluse",
|
|
1694
|
+
"codex": "pretooluse",
|
|
1695
|
+
"hermes": "ci-only"
|
|
1696
|
+
}
|
|
1697
|
+
},
|
|
1698
|
+
"evalTargets": [
|
|
1699
|
+
{
|
|
1700
|
+
"provider": "anthropic",
|
|
1701
|
+
"runtime": "claude",
|
|
1702
|
+
"tier": "opus"
|
|
1703
|
+
}
|
|
1704
|
+
],
|
|
1705
|
+
"id": "skill:void-autopilot",
|
|
1706
|
+
"lines": 358,
|
|
1707
|
+
"name": "void-autopilot",
|
|
1708
|
+
"owner": "folpe",
|
|
1709
|
+
"pack": null,
|
|
1710
|
+
"runtimes": [
|
|
1711
|
+
"claude",
|
|
1712
|
+
"codex"
|
|
1713
|
+
],
|
|
1714
|
+
"source": "packages/core/skills/void-autopilot/SKILL.md",
|
|
1715
|
+
"staticTokens": 6056,
|
|
1716
|
+
"type": "skill"
|
|
1717
|
+
},
|
|
1718
|
+
{
|
|
1719
|
+
"description": "Engage on a raw idea, or the moment an exchange settles a behaviour, boundary or trade-off: pressure-test, one question at a time, 2-3 approaches, spec written and approved before any code.",
|
|
1720
|
+
"enforcement": {
|
|
1721
|
+
"floor": "ci",
|
|
1722
|
+
"inline": {
|
|
1723
|
+
"claude": "active",
|
|
1724
|
+
"codex": "active",
|
|
1725
|
+
"hermes": "ci-only"
|
|
1726
|
+
}
|
|
1727
|
+
},
|
|
1728
|
+
"evalTargets": [
|
|
1729
|
+
{
|
|
1730
|
+
"provider": "anthropic",
|
|
1731
|
+
"runtime": "claude",
|
|
1732
|
+
"tier": "opus"
|
|
1733
|
+
}
|
|
1734
|
+
],
|
|
1735
|
+
"id": "skill:void-brainstorm",
|
|
1736
|
+
"lines": 271,
|
|
1737
|
+
"name": "void-brainstorm",
|
|
1738
|
+
"owner": "folpe",
|
|
1739
|
+
"pack": null,
|
|
1740
|
+
"runtimes": [
|
|
1741
|
+
"claude",
|
|
1742
|
+
"codex"
|
|
1743
|
+
],
|
|
1744
|
+
"source": "packages/core/skills/void-brainstorm/SKILL.md",
|
|
1745
|
+
"staticTokens": 4143,
|
|
1746
|
+
"type": "skill"
|
|
1747
|
+
},
|
|
1748
|
+
{
|
|
1749
|
+
"description": "Write .void/machine/checkpoint.md before a clear, an interruption, or the end of a day, so the next session resumes without re-deriving anything. Keeps only what no other artefact holds.",
|
|
1750
|
+
"enforcement": {
|
|
1751
|
+
"floor": "ci",
|
|
1752
|
+
"inline": {
|
|
1753
|
+
"claude": "active",
|
|
1754
|
+
"codex": "active",
|
|
1755
|
+
"hermes": "ci-only"
|
|
1756
|
+
}
|
|
1757
|
+
},
|
|
1758
|
+
"evalTargets": [
|
|
1759
|
+
{
|
|
1760
|
+
"provider": "anthropic",
|
|
1761
|
+
"runtime": "claude",
|
|
1762
|
+
"tier": "opus"
|
|
1763
|
+
}
|
|
1764
|
+
],
|
|
1765
|
+
"id": "skill:void-checkpoint",
|
|
1766
|
+
"lines": 227,
|
|
1767
|
+
"name": "void-checkpoint",
|
|
1768
|
+
"owner": "folpe",
|
|
1769
|
+
"pack": null,
|
|
1770
|
+
"runtimes": [
|
|
1771
|
+
"claude",
|
|
1772
|
+
"codex"
|
|
1773
|
+
],
|
|
1774
|
+
"source": "packages/core/skills/void-checkpoint/SKILL.md",
|
|
1775
|
+
"staticTokens": 2858,
|
|
1776
|
+
"type": "skill"
|
|
1777
|
+
},
|
|
1778
|
+
{
|
|
1779
|
+
"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.",
|
|
1780
|
+
"enforcement": {
|
|
1781
|
+
"floor": "ci",
|
|
1782
|
+
"inline": {
|
|
1783
|
+
"claude": "active",
|
|
1784
|
+
"codex": "active",
|
|
1785
|
+
"hermes": "ci-only"
|
|
1786
|
+
}
|
|
1787
|
+
},
|
|
1788
|
+
"evalTargets": [
|
|
1789
|
+
{
|
|
1790
|
+
"provider": "anthropic",
|
|
1791
|
+
"runtime": "claude",
|
|
1792
|
+
"tier": "opus"
|
|
1793
|
+
}
|
|
1794
|
+
],
|
|
1795
|
+
"id": "skill:void-claude-md",
|
|
1796
|
+
"lines": 180,
|
|
1797
|
+
"name": "void-claude-md",
|
|
1798
|
+
"owner": "folpe",
|
|
1799
|
+
"pack": null,
|
|
1800
|
+
"runtimes": [
|
|
1801
|
+
"claude",
|
|
1802
|
+
"codex"
|
|
1803
|
+
],
|
|
1804
|
+
"source": "packages/core/skills/void-claude-md/SKILL.md",
|
|
1805
|
+
"staticTokens": 2645,
|
|
1806
|
+
"type": "skill"
|
|
1807
|
+
},
|
|
1808
|
+
{
|
|
1809
|
+
"activation": "always",
|
|
1810
|
+
"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.",
|
|
1811
|
+
"enforcement": {
|
|
1812
|
+
"floor": "ci",
|
|
1813
|
+
"inline": {
|
|
1814
|
+
"claude": "pretooluse",
|
|
1815
|
+
"codex": "pretooluse",
|
|
1816
|
+
"hermes": "ci-only"
|
|
1817
|
+
}
|
|
1818
|
+
},
|
|
1819
|
+
"evalTargets": [
|
|
1820
|
+
{
|
|
1821
|
+
"provider": "anthropic",
|
|
1822
|
+
"runtime": "claude",
|
|
1823
|
+
"tier": "opus"
|
|
1824
|
+
}
|
|
1825
|
+
],
|
|
1826
|
+
"id": "skill:void-code-review",
|
|
1827
|
+
"lines": 232,
|
|
1828
|
+
"name": "void-code-review",
|
|
1829
|
+
"owner": "folpe",
|
|
1830
|
+
"pack": null,
|
|
1831
|
+
"runtimes": [
|
|
1832
|
+
"claude",
|
|
1833
|
+
"codex"
|
|
1834
|
+
],
|
|
1835
|
+
"source": "packages/core/skills/void-code-review/SKILL.md",
|
|
1836
|
+
"staticTokens": 3050,
|
|
1837
|
+
"type": "skill"
|
|
1838
|
+
},
|
|
1839
|
+
{
|
|
1840
|
+
"activation": "always",
|
|
1841
|
+
"description": "Conventional Commits + mandatory \"why\" in body + scope + breaking-change marking. ASCII-only (no em dash, no emoji). Co-author trailer for AI pair. The git log is documentation. Use at every commit.",
|
|
1842
|
+
"enforcement": {
|
|
1843
|
+
"floor": "ci",
|
|
1844
|
+
"inline": {
|
|
1845
|
+
"claude": "pretooluse",
|
|
1846
|
+
"codex": "pretooluse",
|
|
1847
|
+
"hermes": "ci-only"
|
|
1848
|
+
}
|
|
1849
|
+
},
|
|
1850
|
+
"evalTargets": [
|
|
1851
|
+
{
|
|
1852
|
+
"provider": "anthropic",
|
|
1853
|
+
"runtime": "claude",
|
|
1854
|
+
"tier": "opus"
|
|
1855
|
+
}
|
|
1856
|
+
],
|
|
1857
|
+
"id": "skill:void-commit-discipline",
|
|
1858
|
+
"lines": 211,
|
|
1859
|
+
"name": "void-commit-discipline",
|
|
1860
|
+
"owner": "folpe",
|
|
1861
|
+
"pack": null,
|
|
1862
|
+
"runtimes": [
|
|
1863
|
+
"claude",
|
|
1864
|
+
"codex"
|
|
1865
|
+
],
|
|
1866
|
+
"source": "packages/core/skills/void-commit-discipline/SKILL.md",
|
|
1867
|
+
"staticTokens": 1868,
|
|
1868
|
+
"type": "skill"
|
|
1869
|
+
},
|
|
1870
|
+
{
|
|
1871
|
+
"description": "Context is the agent's core constraint. Use when a task spans many files, a session mixes subjects, corrections loop, or replies forget earlier constraints. Clear, compact, delegate to subagents.",
|
|
1872
|
+
"enforcement": {
|
|
1873
|
+
"floor": "ci",
|
|
1874
|
+
"inline": {
|
|
1875
|
+
"claude": "active",
|
|
1876
|
+
"codex": "active",
|
|
1877
|
+
"hermes": "ci-only"
|
|
1878
|
+
}
|
|
1879
|
+
},
|
|
1880
|
+
"evalTargets": [
|
|
1881
|
+
{
|
|
1882
|
+
"provider": "anthropic",
|
|
1883
|
+
"runtime": "claude",
|
|
1884
|
+
"tier": "opus"
|
|
1885
|
+
}
|
|
1886
|
+
],
|
|
1887
|
+
"id": "skill:void-context",
|
|
1888
|
+
"lines": 167,
|
|
1889
|
+
"name": "void-context",
|
|
1890
|
+
"owner": "folpe",
|
|
1891
|
+
"pack": null,
|
|
1892
|
+
"runtimes": [
|
|
1893
|
+
"claude",
|
|
1894
|
+
"codex"
|
|
1895
|
+
],
|
|
1896
|
+
"source": "packages/core/skills/void-context/SKILL.md",
|
|
1897
|
+
"staticTokens": 2874,
|
|
1898
|
+
"type": "skill"
|
|
1899
|
+
},
|
|
1900
|
+
{
|
|
1901
|
+
"description": "Four phases (investigate, analyze, hypothesize, implement). Iron Law: no fix without a failing test reproducing the bug AND a root cause. Bug fix commit pairs. Use on bug or test failure.",
|
|
1902
|
+
"enforcement": {
|
|
1903
|
+
"floor": "ci",
|
|
1904
|
+
"inline": {
|
|
1905
|
+
"claude": "active",
|
|
1906
|
+
"codex": "active",
|
|
1907
|
+
"hermes": "ci-only"
|
|
1908
|
+
}
|
|
1909
|
+
},
|
|
1910
|
+
"evalTargets": [
|
|
1911
|
+
{
|
|
1912
|
+
"provider": "anthropic",
|
|
1913
|
+
"runtime": "claude",
|
|
1914
|
+
"tier": "opus"
|
|
1915
|
+
}
|
|
1916
|
+
],
|
|
1917
|
+
"id": "skill:void-debug",
|
|
1918
|
+
"lines": 211,
|
|
1919
|
+
"name": "void-debug",
|
|
1920
|
+
"owner": "folpe",
|
|
1921
|
+
"pack": null,
|
|
1922
|
+
"runtimes": [
|
|
1923
|
+
"claude",
|
|
1924
|
+
"codex"
|
|
1925
|
+
],
|
|
1926
|
+
"source": "packages/core/skills/void-debug/SKILL.md",
|
|
1927
|
+
"staticTokens": 2325,
|
|
1928
|
+
"type": "skill"
|
|
1929
|
+
},
|
|
1930
|
+
{
|
|
1931
|
+
"description": "Capture structural choices as one immutable ADR file with collision-free identity, explicit alternatives, reversal cost, and supersession. Use when future code depends on why.",
|
|
1932
|
+
"enforcement": {
|
|
1933
|
+
"floor": "ci",
|
|
1934
|
+
"inline": {
|
|
1935
|
+
"claude": "active",
|
|
1936
|
+
"codex": "active",
|
|
1937
|
+
"hermes": "ci-only"
|
|
1938
|
+
}
|
|
1939
|
+
},
|
|
1940
|
+
"evalTargets": [
|
|
1941
|
+
{
|
|
1942
|
+
"provider": "anthropic",
|
|
1943
|
+
"runtime": "claude",
|
|
1944
|
+
"tier": "opus"
|
|
1945
|
+
}
|
|
1946
|
+
],
|
|
1947
|
+
"id": "skill:void-decide",
|
|
1948
|
+
"lines": 147,
|
|
1949
|
+
"name": "void-decide",
|
|
1950
|
+
"owner": "folpe",
|
|
1951
|
+
"pack": null,
|
|
1952
|
+
"runtimes": [
|
|
1953
|
+
"claude",
|
|
1954
|
+
"codex"
|
|
1955
|
+
],
|
|
1956
|
+
"source": "packages/core/skills/void-decide/SKILL.md",
|
|
1957
|
+
"staticTokens": 1168,
|
|
1958
|
+
"type": "skill"
|
|
1959
|
+
},
|
|
1960
|
+
{
|
|
1961
|
+
"activation": "on-demand",
|
|
1962
|
+
"description": "Audit an EXISTING dev-facing surface (API/CLI/SDK/docs): measured TTHW, real error-path tracing, evidence-backed DX scorecard, scoped refine. The audit ceiling to plan-review's DevEx-lens.",
|
|
1963
|
+
"enforcement": {
|
|
1964
|
+
"floor": "ci",
|
|
1965
|
+
"inline": {
|
|
1966
|
+
"claude": "active",
|
|
1967
|
+
"codex": "active",
|
|
1968
|
+
"hermes": "ci-only"
|
|
1969
|
+
}
|
|
1970
|
+
},
|
|
1971
|
+
"evalTargets": [
|
|
1972
|
+
{
|
|
1973
|
+
"provider": "anthropic",
|
|
1974
|
+
"runtime": "claude",
|
|
1975
|
+
"tier": "opus"
|
|
1976
|
+
}
|
|
1977
|
+
],
|
|
1978
|
+
"id": "skill:void-devex-audit",
|
|
1979
|
+
"lines": 113,
|
|
1980
|
+
"name": "void-devex-audit",
|
|
1981
|
+
"owner": "folpe",
|
|
1982
|
+
"pack": null,
|
|
1983
|
+
"runtimes": [
|
|
1984
|
+
"claude",
|
|
1985
|
+
"codex"
|
|
1986
|
+
],
|
|
1987
|
+
"source": "packages/core/skills/void-devex-audit/SKILL.md",
|
|
1988
|
+
"staticTokens": 2109,
|
|
1989
|
+
"type": "skill"
|
|
1990
|
+
},
|
|
1991
|
+
{
|
|
1992
|
+
"description": "Run the harness health checks and report what is healthy, missing or stale, with the exact command that repairs each finding. Reports; never repairs on its own.",
|
|
1993
|
+
"enforcement": {
|
|
1994
|
+
"floor": "ci",
|
|
1995
|
+
"inline": {
|
|
1996
|
+
"claude": "active",
|
|
1997
|
+
"codex": "active",
|
|
1998
|
+
"hermes": "ci-only"
|
|
1999
|
+
}
|
|
2000
|
+
},
|
|
2001
|
+
"evalTargets": [
|
|
2002
|
+
{
|
|
2003
|
+
"provider": "anthropic",
|
|
2004
|
+
"runtime": "claude",
|
|
2005
|
+
"tier": "opus"
|
|
2006
|
+
}
|
|
2007
|
+
],
|
|
2008
|
+
"id": "skill:void-doctor",
|
|
2009
|
+
"lines": 83,
|
|
2010
|
+
"name": "void-doctor",
|
|
2011
|
+
"owner": "folpe",
|
|
2012
|
+
"pack": null,
|
|
2013
|
+
"runtimes": [
|
|
2014
|
+
"claude",
|
|
2015
|
+
"codex"
|
|
2016
|
+
],
|
|
2017
|
+
"source": "packages/core/skills/void-doctor/SKILL.md",
|
|
2018
|
+
"staticTokens": 783,
|
|
2019
|
+
"type": "skill"
|
|
2020
|
+
},
|
|
2021
|
+
{
|
|
2022
|
+
"activation": "always",
|
|
2023
|
+
"description": "Bounded contexts, aggregates as consistency boundaries, value objects as branded types, always-valid domain, ubiquitous language. No CQRS, event sourcing, or generic Repository<T>. Use on the domain.",
|
|
2024
|
+
"enforcement": {
|
|
2025
|
+
"floor": "ci",
|
|
2026
|
+
"inline": {
|
|
2027
|
+
"claude": "pretooluse",
|
|
2028
|
+
"codex": "pretooluse",
|
|
2029
|
+
"hermes": "ci-only"
|
|
2030
|
+
}
|
|
2031
|
+
},
|
|
2032
|
+
"evalTargets": [
|
|
2033
|
+
{
|
|
2034
|
+
"provider": "anthropic",
|
|
2035
|
+
"runtime": "claude",
|
|
2036
|
+
"tier": "opus"
|
|
2037
|
+
}
|
|
2038
|
+
],
|
|
2039
|
+
"id": "skill:void-domain-driven-design",
|
|
2040
|
+
"lines": 292,
|
|
2041
|
+
"name": "void-domain-driven-design",
|
|
2042
|
+
"owner": "folpe",
|
|
2043
|
+
"pack": null,
|
|
2044
|
+
"runtimes": [
|
|
2045
|
+
"claude",
|
|
2046
|
+
"codex"
|
|
2047
|
+
],
|
|
2048
|
+
"source": "packages/core/skills/void-domain-driven-design/SKILL.md",
|
|
2049
|
+
"staticTokens": 3159,
|
|
2050
|
+
"type": "skill"
|
|
2051
|
+
},
|
|
2052
|
+
{
|
|
2053
|
+
"activation": "always",
|
|
2054
|
+
"description": "Anti-AI-slop UI. Density first, 3-size hierarchy, motion <250ms, components via @repo/ui (Radix/shadcn), mobile-first dual-quality. Brand from DESIGN.md. Use when building or modifying UI.",
|
|
2055
|
+
"enforcement": {
|
|
2056
|
+
"floor": "ci",
|
|
2057
|
+
"inline": {
|
|
2058
|
+
"claude": "pretooluse",
|
|
2059
|
+
"codex": "pretooluse",
|
|
2060
|
+
"hermes": "ci-only"
|
|
2061
|
+
}
|
|
2062
|
+
},
|
|
2063
|
+
"evalTargets": [
|
|
2064
|
+
{
|
|
2065
|
+
"provider": "anthropic",
|
|
2066
|
+
"runtime": "claude",
|
|
2067
|
+
"tier": "opus"
|
|
2068
|
+
}
|
|
2069
|
+
],
|
|
2070
|
+
"id": "skill:void-frontend-design",
|
|
2071
|
+
"lines": 274,
|
|
2072
|
+
"name": "void-frontend-design",
|
|
2073
|
+
"owner": "folpe",
|
|
2074
|
+
"pack": null,
|
|
2075
|
+
"runtimes": [
|
|
2076
|
+
"claude",
|
|
2077
|
+
"codex"
|
|
2078
|
+
],
|
|
2079
|
+
"source": "packages/core/skills/void-frontend-design/SKILL.md",
|
|
2080
|
+
"staticTokens": 3590,
|
|
2081
|
+
"triggers": {
|
|
2082
|
+
"extensions": [
|
|
2083
|
+
"tsx"
|
|
2084
|
+
]
|
|
2085
|
+
},
|
|
2086
|
+
"type": "skill"
|
|
2087
|
+
},
|
|
2088
|
+
{
|
|
2089
|
+
"activation": "always",
|
|
2090
|
+
"description": "Pure-by-default, errors as values (Result<T, E>), discriminated unions for state, immutability defaults, functional core / imperative shell. Side effects at adapters. Use for data flow or state.",
|
|
2091
|
+
"enforcement": {
|
|
2092
|
+
"floor": "ci",
|
|
2093
|
+
"inline": {
|
|
2094
|
+
"claude": "pretooluse",
|
|
2095
|
+
"codex": "pretooluse",
|
|
2096
|
+
"hermes": "ci-only"
|
|
2097
|
+
}
|
|
2098
|
+
},
|
|
2099
|
+
"evalTargets": [
|
|
2100
|
+
{
|
|
2101
|
+
"provider": "anthropic",
|
|
2102
|
+
"runtime": "claude",
|
|
2103
|
+
"tier": "opus"
|
|
2104
|
+
}
|
|
2105
|
+
],
|
|
2106
|
+
"id": "skill:void-functional",
|
|
2107
|
+
"lines": 312,
|
|
2108
|
+
"name": "void-functional",
|
|
2109
|
+
"owner": "folpe",
|
|
2110
|
+
"pack": null,
|
|
2111
|
+
"runtimes": [
|
|
2112
|
+
"claude",
|
|
2113
|
+
"codex"
|
|
2114
|
+
],
|
|
2115
|
+
"source": "packages/core/skills/void-functional/SKILL.md",
|
|
2116
|
+
"staticTokens": 2813,
|
|
2117
|
+
"type": "skill"
|
|
2118
|
+
},
|
|
2119
|
+
{
|
|
2120
|
+
"description": "Read the installed harness as a graph and report what is dead, underused or expensive. No argument opens the local live studio; audit, cost and behavior print a terminal report.",
|
|
2121
|
+
"enforcement": {
|
|
2122
|
+
"floor": "ci",
|
|
2123
|
+
"inline": {
|
|
2124
|
+
"claude": "active",
|
|
2125
|
+
"codex": "active",
|
|
2126
|
+
"hermes": "ci-only"
|
|
2127
|
+
}
|
|
2128
|
+
},
|
|
2129
|
+
"evalTargets": [
|
|
2130
|
+
{
|
|
2131
|
+
"provider": "anthropic",
|
|
2132
|
+
"runtime": "claude",
|
|
2133
|
+
"tier": "opus"
|
|
2134
|
+
}
|
|
2135
|
+
],
|
|
2136
|
+
"id": "skill:void-graph",
|
|
2137
|
+
"lines": 80,
|
|
2138
|
+
"name": "void-graph",
|
|
2139
|
+
"owner": "folpe",
|
|
2140
|
+
"pack": null,
|
|
2141
|
+
"runtimes": [
|
|
2142
|
+
"claude",
|
|
2143
|
+
"codex"
|
|
2144
|
+
],
|
|
2145
|
+
"source": "packages/core/skills/void-graph/SKILL.md",
|
|
2146
|
+
"staticTokens": 787,
|
|
2147
|
+
"type": "skill"
|
|
2148
|
+
},
|
|
2149
|
+
{
|
|
2150
|
+
"activation": "always",
|
|
2151
|
+
"description": "Ports + adapters. Domain owns interfaces, adapters at the edge, function-parameter injection only, no DI / CQRS / mediator. Use when placing code or crossing module boundaries.",
|
|
2152
|
+
"enforcement": {
|
|
2153
|
+
"floor": "ci",
|
|
2154
|
+
"inline": {
|
|
2155
|
+
"claude": "pretooluse",
|
|
2156
|
+
"codex": "pretooluse",
|
|
2157
|
+
"hermes": "ci-only"
|
|
2158
|
+
}
|
|
2159
|
+
},
|
|
2160
|
+
"evalTargets": [
|
|
2161
|
+
{
|
|
2162
|
+
"provider": "anthropic",
|
|
2163
|
+
"runtime": "claude",
|
|
2164
|
+
"tier": "opus"
|
|
2165
|
+
}
|
|
2166
|
+
],
|
|
2167
|
+
"id": "skill:void-hexagonal-architecture",
|
|
2168
|
+
"lines": 276,
|
|
2169
|
+
"name": "void-hexagonal-architecture",
|
|
2170
|
+
"owner": "folpe",
|
|
2171
|
+
"pack": null,
|
|
2172
|
+
"runtimes": [
|
|
2173
|
+
"claude",
|
|
2174
|
+
"codex"
|
|
2175
|
+
],
|
|
2176
|
+
"source": "packages/core/skills/void-hexagonal-architecture/SKILL.md",
|
|
2177
|
+
"staticTokens": 2734,
|
|
2178
|
+
"type": "skill"
|
|
2179
|
+
},
|
|
2180
|
+
{
|
|
2181
|
+
"description": "Use when taking a single ticket from ready through shipped at expert-team quality. Triggers on starting a ticket, taking an issue, or picking up a backlog item to execute.",
|
|
2182
|
+
"enforcement": {
|
|
2183
|
+
"floor": "ci",
|
|
2184
|
+
"inline": {
|
|
2185
|
+
"claude": "active",
|
|
2186
|
+
"codex": "active",
|
|
2187
|
+
"hermes": "ci-only"
|
|
2188
|
+
}
|
|
2189
|
+
},
|
|
2190
|
+
"evalTargets": [
|
|
2191
|
+
{
|
|
2192
|
+
"provider": "anthropic",
|
|
2193
|
+
"runtime": "claude",
|
|
2194
|
+
"tier": "opus"
|
|
2195
|
+
}
|
|
2196
|
+
],
|
|
2197
|
+
"id": "skill:void-implement",
|
|
2198
|
+
"lines": 183,
|
|
2199
|
+
"name": "void-implement",
|
|
2200
|
+
"owner": "folpe",
|
|
2201
|
+
"pack": null,
|
|
2202
|
+
"runtimes": [
|
|
2203
|
+
"claude",
|
|
2204
|
+
"codex"
|
|
2205
|
+
],
|
|
2206
|
+
"source": "packages/core/skills/void-implement/SKILL.md",
|
|
2207
|
+
"staticTokens": 5527,
|
|
2208
|
+
"type": "skill"
|
|
2209
|
+
},
|
|
2210
|
+
{
|
|
2211
|
+
"description": "Capture a lesson when it appears — a stated project rule, a recurring/deja-vu fix, an end-of-cycle pattern, or a harness gap. Routes to PROJECT-DOCTRINE, a GitHub issue, or nothing. HITL strict. Also the single door for harness feedback. Fires on \"the harness should have X\", \"this hook is a false positive\", \"that skill is missing\", a DX papercut worth filing, or any explicit request to send feedback about the harness itself.",
|
|
2212
|
+
"enforcement": {
|
|
2213
|
+
"floor": "ci",
|
|
2214
|
+
"inline": {
|
|
2215
|
+
"claude": "active",
|
|
2216
|
+
"codex": "active",
|
|
2217
|
+
"hermes": "ci-only"
|
|
2218
|
+
}
|
|
2219
|
+
},
|
|
2220
|
+
"evalTargets": [
|
|
2221
|
+
{
|
|
2222
|
+
"provider": "anthropic",
|
|
2223
|
+
"runtime": "claude",
|
|
2224
|
+
"tier": "opus"
|
|
2225
|
+
}
|
|
2226
|
+
],
|
|
2227
|
+
"id": "skill:void-learn",
|
|
2228
|
+
"lines": 226,
|
|
2229
|
+
"name": "void-learn",
|
|
2230
|
+
"owner": "folpe",
|
|
2231
|
+
"pack": null,
|
|
2232
|
+
"runtimes": [
|
|
2233
|
+
"claude",
|
|
2234
|
+
"codex"
|
|
2235
|
+
],
|
|
2236
|
+
"source": "packages/core/skills/void-learn/SKILL.md",
|
|
2237
|
+
"staticTokens": 3311,
|
|
2238
|
+
"type": "skill"
|
|
2239
|
+
},
|
|
2240
|
+
{
|
|
2241
|
+
"activation": "always",
|
|
2242
|
+
"description": "Sonnet default (Opus needs comment), prompt caching for >1024-token prompts, batch API for non-interactive, max_tokens declared, bounded retries, no full prompts in logs. Use on LLM API calls.",
|
|
2243
|
+
"enforcement": {
|
|
2244
|
+
"floor": "ci",
|
|
2245
|
+
"inline": {
|
|
2246
|
+
"claude": "pretooluse",
|
|
2247
|
+
"codex": "pretooluse",
|
|
2248
|
+
"hermes": "ci-only"
|
|
2249
|
+
}
|
|
2250
|
+
},
|
|
2251
|
+
"evalTargets": [
|
|
2252
|
+
{
|
|
2253
|
+
"provider": "anthropic",
|
|
2254
|
+
"runtime": "claude",
|
|
2255
|
+
"tier": "opus"
|
|
2256
|
+
}
|
|
2257
|
+
],
|
|
2258
|
+
"id": "skill:void-llm-cost-discipline",
|
|
2259
|
+
"lines": 299,
|
|
2260
|
+
"name": "void-llm-cost-discipline",
|
|
2261
|
+
"owner": "folpe",
|
|
2262
|
+
"pack": null,
|
|
2263
|
+
"runtimes": [
|
|
2264
|
+
"claude",
|
|
2265
|
+
"codex"
|
|
2266
|
+
],
|
|
2267
|
+
"source": "packages/core/skills/void-llm-cost-discipline/SKILL.md",
|
|
2268
|
+
"staticTokens": 2519,
|
|
2269
|
+
"type": "skill"
|
|
2270
|
+
},
|
|
2271
|
+
{
|
|
2272
|
+
"activation": "on-demand",
|
|
2273
|
+
"description": "Turn a markdown file into a publication-quality PDF — marked + puppeteer-core on the system Chrome, with page-number footers. No gstack daemon. For signed deliverables (DECLIK audits).",
|
|
2274
|
+
"enforcement": {
|
|
2275
|
+
"floor": "ci",
|
|
2276
|
+
"inline": {
|
|
2277
|
+
"claude": "active",
|
|
2278
|
+
"codex": "active",
|
|
2279
|
+
"hermes": "ci-only"
|
|
2280
|
+
}
|
|
2281
|
+
},
|
|
2282
|
+
"evalTargets": [
|
|
2283
|
+
{
|
|
2284
|
+
"provider": "anthropic",
|
|
2285
|
+
"runtime": "claude",
|
|
2286
|
+
"tier": "opus"
|
|
2287
|
+
}
|
|
2288
|
+
],
|
|
2289
|
+
"id": "skill:void-make-pdf",
|
|
2290
|
+
"lines": 52,
|
|
2291
|
+
"name": "void-make-pdf",
|
|
2292
|
+
"owner": "folpe",
|
|
2293
|
+
"pack": null,
|
|
2294
|
+
"runtimes": [
|
|
2295
|
+
"claude",
|
|
2296
|
+
"codex"
|
|
2297
|
+
],
|
|
2298
|
+
"source": "packages/core/skills/void-make-pdf/SKILL.md",
|
|
2299
|
+
"staticTokens": 871,
|
|
2300
|
+
"type": "skill"
|
|
2301
|
+
},
|
|
2302
|
+
{
|
|
2303
|
+
"description": "Vider la file des PR ouvertes sans casser le dépôt. Ordre par déblocage plutôt que par date, CI verte ET à jour, artefacts générés régénérés, conflits de contenu rendus à leur auteur. Use when merging pull requests.",
|
|
2304
|
+
"enforcement": {
|
|
2305
|
+
"floor": "ci",
|
|
2306
|
+
"inline": {
|
|
2307
|
+
"claude": "active",
|
|
2308
|
+
"codex": "active",
|
|
2309
|
+
"hermes": "ci-only"
|
|
2310
|
+
}
|
|
2311
|
+
},
|
|
2312
|
+
"evalTargets": [
|
|
2313
|
+
{
|
|
2314
|
+
"provider": "anthropic",
|
|
2315
|
+
"runtime": "claude",
|
|
2316
|
+
"tier": "opus"
|
|
2317
|
+
}
|
|
2318
|
+
],
|
|
2319
|
+
"id": "skill:void-merge",
|
|
2320
|
+
"lines": 111,
|
|
2321
|
+
"name": "void-merge",
|
|
2322
|
+
"owner": "folpe",
|
|
2323
|
+
"pack": null,
|
|
2324
|
+
"runtimes": [
|
|
2325
|
+
"claude",
|
|
2326
|
+
"codex"
|
|
2327
|
+
],
|
|
2328
|
+
"source": "packages/core/skills/void-merge/SKILL.md",
|
|
2329
|
+
"staticTokens": 1272,
|
|
2330
|
+
"type": "skill"
|
|
2331
|
+
},
|
|
2332
|
+
{
|
|
2333
|
+
"activation": "always",
|
|
2334
|
+
"description": "Zero-downtime Postgres migrations. Two-phase changes, batched backfills, locking analysis, banned DDL patterns, CONCURRENTLY indexes, dev branch test, immutable after merge. Use on DB schema changes.",
|
|
2335
|
+
"enforcement": {
|
|
2336
|
+
"floor": "ci",
|
|
2337
|
+
"inline": {
|
|
2338
|
+
"claude": "pretooluse",
|
|
2339
|
+
"codex": "pretooluse",
|
|
2340
|
+
"hermes": "ci-only"
|
|
2341
|
+
}
|
|
2342
|
+
},
|
|
2343
|
+
"evalTargets": [
|
|
2344
|
+
{
|
|
2345
|
+
"provider": "anthropic",
|
|
2346
|
+
"runtime": "claude",
|
|
2347
|
+
"tier": "opus"
|
|
2348
|
+
}
|
|
2349
|
+
],
|
|
2350
|
+
"id": "skill:void-migrations",
|
|
2351
|
+
"lines": 264,
|
|
2352
|
+
"name": "void-migrations",
|
|
2353
|
+
"owner": "folpe",
|
|
2354
|
+
"pack": null,
|
|
2355
|
+
"runtimes": [
|
|
2356
|
+
"claude",
|
|
2357
|
+
"codex"
|
|
2358
|
+
],
|
|
2359
|
+
"source": "packages/core/skills/void-migrations/SKILL.md",
|
|
2360
|
+
"staticTokens": 2195,
|
|
2361
|
+
"triggers": {
|
|
2362
|
+
"globs": [
|
|
2363
|
+
"**/migrations/**",
|
|
2364
|
+
"**/*.sql"
|
|
2365
|
+
]
|
|
2366
|
+
},
|
|
2367
|
+
"type": "skill"
|
|
2368
|
+
},
|
|
2369
|
+
{
|
|
2370
|
+
"activation": "always",
|
|
2371
|
+
"description": "Structured logs (no string interp), trace IDs end-to-end, error boundaries at async boundaries, anonymized user scope, no PII/secrets ever. Use @repo/core/logger not console.log. Use for prod code.",
|
|
2372
|
+
"enforcement": {
|
|
2373
|
+
"floor": "ci",
|
|
2374
|
+
"inline": {
|
|
2375
|
+
"claude": "pretooluse",
|
|
2376
|
+
"codex": "pretooluse",
|
|
2377
|
+
"hermes": "ci-only"
|
|
2378
|
+
}
|
|
2379
|
+
},
|
|
2380
|
+
"evalTargets": [
|
|
2381
|
+
{
|
|
2382
|
+
"provider": "anthropic",
|
|
2383
|
+
"runtime": "claude",
|
|
2384
|
+
"tier": "opus"
|
|
2385
|
+
}
|
|
2386
|
+
],
|
|
2387
|
+
"id": "skill:void-observability",
|
|
2388
|
+
"lines": 245,
|
|
2389
|
+
"name": "void-observability",
|
|
2390
|
+
"owner": "folpe",
|
|
2391
|
+
"pack": null,
|
|
2392
|
+
"runtimes": [
|
|
2393
|
+
"claude",
|
|
2394
|
+
"codex"
|
|
2395
|
+
],
|
|
2396
|
+
"source": "packages/core/skills/void-observability/SKILL.md",
|
|
2397
|
+
"staticTokens": 2210,
|
|
2398
|
+
"type": "skill"
|
|
2399
|
+
},
|
|
2400
|
+
{
|
|
2401
|
+
"description": "Turn an approved spec into vertical slices with dependencies, TDD mode, verification gates, checkpoints, and a tracker handoff. Use after brainstorm approves a spec.",
|
|
2402
|
+
"enforcement": {
|
|
2403
|
+
"floor": "ci",
|
|
2404
|
+
"inline": {
|
|
2405
|
+
"claude": "active",
|
|
2406
|
+
"codex": "active",
|
|
2407
|
+
"hermes": "ci-only"
|
|
2408
|
+
}
|
|
2409
|
+
},
|
|
2410
|
+
"evalTargets": [
|
|
2411
|
+
{
|
|
2412
|
+
"provider": "anthropic",
|
|
2413
|
+
"runtime": "claude",
|
|
2414
|
+
"tier": "opus"
|
|
2415
|
+
}
|
|
2416
|
+
],
|
|
2417
|
+
"id": "skill:void-plan",
|
|
2418
|
+
"lines": 239,
|
|
2419
|
+
"name": "void-plan",
|
|
2420
|
+
"owner": "folpe",
|
|
2421
|
+
"pack": null,
|
|
2422
|
+
"runtimes": [
|
|
2423
|
+
"claude",
|
|
2424
|
+
"codex"
|
|
2425
|
+
],
|
|
2426
|
+
"source": "packages/core/skills/void-plan/SKILL.md",
|
|
2427
|
+
"staticTokens": 2623,
|
|
2428
|
+
"type": "skill"
|
|
2429
|
+
},
|
|
2430
|
+
{
|
|
2431
|
+
"activation": "on-demand",
|
|
2432
|
+
"description": "Critique a written plan (not a diff) via four lenses: CEO premise/ambition, Eng test-coverage, Design states/slop, DevEx time-to-first-value. Proposes findings; the author disposes.",
|
|
2433
|
+
"enforcement": {
|
|
2434
|
+
"floor": "ci",
|
|
2435
|
+
"inline": {
|
|
2436
|
+
"claude": "active",
|
|
2437
|
+
"codex": "active",
|
|
2438
|
+
"hermes": "ci-only"
|
|
2439
|
+
}
|
|
2440
|
+
},
|
|
2441
|
+
"evalTargets": [
|
|
2442
|
+
{
|
|
2443
|
+
"provider": "anthropic",
|
|
2444
|
+
"runtime": "claude",
|
|
2445
|
+
"tier": "opus"
|
|
2446
|
+
}
|
|
2447
|
+
],
|
|
2448
|
+
"id": "skill:void-plan-review",
|
|
2449
|
+
"lines": 128,
|
|
2450
|
+
"name": "void-plan-review",
|
|
2451
|
+
"owner": "folpe",
|
|
2452
|
+
"pack": null,
|
|
2453
|
+
"runtimes": [
|
|
2454
|
+
"claude",
|
|
2455
|
+
"codex"
|
|
2456
|
+
],
|
|
2457
|
+
"source": "packages/core/skills/void-plan-review/SKILL.md",
|
|
2458
|
+
"staticTokens": 2685,
|
|
2459
|
+
"type": "skill"
|
|
2460
|
+
},
|
|
2461
|
+
{
|
|
2462
|
+
"activation": "on-demand",
|
|
2463
|
+
"description": "Live browser QA of a running web app via the claude-in-chrome MCP: systematic exploration, edge/error/empty states, atomic fix loop, evidence-backed report. Report-only mode available.",
|
|
2464
|
+
"enforcement": {
|
|
2465
|
+
"floor": "ci",
|
|
2466
|
+
"inline": {
|
|
2467
|
+
"claude": "active",
|
|
2468
|
+
"codex": "active",
|
|
2469
|
+
"hermes": "ci-only"
|
|
2470
|
+
}
|
|
2471
|
+
},
|
|
2472
|
+
"evalTargets": [
|
|
2473
|
+
{
|
|
2474
|
+
"provider": "anthropic",
|
|
2475
|
+
"runtime": "claude",
|
|
2476
|
+
"tier": "opus"
|
|
2477
|
+
}
|
|
2478
|
+
],
|
|
2479
|
+
"id": "skill:void-qa",
|
|
2480
|
+
"lines": 103,
|
|
2481
|
+
"name": "void-qa",
|
|
2482
|
+
"owner": "folpe",
|
|
2483
|
+
"pack": null,
|
|
2484
|
+
"runtimes": [
|
|
2485
|
+
"claude",
|
|
2486
|
+
"codex"
|
|
2487
|
+
],
|
|
2488
|
+
"source": "packages/core/skills/void-qa/SKILL.md",
|
|
2489
|
+
"staticTokens": 2613,
|
|
2490
|
+
"type": "skill"
|
|
2491
|
+
},
|
|
2492
|
+
{
|
|
2493
|
+
"activation": "always",
|
|
2494
|
+
"description": "Tidy-First. Tidyings commit separately from behavior changes (Two-Hat). Named Fowler refactors only. Tests stay green. Two modes (strict/souple). Use when improving structure without behavior change.",
|
|
2495
|
+
"enforcement": {
|
|
2496
|
+
"floor": "ci",
|
|
2497
|
+
"inline": {
|
|
2498
|
+
"claude": "pretooluse",
|
|
2499
|
+
"codex": "pretooluse",
|
|
2500
|
+
"hermes": "ci-only"
|
|
2501
|
+
}
|
|
2502
|
+
},
|
|
2503
|
+
"evalTargets": [
|
|
2504
|
+
{
|
|
2505
|
+
"provider": "anthropic",
|
|
2506
|
+
"runtime": "claude",
|
|
2507
|
+
"tier": "opus"
|
|
2508
|
+
}
|
|
2509
|
+
],
|
|
2510
|
+
"id": "skill:void-refactor",
|
|
2511
|
+
"lines": 220,
|
|
2512
|
+
"name": "void-refactor",
|
|
2513
|
+
"owner": "folpe",
|
|
2514
|
+
"pack": null,
|
|
2515
|
+
"runtimes": [
|
|
2516
|
+
"claude",
|
|
2517
|
+
"codex"
|
|
2518
|
+
],
|
|
2519
|
+
"source": "packages/core/skills/void-refactor/SKILL.md",
|
|
2520
|
+
"staticTokens": 2443,
|
|
2521
|
+
"type": "skill"
|
|
2522
|
+
},
|
|
2523
|
+
{
|
|
2524
|
+
"activation": "on-demand",
|
|
2525
|
+
"description": "Periodic engineering retro over a window: read git log / PRs / .void, surface signals (hotspots, test ratio, commit types, regressions), turn them into improvement decisions feeding learn.",
|
|
2526
|
+
"enforcement": {
|
|
2527
|
+
"floor": "ci",
|
|
2528
|
+
"inline": {
|
|
2529
|
+
"claude": "active",
|
|
2530
|
+
"codex": "active",
|
|
2531
|
+
"hermes": "ci-only"
|
|
2532
|
+
}
|
|
2533
|
+
},
|
|
2534
|
+
"evalTargets": [
|
|
2535
|
+
{
|
|
2536
|
+
"provider": "anthropic",
|
|
2537
|
+
"runtime": "claude",
|
|
2538
|
+
"tier": "opus"
|
|
2539
|
+
}
|
|
2540
|
+
],
|
|
2541
|
+
"id": "skill:void-retrospective",
|
|
2542
|
+
"lines": 71,
|
|
2543
|
+
"name": "void-retrospective",
|
|
2544
|
+
"owner": "folpe",
|
|
2545
|
+
"pack": null,
|
|
2546
|
+
"runtimes": [
|
|
2547
|
+
"claude",
|
|
2548
|
+
"codex"
|
|
2549
|
+
],
|
|
2550
|
+
"source": "packages/core/skills/void-retrospective/SKILL.md",
|
|
2551
|
+
"staticTokens": 1358,
|
|
2552
|
+
"type": "skill"
|
|
2553
|
+
},
|
|
2554
|
+
{
|
|
2555
|
+
"activation": "on-demand",
|
|
2556
|
+
"description": "Periodic deep security audit — OWASP Top 10, STRIDE, secrets, supply chain, CI/CD, infra, LLM. Phase-driven, read-only, zero-noise. The ceiling above security-guidance's daily floor.",
|
|
2557
|
+
"enforcement": {
|
|
2558
|
+
"floor": "ci",
|
|
2559
|
+
"inline": {
|
|
2560
|
+
"claude": "active",
|
|
2561
|
+
"codex": "active",
|
|
2562
|
+
"hermes": "ci-only"
|
|
2563
|
+
}
|
|
2564
|
+
},
|
|
2565
|
+
"evalTargets": [
|
|
2566
|
+
{
|
|
2567
|
+
"provider": "anthropic",
|
|
2568
|
+
"runtime": "claude",
|
|
2569
|
+
"tier": "opus"
|
|
2570
|
+
}
|
|
2571
|
+
],
|
|
2572
|
+
"id": "skill:void-security-audit",
|
|
2573
|
+
"lines": 138,
|
|
2574
|
+
"name": "void-security-audit",
|
|
2575
|
+
"owner": "folpe",
|
|
2576
|
+
"pack": null,
|
|
2577
|
+
"runtimes": [
|
|
2578
|
+
"claude",
|
|
2579
|
+
"codex"
|
|
2580
|
+
],
|
|
2581
|
+
"source": "packages/core/skills/void-security-audit/SKILL.md",
|
|
2582
|
+
"staticTokens": 4179,
|
|
2583
|
+
"type": "skill"
|
|
2584
|
+
},
|
|
2585
|
+
{
|
|
2586
|
+
"activation": "always",
|
|
2587
|
+
"description": "Default-secure at trust boundaries. Zod at every input, secrets via env, SQL parameterized, Better-Auth, LLM I/O untrusted. Escalate to security-audit for deep audits. Use on trust-boundary code.",
|
|
2588
|
+
"enforcement": {
|
|
2589
|
+
"floor": "ci",
|
|
2590
|
+
"inline": {
|
|
2591
|
+
"claude": "pretooluse",
|
|
2592
|
+
"codex": "pretooluse",
|
|
2593
|
+
"hermes": "ci-only"
|
|
2594
|
+
}
|
|
2595
|
+
},
|
|
2596
|
+
"evalTargets": [
|
|
2597
|
+
{
|
|
2598
|
+
"provider": "anthropic",
|
|
2599
|
+
"runtime": "claude",
|
|
2600
|
+
"tier": "opus"
|
|
2601
|
+
}
|
|
2602
|
+
],
|
|
2603
|
+
"id": "skill:void-security-guidance",
|
|
2604
|
+
"lines": 255,
|
|
2605
|
+
"name": "void-security-guidance",
|
|
2606
|
+
"owner": "folpe",
|
|
2607
|
+
"pack": null,
|
|
2608
|
+
"runtimes": [
|
|
2609
|
+
"claude",
|
|
2610
|
+
"codex"
|
|
2611
|
+
],
|
|
2612
|
+
"source": "packages/core/skills/void-security-guidance/SKILL.md",
|
|
2613
|
+
"staticTokens": 2479,
|
|
2614
|
+
"type": "skill"
|
|
2615
|
+
},
|
|
2616
|
+
{
|
|
2617
|
+
"activation": "always",
|
|
2618
|
+
"description": "Ground every third-party config or API usage in the official docs for the installed version, not training memory. Verify the version; cite the reference when it helps. Use before writing any tool config.",
|
|
2619
|
+
"enforcement": {
|
|
2620
|
+
"floor": "ci",
|
|
2621
|
+
"inline": {
|
|
2622
|
+
"claude": "active",
|
|
2623
|
+
"codex": "active",
|
|
2624
|
+
"hermes": "ci-only"
|
|
2625
|
+
}
|
|
2626
|
+
},
|
|
2627
|
+
"evalTargets": [
|
|
2628
|
+
{
|
|
2629
|
+
"provider": "anthropic",
|
|
2630
|
+
"runtime": "claude",
|
|
2631
|
+
"tier": "opus"
|
|
2632
|
+
}
|
|
2633
|
+
],
|
|
2634
|
+
"id": "skill:void-source-driven-development",
|
|
2635
|
+
"lines": 158,
|
|
2636
|
+
"name": "void-source-driven-development",
|
|
2637
|
+
"owner": "folpe",
|
|
2638
|
+
"pack": null,
|
|
2639
|
+
"runtimes": [
|
|
2640
|
+
"claude",
|
|
2641
|
+
"codex"
|
|
2642
|
+
],
|
|
2643
|
+
"source": "packages/core/skills/void-source-driven-development/SKILL.md",
|
|
2644
|
+
"staticTokens": 2452,
|
|
2645
|
+
"type": "skill"
|
|
2646
|
+
},
|
|
2647
|
+
{
|
|
2648
|
+
"activation": "always",
|
|
2649
|
+
"description": "TDD in three modes (strict/souple/exploratory) chosen by path. Iron Law in strict (no prod code without a failing test), mutation gate if tooled, anti-rustine. Use for any feature, bugfix, refactor.",
|
|
2650
|
+
"enforcement": {
|
|
2651
|
+
"floor": "ci",
|
|
2652
|
+
"inline": {
|
|
2653
|
+
"claude": "pretooluse",
|
|
2654
|
+
"codex": "pretooluse",
|
|
2655
|
+
"hermes": "ci-only"
|
|
2656
|
+
}
|
|
2657
|
+
},
|
|
2658
|
+
"evalTargets": [
|
|
2659
|
+
{
|
|
2660
|
+
"provider": "anthropic",
|
|
2661
|
+
"runtime": "claude",
|
|
2662
|
+
"tier": "opus"
|
|
2663
|
+
}
|
|
2664
|
+
],
|
|
2665
|
+
"id": "skill:void-tdd",
|
|
2666
|
+
"lines": 394,
|
|
2667
|
+
"name": "void-tdd",
|
|
2668
|
+
"owner": "folpe",
|
|
2669
|
+
"pack": null,
|
|
2670
|
+
"runtimes": [
|
|
2671
|
+
"claude",
|
|
2672
|
+
"codex"
|
|
2673
|
+
],
|
|
2674
|
+
"source": "packages/core/skills/void-tdd/SKILL.md",
|
|
2675
|
+
"staticTokens": 3771,
|
|
2676
|
+
"type": "skill"
|
|
2677
|
+
},
|
|
2678
|
+
{
|
|
2679
|
+
"activation": "always",
|
|
2680
|
+
"description": "How to write a good test. Behavior over implementation, real code over mocks, factories over beforeEach, pyramid respected, pristine output, no snapshot creep. Use when writing or modifying tests.",
|
|
2681
|
+
"enforcement": {
|
|
2682
|
+
"floor": "ci",
|
|
2683
|
+
"inline": {
|
|
2684
|
+
"claude": "pretooluse",
|
|
2685
|
+
"codex": "pretooluse",
|
|
2686
|
+
"hermes": "ci-only"
|
|
2687
|
+
}
|
|
2688
|
+
},
|
|
2689
|
+
"evalTargets": [
|
|
2690
|
+
{
|
|
2691
|
+
"provider": "anthropic",
|
|
2692
|
+
"runtime": "claude",
|
|
2693
|
+
"tier": "opus"
|
|
2694
|
+
}
|
|
2695
|
+
],
|
|
2696
|
+
"id": "skill:void-testing",
|
|
2697
|
+
"lines": 301,
|
|
2698
|
+
"name": "void-testing",
|
|
2699
|
+
"owner": "folpe",
|
|
2700
|
+
"pack": null,
|
|
2701
|
+
"runtimes": [
|
|
2702
|
+
"claude",
|
|
2703
|
+
"codex"
|
|
2704
|
+
],
|
|
2705
|
+
"source": "packages/core/skills/void-testing/SKILL.md",
|
|
2706
|
+
"staticTokens": 3073,
|
|
2707
|
+
"triggers": {
|
|
2708
|
+
"globs": [
|
|
2709
|
+
"**/*.test.ts",
|
|
2710
|
+
"**/*.spec.ts"
|
|
2711
|
+
]
|
|
2712
|
+
},
|
|
2713
|
+
"type": "skill"
|
|
2714
|
+
},
|
|
2715
|
+
{
|
|
2716
|
+
"description": "Use when turning a finished brainstorm, plan, or design decision into a tracker ticket. Triggers on creating a ticket or issue, logging work, or breaking an approved spec into tickets.",
|
|
2717
|
+
"enforcement": {
|
|
2718
|
+
"floor": "ci",
|
|
2719
|
+
"inline": {
|
|
2720
|
+
"claude": "active",
|
|
2721
|
+
"codex": "active",
|
|
2722
|
+
"hermes": "ci-only"
|
|
2723
|
+
}
|
|
2724
|
+
},
|
|
2725
|
+
"evalTargets": [
|
|
2726
|
+
{
|
|
2727
|
+
"provider": "anthropic",
|
|
2728
|
+
"runtime": "claude",
|
|
2729
|
+
"tier": "opus"
|
|
2730
|
+
}
|
|
2731
|
+
],
|
|
2732
|
+
"id": "skill:void-ticket",
|
|
2733
|
+
"lines": 239,
|
|
2734
|
+
"name": "void-ticket",
|
|
2735
|
+
"owner": "folpe",
|
|
2736
|
+
"pack": null,
|
|
2737
|
+
"runtimes": [
|
|
2738
|
+
"claude",
|
|
2739
|
+
"codex"
|
|
2740
|
+
],
|
|
2741
|
+
"source": "packages/core/skills/void-ticket/SKILL.md",
|
|
2742
|
+
"staticTokens": 3276,
|
|
2743
|
+
"type": "skill"
|
|
2744
|
+
},
|
|
2745
|
+
{
|
|
2746
|
+
"activation": "always",
|
|
2747
|
+
"description": "TS strict baseline. Zero any budget, branded types for domain primitives, discriminated unions over enums, exhaustive switches via never, satisfies over as. Use when editing TypeScript code.",
|
|
2748
|
+
"enforcement": {
|
|
2749
|
+
"floor": "ci",
|
|
2750
|
+
"inline": {
|
|
2751
|
+
"claude": "pretooluse",
|
|
2752
|
+
"codex": "pretooluse",
|
|
2753
|
+
"hermes": "ci-only"
|
|
2754
|
+
}
|
|
2755
|
+
},
|
|
2756
|
+
"evalTargets": [
|
|
2757
|
+
{
|
|
2758
|
+
"provider": "anthropic",
|
|
2759
|
+
"runtime": "claude",
|
|
2760
|
+
"tier": "opus"
|
|
2761
|
+
}
|
|
2762
|
+
],
|
|
2763
|
+
"id": "skill:void-typescript-strict",
|
|
2764
|
+
"lines": 294,
|
|
2765
|
+
"name": "void-typescript-strict",
|
|
2766
|
+
"owner": "folpe",
|
|
2767
|
+
"pack": null,
|
|
2768
|
+
"runtimes": [
|
|
2769
|
+
"claude",
|
|
2770
|
+
"codex"
|
|
2771
|
+
],
|
|
2772
|
+
"source": "packages/core/skills/void-typescript-strict/SKILL.md",
|
|
2773
|
+
"staticTokens": 2681,
|
|
2774
|
+
"triggers": {
|
|
2775
|
+
"extensions": [
|
|
2776
|
+
"ts",
|
|
2777
|
+
"tsx"
|
|
2778
|
+
]
|
|
2779
|
+
},
|
|
2780
|
+
"type": "skill"
|
|
2781
|
+
},
|
|
2782
|
+
{
|
|
2783
|
+
"activation": "on-demand",
|
|
2784
|
+
"description": "Audit and polish an EXISTING UI: the AI-slop test, heuristic critique, technical audit (contrast/a11y/responsive/perf), refine modes. The audit ceiling to frontend-design's build floor.",
|
|
2785
|
+
"enforcement": {
|
|
2786
|
+
"floor": "ci",
|
|
2787
|
+
"inline": {
|
|
2788
|
+
"claude": "active",
|
|
2789
|
+
"codex": "active",
|
|
2790
|
+
"hermes": "ci-only"
|
|
2791
|
+
}
|
|
2792
|
+
},
|
|
2793
|
+
"evalTargets": [
|
|
2794
|
+
{
|
|
2795
|
+
"provider": "anthropic",
|
|
2796
|
+
"runtime": "claude",
|
|
2797
|
+
"tier": "opus"
|
|
2798
|
+
}
|
|
2799
|
+
],
|
|
2800
|
+
"id": "skill:void-ui-review",
|
|
2801
|
+
"lines": 97,
|
|
2802
|
+
"name": "void-ui-review",
|
|
2803
|
+
"owner": "folpe",
|
|
2804
|
+
"pack": null,
|
|
2805
|
+
"runtimes": [
|
|
2806
|
+
"claude",
|
|
2807
|
+
"codex"
|
|
2808
|
+
],
|
|
2809
|
+
"source": "packages/core/skills/void-ui-review/SKILL.md",
|
|
2810
|
+
"staticTokens": 1964,
|
|
2811
|
+
"type": "skill"
|
|
2812
|
+
},
|
|
2813
|
+
{
|
|
2814
|
+
"activation": "always",
|
|
2815
|
+
"description": "Final pre-flight checklist. Twelve items observed (not assumed) — typecheck, tests, hooks, mobile+desktop, commit why, review evidence. Skipping requires reason. Use at end of every task.",
|
|
2816
|
+
"enforcement": {
|
|
2817
|
+
"floor": "ci",
|
|
2818
|
+
"inline": {
|
|
2819
|
+
"claude": "active",
|
|
2820
|
+
"codex": "active",
|
|
2821
|
+
"hermes": "ci-only"
|
|
2822
|
+
}
|
|
2823
|
+
},
|
|
2824
|
+
"evalTargets": [
|
|
2825
|
+
{
|
|
2826
|
+
"provider": "anthropic",
|
|
2827
|
+
"runtime": "claude",
|
|
2828
|
+
"tier": "opus"
|
|
2829
|
+
}
|
|
2830
|
+
],
|
|
2831
|
+
"id": "skill:void-verify",
|
|
2832
|
+
"lines": 184,
|
|
2833
|
+
"name": "void-verify",
|
|
2834
|
+
"owner": "folpe",
|
|
2835
|
+
"pack": null,
|
|
2836
|
+
"runtimes": [
|
|
2837
|
+
"claude",
|
|
2838
|
+
"codex"
|
|
2839
|
+
],
|
|
2840
|
+
"source": "packages/core/skills/void-verify/SKILL.md",
|
|
2841
|
+
"staticTokens": 2267,
|
|
2842
|
+
"type": "skill"
|
|
2843
|
+
}
|
|
2844
|
+
],
|
|
2845
|
+
"edges": [
|
|
2846
|
+
{
|
|
2847
|
+
"from": "agent:migration-planner",
|
|
2848
|
+
"to": "skill:void-migrations",
|
|
2849
|
+
"kind": "companion-of",
|
|
2850
|
+
"origin": "declared",
|
|
2851
|
+
"evidence": "migration-planner: Read-only planner ... Complements migrations"
|
|
2852
|
+
},
|
|
2853
|
+
{
|
|
2854
|
+
"from": "agent:migration-planner",
|
|
2855
|
+
"to": "skill:void-plan",
|
|
2856
|
+
"kind": "routes-to",
|
|
2857
|
+
"origin": "declared",
|
|
2858
|
+
"evidence": "migration-planner: Planning only ... routes execution to tdd/plan"
|
|
2859
|
+
},
|
|
2860
|
+
{
|
|
2861
|
+
"from": "hook:activation-meter",
|
|
2862
|
+
"to": "skill:void-graph",
|
|
2863
|
+
"kind": "companion-of",
|
|
2864
|
+
"origin": "declared",
|
|
2865
|
+
"evidence": "void-graph SKILL.md: the analyzer correlates the installed model with activation-meter mission events"
|
|
2866
|
+
},
|
|
2867
|
+
{
|
|
2868
|
+
"from": "hook:anti-ai-slop-grep",
|
|
2869
|
+
"to": "skill:void-frontend-design",
|
|
2870
|
+
"kind": "enforces",
|
|
2871
|
+
"origin": "declared",
|
|
2872
|
+
"evidence": "anti-ai-slop-grep flags generic AI aesthetics — enforces frontend-design"
|
|
2873
|
+
},
|
|
2874
|
+
{
|
|
2875
|
+
"from": "hook:auto-format",
|
|
2876
|
+
"to": "skill:void-commit-discipline",
|
|
2877
|
+
"kind": "companion-of",
|
|
2878
|
+
"origin": "declared",
|
|
2879
|
+
"evidence": "CHEATSHEET: auto-format formats on write, so formatting never appears in a behavioural diff"
|
|
2880
|
+
},
|
|
2881
|
+
{
|
|
2882
|
+
"from": "hook:axe-precommit",
|
|
2883
|
+
"to": "skill:void-accessibility",
|
|
2884
|
+
"kind": "enforces",
|
|
2885
|
+
"origin": "declared",
|
|
2886
|
+
"evidence": "axe-precommit runs axe a11y checks — enforces accessibility"
|
|
2887
|
+
},
|
|
2888
|
+
{
|
|
2889
|
+
"from": "hook:block-dangerous-bash",
|
|
2890
|
+
"to": "skill:void-security-guidance",
|
|
2891
|
+
"kind": "enforces",
|
|
2892
|
+
"origin": "declared",
|
|
2893
|
+
"evidence": "block-dangerous-bash blocks destructive shell — enforces security-guidance"
|
|
2894
|
+
},
|
|
2895
|
+
{
|
|
2896
|
+
"from": "hook:block-protected-push",
|
|
2897
|
+
"to": "skill:void-autopilot",
|
|
2898
|
+
"kind": "enforces",
|
|
2899
|
+
"origin": "declared",
|
|
2900
|
+
"evidence": "block-protected-push guards protected-branch pushes for commit-only autopilot workers — enforces autopilot"
|
|
2901
|
+
},
|
|
2902
|
+
{
|
|
2903
|
+
"from": "hook:boundary-direction-check",
|
|
2904
|
+
"to": "skill:void-hexagonal-architecture",
|
|
2905
|
+
"kind": "enforces",
|
|
2906
|
+
"origin": "declared",
|
|
2907
|
+
"evidence": "boundary-direction-check enforces the import direction — enforces hexagonal-architecture"
|
|
2908
|
+
},
|
|
2909
|
+
{
|
|
2910
|
+
"from": "hook:control-character-grep",
|
|
2911
|
+
"to": "skill:void-testing",
|
|
2912
|
+
"kind": "enforces",
|
|
2913
|
+
"origin": "declared",
|
|
2914
|
+
"evidence": "control-character-grep refuses an invisible control byte in a source file — enforces testing's rule that a fixture needing one builds it rather than holding it literally"
|
|
2915
|
+
},
|
|
2916
|
+
{
|
|
2917
|
+
"from": "hook:large-cl-grep",
|
|
2918
|
+
"to": "skill:void-commit-discipline",
|
|
2919
|
+
"kind": "enforces",
|
|
2920
|
+
"origin": "declared",
|
|
2921
|
+
"evidence": "large-cl-grep warns on oversized changelists — enforces commit-discipline (small commits)"
|
|
2922
|
+
},
|
|
2923
|
+
{
|
|
2924
|
+
"from": "hook:llm-cost-precommit",
|
|
2925
|
+
"to": "skill:void-llm-cost-discipline",
|
|
2926
|
+
"kind": "enforces",
|
|
2927
|
+
"origin": "declared",
|
|
2928
|
+
"evidence": "llm-cost-precommit checks LLM call-site discipline — enforces llm-cost-discipline"
|
|
2929
|
+
},
|
|
2930
|
+
{
|
|
2931
|
+
"from": "hook:migration-lint",
|
|
2932
|
+
"to": "skill:void-migrations",
|
|
2933
|
+
"kind": "enforces",
|
|
2934
|
+
"origin": "declared",
|
|
2935
|
+
"evidence": "migration-lint flags banned DDL patterns — enforces migrations"
|
|
2936
|
+
},
|
|
2937
|
+
{
|
|
2938
|
+
"from": "hook:migration-pr-template",
|
|
2939
|
+
"to": "skill:void-migrations",
|
|
2940
|
+
"kind": "enforces",
|
|
2941
|
+
"origin": "declared",
|
|
2942
|
+
"evidence": "migration-pr-template requires the migration checklist — enforces migrations"
|
|
2943
|
+
},
|
|
2944
|
+
{
|
|
2945
|
+
"from": "hook:no-ai-design-slop",
|
|
2946
|
+
"to": "skill:void-frontend-design",
|
|
2947
|
+
"kind": "enforces",
|
|
2948
|
+
"origin": "declared",
|
|
2949
|
+
"evidence": "no-ai-design-slop blocks AI-slop UI patterns — enforces frontend-design"
|
|
2950
|
+
},
|
|
2951
|
+
{
|
|
2952
|
+
"from": "hook:no-any-grep",
|
|
2953
|
+
"to": "skill:void-typescript-strict",
|
|
2954
|
+
"kind": "enforces",
|
|
2955
|
+
"origin": "declared",
|
|
2956
|
+
"evidence": "no-any-grep blocks the `any` type — enforces typescript-strict's zero-any budget"
|
|
2957
|
+
},
|
|
2958
|
+
{
|
|
2959
|
+
"from": "hook:no-as-cast-grep",
|
|
2960
|
+
"to": "skill:void-typescript-strict",
|
|
2961
|
+
"kind": "enforces",
|
|
2962
|
+
"origin": "declared",
|
|
2963
|
+
"evidence": "no-as-cast-grep blocks `as Foo` casts — enforces typescript-strict (satisfies over as)"
|
|
2964
|
+
},
|
|
2965
|
+
{
|
|
2966
|
+
"from": "hook:no-console-log-grep",
|
|
2967
|
+
"to": "skill:void-observability",
|
|
2968
|
+
"kind": "enforces",
|
|
2969
|
+
"origin": "declared",
|
|
2970
|
+
"evidence": "no-console-log-grep bans console.log — enforces observability (use the logger)"
|
|
2971
|
+
},
|
|
2972
|
+
{
|
|
2973
|
+
"from": "hook:no-null-grep",
|
|
2974
|
+
"to": "skill:void-functional",
|
|
2975
|
+
"kind": "enforces",
|
|
2976
|
+
"origin": "declared",
|
|
2977
|
+
"evidence": "no-null-grep prefers undefined/Option over null — enforces functional"
|
|
2978
|
+
},
|
|
2979
|
+
{
|
|
2980
|
+
"from": "hook:no-only-no-skip",
|
|
2981
|
+
"to": "skill:void-testing",
|
|
2982
|
+
"kind": "enforces",
|
|
2983
|
+
"origin": "declared",
|
|
2984
|
+
"evidence": "no-only-no-skip bans .only/.skip — enforces testing (no silently disabled tests)"
|
|
2985
|
+
},
|
|
2986
|
+
{
|
|
2987
|
+
"from": "hook:outcome-meter",
|
|
2988
|
+
"to": "skill:void-graph",
|
|
2989
|
+
"kind": "companion-of",
|
|
2990
|
+
"origin": "declared",
|
|
2991
|
+
"evidence": "graph cost joins PostToolUse outcomes to component invocations to expose yield"
|
|
2992
|
+
},
|
|
2993
|
+
{
|
|
2994
|
+
"from": "hook:pre-PR-review-evidence",
|
|
2995
|
+
"to": "skill:void-code-review",
|
|
2996
|
+
"kind": "enforces",
|
|
2997
|
+
"origin": "declared",
|
|
2998
|
+
"evidence": "pre-PR-review-evidence requires review evidence before a PR — enforces code-review"
|
|
2999
|
+
},
|
|
3000
|
+
{
|
|
3001
|
+
"from": "hook:protect-sensitive-files",
|
|
3002
|
+
"to": "skill:void-security-guidance",
|
|
3003
|
+
"kind": "enforces",
|
|
3004
|
+
"origin": "declared",
|
|
3005
|
+
"evidence": "protect-sensitive-files blocks secrets/keys edits — enforces security-guidance"
|
|
3006
|
+
},
|
|
3007
|
+
{
|
|
3008
|
+
"from": "hook:refactor-named-grep",
|
|
3009
|
+
"to": "skill:void-refactor",
|
|
3010
|
+
"kind": "enforces",
|
|
3011
|
+
"origin": "declared",
|
|
3012
|
+
"evidence": "refactor-named-grep requires named Fowler refactors — enforces refactor"
|
|
3013
|
+
},
|
|
3014
|
+
{
|
|
3015
|
+
"from": "hook:secret-in-content",
|
|
3016
|
+
"to": "skill:void-security-guidance",
|
|
3017
|
+
"kind": "enforces",
|
|
3018
|
+
"origin": "declared",
|
|
3019
|
+
"evidence": "secret-in-content refuses writes that carry credentials — enforces security-guidance's no-secret boundary"
|
|
3020
|
+
},
|
|
3021
|
+
{
|
|
3022
|
+
"from": "hook:sessionstart-context",
|
|
3023
|
+
"to": "skill:void-context",
|
|
3024
|
+
"kind": "companion-of",
|
|
3025
|
+
"origin": "declared",
|
|
3026
|
+
"evidence": "CHEATSHEET: sessionstart-context loads the project's standing context once, at the start of a session"
|
|
3027
|
+
},
|
|
3028
|
+
{
|
|
3029
|
+
"from": "hook:stop-typecheck",
|
|
3030
|
+
"to": "skill:void-typescript-strict",
|
|
3031
|
+
"kind": "enforces",
|
|
3032
|
+
"origin": "declared",
|
|
3033
|
+
"evidence": "stop-typecheck typechecks the touched TypeScript surface before session end — enforces typescript-strict"
|
|
3034
|
+
},
|
|
3035
|
+
{
|
|
3036
|
+
"from": "hook:tdd-guard",
|
|
3037
|
+
"to": "skill:void-tdd",
|
|
3038
|
+
"kind": "enforces",
|
|
3039
|
+
"origin": "declared",
|
|
3040
|
+
"evidence": "tdd-guard requires a test to drive every production change — enforces tdd (Iron Law)"
|
|
3041
|
+
},
|
|
3042
|
+
{
|
|
3043
|
+
"from": "hook:test-name-lint",
|
|
3044
|
+
"to": "skill:void-testing",
|
|
3045
|
+
"kind": "enforces",
|
|
3046
|
+
"origin": "declared",
|
|
3047
|
+
"evidence": "test-name-lint checks behavior-named tests — enforces testing"
|
|
3048
|
+
},
|
|
3049
|
+
{
|
|
3050
|
+
"from": "hook:tidying-commit-prefix",
|
|
3051
|
+
"to": "skill:void-refactor",
|
|
3052
|
+
"kind": "enforces",
|
|
3053
|
+
"origin": "declared",
|
|
3054
|
+
"evidence": "tidying-commit-prefix separates tidyings from behavior — enforces refactor (Tidy-First)"
|
|
3055
|
+
},
|
|
3056
|
+
{
|
|
3057
|
+
"from": "hook:trim-large-output",
|
|
3058
|
+
"to": "skill:void-context",
|
|
3059
|
+
"kind": "enforces",
|
|
3060
|
+
"origin": "declared",
|
|
3061
|
+
"evidence": "CHEATSHEET: trim-large-output bounds oversized tool output before it consumes the context window"
|
|
3062
|
+
},
|
|
3063
|
+
{
|
|
3064
|
+
"from": "hook:tsc-noemit-precommit",
|
|
3065
|
+
"to": "skill:void-typescript-strict",
|
|
3066
|
+
"kind": "enforces",
|
|
3067
|
+
"origin": "declared",
|
|
3068
|
+
"evidence": "tsc-noemit-precommit gates on a clean typecheck — enforces typescript-strict"
|
|
3069
|
+
},
|
|
3070
|
+
{
|
|
3071
|
+
"from": "hook:ubiquitous-language-lint",
|
|
3072
|
+
"to": "skill:void-domain-driven-design",
|
|
3073
|
+
"kind": "enforces",
|
|
3074
|
+
"origin": "declared",
|
|
3075
|
+
"evidence": "ubiquitous-language-lint checks domain vocabulary — enforces domain-driven-design"
|
|
3076
|
+
},
|
|
3077
|
+
{
|
|
3078
|
+
"from": "hook:viewport-screenshot-gate",
|
|
3079
|
+
"to": "skill:void-accessibility",
|
|
3080
|
+
"kind": "enforces",
|
|
3081
|
+
"origin": "declared",
|
|
3082
|
+
"evidence": "viewport-screenshot-gate gates mobile+desktop viewports — enforces accessibility"
|
|
3083
|
+
},
|
|
3084
|
+
{
|
|
3085
|
+
"from": "pack:pack-mobile",
|
|
3086
|
+
"to": "skill:pack-mobile/void-eas-build-profile",
|
|
3087
|
+
"kind": "composes",
|
|
3088
|
+
"origin": "derived",
|
|
3089
|
+
"evidence": "pack pack-mobile contains skill void-eas-build-profile"
|
|
3090
|
+
},
|
|
3091
|
+
{
|
|
3092
|
+
"from": "pack:pack-mobile",
|
|
3093
|
+
"to": "skill:pack-mobile/void-expo-config-plugins",
|
|
3094
|
+
"kind": "composes",
|
|
3095
|
+
"origin": "derived",
|
|
3096
|
+
"evidence": "pack pack-mobile contains skill void-expo-config-plugins"
|
|
3097
|
+
},
|
|
3098
|
+
{
|
|
3099
|
+
"from": "pack:pack-mobile",
|
|
3100
|
+
"to": "skill:pack-mobile/void-expo-router-pattern",
|
|
3101
|
+
"kind": "composes",
|
|
3102
|
+
"origin": "derived",
|
|
3103
|
+
"evidence": "pack pack-mobile contains skill void-expo-router-pattern"
|
|
3104
|
+
},
|
|
3105
|
+
{
|
|
3106
|
+
"from": "pack:pack-mobile",
|
|
3107
|
+
"to": "skill:pack-mobile/void-ota-update-strategy",
|
|
3108
|
+
"kind": "composes",
|
|
3109
|
+
"origin": "derived",
|
|
3110
|
+
"evidence": "pack pack-mobile contains skill void-ota-update-strategy"
|
|
3111
|
+
},
|
|
3112
|
+
{
|
|
3113
|
+
"from": "pack:pack-monorepo",
|
|
3114
|
+
"to": "skill:pack-monorepo/void-dependency-direction",
|
|
3115
|
+
"kind": "composes",
|
|
3116
|
+
"origin": "derived",
|
|
3117
|
+
"evidence": "pack pack-monorepo contains skill void-dependency-direction"
|
|
3118
|
+
},
|
|
3119
|
+
{
|
|
3120
|
+
"from": "pack:pack-monorepo",
|
|
3121
|
+
"to": "skill:pack-monorepo/void-package-extraction",
|
|
3122
|
+
"kind": "composes",
|
|
3123
|
+
"origin": "derived",
|
|
3124
|
+
"evidence": "pack pack-monorepo contains skill void-package-extraction"
|
|
3125
|
+
},
|
|
3126
|
+
{
|
|
3127
|
+
"from": "pack:pack-monorepo",
|
|
3128
|
+
"to": "skill:pack-monorepo/void-service-package",
|
|
3129
|
+
"kind": "composes",
|
|
3130
|
+
"origin": "derived",
|
|
3131
|
+
"evidence": "pack pack-monorepo contains skill void-service-package"
|
|
3132
|
+
},
|
|
3133
|
+
{
|
|
3134
|
+
"from": "pack:pack-monorepo",
|
|
3135
|
+
"to": "skill:pack-monorepo/void-turbo-pipeline-tuning",
|
|
3136
|
+
"kind": "composes",
|
|
3137
|
+
"origin": "derived",
|
|
3138
|
+
"evidence": "pack pack-monorepo contains skill void-turbo-pipeline-tuning"
|
|
3139
|
+
},
|
|
3140
|
+
{
|
|
3141
|
+
"from": "pack:pack-nextjs",
|
|
3142
|
+
"to": "skill:pack-nextjs/void-cache-component-pattern",
|
|
3143
|
+
"kind": "composes",
|
|
3144
|
+
"origin": "derived",
|
|
3145
|
+
"evidence": "pack pack-nextjs contains skill void-cache-component-pattern"
|
|
3146
|
+
},
|
|
3147
|
+
{
|
|
3148
|
+
"from": "pack:pack-nextjs",
|
|
3149
|
+
"to": "skill:pack-nextjs/void-instrumentation-setup",
|
|
3150
|
+
"kind": "composes",
|
|
3151
|
+
"origin": "derived",
|
|
3152
|
+
"evidence": "pack pack-nextjs contains skill void-instrumentation-setup"
|
|
3153
|
+
},
|
|
3154
|
+
{
|
|
3155
|
+
"from": "pack:pack-nextjs",
|
|
3156
|
+
"to": "skill:pack-nextjs/void-loading-error-boundaries",
|
|
3157
|
+
"kind": "composes",
|
|
3158
|
+
"origin": "derived",
|
|
3159
|
+
"evidence": "pack pack-nextjs contains skill void-loading-error-boundaries"
|
|
3160
|
+
},
|
|
3161
|
+
{
|
|
3162
|
+
"from": "pack:pack-nextjs",
|
|
3163
|
+
"to": "skill:pack-nextjs/void-parallel-routes-slots",
|
|
3164
|
+
"kind": "composes",
|
|
3165
|
+
"origin": "derived",
|
|
3166
|
+
"evidence": "pack pack-nextjs contains skill void-parallel-routes-slots"
|
|
3167
|
+
},
|
|
3168
|
+
{
|
|
3169
|
+
"from": "pack:pack-nextjs",
|
|
3170
|
+
"to": "skill:pack-nextjs/void-route-group-decision",
|
|
3171
|
+
"kind": "composes",
|
|
3172
|
+
"origin": "derived",
|
|
3173
|
+
"evidence": "pack pack-nextjs contains skill void-route-group-decision"
|
|
3174
|
+
},
|
|
3175
|
+
{
|
|
3176
|
+
"from": "pack:pack-pwa",
|
|
3177
|
+
"to": "skill:pack-pwa/void-install-prompt-ux",
|
|
3178
|
+
"kind": "composes",
|
|
3179
|
+
"origin": "derived",
|
|
3180
|
+
"evidence": "pack pack-pwa contains skill void-install-prompt-ux"
|
|
3181
|
+
},
|
|
3182
|
+
{
|
|
3183
|
+
"from": "pack:pack-pwa",
|
|
3184
|
+
"to": "skill:pack-pwa/void-manifest-checklist",
|
|
3185
|
+
"kind": "composes",
|
|
3186
|
+
"origin": "derived",
|
|
3187
|
+
"evidence": "pack pack-pwa contains skill void-manifest-checklist"
|
|
3188
|
+
},
|
|
3189
|
+
{
|
|
3190
|
+
"from": "pack:pack-pwa",
|
|
3191
|
+
"to": "skill:pack-pwa/void-offline-first-mutation",
|
|
3192
|
+
"kind": "composes",
|
|
3193
|
+
"origin": "derived",
|
|
3194
|
+
"evidence": "pack pack-pwa contains skill void-offline-first-mutation"
|
|
3195
|
+
},
|
|
3196
|
+
{
|
|
3197
|
+
"from": "pack:pack-pwa",
|
|
3198
|
+
"to": "skill:pack-pwa/void-service-worker-strategy",
|
|
3199
|
+
"kind": "composes",
|
|
3200
|
+
"origin": "derived",
|
|
3201
|
+
"evidence": "pack pack-pwa contains skill void-service-worker-strategy"
|
|
3202
|
+
},
|
|
3203
|
+
{
|
|
3204
|
+
"from": "pack:pack-react",
|
|
3205
|
+
"to": "skill:pack-react/void-accessibility-check",
|
|
3206
|
+
"kind": "composes",
|
|
3207
|
+
"origin": "derived",
|
|
3208
|
+
"evidence": "pack pack-react contains skill void-accessibility-check"
|
|
3209
|
+
},
|
|
3210
|
+
{
|
|
3211
|
+
"from": "pack:pack-react",
|
|
3212
|
+
"to": "skill:pack-react/void-client-vs-server-component",
|
|
3213
|
+
"kind": "composes",
|
|
3214
|
+
"origin": "derived",
|
|
3215
|
+
"evidence": "pack pack-react contains skill void-client-vs-server-component"
|
|
3216
|
+
},
|
|
3217
|
+
{
|
|
3218
|
+
"from": "pack:pack-react",
|
|
3219
|
+
"to": "skill:pack-react/void-form-pattern",
|
|
3220
|
+
"kind": "composes",
|
|
3221
|
+
"origin": "derived",
|
|
3222
|
+
"evidence": "pack pack-react contains skill void-form-pattern"
|
|
3223
|
+
},
|
|
3224
|
+
{
|
|
3225
|
+
"from": "pack:pack-react",
|
|
3226
|
+
"to": "skill:pack-react/void-state-architecture",
|
|
3227
|
+
"kind": "composes",
|
|
3228
|
+
"origin": "derived",
|
|
3229
|
+
"evidence": "pack pack-react contains skill void-state-architecture"
|
|
3230
|
+
},
|
|
3231
|
+
{
|
|
3232
|
+
"from": "pack:pack-server",
|
|
3233
|
+
"to": "skill:pack-server/void-background-job-pattern",
|
|
3234
|
+
"kind": "composes",
|
|
3235
|
+
"origin": "derived",
|
|
3236
|
+
"evidence": "pack pack-server contains skill void-background-job-pattern"
|
|
3237
|
+
},
|
|
3238
|
+
{
|
|
3239
|
+
"from": "pack:pack-server",
|
|
3240
|
+
"to": "skill:pack-server/void-drizzle-migration-safe",
|
|
3241
|
+
"kind": "composes",
|
|
3242
|
+
"origin": "derived",
|
|
3243
|
+
"evidence": "pack pack-server contains skill void-drizzle-migration-safe"
|
|
3244
|
+
},
|
|
3245
|
+
{
|
|
3246
|
+
"from": "pack:pack-server",
|
|
3247
|
+
"to": "skill:pack-server/void-env-validation",
|
|
3248
|
+
"kind": "composes",
|
|
3249
|
+
"origin": "derived",
|
|
3250
|
+
"evidence": "pack pack-server contains skill void-env-validation"
|
|
3251
|
+
},
|
|
3252
|
+
{
|
|
3253
|
+
"from": "pack:pack-server",
|
|
3254
|
+
"to": "skill:pack-server/void-rate-limit-strategy",
|
|
3255
|
+
"kind": "composes",
|
|
3256
|
+
"origin": "derived",
|
|
3257
|
+
"evidence": "pack pack-server contains skill void-rate-limit-strategy"
|
|
3258
|
+
},
|
|
3259
|
+
{
|
|
3260
|
+
"from": "pack:pack-server",
|
|
3261
|
+
"to": "skill:pack-server/void-server-action",
|
|
3262
|
+
"kind": "composes",
|
|
3263
|
+
"origin": "derived",
|
|
3264
|
+
"evidence": "pack pack-server contains skill void-server-action"
|
|
3265
|
+
},
|
|
3266
|
+
{
|
|
3267
|
+
"from": "pack:pack-server",
|
|
3268
|
+
"to": "skill:pack-server/void-testing-server-modules",
|
|
3269
|
+
"kind": "composes",
|
|
3270
|
+
"origin": "derived",
|
|
3271
|
+
"evidence": "pack pack-server contains skill void-testing-server-modules"
|
|
3272
|
+
},
|
|
3273
|
+
{
|
|
3274
|
+
"from": "pack:pack-server",
|
|
3275
|
+
"to": "skill:pack-server/void-webhook-handler-pattern",
|
|
3276
|
+
"kind": "composes",
|
|
3277
|
+
"origin": "derived",
|
|
3278
|
+
"evidence": "pack pack-server contains skill void-webhook-handler-pattern"
|
|
3279
|
+
},
|
|
3280
|
+
{
|
|
3281
|
+
"from": "skill:pack-monorepo/void-dependency-direction",
|
|
3282
|
+
"to": "skill:void-hexagonal-architecture",
|
|
3283
|
+
"kind": "composes",
|
|
3284
|
+
"origin": "declared",
|
|
3285
|
+
"evidence": "pack-monorepo/dependency-direction SKILL.md description: Composes with core:hexagonal-architecture and the boundary-direction-check hook."
|
|
3286
|
+
},
|
|
3287
|
+
{
|
|
3288
|
+
"from": "skill:pack-monorepo/void-package-extraction",
|
|
3289
|
+
"to": "skill:pack-monorepo/void-service-package",
|
|
3290
|
+
"kind": "composes",
|
|
3291
|
+
"origin": "declared",
|
|
3292
|
+
"evidence": "pack-monorepo/package-extraction SKILL.md: Composes with harness-monorepo:service-package (which is the creation workflow once you've decided yes)."
|
|
3293
|
+
},
|
|
3294
|
+
{
|
|
3295
|
+
"from": "skill:pack-monorepo/void-service-package",
|
|
3296
|
+
"to": "skill:void-domain-driven-design",
|
|
3297
|
+
"kind": "composes",
|
|
3298
|
+
"origin": "declared",
|
|
3299
|
+
"evidence": "pack-monorepo/service-package SKILL.md description: Composes with hexagonal-architecture, DDD."
|
|
3300
|
+
},
|
|
3301
|
+
{
|
|
3302
|
+
"from": "skill:pack-monorepo/void-service-package",
|
|
3303
|
+
"to": "skill:void-hexagonal-architecture",
|
|
3304
|
+
"kind": "composes",
|
|
3305
|
+
"origin": "declared",
|
|
3306
|
+
"evidence": "pack-monorepo/service-package SKILL.md description: Composes with hexagonal-architecture, DDD."
|
|
3307
|
+
},
|
|
3308
|
+
{
|
|
3309
|
+
"from": "skill:pack-nextjs/void-instrumentation-setup",
|
|
3310
|
+
"to": "skill:void-observability",
|
|
3311
|
+
"kind": "composes",
|
|
3312
|
+
"origin": "declared",
|
|
3313
|
+
"evidence": "pack-nextjs/instrumentation-setup SKILL.md: Composes with observability (the doctrine: pino, structured logs, Sentry user scope)."
|
|
3314
|
+
},
|
|
3315
|
+
{
|
|
3316
|
+
"from": "skill:pack-nextjs/void-loading-error-boundaries",
|
|
3317
|
+
"to": "skill:void-observability",
|
|
3318
|
+
"kind": "composes",
|
|
3319
|
+
"origin": "declared",
|
|
3320
|
+
"evidence": "pack-nextjs/loading-error-boundaries SKILL.md: Log to Sentry (composes with observability)"
|
|
3321
|
+
},
|
|
3322
|
+
{
|
|
3323
|
+
"from": "skill:pack-react/void-accessibility-check",
|
|
3324
|
+
"to": "skill:void-accessibility",
|
|
3325
|
+
"kind": "composes",
|
|
3326
|
+
"origin": "declared",
|
|
3327
|
+
"evidence": "pack-react/accessibility-check SKILL.md: Composes with accessibility (the generic doctrine and Radix-as-primitive philosophy)."
|
|
3328
|
+
},
|
|
3329
|
+
{
|
|
3330
|
+
"from": "skill:pack-react/void-form-pattern",
|
|
3331
|
+
"to": "skill:pack-react/void-accessibility-check",
|
|
3332
|
+
"kind": "composes",
|
|
3333
|
+
"origin": "declared",
|
|
3334
|
+
"evidence": "pack-react/form-pattern SKILL.md: Touch targets >= 44x44 (composes with harness-react:accessibility-check)."
|
|
3335
|
+
},
|
|
3336
|
+
{
|
|
3337
|
+
"from": "skill:pack-react/void-form-pattern",
|
|
3338
|
+
"to": "skill:pack-server/void-server-action",
|
|
3339
|
+
"kind": "composes",
|
|
3340
|
+
"origin": "declared",
|
|
3341
|
+
"evidence": "pack-react/form-pattern SKILL.md description: Build forms with react-hook-form + Zod resolver... Composes with harness-server:server-action."
|
|
3342
|
+
},
|
|
3343
|
+
{
|
|
3344
|
+
"from": "skill:pack-server/void-drizzle-migration-safe",
|
|
3345
|
+
"to": "skill:void-migrations",
|
|
3346
|
+
"kind": "composes",
|
|
3347
|
+
"origin": "declared",
|
|
3348
|
+
"evidence": "pack-server/drizzle-migration-safe SKILL.md: Composes with migrations (the generic doctrine); this skill ships the concrete Drizzle patterns."
|
|
3349
|
+
},
|
|
3350
|
+
{
|
|
3351
|
+
"from": "skill:pack-server/void-env-validation",
|
|
3352
|
+
"to": "skill:void-security-guidance",
|
|
3353
|
+
"kind": "composes",
|
|
3354
|
+
"origin": "declared",
|
|
3355
|
+
"evidence": "pack-server/env-validation SKILL.md: Composes with security-guidance (env doctrine)"
|
|
3356
|
+
},
|
|
3357
|
+
{
|
|
3358
|
+
"from": "skill:pack-server/void-server-action",
|
|
3359
|
+
"to": "skill:void-async-safety",
|
|
3360
|
+
"kind": "composes",
|
|
3361
|
+
"origin": "declared",
|
|
3362
|
+
"evidence": "pack-server/server-action SKILL.md description: Composes with security-guidance, async-safety."
|
|
3363
|
+
},
|
|
3364
|
+
{
|
|
3365
|
+
"from": "skill:pack-server/void-server-action",
|
|
3366
|
+
"to": "skill:void-security-guidance",
|
|
3367
|
+
"kind": "composes",
|
|
3368
|
+
"origin": "declared",
|
|
3369
|
+
"evidence": "pack-server/server-action SKILL.md description: Composes with security-guidance, async-safety."
|
|
3370
|
+
},
|
|
3371
|
+
{
|
|
3372
|
+
"from": "skill:void-api-and-interface-design",
|
|
3373
|
+
"to": "skill:void-async-safety",
|
|
3374
|
+
"kind": "composes",
|
|
3375
|
+
"origin": "declared",
|
|
3376
|
+
"evidence": "api-and-interface-design SKILL.md: two contract terms earn their place when relevant. Composes with async-safety."
|
|
3377
|
+
},
|
|
3378
|
+
{
|
|
3379
|
+
"from": "skill:void-api-and-interface-design",
|
|
3380
|
+
"to": "skill:void-functional",
|
|
3381
|
+
"kind": "composes",
|
|
3382
|
+
"origin": "declared",
|
|
3383
|
+
"evidence": "api-and-interface-design SKILL.md: return Result<T, E> where E is a closed, named set of failures. Composes with functional."
|
|
3384
|
+
},
|
|
3385
|
+
{
|
|
3386
|
+
"from": "skill:void-api-and-interface-design",
|
|
3387
|
+
"to": "skill:void-security-guidance",
|
|
3388
|
+
"kind": "composes",
|
|
3389
|
+
"origin": "declared",
|
|
3390
|
+
"evidence": "api-and-interface-design SKILL.md: External input is untrusted; parse it into the boundary type... Composes with security-guidance."
|
|
3391
|
+
},
|
|
3392
|
+
{
|
|
3393
|
+
"from": "skill:void-api-and-interface-design",
|
|
3394
|
+
"to": "skill:void-typescript-strict",
|
|
3395
|
+
"kind": "composes",
|
|
3396
|
+
"origin": "declared",
|
|
3397
|
+
"evidence": "api-and-interface-design SKILL.md: The best contract makes the invalid call fail to compile, not fail at runtime. Composes with typescript-strict."
|
|
3398
|
+
},
|
|
3399
|
+
{
|
|
3400
|
+
"from": "skill:void-async-safety",
|
|
3401
|
+
"to": "skill:void-functional",
|
|
3402
|
+
"kind": "composes",
|
|
3403
|
+
"origin": "declared",
|
|
3404
|
+
"evidence": "async-safety SKILL.md: functional (the outcome is a value — Rates or the fallback — not an exception that escapes the boundary)"
|
|
3405
|
+
},
|
|
3406
|
+
{
|
|
3407
|
+
"from": "skill:void-async-safety",
|
|
3408
|
+
"to": "skill:void-hexagonal-architecture",
|
|
3409
|
+
"kind": "composes",
|
|
3410
|
+
"origin": "declared",
|
|
3411
|
+
"evidence": "async-safety SKILL.md: IdempotencyStore is a port (composes with hexagonal-architecture)"
|
|
3412
|
+
},
|
|
3413
|
+
{
|
|
3414
|
+
"from": "skill:void-async-safety",
|
|
3415
|
+
"to": "skill:void-migrations",
|
|
3416
|
+
"kind": "composes",
|
|
3417
|
+
"origin": "declared",
|
|
3418
|
+
"evidence": "async-safety SKILL.md: The domain_events table schema... (composes with migrations)."
|
|
3419
|
+
},
|
|
3420
|
+
{
|
|
3421
|
+
"from": "skill:void-async-safety",
|
|
3422
|
+
"to": "skill:void-observability",
|
|
3423
|
+
"kind": "composes",
|
|
3424
|
+
"origin": "declared",
|
|
3425
|
+
"evidence": "async-safety SKILL.md: composes with observability (the degradation is a structured warn, never swallowed)"
|
|
3426
|
+
},
|
|
3427
|
+
{
|
|
3428
|
+
"from": "skill:void-async-safety",
|
|
3429
|
+
"to": "skill:void-security-guidance",
|
|
3430
|
+
"kind": "composes",
|
|
3431
|
+
"origin": "declared",
|
|
3432
|
+
"evidence": "async-safety SKILL.md: Reject events older than the configured window... Composes with security-guidance (replay attack protection)."
|
|
3433
|
+
},
|
|
3434
|
+
{
|
|
3435
|
+
"from": "skill:void-audit",
|
|
3436
|
+
"to": "skill:void-learn",
|
|
3437
|
+
"kind": "routes-to",
|
|
3438
|
+
"origin": "declared",
|
|
3439
|
+
"evidence": "void-audit SKILL.md: an accepted proposal is filed through void-learn, which owns the HITL capture"
|
|
3440
|
+
},
|
|
3441
|
+
{
|
|
3442
|
+
"from": "skill:void-autopilot",
|
|
3443
|
+
"to": "skill:void-implement",
|
|
3444
|
+
"kind": "composes",
|
|
3445
|
+
"origin": "declared",
|
|
3446
|
+
"evidence": "implement SKILL.md: Caller: autopilot runs this once per ticket in parallel worktrees, whole and once"
|
|
3447
|
+
},
|
|
3448
|
+
{
|
|
3449
|
+
"from": "skill:void-brainstorm",
|
|
3450
|
+
"to": "skill:void-plan",
|
|
3451
|
+
"kind": "routes-to",
|
|
3452
|
+
"origin": "declared",
|
|
3453
|
+
"evidence": "brainstorm SKILL.md: MUST NOT transition to any skill other than plan post-approval"
|
|
3454
|
+
},
|
|
3455
|
+
{
|
|
3456
|
+
"from": "skill:void-brainstorm",
|
|
3457
|
+
"to": "skill:void-tdd",
|
|
3458
|
+
"kind": "composes",
|
|
3459
|
+
"origin": "declared",
|
|
3460
|
+
"evidence": "brainstorm SKILL.md: TDD mode per implementation phase (strict / souple / exploratory — composes with tdd skill)"
|
|
3461
|
+
},
|
|
3462
|
+
{
|
|
3463
|
+
"from": "skill:void-checkpoint",
|
|
3464
|
+
"to": "skill:void-learn",
|
|
3465
|
+
"kind": "companion-of",
|
|
3466
|
+
"origin": "declared",
|
|
3467
|
+
"evidence": "checkpoint SKILL.md: Adjacent void-learn takes the durable rules out of the session before the checkpoint is written"
|
|
3468
|
+
},
|
|
3469
|
+
{
|
|
3470
|
+
"from": "skill:void-claude-md",
|
|
3471
|
+
"to": "skill:void-context",
|
|
3472
|
+
"kind": "composes",
|
|
3473
|
+
"origin": "declared",
|
|
3474
|
+
"evidence": "claude-md SKILL.md: void-context is the foundation; CLAUDE.md spends from the same context budget"
|
|
3475
|
+
},
|
|
3476
|
+
{
|
|
3477
|
+
"from": "skill:void-claude-md",
|
|
3478
|
+
"to": "skill:void-learn",
|
|
3479
|
+
"kind": "composes",
|
|
3480
|
+
"origin": "declared",
|
|
3481
|
+
"evidence": "claude-md SKILL.md: void-learn routes project-specific rules and harness gaps"
|
|
3482
|
+
},
|
|
3483
|
+
{
|
|
3484
|
+
"from": "skill:void-claude-md",
|
|
3485
|
+
"to": "skill:void-source-driven-development",
|
|
3486
|
+
"kind": "composes",
|
|
3487
|
+
"origin": "declared",
|
|
3488
|
+
"evidence": "claude-md SKILL.md: deferred tool configuration is grounded in version-matched official sources"
|
|
3489
|
+
},
|
|
3490
|
+
{
|
|
3491
|
+
"from": "skill:void-code-review",
|
|
3492
|
+
"to": "agent:doctrine-critic",
|
|
3493
|
+
"kind": "composes",
|
|
3494
|
+
"origin": "declared",
|
|
3495
|
+
"evidence": "code-review SKILL.md: composes agent doctrine-critic for doctrine conformance"
|
|
3496
|
+
},
|
|
3497
|
+
{
|
|
3498
|
+
"from": "skill:void-code-review",
|
|
3499
|
+
"to": "skill:void-hexagonal-architecture",
|
|
3500
|
+
"kind": "composes",
|
|
3501
|
+
"origin": "declared",
|
|
3502
|
+
"evidence": "code-review SKILL.md: Structure — boundaries respected? composes with hexagonal-architecture, domain-driven-design, refactor"
|
|
3503
|
+
},
|
|
3504
|
+
{
|
|
3505
|
+
"from": "skill:void-code-review",
|
|
3506
|
+
"to": "skill:void-security-guidance",
|
|
3507
|
+
"kind": "composes",
|
|
3508
|
+
"origin": "declared",
|
|
3509
|
+
"evidence": "code-review SKILL.md: Security — input validated at trust boundaries? composes with security-guidance"
|
|
3510
|
+
},
|
|
3511
|
+
{
|
|
3512
|
+
"from": "skill:void-code-review",
|
|
3513
|
+
"to": "skill:void-tdd",
|
|
3514
|
+
"kind": "composes",
|
|
3515
|
+
"origin": "declared",
|
|
3516
|
+
"evidence": "code-review SKILL.md: Correctness — composes with tdd (cycle evidence) and debug"
|
|
3517
|
+
},
|
|
3518
|
+
{
|
|
3519
|
+
"from": "skill:void-code-review",
|
|
3520
|
+
"to": "skill:void-testing",
|
|
3521
|
+
"kind": "composes",
|
|
3522
|
+
"origin": "declared",
|
|
3523
|
+
"evidence": "code-review SKILL.md: Tests — failing test before the code? real code over mocks? names describe behavior? composes with testing."
|
|
3524
|
+
},
|
|
3525
|
+
{
|
|
3526
|
+
"from": "skill:void-code-review",
|
|
3527
|
+
"to": "skill:void-typescript-strict",
|
|
3528
|
+
"kind": "composes",
|
|
3529
|
+
"origin": "declared",
|
|
3530
|
+
"evidence": "code-review SKILL.md: Readability — names? exhaustive switches? any slips? composes with typescript-strict."
|
|
3531
|
+
},
|
|
3532
|
+
{
|
|
3533
|
+
"from": "skill:void-commit-discipline",
|
|
3534
|
+
"to": "skill:void-debug",
|
|
3535
|
+
"kind": "composes",
|
|
3536
|
+
"origin": "declared",
|
|
3537
|
+
"evidence": "commit-discipline SKILL.md: fix: Bug fix. Composes with debug (the why = the root cause)"
|
|
3538
|
+
},
|
|
3539
|
+
{
|
|
3540
|
+
"from": "skill:void-commit-discipline",
|
|
3541
|
+
"to": "skill:void-refactor",
|
|
3542
|
+
"kind": "composes",
|
|
3543
|
+
"origin": "declared",
|
|
3544
|
+
"evidence": "commit-discipline SKILL.md: refactor: Structural change without behavior change. Composes with refactor (named Fowler move)"
|
|
3545
|
+
},
|
|
3546
|
+
{
|
|
3547
|
+
"from": "skill:void-context",
|
|
3548
|
+
"to": "agent:code-explorer",
|
|
3549
|
+
"kind": "composes",
|
|
3550
|
+
"origin": "declared",
|
|
3551
|
+
"evidence": "context SKILL.md: Delegate heavy investigation to fresh-context subagents — code-explorer is that read-only mapper"
|
|
3552
|
+
},
|
|
3553
|
+
{
|
|
3554
|
+
"from": "skill:void-context",
|
|
3555
|
+
"to": "skill:void-plan",
|
|
3556
|
+
"kind": "composes",
|
|
3557
|
+
"origin": "declared",
|
|
3558
|
+
"evidence": "context SKILL.md: composes with plan — the plan file is the source of truth, not the chat log."
|
|
3559
|
+
},
|
|
3560
|
+
{
|
|
3561
|
+
"from": "skill:void-debug",
|
|
3562
|
+
"to": "agent:doctrine-critic",
|
|
3563
|
+
"kind": "composes",
|
|
3564
|
+
"origin": "declared",
|
|
3565
|
+
"evidence": "debug SKILL.md: routes doctrine judgment to the doctrine-critic agent"
|
|
3566
|
+
},
|
|
3567
|
+
{
|
|
3568
|
+
"from": "skill:void-debug",
|
|
3569
|
+
"to": "skill:void-commit-discipline",
|
|
3570
|
+
"kind": "composes",
|
|
3571
|
+
"origin": "declared",
|
|
3572
|
+
"evidence": "debug SKILL.md: Commit: fix: <root cause description>. Composes with commit-discipline (the 'why' is the root cause)."
|
|
3573
|
+
},
|
|
3574
|
+
{
|
|
3575
|
+
"from": "skill:void-debug",
|
|
3576
|
+
"to": "skill:void-refactor",
|
|
3577
|
+
"kind": "composes",
|
|
3578
|
+
"origin": "declared",
|
|
3579
|
+
"evidence": "debug SKILL.md: The fix is a refactor (composes with refactor and hexagonal-architecture / domain-driven-design)."
|
|
3580
|
+
},
|
|
3581
|
+
{
|
|
3582
|
+
"from": "skill:void-decide",
|
|
3583
|
+
"to": "skill:void-plan",
|
|
3584
|
+
"kind": "composes",
|
|
3585
|
+
"origin": "declared",
|
|
3586
|
+
"evidence": "decide SKILL.md: Composes with plan (which is plan-the-work-before-coding)"
|
|
3587
|
+
},
|
|
3588
|
+
{
|
|
3589
|
+
"from": "skill:void-devex-audit",
|
|
3590
|
+
"to": "skill:void-api-and-interface-design",
|
|
3591
|
+
"kind": "composes",
|
|
3592
|
+
"origin": "declared",
|
|
3593
|
+
"evidence": "devex-audit SKILL.md: With api-and-interface-design — its build-time floor ... is what this skill audits after the fact. Build there, judge here."
|
|
3594
|
+
},
|
|
3595
|
+
{
|
|
3596
|
+
"from": "skill:void-devex-audit",
|
|
3597
|
+
"to": "skill:void-plan-review",
|
|
3598
|
+
"kind": "overlaps",
|
|
3599
|
+
"origin": "declared",
|
|
3600
|
+
"evidence": "devex-audit SKILL.md: Not plan-review's DevEx lens — that judges a written plan before code; this audits the shipped surface. The < 30% overlap is structural."
|
|
3601
|
+
},
|
|
3602
|
+
{
|
|
3603
|
+
"from": "skill:void-devex-audit",
|
|
3604
|
+
"to": "skill:void-ui-review",
|
|
3605
|
+
"kind": "companion-of",
|
|
3606
|
+
"origin": "declared",
|
|
3607
|
+
"evidence": "devex-audit SKILL.md: Not ui-review — that audits the visual/interaction UI; this audits the developer journey. Different subject (sibling audit skills)."
|
|
3608
|
+
},
|
|
3609
|
+
{
|
|
3610
|
+
"from": "skill:void-doctor",
|
|
3611
|
+
"to": "skill:void-learn",
|
|
3612
|
+
"kind": "routes-to",
|
|
3613
|
+
"origin": "declared",
|
|
3614
|
+
"evidence": "doctor SKILL.md: a missing doctrine rule is routed to void-learn, never fixed here"
|
|
3615
|
+
},
|
|
3616
|
+
{
|
|
3617
|
+
"from": "skill:void-doctor",
|
|
3618
|
+
"to": "skill:void-verify",
|
|
3619
|
+
"kind": "companion-of",
|
|
3620
|
+
"origin": "declared",
|
|
3621
|
+
"evidence": "doctor SKILL.md: void-verify proves one unit of work; doctor proves the harness that guards every unit"
|
|
3622
|
+
},
|
|
3623
|
+
{
|
|
3624
|
+
"from": "skill:void-domain-driven-design",
|
|
3625
|
+
"to": "skill:void-functional",
|
|
3626
|
+
"kind": "composes",
|
|
3627
|
+
"origin": "declared",
|
|
3628
|
+
"evidence": "domain-driven-design SKILL.md: Composes with typescript-strict exhaustive switches and functional ADTs."
|
|
3629
|
+
},
|
|
3630
|
+
{
|
|
3631
|
+
"from": "skill:void-domain-driven-design",
|
|
3632
|
+
"to": "skill:void-hexagonal-architecture",
|
|
3633
|
+
"kind": "composes",
|
|
3634
|
+
"origin": "declared",
|
|
3635
|
+
"evidence": "domain-driven-design SKILL.md: Aggregates collect events; use-cases dispatch via EventBusPort. Composes with hexagonal-architecture (event bus as a port)."
|
|
3636
|
+
},
|
|
3637
|
+
{
|
|
3638
|
+
"from": "skill:void-domain-driven-design",
|
|
3639
|
+
"to": "skill:void-typescript-strict",
|
|
3640
|
+
"kind": "composes",
|
|
3641
|
+
"origin": "declared",
|
|
3642
|
+
"evidence": "domain-driven-design SKILL.md: Composes with typescript-strict exhaustive switches and functional ADTs."
|
|
3643
|
+
},
|
|
3644
|
+
{
|
|
3645
|
+
"from": "skill:void-functional",
|
|
3646
|
+
"to": "skill:void-domain-driven-design",
|
|
3647
|
+
"kind": "composes",
|
|
3648
|
+
"origin": "declared",
|
|
3649
|
+
"evidence": "functional SKILL.md: Composes with typescript-strict exhaustive-switch enforcement and domain-driven-design aggregate state machines."
|
|
3650
|
+
},
|
|
3651
|
+
{
|
|
3652
|
+
"from": "skill:void-functional",
|
|
3653
|
+
"to": "skill:void-typescript-strict",
|
|
3654
|
+
"kind": "composes",
|
|
3655
|
+
"origin": "declared",
|
|
3656
|
+
"evidence": "functional SKILL.md: Composes with typescript-strict exhaustive-switch enforcement and domain-driven-design aggregate state machines."
|
|
3657
|
+
},
|
|
3658
|
+
{
|
|
3659
|
+
"from": "skill:void-graph",
|
|
3660
|
+
"to": "skill:void-audit",
|
|
3661
|
+
"kind": "companion-of",
|
|
3662
|
+
"origin": "declared",
|
|
3663
|
+
"evidence": "void-graph SKILL.md: adjacent void-audit proposes what to do about staleness"
|
|
3664
|
+
},
|
|
3665
|
+
{
|
|
3666
|
+
"from": "skill:void-hexagonal-architecture",
|
|
3667
|
+
"to": "skill:void-domain-driven-design",
|
|
3668
|
+
"kind": "composes",
|
|
3669
|
+
"origin": "declared",
|
|
3670
|
+
"evidence": "hexagonal-architecture SKILL.md: Split ports align with one bounded-context capability. Composes with domain-driven-design"
|
|
3671
|
+
},
|
|
3672
|
+
{
|
|
3673
|
+
"from": "skill:void-hexagonal-architecture",
|
|
3674
|
+
"to": "skill:void-functional",
|
|
3675
|
+
"kind": "composes",
|
|
3676
|
+
"origin": "declared",
|
|
3677
|
+
"evidence": "hexagonal-architecture SKILL.md: Returns Result<Output, Error> (composes with functional)"
|
|
3678
|
+
},
|
|
3679
|
+
{
|
|
3680
|
+
"from": "skill:void-hexagonal-architecture",
|
|
3681
|
+
"to": "skill:void-testing",
|
|
3682
|
+
"kind": "composes",
|
|
3683
|
+
"origin": "declared",
|
|
3684
|
+
"evidence": "hexagonal-architecture SKILL.md: No mocking framework. The shape of in-memory matches the shape of production. Composes with testing skill's nullable infrastructure pattern."
|
|
3685
|
+
},
|
|
3686
|
+
{
|
|
3687
|
+
"from": "skill:void-implement",
|
|
3688
|
+
"to": "agent:accessibility-specialist",
|
|
3689
|
+
"kind": "composes",
|
|
3690
|
+
"origin": "declared",
|
|
3691
|
+
"evidence": "implement SKILL.md: iterate every returned specialist envelope; never substitute a local role list"
|
|
3692
|
+
},
|
|
3693
|
+
{
|
|
3694
|
+
"from": "skill:void-implement",
|
|
3695
|
+
"to": "agent:api-integration-engineer",
|
|
3696
|
+
"kind": "composes",
|
|
3697
|
+
"origin": "declared",
|
|
3698
|
+
"evidence": "implement SKILL.md: iterate every returned envelope; never substitute a local role list"
|
|
3699
|
+
},
|
|
3700
|
+
{
|
|
3701
|
+
"from": "skill:void-implement",
|
|
3702
|
+
"to": "agent:data-migration-engineer",
|
|
3703
|
+
"kind": "composes",
|
|
3704
|
+
"origin": "declared",
|
|
3705
|
+
"evidence": "implement SKILL.md: iterate every returned envelope; never substitute a local role list"
|
|
3706
|
+
},
|
|
3707
|
+
{
|
|
3708
|
+
"from": "skill:void-implement",
|
|
3709
|
+
"to": "agent:devex-docs-engineer",
|
|
3710
|
+
"kind": "composes",
|
|
3711
|
+
"origin": "declared",
|
|
3712
|
+
"evidence": "implement SKILL.md: iterate every returned envelope; never substitute a local role list"
|
|
3713
|
+
},
|
|
3714
|
+
{
|
|
3715
|
+
"from": "skill:void-implement",
|
|
3716
|
+
"to": "agent:doctrine-critic",
|
|
3717
|
+
"kind": "composes",
|
|
3718
|
+
"origin": "declared",
|
|
3719
|
+
"evidence": "implement SKILL.md: Review pass composes agents doctrine-critic + silent-failure-hunter"
|
|
3720
|
+
},
|
|
3721
|
+
{
|
|
3722
|
+
"from": "skill:void-implement",
|
|
3723
|
+
"to": "agent:domain-architect",
|
|
3724
|
+
"kind": "composes",
|
|
3725
|
+
"origin": "declared",
|
|
3726
|
+
"evidence": "implement SKILL.md: iterate every returned envelope; never substitute a local role list"
|
|
3727
|
+
},
|
|
3728
|
+
{
|
|
3729
|
+
"from": "skill:void-implement",
|
|
3730
|
+
"to": "agent:experience-designer",
|
|
3731
|
+
"kind": "composes",
|
|
3732
|
+
"origin": "declared",
|
|
3733
|
+
"evidence": "implement SKILL.md: iterate every returned envelope; never substitute a local role list"
|
|
3734
|
+
},
|
|
3735
|
+
{
|
|
3736
|
+
"from": "skill:void-implement",
|
|
3737
|
+
"to": "agent:frontend-engineer",
|
|
3738
|
+
"kind": "composes",
|
|
3739
|
+
"origin": "declared",
|
|
3740
|
+
"evidence": "implement SKILL.md: iterate every returned envelope; never substitute a local role list"
|
|
3741
|
+
},
|
|
3742
|
+
{
|
|
3743
|
+
"from": "skill:void-implement",
|
|
3744
|
+
"to": "agent:independent-code-reviewer",
|
|
3745
|
+
"kind": "composes",
|
|
3746
|
+
"origin": "declared",
|
|
3747
|
+
"evidence": "implement SKILL.md: iterate every returned envelope; never substitute a local role list"
|
|
3748
|
+
},
|
|
3749
|
+
{
|
|
3750
|
+
"from": "skill:void-implement",
|
|
3751
|
+
"to": "agent:observability-sre-engineer",
|
|
3752
|
+
"kind": "composes",
|
|
3753
|
+
"origin": "declared",
|
|
3754
|
+
"evidence": "implement SKILL.md: iterate every returned envelope; never substitute a local role list"
|
|
3755
|
+
},
|
|
3756
|
+
{
|
|
3757
|
+
"from": "skill:void-implement",
|
|
3758
|
+
"to": "agent:pdf-specialist",
|
|
3759
|
+
"kind": "composes",
|
|
3760
|
+
"origin": "declared",
|
|
3761
|
+
"evidence": "implement SKILL.md: iterate every returned envelope; never substitute a local role list"
|
|
3762
|
+
},
|
|
3763
|
+
{
|
|
3764
|
+
"from": "skill:void-implement",
|
|
3765
|
+
"to": "agent:performance-engineer",
|
|
3766
|
+
"kind": "composes",
|
|
3767
|
+
"origin": "declared",
|
|
3768
|
+
"evidence": "implement SKILL.md: iterate every returned envelope; never substitute a local role list"
|
|
3769
|
+
},
|
|
3770
|
+
{
|
|
3771
|
+
"from": "skill:void-implement",
|
|
3772
|
+
"to": "agent:product-challenger",
|
|
3773
|
+
"kind": "composes",
|
|
3774
|
+
"origin": "declared",
|
|
3775
|
+
"evidence": "implement SKILL.md: iterate every returned envelope; never substitute a local role list"
|
|
3776
|
+
},
|
|
3777
|
+
{
|
|
3778
|
+
"from": "skill:void-implement",
|
|
3779
|
+
"to": "agent:security-engineer",
|
|
3780
|
+
"kind": "composes",
|
|
3781
|
+
"origin": "declared",
|
|
3782
|
+
"evidence": "implement SKILL.md: iterate every returned envelope; never substitute a local role list"
|
|
3783
|
+
},
|
|
3784
|
+
{
|
|
3785
|
+
"from": "skill:void-implement",
|
|
3786
|
+
"to": "agent:silent-failure-hunter",
|
|
3787
|
+
"kind": "composes",
|
|
3788
|
+
"origin": "declared",
|
|
3789
|
+
"evidence": "implement SKILL.md: Review pass composes agent silent-failure-hunter"
|
|
3790
|
+
},
|
|
3791
|
+
{
|
|
3792
|
+
"from": "skill:void-implement",
|
|
3793
|
+
"to": "agent:solution-architect",
|
|
3794
|
+
"kind": "composes",
|
|
3795
|
+
"origin": "declared",
|
|
3796
|
+
"evidence": "implement SKILL.md: iterate every returned envelope; never substitute a local role list"
|
|
3797
|
+
},
|
|
3798
|
+
{
|
|
3799
|
+
"from": "skill:void-implement",
|
|
3800
|
+
"to": "agent:test-qa-engineer",
|
|
3801
|
+
"kind": "composes",
|
|
3802
|
+
"origin": "declared",
|
|
3803
|
+
"evidence": "implement SKILL.md: iterate every returned envelope; never substitute a local role list"
|
|
3804
|
+
},
|
|
3805
|
+
{
|
|
3806
|
+
"from": "skill:void-implement",
|
|
3807
|
+
"to": "agent:type-design-analyzer",
|
|
3808
|
+
"kind": "composes",
|
|
3809
|
+
"origin": "declared",
|
|
3810
|
+
"evidence": "implement SKILL.md: Architecture pass composes agents type-design-analyzer + doctrine-critic"
|
|
3811
|
+
},
|
|
3812
|
+
{
|
|
3813
|
+
"from": "skill:void-implement",
|
|
3814
|
+
"to": "agent:visual-craft-director",
|
|
3815
|
+
"kind": "composes",
|
|
3816
|
+
"origin": "declared",
|
|
3817
|
+
"evidence": "implement SKILL.md: iterate every returned envelope; never substitute a local role list"
|
|
3818
|
+
},
|
|
3819
|
+
{
|
|
3820
|
+
"from": "skill:void-implement",
|
|
3821
|
+
"to": "profile:base",
|
|
3822
|
+
"kind": "composes",
|
|
3823
|
+
"origin": "declared",
|
|
3824
|
+
"evidence": "implement SKILL.md: load or compile the canonical mission plan before any specialist invocation"
|
|
3825
|
+
},
|
|
3826
|
+
{
|
|
3827
|
+
"from": "skill:void-implement",
|
|
3828
|
+
"to": "profile:expo",
|
|
3829
|
+
"kind": "composes",
|
|
3830
|
+
"origin": "declared",
|
|
3831
|
+
"evidence": "implement SKILL.md: load or compile the canonical mission plan before any specialist invocation"
|
|
3832
|
+
},
|
|
3833
|
+
{
|
|
3834
|
+
"from": "skill:void-implement",
|
|
3835
|
+
"to": "profile:expo-config",
|
|
3836
|
+
"kind": "composes",
|
|
3837
|
+
"origin": "declared",
|
|
3838
|
+
"evidence": "implement SKILL.md: load or compile the canonical mission plan before any specialist invocation"
|
|
3839
|
+
},
|
|
3840
|
+
{
|
|
3841
|
+
"from": "skill:void-implement",
|
|
3842
|
+
"to": "profile:monorepo",
|
|
3843
|
+
"kind": "composes",
|
|
3844
|
+
"origin": "declared",
|
|
3845
|
+
"evidence": "implement SKILL.md: load or compile the canonical mission plan before any specialist invocation"
|
|
3846
|
+
},
|
|
3847
|
+
{
|
|
3848
|
+
"from": "skill:void-implement",
|
|
3849
|
+
"to": "profile:nextjs",
|
|
3850
|
+
"kind": "composes",
|
|
3851
|
+
"origin": "declared",
|
|
3852
|
+
"evidence": "implement SKILL.md: load or compile the canonical mission plan before any specialist invocation"
|
|
3853
|
+
},
|
|
3854
|
+
{
|
|
3855
|
+
"from": "skill:void-implement",
|
|
3856
|
+
"to": "profile:nextjs-config",
|
|
3857
|
+
"kind": "composes",
|
|
3858
|
+
"origin": "declared",
|
|
3859
|
+
"evidence": "implement SKILL.md: load or compile the canonical mission plan before any specialist invocation"
|
|
3860
|
+
},
|
|
3861
|
+
{
|
|
3862
|
+
"from": "skill:void-implement",
|
|
3863
|
+
"to": "profile:node-server",
|
|
3864
|
+
"kind": "composes",
|
|
3865
|
+
"origin": "declared",
|
|
3866
|
+
"evidence": "implement SKILL.md: load or compile the canonical mission plan before any specialist invocation"
|
|
3867
|
+
},
|
|
3868
|
+
{
|
|
3869
|
+
"from": "skill:void-implement",
|
|
3870
|
+
"to": "profile:pwa",
|
|
3871
|
+
"kind": "composes",
|
|
3872
|
+
"origin": "declared",
|
|
3873
|
+
"evidence": "implement SKILL.md: load or compile the canonical mission plan before any specialist invocation"
|
|
3874
|
+
},
|
|
3875
|
+
{
|
|
3876
|
+
"from": "skill:void-implement",
|
|
3877
|
+
"to": "profile:react",
|
|
3878
|
+
"kind": "composes",
|
|
3879
|
+
"origin": "declared",
|
|
3880
|
+
"evidence": "implement SKILL.md: load or compile the canonical mission plan before any specialist invocation"
|
|
3881
|
+
},
|
|
3882
|
+
{
|
|
3883
|
+
"from": "skill:void-implement",
|
|
3884
|
+
"to": "profile:sql",
|
|
3885
|
+
"kind": "composes",
|
|
3886
|
+
"origin": "declared",
|
|
3887
|
+
"evidence": "implement SKILL.md: load or compile the canonical mission plan before any specialist invocation"
|
|
3888
|
+
},
|
|
3889
|
+
{
|
|
3890
|
+
"from": "skill:void-implement",
|
|
3891
|
+
"to": "profile:typescript",
|
|
3892
|
+
"kind": "composes",
|
|
3893
|
+
"origin": "declared",
|
|
3894
|
+
"evidence": "implement SKILL.md: load or compile the canonical mission plan before any specialist invocation"
|
|
3895
|
+
},
|
|
3896
|
+
{
|
|
3897
|
+
"from": "skill:void-implement",
|
|
3898
|
+
"to": "skill:void-accessibility",
|
|
3899
|
+
"kind": "composes",
|
|
3900
|
+
"origin": "declared",
|
|
3901
|
+
"evidence": "implement SKILL.md: UX/UI pass: Compose frontend-design + ui-review + accessibility"
|
|
3902
|
+
},
|
|
3903
|
+
{
|
|
3904
|
+
"from": "skill:void-implement",
|
|
3905
|
+
"to": "skill:void-async-safety",
|
|
3906
|
+
"kind": "composes",
|
|
3907
|
+
"origin": "declared",
|
|
3908
|
+
"evidence": "implement SKILL.md: Async + idempotency pass: Compose async-safety, idempotency keys, replay/dedup window"
|
|
3909
|
+
},
|
|
3910
|
+
{
|
|
3911
|
+
"from": "skill:void-implement",
|
|
3912
|
+
"to": "skill:void-code-review",
|
|
3913
|
+
"kind": "composes",
|
|
3914
|
+
"origin": "declared",
|
|
3915
|
+
"evidence": "implement SKILL.md: Review pass: Compose code-review for the integration lens"
|
|
3916
|
+
},
|
|
3917
|
+
{
|
|
3918
|
+
"from": "skill:void-implement",
|
|
3919
|
+
"to": "skill:void-commit-discipline",
|
|
3920
|
+
"kind": "composes",
|
|
3921
|
+
"origin": "declared",
|
|
3922
|
+
"evidence": "implement SKILL.md: Ship pass: Compose commit-discipline, open the PR, attach the evidence"
|
|
3923
|
+
},
|
|
3924
|
+
{
|
|
3925
|
+
"from": "skill:void-implement",
|
|
3926
|
+
"to": "skill:void-domain-driven-design",
|
|
3927
|
+
"kind": "composes",
|
|
3928
|
+
"origin": "declared",
|
|
3929
|
+
"evidence": "implement SKILL.md: Architecture pass: Compose hexagonal-architecture, domain-driven-design"
|
|
3930
|
+
},
|
|
3931
|
+
{
|
|
3932
|
+
"from": "skill:void-implement",
|
|
3933
|
+
"to": "skill:void-frontend-design",
|
|
3934
|
+
"kind": "composes",
|
|
3935
|
+
"origin": "declared",
|
|
3936
|
+
"evidence": "implement SKILL.md: UX/UI pass: Compose frontend-design (build-time craft)"
|
|
3937
|
+
},
|
|
3938
|
+
{
|
|
3939
|
+
"from": "skill:void-implement",
|
|
3940
|
+
"to": "skill:void-hexagonal-architecture",
|
|
3941
|
+
"kind": "composes",
|
|
3942
|
+
"origin": "declared",
|
|
3943
|
+
"evidence": "implement SKILL.md: Architecture pass: Compose hexagonal-architecture, domain-driven-design"
|
|
3944
|
+
},
|
|
3945
|
+
{
|
|
3946
|
+
"from": "skill:void-implement",
|
|
3947
|
+
"to": "skill:void-migrations",
|
|
3948
|
+
"kind": "composes",
|
|
3949
|
+
"origin": "declared",
|
|
3950
|
+
"evidence": "implement SKILL.md: Migration safety pass: Compose migrations, zero-downtime, two-phase, batched backfill"
|
|
3951
|
+
},
|
|
3952
|
+
{
|
|
3953
|
+
"from": "skill:void-implement",
|
|
3954
|
+
"to": "skill:void-qa",
|
|
3955
|
+
"kind": "composes",
|
|
3956
|
+
"origin": "declared",
|
|
3957
|
+
"evidence": "implement SKILL.md: UX/UI pass: Browser-verified QA (live screenshots) runs via qa"
|
|
3958
|
+
},
|
|
3959
|
+
{
|
|
3960
|
+
"from": "skill:void-implement",
|
|
3961
|
+
"to": "skill:void-security-audit",
|
|
3962
|
+
"kind": "composes",
|
|
3963
|
+
"origin": "declared",
|
|
3964
|
+
"evidence": "implement SKILL.md: Security pass: Compose security-guidance + security-audit"
|
|
3965
|
+
},
|
|
3966
|
+
{
|
|
3967
|
+
"from": "skill:void-implement",
|
|
3968
|
+
"to": "skill:void-security-guidance",
|
|
3969
|
+
"kind": "composes",
|
|
3970
|
+
"origin": "declared",
|
|
3971
|
+
"evidence": "implement SKILL.md: Security pass: Compose security-guidance + security-audit"
|
|
3972
|
+
},
|
|
3973
|
+
{
|
|
3974
|
+
"from": "skill:void-implement",
|
|
3975
|
+
"to": "skill:void-source-driven-development",
|
|
3976
|
+
"kind": "composes",
|
|
3977
|
+
"origin": "declared",
|
|
3978
|
+
"evidence": "implement SKILL.md: Source grounding pass: Compose source-driven-development: read the official documentation of the installed version before the first line"
|
|
3979
|
+
},
|
|
3980
|
+
{
|
|
3981
|
+
"from": "skill:void-implement",
|
|
3982
|
+
"to": "skill:void-tdd",
|
|
3983
|
+
"kind": "composes",
|
|
3984
|
+
"origin": "declared",
|
|
3985
|
+
"evidence": "implement SKILL.md: TDD implementation pass: The single lead writer composes tdd + testing"
|
|
3986
|
+
},
|
|
3987
|
+
{
|
|
3988
|
+
"from": "skill:void-implement",
|
|
3989
|
+
"to": "skill:void-testing",
|
|
3990
|
+
"kind": "composes",
|
|
3991
|
+
"origin": "declared",
|
|
3992
|
+
"evidence": "implement SKILL.md: TDD implementation pass: The single lead writer composes tdd + testing"
|
|
3993
|
+
},
|
|
3994
|
+
{
|
|
3995
|
+
"from": "skill:void-implement",
|
|
3996
|
+
"to": "skill:void-ui-review",
|
|
3997
|
+
"kind": "composes",
|
|
3998
|
+
"origin": "declared",
|
|
3999
|
+
"evidence": "implement SKILL.md: UX/UI pass: Compose ui-review, the audit/critique ceiling"
|
|
4000
|
+
},
|
|
4001
|
+
{
|
|
4002
|
+
"from": "skill:void-implement",
|
|
4003
|
+
"to": "skill:void-verify",
|
|
4004
|
+
"kind": "composes",
|
|
4005
|
+
"origin": "declared",
|
|
4006
|
+
"evidence": "implement SKILL.md: Verification before completion pass: Compose verify, typecheck, tests, hooks, both viewports"
|
|
4007
|
+
},
|
|
4008
|
+
{
|
|
4009
|
+
"from": "skill:void-llm-cost-discipline",
|
|
4010
|
+
"to": "skill:void-observability",
|
|
4011
|
+
"kind": "composes",
|
|
4012
|
+
"origin": "declared",
|
|
4013
|
+
"evidence": "llm-cost-discipline SKILL.md: // composes with observability (cost tracking at LLM call sites)"
|
|
4014
|
+
},
|
|
4015
|
+
{
|
|
4016
|
+
"from": "skill:void-llm-cost-discipline",
|
|
4017
|
+
"to": "skill:void-security-guidance",
|
|
4018
|
+
"kind": "composes",
|
|
4019
|
+
"origin": "declared",
|
|
4020
|
+
"evidence": "llm-cost-discipline SKILL.md: Content containing user PII without explicit per-user scoping (composes with security-guidance)"
|
|
4021
|
+
},
|
|
4022
|
+
{
|
|
4023
|
+
"from": "skill:void-make-pdf",
|
|
4024
|
+
"to": "agent:pdf-specialist",
|
|
4025
|
+
"kind": "composes",
|
|
4026
|
+
"origin": "declared",
|
|
4027
|
+
"evidence": "make-pdf SKILL.md: a generated deliverable is reviewed by the read-only pdf-specialist agent"
|
|
4028
|
+
},
|
|
4029
|
+
{
|
|
4030
|
+
"from": "skill:void-make-pdf",
|
|
4031
|
+
"to": "skill:void-verify",
|
|
4032
|
+
"kind": "routes-to",
|
|
4033
|
+
"origin": "declared",
|
|
4034
|
+
"evidence": "make-pdf SKILL.md: void-verify carries observed PDF proof into the final gate"
|
|
4035
|
+
},
|
|
4036
|
+
{
|
|
4037
|
+
"from": "skill:void-merge",
|
|
4038
|
+
"to": "skill:void-autopilot",
|
|
4039
|
+
"kind": "companion-of",
|
|
4040
|
+
"origin": "declared",
|
|
4041
|
+
"evidence": "merge SKILL.md: void-autopilot hands this skill the pull requests it leaves to a person"
|
|
4042
|
+
},
|
|
4043
|
+
{
|
|
4044
|
+
"from": "skill:void-merge",
|
|
4045
|
+
"to": "skill:void-commit-discipline",
|
|
4046
|
+
"kind": "composes",
|
|
4047
|
+
"origin": "declared",
|
|
4048
|
+
"evidence": "merge SKILL.md: a merge commit explains why through void-commit-discipline"
|
|
4049
|
+
},
|
|
4050
|
+
{
|
|
4051
|
+
"from": "skill:void-merge",
|
|
4052
|
+
"to": "skill:void-implement",
|
|
4053
|
+
"kind": "companion-of",
|
|
4054
|
+
"origin": "declared",
|
|
4055
|
+
"evidence": "merge SKILL.md: void-implement opens the PRs this skill drains"
|
|
4056
|
+
},
|
|
4057
|
+
{
|
|
4058
|
+
"from": "skill:void-merge",
|
|
4059
|
+
"to": "skill:void-verify",
|
|
4060
|
+
"kind": "composes",
|
|
4061
|
+
"origin": "declared",
|
|
4062
|
+
"evidence": "merge SKILL.md: after the last merge, the base is proven through void-verify"
|
|
4063
|
+
},
|
|
4064
|
+
{
|
|
4065
|
+
"from": "skill:void-migrations",
|
|
4066
|
+
"to": "skill:void-observability",
|
|
4067
|
+
"kind": "composes",
|
|
4068
|
+
"origin": "declared",
|
|
4069
|
+
"evidence": "migrations SKILL.md: Progress logged via structured logger (composes with observability)."
|
|
4070
|
+
},
|
|
4071
|
+
{
|
|
4072
|
+
"from": "skill:void-migrations",
|
|
4073
|
+
"to": "skill:void-tdd",
|
|
4074
|
+
"kind": "composes",
|
|
4075
|
+
"origin": "declared",
|
|
4076
|
+
"evidence": "migrations SKILL.md: integration test the migration (composes with tdd)"
|
|
4077
|
+
},
|
|
4078
|
+
{
|
|
4079
|
+
"from": "skill:void-observability",
|
|
4080
|
+
"to": "skill:void-async-safety",
|
|
4081
|
+
"kind": "composes",
|
|
4082
|
+
"origin": "declared",
|
|
4083
|
+
"evidence": "observability SKILL.md: Composes with async-safety — the trace propagates across job / webhook / queue boundaries via the message envelope."
|
|
4084
|
+
},
|
|
4085
|
+
{
|
|
4086
|
+
"from": "skill:void-observability",
|
|
4087
|
+
"to": "skill:void-llm-cost-discipline",
|
|
4088
|
+
"kind": "composes",
|
|
4089
|
+
"origin": "declared",
|
|
4090
|
+
"evidence": "observability SKILL.md: Cost per business event (LLM tokens, third-party calls) | Composes with llm-cost-discipline"
|
|
4091
|
+
},
|
|
4092
|
+
{
|
|
4093
|
+
"from": "skill:void-observability",
|
|
4094
|
+
"to": "skill:void-security-guidance",
|
|
4095
|
+
"kind": "composes",
|
|
4096
|
+
"origin": "declared",
|
|
4097
|
+
"evidence": "observability SKILL.md: No PII, no secrets, ever (composes with security-guidance)"
|
|
4098
|
+
},
|
|
4099
|
+
{
|
|
4100
|
+
"from": "skill:void-plan",
|
|
4101
|
+
"to": "skill:void-migrations",
|
|
4102
|
+
"kind": "composes",
|
|
4103
|
+
"origin": "declared",
|
|
4104
|
+
"evidence": "plan SKILL.md: Production data migration (composes with migrations)"
|
|
4105
|
+
},
|
|
4106
|
+
{
|
|
4107
|
+
"from": "skill:void-plan",
|
|
4108
|
+
"to": "skill:void-security-guidance",
|
|
4109
|
+
"kind": "composes",
|
|
4110
|
+
"origin": "declared",
|
|
4111
|
+
"evidence": "plan SKILL.md: LLM call sites with user-controlled input (composes with security-guidance LLM section)"
|
|
4112
|
+
},
|
|
4113
|
+
{
|
|
4114
|
+
"from": "skill:void-plan",
|
|
4115
|
+
"to": "skill:void-tdd",
|
|
4116
|
+
"kind": "composes",
|
|
4117
|
+
"origin": "declared",
|
|
4118
|
+
"evidence": "plan SKILL.md: With tdd: per-step mode selection lives in the plan."
|
|
4119
|
+
},
|
|
4120
|
+
{
|
|
4121
|
+
"from": "skill:void-qa",
|
|
4122
|
+
"to": "skill:void-tdd",
|
|
4123
|
+
"kind": "composes",
|
|
4124
|
+
"origin": "declared",
|
|
4125
|
+
"evidence": "qa SKILL.md: the regression test in the fix loop is authored per tdd/testing discipline."
|
|
4126
|
+
},
|
|
4127
|
+
{
|
|
4128
|
+
"from": "skill:void-qa",
|
|
4129
|
+
"to": "skill:void-testing",
|
|
4130
|
+
"kind": "composes",
|
|
4131
|
+
"origin": "declared",
|
|
4132
|
+
"evidence": "qa SKILL.md: a regression test that reproduces the bug (compose tdd/testing — assert behavior, not it renders)."
|
|
4133
|
+
},
|
|
4134
|
+
{
|
|
4135
|
+
"from": "skill:void-qa",
|
|
4136
|
+
"to": "skill:void-ui-review",
|
|
4137
|
+
"kind": "composes",
|
|
4138
|
+
"origin": "declared",
|
|
4139
|
+
"evidence": "qa SKILL.md: for visual/interaction judgment on the live screenshots, compose ui-review. This skill drives the browser; ui-review supplies the craft bar."
|
|
4140
|
+
},
|
|
4141
|
+
{
|
|
4142
|
+
"from": "skill:void-refactor",
|
|
4143
|
+
"to": "skill:void-typescript-strict",
|
|
4144
|
+
"kind": "composes",
|
|
4145
|
+
"origin": "declared",
|
|
4146
|
+
"evidence": "refactor SKILL.md: Replace Primitive with Branded Type | Composes with typescript-strict."
|
|
4147
|
+
},
|
|
4148
|
+
{
|
|
4149
|
+
"from": "skill:void-retrospective",
|
|
4150
|
+
"to": "skill:void-learn",
|
|
4151
|
+
"kind": "routes-to",
|
|
4152
|
+
"origin": "declared",
|
|
4153
|
+
"evidence": "retrospective SKILL.md: route each durable pattern to learn"
|
|
4154
|
+
},
|
|
4155
|
+
{
|
|
4156
|
+
"from": "skill:void-security-guidance",
|
|
4157
|
+
"to": "agent:doctrine-critic",
|
|
4158
|
+
"kind": "composes",
|
|
4159
|
+
"origin": "declared",
|
|
4160
|
+
"evidence": "security-guidance SKILL.md: composes doctrine-critic for boundary/doctrine review"
|
|
4161
|
+
},
|
|
4162
|
+
{
|
|
4163
|
+
"from": "skill:void-security-guidance",
|
|
4164
|
+
"to": "skill:void-llm-cost-discipline",
|
|
4165
|
+
"kind": "composes",
|
|
4166
|
+
"origin": "declared",
|
|
4167
|
+
"evidence": "security-guidance SKILL.md: Composes with llm-cost-discipline — cost rules and security rules co-evolve at LLM call sites"
|
|
4168
|
+
},
|
|
4169
|
+
{
|
|
4170
|
+
"from": "skill:void-security-guidance",
|
|
4171
|
+
"to": "skill:void-migrations",
|
|
4172
|
+
"kind": "composes",
|
|
4173
|
+
"origin": "declared",
|
|
4174
|
+
"evidence": "security-guidance SKILL.md: Composes with migrations for schema changes."
|
|
4175
|
+
},
|
|
4176
|
+
{
|
|
4177
|
+
"from": "skill:void-security-guidance",
|
|
4178
|
+
"to": "skill:void-observability",
|
|
4179
|
+
"kind": "composes",
|
|
4180
|
+
"origin": "declared",
|
|
4181
|
+
"evidence": "security-guidance SKILL.md: secrets MUST NOT appear in logs. Composes with observability — secrets MUST NOT appear in logs."
|
|
4182
|
+
},
|
|
4183
|
+
{
|
|
4184
|
+
"from": "skill:void-source-driven-development",
|
|
4185
|
+
"to": "skill:void-commit-discipline",
|
|
4186
|
+
"kind": "composes",
|
|
4187
|
+
"origin": "declared",
|
|
4188
|
+
"evidence": "source-driven-development SKILL.md: composes with commit-discipline — the 'why' carries the source"
|
|
4189
|
+
},
|
|
4190
|
+
{
|
|
4191
|
+
"from": "skill:void-source-driven-development",
|
|
4192
|
+
"to": "skill:void-hexagonal-architecture",
|
|
4193
|
+
"kind": "composes",
|
|
4194
|
+
"origin": "declared",
|
|
4195
|
+
"evidence": "source-driven-development SKILL.md: pass the doc text as a parameter — a port. Composes with hexagonal-architecture and security-guidance."
|
|
4196
|
+
},
|
|
4197
|
+
{
|
|
4198
|
+
"from": "skill:void-ticket",
|
|
4199
|
+
"to": "skill:void-implement",
|
|
4200
|
+
"kind": "routes-to",
|
|
4201
|
+
"origin": "declared",
|
|
4202
|
+
"evidence": "implement SKILL.md: Upstream: ticket produces the ticket and declares its conditional passes"
|
|
4203
|
+
},
|
|
4204
|
+
{
|
|
4205
|
+
"from": "skill:void-ui-review",
|
|
4206
|
+
"to": "skill:void-qa",
|
|
4207
|
+
"kind": "composes",
|
|
4208
|
+
"origin": "declared",
|
|
4209
|
+
"evidence": "ui-review SKILL.md: the browser home for the live layer is qa; compose qa rather than reviewing from code alone."
|
|
4210
|
+
},
|
|
4211
|
+
{
|
|
4212
|
+
"from": "skill:void-verify",
|
|
4213
|
+
"to": "skill:void-code-review",
|
|
4214
|
+
"kind": "composes",
|
|
4215
|
+
"origin": "declared",
|
|
4216
|
+
"evidence": "verify SKILL.md: For PRs (composes with code-review): the checklist feeds the Review Evidence block"
|
|
4217
|
+
},
|
|
4218
|
+
{
|
|
4219
|
+
"from": "skill:void-verify",
|
|
4220
|
+
"to": "skill:void-plan",
|
|
4221
|
+
"kind": "composes",
|
|
4222
|
+
"origin": "declared",
|
|
4223
|
+
"evidence": "verify SKILL.md: For multi-step plans (composes with plan): update the plan's Resume point section"
|
|
4224
|
+
}
|
|
4225
|
+
]
|
|
4226
|
+
}
|