specweave 0.10.1 → 0.12.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/marketplace.json +3 -3
- package/CLAUDE.md +184 -288
- package/README.md +48 -21
- package/dist/cli/commands/init.d.ts.map +1 -1
- package/dist/cli/commands/init.js +75 -113
- package/dist/cli/commands/init.js.map +1 -1
- package/dist/cli/helpers/issue-tracker/index.d.ts.map +1 -1
- package/dist/cli/helpers/issue-tracker/index.js +39 -0
- package/dist/cli/helpers/issue-tracker/index.js.map +1 -1
- package/dist/cli/helpers/issue-tracker/jira.d.ts.map +1 -1
- package/dist/cli/helpers/issue-tracker/jira.js +2 -9
- package/dist/cli/helpers/issue-tracker/jira.js.map +1 -1
- package/dist/hooks/lib/git-diff-analyzer.d.ts +89 -0
- package/dist/hooks/lib/git-diff-analyzer.d.ts.map +1 -0
- package/dist/hooks/lib/git-diff-analyzer.js +226 -0
- package/dist/hooks/lib/git-diff-analyzer.js.map +1 -0
- package/dist/hooks/lib/prepare-reflection-context.d.ts +42 -0
- package/dist/hooks/lib/prepare-reflection-context.d.ts.map +1 -0
- package/dist/hooks/lib/prepare-reflection-context.js +123 -0
- package/dist/hooks/lib/prepare-reflection-context.js.map +1 -0
- package/dist/hooks/lib/reflection-config-loader.d.ts +45 -0
- package/dist/hooks/lib/reflection-config-loader.d.ts.map +1 -0
- package/dist/hooks/lib/reflection-config-loader.js +132 -0
- package/dist/hooks/lib/reflection-config-loader.js.map +1 -0
- package/dist/hooks/lib/reflection-parser.d.ts +33 -0
- package/dist/hooks/lib/reflection-parser.d.ts.map +1 -0
- package/dist/hooks/lib/reflection-parser.js +419 -0
- package/dist/hooks/lib/reflection-parser.js.map +1 -0
- package/dist/hooks/lib/reflection-prompt-builder.d.ts +56 -0
- package/dist/hooks/lib/reflection-prompt-builder.d.ts.map +1 -0
- package/dist/hooks/lib/reflection-prompt-builder.js +239 -0
- package/dist/hooks/lib/reflection-prompt-builder.js.map +1 -0
- package/dist/hooks/lib/reflection-storage.d.ts +64 -0
- package/dist/hooks/lib/reflection-storage.d.ts.map +1 -0
- package/dist/hooks/lib/reflection-storage.js +305 -0
- package/dist/hooks/lib/reflection-storage.js.map +1 -0
- package/dist/hooks/lib/run-self-reflection.d.ts +43 -0
- package/dist/hooks/lib/run-self-reflection.d.ts.map +1 -0
- package/dist/hooks/lib/run-self-reflection.js +203 -0
- package/dist/hooks/lib/run-self-reflection.js.map +1 -0
- package/dist/hooks/lib/types/reflection-types.d.ts +164 -0
- package/dist/hooks/lib/types/reflection-types.d.ts.map +1 -0
- package/dist/hooks/lib/types/reflection-types.js +73 -0
- package/dist/hooks/lib/types/reflection-types.js.map +1 -0
- package/dist/plugins/specweave/lib/hooks/git-diff-analyzer.d.ts +89 -0
- package/dist/plugins/specweave/lib/hooks/git-diff-analyzer.d.ts.map +1 -0
- package/dist/plugins/specweave/lib/hooks/git-diff-analyzer.js +226 -0
- package/dist/plugins/specweave/lib/hooks/git-diff-analyzer.js.map +1 -0
- package/dist/plugins/specweave/lib/hooks/invoke-translator-skill.d.ts +60 -0
- package/dist/plugins/specweave/lib/hooks/invoke-translator-skill.d.ts.map +1 -0
- package/dist/plugins/specweave/lib/hooks/invoke-translator-skill.js +201 -0
- package/dist/plugins/specweave/lib/hooks/invoke-translator-skill.js.map +1 -0
- package/dist/plugins/specweave/lib/hooks/prepare-reflection-context.d.ts +42 -0
- package/dist/plugins/specweave/lib/hooks/prepare-reflection-context.d.ts.map +1 -0
- package/dist/plugins/specweave/lib/hooks/prepare-reflection-context.js +123 -0
- package/dist/plugins/specweave/lib/hooks/prepare-reflection-context.js.map +1 -0
- package/dist/plugins/specweave/lib/hooks/reflection-config-loader.d.ts +45 -0
- package/dist/plugins/specweave/lib/hooks/reflection-config-loader.d.ts.map +1 -0
- package/dist/plugins/specweave/lib/hooks/reflection-config-loader.js +132 -0
- package/dist/plugins/specweave/lib/hooks/reflection-config-loader.js.map +1 -0
- package/dist/plugins/specweave/lib/hooks/reflection-parser.d.ts +33 -0
- package/dist/plugins/specweave/lib/hooks/reflection-parser.d.ts.map +1 -0
- package/dist/plugins/specweave/lib/hooks/reflection-parser.js +419 -0
- package/dist/plugins/specweave/lib/hooks/reflection-parser.js.map +1 -0
- package/dist/plugins/specweave/lib/hooks/reflection-prompt-builder.d.ts +56 -0
- package/dist/plugins/specweave/lib/hooks/reflection-prompt-builder.d.ts.map +1 -0
- package/dist/plugins/specweave/lib/hooks/reflection-prompt-builder.js +239 -0
- package/dist/plugins/specweave/lib/hooks/reflection-prompt-builder.js.map +1 -0
- package/dist/plugins/specweave/lib/hooks/reflection-storage.d.ts +64 -0
- package/dist/plugins/specweave/lib/hooks/reflection-storage.d.ts.map +1 -0
- package/dist/plugins/specweave/lib/hooks/reflection-storage.js +305 -0
- package/dist/plugins/specweave/lib/hooks/reflection-storage.js.map +1 -0
- package/dist/plugins/specweave/lib/hooks/run-self-reflection.d.ts +43 -0
- package/dist/plugins/specweave/lib/hooks/run-self-reflection.d.ts.map +1 -0
- package/dist/plugins/specweave/lib/hooks/run-self-reflection.js +203 -0
- package/dist/plugins/specweave/lib/hooks/run-self-reflection.js.map +1 -0
- package/dist/plugins/specweave/lib/hooks/sync-living-docs.d.ts +27 -0
- package/dist/plugins/specweave/lib/hooks/sync-living-docs.d.ts.map +1 -0
- package/dist/plugins/specweave/lib/hooks/sync-living-docs.js +116 -0
- package/dist/plugins/specweave/lib/hooks/sync-living-docs.js.map +1 -0
- package/dist/plugins/specweave/lib/hooks/translate-file.d.ts +59 -0
- package/dist/plugins/specweave/lib/hooks/translate-file.d.ts.map +1 -0
- package/dist/plugins/specweave/lib/hooks/translate-file.js +350 -0
- package/dist/plugins/specweave/lib/hooks/translate-file.js.map +1 -0
- package/dist/plugins/specweave/lib/hooks/translate-living-docs.d.ts +13 -0
- package/dist/plugins/specweave/lib/hooks/translate-living-docs.d.ts.map +1 -0
- package/dist/plugins/specweave/lib/hooks/translate-living-docs.js +175 -0
- package/dist/plugins/specweave/lib/hooks/translate-living-docs.js.map +1 -0
- package/dist/plugins/specweave/lib/hooks/types/reflection-types.d.ts +164 -0
- package/dist/plugins/specweave/lib/hooks/types/reflection-types.d.ts.map +1 -0
- package/dist/plugins/specweave/lib/hooks/types/reflection-types.js +73 -0
- package/dist/plugins/specweave/lib/hooks/types/reflection-types.js.map +1 -0
- package/dist/plugins/specweave/lib/hooks/update-tasks-md.d.ts +29 -0
- package/dist/plugins/specweave/lib/hooks/update-tasks-md.d.ts.map +1 -0
- package/dist/plugins/specweave/lib/hooks/update-tasks-md.js +203 -0
- package/dist/plugins/specweave/lib/hooks/update-tasks-md.js.map +1 -0
- package/dist/plugins/specweave-ado/lib/ado-board-resolver.d.ts +94 -0
- package/dist/plugins/specweave-ado/lib/ado-board-resolver.d.ts.map +1 -0
- package/dist/plugins/specweave-ado/lib/ado-board-resolver.js +219 -0
- package/dist/plugins/specweave-ado/lib/ado-board-resolver.js.map +1 -0
- package/dist/plugins/specweave-ado/lib/ado-client-v2.d.ts +124 -0
- package/dist/plugins/specweave-ado/lib/ado-client-v2.d.ts.map +1 -0
- package/dist/plugins/specweave-ado/lib/ado-client-v2.js +382 -0
- package/dist/plugins/specweave-ado/lib/ado-client-v2.js.map +1 -0
- package/dist/plugins/specweave-ado/lib/ado-client.d.ts +112 -0
- package/dist/plugins/specweave-ado/lib/ado-client.d.ts.map +1 -0
- package/dist/plugins/specweave-ado/lib/ado-client.js +257 -0
- package/dist/plugins/specweave-ado/lib/ado-client.js.map +1 -0
- package/dist/plugins/specweave-ado/lib/ado-hierarchical-sync.d.ts +40 -0
- package/dist/plugins/specweave-ado/lib/ado-hierarchical-sync.d.ts.map +1 -0
- package/dist/plugins/specweave-ado/lib/ado-hierarchical-sync.js +370 -0
- package/dist/plugins/specweave-ado/lib/ado-hierarchical-sync.js.map +1 -0
- package/dist/plugins/specweave-ado/lib/project-selector.d.ts +42 -0
- package/dist/plugins/specweave-ado/lib/project-selector.d.ts.map +1 -0
- package/dist/plugins/specweave-ado/lib/project-selector.js +211 -0
- package/dist/plugins/specweave-ado/lib/project-selector.js.map +1 -0
- package/dist/plugins/specweave-github/lib/github-board-resolver.d.ts +54 -0
- package/dist/plugins/specweave-github/lib/github-board-resolver.d.ts.map +1 -0
- package/dist/plugins/specweave-github/lib/github-board-resolver.js +122 -0
- package/dist/plugins/specweave-github/lib/github-board-resolver.js.map +1 -0
- package/dist/plugins/specweave-github/lib/github-client-v2.d.ts +104 -0
- package/dist/plugins/specweave-github/lib/github-client-v2.d.ts.map +1 -0
- package/dist/plugins/specweave-github/lib/github-client-v2.js +408 -0
- package/dist/plugins/specweave-github/lib/github-client-v2.js.map +1 -0
- package/dist/plugins/specweave-github/lib/github-client.d.ts +10 -0
- package/dist/plugins/specweave-github/lib/github-client.d.ts.map +1 -1
- package/dist/plugins/specweave-github/lib/github-client.js +24 -0
- package/dist/plugins/specweave-github/lib/github-client.js.map +1 -1
- package/dist/plugins/specweave-github/lib/github-hierarchical-sync.d.ts +29 -0
- package/dist/plugins/specweave-github/lib/github-hierarchical-sync.d.ts.map +1 -0
- package/dist/plugins/specweave-github/lib/github-hierarchical-sync.js +268 -0
- package/dist/plugins/specweave-github/lib/github-hierarchical-sync.js.map +1 -0
- package/dist/plugins/specweave-github/lib/index.d.ts.map +1 -1
- package/dist/plugins/specweave-github/lib/index.js.map +1 -1
- package/dist/plugins/specweave-github/lib/repo-selector.d.ts +49 -0
- package/dist/plugins/specweave-github/lib/repo-selector.d.ts.map +1 -0
- package/dist/plugins/specweave-github/lib/repo-selector.js +216 -0
- package/dist/plugins/specweave-github/lib/repo-selector.js.map +1 -0
- package/dist/plugins/specweave-github/lib/subtask-sync.d.ts.map +1 -1
- package/dist/plugins/specweave-github/lib/subtask-sync.js.map +1 -1
- package/dist/plugins/specweave-github/lib/task-parser.d.ts.map +1 -1
- package/dist/plugins/specweave-github/lib/task-parser.js.map +1 -1
- package/dist/plugins/specweave-github/lib/task-sync.d.ts.map +1 -1
- package/dist/plugins/specweave-github/lib/task-sync.js.map +1 -1
- package/dist/plugins/specweave-github/lib/types.d.ts.map +1 -1
- package/dist/plugins/specweave-github/lib/types.js.map +1 -1
- package/dist/plugins/specweave-jira/lib/jira-board-resolver.d.ts +50 -0
- package/dist/plugins/specweave-jira/lib/jira-board-resolver.d.ts.map +1 -0
- package/dist/plugins/specweave-jira/lib/jira-board-resolver.js +84 -0
- package/dist/plugins/specweave-jira/lib/jira-board-resolver.js.map +1 -0
- package/dist/plugins/specweave-jira/lib/jira-hierarchical-sync.d.ts +33 -0
- package/dist/plugins/specweave-jira/lib/jira-hierarchical-sync.d.ts.map +1 -0
- package/dist/plugins/specweave-jira/lib/jira-hierarchical-sync.js +206 -0
- package/dist/plugins/specweave-jira/lib/jira-hierarchical-sync.js.map +1 -0
- package/dist/plugins/specweave-jira/lib/project-selector.d.ts +42 -0
- package/dist/plugins/specweave-jira/lib/project-selector.d.ts.map +1 -0
- package/dist/plugins/specweave-jira/lib/project-selector.js +216 -0
- package/dist/plugins/specweave-jira/lib/project-selector.js.map +1 -0
- package/dist/plugins/specweave-jira/lib/reorganization-detector.d.ts +67 -0
- package/dist/plugins/specweave-jira/lib/reorganization-detector.d.ts.map +1 -0
- package/dist/plugins/specweave-jira/lib/reorganization-detector.js +252 -0
- package/dist/plugins/specweave-jira/lib/reorganization-detector.js.map +1 -0
- package/dist/plugins/specweave-jira/lib/setup-wizard.d.ts +29 -0
- package/dist/plugins/specweave-jira/lib/setup-wizard.d.ts.map +1 -0
- package/dist/plugins/specweave-jira/lib/setup-wizard.js +219 -0
- package/dist/plugins/specweave-jira/lib/setup-wizard.js.map +1 -0
- package/dist/src/adapters/adapter-base.d.ts +71 -0
- package/dist/src/adapters/adapter-base.d.ts.map +1 -0
- package/dist/src/adapters/adapter-base.js +139 -0
- package/dist/src/adapters/adapter-base.js.map +1 -0
- package/dist/src/adapters/adapter-interface.d.ts +149 -0
- package/dist/src/adapters/adapter-interface.d.ts.map +1 -0
- package/dist/src/adapters/adapter-interface.js +8 -0
- package/dist/src/adapters/adapter-interface.js.map +1 -0
- package/dist/src/adapters/adapter-loader.d.ts +91 -0
- package/dist/src/adapters/adapter-loader.d.ts.map +1 -0
- package/dist/src/adapters/adapter-loader.js +238 -0
- package/dist/src/adapters/adapter-loader.js.map +1 -0
- package/dist/src/adapters/agents-md-generator.d.ts +48 -0
- package/dist/src/adapters/agents-md-generator.d.ts.map +1 -0
- package/dist/src/adapters/agents-md-generator.js +193 -0
- package/dist/src/adapters/agents-md-generator.js.map +1 -0
- package/dist/src/adapters/claude/adapter.d.ts +128 -0
- package/dist/src/adapters/claude/adapter.d.ts.map +1 -0
- package/dist/src/adapters/claude/adapter.js +415 -0
- package/dist/src/adapters/claude/adapter.js.map +1 -0
- package/dist/src/adapters/claude-md-generator.d.ts +78 -0
- package/dist/src/adapters/claude-md-generator.d.ts.map +1 -0
- package/dist/src/adapters/claude-md-generator.js +307 -0
- package/dist/src/adapters/claude-md-generator.js.map +1 -0
- package/dist/src/adapters/codex/adapter.d.ts +50 -0
- package/dist/src/adapters/codex/adapter.d.ts.map +1 -0
- package/dist/src/adapters/codex/adapter.js +316 -0
- package/dist/src/adapters/codex/adapter.js.map +1 -0
- package/dist/src/adapters/cursor/adapter.d.ts +98 -0
- package/dist/src/adapters/cursor/adapter.d.ts.map +1 -0
- package/dist/src/adapters/cursor/adapter.js +406 -0
- package/dist/src/adapters/cursor/adapter.js.map +1 -0
- package/dist/src/adapters/doc-generator.d.ts +69 -0
- package/dist/src/adapters/doc-generator.d.ts.map +1 -0
- package/dist/src/adapters/doc-generator.js +247 -0
- package/dist/src/adapters/doc-generator.js.map +1 -0
- package/dist/src/adapters/gemini/adapter.d.ts +50 -0
- package/dist/src/adapters/gemini/adapter.d.ts.map +1 -0
- package/dist/src/adapters/gemini/adapter.js +281 -0
- package/dist/src/adapters/gemini/adapter.js.map +1 -0
- package/dist/src/adapters/generic/adapter.d.ts +86 -0
- package/dist/src/adapters/generic/adapter.d.ts.map +1 -0
- package/dist/src/adapters/generic/adapter.js +338 -0
- package/dist/src/adapters/generic/adapter.js.map +1 -0
- package/dist/src/cli/commands/abandon.d.ts +13 -0
- package/dist/src/cli/commands/abandon.d.ts.map +1 -0
- package/dist/src/cli/commands/abandon.js +15 -0
- package/dist/src/cli/commands/abandon.js.map +1 -0
- package/dist/src/cli/commands/import-docs.d.ts +21 -0
- package/dist/src/cli/commands/import-docs.d.ts.map +1 -0
- package/dist/src/cli/commands/import-docs.js +146 -0
- package/dist/src/cli/commands/import-docs.js.map +1 -0
- package/dist/src/cli/commands/init-multiproject.d.ts +11 -0
- package/dist/src/cli/commands/init-multiproject.d.ts.map +1 -0
- package/dist/src/cli/commands/init-multiproject.js +202 -0
- package/dist/src/cli/commands/init-multiproject.js.map +1 -0
- package/dist/src/cli/commands/init.d.ts +9 -0
- package/dist/src/cli/commands/init.d.ts.map +1 -0
- package/dist/src/cli/commands/init.js +1205 -0
- package/dist/src/cli/commands/init.js.map +1 -0
- package/dist/src/cli/commands/install.d.ts +9 -0
- package/dist/src/cli/commands/install.d.ts.map +1 -0
- package/dist/src/cli/commands/install.js +127 -0
- package/dist/src/cli/commands/install.js.map +1 -0
- package/dist/src/cli/commands/list.d.ts +8 -0
- package/dist/src/cli/commands/list.d.ts.map +1 -0
- package/dist/src/cli/commands/list.js +119 -0
- package/dist/src/cli/commands/list.js.map +1 -0
- package/dist/src/cli/commands/migrate-to-multiproject.d.ts +37 -0
- package/dist/src/cli/commands/migrate-to-multiproject.d.ts.map +1 -0
- package/dist/src/cli/commands/migrate-to-multiproject.js +189 -0
- package/dist/src/cli/commands/migrate-to-multiproject.js.map +1 -0
- package/dist/src/cli/commands/migrate-to-profiles.d.ts +25 -0
- package/dist/src/cli/commands/migrate-to-profiles.d.ts.map +1 -0
- package/dist/src/cli/commands/migrate-to-profiles.js +350 -0
- package/dist/src/cli/commands/migrate-to-profiles.js.map +1 -0
- package/dist/src/cli/commands/pause.d.ts +13 -0
- package/dist/src/cli/commands/pause.d.ts.map +1 -0
- package/dist/src/cli/commands/pause.js +15 -0
- package/dist/src/cli/commands/pause.js.map +1 -0
- package/dist/src/cli/commands/qa.d.ts +54 -0
- package/dist/src/cli/commands/qa.d.ts.map +1 -0
- package/dist/src/cli/commands/qa.js +98 -0
- package/dist/src/cli/commands/qa.js.map +1 -0
- package/dist/src/cli/commands/resume.d.ts +12 -0
- package/dist/src/cli/commands/resume.d.ts.map +1 -0
- package/dist/src/cli/commands/resume.js +14 -0
- package/dist/src/cli/commands/resume.js.map +1 -0
- package/dist/src/cli/commands/status.d.ts +12 -0
- package/dist/src/cli/commands/status.d.ts.map +1 -0
- package/dist/src/cli/commands/status.js +23 -0
- package/dist/src/cli/commands/status.js.map +1 -0
- package/dist/src/cli/commands/switch-project.d.ts +13 -0
- package/dist/src/cli/commands/switch-project.d.ts.map +1 -0
- package/dist/src/cli/commands/switch-project.js +91 -0
- package/dist/src/cli/commands/switch-project.js.map +1 -0
- package/dist/src/cli/commands/validate-jira.d.ts +35 -0
- package/dist/src/cli/commands/validate-jira.d.ts.map +1 -0
- package/dist/src/cli/commands/validate-jira.js +112 -0
- package/dist/src/cli/commands/validate-jira.js.map +1 -0
- package/dist/src/cli/commands/validate-plugins.d.ts +41 -0
- package/dist/src/cli/commands/validate-plugins.d.ts.map +1 -0
- package/dist/src/cli/commands/validate-plugins.js +171 -0
- package/dist/src/cli/commands/validate-plugins.js.map +1 -0
- package/dist/src/cli/helpers/issue-tracker/ado.d.ts +57 -0
- package/dist/src/cli/helpers/issue-tracker/ado.d.ts.map +1 -0
- package/dist/src/cli/helpers/issue-tracker/ado.js +243 -0
- package/dist/src/cli/helpers/issue-tracker/ado.js.map +1 -0
- package/dist/src/cli/helpers/issue-tracker/github.d.ts +65 -0
- package/dist/src/cli/helpers/issue-tracker/github.d.ts.map +1 -0
- package/dist/src/cli/helpers/issue-tracker/github.js +426 -0
- package/dist/src/cli/helpers/issue-tracker/github.js.map +1 -0
- package/dist/src/cli/helpers/issue-tracker/index.d.ts +22 -0
- package/dist/src/cli/helpers/issue-tracker/index.d.ts.map +1 -0
- package/dist/src/cli/helpers/issue-tracker/index.js +314 -0
- package/dist/src/cli/helpers/issue-tracker/index.js.map +1 -0
- package/dist/src/cli/helpers/issue-tracker/jira.d.ts +61 -0
- package/dist/src/cli/helpers/issue-tracker/jira.d.ts.map +1 -0
- package/dist/src/cli/helpers/issue-tracker/jira.js +404 -0
- package/dist/src/cli/helpers/issue-tracker/jira.js.map +1 -0
- package/dist/src/cli/helpers/issue-tracker/types.d.ts +107 -0
- package/dist/src/cli/helpers/issue-tracker/types.d.ts.map +1 -0
- package/dist/src/cli/helpers/issue-tracker/types.js +16 -0
- package/dist/src/cli/helpers/issue-tracker/types.js.map +1 -0
- package/dist/src/cli/helpers/issue-tracker/utils.d.ts +112 -0
- package/dist/src/cli/helpers/issue-tracker/utils.d.ts.map +1 -0
- package/dist/src/cli/helpers/issue-tracker/utils.js +247 -0
- package/dist/src/cli/helpers/issue-tracker/utils.js.map +1 -0
- package/dist/src/core/agent-model-manager.d.ts +52 -0
- package/dist/src/core/agent-model-manager.d.ts.map +1 -0
- package/dist/src/core/agent-model-manager.js +120 -0
- package/dist/src/core/agent-model-manager.js.map +1 -0
- package/dist/src/core/brownfield/analyzer.d.ts +86 -0
- package/dist/src/core/brownfield/analyzer.d.ts.map +1 -0
- package/dist/src/core/brownfield/analyzer.js +365 -0
- package/dist/src/core/brownfield/analyzer.js.map +1 -0
- package/dist/src/core/brownfield/importer.d.ts +76 -0
- package/dist/src/core/brownfield/importer.d.ts.map +1 -0
- package/dist/src/core/brownfield/importer.js +287 -0
- package/dist/src/core/brownfield/importer.js.map +1 -0
- package/dist/src/core/config-manager.d.ts +47 -0
- package/dist/src/core/config-manager.d.ts.map +1 -0
- package/dist/src/core/config-manager.js +136 -0
- package/dist/src/core/config-manager.js.map +1 -0
- package/dist/src/core/cost-tracker.d.ts +108 -0
- package/dist/src/core/cost-tracker.d.ts.map +1 -0
- package/dist/src/core/cost-tracker.js +281 -0
- package/dist/src/core/cost-tracker.js.map +1 -0
- package/dist/src/core/credentials-manager.d.ts +107 -0
- package/dist/src/core/credentials-manager.d.ts.map +1 -0
- package/dist/src/core/credentials-manager.js +457 -0
- package/dist/src/core/credentials-manager.js.map +1 -0
- package/dist/src/core/i18n/language-detector.d.ts +29 -0
- package/dist/src/core/i18n/language-detector.d.ts.map +1 -0
- package/dist/src/core/i18n/language-detector.js +143 -0
- package/dist/src/core/i18n/language-detector.js.map +1 -0
- package/dist/src/core/i18n/language-manager.d.ts +101 -0
- package/dist/src/core/i18n/language-manager.d.ts.map +1 -0
- package/dist/src/core/i18n/language-manager.js +232 -0
- package/dist/src/core/i18n/language-manager.js.map +1 -0
- package/dist/src/core/i18n/language-registry.d.ts +44 -0
- package/dist/src/core/i18n/language-registry.d.ts.map +1 -0
- package/dist/src/core/i18n/language-registry.js +234 -0
- package/dist/src/core/i18n/language-registry.js.map +1 -0
- package/dist/src/core/i18n/locale-manager.d.ts +62 -0
- package/dist/src/core/i18n/locale-manager.d.ts.map +1 -0
- package/dist/src/core/i18n/locale-manager.js +137 -0
- package/dist/src/core/i18n/locale-manager.js.map +1 -0
- package/dist/src/core/i18n/system-prompt-injector.d.ts +33 -0
- package/dist/src/core/i18n/system-prompt-injector.d.ts.map +1 -0
- package/dist/src/core/i18n/system-prompt-injector.js +131 -0
- package/dist/src/core/i18n/system-prompt-injector.js.map +1 -0
- package/dist/src/core/i18n/types.d.ts +151 -0
- package/dist/src/core/i18n/types.d.ts.map +1 -0
- package/dist/src/core/i18n/types.js +11 -0
- package/dist/src/core/i18n/types.js.map +1 -0
- package/dist/src/core/increment/limits.d.ts +68 -0
- package/dist/src/core/increment/limits.d.ts.map +1 -0
- package/dist/src/core/increment/limits.js +224 -0
- package/dist/src/core/increment/limits.js.map +1 -0
- package/dist/src/core/increment/metadata-manager.d.ts +114 -0
- package/dist/src/core/increment/metadata-manager.d.ts.map +1 -0
- package/dist/src/core/increment/metadata-manager.js +320 -0
- package/dist/src/core/increment/metadata-manager.js.map +1 -0
- package/dist/src/core/increment/status-commands.d.ts +43 -0
- package/dist/src/core/increment/status-commands.d.ts.map +1 -0
- package/dist/src/core/increment/status-commands.js +277 -0
- package/dist/src/core/increment/status-commands.js.map +1 -0
- package/dist/src/core/increment-status.d.ts +72 -0
- package/dist/src/core/increment-status.d.ts.map +1 -0
- package/dist/src/core/increment-status.js +227 -0
- package/dist/src/core/increment-status.js.map +1 -0
- package/dist/src/core/model-selector.d.ts +57 -0
- package/dist/src/core/model-selector.d.ts.map +1 -0
- package/dist/src/core/model-selector.js +115 -0
- package/dist/src/core/model-selector.js.map +1 -0
- package/dist/src/core/phase-detector.d.ts +62 -0
- package/dist/src/core/phase-detector.d.ts.map +1 -0
- package/dist/src/core/phase-detector.js +229 -0
- package/dist/src/core/phase-detector.js.map +1 -0
- package/dist/src/core/plugin-loader.d.ts +131 -0
- package/dist/src/core/plugin-loader.d.ts.map +1 -0
- package/dist/src/core/plugin-loader.js +421 -0
- package/dist/src/core/plugin-loader.js.map +1 -0
- package/dist/src/core/project-manager.d.ts +127 -0
- package/dist/src/core/project-manager.d.ts.map +1 -0
- package/dist/src/core/project-manager.js +524 -0
- package/dist/src/core/project-manager.js.map +1 -0
- package/dist/src/core/project-structure-detector.d.ts +92 -0
- package/dist/src/core/project-structure-detector.d.ts.map +1 -0
- package/dist/src/core/project-structure-detector.js +289 -0
- package/dist/src/core/project-structure-detector.js.map +1 -0
- package/dist/src/core/qa/qa-runner.d.ts +16 -0
- package/dist/src/core/qa/qa-runner.d.ts.map +1 -0
- package/dist/src/core/qa/qa-runner.js +404 -0
- package/dist/src/core/qa/qa-runner.js.map +1 -0
- package/dist/src/core/qa/quality-gate-decider.d.ts +53 -0
- package/dist/src/core/qa/quality-gate-decider.d.ts.map +1 -0
- package/dist/src/core/qa/quality-gate-decider.js +268 -0
- package/dist/src/core/qa/quality-gate-decider.js.map +1 -0
- package/dist/src/core/qa/risk-calculator.d.ts +126 -0
- package/dist/src/core/qa/risk-calculator.d.ts.map +1 -0
- package/dist/src/core/qa/risk-calculator.js +247 -0
- package/dist/src/core/qa/risk-calculator.js.map +1 -0
- package/dist/src/core/qa/types.d.ts +315 -0
- package/dist/src/core/qa/types.d.ts.map +1 -0
- package/dist/src/core/qa/types.js +8 -0
- package/dist/src/core/qa/types.js.map +1 -0
- package/dist/src/core/rfc-generator-v2.d.ts +149 -0
- package/dist/src/core/rfc-generator-v2.d.ts.map +1 -0
- package/dist/src/core/rfc-generator-v2.js +399 -0
- package/dist/src/core/rfc-generator-v2.js.map +1 -0
- package/dist/src/core/sync/bidirectional-engine.d.ts +110 -0
- package/dist/src/core/sync/bidirectional-engine.d.ts.map +1 -0
- package/dist/src/core/sync/bidirectional-engine.js +356 -0
- package/dist/src/core/sync/bidirectional-engine.js.map +1 -0
- package/dist/src/core/sync/folder-mapper.d.ts +71 -0
- package/dist/src/core/sync/folder-mapper.d.ts.map +1 -0
- package/dist/src/core/sync/folder-mapper.js +168 -0
- package/dist/src/core/sync/folder-mapper.js.map +1 -0
- package/dist/src/core/sync/profile-manager.d.ts +72 -0
- package/dist/src/core/sync/profile-manager.d.ts.map +1 -0
- package/dist/src/core/sync/profile-manager.js +338 -0
- package/dist/src/core/sync/profile-manager.js.map +1 -0
- package/dist/src/core/sync/profile-selector.d.ts +52 -0
- package/dist/src/core/sync/profile-selector.d.ts.map +1 -0
- package/dist/src/core/sync/profile-selector.js +179 -0
- package/dist/src/core/sync/profile-selector.js.map +1 -0
- package/dist/src/core/sync/profile-validator.d.ts +52 -0
- package/dist/src/core/sync/profile-validator.d.ts.map +1 -0
- package/dist/src/core/sync/profile-validator.js +225 -0
- package/dist/src/core/sync/profile-validator.js.map +1 -0
- package/dist/src/core/sync/project-context.d.ts +81 -0
- package/dist/src/core/sync/project-context.d.ts.map +1 -0
- package/dist/src/core/sync/project-context.js +354 -0
- package/dist/src/core/sync/project-context.js.map +1 -0
- package/dist/src/core/sync/rate-limiter.d.ts +116 -0
- package/dist/src/core/sync/rate-limiter.d.ts.map +1 -0
- package/dist/src/core/sync/rate-limiter.js +308 -0
- package/dist/src/core/sync/rate-limiter.js.map +1 -0
- package/dist/src/core/sync/time-range-selector.d.ts +48 -0
- package/dist/src/core/sync/time-range-selector.d.ts.map +1 -0
- package/dist/src/core/sync/time-range-selector.js +224 -0
- package/dist/src/core/sync/time-range-selector.js.map +1 -0
- package/dist/src/core/types/config.d.ts +90 -0
- package/dist/src/core/types/config.d.ts.map +1 -0
- package/dist/src/core/types/config.js +37 -0
- package/dist/src/core/types/config.js.map +1 -0
- package/dist/src/core/types/increment-metadata.d.ts +120 -0
- package/dist/src/core/types/increment-metadata.d.ts.map +1 -0
- package/dist/src/core/types/increment-metadata.js +138 -0
- package/dist/src/core/types/increment-metadata.js.map +1 -0
- package/dist/src/core/types/plugin.d.ts +283 -0
- package/dist/src/core/types/plugin.d.ts.map +1 -0
- package/dist/src/core/types/plugin.js +49 -0
- package/dist/src/core/types/plugin.js.map +1 -0
- package/dist/src/core/types/sync-profile.d.ts +403 -0
- package/dist/src/core/types/sync-profile.d.ts.map +1 -0
- package/dist/src/core/types/sync-profile.js +55 -0
- package/dist/src/core/types/sync-profile.js.map +1 -0
- package/dist/src/hooks/lib/types/reflection-types.d.ts +125 -0
- package/dist/src/hooks/lib/types/reflection-types.d.ts.map +1 -0
- package/dist/src/hooks/lib/types/reflection-types.js +54 -0
- package/dist/src/hooks/lib/types/reflection-types.js.map +1 -0
- package/dist/src/integrations/ado/ado-client.d.ts +127 -0
- package/dist/src/integrations/ado/ado-client.d.ts.map +1 -0
- package/dist/src/integrations/ado/ado-client.js +416 -0
- package/dist/src/integrations/ado/ado-client.js.map +1 -0
- package/dist/src/integrations/jira/jira-client.d.ts +139 -0
- package/dist/src/integrations/jira/jira-client.d.ts.map +1 -0
- package/dist/src/integrations/jira/jira-client.js +386 -0
- package/dist/src/integrations/jira/jira-client.js.map +1 -0
- package/dist/src/integrations/jira/jira-incremental-mapper.d.ts +75 -0
- package/dist/src/integrations/jira/jira-incremental-mapper.d.ts.map +1 -0
- package/dist/src/integrations/jira/jira-incremental-mapper.js +474 -0
- package/dist/src/integrations/jira/jira-incremental-mapper.js.map +1 -0
- package/dist/src/integrations/jira/jira-mapper.d.ts +105 -0
- package/dist/src/integrations/jira/jira-mapper.d.ts.map +1 -0
- package/dist/src/integrations/jira/jira-mapper.js +494 -0
- package/dist/src/integrations/jira/jira-mapper.js.map +1 -0
- package/dist/src/metrics/calculators/change-failure-rate.d.ts +22 -0
- package/dist/src/metrics/calculators/change-failure-rate.d.ts.map +1 -0
- package/dist/src/metrics/calculators/change-failure-rate.js +70 -0
- package/dist/src/metrics/calculators/change-failure-rate.js.map +1 -0
- package/dist/src/metrics/calculators/deployment-frequency.d.ts +20 -0
- package/dist/src/metrics/calculators/deployment-frequency.d.ts.map +1 -0
- package/dist/src/metrics/calculators/deployment-frequency.js +61 -0
- package/dist/src/metrics/calculators/deployment-frequency.js.map +1 -0
- package/dist/src/metrics/calculators/lead-time.d.ts +22 -0
- package/dist/src/metrics/calculators/lead-time.d.ts.map +1 -0
- package/dist/src/metrics/calculators/lead-time.js +82 -0
- package/dist/src/metrics/calculators/lead-time.js.map +1 -0
- package/dist/src/metrics/calculators/mttr.d.ts +21 -0
- package/dist/src/metrics/calculators/mttr.d.ts.map +1 -0
- package/dist/src/metrics/calculators/mttr.js +60 -0
- package/dist/src/metrics/calculators/mttr.js.map +1 -0
- package/dist/src/metrics/dora-calculator.d.ts +28 -0
- package/dist/src/metrics/dora-calculator.d.ts.map +1 -0
- package/dist/src/metrics/dora-calculator.js +117 -0
- package/dist/src/metrics/dora-calculator.js.map +1 -0
- package/dist/src/metrics/github-client.d.ts +51 -0
- package/dist/src/metrics/github-client.d.ts.map +1 -0
- package/dist/src/metrics/github-client.js +133 -0
- package/dist/src/metrics/github-client.js.map +1 -0
- package/dist/src/metrics/report-generator.d.ts +17 -0
- package/dist/src/metrics/report-generator.d.ts.map +1 -0
- package/dist/src/metrics/report-generator.js +403 -0
- package/dist/src/metrics/report-generator.js.map +1 -0
- package/dist/src/metrics/types.d.ts +112 -0
- package/dist/src/metrics/types.d.ts.map +1 -0
- package/dist/src/metrics/types.js +10 -0
- package/dist/src/metrics/types.js.map +1 -0
- package/dist/src/metrics/utils/percentile.d.ts +25 -0
- package/dist/src/metrics/utils/percentile.d.ts.map +1 -0
- package/dist/src/metrics/utils/percentile.js +46 -0
- package/dist/src/metrics/utils/percentile.js.map +1 -0
- package/dist/src/metrics/utils/tier-classifier.d.ts +61 -0
- package/dist/src/metrics/utils/tier-classifier.d.ts.map +1 -0
- package/dist/src/metrics/utils/tier-classifier.js +100 -0
- package/dist/src/metrics/utils/tier-classifier.js.map +1 -0
- package/dist/src/testing/test-generator.d.ts +117 -0
- package/dist/src/testing/test-generator.d.ts.map +1 -0
- package/dist/src/testing/test-generator.js +370 -0
- package/dist/src/testing/test-generator.js.map +1 -0
- package/dist/src/types/cost-tracking.d.ts +43 -0
- package/dist/src/types/cost-tracking.d.ts.map +1 -0
- package/dist/src/types/cost-tracking.js +8 -0
- package/dist/src/types/cost-tracking.js.map +1 -0
- package/dist/src/types/model-selection.d.ts +53 -0
- package/dist/src/types/model-selection.d.ts.map +1 -0
- package/dist/src/types/model-selection.js +12 -0
- package/dist/src/types/model-selection.js.map +1 -0
- package/dist/src/utils/agents-md-compiler.d.ts +68 -0
- package/dist/src/utils/agents-md-compiler.d.ts.map +1 -0
- package/dist/src/utils/agents-md-compiler.js +420 -0
- package/dist/src/utils/agents-md-compiler.js.map +1 -0
- package/dist/src/utils/auth-helpers.d.ts +58 -0
- package/dist/src/utils/auth-helpers.d.ts.map +1 -0
- package/dist/src/utils/auth-helpers.js +108 -0
- package/dist/src/utils/auth-helpers.js.map +1 -0
- package/dist/src/utils/auto-install.d.ts +47 -0
- package/dist/src/utils/auto-install.d.ts.map +1 -0
- package/dist/src/utils/auto-install.js +211 -0
- package/dist/src/utils/auto-install.js.map +1 -0
- package/dist/src/utils/claude-cli-detector.d.ts +75 -0
- package/dist/src/utils/claude-cli-detector.d.ts.map +1 -0
- package/dist/src/utils/claude-cli-detector.js +285 -0
- package/dist/src/utils/claude-cli-detector.js.map +1 -0
- package/dist/src/utils/cost-reporter.d.ts +58 -0
- package/dist/src/utils/cost-reporter.d.ts.map +1 -0
- package/dist/src/utils/cost-reporter.js +224 -0
- package/dist/src/utils/cost-reporter.js.map +1 -0
- package/dist/src/utils/docs-preview/config-generator.d.ts +46 -0
- package/dist/src/utils/docs-preview/config-generator.d.ts.map +1 -0
- package/dist/src/utils/docs-preview/config-generator.js +377 -0
- package/dist/src/utils/docs-preview/config-generator.js.map +1 -0
- package/dist/src/utils/docs-preview/docusaurus-setup.d.ts +38 -0
- package/dist/src/utils/docs-preview/docusaurus-setup.d.ts.map +1 -0
- package/dist/src/utils/docs-preview/docusaurus-setup.js +177 -0
- package/dist/src/utils/docs-preview/docusaurus-setup.js.map +1 -0
- package/dist/src/utils/docs-preview/index.d.ts +7 -0
- package/dist/src/utils/docs-preview/index.d.ts.map +1 -0
- package/dist/src/utils/docs-preview/index.js +7 -0
- package/dist/src/utils/docs-preview/index.js.map +1 -0
- package/dist/src/utils/docs-preview/package-installer.d.ts +42 -0
- package/dist/src/utils/docs-preview/package-installer.d.ts.map +1 -0
- package/dist/src/utils/docs-preview/package-installer.js +182 -0
- package/dist/src/utils/docs-preview/package-installer.js.map +1 -0
- package/dist/src/utils/docs-preview/server-manager.d.ts +30 -0
- package/dist/src/utils/docs-preview/server-manager.d.ts.map +1 -0
- package/dist/src/utils/docs-preview/server-manager.js +212 -0
- package/dist/src/utils/docs-preview/server-manager.js.map +1 -0
- package/dist/src/utils/docs-preview/sidebar-builder.d.ts +32 -0
- package/dist/src/utils/docs-preview/sidebar-builder.d.ts.map +1 -0
- package/dist/src/utils/docs-preview/sidebar-builder.js +202 -0
- package/dist/src/utils/docs-preview/sidebar-builder.js.map +1 -0
- package/dist/src/utils/docs-preview/types.d.ts +57 -0
- package/dist/src/utils/docs-preview/types.d.ts.map +1 -0
- package/dist/src/utils/docs-preview/types.js +2 -0
- package/dist/src/utils/docs-preview/types.js.map +1 -0
- package/dist/src/utils/env-file.d.ts +88 -0
- package/dist/src/utils/env-file.d.ts.map +1 -0
- package/dist/src/utils/env-file.js +180 -0
- package/dist/src/utils/env-file.js.map +1 -0
- package/dist/src/utils/env-multi-project-parser.d.ts +220 -0
- package/dist/src/utils/env-multi-project-parser.d.ts.map +1 -0
- package/dist/src/utils/env-multi-project-parser.js +403 -0
- package/dist/src/utils/env-multi-project-parser.js.map +1 -0
- package/dist/src/utils/esm-helpers.d.ts +50 -0
- package/dist/src/utils/esm-helpers.d.ts.map +1 -0
- package/dist/src/utils/esm-helpers.js +57 -0
- package/dist/src/utils/esm-helpers.js.map +1 -0
- package/dist/src/utils/execFileNoThrow.d.ts +99 -0
- package/dist/src/utils/execFileNoThrow.d.ts.map +1 -0
- package/dist/src/utils/execFileNoThrow.js +137 -0
- package/dist/src/utils/execFileNoThrow.js.map +1 -0
- package/dist/src/utils/external-resource-validator.d.ts +102 -0
- package/dist/src/utils/external-resource-validator.d.ts.map +1 -0
- package/dist/src/utils/external-resource-validator.js +400 -0
- package/dist/src/utils/external-resource-validator.js.map +1 -0
- package/dist/src/utils/generate-skills-index.d.ts +24 -0
- package/dist/src/utils/generate-skills-index.d.ts.map +1 -0
- package/dist/src/utils/generate-skills-index.js +410 -0
- package/dist/src/utils/generate-skills-index.js.map +1 -0
- package/dist/src/utils/model-selection.d.ts +75 -0
- package/dist/src/utils/model-selection.d.ts.map +1 -0
- package/dist/src/utils/model-selection.js +204 -0
- package/dist/src/utils/model-selection.js.map +1 -0
- package/dist/src/utils/plugin-validator.d.ts +161 -0
- package/dist/src/utils/plugin-validator.d.ts.map +1 -0
- package/dist/src/utils/plugin-validator.js +558 -0
- package/dist/src/utils/plugin-validator.js.map +1 -0
- package/dist/src/utils/pricing-constants.d.ts +70 -0
- package/dist/src/utils/pricing-constants.d.ts.map +1 -0
- package/dist/src/utils/pricing-constants.js +71 -0
- package/dist/src/utils/pricing-constants.js.map +1 -0
- package/dist/src/utils/project-detection.d.ts +141 -0
- package/dist/src/utils/project-detection.d.ts.map +1 -0
- package/dist/src/utils/project-detection.js +321 -0
- package/dist/src/utils/project-detection.js.map +1 -0
- package/dist/src/utils/string-utils.d.ts +40 -0
- package/dist/src/utils/string-utils.d.ts.map +1 -0
- package/dist/src/utils/string-utils.js +58 -0
- package/dist/src/utils/string-utils.js.map +1 -0
- package/dist/src/utils/translation.d.ts +187 -0
- package/dist/src/utils/translation.d.ts.map +1 -0
- package/dist/src/utils/translation.js +414 -0
- package/dist/src/utils/translation.js.map +1 -0
- package/dist/utils/plugin-validator.d.ts.map +1 -1
- package/dist/utils/plugin-validator.js +0 -7
- package/dist/utils/plugin-validator.js.map +1 -1
- package/package.json +3 -2
- package/plugins/specweave/agents/reflective-reviewer/AGENT.md +535 -0
- package/plugins/specweave/hooks/post-first-increment.sh +10 -28
- package/plugins/specweave/hooks/post-increment-planning.sh +261 -1
- package/plugins/specweave/hooks/post-task-completion.sh +26 -0
- package/plugins/specweave/lib/hooks/git-diff-analyzer.ts +269 -0
- package/plugins/specweave/lib/hooks/invoke-translator-skill.ts +264 -0
- package/plugins/specweave/lib/hooks/prepare-reflection-context.ts +178 -0
- package/plugins/specweave/lib/hooks/reflection-config-loader.ts +156 -0
- package/plugins/specweave/lib/hooks/reflection-parser.ts +484 -0
- package/plugins/specweave/lib/hooks/reflection-prompt-builder.ts +306 -0
- package/plugins/specweave/lib/hooks/reflection-storage.ts +369 -0
- package/plugins/specweave/lib/hooks/run-self-reflection.ts +258 -0
- package/plugins/specweave/lib/hooks/sync-living-docs.ts +147 -0
- package/plugins/specweave/lib/hooks/translate-file.ts +428 -0
- package/plugins/specweave/lib/hooks/translate-living-docs.ts +224 -0
- package/plugins/specweave/lib/hooks/types/reflection-types.ts +193 -0
- package/plugins/specweave/lib/hooks/update-tasks-md.ts +256 -0
- package/plugins/specweave/skills/SKILLS-INDEX.md +2 -2
- package/plugins/specweave/skills/increment-planner/SKILL.md +21 -92
- package/plugins/specweave/skills/plugin-expert/SKILL.md +0 -4
- package/plugins/specweave/skills/plugin-installer/SKILL.md +41 -28
- package/plugins/specweave/skills/plugin-validator/SKILL.md +0 -1
- package/plugins/specweave/skills/project-kickstarter/SKILL.md +3 -3
- package/plugins/specweave/skills/spec-generator/SKILL.md +3 -3
- package/plugins/specweave-ado/agents/ado-manager/AGENT.md +2 -0
- package/plugins/specweave-ado/commands/specweave-ado-sync.md +102 -9
- package/plugins/specweave-ado/skills/ado-sync/SKILL.md +7 -3
- package/plugins/specweave-docs-preview/.claude-plugin/plugin.json +21 -0
- package/plugins/specweave-docs-preview/commands/build.md +489 -0
- package/plugins/specweave-docs-preview/commands/preview.md +330 -0
- package/plugins/specweave-docs-preview/skills/docs-preview/SKILL.md +386 -0
- package/plugins/specweave-github/agents/github-manager/AGENT.md +14 -4
- package/plugins/specweave-github/commands/specweave-github-sync.md +60 -11
- package/plugins/specweave-github/skills/github-sync/SKILL.md +3 -1
- package/plugins/specweave-jira/agents/jira-manager/AGENT.md +18 -8
- package/plugins/specweave-jira/commands/specweave-jira-sync.md +62 -19
- package/plugins/specweave-jira/skills/jira-sync/SKILL.md +5 -3
- package/plugins/specweave/skills/translator/SKILL.md.bak +0 -172
|
@@ -0,0 +1,193 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Type definitions for AI Self-Reflection System
|
|
3
|
+
* @module reflection-types
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* Severity levels for identified issues
|
|
8
|
+
*/
|
|
9
|
+
export enum IssueSeverity {
|
|
10
|
+
CRITICAL = 'CRITICAL',
|
|
11
|
+
HIGH = 'HIGH',
|
|
12
|
+
MEDIUM = 'MEDIUM',
|
|
13
|
+
LOW = 'LOW'
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
/**
|
|
17
|
+
* Issue categories
|
|
18
|
+
*/
|
|
19
|
+
export enum IssueCategory {
|
|
20
|
+
SECURITY = 'SECURITY',
|
|
21
|
+
QUALITY = 'QUALITY',
|
|
22
|
+
TESTING = 'TESTING',
|
|
23
|
+
PERFORMANCE = 'PERFORMANCE',
|
|
24
|
+
TECHNICAL_DEBT = 'TECHNICAL_DEBT'
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
/**
|
|
28
|
+
* Reflection depth modes
|
|
29
|
+
*/
|
|
30
|
+
export enum ReflectionDepth {
|
|
31
|
+
QUICK = 'quick', // <15s, critical issues only
|
|
32
|
+
STANDARD = 'standard', // <30s, full analysis (default)
|
|
33
|
+
DEEP = 'deep' // <60s, detailed + architectural
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
/**
|
|
37
|
+
* AI model selection for reflection
|
|
38
|
+
*/
|
|
39
|
+
export enum ReflectionModel {
|
|
40
|
+
HAIKU = 'haiku', // Fast, cheap (~$0.01/task)
|
|
41
|
+
SONNET = 'sonnet', // Balanced (~$0.05/task)
|
|
42
|
+
OPUS = 'opus' // Deep analysis (~$0.15/task)
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
/**
|
|
46
|
+
* Reflection execution mode
|
|
47
|
+
*/
|
|
48
|
+
export enum ReflectionMode {
|
|
49
|
+
AUTO = 'auto', // Automatic after task completion
|
|
50
|
+
MANUAL = 'manual', // User-triggered only
|
|
51
|
+
DISABLED = 'disabled' // Reflection disabled
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
/**
|
|
55
|
+
* Issue identified during reflection
|
|
56
|
+
*/
|
|
57
|
+
export interface ReflectionIssue {
|
|
58
|
+
severity: IssueSeverity;
|
|
59
|
+
category: IssueCategory;
|
|
60
|
+
description: string;
|
|
61
|
+
impact: string;
|
|
62
|
+
recommendation: string;
|
|
63
|
+
location?: {
|
|
64
|
+
file: string;
|
|
65
|
+
line?: number;
|
|
66
|
+
snippet?: string;
|
|
67
|
+
};
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
/**
|
|
71
|
+
* Lesson learned from task execution
|
|
72
|
+
*/
|
|
73
|
+
export interface LessonLearned {
|
|
74
|
+
whatWentWell: string[];
|
|
75
|
+
whatCouldImprove: string[];
|
|
76
|
+
forNextTime: string[];
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
/**
|
|
80
|
+
* Quality metrics from reflection
|
|
81
|
+
*/
|
|
82
|
+
export interface ReflectionMetrics {
|
|
83
|
+
codeQuality: number; // 1-10 rating
|
|
84
|
+
security: number; // 1-10 rating
|
|
85
|
+
testCoverage?: number; // Percentage or null
|
|
86
|
+
technicalDebt: 'LOW' | 'MEDIUM' | 'HIGH';
|
|
87
|
+
performance: 'GOOD' | 'ACCEPTABLE' | 'NEEDS_WORK';
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
/**
|
|
91
|
+
* Complete reflection result
|
|
92
|
+
*/
|
|
93
|
+
export interface ReflectionResult {
|
|
94
|
+
taskName: string;
|
|
95
|
+
completed: string; // ISO timestamp
|
|
96
|
+
duration?: string;
|
|
97
|
+
filesModified: {
|
|
98
|
+
count: number;
|
|
99
|
+
linesAdded: number;
|
|
100
|
+
linesRemoved: number;
|
|
101
|
+
};
|
|
102
|
+
accomplishments: string[];
|
|
103
|
+
strengths: string[];
|
|
104
|
+
issues: ReflectionIssue[];
|
|
105
|
+
recommendedActions: {
|
|
106
|
+
priority1: string[]; // MUST FIX
|
|
107
|
+
priority2: string[]; // SHOULD FIX
|
|
108
|
+
priority3: string[]; // NICE TO HAVE
|
|
109
|
+
};
|
|
110
|
+
lessonsLearned: LessonLearned;
|
|
111
|
+
metrics: ReflectionMetrics;
|
|
112
|
+
relatedTasks?: string[];
|
|
113
|
+
metadata: {
|
|
114
|
+
model: ReflectionModel;
|
|
115
|
+
reflectionTime: number; // seconds
|
|
116
|
+
estimatedCost: number; // USD
|
|
117
|
+
};
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
/**
|
|
121
|
+
* Configuration for reflection system
|
|
122
|
+
*/
|
|
123
|
+
export interface ReflectionConfig {
|
|
124
|
+
enabled: boolean;
|
|
125
|
+
mode: ReflectionMode;
|
|
126
|
+
depth: ReflectionDepth;
|
|
127
|
+
model: ReflectionModel;
|
|
128
|
+
categories: {
|
|
129
|
+
security: boolean;
|
|
130
|
+
quality: boolean;
|
|
131
|
+
testing: boolean;
|
|
132
|
+
performance: boolean;
|
|
133
|
+
technicalDebt: boolean;
|
|
134
|
+
};
|
|
135
|
+
criticalThreshold: IssueSeverity;
|
|
136
|
+
storeReflections: boolean;
|
|
137
|
+
autoCreateFollowUpTasks: boolean;
|
|
138
|
+
soundNotifications?: boolean;
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
/**
|
|
142
|
+
* Git diff information for modified files
|
|
143
|
+
*/
|
|
144
|
+
export interface GitDiffInfo {
|
|
145
|
+
file: string;
|
|
146
|
+
linesAdded: number;
|
|
147
|
+
linesRemoved: number;
|
|
148
|
+
content: string;
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
/**
|
|
152
|
+
* Context for reflection execution
|
|
153
|
+
*/
|
|
154
|
+
export interface ReflectionContext {
|
|
155
|
+
incrementId: string;
|
|
156
|
+
taskId: string;
|
|
157
|
+
modifiedFiles: GitDiffInfo[];
|
|
158
|
+
config: ReflectionConfig;
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
/**
|
|
162
|
+
* Reflection execution result (success or failure)
|
|
163
|
+
*/
|
|
164
|
+
export interface ReflectionExecutionResult {
|
|
165
|
+
success: boolean;
|
|
166
|
+
result?: ReflectionResult;
|
|
167
|
+
error?: {
|
|
168
|
+
message: string;
|
|
169
|
+
code: string;
|
|
170
|
+
details?: any;
|
|
171
|
+
};
|
|
172
|
+
}
|
|
173
|
+
|
|
174
|
+
/**
|
|
175
|
+
* Default reflection configuration
|
|
176
|
+
*/
|
|
177
|
+
export const DEFAULT_REFLECTION_CONFIG: ReflectionConfig = {
|
|
178
|
+
enabled: true,
|
|
179
|
+
mode: ReflectionMode.AUTO,
|
|
180
|
+
depth: ReflectionDepth.STANDARD,
|
|
181
|
+
model: ReflectionModel.HAIKU,
|
|
182
|
+
categories: {
|
|
183
|
+
security: true,
|
|
184
|
+
quality: true,
|
|
185
|
+
testing: true,
|
|
186
|
+
performance: true,
|
|
187
|
+
technicalDebt: true
|
|
188
|
+
},
|
|
189
|
+
criticalThreshold: IssueSeverity.MEDIUM,
|
|
190
|
+
storeReflections: true,
|
|
191
|
+
autoCreateFollowUpTasks: false,
|
|
192
|
+
soundNotifications: false
|
|
193
|
+
};
|
|
@@ -0,0 +1,256 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* SpecWeave Tasks.md Auto-Updater
|
|
5
|
+
*
|
|
6
|
+
* Automatically updates tasks.md completion status after TodoWrite completes tasks.
|
|
7
|
+
*
|
|
8
|
+
* Usage:
|
|
9
|
+
* node dist/hooks/lib/update-tasks-md.js <incrementId>
|
|
10
|
+
*
|
|
11
|
+
* Example:
|
|
12
|
+
* node dist/hooks/lib/update-tasks-md.js 0006-llm-native-i18n
|
|
13
|
+
*
|
|
14
|
+
* What it does:
|
|
15
|
+
* 1. Reads tasks.md for the given increment
|
|
16
|
+
* 2. Finds recently completed tasks from TodoWrite
|
|
17
|
+
* 3. Updates "[ ]" to "[x]" for completed tasks
|
|
18
|
+
* 4. Updates "Status: ⏳ Pending" to "Status: [x] Completed"
|
|
19
|
+
* 5. Recalculates progress percentage
|
|
20
|
+
* 6. Writes back to tasks.md
|
|
21
|
+
*
|
|
22
|
+
* @author SpecWeave Team
|
|
23
|
+
* @version 1.0.0
|
|
24
|
+
*/
|
|
25
|
+
|
|
26
|
+
import fs from 'fs-extra';
|
|
27
|
+
import path from 'path';
|
|
28
|
+
|
|
29
|
+
interface TaskMatch {
|
|
30
|
+
taskId: string;
|
|
31
|
+
lineNumber: number;
|
|
32
|
+
currentStatus: 'pending' | 'in_progress' | 'completed';
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
/**
|
|
36
|
+
* Main function - update tasks.md for given increment
|
|
37
|
+
*/
|
|
38
|
+
async function updateTasksMd(incrementId: string): Promise<void> {
|
|
39
|
+
try {
|
|
40
|
+
console.log(`\n🔄 Updating tasks.md for increment: ${incrementId}`);
|
|
41
|
+
|
|
42
|
+
// 1. Validate increment exists
|
|
43
|
+
const incrementDir = path.join(process.cwd(), '.specweave', 'increments', incrementId);
|
|
44
|
+
if (!fs.existsSync(incrementDir)) {
|
|
45
|
+
console.error(`❌ Increment directory not found: ${incrementDir}`);
|
|
46
|
+
process.exit(1);
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
const tasksPath = path.join(incrementDir, 'tasks.md');
|
|
50
|
+
if (!fs.existsSync(tasksPath)) {
|
|
51
|
+
console.error(`❌ tasks.md not found: ${tasksPath}`);
|
|
52
|
+
process.exit(1);
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
// 2. Read tasks.md
|
|
56
|
+
const originalContent = await fs.readFile(tasksPath, 'utf-8');
|
|
57
|
+
const lines = originalContent.split('\n');
|
|
58
|
+
|
|
59
|
+
console.log(`📖 Read tasks.md (${lines.length} lines)`);
|
|
60
|
+
|
|
61
|
+
// 3. Parse task completion status
|
|
62
|
+
const tasks = parseTaskStatus(lines);
|
|
63
|
+
console.log(`📋 Found ${tasks.length} tasks`);
|
|
64
|
+
|
|
65
|
+
// 4. Get recently completed tasks from environment (passed by hook)
|
|
66
|
+
// For now, we'll mark tasks as complete if they match a heuristic
|
|
67
|
+
// TODO: In future, hook will pass completed task IDs via env var
|
|
68
|
+
const completedTasks = detectCompletedTasks(lines);
|
|
69
|
+
|
|
70
|
+
if (completedTasks.length === 0) {
|
|
71
|
+
console.log('✅ No new task completions detected');
|
|
72
|
+
return;
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
console.log(`🎯 Detected ${completedTasks.length} completed task(s):`, completedTasks);
|
|
76
|
+
|
|
77
|
+
// 5. Update task status in content
|
|
78
|
+
let updatedContent = originalContent;
|
|
79
|
+
|
|
80
|
+
for (const taskId of completedTasks) {
|
|
81
|
+
updatedContent = markTaskComplete(updatedContent, taskId);
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
// 6. Recalculate progress
|
|
85
|
+
const updatedLines = updatedContent.split('\n');
|
|
86
|
+
const totalTasks = countTotalTasks(updatedLines);
|
|
87
|
+
const completedCount = countCompletedTasks(updatedLines);
|
|
88
|
+
const progress = Math.round((completedCount / totalTasks) * 100);
|
|
89
|
+
|
|
90
|
+
console.log(`📊 Progress: ${completedCount}/${totalTasks} (${progress}%)`);
|
|
91
|
+
|
|
92
|
+
// 7. Update header with new progress
|
|
93
|
+
updatedContent = updateProgressHeader(updatedContent, completedCount, totalTasks, progress);
|
|
94
|
+
|
|
95
|
+
// 8. Write back to tasks.md
|
|
96
|
+
await fs.writeFile(tasksPath, updatedContent, 'utf-8');
|
|
97
|
+
|
|
98
|
+
console.log(`✅ Updated ${tasksPath}`);
|
|
99
|
+
console.log(` Completed: ${completedCount}/${totalTasks}`);
|
|
100
|
+
console.log(` Progress: ${progress}%\n`);
|
|
101
|
+
|
|
102
|
+
} catch (error) {
|
|
103
|
+
console.error('❌ Error updating tasks.md:', error);
|
|
104
|
+
process.exit(1);
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
/**
|
|
109
|
+
* Parse task status from lines
|
|
110
|
+
*/
|
|
111
|
+
function parseTaskStatus(lines: string[]): TaskMatch[] {
|
|
112
|
+
const tasks: TaskMatch[] = [];
|
|
113
|
+
const taskPattern = /^###\s+(T-?\d+[-A-Z]*):?\s+(.+)/; // Matches "### T-001: Task Name" or "### T-001-DISCIPLINE:"
|
|
114
|
+
|
|
115
|
+
lines.forEach((line, index) => {
|
|
116
|
+
const match = line.match(taskPattern);
|
|
117
|
+
if (match) {
|
|
118
|
+
const taskId = match[1];
|
|
119
|
+
|
|
120
|
+
// Look ahead for status line
|
|
121
|
+
let status: 'pending' | 'in_progress' | 'completed' = 'pending';
|
|
122
|
+
|
|
123
|
+
for (let i = index + 1; i < Math.min(index + 5, lines.length); i++) {
|
|
124
|
+
const nextLine = lines[i];
|
|
125
|
+
if (nextLine.includes('**Status**:')) {
|
|
126
|
+
if (nextLine.includes('[x] Completed')) {
|
|
127
|
+
status = 'completed';
|
|
128
|
+
} else if (nextLine.includes('⏳ Pending') || nextLine.includes('[ ] Pending')) {
|
|
129
|
+
status = 'pending';
|
|
130
|
+
} else if (nextLine.includes('🔄 In Progress') || nextLine.includes('in_progress')) {
|
|
131
|
+
status = 'in_progress';
|
|
132
|
+
}
|
|
133
|
+
break;
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
tasks.push({
|
|
138
|
+
taskId,
|
|
139
|
+
lineNumber: index,
|
|
140
|
+
currentStatus: status,
|
|
141
|
+
});
|
|
142
|
+
}
|
|
143
|
+
});
|
|
144
|
+
|
|
145
|
+
return tasks;
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
/**
|
|
149
|
+
* Detect which tasks are completed (heuristic-based for now)
|
|
150
|
+
* TODO: In future, hook will pass completed task IDs via env var
|
|
151
|
+
*/
|
|
152
|
+
function detectCompletedTasks(lines: string[]): string[] {
|
|
153
|
+
// For now, this is a placeholder - we'll mark tasks as complete
|
|
154
|
+
// if they have implementation sections or "COMPLETE" markers
|
|
155
|
+
const completedTasks: string[] = [];
|
|
156
|
+
|
|
157
|
+
// This function will be enhanced in future versions
|
|
158
|
+
// For MVP, we'll rely on manual marking in tasks.md
|
|
159
|
+
|
|
160
|
+
return completedTasks;
|
|
161
|
+
}
|
|
162
|
+
|
|
163
|
+
/**
|
|
164
|
+
* Mark a specific task as complete
|
|
165
|
+
*/
|
|
166
|
+
function markTaskComplete(content: string, taskId: string): string {
|
|
167
|
+
let updated = content;
|
|
168
|
+
|
|
169
|
+
// Pattern: "**Status**: [ ] Pending" or "**Status**: ⏳ Pending"
|
|
170
|
+
const statusPattern = new RegExp(
|
|
171
|
+
`(###\\s+${taskId.replace(/[-]/g, '\\-')}[^\\n]*[\\s\\S]*?\\*\\*Status\\*\\*:)\\s*\\[?\\s*\\]?\\s*⏳?\\s*Pending`,
|
|
172
|
+
'i'
|
|
173
|
+
);
|
|
174
|
+
|
|
175
|
+
updated = updated.replace(statusPattern, '$1 [x] Completed');
|
|
176
|
+
|
|
177
|
+
return updated;
|
|
178
|
+
}
|
|
179
|
+
|
|
180
|
+
/**
|
|
181
|
+
* Count total tasks
|
|
182
|
+
*/
|
|
183
|
+
function countTotalTasks(lines: string[]): number {
|
|
184
|
+
let count = 0;
|
|
185
|
+
const taskPattern = /^###\s+(T-?\d+[-A-Z]*):?\s+/;
|
|
186
|
+
|
|
187
|
+
for (const line of lines) {
|
|
188
|
+
if (taskPattern.test(line)) {
|
|
189
|
+
count++;
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
|
|
193
|
+
return count;
|
|
194
|
+
}
|
|
195
|
+
|
|
196
|
+
/**
|
|
197
|
+
* Count completed tasks
|
|
198
|
+
*/
|
|
199
|
+
function countCompletedTasks(lines: string[]): number {
|
|
200
|
+
let count = 0;
|
|
201
|
+
const taskPattern = /^###\s+(T-?\d+[-A-Z]*):?\s+/;
|
|
202
|
+
|
|
203
|
+
for (let i = 0; i < lines.length; i++) {
|
|
204
|
+
const line = lines[i];
|
|
205
|
+
if (taskPattern.test(line)) {
|
|
206
|
+
// Look ahead for status line
|
|
207
|
+
for (let j = i + 1; j < Math.min(i + 5, lines.length); j++) {
|
|
208
|
+
const nextLine = lines[j];
|
|
209
|
+
if (nextLine.includes('**Status**:') && nextLine.includes('[x] Completed')) {
|
|
210
|
+
count++;
|
|
211
|
+
break;
|
|
212
|
+
}
|
|
213
|
+
}
|
|
214
|
+
}
|
|
215
|
+
}
|
|
216
|
+
|
|
217
|
+
return count;
|
|
218
|
+
}
|
|
219
|
+
|
|
220
|
+
/**
|
|
221
|
+
* Update progress header
|
|
222
|
+
*/
|
|
223
|
+
function updateProgressHeader(content: string, completed: number, total: number, progress: number): string {
|
|
224
|
+
let updated = content;
|
|
225
|
+
|
|
226
|
+
// Update "**Completed**: X"
|
|
227
|
+
updated = updated.replace(/\*\*Completed\*\*:\s*\d+/, `**Completed**: ${completed}`);
|
|
228
|
+
|
|
229
|
+
// Update "**Progress**: X%"
|
|
230
|
+
updated = updated.replace(/\*\*Progress\*\*:\s*\d+%/, `**Progress**: ${progress}%`);
|
|
231
|
+
|
|
232
|
+
// Update "**Total Tasks**: X"
|
|
233
|
+
updated = updated.replace(/\*\*Total Tasks\*\*:\s*\d+/, `**Total Tasks**: ${total}`);
|
|
234
|
+
|
|
235
|
+
return updated;
|
|
236
|
+
}
|
|
237
|
+
|
|
238
|
+
// CLI entry point
|
|
239
|
+
const isMainModule = import.meta.url === `file://${process.argv[1]}`;
|
|
240
|
+
|
|
241
|
+
if (isMainModule) {
|
|
242
|
+
const incrementId = process.argv[2];
|
|
243
|
+
|
|
244
|
+
if (!incrementId) {
|
|
245
|
+
console.error('❌ Usage: update-tasks-md <incrementId>');
|
|
246
|
+
console.error(' Example: update-tasks-md 0006-llm-native-i18n');
|
|
247
|
+
process.exit(1);
|
|
248
|
+
}
|
|
249
|
+
|
|
250
|
+
updateTasksMd(incrementId).catch((error) => {
|
|
251
|
+
console.error('❌ Fatal error:', error);
|
|
252
|
+
process.exit(1);
|
|
253
|
+
});
|
|
254
|
+
}
|
|
255
|
+
|
|
256
|
+
export { updateTasksMd };
|
|
@@ -39,9 +39,9 @@ Step 4: Execute → Follow the increment planning workflow
|
|
|
39
39
|
|
|
40
40
|
#### plugin-installer
|
|
41
41
|
|
|
42
|
-
**Description**: Proactive just-in-time plugin installation. Auto-detects when specialized plugins are needed (
|
|
42
|
+
**Description**: Proactive just-in-time plugin installation. Auto-detects when specialized plugins are needed (frontend, kubernetes, ML, payments, testing, etc.) and installs them automatically before use. Activates for React, Next.js, K8s, Kubernetes, Helm, TensorFlow, PyTorch, ML model, Stripe, billing, payment, Playwright, E2E testing, Figma, design system, ADO, Azure DevOps, infrastructure, Prometheus, Grafana, monitoring, Node.js, Python backend, REST API, cloud deployment, diagram, Mermaid, C4, architecture diagram.
|
|
43
43
|
|
|
44
|
-
**Activates for**:
|
|
44
|
+
**Activates for**: React, Next.js, frontend, UI component, K8s, Kubernetes, deploy, TensorFlow, ML model, Stripe, billing, E2E testing, Figma, diagram, architecture diagram
|
|
45
45
|
|
|
46
46
|
**Location**: `.claude/skills/plugin-installer/SKILL.md`
|
|
47
47
|
|
|
@@ -72,6 +72,14 @@ Use this skill when:
|
|
|
72
72
|
- **Experiments**: Structuring POCs and technical spikes
|
|
73
73
|
- **Brownfield**: Structuring modifications to existing codebases
|
|
74
74
|
|
|
75
|
+
## When NOT to Use This Skill
|
|
76
|
+
|
|
77
|
+
Do NOT activate if:
|
|
78
|
+
- ❌ User is asking general questions about SpecWeave (use documentation instead)
|
|
79
|
+
- ❌ Another skill (e.g., `project-kickstarter`) is already handling the request
|
|
80
|
+
- ❌ User is already in an active increment planning workflow
|
|
81
|
+
- ❌ Increment files (spec.md, plan.md, tasks.md) are currently being created
|
|
82
|
+
|
|
75
83
|
## Activation Triggers
|
|
76
84
|
|
|
77
85
|
This skill activates automatically when users say:
|
|
@@ -522,99 +530,24 @@ created: YYYY-MM-DD
|
|
|
522
530
|
- Measurable acceptance criteria
|
|
523
531
|
- Prioritized user stories (P1/P2/P3)
|
|
524
532
|
|
|
525
|
-
### Step 6:
|
|
526
|
-
|
|
527
|
-
**Purpose**: Analyze spec content to identify required SpecWeave plugins AND check if external PM tool sync is configured.
|
|
528
|
-
|
|
529
|
-
**⚠️ CRITICAL**: For ALL plugin installations, consult the `plugin-expert` skill for correct syntax. NEVER use `@marketplace` suffix!
|
|
530
|
-
|
|
531
|
-
**Why This Matters**:
|
|
532
|
-
1. SpecWeave's plugin system enables context efficiency (70%+ reduction) by loading only relevant capabilities
|
|
533
|
-
2. PM tool integration enables automatic sync of increment progress to external systems (GitHub Issues, Jira, Azure DevOps)
|
|
534
|
-
|
|
535
|
-
**Detection Algorithm**:
|
|
536
|
-
|
|
537
|
-
1. **Scan spec.md for keywords**:
|
|
538
|
-
```
|
|
539
|
-
Keywords → Plugin Mapping:
|
|
540
|
-
- "GitHub", "issue", "pull request", "PR" → specweave-github
|
|
541
|
-
- "Jira", "ticket", "epic" → specweave-jira
|
|
542
|
-
- "Azure DevOps", "ADO", "work item" → specweave-ado
|
|
543
|
-
- "Kubernetes", "K8s", "Helm", "kubectl" → specweave-kubernetes
|
|
544
|
-
- "Figma", "design system", "design tokens" → specweave-figma
|
|
545
|
-
- "Stripe", "PayPal", "billing", "subscriptions" → specweave-payments
|
|
546
|
-
- "React", "Next.js", "Vue", "Angular" → specweave-frontend
|
|
547
|
-
- "Express", "Fastify", "NestJS", "FastAPI" → specweave-backend
|
|
548
|
-
- "TensorFlow", "PyTorch", "ML", "training" → specweave-ml
|
|
549
|
-
- "Prometheus", "Grafana", "monitoring" → specweave-infrastructure
|
|
550
|
-
- "Playwright", "E2E", "browser tests" → specweave-testing
|
|
551
|
-
- "Mermaid", "C4", "diagrams", "architecture diagrams" → specweave-diagrams
|
|
552
|
-
```
|
|
553
|
-
|
|
554
|
-
2. **Check External PM Tool Configuration** (NEW v0.8.0):
|
|
555
|
-
- Read `.specweave/config.json`
|
|
556
|
-
- If `externalPM.enabled = true` and `externalPM.tool` is set:
|
|
557
|
-
- Check if corresponding plugin installed (specweave-github, specweave-jira, or specweave-ado)
|
|
558
|
-
- Prepare to auto-create external issue/work item after increment creation
|
|
559
|
-
- If `externalPM.enabled = false` or not configured:
|
|
560
|
-
- Skip PM tool sync (local-only mode)
|
|
561
|
-
|
|
562
|
-
3. **Check if plugins are already installed**:
|
|
563
|
-
- For Claude Code: Check if plugin available via `/plugin list --installed`
|
|
564
|
-
- Skip already-installed plugins
|
|
565
|
-
|
|
566
|
-
4. **🚨 AUTOMATIC PLUGIN INSTALLATION** (if plugins detected):
|
|
567
|
-
|
|
568
|
-
**IMPORTANT**: When you detect required plugins, you MUST:
|
|
569
|
-
- ✅ Proactively offer to install them (not just suggest)
|
|
570
|
-
- ✅ Explain WHY each plugin is needed (based on detected keywords)
|
|
571
|
-
- ✅ Show clear install commands
|
|
572
|
-
- ✅ Remind user that plugins provide expert AI agents and capabilities
|
|
533
|
+
### Step 6: Check PM Tool Configuration (PM SYNC)
|
|
573
534
|
|
|
574
|
-
|
|
575
|
-
```
|
|
576
|
-
🔌 Detected plugin requirements from spec content:
|
|
535
|
+
**Purpose**: Check if external PM tool sync is configured for automatic increment tracking.
|
|
577
536
|
|
|
578
|
-
|
|
579
|
-
• specweave-github - GitHub Issues integration
|
|
580
|
-
Detected: "sync tasks to GitHub issues", "create pull requests"
|
|
581
|
-
Provides: GitHub sync, PR automation, issue tracking
|
|
582
|
-
→ Without this: Manual GitHub sync required
|
|
537
|
+
**Why This Matters**: PM tool integration enables automatic sync of increment progress to external systems (GitHub Issues, Jira, Azure DevOps).
|
|
583
538
|
|
|
584
|
-
|
|
585
|
-
Detected: "deploy to production cluster", "kubectl apply"
|
|
586
|
-
Provides: K8s expert agent, Helm chart generation, deployment validation
|
|
587
|
-
→ Without this: Manual K8s configuration, no validation
|
|
539
|
+
**⚠️ NOTE**: All SpecWeave plugins (19+) are already installed during `specweave init`. No plugin detection or installation needed!
|
|
588
540
|
|
|
589
|
-
|
|
590
|
-
• specweave-diagrams - Architecture diagrams
|
|
591
|
-
Detected: "system architecture", "component diagram"
|
|
592
|
-
Provides: Mermaid + C4 diagram generation
|
|
593
|
-
→ Without this: Manual diagram creation
|
|
541
|
+
**Check External PM Tool Configuration**:
|
|
594
542
|
|
|
595
|
-
|
|
596
|
-
|
|
597
|
-
|
|
598
|
-
|
|
599
|
-
|
|
600
|
-
|
|
601
|
-
|
|
602
|
-
💡 Benefits:
|
|
603
|
-
• Plugins provide specialized AI agents (GitHub expert, K8s expert, etc.)
|
|
604
|
-
• Skills auto-activate based on context (zero manual invocation)
|
|
605
|
-
• 70%+ context reduction (only load what you need)
|
|
606
|
-
• Best practices built-in (from real-world experience)
|
|
607
|
-
|
|
608
|
-
Would you like me to wait while you install these plugins? (Recommended)
|
|
609
|
-
Or shall I continue without them? (Limited capabilities)
|
|
610
|
-
```
|
|
611
|
-
|
|
612
|
-
**User Decision Points**:
|
|
613
|
-
- If user installs plugins → continue with full capabilities
|
|
614
|
-
- If user skips → continue but remind about limitations later
|
|
615
|
-
- NEVER block increment creation (plugins are enhancements, not requirements)
|
|
543
|
+
1. **Read `.specweave/config.json`**:
|
|
544
|
+
- If `externalPM.enabled = true` and `externalPM.tool` is set:
|
|
545
|
+
- Corresponding plugin is already installed (specweave-github, specweave-jira, or specweave-ado)
|
|
546
|
+
- Prepare to auto-create external issue/work item after increment creation
|
|
547
|
+
- If `externalPM.enabled = false` or not configured:
|
|
548
|
+
- Skip PM tool sync (local-only mode)
|
|
616
549
|
|
|
617
|
-
|
|
550
|
+
2. **Auto-Sync to PM Tool** (v0.8.0+):
|
|
618
551
|
|
|
619
552
|
**🚨 CRITICAL: SpecWeave Repo Dog-Food Requirement**:
|
|
620
553
|
- IF repo = "anton-abyzov/specweave"
|
|
@@ -683,10 +616,6 @@ Files:
|
|
|
683
616
|
• plan.md (technical architecture)
|
|
684
617
|
• tasks.md (implementation steps with embedded tests)
|
|
685
618
|
|
|
686
|
-
🔌 Plugin Detection:
|
|
687
|
-
Detected: "user authentication", "JWT tokens", "session management"
|
|
688
|
-
→ No additional plugins required
|
|
689
|
-
|
|
690
619
|
🔗 External PM Tool Sync:
|
|
691
620
|
Tool: GitHub Issues
|
|
692
621
|
Plugin: specweave-github ✅ Installed
|
|
@@ -706,7 +635,7 @@ Next steps:
|
|
|
706
635
|
```
|
|
707
636
|
|
|
708
637
|
**Integration with Existing Workflow**:
|
|
709
|
-
-
|
|
638
|
+
- All plugins are already installed during `specweave init` (no detection needed)
|
|
710
639
|
- PM tool sync is **automatic** if configured (zero manual intervention)
|
|
711
640
|
- Increment creation continues regardless of PM tool status
|
|
712
641
|
- This implements the "seamless integration" philosophy
|
|
@@ -178,10 +178,6 @@ For contributors working on SpecWeave itself:
|
|
|
178
178
|
- Install: `/plugin install specweave-diagrams`
|
|
179
179
|
- Provides: Architecture diagram generation, C4 model support
|
|
180
180
|
|
|
181
|
-
- **specweave-docs-preview** - Docusaurus documentation preview
|
|
182
|
-
- Install: `/plugin install specweave-docs-preview`
|
|
183
|
-
- Provides: Beautiful docs UI, hot reload, Mermaid rendering
|
|
184
|
-
|
|
185
181
|
---
|
|
186
182
|
|
|
187
183
|
## Common Mistakes to Avoid
|