bigpowers 2.86.4 → 2.86.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.agents/skills/commit-message/SKILL.md +1 -1
- package/.agents/skills/craft-skill/SKILL.md +2 -2
- package/.agents/skills/define-success/SKILL.md +6 -59
- package/.agents/skills/deploy/SKILL.md +1 -1
- package/.agents/skills/elaborate-spec/SKILL.md +1 -1
- package/.agents/skills/evolve-skill/SKILL.md +1 -1
- package/.agents/skills/harden-vps/SKILL.md +63 -60
- package/.agents/skills/investigate-bug/SKILL.md +2 -2
- package/.agents/skills/orchestrate-project/SKILL.md +1 -1
- package/.agents/skills/plan-refactor/SKILL.md +2 -2
- package/.agents/skills/plan-release/SKILL.md +2 -2
- package/.agents/skills/plan-work/SKILL.md +1 -1
- package/.agents/skills/using-bigpowers/SKILL.md +2 -2
- package/.agents/skills/wire-ci/SKILL.md +11 -14
- package/.agents/skills/write-document/SKILL.md +1 -1
- package/.cline/skills/align-grid/SKILL.md +110 -0
- package/.cline/skills/assess-impact/SKILL.md +91 -0
- package/.cline/skills/audit-code/SKILL.md +184 -0
- package/.cline/skills/audit-plan/SKILL.md +89 -0
- package/.cline/skills/build-epic/SKILL.md +105 -0
- package/.cline/skills/change-request/SKILL.md +121 -0
- package/.cline/skills/commit-message/SKILL.md +140 -0
- package/.cline/skills/compose-workflow/SKILL.md +82 -0
- package/.cline/skills/context7-mcp/SKILL.md +55 -0
- package/.cline/skills/craft-skill/SKILL.md +196 -0
- package/.cline/skills/deepen-architecture/SKILL.md +260 -0
- package/.cline/skills/define-language/SKILL.md +80 -0
- package/.cline/skills/define-success/SKILL.md +12 -0
- package/.cline/skills/delegate-task/SKILL.md +91 -0
- package/.cline/skills/deploy/SKILL.md +198 -0
- package/.cline/skills/design-interface/SKILL.md +97 -0
- package/.cline/skills/develop-tdd/SKILL.md +416 -0
- package/.cline/skills/diagnose-root/SKILL.md +24 -0
- package/.cline/skills/diagnose-stall/SKILL.md +54 -0
- package/.cline/skills/dispatch-agents/SKILL.md +118 -0
- package/.cline/skills/edit-document/SKILL.md +23 -0
- package/.cline/skills/elaborate-spec/SKILL.md +101 -0
- package/.cline/skills/enforce-first/SKILL.md +45 -0
- package/.cline/skills/evolve-skill/SKILL.md +55 -0
- package/.cline/skills/execute-plan/SKILL.md +61 -0
- package/.cline/skills/extract-design/SKILL.md +132 -0
- package/.cline/skills/find-way/SKILL.md +191 -0
- package/.cline/skills/fix-bug/SKILL.md +67 -0
- package/.cline/skills/gate-trace/SKILL.md +92 -0
- package/.cline/skills/generate-allure-report/SKILL.md +285 -0
- package/.cline/skills/grill-me/SKILL.md +108 -0
- package/.cline/skills/grill-with-docs/SKILL.md +53 -0
- package/.cline/skills/guard-git/SKILL.md +231 -0
- package/.cline/skills/harden-vps/SKILL.md +291 -0
- package/.cline/skills/hook-commits/SKILL.md +94 -0
- package/.cline/skills/inspect-quality/SKILL.md +106 -0
- package/.cline/skills/investigate-bug/SKILL.md +127 -0
- package/.cline/skills/kickoff-branch/SKILL.md +143 -0
- package/.cline/skills/maintain-wiki/SKILL.md +64 -0
- package/.cline/skills/map-codebase/SKILL.md +71 -0
- package/.cline/skills/migrate-spec/SKILL.md +862 -0
- package/.cline/skills/model-domain/SKILL.md +232 -0
- package/.cline/skills/orchestrate-project/SKILL.md +174 -0
- package/.cline/skills/organize-workspace/SKILL.md +164 -0
- package/.cline/skills/plan-refactor/SKILL.md +87 -0
- package/.cline/skills/plan-release/SKILL.md +145 -0
- package/.cline/skills/plan-tests/SKILL.md +75 -0
- package/.cline/skills/plan-work/SKILL.md +260 -0
- package/.cline/skills/publish-package/SKILL.md +328 -0
- package/.cline/skills/quick-fix/SKILL.md +114 -0
- package/.cline/skills/release-branch/SKILL.md +298 -0
- package/.cline/skills/request-review/SKILL.md +113 -0
- package/.cline/skills/research-first/SKILL.md +87 -0
- package/.cline/skills/reset-baseline/SKILL.md +21 -0
- package/.cline/skills/respond-review/SKILL.md +71 -0
- package/.cline/skills/run-benchmark/SKILL.md +85 -0
- package/.cline/skills/run-evals/SKILL.md +80 -0
- package/.cline/skills/run-planning/SKILL.md +101 -0
- package/.cline/skills/scope-work/SKILL.md +63 -0
- package/.cline/skills/search-skills/SKILL.md +73 -0
- package/.cline/skills/security-review/SKILL.md +384 -0
- package/.cline/skills/seed-conventions/SKILL.md +302 -0
- package/.cline/skills/session-state/SKILL.md +146 -0
- package/.cline/skills/setup-environment/SKILL.md +39 -0
- package/.cline/skills/simulate-agents/SKILL.md +26 -0
- package/.cline/skills/slice-tasks/SKILL.md +68 -0
- package/.cline/skills/smoke-test/SKILL.md +257 -0
- package/.cline/skills/spike-prototype/SKILL.md +95 -0
- package/.cline/skills/stocktake-skills/SKILL.md +74 -0
- package/.cline/skills/survey-context/SKILL.md +135 -0
- package/.cline/skills/terse-mode/SKILL.md +42 -0
- package/.cline/skills/trace-requirement/SKILL.md +69 -0
- package/.cline/skills/using-bigpowers/SKILL.md +111 -0
- package/.cline/skills/validate-contracts/SKILL.md +277 -0
- package/.cline/skills/validate-fix/SKILL.md +147 -0
- package/.cline/skills/verify-work/SKILL.md +191 -0
- package/.cline/skills/visual-dashboard/SKILL.md +50 -0
- package/.cline/skills/wire-ci/SKILL.md +374 -0
- package/.cline/skills/wire-observability/SKILL.md +97 -0
- package/.cline/skills/write-document/SKILL.md +255 -0
- package/.codebuddy/skills/commit-message/SKILL.md +1 -1
- package/.codebuddy/skills/craft-skill/SKILL.md +2 -2
- package/.codebuddy/skills/define-success/SKILL.md +6 -59
- package/.codebuddy/skills/deploy/SKILL.md +1 -1
- package/.codebuddy/skills/elaborate-spec/SKILL.md +1 -1
- package/.codebuddy/skills/evolve-skill/SKILL.md +1 -1
- package/.codebuddy/skills/harden-vps/SKILL.md +63 -60
- package/.codebuddy/skills/investigate-bug/SKILL.md +2 -2
- package/.codebuddy/skills/orchestrate-project/SKILL.md +1 -1
- package/.codebuddy/skills/plan-refactor/SKILL.md +2 -2
- package/.codebuddy/skills/plan-release/SKILL.md +2 -2
- package/.codebuddy/skills/plan-work/SKILL.md +1 -1
- package/.codebuddy/skills/using-bigpowers/SKILL.md +2 -2
- package/.codebuddy/skills/wire-ci/SKILL.md +11 -14
- package/.codebuddy/skills/write-document/SKILL.md +1 -1
- package/.codex/skills/commit-message/SKILL.md +1 -1
- package/.codex/skills/craft-skill/SKILL.md +2 -2
- package/.codex/skills/define-success/SKILL.md +6 -59
- package/.codex/skills/deploy/SKILL.md +1 -1
- package/.codex/skills/elaborate-spec/SKILL.md +1 -1
- package/.codex/skills/evolve-skill/SKILL.md +1 -1
- package/.codex/skills/harden-vps/SKILL.md +63 -60
- package/.codex/skills/investigate-bug/SKILL.md +2 -2
- package/.codex/skills/orchestrate-project/SKILL.md +1 -1
- package/.codex/skills/plan-refactor/SKILL.md +2 -2
- package/.codex/skills/plan-release/SKILL.md +2 -2
- package/.codex/skills/plan-work/SKILL.md +1 -1
- package/.codex/skills/using-bigpowers/SKILL.md +2 -2
- package/.codex/skills/wire-ci/SKILL.md +11 -14
- package/.codex/skills/write-document/SKILL.md +1 -1
- package/.copilot/skills/align-grid/SKILL.md +110 -0
- package/.copilot/skills/assess-impact/SKILL.md +91 -0
- package/.copilot/skills/audit-code/SKILL.md +184 -0
- package/.copilot/skills/audit-plan/SKILL.md +89 -0
- package/.copilot/skills/build-epic/SKILL.md +105 -0
- package/.copilot/skills/change-request/SKILL.md +121 -0
- package/.copilot/skills/commit-message/SKILL.md +140 -0
- package/.copilot/skills/compose-workflow/SKILL.md +82 -0
- package/.copilot/skills/context7-mcp/SKILL.md +55 -0
- package/.copilot/skills/craft-skill/SKILL.md +196 -0
- package/.copilot/skills/deepen-architecture/SKILL.md +260 -0
- package/.copilot/skills/define-language/SKILL.md +80 -0
- package/.copilot/skills/define-success/SKILL.md +12 -0
- package/.copilot/skills/delegate-task/SKILL.md +91 -0
- package/.copilot/skills/deploy/SKILL.md +198 -0
- package/.copilot/skills/design-interface/SKILL.md +97 -0
- package/.copilot/skills/develop-tdd/SKILL.md +416 -0
- package/.copilot/skills/diagnose-root/SKILL.md +24 -0
- package/.copilot/skills/diagnose-stall/SKILL.md +54 -0
- package/.copilot/skills/dispatch-agents/SKILL.md +118 -0
- package/.copilot/skills/edit-document/SKILL.md +23 -0
- package/.copilot/skills/elaborate-spec/SKILL.md +101 -0
- package/.copilot/skills/enforce-first/SKILL.md +45 -0
- package/.copilot/skills/evolve-skill/SKILL.md +55 -0
- package/.copilot/skills/execute-plan/SKILL.md +61 -0
- package/.copilot/skills/extract-design/SKILL.md +132 -0
- package/.copilot/skills/find-way/SKILL.md +191 -0
- package/.copilot/skills/fix-bug/SKILL.md +67 -0
- package/.copilot/skills/gate-trace/SKILL.md +92 -0
- package/.copilot/skills/generate-allure-report/SKILL.md +285 -0
- package/.copilot/skills/grill-me/SKILL.md +108 -0
- package/.copilot/skills/grill-with-docs/SKILL.md +53 -0
- package/.copilot/skills/guard-git/SKILL.md +231 -0
- package/.copilot/skills/harden-vps/SKILL.md +291 -0
- package/.copilot/skills/hook-commits/SKILL.md +94 -0
- package/.copilot/skills/inspect-quality/SKILL.md +106 -0
- package/.copilot/skills/investigate-bug/SKILL.md +127 -0
- package/.copilot/skills/kickoff-branch/SKILL.md +143 -0
- package/.copilot/skills/maintain-wiki/SKILL.md +64 -0
- package/.copilot/skills/map-codebase/SKILL.md +71 -0
- package/.copilot/skills/migrate-spec/SKILL.md +862 -0
- package/.copilot/skills/model-domain/SKILL.md +232 -0
- package/.copilot/skills/orchestrate-project/SKILL.md +174 -0
- package/.copilot/skills/organize-workspace/SKILL.md +164 -0
- package/.copilot/skills/plan-refactor/SKILL.md +87 -0
- package/.copilot/skills/plan-release/SKILL.md +145 -0
- package/.copilot/skills/plan-tests/SKILL.md +75 -0
- package/.copilot/skills/plan-work/SKILL.md +260 -0
- package/.copilot/skills/publish-package/SKILL.md +328 -0
- package/.copilot/skills/quick-fix/SKILL.md +114 -0
- package/.copilot/skills/release-branch/SKILL.md +298 -0
- package/.copilot/skills/request-review/SKILL.md +113 -0
- package/.copilot/skills/research-first/SKILL.md +87 -0
- package/.copilot/skills/reset-baseline/SKILL.md +21 -0
- package/.copilot/skills/respond-review/SKILL.md +71 -0
- package/.copilot/skills/run-benchmark/SKILL.md +85 -0
- package/.copilot/skills/run-evals/SKILL.md +80 -0
- package/.copilot/skills/run-planning/SKILL.md +101 -0
- package/.copilot/skills/scope-work/SKILL.md +63 -0
- package/.copilot/skills/search-skills/SKILL.md +73 -0
- package/.copilot/skills/security-review/SKILL.md +384 -0
- package/.copilot/skills/seed-conventions/SKILL.md +302 -0
- package/.copilot/skills/session-state/SKILL.md +146 -0
- package/.copilot/skills/setup-environment/SKILL.md +39 -0
- package/.copilot/skills/simulate-agents/SKILL.md +26 -0
- package/.copilot/skills/slice-tasks/SKILL.md +68 -0
- package/.copilot/skills/smoke-test/SKILL.md +257 -0
- package/.copilot/skills/spike-prototype/SKILL.md +95 -0
- package/.copilot/skills/stocktake-skills/SKILL.md +74 -0
- package/.copilot/skills/survey-context/SKILL.md +135 -0
- package/.copilot/skills/terse-mode/SKILL.md +42 -0
- package/.copilot/skills/trace-requirement/SKILL.md +69 -0
- package/.copilot/skills/using-bigpowers/SKILL.md +111 -0
- package/.copilot/skills/validate-contracts/SKILL.md +277 -0
- package/.copilot/skills/validate-fix/SKILL.md +147 -0
- package/.copilot/skills/verify-work/SKILL.md +191 -0
- package/.copilot/skills/visual-dashboard/SKILL.md +50 -0
- package/.copilot/skills/wire-ci/SKILL.md +374 -0
- package/.copilot/skills/wire-observability/SKILL.md +97 -0
- package/.copilot/skills/write-document/SKILL.md +255 -0
- package/.hermes/skills/commit-message/SKILL.md +1 -1
- package/.hermes/skills/craft-skill/SKILL.md +2 -2
- package/.hermes/skills/define-success/SKILL.md +6 -59
- package/.hermes/skills/deploy/SKILL.md +1 -1
- package/.hermes/skills/elaborate-spec/SKILL.md +1 -1
- package/.hermes/skills/evolve-skill/SKILL.md +1 -1
- package/.hermes/skills/harden-vps/SKILL.md +63 -60
- package/.hermes/skills/investigate-bug/SKILL.md +2 -2
- package/.hermes/skills/orchestrate-project/SKILL.md +1 -1
- package/.hermes/skills/plan-refactor/SKILL.md +2 -2
- package/.hermes/skills/plan-release/SKILL.md +2 -2
- package/.hermes/skills/plan-work/SKILL.md +1 -1
- package/.hermes/skills/using-bigpowers/SKILL.md +2 -2
- package/.hermes/skills/wire-ci/SKILL.md +11 -14
- package/.hermes/skills/write-document/SKILL.md +1 -1
- package/.kilocode/rules/commit-message.md +1 -1
- package/.kilocode/rules/craft-skill.md +2 -2
- package/.kilocode/rules/define-success.md +6 -59
- package/.kilocode/rules/deploy.md +1 -1
- package/.kilocode/rules/elaborate-spec.md +1 -1
- package/.kilocode/rules/evolve-skill.md +1 -1
- package/.kilocode/rules/harden-vps.md +63 -60
- package/.kilocode/rules/investigate-bug.md +2 -2
- package/.kilocode/rules/orchestrate-project.md +1 -1
- package/.kilocode/rules/plan-refactor.md +2 -2
- package/.kilocode/rules/plan-release.md +2 -2
- package/.kilocode/rules/plan-work.md +1 -1
- package/.kilocode/rules/using-bigpowers.md +2 -2
- package/.kilocode/rules/wire-ci.md +11 -14
- package/.kilocode/rules/write-document.md +1 -1
- package/.mimocode/skills/commit-message/SKILL.md +1 -1
- package/.mimocode/skills/craft-skill/SKILL.md +2 -2
- package/.mimocode/skills/define-success/SKILL.md +6 -59
- package/.mimocode/skills/deploy/SKILL.md +1 -1
- package/.mimocode/skills/elaborate-spec/SKILL.md +1 -1
- package/.mimocode/skills/evolve-skill/SKILL.md +1 -1
- package/.mimocode/skills/harden-vps/SKILL.md +63 -60
- package/.mimocode/skills/investigate-bug/SKILL.md +2 -2
- package/.mimocode/skills/orchestrate-project/SKILL.md +1 -1
- package/.mimocode/skills/plan-refactor/SKILL.md +2 -2
- package/.mimocode/skills/plan-release/SKILL.md +2 -2
- package/.mimocode/skills/plan-work/SKILL.md +1 -1
- package/.mimocode/skills/using-bigpowers/SKILL.md +2 -2
- package/.mimocode/skills/wire-ci/SKILL.md +11 -14
- package/.mimocode/skills/write-document/SKILL.md +1 -1
- package/.opencode/skills/align-grid/SKILL.md +110 -0
- package/.opencode/skills/assess-impact/SKILL.md +91 -0
- package/.opencode/skills/audit-code/SKILL.md +184 -0
- package/.opencode/skills/audit-plan/SKILL.md +89 -0
- package/.opencode/skills/build-epic/SKILL.md +105 -0
- package/.opencode/skills/change-request/SKILL.md +121 -0
- package/.opencode/skills/commit-message/SKILL.md +140 -0
- package/.opencode/skills/compose-workflow/SKILL.md +82 -0
- package/.opencode/skills/context7-mcp/SKILL.md +55 -0
- package/.opencode/skills/craft-skill/SKILL.md +196 -0
- package/.opencode/skills/deepen-architecture/SKILL.md +260 -0
- package/.opencode/skills/define-language/SKILL.md +80 -0
- package/.opencode/skills/define-success/SKILL.md +12 -0
- package/.opencode/skills/delegate-task/SKILL.md +91 -0
- package/.opencode/skills/deploy/SKILL.md +198 -0
- package/.opencode/skills/design-interface/SKILL.md +97 -0
- package/.opencode/skills/develop-tdd/SKILL.md +416 -0
- package/.opencode/skills/diagnose-root/SKILL.md +24 -0
- package/.opencode/skills/diagnose-stall/SKILL.md +54 -0
- package/.opencode/skills/dispatch-agents/SKILL.md +118 -0
- package/.opencode/skills/edit-document/SKILL.md +23 -0
- package/.opencode/skills/elaborate-spec/SKILL.md +101 -0
- package/.opencode/skills/enforce-first/SKILL.md +45 -0
- package/.opencode/skills/evolve-skill/SKILL.md +55 -0
- package/.opencode/skills/execute-plan/SKILL.md +61 -0
- package/.opencode/skills/extract-design/SKILL.md +132 -0
- package/.opencode/skills/find-way/SKILL.md +191 -0
- package/.opencode/skills/fix-bug/SKILL.md +67 -0
- package/.opencode/skills/gate-trace/SKILL.md +92 -0
- package/.opencode/skills/generate-allure-report/SKILL.md +285 -0
- package/.opencode/skills/grill-me/SKILL.md +108 -0
- package/.opencode/skills/grill-with-docs/SKILL.md +53 -0
- package/.opencode/skills/guard-git/SKILL.md +231 -0
- package/.opencode/skills/harden-vps/SKILL.md +291 -0
- package/.opencode/skills/hook-commits/SKILL.md +94 -0
- package/.opencode/skills/inspect-quality/SKILL.md +106 -0
- package/.opencode/skills/investigate-bug/SKILL.md +127 -0
- package/.opencode/skills/kickoff-branch/SKILL.md +143 -0
- package/.opencode/skills/maintain-wiki/SKILL.md +64 -0
- package/.opencode/skills/map-codebase/SKILL.md +71 -0
- package/.opencode/skills/migrate-spec/SKILL.md +862 -0
- package/.opencode/skills/model-domain/SKILL.md +232 -0
- package/.opencode/skills/orchestrate-project/SKILL.md +174 -0
- package/.opencode/skills/organize-workspace/SKILL.md +164 -0
- package/.opencode/skills/plan-refactor/SKILL.md +87 -0
- package/.opencode/skills/plan-release/SKILL.md +145 -0
- package/.opencode/skills/plan-tests/SKILL.md +75 -0
- package/.opencode/skills/plan-work/SKILL.md +260 -0
- package/.opencode/skills/publish-package/SKILL.md +328 -0
- package/.opencode/skills/quick-fix/SKILL.md +114 -0
- package/.opencode/skills/release-branch/SKILL.md +298 -0
- package/.opencode/skills/request-review/SKILL.md +113 -0
- package/.opencode/skills/research-first/SKILL.md +87 -0
- package/.opencode/skills/reset-baseline/SKILL.md +21 -0
- package/.opencode/skills/respond-review/SKILL.md +71 -0
- package/.opencode/skills/run-benchmark/SKILL.md +85 -0
- package/.opencode/skills/run-evals/SKILL.md +80 -0
- package/.opencode/skills/run-planning/SKILL.md +101 -0
- package/.opencode/skills/scope-work/SKILL.md +63 -0
- package/.opencode/skills/search-skills/SKILL.md +73 -0
- package/.opencode/skills/security-review/SKILL.md +384 -0
- package/.opencode/skills/seed-conventions/SKILL.md +302 -0
- package/.opencode/skills/session-state/SKILL.md +146 -0
- package/.opencode/skills/setup-environment/SKILL.md +39 -0
- package/.opencode/skills/simulate-agents/SKILL.md +26 -0
- package/.opencode/skills/slice-tasks/SKILL.md +68 -0
- package/.opencode/skills/smoke-test/SKILL.md +257 -0
- package/.opencode/skills/spike-prototype/SKILL.md +95 -0
- package/.opencode/skills/stocktake-skills/SKILL.md +74 -0
- package/.opencode/skills/survey-context/SKILL.md +135 -0
- package/.opencode/skills/terse-mode/SKILL.md +42 -0
- package/.opencode/skills/trace-requirement/SKILL.md +69 -0
- package/.opencode/skills/using-bigpowers/SKILL.md +111 -0
- package/.opencode/skills/validate-contracts/SKILL.md +277 -0
- package/.opencode/skills/validate-fix/SKILL.md +147 -0
- package/.opencode/skills/verify-work/SKILL.md +191 -0
- package/.opencode/skills/visual-dashboard/SKILL.md +50 -0
- package/.opencode/skills/wire-ci/SKILL.md +374 -0
- package/.opencode/skills/wire-observability/SKILL.md +97 -0
- package/.opencode/skills/write-document/SKILL.md +255 -0
- package/.pi/package.json +1 -1
- package/.pi/prompts/commit-message.md +1 -1
- package/.pi/prompts/craft-skill.md +2 -2
- package/.pi/prompts/define-success.md +5 -58
- package/.pi/prompts/deploy.md +1 -1
- package/.pi/prompts/elaborate-spec.md +1 -1
- package/.pi/prompts/evolve-skill.md +1 -1
- package/.pi/prompts/harden-vps.md +63 -60
- package/.pi/prompts/investigate-bug.md +2 -2
- package/.pi/prompts/orchestrate-project.md +1 -1
- package/.pi/prompts/plan-refactor.md +2 -2
- package/.pi/prompts/plan-release.md +2 -2
- package/.pi/prompts/plan-work.md +1 -1
- package/.pi/prompts/using-bigpowers.md +2 -2
- package/.pi/prompts/wire-ci.md +11 -14
- package/.pi/prompts/write-document.md +1 -1
- package/.pi/skills/commit-message/SKILL.md +1 -1
- package/.pi/skills/craft-skill/SKILL.md +2 -2
- package/.pi/skills/define-success/SKILL.md +6 -59
- package/.pi/skills/deploy/SKILL.md +1 -1
- package/.pi/skills/elaborate-spec/SKILL.md +1 -1
- package/.pi/skills/evolve-skill/SKILL.md +1 -1
- package/.pi/skills/harden-vps/SKILL.md +63 -60
- package/.pi/skills/investigate-bug/SKILL.md +2 -2
- package/.pi/skills/orchestrate-project/SKILL.md +1 -1
- package/.pi/skills/plan-refactor/SKILL.md +2 -2
- package/.pi/skills/plan-release/SKILL.md +2 -2
- package/.pi/skills/plan-work/SKILL.md +1 -1
- package/.pi/skills/using-bigpowers/SKILL.md +2 -2
- package/.pi/skills/wire-ci/SKILL.md +11 -14
- package/.pi/skills/write-document/SKILL.md +1 -1
- package/.qwen/skills/align-grid/SKILL.md +110 -0
- package/.qwen/skills/assess-impact/SKILL.md +91 -0
- package/.qwen/skills/audit-code/SKILL.md +184 -0
- package/.qwen/skills/audit-plan/SKILL.md +89 -0
- package/.qwen/skills/build-epic/SKILL.md +105 -0
- package/.qwen/skills/change-request/SKILL.md +121 -0
- package/.qwen/skills/commit-message/SKILL.md +140 -0
- package/.qwen/skills/compose-workflow/SKILL.md +82 -0
- package/.qwen/skills/context7-mcp/SKILL.md +55 -0
- package/.qwen/skills/craft-skill/SKILL.md +196 -0
- package/.qwen/skills/deepen-architecture/SKILL.md +260 -0
- package/.qwen/skills/define-language/SKILL.md +80 -0
- package/.qwen/skills/define-success/SKILL.md +12 -0
- package/.qwen/skills/delegate-task/SKILL.md +91 -0
- package/.qwen/skills/deploy/SKILL.md +198 -0
- package/.qwen/skills/design-interface/SKILL.md +97 -0
- package/.qwen/skills/develop-tdd/SKILL.md +416 -0
- package/.qwen/skills/diagnose-root/SKILL.md +24 -0
- package/.qwen/skills/diagnose-stall/SKILL.md +54 -0
- package/.qwen/skills/dispatch-agents/SKILL.md +118 -0
- package/.qwen/skills/edit-document/SKILL.md +23 -0
- package/.qwen/skills/elaborate-spec/SKILL.md +101 -0
- package/.qwen/skills/enforce-first/SKILL.md +45 -0
- package/.qwen/skills/evolve-skill/SKILL.md +55 -0
- package/.qwen/skills/execute-plan/SKILL.md +61 -0
- package/.qwen/skills/extract-design/SKILL.md +132 -0
- package/.qwen/skills/find-way/SKILL.md +191 -0
- package/.qwen/skills/fix-bug/SKILL.md +67 -0
- package/.qwen/skills/gate-trace/SKILL.md +92 -0
- package/.qwen/skills/generate-allure-report/SKILL.md +285 -0
- package/.qwen/skills/grill-me/SKILL.md +108 -0
- package/.qwen/skills/grill-with-docs/SKILL.md +53 -0
- package/.qwen/skills/guard-git/SKILL.md +231 -0
- package/.qwen/skills/harden-vps/SKILL.md +291 -0
- package/.qwen/skills/hook-commits/SKILL.md +94 -0
- package/.qwen/skills/inspect-quality/SKILL.md +106 -0
- package/.qwen/skills/investigate-bug/SKILL.md +127 -0
- package/.qwen/skills/kickoff-branch/SKILL.md +143 -0
- package/.qwen/skills/maintain-wiki/SKILL.md +64 -0
- package/.qwen/skills/map-codebase/SKILL.md +71 -0
- package/.qwen/skills/migrate-spec/SKILL.md +862 -0
- package/.qwen/skills/model-domain/SKILL.md +232 -0
- package/.qwen/skills/orchestrate-project/SKILL.md +174 -0
- package/.qwen/skills/organize-workspace/SKILL.md +164 -0
- package/.qwen/skills/plan-refactor/SKILL.md +87 -0
- package/.qwen/skills/plan-release/SKILL.md +145 -0
- package/.qwen/skills/plan-tests/SKILL.md +75 -0
- package/.qwen/skills/plan-work/SKILL.md +260 -0
- package/.qwen/skills/publish-package/SKILL.md +328 -0
- package/.qwen/skills/quick-fix/SKILL.md +114 -0
- package/.qwen/skills/release-branch/SKILL.md +298 -0
- package/.qwen/skills/request-review/SKILL.md +113 -0
- package/.qwen/skills/research-first/SKILL.md +87 -0
- package/.qwen/skills/reset-baseline/SKILL.md +21 -0
- package/.qwen/skills/respond-review/SKILL.md +71 -0
- package/.qwen/skills/run-benchmark/SKILL.md +85 -0
- package/.qwen/skills/run-evals/SKILL.md +80 -0
- package/.qwen/skills/run-planning/SKILL.md +101 -0
- package/.qwen/skills/scope-work/SKILL.md +63 -0
- package/.qwen/skills/search-skills/SKILL.md +73 -0
- package/.qwen/skills/security-review/SKILL.md +384 -0
- package/.qwen/skills/seed-conventions/SKILL.md +302 -0
- package/.qwen/skills/session-state/SKILL.md +146 -0
- package/.qwen/skills/setup-environment/SKILL.md +39 -0
- package/.qwen/skills/simulate-agents/SKILL.md +26 -0
- package/.qwen/skills/slice-tasks/SKILL.md +68 -0
- package/.qwen/skills/smoke-test/SKILL.md +257 -0
- package/.qwen/skills/spike-prototype/SKILL.md +95 -0
- package/.qwen/skills/stocktake-skills/SKILL.md +74 -0
- package/.qwen/skills/survey-context/SKILL.md +135 -0
- package/.qwen/skills/terse-mode/SKILL.md +42 -0
- package/.qwen/skills/trace-requirement/SKILL.md +69 -0
- package/.qwen/skills/using-bigpowers/SKILL.md +111 -0
- package/.qwen/skills/validate-contracts/SKILL.md +277 -0
- package/.qwen/skills/validate-fix/SKILL.md +147 -0
- package/.qwen/skills/verify-work/SKILL.md +191 -0
- package/.qwen/skills/visual-dashboard/SKILL.md +50 -0
- package/.qwen/skills/wire-ci/SKILL.md +374 -0
- package/.qwen/skills/wire-observability/SKILL.md +97 -0
- package/.qwen/skills/write-document/SKILL.md +255 -0
- package/.trae/skills/commit-message/SKILL.md +1 -1
- package/.trae/skills/craft-skill/SKILL.md +2 -2
- package/.trae/skills/define-success/SKILL.md +6 -59
- package/.trae/skills/deploy/SKILL.md +1 -1
- package/.trae/skills/elaborate-spec/SKILL.md +1 -1
- package/.trae/skills/evolve-skill/SKILL.md +1 -1
- package/.trae/skills/harden-vps/SKILL.md +63 -60
- package/.trae/skills/investigate-bug/SKILL.md +2 -2
- package/.trae/skills/orchestrate-project/SKILL.md +1 -1
- package/.trae/skills/plan-refactor/SKILL.md +2 -2
- package/.trae/skills/plan-release/SKILL.md +2 -2
- package/.trae/skills/plan-work/SKILL.md +1 -1
- package/.trae/skills/using-bigpowers/SKILL.md +2 -2
- package/.trae/skills/wire-ci/SKILL.md +11 -14
- package/.trae/skills/write-document/SKILL.md +1 -1
- package/.windsurf/rules/commit-message.md +1 -1
- package/.windsurf/rules/craft-skill.md +2 -2
- package/.windsurf/rules/define-success.md +6 -59
- package/.windsurf/rules/deploy.md +1 -1
- package/.windsurf/rules/elaborate-spec.md +1 -1
- package/.windsurf/rules/evolve-skill.md +1 -1
- package/.windsurf/rules/harden-vps.md +63 -60
- package/.windsurf/rules/investigate-bug.md +2 -2
- package/.windsurf/rules/orchestrate-project.md +1 -1
- package/.windsurf/rules/plan-refactor.md +2 -2
- package/.windsurf/rules/plan-release.md +2 -2
- package/.windsurf/rules/plan-work.md +1 -1
- package/.windsurf/rules/using-bigpowers.md +2 -2
- package/.windsurf/rules/wire-ci.md +11 -14
- package/.windsurf/rules/write-document.md +1 -1
- package/.zcode/skills/commit-message/SKILL.md +1 -1
- package/.zcode/skills/craft-skill/SKILL.md +2 -2
- package/.zcode/skills/define-success/SKILL.md +6 -59
- package/.zcode/skills/deploy/SKILL.md +1 -1
- package/.zcode/skills/elaborate-spec/SKILL.md +1 -1
- package/.zcode/skills/evolve-skill/SKILL.md +1 -1
- package/.zcode/skills/harden-vps/SKILL.md +63 -60
- package/.zcode/skills/investigate-bug/SKILL.md +2 -2
- package/.zcode/skills/orchestrate-project/SKILL.md +1 -1
- package/.zcode/skills/plan-refactor/SKILL.md +2 -2
- package/.zcode/skills/plan-release/SKILL.md +2 -2
- package/.zcode/skills/plan-work/SKILL.md +1 -1
- package/.zcode/skills/using-bigpowers/SKILL.md +2 -2
- package/.zcode/skills/wire-ci/SKILL.md +11 -14
- package/.zcode/skills/write-document/SKILL.md +1 -1
- package/CHANGELOG.md +14 -0
- package/SKILL-INDEX.md +2 -2
- package/package.json +1 -1
- package/scripts/adapters/agy.sh +3 -0
- package/scripts/adapters/continue.sh +3 -0
- package/scripts/adapters/cursor.sh +3 -0
- package/scripts/adapters/gemini.sh +5 -24
- package/scripts/adapters/mimo.sh +3 -0
- package/scripts/adapters/omp.sh +3 -0
- package/scripts/adapters/pi.sh +6 -3
- package/scripts/adapters/zcode.sh +3 -0
- package/scripts/adapters/zed.sh +3 -0
- package/scripts/check-skill-links.py +35 -0
- package/scripts/generate-workflow-diagrams.sh +102 -0
- package/scripts/golden-g13-test-orphans.sh +70 -0
- package/scripts/golden-g14-adapter-dispatch.sh +113 -0
- package/scripts/land-branch.sh +9 -3
- package/scripts/lib/__pycache__/link_utils.cpython-312.pyc +0 -0
- package/scripts/lib/__pycache__/srp_engine_links.cpython-312.pyc +0 -0
- package/scripts/lib/adapter-guard.sh +30 -0
- package/scripts/lib/golden-suite-gates.sh +28 -0
- package/scripts/lib/install-targets-b.sh +0 -8
- package/scripts/lib/sync-render.sh +0 -43
- package/scripts/lib/target-contracts.sh +37 -1
- package/scripts/targets.yaml +35 -13
- package/scripts/test-adapter-render.sh +116 -0
- package/scripts/test-adapters.sh +10 -3
- package/scripts/test-install-hub.sh +139 -0
- package/scripts/test-target-contracts.sh +73 -0
- package/scripts/tombstone-skill.sh +6 -0
- package/skills/commit-message/REFERENCE.md +1 -1
- package/skills/craft-skill/SKILL.md +2 -2
- package/skills/define-success/SKILL.md +7 -61
- package/skills/deploy/SKILL.md +1 -1
- package/skills/elaborate-spec/SKILL.md +1 -1
- package/skills/evolve-skill/REFERENCE.md +1 -1
- package/skills/harden-vps/REFERENCE.md +39 -36
- package/skills/harden-vps/SKILL.md +24 -24
- package/skills/investigate-bug/SKILL.md +2 -2
- package/skills/orchestrate-project/REFERENCE.md +1 -1
- package/skills/plan-refactor/SKILL.md +2 -2
- package/skills/plan-release/SKILL.md +2 -2
- package/skills/plan-work/SKILL.md +1 -1
- package/skills/security-review/fixtures/CWE-639-idor-negative.go +1 -1
- package/skills/security-review/fixtures/CWE-639-idor-positive.go +1 -1
- package/skills/using-bigpowers/SKILL.md +2 -2
- package/skills/wire-ci/REFERENCE.md +11 -14
- package/skills/write-document/REFERENCE.md +1 -1
- package/skills-lock.json +12 -12
- package/.fix_regex.sh +0 -16
- package/.hermes-verify-sed-fix.py +0 -53
- package/_test_e28s01.sh +0 -2
- package/audit-independent-unwaived-2026-07-06.md +0 -49
- package/hermes-verify-sed-fix.py +0 -30
- package/instructions +0 -1
- package/scripts/hermes-verify-e39s02.sh +0 -28
- package/scripts/test-agy-hub.sh +0 -60
- package/scripts/test-cline-adapter.sh +0 -55
- package/scripts/test-cline-hub.sh +0 -48
- package/scripts/test-codebuddy-adapter.sh +0 -63
- package/scripts/test-codebuddy-hub.sh +0 -49
- package/scripts/test-codex-adapter.sh +0 -63
- package/scripts/test-codex-hub.sh +0 -49
- package/scripts/test-copilot-adapter.sh +0 -47
- package/scripts/test-copilot-hub.sh +0 -43
- package/scripts/test-gemini-adapter.sh +0 -70
- package/scripts/test-gemini-hub.sh +0 -56
- package/scripts/test-hermes-adapter.sh +0 -85
- package/scripts/test-hermes-hub.sh +0 -52
- package/scripts/test-kilocode-adapter.sh +0 -55
- package/scripts/test-kilocode-hub.sh +0 -48
- package/scripts/test-mimo-hub.sh +0 -52
- package/scripts/test-opencode-adapter.sh +0 -47
- package/scripts/test-opencode-hub.sh +0 -43
- package/scripts/test-qwen-adapter.sh +0 -63
- package/scripts/test-qwen-hub.sh +0 -49
- package/scripts/test-trae-adapter.sh +0 -63
- package/scripts/test-trae-hub.sh +0 -49
- package/scripts/test-windsurf-adapter.sh +0 -63
- package/scripts/test-windsurf-hub.sh +0 -49
- package/scripts/test-zcode-hub.sh +0 -52
- package/test_figlet.py +0 -17
|
@@ -53,12 +53,47 @@ def check_file_links(smd: str, root: str) -> list[str]:
|
|
|
53
53
|
return problems
|
|
54
54
|
|
|
55
55
|
|
|
56
|
+
def check_machine_paths(path: str, root: str) -> list[str]:
|
|
57
|
+
"""Machine-absolute path scan for non-Markdown sources (scripts, hooks)."""
|
|
58
|
+
rel = os.path.relpath(path, root)
|
|
59
|
+
problems = []
|
|
60
|
+
try:
|
|
61
|
+
with open(path, encoding="utf-8") as f:
|
|
62
|
+
text = f.read()
|
|
63
|
+
except (UnicodeDecodeError, OSError):
|
|
64
|
+
return problems
|
|
65
|
+
for i, line in enumerate(text.splitlines(), 1):
|
|
66
|
+
stripped = line.strip()
|
|
67
|
+
# The pattern definition in lib/link_utils.py names these prefixes; a
|
|
68
|
+
# regex describing them is not itself a violation.
|
|
69
|
+
if "MACHINE_PATH_RE" in line or stripped.startswith("#"):
|
|
70
|
+
continue
|
|
71
|
+
if MACHINE_PATH_RE.search(line):
|
|
72
|
+
problems.append(
|
|
73
|
+
f"{rel}:{i}: machine-absolute path: {stripped[:100]}"
|
|
74
|
+
)
|
|
75
|
+
return problems
|
|
76
|
+
|
|
77
|
+
|
|
56
78
|
def check(root: str) -> list[str]:
|
|
57
79
|
problems = []
|
|
58
80
|
for tree in ("skills", os.path.join(".pi", "skills")):
|
|
59
81
|
pattern = os.path.join(root, tree, "*", "SKILL.md")
|
|
60
82
|
for smd in sorted(glob.glob(pattern)):
|
|
61
83
|
problems.extend(check_file_links(smd, root))
|
|
84
|
+
|
|
85
|
+
# scripts/ was previously unscanned, which let a hardcoded
|
|
86
|
+
# /Users/<name>/Developer/... path ship in scripts/hermes-verify-e39s02.sh
|
|
87
|
+
# while this gate reported OK.
|
|
88
|
+
for pattern in (
|
|
89
|
+
"scripts/*.sh",
|
|
90
|
+
"scripts/lib/*.sh",
|
|
91
|
+
"scripts/adapters/*.sh",
|
|
92
|
+
"*.sh",
|
|
93
|
+
"*.py",
|
|
94
|
+
):
|
|
95
|
+
for src in sorted(glob.glob(os.path.join(root, pattern))):
|
|
96
|
+
problems.extend(check_machine_paths(src, root))
|
|
62
97
|
return problems
|
|
63
98
|
|
|
64
99
|
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
# story: e37s05
|
|
3
|
+
# generate-workflow-diagrams.sh — render docs/WORKFLOWS.md from specs/workflows/*.yaml.
|
|
4
|
+
#
|
|
5
|
+
# specs/assets/bigpowers-workflow.svg was a find-and-replace of a BMad Method
|
|
6
|
+
# chart with bigpowers skill names dropped into BMad's slots. Nothing regenerated
|
|
7
|
+
# it, so it drifted: it routed PLAN through define-success (archived), placed
|
|
8
|
+
# seed-conventions in PHASE 4 when it is the greenfield entry point, omitted the
|
|
9
|
+
# whole planning spine, build-epic and the entire verify/release arc, and used
|
|
10
|
+
# "Sprints" — a word absent from every bigpowers doctrine file.
|
|
11
|
+
#
|
|
12
|
+
# A diagram nothing regenerates is a diagram that lies. This derives the chains
|
|
13
|
+
# from the same YAML the /slash commands read, so the source cannot drift from
|
|
14
|
+
# the picture without the picture changing.
|
|
15
|
+
#
|
|
16
|
+
# Usage: bash scripts/generate-workflow-diagrams.sh [--check]
|
|
17
|
+
# --check fail if the committed output is stale (for CI)
|
|
18
|
+
|
|
19
|
+
set -euo pipefail
|
|
20
|
+
source "$(dirname "${BASH_SOURCE[0]}")/lib/python-env.sh"
|
|
21
|
+
source "$(dirname "${BASH_SOURCE[0]}")/lib/skill-common.sh"
|
|
22
|
+
resolve_repo_root
|
|
23
|
+
cd "$REPO_ROOT"
|
|
24
|
+
|
|
25
|
+
OUT="docs/WORKFLOWS.md"
|
|
26
|
+
CHECK=0
|
|
27
|
+
[[ "${1:-}" == "--check" ]] && CHECK=1
|
|
28
|
+
|
|
29
|
+
TMP=$(mktemp)
|
|
30
|
+
trap 'rm -f "$TMP"' EXIT
|
|
31
|
+
|
|
32
|
+
$PYTHON - "$TMP" <<'PY'
|
|
33
|
+
import sys, glob, os
|
|
34
|
+
import yaml
|
|
35
|
+
|
|
36
|
+
out = open(sys.argv[1], "w", encoding="utf-8")
|
|
37
|
+
w = out.write
|
|
38
|
+
|
|
39
|
+
w("# bigpowers Workflows\n\n")
|
|
40
|
+
w("<!-- story: e37s05 -->\n\n")
|
|
41
|
+
w("> **Generated** by `scripts/generate-workflow-diagrams.sh` from\n")
|
|
42
|
+
w("> `specs/workflows/*.yaml`. Do not hand-edit — change the YAML and re-run.\n")
|
|
43
|
+
w("> CI enforces freshness via `--check`.\n\n")
|
|
44
|
+
w("Each recipe below is a composed chain of skills, invocable as a slash command.\n\n")
|
|
45
|
+
|
|
46
|
+
recipes = []
|
|
47
|
+
for path in sorted(glob.glob("specs/workflows/*.yaml")):
|
|
48
|
+
d = yaml.safe_load(open(path, encoding="utf-8")) or {}
|
|
49
|
+
if d.get("name") and d.get("skills"):
|
|
50
|
+
recipes.append(d)
|
|
51
|
+
|
|
52
|
+
w("## Recipes\n\n")
|
|
53
|
+
w("| Command | Chain | Purpose |\n|---|---|---|\n")
|
|
54
|
+
for r in recipes:
|
|
55
|
+
chain = " → ".join("`%s`" % s for s in r["skills"])
|
|
56
|
+
desc = (r.get("description") or "").replace("|", "\\|").strip()
|
|
57
|
+
w("| `%s` | %s | %s |\n" % (r.get("command", "/" + r["name"]), chain, desc))
|
|
58
|
+
w("\n")
|
|
59
|
+
|
|
60
|
+
w("## Chains\n\n```mermaid\nflowchart LR\n")
|
|
61
|
+
for i, r in enumerate(recipes):
|
|
62
|
+
w(" subgraph %s[\"%s\"]\n" % ("w%d" % i, r.get("command", r["name"])))
|
|
63
|
+
prev = None
|
|
64
|
+
for j, s in enumerate(r["skills"]):
|
|
65
|
+
node = "n%d_%d" % (i, j)
|
|
66
|
+
w(" %s[\"%s\"]\n" % (node, s))
|
|
67
|
+
if prev:
|
|
68
|
+
w(" %s --> %s\n" % (prev, node))
|
|
69
|
+
prev = node
|
|
70
|
+
w(" end\n")
|
|
71
|
+
w("```\n\n")
|
|
72
|
+
|
|
73
|
+
# Skill reuse across recipes is the interesting structural fact: it shows which
|
|
74
|
+
# skills are load-bearing across the catalog.
|
|
75
|
+
counts = {}
|
|
76
|
+
for r in recipes:
|
|
77
|
+
for s in r["skills"]:
|
|
78
|
+
counts[s] = counts.get(s, 0) + 1
|
|
79
|
+
shared = sorted([(v, k) for k, v in counts.items() if v > 1], reverse=True)
|
|
80
|
+
if shared:
|
|
81
|
+
w("## Skills shared across recipes\n\n")
|
|
82
|
+
w("| Skill | Recipes |\n|---|---|\n")
|
|
83
|
+
for v, k in shared:
|
|
84
|
+
w("| `%s` | %d |\n" % (k, v))
|
|
85
|
+
w("\n")
|
|
86
|
+
|
|
87
|
+
w("_%d recipes, %d distinct skills._\n" % (len(recipes), len(counts)))
|
|
88
|
+
out.close()
|
|
89
|
+
PY
|
|
90
|
+
|
|
91
|
+
if [[ "$CHECK" -eq 1 ]]; then
|
|
92
|
+
if [[ ! -f "$OUT" ]] || ! diff -q "$TMP" "$OUT" >/dev/null 2>&1; then
|
|
93
|
+
echo "generate-workflow-diagrams: $OUT is stale — run bash scripts/generate-workflow-diagrams.sh" >&2
|
|
94
|
+
exit 1
|
|
95
|
+
fi
|
|
96
|
+
echo "generate-workflow-diagrams: $OUT is current"
|
|
97
|
+
exit 0
|
|
98
|
+
fi
|
|
99
|
+
|
|
100
|
+
mkdir -p "$(dirname "$OUT")"
|
|
101
|
+
cp "$TMP" "$OUT"
|
|
102
|
+
echo "generate-workflow-diagrams: wrote $OUT"
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
# story: e37s05
|
|
3
|
+
# golden-g13-test-orphans.sh — every scripts/test-*.sh must be wired into a gate.
|
|
4
|
+
#
|
|
5
|
+
# Before this gate, 33 of 35 test scripts were reachable from nothing: not CI,
|
|
6
|
+
# not Preflight, not package.json, not another script. Writing a test was not
|
|
7
|
+
# enough to make it run, so tests accumulated as dead weight and regressions
|
|
8
|
+
# they would have caught shipped anyway (test-adapters.sh silently exercised 1
|
|
9
|
+
# of 21 adapters for months).
|
|
10
|
+
#
|
|
11
|
+
# Usage: bash scripts/golden-g13-test-orphans.sh [--self-test]
|
|
12
|
+
# Exit 0: every test script is referenced by the gate list
|
|
13
|
+
# Exit 1: at least one orphan (or, under --self-test, the gate failed to notice
|
|
14
|
+
# a deliberately unlisted script)
|
|
15
|
+
|
|
16
|
+
set -euo pipefail
|
|
17
|
+
source "$(dirname "${BASH_SOURCE[0]}")/lib/skill-common.sh"
|
|
18
|
+
resolve_repo_root
|
|
19
|
+
cd "$REPO_ROOT"
|
|
20
|
+
|
|
21
|
+
RED='\033[0;31m'
|
|
22
|
+
GREEN='\033[0;32m'
|
|
23
|
+
NC='\033[0m'
|
|
24
|
+
|
|
25
|
+
GATES_FILE="scripts/lib/golden-suite-gates.sh"
|
|
26
|
+
|
|
27
|
+
find_orphans() { # $1 = extra script basename to consider (may be empty)
|
|
28
|
+
local extra="${1:-}"
|
|
29
|
+
local orphans=""
|
|
30
|
+
local f b
|
|
31
|
+
for f in scripts/test-*.sh; do
|
|
32
|
+
[[ -e "$f" ]] || continue
|
|
33
|
+
b="$(basename "$f")"
|
|
34
|
+
grep -q "$b" "$GATES_FILE" || orphans+=" $b"$'\n'
|
|
35
|
+
done
|
|
36
|
+
if [[ -n "$extra" ]]; then
|
|
37
|
+
grep -q "$extra" "$GATES_FILE" || orphans+=" $extra"$'\n'
|
|
38
|
+
fi
|
|
39
|
+
printf '%s' "$orphans"
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
if [[ "${1:-}" == "--self-test" ]]; then
|
|
43
|
+
echo "=== G-13 self-test: prove the gate can fail ==="
|
|
44
|
+
# A name that is definitely not in the gate list must be reported.
|
|
45
|
+
if [[ -n "$(find_orphans "test-definitely-not-wired.sh")" ]]; then
|
|
46
|
+
echo -e "${GREEN}PASS${NC} G-13 reports an unlisted test script"
|
|
47
|
+
echo "G-13 self-test: PASS"
|
|
48
|
+
exit 0
|
|
49
|
+
fi
|
|
50
|
+
echo -e "${RED}FAIL${NC} G-13 did not report an unlisted script — vacuous gate"
|
|
51
|
+
echo "G-13 self-test: FAIL"
|
|
52
|
+
exit 1
|
|
53
|
+
fi
|
|
54
|
+
|
|
55
|
+
echo "=== G-13: test-script orphan check ==="
|
|
56
|
+
ORPHANS="$(find_orphans "")"
|
|
57
|
+
TOTAL=$(ls scripts/test-*.sh 2>/dev/null | wc -l | tr -d ' ')
|
|
58
|
+
|
|
59
|
+
if [[ -z "$ORPHANS" ]]; then
|
|
60
|
+
echo " ok : all $TOTAL test script(s) are wired into $GATES_FILE"
|
|
61
|
+
echo -e "${GREEN}PASS${NC}"
|
|
62
|
+
echo "G-13: PASS"
|
|
63
|
+
exit 0
|
|
64
|
+
fi
|
|
65
|
+
|
|
66
|
+
echo " orphaned test scripts (present but reachable from no gate):"
|
|
67
|
+
printf '%s' "$ORPHANS"
|
|
68
|
+
echo -e "${RED}FAIL${NC} add them to GOLDEN_GATES in $GATES_FILE, or delete them"
|
|
69
|
+
echo "G-13: FAIL"
|
|
70
|
+
exit 1
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
# story: e37s05
|
|
3
|
+
# golden-g14-adapter-dispatch.sh — an adapter that can render must be dispatched.
|
|
4
|
+
#
|
|
5
|
+
# scripts/lib/srp-engine.py builds its dispatch list from targets.yaml entries
|
|
6
|
+
# carrying a skill.adapter. An adapter that defines render_skill() but is
|
|
7
|
+
# declared `skill: null` therefore never runs during sync, while its install
|
|
8
|
+
# function still reads a rendered directory that is never produced — the target
|
|
9
|
+
# reports success and installs nothing
|
|
10
|
+
# (BUG-2026-07-26-null-skill-adapters-install-nothing).
|
|
11
|
+
#
|
|
12
|
+
# Context-only bridges (aider, goose, ...) are exempt by construction: they
|
|
13
|
+
# define no render_skill, so there is nothing to dispatch.
|
|
14
|
+
#
|
|
15
|
+
# Usage: bash scripts/golden-g14-adapter-dispatch.sh [--self-test]
|
|
16
|
+
# Exit 0: every rendering adapter is dispatched
|
|
17
|
+
# Exit 1: at least one rendering adapter is undispatched (or, under
|
|
18
|
+
# --self-test, the gate failed to notice an injected one)
|
|
19
|
+
|
|
20
|
+
set -euo pipefail
|
|
21
|
+
source "$(dirname "${BASH_SOURCE[0]}")/lib/python-env.sh"
|
|
22
|
+
source "$(dirname "${BASH_SOURCE[0]}")/lib/skill-common.sh"
|
|
23
|
+
resolve_repo_root
|
|
24
|
+
cd "$REPO_ROOT"
|
|
25
|
+
|
|
26
|
+
RED='\033[0;31m'
|
|
27
|
+
GREEN='\033[0;32m'
|
|
28
|
+
NC='\033[0m'
|
|
29
|
+
|
|
30
|
+
check() { # $1 = targets.yaml path
|
|
31
|
+
$PYTHON - "$1" <<'PY'
|
|
32
|
+
import sys, os, re
|
|
33
|
+
import yaml
|
|
34
|
+
|
|
35
|
+
targets_path = sys.argv[1]
|
|
36
|
+
data = yaml.safe_load(open(targets_path, encoding="utf-8")) or {}
|
|
37
|
+
|
|
38
|
+
dispatched = set()
|
|
39
|
+
for t in data.get("targets") or []:
|
|
40
|
+
skill = t.get("skill")
|
|
41
|
+
if isinstance(skill, dict) and skill.get("adapter"):
|
|
42
|
+
dispatched.add(skill["adapter"])
|
|
43
|
+
|
|
44
|
+
problems = []
|
|
45
|
+
adapter_dir = os.path.join("scripts", "adapters")
|
|
46
|
+
for fn in sorted(os.listdir(adapter_dir)):
|
|
47
|
+
if not fn.endswith(".sh"):
|
|
48
|
+
continue
|
|
49
|
+
aid = fn[:-3]
|
|
50
|
+
src = open(os.path.join(adapter_dir, fn), encoding="utf-8").read()
|
|
51
|
+
if not re.search(r"^render_skill\(\)", src, re.M):
|
|
52
|
+
continue # context-only bridge — nothing to dispatch
|
|
53
|
+
if aid not in dispatched:
|
|
54
|
+
problems.append(
|
|
55
|
+
f"{aid}: defines render_skill() but targets.yaml does not dispatch it "
|
|
56
|
+
f"(skill.adapter missing or null) — sync renders nothing for it"
|
|
57
|
+
)
|
|
58
|
+
|
|
59
|
+
if problems:
|
|
60
|
+
for p in problems:
|
|
61
|
+
print(f" UNDISPATCHED {p}")
|
|
62
|
+
print(f"\n{len(problems)} rendering adapter(s) never run during sync")
|
|
63
|
+
sys.exit(1)
|
|
64
|
+
|
|
65
|
+
print(f" ok : all rendering adapters are dispatched ({len(dispatched)} in registry)")
|
|
66
|
+
sys.exit(0)
|
|
67
|
+
PY
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
if [[ "${1:-}" == "--self-test" ]]; then
|
|
71
|
+
echo "=== G-14 self-test: prove the gate can fail ==="
|
|
72
|
+
TMP=$(mktemp -d)
|
|
73
|
+
trap 'rm -rf "$TMP"' EXIT
|
|
74
|
+
$PYTHON - "$TMP/targets.yaml" <<'PY'
|
|
75
|
+
import sys, yaml
|
|
76
|
+
d = yaml.safe_load(open("scripts/targets.yaml", encoding="utf-8"))
|
|
77
|
+
# Null out the first dispatched adapter — the gate must notice.
|
|
78
|
+
for t in d.get("targets") or []:
|
|
79
|
+
s = t.get("skill")
|
|
80
|
+
if isinstance(s, dict) and s.get("adapter"):
|
|
81
|
+
print(f"injected: {t['id']} skill -> null")
|
|
82
|
+
t["skill"] = None
|
|
83
|
+
break
|
|
84
|
+
yaml.dump(d, open(sys.argv[1], "w", encoding="utf-8"), default_flow_style=False, sort_keys=False)
|
|
85
|
+
PY
|
|
86
|
+
set +e
|
|
87
|
+
check "$TMP/targets.yaml" >/dev/null 2>&1
|
|
88
|
+
rc=$?
|
|
89
|
+
set -e
|
|
90
|
+
if [[ $rc -ne 0 ]]; then
|
|
91
|
+
echo -e "${GREEN}PASS${NC} G-14 detected an injected undispatched adapter"
|
|
92
|
+
echo "G-14 self-test: PASS"
|
|
93
|
+
exit 0
|
|
94
|
+
fi
|
|
95
|
+
echo -e "${RED}FAIL${NC} G-14 passed on an injected null adapter — vacuous gate"
|
|
96
|
+
echo "G-14 self-test: FAIL"
|
|
97
|
+
exit 1
|
|
98
|
+
fi
|
|
99
|
+
|
|
100
|
+
echo "=== G-14: adapter dispatch coverage ==="
|
|
101
|
+
set +e
|
|
102
|
+
out=$(check "scripts/targets.yaml" 2>&1)
|
|
103
|
+
rc=$?
|
|
104
|
+
set -e
|
|
105
|
+
echo "$out"
|
|
106
|
+
if [[ $rc -eq 0 ]]; then
|
|
107
|
+
echo -e "${GREEN}PASS${NC}"
|
|
108
|
+
echo "G-14: PASS"
|
|
109
|
+
exit 0
|
|
110
|
+
fi
|
|
111
|
+
echo -e "${RED}FAIL${NC} see BUG-2026-07-26-null-skill-adapters-install-nothing"
|
|
112
|
+
echo "G-14: FAIL"
|
|
113
|
+
exit 1
|
package/scripts/land-branch.sh
CHANGED
|
@@ -36,12 +36,18 @@ COMMIT_MSG="${ARGS[1]:-}"
|
|
|
36
36
|
|
|
37
37
|
[ -n "$FEATURE_BRANCH" ] && [ -n "$COMMIT_MSG" ] || usage_land
|
|
38
38
|
|
|
39
|
-
|
|
39
|
+
# Both checks below judge the subject line, not the whole message. The length
|
|
40
|
+
# test used to read ${#COMMIT_MSG}, so any Conventional Commit carrying a body
|
|
41
|
+
# was rejected no matter how short its subject — the error text said "subject
|
|
42
|
+
# line" while the check measured the entire string.
|
|
43
|
+
COMMIT_SUBJECT="${COMMIT_MSG%%$'\n'*}"
|
|
44
|
+
|
|
45
|
+
if [[ ! "$COMMIT_SUBJECT" =~ $CONVENTIONAL_REGEX ]]; then
|
|
40
46
|
land_branch_deny "Commit message must follow Conventional Commits: <type>(<scope>): <subject>"
|
|
41
47
|
fi
|
|
42
48
|
|
|
43
|
-
if [ ${#
|
|
44
|
-
land_branch_deny "Commit subject line must be 72 characters or less"
|
|
49
|
+
if [ ${#COMMIT_SUBJECT} -gt 72 ]; then
|
|
50
|
+
land_branch_deny "Commit subject line must be 72 characters or less (got ${#COMMIT_SUBJECT})"
|
|
45
51
|
fi
|
|
46
52
|
|
|
47
53
|
# Block AI agent attribution (P1 — CONVENTIONS.md § Git Attribution)
|
|
Binary file
|
|
Binary file
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
# story: e37s05
|
|
3
|
+
# adapter-guard.sh — shared skill-name validation for every render adapter.
|
|
4
|
+
#
|
|
5
|
+
# Adapters interpolate the SkillIR `name` straight into a filesystem path
|
|
6
|
+
# (mkdir -p "$dir/$IR_NAME"). A name containing "/" or ".." therefore writes
|
|
7
|
+
# outside the destination directory.
|
|
8
|
+
#
|
|
9
|
+
# Ten adapters carried a private copy of this check (qwen_is_unsafe_skill_name
|
|
10
|
+
# and friends) and nine had none at all — and the nine unguarded ones were
|
|
11
|
+
# exactly the nine that never got a per-target test. One guard, sourced by every
|
|
12
|
+
# adapter, replaces both the duplication and the gap.
|
|
13
|
+
|
|
14
|
+
# Returns 0 (true) when the name must not be used as a path component.
|
|
15
|
+
bp_is_unsafe_skill_name() {
|
|
16
|
+
local name="${1-}"
|
|
17
|
+
[[ -z "$name" || "$name" == "null" || "$name" == *"/"* || "$name" == *".."* || "$name" == .* ]]
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
# Echoes the name when safe; otherwise reports on stderr and returns 1.
|
|
21
|
+
# Usage inside render_skill: name="$(bp_assert_safe_skill_name "$IR_NAME" adaptername)" || return 1
|
|
22
|
+
bp_assert_safe_skill_name() {
|
|
23
|
+
local name="${1-}"
|
|
24
|
+
local adapter="${2:-adapter}"
|
|
25
|
+
if bp_is_unsafe_skill_name "$name"; then
|
|
26
|
+
echo "${adapter}: refusing unsafe skill name: ${name:-<empty>}" >&2
|
|
27
|
+
return 1
|
|
28
|
+
fi
|
|
29
|
+
printf '%s' "$name"
|
|
30
|
+
}
|
|
@@ -19,6 +19,34 @@ GOLDEN_GATES=(
|
|
|
19
19
|
# first so a vacuous gate is caught before its verdict is trusted.
|
|
20
20
|
"g12-status-selftest:bash scripts/golden-g12-status-consistency.sh --self-test:false"
|
|
21
21
|
"g12-status-consistency:bash scripts/golden-g12-status-consistency.sh:false"
|
|
22
|
+
# Anti-vacuity for the target-contract seam: every contract declared in
|
|
23
|
+
# targets.yaml must have a real assertion, and an unknown contract must FAIL
|
|
24
|
+
# rather than SKIP+exit 0 (seven contracts were fail-open before this).
|
|
25
|
+
# Writing a test must be enough to make it run: G-13 fails if any
|
|
26
|
+
# scripts/test-*.sh is absent from this list.
|
|
27
|
+
"g13-test-orphans-selftest:bash scripts/golden-g13-test-orphans.sh --self-test:false"
|
|
28
|
+
"g13-test-orphans:bash scripts/golden-g13-test-orphans.sh:false"
|
|
29
|
+
# An adapter that defines render_skill() must be dispatched by targets.yaml,
|
|
30
|
+
# or sync renders nothing for it while its install still claims success.
|
|
31
|
+
# docs/WORKFLOWS.md is generated from specs/workflows/*.yaml; a diagram nothing
|
|
32
|
+
# regenerates is a diagram that lies (see specs/archive/assets/README.md).
|
|
33
|
+
"workflow-diagrams-fresh:bash scripts/generate-workflow-diagrams.sh --check:false"
|
|
34
|
+
"g14-adapter-dispatch-selftest:bash scripts/golden-g14-adapter-dispatch.sh --self-test:false"
|
|
35
|
+
"g14-adapter-dispatch:bash scripts/golden-g14-adapter-dispatch.sh:false"
|
|
36
|
+
"target-contracts:bash scripts/test-target-contracts.sh:false"
|
|
37
|
+
# Registry-driven replacements for the 25 hand-written per-target scripts.
|
|
38
|
+
"install-hub:bash scripts/test-install-hub.sh:false"
|
|
39
|
+
"adapter-render:bash scripts/test-adapter-render.sh:false"
|
|
40
|
+
"adapters:bash scripts/test-adapters.sh:false"
|
|
41
|
+
# Previously orphaned: present in scripts/ but reachable from no gate.
|
|
42
|
+
"tombstone-mechanism:bash scripts/test-tombstone-mechanism.sh:false"
|
|
43
|
+
"trace-strict:bash scripts/test-trace-strict.sh:false"
|
|
44
|
+
"trace-matrix-size:bash scripts/test-trace-matrix-size.sh:false"
|
|
45
|
+
"setup-no-pyyaml:bash scripts/test-setup-no-pyyaml.sh:false"
|
|
46
|
+
"install-distribute-only:bash scripts/test-install-distribute-only.sh:false"
|
|
47
|
+
"completeness-critic-scope:bash scripts/test-completeness-critic-scope.sh:false"
|
|
48
|
+
"epics-wiki-zero-stories:bash scripts/test-generate-epics-wiki-zero-stories.sh:false"
|
|
49
|
+
"golden-g11-worktree-venv:bash scripts/test-golden-g11-worktree-venv.sh:false"
|
|
22
50
|
"install-helpers:bash scripts/test-install-helpers.sh:false"
|
|
23
51
|
"import-boundaries:bash scripts/check-import-boundaries.sh:false"
|
|
24
52
|
"skill-catalog:bash scripts/validate-skill-catalog.sh:false"
|
|
@@ -107,10 +107,6 @@ install_agy() {
|
|
|
107
107
|
echo " NOTE: Antigravity uses ~/.gemini/antigravity-cli/skills/ — not .gemini/extensions/ (Gemini CLI)"
|
|
108
108
|
}
|
|
109
109
|
|
|
110
|
-
install_antigravity() {
|
|
111
|
-
install_agy
|
|
112
|
-
}
|
|
113
|
-
|
|
114
110
|
uninstall_agy() {
|
|
115
111
|
echo ""
|
|
116
112
|
echo "Antigravity CLI → removing management from $AGY_CONFIG_DIR/"
|
|
@@ -122,10 +118,6 @@ uninstall_agy() {
|
|
|
122
118
|
fi
|
|
123
119
|
}
|
|
124
120
|
|
|
125
|
-
uninstall_antigravity() {
|
|
126
|
-
uninstall_agy
|
|
127
|
-
}
|
|
128
|
-
|
|
129
121
|
# ── Codex CLI (e65s02) ───────────────────────────────────────────────────────
|
|
130
122
|
|
|
131
123
|
CODEX_CONFIG_DIR="$HOME/.codex"
|
|
@@ -54,49 +54,6 @@ render_gemini_command() {
|
|
|
54
54
|
} > "$GEMINI_COMMANDS/$IR_NAME.toml"
|
|
55
55
|
}
|
|
56
56
|
|
|
57
|
-
render_gemini_hooks_manifest() {
|
|
58
|
-
local hookdir="${GEMINI_HOOKS_DIR:-$GEMINI_EXT_DIR/hooks}"
|
|
59
|
-
mkdir -p "$hookdir"
|
|
60
|
-
cat > "$hookdir/hooks-manifest.json" <<'JSON'
|
|
61
|
-
{
|
|
62
|
-
"schema_version": 1,
|
|
63
|
-
"target": "gemini",
|
|
64
|
-
"config_path": "~/.gemini/settings.json",
|
|
65
|
-
"events_total": 11,
|
|
66
|
-
"events": [
|
|
67
|
-
"BeforeTool",
|
|
68
|
-
"AfterTool",
|
|
69
|
-
"BeforeAgent",
|
|
70
|
-
"AfterAgent",
|
|
71
|
-
"BeforeModel",
|
|
72
|
-
"BeforeToolSelection",
|
|
73
|
-
"AfterModel",
|
|
74
|
-
"SessionStart",
|
|
75
|
-
"SessionEnd",
|
|
76
|
-
"Notification",
|
|
77
|
-
"PreCompress"
|
|
78
|
-
],
|
|
79
|
-
"shipped_hooks": [
|
|
80
|
-
{
|
|
81
|
-
"event": "SessionStart",
|
|
82
|
-
"script": "session-start",
|
|
83
|
-
"matcher": "startup|clear|compact",
|
|
84
|
-
"wave": "a",
|
|
85
|
-
"status": "shipped"
|
|
86
|
-
},
|
|
87
|
-
{
|
|
88
|
-
"event": "BeforeTool",
|
|
89
|
-
"script": "before-tool-git-guard.sh",
|
|
90
|
-
"matcher": "run_shell_command",
|
|
91
|
-
"wave": "a",
|
|
92
|
-
"status": "template"
|
|
93
|
-
}
|
|
94
|
-
],
|
|
95
|
-
"polyglot_launcher": "run-hook.cmd"
|
|
96
|
-
}
|
|
97
|
-
JSON
|
|
98
|
-
}
|
|
99
|
-
|
|
100
57
|
render_pi_skill() {
|
|
101
58
|
mkdir -p "$PI_SKILLS/$IR_NAME"
|
|
102
59
|
{
|
|
@@ -82,6 +82,33 @@ assert_agy_skills_nonempty() {
|
|
|
82
82
|
return 1
|
|
83
83
|
}
|
|
84
84
|
|
|
85
|
+
# Generic hooks-manifest assertion for every target that ships one under
|
|
86
|
+
# scripts/hooks/<target>/. Before this existed, cline/codebuddy/codex/kilocode/
|
|
87
|
+
# qwen/trae/windsurf all declared <target>_hooks_manifest in targets.yaml and
|
|
88
|
+
# every one of them fell through run_contract's default branch to SKIP + exit 0
|
|
89
|
+
# — seven declared contracts that could never fail.
|
|
90
|
+
assert_hooks_manifest() {
|
|
91
|
+
local id="$1"
|
|
92
|
+
local contract="$2"
|
|
93
|
+
local target="${contract%_hooks_manifest}"
|
|
94
|
+
local manifest="scripts/hooks/${target}/hooks-manifest.json"
|
|
95
|
+
|
|
96
|
+
if [[ ! -f "$manifest" ]]; then
|
|
97
|
+
echo "FAIL $id:$contract — $manifest missing"
|
|
98
|
+
return 1
|
|
99
|
+
fi
|
|
100
|
+
# verify-install.sh sources this file without lib/python-env.sh, so resolve an
|
|
101
|
+
# interpreter locally rather than relying on $PYTHON being set.
|
|
102
|
+
local py="${PYTHON:-}"
|
|
103
|
+
[[ -n "$py" ]] || py="$(command -v python3 || command -v python || true)"
|
|
104
|
+
if [[ -n "$py" ]] && ! "$py" -c "import json; json.load(open('$manifest'))" 2>/dev/null; then
|
|
105
|
+
echo "FAIL $id:$contract — $manifest is not valid JSON"
|
|
106
|
+
return 1
|
|
107
|
+
fi
|
|
108
|
+
echo "PASS $id:$contract"
|
|
109
|
+
return 0
|
|
110
|
+
}
|
|
111
|
+
|
|
85
112
|
run_contract() {
|
|
86
113
|
local id="$1"
|
|
87
114
|
local contract="$2"
|
|
@@ -90,10 +117,19 @@ run_contract() {
|
|
|
90
117
|
symlink_claude_md) assert_symlink_claude_md "$id" ;;
|
|
91
118
|
cursor_rules_nonempty) assert_cursor_rules_nonempty "$id" ;;
|
|
92
119
|
gemini_ext_exists) assert_gemini_ext_exists "$id" ;;
|
|
120
|
+
# gemini has its own adapter-level validator; keep it ahead of the generic
|
|
121
|
+
# pattern below so the more specific check wins.
|
|
93
122
|
gemini_hooks_manifest) assert_gemini_hooks_manifest "$id" ;;
|
|
123
|
+
*_hooks_manifest) assert_hooks_manifest "$id" "$contract" ;;
|
|
94
124
|
pi_skills_nonempty) assert_pi_skills_nonempty "$id" ;;
|
|
95
125
|
agy_skills_nonempty) assert_agy_skills_nonempty "$id" ;;
|
|
96
126
|
aider_bridge) assert_aider_bridge "$id" ;;
|
|
97
|
-
|
|
127
|
+
# A contract declared in targets.yaml with no assertion behind it is a
|
|
128
|
+
# broken contract, not a no-op. Failing here is what makes the registry an
|
|
129
|
+
# enforced interface rather than documentation.
|
|
130
|
+
*)
|
|
131
|
+
echo "FAIL $id:$contract — unknown contract (no assertion implemented)"
|
|
132
|
+
return 1
|
|
133
|
+
;;
|
|
98
134
|
esac
|
|
99
135
|
}
|
package/scripts/targets.yaml
CHANGED
|
@@ -47,7 +47,9 @@ targets:
|
|
|
47
47
|
- id: cline
|
|
48
48
|
name: Cline
|
|
49
49
|
tier: default_on
|
|
50
|
-
skill:
|
|
50
|
+
skill:
|
|
51
|
+
adapter: cline
|
|
52
|
+
output: .cline/skills
|
|
51
53
|
context:
|
|
52
54
|
adapter: cline
|
|
53
55
|
mode: native
|
|
@@ -164,7 +166,9 @@ targets:
|
|
|
164
166
|
# story: e68s02
|
|
165
167
|
name: Qwen (Alibaba)
|
|
166
168
|
tier: opt_in
|
|
167
|
-
skill:
|
|
169
|
+
skill:
|
|
170
|
+
adapter: qwen
|
|
171
|
+
output: .qwen/skills
|
|
168
172
|
context:
|
|
169
173
|
adapter: qwen
|
|
170
174
|
mode: symlink
|
|
@@ -172,17 +176,6 @@ targets:
|
|
|
172
176
|
contracts:
|
|
173
177
|
- agents_md_exists
|
|
174
178
|
- qwen_hooks_manifest
|
|
175
|
-
name: Kilocode
|
|
176
|
-
tier: opt_in
|
|
177
|
-
skill:
|
|
178
|
-
adapter: kilocode
|
|
179
|
-
output: .kilocode/rules
|
|
180
|
-
context:
|
|
181
|
-
adapter: kilocode
|
|
182
|
-
mode: copy
|
|
183
|
-
file: AGENTS.md
|
|
184
|
-
contracts:
|
|
185
|
-
- agents_md_exists
|
|
186
179
|
|
|
187
180
|
# Wave D (e37s12)
|
|
188
181
|
- id: continue
|
|
@@ -303,3 +296,32 @@ targets:
|
|
|
303
296
|
file: AGENTS.md
|
|
304
297
|
contracts:
|
|
305
298
|
- windsurf_hooks_manifest
|
|
299
|
+
|
|
300
|
+
# Registered by BUG-2026-07-26-null-skill-adapters-install-nothing: both ship
|
|
301
|
+
# a render_skill() adapter and an install function, but had no registry row,
|
|
302
|
+
# so srp-engine never rendered for them and install found nothing.
|
|
303
|
+
- id: opencode
|
|
304
|
+
name: OpenCode
|
|
305
|
+
tier: opt_in
|
|
306
|
+
skill:
|
|
307
|
+
adapter: opencode
|
|
308
|
+
output: .opencode/skills
|
|
309
|
+
context:
|
|
310
|
+
adapter: opencode
|
|
311
|
+
mode: symlink
|
|
312
|
+
file: AGENTS.md
|
|
313
|
+
contracts:
|
|
314
|
+
- agents_md_exists
|
|
315
|
+
|
|
316
|
+
- id: copilot
|
|
317
|
+
name: Copilot CLI
|
|
318
|
+
tier: opt_in
|
|
319
|
+
skill:
|
|
320
|
+
adapter: copilot
|
|
321
|
+
output: .copilot/skills
|
|
322
|
+
context:
|
|
323
|
+
adapter: copilot
|
|
324
|
+
mode: copy
|
|
325
|
+
file: AGENTS.md
|
|
326
|
+
contracts:
|
|
327
|
+
- agents_md_exists
|