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
|
@@ -5,6 +5,15 @@
|
|
|
5
5
|
// story: e76s02
|
|
6
6
|
// story: e69s02
|
|
7
7
|
// story: e74s02
|
|
8
|
+
// story: e71s02
|
|
9
|
+
// story: e62s02
|
|
10
|
+
// story: e73s02
|
|
11
|
+
// story: e70s02
|
|
12
|
+
// story: e67s02
|
|
13
|
+
// story: e66s02
|
|
14
|
+
// story: e72s02
|
|
15
|
+
// story: e68s02
|
|
16
|
+
// story: e65s02
|
|
8
17
|
// install-helpers.js — symlink helpers for bigpowers setup
|
|
9
18
|
|
|
10
19
|
const fs = require('fs');
|
|
@@ -175,6 +184,125 @@ function installGlobal(tool, repoRoot) {
|
|
|
175
184
|
linkRenderedSkills(renderedDir, targetDir);
|
|
176
185
|
break;
|
|
177
186
|
}
|
|
187
|
+
case 'qwen':
|
|
188
|
+
linkRenderedSkills(path.join(repoRoot, '.qwen/skills'), path.join(homeDir, '.qwen', 'skills'));
|
|
189
|
+
{
|
|
190
|
+
const agentsSrc = path.join(repoRoot, 'AGENTS.md');
|
|
191
|
+
const agentsDst = path.join(homeDir, '.qwen', 'QWEN.md');
|
|
192
|
+
fs.mkdirSync(path.dirname(agentsDst), { recursive: true });
|
|
193
|
+
linkFile(agentsSrc, agentsDst);
|
|
194
|
+
}
|
|
195
|
+
{
|
|
196
|
+
const hookSrc = path.join(repoRoot, 'scripts', 'hooks', 'qwen', 'pre-tool-git-guard.sh');
|
|
197
|
+
const hookDst = path.join(homeDir, '.qwen', 'hooks', 'pre-tool-git-guard.sh');
|
|
198
|
+
if (fs.existsSync(hookSrc)) {
|
|
199
|
+
fs.mkdirSync(path.dirname(hookDst), { recursive: true });
|
|
200
|
+
linkHook(hookSrc, hookDst);
|
|
201
|
+
}
|
|
202
|
+
}
|
|
203
|
+
break; // story: e68s02
|
|
204
|
+
case 'codebuddy':
|
|
205
|
+
linkRenderedSkills(path.join(repoRoot, '.codebuddy/skills'), path.join(homeDir, '.codebuddy', 'skills'));
|
|
206
|
+
{
|
|
207
|
+
const agentsSrc = path.join(repoRoot, 'AGENTS.md');
|
|
208
|
+
const agentsDst = path.join(homeDir, '.codebuddy', 'AGENTS.md');
|
|
209
|
+
fs.mkdirSync(path.dirname(agentsDst), { recursive: true });
|
|
210
|
+
linkFile(agentsSrc, agentsDst);
|
|
211
|
+
}
|
|
212
|
+
{
|
|
213
|
+
const hookSrc = path.join(repoRoot, 'scripts', 'hooks', 'codebuddy', 'pre-tool-git-guard.sh');
|
|
214
|
+
const hookDst = path.join(homeDir, '.codebuddy', 'hooks', 'pre-tool-git-guard.sh');
|
|
215
|
+
if (fs.existsSync(hookSrc)) {
|
|
216
|
+
fs.mkdirSync(path.dirname(hookDst), { recursive: true });
|
|
217
|
+
linkHook(hookSrc, hookDst);
|
|
218
|
+
}
|
|
219
|
+
}
|
|
220
|
+
break; // story: e72s02
|
|
221
|
+
case 'cline':
|
|
222
|
+
linkRenderedSkills(path.join(repoRoot, '.cline/skills'), path.join(homeDir, '.cline', 'skills'));
|
|
223
|
+
break; // story: e66s02
|
|
224
|
+
case 'kilo':
|
|
225
|
+
case 'kilocode':
|
|
226
|
+
{
|
|
227
|
+
const renderedDir = path.join(repoRoot, '.kilocode/rules');
|
|
228
|
+
const targetDir = path.join(homeDir, '.kilocode', 'rules');
|
|
229
|
+
fs.mkdirSync(targetDir, { recursive: true });
|
|
230
|
+
if (fs.existsSync(renderedDir)) {
|
|
231
|
+
for (const f of fs.readdirSync(renderedDir)) {
|
|
232
|
+
if (!f.endsWith('.md')) continue;
|
|
233
|
+
linkFile(path.join(renderedDir, f), path.join(targetDir, f));
|
|
234
|
+
}
|
|
235
|
+
}
|
|
236
|
+
}
|
|
237
|
+
{
|
|
238
|
+
const agentsSrc = path.join(repoRoot, 'AGENTS.md');
|
|
239
|
+
const agentsDst = path.join(homeDir, '.kilocode', 'AGENTS.md');
|
|
240
|
+
fs.mkdirSync(path.dirname(agentsDst), { recursive: true });
|
|
241
|
+
if (fs.existsSync(agentsSrc)) fs.copyFileSync(agentsSrc, agentsDst);
|
|
242
|
+
}
|
|
243
|
+
break; // story: e67s02
|
|
244
|
+
case 'trae':
|
|
245
|
+
linkRenderedSkills(path.join(repoRoot, '.trae/skills'), path.join(homeDir, '.trae', 'skills'));
|
|
246
|
+
{
|
|
247
|
+
const agentsSrc = path.join(repoRoot, 'AGENTS.md');
|
|
248
|
+
const agentsDst = path.join(homeDir, '.trae', 'AGENTS.md');
|
|
249
|
+
fs.mkdirSync(path.dirname(agentsDst), { recursive: true });
|
|
250
|
+
linkFile(agentsSrc, agentsDst);
|
|
251
|
+
}
|
|
252
|
+
{
|
|
253
|
+
const hookSrc = path.join(repoRoot, 'scripts', 'hooks', 'trae', 'pre-tool-git-guard.sh');
|
|
254
|
+
const hookDst = path.join(homeDir, '.trae', 'hooks', 'pre-tool-git-guard.sh');
|
|
255
|
+
if (fs.existsSync(hookSrc)) {
|
|
256
|
+
fs.mkdirSync(path.dirname(hookDst), { recursive: true });
|
|
257
|
+
linkHook(hookSrc, hookDst);
|
|
258
|
+
}
|
|
259
|
+
}
|
|
260
|
+
break; // story: e70s02
|
|
261
|
+
case 'windsurf':
|
|
262
|
+
{
|
|
263
|
+
const renderedDir = path.join(repoRoot, '.windsurf/rules');
|
|
264
|
+
const targetDir = path.join(homeDir, '.codeium/windsurf', 'rules');
|
|
265
|
+
fs.mkdirSync(targetDir, { recursive: true });
|
|
266
|
+
if (fs.existsSync(renderedDir)) {
|
|
267
|
+
for (const f of fs.readdirSync(renderedDir)) {
|
|
268
|
+
if (!f.endsWith('.md')) continue;
|
|
269
|
+
linkFile(path.join(renderedDir, f), path.join(targetDir, f));
|
|
270
|
+
}
|
|
271
|
+
}
|
|
272
|
+
}
|
|
273
|
+
{
|
|
274
|
+
const agentsSrc = path.join(repoRoot, 'AGENTS.md');
|
|
275
|
+
const agentsDst = path.join(homeDir, '.codeium/windsurf', 'AGENTS.md');
|
|
276
|
+
fs.mkdirSync(path.dirname(agentsDst), { recursive: true });
|
|
277
|
+
if (fs.existsSync(agentsSrc)) fs.copyFileSync(agentsSrc, agentsDst);
|
|
278
|
+
}
|
|
279
|
+
{
|
|
280
|
+
const hookSrc = path.join(repoRoot, 'scripts', 'hooks', 'windsurf', 'pre-tool-git-guard.sh');
|
|
281
|
+
const hookDst = path.join(homeDir, '.codeium/windsurf', 'hooks', 'pre-tool-git-guard.sh');
|
|
282
|
+
if (fs.existsSync(hookSrc)) {
|
|
283
|
+
fs.mkdirSync(path.dirname(hookDst), { recursive: true });
|
|
284
|
+
linkHook(hookSrc, hookDst);
|
|
285
|
+
}
|
|
286
|
+
}
|
|
287
|
+
break; // story: e73s02
|
|
288
|
+
case 'opencode':
|
|
289
|
+
linkRenderedSkills(path.join(repoRoot, '.opencode/skills'), path.join(homeDir, '.config/opencode', 'skills'));
|
|
290
|
+
{
|
|
291
|
+
const agentsSrc = path.join(repoRoot, 'AGENTS.md');
|
|
292
|
+
const agentsDst = path.join(homeDir, '.config/opencode', 'AGENTS.md');
|
|
293
|
+
fs.mkdirSync(path.dirname(agentsDst), { recursive: true });
|
|
294
|
+
linkFile(agentsSrc, agentsDst);
|
|
295
|
+
}
|
|
296
|
+
break; // story: e62s02
|
|
297
|
+
case 'copilot':
|
|
298
|
+
linkRenderedSkills(path.join(repoRoot, '.copilot/skills'), path.join(homeDir, '.copilot', 'skills'));
|
|
299
|
+
{
|
|
300
|
+
const agentsSrc = path.join(repoRoot, 'AGENTS.md');
|
|
301
|
+
const agentsDst = path.join(homeDir, '.copilot', 'AGENTS.md');
|
|
302
|
+
fs.mkdirSync(path.dirname(agentsDst), { recursive: true });
|
|
303
|
+
if (fs.existsSync(agentsSrc)) fs.copyFileSync(agentsSrc, agentsDst);
|
|
304
|
+
}
|
|
305
|
+
break; // story: e71s02
|
|
178
306
|
case 'cursor': {
|
|
179
307
|
const rulesSrc = path.join(repoRoot, '.cursor', 'rules');
|
|
180
308
|
const rulesDst = path.join(homeDir, '.cursor', 'rules');
|
|
@@ -380,8 +508,17 @@ function uninstallTool(toolId, repoRoot) {
|
|
|
380
508
|
removeSymlink(path.join(homeDir, '.cursor', 'rules'));
|
|
381
509
|
break;
|
|
382
510
|
case 'codex':
|
|
383
|
-
|
|
384
|
-
|
|
511
|
+
{
|
|
512
|
+
const skillsDir = path.join(homeDir, '.codex', 'skills');
|
|
513
|
+
if (fs.existsSync(skillsDir)) {
|
|
514
|
+
for (const entry of fs.readdirSync(skillsDir, { withFileTypes: true })) {
|
|
515
|
+
if (!entry.isSymbolicLink()) continue;
|
|
516
|
+
removeSymlink(path.join(skillsDir, entry.name));
|
|
517
|
+
}
|
|
518
|
+
}
|
|
519
|
+
}
|
|
520
|
+
removeSymlink(path.join(homeDir, '.codex', 'hooks', 'pre-tool-git-guard.sh'));
|
|
521
|
+
break; // story: e65s02
|
|
385
522
|
}
|
|
386
523
|
}
|
|
387
524
|
|
|
@@ -0,0 +1,227 @@
|
|
|
1
|
+
# ── Claude Code ───────────────────────────────────────────────────────────────
|
|
2
|
+
|
|
3
|
+
CLAUDE_CONFIG_DIR="$HOME/.claude"
|
|
4
|
+
CLAUDE_SKILLS_DIR="$CLAUDE_CONFIG_DIR/skills"
|
|
5
|
+
CLAUDE_HOOKS_DIR="$CLAUDE_CONFIG_DIR/hooks"
|
|
6
|
+
CLAUDE_SETTINGS="$CLAUDE_CONFIG_DIR/settings.json"
|
|
7
|
+
|
|
8
|
+
install_claude() {
|
|
9
|
+
echo ""
|
|
10
|
+
echo "Claude Code → $CLAUDE_SKILLS_DIR/"
|
|
11
|
+
local count=0
|
|
12
|
+
for skill_dir in "$SKILLS_ROOT"/*/; do
|
|
13
|
+
[[ -f "$skill_dir/SKILL.md" ]] || continue
|
|
14
|
+
local name; name="$(basename "$skill_dir")"
|
|
15
|
+
link "$skill_dir" "$CLAUDE_SKILLS_DIR/$name"
|
|
16
|
+
count=$((count + 1))
|
|
17
|
+
done
|
|
18
|
+
echo " $count skills installed"
|
|
19
|
+
|
|
20
|
+
echo "Claude Code Hooks → $CLAUDE_HOOKS_DIR/"
|
|
21
|
+
link "$REPO_ROOT/.gemini/extensions/bigpowers/hooks/session-start" "$CLAUDE_HOOKS_DIR/session-start"
|
|
22
|
+
link "$REPO_ROOT/.gemini/extensions/bigpowers/hooks/run-hook.cmd" "$CLAUDE_HOOKS_DIR/run-hook.cmd"
|
|
23
|
+
# story: e60s01 e63 — canonical path is skills/guard-git (not bare guard-git/)
|
|
24
|
+
link "$REPO_ROOT/skills/guard-git/scripts/block-dangerous-git.sh" "$CLAUDE_HOOKS_DIR/block-dangerous-git.sh"
|
|
25
|
+
link "$REPO_ROOT/skills/guard-git/scripts/lib" "$CLAUDE_HOOKS_DIR/lib"
|
|
26
|
+
link "$REPO_ROOT/scripts/hooks/rtk-rewrite.sh" "$CLAUDE_HOOKS_DIR/rtk-rewrite.sh"
|
|
27
|
+
# story: e45s16
|
|
28
|
+
chmod +x "$REPO_ROOT/scripts/hooks/rtk-rewrite.sh" 2>/dev/null || true
|
|
29
|
+
|
|
30
|
+
if [[ -f "$CLAUDE_SETTINGS" ]]; then
|
|
31
|
+
echo " Configuring global hooks in $CLAUDE_SETTINGS..."
|
|
32
|
+
# Robustly add hooks to settings.json if not already present
|
|
33
|
+
if command -v jq >/dev/null; then
|
|
34
|
+
local tmp; tmp=$(mktemp)
|
|
35
|
+
cat "$CLAUDE_SETTINGS" | jq '
|
|
36
|
+
.hooks.SessionStart += [{"matcher":"startup|clear|compact","hooks":[{"type":"command","command":"\"'"$CLAUDE_HOOKS_DIR/run-hook.cmd"'\" session-start","async":false}]}] |
|
|
37
|
+
.hooks.PreToolUse += [{"matcher":"Bash","hooks":[{"type":"command","command":"\"'"$CLAUDE_HOOKS_DIR/block-dangerous-git.sh"'\""}]}] |
|
|
38
|
+
.hooks.PreToolUse += [{"matcher":"Bash","hooks":[{"type":"command","command":"\"'"$CLAUDE_HOOKS_DIR/rtk-rewrite.sh"'\""}]}] |
|
|
39
|
+
# deduplicate
|
|
40
|
+
.hooks.SessionStart |= unique |
|
|
41
|
+
.hooks.PreToolUse |= unique
|
|
42
|
+
' > "$tmp" && run mv "$tmp" "$CLAUDE_SETTINGS"
|
|
43
|
+
else
|
|
44
|
+
echo " WARNING: jq not found. Manual setup required in $CLAUDE_SETTINGS"
|
|
45
|
+
fi
|
|
46
|
+
fi
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
uninstall_claude() {
|
|
50
|
+
echo ""
|
|
51
|
+
echo "Claude Code → removing management from $CLAUDE_CONFIG_DIR/"
|
|
52
|
+
if [[ -d "$CLAUDE_SKILLS_DIR" ]]; then
|
|
53
|
+
for dst in "$CLAUDE_SKILLS_DIR"/*/; do
|
|
54
|
+
[[ -L "${dst%/}" ]] || continue
|
|
55
|
+
unlink_if_managed "${dst%/}" "$REPO_ROOT/"
|
|
56
|
+
done
|
|
57
|
+
fi
|
|
58
|
+
if [[ -d "$CLAUDE_HOOKS_DIR" ]]; then
|
|
59
|
+
unlink_if_managed "$CLAUDE_HOOKS_DIR/session-start" "$REPO_ROOT/"
|
|
60
|
+
unlink_if_managed "$CLAUDE_HOOKS_DIR/run-hook.cmd" "$REPO_ROOT/"
|
|
61
|
+
unlink_if_managed "$CLAUDE_HOOKS_DIR/block-dangerous-git.sh" "$REPO_ROOT/"
|
|
62
|
+
unlink_if_managed "$CLAUDE_HOOKS_DIR/rtk-rewrite.sh" "$REPO_ROOT/"
|
|
63
|
+
unlink_if_managed "$CLAUDE_HOOKS_DIR/lib" "$REPO_ROOT/"
|
|
64
|
+
fi
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
# ── Gemini CLI (e64s02) ───────────────────────────────────────────────────────
|
|
68
|
+
|
|
69
|
+
GEMINI_CONFIG_DIR="$HOME/.gemini"
|
|
70
|
+
GEMINI_EXT_SRC="$REPO_ROOT/.gemini/extensions/bigpowers"
|
|
71
|
+
GEMINI_EXT_DST="$GEMINI_CONFIG_DIR/config/plugins/bigpowers"
|
|
72
|
+
GEMINI_HOOKS_SRC="$GEMINI_EXT_SRC/hooks"
|
|
73
|
+
GEMINI_HOOKS_DIR="$GEMINI_CONFIG_DIR/hooks"
|
|
74
|
+
GEMINI_SETTINGS="$GEMINI_CONFIG_DIR/settings.json"
|
|
75
|
+
|
|
76
|
+
install_gemini() {
|
|
77
|
+
echo ""
|
|
78
|
+
echo "Gemini CLI → $GEMINI_EXT_DST"
|
|
79
|
+
if [[ ! -d "$GEMINI_EXT_SRC" ]]; then
|
|
80
|
+
echo " WARNING: $GEMINI_EXT_SRC not found — run sync-skills.sh first"
|
|
81
|
+
return
|
|
82
|
+
fi
|
|
83
|
+
link "$GEMINI_EXT_SRC" "$GEMINI_EXT_DST"
|
|
84
|
+
|
|
85
|
+
echo "Gemini CLI Hooks → $GEMINI_HOOKS_DIR/"
|
|
86
|
+
link "$GEMINI_HOOKS_SRC/session-start" "$GEMINI_HOOKS_DIR/session-start"
|
|
87
|
+
link "$GEMINI_HOOKS_SRC/run-hook.cmd" "$GEMINI_HOOKS_DIR/run-hook.cmd"
|
|
88
|
+
link "$GEMINI_HOOKS_SRC/before-tool-git-guard.sh" "$GEMINI_HOOKS_DIR/before-tool-git-guard.sh"
|
|
89
|
+
link "$GEMINI_HOOKS_SRC/before-tool-rtk.sh" "$GEMINI_HOOKS_DIR/before-tool-rtk.sh"
|
|
90
|
+
link "$GEMINI_HOOKS_SRC/before-tool-token-mgmt.sh" "$GEMINI_HOOKS_DIR/before-tool-token-mgmt.sh"
|
|
91
|
+
chmod +x "$GEMINI_HOOKS_SRC/before-tool-git-guard.sh" \
|
|
92
|
+
"$GEMINI_HOOKS_SRC/before-tool-rtk.sh" \
|
|
93
|
+
"$GEMINI_HOOKS_SRC/before-tool-token-mgmt.sh" 2>/dev/null || true
|
|
94
|
+
|
|
95
|
+
if [[ -f "$GEMINI_SETTINGS" ]]; then
|
|
96
|
+
echo " Configuring global hooks in $GEMINI_SETTINGS..."
|
|
97
|
+
if command -v jq >/dev/null; then
|
|
98
|
+
local tmp; tmp=$(mktemp)
|
|
99
|
+
cat "$GEMINI_SETTINGS" | jq '
|
|
100
|
+
.hooks.SessionStart += [{"matcher":"startup|clear|compact","hooks":[{"type":"command","command":"\"'"$GEMINI_HOOKS_DIR/run-hook.cmd"'\" session-start","async":false}]}] |
|
|
101
|
+
.hooks.BeforeTool += [{"matcher":"run_shell_command","hooks":[{"name":"git-guardrails","type":"command","command":"GIT_GUARDRAILS_MODE=gemini \"'"$GEMINI_HOOKS_DIR/before-tool-git-guard.sh"'\"","timeout":5000}]}] |
|
|
102
|
+
.hooks.BeforeTool += [{"matcher":"run_shell_command","hooks":[{"name":"rtk-rewrite","type":"command","command":"\"'"$GEMINI_HOOKS_DIR/before-tool-rtk.sh"'\"","timeout":3000}]}] |
|
|
103
|
+
.hooks.SessionStart |= unique |
|
|
104
|
+
.hooks.BeforeTool |= unique
|
|
105
|
+
' > "$tmp" && run mv "$tmp" "$GEMINI_SETTINGS"
|
|
106
|
+
else
|
|
107
|
+
echo " WARNING: jq not found. Manual setup required in $GEMINI_SETTINGS"
|
|
108
|
+
echo " See $GEMINI_HOOKS_SRC/settings.json.example"
|
|
109
|
+
fi
|
|
110
|
+
else
|
|
111
|
+
echo " NOTE: $GEMINI_SETTINGS not found — copy $GEMINI_HOOKS_SRC/settings.json.example after first Gemini run"
|
|
112
|
+
fi
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
uninstall_gemini() {
|
|
116
|
+
echo ""
|
|
117
|
+
echo "Gemini CLI → removing management from $GEMINI_CONFIG_DIR/"
|
|
118
|
+
unlink_if_managed "$GEMINI_EXT_DST" "$REPO_ROOT/"
|
|
119
|
+
if [[ -d "$GEMINI_HOOKS_DIR" ]]; then
|
|
120
|
+
unlink_if_managed "$GEMINI_HOOKS_DIR/session-start" "$REPO_ROOT/"
|
|
121
|
+
unlink_if_managed "$GEMINI_HOOKS_DIR/run-hook.cmd" "$REPO_ROOT/"
|
|
122
|
+
unlink_if_managed "$GEMINI_HOOKS_DIR/before-tool-git-guard.sh" "$REPO_ROOT/"
|
|
123
|
+
unlink_if_managed "$GEMINI_HOOKS_DIR/before-tool-rtk.sh" "$REPO_ROOT/"
|
|
124
|
+
unlink_if_managed "$GEMINI_HOOKS_DIR/before-tool-token-mgmt.sh" "$REPO_ROOT/"
|
|
125
|
+
fi
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
# ── Cursor ────────────────────────────────────────────────────────────────────
|
|
129
|
+
|
|
130
|
+
CURSOR_RULES_SRC="$REPO_ROOT/.cursor/rules"
|
|
131
|
+
CURSOR_RULES_DST="$HOME/.cursor/rules"
|
|
132
|
+
|
|
133
|
+
install_cursor() {
|
|
134
|
+
echo ""
|
|
135
|
+
echo "Cursor → $CURSOR_RULES_DST"
|
|
136
|
+
if [[ ! -d "$CURSOR_RULES_SRC" ]]; then
|
|
137
|
+
echo " WARNING: $CURSOR_RULES_SRC not found — run sync-skills.sh first"
|
|
138
|
+
return
|
|
139
|
+
fi
|
|
140
|
+
link "$CURSOR_RULES_SRC" "$CURSOR_RULES_DST"
|
|
141
|
+
echo ""
|
|
142
|
+
echo " NOTE: Cursor does not scan ~/.cursor/rules/ globally."
|
|
143
|
+
echo " For per-project access, run in your project root:"
|
|
144
|
+
echo " ln -sfn $CURSOR_RULES_SRC .cursor/rules"
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
uninstall_cursor() {
|
|
148
|
+
echo ""
|
|
149
|
+
echo "Cursor → removing $CURSOR_RULES_DST"
|
|
150
|
+
unlink_if_managed "$CURSOR_RULES_DST" "$REPO_ROOT/"
|
|
151
|
+
}
|
|
152
|
+
|
|
153
|
+
# ── pi ────────────────────────────────────────────────────────────────────────
|
|
154
|
+
|
|
155
|
+
PI_CONFIG_DIR="$HOME/.pi"
|
|
156
|
+
PI_SKILLS_DIR="$PI_CONFIG_DIR/agent/skills"
|
|
157
|
+
|
|
158
|
+
install_pi() {
|
|
159
|
+
echo ""
|
|
160
|
+
echo "pi → $PI_SKILLS_DIR/"
|
|
161
|
+
local count=0
|
|
162
|
+
for skill_dir in "$SKILLS_ROOT"/*/; do
|
|
163
|
+
[[ -f "$skill_dir/SKILL.md" ]] || continue
|
|
164
|
+
local name; name="$(basename "$skill_dir")"
|
|
165
|
+
link "$skill_dir" "$PI_SKILLS_DIR/$name"
|
|
166
|
+
count=$((count + 1))
|
|
167
|
+
done
|
|
168
|
+
echo " $count skills installed"
|
|
169
|
+
}
|
|
170
|
+
|
|
171
|
+
uninstall_pi() {
|
|
172
|
+
echo ""
|
|
173
|
+
echo "pi → removing management from $PI_CONFIG_DIR/"
|
|
174
|
+
if [[ -d "$PI_SKILLS_DIR" ]]; then
|
|
175
|
+
for dst in "$PI_SKILLS_DIR"/*/; do
|
|
176
|
+
[[ -L "${dst%/}" ]] || continue
|
|
177
|
+
unlink_if_managed "${dst%/}" "$REPO_ROOT/"
|
|
178
|
+
done
|
|
179
|
+
fi
|
|
180
|
+
}
|
|
181
|
+
|
|
182
|
+
# ── Hermes Agent (e61s02) ─────────────────────────────────────────────────────
|
|
183
|
+
|
|
184
|
+
HERMES_CONFIG_DIR="$HOME/.hermes"
|
|
185
|
+
HERMES_SKILLS_DIR="$HERMES_CONFIG_DIR/skills"
|
|
186
|
+
HERMES_RENDERED="$REPO_ROOT/.hermes/skills"
|
|
187
|
+
HERMES_CONFIG="$HERMES_CONFIG_DIR/config.yaml"
|
|
188
|
+
HERMES_HOOKS_DIR="$HERMES_CONFIG_DIR/hooks"
|
|
189
|
+
|
|
190
|
+
install_hermes() {
|
|
191
|
+
echo ""
|
|
192
|
+
echo "Hermes Agent → $HERMES_SKILLS_DIR/"
|
|
193
|
+
if [[ ! -d "$HERMES_RENDERED" ]]; then
|
|
194
|
+
echo " WARNING: $HERMES_RENDERED not found — run sync-skills.sh first"
|
|
195
|
+
return
|
|
196
|
+
fi
|
|
197
|
+
local count=0
|
|
198
|
+
for skill_dir in "$HERMES_RENDERED"/*/; do
|
|
199
|
+
[[ -f "${skill_dir}SKILL.md" ]] || continue
|
|
200
|
+
local name; name="$(basename "$skill_dir")"
|
|
201
|
+
link "$skill_dir" "$HERMES_SKILLS_DIR/$name"
|
|
202
|
+
count=$((count + 1))
|
|
203
|
+
done
|
|
204
|
+
echo " $count skills installed"
|
|
205
|
+
|
|
206
|
+
echo "Hermes Agent → context bridge $HERMES_CONFIG"
|
|
207
|
+
source "$REPO_ROOT/scripts/lib/context-wire.sh"
|
|
208
|
+
wire_context_mode config-bridge "$HERMES_CONFIG" "instructions" "AGENTS.md"
|
|
209
|
+
|
|
210
|
+
if [[ -d "$REPO_ROOT/scripts/hooks/hermes/gateway/session-log" ]]; then
|
|
211
|
+
echo "Hermes Agent hook templates → $HERMES_HOOKS_DIR/ (copy paths into config to enable)"
|
|
212
|
+
link "$REPO_ROOT/scripts/hooks/hermes/gateway/session-log" "$HERMES_HOOKS_DIR/session-log"
|
|
213
|
+
fi
|
|
214
|
+
}
|
|
215
|
+
|
|
216
|
+
uninstall_hermes() {
|
|
217
|
+
echo ""
|
|
218
|
+
echo "Hermes Agent → removing management from $HERMES_CONFIG_DIR/"
|
|
219
|
+
if [[ -d "$HERMES_SKILLS_DIR" ]]; then
|
|
220
|
+
for dst in "$HERMES_SKILLS_DIR"/*/; do
|
|
221
|
+
[[ -L "${dst%/}" ]] || continue
|
|
222
|
+
unlink_if_managed "${dst%/}" "$REPO_ROOT/"
|
|
223
|
+
done
|
|
224
|
+
fi
|
|
225
|
+
unlink_if_managed "$HERMES_HOOKS_DIR/session-log" "$REPO_ROOT/"
|
|
226
|
+
}
|
|
227
|
+
|
|
@@ -0,0 +1,226 @@
|
|
|
1
|
+
# ── ZCode (e76s02) ────────────────────────────────────────────────────────────
|
|
2
|
+
|
|
3
|
+
ZCODE_CONFIG_DIR="$HOME/.zcode"
|
|
4
|
+
ZCODE_SKILLS_DIR="$ZCODE_CONFIG_DIR/skills"
|
|
5
|
+
ZCODE_RENDERED="$REPO_ROOT/.zcode/skills"
|
|
6
|
+
ZCODE_AGENTS="$ZCODE_CONFIG_DIR/AGENTS.md"
|
|
7
|
+
|
|
8
|
+
install_zcode() {
|
|
9
|
+
echo ""
|
|
10
|
+
echo "ZCode → $ZCODE_SKILLS_DIR/"
|
|
11
|
+
if [[ ! -d "$ZCODE_RENDERED" ]]; then
|
|
12
|
+
echo " WARNING: $ZCODE_RENDERED not found — run sync-skills.sh first"
|
|
13
|
+
return
|
|
14
|
+
fi
|
|
15
|
+
local count=0
|
|
16
|
+
for skill_dir in "$ZCODE_RENDERED"/*/; do
|
|
17
|
+
[[ -f "${skill_dir}SKILL.md" ]] || continue
|
|
18
|
+
local name; name="$(basename "$skill_dir")"
|
|
19
|
+
link "$skill_dir" "$ZCODE_SKILLS_DIR/$name"
|
|
20
|
+
count=$((count + 1))
|
|
21
|
+
done
|
|
22
|
+
echo " $count skills installed"
|
|
23
|
+
|
|
24
|
+
echo "ZCode → context symlink $ZCODE_AGENTS"
|
|
25
|
+
source "$REPO_ROOT/scripts/lib/context-wire.sh"
|
|
26
|
+
local zcode_agents_src="$REPO_ROOT/AGENTS.md"
|
|
27
|
+
[[ -f "$zcode_agents_src" ]] || zcode_agents_src="$REPO_ROOT/docs/templates/AGENTS.md"
|
|
28
|
+
wire_context_mode symlink "$ZCODE_AGENTS" "" read "$zcode_agents_src"
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
uninstall_zcode() {
|
|
32
|
+
echo ""
|
|
33
|
+
echo "ZCode → removing management from $ZCODE_CONFIG_DIR/"
|
|
34
|
+
if [[ -d "$ZCODE_SKILLS_DIR" ]]; then
|
|
35
|
+
for dst in "$ZCODE_SKILLS_DIR"/*/; do
|
|
36
|
+
[[ -L "${dst%/}" ]] || continue
|
|
37
|
+
unlink_if_managed "${dst%/}" "$REPO_ROOT/"
|
|
38
|
+
done
|
|
39
|
+
fi
|
|
40
|
+
unlink_if_managed "$ZCODE_AGENTS" "$REPO_ROOT/"
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
# ── MiMo Code (e69s02) ────────────────────────────────────────────────────────
|
|
44
|
+
|
|
45
|
+
MIMO_CONFIG_DIR="$HOME/.mimocode"
|
|
46
|
+
MIMO_SKILLS_DIR="$MIMO_CONFIG_DIR/skills"
|
|
47
|
+
MIMO_RENDERED="$REPO_ROOT/.mimocode/skills"
|
|
48
|
+
MIMO_AGENTS="$MIMO_CONFIG_DIR/AGENTS.md"
|
|
49
|
+
|
|
50
|
+
install_mimo() {
|
|
51
|
+
echo ""
|
|
52
|
+
echo "MiMo Code → $MIMO_SKILLS_DIR/"
|
|
53
|
+
if [[ ! -d "$MIMO_RENDERED" ]]; then
|
|
54
|
+
echo " WARNING: $MIMO_RENDERED not found — run sync-skills.sh first"
|
|
55
|
+
return
|
|
56
|
+
fi
|
|
57
|
+
local count=0
|
|
58
|
+
for skill_dir in "$MIMO_RENDERED"/*/; do
|
|
59
|
+
[[ -f "${skill_dir}SKILL.md" ]] || continue
|
|
60
|
+
local name; name="$(basename "$skill_dir")"
|
|
61
|
+
link "$skill_dir" "$MIMO_SKILLS_DIR/$name"
|
|
62
|
+
count=$((count + 1))
|
|
63
|
+
done
|
|
64
|
+
echo " $count skills installed"
|
|
65
|
+
|
|
66
|
+
echo "MiMo Code → context symlink $MIMO_AGENTS"
|
|
67
|
+
source "$REPO_ROOT/scripts/lib/context-wire.sh"
|
|
68
|
+
local mimo_agents_src="$REPO_ROOT/AGENTS.md"
|
|
69
|
+
[[ -f "$mimo_agents_src" ]] || mimo_agents_src="$REPO_ROOT/docs/templates/AGENTS.md"
|
|
70
|
+
wire_context_mode symlink "$MIMO_AGENTS" "" read "$mimo_agents_src"
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
uninstall_mimo() {
|
|
74
|
+
echo ""
|
|
75
|
+
echo "MiMo Code → removing management from $MIMO_CONFIG_DIR/"
|
|
76
|
+
if [[ -d "$MIMO_SKILLS_DIR" ]]; then
|
|
77
|
+
for dst in "$MIMO_SKILLS_DIR"/*/; do
|
|
78
|
+
[[ -L "${dst%/}" ]] || continue
|
|
79
|
+
unlink_if_managed "${dst%/}" "$REPO_ROOT/"
|
|
80
|
+
done
|
|
81
|
+
fi
|
|
82
|
+
unlink_if_managed "$MIMO_AGENTS" "$REPO_ROOT/"
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
# ── Antigravity CLI / agy (e74s02) ────────────────────────────────────────────
|
|
86
|
+
# Global skills: ~/.gemini/antigravity-cli/skills/ (separate from e64 Gemini extension)
|
|
87
|
+
|
|
88
|
+
AGY_CONFIG_DIR="$HOME/.gemini/antigravity-cli"
|
|
89
|
+
AGY_SKILLS_DIR="$AGY_CONFIG_DIR/skills"
|
|
90
|
+
AGY_RENDERED="$REPO_ROOT/.agents/skills"
|
|
91
|
+
|
|
92
|
+
install_agy() {
|
|
93
|
+
echo ""
|
|
94
|
+
echo "Antigravity CLI → $AGY_SKILLS_DIR/"
|
|
95
|
+
if [[ ! -d "$AGY_RENDERED" ]]; then
|
|
96
|
+
echo " WARNING: $AGY_RENDERED not found — run sync-skills.sh first"
|
|
97
|
+
return
|
|
98
|
+
fi
|
|
99
|
+
local count=0
|
|
100
|
+
for skill_dir in "$AGY_RENDERED"/*/; do
|
|
101
|
+
[[ -f "${skill_dir}SKILL.md" ]] || continue
|
|
102
|
+
local name; name="$(basename "$skill_dir")"
|
|
103
|
+
link "$skill_dir" "$AGY_SKILLS_DIR/$name"
|
|
104
|
+
count=$((count + 1))
|
|
105
|
+
done
|
|
106
|
+
echo " $count skills installed"
|
|
107
|
+
echo " NOTE: Antigravity uses ~/.gemini/antigravity-cli/skills/ — not .gemini/extensions/ (Gemini CLI)"
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
install_antigravity() {
|
|
111
|
+
install_agy
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
uninstall_agy() {
|
|
115
|
+
echo ""
|
|
116
|
+
echo "Antigravity CLI → removing management from $AGY_CONFIG_DIR/"
|
|
117
|
+
if [[ -d "$AGY_SKILLS_DIR" ]]; then
|
|
118
|
+
for dst in "$AGY_SKILLS_DIR"/*/; do
|
|
119
|
+
[[ -L "${dst%/}" ]] || continue
|
|
120
|
+
unlink_if_managed "${dst%/}" "$REPO_ROOT/"
|
|
121
|
+
done
|
|
122
|
+
fi
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
uninstall_antigravity() {
|
|
126
|
+
uninstall_agy
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
# ── Codex CLI (e65s02) ───────────────────────────────────────────────────────
|
|
130
|
+
|
|
131
|
+
CODEX_CONFIG_DIR="$HOME/.codex"
|
|
132
|
+
CODEX_SKILLS_DIR="$CODEX_CONFIG_DIR/skills"
|
|
133
|
+
CODEX_RENDERED="$REPO_ROOT/.codex/skills"
|
|
134
|
+
CODEX_CONFIG_FILE="$CODEX_CONFIG_DIR/config.toml"
|
|
135
|
+
CODEX_HOOKS_DIR="$CODEX_CONFIG_DIR/hooks"
|
|
136
|
+
CODEX_HOOK_SRC="$REPO_ROOT/scripts/hooks/codex/pre-tool-git-guard.sh"
|
|
137
|
+
|
|
138
|
+
install_codex() {
|
|
139
|
+
echo ""
|
|
140
|
+
echo "Codex CLI → $CODEX_SKILLS_DIR/"
|
|
141
|
+
if [[ ! -d "$CODEX_RENDERED" ]]; then
|
|
142
|
+
echo " WARNING: $CODEX_RENDERED not found — run sync-skills.sh first"
|
|
143
|
+
return
|
|
144
|
+
fi
|
|
145
|
+
local count=0
|
|
146
|
+
for skill_dir in "$CODEX_RENDERED"/*/; do
|
|
147
|
+
[[ -f "${skill_dir}SKILL.md" ]] || continue
|
|
148
|
+
local name; name="$(basename "$skill_dir")"
|
|
149
|
+
link "$skill_dir" "$CODEX_SKILLS_DIR/$name"
|
|
150
|
+
count=$((count + 1))
|
|
151
|
+
done
|
|
152
|
+
echo " $count skills installed"
|
|
153
|
+
echo "Codex CLI → context config-bridge $CODEX_CONFIG_FILE"
|
|
154
|
+
source "$REPO_ROOT/scripts/lib/context-wire.sh"
|
|
155
|
+
local agents_src="$REPO_ROOT/AGENTS.md"
|
|
156
|
+
[[ -f "$agents_src" ]] || agents_src="$REPO_ROOT/docs/templates/AGENTS.md"
|
|
157
|
+
wire_context_mode config-bridge "$CODEX_CONFIG_FILE" "instructions" "AGENTS.md"
|
|
158
|
+
if [[ -f "$CODEX_HOOK_SRC" ]]; then
|
|
159
|
+
echo "Codex CLI Hooks → $CODEX_HOOKS_DIR/"
|
|
160
|
+
link "$CODEX_HOOK_SRC" "$CODEX_HOOKS_DIR/pre-tool-git-guard.sh"
|
|
161
|
+
chmod +x "$CODEX_HOOK_SRC" 2>/dev/null || true
|
|
162
|
+
echo " NOTE: copy $REPO_ROOT/scripts/hooks/codex/settings.example.json into tool config"
|
|
163
|
+
fi
|
|
164
|
+
}
|
|
165
|
+
|
|
166
|
+
uninstall_codex() {
|
|
167
|
+
echo ""
|
|
168
|
+
echo "Codex CLI → removing management from $CODEX_CONFIG_DIR/"
|
|
169
|
+
if [[ -d "$CODEX_SKILLS_DIR" ]]; then
|
|
170
|
+
for dst in "$CODEX_SKILLS_DIR"/*/; do
|
|
171
|
+
[[ -L "${dst%/}" ]] || continue
|
|
172
|
+
unlink_if_managed "${dst%/}" "$REPO_ROOT/"
|
|
173
|
+
done
|
|
174
|
+
fi
|
|
175
|
+
# config-bridge file $CODEX_CONFIG_FILE left for user
|
|
176
|
+
unlink_if_managed "$CODEX_HOOKS_DIR/pre-tool-git-guard.sh" "$REPO_ROOT/"
|
|
177
|
+
}
|
|
178
|
+
# ── Qwen Code (e68s02) ───────────────────────────────────────────────────────
|
|
179
|
+
|
|
180
|
+
QWEN_CONFIG_DIR="$HOME/.qwen"
|
|
181
|
+
QWEN_SKILLS_DIR="$QWEN_CONFIG_DIR/skills"
|
|
182
|
+
QWEN_RENDERED="$REPO_ROOT/.qwen/skills"
|
|
183
|
+
QWEN_CONTEXT="$QWEN_CONFIG_DIR/QWEN.md"
|
|
184
|
+
QWEN_HOOKS_DIR="$QWEN_CONFIG_DIR/hooks"
|
|
185
|
+
QWEN_HOOK_SRC="$REPO_ROOT/scripts/hooks/qwen/pre-tool-git-guard.sh"
|
|
186
|
+
|
|
187
|
+
install_qwen() {
|
|
188
|
+
echo ""
|
|
189
|
+
echo "Qwen Code → $QWEN_SKILLS_DIR/"
|
|
190
|
+
if [[ ! -d "$QWEN_RENDERED" ]]; then
|
|
191
|
+
echo " WARNING: $QWEN_RENDERED not found — run sync-skills.sh first"
|
|
192
|
+
return
|
|
193
|
+
fi
|
|
194
|
+
local count=0
|
|
195
|
+
for skill_dir in "$QWEN_RENDERED"/*/; do
|
|
196
|
+
[[ -f "${skill_dir}SKILL.md" ]] || continue
|
|
197
|
+
local name; name="$(basename "$skill_dir")"
|
|
198
|
+
link "$skill_dir" "$QWEN_SKILLS_DIR/$name"
|
|
199
|
+
count=$((count + 1))
|
|
200
|
+
done
|
|
201
|
+
echo " $count skills installed"
|
|
202
|
+
echo "Qwen Code → context symlink $QWEN_CONTEXT"
|
|
203
|
+
source "$REPO_ROOT/scripts/lib/context-wire.sh"
|
|
204
|
+
local agents_src="$REPO_ROOT/AGENTS.md"
|
|
205
|
+
[[ -f "$agents_src" ]] || agents_src="$REPO_ROOT/docs/templates/AGENTS.md"
|
|
206
|
+
wire_context_mode symlink "$QWEN_CONTEXT" "" read "$agents_src"
|
|
207
|
+
if [[ -f "$QWEN_HOOK_SRC" ]]; then
|
|
208
|
+
echo "Qwen Code Hooks → $QWEN_HOOKS_DIR/"
|
|
209
|
+
link "$QWEN_HOOK_SRC" "$QWEN_HOOKS_DIR/pre-tool-git-guard.sh"
|
|
210
|
+
chmod +x "$QWEN_HOOK_SRC" 2>/dev/null || true
|
|
211
|
+
echo " NOTE: copy $REPO_ROOT/scripts/hooks/qwen/settings.example.json into tool config"
|
|
212
|
+
fi
|
|
213
|
+
}
|
|
214
|
+
|
|
215
|
+
uninstall_qwen() {
|
|
216
|
+
echo ""
|
|
217
|
+
echo "Qwen Code → removing management from $QWEN_CONFIG_DIR/"
|
|
218
|
+
if [[ -d "$QWEN_SKILLS_DIR" ]]; then
|
|
219
|
+
for dst in "$QWEN_SKILLS_DIR"/*/; do
|
|
220
|
+
[[ -L "${dst%/}" ]] || continue
|
|
221
|
+
unlink_if_managed "${dst%/}" "$REPO_ROOT/"
|
|
222
|
+
done
|
|
223
|
+
fi
|
|
224
|
+
unlink_if_managed "$QWEN_CONTEXT" "$REPO_ROOT/"
|
|
225
|
+
unlink_if_managed "$QWEN_HOOKS_DIR/pre-tool-git-guard.sh" "$REPO_ROOT/"
|
|
226
|
+
}
|