specweave 0.18.0 → 0.20.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.md +229 -1817
- package/README.md +68 -0
- package/bin/specweave.js +62 -6
- package/dist/locales/de/.gitkeep +0 -0
- package/dist/locales/de/cli.json +108 -0
- package/dist/locales/en/cli.json +287 -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/lib/hooks/sync-living-docs.d.ts.map +1 -1
- package/dist/plugins/specweave/lib/hooks/sync-living-docs.js +3 -0
- package/dist/plugins/specweave/lib/hooks/sync-living-docs.js.map +1 -1
- package/dist/plugins/specweave/lib/hooks/update-ac-status.d.ts +21 -0
- package/dist/plugins/specweave/lib/hooks/update-ac-status.d.ts.map +1 -0
- package/dist/plugins/specweave/lib/hooks/update-ac-status.js +162 -0
- package/dist/plugins/specweave/lib/hooks/update-ac-status.js.map +1 -0
- package/dist/plugins/specweave-ado/lib/ado-spec-content-sync.d.ts.map +1 -1
- package/dist/plugins/specweave-ado/lib/ado-spec-content-sync.js +65 -6
- package/dist/plugins/specweave-ado/lib/ado-spec-content-sync.js.map +1 -1
- package/dist/plugins/specweave-ado/lib/enhanced-ado-sync.d.ts +25 -0
- package/dist/plugins/specweave-ado/lib/enhanced-ado-sync.d.ts.map +1 -0
- package/dist/plugins/specweave-ado/lib/enhanced-ado-sync.js +191 -0
- package/dist/plugins/specweave-ado/lib/enhanced-ado-sync.js.map +1 -0
- package/dist/plugins/specweave-github/lib/completion-calculator.d.ts +112 -0
- package/dist/plugins/specweave-github/lib/completion-calculator.d.ts.map +1 -0
- package/dist/plugins/specweave-github/lib/completion-calculator.js +301 -0
- package/dist/plugins/specweave-github/lib/completion-calculator.js.map +1 -0
- package/dist/plugins/specweave-github/lib/duplicate-detector.d.ts +3 -3
- package/dist/plugins/specweave-github/lib/duplicate-detector.js +3 -3
- package/dist/plugins/specweave-github/lib/epic-content-builder.d.ts +70 -0
- package/dist/plugins/specweave-github/lib/epic-content-builder.d.ts.map +1 -0
- package/dist/plugins/specweave-github/lib/epic-content-builder.js +258 -0
- package/dist/plugins/specweave-github/lib/epic-content-builder.js.map +1 -0
- package/dist/plugins/specweave-github/lib/github-client-v2.d.ts +14 -0
- package/dist/plugins/specweave-github/lib/github-client-v2.d.ts.map +1 -1
- package/dist/plugins/specweave-github/lib/github-client-v2.js +51 -0
- package/dist/plugins/specweave-github/lib/github-client-v2.js.map +1 -1
- package/dist/plugins/specweave-github/lib/github-epic-sync.d.ts +2 -2
- package/dist/plugins/specweave-github/lib/github-epic-sync.d.ts.map +1 -1
- package/dist/plugins/specweave-github/lib/github-epic-sync.js +20 -5
- package/dist/plugins/specweave-github/lib/github-epic-sync.js.map +1 -1
- package/dist/plugins/specweave-github/lib/github-feature-sync.d.ts +87 -0
- package/dist/plugins/specweave-github/lib/github-feature-sync.d.ts.map +1 -0
- package/dist/plugins/specweave-github/lib/github-feature-sync.js +412 -0
- package/dist/plugins/specweave-github/lib/github-feature-sync.js.map +1 -0
- package/dist/plugins/specweave-github/lib/github-spec-content-sync.d.ts.map +1 -1
- package/dist/plugins/specweave-github/lib/github-spec-content-sync.js +64 -13
- package/dist/plugins/specweave-github/lib/github-spec-content-sync.js.map +1 -1
- package/dist/plugins/specweave-github/lib/progress-comment-builder.d.ts +78 -0
- package/dist/plugins/specweave-github/lib/progress-comment-builder.d.ts.map +1 -0
- package/dist/plugins/specweave-github/lib/progress-comment-builder.js +237 -0
- package/dist/plugins/specweave-github/lib/progress-comment-builder.js.map +1 -0
- package/dist/plugins/specweave-github/lib/user-story-content-builder.d.ts +97 -0
- package/dist/plugins/specweave-github/lib/user-story-content-builder.d.ts.map +1 -0
- package/dist/plugins/specweave-github/lib/user-story-content-builder.js +301 -0
- package/dist/plugins/specweave-github/lib/user-story-content-builder.js.map +1 -0
- package/dist/plugins/specweave-github/lib/user-story-issue-builder.d.ts +83 -0
- package/dist/plugins/specweave-github/lib/user-story-issue-builder.d.ts.map +1 -0
- package/dist/plugins/specweave-github/lib/user-story-issue-builder.js +386 -0
- package/dist/plugins/specweave-github/lib/user-story-issue-builder.js.map +1 -0
- package/dist/plugins/specweave-jira/lib/enhanced-jira-sync.d.ts +28 -0
- package/dist/plugins/specweave-jira/lib/enhanced-jira-sync.d.ts.map +1 -0
- package/dist/plugins/specweave-jira/lib/enhanced-jira-sync.js +156 -0
- package/dist/plugins/specweave-jira/lib/enhanced-jira-sync.js.map +1 -0
- package/dist/plugins/specweave-kafka/lib/cli/kcat-wrapper.d.ts +57 -0
- package/dist/plugins/specweave-kafka/lib/cli/kcat-wrapper.d.ts.map +1 -0
- package/dist/plugins/specweave-kafka/lib/cli/kcat-wrapper.js +248 -0
- package/dist/plugins/specweave-kafka/lib/cli/kcat-wrapper.js.map +1 -0
- package/dist/plugins/specweave-kafka/lib/cli/types.d.ts +82 -0
- package/dist/plugins/specweave-kafka/lib/cli/types.d.ts.map +1 -0
- package/dist/plugins/specweave-kafka/lib/cli/types.js +13 -0
- package/dist/plugins/specweave-kafka/lib/cli/types.js.map +1 -0
- package/dist/plugins/specweave-kafka/lib/mcp/detector.d.ts +49 -0
- package/dist/plugins/specweave-kafka/lib/mcp/detector.d.ts.map +1 -0
- package/dist/plugins/specweave-kafka/lib/mcp/detector.js +316 -0
- package/dist/plugins/specweave-kafka/lib/mcp/detector.js.map +1 -0
- package/dist/plugins/specweave-kafka/lib/mcp/types.d.ts +70 -0
- package/dist/plugins/specweave-kafka/lib/mcp/types.d.ts.map +1 -0
- package/dist/plugins/specweave-kafka/lib/mcp/types.js +23 -0
- package/dist/plugins/specweave-kafka/lib/mcp/types.js.map +1 -0
- package/dist/plugins/specweave-kafka/lib/utils/partitioning.d.ts +85 -0
- package/dist/plugins/specweave-kafka/lib/utils/partitioning.d.ts.map +1 -0
- package/dist/plugins/specweave-kafka/lib/utils/partitioning.js +281 -0
- package/dist/plugins/specweave-kafka/lib/utils/partitioning.js.map +1 -0
- package/dist/plugins/specweave-kafka/lib/utils/sizing.d.ts +75 -0
- package/dist/plugins/specweave-kafka/lib/utils/sizing.d.ts.map +1 -0
- package/dist/plugins/specweave-kafka/lib/utils/sizing.js +238 -0
- package/dist/plugins/specweave-kafka/lib/utils/sizing.js.map +1 -0
- package/dist/spec-parser.js +629 -0
- package/dist/src/cli/commands/import-docs.js +4 -4
- package/dist/src/cli/commands/import-docs.js.map +1 -1
- package/dist/src/cli/commands/init-multiproject.d.ts.map +1 -1
- package/dist/src/cli/commands/init-multiproject.js +17 -18
- package/dist/src/cli/commands/init-multiproject.js.map +1 -1
- package/dist/src/cli/commands/init.d.ts.map +1 -1
- package/dist/src/cli/commands/init.js +107 -3
- package/dist/src/cli/commands/init.js.map +1 -1
- package/dist/src/cli/commands/migrate-to-multiproject.d.ts.map +1 -1
- package/dist/src/cli/commands/migrate-to-multiproject.js +8 -4
- package/dist/src/cli/commands/migrate-to-multiproject.js.map +1 -1
- package/dist/src/cli/commands/switch-project.d.ts.map +1 -1
- package/dist/src/cli/commands/switch-project.js +9 -26
- package/dist/src/cli/commands/switch-project.js.map +1 -1
- package/dist/src/cli/commands/sync-spec-content.js +3 -0
- package/dist/src/cli/commands/sync-spec-content.js.map +1 -1
- package/dist/src/core/deduplication/command-deduplicator.d.ts +166 -0
- package/dist/src/core/deduplication/command-deduplicator.d.ts.map +1 -0
- package/dist/src/core/deduplication/command-deduplicator.js +254 -0
- package/dist/src/core/deduplication/command-deduplicator.js.map +1 -0
- package/dist/src/core/increment/active-increment-manager.d.ts +42 -15
- package/dist/src/core/increment/active-increment-manager.d.ts.map +1 -1
- package/dist/src/core/increment/active-increment-manager.js +113 -46
- package/dist/src/core/increment/active-increment-manager.js.map +1 -1
- package/dist/src/core/increment/conflict-resolver.d.ts +40 -0
- package/dist/src/core/increment/conflict-resolver.d.ts.map +1 -0
- package/dist/src/core/increment/conflict-resolver.js +219 -0
- package/dist/src/core/increment/conflict-resolver.js.map +1 -0
- package/dist/src/core/increment/discipline-checker.d.ts.map +1 -1
- package/dist/src/core/increment/discipline-checker.js +7 -1
- package/dist/src/core/increment/discipline-checker.js.map +1 -1
- package/dist/src/core/increment/duplicate-detector.d.ts +52 -0
- package/dist/src/core/increment/duplicate-detector.d.ts.map +1 -0
- package/dist/src/core/increment/duplicate-detector.js +276 -0
- package/dist/src/core/increment/duplicate-detector.js.map +1 -0
- package/dist/src/core/increment/increment-archiver.d.ts +90 -0
- package/dist/src/core/increment/increment-archiver.d.ts.map +1 -0
- package/dist/src/core/increment/increment-archiver.js +368 -0
- package/dist/src/core/increment/increment-archiver.js.map +1 -0
- package/dist/src/core/increment/increment-reopener.d.ts +165 -0
- package/dist/src/core/increment/increment-reopener.d.ts.map +1 -0
- package/dist/src/core/increment/increment-reopener.js +390 -0
- package/dist/src/core/increment/increment-reopener.js.map +1 -0
- package/dist/src/core/increment/metadata-manager.d.ts +26 -1
- package/dist/src/core/increment/metadata-manager.d.ts.map +1 -1
- package/dist/src/core/increment/metadata-manager.js +143 -5
- package/dist/src/core/increment/metadata-manager.js.map +1 -1
- package/dist/src/core/increment/recent-work-scanner.d.ts +121 -0
- package/dist/src/core/increment/recent-work-scanner.d.ts.map +1 -0
- package/dist/src/core/increment/recent-work-scanner.js +303 -0
- package/dist/src/core/increment/recent-work-scanner.js.map +1 -0
- package/dist/src/core/increment/types.d.ts +1 -0
- package/dist/src/core/increment/types.d.ts.map +1 -1
- package/dist/src/core/increment-utils.d.ts +112 -0
- package/dist/src/core/increment-utils.d.ts.map +1 -0
- package/dist/src/core/increment-utils.js +210 -0
- package/dist/src/core/increment-utils.js.map +1 -0
- package/dist/src/core/living-docs/ac-project-specific-generator.d.ts +65 -0
- package/dist/src/core/living-docs/ac-project-specific-generator.d.ts.map +1 -0
- package/dist/src/core/living-docs/ac-project-specific-generator.js +175 -0
- package/dist/src/core/living-docs/ac-project-specific-generator.js.map +1 -0
- package/dist/src/core/living-docs/feature-archiver.d.ts +130 -0
- package/dist/src/core/living-docs/feature-archiver.d.ts.map +1 -0
- package/dist/src/core/living-docs/feature-archiver.js +549 -0
- package/dist/src/core/living-docs/feature-archiver.js.map +1 -0
- package/dist/src/core/living-docs/feature-id-manager.d.ts +81 -0
- package/dist/src/core/living-docs/feature-id-manager.d.ts.map +1 -0
- package/dist/src/core/living-docs/feature-id-manager.js +339 -0
- package/dist/src/core/living-docs/feature-id-manager.js.map +1 -0
- package/dist/src/core/living-docs/hierarchy-mapper.d.ts +144 -83
- package/dist/src/core/living-docs/hierarchy-mapper.d.ts.map +1 -1
- package/dist/src/core/living-docs/hierarchy-mapper.js +488 -270
- package/dist/src/core/living-docs/hierarchy-mapper.js.map +1 -1
- package/dist/src/core/living-docs/index.d.ts +6 -0
- package/dist/src/core/living-docs/index.d.ts.map +1 -1
- package/dist/src/core/living-docs/index.js +6 -0
- package/dist/src/core/living-docs/index.js.map +1 -1
- package/dist/src/core/living-docs/project-detector.d.ts +6 -0
- package/dist/src/core/living-docs/project-detector.d.ts.map +1 -1
- package/dist/src/core/living-docs/project-detector.js +35 -1
- package/dist/src/core/living-docs/project-detector.js.map +1 -1
- package/dist/src/core/living-docs/spec-distributor.d.ts +100 -26
- package/dist/src/core/living-docs/spec-distributor.d.ts.map +1 -1
- package/dist/src/core/living-docs/spec-distributor.js +1275 -258
- package/dist/src/core/living-docs/spec-distributor.js.map +1 -1
- package/dist/src/core/living-docs/task-project-specific-generator.d.ts +109 -0
- package/dist/src/core/living-docs/task-project-specific-generator.d.ts.map +1 -0
- package/dist/src/core/living-docs/task-project-specific-generator.js +221 -0
- package/dist/src/core/living-docs/task-project-specific-generator.js.map +1 -0
- package/dist/src/core/living-docs/types.d.ts +143 -0
- package/dist/src/core/living-docs/types.d.ts.map +1 -1
- package/dist/src/core/project-manager.d.ts +2 -17
- package/dist/src/core/project-manager.d.ts.map +1 -1
- package/dist/src/core/project-manager.js +68 -48
- package/dist/src/core/project-manager.js.map +1 -1
- package/dist/src/core/spec-content-sync.d.ts +1 -1
- package/dist/src/core/spec-content-sync.d.ts.map +1 -1
- package/dist/src/core/sync/enhanced-content-builder.d.ts +32 -54
- package/dist/src/core/sync/enhanced-content-builder.d.ts.map +1 -1
- package/dist/src/core/sync/enhanced-content-builder.js +142 -138
- package/dist/src/core/sync/enhanced-content-builder.js.map +1 -1
- package/dist/src/core/sync/performance-optimizer.d.ts +153 -0
- package/dist/src/core/sync/performance-optimizer.d.ts.map +1 -0
- package/dist/src/core/sync/performance-optimizer.js +220 -0
- package/dist/src/core/sync/performance-optimizer.js.map +1 -0
- package/dist/src/core/sync/retry-handler.d.ts +98 -0
- package/dist/src/core/sync/retry-handler.d.ts.map +1 -0
- package/dist/src/core/sync/retry-handler.js +196 -0
- package/dist/src/core/sync/retry-handler.js.map +1 -0
- package/dist/src/core/sync/spec-content-sync.d.ts +88 -0
- package/dist/src/core/sync/spec-content-sync.d.ts.map +1 -0
- package/dist/src/core/sync/spec-content-sync.js +5 -0
- package/dist/src/core/sync/spec-content-sync.js.map +1 -0
- package/dist/src/core/sync/types.d.ts +52 -0
- package/dist/src/core/sync/types.d.ts.map +1 -0
- package/dist/src/core/sync/types.js +5 -0
- package/dist/src/core/sync/types.js.map +1 -0
- package/dist/src/core/types/config.d.ts +125 -0
- package/dist/src/core/types/config.d.ts.map +1 -1
- package/dist/src/core/types/config.js +25 -0
- package/dist/src/core/types/config.js.map +1 -1
- package/dist/src/core/types/increment-metadata.d.ts +10 -0
- package/dist/src/core/types/increment-metadata.d.ts.map +1 -1
- package/dist/src/core/types/increment-metadata.js +10 -1
- package/dist/src/core/types/increment-metadata.js.map +1 -1
- package/dist/src/integrations/jira/jira-incremental-mapper.d.ts.map +1 -1
- package/dist/src/integrations/jira/jira-incremental-mapper.js +4 -8
- package/dist/src/integrations/jira/jira-incremental-mapper.js.map +1 -1
- package/dist/src/integrations/jira/jira-mapper.d.ts.map +1 -1
- package/dist/src/integrations/jira/jira-mapper.js +4 -8
- package/dist/src/integrations/jira/jira-mapper.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -0
- package/package.json +1 -1
- package/plugins/specweave/COMMANDS.md +13 -4
- package/plugins/specweave/agents/pm/AGENT.md +159 -12
- package/plugins/specweave/commands/specweave-abandon.md +22 -20
- package/plugins/specweave/commands/specweave-archive-features.md +121 -0
- package/plugins/specweave/commands/specweave-archive-increments.md +82 -0
- package/plugins/specweave/commands/specweave-archive.md +363 -0
- package/plugins/specweave/commands/specweave-backlog.md +211 -0
- package/plugins/specweave/commands/specweave-fix-duplicates.md +517 -0
- package/plugins/specweave/commands/specweave-increment.md +4 -3
- package/plugins/specweave/commands/specweave-progress.md +176 -27
- package/plugins/specweave/commands/specweave-reopen.md +391 -0
- package/plugins/specweave/commands/specweave-restore-feature.md +90 -0
- package/plugins/specweave/commands/specweave-restore.md +309 -0
- package/plugins/specweave/commands/specweave-resume.md +51 -23
- package/plugins/specweave/commands/specweave-status.md +41 -7
- package/plugins/specweave/commands/specweave-sync-specs.md +425 -0
- package/plugins/specweave/commands/specweave.md +70 -405
- package/plugins/specweave/hooks/hooks.json +4 -0
- package/plugins/specweave/hooks/lib/sync-spec-content.sh +2 -2
- package/plugins/specweave/hooks/post-increment-planning.sh +26 -2
- package/plugins/specweave/hooks/post-task-completion.sh +39 -0
- package/plugins/specweave/hooks/pre-command-deduplication.sh +83 -0
- package/plugins/specweave/hooks/user-prompt-submit.sh +1 -1
- package/plugins/specweave/lib/hooks/sync-living-docs.js +2 -0
- package/plugins/specweave/lib/hooks/sync-living-docs.ts +4 -0
- package/plugins/specweave/lib/hooks/update-ac-status.js +102 -0
- package/plugins/specweave/lib/hooks/update-ac-status.ts +192 -0
- package/plugins/specweave/skills/archive-increments/SKILL.md +198 -0
- package/plugins/specweave/skills/increment-planner/scripts/feature-utils.js +14 -0
- package/plugins/specweave/skills/smart-reopen-detector/SKILL.md +244 -0
- package/plugins/specweave-ado/lib/ado-spec-content-sync.js +49 -5
- package/plugins/specweave-ado/lib/ado-spec-content-sync.ts +72 -6
- package/plugins/specweave-ado/lib/enhanced-ado-sync.js +170 -0
- package/plugins/specweave-confluent/.claude-plugin/plugin.json +23 -0
- package/plugins/specweave-confluent/README.md +375 -0
- package/plugins/specweave-confluent/agents/confluent-architect/AGENT.md +306 -0
- package/plugins/specweave-confluent/skills/confluent-kafka-connect/SKILL.md +453 -0
- package/plugins/specweave-confluent/skills/confluent-ksqldb/SKILL.md +470 -0
- package/plugins/specweave-confluent/skills/confluent-schema-registry/SKILL.md +316 -0
- package/plugins/specweave-github/agents/github-task-splitter/AGENT.md +2 -2
- package/plugins/specweave-github/agents/user-story-updater/AGENT.md +148 -0
- package/plugins/specweave-github/commands/specweave-github-cleanup-duplicates.md +1 -1
- package/plugins/specweave-github/commands/specweave-github-update-user-story.md +156 -0
- package/plugins/specweave-github/hooks/post-task-completion.sh +42 -9
- package/plugins/specweave-github/lib/completion-calculator.js +262 -0
- package/plugins/specweave-github/lib/completion-calculator.ts +434 -0
- package/plugins/specweave-github/lib/duplicate-detector.js +3 -3
- package/plugins/specweave-github/lib/duplicate-detector.ts +4 -4
- package/plugins/specweave-github/lib/epic-content-builder.js +265 -0
- package/plugins/specweave-github/lib/epic-content-builder.ts +376 -0
- package/plugins/specweave-github/lib/github-client-v2.js +49 -0
- package/plugins/specweave-github/lib/github-client-v2.ts +59 -0
- package/plugins/specweave-github/lib/github-epic-sync.js +23 -24
- package/plugins/specweave-github/lib/github-epic-sync.ts +30 -5
- package/plugins/specweave-github/lib/github-feature-sync.js +381 -0
- package/plugins/specweave-github/lib/github-feature-sync.ts +568 -0
- package/plugins/specweave-github/lib/github-spec-content-sync.js +40 -10
- package/plugins/specweave-github/lib/github-spec-content-sync.ts +82 -14
- package/plugins/specweave-github/lib/progress-comment-builder.js +229 -0
- package/plugins/specweave-github/lib/progress-comment-builder.ts +324 -0
- package/plugins/specweave-github/lib/user-story-content-builder.js +299 -0
- package/plugins/specweave-github/lib/user-story-content-builder.ts +413 -0
- package/plugins/specweave-github/lib/user-story-issue-builder.js +344 -0
- package/plugins/specweave-github/lib/user-story-issue-builder.ts +543 -0
- package/plugins/specweave-github/skills/github-issue-standard/SKILL.md +189 -0
- package/plugins/specweave-jira/lib/enhanced-jira-sync.js +134 -0
- package/plugins/specweave-jira/lib/{enhanced-jira-sync.ts.disabled → enhanced-jira-sync.ts} +26 -52
- package/plugins/specweave-kafka/.claude-plugin/plugin.json +26 -0
- package/plugins/specweave-kafka/IMPLEMENTATION-COMPLETE.md +483 -0
- package/plugins/specweave-kafka/README.md +242 -0
- package/plugins/specweave-kafka/agents/kafka-architect/AGENT.md +235 -0
- package/plugins/specweave-kafka/agents/kafka-devops/AGENT.md +209 -0
- package/plugins/specweave-kafka/agents/kafka-observability/AGENT.md +266 -0
- package/plugins/specweave-kafka/commands/deploy.md +99 -0
- package/plugins/specweave-kafka/commands/dev-env.md +176 -0
- package/plugins/specweave-kafka/commands/mcp-configure.md +101 -0
- package/plugins/specweave-kafka/commands/monitor-setup.md +96 -0
- package/plugins/specweave-kafka/docker/kafka-local/docker-compose.yml +187 -0
- package/plugins/specweave-kafka/docker/redpanda/docker-compose.yml +199 -0
- package/plugins/specweave-kafka/docker/templates/consumer-nodejs.js +225 -0
- package/plugins/specweave-kafka/docker/templates/consumer-python.py +220 -0
- package/plugins/specweave-kafka/docker/templates/producer-nodejs.js +168 -0
- package/plugins/specweave-kafka/docker/templates/producer-python.py +167 -0
- package/plugins/specweave-kafka/lib/adapters/apache-kafka-adapter.js +438 -0
- package/plugins/specweave-kafka/lib/adapters/apache-kafka-adapter.ts +541 -0
- package/plugins/specweave-kafka/lib/adapters/platform-adapter.js +47 -0
- package/plugins/specweave-kafka/lib/adapters/platform-adapter.ts +343 -0
- package/plugins/specweave-kafka/lib/cli/kcat-wrapper.js +258 -0
- package/plugins/specweave-kafka/lib/cli/kcat-wrapper.ts +298 -0
- package/plugins/specweave-kafka/lib/cli/types.js +10 -0
- package/plugins/specweave-kafka/lib/cli/types.ts +92 -0
- package/plugins/specweave-kafka/lib/connectors/connector-catalog.js +305 -0
- package/plugins/specweave-kafka/lib/connectors/connector-catalog.ts +528 -0
- package/plugins/specweave-kafka/lib/documentation/diagram-generator.js +114 -0
- package/plugins/specweave-kafka/lib/documentation/diagram-generator.ts +195 -0
- package/plugins/specweave-kafka/lib/documentation/exporter.js +210 -0
- package/plugins/specweave-kafka/lib/documentation/exporter.ts +338 -0
- package/plugins/specweave-kafka/lib/documentation/schema-catalog-generator.js +60 -0
- package/plugins/specweave-kafka/lib/documentation/schema-catalog-generator.ts +130 -0
- package/plugins/specweave-kafka/lib/documentation/topology-generator.js +143 -0
- package/plugins/specweave-kafka/lib/documentation/topology-generator.ts +290 -0
- package/plugins/specweave-kafka/lib/mcp/detector.js +298 -0
- package/plugins/specweave-kafka/lib/mcp/detector.ts +352 -0
- package/plugins/specweave-kafka/lib/mcp/types.js +21 -0
- package/plugins/specweave-kafka/lib/mcp/types.ts +77 -0
- package/plugins/specweave-kafka/lib/multi-cluster/cluster-config-manager.js +193 -0
- package/plugins/specweave-kafka/lib/multi-cluster/cluster-config-manager.ts +362 -0
- package/plugins/specweave-kafka/lib/multi-cluster/cluster-switcher.js +188 -0
- package/plugins/specweave-kafka/lib/multi-cluster/cluster-switcher.ts +359 -0
- package/plugins/specweave-kafka/lib/multi-cluster/health-aggregator.js +195 -0
- package/plugins/specweave-kafka/lib/multi-cluster/health-aggregator.ts +380 -0
- package/plugins/specweave-kafka/lib/observability/opentelemetry-kafka.js +209 -0
- package/plugins/specweave-kafka/lib/observability/opentelemetry-kafka.ts +358 -0
- package/plugins/specweave-kafka/lib/patterns/advanced-ksqldb-patterns.js +354 -0
- package/plugins/specweave-kafka/lib/patterns/advanced-ksqldb-patterns.ts +563 -0
- package/plugins/specweave-kafka/lib/patterns/circuit-breaker-resilience.js +259 -0
- package/plugins/specweave-kafka/lib/patterns/circuit-breaker-resilience.ts +516 -0
- package/plugins/specweave-kafka/lib/patterns/dead-letter-queue.js +233 -0
- package/plugins/specweave-kafka/lib/patterns/dead-letter-queue.ts +423 -0
- package/plugins/specweave-kafka/lib/patterns/exactly-once-semantics.js +266 -0
- package/plugins/specweave-kafka/lib/patterns/exactly-once-semantics.ts +445 -0
- package/plugins/specweave-kafka/lib/patterns/flink-kafka-integration.js +312 -0
- package/plugins/specweave-kafka/lib/patterns/flink-kafka-integration.ts +561 -0
- package/plugins/specweave-kafka/lib/patterns/multi-dc-replication.js +289 -0
- package/plugins/specweave-kafka/lib/patterns/multi-dc-replication.ts +607 -0
- package/plugins/specweave-kafka/lib/patterns/rate-limiting-backpressure.js +264 -0
- package/plugins/specweave-kafka/lib/patterns/rate-limiting-backpressure.ts +498 -0
- package/plugins/specweave-kafka/lib/patterns/stream-processing-optimization.js +263 -0
- package/plugins/specweave-kafka/lib/patterns/stream-processing-optimization.ts +549 -0
- package/plugins/specweave-kafka/lib/patterns/tiered-storage-compaction.js +205 -0
- package/plugins/specweave-kafka/lib/patterns/tiered-storage-compaction.ts +399 -0
- package/plugins/specweave-kafka/lib/performance/performance-optimizer.js +249 -0
- package/plugins/specweave-kafka/lib/performance/performance-optimizer.ts +427 -0
- package/plugins/specweave-kafka/lib/security/kafka-security.js +252 -0
- package/plugins/specweave-kafka/lib/security/kafka-security.ts +494 -0
- package/plugins/specweave-kafka/lib/utils/capacity-planner.js +203 -0
- package/plugins/specweave-kafka/lib/utils/capacity-planner.ts +469 -0
- package/plugins/specweave-kafka/lib/utils/config-validator.js +419 -0
- package/plugins/specweave-kafka/lib/utils/config-validator.ts +564 -0
- package/plugins/specweave-kafka/lib/utils/partitioning.js +329 -0
- package/plugins/specweave-kafka/lib/utils/partitioning.ts +473 -0
- package/plugins/specweave-kafka/lib/utils/sizing.js +221 -0
- package/plugins/specweave-kafka/lib/utils/sizing.ts +374 -0
- package/plugins/specweave-kafka/monitoring/grafana/dashboards/kafka-broker-metrics.json +628 -0
- package/plugins/specweave-kafka/monitoring/grafana/dashboards/kafka-cluster-overview.json +564 -0
- package/plugins/specweave-kafka/monitoring/grafana/dashboards/kafka-consumer-lag.json +509 -0
- package/plugins/specweave-kafka/monitoring/grafana/dashboards/kafka-jvm-metrics.json +674 -0
- package/plugins/specweave-kafka/monitoring/grafana/dashboards/kafka-topic-metrics.json +578 -0
- package/plugins/specweave-kafka/monitoring/grafana/provisioning/dashboards/kafka.yml +17 -0
- package/plugins/specweave-kafka/monitoring/grafana/provisioning/datasources/prometheus.yml +17 -0
- package/plugins/specweave-kafka/monitoring/prometheus/kafka-alerts.yml +415 -0
- package/plugins/specweave-kafka/monitoring/prometheus/kafka-jmx-exporter.yml +256 -0
- package/plugins/specweave-kafka/package.json +41 -0
- package/plugins/specweave-kafka/skills/kafka-architecture/SKILL.md +647 -0
- package/plugins/specweave-kafka/skills/kafka-cli-tools/SKILL.md +433 -0
- package/plugins/specweave-kafka/skills/kafka-iac-deployment/SKILL.md +449 -0
- package/plugins/specweave-kafka/skills/kafka-kubernetes/SKILL.md +667 -0
- package/plugins/specweave-kafka/skills/kafka-mcp-integration/SKILL.md +273 -0
- package/plugins/specweave-kafka/skills/kafka-observability/SKILL.md +576 -0
- package/plugins/specweave-kafka/templates/config/broker-production.properties +254 -0
- package/plugins/specweave-kafka/templates/config/consumer-low-latency.properties +112 -0
- package/plugins/specweave-kafka/templates/config/producer-high-throughput.properties +120 -0
- package/plugins/specweave-kafka/templates/migration/mirrormaker2-config.properties +234 -0
- package/plugins/specweave-kafka/templates/monitoring/grafana/multi-cluster-dashboard.json +686 -0
- package/plugins/specweave-kafka/terraform/apache-kafka/main.tf +347 -0
- package/plugins/specweave-kafka/terraform/apache-kafka/outputs.tf +107 -0
- package/plugins/specweave-kafka/terraform/apache-kafka/templates/kafka-broker-init.sh.tpl +216 -0
- package/plugins/specweave-kafka/terraform/apache-kafka/variables.tf +156 -0
- package/plugins/specweave-kafka/terraform/aws-msk/main.tf +362 -0
- package/plugins/specweave-kafka/terraform/aws-msk/outputs.tf +93 -0
- package/plugins/specweave-kafka/terraform/aws-msk/templates/server.properties.tpl +32 -0
- package/plugins/specweave-kafka/terraform/aws-msk/variables.tf +235 -0
- package/plugins/specweave-kafka/terraform/azure-event-hubs/main.tf +281 -0
- package/plugins/specweave-kafka/terraform/azure-event-hubs/outputs.tf +118 -0
- package/plugins/specweave-kafka/terraform/azure-event-hubs/variables.tf +148 -0
- package/plugins/specweave-kafka/tsconfig.json +21 -0
- package/plugins/specweave-kafka-streams/.claude-plugin/plugin.json +23 -0
- package/plugins/specweave-kafka-streams/README.md +310 -0
- package/plugins/specweave-kafka-streams/skills/kafka-streams-topology/SKILL.md +539 -0
- package/plugins/specweave-n8n/.claude-plugin/plugin.json +22 -0
- package/plugins/specweave-n8n/README.md +354 -0
- package/plugins/specweave-n8n/skills/n8n-kafka-workflows/SKILL.md +504 -0
- package/plugins/specweave-release/commands/specweave-release-platform.md +1 -1
- package/plugins/specweave-release/hooks/post-task-completion.sh +2 -2
- package/src/templates/AGENTS.md.template +601 -7
- package/src/templates/CLAUDE.md.template +188 -88
- package/plugins/specweave-ado/commands/specweave-ado-sync-spec.md +0 -255
- package/plugins/specweave-github/commands/specweave-github-sync-epic.md +0 -248
- package/plugins/specweave-github/commands/specweave-github-sync-from.md +0 -147
- package/plugins/specweave-github/commands/specweave-github-sync-spec.md +0 -208
- package/plugins/specweave-github/commands/specweave-github-sync-tasks.md +0 -530
- package/plugins/specweave-jira/commands/specweave-jira-sync-epic.md +0 -267
- package/plugins/specweave-jira/commands/specweave-jira-sync-spec.md +0 -240
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: specweave-archive-increments
|
|
3
|
+
description: Archive completed increments to keep workspace clean
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Archive Increments Command
|
|
7
|
+
|
|
8
|
+
Archives completed increments to `_archive/` folder, keeping only the most recent N increments in the main folder.
|
|
9
|
+
|
|
10
|
+
## Usage
|
|
11
|
+
|
|
12
|
+
```bash
|
|
13
|
+
# Interactive mode - prompts for options
|
|
14
|
+
/specweave:archive-increments
|
|
15
|
+
|
|
16
|
+
# Keep last 5 increments, archive the rest
|
|
17
|
+
/specweave:archive-increments --keep-last 5
|
|
18
|
+
|
|
19
|
+
# Archive specific increments
|
|
20
|
+
/specweave:archive-increments --increments 0001,0002,0003
|
|
21
|
+
|
|
22
|
+
# Dry run - see what would be archived without moving
|
|
23
|
+
/specweave:archive-increments --dry-run
|
|
24
|
+
|
|
25
|
+
# Archive all completed increments older than 30 days
|
|
26
|
+
/specweave:archive-increments --older-than 30d
|
|
27
|
+
|
|
28
|
+
# Keep only active/paused, archive all completed
|
|
29
|
+
/specweave:archive-increments --archive-completed
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
## Default Behavior
|
|
33
|
+
|
|
34
|
+
- Keeps last 10 increments by default
|
|
35
|
+
- Preserves all active/paused increments
|
|
36
|
+
- Never archives abandoned increments (they stay in `_abandoned/`)
|
|
37
|
+
- Creates `_archive/` folder if it doesn't exist
|
|
38
|
+
- Preserves increment structure and all contents
|
|
39
|
+
|
|
40
|
+
## Smart Detection
|
|
41
|
+
|
|
42
|
+
The command intelligently:
|
|
43
|
+
- Checks increment status from metadata.json
|
|
44
|
+
- Preserves increments with active GitHub/JIRA/ADO issues
|
|
45
|
+
- Warns before archiving increments with uncommitted changes
|
|
46
|
+
- Groups related increments (e.g., all v0.8.0 stabilization increments)
|
|
47
|
+
|
|
48
|
+
## Configuration
|
|
49
|
+
|
|
50
|
+
Set defaults in `.specweave/config.json`:
|
|
51
|
+
|
|
52
|
+
```json
|
|
53
|
+
{
|
|
54
|
+
"archiving": {
|
|
55
|
+
"keepLast": 10,
|
|
56
|
+
"autoArchive": true,
|
|
57
|
+
"archiveAfterDays": 60,
|
|
58
|
+
"preserveActive": true,
|
|
59
|
+
"archiveCompleted": true
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
## Examples
|
|
65
|
+
|
|
66
|
+
### Keep workspace clean
|
|
67
|
+
```bash
|
|
68
|
+
# Archive all but last 5 increments
|
|
69
|
+
/specweave:archive-increments --keep-last 5
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
### Prepare for release
|
|
73
|
+
```bash
|
|
74
|
+
# Archive all v0.7.x increments after v0.8.0 release
|
|
75
|
+
/specweave:archive-increments --pattern "v0.7"
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
### Clean old work
|
|
79
|
+
```bash
|
|
80
|
+
# Archive increments older than 2 months
|
|
81
|
+
/specweave:archive-increments --older-than 60d
|
|
82
|
+
```
|
|
@@ -0,0 +1,363 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: specweave:archive
|
|
3
|
+
description: Manually archive completed increments - NEVER auto-archives, explicit user action only
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Archive Increments (Manual Only)
|
|
7
|
+
|
|
8
|
+
**CRITICAL POLICY**: Increments are **NEVER** auto-archived. Archiving is **MANUAL ONLY** and requires explicit user action via this command.
|
|
9
|
+
|
|
10
|
+
## Philosophy
|
|
11
|
+
|
|
12
|
+
**Keep recent work visible** - Completed increments remain in the main folder for easy reference until you explicitly archive them. This allows:
|
|
13
|
+
- ✅ Quick reference to recent implementations
|
|
14
|
+
- ✅ Easy linking in new increments
|
|
15
|
+
- ✅ Visible completion history
|
|
16
|
+
- ✅ ~10-20 completed increments available without searching archives
|
|
17
|
+
|
|
18
|
+
## Usage
|
|
19
|
+
|
|
20
|
+
```bash
|
|
21
|
+
# Archive specific increment
|
|
22
|
+
/specweave:archive 0031
|
|
23
|
+
|
|
24
|
+
# Archive multiple increments
|
|
25
|
+
/specweave:archive 0001 0002 0003
|
|
26
|
+
|
|
27
|
+
# Archive all completed increments older than N days
|
|
28
|
+
/specweave:archive --older-than 90
|
|
29
|
+
|
|
30
|
+
# Keep last N increments, archive the rest
|
|
31
|
+
/specweave:archive --keep-last 10
|
|
32
|
+
|
|
33
|
+
# Archive by pattern
|
|
34
|
+
/specweave:archive --pattern "auth-*"
|
|
35
|
+
|
|
36
|
+
# Dry run (preview without archiving)
|
|
37
|
+
/specweave:archive --dry-run --older-than 90
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
## Options
|
|
41
|
+
|
|
42
|
+
- `<increment-ids>`: Specific increment IDs to archive (e.g., "1", "0001", "0031")
|
|
43
|
+
- `--older-than <days>`: Archive increments older than N days
|
|
44
|
+
- `--keep-last <n>`: Keep last N increments, archive the rest (default: 10)
|
|
45
|
+
- `--pattern <regex>`: Archive increments matching pattern
|
|
46
|
+
- `--archive-completed`: Archive all completed increments (use with caution!)
|
|
47
|
+
- `--preserve-active`: Never archive active/paused increments (default: true)
|
|
48
|
+
- `--dry-run`: Show what would be archived without moving files
|
|
49
|
+
|
|
50
|
+
## Archive Rules
|
|
51
|
+
|
|
52
|
+
### Increments are archived when:
|
|
53
|
+
1. Explicitly specified by ID (e.g., `/specweave:archive 0031`)
|
|
54
|
+
2. Match age criteria (e.g., `--older-than 90`)
|
|
55
|
+
3. Match pattern criteria (e.g., `--pattern "old-*"`)
|
|
56
|
+
4. Not in last N increments (e.g., `--keep-last 10`)
|
|
57
|
+
|
|
58
|
+
### Safety Checks (Always Applied):
|
|
59
|
+
- ✅ **Active/paused protection**: Never archive active or paused increments
|
|
60
|
+
- ✅ **External sync protection**: Skip increments with open GitHub/JIRA/ADO issues
|
|
61
|
+
- ✅ **Uncommitted changes**: Warn if git has uncommitted changes
|
|
62
|
+
- ✅ **Duplicate prevention**: Refuse if increment already exists in archive
|
|
63
|
+
|
|
64
|
+
### Archive Structure:
|
|
65
|
+
```
|
|
66
|
+
.specweave/increments/
|
|
67
|
+
├── 0030-recent-work/ # Active/recent increments
|
|
68
|
+
├── 0031-recent-work/ # Stay visible for reference
|
|
69
|
+
├── 0032-recent-work/
|
|
70
|
+
├── 0033-recent-work/
|
|
71
|
+
│
|
|
72
|
+
├── _archive/ # Archived increments
|
|
73
|
+
│ ├── 0001-old-work/ # Manually archived
|
|
74
|
+
│ ├── 0002-old-work/
|
|
75
|
+
│ └── 0003-old-work/
|
|
76
|
+
│
|
|
77
|
+
└── _abandoned/ # Abandoned work (separate)
|
|
78
|
+
└── 0004-abandoned-work/
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
## Examples
|
|
82
|
+
|
|
83
|
+
### Example 1: Archive Specific Increment
|
|
84
|
+
|
|
85
|
+
```bash
|
|
86
|
+
/specweave:archive 0031
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
**Output**:
|
|
90
|
+
```
|
|
91
|
+
📦 Archiving increments...
|
|
92
|
+
|
|
93
|
+
Checking increment 0031-external-tool-status-sync...
|
|
94
|
+
✓ Status: completed
|
|
95
|
+
✓ No active external sync
|
|
96
|
+
✓ No uncommitted changes
|
|
97
|
+
✓ Not already in archive
|
|
98
|
+
|
|
99
|
+
✅ Archived: 0031-external-tool-status-sync
|
|
100
|
+
Location: .specweave/increments/_archive/0031-external-tool-status-sync/
|
|
101
|
+
|
|
102
|
+
📊 Archive Statistics:
|
|
103
|
+
Active: 32 increments
|
|
104
|
+
Archived: 31 increments (+ 1 new)
|
|
105
|
+
|
|
106
|
+
Next: /specweave:restore 0031 (if you need to unarchive)
|
|
107
|
+
```
|
|
108
|
+
|
|
109
|
+
### Example 2: Archive Old Increments (Keep Last 10)
|
|
110
|
+
|
|
111
|
+
```bash
|
|
112
|
+
/specweave:archive --keep-last 10
|
|
113
|
+
```
|
|
114
|
+
|
|
115
|
+
**Output**:
|
|
116
|
+
```
|
|
117
|
+
📦 Archiving increments (keeping last 10)...
|
|
118
|
+
|
|
119
|
+
Found 33 total increments
|
|
120
|
+
Keeping: 0024-0033 (last 10)
|
|
121
|
+
Candidates for archive: 0001-0023 (23 increments)
|
|
122
|
+
|
|
123
|
+
Filtering by status and safety checks...
|
|
124
|
+
✓ 0001-core-framework (completed, no blockers)
|
|
125
|
+
✓ 0002-plugin-system (completed, no blockers)
|
|
126
|
+
...
|
|
127
|
+
⚠ 0015-auth-service (GitHub issue still open) - SKIPPED
|
|
128
|
+
✓ 0016-payment-integration (completed, no blockers)
|
|
129
|
+
...
|
|
130
|
+
|
|
131
|
+
✅ Archived: 22 increments
|
|
132
|
+
⚠️ Skipped: 1 increment (external sync active)
|
|
133
|
+
|
|
134
|
+
📊 Archive Statistics:
|
|
135
|
+
Active: 11 increments (10 recent + 1 with open issue)
|
|
136
|
+
Archived: 53 increments (+ 22 new)
|
|
137
|
+
Total size: 245 MB
|
|
138
|
+
```
|
|
139
|
+
|
|
140
|
+
### Example 3: Dry Run (Preview)
|
|
141
|
+
|
|
142
|
+
```bash
|
|
143
|
+
/specweave:archive --older-than 90 --dry-run
|
|
144
|
+
```
|
|
145
|
+
|
|
146
|
+
**Output**:
|
|
147
|
+
```
|
|
148
|
+
🔍 DRY RUN - No files will be moved
|
|
149
|
+
|
|
150
|
+
Increments older than 90 days:
|
|
151
|
+
[DRY RUN] Would archive: 0001-core-framework (152 days old)
|
|
152
|
+
[DRY RUN] Would archive: 0002-plugin-system (148 days old)
|
|
153
|
+
[DRY RUN] Would archive: 0003-auth-service (145 days old)
|
|
154
|
+
[DRY RUN] Would skip: 0004-payment (GitHub issue open)
|
|
155
|
+
|
|
156
|
+
Summary:
|
|
157
|
+
Would archive: 18 increments
|
|
158
|
+
Would skip: 5 increments (active sync)
|
|
159
|
+
Total size: 180 MB
|
|
160
|
+
|
|
161
|
+
Run without --dry-run to proceed:
|
|
162
|
+
/specweave:archive --older-than 90
|
|
163
|
+
```
|
|
164
|
+
|
|
165
|
+
### Example 4: Archive by Pattern
|
|
166
|
+
|
|
167
|
+
```bash
|
|
168
|
+
/specweave:archive --pattern "auth-|payment-|legacy-"
|
|
169
|
+
```
|
|
170
|
+
|
|
171
|
+
**Output**:
|
|
172
|
+
```
|
|
173
|
+
📦 Archiving increments matching pattern: auth-|payment-|legacy-
|
|
174
|
+
|
|
175
|
+
Found matches:
|
|
176
|
+
✓ 0015-auth-service
|
|
177
|
+
✓ 0016-payment-integration
|
|
178
|
+
✓ 0007-legacy-migration
|
|
179
|
+
⚠ 0025-auth-enhancements (still active) - SKIPPED
|
|
180
|
+
|
|
181
|
+
✅ Archived: 3 increments
|
|
182
|
+
⚠️ Skipped: 1 increment (active)
|
|
183
|
+
|
|
184
|
+
📊 Archive Statistics:
|
|
185
|
+
Active: 30 increments
|
|
186
|
+
Archived: 34 increments (+ 3 new)
|
|
187
|
+
```
|
|
188
|
+
|
|
189
|
+
## Error Handling
|
|
190
|
+
|
|
191
|
+
### Increment Already Archived
|
|
192
|
+
|
|
193
|
+
```
|
|
194
|
+
❌ Error: Increment 0031 already exists in archive
|
|
195
|
+
|
|
196
|
+
Location: .specweave/increments/_archive/0031-external-tool-status-sync/
|
|
197
|
+
|
|
198
|
+
Options:
|
|
199
|
+
1. Delete from archive first, then retry
|
|
200
|
+
2. Restore from archive: /specweave:restore 0031
|
|
201
|
+
3. Resolve duplicates: /specweave:fix-duplicates
|
|
202
|
+
```
|
|
203
|
+
|
|
204
|
+
### Active Increment Protection
|
|
205
|
+
|
|
206
|
+
```
|
|
207
|
+
⚠️ Cannot archive active increments
|
|
208
|
+
|
|
209
|
+
Skipped:
|
|
210
|
+
• 0032-duplicate-prevention (status: active)
|
|
211
|
+
• 0033-current-work (status: in-progress)
|
|
212
|
+
|
|
213
|
+
Recommendation:
|
|
214
|
+
1. Close increments first: /specweave:done 0032
|
|
215
|
+
2. Then archive: /specweave:archive 0032
|
|
216
|
+
```
|
|
217
|
+
|
|
218
|
+
### External Sync Active
|
|
219
|
+
|
|
220
|
+
```
|
|
221
|
+
⚠️ Cannot archive increments with active external sync
|
|
222
|
+
|
|
223
|
+
Skipped:
|
|
224
|
+
• 0031-external-tool-sync (GitHub issue #45 still open)
|
|
225
|
+
• 0030-jira-integration (JIRA PROJ-123 In Progress)
|
|
226
|
+
|
|
227
|
+
Recommendation:
|
|
228
|
+
1. Close external issues first
|
|
229
|
+
2. Then retry: /specweave:archive 0031 0030
|
|
230
|
+
|
|
231
|
+
Or force archive (not recommended):
|
|
232
|
+
/specweave:archive 0031 --force
|
|
233
|
+
```
|
|
234
|
+
|
|
235
|
+
## Related Commands
|
|
236
|
+
|
|
237
|
+
- `/specweave:restore <increment-id>` - Restore increment from archive
|
|
238
|
+
- `/specweave:done <increment-id>` - Close increment (does NOT archive!)
|
|
239
|
+
- `/specweave:archive-features` - Archive features/epics (separate system)
|
|
240
|
+
- `/specweave:status` - View archive statistics
|
|
241
|
+
|
|
242
|
+
## Important Notes
|
|
243
|
+
|
|
244
|
+
### ⚠️ Manual Only Policy
|
|
245
|
+
|
|
246
|
+
**Increments are NEVER auto-archived!** This is a deliberate design decision:
|
|
247
|
+
- ✅ `/specweave:done` closes increments but leaves them visible
|
|
248
|
+
- ✅ You control when increments are archived
|
|
249
|
+
- ✅ Keep ~10-20 recent increments visible for reference
|
|
250
|
+
- ✅ Archive older work when you're ready
|
|
251
|
+
|
|
252
|
+
### 🔗 Feature Archiving (Automatic)
|
|
253
|
+
|
|
254
|
+
**Features/epics ARE auto-archived** when all their increments are archived:
|
|
255
|
+
- After archiving increment 0031, run: `/specweave:archive-features`
|
|
256
|
+
- This updates living docs and archives orphaned features
|
|
257
|
+
- Keeps feature docs in sync with increment archives
|
|
258
|
+
|
|
259
|
+
### 📦 Archive is Local Only
|
|
260
|
+
|
|
261
|
+
Archives are **NOT** synced to GitHub/JIRA/ADO. They're local file management only.
|
|
262
|
+
|
|
263
|
+
## Implementation
|
|
264
|
+
|
|
265
|
+
```typescript
|
|
266
|
+
import { Task } from '@claude/types';
|
|
267
|
+
|
|
268
|
+
const task = new Task('archive-increments', 'Archive completed increments');
|
|
269
|
+
|
|
270
|
+
task.run(async () => {
|
|
271
|
+
const { IncrementArchiver } = await import('../../../dist/src/core/increment/increment-archiver.js');
|
|
272
|
+
const archiver = new IncrementArchiver(process.cwd());
|
|
273
|
+
|
|
274
|
+
// Parse arguments
|
|
275
|
+
const args = process.argv.slice(2);
|
|
276
|
+
const incrementIds = args.filter(arg => !arg.startsWith('--'));
|
|
277
|
+
|
|
278
|
+
// Parse options
|
|
279
|
+
const options = {
|
|
280
|
+
increments: incrementIds.length > 0 ? incrementIds : undefined,
|
|
281
|
+
olderThanDays: parseOption(args, '--older-than'),
|
|
282
|
+
keepLast: parseOption(args, '--keep-last') || 10,
|
|
283
|
+
archiveCompleted: args.includes('--archive-completed'),
|
|
284
|
+
preserveActive: !args.includes('--no-preserve-active'),
|
|
285
|
+
pattern: parseOption(args, '--pattern'),
|
|
286
|
+
dryRun: args.includes('--dry-run')
|
|
287
|
+
};
|
|
288
|
+
|
|
289
|
+
// Execute archiving
|
|
290
|
+
const result = await archiver.archive(options);
|
|
291
|
+
|
|
292
|
+
// Display results
|
|
293
|
+
if (options.dryRun) {
|
|
294
|
+
console.log('\n🔍 DRY RUN - No files will be moved\n');
|
|
295
|
+
}
|
|
296
|
+
|
|
297
|
+
console.log(`✅ Archived: ${result.archived.length} increments`);
|
|
298
|
+
if (result.skipped.length > 0) {
|
|
299
|
+
console.log(`⚠️ Skipped: ${result.skipped.length} increments`);
|
|
300
|
+
}
|
|
301
|
+
if (result.errors.length > 0) {
|
|
302
|
+
console.error(`❌ Errors: ${result.errors.length} increments`);
|
|
303
|
+
}
|
|
304
|
+
|
|
305
|
+
// Show statistics
|
|
306
|
+
const stats = await archiver.getStats();
|
|
307
|
+
console.log('\n📊 Archive Statistics:');
|
|
308
|
+
console.log(` Active: ${stats.active} increments`);
|
|
309
|
+
console.log(` Archived: ${stats.archived} increments`);
|
|
310
|
+
console.log(` Abandoned: ${stats.abandoned} increments`);
|
|
311
|
+
console.log(` Total archive size: ${formatSize(stats.totalSize)}`);
|
|
312
|
+
|
|
313
|
+
// Suggest next steps
|
|
314
|
+
if (result.archived.length > 0 && !options.dryRun) {
|
|
315
|
+
console.log('\n💡 Next: Run /specweave:archive-features to sync feature docs');
|
|
316
|
+
}
|
|
317
|
+
});
|
|
318
|
+
|
|
319
|
+
function parseOption(args: string[], flag: string): number | string | undefined {
|
|
320
|
+
const index = args.indexOf(flag);
|
|
321
|
+
if (index !== -1 && index + 1 < args.length) {
|
|
322
|
+
const value = args[index + 1];
|
|
323
|
+
return isNaN(Number(value)) ? value : Number(value);
|
|
324
|
+
}
|
|
325
|
+
return undefined;
|
|
326
|
+
}
|
|
327
|
+
|
|
328
|
+
function formatSize(bytes: number): string {
|
|
329
|
+
const mb = bytes / (1024 * 1024);
|
|
330
|
+
return mb < 1 ? `${Math.round(bytes / 1024)} KB` : `${Math.round(mb)} MB`;
|
|
331
|
+
}
|
|
332
|
+
|
|
333
|
+
export default task;
|
|
334
|
+
```
|
|
335
|
+
|
|
336
|
+
## Configuration
|
|
337
|
+
|
|
338
|
+
No configuration needed - all options are provided via command-line flags.
|
|
339
|
+
|
|
340
|
+
Default behavior:
|
|
341
|
+
- Preserves active/paused increments
|
|
342
|
+
- Skips increments with open external issues
|
|
343
|
+
- Warns about uncommitted changes
|
|
344
|
+
- Requires explicit user action (no auto-archiving)
|
|
345
|
+
|
|
346
|
+
---
|
|
347
|
+
|
|
348
|
+
**Best Practice**: Archive completed increments periodically (e.g., monthly or quarterly) to keep your workspace clean while preserving all history.
|
|
349
|
+
|
|
350
|
+
**Recommended Workflow**:
|
|
351
|
+
```bash
|
|
352
|
+
# 1. Check what would be archived
|
|
353
|
+
/specweave:archive --keep-last 10 --dry-run
|
|
354
|
+
|
|
355
|
+
# 2. Archive old increments
|
|
356
|
+
/specweave:archive --keep-last 10
|
|
357
|
+
|
|
358
|
+
# 3. Archive related features
|
|
359
|
+
/specweave:archive-features
|
|
360
|
+
|
|
361
|
+
# 4. Check results
|
|
362
|
+
/specweave:status
|
|
363
|
+
```
|
|
@@ -0,0 +1,211 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: specweave:backlog
|
|
3
|
+
description: Move an increment to backlog (planned but not ready to start)
|
|
4
|
+
usage: /specweave:backlog <increment-id> --reason="<reason>"
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Backlog Increment Command
|
|
8
|
+
|
|
9
|
+
**Usage**: `/specweave:backlog <increment-id> --reason="<reason>"`
|
|
10
|
+
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
## Purpose
|
|
14
|
+
|
|
15
|
+
Move an increment to backlog when:
|
|
16
|
+
- **Planned** but not ready to start yet
|
|
17
|
+
- **Low priority** compared to other work
|
|
18
|
+
- **Waiting** for decisions or approvals before starting
|
|
19
|
+
- **Multiple ideas** you want to plan without violating WIP limits
|
|
20
|
+
|
|
21
|
+
**Key Difference**:
|
|
22
|
+
- **Backlog** = Never started, planned for future (does NOT count towards WIP)
|
|
23
|
+
- **Paused** = Started but blocked (does NOT count towards WIP)
|
|
24
|
+
|
|
25
|
+
---
|
|
26
|
+
|
|
27
|
+
## Behavior
|
|
28
|
+
|
|
29
|
+
1. **Validates** increment exists and is "active"
|
|
30
|
+
2. **Prompts** for reason if not provided via --reason flag
|
|
31
|
+
3. **Updates** metadata.json:
|
|
32
|
+
- `status`: "active" → "backlog"
|
|
33
|
+
- `backlogReason`: User-provided reason
|
|
34
|
+
- `backlogAt`: Current timestamp
|
|
35
|
+
4. **Displays** confirmation message
|
|
36
|
+
5. **Suggests** next actions (`/specweave:resume` to start work)
|
|
37
|
+
|
|
38
|
+
---
|
|
39
|
+
|
|
40
|
+
## Examples
|
|
41
|
+
|
|
42
|
+
### Move to backlog with reason
|
|
43
|
+
```bash
|
|
44
|
+
/specweave:backlog 0032 --reason="Low priority, focus on 0031 first"
|
|
45
|
+
|
|
46
|
+
✅ Increment 0032 moved to backlog
|
|
47
|
+
📝 Reason: Low priority, focus on 0031 first
|
|
48
|
+
🗂️ No longer counts toward WIP limits
|
|
49
|
+
💡 Start work with: /specweave:resume 0032
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
### Move to backlog without reason (prompts)
|
|
53
|
+
```bash
|
|
54
|
+
/specweave:backlog 0032
|
|
55
|
+
|
|
56
|
+
❓ Why are you moving this to backlog?
|
|
57
|
+
1. Low priority
|
|
58
|
+
2. Waiting for decisions/approvals
|
|
59
|
+
3. Multiple planned ideas
|
|
60
|
+
4. Other (type reason)
|
|
61
|
+
|
|
62
|
+
> 1
|
|
63
|
+
|
|
64
|
+
✅ Increment 0032 moved to backlog
|
|
65
|
+
📝 Reason: Low priority
|
|
66
|
+
💡 Start work with: /specweave:resume 0032
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
---
|
|
70
|
+
|
|
71
|
+
## Edge Cases
|
|
72
|
+
|
|
73
|
+
### Already in Backlog
|
|
74
|
+
```bash
|
|
75
|
+
/specweave:backlog 0032 --reason="Different reason"
|
|
76
|
+
|
|
77
|
+
⚠️ Increment 0032 is already in backlog
|
|
78
|
+
Previous reason: Low priority
|
|
79
|
+
New reason: Different reason
|
|
80
|
+
|
|
81
|
+
Update reason? [Y/n]: y
|
|
82
|
+
|
|
83
|
+
✅ Reason updated
|
|
84
|
+
📝 New reason: Different reason
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
### Cannot Backlog Completed
|
|
88
|
+
```bash
|
|
89
|
+
/specweave:backlog 0005
|
|
90
|
+
|
|
91
|
+
❌ Cannot move increment 0005 to backlog
|
|
92
|
+
Status: completed
|
|
93
|
+
Completed increments cannot be moved to backlog
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
### Cannot Backlog Paused
|
|
97
|
+
```bash
|
|
98
|
+
/specweave:backlog 0008
|
|
99
|
+
|
|
100
|
+
❌ Cannot move increment 0008 to backlog
|
|
101
|
+
Status: paused
|
|
102
|
+
Paused work should be resumed or abandoned, not moved to backlog
|
|
103
|
+
Resume it: /specweave:resume 0008
|
|
104
|
+
```
|
|
105
|
+
|
|
106
|
+
### Increment Not Found
|
|
107
|
+
```bash
|
|
108
|
+
/specweave:backlog 9999
|
|
109
|
+
|
|
110
|
+
❌ Increment not found: 9999
|
|
111
|
+
💡 Check available increments: /specweave:status
|
|
112
|
+
```
|
|
113
|
+
|
|
114
|
+
---
|
|
115
|
+
|
|
116
|
+
## Implementation
|
|
117
|
+
|
|
118
|
+
This command uses the MetadataManager to update increment status:
|
|
119
|
+
|
|
120
|
+
```typescript
|
|
121
|
+
import { MetadataManager, IncrementStatus } from '../src/core/increment/metadata-manager';
|
|
122
|
+
|
|
123
|
+
// Read current metadata
|
|
124
|
+
const metadata = MetadataManager.read(incrementId);
|
|
125
|
+
|
|
126
|
+
// Validate can move to backlog
|
|
127
|
+
if (metadata.status !== IncrementStatus.ACTIVE) {
|
|
128
|
+
throw new Error(`Cannot move increment with status: ${metadata.status}`);
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
// Update status
|
|
132
|
+
MetadataManager.updateStatus(incrementId, IncrementStatus.BACKLOG, reason);
|
|
133
|
+
```
|
|
134
|
+
|
|
135
|
+
---
|
|
136
|
+
|
|
137
|
+
## Status Flow
|
|
138
|
+
|
|
139
|
+
```
|
|
140
|
+
active ──backlog──> backlog
|
|
141
|
+
│
|
|
142
|
+
└──resume──> active
|
|
143
|
+
```
|
|
144
|
+
|
|
145
|
+
---
|
|
146
|
+
|
|
147
|
+
## Related Commands
|
|
148
|
+
|
|
149
|
+
- `/specweave:resume <id>` - Move from backlog to active (start work)
|
|
150
|
+
- `/specweave:pause <id>` - Pause active work (different from backlog)
|
|
151
|
+
- `/specweave:status` - Show all increment statuses including backlog
|
|
152
|
+
- `/specweave:abandon <id>` - Abandon increment (permanent)
|
|
153
|
+
|
|
154
|
+
---
|
|
155
|
+
|
|
156
|
+
## Best Practices
|
|
157
|
+
|
|
158
|
+
✅ **Use backlog for planning** - Plan multiple increments without violating WIP
|
|
159
|
+
|
|
160
|
+
✅ **Prioritize backlog regularly** - Review and reorder based on value
|
|
161
|
+
|
|
162
|
+
✅ **Clear reasons** - Helps with prioritization decisions
|
|
163
|
+
|
|
164
|
+
✅ **Start when ready** - Use `/specweave:resume` to move from backlog to active
|
|
165
|
+
|
|
166
|
+
❌ **Don't confuse with paused** - Backlog = never started, Paused = started but blocked
|
|
167
|
+
|
|
168
|
+
❌ **Don't let backlog grow unbounded** - Review and abandon obsolete items
|
|
169
|
+
|
|
170
|
+
---
|
|
171
|
+
|
|
172
|
+
## Backlog vs Paused
|
|
173
|
+
|
|
174
|
+
| Aspect | Backlog | Paused |
|
|
175
|
+
|--------|---------|--------|
|
|
176
|
+
| **Definition** | Planned but not started | Started but blocked |
|
|
177
|
+
| **WIP Count** | NO | NO |
|
|
178
|
+
| **Use Case** | Low priority, future work | Blocked, deprioritized |
|
|
179
|
+
| **Resume** | Start from beginning | Continue where left off |
|
|
180
|
+
|
|
181
|
+
---
|
|
182
|
+
|
|
183
|
+
## Warning: Large Backlog
|
|
184
|
+
|
|
185
|
+
If your backlog grows too large (10+ increments), `/specweave:status` will warn:
|
|
186
|
+
|
|
187
|
+
```bash
|
|
188
|
+
/specweave:status
|
|
189
|
+
|
|
190
|
+
🗂️ Backlog (12):
|
|
191
|
+
📦 0032-feature-a [feature] - Low priority
|
|
192
|
+
📦 0033-feature-b [feature] - Waiting for decisions
|
|
193
|
+
📦 0034-feature-c [feature] - Multiple planned ideas
|
|
194
|
+
... (9 more)
|
|
195
|
+
|
|
196
|
+
⚠️ Large backlog! Consider:
|
|
197
|
+
- Abandoning obsolete items
|
|
198
|
+
- Consolidating similar features
|
|
199
|
+
- Reviewing priorities
|
|
200
|
+
|
|
201
|
+
💡 Actions:
|
|
202
|
+
/specweave:resume <id> # Start work on highest priority
|
|
203
|
+
/specweave:abandon <id> # Remove obsolete items
|
|
204
|
+
```
|
|
205
|
+
|
|
206
|
+
---
|
|
207
|
+
|
|
208
|
+
**Command**: `/specweave:backlog`
|
|
209
|
+
**Plugin**: specweave (core)
|
|
210
|
+
**Version**: v0.19.0+
|
|
211
|
+
**Part of**: Backlog Support Feature
|