specweave 0.4.1 → 0.6.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/.claude-plugin/README.md +325 -0
- package/.claude-plugin/marketplace.json +210 -0
- package/CLAUDE.md +871 -596
- package/README.md +188 -137
- package/bin/install-agents.sh +1 -1
- package/bin/install-commands.sh +66 -14
- package/bin/install-hooks.sh +1 -1
- package/bin/install-skills.sh +1 -1
- package/bin/specweave.js +2 -0
- package/dist/adapters/claude/adapter.d.ts +49 -11
- package/dist/adapters/claude/adapter.d.ts.map +1 -1
- package/dist/adapters/claude/adapter.js +175 -42
- package/dist/adapters/claude/adapter.js.map +1 -1
- package/dist/adapters/copilot/adapter.d.ts +20 -2
- package/dist/adapters/copilot/adapter.d.ts.map +1 -1
- package/dist/adapters/copilot/adapter.js +117 -7
- package/dist/adapters/copilot/adapter.js.map +1 -1
- package/dist/adapters/cursor/adapter.d.ts +18 -0
- package/dist/adapters/cursor/adapter.d.ts.map +1 -1
- package/dist/adapters/cursor/adapter.js +55 -3
- package/dist/adapters/cursor/adapter.js.map +1 -1
- package/dist/adapters/generic/adapter.d.ts +18 -0
- package/dist/adapters/generic/adapter.d.ts.map +1 -1
- package/dist/adapters/generic/adapter.js +55 -3
- package/dist/adapters/generic/adapter.js.map +1 -1
- package/dist/cli/commands/init.d.ts +1 -0
- package/dist/cli/commands/init.d.ts.map +1 -1
- package/dist/cli/commands/init.js +346 -124
- package/dist/cli/commands/init.js.map +1 -1
- package/dist/cli/commands/install.d.ts +2 -0
- package/dist/cli/commands/install.d.ts.map +1 -1
- package/dist/cli/commands/install.js +28 -25
- package/dist/cli/commands/install.js.map +1 -1
- package/dist/cli/commands/list.d.ts +2 -0
- package/dist/cli/commands/list.d.ts.map +1 -1
- package/dist/cli/commands/list.js +26 -24
- package/dist/cli/commands/list.js.map +1 -1
- package/dist/cli/commands/plugin.d.ts +7 -1
- package/dist/cli/commands/plugin.d.ts.map +1 -1
- package/dist/cli/commands/plugin.js +72 -61
- package/dist/cli/commands/plugin.js.map +1 -1
- package/dist/core/i18n/language-detector.d.ts +29 -0
- package/dist/core/i18n/language-detector.d.ts.map +1 -0
- package/dist/core/i18n/language-detector.js +143 -0
- package/dist/core/i18n/language-detector.js.map +1 -0
- package/dist/core/i18n/language-manager.d.ts +101 -0
- package/dist/core/i18n/language-manager.d.ts.map +1 -0
- package/dist/core/i18n/language-manager.js +232 -0
- package/dist/core/i18n/language-manager.js.map +1 -0
- package/dist/core/i18n/language-registry.d.ts +44 -0
- package/dist/core/i18n/language-registry.d.ts.map +1 -0
- package/dist/core/i18n/language-registry.js +234 -0
- package/dist/core/i18n/language-registry.js.map +1 -0
- package/dist/core/i18n/locale-manager.d.ts +62 -0
- package/dist/core/i18n/locale-manager.d.ts.map +1 -0
- package/dist/core/i18n/locale-manager.js +137 -0
- package/dist/core/i18n/locale-manager.js.map +1 -0
- package/dist/core/i18n/system-prompt-injector.d.ts +33 -0
- package/dist/core/i18n/system-prompt-injector.d.ts.map +1 -0
- package/dist/core/i18n/system-prompt-injector.js +131 -0
- package/dist/core/i18n/system-prompt-injector.js.map +1 -0
- package/dist/core/i18n/types.d.ts +151 -0
- package/dist/core/i18n/types.d.ts.map +1 -0
- package/dist/core/i18n/types.js +11 -0
- package/dist/core/i18n/types.js.map +1 -0
- package/dist/core/increment-status.d.ts +72 -0
- package/dist/core/increment-status.d.ts.map +1 -0
- package/dist/core/increment-status.js +227 -0
- package/dist/core/increment-status.js.map +1 -0
- package/dist/core/plugin-loader.d.ts +33 -13
- package/dist/core/plugin-loader.d.ts.map +1 -1
- package/dist/core/plugin-loader.js +145 -43
- package/dist/core/plugin-loader.js.map +1 -1
- package/dist/core/types/config.d.ts +51 -0
- package/dist/core/types/config.d.ts.map +1 -0
- package/dist/core/types/config.js +21 -0
- package/dist/core/types/config.js.map +1 -0
- package/dist/core/types/plugin.d.ts +73 -42
- package/dist/core/types/plugin.d.ts.map +1 -1
- package/dist/core/types/plugin.js +4 -3
- package/dist/core/types/plugin.js.map +1 -1
- package/dist/hooks/lib/sync-living-docs.d.ts +27 -0
- package/dist/hooks/lib/sync-living-docs.d.ts.map +1 -0
- package/dist/hooks/lib/sync-living-docs.js +116 -0
- package/dist/hooks/lib/sync-living-docs.js.map +1 -0
- package/dist/hooks/lib/translate-living-docs.d.ts +13 -0
- package/dist/hooks/lib/translate-living-docs.d.ts.map +1 -0
- package/dist/hooks/lib/translate-living-docs.js +166 -0
- package/dist/hooks/lib/translate-living-docs.js.map +1 -0
- package/dist/hooks/lib/update-tasks-md.d.ts +29 -0
- package/dist/hooks/lib/update-tasks-md.d.ts.map +1 -0
- package/dist/hooks/lib/update-tasks-md.js +203 -0
- package/dist/hooks/lib/update-tasks-md.js.map +1 -0
- package/dist/integrations/jira/jira-incremental-mapper.js.map +1 -1
- package/dist/integrations/jira/jira-mapper.js.map +1 -1
- package/dist/locales/de/.gitkeep +0 -0
- package/dist/locales/de/cli.json +108 -0
- package/dist/locales/en/cli.json +269 -0
- package/dist/locales/en/errors.json +7 -0
- package/dist/locales/en/templates.json +6 -0
- package/dist/locales/es/.gitkeep +0 -0
- package/dist/locales/es/cli.json +41 -0
- package/dist/locales/fr/.gitkeep +0 -0
- package/dist/locales/fr/cli.json +108 -0
- package/dist/locales/ja/.gitkeep +0 -0
- package/dist/locales/ja/cli.json +108 -0
- package/dist/locales/ko/.gitkeep +0 -0
- package/dist/locales/ko/cli.json +108 -0
- package/dist/locales/pt/.gitkeep +0 -0
- package/dist/locales/pt/cli.json +108 -0
- package/dist/locales/ru/.gitkeep +0 -0
- package/dist/locales/ru/cli.json +269 -0
- package/dist/locales/zh/.gitkeep +0 -0
- package/dist/locales/zh/cli.json +108 -0
- package/dist/plugins/specweave-github/lib/github-client.d.ts +86 -0
- package/dist/plugins/specweave-github/lib/github-client.d.ts.map +1 -0
- package/dist/plugins/specweave-github/lib/github-client.js +275 -0
- package/dist/plugins/specweave-github/lib/github-client.js.map +1 -0
- package/dist/plugins/specweave-github/lib/index.d.ts +10 -0
- package/dist/plugins/specweave-github/lib/index.d.ts.map +1 -0
- package/dist/plugins/specweave-github/lib/index.js +10 -0
- package/dist/plugins/specweave-github/lib/index.js.map +1 -0
- package/dist/plugins/specweave-github/lib/subtask-sync.d.ts +51 -0
- package/dist/plugins/specweave-github/lib/subtask-sync.d.ts.map +1 -0
- package/dist/plugins/specweave-github/lib/subtask-sync.js +147 -0
- package/dist/plugins/specweave-github/lib/subtask-sync.js.map +1 -0
- package/dist/plugins/specweave-github/lib/task-parser.d.ts +37 -0
- package/dist/plugins/specweave-github/lib/task-parser.d.ts.map +1 -0
- package/dist/plugins/specweave-github/lib/task-parser.js +211 -0
- package/dist/plugins/specweave-github/lib/task-parser.js.map +1 -0
- package/dist/plugins/specweave-github/lib/task-sync.d.ts +51 -0
- package/dist/plugins/specweave-github/lib/task-sync.d.ts.map +1 -0
- package/dist/plugins/specweave-github/lib/task-sync.js +332 -0
- package/dist/plugins/specweave-github/lib/task-sync.js.map +1 -0
- package/dist/plugins/specweave-github/lib/types.d.ts +80 -0
- package/dist/plugins/specweave-github/lib/types.d.ts.map +1 -0
- package/dist/plugins/specweave-github/lib/types.js +5 -0
- package/dist/plugins/specweave-github/lib/types.js.map +1 -0
- package/dist/utils/agents-md-compiler.d.ts +68 -0
- package/dist/utils/agents-md-compiler.d.ts.map +1 -0
- package/dist/utils/agents-md-compiler.js +420 -0
- package/dist/utils/agents-md-compiler.js.map +1 -0
- package/dist/utils/generate-skills-index.js +4 -4
- package/dist/utils/generate-skills-index.js.map +1 -1
- package/package.json +12 -13
- package/plugins/specweave-ado/.claude-plugin/plugin.json +8 -0
- package/plugins/specweave-alternatives/.claude-plugin/plugin.json +8 -0
- package/plugins/specweave-alternatives/skills/bmad-method-expert/SKILL.md +626 -0
- package/plugins/specweave-alternatives/skills/bmad-method-expert/scripts/analyze-project.js +318 -0
- package/plugins/specweave-alternatives/skills/bmad-method-expert/scripts/check-setup.js +208 -0
- package/plugins/specweave-alternatives/skills/bmad-method-expert/scripts/generate-template.js +1149 -0
- package/plugins/specweave-alternatives/skills/bmad-method-expert/scripts/validate-documents.js +340 -0
- package/plugins/specweave-alternatives/skills/spec-kit-expert/SKILL.md +1010 -0
- package/plugins/specweave-backend/.claude-plugin/plugin.json +8 -0
- package/plugins/specweave-core/.claude-plugin/plugin.json +25 -0
- package/{src → plugins/specweave-core}/agents/pm/AGENT.md +80 -0
- package/plugins/specweave-core/agents/translator/AGENT.md +282 -0
- package/{src → plugins/specweave-core}/commands/README.md +11 -11
- package/{src → plugins/specweave-core}/commands/specweave.costs.md +7 -7
- package/{src → plugins/specweave-core}/commands/specweave.do.md +34 -7
- package/{src → plugins/specweave-core}/commands/specweave.increment.md +83 -18
- package/{src → plugins/specweave-core}/commands/specweave.md +49 -17
- package/{src → plugins/specweave-core}/commands/specweave.sync-docs.md +5 -5
- package/plugins/specweave-core/commands/specweave.translate.md +425 -0
- package/{src → plugins/specweave-core}/commands/specweave.validate.md +1 -1
- package/plugins/specweave-core/hooks/hooks.json +13 -0
- package/plugins/specweave-core/hooks/post-task-completion.sh +265 -0
- package/plugins/specweave-core/skills/SKILLS-INDEX.md +229 -0
- package/{src → plugins/specweave-core}/skills/brownfield-analyzer/SKILL.md +66 -24
- package/{src → plugins/specweave-core}/skills/context-loader/SKILL.md +1 -1
- package/plugins/specweave-core/skills/context-optimizer/SKILL.md +588 -0
- package/plugins/specweave-core/skills/docs-updater/SKILL.md +0 -0
- package/{src → plugins/specweave-core}/skills/increment-planner/SKILL.md +81 -4
- package/plugins/specweave-core/skills/plugin-detector/SKILL.md +211 -0
- package/{src → plugins/specweave-core}/skills/project-kickstarter/SKILL.md +7 -7
- package/plugins/specweave-core/skills/rfc-generator/SKILL.md +369 -0
- package/{src → plugins/specweave-core}/skills/specweave-detector/SKILL.md +2 -2
- package/plugins/specweave-core/skills/specweave-framework/SKILL.md +498 -0
- package/plugins/specweave-core/skills/specweave-framework/test-cases/test-1-increment-naming.yaml +11 -0
- package/plugins/specweave-core/skills/specweave-framework/test-cases/test-2-source-of-truth.yaml +11 -0
- package/plugins/specweave-core/skills/specweave-framework/test-cases/test-3-increment-discipline.yaml +12 -0
- package/plugins/specweave-core/skills/specweave-framework/test-cases/test-4-file-placement.yaml +11 -0
- package/{src → plugins/specweave-core}/skills/tdd-workflow/SKILL.md +20 -20
- package/plugins/specweave-core/skills/translator/SKILL.md +172 -0
- package/plugins/specweave-cost-optimizer/.claude-plugin/plugin.json +8 -0
- package/plugins/specweave-diagrams/.claude-plugin/plugin.json +8 -0
- package/plugins/specweave-docs/.claude-plugin/plugin.json +8 -0
- package/plugins/specweave-docs/skills/docusaurus/SKILL.md +526 -0
- package/plugins/specweave-figma/.claude-plugin/.mcp.json +12 -0
- package/plugins/specweave-figma/.claude-plugin/plugin.json +8 -0
- package/plugins/specweave-figma/ARCHITECTURE.md +453 -0
- package/plugins/specweave-figma/README.md +728 -0
- package/plugins/specweave-figma/skills/figma-to-code/SKILL.md +632 -0
- package/plugins/specweave-figma/skills/figma-to-code/test-1-token-generation.yaml +29 -0
- package/plugins/specweave-figma/skills/figma-to-code/test-2-component-generation.yaml +27 -0
- package/plugins/specweave-figma/skills/figma-to-code/test-3-typescript-generation.yaml +28 -0
- package/plugins/specweave-frontend/.claude-plugin/plugin.json +8 -0
- package/plugins/specweave-github/.claude-plugin/plugin.json +8 -0
- package/plugins/specweave-github/agents/github-manager/AGENT.md +651 -0
- package/plugins/specweave-github/commands/github-close-issue.md +418 -0
- package/plugins/specweave-github/commands/github-create-issue.md +307 -0
- package/plugins/specweave-github/commands/github-status.md +533 -0
- package/plugins/specweave-github/commands/github-sync-tasks.md +530 -0
- package/plugins/specweave-github/commands/github-sync.md +443 -0
- package/plugins/specweave-github/lib/github-client.ts +330 -0
- package/plugins/specweave-github/lib/index.ts +10 -0
- package/plugins/specweave-github/lib/subtask-sync.ts +225 -0
- package/plugins/specweave-github/lib/task-parser.ts +246 -0
- package/plugins/specweave-github/lib/task-sync.ts +402 -0
- package/plugins/specweave-github/lib/types.ts +86 -0
- package/plugins/specweave-github/skills/github-issue-tracker/SKILL.md +497 -0
- package/plugins/specweave-github/skills/github-sync/SKILL.md +461 -0
- package/plugins/specweave-infrastructure/.claude-plugin/plugin.json +8 -0
- package/plugins/specweave-jira/.claude-plugin/plugin.json +8 -0
- package/{src → plugins/specweave-jira}/commands/specweave.sync-jira.md +18 -18
- package/plugins/specweave-kubernetes/.claude-plugin/plugin.json +8 -0
- package/plugins/specweave-ml/.claude-plugin/plugin.json +39 -0
- package/plugins/specweave-ml/README.md +885 -0
- package/plugins/specweave-ml/agents/ml-engineer/AGENT.md +402 -0
- package/plugins/specweave-ml/commands/ml-deploy.md +116 -0
- package/plugins/specweave-ml/commands/ml-evaluate.md +87 -0
- package/plugins/specweave-ml/commands/ml-explain.md +83 -0
- package/plugins/specweave-ml/skills/anomaly-detector/SKILL.md +559 -0
- package/plugins/specweave-ml/skills/automl-optimizer/SKILL.md +485 -0
- package/plugins/specweave-ml/skills/cv-pipeline-builder/SKILL.md +157 -0
- package/plugins/specweave-ml/skills/data-visualizer/SKILL.md +521 -0
- package/plugins/specweave-ml/skills/experiment-tracker/SKILL.md +535 -0
- package/plugins/specweave-ml/skills/feature-engineer/SKILL.md +566 -0
- package/plugins/specweave-ml/skills/ml-deployment-helper/SKILL.md +345 -0
- package/plugins/specweave-ml/skills/ml-pipeline-orchestrator/SKILL.md +518 -0
- package/plugins/specweave-ml/skills/model-evaluator/SKILL.md +155 -0
- package/plugins/specweave-ml/skills/model-explainer/SKILL.md +227 -0
- package/plugins/specweave-ml/skills/model-registry/SKILL.md +541 -0
- package/plugins/specweave-ml/skills/nlp-pipeline-builder/SKILL.md +180 -0
- package/plugins/specweave-ml/skills/time-series-forecaster/SKILL.md +569 -0
- package/plugins/specweave-payments/.claude-plugin/plugin.json +8 -0
- package/plugins/specweave-testing/.claude-plugin/plugin.json +8 -0
- package/plugins/specweave-tooling/.claude-plugin/plugin.json +8 -0
- package/plugins/specweave-ui/.claude-plugin/plugin.json +106 -0
- package/plugins/specweave-ui/.mcp.json +14 -0
- package/plugins/specweave-ui/README.md +386 -0
- package/src/adapters/claude/adapter.ts +193 -46
- package/src/adapters/copilot/adapter.ts +132 -7
- package/src/adapters/cursor/adapter.ts +62 -3
- package/src/adapters/generic/adapter.ts +62 -3
- package/src/templates/AGENTS.md.template +170 -1
- package/src/templates/CLAUDE.md.template +122 -24
- package/src/templates/tasks.md.template +261 -0
- package/src/agents/ml-engineer/AGENT.md +0 -150
- package/src/commands/specweave.sync-github.md +0 -269
- package/src/hooks/post-task-completion.sh +0 -121
- package/src/skills/SKILLS-INDEX.md +0 -444
- package/src/skills/github-sync/SKILL.md +0 -234
- /package/{src → plugins/specweave-ado}/skills/ado-sync/README.md +0 -0
- /package/{src → plugins/specweave-ado}/skills/ado-sync/SKILL.md +0 -0
- /package/{src → plugins/specweave-ado}/skills/specweave-ado-mapper/SKILL.md +0 -0
- /package/{src → plugins/specweave-backend}/agents/database-optimizer/AGENT.md +0 -0
- /package/{src → plugins/specweave-backend}/skills/dotnet-backend/SKILL.md +0 -0
- /package/{src → plugins/specweave-backend}/skills/nodejs-backend/SKILL.md +0 -0
- /package/{src → plugins/specweave-backend}/skills/python-backend/SKILL.md +0 -0
- /package/{src → plugins/specweave-core}/agents/architect/AGENT.md +0 -0
- /package/{src → plugins/specweave-core}/agents/code-reviewer.md +0 -0
- /package/{src → plugins/specweave-core}/agents/docs-writer/AGENT.md +0 -0
- /package/{src → plugins/specweave-core}/agents/performance/AGENT.md +0 -0
- /package/{src → plugins/specweave-core}/agents/qa-lead/AGENT.md +0 -0
- /package/{src → plugins/specweave-core}/agents/security/AGENT.md +0 -0
- /package/{src → plugins/specweave-core}/agents/tdd-orchestrator/AGENT.md +0 -0
- /package/{src → plugins/specweave-core}/agents/tech-lead/AGENT.md +0 -0
- /package/{src → plugins/specweave-core}/commands/specweave.done.md +0 -0
- /package/{src → plugins/specweave-core}/commands/specweave.inc.md +0 -0
- /package/{src → plugins/specweave-core}/commands/specweave.list-increments.md +0 -0
- /package/{src → plugins/specweave-core}/commands/specweave.next.md +0 -0
- /package/{src → plugins/specweave-core}/commands/specweave.progress.md +0 -0
- /package/{src → plugins/specweave-core}/commands/specweave.tdd-cycle.md +0 -0
- /package/{src → plugins/specweave-core}/commands/specweave.tdd-green.md +0 -0
- /package/{src → plugins/specweave-core}/commands/specweave.tdd-red.md +0 -0
- /package/{src → plugins/specweave-core}/commands/specweave.tdd-refactor.md +0 -0
- /package/{src → plugins/specweave-core}/hooks/README.md +0 -0
- /package/{src → plugins/specweave-core}/hooks/docs-changed.sh +0 -0
- /package/{src → plugins/specweave-core}/hooks/human-input-required.sh +0 -0
- /package/{src → plugins/specweave-core}/hooks/post-increment-plugin-detect.sh +0 -0
- /package/{src → plugins/specweave-core}/hooks/pre-implementation.sh +0 -0
- /package/{src → plugins/specweave-core}/hooks/pre-task-plugin-detect.sh +0 -0
- /package/{src → plugins/specweave-core}/skills/brownfield-onboarder/SKILL.md +0 -0
- /package/{src → plugins/specweave-core}/skills/docs-updater/README.md +0 -0
- /package/{src → plugins/specweave-core}/skills/increment-planner/scripts/feature-utils.js +0 -0
- /package/{src → plugins/specweave-core}/skills/increment-quality-judge/SKILL.md +0 -0
- /package/{src → plugins/specweave-core}/skills/project-kickstarter/test-cases/test-1-high-confidence-full-product.yaml +0 -0
- /package/{src → plugins/specweave-core}/skills/project-kickstarter/test-cases/test-2-medium-confidence-partial.yaml +0 -0
- /package/{src → plugins/specweave-core}/skills/project-kickstarter/test-cases/test-3-low-confidence-technical-question.yaml +0 -0
- /package/{src → plugins/specweave-core}/skills/project-kickstarter/test-cases/test-4-opt-out-explicit.yaml +0 -0
- /package/{src → plugins/specweave-core}/skills/role-orchestrator/README.md +0 -0
- /package/{src → plugins/specweave-core}/skills/role-orchestrator/SKILL.md +0 -0
- /package/{src → plugins/specweave-core}/skills/task-builder/README.md +0 -0
- /package/{src → plugins/specweave-cost-optimizer}/skills/cost-optimizer/SKILL.md +0 -0
- /package/{src → plugins/specweave-diagrams}/agents/diagrams-architect/AGENT.md +0 -0
- /package/{src → plugins/specweave-diagrams}/agents/diagrams-architect/templates/c4-component-template.mmd +0 -0
- /package/{src → plugins/specweave-diagrams}/agents/diagrams-architect/templates/c4-container-template.mmd +0 -0
- /package/{src → plugins/specweave-diagrams}/agents/diagrams-architect/templates/c4-context-template.mmd +0 -0
- /package/{src → plugins/specweave-diagrams}/agents/diagrams-architect/templates/deployment-template.mmd +0 -0
- /package/{src → plugins/specweave-diagrams}/agents/diagrams-architect/templates/er-diagram-template.mmd +0 -0
- /package/{src → plugins/specweave-diagrams}/agents/diagrams-architect/templates/sequence-template.mmd +0 -0
- /package/{src → plugins/specweave-diagrams}/agents/diagrams-architect/test-cases/test-1-c4-context.yaml +0 -0
- /package/{src → plugins/specweave-diagrams}/agents/diagrams-architect/test-cases/test-2-sequence.yaml +0 -0
- /package/{src → plugins/specweave-diagrams}/agents/diagrams-architect/test-cases/test-3-er-diagram.yaml +0 -0
- /package/{src → plugins/specweave-diagrams}/skills/diagrams-architect/SKILL.md +0 -0
- /package/{src → plugins/specweave-diagrams}/skills/diagrams-generator/SKILL.md +0 -0
- /package/{src → plugins/specweave-docs}/skills/spec-driven-brainstorming/README.md +0 -0
- /package/{src → plugins/specweave-docs}/skills/spec-driven-brainstorming/SKILL.md +0 -0
- /package/{src → plugins/specweave-docs}/skills/spec-driven-debugging/README.md +0 -0
- /package/{src → plugins/specweave-docs}/skills/spec-driven-debugging/SKILL.md +0 -0
- /package/{src → plugins/specweave-frontend}/skills/design-system-architect/SKILL.md +0 -0
- /package/{src → plugins/specweave-frontend}/skills/frontend/SKILL.md +0 -0
- /package/{src → plugins/specweave-frontend}/skills/nextjs/SKILL.md +0 -0
- /package/{src → plugins/specweave-infrastructure}/agents/devops/AGENT.md +0 -0
- /package/{src → plugins/specweave-infrastructure}/agents/network-engineer/AGENT.md +0 -0
- /package/{src → plugins/specweave-infrastructure}/agents/observability-engineer/AGENT.md +0 -0
- /package/{src → plugins/specweave-infrastructure}/agents/performance-engineer/AGENT.md +0 -0
- /package/{src → plugins/specweave-infrastructure}/agents/sre/AGENT.md +0 -0
- /package/{src → plugins/specweave-infrastructure}/agents/sre/modules/backend-diagnostics.md +0 -0
- /package/{src → plugins/specweave-infrastructure}/agents/sre/modules/database-diagnostics.md +0 -0
- /package/{src → plugins/specweave-infrastructure}/agents/sre/modules/infrastructure.md +0 -0
- /package/{src → plugins/specweave-infrastructure}/agents/sre/modules/monitoring.md +0 -0
- /package/{src → plugins/specweave-infrastructure}/agents/sre/modules/security-incidents.md +0 -0
- /package/{src → plugins/specweave-infrastructure}/agents/sre/modules/ui-diagnostics.md +0 -0
- /package/{src → plugins/specweave-infrastructure}/agents/sre/playbooks/01-high-cpu-usage.md +0 -0
- /package/{src → plugins/specweave-infrastructure}/agents/sre/playbooks/02-database-deadlock.md +0 -0
- /package/{src → plugins/specweave-infrastructure}/agents/sre/playbooks/03-memory-leak.md +0 -0
- /package/{src → plugins/specweave-infrastructure}/agents/sre/playbooks/04-slow-api-response.md +0 -0
- /package/{src → plugins/specweave-infrastructure}/agents/sre/playbooks/05-ddos-attack.md +0 -0
- /package/{src → plugins/specweave-infrastructure}/agents/sre/playbooks/06-disk-full.md +0 -0
- /package/{src → plugins/specweave-infrastructure}/agents/sre/playbooks/07-service-down.md +0 -0
- /package/{src → plugins/specweave-infrastructure}/agents/sre/playbooks/08-data-corruption.md +0 -0
- /package/{src → plugins/specweave-infrastructure}/agents/sre/playbooks/09-cascade-failure.md +0 -0
- /package/{src → plugins/specweave-infrastructure}/agents/sre/playbooks/10-rate-limit-exceeded.md +0 -0
- /package/{src → plugins/specweave-infrastructure}/agents/sre/scripts/health-check.sh +0 -0
- /package/{src → plugins/specweave-infrastructure}/agents/sre/scripts/log-analyzer.py +0 -0
- /package/{src → plugins/specweave-infrastructure}/agents/sre/scripts/metrics-collector.sh +0 -0
- /package/{src → plugins/specweave-infrastructure}/agents/sre/scripts/trace-analyzer.js +0 -0
- /package/{src → plugins/specweave-infrastructure}/agents/sre/templates/incident-report.md +0 -0
- /package/{src → plugins/specweave-infrastructure}/agents/sre/templates/mitigation-plan.md +0 -0
- /package/{src → plugins/specweave-infrastructure}/agents/sre/templates/post-mortem.md +0 -0
- /package/{src → plugins/specweave-infrastructure}/agents/sre/templates/runbook-template.md +0 -0
- /package/{src → plugins/specweave-infrastructure}/commands/specweave.monitor-setup.md +0 -0
- /package/{src → plugins/specweave-infrastructure}/commands/specweave.slo-implement.md +0 -0
- /package/{src → plugins/specweave-infrastructure}/skills/distributed-tracing/SKILL.md +0 -0
- /package/{src → plugins/specweave-infrastructure}/skills/grafana-dashboards/SKILL.md +0 -0
- /package/{src → plugins/specweave-infrastructure}/skills/hetzner-provisioner/README.md +0 -0
- /package/{src → plugins/specweave-infrastructure}/skills/hetzner-provisioner/SKILL.md +0 -0
- /package/{src → plugins/specweave-infrastructure}/skills/prometheus-configuration/SKILL.md +0 -0
- /package/{src → plugins/specweave-infrastructure}/skills/slo-implementation/SKILL.md +0 -0
- /package/{src → plugins/specweave-jira}/skills/jira-sync/README.md +0 -0
- /package/{src → plugins/specweave-jira}/skills/jira-sync/SKILL.md +0 -0
- /package/{src → plugins/specweave-jira}/skills/specweave-jira-mapper/SKILL.md +0 -0
- /package/{src → plugins/specweave-kubernetes}/agents/kubernetes-architect/AGENT.md +0 -0
- /package/{src → plugins/specweave-kubernetes}/skills/gitops-workflow/SKILL.md +0 -0
- /package/{src → plugins/specweave-kubernetes}/skills/gitops-workflow/references/argocd-setup.md +0 -0
- /package/{src → plugins/specweave-kubernetes}/skills/gitops-workflow/references/sync-policies.md +0 -0
- /package/{src → plugins/specweave-kubernetes}/skills/helm-chart-scaffolding/SKILL.md +0 -0
- /package/{src → plugins/specweave-kubernetes}/skills/helm-chart-scaffolding/assets/Chart.yaml.template +0 -0
- /package/{src → plugins/specweave-kubernetes}/skills/helm-chart-scaffolding/assets/values.yaml.template +0 -0
- /package/{src → plugins/specweave-kubernetes}/skills/helm-chart-scaffolding/references/chart-structure.md +0 -0
- /package/{src → plugins/specweave-kubernetes}/skills/helm-chart-scaffolding/scripts/validate-chart.sh +0 -0
- /package/{src → plugins/specweave-kubernetes}/skills/k8s-manifest-generator/SKILL.md +0 -0
- /package/{src → plugins/specweave-kubernetes}/skills/k8s-manifest-generator/assets/configmap-template.yaml +0 -0
- /package/{src → plugins/specweave-kubernetes}/skills/k8s-manifest-generator/assets/deployment-template.yaml +0 -0
- /package/{src → plugins/specweave-kubernetes}/skills/k8s-manifest-generator/assets/service-template.yaml +0 -0
- /package/{src → plugins/specweave-kubernetes}/skills/k8s-manifest-generator/references/deployment-spec.md +0 -0
- /package/{src → plugins/specweave-kubernetes}/skills/k8s-manifest-generator/references/service-spec.md +0 -0
- /package/{src → plugins/specweave-kubernetes}/skills/k8s-security-policies/SKILL.md +0 -0
- /package/{src → plugins/specweave-kubernetes}/skills/k8s-security-policies/assets/network-policy-template.yaml +0 -0
- /package/{src → plugins/specweave-kubernetes}/skills/k8s-security-policies/references/rbac-patterns.md +0 -0
- /package/{src → plugins/specweave-ml}/agents/data-scientist/AGENT.md +0 -0
- /package/{src → plugins/specweave-ml}/agents/mlops-engineer/AGENT.md +0 -0
- /package/{src → plugins/specweave-ml}/commands/specweave.ml-pipeline.md +0 -0
- /package/{src → plugins/specweave-ml}/skills/ml-pipeline-workflow/SKILL.md +0 -0
- /package/{src → plugins/specweave-payments}/agents/payment-integration/AGENT.md +0 -0
- /package/{src → plugins/specweave-payments}/skills/billing-automation/SKILL.md +0 -0
- /package/{src → plugins/specweave-payments}/skills/paypal-integration/SKILL.md +0 -0
- /package/{src → plugins/specweave-payments}/skills/pci-compliance/SKILL.md +0 -0
- /package/{src → plugins/specweave-payments}/skills/stripe-integration/SKILL.md +0 -0
- /package/{src → plugins/specweave-testing}/skills/e2e-playwright/README.md +0 -0
- /package/{src → plugins/specweave-testing}/skills/e2e-playwright/SKILL.md +0 -0
- /package/{src → plugins/specweave-testing}/skills/e2e-playwright/execute.js +0 -0
- /package/{src → plugins/specweave-testing}/skills/e2e-playwright/lib/utils.js +0 -0
- /package/{src → plugins/specweave-testing}/skills/e2e-playwright/package.json +0 -0
- /package/{src → plugins/specweave-tooling}/skills/skill-creator/LICENSE.txt +0 -0
- /package/{src → plugins/specweave-tooling}/skills/skill-creator/SKILL.md +0 -0
- /package/{src → plugins/specweave-tooling}/skills/skill-creator/scripts/init_skill.py +0 -0
- /package/{src → plugins/specweave-tooling}/skills/skill-creator/scripts/package_skill.py +0 -0
- /package/{src → plugins/specweave-tooling}/skills/skill-creator/scripts/quick_validate.py +0 -0
- /package/{src → plugins/specweave-tooling}/skills/skill-router/SKILL.md +0 -0
|
@@ -1,269 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: specweave.sync-github
|
|
3
|
-
description: Sync SpecWeave increments with GitHub issues. Supports import, export, bidirectional sync, and granular issue operations
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
# Sync GitHub Command
|
|
7
|
-
|
|
8
|
-
You are a GitHub synchronization expert. Help the user sync between GitHub and SpecWeave with granular control.
|
|
9
|
-
|
|
10
|
-
## Available Operations
|
|
11
|
-
|
|
12
|
-
### Milestone-Level Operations
|
|
13
|
-
|
|
14
|
-
**1. Import GitHub Milestone as SpecWeave Increment**
|
|
15
|
-
```
|
|
16
|
-
/specweave.sync-github import milestone-1
|
|
17
|
-
```
|
|
18
|
-
|
|
19
|
-
**2. Sync existing linked Increment with GitHub**
|
|
20
|
-
```
|
|
21
|
-
/specweave.sync-github sync 0003
|
|
22
|
-
```
|
|
23
|
-
|
|
24
|
-
**3. Export SpecWeave Increment to GitHub**
|
|
25
|
-
```
|
|
26
|
-
/specweave.sync-github export 0001
|
|
27
|
-
```
|
|
28
|
-
|
|
29
|
-
### Granular Issue Operations
|
|
30
|
-
|
|
31
|
-
**4. Add specific Issue to existing Increment**
|
|
32
|
-
```
|
|
33
|
-
/specweave.sync-github add #42 to 0003
|
|
34
|
-
/specweave.sync-github add #42 # Adds to current increment
|
|
35
|
-
```
|
|
36
|
-
|
|
37
|
-
**5. Create Increment from specific issues (cherry-pick)**
|
|
38
|
-
```
|
|
39
|
-
/specweave.sync-github create "User Authentication" from #42 #45 #47
|
|
40
|
-
/specweave.sync-github create "Bug Fixes Sprint 1" from #10 #15 #20
|
|
41
|
-
```
|
|
42
|
-
|
|
43
|
-
**6. Show sync status**
|
|
44
|
-
```
|
|
45
|
-
/specweave.sync-github status
|
|
46
|
-
/specweave.sync-github status 0003 # Status of specific increment
|
|
47
|
-
```
|
|
48
|
-
|
|
49
|
-
## Your Task
|
|
50
|
-
|
|
51
|
-
When the user runs this command:
|
|
52
|
-
|
|
53
|
-
1. **Parse the command arguments**:
|
|
54
|
-
- Operation: import, sync, export, add, create, or status
|
|
55
|
-
- ID: GitHub issue number (e.g., #123) or Increment ID (e.g., 0001)
|
|
56
|
-
|
|
57
|
-
2. **Execute the operation**:
|
|
58
|
-
|
|
59
|
-
**For import Milestone**:
|
|
60
|
-
```typescript
|
|
61
|
-
import { GitHubClient } from './src/integrations/github/github-client';
|
|
62
|
-
import { GitHubMapper } from './src/integrations/github/github-mapper';
|
|
63
|
-
|
|
64
|
-
const client = new GitHubClient();
|
|
65
|
-
const mapper = new GitHubMapper(client);
|
|
66
|
-
const result = await mapper.importMilestoneAsIncrement('milestone-1');
|
|
67
|
-
```
|
|
68
|
-
|
|
69
|
-
**For add issue**:
|
|
70
|
-
```typescript
|
|
71
|
-
import { GitHubIncrementalMapper } from './src/integrations/github/github-incremental-mapper';
|
|
72
|
-
|
|
73
|
-
const incrementalMapper = new GitHubIncrementalMapper(client);
|
|
74
|
-
const result = await incrementalMapper.addIssueToIncrement('0003', 42);
|
|
75
|
-
```
|
|
76
|
-
|
|
77
|
-
**For create from issues**:
|
|
78
|
-
```typescript
|
|
79
|
-
const result = await incrementalMapper.createIncrementFromIssues(
|
|
80
|
-
'User Authentication',
|
|
81
|
-
[42, 45, 47]
|
|
82
|
-
);
|
|
83
|
-
```
|
|
84
|
-
|
|
85
|
-
**For sync**:
|
|
86
|
-
```typescript
|
|
87
|
-
const result = await mapper.syncIncrement('0003');
|
|
88
|
-
```
|
|
89
|
-
|
|
90
|
-
**For export**:
|
|
91
|
-
```typescript
|
|
92
|
-
const result = await mapper.exportIncrementAsIssues('0001');
|
|
93
|
-
```
|
|
94
|
-
|
|
95
|
-
3. **Show results**:
|
|
96
|
-
- Display sync summary
|
|
97
|
-
- Show conflicts (if any)
|
|
98
|
-
- List created/updated files
|
|
99
|
-
- Provide links to GitHub and SpecWeave
|
|
100
|
-
|
|
101
|
-
4. **Handle errors gracefully**:
|
|
102
|
-
- Check if GITHUB_TOKEN exists in environment
|
|
103
|
-
- Validate increment/issue exists
|
|
104
|
-
- Check repository is configured
|
|
105
|
-
- Show clear error messages
|
|
106
|
-
|
|
107
|
-
## Examples
|
|
108
|
-
|
|
109
|
-
### Example 1: Import Milestone
|
|
110
|
-
**User**: `/specweave.sync-github import milestone-1`
|
|
111
|
-
**You**:
|
|
112
|
-
- Import Milestone "milestone-1" from GitHub
|
|
113
|
-
- Show: "✅ Imported as Increment 0004"
|
|
114
|
-
- List: "Created: spec.md, tasks.md, RFC document"
|
|
115
|
-
- Link: "GitHub: https://github.com/user/repo/milestone/1 | Increment: .specweave/increments/0004/"
|
|
116
|
-
|
|
117
|
-
### Example 2: Add Issue to Current Increment
|
|
118
|
-
**User**: `/specweave.sync-github add #42`
|
|
119
|
-
**You**:
|
|
120
|
-
- Determine current increment (latest or from context)
|
|
121
|
-
- Fetch issue #42 from GitHub
|
|
122
|
-
- Add to increment's spec.md (under ## User Stories or ## Bugs based on labels)
|
|
123
|
-
- Update tasks.md
|
|
124
|
-
- Update RFC
|
|
125
|
-
- Show: "✅ Added Issue #42 to Increment 0003"
|
|
126
|
-
- Display: "Type: feature | Title: User authentication | Status: open"
|
|
127
|
-
|
|
128
|
-
### Example 3: Add Bug Issue to Specific Increment
|
|
129
|
-
**User**: `/specweave.sync-github add #123 to 0003`
|
|
130
|
-
**You**:
|
|
131
|
-
- Fetch issue #123 from GitHub (labeled as "bug")
|
|
132
|
-
- Add to increment 0003's spec.md (under ## Bugs)
|
|
133
|
-
- Update tasks.md
|
|
134
|
-
- Update RFC
|
|
135
|
-
- Show: "✅ Added Bug #123 to Increment 0003"
|
|
136
|
-
- Display: "Type: bug | Priority: high | Title: Fix login redirect"
|
|
137
|
-
|
|
138
|
-
### Example 4: Create Increment from Multiple Issues
|
|
139
|
-
**User**: `/specweave.sync-github create "User Authentication" from #42 #45 #47`
|
|
140
|
-
**You**:
|
|
141
|
-
- Fetch all 3 issues from GitHub
|
|
142
|
-
- Determine types based on labels (feature, bug, enhancement)
|
|
143
|
-
- Create new increment 0005
|
|
144
|
-
- Group by type in spec.md:
|
|
145
|
-
- ## User Stories (#42, #45)
|
|
146
|
-
- ## Technical Tasks (#47)
|
|
147
|
-
- Generate RFC with all items
|
|
148
|
-
- Show: "✅ Created Increment 0005 with 3 issues"
|
|
149
|
-
- Display table:
|
|
150
|
-
```
|
|
151
|
-
| Type | Issue | Title |
|
|
152
|
-
|---------|-------|--------------------|
|
|
153
|
-
| Feature | #42 | User login UI |
|
|
154
|
-
| Feature | #45 | OAuth backend |
|
|
155
|
-
| Task | #47 | Setup provider |
|
|
156
|
-
```
|
|
157
|
-
|
|
158
|
-
### Example 5: Sync Existing Increment
|
|
159
|
-
**User**: `/specweave.sync-github sync 0003`
|
|
160
|
-
**You**:
|
|
161
|
-
- Read increment 0003
|
|
162
|
-
- Find linked GitHub issues (from spec.md frontmatter.github_issues)
|
|
163
|
-
- Fetch current state from GitHub
|
|
164
|
-
- Detect changes (status, labels, assignees, comments)
|
|
165
|
-
- Show conflicts if any
|
|
166
|
-
- Apply sync bidirectionally:
|
|
167
|
-
- Update GitHub issue status based on task completion
|
|
168
|
-
- Update spec.md based on GitHub changes
|
|
169
|
-
- Display: "✅ Synced 0003 | Updated: 2 issues | #42 → closed, #45 → in-progress"
|
|
170
|
-
|
|
171
|
-
### Example 6: Status Overview
|
|
172
|
-
**User**: `/specweave.sync-github status`
|
|
173
|
-
**You**:
|
|
174
|
-
- Scan all increments for GitHub metadata
|
|
175
|
-
- Show table:
|
|
176
|
-
```
|
|
177
|
-
| Increment | Title | GitHub Issues | Last Sync |
|
|
178
|
-
|-----------|------------------|---------------|--------------------|
|
|
179
|
-
| 0003 | Test Feature | 0 issues | 2025-10-28 17:42 |
|
|
180
|
-
| 0004 | User Auth | 3 issues | 2025-10-28 18:00 |
|
|
181
|
-
| 0005 | Bug Fixes | 5 issues | Never |
|
|
182
|
-
```
|
|
183
|
-
|
|
184
|
-
## GitHub Issue Format
|
|
185
|
-
|
|
186
|
-
When creating GitHub issues from increments, use this format:
|
|
187
|
-
|
|
188
|
-
```markdown
|
|
189
|
-
# [Increment ###] Title
|
|
190
|
-
|
|
191
|
-
## Overview
|
|
192
|
-
[From spec.md]
|
|
193
|
-
|
|
194
|
-
## Business Value
|
|
195
|
-
[From spec.md if exists]
|
|
196
|
-
|
|
197
|
-
## User Stories
|
|
198
|
-
|
|
199
|
-
- [ ] **US1**: [Title] (P1)
|
|
200
|
-
- Acceptance test 1
|
|
201
|
-
- Acceptance test 2
|
|
202
|
-
- [ ] **US2**: [Title] (P2)
|
|
203
|
-
- Acceptance test 1
|
|
204
|
-
|
|
205
|
-
## Implementation Tasks
|
|
206
|
-
|
|
207
|
-
### Phase 1: [Phase Name]
|
|
208
|
-
- [ ] **T001**: [Task description]
|
|
209
|
-
- [ ] **T002**: [Task description]
|
|
210
|
-
|
|
211
|
-
### Phase 2: [Phase Name]
|
|
212
|
-
- [ ] **T010**: [Task description]
|
|
213
|
-
|
|
214
|
-
## Documentation
|
|
215
|
-
|
|
216
|
-
- [Specification](.specweave/increments/####-name/spec.md)
|
|
217
|
-
- [Tasks](.specweave/increments/####-name/tasks.md)
|
|
218
|
-
- [Architecture](.specweave/docs/architecture/) (if applicable)
|
|
219
|
-
|
|
220
|
-
## Dependencies
|
|
221
|
-
|
|
222
|
-
- Depends on: #[issue-number] (if applicable)
|
|
223
|
-
|
|
224
|
-
## Success Criteria
|
|
225
|
-
|
|
226
|
-
[From spec.md]
|
|
227
|
-
|
|
228
|
-
---
|
|
229
|
-
*Created by SpecWeave - [Learn more](https://github.com/anton-abyzov/specweave)*
|
|
230
|
-
```
|
|
231
|
-
|
|
232
|
-
## Bidirectional Sync
|
|
233
|
-
|
|
234
|
-
When syncing an increment that already has `github_issues` in frontmatter:
|
|
235
|
-
- Update existing issues instead of creating new ones
|
|
236
|
-
- Sync status changes:
|
|
237
|
-
- Task completion → Close GitHub issue
|
|
238
|
-
- GitHub issue closed → Mark task as completed
|
|
239
|
-
- Sync labels and priorities
|
|
240
|
-
- Add comments with sync timestamps
|
|
241
|
-
|
|
242
|
-
## Important Notes
|
|
243
|
-
|
|
244
|
-
- Always check if GITHUB_TOKEN exists in environment
|
|
245
|
-
- Never log tokens or credentials
|
|
246
|
-
- Show clear progress messages
|
|
247
|
-
- Display rich output with links
|
|
248
|
-
- Use GitHub CLI (`gh`) if available for better integration
|
|
249
|
-
- Respect rate limits (pause if needed)
|
|
250
|
-
- Save sync results to test-results/ if requested
|
|
251
|
-
|
|
252
|
-
## Error Handling
|
|
253
|
-
|
|
254
|
-
- **Not a git repository**: "Error: Not a git repository. Initialize git first."
|
|
255
|
-
- **No GitHub credentials**: "Error: GITHUB_TOKEN not set. Configure GitHub authentication."
|
|
256
|
-
- **Increment not found**: "Error: Increment 0003 not found. Use /specweave.increment first."
|
|
257
|
-
- **Issue not found**: "Error: Issue #42 not found in repository."
|
|
258
|
-
- **Rate limit exceeded**: "Warning: GitHub rate limit reached. Waiting 60 seconds..."
|
|
259
|
-
|
|
260
|
-
## Related Commands
|
|
261
|
-
|
|
262
|
-
- `/specweave.sync-jira` - Sync to Jira
|
|
263
|
-
- `/specweave.increment` - Create new increment
|
|
264
|
-
- `/specweave.validate` - Validate increment quality
|
|
265
|
-
- `/specweave.progress` - Check increment progress
|
|
266
|
-
|
|
267
|
-
---
|
|
268
|
-
|
|
269
|
-
**Granular Control**: Unlike simple milestone import/export, this command supports cherry-picking individual issues for maximum flexibility, just like the Jira sync integration.
|
|
@@ -1,121 +0,0 @@
|
|
|
1
|
-
#!/bin/bash
|
|
2
|
-
|
|
3
|
-
# SpecWeave Post-Task-Completion Hook
|
|
4
|
-
# Runs automatically after ANY task is marked complete via TodoWrite
|
|
5
|
-
#
|
|
6
|
-
# Actions:
|
|
7
|
-
# 1. Check if ALL tasks are completed (parse stdin JSON)
|
|
8
|
-
# 2. Play completion sound ONLY if all tasks done
|
|
9
|
-
# 3. Output JSON systemMessage reminding to update docs
|
|
10
|
-
# 4. Log completion
|
|
11
|
-
#
|
|
12
|
-
# DEBOUNCING: Prevents rapid duplicate fires (Claude Code calls hooks twice)
|
|
13
|
-
|
|
14
|
-
set -e
|
|
15
|
-
|
|
16
|
-
PROJECT_ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/../.." && pwd)"
|
|
17
|
-
cd "$PROJECT_ROOT" 2>/dev/null || true
|
|
18
|
-
|
|
19
|
-
# Debounce: Skip if hook fired within last 2 seconds
|
|
20
|
-
LAST_FIRE_FILE=".specweave/logs/last-hook-fire"
|
|
21
|
-
CURRENT_TIME=$(date +%s)
|
|
22
|
-
DEBOUNCE_SECONDS=2
|
|
23
|
-
|
|
24
|
-
mkdir -p .specweave/logs 2>/dev/null || true
|
|
25
|
-
|
|
26
|
-
if [ -f "$LAST_FIRE_FILE" ]; then
|
|
27
|
-
LAST_FIRE=$(cat "$LAST_FIRE_FILE" 2>/dev/null || echo "0")
|
|
28
|
-
TIME_DIFF=$((CURRENT_TIME - LAST_FIRE))
|
|
29
|
-
|
|
30
|
-
if [ "$TIME_DIFF" -lt "$DEBOUNCE_SECONDS" ]; then
|
|
31
|
-
# Too soon - skip this invocation (prevents duplicates)
|
|
32
|
-
echo "[$(date)] Hook skipped (debounced - last fire was ${TIME_DIFF}s ago)" >> .specweave/logs/hooks-debug.log 2>/dev/null || true
|
|
33
|
-
# Output minimal JSON (no systemMessage)
|
|
34
|
-
cat <<EOF
|
|
35
|
-
{
|
|
36
|
-
"continue": true
|
|
37
|
-
}
|
|
38
|
-
EOF
|
|
39
|
-
exit 0
|
|
40
|
-
fi
|
|
41
|
-
fi
|
|
42
|
-
|
|
43
|
-
# Save current timestamp
|
|
44
|
-
echo "$CURRENT_TIME" > "$LAST_FIRE_FILE"
|
|
45
|
-
|
|
46
|
-
# Read stdin to temporary file
|
|
47
|
-
STDIN_DATA=$(mktemp)
|
|
48
|
-
cat > "$STDIN_DATA"
|
|
49
|
-
|
|
50
|
-
# DEBUG: Log hook invocation
|
|
51
|
-
echo "[$(date)] Hook invoked! PWD=$PWD Args=$*" >> .specweave/logs/hooks-debug.log 2>/dev/null || true
|
|
52
|
-
echo "[$(date)] Hook stdin:" >> .specweave/logs/hooks-debug.log 2>/dev/null || true
|
|
53
|
-
cat "$STDIN_DATA" >> .specweave/logs/hooks-debug.log 2>/dev/null || true
|
|
54
|
-
|
|
55
|
-
# Parse JSON to check if ALL tasks are completed
|
|
56
|
-
# Extract todos array and check for any non-completed tasks
|
|
57
|
-
ALL_COMPLETED=false
|
|
58
|
-
|
|
59
|
-
if command -v jq >/dev/null 2>&1; then
|
|
60
|
-
# Use jq if available (more reliable)
|
|
61
|
-
PENDING_COUNT=$(jq -r '.tool_input.todos // [] | map(select(.status != "completed")) | length' "$STDIN_DATA" 2>/dev/null || echo "1")
|
|
62
|
-
|
|
63
|
-
if [ "$PENDING_COUNT" = "0" ]; then
|
|
64
|
-
ALL_COMPLETED=true
|
|
65
|
-
fi
|
|
66
|
-
else
|
|
67
|
-
# Fallback: Simple grep check (less reliable but works without jq)
|
|
68
|
-
if grep -q '"status":"pending"\|"status":"in_progress"' "$STDIN_DATA" 2>/dev/null; then
|
|
69
|
-
ALL_COMPLETED=false
|
|
70
|
-
else
|
|
71
|
-
# No pending/in_progress found - likely all completed
|
|
72
|
-
ALL_COMPLETED=true
|
|
73
|
-
fi
|
|
74
|
-
fi
|
|
75
|
-
|
|
76
|
-
# Clean up temp file
|
|
77
|
-
rm -f "$STDIN_DATA"
|
|
78
|
-
|
|
79
|
-
# 1. Play notification sound ONLY if ALL tasks are completed
|
|
80
|
-
play_sound() {
|
|
81
|
-
case "$(uname -s)" in
|
|
82
|
-
Darwin)
|
|
83
|
-
afplay /System/Library/Sounds/Glass.aiff 2>/dev/null || true
|
|
84
|
-
;;
|
|
85
|
-
Linux)
|
|
86
|
-
paplay /usr/share/sounds/freedesktop/stereo/complete.oga 2>/dev/null || \
|
|
87
|
-
aplay /usr/share/sounds/alsa/Front_Center.wav 2>/dev/null || true
|
|
88
|
-
;;
|
|
89
|
-
MINGW*|MSYS*|CYGWIN*)
|
|
90
|
-
powershell -c "(New-Object Media.SoundPlayer 'C:\Windows\Media\chimes.wav').PlaySync();" 2>/dev/null || true
|
|
91
|
-
;;
|
|
92
|
-
esac
|
|
93
|
-
}
|
|
94
|
-
|
|
95
|
-
# Play sound ONLY if all tasks completed
|
|
96
|
-
if [ "$ALL_COMPLETED" = "true" ]; then
|
|
97
|
-
echo "[$(date)] 🎉 ALL TASKS COMPLETED - Playing sound!" >> .specweave/logs/hooks-debug.log 2>/dev/null || true
|
|
98
|
-
play_sound
|
|
99
|
-
else
|
|
100
|
-
echo "[$(date)] Task completed, but more tasks remain (no sound)" >> .specweave/logs/hooks-debug.log 2>/dev/null || true
|
|
101
|
-
fi
|
|
102
|
-
|
|
103
|
-
# 2. Log completion
|
|
104
|
-
echo "[$(date)] Task completed (All done: $ALL_COMPLETED)" >> .specweave/logs/tasks.log 2>/dev/null || true
|
|
105
|
-
|
|
106
|
-
# 3. Output JSON to instruct Claude (systemMessage is shown to user)
|
|
107
|
-
if [ "$ALL_COMPLETED" = "true" ]; then
|
|
108
|
-
cat <<EOF
|
|
109
|
-
{
|
|
110
|
-
"continue": true,
|
|
111
|
-
"systemMessage": "🎉 ALL TASKS COMPLETED! Remember to update documentation with inline edits to CLAUDE.md and README.md as needed."
|
|
112
|
-
}
|
|
113
|
-
EOF
|
|
114
|
-
else
|
|
115
|
-
cat <<EOF
|
|
116
|
-
{
|
|
117
|
-
"continue": true,
|
|
118
|
-
"systemMessage": "✅ Task completed. More tasks remaining - keep going!"
|
|
119
|
-
}
|
|
120
|
-
EOF
|
|
121
|
-
fi
|