bigpowers 2.83.3 → 2.84.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/.codebuddy/skills/align-grid/SKILL.md +110 -0
- package/.codebuddy/skills/assess-impact/SKILL.md +91 -0
- package/.codebuddy/skills/audit-code/SKILL.md +187 -0
- package/.codebuddy/skills/audit-plan/SKILL.md +89 -0
- package/.codebuddy/skills/build-epic/SKILL.md +105 -0
- package/.codebuddy/skills/change-request/SKILL.md +121 -0
- package/.codebuddy/skills/commit-message/SKILL.md +140 -0
- package/.codebuddy/skills/compose-workflow/SKILL.md +82 -0
- package/.codebuddy/skills/context7-mcp/SKILL.md +55 -0
- package/.codebuddy/skills/craft-skill/SKILL.md +179 -0
- package/.codebuddy/skills/deepen-architecture/SKILL.md +260 -0
- package/.codebuddy/skills/define-language/SKILL.md +80 -0
- package/.codebuddy/skills/define-success/SKILL.md +65 -0
- package/.codebuddy/skills/delegate-task/SKILL.md +91 -0
- package/.codebuddy/skills/deploy/SKILL.md +198 -0
- package/.codebuddy/skills/design-interface/SKILL.md +97 -0
- package/.codebuddy/skills/develop-tdd/SKILL.md +406 -0
- package/.codebuddy/skills/diagnose-root/SKILL.md +24 -0
- package/.codebuddy/skills/diagnose-stall/SKILL.md +54 -0
- package/.codebuddy/skills/dispatch-agents/SKILL.md +118 -0
- package/.codebuddy/skills/edit-document/SKILL.md +23 -0
- package/.codebuddy/skills/elaborate-spec/SKILL.md +101 -0
- package/.codebuddy/skills/enforce-first/SKILL.md +32 -0
- package/.codebuddy/skills/evolve-skill/SKILL.md +55 -0
- package/.codebuddy/skills/execute-plan/SKILL.md +61 -0
- package/.codebuddy/skills/extract-design/SKILL.md +132 -0
- package/.codebuddy/skills/find-way/SKILL.md +191 -0
- package/.codebuddy/skills/fix-bug/SKILL.md +67 -0
- package/.codebuddy/skills/gate-trace/SKILL.md +88 -0
- package/.codebuddy/skills/generate-allure-report/SKILL.md +285 -0
- package/.codebuddy/skills/grill-me/SKILL.md +96 -0
- package/.codebuddy/skills/grill-with-docs/SKILL.md +41 -0
- package/.codebuddy/skills/guard-git/SKILL.md +231 -0
- package/.codebuddy/skills/harden-vps/SKILL.md +288 -0
- package/.codebuddy/skills/hook-commits/SKILL.md +94 -0
- package/.codebuddy/skills/inspect-quality/SKILL.md +106 -0
- package/.codebuddy/skills/investigate-bug/SKILL.md +127 -0
- package/.codebuddy/skills/kickoff-branch/SKILL.md +143 -0
- package/.codebuddy/skills/maintain-wiki/SKILL.md +64 -0
- package/.codebuddy/skills/map-codebase/SKILL.md +71 -0
- package/.codebuddy/skills/migrate-spec/SKILL.md +862 -0
- package/.codebuddy/skills/model-domain/SKILL.md +232 -0
- package/.codebuddy/skills/orchestrate-project/SKILL.md +174 -0
- package/.codebuddy/skills/organize-workspace/SKILL.md +164 -0
- package/.codebuddy/skills/plan-refactor/SKILL.md +87 -0
- package/.codebuddy/skills/plan-release/SKILL.md +145 -0
- package/.codebuddy/skills/plan-tests/SKILL.md +75 -0
- package/.codebuddy/skills/plan-work/SKILL.md +260 -0
- package/.codebuddy/skills/publish-package/SKILL.md +328 -0
- package/.codebuddy/skills/quick-fix/SKILL.md +114 -0
- package/.codebuddy/skills/release-branch/SKILL.md +298 -0
- package/.codebuddy/skills/request-review/SKILL.md +112 -0
- package/.codebuddy/skills/research-first/SKILL.md +87 -0
- package/.codebuddy/skills/reset-baseline/SKILL.md +21 -0
- package/.codebuddy/skills/respond-review/SKILL.md +71 -0
- package/.codebuddy/skills/run-benchmark/SKILL.md +85 -0
- package/.codebuddy/skills/run-evals/SKILL.md +80 -0
- package/.codebuddy/skills/run-planning/SKILL.md +101 -0
- package/.codebuddy/skills/scope-work/SKILL.md +63 -0
- package/.codebuddy/skills/search-skills/SKILL.md +73 -0
- package/.codebuddy/skills/security-review/SKILL.md +384 -0
- package/.codebuddy/skills/seed-conventions/SKILL.md +285 -0
- package/.codebuddy/skills/session-state/SKILL.md +146 -0
- package/.codebuddy/skills/setup-environment/SKILL.md +39 -0
- package/.codebuddy/skills/simulate-agents/SKILL.md +26 -0
- package/.codebuddy/skills/slice-tasks/SKILL.md +68 -0
- package/.codebuddy/skills/smoke-test/SKILL.md +242 -0
- package/.codebuddy/skills/spike-prototype/SKILL.md +95 -0
- package/.codebuddy/skills/stocktake-skills/SKILL.md +72 -0
- package/.codebuddy/skills/survey-context/SKILL.md +135 -0
- package/.codebuddy/skills/terse-mode/SKILL.md +42 -0
- package/.codebuddy/skills/trace-requirement/SKILL.md +69 -0
- package/.codebuddy/skills/using-bigpowers/SKILL.md +111 -0
- package/.codebuddy/skills/validate-contracts/SKILL.md +309 -0
- package/.codebuddy/skills/validate-fix/SKILL.md +106 -0
- package/.codebuddy/skills/verify-work/SKILL.md +191 -0
- package/.codebuddy/skills/visual-dashboard/SKILL.md +50 -0
- package/.codebuddy/skills/wire-ci/SKILL.md +375 -0
- package/.codebuddy/skills/wire-observability/SKILL.md +97 -0
- package/.codebuddy/skills/write-document/SKILL.md +255 -0
- package/.codex/skills/align-grid/SKILL.md +110 -0
- package/.codex/skills/assess-impact/SKILL.md +91 -0
- package/.codex/skills/audit-code/SKILL.md +187 -0
- package/.codex/skills/audit-plan/SKILL.md +89 -0
- package/.codex/skills/build-epic/SKILL.md +105 -0
- package/.codex/skills/change-request/SKILL.md +121 -0
- package/.codex/skills/commit-message/SKILL.md +140 -0
- package/.codex/skills/compose-workflow/SKILL.md +82 -0
- package/.codex/skills/context7-mcp/SKILL.md +55 -0
- package/.codex/skills/craft-skill/SKILL.md +179 -0
- package/.codex/skills/deepen-architecture/SKILL.md +260 -0
- package/.codex/skills/define-language/SKILL.md +80 -0
- package/.codex/skills/define-success/SKILL.md +65 -0
- package/.codex/skills/delegate-task/SKILL.md +91 -0
- package/.codex/skills/deploy/SKILL.md +198 -0
- package/.codex/skills/design-interface/SKILL.md +97 -0
- package/.codex/skills/develop-tdd/SKILL.md +406 -0
- package/.codex/skills/diagnose-root/SKILL.md +24 -0
- package/.codex/skills/diagnose-stall/SKILL.md +54 -0
- package/.codex/skills/dispatch-agents/SKILL.md +118 -0
- package/.codex/skills/edit-document/SKILL.md +23 -0
- package/.codex/skills/elaborate-spec/SKILL.md +101 -0
- package/.codex/skills/enforce-first/SKILL.md +32 -0
- package/.codex/skills/evolve-skill/SKILL.md +55 -0
- package/.codex/skills/execute-plan/SKILL.md +61 -0
- package/.codex/skills/extract-design/SKILL.md +132 -0
- package/.codex/skills/find-way/SKILL.md +191 -0
- package/.codex/skills/fix-bug/SKILL.md +67 -0
- package/.codex/skills/gate-trace/SKILL.md +88 -0
- package/.codex/skills/generate-allure-report/SKILL.md +285 -0
- package/.codex/skills/grill-me/SKILL.md +96 -0
- package/.codex/skills/grill-with-docs/SKILL.md +41 -0
- package/.codex/skills/guard-git/SKILL.md +231 -0
- package/.codex/skills/harden-vps/SKILL.md +288 -0
- package/.codex/skills/hook-commits/SKILL.md +94 -0
- package/.codex/skills/inspect-quality/SKILL.md +106 -0
- package/.codex/skills/investigate-bug/SKILL.md +127 -0
- package/.codex/skills/kickoff-branch/SKILL.md +143 -0
- package/.codex/skills/maintain-wiki/SKILL.md +64 -0
- package/.codex/skills/map-codebase/SKILL.md +71 -0
- package/.codex/skills/migrate-spec/SKILL.md +862 -0
- package/.codex/skills/model-domain/SKILL.md +232 -0
- package/.codex/skills/orchestrate-project/SKILL.md +174 -0
- package/.codex/skills/organize-workspace/SKILL.md +164 -0
- package/.codex/skills/plan-refactor/SKILL.md +87 -0
- package/.codex/skills/plan-release/SKILL.md +145 -0
- package/.codex/skills/plan-tests/SKILL.md +75 -0
- package/.codex/skills/plan-work/SKILL.md +260 -0
- package/.codex/skills/publish-package/SKILL.md +328 -0
- package/.codex/skills/quick-fix/SKILL.md +114 -0
- package/.codex/skills/release-branch/SKILL.md +298 -0
- package/.codex/skills/request-review/SKILL.md +112 -0
- package/.codex/skills/research-first/SKILL.md +87 -0
- package/.codex/skills/reset-baseline/SKILL.md +21 -0
- package/.codex/skills/respond-review/SKILL.md +71 -0
- package/.codex/skills/run-benchmark/SKILL.md +85 -0
- package/.codex/skills/run-evals/SKILL.md +80 -0
- package/.codex/skills/run-planning/SKILL.md +101 -0
- package/.codex/skills/scope-work/SKILL.md +63 -0
- package/.codex/skills/search-skills/SKILL.md +73 -0
- package/.codex/skills/security-review/SKILL.md +384 -0
- package/.codex/skills/seed-conventions/SKILL.md +285 -0
- package/.codex/skills/session-state/SKILL.md +146 -0
- package/.codex/skills/setup-environment/SKILL.md +39 -0
- package/.codex/skills/simulate-agents/SKILL.md +26 -0
- package/.codex/skills/slice-tasks/SKILL.md +68 -0
- package/.codex/skills/smoke-test/SKILL.md +242 -0
- package/.codex/skills/spike-prototype/SKILL.md +95 -0
- package/.codex/skills/stocktake-skills/SKILL.md +72 -0
- package/.codex/skills/survey-context/SKILL.md +135 -0
- package/.codex/skills/terse-mode/SKILL.md +42 -0
- package/.codex/skills/trace-requirement/SKILL.md +69 -0
- package/.codex/skills/using-bigpowers/SKILL.md +111 -0
- package/.codex/skills/validate-contracts/SKILL.md +309 -0
- package/.codex/skills/validate-fix/SKILL.md +106 -0
- package/.codex/skills/verify-work/SKILL.md +191 -0
- package/.codex/skills/visual-dashboard/SKILL.md +50 -0
- package/.codex/skills/wire-ci/SKILL.md +375 -0
- package/.codex/skills/wire-observability/SKILL.md +97 -0
- package/.codex/skills/write-document/SKILL.md +255 -0
- package/.kilocode/rules/align-grid.md +110 -0
- package/.kilocode/rules/assess-impact.md +91 -0
- package/.kilocode/rules/audit-code.md +187 -0
- package/.kilocode/rules/audit-plan.md +89 -0
- package/.kilocode/rules/build-epic.md +105 -0
- package/.kilocode/rules/change-request.md +121 -0
- package/.kilocode/rules/commit-message.md +140 -0
- package/.kilocode/rules/compose-workflow.md +82 -0
- package/.kilocode/rules/context7-mcp.md +55 -0
- package/.kilocode/rules/craft-skill.md +179 -0
- package/.kilocode/rules/deepen-architecture.md +260 -0
- package/.kilocode/rules/define-language.md +80 -0
- package/.kilocode/rules/define-success.md +65 -0
- package/.kilocode/rules/delegate-task.md +91 -0
- package/.kilocode/rules/deploy.md +198 -0
- package/.kilocode/rules/design-interface.md +97 -0
- package/.kilocode/rules/develop-tdd.md +406 -0
- package/.kilocode/rules/diagnose-root.md +24 -0
- package/.kilocode/rules/diagnose-stall.md +54 -0
- package/.kilocode/rules/dispatch-agents.md +118 -0
- package/.kilocode/rules/edit-document.md +23 -0
- package/.kilocode/rules/elaborate-spec.md +101 -0
- package/.kilocode/rules/enforce-first.md +32 -0
- package/.kilocode/rules/evolve-skill.md +55 -0
- package/.kilocode/rules/execute-plan.md +61 -0
- package/.kilocode/rules/extract-design.md +132 -0
- package/.kilocode/rules/find-way.md +191 -0
- package/.kilocode/rules/fix-bug.md +67 -0
- package/.kilocode/rules/gate-trace.md +88 -0
- package/.kilocode/rules/generate-allure-report.md +285 -0
- package/.kilocode/rules/grill-me.md +96 -0
- package/.kilocode/rules/grill-with-docs.md +41 -0
- package/.kilocode/rules/guard-git.md +231 -0
- package/.kilocode/rules/harden-vps.md +288 -0
- package/.kilocode/rules/hook-commits.md +94 -0
- package/.kilocode/rules/inspect-quality.md +106 -0
- package/.kilocode/rules/investigate-bug.md +127 -0
- package/.kilocode/rules/kickoff-branch.md +143 -0
- package/.kilocode/rules/maintain-wiki.md +64 -0
- package/.kilocode/rules/map-codebase.md +71 -0
- package/.kilocode/rules/migrate-spec.md +862 -0
- package/.kilocode/rules/model-domain.md +232 -0
- package/.kilocode/rules/orchestrate-project.md +174 -0
- package/.kilocode/rules/organize-workspace.md +164 -0
- package/.kilocode/rules/plan-refactor.md +87 -0
- package/.kilocode/rules/plan-release.md +145 -0
- package/.kilocode/rules/plan-tests.md +75 -0
- package/.kilocode/rules/plan-work.md +260 -0
- package/.kilocode/rules/publish-package.md +328 -0
- package/.kilocode/rules/quick-fix.md +114 -0
- package/.kilocode/rules/release-branch.md +298 -0
- package/.kilocode/rules/request-review.md +112 -0
- package/.kilocode/rules/research-first.md +87 -0
- package/.kilocode/rules/reset-baseline.md +21 -0
- package/.kilocode/rules/respond-review.md +71 -0
- package/.kilocode/rules/run-benchmark.md +85 -0
- package/.kilocode/rules/run-evals.md +80 -0
- package/.kilocode/rules/run-planning.md +101 -0
- package/.kilocode/rules/scope-work.md +63 -0
- package/.kilocode/rules/search-skills.md +73 -0
- package/.kilocode/rules/security-review.md +384 -0
- package/.kilocode/rules/seed-conventions.md +285 -0
- package/.kilocode/rules/session-state.md +146 -0
- package/.kilocode/rules/setup-environment.md +39 -0
- package/.kilocode/rules/simulate-agents.md +26 -0
- package/.kilocode/rules/slice-tasks.md +68 -0
- package/.kilocode/rules/smoke-test.md +242 -0
- package/.kilocode/rules/spike-prototype.md +95 -0
- package/.kilocode/rules/stocktake-skills.md +72 -0
- package/.kilocode/rules/survey-context.md +135 -0
- package/.kilocode/rules/terse-mode.md +42 -0
- package/.kilocode/rules/trace-requirement.md +69 -0
- package/.kilocode/rules/using-bigpowers.md +111 -0
- package/.kilocode/rules/validate-contracts.md +309 -0
- package/.kilocode/rules/validate-fix.md +106 -0
- package/.kilocode/rules/verify-work.md +191 -0
- package/.kilocode/rules/visual-dashboard.md +50 -0
- package/.kilocode/rules/wire-ci.md +375 -0
- package/.kilocode/rules/wire-observability.md +97 -0
- package/.kilocode/rules/write-document.md +255 -0
- package/.pi/package.json +1 -1
- package/.trae/skills/align-grid/SKILL.md +110 -0
- package/.trae/skills/assess-impact/SKILL.md +91 -0
- package/.trae/skills/audit-code/SKILL.md +187 -0
- package/.trae/skills/audit-plan/SKILL.md +89 -0
- package/.trae/skills/build-epic/SKILL.md +105 -0
- package/.trae/skills/change-request/SKILL.md +121 -0
- package/.trae/skills/commit-message/SKILL.md +140 -0
- package/.trae/skills/compose-workflow/SKILL.md +82 -0
- package/.trae/skills/context7-mcp/SKILL.md +55 -0
- package/.trae/skills/craft-skill/SKILL.md +179 -0
- package/.trae/skills/deepen-architecture/SKILL.md +260 -0
- package/.trae/skills/define-language/SKILL.md +80 -0
- package/.trae/skills/define-success/SKILL.md +65 -0
- package/.trae/skills/delegate-task/SKILL.md +91 -0
- package/.trae/skills/deploy/SKILL.md +198 -0
- package/.trae/skills/design-interface/SKILL.md +97 -0
- package/.trae/skills/develop-tdd/SKILL.md +406 -0
- package/.trae/skills/diagnose-root/SKILL.md +24 -0
- package/.trae/skills/diagnose-stall/SKILL.md +54 -0
- package/.trae/skills/dispatch-agents/SKILL.md +118 -0
- package/.trae/skills/edit-document/SKILL.md +23 -0
- package/.trae/skills/elaborate-spec/SKILL.md +101 -0
- package/.trae/skills/enforce-first/SKILL.md +32 -0
- package/.trae/skills/evolve-skill/SKILL.md +55 -0
- package/.trae/skills/execute-plan/SKILL.md +61 -0
- package/.trae/skills/extract-design/SKILL.md +132 -0
- package/.trae/skills/find-way/SKILL.md +191 -0
- package/.trae/skills/fix-bug/SKILL.md +67 -0
- package/.trae/skills/gate-trace/SKILL.md +88 -0
- package/.trae/skills/generate-allure-report/SKILL.md +285 -0
- package/.trae/skills/grill-me/SKILL.md +96 -0
- package/.trae/skills/grill-with-docs/SKILL.md +41 -0
- package/.trae/skills/guard-git/SKILL.md +231 -0
- package/.trae/skills/harden-vps/SKILL.md +288 -0
- package/.trae/skills/hook-commits/SKILL.md +94 -0
- package/.trae/skills/inspect-quality/SKILL.md +106 -0
- package/.trae/skills/investigate-bug/SKILL.md +127 -0
- package/.trae/skills/kickoff-branch/SKILL.md +143 -0
- package/.trae/skills/maintain-wiki/SKILL.md +64 -0
- package/.trae/skills/map-codebase/SKILL.md +71 -0
- package/.trae/skills/migrate-spec/SKILL.md +862 -0
- package/.trae/skills/model-domain/SKILL.md +232 -0
- package/.trae/skills/orchestrate-project/SKILL.md +174 -0
- package/.trae/skills/organize-workspace/SKILL.md +164 -0
- package/.trae/skills/plan-refactor/SKILL.md +87 -0
- package/.trae/skills/plan-release/SKILL.md +145 -0
- package/.trae/skills/plan-tests/SKILL.md +75 -0
- package/.trae/skills/plan-work/SKILL.md +260 -0
- package/.trae/skills/publish-package/SKILL.md +328 -0
- package/.trae/skills/quick-fix/SKILL.md +114 -0
- package/.trae/skills/release-branch/SKILL.md +298 -0
- package/.trae/skills/request-review/SKILL.md +112 -0
- package/.trae/skills/research-first/SKILL.md +87 -0
- package/.trae/skills/reset-baseline/SKILL.md +21 -0
- package/.trae/skills/respond-review/SKILL.md +71 -0
- package/.trae/skills/run-benchmark/SKILL.md +85 -0
- package/.trae/skills/run-evals/SKILL.md +80 -0
- package/.trae/skills/run-planning/SKILL.md +101 -0
- package/.trae/skills/scope-work/SKILL.md +63 -0
- package/.trae/skills/search-skills/SKILL.md +73 -0
- package/.trae/skills/security-review/SKILL.md +384 -0
- package/.trae/skills/seed-conventions/SKILL.md +285 -0
- package/.trae/skills/session-state/SKILL.md +146 -0
- package/.trae/skills/setup-environment/SKILL.md +39 -0
- package/.trae/skills/simulate-agents/SKILL.md +26 -0
- package/.trae/skills/slice-tasks/SKILL.md +68 -0
- package/.trae/skills/smoke-test/SKILL.md +242 -0
- package/.trae/skills/spike-prototype/SKILL.md +95 -0
- package/.trae/skills/stocktake-skills/SKILL.md +72 -0
- package/.trae/skills/survey-context/SKILL.md +135 -0
- package/.trae/skills/terse-mode/SKILL.md +42 -0
- package/.trae/skills/trace-requirement/SKILL.md +69 -0
- package/.trae/skills/using-bigpowers/SKILL.md +111 -0
- package/.trae/skills/validate-contracts/SKILL.md +309 -0
- package/.trae/skills/validate-fix/SKILL.md +106 -0
- package/.trae/skills/verify-work/SKILL.md +191 -0
- package/.trae/skills/visual-dashboard/SKILL.md +50 -0
- package/.trae/skills/wire-ci/SKILL.md +375 -0
- package/.trae/skills/wire-observability/SKILL.md +97 -0
- package/.trae/skills/write-document/SKILL.md +255 -0
- package/.windsurf/rules/align-grid.md +110 -0
- package/.windsurf/rules/assess-impact.md +91 -0
- package/.windsurf/rules/audit-code.md +187 -0
- package/.windsurf/rules/audit-plan.md +89 -0
- package/.windsurf/rules/build-epic.md +105 -0
- package/.windsurf/rules/change-request.md +121 -0
- package/.windsurf/rules/commit-message.md +140 -0
- package/.windsurf/rules/compose-workflow.md +82 -0
- package/.windsurf/rules/context7-mcp.md +55 -0
- package/.windsurf/rules/craft-skill.md +179 -0
- package/.windsurf/rules/deepen-architecture.md +260 -0
- package/.windsurf/rules/define-language.md +80 -0
- package/.windsurf/rules/define-success.md +65 -0
- package/.windsurf/rules/delegate-task.md +91 -0
- package/.windsurf/rules/deploy.md +198 -0
- package/.windsurf/rules/design-interface.md +97 -0
- package/.windsurf/rules/develop-tdd.md +406 -0
- package/.windsurf/rules/diagnose-root.md +24 -0
- package/.windsurf/rules/diagnose-stall.md +54 -0
- package/.windsurf/rules/dispatch-agents.md +118 -0
- package/.windsurf/rules/edit-document.md +23 -0
- package/.windsurf/rules/elaborate-spec.md +101 -0
- package/.windsurf/rules/enforce-first.md +32 -0
- package/.windsurf/rules/evolve-skill.md +55 -0
- package/.windsurf/rules/execute-plan.md +61 -0
- package/.windsurf/rules/extract-design.md +132 -0
- package/.windsurf/rules/find-way.md +191 -0
- package/.windsurf/rules/fix-bug.md +67 -0
- package/.windsurf/rules/gate-trace.md +88 -0
- package/.windsurf/rules/generate-allure-report.md +285 -0
- package/.windsurf/rules/grill-me.md +96 -0
- package/.windsurf/rules/grill-with-docs.md +41 -0
- package/.windsurf/rules/guard-git.md +231 -0
- package/.windsurf/rules/harden-vps.md +288 -0
- package/.windsurf/rules/hook-commits.md +94 -0
- package/.windsurf/rules/inspect-quality.md +106 -0
- package/.windsurf/rules/investigate-bug.md +127 -0
- package/.windsurf/rules/kickoff-branch.md +143 -0
- package/.windsurf/rules/maintain-wiki.md +64 -0
- package/.windsurf/rules/map-codebase.md +71 -0
- package/.windsurf/rules/migrate-spec.md +862 -0
- package/.windsurf/rules/model-domain.md +232 -0
- package/.windsurf/rules/orchestrate-project.md +174 -0
- package/.windsurf/rules/organize-workspace.md +164 -0
- package/.windsurf/rules/plan-refactor.md +87 -0
- package/.windsurf/rules/plan-release.md +145 -0
- package/.windsurf/rules/plan-tests.md +75 -0
- package/.windsurf/rules/plan-work.md +260 -0
- package/.windsurf/rules/publish-package.md +328 -0
- package/.windsurf/rules/quick-fix.md +114 -0
- package/.windsurf/rules/release-branch.md +298 -0
- package/.windsurf/rules/request-review.md +112 -0
- package/.windsurf/rules/research-first.md +87 -0
- package/.windsurf/rules/reset-baseline.md +21 -0
- package/.windsurf/rules/respond-review.md +71 -0
- package/.windsurf/rules/run-benchmark.md +85 -0
- package/.windsurf/rules/run-evals.md +80 -0
- package/.windsurf/rules/run-planning.md +101 -0
- package/.windsurf/rules/scope-work.md +63 -0
- package/.windsurf/rules/search-skills.md +73 -0
- package/.windsurf/rules/security-review.md +384 -0
- package/.windsurf/rules/seed-conventions.md +285 -0
- package/.windsurf/rules/session-state.md +146 -0
- package/.windsurf/rules/setup-environment.md +39 -0
- package/.windsurf/rules/simulate-agents.md +26 -0
- package/.windsurf/rules/slice-tasks.md +68 -0
- package/.windsurf/rules/smoke-test.md +242 -0
- package/.windsurf/rules/spike-prototype.md +95 -0
- package/.windsurf/rules/stocktake-skills.md +72 -0
- package/.windsurf/rules/survey-context.md +135 -0
- package/.windsurf/rules/terse-mode.md +42 -0
- package/.windsurf/rules/trace-requirement.md +69 -0
- package/.windsurf/rules/using-bigpowers.md +111 -0
- package/.windsurf/rules/validate-contracts.md +309 -0
- package/.windsurf/rules/validate-fix.md +106 -0
- package/.windsurf/rules/verify-work.md +191 -0
- package/.windsurf/rules/visual-dashboard.md +50 -0
- package/.windsurf/rules/wire-ci.md +375 -0
- package/.windsurf/rules/wire-observability.md +97 -0
- package/.windsurf/rules/write-document.md +255 -0
- package/CHANGELOG.md +37 -0
- package/CONVENTIONS.md +22 -0
- package/bin/setup.js +35 -7
- package/instructions +1 -0
- package/package.json +1 -1
- package/scripts/adapters/cline.sh +53 -3
- package/scripts/adapters/codebuddy.sh +58 -0
- package/scripts/adapters/codex.sh +58 -0
- package/scripts/adapters/copilot.sh +58 -0
- package/scripts/adapters/kilocode.sh +44 -3
- package/scripts/adapters/opencode.sh +58 -0
- package/scripts/adapters/qwen.sh +53 -1
- package/scripts/adapters/trae.sh +58 -0
- package/scripts/adapters/windsurf.sh +52 -0
- package/scripts/bp-yaml-set.sh +2 -0
- package/scripts/generate-wave-b-hub.py +31 -0
- package/scripts/hooks/cline/HOOKS.md +16 -0
- package/scripts/hooks/cline/hooks-manifest.json +12 -0
- package/scripts/hooks/cline/plugin/guard-git-plugin.ts +16 -0
- package/scripts/hooks/codebuddy/HOOKS.md +24 -0
- package/scripts/hooks/codebuddy/hooks-manifest.json +20 -0
- package/scripts/hooks/codebuddy/pre-tool-git-guard.sh +22 -0
- package/scripts/hooks/codebuddy/settings.example.json +16 -0
- package/scripts/hooks/codex/HOOKS.md +21 -0
- package/scripts/hooks/codex/hooks-manifest.json +17 -0
- package/scripts/hooks/codex/pre-tool-git-guard.sh +22 -0
- package/scripts/hooks/codex/settings.example.json +16 -0
- package/scripts/hooks/kilocode/HOOKS.md +16 -0
- package/scripts/hooks/kilocode/hooks-manifest.json +12 -0
- package/scripts/hooks/kilocode/plugin/guard-git-plugin.ts +16 -0
- package/scripts/hooks/qwen/HOOKS.md +27 -0
- package/scripts/hooks/qwen/hooks-manifest.json +23 -0
- package/scripts/hooks/qwen/pre-tool-git-guard.sh +22 -0
- package/scripts/hooks/qwen/settings.example.json +16 -0
- package/scripts/hooks/trae/HOOKS.md +17 -0
- package/scripts/hooks/trae/hooks-manifest.json +13 -0
- package/scripts/hooks/trae/pre-tool-git-guard.sh +22 -0
- package/scripts/hooks/trae/settings.example.json +16 -0
- package/scripts/hooks/windsurf/HOOKS.md +23 -0
- package/scripts/hooks/windsurf/hooks-manifest.json +19 -0
- package/scripts/hooks/windsurf/pre-tool-git-guard.sh +22 -0
- package/scripts/hooks/windsurf/settings.example.json +16 -0
- package/scripts/install.sh +33 -373
- 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/context-wire.sh +5 -0
- package/scripts/lib/install-grep.sh +18 -0
- package/scripts/lib/install-helpers.js +139 -2
- package/scripts/lib/install-targets-a.sh +227 -0
- package/scripts/lib/install-targets-b.sh +226 -0
- package/scripts/lib/install-targets-c.sh +128 -0
- package/scripts/lib/install-targets-d.sh +179 -0
- package/scripts/lib/srp-engine.py +2 -70
- package/scripts/lib/srp_engine_links.py +59 -0
- package/scripts/lib/wave_b_hub_codegen_helpers.py +273 -0
- package/scripts/lib/wave_b_hub_codegen_install.py +134 -0
- package/scripts/lib/wave_b_hub_config.py +130 -0
- package/scripts/lib/wave_b_hub_patch.py +213 -0
- package/scripts/record-cycle-time.sh +3 -14
- package/scripts/targets.yaml +75 -2
- package/scripts/test-agy-hub.sh +11 -10
- package/scripts/test-cline-adapter.sh +55 -0
- package/scripts/test-cline-hub.sh +48 -0
- package/scripts/test-codebuddy-adapter.sh +63 -0
- package/scripts/test-codebuddy-hub.sh +49 -0
- package/scripts/test-codex-adapter.sh +63 -0
- package/scripts/test-codex-hub.sh +49 -0
- package/scripts/test-copilot-adapter.sh +47 -0
- package/scripts/test-copilot-hub.sh +43 -0
- package/scripts/test-gemini-hub.sh +10 -9
- package/scripts/test-hermes-hub.sh +7 -6
- package/scripts/test-install-distribute-only.sh +3 -0
- package/scripts/test-install-helpers.js +9 -3
- package/scripts/test-kilocode-adapter.sh +55 -0
- package/scripts/test-kilocode-hub.sh +48 -0
- package/scripts/test-mimo-hub.sh +7 -6
- package/scripts/test-opencode-adapter.sh +47 -0
- package/scripts/test-opencode-hub.sh +43 -0
- package/scripts/test-qwen-adapter.sh +63 -0
- package/scripts/test-qwen-hub.sh +49 -0
- package/scripts/test-trae-adapter.sh +63 -0
- package/scripts/test-trae-hub.sh +49 -0
- package/scripts/test-windsurf-adapter.sh +63 -0
- package/scripts/test-windsurf-hub.sh +49 -0
- package/scripts/test-zcode-hub.sh +7 -6
- package/scripts/verify-install.sh +83 -29
|
@@ -0,0 +1,384 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: security-review
|
|
3
|
+
model: sonnet
|
|
4
|
+
description: "AI-powered security analysis of code changes — traces data flow, detects injection, auth bypass, secrets exposure, and unsafe deserialization across files. Use when reviewing pending changes, before release-branch, during verify-work Phase 5, during build-epic Step 0 threat modeling, or when the user says \"security review\" or \"scan for vulns\"."
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# story: e45s41
|
|
8
|
+
<!-- story: e45s18 -->
|
|
9
|
+
# story: e26s01
|
|
10
|
+
# story: e26s02
|
|
11
|
+
# story: e26s03
|
|
12
|
+
# story: e26s04
|
|
13
|
+
# story: e26s05
|
|
14
|
+
# story: e26s06
|
|
15
|
+
# story: e26s07
|
|
16
|
+
# story: e45s26
|
|
17
|
+
|
|
18
|
+
# Security Review
|
|
19
|
+
|
|
20
|
+
> **HARD GATE** — Requires git context (branch with merge-base or diff). Never
|
|
21
|
+
> writes files outside `specs/security/`. Findings below confidence 8/10 are
|
|
22
|
+
> suppressed. **→ verify:** `git rev-parse HEAD >/dev/null 2>&1 && echo "ok" || echo "BLOCKED"`
|
|
23
|
+
|
|
24
|
+
## Parallel worktree mode (e45s18)
|
|
25
|
+
|
|
26
|
+
When running alongside `audit-code`, use isolated worktrees so scans do not race on the same index:
|
|
27
|
+
|
|
28
|
+
```bash
|
|
29
|
+
bash scripts/lib/parallel-review-worktrees.sh security-review
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
Each check gets a detached worktree at `.bigpowers/worktrees/review-<name>/`; reports still write only under `specs/security/`.
|
|
33
|
+
|
|
34
|
+
## 5-phase scan
|
|
35
|
+
|
|
36
|
+
| # | Phase | What |
|
|
37
|
+
|---|-------|------|
|
|
38
|
+
| 1 | **Scope Resolution** | Detect diff via `git diff --merge-base origin/HEAD`; resolve languages/frameworks from dependency files |
|
|
39
|
+
| 2 | **Context Research** | Identify existing security patterns, sanitization, auth model in the codebase |
|
|
40
|
+
| 3 | **Vulnerability Assessment** | Trace user input → sink; check auth boundaries, crypto, deserialization, path ops |
|
|
41
|
+
| 4 | **False-Positive Filtering** | Cross-check each finding against exclusion rules; reject confidence < 8 |
|
|
42
|
+
| 5 | **Report Generation** | Output structured markdown: file:line, severity, category, exploit scenario, fix |
|
|
43
|
+
|
|
44
|
+
## Categories
|
|
45
|
+
|
|
46
|
+
Covered: SQLi, XSS, SSRF, command injection, auth bypass, unsafe deserialization, path traversal, IDOR, crypto flaws, secrets exposure, template injection, NoSQLi
|
|
47
|
+
|
|
48
|
+
## CWE mapping mandate (e45s26)
|
|
49
|
+
|
|
50
|
+
Every **new detection rule** added to this skill MUST:
|
|
51
|
+
|
|
52
|
+
1. Map to a [CWE](https://cwe.mitre.org/) ID in `REFERENCE-vuln-categories.md` (e.g. SQLi → CWE-89, XSS → CWE-79).
|
|
53
|
+
2. Ship **two fixture pairs** under `skills/security-review/fixtures/`:
|
|
54
|
+
- **Positive** — minimal code the rule MUST flag (vulnerable pattern present).
|
|
55
|
+
- **Negative** — structurally similar code the rule MUST NOT flag (safe pattern / false-positive guard).
|
|
56
|
+
|
|
57
|
+
| Rule | CWE | Positive fixture | Negative fixture |
|
|
58
|
+
|------|-----|------------------|------------------|
|
|
59
|
+
| SQL injection | CWE-89 | `fixtures/CWE-89-sqli-positive.py` | `fixtures/CWE-89-sqli-negative.py` |
|
|
60
|
+
| XSS (DOM) | CWE-79 | `fixtures/CWE-79-xss-positive.js` | `fixtures/CWE-79-xss-negative.js` |
|
|
61
|
+
|
|
62
|
+
Before merging a new category, run both fixtures through the detection guidance and confirm positive flags / negative passes.
|
|
63
|
+
|
|
64
|
+
## SQL-safety doctrine (e45s41 — proven authorship)
|
|
65
|
+
|
|
66
|
+
Formal rule for SQL injection classification:
|
|
67
|
+
|
|
68
|
+
| SQL source | Attacker-reachable input? | Verdict |
|
|
69
|
+
|------------|---------------------------|---------|
|
|
70
|
+
| Hardcoded / compile-time constant string | N/A | **Safe** — proven authorship |
|
|
71
|
+
| Developer-authored query with bound parameters only | No dynamic fragments from user input | **Safe** |
|
|
72
|
+
| String concatenation / template with user-controlled values | Yes | **Unsafe** — report as SQLi |
|
|
73
|
+
| ORM query builder with user input in WHERE/JOIN | Yes | **Unsafe** unless parameterized |
|
|
74
|
+
| Stored procedure call with bound args | Args from trusted constants only | **Safe** |
|
|
75
|
+
| Stored procedure with dynamic SQL inside | User input reaches EXEC | **Unsafe** |
|
|
76
|
+
|
|
77
|
+
**Provenance test:** If the agent cannot prove the query string was authored entirely by the developer (no attacker-reachable interpolation), treat as vulnerable. Hardcoded SQL in migrations, seeds, and admin scripts is safe; anything reachable from HTTP/CLI/user input is not.
|
|
78
|
+
|
|
79
|
+
## BCP Plus Integration
|
|
80
|
+
|
|
81
|
+
This skill maps to **BCP Plus dimension 12 (Security & Compliance)**. When BCP Plus sizing is active, the threat model categories above correspond to sub-elements within dimension 12. The NFR Gate rule applies: standard-expectation items (e.g., "use HTTPS", "hash passwords") score 0 with a one-line rationale; only above-standard security requirements contribute to the dimension 12 count. See `docs/references/bcp-plus.md` for the full 13-dimension framework and NFR Gate pattern.
|
|
82
|
+
|
|
83
|
+
## Integration points
|
|
84
|
+
|
|
85
|
+
| Skill | Touchpoint |
|
|
86
|
+
|-------|------------|
|
|
87
|
+
| `build-epic` | Step 0 — threat-model epic scope → `specs/security/epics/<id>/THREAT_MODEL.md` |
|
|
88
|
+
| `plan-work` | `security:` field (none/low/medium/high) on story tasks |
|
|
89
|
+
| `plan-release` | +2 WSJF risk boost for HIGH+ risk epics |
|
|
90
|
+
| `audit-code` | Checklist: "diff scanned — no unaddressed HIGH findings" |
|
|
91
|
+
| `request-review` | Inject threat model categories + false-positive rules into reviewer prompt |
|
|
92
|
+
| `investigate-bug` | Security-impact assessment in RCA (NONE→CRITICAL) |
|
|
93
|
+
| `validate-fix` | Recurrence hardening check for security bugs |
|
|
94
|
+
| `verify-work` | Phase 5 — blocks on HIGH findings ≥ 8 confidence |
|
|
95
|
+
| `release-branch` | Hard gate — blocks merge if unresolved HIGH findings |
|
|
96
|
+
|
|
97
|
+
## Report format
|
|
98
|
+
|
|
99
|
+
Each finding: **`File:Line` — Severity — Category**
|
|
100
|
+
- Description: how the vulnerability manifests
|
|
101
|
+
- Exploit scenario: concrete attack path
|
|
102
|
+
- Recommendation: fix with code example
|
|
103
|
+
|
|
104
|
+
## Reference files
|
|
105
|
+
|
|
106
|
+
- [Vuln categories](REFERENCE-vuln-categories.md) — detection guidance per vuln type
|
|
107
|
+
- [False positives](REFERENCE-false-positives.md) — hard exclusions + precedent
|
|
108
|
+
- [Confidence rubric](REFERENCE-confidence-rubric.md) — scoring methodology (0–10)
|
|
109
|
+
|
|
110
|
+
## Verify
|
|
111
|
+
|
|
112
|
+
```bash
|
|
113
|
+
test -d specs/security && echo "OK: specs/security/ exists" || mkdir -p specs/security; grep -q "Merge-base\|merge.base\|git diff" SKILL.md && echo "OK: git context verified"
|
|
114
|
+
```
|
|
115
|
+
|
|
116
|
+
---
|
|
117
|
+
|
|
118
|
+
# Confidence Scoring Rubric
|
|
119
|
+
|
|
120
|
+
Every finding that survives Phase 4 false-positive filtering receives a confidence
|
|
121
|
+
score from 1 (speculative) to 10 (certain). Only findings ≥ 8 are reported.
|
|
122
|
+
|
|
123
|
+
## Score 9–10: Certain Exploit Path
|
|
124
|
+
|
|
125
|
+
**Criteria:**
|
|
126
|
+
- Concrete, testable exploit with clear reproduction steps
|
|
127
|
+
- No assumptions about uncommon configurations
|
|
128
|
+
- No chain of multiple unlikely conditions
|
|
129
|
+
- Attacker has full control over the input vector
|
|
130
|
+
|
|
131
|
+
**Examples:**
|
|
132
|
+
- User-supplied SQL in a `SELECT` statement with no parameterization
|
|
133
|
+
- `os.system(f"rm {user_path}")` where user controls the path
|
|
134
|
+
- Pickle deserialization of user-supplied data without any wrapping
|
|
135
|
+
|
|
136
|
+
**Severity:** HIGH
|
|
137
|
+
|
|
138
|
+
## Score 8: Clear Vulnerability Pattern
|
|
139
|
+
|
|
140
|
+
**Criteria:**
|
|
141
|
+
- Well-known vulnerability pattern with standard exploitation method
|
|
142
|
+
- Requires specific conditions but conditions are commonly met
|
|
143
|
+
- Exploitability is well-documented in OWASP / CVE databases
|
|
144
|
+
|
|
145
|
+
**Examples:**
|
|
146
|
+
- JWT without signature verification in authentication middleware
|
|
147
|
+
- SSRF where attacker controls the full URL including host
|
|
148
|
+
- Hardcoded AWS secret key in source code
|
|
149
|
+
|
|
150
|
+
**Severity:** HIGH or MEDIUM
|
|
151
|
+
|
|
152
|
+
## Score 7: Suspicious Pattern
|
|
153
|
+
|
|
154
|
+
**Criteria:**
|
|
155
|
+
- Unusual code that may indicate a vulnerability
|
|
156
|
+
- Requires specific conditions that may not be present
|
|
157
|
+
- Alternative secure interpretation is equally likely
|
|
158
|
+
- Defense-in-depth concern rather than direct exploit
|
|
159
|
+
|
|
160
|
+
**Examples:**
|
|
161
|
+
- A function accepting user input that passes through multiple layers before reaching a sink (unclear if sanitized)
|
|
162
|
+
- Custom encryption implementation (likely weak, but may not process sensitive data)
|
|
163
|
+
- Path construction that looks safe but has a subtle bypass
|
|
164
|
+
|
|
165
|
+
**Severity:** LOW or suppress
|
|
166
|
+
|
|
167
|
+
## Score < 7: Do Not Report
|
|
168
|
+
|
|
169
|
+
**Criteria:**
|
|
170
|
+
- Theoretical concern without exploit path
|
|
171
|
+
- Requires unrealistic attacker capabilities
|
|
172
|
+
- Violates one or more hard exclusion rules
|
|
173
|
+
- Better handled by separate tooling (dependency scanner, SAST, secret scanner)
|
|
174
|
+
- Purely stylistic or best-practice concern without security impact
|
|
175
|
+
|
|
176
|
+
**Examples:**
|
|
177
|
+
- "This function doesn't validate all inputs" without proving the validated input is the attack surface
|
|
178
|
+
- "This uses MD5" where the hash is not used for security (e.g., cache key)
|
|
179
|
+
- "This function could consume too much memory" (DOS exclusion)
|
|
180
|
+
|
|
181
|
+
**Action:** Suppress entirely. Do not include in report.
|
|
182
|
+
|
|
183
|
+
## Severity Mapping
|
|
184
|
+
|
|
185
|
+
Once confidence ≥ 8 is confirmed, map to severity:
|
|
186
|
+
|
|
187
|
+
| Severity | Impact | Examples |
|
|
188
|
+
|----------|--------|---------|
|
|
189
|
+
| **CRITICAL** | Remote compromise, full data breach | RCE, auth bypass with admin escalation, SQLi with data exfiltration |
|
|
190
|
+
| **HIGH** | Significant security boundary crossed | SSRF to internal services, hardcoded cloud credentials, insecure deserialization |
|
|
191
|
+
| **MEDIUM** | Limited impact or requires conditions | Stored XSS behind auth, IDOR on non-sensitive data, weak but not broken crypto |
|
|
192
|
+
| **LOW** | Defense-in-depth, minimal blast radius | Missing security header, verbose error messages in non-production |
|
|
193
|
+
|
|
194
|
+
## Quality Gate
|
|
195
|
+
|
|
196
|
+
The confidence rubric double-checks each finding against three lenses:
|
|
197
|
+
|
|
198
|
+
| Lens | Question |
|
|
199
|
+
|------|----------|
|
|
200
|
+
| **Exploitability** | Can a real attacker trigger this from a trust boundary? |
|
|
201
|
+
| **Actionability** | Would a security engineer accept a fix recommendation for this? |
|
|
202
|
+
| **Precedent** | Has this type of finding passed/failed human review before? |
|
|
203
|
+
|
|
204
|
+
---
|
|
205
|
+
|
|
206
|
+
# False-Positive Exclusion Rules
|
|
207
|
+
|
|
208
|
+
Applied during Phase 4 of the scan. Findings matching any hard exclusion are
|
|
209
|
+
automatically suppressed. Precedents from prior reviews guide borderline cases.
|
|
210
|
+
|
|
211
|
+
## Hard Exclusions
|
|
212
|
+
|
|
213
|
+
Automatically exclude findings matching these patterns:
|
|
214
|
+
|
|
215
|
+
| # | Rule | Rationale |
|
|
216
|
+
|---|------|-----------|
|
|
217
|
+
| 1 | **Denial of Service (DOS)** — resource exhaustion, CPU/memory attacks | Handled separately; not actionable in code review |
|
|
218
|
+
| 2 | **Secrets on disk** if otherwise secured | Secrets management is a separate concern |
|
|
219
|
+
| 3 | **Rate limiting** concerns | Operational, not a code vulnerability |
|
|
220
|
+
| 4 | **Memory consumption / CPU exhaustion** | Not actionable in diff review |
|
|
221
|
+
| 5 | **Input validation on non-security-critical fields** without proven exploit path | Theoretical, not concrete |
|
|
222
|
+
| 6 | **GitHub Actions input sanitization** unless clearly triggerable via untrusted input | Most workflow vulns are not exploitable |
|
|
223
|
+
| 7 | **Lack of hardening measures** | Code is not expected to implement all best practices |
|
|
224
|
+
| 8 | **Race conditions / timing attacks** that are theoretical | Only report if concretely problematic |
|
|
225
|
+
| 9 | **Outdated third-party libraries** | Managed separately by dependency scanners |
|
|
226
|
+
| 10 | **Memory safety** in Rust or other memory-safe languages | Impossible by language guarantees |
|
|
227
|
+
| 11 | **Hardcoded SQL with proven authorship** — migrations, seeds, static admin queries with no user interpolation | Developer-authored SQL is safe per SQL-safety doctrine (e45s41) |
|
|
228
|
+
| 12 | **Unit test files only** | Not production risk |
|
|
229
|
+
| 13 | **Log spoofing** | Outputting unsanitized input to logs is not a vuln |
|
|
230
|
+
| 14 | **SSRF that only controls path** | Only host/protocol control is exploitable |
|
|
231
|
+
| 15 | **User-controlled content in AI system prompts** | Not a security vulnerability |
|
|
232
|
+
| 16 | **Regex injection** | Injecting untrusted content into regex is not a vuln |
|
|
233
|
+
| 17 | **Regex DOS** | Excluded alongside general DOS |
|
|
234
|
+
| 18 | **Documentation files** (.md, .txt) | Insecure docs are not code vulnerabilities |
|
|
235
|
+
| 19 | **Lack of audit logs** | Not a vulnerability |
|
|
236
|
+
|
|
237
|
+
## Precedent Rules
|
|
238
|
+
|
|
239
|
+
These guide borderline cases based on prior human review decisions:
|
|
240
|
+
|
|
241
|
+
| # | Precedent | Reasoning |
|
|
242
|
+
|---|-----------|-----------|
|
|
243
|
+
| 1 | **Logging high-value secrets in plaintext IS a vuln.** Logging URLs is safe. | Secrets in logs = credential exposure; URLs are not secrets |
|
|
244
|
+
| 2 | **UUIDs are unguessable** — no validation needed | Cryptographic property of UUID v4/v7 |
|
|
245
|
+
| 3 | **Environment variables and CLI flags are trusted values** | Attackers cannot modify these in secure environments |
|
|
246
|
+
| 4 | **Resource management issues** (memory leaks, fd leaks) are NOT valid | Operational, not security |
|
|
247
|
+
| 5 | **Tabnabbing, XS-Leaks, prototype pollution, open redirects** — do NOT report unless extremely high confidence | Subtle, low-impact, high false-positive rate |
|
|
248
|
+
| 6 | **React/Angular XSS** — safe unless `dangerouslySetInnerHTML`, `bypassSecurityTrustHtml`, etc. | Framework auto-escapes |
|
|
249
|
+
| 7 | **GitHub Action workflow vulns** — verify concrete attack path before reporting | Most are theoretical |
|
|
250
|
+
| 8 | **Client-side JS/TS auth checks** — not a vuln; server is authoritative | Client code is untrusted |
|
|
251
|
+
| 9 | **IPython notebook vulns** — only report if concrete untrusted-input trigger | Most are not exploitable |
|
|
252
|
+
| 10 | **Logging non-PII data** — not a vuln even if sensitive. Only PII/secrets/passwords. | Intent: operational logging vs credential exposure |
|
|
253
|
+
| 11 | **Shell script command injection** — only report if concrete untrusted-input path | Most shell scripts don't process untrusted input |
|
|
254
|
+
|
|
255
|
+
## Confidence Scoring
|
|
256
|
+
|
|
257
|
+
Findings that survive exclusions get a confidence score (1–10):
|
|
258
|
+
|
|
259
|
+
| Range | Meaning | Action |
|
|
260
|
+
|-------|---------|--------|
|
|
261
|
+
| 9–10 | Certain exploit path, testable | Report as HIGH |
|
|
262
|
+
| 8 | Clear vulnerability pattern | Report as HIGH/MEDIUM |
|
|
263
|
+
| 7 | Suspicious, needs conditions | Report as LOW or suppress |
|
|
264
|
+
| <7 | Too speculative | **Do not report** |
|
|
265
|
+
|
|
266
|
+
**Hard threshold:** Only report findings with confidence ≥ 8.
|
|
267
|
+
|
|
268
|
+
## Signal Quality Criteria
|
|
269
|
+
|
|
270
|
+
For remaining findings, assess:
|
|
271
|
+
1. Is there a concrete, exploitable vulnerability with a clear attack path?
|
|
272
|
+
2. Does this represent a real security risk (vs theoretical best practice)?
|
|
273
|
+
3. Are there specific code locations and reproduction steps?
|
|
274
|
+
4. Would this finding be actionable for a security team?
|
|
275
|
+
|
|
276
|
+
---
|
|
277
|
+
|
|
278
|
+
# Vulnerability Categories — Detection Guidance
|
|
279
|
+
|
|
280
|
+
Each category: vulnerable pattern → safe pattern → code example.
|
|
281
|
+
|
|
282
|
+
## SQL Injection
|
|
283
|
+
|
|
284
|
+
| Aspect | Detail |
|
|
285
|
+
|--------|--------|
|
|
286
|
+
| **Vulnerable** | String interpolation in SQL queries: `f"SELECT * FROM users WHERE id = {uid}"` |
|
|
287
|
+
| **CWE** | CWE-89 (SQL Injection) |
|
|
288
|
+
| **Fixtures** | `fixtures/CWE-89-sqli-positive.py` (flag) · `fixtures/CWE-89-sqli-negative.py` (pass) |
|
|
289
|
+
| **Safe** | Parameterized queries / ORM: `cursor.execute("SELECT * FROM users WHERE id = %s", (uid,))` |
|
|
290
|
+
| **Look for** | f-strings, `+` concatenation, `format()` in query builders; raw SQL in ORM `.raw()` / `.execute()` |
|
|
291
|
+
| **False-positive guard** | Not a FP if the input is user-controlled (HTTP param, file, env var, CLI arg). Env vars are trusted (see exclusion rules). |
|
|
292
|
+
|
|
293
|
+
## Cross-Site Scripting (XSS)
|
|
294
|
+
|
|
295
|
+
| Aspect | Detail |
|
|
296
|
+
|--------|--------|
|
|
297
|
+
| **Vulnerable** | `element.innerHTML = userInput`, `dangerouslySetInnerHTML={{__html: userInput}}` |
|
|
298
|
+
| **CWE** | CWE-79 (Cross-site Scripting) |
|
|
299
|
+
| **Fixtures** | `fixtures/CWE-79-xss-positive.js` (flag) · `fixtures/CWE-79-xss-negative.js` (pass) |
|
|
300
|
+
| **Safe** | `element.textContent = userInput`, React JSX (auto-escaped), template engines with auto-escaping |
|
|
301
|
+
| **Look for** | `.innerHTML`, `document.write()`, `dangerouslySetInnerHTML`, `v-html` (Vue), `bypassSecurityTrustHtml` (Angular) |
|
|
302
|
+
| **False-positive guard** | React/Angular components without unsafe methods are NOT vulnerable (see exclusion rules). |
|
|
303
|
+
|
|
304
|
+
## Server-Side Request Forgery (SSRF)
|
|
305
|
+
|
|
306
|
+
| Aspect | Detail |
|
|
307
|
+
|--------|--------|
|
|
308
|
+
| **Vulnerable** | User-controlled URL passed to server-side HTTP client: `requests.get(user_url)` |
|
|
309
|
+
| **Safe** | URL allowlist validation, internal-network blocking, protocol/host restriction |
|
|
310
|
+
| **Look for** | User input → `fetch`, `requests.get`, `axios.get`, `urllib`, `curl`, `http.get`; host control only (path-only is excluded) |
|
|
311
|
+
|
|
312
|
+
## Command Injection
|
|
313
|
+
|
|
314
|
+
| Aspect | Detail |
|
|
315
|
+
|--------|--------|
|
|
316
|
+
| **Vulnerable** | User input in shell commands: `os.system(f"ping {host}")`, `subprocess.run(f"grep {pattern} file", shell=True)` |
|
|
317
|
+
| **Safe** | `subprocess.run(["ping", host])` with arguments as list; `shlex.quote()` |
|
|
318
|
+
| **Look for** | `shell=True`, `os.system`, `os.popen`, `exec()`, `eval()`, `$()`, backticks |
|
|
319
|
+
| **False-positive guard** | Shell scripts without untrusted user input are generally not exploitable. |
|
|
320
|
+
|
|
321
|
+
## Authentication/Authorization Bypass
|
|
322
|
+
|
|
323
|
+
| Aspect | Detail |
|
|
324
|
+
|--------|--------|
|
|
325
|
+
| **Vulnerable** | Missing auth check on protected endpoint; JWT without signature verification; hardcoded admin tokens |
|
|
326
|
+
| **Safe** | Consistent auth middleware; JWT with `RS256`/`HS256` verification; role-based access control |
|
|
327
|
+
| **Look for** | Routes without auth decorators; `@login_required` / `@require_auth` missing; JWT without `.verify()`; client-side auth checks only |
|
|
328
|
+
|
|
329
|
+
## Unsafe Deserialization
|
|
330
|
+
|
|
331
|
+
| Aspect | Detail |
|
|
332
|
+
|--------|--------|
|
|
333
|
+
| **Vulnerable** | `pickle.load(user_data)`, `yaml.load(user_input)`, `JSON.parse()` on untrusted tokens, `eval(input())` |
|
|
334
|
+
| **Safe** | `yaml.safe_load()`, `json.loads()` (safe for JSON), `pickle.load(weights_only=True)` (PyTorch), schema validation |
|
|
335
|
+
| **Look for** | `pickle.load`, `yaml.load` (not safe_load), `torch.load(weights_only=False)`, `eval`, `marshal.load`, `node-serialize` |
|
|
336
|
+
|
|
337
|
+
## Path Traversal
|
|
338
|
+
|
|
339
|
+
| Aspect | Detail |
|
|
340
|
+
|--------|--------|
|
|
341
|
+
| **Vulnerable** | User input in file paths: `open(f"/data/{filename}")`, `path.join(base, user_path)` |
|
|
342
|
+
| **Safe** | Path normalization + prefix check: `os.path.realpath(path).startswith(BASE_DIR)`; allowlist of valid filenames |
|
|
343
|
+
| **Look for** | `open()`, `read_file()`, `os.path.join` with user input; `../` traversal without normalization |
|
|
344
|
+
|
|
345
|
+
## Insecure Direct Object Reference (IDOR)
|
|
346
|
+
|
|
347
|
+
| Aspect | Detail |
|
|
348
|
+
|--------|--------|
|
|
349
|
+
| **Vulnerable** | API endpoint uses user-supplied ID without ownership check: `GET /api/order/{order_id}` — returns any user's order |
|
|
350
|
+
| **Safe** | Ownership verification: verify `order.user_id == current_user.id` before returning data |
|
|
351
|
+
| **Look for** | CRUD endpoints that accept IDs without authorization; horizontal/vertical privilege checks missing |
|
|
352
|
+
|
|
353
|
+
## Weak Cryptography
|
|
354
|
+
|
|
355
|
+
| Aspect | Detail |
|
|
356
|
+
|--------|--------|
|
|
357
|
+
| **Vulnerable** | MD5/SHA1 for passwords; ECB mode; hardcoded keys; `random` module (not `secrets`); short key lengths |
|
|
358
|
+
| **Safe** | `bcrypt`/`argon2` for passwords; AES-GCM; `secrets` module; RSA 2048+; proper IV generation |
|
|
359
|
+
| **Look for** | `md5`, `sha1`, `DES`, `ECB`, `PKCS1_v1_5`, `random` for crypto, hardcoded `key=`, `Crypto.Cipher` without AEAD |
|
|
360
|
+
|
|
361
|
+
## Secrets Exposure
|
|
362
|
+
|
|
363
|
+
| Aspect | Detail |
|
|
364
|
+
|--------|--------|
|
|
365
|
+
| **Vulnerable** | Hardcoded API keys, passwords, tokens in source code; secrets in logs; secrets in client-side code |
|
|
366
|
+
| **Safe** | Environment variables; secret manager (AWS Secrets Manager, HashiCorp Vault); `.env` excluded from VCS |
|
|
367
|
+
| **Look for** | `API_KEY=`, `password=`, `secret=`, `token=` in code; AWS keys, GitHub tokens, Stripe keys, JWTs in source |
|
|
368
|
+
| **False-positive guard** | Secrets stored on disk but otherwise secured ARE excluded. Logging high-value secrets IS a vuln. Logging URLs is safe. |
|
|
369
|
+
|
|
370
|
+
## Template Injection (SSTI)
|
|
371
|
+
|
|
372
|
+
| Aspect | Detail |
|
|
373
|
+
|--------|--------|
|
|
374
|
+
| **Vulnerable** | User input in template rendering: `Template(user_input).render()`, `render_template_string(user_input)` |
|
|
375
|
+
| **Safe** | Static templates; input passed as context variable, not template string |
|
|
376
|
+
| **Look for** | `render_template_string`, `Template()()` with user string; `eval` in template context; `${user_input}` in JS template literals on server |
|
|
377
|
+
|
|
378
|
+
## NoSQL Injection
|
|
379
|
+
|
|
380
|
+
| Aspect | Detail |
|
|
381
|
+
|--------|--------|
|
|
382
|
+
| **Vulnerable** | User input in MongoDB queries: `db.users.find({username: user_input})` where input is `{"$gt": ""}` |
|
|
383
|
+
| **Safe** | Schema validation; type checking on query params; ORM sanitization |
|
|
384
|
+
| **Look for** | MongoDB `$where`, `$gt`, `$regex` from user input; raw mongo queries without type coercion |
|
|
@@ -0,0 +1,285 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: seed-conventions
|
|
3
|
+
model: sonnet
|
|
4
|
+
description: "Generate CLAUDE.md and CONVENTIONS.md for a brand-new project through a brief interview, and create the specs/ directory with evolved bigpowers structure (product/, tech-architecture/, verifications/, epics/archive/). Entry point for greenfield projects. Use when starting a new project from scratch, when user asks to set up AI agent conventions, or when there is no CLAUDE.md yet."
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# story: e10s01
|
|
8
|
+
# story: e47s02
|
|
9
|
+
# story: e10s02
|
|
10
|
+
# story: e51s02
|
|
11
|
+
# story: e45s21
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
# Seed Conventions
|
|
15
|
+
> **HARD GATE** — Before any new code lands, confirm the project conventions are understood. Ask: 'What does a good commit message look like in this project?'
|
|
16
|
+
|
|
17
|
+
Bootstrap a new project with the AI agent conventions it needs. Run this once at the start of a greenfield project.
|
|
18
|
+
|
|
19
|
+
## What this creates
|
|
20
|
+
|
|
21
|
+
- `CLAUDE.md` — Claude Code session config (project-specific)
|
|
22
|
+
- `CONVENTIONS.md` — shared rules for all AI agents
|
|
23
|
+
- `specs/` — the specs directory where all planning output will live
|
|
24
|
+
- `AGENTS.md` — for OpenCode and other agents (optional)
|
|
25
|
+
- `GEMINI.md` — for Gemini CLI (optional)
|
|
26
|
+
|
|
27
|
+
## Interview
|
|
28
|
+
|
|
29
|
+
Ask the user these questions (one at a time, wait for each answer):
|
|
30
|
+
|
|
31
|
+
1. **Project name and one-sentence description** — "What is this project? One sentence."
|
|
32
|
+
2. **Stack** — "What language, framework, and runtime? (e.g. TypeScript / Next.js / Node 22)"
|
|
33
|
+
2b. **Stack profile (optional)** — Offer: `swift`, `typescript-vue`, `node-service`, or none. If chosen, merge the matching fragment from `profiles/<name>.md` into generated `CONVENTIONS.md`.
|
|
34
|
+
3. **Commands** — "What commands do you use for: run, test, build, lint?"
|
|
35
|
+
3b. **Preflight (optional)** — "What single command runs your full local green stack (test + lint + build)? If you don't have one, we'll chain your Test + Lint + Build answers into a **Preflight** row in the Commands table."
|
|
36
|
+
4. **Architecture** — "Key modules and relationships in 1–2 sentences."
|
|
37
|
+
5. **Conventions** — "Any naming, file organization, or patterns all agents must follow?"
|
|
38
|
+
6. **Never-do list** — "What are the hard stops? Things an agent must never touch?"
|
|
39
|
+
7. **Defensive code categories** — "Which apply? (Rate limit / Retry / Circuit breaker / Timeout / Graceful degradation)"
|
|
40
|
+
8. **Local tool wiring (optional)** — "Wire bigpowers for project-local tools? (Cursor, OpenCode, Cline, Aider, Codex CLI)" If yes, generate AGENTS.md spine artifacts per [REFERENCE.md](REFERENCE.md) §Local tool wiring and §AGENTS.md spine. If no, skip — standard seed output unchanged (no AGENTS.md spine unless opted in).
|
|
41
|
+
|
|
42
|
+
## Generate files
|
|
43
|
+
|
|
44
|
+
After the interview, generate each file using the templates in [REFERENCE.md](REFERENCE.md):
|
|
45
|
+
- `AGENTS.md` — from `docs/templates/AGENTS.md` Reach Template (canonical spine source)
|
|
46
|
+
- `CLAUDE.md` — symlink to `AGENTS.md` (copy fallback on Windows when symlink fails)
|
|
47
|
+
- `GEMINI.md` — symlink to `AGENTS.md` when Gemini wiring opted in
|
|
48
|
+
- `opencode.json` — with `"instructions": ["AGENTS.md"]` when OpenCode opted in
|
|
49
|
+
- `.aider.conf.yml` — with `read: AGENTS.md` when Aider opted in
|
|
50
|
+
- `CONVENTIONS.md` — bigpowers standard template + project defensive code categories
|
|
51
|
+
|
|
52
|
+
### `specs/` directory
|
|
53
|
+
|
|
54
|
+
```bash
|
|
55
|
+
mkdir -p specs/product specs/product/snapshots specs/epics/archive
|
|
56
|
+
mkdir -p specs/tech-architecture specs/adr specs/verifications specs/bugs
|
|
57
|
+
touch specs/product/SCOPE_LATEST.yaml specs/product/VISION_LATEST.yaml specs/product/GLOSSARY_LATEST.yaml
|
|
58
|
+
touch specs/release-plan.yaml specs/execution-status.yaml specs/planning-status.yaml specs/state.yaml
|
|
59
|
+
touch specs/tech-architecture/tech-stack.md specs/tech-architecture/SECURITY_PLAN_LATEST.md
|
|
60
|
+
touch specs/tech-architecture/TEST_PLAN_LATEST.md specs/tech-architecture/DESIGN_PLAN_LATEST.md
|
|
61
|
+
touch specs/tech-architecture/REFACTOR_LATEST.md specs/tech-architecture/IMPACT_LATEST.md
|
|
62
|
+
touch specs/bugs/registry.yaml
|
|
63
|
+
echo "# Specs\n\nAll planning documents for this project." > specs/README.md
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
**Note:** `specs/state.yaml.lock` is NOT pre-created — acquired/released dynamically.
|
|
67
|
+
|
|
68
|
+
`specs/state.yaml` carries a top-level `workflow_mode` key (`team-pr` | `solo-git`, default `solo-git`). This is the **canonical integrate-mode signal** for all skills — set it once here and skills such as `release-branch` read it from this file instead of sniffing profile files.
|
|
69
|
+
|
|
70
|
+
When generating `CLAUDE.md`, if the user did not name a Preflight command, chain the Test + Lint + Build interview answers into one **Preflight** row (e.g. `npm test && npm run lint && npm run build`).
|
|
71
|
+
|
|
72
|
+
### Self-installing fenced markers (e45s21)
|
|
73
|
+
|
|
74
|
+
Skills that write into `CLAUDE.md` or `AGENTS.md` MUST use **fenced HTML comment markers** so handwritten content outside the fence is never clobbered:
|
|
75
|
+
|
|
76
|
+
```markdown
|
|
77
|
+
<!-- BEGIN bigpowers:section-id -->
|
|
78
|
+
…agent-managed content only…
|
|
79
|
+
<!-- END bigpowers:section-id -->
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
**Merge rule:** On update, replace only the content *between* matching `BEGIN`/`END` pairs. If a marker pair is missing, append a new fenced block at the end of the file — never rewrite the whole file.
|
|
83
|
+
|
|
84
|
+
**Standard marker IDs** for seeded projects (see [REFERENCE.md](REFERENCE.md) § Fenced markers):
|
|
85
|
+
|
|
86
|
+
| Marker ID | Owner skill | Purpose |
|
|
87
|
+
|-----------|-------------|---------|
|
|
88
|
+
| `project` | seed-conventions | Project, Commands, Architecture |
|
|
89
|
+
| `context-routing` | seed-conventions | Glob → sub-AGENTS.md routing table |
|
|
90
|
+
| `learned-preferences` | session-state | Learned User Preferences + Workspace Facts |
|
|
91
|
+
| `tooling` | setup-environment, guard-git | sqz/rtk/hook blocks installed by tooling skills |
|
|
92
|
+
|
|
93
|
+
Emit these fences in `AGENTS.md` (and therefore `CLAUDE.md` symlink) from `docs/templates/AGENTS.md`. User prose outside fences is sacred.
|
|
94
|
+
|
|
95
|
+
- [ ] CLAUDE.md exists and is populated
|
|
96
|
+
- [ ] CONVENTIONS.md exists and includes specs/ output convention
|
|
97
|
+
- [ ] specs/product/ exists with SCOPE_LATEST.yaml, VISION_LATEST.yaml, GLOSSARY_LATEST.yaml
|
|
98
|
+
- [ ] specs/tech-architecture/ exists with tech-stack.md, security.md, test.md, design.md
|
|
99
|
+
- [ ] specs/verifications/ exists
|
|
100
|
+
- [ ] specs/epics/archive/ exists
|
|
101
|
+
- [ ] specs/bugs/registry.yaml exists
|
|
102
|
+
- [ ] Confirm with user: "Does CLAUDE.md accurately describe your project?"
|
|
103
|
+
|
|
104
|
+
---
|
|
105
|
+
|
|
106
|
+
# story: e51s02 e37s01 e37s03 e37s14
|
|
107
|
+
# story: e45s21
|
|
108
|
+
# Seed Conventions — Reference Templates
|
|
109
|
+
|
|
110
|
+
## Navigation
|
|
111
|
+
|
|
112
|
+
| Lines | Section |
|
|
113
|
+
|-------|---------|
|
|
114
|
+
| 1–4 | Title + story tags |
|
|
115
|
+
| 6–22 | Navigation (this table) |
|
|
116
|
+
| 24–35 | AGENTS.md spine |
|
|
117
|
+
| 37–76 | Agent config template |
|
|
118
|
+
| 78–85 | opencode.json template |
|
|
119
|
+
| 87–96 | Aider bridge |
|
|
120
|
+
| 98–108 | Codex CLI wiring |
|
|
121
|
+
| 110–118 | CONVENTIONS.md |
|
|
122
|
+
| 120–122 | Stack profile fragments |
|
|
123
|
+
| 124–153 | Local tool wiring |
|
|
124
|
+
|
|
125
|
+
## Fenced markers (e45s21)
|
|
126
|
+
|
|
127
|
+
Self-installing blocks prevent skills from overwriting user-authored prose. Pattern:
|
|
128
|
+
|
|
129
|
+
```markdown
|
|
130
|
+
<!-- BEGIN bigpowers:section-id -->
|
|
131
|
+
…managed content…
|
|
132
|
+
<!-- END bigpowers:section-id -->
|
|
133
|
+
```
|
|
134
|
+
|
|
135
|
+
**Merge algorithm:**
|
|
136
|
+
|
|
137
|
+
1. If `BEGIN bigpowers:<id>` exists → replace inner content only.
|
|
138
|
+
2. If missing → append new fenced block at EOF.
|
|
139
|
+
3. Never delete content outside fences.
|
|
140
|
+
|
|
141
|
+
Seed these marker IDs in generated `AGENTS.md`:
|
|
142
|
+
|
|
143
|
+
| ID | Initial content |
|
|
144
|
+
|----|-----------------|
|
|
145
|
+
| `project` | Project, Commands, Architecture, Conventions, Never, Agent Rules |
|
|
146
|
+
| `context-routing` | Glob → sub-AGENTS.md table (see CLAUDE.md e45s22) |
|
|
147
|
+
| `learned-preferences` | Empty Learned User Preferences + Workspace Facts lists |
|
|
148
|
+
|
|
149
|
+
## AGENTS.md spine (Reach Template — e37s01)
|
|
150
|
+
|
|
151
|
+
Canonical source: copy from `docs/templates/AGENTS.md` in the bigpowers repo (Reach Template).
|
|
152
|
+
Do not invent structure ad hoc — the template includes multi-agent preamble, Preflight, Test/Lint/Build sections.
|
|
153
|
+
|
|
154
|
+
When local tool wiring is opted in:
|
|
155
|
+
1. Copy Reach Template → project root `AGENTS.md`, fill interview placeholders
|
|
156
|
+
2. `ln -sf AGENTS.md CLAUDE.md` (or content copy on Windows when symlink fails)
|
|
157
|
+
3. Write `opencode.json` with `"instructions": ["AGENTS.md"]`
|
|
158
|
+
|
|
159
|
+
When user **opts out** of local tool wiring, do not emit AGENTS.md spine artifacts.
|
|
160
|
+
|
|
161
|
+
## Agent config template (legacy — prefer AGENTS.md spine)
|
|
162
|
+
|
|
163
|
+
All three files use the same structure — only the header differs:
|
|
164
|
+
- `CLAUDE.md` → `# [Project Name] — Claude Code` (or symlink to AGENTS.md)
|
|
165
|
+
- `GEMINI.md` → `# [Project Name] — Gemini CLI`
|
|
166
|
+
- `AGENTS.md` → `# [Project Name] — AI Agents` (Reach Template header)
|
|
167
|
+
|
|
168
|
+
```markdown
|
|
169
|
+
# [Project Name] — [Agent]
|
|
170
|
+
|
|
171
|
+
Read CONVENTIONS.md before any GitHub or git operation.
|
|
172
|
+
|
|
173
|
+
## Project
|
|
174
|
+
[One sentence description]
|
|
175
|
+
Stack: [language, framework, runtime]
|
|
176
|
+
|
|
177
|
+
## Commands
|
|
178
|
+
| Action | Command |
|
|
179
|
+
|--------|---------|
|
|
180
|
+
| Run | `[cmd]` |
|
|
181
|
+
| Test | `[cmd]` |
|
|
182
|
+
| Build | `[cmd]` |
|
|
183
|
+
| Lint | `[cmd]` |
|
|
184
|
+
| Preflight | `[test && lint && build chain — or user-named full-green cmd]` |
|
|
185
|
+
| CI | `gh pr checks` (when a PR is open) |
|
|
186
|
+
|
|
187
|
+
## Architecture
|
|
188
|
+
[1–2 sentences. Key modules and their relationships.]
|
|
189
|
+
|
|
190
|
+
## Conventions
|
|
191
|
+
- [convention 1]
|
|
192
|
+
- [convention 2]
|
|
193
|
+
|
|
194
|
+
## Never
|
|
195
|
+
- Never dismiss reproducible gate failures as pre-existing or out of scope
|
|
196
|
+
- Never proceed on red Preflight or red CI — invoke quick-fix or fix-bug first
|
|
197
|
+
- [hard stop 1]
|
|
198
|
+
- [hard stop 2]
|
|
199
|
+
|
|
200
|
+
## Agent Rules
|
|
201
|
+
- **Workflow Mandate:** You MUST use the bigpowers skills (e.g. `plan-work`, `develop-tdd`, `orchestrate-project`) to perform tasks. DO NOT write code directly in response to a user prompt like "build this feature".
|
|
202
|
+
- **Always Green:** Preflight and CI must be green before forward work. Reproducible gate failures require **fix-or-log** (quick-fix → fix-bug) per CONVENTIONS § Discovered Defects.
|
|
203
|
+
- Read specs/ before writing code.
|
|
204
|
+
- All planning and specifications MUST be written to `specs/` (`product/SCOPE_LATEST.yaml`, `release-plan.yaml`, `epics/`) before any code is generated.
|
|
205
|
+
- Write the minimum code that solves the stated problem. Nothing extra.
|
|
206
|
+
- Run tests after every change. Show evidence before declaring done.
|
|
207
|
+
- One clarifying question beats a wrong assumption baked into 200 lines.
|
|
208
|
+
```
|
|
209
|
+
|
|
210
|
+
## opencode.json template
|
|
211
|
+
|
|
212
|
+
```json
|
|
213
|
+
{
|
|
214
|
+
"$schema": "https://opencode.ai/config.json",
|
|
215
|
+
"instructions": ["AGENTS.md"]
|
|
216
|
+
}
|
|
217
|
+
```
|
|
218
|
+
|
|
219
|
+
## Aider — `.aider.conf.yml` bridge (e37s03)
|
|
220
|
+
|
|
221
|
+
When Aider wiring is opted in:
|
|
222
|
+
|
|
223
|
+
```yaml
|
|
224
|
+
read: AGENTS.md
|
|
225
|
+
```
|
|
226
|
+
|
|
227
|
+
Upstream: [Aider-AI/aider](https://github.com/Aider-AI/aider) (not paul-gauthier/aider).
|
|
228
|
+
|
|
229
|
+
## Codex CLI — project-local `.codex/config.toml` + AGENTS.md (e37s14)
|
|
230
|
+
|
|
231
|
+
Source: https://developers.openai.com/codex/guides/agents-md
|
|
232
|
+
|
|
233
|
+
Codex is instruction-file-only — no slash skills. When Codex wiring is opted in:
|
|
234
|
+
|
|
235
|
+
```toml
|
|
236
|
+
# .codex/config.toml
|
|
237
|
+
instructions = ["AGENTS.md"]
|
|
238
|
+
```
|
|
239
|
+
|
|
240
|
+
Use AGENTS.md header `# [Project Name] — AI Agents` (shared with OpenCode/Cline). Single AGENTS.md serves dual-tool projects.
|
|
241
|
+
|
|
242
|
+
## CONVENTIONS.md
|
|
243
|
+
|
|
244
|
+
Use the standard bigpowers CONVENTIONS.md as the base. Fill in the project-specific defensive code categories from the interview answers.
|
|
245
|
+
|
|
246
|
+
**Always embed** these doctrine sections from bigpowers (adapt commands only):
|
|
247
|
+
|
|
248
|
+
- **§ Always Green / Shift Left** — 1-10-100 rationale, Preflight + CI green definitions
|
|
249
|
+
- **§ Discovered Defects** — fix-or-log ladder (quick-fix → fix-bug), separate commits for discovered fixes
|
|
250
|
+
- **Banned dismissive phrases** table — pre-existing, unrelated to session, not introduced by my changes, out of scope (ignoring a red gate)
|
|
251
|
+
|
|
252
|
+
## Stack profile fragments
|
|
253
|
+
|
|
254
|
+
If the user selected a stack profile, merge the matching `profiles/<name>.md` fragment into the generated `CONVENTIONS.md` under a `## Stack Conventions` section. Profiles supply language-specific commands, architecture patterns, and never-do additions.
|
|
255
|
+
|
|
256
|
+
## Local tool wiring (optional interview step 8)
|
|
257
|
+
|
|
258
|
+
Offered after the standard interview. Covers the two tools that global install (`scripts/install.sh`) structurally cannot reach because they read project-root config, not global paths.
|
|
259
|
+
|
|
260
|
+
### Cursor — project-local `.cursor/rules` symlink
|
|
261
|
+
|
|
262
|
+
```bash
|
|
263
|
+
# From the project root:
|
|
264
|
+
ln -sfn <bigpowers-install-path>/.cursor/rules .cursor/rules
|
|
265
|
+
```
|
|
266
|
+
|
|
267
|
+
Cursor reads `.cursor/rules/` from the project root. This symlink gives every project access to bigpowers skills as Cursor rules without duplicating the files. Run once per project.
|
|
268
|
+
|
|
269
|
+
### OpenCode — project-local `opencode.json` + `AGENTS.md`
|
|
270
|
+
|
|
271
|
+
`opencode.json` (project root):
|
|
272
|
+
```json
|
|
273
|
+
{
|
|
274
|
+
"$schema": "https://opencode.ai/config.json",
|
|
275
|
+
"instructions": [".cursor/rules/*.mdc", "AGENTS.md"]
|
|
276
|
+
}
|
|
277
|
+
```
|
|
278
|
+
|
|
279
|
+
OpenCode reads `opencode.json` from the project root, NOT from a global path. The `instructions` array points to the local `.cursor/rules` symlink (from the Cursor step above) and the project's `AGENTS.md`. Both must exist in the project for OpenCode to see bigpowers skills.
|
|
280
|
+
|
|
281
|
+
`AGENTS.md` is already generated by the standard interview (step 2 of Generate Files). When local tool wiring is opted in, ensure `AGENTS.md` includes the standard agent-config template header `# [Project Name] — OpenCode`.
|
|
282
|
+
|
|
283
|
+
### When to offer
|
|
284
|
+
|
|
285
|
+
Only offer local tool wiring when the user's project will be opened in Cursor or OpenCode. These tools are project-root scoped by design — no global installer can solve them. Global install (`install.sh`) already handles Claude Code, Gemini CLI, and pi globally. Do not offer for tools that read global config.
|