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
|
@@ -2,9 +2,9 @@
|
|
|
2
2
|
* GitHub Copilot Adapter
|
|
3
3
|
*
|
|
4
4
|
* Basic automation adapter for GitHub Copilot.
|
|
5
|
-
*
|
|
5
|
+
* Compiles SpecWeave plugins to AGENTS.md (universal standard) for context and suggestions.
|
|
6
6
|
*
|
|
7
|
-
* This adapter
|
|
7
|
+
* This adapter compiles skills, agents, and commands into AGENTS.md format.
|
|
8
8
|
*/
|
|
9
9
|
|
|
10
10
|
import * as path from 'path';
|
|
@@ -12,6 +12,9 @@ import fs from 'fs-extra';
|
|
|
12
12
|
import { AdapterBase } from '../adapter-base.js';
|
|
13
13
|
import { AdapterOptions, AdapterFile } from '../adapter-interface.js';
|
|
14
14
|
import type { Plugin } from '../../core/types/plugin.js';
|
|
15
|
+
import { compileToAgentsMd, getSpecweaveInstallPath } from '../../utils/agents-md-compiler.js';
|
|
16
|
+
import { LanguageManager, getSystemPromptForLanguage } from '../../core/i18n/language-manager.js';
|
|
17
|
+
import type { SupportedLanguage } from '../../core/i18n/types.js';
|
|
15
18
|
|
|
16
19
|
export class CopilotAdapter extends AdapterBase {
|
|
17
20
|
name = 'copilot';
|
|
@@ -47,8 +50,73 @@ export class CopilotAdapter extends AdapterBase {
|
|
|
47
50
|
async install(options: AdapterOptions): Promise<void> {
|
|
48
51
|
console.log('\n📦 Configuring GitHub Copilot (Basic Automation)\n');
|
|
49
52
|
|
|
50
|
-
//
|
|
51
|
-
|
|
53
|
+
// 1. Create .specweave/ structure
|
|
54
|
+
const specweaveDir = path.join(options.projectPath, '.specweave');
|
|
55
|
+
await fs.ensureDir(specweaveDir);
|
|
56
|
+
await fs.ensureDir(path.join(specweaveDir, 'increments'));
|
|
57
|
+
await fs.ensureDir(path.join(specweaveDir, 'increments', '_backlog'));
|
|
58
|
+
await fs.ensureDir(path.join(specweaveDir, 'docs', 'internal', 'strategy'));
|
|
59
|
+
await fs.ensureDir(path.join(specweaveDir, 'docs', 'internal', 'architecture', 'adr'));
|
|
60
|
+
await fs.ensureDir(path.join(specweaveDir, 'docs', 'internal', 'architecture', 'rfc'));
|
|
61
|
+
await fs.ensureDir(path.join(specweaveDir, 'docs', 'internal', 'architecture', 'diagrams'));
|
|
62
|
+
await fs.ensureDir(path.join(specweaveDir, 'docs', 'internal', 'delivery'));
|
|
63
|
+
await fs.ensureDir(path.join(specweaveDir, 'docs', 'public', 'guides'));
|
|
64
|
+
await fs.ensureDir(path.join(specweaveDir, 'logs'));
|
|
65
|
+
|
|
66
|
+
console.log('✅ Created .specweave/ structure');
|
|
67
|
+
|
|
68
|
+
// 2. Find SpecWeave installation
|
|
69
|
+
let specweavePath: string;
|
|
70
|
+
try {
|
|
71
|
+
specweavePath = getSpecweaveInstallPath();
|
|
72
|
+
console.log(`✅ Found SpecWeave installation at: ${specweavePath}`);
|
|
73
|
+
} catch (error) {
|
|
74
|
+
console.error('❌ Could not find SpecWeave installation');
|
|
75
|
+
console.error(' Make sure SpecWeave is installed: npm install -g specweave');
|
|
76
|
+
return;
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
// 3. Compile plugins to AGENTS.md
|
|
80
|
+
console.log('📝 Compiling plugins to AGENTS.md...');
|
|
81
|
+
const result = await compileToAgentsMd(specweavePath);
|
|
82
|
+
|
|
83
|
+
// 4. Write AGENTS.md
|
|
84
|
+
const agentsMdPath = path.join(options.projectPath, 'AGENTS.md');
|
|
85
|
+
await fs.writeFile(agentsMdPath, result.agentsMd, 'utf-8');
|
|
86
|
+
|
|
87
|
+
console.log('✅ Created AGENTS.md with:');
|
|
88
|
+
console.log(` - ${result.skills.length} skills`);
|
|
89
|
+
console.log(` - ${result.agents.length} agents`);
|
|
90
|
+
console.log(` - ${result.commands.length} commands`);
|
|
91
|
+
|
|
92
|
+
// 5. Create .github/copilot/instructions.md (optional)
|
|
93
|
+
const copilotDir = path.join(options.projectPath, '.github', 'copilot');
|
|
94
|
+
await fs.ensureDir(copilotDir);
|
|
95
|
+
|
|
96
|
+
const instructionsContent = `# GitHub Copilot Instructions
|
|
97
|
+
|
|
98
|
+
This project uses SpecWeave for spec-driven development.
|
|
99
|
+
|
|
100
|
+
## Important Context
|
|
101
|
+
|
|
102
|
+
- **AGENTS.md**: Complete workflow guide (read this first!)
|
|
103
|
+
- **Structure**: All work happens in \`.specweave/increments/\`
|
|
104
|
+
- **Workflow**: spec.md → plan.md → tasks.md → tests.md
|
|
105
|
+
|
|
106
|
+
## When Suggesting Code
|
|
107
|
+
|
|
108
|
+
- Follow patterns in AGENTS.md
|
|
109
|
+
- Create files in increment folders, not project root
|
|
110
|
+
- Reference existing specs and plans
|
|
111
|
+
- Follow naming conventions (kebab-case for increments)
|
|
112
|
+
|
|
113
|
+
See AGENTS.md for complete details.
|
|
114
|
+
`;
|
|
115
|
+
|
|
116
|
+
await fs.writeFile(path.join(copilotDir, 'instructions.md'), instructionsContent, 'utf-8');
|
|
117
|
+
console.log('✅ Created .github/copilot/instructions.md');
|
|
118
|
+
|
|
119
|
+
console.log('\n✅ Copilot will automatically read AGENTS.md');
|
|
52
120
|
}
|
|
53
121
|
|
|
54
122
|
/**
|
|
@@ -191,11 +259,56 @@ Copilot is best for simple projects or when already using VS Code + Copilot.
|
|
|
191
259
|
return true;
|
|
192
260
|
}
|
|
193
261
|
|
|
262
|
+
/**
|
|
263
|
+
* Read language configuration from project config
|
|
264
|
+
*
|
|
265
|
+
* @returns Language setting from config, defaults to 'en'
|
|
266
|
+
*/
|
|
267
|
+
private async getLanguageConfig(): Promise<SupportedLanguage> {
|
|
268
|
+
const projectPath = process.cwd();
|
|
269
|
+
const configPath = path.join(projectPath, '.specweave', 'config.json');
|
|
270
|
+
|
|
271
|
+
if (!(await fs.pathExists(configPath))) {
|
|
272
|
+
return 'en'; // Default to English if no config
|
|
273
|
+
}
|
|
274
|
+
|
|
275
|
+
try {
|
|
276
|
+
const config = await fs.readJson(configPath);
|
|
277
|
+
return (config.language as SupportedLanguage) || 'en';
|
|
278
|
+
} catch (error) {
|
|
279
|
+
console.warn('⚠️ Could not read language from config, defaulting to English');
|
|
280
|
+
return 'en';
|
|
281
|
+
}
|
|
282
|
+
}
|
|
283
|
+
|
|
284
|
+
/**
|
|
285
|
+
* Inject system prompt for non-English languages
|
|
286
|
+
*
|
|
287
|
+
* Prepends language instruction to markdown content if language !== 'en'
|
|
288
|
+
*
|
|
289
|
+
* @param content Original markdown content
|
|
290
|
+
* @param language Target language
|
|
291
|
+
* @returns Modified content with system prompt (or unchanged if English)
|
|
292
|
+
*/
|
|
293
|
+
private injectSystemPrompt(content: string, language: SupportedLanguage): string {
|
|
294
|
+
if (language === 'en') {
|
|
295
|
+
return content; // No changes for English - preserve default behavior
|
|
296
|
+
}
|
|
297
|
+
|
|
298
|
+
// Get system prompt for target language
|
|
299
|
+
const systemPrompt = getSystemPromptForLanguage(language);
|
|
300
|
+
|
|
301
|
+
// For AGENTS.md compilation, inject at the beginning of the content
|
|
302
|
+
return `${systemPrompt}\n\n${content}`;
|
|
303
|
+
}
|
|
304
|
+
|
|
194
305
|
/**
|
|
195
306
|
* Compile and install a plugin for Copilot
|
|
196
307
|
*
|
|
197
308
|
* Copilot uses AGENTS.md compilation (same as Cursor)
|
|
198
309
|
*
|
|
310
|
+
* NEW: Injects system prompts for non-English languages
|
|
311
|
+
*
|
|
199
312
|
* @param plugin Plugin to install
|
|
200
313
|
*/
|
|
201
314
|
async compilePlugin(plugin: Plugin): Promise<void> {
|
|
@@ -204,6 +317,12 @@ Copilot is best for simple projects or when already using VS Code + Copilot.
|
|
|
204
317
|
|
|
205
318
|
console.log(`\n📦 Compiling plugin for Copilot: ${plugin.manifest.name}`);
|
|
206
319
|
|
|
320
|
+
// Get language configuration for system prompt injection
|
|
321
|
+
const language = await this.getLanguageConfig();
|
|
322
|
+
if (language !== 'en') {
|
|
323
|
+
console.log(` 🌐 Language: ${language} (system prompts will be injected)`);
|
|
324
|
+
}
|
|
325
|
+
|
|
207
326
|
if (!(await fs.pathExists(agentsMdPath))) {
|
|
208
327
|
throw new Error('AGENTS.md not found. Run specweave init first.');
|
|
209
328
|
}
|
|
@@ -225,7 +344,9 @@ Copilot is best for simple projects or when already using VS Code + Copilot.
|
|
|
225
344
|
for (const skill of plugin.skills) {
|
|
226
345
|
const skillContent = await fs.readFile(path.join(skill.path, 'SKILL.md'), 'utf-8');
|
|
227
346
|
const contentWithoutFrontmatter = skillContent.replace(/^---\n[\s\S]+?\n---\n/, '');
|
|
228
|
-
|
|
347
|
+
// Inject system prompt if needed
|
|
348
|
+
const modifiedContent = this.injectSystemPrompt(contentWithoutFrontmatter, language);
|
|
349
|
+
pluginSection += `### ${skill.name}\n\n${modifiedContent}\n\n`;
|
|
229
350
|
}
|
|
230
351
|
}
|
|
231
352
|
|
|
@@ -233,7 +354,9 @@ Copilot is best for simple projects or when already using VS Code + Copilot.
|
|
|
233
354
|
pluginSection += `## Agents\n\n`;
|
|
234
355
|
for (const agent of plugin.agents) {
|
|
235
356
|
const agentContent = await fs.readFile(path.join(agent.path, 'AGENT.md'), 'utf-8');
|
|
236
|
-
|
|
357
|
+
// Inject system prompt if needed
|
|
358
|
+
const modifiedContent = this.injectSystemPrompt(agentContent, language);
|
|
359
|
+
pluginSection += `### ${agent.name}\n\n${modifiedContent}\n\n`;
|
|
237
360
|
}
|
|
238
361
|
}
|
|
239
362
|
|
|
@@ -242,7 +365,9 @@ Copilot is best for simple projects or when already using VS Code + Copilot.
|
|
|
242
365
|
for (const command of plugin.commands) {
|
|
243
366
|
const commandContent = await fs.readFile(command.path, 'utf-8');
|
|
244
367
|
const contentWithoutFrontmatter = commandContent.replace(/^---\n[\s\S]+?\n---\n/, '');
|
|
245
|
-
|
|
368
|
+
// Inject system prompt if needed
|
|
369
|
+
const modifiedContent = this.injectSystemPrompt(contentWithoutFrontmatter, language);
|
|
370
|
+
pluginSection += `### /${command.name}\n\n${modifiedContent}\n\n`;
|
|
246
371
|
}
|
|
247
372
|
}
|
|
248
373
|
|
|
@@ -13,6 +13,8 @@ import fs from 'fs-extra';
|
|
|
13
13
|
import { AdapterBase } from '../adapter-base.js';
|
|
14
14
|
import { AdapterOptions, AdapterFile } from '../adapter-interface.js';
|
|
15
15
|
import type { Plugin } from '../../core/types/plugin.js';
|
|
16
|
+
import { LanguageManager, getSystemPromptForLanguage } from '../../core/i18n/language-manager.js';
|
|
17
|
+
import type { SupportedLanguage } from '../../core/i18n/types.js';
|
|
16
18
|
|
|
17
19
|
export class CursorAdapter extends AdapterBase {
|
|
18
20
|
name = 'cursor';
|
|
@@ -232,6 +234,49 @@ Pro tip: Say "act as [role]" to follow AGENTS.md patterns:
|
|
|
232
234
|
return true;
|
|
233
235
|
}
|
|
234
236
|
|
|
237
|
+
/**
|
|
238
|
+
* Read language configuration from project config
|
|
239
|
+
*
|
|
240
|
+
* @returns Language setting from config, defaults to 'en'
|
|
241
|
+
*/
|
|
242
|
+
private async getLanguageConfig(): Promise<SupportedLanguage> {
|
|
243
|
+
const projectPath = process.cwd();
|
|
244
|
+
const configPath = path.join(projectPath, '.specweave', 'config.json');
|
|
245
|
+
|
|
246
|
+
if (!(await fs.pathExists(configPath))) {
|
|
247
|
+
return 'en'; // Default to English if no config
|
|
248
|
+
}
|
|
249
|
+
|
|
250
|
+
try {
|
|
251
|
+
const config = await fs.readJson(configPath);
|
|
252
|
+
return (config.language as SupportedLanguage) || 'en';
|
|
253
|
+
} catch (error) {
|
|
254
|
+
console.warn('⚠️ Could not read language from config, defaulting to English');
|
|
255
|
+
return 'en';
|
|
256
|
+
}
|
|
257
|
+
}
|
|
258
|
+
|
|
259
|
+
/**
|
|
260
|
+
* Inject system prompt for non-English languages
|
|
261
|
+
*
|
|
262
|
+
* Prepends language instruction to markdown content if language !== 'en'
|
|
263
|
+
*
|
|
264
|
+
* @param content Original markdown content
|
|
265
|
+
* @param language Target language
|
|
266
|
+
* @returns Modified content with system prompt (or unchanged if English)
|
|
267
|
+
*/
|
|
268
|
+
private injectSystemPrompt(content: string, language: SupportedLanguage): string {
|
|
269
|
+
if (language === 'en') {
|
|
270
|
+
return content; // No changes for English - preserve default behavior
|
|
271
|
+
}
|
|
272
|
+
|
|
273
|
+
// Get system prompt for target language
|
|
274
|
+
const systemPrompt = getSystemPromptForLanguage(language);
|
|
275
|
+
|
|
276
|
+
// For AGENTS.md compilation, inject at the beginning of the content
|
|
277
|
+
return `${systemPrompt}\n\n${content}`;
|
|
278
|
+
}
|
|
279
|
+
|
|
235
280
|
/**
|
|
236
281
|
* Compile and install a plugin for Cursor
|
|
237
282
|
*
|
|
@@ -240,6 +285,8 @@ Pro tip: Say "act as [role]" to follow AGENTS.md patterns:
|
|
|
240
285
|
* - Append agents to AGENTS.md
|
|
241
286
|
* - Append commands to team commands JSON
|
|
242
287
|
*
|
|
288
|
+
* NEW: Injects system prompts for non-English languages
|
|
289
|
+
*
|
|
243
290
|
* @param plugin Plugin to install
|
|
244
291
|
*/
|
|
245
292
|
async compilePlugin(plugin: Plugin): Promise<void> {
|
|
@@ -248,6 +295,12 @@ Pro tip: Say "act as [role]" to follow AGENTS.md patterns:
|
|
|
248
295
|
|
|
249
296
|
console.log(`\n📦 Compiling plugin for Cursor: ${plugin.manifest.name}`);
|
|
250
297
|
|
|
298
|
+
// Get language configuration for system prompt injection
|
|
299
|
+
const language = await this.getLanguageConfig();
|
|
300
|
+
if (language !== 'en') {
|
|
301
|
+
console.log(` 🌐 Language: ${language} (system prompts will be injected)`);
|
|
302
|
+
}
|
|
303
|
+
|
|
251
304
|
// Ensure AGENTS.md exists
|
|
252
305
|
if (!(await fs.pathExists(agentsMdPath))) {
|
|
253
306
|
throw new Error('AGENTS.md not found. Run specweave init first.');
|
|
@@ -275,8 +328,10 @@ Pro tip: Say "act as [role]" to follow AGENTS.md patterns:
|
|
|
275
328
|
const skillContent = await fs.readFile(path.join(skill.path, 'SKILL.md'), 'utf-8');
|
|
276
329
|
// Remove frontmatter for AGENTS.md
|
|
277
330
|
const contentWithoutFrontmatter = skillContent.replace(/^---\n[\s\S]+?\n---\n/, '');
|
|
331
|
+
// Inject system prompt if needed
|
|
332
|
+
const modifiedContent = this.injectSystemPrompt(contentWithoutFrontmatter, language);
|
|
278
333
|
pluginSection += `### ${skill.name}\n\n`;
|
|
279
|
-
pluginSection += `${
|
|
334
|
+
pluginSection += `${modifiedContent}\n\n`;
|
|
280
335
|
}
|
|
281
336
|
}
|
|
282
337
|
|
|
@@ -285,8 +340,10 @@ Pro tip: Say "act as [role]" to follow AGENTS.md patterns:
|
|
|
285
340
|
pluginSection += `## Agents\n\n`;
|
|
286
341
|
for (const agent of plugin.agents) {
|
|
287
342
|
const agentContent = await fs.readFile(path.join(agent.path, 'AGENT.md'), 'utf-8');
|
|
343
|
+
// Inject system prompt if needed
|
|
344
|
+
const modifiedContent = this.injectSystemPrompt(agentContent, language);
|
|
288
345
|
pluginSection += `### ${agent.name}\n\n`;
|
|
289
|
-
pluginSection += `${
|
|
346
|
+
pluginSection += `${modifiedContent}\n\n`;
|
|
290
347
|
}
|
|
291
348
|
}
|
|
292
349
|
|
|
@@ -297,8 +354,10 @@ Pro tip: Say "act as [role]" to follow AGENTS.md patterns:
|
|
|
297
354
|
const commandContent = await fs.readFile(command.path, 'utf-8');
|
|
298
355
|
// Remove frontmatter
|
|
299
356
|
const contentWithoutFrontmatter = commandContent.replace(/^---\n[\s\S]+?\n---\n/, '');
|
|
357
|
+
// Inject system prompt if needed
|
|
358
|
+
const modifiedContent = this.injectSystemPrompt(contentWithoutFrontmatter, language);
|
|
300
359
|
pluginSection += `### /${command.name}\n\n`;
|
|
301
|
-
pluginSection += `${
|
|
360
|
+
pluginSection += `${modifiedContent}\n\n`;
|
|
302
361
|
}
|
|
303
362
|
}
|
|
304
363
|
|
|
@@ -13,6 +13,8 @@ import fs from 'fs-extra';
|
|
|
13
13
|
import { AdapterBase } from '../adapter-base.js';
|
|
14
14
|
import { AdapterOptions, AdapterFile } from '../adapter-interface.js';
|
|
15
15
|
import type { Plugin } from '../../core/types/plugin.js';
|
|
16
|
+
import { LanguageManager, getSystemPromptForLanguage } from '../../core/i18n/language-manager.js';
|
|
17
|
+
import type { SupportedLanguage } from '../../core/i18n/types.js';
|
|
16
18
|
|
|
17
19
|
export class GenericAdapter extends AdapterBase {
|
|
18
20
|
name = 'generic';
|
|
@@ -173,11 +175,56 @@ Remember: AGENTS.md is the universal standard - it works everywhere!
|
|
|
173
175
|
return true;
|
|
174
176
|
}
|
|
175
177
|
|
|
178
|
+
/**
|
|
179
|
+
* Read language configuration from project config
|
|
180
|
+
*
|
|
181
|
+
* @returns Language setting from config, defaults to 'en'
|
|
182
|
+
*/
|
|
183
|
+
private async getLanguageConfig(): Promise<SupportedLanguage> {
|
|
184
|
+
const projectPath = process.cwd();
|
|
185
|
+
const configPath = path.join(projectPath, '.specweave', 'config.json');
|
|
186
|
+
|
|
187
|
+
if (!(await fs.pathExists(configPath))) {
|
|
188
|
+
return 'en'; // Default to English if no config
|
|
189
|
+
}
|
|
190
|
+
|
|
191
|
+
try {
|
|
192
|
+
const config = await fs.readJson(configPath);
|
|
193
|
+
return (config.language as SupportedLanguage) || 'en';
|
|
194
|
+
} catch (error) {
|
|
195
|
+
console.warn('⚠️ Could not read language from config, defaulting to English');
|
|
196
|
+
return 'en';
|
|
197
|
+
}
|
|
198
|
+
}
|
|
199
|
+
|
|
200
|
+
/**
|
|
201
|
+
* Inject system prompt for non-English languages
|
|
202
|
+
*
|
|
203
|
+
* Prepends language instruction to markdown content if language !== 'en'
|
|
204
|
+
*
|
|
205
|
+
* @param content Original markdown content
|
|
206
|
+
* @param language Target language
|
|
207
|
+
* @returns Modified content with system prompt (or unchanged if English)
|
|
208
|
+
*/
|
|
209
|
+
private injectSystemPrompt(content: string, language: SupportedLanguage): string {
|
|
210
|
+
if (language === 'en') {
|
|
211
|
+
return content; // No changes for English - preserve default behavior
|
|
212
|
+
}
|
|
213
|
+
|
|
214
|
+
// Get system prompt for target language
|
|
215
|
+
const systemPrompt = getSystemPromptForLanguage(language);
|
|
216
|
+
|
|
217
|
+
// For AGENTS.md compilation, inject at the beginning of the content
|
|
218
|
+
return `${systemPrompt}\n\n${content}`;
|
|
219
|
+
}
|
|
220
|
+
|
|
176
221
|
/**
|
|
177
222
|
* Compile and install a plugin for Generic adapter
|
|
178
223
|
*
|
|
179
224
|
* Appends plugin content to AGENTS.md for manual copy-paste workflows
|
|
180
225
|
*
|
|
226
|
+
* NEW: Injects system prompts for non-English languages
|
|
227
|
+
*
|
|
181
228
|
* @param plugin Plugin to install
|
|
182
229
|
*/
|
|
183
230
|
async compilePlugin(plugin: Plugin): Promise<void> {
|
|
@@ -186,6 +233,12 @@ Remember: AGENTS.md is the universal standard - it works everywhere!
|
|
|
186
233
|
|
|
187
234
|
console.log(`\n📦 Adding plugin to AGENTS.md: ${plugin.manifest.name}`);
|
|
188
235
|
|
|
236
|
+
// Get language configuration for system prompt injection
|
|
237
|
+
const language = await this.getLanguageConfig();
|
|
238
|
+
if (language !== 'en') {
|
|
239
|
+
console.log(` 🌐 Language: ${language} (system prompts will be injected)`);
|
|
240
|
+
}
|
|
241
|
+
|
|
189
242
|
if (!(await fs.pathExists(agentsMdPath))) {
|
|
190
243
|
throw new Error('AGENTS.md not found. Run specweave init first.');
|
|
191
244
|
}
|
|
@@ -207,7 +260,9 @@ Remember: AGENTS.md is the universal standard - it works everywhere!
|
|
|
207
260
|
for (const skill of plugin.skills) {
|
|
208
261
|
const skillContent = await fs.readFile(path.join(skill.path, 'SKILL.md'), 'utf-8');
|
|
209
262
|
const contentWithoutFrontmatter = skillContent.replace(/^---\n[\s\S]+?\n---\n/, '');
|
|
210
|
-
|
|
263
|
+
// Inject system prompt if needed
|
|
264
|
+
const modifiedContent = this.injectSystemPrompt(contentWithoutFrontmatter, language);
|
|
265
|
+
pluginSection += `### ${skill.name}\n\n${modifiedContent}\n\n`;
|
|
211
266
|
}
|
|
212
267
|
}
|
|
213
268
|
|
|
@@ -215,7 +270,9 @@ Remember: AGENTS.md is the universal standard - it works everywhere!
|
|
|
215
270
|
pluginSection += `## Agents\n\n`;
|
|
216
271
|
for (const agent of plugin.agents) {
|
|
217
272
|
const agentContent = await fs.readFile(path.join(agent.path, 'AGENT.md'), 'utf-8');
|
|
218
|
-
|
|
273
|
+
// Inject system prompt if needed
|
|
274
|
+
const modifiedContent = this.injectSystemPrompt(agentContent, language);
|
|
275
|
+
pluginSection += `### ${agent.name}\n\n${modifiedContent}\n\n`;
|
|
219
276
|
}
|
|
220
277
|
}
|
|
221
278
|
|
|
@@ -224,7 +281,9 @@ Remember: AGENTS.md is the universal standard - it works everywhere!
|
|
|
224
281
|
for (const command of plugin.commands) {
|
|
225
282
|
const commandContent = await fs.readFile(command.path, 'utf-8');
|
|
226
283
|
const contentWithoutFrontmatter = commandContent.replace(/^---\n[\s\S]+?\n---\n/, '');
|
|
227
|
-
|
|
284
|
+
// Inject system prompt if needed
|
|
285
|
+
const modifiedContent = this.injectSystemPrompt(contentWithoutFrontmatter, language);
|
|
286
|
+
pluginSection += `### ${command.name.replace('specweave.', '')}\n\n${modifiedContent}\n\n`;
|
|
228
287
|
}
|
|
229
288
|
}
|
|
230
289
|
|
|
@@ -45,12 +45,166 @@ This is a **SpecWeave project** where specifications and documentation are the s
|
|
|
45
45
|
├── agents/ # Specialized roles (PM, Architect, DevOps, etc.)
|
|
46
46
|
├── skills/ # Capabilities (increment-planner, context-loader, etc.)
|
|
47
47
|
└── commands/ # Slash commands (/inc, /do, /done)
|
|
48
|
+
|
|
49
|
+
plugins/ # Optional plugins (extended capabilities)
|
|
50
|
+
└── specweave-{name}/
|
|
51
|
+
├── .claude-plugin/ # Plugin manifest (Claude native format)
|
|
52
|
+
│ └── plugin.json
|
|
53
|
+
├── skills/ # Plugin-specific skills
|
|
54
|
+
├── agents/ # Plugin-specific agents
|
|
55
|
+
└── commands/ # Plugin-specific commands
|
|
48
56
|
```
|
|
49
57
|
|
|
50
58
|
**CRITICAL**: Always read `context-manifest.yaml` first! Only load files listed there.
|
|
51
59
|
|
|
52
60
|
---
|
|
53
61
|
|
|
62
|
+
## 🔌 Plugin Architecture (IMPORTANT FOR NON-CLAUDE TOOLS)
|
|
63
|
+
|
|
64
|
+
### For Claude Code Users
|
|
65
|
+
|
|
66
|
+
Plugins work automatically via marketplace:
|
|
67
|
+
```bash
|
|
68
|
+
/plugin install github@specweave
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
Skills, agents, and commands are immediately available. **Skip this section if using Claude Code.**
|
|
72
|
+
|
|
73
|
+
### For Other Tools (Cursor, Copilot, ChatGPT, etc.)
|
|
74
|
+
|
|
75
|
+
**⚠️ CRITICAL**: Claude Code has native plugin support. **Other tools DO NOT.**
|
|
76
|
+
|
|
77
|
+
You MUST manually discover and load plugins at the start of each session:
|
|
78
|
+
|
|
79
|
+
#### Step 1: Check for Plugins
|
|
80
|
+
|
|
81
|
+
```bash
|
|
82
|
+
# Check if project uses plugins
|
|
83
|
+
ls plugins/
|
|
84
|
+
|
|
85
|
+
# Example output:
|
|
86
|
+
# specweave-github/
|
|
87
|
+
# specweave-jira/
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
If `plugins/` folder exists, proceed to Step 2.
|
|
91
|
+
|
|
92
|
+
#### Step 2: Load Plugin Components
|
|
93
|
+
|
|
94
|
+
**For EACH plugin, load its components BEFORE starting work:**
|
|
95
|
+
|
|
96
|
+
```bash
|
|
97
|
+
# Example: Loading GitHub plugin
|
|
98
|
+
|
|
99
|
+
# 1. Check plugin structure
|
|
100
|
+
ls plugins/specweave-github/
|
|
101
|
+
|
|
102
|
+
# 2. Load ALL plugin skills (like core skills)
|
|
103
|
+
cat plugins/specweave-github/skills/github-sync/SKILL.md
|
|
104
|
+
cat plugins/specweave-github/skills/github-issue-tracker/SKILL.md
|
|
105
|
+
|
|
106
|
+
# 3. Load plugin agents (if any)
|
|
107
|
+
cat plugins/specweave-github/agents/github-manager/AGENT.md
|
|
108
|
+
|
|
109
|
+
# 4. Note available commands (load on-demand when user requests)
|
|
110
|
+
ls plugins/specweave-github/commands/
|
|
111
|
+
# github-create-issue.md, github-sync.md, github-status.md
|
|
112
|
+
```
|
|
113
|
+
|
|
114
|
+
#### Step 3: Make Plugin Capabilities Available
|
|
115
|
+
|
|
116
|
+
Treat plugin components like core components:
|
|
117
|
+
|
|
118
|
+
**Plugin Skills**:
|
|
119
|
+
- Same activation pattern as core skills
|
|
120
|
+
- Check "Activates for" keywords in SKILL.md
|
|
121
|
+
- Follow workflow when relevant
|
|
122
|
+
|
|
123
|
+
**Plugin Agents**:
|
|
124
|
+
- Adopt role when needed (like core agents)
|
|
125
|
+
- Example: "Adopting github-manager agent role..."
|
|
126
|
+
|
|
127
|
+
**Plugin Commands**:
|
|
128
|
+
- Load command file when user requests action
|
|
129
|
+
- Example: User says "sync to GitHub" → Load `plugins/specweave-github/commands/github-sync.md`
|
|
130
|
+
|
|
131
|
+
#### Step 4: Document Loaded Plugins
|
|
132
|
+
|
|
133
|
+
At session start, note which plugins are active:
|
|
134
|
+
|
|
135
|
+
```markdown
|
|
136
|
+
# Session Context
|
|
137
|
+
- Core skills: ✅ Loaded from .claude/skills/
|
|
138
|
+
- Core agents: ✅ Loaded from .claude/agents/
|
|
139
|
+
- Plugins detected:
|
|
140
|
+
- specweave-github: ✅ Loaded (2 skills, 1 agent, 4 commands)
|
|
141
|
+
- specweave-jira: ✅ Loaded (1 skill, 1 agent, 2 commands)
|
|
142
|
+
```
|
|
143
|
+
|
|
144
|
+
### Why Manual Loading Is Required
|
|
145
|
+
|
|
146
|
+
**Claude Code**: Has native plugin marketplace, auto-loads plugins, manages dependencies.
|
|
147
|
+
|
|
148
|
+
**Other Tools**: No plugin system, so you must:
|
|
149
|
+
- ✅ Discover plugins in `plugins/` folder
|
|
150
|
+
- ✅ Read plugin skills/agents/commands manually
|
|
151
|
+
- ✅ Make them available in your context
|
|
152
|
+
- ✅ Use them like core components
|
|
153
|
+
|
|
154
|
+
**This is NOT optional** - plugins extend SpecWeave capabilities. Without loading them, you're missing critical functionality (GitHub sync, Jira integration, tech-specific skills, etc.).
|
|
155
|
+
|
|
156
|
+
### Example: Session Start Routine (Non-Claude Tools)
|
|
157
|
+
|
|
158
|
+
```bash
|
|
159
|
+
# 1. Load core components
|
|
160
|
+
cat .claude/skills/SKILLS-INDEX.md # Core skills index
|
|
161
|
+
cat AGENTS.md # This file
|
|
162
|
+
|
|
163
|
+
# 2. Check for plugins
|
|
164
|
+
if [ -d "plugins" ]; then
|
|
165
|
+
# 3. For each plugin, load components
|
|
166
|
+
for plugin in plugins/*/; do
|
|
167
|
+
echo "Loading plugin: $(basename $plugin)"
|
|
168
|
+
|
|
169
|
+
# Load all skills
|
|
170
|
+
find "$plugin/skills" -name "SKILL.md" -exec cat {} \;
|
|
171
|
+
|
|
172
|
+
# Load all agents
|
|
173
|
+
find "$plugin/agents" -name "AGENT.md" -exec cat {} \;
|
|
174
|
+
|
|
175
|
+
# Note available commands
|
|
176
|
+
ls "$plugin/commands/"
|
|
177
|
+
done
|
|
178
|
+
fi
|
|
179
|
+
|
|
180
|
+
# 4. Now ready to work with full SpecWeave capabilities
|
|
181
|
+
```
|
|
182
|
+
|
|
183
|
+
### Plugin Naming Convention
|
|
184
|
+
|
|
185
|
+
Plugin commands use namespace pattern:
|
|
186
|
+
|
|
187
|
+
**Core commands** (no namespace):
|
|
188
|
+
- `/specweave:inc` → Core framework
|
|
189
|
+
- `/specweave:do` → Core framework
|
|
190
|
+
- `/specweave:progress` → Core framework
|
|
191
|
+
|
|
192
|
+
**Plugin commands** (with namespace):
|
|
193
|
+
- `/specweave:github:sync` → GitHub plugin
|
|
194
|
+
- `/specweave:github:create-issue` → GitHub plugin
|
|
195
|
+
- `/specweave:jira:sync` → Jira plugin
|
|
196
|
+
- `/specweave:jira:create-ticket` → Jira plugin
|
|
197
|
+
|
|
198
|
+
**In non-Claude tools**: Read the command file when user requests the action:
|
|
199
|
+
```bash
|
|
200
|
+
# User: "Sync this increment to GitHub"
|
|
201
|
+
# You: Load and execute command
|
|
202
|
+
cat plugins/specweave-github/commands/github-sync.md
|
|
203
|
+
# Then follow the instructions in that file
|
|
204
|
+
```
|
|
205
|
+
|
|
206
|
+
---
|
|
207
|
+
|
|
54
208
|
## Available Agents (Specialized Roles)
|
|
55
209
|
|
|
56
210
|
SpecWeave uses role-based development. When working on tasks, adopt the appropriate role:
|
|
@@ -319,6 +473,7 @@ max_context_tokens: 10000
|
|
|
319
473
|
|
|
320
474
|
If using Claude Code, these slash commands are available:
|
|
321
475
|
|
|
476
|
+
**Core Commands** (always available):
|
|
322
477
|
| Command | Purpose | Example |
|
|
323
478
|
|---------|---------|---------|
|
|
324
479
|
| `/inc` | Create new increment | `/inc "user authentication"` |
|
|
@@ -326,7 +481,21 @@ If using Claude Code, these slash commands are available:
|
|
|
326
481
|
| `/progress` | Check status | `/progress` |
|
|
327
482
|
| `/done` | Close increment | `/done 0001` |
|
|
328
483
|
| `/validate` | Validate quality | `/validate 0001 --quality` |
|
|
329
|
-
|
|
484
|
+
|
|
485
|
+
**Plugin Commands** (when plugin installed):
|
|
486
|
+
| Command | Purpose | Plugin |
|
|
487
|
+
|---------|---------|--------|
|
|
488
|
+
| `/specweave:github:sync` | Sync to GitHub | specweave-github |
|
|
489
|
+
| `/specweave:github:create-issue` | Create GitHub issue | specweave-github |
|
|
490
|
+
| `/specweave:jira:sync` | Sync to Jira | specweave-jira |
|
|
491
|
+
| `/specweave:jira:create-ticket` | Create Jira ticket | specweave-jira |
|
|
492
|
+
|
|
493
|
+
**For non-Claude tools**: Read the command file when user requests the action:
|
|
494
|
+
```bash
|
|
495
|
+
# User: "Sync to GitHub"
|
|
496
|
+
cat plugins/specweave-github/commands/github-sync.md
|
|
497
|
+
# Then follow instructions in that file
|
|
498
|
+
```
|
|
330
499
|
|
|
331
500
|
---
|
|
332
501
|
|