bigpowers 2.83.4 → 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 +30 -0
- package/CONVENTIONS.md +22 -0
- package/bin/setup.js +9 -1
- 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-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,96 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: grill-me
|
|
3
|
+
model: sonnet
|
|
4
|
+
description: "Interactive assumption-surfacing Q&A that stress-tests a plan through relentless questioning until every decision is resolved. Use when user wants to challenge a plan, validate decisions from conversation/context, or mentions \"grill me\". For doc-grounded variant, use grill-with-docs."
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Grill Me
|
|
8
|
+
|
|
9
|
+
> **Use this vs grill-with-docs:** `grill-me` surfaces assumptions from the conversation and context alone — no documentation fetching. Use `grill-with-docs` (the doc-grounded variant) when the plan relies on a specific library or external API and every challenge must cite a real doc URL.
|
|
10
|
+
|
|
11
|
+
Two modes. Default is **Design**. Switch to **Docs** by saying "grill me with docs" or when the plan relies on a specific library or external API.
|
|
12
|
+
|
|
13
|
+
> **HARD GATE** — Do NOT accept a design until every hard decision has been stress-tested. "Seems right" is not a decision. Grilling must identify and resolve tensions before build begins.
|
|
14
|
+
|
|
15
|
+
## Design mode (default)
|
|
16
|
+
|
|
17
|
+
Interview relentlessly about every aspect of this plan until reaching shared understanding. Walk each branch of the design tree, resolving dependencies between decisions one-by-one. For each question, provide your recommended answer. Ask one question at a time.
|
|
18
|
+
|
|
19
|
+
If a question can be answered by exploring the codebase, explore it instead.
|
|
20
|
+
|
|
21
|
+
## Docs mode
|
|
22
|
+
|
|
23
|
+
Ground every challenge in real documentation — no assumption about a library's behavior goes unchecked. See [REFERENCE.md](REFERENCE.md) for the full process.
|
|
24
|
+
|
|
25
|
+
Short form:
|
|
26
|
+
1. List every external library, third-party API, and framework behavior relied upon.
|
|
27
|
+
2. Fetch the actual docs for each (`WebFetch` the official API reference).
|
|
28
|
+
3. Challenge each plan assumption against the real docs: correct method signature? right version? deprecated?
|
|
29
|
+
4. Report confirmed ✓, corrected ✗ (with the real behavior), and uncertain → `spike-prototype`.
|
|
30
|
+
5. Update the plan for each confirmed discrepancy.
|
|
31
|
+
|
|
32
|
+
---
|
|
33
|
+
|
|
34
|
+
# Docs Mode — Full Process
|
|
35
|
+
|
|
36
|
+
Triggered by "grill me with docs" or when a plan depends on a specific library or external API.
|
|
37
|
+
|
|
38
|
+
**Why this matters:** AI agents hallucinate API methods, argument orders, and behaviors. Every assumption about an external dependency must be validated against the actual docs before code is written.
|
|
39
|
+
|
|
40
|
+
## Step 1 — Identify the dependencies
|
|
41
|
+
|
|
42
|
+
From the plan or conversation, list:
|
|
43
|
+
- Every external library being used
|
|
44
|
+
- Every third-party API being called
|
|
45
|
+
- Every framework behavior being relied upon
|
|
46
|
+
|
|
47
|
+
Ask: "Which of these are you most confident about? Which are you less sure of?"
|
|
48
|
+
|
|
49
|
+
## Step 2 — Fetch the relevant docs
|
|
50
|
+
|
|
51
|
+
For each dependency, fetch the actual documentation:
|
|
52
|
+
|
|
53
|
+
```
|
|
54
|
+
WebFetch the official docs for [library/API]
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
Prioritize:
|
|
58
|
+
- The API reference for the specific method being used
|
|
59
|
+
- The changelog for the version in use (breaking changes)
|
|
60
|
+
- Migration guides if upgrading from a previous version
|
|
61
|
+
- Known gotchas / FAQ sections
|
|
62
|
+
|
|
63
|
+
## Step 3 — Challenge each assumption
|
|
64
|
+
|
|
65
|
+
For every assumption in the plan, find the corresponding doc section and ask:
|
|
66
|
+
|
|
67
|
+
- "Does the real API actually work this way? Show me the doc."
|
|
68
|
+
- "Is this method available in the version you're using?"
|
|
69
|
+
- "Does this argument order match the actual signature?"
|
|
70
|
+
- "Are there rate limits, quotas, or timeout behaviors that affect this design?"
|
|
71
|
+
- "Is this marked as deprecated in the current version?"
|
|
72
|
+
|
|
73
|
+
Ask one question at a time. For each challenge, cite the specific URL and section.
|
|
74
|
+
|
|
75
|
+
## Step 4 — Surface hallucinations
|
|
76
|
+
|
|
77
|
+
When an assumption doesn't match the docs:
|
|
78
|
+
|
|
79
|
+
> "Your plan uses `library.doThing(a, b)` but the [docs](https://example.com/api-reference) show the signature is `doThing(config: {a, b})` with a config object. This will fail at runtime."
|
|
80
|
+
|
|
81
|
+
Document each discrepancy clearly.
|
|
82
|
+
|
|
83
|
+
## Step 5 — Update the plan
|
|
84
|
+
|
|
85
|
+
For each confirmed discrepancy, recommend a concrete fix:
|
|
86
|
+
- Correct method signature
|
|
87
|
+
- Correct argument order
|
|
88
|
+
- Alternative approach that matches what the library actually supports
|
|
89
|
+
- Whether a spike (`spike-prototype`) is needed to validate a remaining uncertainty
|
|
90
|
+
|
|
91
|
+
## Step 6 — Sign off
|
|
92
|
+
|
|
93
|
+
When all major assumptions have been validated against docs, report:
|
|
94
|
+
- Which assumptions were confirmed ✓
|
|
95
|
+
- Which were corrected ✗ + what the correct approach is
|
|
96
|
+
- Which remain uncertain → recommend `spike-prototype`
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: grill-with-docs
|
|
3
|
+
model: opus
|
|
4
|
+
description: "Doc-grounded variant of grill-me — stress-tests plan assumptions by fetching and citing real library or API documentation. Every challenge must cite a real URL. Use when the plan depends on a specific library or external API."
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Grill With Docs
|
|
8
|
+
|
|
9
|
+
> **Use this vs grill-me:** `grill-with-docs` is the doc-grounded variant of `grill-me`. Use it when the plan relies on external libraries or APIs and every challenge must be grounded in and cite a real documentation URL. Use `grill-me` for context-only assumption surfacing without fetching docs.
|
|
10
|
+
|
|
11
|
+
> **HARD GATE** — Every challenge must cite a real documentation URL. No hallucinated APIs.
|
|
12
|
+
|
|
13
|
+
## Process
|
|
14
|
+
|
|
15
|
+
1. Read the plan or design under test (`specs/release-plan.yaml + epic shards`, INTERFACE-OPTIONS.md, etc.).
|
|
16
|
+
2. List assumptions that depend on external libraries or APIs.
|
|
17
|
+
3. For each assumption: fetch or quote official docs; challenge with "docs say X, plan says Y."
|
|
18
|
+
4. Resolve or update the plan inline; unresolved items block `plan-work`.
|
|
19
|
+
|
|
20
|
+
## Docs mode rules
|
|
21
|
+
|
|
22
|
+
- Cite URL + quoted snippet (method name, parameter, version).
|
|
23
|
+
- If docs contradict the plan, plan loses until updated.
|
|
24
|
+
- Prefer official docs over blog posts.
|
|
25
|
+
|
|
26
|
+
## Verify
|
|
27
|
+
|
|
28
|
+
→ verify: `grep -c 'https\?://' skills/grill-with-docs/SKILL.md | awk '{if($1>=2) print "OK"; else print "NEEDS DOCS"}'`
|
|
29
|
+
|
|
30
|
+
See [REFERENCE.md](REFERENCE.md) for question templates.
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
<!-- story: e03s01 -->
|
|
34
|
+
|
|
35
|
+
---
|
|
36
|
+
|
|
37
|
+
# Grill With Docs — Question templates
|
|
38
|
+
|
|
39
|
+
- "Docs at [URL] show signature `foo(bar?: Baz)`. Your plan calls `foo(bar, baz)` — which is correct?"
|
|
40
|
+
- "The changelog at [URL] deprecates X in v3. Your plan still uses X — migrate or pin version?"
|
|
41
|
+
- "Error handling in [URL] throws `NetworkError`. Your plan catches `Error` only — is that sufficient?"
|
|
@@ -0,0 +1,231 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: guard-git
|
|
3
|
+
model: haiku
|
|
4
|
+
description: "Block dangerous git commands (push, force push, reset --hard, clean, branch -D, checkout/restore .) and enforce Conventional Commits & Branch Protection before an AI agent runs them. Installs hook scripts for Claude Code, Cursor, Cursor CLI, and Gemini CLI; documents Google Antigravity Terminal deny lists. Use when the user wants git safety hooks, to block git push or destructive git in agents, or to mirror the same policy across AI coding tools."
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Guard Git
|
|
8
|
+
> **HARD GATE** — **HARD GATE** — Before committing, verify: branch is not main/master, author is correct, git user is configured. Bad commits are hard to fix.
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
Installs a shared hook that blocks destructive git operations and enforces workflow discipline. **Requires `jq` on the agent's PATH** when the hook runs.
|
|
12
|
+
|
|
13
|
+
## What gets blocked/enforced
|
|
14
|
+
|
|
15
|
+
- **Safety**: `git push --force`, `git reset --hard`, `git clean -f`, `git branch -D`, `git checkout .`, `git restore .`.
|
|
16
|
+
- **Discipline**: Blocks direct commits or pushes to protected branches (`main`, `master`) unless `GIT_BIGPOWERS_LAND=1` (set only by `scripts/land-branch.sh`).
|
|
17
|
+
- **Allows**: `git push origin <feature-branch>` for backup/CI; solo land push to `main` only inside `land-branch.sh`.
|
|
18
|
+
- **Standardization**: Enforces [Conventional Commits](https://www.conventionalcommits.org/) for all `git commit` commands.
|
|
19
|
+
- **Secrets**: Blocks commits containing common secret patterns (`sk-`, `ghp_`, `AKIA`, `xoxb-`, `-----BEGIN` private keys) — see [REFERENCE.md](REFERENCE.md).
|
|
20
|
+
|
|
21
|
+
## Quick start
|
|
22
|
+
|
|
23
|
+
1. **Scope**: ask project-only vs global (paths differ per product).
|
|
24
|
+
2. **Write the hook bundle** from [REFERENCE.md](REFERENCE.md) into the client's hooks directory.
|
|
25
|
+
3. **Run `chmod +x`** on `pre-tool-use.sh`.
|
|
26
|
+
4. **Merge** the hook snippet from [REFERENCE.md](REFERENCE.md) into the right settings file — do not wipe unrelated keys.
|
|
27
|
+
5. **Verify** with the tests in [REFERENCE.md](REFERENCE.md).
|
|
28
|
+
|
|
29
|
+
| Client | Mechanism | Config |
|
|
30
|
+
|--------|-----------|--------|
|
|
31
|
+
| Claude Code | `PreToolUse` (Bash) | `.claude/settings.json` or `~/.claude/settings.json` |
|
|
32
|
+
| Cursor / Cursor CLI | `beforeShellExecution` | `.cursor/hooks.json` or `~/.cursor/hooks.json` |
|
|
33
|
+
| Gemini CLI | `BeforeTool` + `run_shell_command` | `.gemini/settings.json` or `~/.gemini/settings.json` |
|
|
34
|
+
| Google Antigravity | Built-in Terminal **Deny list** | Settings UI (no shell hook) |
|
|
35
|
+
|
|
36
|
+
**Modes (env on the hook command):** `GIT_GUARDRAILS_MODE` is `claude` (default) or `cursor` → stderr + exit `2` on block. Set `gemini` for Gemini CLI → JSON `decision` on stdout.
|
|
37
|
+
|
|
38
|
+
## Customization
|
|
39
|
+
|
|
40
|
+
To add or remove patterns or protected branches, edit `pre-tool-use.sh`.
|
|
41
|
+
|
|
42
|
+
## Advanced
|
|
43
|
+
|
|
44
|
+
Full JSON examples, merge rules, Antigravity deny-list entries, and test commands: [REFERENCE.md](REFERENCE.md).
|
|
45
|
+
|
|
46
|
+
|
|
47
|
+
|
|
48
|
+
<!-- story: e01s03 -->
|
|
49
|
+
|
|
50
|
+
---
|
|
51
|
+
|
|
52
|
+
# Git guardrails — reference
|
|
53
|
+
|
|
54
|
+
## Navigation
|
|
55
|
+
|
|
56
|
+
| Lines | Section |
|
|
57
|
+
|-------|---------|
|
|
58
|
+
| 1 | Title |
|
|
59
|
+
| 3–14 | Navigation |
|
|
60
|
+
| 16–24 | Secret patterns |
|
|
61
|
+
| 26–44 | Copy layout |
|
|
62
|
+
| 46–72 | Claude Code |
|
|
63
|
+
| 74–92 | Cursor and Cursor CLI |
|
|
64
|
+
| 94–120 | Gemini CLI |
|
|
65
|
+
| 122–135 | Google Antigravity |
|
|
66
|
+
| 137–178 | Verify (local tests) |
|
|
67
|
+
|
|
68
|
+
## Secret patterns (audit + pre-commit)
|
|
69
|
+
|
|
70
|
+
Agents must not commit files containing:
|
|
71
|
+
|
|
72
|
+
- `sk-` (OpenAI API keys)
|
|
73
|
+
- `ghp_` / `gho_` (GitHub tokens)
|
|
74
|
+
- `AKIA` (AWS access key id)
|
|
75
|
+
- `xoxb-` (Slack bot tokens)
|
|
76
|
+
- `-----BEGIN` private keys
|
|
77
|
+
|
|
78
|
+
Use `audit-code` supply-chain checklist before commit. Consider `git-secrets` or custom pre-commit hook in target projects.
|
|
79
|
+
|
|
80
|
+
## Copy layout
|
|
81
|
+
|
|
82
|
+
The main script is `pre-tool-use.sh`.
|
|
83
|
+
|
|
84
|
+
```text
|
|
85
|
+
<hooks-dir>/pre-tool-use.sh
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
Example project locations:
|
|
89
|
+
|
|
90
|
+
- Claude: `.claude/hooks/`
|
|
91
|
+
- Cursor: `.cursor/hooks/`
|
|
92
|
+
- Gemini: `.gemini/hooks/`
|
|
93
|
+
|
|
94
|
+
Use the same layout for user-level hooks (`~/.claude/hooks`, `~/.cursor/hooks`, `~/.gemini/hooks`).
|
|
95
|
+
|
|
96
|
+
---
|
|
97
|
+
|
|
98
|
+
## Claude Code
|
|
99
|
+
|
|
100
|
+
Hook command does **not** need `GIT_GUARDRAILS_MODE` (defaults to `claude`).
|
|
101
|
+
|
|
102
|
+
**Project** (`.claude/settings.json`):
|
|
103
|
+
|
|
104
|
+
```json
|
|
105
|
+
{
|
|
106
|
+
"hooks": {
|
|
107
|
+
"PreToolUse": [
|
|
108
|
+
{
|
|
109
|
+
"matcher": "Bash",
|
|
110
|
+
"hooks": [
|
|
111
|
+
{
|
|
112
|
+
"type": "command",
|
|
113
|
+
"command": "\"$CLAUDE_PROJECT_DIR\"/.claude/hooks/pre-tool-use.sh"
|
|
114
|
+
}
|
|
115
|
+
]
|
|
116
|
+
}
|
|
117
|
+
]
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
```
|
|
121
|
+
|
|
122
|
+
---
|
|
123
|
+
|
|
124
|
+
## Cursor and Cursor CLI
|
|
125
|
+
|
|
126
|
+
Use `beforeShellExecution`. Set `GIT_GUARDRAILS_MODE=cursor`.
|
|
127
|
+
|
|
128
|
+
**Project** (`.cursor/hooks.json`):
|
|
129
|
+
|
|
130
|
+
```json
|
|
131
|
+
{
|
|
132
|
+
"version": 1,
|
|
133
|
+
"hooks": {
|
|
134
|
+
"beforeShellExecution": [
|
|
135
|
+
{
|
|
136
|
+
"command": "GIT_GUARDRAILS_MODE=cursor .cursor/hooks/pre-tool-use.sh",
|
|
137
|
+
"matcher": "git"
|
|
138
|
+
}
|
|
139
|
+
]
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
```
|
|
143
|
+
|
|
144
|
+
---
|
|
145
|
+
|
|
146
|
+
## Gemini CLI
|
|
147
|
+
|
|
148
|
+
Use `BeforeTool` with matcher `run_shell_command`. Set **`GIT_GUARDRAILS_MODE=gemini`**.
|
|
149
|
+
|
|
150
|
+
**Project** (`.gemini/settings.json`):
|
|
151
|
+
|
|
152
|
+
```json
|
|
153
|
+
{
|
|
154
|
+
"hooks": {
|
|
155
|
+
"BeforeTool": [
|
|
156
|
+
{
|
|
157
|
+
"matcher": "run_shell_command",
|
|
158
|
+
"hooks": [
|
|
159
|
+
{
|
|
160
|
+
"name": "git-guardrails",
|
|
161
|
+
"type": "command",
|
|
162
|
+
"command": "GIT_GUARDRAILS_MODE=gemini \"$GEMINI_PROJECT_DIR\"/.gemini/hooks/pre-tool-use.sh",
|
|
163
|
+
"timeout": 5000
|
|
164
|
+
}
|
|
165
|
+
]
|
|
166
|
+
}
|
|
167
|
+
]
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
```
|
|
171
|
+
|
|
172
|
+
---
|
|
173
|
+
|
|
174
|
+
## Google Antigravity
|
|
175
|
+
|
|
176
|
+
Add **Deny list** entries in **Antigravity → Settings → Terminal**:
|
|
177
|
+
|
|
178
|
+
- `git push --force`
|
|
179
|
+
- `git push origin main`
|
|
180
|
+
- `git push origin master`
|
|
181
|
+
- `git reset --hard`
|
|
182
|
+
- `git clean`
|
|
183
|
+
- `git branch -D`
|
|
184
|
+
- `git checkout .`
|
|
185
|
+
- `git restore .`
|
|
186
|
+
|
|
187
|
+
---
|
|
188
|
+
|
|
189
|
+
## Verify (local tests)
|
|
190
|
+
|
|
191
|
+
**1. Block push to main without land mode (Claude mode):**
|
|
192
|
+
```bash
|
|
193
|
+
echo '{"tool_input":{"command":"git push origin main"}}' | ./pre-tool-use.sh
|
|
194
|
+
# Expected: exit 2, protected branch message
|
|
195
|
+
```
|
|
196
|
+
|
|
197
|
+
**2. Allow push to main with GIT_BIGPOWERS_LAND=1:**
|
|
198
|
+
```bash
|
|
199
|
+
GIT_BIGPOWERS_LAND=1 echo '{"tool_input":{"command":"git push origin main"}}' | ./pre-tool-use.sh
|
|
200
|
+
# Expected: exit 0 (when on main)
|
|
201
|
+
```
|
|
202
|
+
|
|
203
|
+
**3. Allow push to feature branch:**
|
|
204
|
+
```bash
|
|
205
|
+
echo '{"tool_input":{"command":"git push -u origin feat/my-task"}}' | ./pre-tool-use.sh
|
|
206
|
+
# Expected: exit 0
|
|
207
|
+
```
|
|
208
|
+
|
|
209
|
+
**4. Conventional Commits (Gemini mode):**
|
|
210
|
+
```bash
|
|
211
|
+
echo '{"tool_input":{"command":"git commit -m \"bad message\""}}' | GIT_GUARDRAILS_MODE=gemini ./pre-tool-use.sh
|
|
212
|
+
# Expected: exit 0, {"decision":"deny", "reason":"..."}
|
|
213
|
+
```
|
|
214
|
+
|
|
215
|
+
**5. Protected Branch commit (Cursor mode):**
|
|
216
|
+
```bash
|
|
217
|
+
# Run on 'main' branch
|
|
218
|
+
echo '{"command":"git commit -m \"feat: valid message\""}' | GIT_GUARDRAILS_MODE=cursor ./pre-tool-use.sh
|
|
219
|
+
# Expected: exit 2, "Direct commits to protected branch 'main' are forbidden"
|
|
220
|
+
```
|
|
221
|
+
|
|
222
|
+
**6. Land script exists:**
|
|
223
|
+
```bash
|
|
224
|
+
test -x scripts/land-branch.sh && echo OK
|
|
225
|
+
```
|
|
226
|
+
|
|
227
|
+
**7. Allow (Gemini mode):**
|
|
228
|
+
```bash
|
|
229
|
+
echo '{"tool_input":{"command":"git status"}}' | GIT_GUARDRAILS_MODE=gemini ./pre-tool-use.sh
|
|
230
|
+
# Expected: exit 0, {"decision":"allow"}
|
|
231
|
+
```
|
|
@@ -0,0 +1,288 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: harden-vps
|
|
3
|
+
model: haiku
|
|
4
|
+
description: "Harden a production Linux VPS for BigBase across three layers — BigBase app (systemd hardening, monitoring alerts, backup automation), Ubuntu OS (UFW firewall, fail2ban SSH, unattended-upgrades, SSH hardening), and Contabo VPS (health checks, daily backups, monthly snapshots). Use when the user wants to secure a production server, harden a VPS, audit server security, or mentions production hardening, VPS security, or harden the server."
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Harden VPS
|
|
8
|
+
|
|
9
|
+
Three-layer production hardening for BigBase on Contabo VPS. Each layer independently verifiable. Apply OS first (firewall blocks attacks immediately), then BigBase (alerts + backups), then Contabo (snapshots). See [REFERENCE.md](REFERENCE.md) for full script bodies, systemd unit template, and gotchas.
|
|
10
|
+
|
|
11
|
+
## Quick start
|
|
12
|
+
|
|
13
|
+
SSH as root into the VPS. Find credentials in the Contabo Customer Control Panel.
|
|
14
|
+
|
|
15
|
+
> **HARD GATE** — Run `ufw status` first. No firewall = layer 1 takes priority over everything.
|
|
16
|
+
|
|
17
|
+
## Layer 1 — Ubuntu OS
|
|
18
|
+
|
|
19
|
+
```bash
|
|
20
|
+
# UFW
|
|
21
|
+
ufw default deny incoming && ufw default allow outgoing
|
|
22
|
+
ufw allow 22/tcp && ufw allow 80/tcp && ufw allow 443/tcp && ufw enable
|
|
23
|
+
# → verify: ufw status | grep -q active
|
|
24
|
+
|
|
25
|
+
# fail2ban
|
|
26
|
+
apt install -y fail2ban
|
|
27
|
+
# Configure /etc/fail2ban/jail.local: sshd, maxretry=3, bantime=3600, findtime=600
|
|
28
|
+
systemctl restart fail2ban
|
|
29
|
+
# → verify: fail2ban-client status sshd
|
|
30
|
+
|
|
31
|
+
# unattended-upgrades
|
|
32
|
+
apt install -y unattended-upgrades && dpkg-reconfigure -plow unattended-upgrades
|
|
33
|
+
# → verify: systemctl is-active unattended-upgrades | grep -q active
|
|
34
|
+
|
|
35
|
+
# SSH: PermitRootLogin no, PasswordAuthentication no, PubkeyAuthentication yes
|
|
36
|
+
# → verify: sshd -T | grep -E 'permitrootlogin no|passwordauthentication no'
|
|
37
|
+
|
|
38
|
+
# Deploy healthcheck.sh → /opt/bigbase/scripts/healthcheck.sh
|
|
39
|
+
# Crontab: */5 * * * * /opt/bigbase/scripts/healthcheck.sh
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
## Layer 2 — BigBase application
|
|
43
|
+
|
|
44
|
+
```bash
|
|
45
|
+
# systemd: User=bigbase, NoNewPrivileges=yes, ProtectSystem=full,
|
|
46
|
+
# ProtectKernelTunables=yes, ProtectKernelModules=yes,
|
|
47
|
+
# ProtectControlGroups=yes, RestrictAddressFamilies=AF_INET AF_INET6,
|
|
48
|
+
# RestrictRealtime=yes, PrivateTmp=yes, LimitNOFILE=65536
|
|
49
|
+
# → verify: systemctl show bigbase -p NoNewPrivileges -p ProtectSystem -p User
|
|
50
|
+
|
|
51
|
+
# Alerts (BigBase requires auth; insert via SQLite)
|
|
52
|
+
sqlite3 /opt/bigbase/data/bigbase.db "
|
|
53
|
+
INSERT INTO monitoring_alerts (id,name,metric,threshold,operator,enabled,duration_seconds)
|
|
54
|
+
VALUES ('a1','Disk >80%','disk_used_percent',80,'gt',1,300);
|
|
55
|
+
INSERT INTO monitoring_alerts (id,name,metric,threshold,operator,enabled,duration_seconds)
|
|
56
|
+
VALUES ('a2','CPU >90%','cpu_percent',90,'gt',1,60);
|
|
57
|
+
INSERT INTO monitoring_alerts (id,name,metric,threshold,operator,enabled,duration_seconds)
|
|
58
|
+
VALUES ('a3','RAM >85%','mem_used_percent',85,'gt',1,120);
|
|
59
|
+
"
|
|
60
|
+
systemctl restart bigbase
|
|
61
|
+
|
|
62
|
+
# Backup crontab (root):
|
|
63
|
+
# 0 2 * * * cp /opt/bigbase/data/bigbase.db /backup/bigbase-$(date +\%Y\%m\%d).db
|
|
64
|
+
# 0 3 * * * find /backup/ -name "bigbase-*.db" -mtime +90 -delete
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
## Layer 3 — Contabo VPS
|
|
68
|
+
|
|
69
|
+
```bash
|
|
70
|
+
# cntb CLI
|
|
71
|
+
curl -sL "$(curl -sL https://api.github.com/repos/contabo/cntb/releases/latest \
|
|
72
|
+
| grep browser_download_url.*linux_amd64.tar.gz | head -1 | cut -d'"' -f4)" \
|
|
73
|
+
| tar xz -C /usr/local/bin
|
|
74
|
+
|
|
75
|
+
# Snapshot script → /opt/bigbase/scripts/contabo-snapshot.sh (reads from /opt/bigbase/.env)
|
|
76
|
+
# Credentials as env vars in /opt/bigbase/.env (deployed by GitHub Actions):
|
|
77
|
+
# CONTABO_CLIENT_ID, CONTABO_CLIENT_SECRET, CONTABO_API_USER, CONTABO_API_PASSWORD
|
|
78
|
+
# Crontab: 0 4 1 * * /opt/bigbase/scripts/contabo-snapshot.sh
|
|
79
|
+
|
|
80
|
+
# > HARD GATE — Snapshot cron silently fails until env vars are set in .env.
|
|
81
|
+
# Credentials source: Contabo Customer Panel → API Details.
|
|
82
|
+
# Local dev: add to .envrc. Production: GitHub Secrets → deploy → /opt/bigbase/.env
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
## CRITICAL GOTCHAS
|
|
86
|
+
|
|
87
|
+
1. **Shell escaping in Orca terminals:** `$VAR`, `$(…)`, and `%` get eaten by the local shell. Always use base64: `echo '<base64>' | base64 -d > script.sh`
|
|
88
|
+
2. **Crontab `%`:** cron interprets `%` as newline. Escape as `\%` in `$(date +\%Y\%m\%d)`
|
|
89
|
+
3. **fail2ban exit 255:** means a jail references a missing log file. Remove the broken jail, restart.
|
|
90
|
+
4. **BigBase alerts need auth:** POST to `/api/monitoring/alerts` requires Bearer token. Workaround: insert directly into SQLite, then restart BigBase.
|
|
91
|
+
|
|
92
|
+
## Verify all 8 gates
|
|
93
|
+
|
|
94
|
+
```bash
|
|
95
|
+
ufw status|grep -q active||echo FAIL:ufw
|
|
96
|
+
fail2ban-client status sshd>/dev/null 2>&1||echo FAIL:fail2ban
|
|
97
|
+
systemctl is-active unattended-upgrades|grep -q active||echo FAIL:unattended
|
|
98
|
+
sshd -T|grep -q 'permitrootlogin no'||echo FAIL:sshd
|
|
99
|
+
systemctl show bigbase -p NoNewPrivileges|grep -q yes||echo FAIL:systemd
|
|
100
|
+
systemctl is-active bigbase|grep -q active||echo FAIL:bigbase
|
|
101
|
+
sqlite3 /opt/bigbase/data/bigbase.db "SELECT count(*) FROM monitoring_alerts"|grep -q 3||echo FAIL:alerts
|
|
102
|
+
crontab -l|grep -q healthcheck&&crontab -l|grep -q bigbase.db&&crontab -l|grep -q contabo-snapshot||echo FAIL:crontab
|
|
103
|
+
echo ALL 8 GATES PASSED
|
|
104
|
+
```
|
|
105
|
+
|
|
106
|
+
→ verify: run the 8-gate one-liner on the VPS.
|
|
107
|
+
|
|
108
|
+
---
|
|
109
|
+
|
|
110
|
+
# Harden VPS — Reference
|
|
111
|
+
|
|
112
|
+
## Health check script
|
|
113
|
+
|
|
114
|
+
Deploy to `/opt/bigbase/scripts/healthcheck.sh`:
|
|
115
|
+
|
|
116
|
+
```bash
|
|
117
|
+
#!/bin/bash
|
|
118
|
+
LOG=/var/log/bigbase/health.log
|
|
119
|
+
mkdir -p /var/log/bigbase
|
|
120
|
+
DISK=$(df / | awk 'NR==2 {print $5}' | tr -d '%')
|
|
121
|
+
RAM=$(free | awk '/Mem:/ {printf "%.0f", $3/$2*100}')
|
|
122
|
+
NOW=$(date -Iseconds)
|
|
123
|
+
[ "$DISK" -gt 85 ] && echo "$NOW ALERT: Disk ${DISK}%" >> "$LOG"
|
|
124
|
+
[ "$RAM" -gt 90 ] && echo "$NOW ALERT: RAM ${RAM}%" >> "$LOG"
|
|
125
|
+
systemctl is-active --quiet bigbase || { echo "$NOW ALERT: BigBase DOWN" >> "$LOG"; systemctl restart bigbase; }
|
|
126
|
+
[ -f /var/run/reboot-required ] && echo "$NOW WARN: kernel reboot pending" >> "$LOG"
|
|
127
|
+
```
|
|
128
|
+
|
|
129
|
+
Make executable: `chmod +x /opt/bigbase/scripts/healthcheck.sh`
|
|
130
|
+
|
|
131
|
+
## BigBase systemd unit
|
|
132
|
+
|
|
133
|
+
Full hardened unit at `/etc/systemd/system/bigbase.service`:
|
|
134
|
+
|
|
135
|
+
```ini
|
|
136
|
+
[Unit]
|
|
137
|
+
Description=BigBase BaaS Platform
|
|
138
|
+
Documentation=https://github.com/danielvm-git/bigbase
|
|
139
|
+
After=network.target caddy.service
|
|
140
|
+
Wants=caddy.service
|
|
141
|
+
|
|
142
|
+
[Service]
|
|
143
|
+
Type=simple
|
|
144
|
+
User=bigbase
|
|
145
|
+
Group=bigbase
|
|
146
|
+
WorkingDirectory=/opt/bigbase
|
|
147
|
+
ExecStart=/opt/bigbase/bin/bigbase serve \
|
|
148
|
+
--port 8080 \
|
|
149
|
+
--db /opt/bigbase/data/bigbase.db \
|
|
150
|
+
--sites-domain <your-domain.example.com>
|
|
151
|
+
EnvironmentFile=-/opt/bigbase/.env
|
|
152
|
+
Environment=BIGBASE_HOME=/opt/bigbase
|
|
153
|
+
Environment=HOME=/opt/bigbase
|
|
154
|
+
Environment=NPM_CONFIG_CACHE=/opt/bigbase/.npm
|
|
155
|
+
Environment=PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
|
|
156
|
+
Restart=always
|
|
157
|
+
RestartSec=5
|
|
158
|
+
StartLimitIntervalSec=60
|
|
159
|
+
StartLimitBurst=3
|
|
160
|
+
TimeoutStopSec=30
|
|
161
|
+
KillSignal=SIGTERM
|
|
162
|
+
NoNewPrivileges=yes
|
|
163
|
+
PrivateTmp=yes
|
|
164
|
+
ProtectSystem=full
|
|
165
|
+
ProtectHome=yes
|
|
166
|
+
ProtectKernelTunables=yes
|
|
167
|
+
ProtectKernelModules=yes
|
|
168
|
+
ProtectControlGroups=yes
|
|
169
|
+
RestrictAddressFamilies=AF_INET AF_INET6
|
|
170
|
+
RestrictRealtime=yes
|
|
171
|
+
ReadWritePaths=/opt/bigbase/data
|
|
172
|
+
ReadWritePaths=/opt/bigbase/backups
|
|
173
|
+
ReadWritePaths=/opt/bigbase/secrets
|
|
174
|
+
ReadWritePaths=/opt/bigbase/.npm
|
|
175
|
+
ReadWritePaths=/opt/bigbase/logs
|
|
176
|
+
LimitNOFILE=65536
|
|
177
|
+
|
|
178
|
+
[Install]
|
|
179
|
+
WantedBy=multi-user.target
|
|
180
|
+
```
|
|
181
|
+
|
|
182
|
+
## fail2ban jail.local
|
|
183
|
+
|
|
184
|
+
```ini
|
|
185
|
+
[sshd]
|
|
186
|
+
enabled = true
|
|
187
|
+
port = ssh
|
|
188
|
+
filter = sshd
|
|
189
|
+
logpath = /var/log/auth.log
|
|
190
|
+
maxretry = 3
|
|
191
|
+
bantime = 3600
|
|
192
|
+
findtime = 600
|
|
193
|
+
```
|
|
194
|
+
|
|
195
|
+
Note: BigBase auth jail deferred — BigBase logs to journald, not a file. To enable, use `backend = systemd` with a journald filter.
|
|
196
|
+
|
|
197
|
+
## contabo-snapshot.sh
|
|
198
|
+
|
|
199
|
+
Deploy to `/opt/bigbase/scripts/contabo-snapshot.sh`. Reads credentials from `/opt/bigbase/.env` (same file used by BigBase systemd unit):
|
|
200
|
+
|
|
201
|
+
```bash
|
|
202
|
+
#!/bin/bash
|
|
203
|
+
set -e
|
|
204
|
+
LOG=/var/log/bigbase/snapshot.log
|
|
205
|
+
ENVFILE=/opt/bigbase/.env
|
|
206
|
+
INSTANCE_ID=<your-contabo-instance-id>
|
|
207
|
+
|
|
208
|
+
[ -f "$ENVFILE" ] || { echo "$(date -Iseconds) ERROR: $ENVFILE missing" >> "$LOG"; exit 1; }
|
|
209
|
+
set -a; source "$ENVFILE"; set +a
|
|
210
|
+
|
|
211
|
+
[ -z "$CONTABO_CLIENT_ID" ] && { echo "$(date -Iseconds) ERROR: CONTABO_CLIENT_ID not set" >> "$LOG"; exit 1; }
|
|
212
|
+
|
|
213
|
+
TOKEN=$(curl -s -d "client_id=$CONTABO_CLIENT_ID" \
|
|
214
|
+
-d "client_secret=$CONTABO_CLIENT_SECRET" \
|
|
215
|
+
--data-urlencode "username=$CONTABO_API_USER" \
|
|
216
|
+
--data-urlencode "password=$CONTABO_API_PASSWORD" \
|
|
217
|
+
-d 'grant_type=password' \
|
|
218
|
+
'https://auth.contabo.com/auth/realms/contabo/protocol/openid-connect/token' \
|
|
219
|
+
| jq -r '.access_token')
|
|
220
|
+
|
|
221
|
+
[ -z "$TOKEN" ] || [ "$TOKEN" = "null" ] && { echo "$(date -Iseconds) ERROR: auth failed" >> "$LOG"; exit 1; }
|
|
222
|
+
|
|
223
|
+
curl -s -X POST \
|
|
224
|
+
-H "Authorization: Bearer $TOKEN" \
|
|
225
|
+
-H "Content-Type: application/json" \
|
|
226
|
+
-H "x-request-id: $(uuidgen 2>/dev/null || echo $RANDOM)" \
|
|
227
|
+
"https://api.contabo.com/v1/compute/instances/${INSTANCE_ID}/snapshots" \
|
|
228
|
+
| tee -a "$LOG"
|
|
229
|
+
|
|
230
|
+
echo >> "$LOG"
|
|
231
|
+
echo "$(date -Iseconds) Snapshot requested for $INSTANCE_ID" >> "$LOG"
|
|
232
|
+
```
|
|
233
|
+
|
|
234
|
+
## Contabo credentials
|
|
235
|
+
|
|
236
|
+
Add to `/opt/bigbase/.env` (same file used by BigBase systemd unit, deployed by GitHub Actions):
|
|
237
|
+
|
|
238
|
+
```
|
|
239
|
+
CONTABO_CLIENT_ID=
|
|
240
|
+
CONTABO_CLIENT_SECRET=
|
|
241
|
+
CONTABO_API_USER=
|
|
242
|
+
CONTABO_API_PASSWORD=
|
|
243
|
+
```
|
|
244
|
+
|
|
245
|
+
Source: Contabo Customer Control Panel → API Details. ClientId and ClientSecret are generated there. API User is your email. API Password is set separately in the panel.
|
|
246
|
+
|
|
247
|
+
**Pipeline:** GitHub Secrets → deploy workflow → `/opt/bigbase/.env` on VPS. For local dev (`cntb get instances`), add to `.envrc`.
|
|
248
|
+
|
|
249
|
+
## Contabo instance info template
|
|
250
|
+
|
|
251
|
+
Fill in your instance details from the Contabo Customer Control Panel:
|
|
252
|
+
|
|
253
|
+
```
|
|
254
|
+
IP: <your-instance-ip>
|
|
255
|
+
IPv6: <your-instance-ipv6>
|
|
256
|
+
Region: <your-region>
|
|
257
|
+
OS: <your-os-version>
|
|
258
|
+
Disk: <your-disk-size>
|
|
259
|
+
Default user: root
|
|
260
|
+
Customer ID: <your-customer-id>
|
|
261
|
+
```
|
|
262
|
+
|
|
263
|
+
## BigBase monitoring alert SQL
|
|
264
|
+
|
|
265
|
+
```sql
|
|
266
|
+
INSERT INTO monitoring_alerts (id, name, metric, threshold, operator, enabled, duration_seconds)
|
|
267
|
+
VALUES ('alert-001', 'VPS Disk above 80%', 'disk_used_percent', 80, 'gt', 1, 300);
|
|
268
|
+
|
|
269
|
+
INSERT INTO monitoring_alerts (id, name, metric, threshold, operator, enabled, duration_seconds)
|
|
270
|
+
VALUES ('alert-002', 'VPS CPU above 90%', 'cpu_percent', 90, 'gt', 1, 60);
|
|
271
|
+
|
|
272
|
+
INSERT INTO monitoring_alerts (id, name, metric, threshold, operator, enabled, duration_seconds)
|
|
273
|
+
VALUES ('alert-003', 'VPS RAM above 85%', 'mem_used_percent', 85, 'gt', 1, 120);
|
|
274
|
+
```
|
|
275
|
+
|
|
276
|
+
Alerts are loaded at BigBase startup. Restart with `systemctl restart bigbase` after inserting.
|
|
277
|
+
|
|
278
|
+
## Base64 encoding workaround
|
|
279
|
+
|
|
280
|
+
When sending scripts through Orca terminal `--text`, the local bash shell interprets `$`, `(`, and `%`. Encode locally and decode remotely:
|
|
281
|
+
|
|
282
|
+
```bash
|
|
283
|
+
# Local
|
|
284
|
+
cat script.sh | base64
|
|
285
|
+
|
|
286
|
+
# Remote terminal
|
|
287
|
+
echo '<base64-output>' | base64 -d > script.sh
|
|
288
|
+
```
|