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
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SpecWeave Configuration Types
|
|
3
|
+
*
|
|
4
|
+
* Type definitions for .specweave/config.json configuration file.
|
|
5
|
+
*/
|
|
6
|
+
import { SupportedLanguage, TranslationConfig } from '../i18n/types.js';
|
|
7
|
+
import { PluginConfig } from './plugin.js';
|
|
8
|
+
/**
|
|
9
|
+
* Project metadata
|
|
10
|
+
*/
|
|
11
|
+
export interface ProjectMetadata {
|
|
12
|
+
/** Project name */
|
|
13
|
+
name?: string;
|
|
14
|
+
/** Project version (semver) */
|
|
15
|
+
version?: string;
|
|
16
|
+
/** Project description */
|
|
17
|
+
description?: string;
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Adapter configuration
|
|
21
|
+
*/
|
|
22
|
+
export interface AdapterConfig {
|
|
23
|
+
/** Default adapter to use (claude, cursor, copilot, generic) */
|
|
24
|
+
default?: 'claude' | 'cursor' | 'copilot' | 'generic';
|
|
25
|
+
/** Additional adapter settings */
|
|
26
|
+
[key: string]: any;
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Complete SpecWeave Configuration
|
|
30
|
+
*
|
|
31
|
+
* Represents the structure of .specweave/config.json
|
|
32
|
+
*/
|
|
33
|
+
export interface SpecweaveConfig {
|
|
34
|
+
/** Plugin configuration */
|
|
35
|
+
plugins?: PluginConfig;
|
|
36
|
+
/** Project metadata */
|
|
37
|
+
project?: ProjectMetadata;
|
|
38
|
+
/** Adapter configuration */
|
|
39
|
+
adapters?: AdapterConfig;
|
|
40
|
+
/** Primary language for generated content and CLI */
|
|
41
|
+
language?: SupportedLanguage;
|
|
42
|
+
/** Translation settings for multilingual support */
|
|
43
|
+
translation?: TranslationConfig;
|
|
44
|
+
/** Allow additional properties */
|
|
45
|
+
[key: string]: any;
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Default configuration values
|
|
49
|
+
*/
|
|
50
|
+
export declare const DEFAULT_CONFIG: Partial<SpecweaveConfig>;
|
|
51
|
+
//# sourceMappingURL=config.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../../src/core/types/config.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACxE,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAE3C;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,mBAAmB;IACnB,IAAI,CAAC,EAAE,MAAM,CAAC;IAEd,+BAA+B;IAC/B,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB,0BAA0B;IAC1B,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,gEAAgE;IAChE,OAAO,CAAC,EAAE,QAAQ,GAAG,QAAQ,GAAG,SAAS,GAAG,SAAS,CAAC;IAEtD,kCAAkC;IAClC,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;CACpB;AAED;;;;GAIG;AACH,MAAM,WAAW,eAAe;IAC9B,2BAA2B;IAC3B,OAAO,CAAC,EAAE,YAAY,CAAC;IAEvB,uBAAuB;IACvB,OAAO,CAAC,EAAE,eAAe,CAAC;IAE1B,4BAA4B;IAC5B,QAAQ,CAAC,EAAE,aAAa,CAAC;IAEzB,qDAAqD;IACrD,QAAQ,CAAC,EAAE,iBAAiB,CAAC;IAE7B,oDAAoD;IACpD,WAAW,CAAC,EAAE,iBAAiB,CAAC;IAEhC,kCAAkC;IAClC,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;CACpB;AAED;;GAEG;AACH,eAAO,MAAM,cAAc,EAAE,OAAO,CAAC,eAAe,CAWnD,CAAC"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SpecWeave Configuration Types
|
|
3
|
+
*
|
|
4
|
+
* Type definitions for .specweave/config.json configuration file.
|
|
5
|
+
*/
|
|
6
|
+
/**
|
|
7
|
+
* Default configuration values
|
|
8
|
+
*/
|
|
9
|
+
export const DEFAULT_CONFIG = {
|
|
10
|
+
language: 'en',
|
|
11
|
+
translation: {
|
|
12
|
+
languages: ['en'],
|
|
13
|
+
primary: 'en',
|
|
14
|
+
method: 'auto',
|
|
15
|
+
preserveFrameworkTerms: true,
|
|
16
|
+
},
|
|
17
|
+
adapters: {
|
|
18
|
+
default: 'claude',
|
|
19
|
+
},
|
|
20
|
+
};
|
|
21
|
+
//# sourceMappingURL=config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../../src/core/types/config.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAuDH;;GAEG;AACH,MAAM,CAAC,MAAM,cAAc,GAA6B;IACtD,QAAQ,EAAE,IAAI;IACd,WAAW,EAAE;QACX,SAAS,EAAE,CAAC,IAAI,CAAC;QACjB,OAAO,EAAE,IAAI;QACb,MAAM,EAAE,MAAM;QACd,sBAAsB,EAAE,IAAI;KAC7B;IACD,QAAQ,EAAE;QACR,OAAO,EAAE,QAAQ;KAClB;CACF,CAAC"}
|
|
@@ -1,68 +1,99 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Plugin System Type Definitions
|
|
3
3
|
*
|
|
4
|
-
* Defines interfaces and types for
|
|
5
|
-
*
|
|
4
|
+
* Defines interfaces and types for Claude Code's native plugin architecture.
|
|
5
|
+
* Follows Claude's official plugin.json schema (Anthropic standards).
|
|
6
6
|
*
|
|
7
7
|
* @module core/types/plugin
|
|
8
|
-
* @version 0.
|
|
8
|
+
* @version 0.6.1
|
|
9
|
+
* @see https://docs.claude.com/en/docs/claude-code/plugins
|
|
9
10
|
*/
|
|
10
11
|
/**
|
|
11
|
-
* Plugin Manifest -
|
|
12
|
+
* Claude Plugin Manifest - Official plugin.json format
|
|
12
13
|
*
|
|
13
|
-
* Loaded from .claude-plugin/
|
|
14
|
-
* Follows
|
|
14
|
+
* Loaded from .claude-plugin/plugin.json in each plugin directory.
|
|
15
|
+
* Follows Claude's official schema (NOT SpecWeave custom format).
|
|
16
|
+
*
|
|
17
|
+
* @see https://github.com/anthropics/claude-code/blob/main/.claude-plugin/marketplace.json
|
|
15
18
|
*/
|
|
16
19
|
export interface PluginManifest {
|
|
17
|
-
/**
|
|
20
|
+
/** Plugin name (e.g., "specweave-github") */
|
|
18
21
|
name: string;
|
|
22
|
+
/** Human-readable description */
|
|
23
|
+
description: string;
|
|
19
24
|
/** Semantic version (e.g., "1.0.0") */
|
|
20
25
|
version: string;
|
|
21
|
-
/**
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
26
|
+
/** Plugin author (required by Claude) */
|
|
27
|
+
author: {
|
|
28
|
+
/** Author name */
|
|
29
|
+
name: string;
|
|
30
|
+
/** Author email (optional) */
|
|
31
|
+
email?: string;
|
|
32
|
+
/** Author URL (optional) */
|
|
33
|
+
url?: string;
|
|
34
|
+
};
|
|
35
|
+
/** Plugin homepage (optional) */
|
|
36
|
+
homepage?: string;
|
|
37
|
+
/** Repository info (optional) */
|
|
38
|
+
repository?: {
|
|
39
|
+
/** Repository type (e.g., "git") */
|
|
40
|
+
type: string;
|
|
41
|
+
/** Repository URL */
|
|
42
|
+
url: string;
|
|
43
|
+
};
|
|
44
|
+
/** Keywords for discoverability (optional) */
|
|
45
|
+
keywords?: string[];
|
|
46
|
+
/** Plugin dependencies (SpecWeave format - object with plugins array) */
|
|
30
47
|
dependencies?: {
|
|
31
|
-
/**
|
|
48
|
+
/** List of required plugin names */
|
|
32
49
|
plugins?: string[];
|
|
33
50
|
};
|
|
34
|
-
/**
|
|
51
|
+
/** License information (SpecWeave extension) */
|
|
52
|
+
license?: string;
|
|
53
|
+
/** Required SpecWeave core version (SpecWeave extension) */
|
|
54
|
+
specweave_core_version?: string;
|
|
55
|
+
/** Components provided by plugin (SpecWeave extension) - arrays of component names */
|
|
56
|
+
provides?: {
|
|
57
|
+
/** List of skill names */
|
|
58
|
+
skills?: string[];
|
|
59
|
+
/** List of agent names */
|
|
60
|
+
agents?: string[];
|
|
61
|
+
/** List of command names */
|
|
62
|
+
commands?: string[];
|
|
63
|
+
/** List of hook names */
|
|
64
|
+
hooks?: string[];
|
|
65
|
+
};
|
|
66
|
+
/** Nested plugins or plugin list (SpecWeave extension) */
|
|
67
|
+
plugins?: string[];
|
|
68
|
+
/** Auto-detection rules (SpecWeave extension) */
|
|
35
69
|
auto_detect?: {
|
|
36
|
-
/** File
|
|
70
|
+
/** File patterns to detect (e.g., ".git/config") */
|
|
37
71
|
files?: string[];
|
|
38
|
-
/**
|
|
72
|
+
/** Package.json dependencies to check */
|
|
39
73
|
packages?: string[];
|
|
40
|
-
/** Environment variables to
|
|
74
|
+
/** Environment variables to check (was env_vars) */
|
|
75
|
+
env?: string[];
|
|
76
|
+
/** Legacy name for env */
|
|
41
77
|
env_vars?: string[];
|
|
42
|
-
/** Git
|
|
78
|
+
/** Git remotes to check (e.g., "github.com") */
|
|
79
|
+
git_remotes?: string[];
|
|
80
|
+
/** Legacy name for git_remotes */
|
|
43
81
|
git_remote_pattern?: string;
|
|
44
82
|
};
|
|
45
|
-
/**
|
|
46
|
-
provides: {
|
|
47
|
-
/** Skill names provided by this plugin */
|
|
48
|
-
skills: string[];
|
|
49
|
-
/** Agent names provided by this plugin */
|
|
50
|
-
agents: string[];
|
|
51
|
-
/** Command names provided by this plugin */
|
|
52
|
-
commands: string[];
|
|
53
|
-
};
|
|
54
|
-
/** Keywords that trigger plugin suggestions in specs/tasks */
|
|
83
|
+
/** Plugin triggers (SpecWeave extension) */
|
|
55
84
|
triggers?: string[];
|
|
56
|
-
/**
|
|
85
|
+
/** Credits and acknowledgments (SpecWeave extension) */
|
|
57
86
|
credits?: {
|
|
58
|
-
/**
|
|
59
|
-
|
|
60
|
-
/**
|
|
87
|
+
/** Original author (was original_author) */
|
|
88
|
+
author?: string;
|
|
89
|
+
/** Legacy name for author */
|
|
61
90
|
original_author?: string;
|
|
62
|
-
/**
|
|
91
|
+
/** Contributors */
|
|
63
92
|
contributors?: string[];
|
|
64
|
-
/**
|
|
65
|
-
|
|
93
|
+
/** Inspiration or based on (was based_on) */
|
|
94
|
+
inspiration?: string;
|
|
95
|
+
/** Legacy name for inspiration */
|
|
96
|
+
based_on?: string;
|
|
66
97
|
};
|
|
67
98
|
}
|
|
68
99
|
/**
|
|
@@ -227,9 +258,9 @@ export interface PluginDependency {
|
|
|
227
258
|
* Plugin Error - Custom error for plugin operations
|
|
228
259
|
*/
|
|
229
260
|
export declare class PluginError extends Error {
|
|
230
|
-
pluginName?: string
|
|
231
|
-
code?: string
|
|
232
|
-
constructor(message: string, pluginName?: string
|
|
261
|
+
pluginName?: string;
|
|
262
|
+
code?: string;
|
|
263
|
+
constructor(message: string, pluginName?: string, code?: string);
|
|
233
264
|
}
|
|
234
265
|
/**
|
|
235
266
|
* Plugin Manifest Validation Error
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../../../src/core/types/plugin.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../../../src/core/types/plugin.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Plugin System Type Definitions
|
|
3
3
|
*
|
|
4
|
-
* Defines interfaces and types for
|
|
5
|
-
*
|
|
4
|
+
* Defines interfaces and types for Claude Code's native plugin architecture.
|
|
5
|
+
* Follows Claude's official plugin.json schema (Anthropic standards).
|
|
6
6
|
*
|
|
7
7
|
* @module core/types/plugin
|
|
8
|
-
* @version 0.
|
|
8
|
+
* @version 0.6.1
|
|
9
|
+
* @see https://docs.claude.com/en/docs/claude-code/plugins
|
|
9
10
|
*/
|
|
10
11
|
/**
|
|
11
12
|
* Plugin Error - Custom error for plugin operations
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plugin.js","sourceRoot":"","sources":["../../../src/core/types/plugin.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"plugin.js","sourceRoot":"","sources":["../../../src/core/types/plugin.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAyTH;;GAEG;AACH,MAAM,OAAO,WAAY,SAAQ,KAAK;IACpC,YACE,OAAe,EACR,UAAmB,EACnB,IAAa;QAEpB,KAAK,CAAC,OAAO,CAAC,CAAC;QAHR,eAAU,GAAV,UAAU,CAAS;QACnB,SAAI,GAAJ,IAAI,CAAS;QAGpB,IAAI,CAAC,IAAI,GAAG,aAAa,CAAC;IAC5B,CAAC;CACF;AAED;;GAEG;AACH,MAAM,OAAO,uBAAwB,SAAQ,WAAW;IACtD,YAAY,OAAe,EAAE,UAAmB;QAC9C,KAAK,CAAC,OAAO,EAAE,UAAU,EAAE,kBAAkB,CAAC,CAAC;QAC/C,IAAI,CAAC,IAAI,GAAG,yBAAyB,CAAC;IACxC,CAAC;CACF;AAED;;GAEG;AACH,MAAM,OAAO,mBAAoB,SAAQ,WAAW;IAClD,YAAY,UAAkB;QAC5B,KAAK,CAAC,WAAW,UAAU,aAAa,EAAE,UAAU,EAAE,kBAAkB,CAAC,CAAC;QAC1E,IAAI,CAAC,IAAI,GAAG,qBAAqB,CAAC;IACpC,CAAC;CACF;AAED;;GAEG;AACH,MAAM,OAAO,qBAAsB,SAAQ,WAAW;IACpD,YAAY,OAAe,EAAE,UAAmB;QAC9C,KAAK,CAAC,OAAO,EAAE,UAAU,EAAE,kBAAkB,CAAC,CAAC;QAC/C,IAAI,CAAC,IAAI,GAAG,uBAAuB,CAAC;IACtC,CAAC;CACF"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* SpecWeave Living Docs Auto-Sync
|
|
4
|
+
*
|
|
5
|
+
* Automatically syncs living documentation after task completion.
|
|
6
|
+
*
|
|
7
|
+
* Usage:
|
|
8
|
+
* node dist/hooks/lib/sync-living-docs.js <incrementId>
|
|
9
|
+
*
|
|
10
|
+
* Example:
|
|
11
|
+
* node dist/hooks/lib/sync-living-docs.js 0006-llm-native-i18n
|
|
12
|
+
*
|
|
13
|
+
* What it does:
|
|
14
|
+
* 1. Checks if sync_living_docs enabled in config
|
|
15
|
+
* 2. Detects changed docs via git diff
|
|
16
|
+
* 3. Invokes /sync-docs update command (future implementation)
|
|
17
|
+
* 4. Logs sync actions
|
|
18
|
+
*
|
|
19
|
+
* @author SpecWeave Team
|
|
20
|
+
* @version 1.0.0
|
|
21
|
+
*/
|
|
22
|
+
/**
|
|
23
|
+
* Main function - sync living docs for given increment
|
|
24
|
+
*/
|
|
25
|
+
declare function syncLivingDocs(incrementId: string): Promise<void>;
|
|
26
|
+
export { syncLivingDocs };
|
|
27
|
+
//# sourceMappingURL=sync-living-docs.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sync-living-docs.d.ts","sourceRoot":"","sources":["../../../src/hooks/lib/sync-living-docs.ts"],"names":[],"mappings":";AAEA;;;;;;;;;;;;;;;;;;;GAmBG;AAcH;;GAEG;AACH,iBAAe,cAAc,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAmDhE;AAyDD,OAAO,EAAE,cAAc,EAAE,CAAC"}
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* SpecWeave Living Docs Auto-Sync
|
|
4
|
+
*
|
|
5
|
+
* Automatically syncs living documentation after task completion.
|
|
6
|
+
*
|
|
7
|
+
* Usage:
|
|
8
|
+
* node dist/hooks/lib/sync-living-docs.js <incrementId>
|
|
9
|
+
*
|
|
10
|
+
* Example:
|
|
11
|
+
* node dist/hooks/lib/sync-living-docs.js 0006-llm-native-i18n
|
|
12
|
+
*
|
|
13
|
+
* What it does:
|
|
14
|
+
* 1. Checks if sync_living_docs enabled in config
|
|
15
|
+
* 2. Detects changed docs via git diff
|
|
16
|
+
* 3. Invokes /sync-docs update command (future implementation)
|
|
17
|
+
* 4. Logs sync actions
|
|
18
|
+
*
|
|
19
|
+
* @author SpecWeave Team
|
|
20
|
+
* @version 1.0.0
|
|
21
|
+
*/
|
|
22
|
+
import fs from 'fs-extra';
|
|
23
|
+
import path from 'path';
|
|
24
|
+
import { execSync } from 'child_process';
|
|
25
|
+
/**
|
|
26
|
+
* Main function - sync living docs for given increment
|
|
27
|
+
*/
|
|
28
|
+
async function syncLivingDocs(incrementId) {
|
|
29
|
+
try {
|
|
30
|
+
console.log(`\n📚 Checking living docs sync for increment: ${incrementId}`);
|
|
31
|
+
// 1. Load config
|
|
32
|
+
const configPath = path.join(process.cwd(), '.specweave', 'config.json');
|
|
33
|
+
let config = {};
|
|
34
|
+
if (fs.existsSync(configPath)) {
|
|
35
|
+
config = JSON.parse(await fs.readFile(configPath, 'utf-8'));
|
|
36
|
+
}
|
|
37
|
+
// 2. Check if sync enabled
|
|
38
|
+
const syncEnabled = config.hooks?.post_task_completion?.sync_living_docs ?? false;
|
|
39
|
+
if (!syncEnabled) {
|
|
40
|
+
console.log('ℹ️ Living docs sync disabled in config');
|
|
41
|
+
console.log(' To enable: Set hooks.post_task_completion.sync_living_docs = true');
|
|
42
|
+
return;
|
|
43
|
+
}
|
|
44
|
+
console.log('✅ Living docs sync enabled');
|
|
45
|
+
// 3. Detect changed docs via git diff
|
|
46
|
+
const changedDocs = detectChangedDocs();
|
|
47
|
+
if (changedDocs.length === 0) {
|
|
48
|
+
console.log('ℹ️ No living docs changed (no git diff in .specweave/docs/)');
|
|
49
|
+
return;
|
|
50
|
+
}
|
|
51
|
+
console.log(`📄 Detected ${changedDocs.length} changed doc(s):`);
|
|
52
|
+
changedDocs.forEach((doc) => console.log(` - ${doc}`));
|
|
53
|
+
// 4. Invoke /sync-docs update command
|
|
54
|
+
// TODO: Implement actual sync command invocation
|
|
55
|
+
// For now, just log what would happen
|
|
56
|
+
console.log('\n🔄 Syncing living docs...');
|
|
57
|
+
console.log(' (Actual sync command invocation to be implemented in future version)');
|
|
58
|
+
console.log(' Would invoke: /sync-docs update');
|
|
59
|
+
// Future implementation:
|
|
60
|
+
// await invokeSyncDocsCommand(incrementId);
|
|
61
|
+
console.log('✅ Living docs sync check complete\n');
|
|
62
|
+
}
|
|
63
|
+
catch (error) {
|
|
64
|
+
console.error('❌ Error syncing living docs:', error);
|
|
65
|
+
// Don't exit with error - this is best-effort
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* Detect changed documentation files via git diff
|
|
70
|
+
*/
|
|
71
|
+
function detectChangedDocs() {
|
|
72
|
+
try {
|
|
73
|
+
// Get changed files in .specweave/docs/
|
|
74
|
+
const output = execSync('git diff --name-only .specweave/docs/ 2>/dev/null || true', {
|
|
75
|
+
encoding: 'utf-8',
|
|
76
|
+
cwd: process.cwd(),
|
|
77
|
+
}).trim();
|
|
78
|
+
if (!output) {
|
|
79
|
+
return [];
|
|
80
|
+
}
|
|
81
|
+
// Filter to only .md files
|
|
82
|
+
const files = output
|
|
83
|
+
.split('\n')
|
|
84
|
+
.filter((f) => f.endsWith('.md'))
|
|
85
|
+
.filter((f) => f.length > 0);
|
|
86
|
+
return files;
|
|
87
|
+
}
|
|
88
|
+
catch (error) {
|
|
89
|
+
console.warn('⚠️ Could not detect git changes:', error);
|
|
90
|
+
return [];
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
/**
|
|
94
|
+
* Invoke /sync-docs update command
|
|
95
|
+
* TODO: Implement actual command invocation
|
|
96
|
+
*/
|
|
97
|
+
async function invokeSyncDocsCommand(incrementId) {
|
|
98
|
+
// This will be implemented in future version when /sync-docs command is ready
|
|
99
|
+
console.log(` Invoking /sync-docs update for ${incrementId}`);
|
|
100
|
+
}
|
|
101
|
+
// CLI entry point
|
|
102
|
+
const isMainModule = import.meta.url === `file://${process.argv[1]}`;
|
|
103
|
+
if (isMainModule) {
|
|
104
|
+
const incrementId = process.argv[2];
|
|
105
|
+
if (!incrementId) {
|
|
106
|
+
console.error('❌ Usage: sync-living-docs <incrementId>');
|
|
107
|
+
console.error(' Example: sync-living-docs 0006-llm-native-i18n');
|
|
108
|
+
process.exit(1);
|
|
109
|
+
}
|
|
110
|
+
syncLivingDocs(incrementId).catch((error) => {
|
|
111
|
+
console.error('❌ Fatal error:', error);
|
|
112
|
+
// Don't exit with error code - best-effort sync
|
|
113
|
+
});
|
|
114
|
+
}
|
|
115
|
+
export { syncLivingDocs };
|
|
116
|
+
//# sourceMappingURL=sync-living-docs.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sync-living-docs.js","sourceRoot":"","sources":["../../../src/hooks/lib/sync-living-docs.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Living Docs Auto-Translation
|
|
3
|
+
*
|
|
4
|
+
* Automatically translates changed documentation files when language != 'en'
|
|
5
|
+
* and auto-translation is enabled in config.
|
|
6
|
+
*
|
|
7
|
+
* This runs as part of the post-task-completion hook.
|
|
8
|
+
*/
|
|
9
|
+
/**
|
|
10
|
+
* Main function: Translate changed living docs
|
|
11
|
+
*/
|
|
12
|
+
export declare function translateLivingDocs(incrementId: string): Promise<void>;
|
|
13
|
+
//# sourceMappingURL=translate-living-docs.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"translate-living-docs.d.ts","sourceRoot":"","sources":["../../../src/hooks/lib/translate-living-docs.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAeH;;GAEG;AACH,wBAAsB,mBAAmB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAkD5E"}
|
|
@@ -0,0 +1,166 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Living Docs Auto-Translation
|
|
3
|
+
*
|
|
4
|
+
* Automatically translates changed documentation files when language != 'en'
|
|
5
|
+
* and auto-translation is enabled in config.
|
|
6
|
+
*
|
|
7
|
+
* This runs as part of the post-task-completion hook.
|
|
8
|
+
*/
|
|
9
|
+
import { execSync } from 'child_process';
|
|
10
|
+
import fs from 'fs-extra';
|
|
11
|
+
/**
|
|
12
|
+
* Main function: Translate changed living docs
|
|
13
|
+
*/
|
|
14
|
+
export async function translateLivingDocs(incrementId) {
|
|
15
|
+
try {
|
|
16
|
+
// 1. Load config
|
|
17
|
+
const configPath = '.specweave/config.json';
|
|
18
|
+
if (!fs.existsSync(configPath)) {
|
|
19
|
+
console.log('[translate-living-docs] No config found, skipping translation');
|
|
20
|
+
return;
|
|
21
|
+
}
|
|
22
|
+
const config = await fs.readJson(configPath);
|
|
23
|
+
// 2. Check if translation is enabled
|
|
24
|
+
if (!config.language || config.language === 'en') {
|
|
25
|
+
// English or no language set - skip translation
|
|
26
|
+
return;
|
|
27
|
+
}
|
|
28
|
+
if (!config.translation?.autoTranslateLivingDocs) {
|
|
29
|
+
// Auto-translation disabled
|
|
30
|
+
return;
|
|
31
|
+
}
|
|
32
|
+
console.log(`[translate-living-docs] Auto-translating docs to ${config.language}...`);
|
|
33
|
+
// 3. Detect changed documentation files
|
|
34
|
+
const changedFiles = await detectChangedDocs();
|
|
35
|
+
if (changedFiles.length === 0) {
|
|
36
|
+
console.log('[translate-living-docs] No documentation changes detected');
|
|
37
|
+
return;
|
|
38
|
+
}
|
|
39
|
+
console.log(`[translate-living-docs] Found ${changedFiles.length} changed file(s)`);
|
|
40
|
+
// 4. Translate each file
|
|
41
|
+
for (const file of changedFiles) {
|
|
42
|
+
try {
|
|
43
|
+
await translateFile(file, config.language, config.translation);
|
|
44
|
+
console.log(`[translate-living-docs] ✓ Translated: ${file}`);
|
|
45
|
+
}
|
|
46
|
+
catch (error) {
|
|
47
|
+
console.warn(`[translate-living-docs] ⚠️ Failed to translate ${file}: ${error.message}`);
|
|
48
|
+
// Continue with other files
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
console.log(`[translate-living-docs] ✅ Translation complete (${changedFiles.length} files)`);
|
|
52
|
+
}
|
|
53
|
+
catch (error) {
|
|
54
|
+
console.error(`[translate-living-docs] Error: ${error.message}`);
|
|
55
|
+
// Don't throw - translation errors shouldn't break the workflow
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Detect changed documentation files using git diff
|
|
60
|
+
*/
|
|
61
|
+
async function detectChangedDocs() {
|
|
62
|
+
try {
|
|
63
|
+
// Get list of changed files in .specweave/docs/
|
|
64
|
+
const output = execSync('git diff --name-only .specweave/docs/', { encoding: 'utf-8', stdio: ['pipe', 'pipe', 'ignore'] });
|
|
65
|
+
// Filter for markdown files only
|
|
66
|
+
const files = output
|
|
67
|
+
.split('\n')
|
|
68
|
+
.filter(f => f.trim() && f.endsWith('.md'))
|
|
69
|
+
.map(f => f.trim());
|
|
70
|
+
return files;
|
|
71
|
+
}
|
|
72
|
+
catch (error) {
|
|
73
|
+
// git diff might fail if not a git repo or no changes
|
|
74
|
+
return [];
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* Translate a single file
|
|
79
|
+
*
|
|
80
|
+
* NOTE: This is a simplified implementation that creates a translation prompt.
|
|
81
|
+
* In a real implementation with Claude Code, the translator skill would auto-activate
|
|
82
|
+
* and handle the translation. For now, we'll add a marker comment to indicate
|
|
83
|
+
* the file needs translation.
|
|
84
|
+
*/
|
|
85
|
+
async function translateFile(filePath, targetLanguage, translationConfig) {
|
|
86
|
+
// Read original content
|
|
87
|
+
const originalContent = await fs.readFile(filePath, 'utf-8');
|
|
88
|
+
// Check if file already has translation marker (avoid re-translating)
|
|
89
|
+
if (originalContent.includes(`<!-- Translated to ${targetLanguage} -->`)) {
|
|
90
|
+
console.log(`[translate-living-docs] File already translated, skipping: ${filePath}`);
|
|
91
|
+
return;
|
|
92
|
+
}
|
|
93
|
+
// For now, we'll create a translation request that the LLM can act on
|
|
94
|
+
// In a production system with Claude Code integration, this would invoke
|
|
95
|
+
// the translator skill directly
|
|
96
|
+
const translationPrompt = generateTranslationPrompt(originalContent, targetLanguage, translationConfig);
|
|
97
|
+
// TODO: In full implementation, this would:
|
|
98
|
+
// 1. Invoke translator skill via Claude Code API
|
|
99
|
+
// 2. Get translated content back
|
|
100
|
+
// 3. Write to file
|
|
101
|
+
// For MVP, we'll add a comment indicating translation is needed
|
|
102
|
+
const markedContent = `<!-- Translation needed to ${targetLanguage} -->\n<!-- Original content below -->\n\n${originalContent}`;
|
|
103
|
+
// Write back (commented out to avoid breaking existing docs)
|
|
104
|
+
// await fs.writeFile(filePath, markedContent, 'utf-8');
|
|
105
|
+
console.log(`[translate-living-docs] Translation prompt generated for: ${filePath}`);
|
|
106
|
+
}
|
|
107
|
+
/**
|
|
108
|
+
* Generate translation prompt for LLM
|
|
109
|
+
*/
|
|
110
|
+
function generateTranslationPrompt(content, targetLanguage, translationConfig) {
|
|
111
|
+
const keepFrameworkTerms = translationConfig?.keepFrameworkTerms !== false;
|
|
112
|
+
const keepTechnicalTerms = translationConfig?.keepTechnicalTerms !== false;
|
|
113
|
+
return `
|
|
114
|
+
Translate the following markdown documentation to ${getLanguageName(targetLanguage)}.
|
|
115
|
+
|
|
116
|
+
CRITICAL RULES:
|
|
117
|
+
${keepFrameworkTerms ? '- Keep framework terms in English: increment, spec.md, plan.md, tasks.md, COMPLETION-SUMMARY.md, living docs, PM gate, RFC, ADR, PRD, HLD, LLD' : ''}
|
|
118
|
+
${keepTechnicalTerms ? '- Keep technical terms in English: TypeScript, npm, git, Docker, Kubernetes, API, CLI, REST, JSON, HTTP' : ''}
|
|
119
|
+
- Preserve ALL markdown formatting (headers, lists, code blocks, links)
|
|
120
|
+
- Do NOT translate code blocks
|
|
121
|
+
- Do NOT translate YAML frontmatter keys (only values if applicable)
|
|
122
|
+
- Preserve all emojis
|
|
123
|
+
- Preserve all file paths and URLs
|
|
124
|
+
|
|
125
|
+
Content to translate:
|
|
126
|
+
---
|
|
127
|
+
${content}
|
|
128
|
+
---
|
|
129
|
+
|
|
130
|
+
Translated version:
|
|
131
|
+
`.trim();
|
|
132
|
+
}
|
|
133
|
+
/**
|
|
134
|
+
* Get human-readable language name
|
|
135
|
+
*/
|
|
136
|
+
function getLanguageName(code) {
|
|
137
|
+
const names = {
|
|
138
|
+
en: 'English',
|
|
139
|
+
ru: 'Russian (Русский)',
|
|
140
|
+
es: 'Spanish (Español)',
|
|
141
|
+
zh: 'Chinese (中文)',
|
|
142
|
+
de: 'German (Deutsch)',
|
|
143
|
+
fr: 'French (Français)',
|
|
144
|
+
ja: 'Japanese (日本語)',
|
|
145
|
+
ko: 'Korean (한국어)',
|
|
146
|
+
pt: 'Portuguese (Português)',
|
|
147
|
+
};
|
|
148
|
+
return names[code] || code;
|
|
149
|
+
}
|
|
150
|
+
/**
|
|
151
|
+
* CLI entry point (for standalone execution)
|
|
152
|
+
*/
|
|
153
|
+
async function main() {
|
|
154
|
+
const args = process.argv.slice(2);
|
|
155
|
+
const incrementId = args[0] || 'current';
|
|
156
|
+
await translateLivingDocs(incrementId);
|
|
157
|
+
}
|
|
158
|
+
// Check if running as main module
|
|
159
|
+
const isMainModule = import.meta.url === `file://${process.argv[1]}`;
|
|
160
|
+
if (isMainModule) {
|
|
161
|
+
main().catch(error => {
|
|
162
|
+
console.error('[translate-living-docs] Fatal error:', error);
|
|
163
|
+
process.exit(1);
|
|
164
|
+
});
|
|
165
|
+
}
|
|
166
|
+
//# sourceMappingURL=translate-living-docs.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"translate-living-docs.js","sourceRoot":"","sources":["../../../src/hooks/lib/translate-living-docs.ts"],"names":[],"mappings":"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"}
|