bigpowers 2.86.4 → 2.86.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.agents/skills/commit-message/SKILL.md +1 -1
- package/.agents/skills/craft-skill/SKILL.md +2 -2
- package/.agents/skills/define-success/SKILL.md +6 -59
- package/.agents/skills/deploy/SKILL.md +1 -1
- package/.agents/skills/elaborate-spec/SKILL.md +1 -1
- package/.agents/skills/evolve-skill/SKILL.md +1 -1
- package/.agents/skills/harden-vps/SKILL.md +63 -60
- package/.agents/skills/investigate-bug/SKILL.md +2 -2
- package/.agents/skills/orchestrate-project/SKILL.md +1 -1
- package/.agents/skills/plan-refactor/SKILL.md +2 -2
- package/.agents/skills/plan-release/SKILL.md +2 -2
- package/.agents/skills/plan-work/SKILL.md +1 -1
- package/.agents/skills/using-bigpowers/SKILL.md +2 -2
- package/.agents/skills/wire-ci/SKILL.md +11 -14
- package/.agents/skills/write-document/SKILL.md +1 -1
- package/.cline/skills/align-grid/SKILL.md +110 -0
- package/.cline/skills/assess-impact/SKILL.md +91 -0
- package/.cline/skills/audit-code/SKILL.md +184 -0
- package/.cline/skills/audit-plan/SKILL.md +89 -0
- package/.cline/skills/build-epic/SKILL.md +105 -0
- package/.cline/skills/change-request/SKILL.md +121 -0
- package/.cline/skills/commit-message/SKILL.md +140 -0
- package/.cline/skills/compose-workflow/SKILL.md +82 -0
- package/.cline/skills/context7-mcp/SKILL.md +55 -0
- package/.cline/skills/craft-skill/SKILL.md +196 -0
- package/.cline/skills/deepen-architecture/SKILL.md +260 -0
- package/.cline/skills/define-language/SKILL.md +80 -0
- package/.cline/skills/define-success/SKILL.md +12 -0
- package/.cline/skills/delegate-task/SKILL.md +91 -0
- package/.cline/skills/deploy/SKILL.md +198 -0
- package/.cline/skills/design-interface/SKILL.md +97 -0
- package/.cline/skills/develop-tdd/SKILL.md +416 -0
- package/.cline/skills/diagnose-root/SKILL.md +24 -0
- package/.cline/skills/diagnose-stall/SKILL.md +54 -0
- package/.cline/skills/dispatch-agents/SKILL.md +118 -0
- package/.cline/skills/edit-document/SKILL.md +23 -0
- package/.cline/skills/elaborate-spec/SKILL.md +101 -0
- package/.cline/skills/enforce-first/SKILL.md +45 -0
- package/.cline/skills/evolve-skill/SKILL.md +55 -0
- package/.cline/skills/execute-plan/SKILL.md +61 -0
- package/.cline/skills/extract-design/SKILL.md +132 -0
- package/.cline/skills/find-way/SKILL.md +191 -0
- package/.cline/skills/fix-bug/SKILL.md +67 -0
- package/.cline/skills/gate-trace/SKILL.md +92 -0
- package/.cline/skills/generate-allure-report/SKILL.md +285 -0
- package/.cline/skills/grill-me/SKILL.md +108 -0
- package/.cline/skills/grill-with-docs/SKILL.md +53 -0
- package/.cline/skills/guard-git/SKILL.md +231 -0
- package/.cline/skills/harden-vps/SKILL.md +291 -0
- package/.cline/skills/hook-commits/SKILL.md +94 -0
- package/.cline/skills/inspect-quality/SKILL.md +106 -0
- package/.cline/skills/investigate-bug/SKILL.md +127 -0
- package/.cline/skills/kickoff-branch/SKILL.md +143 -0
- package/.cline/skills/maintain-wiki/SKILL.md +64 -0
- package/.cline/skills/map-codebase/SKILL.md +71 -0
- package/.cline/skills/migrate-spec/SKILL.md +862 -0
- package/.cline/skills/model-domain/SKILL.md +232 -0
- package/.cline/skills/orchestrate-project/SKILL.md +174 -0
- package/.cline/skills/organize-workspace/SKILL.md +164 -0
- package/.cline/skills/plan-refactor/SKILL.md +87 -0
- package/.cline/skills/plan-release/SKILL.md +145 -0
- package/.cline/skills/plan-tests/SKILL.md +75 -0
- package/.cline/skills/plan-work/SKILL.md +260 -0
- package/.cline/skills/publish-package/SKILL.md +328 -0
- package/.cline/skills/quick-fix/SKILL.md +114 -0
- package/.cline/skills/release-branch/SKILL.md +298 -0
- package/.cline/skills/request-review/SKILL.md +113 -0
- package/.cline/skills/research-first/SKILL.md +87 -0
- package/.cline/skills/reset-baseline/SKILL.md +21 -0
- package/.cline/skills/respond-review/SKILL.md +71 -0
- package/.cline/skills/run-benchmark/SKILL.md +85 -0
- package/.cline/skills/run-evals/SKILL.md +80 -0
- package/.cline/skills/run-planning/SKILL.md +101 -0
- package/.cline/skills/scope-work/SKILL.md +63 -0
- package/.cline/skills/search-skills/SKILL.md +73 -0
- package/.cline/skills/security-review/SKILL.md +384 -0
- package/.cline/skills/seed-conventions/SKILL.md +302 -0
- package/.cline/skills/session-state/SKILL.md +146 -0
- package/.cline/skills/setup-environment/SKILL.md +39 -0
- package/.cline/skills/simulate-agents/SKILL.md +26 -0
- package/.cline/skills/slice-tasks/SKILL.md +68 -0
- package/.cline/skills/smoke-test/SKILL.md +257 -0
- package/.cline/skills/spike-prototype/SKILL.md +95 -0
- package/.cline/skills/stocktake-skills/SKILL.md +74 -0
- package/.cline/skills/survey-context/SKILL.md +135 -0
- package/.cline/skills/terse-mode/SKILL.md +42 -0
- package/.cline/skills/trace-requirement/SKILL.md +69 -0
- package/.cline/skills/using-bigpowers/SKILL.md +111 -0
- package/.cline/skills/validate-contracts/SKILL.md +277 -0
- package/.cline/skills/validate-fix/SKILL.md +147 -0
- package/.cline/skills/verify-work/SKILL.md +191 -0
- package/.cline/skills/visual-dashboard/SKILL.md +50 -0
- package/.cline/skills/wire-ci/SKILL.md +374 -0
- package/.cline/skills/wire-observability/SKILL.md +97 -0
- package/.cline/skills/write-document/SKILL.md +255 -0
- package/.codebuddy/skills/commit-message/SKILL.md +1 -1
- package/.codebuddy/skills/craft-skill/SKILL.md +2 -2
- package/.codebuddy/skills/define-success/SKILL.md +6 -59
- package/.codebuddy/skills/deploy/SKILL.md +1 -1
- package/.codebuddy/skills/elaborate-spec/SKILL.md +1 -1
- package/.codebuddy/skills/evolve-skill/SKILL.md +1 -1
- package/.codebuddy/skills/harden-vps/SKILL.md +63 -60
- package/.codebuddy/skills/investigate-bug/SKILL.md +2 -2
- package/.codebuddy/skills/orchestrate-project/SKILL.md +1 -1
- package/.codebuddy/skills/plan-refactor/SKILL.md +2 -2
- package/.codebuddy/skills/plan-release/SKILL.md +2 -2
- package/.codebuddy/skills/plan-work/SKILL.md +1 -1
- package/.codebuddy/skills/using-bigpowers/SKILL.md +2 -2
- package/.codebuddy/skills/wire-ci/SKILL.md +11 -14
- package/.codebuddy/skills/write-document/SKILL.md +1 -1
- package/.codex/skills/commit-message/SKILL.md +1 -1
- package/.codex/skills/craft-skill/SKILL.md +2 -2
- package/.codex/skills/define-success/SKILL.md +6 -59
- package/.codex/skills/deploy/SKILL.md +1 -1
- package/.codex/skills/elaborate-spec/SKILL.md +1 -1
- package/.codex/skills/evolve-skill/SKILL.md +1 -1
- package/.codex/skills/harden-vps/SKILL.md +63 -60
- package/.codex/skills/investigate-bug/SKILL.md +2 -2
- package/.codex/skills/orchestrate-project/SKILL.md +1 -1
- package/.codex/skills/plan-refactor/SKILL.md +2 -2
- package/.codex/skills/plan-release/SKILL.md +2 -2
- package/.codex/skills/plan-work/SKILL.md +1 -1
- package/.codex/skills/using-bigpowers/SKILL.md +2 -2
- package/.codex/skills/wire-ci/SKILL.md +11 -14
- package/.codex/skills/write-document/SKILL.md +1 -1
- package/.copilot/skills/align-grid/SKILL.md +110 -0
- package/.copilot/skills/assess-impact/SKILL.md +91 -0
- package/.copilot/skills/audit-code/SKILL.md +184 -0
- package/.copilot/skills/audit-plan/SKILL.md +89 -0
- package/.copilot/skills/build-epic/SKILL.md +105 -0
- package/.copilot/skills/change-request/SKILL.md +121 -0
- package/.copilot/skills/commit-message/SKILL.md +140 -0
- package/.copilot/skills/compose-workflow/SKILL.md +82 -0
- package/.copilot/skills/context7-mcp/SKILL.md +55 -0
- package/.copilot/skills/craft-skill/SKILL.md +196 -0
- package/.copilot/skills/deepen-architecture/SKILL.md +260 -0
- package/.copilot/skills/define-language/SKILL.md +80 -0
- package/.copilot/skills/define-success/SKILL.md +12 -0
- package/.copilot/skills/delegate-task/SKILL.md +91 -0
- package/.copilot/skills/deploy/SKILL.md +198 -0
- package/.copilot/skills/design-interface/SKILL.md +97 -0
- package/.copilot/skills/develop-tdd/SKILL.md +416 -0
- package/.copilot/skills/diagnose-root/SKILL.md +24 -0
- package/.copilot/skills/diagnose-stall/SKILL.md +54 -0
- package/.copilot/skills/dispatch-agents/SKILL.md +118 -0
- package/.copilot/skills/edit-document/SKILL.md +23 -0
- package/.copilot/skills/elaborate-spec/SKILL.md +101 -0
- package/.copilot/skills/enforce-first/SKILL.md +45 -0
- package/.copilot/skills/evolve-skill/SKILL.md +55 -0
- package/.copilot/skills/execute-plan/SKILL.md +61 -0
- package/.copilot/skills/extract-design/SKILL.md +132 -0
- package/.copilot/skills/find-way/SKILL.md +191 -0
- package/.copilot/skills/fix-bug/SKILL.md +67 -0
- package/.copilot/skills/gate-trace/SKILL.md +92 -0
- package/.copilot/skills/generate-allure-report/SKILL.md +285 -0
- package/.copilot/skills/grill-me/SKILL.md +108 -0
- package/.copilot/skills/grill-with-docs/SKILL.md +53 -0
- package/.copilot/skills/guard-git/SKILL.md +231 -0
- package/.copilot/skills/harden-vps/SKILL.md +291 -0
- package/.copilot/skills/hook-commits/SKILL.md +94 -0
- package/.copilot/skills/inspect-quality/SKILL.md +106 -0
- package/.copilot/skills/investigate-bug/SKILL.md +127 -0
- package/.copilot/skills/kickoff-branch/SKILL.md +143 -0
- package/.copilot/skills/maintain-wiki/SKILL.md +64 -0
- package/.copilot/skills/map-codebase/SKILL.md +71 -0
- package/.copilot/skills/migrate-spec/SKILL.md +862 -0
- package/.copilot/skills/model-domain/SKILL.md +232 -0
- package/.copilot/skills/orchestrate-project/SKILL.md +174 -0
- package/.copilot/skills/organize-workspace/SKILL.md +164 -0
- package/.copilot/skills/plan-refactor/SKILL.md +87 -0
- package/.copilot/skills/plan-release/SKILL.md +145 -0
- package/.copilot/skills/plan-tests/SKILL.md +75 -0
- package/.copilot/skills/plan-work/SKILL.md +260 -0
- package/.copilot/skills/publish-package/SKILL.md +328 -0
- package/.copilot/skills/quick-fix/SKILL.md +114 -0
- package/.copilot/skills/release-branch/SKILL.md +298 -0
- package/.copilot/skills/request-review/SKILL.md +113 -0
- package/.copilot/skills/research-first/SKILL.md +87 -0
- package/.copilot/skills/reset-baseline/SKILL.md +21 -0
- package/.copilot/skills/respond-review/SKILL.md +71 -0
- package/.copilot/skills/run-benchmark/SKILL.md +85 -0
- package/.copilot/skills/run-evals/SKILL.md +80 -0
- package/.copilot/skills/run-planning/SKILL.md +101 -0
- package/.copilot/skills/scope-work/SKILL.md +63 -0
- package/.copilot/skills/search-skills/SKILL.md +73 -0
- package/.copilot/skills/security-review/SKILL.md +384 -0
- package/.copilot/skills/seed-conventions/SKILL.md +302 -0
- package/.copilot/skills/session-state/SKILL.md +146 -0
- package/.copilot/skills/setup-environment/SKILL.md +39 -0
- package/.copilot/skills/simulate-agents/SKILL.md +26 -0
- package/.copilot/skills/slice-tasks/SKILL.md +68 -0
- package/.copilot/skills/smoke-test/SKILL.md +257 -0
- package/.copilot/skills/spike-prototype/SKILL.md +95 -0
- package/.copilot/skills/stocktake-skills/SKILL.md +74 -0
- package/.copilot/skills/survey-context/SKILL.md +135 -0
- package/.copilot/skills/terse-mode/SKILL.md +42 -0
- package/.copilot/skills/trace-requirement/SKILL.md +69 -0
- package/.copilot/skills/using-bigpowers/SKILL.md +111 -0
- package/.copilot/skills/validate-contracts/SKILL.md +277 -0
- package/.copilot/skills/validate-fix/SKILL.md +147 -0
- package/.copilot/skills/verify-work/SKILL.md +191 -0
- package/.copilot/skills/visual-dashboard/SKILL.md +50 -0
- package/.copilot/skills/wire-ci/SKILL.md +374 -0
- package/.copilot/skills/wire-observability/SKILL.md +97 -0
- package/.copilot/skills/write-document/SKILL.md +255 -0
- package/.hermes/skills/commit-message/SKILL.md +1 -1
- package/.hermes/skills/craft-skill/SKILL.md +2 -2
- package/.hermes/skills/define-success/SKILL.md +6 -59
- package/.hermes/skills/deploy/SKILL.md +1 -1
- package/.hermes/skills/elaborate-spec/SKILL.md +1 -1
- package/.hermes/skills/evolve-skill/SKILL.md +1 -1
- package/.hermes/skills/harden-vps/SKILL.md +63 -60
- package/.hermes/skills/investigate-bug/SKILL.md +2 -2
- package/.hermes/skills/orchestrate-project/SKILL.md +1 -1
- package/.hermes/skills/plan-refactor/SKILL.md +2 -2
- package/.hermes/skills/plan-release/SKILL.md +2 -2
- package/.hermes/skills/plan-work/SKILL.md +1 -1
- package/.hermes/skills/using-bigpowers/SKILL.md +2 -2
- package/.hermes/skills/wire-ci/SKILL.md +11 -14
- package/.hermes/skills/write-document/SKILL.md +1 -1
- package/.kilocode/rules/commit-message.md +1 -1
- package/.kilocode/rules/craft-skill.md +2 -2
- package/.kilocode/rules/define-success.md +6 -59
- package/.kilocode/rules/deploy.md +1 -1
- package/.kilocode/rules/elaborate-spec.md +1 -1
- package/.kilocode/rules/evolve-skill.md +1 -1
- package/.kilocode/rules/harden-vps.md +63 -60
- package/.kilocode/rules/investigate-bug.md +2 -2
- package/.kilocode/rules/orchestrate-project.md +1 -1
- package/.kilocode/rules/plan-refactor.md +2 -2
- package/.kilocode/rules/plan-release.md +2 -2
- package/.kilocode/rules/plan-work.md +1 -1
- package/.kilocode/rules/using-bigpowers.md +2 -2
- package/.kilocode/rules/wire-ci.md +11 -14
- package/.kilocode/rules/write-document.md +1 -1
- package/.mimocode/skills/commit-message/SKILL.md +1 -1
- package/.mimocode/skills/craft-skill/SKILL.md +2 -2
- package/.mimocode/skills/define-success/SKILL.md +6 -59
- package/.mimocode/skills/deploy/SKILL.md +1 -1
- package/.mimocode/skills/elaborate-spec/SKILL.md +1 -1
- package/.mimocode/skills/evolve-skill/SKILL.md +1 -1
- package/.mimocode/skills/harden-vps/SKILL.md +63 -60
- package/.mimocode/skills/investigate-bug/SKILL.md +2 -2
- package/.mimocode/skills/orchestrate-project/SKILL.md +1 -1
- package/.mimocode/skills/plan-refactor/SKILL.md +2 -2
- package/.mimocode/skills/plan-release/SKILL.md +2 -2
- package/.mimocode/skills/plan-work/SKILL.md +1 -1
- package/.mimocode/skills/using-bigpowers/SKILL.md +2 -2
- package/.mimocode/skills/wire-ci/SKILL.md +11 -14
- package/.mimocode/skills/write-document/SKILL.md +1 -1
- package/.opencode/skills/align-grid/SKILL.md +110 -0
- package/.opencode/skills/assess-impact/SKILL.md +91 -0
- package/.opencode/skills/audit-code/SKILL.md +184 -0
- package/.opencode/skills/audit-plan/SKILL.md +89 -0
- package/.opencode/skills/build-epic/SKILL.md +105 -0
- package/.opencode/skills/change-request/SKILL.md +121 -0
- package/.opencode/skills/commit-message/SKILL.md +140 -0
- package/.opencode/skills/compose-workflow/SKILL.md +82 -0
- package/.opencode/skills/context7-mcp/SKILL.md +55 -0
- package/.opencode/skills/craft-skill/SKILL.md +196 -0
- package/.opencode/skills/deepen-architecture/SKILL.md +260 -0
- package/.opencode/skills/define-language/SKILL.md +80 -0
- package/.opencode/skills/define-success/SKILL.md +12 -0
- package/.opencode/skills/delegate-task/SKILL.md +91 -0
- package/.opencode/skills/deploy/SKILL.md +198 -0
- package/.opencode/skills/design-interface/SKILL.md +97 -0
- package/.opencode/skills/develop-tdd/SKILL.md +416 -0
- package/.opencode/skills/diagnose-root/SKILL.md +24 -0
- package/.opencode/skills/diagnose-stall/SKILL.md +54 -0
- package/.opencode/skills/dispatch-agents/SKILL.md +118 -0
- package/.opencode/skills/edit-document/SKILL.md +23 -0
- package/.opencode/skills/elaborate-spec/SKILL.md +101 -0
- package/.opencode/skills/enforce-first/SKILL.md +45 -0
- package/.opencode/skills/evolve-skill/SKILL.md +55 -0
- package/.opencode/skills/execute-plan/SKILL.md +61 -0
- package/.opencode/skills/extract-design/SKILL.md +132 -0
- package/.opencode/skills/find-way/SKILL.md +191 -0
- package/.opencode/skills/fix-bug/SKILL.md +67 -0
- package/.opencode/skills/gate-trace/SKILL.md +92 -0
- package/.opencode/skills/generate-allure-report/SKILL.md +285 -0
- package/.opencode/skills/grill-me/SKILL.md +108 -0
- package/.opencode/skills/grill-with-docs/SKILL.md +53 -0
- package/.opencode/skills/guard-git/SKILL.md +231 -0
- package/.opencode/skills/harden-vps/SKILL.md +291 -0
- package/.opencode/skills/hook-commits/SKILL.md +94 -0
- package/.opencode/skills/inspect-quality/SKILL.md +106 -0
- package/.opencode/skills/investigate-bug/SKILL.md +127 -0
- package/.opencode/skills/kickoff-branch/SKILL.md +143 -0
- package/.opencode/skills/maintain-wiki/SKILL.md +64 -0
- package/.opencode/skills/map-codebase/SKILL.md +71 -0
- package/.opencode/skills/migrate-spec/SKILL.md +862 -0
- package/.opencode/skills/model-domain/SKILL.md +232 -0
- package/.opencode/skills/orchestrate-project/SKILL.md +174 -0
- package/.opencode/skills/organize-workspace/SKILL.md +164 -0
- package/.opencode/skills/plan-refactor/SKILL.md +87 -0
- package/.opencode/skills/plan-release/SKILL.md +145 -0
- package/.opencode/skills/plan-tests/SKILL.md +75 -0
- package/.opencode/skills/plan-work/SKILL.md +260 -0
- package/.opencode/skills/publish-package/SKILL.md +328 -0
- package/.opencode/skills/quick-fix/SKILL.md +114 -0
- package/.opencode/skills/release-branch/SKILL.md +298 -0
- package/.opencode/skills/request-review/SKILL.md +113 -0
- package/.opencode/skills/research-first/SKILL.md +87 -0
- package/.opencode/skills/reset-baseline/SKILL.md +21 -0
- package/.opencode/skills/respond-review/SKILL.md +71 -0
- package/.opencode/skills/run-benchmark/SKILL.md +85 -0
- package/.opencode/skills/run-evals/SKILL.md +80 -0
- package/.opencode/skills/run-planning/SKILL.md +101 -0
- package/.opencode/skills/scope-work/SKILL.md +63 -0
- package/.opencode/skills/search-skills/SKILL.md +73 -0
- package/.opencode/skills/security-review/SKILL.md +384 -0
- package/.opencode/skills/seed-conventions/SKILL.md +302 -0
- package/.opencode/skills/session-state/SKILL.md +146 -0
- package/.opencode/skills/setup-environment/SKILL.md +39 -0
- package/.opencode/skills/simulate-agents/SKILL.md +26 -0
- package/.opencode/skills/slice-tasks/SKILL.md +68 -0
- package/.opencode/skills/smoke-test/SKILL.md +257 -0
- package/.opencode/skills/spike-prototype/SKILL.md +95 -0
- package/.opencode/skills/stocktake-skills/SKILL.md +74 -0
- package/.opencode/skills/survey-context/SKILL.md +135 -0
- package/.opencode/skills/terse-mode/SKILL.md +42 -0
- package/.opencode/skills/trace-requirement/SKILL.md +69 -0
- package/.opencode/skills/using-bigpowers/SKILL.md +111 -0
- package/.opencode/skills/validate-contracts/SKILL.md +277 -0
- package/.opencode/skills/validate-fix/SKILL.md +147 -0
- package/.opencode/skills/verify-work/SKILL.md +191 -0
- package/.opencode/skills/visual-dashboard/SKILL.md +50 -0
- package/.opencode/skills/wire-ci/SKILL.md +374 -0
- package/.opencode/skills/wire-observability/SKILL.md +97 -0
- package/.opencode/skills/write-document/SKILL.md +255 -0
- package/.pi/package.json +1 -1
- package/.pi/prompts/commit-message.md +1 -1
- package/.pi/prompts/craft-skill.md +2 -2
- package/.pi/prompts/define-success.md +5 -58
- package/.pi/prompts/deploy.md +1 -1
- package/.pi/prompts/elaborate-spec.md +1 -1
- package/.pi/prompts/evolve-skill.md +1 -1
- package/.pi/prompts/harden-vps.md +63 -60
- package/.pi/prompts/investigate-bug.md +2 -2
- package/.pi/prompts/orchestrate-project.md +1 -1
- package/.pi/prompts/plan-refactor.md +2 -2
- package/.pi/prompts/plan-release.md +2 -2
- package/.pi/prompts/plan-work.md +1 -1
- package/.pi/prompts/using-bigpowers.md +2 -2
- package/.pi/prompts/wire-ci.md +11 -14
- package/.pi/prompts/write-document.md +1 -1
- package/.pi/skills/commit-message/SKILL.md +1 -1
- package/.pi/skills/craft-skill/SKILL.md +2 -2
- package/.pi/skills/define-success/SKILL.md +6 -59
- package/.pi/skills/deploy/SKILL.md +1 -1
- package/.pi/skills/elaborate-spec/SKILL.md +1 -1
- package/.pi/skills/evolve-skill/SKILL.md +1 -1
- package/.pi/skills/harden-vps/SKILL.md +63 -60
- package/.pi/skills/investigate-bug/SKILL.md +2 -2
- package/.pi/skills/orchestrate-project/SKILL.md +1 -1
- package/.pi/skills/plan-refactor/SKILL.md +2 -2
- package/.pi/skills/plan-release/SKILL.md +2 -2
- package/.pi/skills/plan-work/SKILL.md +1 -1
- package/.pi/skills/using-bigpowers/SKILL.md +2 -2
- package/.pi/skills/wire-ci/SKILL.md +11 -14
- package/.pi/skills/write-document/SKILL.md +1 -1
- package/.qwen/skills/align-grid/SKILL.md +110 -0
- package/.qwen/skills/assess-impact/SKILL.md +91 -0
- package/.qwen/skills/audit-code/SKILL.md +184 -0
- package/.qwen/skills/audit-plan/SKILL.md +89 -0
- package/.qwen/skills/build-epic/SKILL.md +105 -0
- package/.qwen/skills/change-request/SKILL.md +121 -0
- package/.qwen/skills/commit-message/SKILL.md +140 -0
- package/.qwen/skills/compose-workflow/SKILL.md +82 -0
- package/.qwen/skills/context7-mcp/SKILL.md +55 -0
- package/.qwen/skills/craft-skill/SKILL.md +196 -0
- package/.qwen/skills/deepen-architecture/SKILL.md +260 -0
- package/.qwen/skills/define-language/SKILL.md +80 -0
- package/.qwen/skills/define-success/SKILL.md +12 -0
- package/.qwen/skills/delegate-task/SKILL.md +91 -0
- package/.qwen/skills/deploy/SKILL.md +198 -0
- package/.qwen/skills/design-interface/SKILL.md +97 -0
- package/.qwen/skills/develop-tdd/SKILL.md +416 -0
- package/.qwen/skills/diagnose-root/SKILL.md +24 -0
- package/.qwen/skills/diagnose-stall/SKILL.md +54 -0
- package/.qwen/skills/dispatch-agents/SKILL.md +118 -0
- package/.qwen/skills/edit-document/SKILL.md +23 -0
- package/.qwen/skills/elaborate-spec/SKILL.md +101 -0
- package/.qwen/skills/enforce-first/SKILL.md +45 -0
- package/.qwen/skills/evolve-skill/SKILL.md +55 -0
- package/.qwen/skills/execute-plan/SKILL.md +61 -0
- package/.qwen/skills/extract-design/SKILL.md +132 -0
- package/.qwen/skills/find-way/SKILL.md +191 -0
- package/.qwen/skills/fix-bug/SKILL.md +67 -0
- package/.qwen/skills/gate-trace/SKILL.md +92 -0
- package/.qwen/skills/generate-allure-report/SKILL.md +285 -0
- package/.qwen/skills/grill-me/SKILL.md +108 -0
- package/.qwen/skills/grill-with-docs/SKILL.md +53 -0
- package/.qwen/skills/guard-git/SKILL.md +231 -0
- package/.qwen/skills/harden-vps/SKILL.md +291 -0
- package/.qwen/skills/hook-commits/SKILL.md +94 -0
- package/.qwen/skills/inspect-quality/SKILL.md +106 -0
- package/.qwen/skills/investigate-bug/SKILL.md +127 -0
- package/.qwen/skills/kickoff-branch/SKILL.md +143 -0
- package/.qwen/skills/maintain-wiki/SKILL.md +64 -0
- package/.qwen/skills/map-codebase/SKILL.md +71 -0
- package/.qwen/skills/migrate-spec/SKILL.md +862 -0
- package/.qwen/skills/model-domain/SKILL.md +232 -0
- package/.qwen/skills/orchestrate-project/SKILL.md +174 -0
- package/.qwen/skills/organize-workspace/SKILL.md +164 -0
- package/.qwen/skills/plan-refactor/SKILL.md +87 -0
- package/.qwen/skills/plan-release/SKILL.md +145 -0
- package/.qwen/skills/plan-tests/SKILL.md +75 -0
- package/.qwen/skills/plan-work/SKILL.md +260 -0
- package/.qwen/skills/publish-package/SKILL.md +328 -0
- package/.qwen/skills/quick-fix/SKILL.md +114 -0
- package/.qwen/skills/release-branch/SKILL.md +298 -0
- package/.qwen/skills/request-review/SKILL.md +113 -0
- package/.qwen/skills/research-first/SKILL.md +87 -0
- package/.qwen/skills/reset-baseline/SKILL.md +21 -0
- package/.qwen/skills/respond-review/SKILL.md +71 -0
- package/.qwen/skills/run-benchmark/SKILL.md +85 -0
- package/.qwen/skills/run-evals/SKILL.md +80 -0
- package/.qwen/skills/run-planning/SKILL.md +101 -0
- package/.qwen/skills/scope-work/SKILL.md +63 -0
- package/.qwen/skills/search-skills/SKILL.md +73 -0
- package/.qwen/skills/security-review/SKILL.md +384 -0
- package/.qwen/skills/seed-conventions/SKILL.md +302 -0
- package/.qwen/skills/session-state/SKILL.md +146 -0
- package/.qwen/skills/setup-environment/SKILL.md +39 -0
- package/.qwen/skills/simulate-agents/SKILL.md +26 -0
- package/.qwen/skills/slice-tasks/SKILL.md +68 -0
- package/.qwen/skills/smoke-test/SKILL.md +257 -0
- package/.qwen/skills/spike-prototype/SKILL.md +95 -0
- package/.qwen/skills/stocktake-skills/SKILL.md +74 -0
- package/.qwen/skills/survey-context/SKILL.md +135 -0
- package/.qwen/skills/terse-mode/SKILL.md +42 -0
- package/.qwen/skills/trace-requirement/SKILL.md +69 -0
- package/.qwen/skills/using-bigpowers/SKILL.md +111 -0
- package/.qwen/skills/validate-contracts/SKILL.md +277 -0
- package/.qwen/skills/validate-fix/SKILL.md +147 -0
- package/.qwen/skills/verify-work/SKILL.md +191 -0
- package/.qwen/skills/visual-dashboard/SKILL.md +50 -0
- package/.qwen/skills/wire-ci/SKILL.md +374 -0
- package/.qwen/skills/wire-observability/SKILL.md +97 -0
- package/.qwen/skills/write-document/SKILL.md +255 -0
- package/.trae/skills/commit-message/SKILL.md +1 -1
- package/.trae/skills/craft-skill/SKILL.md +2 -2
- package/.trae/skills/define-success/SKILL.md +6 -59
- package/.trae/skills/deploy/SKILL.md +1 -1
- package/.trae/skills/elaborate-spec/SKILL.md +1 -1
- package/.trae/skills/evolve-skill/SKILL.md +1 -1
- package/.trae/skills/harden-vps/SKILL.md +63 -60
- package/.trae/skills/investigate-bug/SKILL.md +2 -2
- package/.trae/skills/orchestrate-project/SKILL.md +1 -1
- package/.trae/skills/plan-refactor/SKILL.md +2 -2
- package/.trae/skills/plan-release/SKILL.md +2 -2
- package/.trae/skills/plan-work/SKILL.md +1 -1
- package/.trae/skills/using-bigpowers/SKILL.md +2 -2
- package/.trae/skills/wire-ci/SKILL.md +11 -14
- package/.trae/skills/write-document/SKILL.md +1 -1
- package/.windsurf/rules/commit-message.md +1 -1
- package/.windsurf/rules/craft-skill.md +2 -2
- package/.windsurf/rules/define-success.md +6 -59
- package/.windsurf/rules/deploy.md +1 -1
- package/.windsurf/rules/elaborate-spec.md +1 -1
- package/.windsurf/rules/evolve-skill.md +1 -1
- package/.windsurf/rules/harden-vps.md +63 -60
- package/.windsurf/rules/investigate-bug.md +2 -2
- package/.windsurf/rules/orchestrate-project.md +1 -1
- package/.windsurf/rules/plan-refactor.md +2 -2
- package/.windsurf/rules/plan-release.md +2 -2
- package/.windsurf/rules/plan-work.md +1 -1
- package/.windsurf/rules/using-bigpowers.md +2 -2
- package/.windsurf/rules/wire-ci.md +11 -14
- package/.windsurf/rules/write-document.md +1 -1
- package/.zcode/skills/commit-message/SKILL.md +1 -1
- package/.zcode/skills/craft-skill/SKILL.md +2 -2
- package/.zcode/skills/define-success/SKILL.md +6 -59
- package/.zcode/skills/deploy/SKILL.md +1 -1
- package/.zcode/skills/elaborate-spec/SKILL.md +1 -1
- package/.zcode/skills/evolve-skill/SKILL.md +1 -1
- package/.zcode/skills/harden-vps/SKILL.md +63 -60
- package/.zcode/skills/investigate-bug/SKILL.md +2 -2
- package/.zcode/skills/orchestrate-project/SKILL.md +1 -1
- package/.zcode/skills/plan-refactor/SKILL.md +2 -2
- package/.zcode/skills/plan-release/SKILL.md +2 -2
- package/.zcode/skills/plan-work/SKILL.md +1 -1
- package/.zcode/skills/using-bigpowers/SKILL.md +2 -2
- package/.zcode/skills/wire-ci/SKILL.md +11 -14
- package/.zcode/skills/write-document/SKILL.md +1 -1
- package/CHANGELOG.md +14 -0
- package/SKILL-INDEX.md +2 -2
- package/package.json +1 -1
- package/scripts/adapters/agy.sh +3 -0
- package/scripts/adapters/continue.sh +3 -0
- package/scripts/adapters/cursor.sh +3 -0
- package/scripts/adapters/gemini.sh +5 -24
- package/scripts/adapters/mimo.sh +3 -0
- package/scripts/adapters/omp.sh +3 -0
- package/scripts/adapters/pi.sh +6 -3
- package/scripts/adapters/zcode.sh +3 -0
- package/scripts/adapters/zed.sh +3 -0
- package/scripts/check-skill-links.py +35 -0
- package/scripts/generate-workflow-diagrams.sh +102 -0
- package/scripts/golden-g13-test-orphans.sh +70 -0
- package/scripts/golden-g14-adapter-dispatch.sh +113 -0
- package/scripts/land-branch.sh +9 -3
- package/scripts/lib/__pycache__/link_utils.cpython-312.pyc +0 -0
- package/scripts/lib/__pycache__/srp_engine_links.cpython-312.pyc +0 -0
- package/scripts/lib/adapter-guard.sh +30 -0
- package/scripts/lib/golden-suite-gates.sh +28 -0
- package/scripts/lib/install-targets-b.sh +0 -8
- package/scripts/lib/sync-render.sh +0 -43
- package/scripts/lib/target-contracts.sh +37 -1
- package/scripts/targets.yaml +35 -13
- package/scripts/test-adapter-render.sh +116 -0
- package/scripts/test-adapters.sh +10 -3
- package/scripts/test-install-hub.sh +139 -0
- package/scripts/test-target-contracts.sh +73 -0
- package/scripts/tombstone-skill.sh +6 -0
- package/skills/commit-message/REFERENCE.md +1 -1
- package/skills/craft-skill/SKILL.md +2 -2
- package/skills/define-success/SKILL.md +7 -61
- package/skills/deploy/SKILL.md +1 -1
- package/skills/elaborate-spec/SKILL.md +1 -1
- package/skills/evolve-skill/REFERENCE.md +1 -1
- package/skills/harden-vps/REFERENCE.md +39 -36
- package/skills/harden-vps/SKILL.md +24 -24
- package/skills/investigate-bug/SKILL.md +2 -2
- package/skills/orchestrate-project/REFERENCE.md +1 -1
- package/skills/plan-refactor/SKILL.md +2 -2
- package/skills/plan-release/SKILL.md +2 -2
- package/skills/plan-work/SKILL.md +1 -1
- package/skills/security-review/fixtures/CWE-639-idor-negative.go +1 -1
- package/skills/security-review/fixtures/CWE-639-idor-positive.go +1 -1
- package/skills/using-bigpowers/SKILL.md +2 -2
- package/skills/wire-ci/REFERENCE.md +11 -14
- package/skills/write-document/REFERENCE.md +1 -1
- package/skills-lock.json +12 -12
- package/.fix_regex.sh +0 -16
- package/.hermes-verify-sed-fix.py +0 -53
- package/_test_e28s01.sh +0 -2
- package/audit-independent-unwaived-2026-07-06.md +0 -49
- package/hermes-verify-sed-fix.py +0 -30
- package/instructions +0 -1
- package/scripts/hermes-verify-e39s02.sh +0 -28
- package/scripts/test-agy-hub.sh +0 -60
- package/scripts/test-cline-adapter.sh +0 -55
- package/scripts/test-cline-hub.sh +0 -48
- package/scripts/test-codebuddy-adapter.sh +0 -63
- package/scripts/test-codebuddy-hub.sh +0 -49
- package/scripts/test-codex-adapter.sh +0 -63
- package/scripts/test-codex-hub.sh +0 -49
- package/scripts/test-copilot-adapter.sh +0 -47
- package/scripts/test-copilot-hub.sh +0 -43
- package/scripts/test-gemini-adapter.sh +0 -70
- package/scripts/test-gemini-hub.sh +0 -56
- package/scripts/test-hermes-adapter.sh +0 -85
- package/scripts/test-hermes-hub.sh +0 -52
- package/scripts/test-kilocode-adapter.sh +0 -55
- package/scripts/test-kilocode-hub.sh +0 -48
- package/scripts/test-mimo-hub.sh +0 -52
- package/scripts/test-opencode-adapter.sh +0 -47
- package/scripts/test-opencode-hub.sh +0 -43
- package/scripts/test-qwen-adapter.sh +0 -63
- package/scripts/test-qwen-hub.sh +0 -49
- package/scripts/test-trae-adapter.sh +0 -63
- package/scripts/test-trae-hub.sh +0 -49
- package/scripts/test-windsurf-adapter.sh +0 -63
- package/scripts/test-windsurf-hub.sh +0 -49
- package/scripts/test-zcode-hub.sh +0 -52
- package/test_figlet.py +0 -17
|
@@ -2,47 +2,47 @@
|
|
|
2
2
|
|
|
3
3
|
## Health check script
|
|
4
4
|
|
|
5
|
-
Deploy to `/opt/
|
|
5
|
+
Deploy to `/opt/your-app/scripts/healthcheck.sh`:
|
|
6
6
|
|
|
7
7
|
```bash
|
|
8
8
|
#!/bin/bash
|
|
9
|
-
LOG=/var/log/
|
|
10
|
-
mkdir -p /var/log/
|
|
9
|
+
LOG=/var/log/your-app/health.log
|
|
10
|
+
mkdir -p /var/log/your-app
|
|
11
11
|
DISK=$(df / | awk 'NR==2 {print $5}' | tr -d '%')
|
|
12
12
|
RAM=$(free | awk '/Mem:/ {printf "%.0f", $3/$2*100}')
|
|
13
13
|
NOW=$(date -Iseconds)
|
|
14
14
|
[ "$DISK" -gt 85 ] && echo "$NOW ALERT: Disk ${DISK}%" >> "$LOG"
|
|
15
15
|
[ "$RAM" -gt 90 ] && echo "$NOW ALERT: RAM ${RAM}%" >> "$LOG"
|
|
16
|
-
systemctl is-active --quiet
|
|
16
|
+
systemctl is-active --quiet your-app || { echo "$NOW ALERT: your application DOWN" >> "$LOG"; systemctl restart your-app; }
|
|
17
17
|
[ -f /var/run/reboot-required ] && echo "$NOW WARN: kernel reboot pending" >> "$LOG"
|
|
18
18
|
```
|
|
19
19
|
|
|
20
|
-
Make executable: `chmod +x /opt/
|
|
20
|
+
Make executable: `chmod +x /opt/your-app/scripts/healthcheck.sh`
|
|
21
21
|
|
|
22
|
-
##
|
|
22
|
+
## your application systemd unit
|
|
23
23
|
|
|
24
|
-
Full hardened unit at `/etc/systemd/system/
|
|
24
|
+
Full hardened unit at `/etc/systemd/system/your-app.service`:
|
|
25
25
|
|
|
26
26
|
```ini
|
|
27
27
|
[Unit]
|
|
28
|
-
Description=
|
|
29
|
-
Documentation=https://github.com/
|
|
28
|
+
Description=your application BaaS Platform
|
|
29
|
+
Documentation=https://github.com/example-org/example-app
|
|
30
30
|
After=network.target caddy.service
|
|
31
31
|
Wants=caddy.service
|
|
32
32
|
|
|
33
33
|
[Service]
|
|
34
34
|
Type=simple
|
|
35
|
-
User=
|
|
36
|
-
Group=
|
|
37
|
-
WorkingDirectory=/opt/
|
|
38
|
-
ExecStart=/opt/
|
|
35
|
+
User=your-app
|
|
36
|
+
Group=your-app
|
|
37
|
+
WorkingDirectory=/opt/your-app
|
|
38
|
+
ExecStart=/opt/your-app/bin/your-app serve \
|
|
39
39
|
--port 8080 \
|
|
40
|
-
--db /opt/
|
|
40
|
+
--db /opt/your-app/data/your-app.db \
|
|
41
41
|
--sites-domain <your-domain.example.com>
|
|
42
|
-
EnvironmentFile=-/opt/
|
|
43
|
-
Environment=
|
|
44
|
-
Environment=HOME=/opt/
|
|
45
|
-
Environment=NPM_CONFIG_CACHE=/opt/
|
|
42
|
+
EnvironmentFile=-/opt/your-app/.env
|
|
43
|
+
Environment=APP_HOME=/opt/your-app
|
|
44
|
+
Environment=HOME=/opt/your-app
|
|
45
|
+
Environment=NPM_CONFIG_CACHE=/opt/your-app/.npm
|
|
46
46
|
Environment=PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
|
|
47
47
|
Restart=always
|
|
48
48
|
RestartSec=5
|
|
@@ -59,11 +59,11 @@ ProtectKernelModules=yes
|
|
|
59
59
|
ProtectControlGroups=yes
|
|
60
60
|
RestrictAddressFamilies=AF_INET AF_INET6
|
|
61
61
|
RestrictRealtime=yes
|
|
62
|
-
ReadWritePaths=/opt/
|
|
63
|
-
ReadWritePaths=/opt/
|
|
64
|
-
ReadWritePaths=/opt/
|
|
65
|
-
ReadWritePaths=/opt/
|
|
66
|
-
ReadWritePaths=/opt/
|
|
62
|
+
ReadWritePaths=/opt/your-app/data
|
|
63
|
+
ReadWritePaths=/opt/your-app/backups
|
|
64
|
+
ReadWritePaths=/opt/your-app/secrets
|
|
65
|
+
ReadWritePaths=/opt/your-app/.npm
|
|
66
|
+
ReadWritePaths=/opt/your-app/logs
|
|
67
67
|
LimitNOFILE=65536
|
|
68
68
|
|
|
69
69
|
[Install]
|
|
@@ -83,17 +83,20 @@ bantime = 3600
|
|
|
83
83
|
findtime = 600
|
|
84
84
|
```
|
|
85
85
|
|
|
86
|
-
Note:
|
|
86
|
+
Note: your application auth jail deferred — your application logs to journald, not a file. To enable, use `backend = systemd` with a journald filter.
|
|
87
87
|
|
|
88
|
-
##
|
|
88
|
+
## provider-snapshot.sh — worked example (Contabo API)
|
|
89
89
|
|
|
90
|
-
|
|
90
|
+
> Snapshot APIs are provider-specific. This is one worked example, not a
|
|
91
|
+
> bigpowers default; swap the auth and endpoint calls for your own provider.
|
|
92
|
+
|
|
93
|
+
Deploy to `/opt/your-app/scripts/contabo-snapshot.sh`. Reads credentials from `/opt/your-app/.env` (same file used by your application systemd unit):
|
|
91
94
|
|
|
92
95
|
```bash
|
|
93
96
|
#!/bin/bash
|
|
94
97
|
set -e
|
|
95
|
-
LOG=/var/log/
|
|
96
|
-
ENVFILE=/opt/
|
|
98
|
+
LOG=/var/log/your-app/snapshot.log
|
|
99
|
+
ENVFILE=/opt/your-app/.env
|
|
97
100
|
INSTANCE_ID=<your-contabo-instance-id>
|
|
98
101
|
|
|
99
102
|
[ -f "$ENVFILE" ] || { echo "$(date -Iseconds) ERROR: $ENVFILE missing" >> "$LOG"; exit 1; }
|
|
@@ -122,9 +125,9 @@ echo >> "$LOG"
|
|
|
122
125
|
echo "$(date -Iseconds) Snapshot requested for $INSTANCE_ID" >> "$LOG"
|
|
123
126
|
```
|
|
124
127
|
|
|
125
|
-
##
|
|
128
|
+
## your VPS provider credentials
|
|
126
129
|
|
|
127
|
-
Add to `/opt/
|
|
130
|
+
Add to `/opt/your-app/.env` (same file used by your application systemd unit, deployed by GitHub Actions):
|
|
128
131
|
|
|
129
132
|
```
|
|
130
133
|
CONTABO_CLIENT_ID=
|
|
@@ -133,13 +136,13 @@ CONTABO_API_USER=
|
|
|
133
136
|
CONTABO_API_PASSWORD=
|
|
134
137
|
```
|
|
135
138
|
|
|
136
|
-
Source:
|
|
139
|
+
Source: your VPS provider Customer Control Panel → API Details. ClientId and ClientSecret are generated there. API User is your email. API Password is set separately in the panel.
|
|
137
140
|
|
|
138
|
-
**Pipeline:** GitHub Secrets → deploy workflow → `/opt/
|
|
141
|
+
**Pipeline:** GitHub Secrets → deploy workflow → `/opt/your-app/.env` on VPS. For local dev (`cntb get instances`), add to `.envrc`.
|
|
139
142
|
|
|
140
|
-
##
|
|
143
|
+
## your VPS provider instance info template
|
|
141
144
|
|
|
142
|
-
Fill in your instance details from the
|
|
145
|
+
Fill in your instance details from the your VPS provider Customer Control Panel:
|
|
143
146
|
|
|
144
147
|
```
|
|
145
148
|
IP: <your-instance-ip>
|
|
@@ -151,7 +154,7 @@ Default user: root
|
|
|
151
154
|
Customer ID: <your-customer-id>
|
|
152
155
|
```
|
|
153
156
|
|
|
154
|
-
##
|
|
157
|
+
## your application monitoring alert SQL
|
|
155
158
|
|
|
156
159
|
```sql
|
|
157
160
|
INSERT INTO monitoring_alerts (id, name, metric, threshold, operator, enabled, duration_seconds)
|
|
@@ -164,7 +167,7 @@ INSERT INTO monitoring_alerts (id, name, metric, threshold, operator, enabled, d
|
|
|
164
167
|
VALUES ('alert-003', 'VPS RAM above 85%', 'mem_used_percent', 85, 'gt', 1, 120);
|
|
165
168
|
```
|
|
166
169
|
|
|
167
|
-
Alerts are loaded at
|
|
170
|
+
Alerts are loaded at your application startup. Restart with `systemctl restart your-app` after inserting.
|
|
168
171
|
|
|
169
172
|
## Base64 encoding workaround
|
|
170
173
|
|
|
@@ -1,17 +1,17 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: harden-vps
|
|
3
|
-
description: "Harden a production Linux VPS for
|
|
3
|
+
description: "Harden a production Linux VPS for your application across three layers — application (systemd hardening, monitoring alerts, backup automation), Ubuntu OS (UFW firewall, fail2ban SSH, unattended-upgrades, SSH hardening), and VPS provider (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."
|
|
4
4
|
model: haiku
|
|
5
5
|
effort: standard
|
|
6
6
|
---
|
|
7
7
|
|
|
8
8
|
# Harden VPS
|
|
9
9
|
|
|
10
|
-
Three-layer production hardening for
|
|
10
|
+
Three-layer production hardening for a self-hosted app on any VPS. Each layer independently verifiable. Apply OS first (firewall blocks attacks immediately), then your application (alerts + backups), then your VPS provider (snapshots). See [REFERENCE.md](REFERENCE.md) for full script bodies, systemd unit template, and gotchas.
|
|
11
11
|
|
|
12
12
|
## Quick start
|
|
13
13
|
|
|
14
|
-
SSH as root into the VPS. Find credentials in the
|
|
14
|
+
SSH as root into the VPS. Find credentials in the your VPS provider Customer Control Panel.
|
|
15
15
|
|
|
16
16
|
> **HARD GATE** — Run `ufw status` first. No firewall = layer 1 takes priority over everything.
|
|
17
17
|
|
|
@@ -36,21 +36,21 @@ apt install -y unattended-upgrades && dpkg-reconfigure -plow unattended-upgrades
|
|
|
36
36
|
# SSH: PermitRootLogin no, PasswordAuthentication no, PubkeyAuthentication yes
|
|
37
37
|
# → verify: sshd -T | grep -E 'permitrootlogin no|passwordauthentication no'
|
|
38
38
|
|
|
39
|
-
# Deploy healthcheck.sh → /opt/
|
|
40
|
-
# Crontab: */5 * * * * /opt/
|
|
39
|
+
# Deploy healthcheck.sh → /opt/your-app/scripts/healthcheck.sh
|
|
40
|
+
# Crontab: */5 * * * * /opt/your-app/scripts/healthcheck.sh
|
|
41
41
|
```
|
|
42
42
|
|
|
43
|
-
## Layer 2 —
|
|
43
|
+
## Layer 2 — applicationlication
|
|
44
44
|
|
|
45
45
|
```bash
|
|
46
|
-
# systemd: User=
|
|
46
|
+
# systemd: User=your-app, NoNewPrivileges=yes, ProtectSystem=full,
|
|
47
47
|
# ProtectKernelTunables=yes, ProtectKernelModules=yes,
|
|
48
48
|
# ProtectControlGroups=yes, RestrictAddressFamilies=AF_INET AF_INET6,
|
|
49
49
|
# RestrictRealtime=yes, PrivateTmp=yes, LimitNOFILE=65536
|
|
50
|
-
# → verify: systemctl show
|
|
50
|
+
# → verify: systemctl show your-app -p NoNewPrivileges -p ProtectSystem -p User
|
|
51
51
|
|
|
52
|
-
# Alerts (
|
|
53
|
-
sqlite3 /opt/
|
|
52
|
+
# Alerts (your application requires auth; insert via SQLite)
|
|
53
|
+
sqlite3 /opt/your-app/data/your-app.db "
|
|
54
54
|
INSERT INTO monitoring_alerts (id,name,metric,threshold,operator,enabled,duration_seconds)
|
|
55
55
|
VALUES ('a1','Disk >80%','disk_used_percent',80,'gt',1,300);
|
|
56
56
|
INSERT INTO monitoring_alerts (id,name,metric,threshold,operator,enabled,duration_seconds)
|
|
@@ -58,14 +58,14 @@ VALUES ('a2','CPU >90%','cpu_percent',90,'gt',1,60);
|
|
|
58
58
|
INSERT INTO monitoring_alerts (id,name,metric,threshold,operator,enabled,duration_seconds)
|
|
59
59
|
VALUES ('a3','RAM >85%','mem_used_percent',85,'gt',1,120);
|
|
60
60
|
"
|
|
61
|
-
systemctl restart
|
|
61
|
+
systemctl restart your-app
|
|
62
62
|
|
|
63
63
|
# Backup crontab (root):
|
|
64
|
-
# 0 2 * * * cp /opt/
|
|
65
|
-
# 0 3 * * * find /backup/ -name "
|
|
64
|
+
# 0 2 * * * cp /opt/your-app/data/your-app.db /backup/your-app-$(date +\%Y\%m\%d).db
|
|
65
|
+
# 0 3 * * * find /backup/ -name "your-app-*.db" -mtime +90 -delete
|
|
66
66
|
```
|
|
67
67
|
|
|
68
|
-
## Layer 3 —
|
|
68
|
+
## Layer 3 — VPS provider
|
|
69
69
|
|
|
70
70
|
```bash
|
|
71
71
|
# cntb CLI
|
|
@@ -73,14 +73,14 @@ curl -sL "$(curl -sL https://api.github.com/repos/contabo/cntb/releases/latest \
|
|
|
73
73
|
| grep browser_download_url.*linux_amd64.tar.gz | head -1 | cut -d'"' -f4)" \
|
|
74
74
|
| tar xz -C /usr/local/bin
|
|
75
75
|
|
|
76
|
-
# Snapshot script → /opt/
|
|
77
|
-
# Credentials as env vars in /opt/
|
|
76
|
+
# Snapshot script → /opt/your-app/scripts/contabo-snapshot.sh (reads from /opt/your-app/.env)
|
|
77
|
+
# Credentials as env vars in /opt/your-app/.env (deployed by GitHub Actions):
|
|
78
78
|
# CONTABO_CLIENT_ID, CONTABO_CLIENT_SECRET, CONTABO_API_USER, CONTABO_API_PASSWORD
|
|
79
|
-
# Crontab: 0 4 1 * * /opt/
|
|
79
|
+
# Crontab: 0 4 1 * * /opt/your-app/scripts/contabo-snapshot.sh
|
|
80
80
|
|
|
81
81
|
# > HARD GATE — Snapshot cron silently fails until env vars are set in .env.
|
|
82
|
-
# Credentials source:
|
|
83
|
-
# Local dev: add to .envrc. Production: GitHub Secrets → deploy → /opt/
|
|
82
|
+
# Credentials source: your VPS provider Customer Panel → API Details.
|
|
83
|
+
# Local dev: add to .envrc. Production: GitHub Secrets → deploy → /opt/your-app/.env
|
|
84
84
|
```
|
|
85
85
|
|
|
86
86
|
## CRITICAL GOTCHAS
|
|
@@ -88,7 +88,7 @@ curl -sL "$(curl -sL https://api.github.com/repos/contabo/cntb/releases/latest \
|
|
|
88
88
|
1. **Shell escaping in Orca terminals:** `$VAR`, `$(…)`, and `%` get eaten by the local shell. Always use base64: `echo '<base64>' | base64 -d > script.sh`
|
|
89
89
|
2. **Crontab `%`:** cron interprets `%` as newline. Escape as `\%` in `$(date +\%Y\%m\%d)`
|
|
90
90
|
3. **fail2ban exit 255:** means a jail references a missing log file. Remove the broken jail, restart.
|
|
91
|
-
4. **
|
|
91
|
+
4. **your application alerts need auth:** POST to `/api/monitoring/alerts` requires Bearer token. Workaround: insert directly into SQLite, then restart your application.
|
|
92
92
|
|
|
93
93
|
## Verify all 8 gates
|
|
94
94
|
|
|
@@ -97,10 +97,10 @@ ufw status|grep -q active||echo FAIL:ufw
|
|
|
97
97
|
fail2ban-client status sshd>/dev/null 2>&1||echo FAIL:fail2ban
|
|
98
98
|
systemctl is-active unattended-upgrades|grep -q active||echo FAIL:unattended
|
|
99
99
|
sshd -T|grep -q 'permitrootlogin no'||echo FAIL:sshd
|
|
100
|
-
systemctl show
|
|
101
|
-
systemctl is-active
|
|
102
|
-
sqlite3 /opt/
|
|
103
|
-
crontab -l|grep -q healthcheck&&crontab -l|grep -q
|
|
100
|
+
systemctl show your-app -p NoNewPrivileges|grep -q yes||echo FAIL:systemd
|
|
101
|
+
systemctl is-active your-app|grep -q active||echo FAIL:your-app
|
|
102
|
+
sqlite3 /opt/your-app/data/your-app.db "SELECT count(*) FROM monitoring_alerts"|grep -q 3||echo FAIL:alerts
|
|
103
|
+
crontab -l|grep -q healthcheck&&crontab -l|grep -q your-app.db&&crontab -l|grep -q contabo-snapshot||echo FAIL:crontab
|
|
104
104
|
echo ALL 8 GATES PASSED
|
|
105
105
|
```
|
|
106
106
|
|
|
@@ -124,6 +124,6 @@ After writing the bug file, print a one-line summary of the root cause and sugge
|
|
|
124
124
|
|
|
125
125
|
<!-- story: e35s10 -->
|
|
126
126
|
|
|
127
|
-
- [Feathers' Seams & Characterization Tests](
|
|
128
|
-
- [Fowler's Code Smells](
|
|
127
|
+
- [Feathers' Seams & Characterization Tests](../../docs/references/feathers.md) — seam types, characterization tests, and the legacy code change algorithm
|
|
128
|
+
- [Fowler's Code Smells](../../docs/references/fowler.md) — identifying structural problems by smell before investigating
|
|
129
129
|
|
|
@@ -19,7 +19,7 @@ Detailed documentation for the `orchestrate-project` meta-skill.
|
|
|
19
19
|
### PHASE 3: PLAN
|
|
20
20
|
- **Goal**: Write a verifiable implementation plan with success criteria.
|
|
21
21
|
- **Deliverables**: `release-plan.yaml`, `epics/eNN-*.yaml` with `verify:` per task.
|
|
22
|
-
- **Skills**: `scope-work`, `slice-tasks`, `
|
|
22
|
+
- **Skills**: `scope-work`, `slice-tasks`, `plan-work`.
|
|
23
23
|
- **Gate**: Quality (request-review ≥94%) + slopcheck [SUS]/[SLOP].
|
|
24
24
|
|
|
25
25
|
### PHASE 4: BUILD
|
|
@@ -82,8 +82,8 @@ After writing `specs/REFACTOR_LATEST.md`, suggest running `kickoff-branch` next
|
|
|
82
82
|
|
|
83
83
|
<!-- story: e35s10 -->
|
|
84
84
|
|
|
85
|
-
- [Fowler's Refactoring Catalog](
|
|
86
|
-
- [Beck's Tidy First?](
|
|
85
|
+
- [Fowler's Refactoring Catalog](../../docs/references/fowler.md) — canonical refactoring vocabulary and code-smell taxonomy
|
|
86
|
+
- [Beck's Tidy First?](../../docs/references/kent-beck.md) — structural change before behavioral change
|
|
87
87
|
|
|
88
88
|
## Verify
|
|
89
89
|
|
|
@@ -17,7 +17,7 @@ Synthesize the conversation context into `specs/release-plan.yaml` (index) and s
|
|
|
17
17
|
|------|---------|
|
|
18
18
|
| `specs/release-plan.yaml` | `release.version`, semver bump hint, WSJF-ordered epic list with `id`, `capsule_dir`, `wsjf`, `bcps` — **no story status** |
|
|
19
19
|
| `specs/epics/eNN-<slug>/epic.yaml` | Epic manifest: `id`, `title`, `wsjf`, `total_bcps`, `status`, `stories[]` list |
|
|
20
|
-
| `specs/epics/eNN-<slug>/eNNsYY-<slug>.md` | Story spec in [countable-story-format.md](
|
|
20
|
+
| `specs/epics/eNN-<slug>/eNNsYY-<slug>.md` | Story spec in [countable-story-format.md](../../docs/countable-story-format.md) with 20 sections and Gherkin acceptance criteria |
|
|
21
21
|
| `specs/epics/eNN-<slug>/eNNsYY-tasks.yaml` | Decoupled task checklist with `verify:` commands per task |
|
|
22
22
|
| `specs/execution-status.yaml` | Flat key-value store for story status (`eNNsYY: todo`) |
|
|
23
23
|
|
|
@@ -102,7 +102,7 @@ stories:
|
|
|
102
102
|
```
|
|
103
103
|
### 6. Save story specs (countable-story-format .md)
|
|
104
104
|
|
|
105
|
-
Each story becomes a standalone `.md` file following [countable-story-format.md](
|
|
105
|
+
Each story becomes a standalone `.md` file following [countable-story-format.md](../../docs/countable-story-format.md). Minimum: maturity 3 (Countable) with all 20 sections present. Acceptance criteria in §17 use Gherkin scenarios.
|
|
106
106
|
### 7. Save decoupled task files (`-tasks.yaml`)
|
|
107
107
|
|
|
108
108
|
Each story has a decoupled `-tasks.yaml` with implementation steps:
|
|
@@ -18,7 +18,7 @@ description: "PLANNING SPINE STEP 3 of 3 — Plan the work: write detailed imple
|
|
|
18
18
|
|
|
19
19
|
Produce a detailed, verifiable implementation plan in the **active epic capsule directory** (`specs/epics/eNN-slug/`). Output: a story spec `.md` file (countable-story-format) and a decoupled `eNNsYY-tasks.yaml` with runnable verify commands. "I think it works" is not a step.
|
|
20
20
|
|
|
21
|
-
> **HARD GATE** — Do NOT proceed with a plan until the task's success criteria are clear. If success is ambiguous,
|
|
21
|
+
> **HARD GATE** — Do NOT proceed with a plan until the task's success criteria are clear. If success is ambiguous, convert the task into "step → verify: `<cmd>`" pairs here before writing tasks — every task ships a runnable `verify:` or the plan is not done.
|
|
22
22
|
>
|
|
23
23
|
> **RECURSIVE DISCIPLINE** — This lifecycle applies to EVERY task, including updating these skills. Never skip planning because a task is "meta" or "just documentation."
|
|
24
24
|
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
// is part of the WHERE clause. A caller from another organization gets zero
|
|
6
6
|
// rows rather than someone else's site.
|
|
7
7
|
//
|
|
8
|
-
// Note the retrofit trap this deliberately avoids:
|
|
8
|
+
// Note the retrofit trap this deliberately avoids: a real-world IDOR retrofit (BUG-2026-07-24T184443)
|
|
9
9
|
// added `org_id INTEGER NOT NULL DEFAULT 0`, which passed tests on new rows and
|
|
10
10
|
// hid 8 of 9 production sites whose legacy rows defaulted to org 0. Scope on a
|
|
11
11
|
// real, backfilled org_id — never a placeholder default.
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
// story: e80s05
|
|
2
2
|
// Positive fixture: IDOR / missing tenant scoping (must be flagged).
|
|
3
3
|
//
|
|
4
|
-
// Modelled on
|
|
4
|
+
// Modelled on a real-world bug family (BUG-129/130/133/135/136/140/143): the
|
|
5
5
|
// handler authenticates the caller, then trusts an ID from the request and
|
|
6
6
|
// queries by that ID alone. Authentication is proven; authorization is not.
|
|
7
7
|
// Nothing in the type system or a diff-scoped review makes this look wrong —
|
|
@@ -9,7 +9,7 @@ description: One-time bootstrap that introduces the bigpowers skills system, the
|
|
|
9
9
|
> **HARD GATE** — **HARD GATE** — This skill is the entry point. Do NOT skip it when onboarding new users or starting a new session. It establishes the bigpowers methodology, lifecycle phases, and conventions.
|
|
10
10
|
|
|
11
11
|
|
|
12
|
-
Welcome to **bigpowers** — a lifecycle of
|
|
12
|
+
Welcome to **bigpowers** — a lifecycle of agent skills for production-ready, TDD-driven software by solo developers. The live catalog and its count are generated in [`SKILL-INDEX.md`](../../SKILL-INDEX.md); never hardcode the number here.
|
|
13
13
|
|
|
14
14
|
## Install
|
|
15
15
|
|
|
@@ -38,7 +38,7 @@ DISCOVER survey-context → research-first → elaborate-spec
|
|
|
38
38
|
↓
|
|
39
39
|
DESIGN model-domain / define-language / grill-me / deepen-architecture / design-interface
|
|
40
40
|
↓
|
|
41
|
-
PLAN scope-work → slice-tasks →
|
|
41
|
+
PLAN scope-work → slice-tasks → plan-work / plan-refactor
|
|
42
42
|
↓
|
|
43
43
|
INITIATE kickoff-branch → guard-git / hook-commits / seed-conventions
|
|
44
44
|
↓
|
|
@@ -145,7 +145,7 @@ jobs:
|
|
|
145
145
|
|
|
146
146
|
---
|
|
147
147
|
|
|
148
|
-
## Reference block 2 — deploy.yml (
|
|
148
|
+
## Reference block 2 — deploy.yml (generic web app, excerpt)
|
|
149
149
|
|
|
150
150
|
```yaml
|
|
151
151
|
name: Deploy
|
|
@@ -163,7 +163,7 @@ concurrency:
|
|
|
163
163
|
cancel-in-progress: false
|
|
164
164
|
|
|
165
165
|
env:
|
|
166
|
-
SITE_URL: "https://CHANGE-ME.
|
|
166
|
+
SITE_URL: "https://CHANGE-ME.example.com"
|
|
167
167
|
|
|
168
168
|
jobs:
|
|
169
169
|
deploy:
|
|
@@ -179,18 +179,15 @@ jobs:
|
|
|
179
179
|
github-token: ${{ secrets.GITHUB_TOKEN }}
|
|
180
180
|
run-id: ${{ github.event.workflow_run.id }}
|
|
181
181
|
path: deploy-meta
|
|
182
|
-
#
|
|
183
|
-
#
|
|
184
|
-
#
|
|
185
|
-
#
|
|
186
|
-
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
deploy_token: ${{ secrets.BIGBASE_DEPLOY_TOKEN }}
|
|
192
|
-
ref: ${{ steps.meta.outputs.ref }}
|
|
193
|
-
skip_health_check: true
|
|
182
|
+
# Placeholder deploy step — bigpowers ships no deploy templates and pins
|
|
183
|
+
# no third-party action. Substitute your platform's own step here, or drop
|
|
184
|
+
# the deploy job entirely for CLI and library repos. Pin whatever action
|
|
185
|
+
# you choose to a full commit SHA rather than a tag. (GH #104)
|
|
186
|
+
- name: Deploy
|
|
187
|
+
run: |
|
|
188
|
+
echo "Replace this step with your platform's deploy command."
|
|
189
|
+
echo "commit=$(jq -r .sha deploy-meta/deploy-meta.json)"
|
|
190
|
+
exit 1
|
|
194
191
|
- name: Health check
|
|
195
192
|
run: |
|
|
196
193
|
curl -sf "${{ env.SITE_URL }}" || exit 1
|
package/skills-lock.json
CHANGED
|
@@ -48,7 +48,7 @@
|
|
|
48
48
|
},
|
|
49
49
|
"craft-skill": {
|
|
50
50
|
"description": "Create new bigpowers skills with proper structure, progressive disclosure, and bundled resources. Use when user wants to create, write, or build a new skill for the bigpowers lifecycle.",
|
|
51
|
-
"sha256": "
|
|
51
|
+
"sha256": "f3b08c24979f1857",
|
|
52
52
|
"path": "skills/craft-skillSKILL.md"
|
|
53
53
|
},
|
|
54
54
|
"deepen-architecture": {
|
|
@@ -62,8 +62,8 @@
|
|
|
62
62
|
"path": "skills/define-languageSKILL.md"
|
|
63
63
|
},
|
|
64
64
|
"define-success": {
|
|
65
|
-
"description": "
|
|
66
|
-
"sha256": "
|
|
65
|
+
"description": "\"TOMBSTONE — renamed/merged to plan-work. This stub resolves for one release then is removed.\"",
|
|
66
|
+
"sha256": "b0aeb8c0d870fe2e",
|
|
67
67
|
"path": "skills/define-successSKILL.md"
|
|
68
68
|
},
|
|
69
69
|
"delegate-task": {
|
|
@@ -73,7 +73,7 @@
|
|
|
73
73
|
},
|
|
74
74
|
"deploy": {
|
|
75
75
|
"description": "\"Build → verify artifact → deploy → wait → smoke deployment pipeline. Platform-agnostic (MCP or CLI), with configurable timeout, retry with exponential backoff, and integrated health-check. The deploy half of CI/CD: run after build to push to production.\"",
|
|
76
|
-
"sha256": "
|
|
76
|
+
"sha256": "ddfcbfbfc464c620",
|
|
77
77
|
"path": "skills/deploySKILL.md"
|
|
78
78
|
},
|
|
79
79
|
"design-interface": {
|
|
@@ -108,7 +108,7 @@
|
|
|
108
108
|
},
|
|
109
109
|
"elaborate-spec": {
|
|
110
110
|
"description": "Refine a rough idea into a clear, detailed specification through dialogue. Does not produce code. Use when user has a vague idea, wants to think through a feature before planning, or needs to turn \"I want X\" into a concrete spec.",
|
|
111
|
-
"sha256": "
|
|
111
|
+
"sha256": "67385bef84425f6d",
|
|
112
112
|
"path": "skills/elaborate-specSKILL.md"
|
|
113
113
|
},
|
|
114
114
|
"enforce-first": {
|
|
@@ -167,8 +167,8 @@
|
|
|
167
167
|
"path": "skills/guard-gitSKILL.md"
|
|
168
168
|
},
|
|
169
169
|
"harden-vps": {
|
|
170
|
-
"description": "\"Harden a production Linux VPS for
|
|
171
|
-
"sha256": "
|
|
170
|
+
"description": "\"Harden a production Linux VPS for your application across three layers — application (systemd hardening, monitoring alerts, backup automation), Ubuntu OS (UFW firewall, fail2ban SSH, unattended-upgrades, SSH hardening), and VPS provider (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.\"",
|
|
171
|
+
"sha256": "38db97ca3c00d736",
|
|
172
172
|
"path": "skills/harden-vpsSKILL.md"
|
|
173
173
|
},
|
|
174
174
|
"hook-commits": {
|
|
@@ -183,7 +183,7 @@
|
|
|
183
183
|
},
|
|
184
184
|
"investigate-bug": {
|
|
185
185
|
"description": "Investigate a bug or issue by exploring the codebase to find root cause, then write a TDD-based fix plan to specs/bugs/BUG-*.md. Use when user reports a bug, wants to investigate a problem, mentions \"triage\", or wants to plan a fix.",
|
|
186
|
-
"sha256": "
|
|
186
|
+
"sha256": "b842fd329d1f7741",
|
|
187
187
|
"path": "skills/investigate-bugSKILL.md"
|
|
188
188
|
},
|
|
189
189
|
"kickoff-branch": {
|
|
@@ -223,12 +223,12 @@
|
|
|
223
223
|
},
|
|
224
224
|
"plan-refactor": {
|
|
225
225
|
"description": "Create a detailed refactor plan with tiny commits via user interview, then save it as specs/REFACTOR_LATEST.md. Use when user wants to plan a refactor, create a refactoring RFC, or break a refactor into safe incremental steps.",
|
|
226
|
-
"sha256": "
|
|
226
|
+
"sha256": "c418c850806e2f16",
|
|
227
227
|
"path": "skills/plan-refactorSKILL.md"
|
|
228
228
|
},
|
|
229
229
|
"plan-release": {
|
|
230
230
|
"description": "\"RELEASE-INDEX BUILDER — Sequence elaborated epics into specs/release-plan.yaml with WSJF ordering and BCP baselines. NOT a planning-spine substitute: it does not scope work (scope-work) or write story tasks (plan-work). Use after elaborate-spec when the user wants a versioned release index of epics.\"",
|
|
231
|
-
"sha256": "
|
|
231
|
+
"sha256": "071acc0626c2a203",
|
|
232
232
|
"path": "skills/plan-releaseSKILL.md"
|
|
233
233
|
},
|
|
234
234
|
"plan-tests": {
|
|
@@ -238,7 +238,7 @@
|
|
|
238
238
|
},
|
|
239
239
|
"plan-work": {
|
|
240
240
|
"description": "\"PLANNING SPINE STEP 3 of 3 — Plan the work: write detailed implementation tasks into the active epic capsule (specs/epics/eNN-slug/). Produces countable-story-format .md specs and runnable -tasks.yaml files. Use after slice-tasks (step 2). Not a substitute for scope-work (step 1) or slice-tasks (step 2).\"",
|
|
241
|
-
"sha256": "
|
|
241
|
+
"sha256": "32c2bcaf16cb4ad2",
|
|
242
242
|
"path": "skills/plan-workSKILL.md"
|
|
243
243
|
},
|
|
244
244
|
"publish-package": {
|
|
@@ -363,7 +363,7 @@
|
|
|
363
363
|
},
|
|
364
364
|
"using-bigpowers": {
|
|
365
365
|
"description": "One-time bootstrap that introduces the bigpowers skills system, the PMBOK lifecycle arc, and tells you which skill to call first for your situation. Use when starting with bigpowers for the first time, when user asks \"where do I start?\", or when the skills system needs to be explained.",
|
|
366
|
-
"sha256": "
|
|
366
|
+
"sha256": "a6d780440a936929",
|
|
367
367
|
"path": "skills/using-bigpowersSKILL.md"
|
|
368
368
|
},
|
|
369
369
|
"validate-contracts": {
|
package/.fix_regex.sh
DELETED
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
#!/bin/bash
|
|
2
|
-
# Fix the broken regex in migrate-version.sh
|
|
3
|
-
cd /Users/danielvm/Developer/bigpowers
|
|
4
|
-
python3 -c '
|
|
5
|
-
path = "scripts/migrate-version.sh"
|
|
6
|
-
with open(path) as f:
|
|
7
|
-
content = f.read()
|
|
8
|
-
|
|
9
|
-
old = """ pat = re.compile(rf\"^\"+re.escape(md_key.rstrip(\":\"))+\"\\\\s*[:=]\\\\s*(.+)$\", re.MULTILINE | re.IGNORECASE)"""
|
|
10
|
-
new = """ pat = re.compile(r\"^\" + re.escape(md_key.rstrip(\":\")) + r\"\\s*[:=]\\s*(.+)$\", re.MULTILINE | re.IGNORECASE)"""
|
|
11
|
-
|
|
12
|
-
content = content.replace(old, new)
|
|
13
|
-
with open(path, "w") as f:
|
|
14
|
-
f.write(content)
|
|
15
|
-
print("Fixed")
|
|
16
|
-
'
|
|
@@ -1,53 +0,0 @@
|
|
|
1
|
-
import subprocess
|
|
2
|
-
|
|
3
|
-
REPO = "/Users/danielvm/Developer/bigpowers"
|
|
4
|
-
names = ["kickoff-branch","develop-tdd","wire-observability","hook-commits",
|
|
5
|
-
"request-review","dispatch-agents","investigate-bug","define-language",
|
|
6
|
-
"assess-impact","guard-git","smoke-test","respond-review","enforce-first"]
|
|
7
|
-
|
|
8
|
-
errs = 0
|
|
9
|
-
print("=== 1. Old sed vs new python3 (13 skills) ===")
|
|
10
|
-
for name in names:
|
|
11
|
-
old = subprocess.run(["sed", "-E", r"s/-/ /g; s/\b(.)/\U\1/g"],
|
|
12
|
-
input=name, capture_output=True, text=True).stdout.strip()
|
|
13
|
-
new = name.replace("-", " ").title()
|
|
14
|
-
if old != new:
|
|
15
|
-
print(f" BROKEN: {name:22s} -> old='{old}' new='{new}'")
|
|
16
|
-
errs += 1
|
|
17
|
-
|
|
18
|
-
print(f"\n {errs}/13 titles broken by BSD sed")
|
|
19
|
-
|
|
20
|
-
print("\n=== 2. Generated files match new fix ===")
|
|
21
|
-
ok = 0
|
|
22
|
-
for name in ["kickoff-branch","develop-tdd","wire-observability","dispatch-agents","guard-git"]:
|
|
23
|
-
path = f"{REPO}/specs/skills-wiki/skills/{name}.md"
|
|
24
|
-
expected = f'title: "{name.replace("-", " ").title()}"'
|
|
25
|
-
actual = "MISSING"
|
|
26
|
-
try:
|
|
27
|
-
with open(path) as f:
|
|
28
|
-
for line in f:
|
|
29
|
-
if line.startswith("title:"):
|
|
30
|
-
actual = line.strip()
|
|
31
|
-
break
|
|
32
|
-
except FileNotFoundError:
|
|
33
|
-
pass
|
|
34
|
-
match = "OK" if actual == expected else "MISMATCH"
|
|
35
|
-
if match == "OK": ok += 1
|
|
36
|
-
print(f" {match:8s} {name:22s} {actual}")
|
|
37
|
-
|
|
38
|
-
print(f"\n {ok}/5 generated files verified")
|
|
39
|
-
|
|
40
|
-
print("\n=== 3. validate-okf.sh ===")
|
|
41
|
-
r = subprocess.run(["bash", f"{REPO}/scripts/validate-okf.sh",
|
|
42
|
-
"--dir", f"{REPO}/specs/skills-wiki/skills"],
|
|
43
|
-
capture_output=True, text=True)
|
|
44
|
-
print(f" PASS={r.stdout.count('PASS ')} FAIL={r.stdout.count('FAIL ')} exit={r.returncode}")
|
|
45
|
-
|
|
46
|
-
print("\n=== 4. Patch applied ===")
|
|
47
|
-
with open(f"{REPO}/scripts/sync-skills.sh") as f:
|
|
48
|
-
for i, line in enumerate(f, 1):
|
|
49
|
-
if "python3" in line and "title()" in line:
|
|
50
|
-
print(f" line {i}: {line.strip()}")
|
|
51
|
-
break
|
|
52
|
-
|
|
53
|
-
print(f"\nVERDICT: {errs}/13 sed bug confirmed, {ok}/5 outputs correct, validate-okf pass")
|
package/_test_e28s01.sh
DELETED