specweave 0.18.1 → 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/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-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 +7 -0
- package/dist/plugins/specweave-github/lib/epic-content-builder.d.ts.map +1 -1
- package/dist/plugins/specweave-github/lib/epic-content-builder.js +42 -0
- package/dist/plugins/specweave-github/lib/epic-content-builder.js.map +1 -1
- 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.js +1 -1
- 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 +8 -6
- package/dist/plugins/specweave-jira/lib/enhanced-jira-sync.d.ts.map +1 -1
- package/dist/plugins/specweave-jira/lib/enhanced-jira-sync.js +78 -117
- package/dist/plugins/specweave-jira/lib/enhanced-jira-sync.js.map +1 -1
- 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/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/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.map +1 -1
- package/dist/src/core/sync/enhanced-content-builder.js +2 -1
- 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/types/config.d.ts +94 -0
- package/dist/src/core/types/config.d.ts.map +1 -1
- package/dist/src/core/types/config.js +16 -0
- package/dist/src/core/types/config.js.map +1 -1
- package/dist/src/core/types/increment-metadata.d.ts +6 -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/package.json +1 -1
- package/plugins/specweave/COMMANDS.md +13 -4
- 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/hooks/hooks.json +4 -0
- package/plugins/specweave/hooks/lib/sync-spec-content.sh +2 -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-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 +10 -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 +38 -0
- package/plugins/specweave-github/lib/epic-content-builder.ts +59 -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.ts +1 -1
- 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
|
@@ -1,267 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: specweave-jira-sync-epic
|
|
3
|
-
description: Sync SpecWeave Epic folder to JIRA (Epic + Stories with Epic Link). Implements Universal Hierarchy architecture - Epic → JIRA Epic, Increments → Stories.
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
# Sync Epic to JIRA (Universal Hierarchy)
|
|
7
|
-
|
|
8
|
-
**Architecture**: Hierarchical sync using Epic folder structure
|
|
9
|
-
|
|
10
|
-
- **Epic (FS-001)** → **JIRA Epic**
|
|
11
|
-
- **Increment (0001-core-framework)** → **JIRA Story** (Epic Link field)
|
|
12
|
-
|
|
13
|
-
## Usage
|
|
14
|
-
|
|
15
|
-
```bash
|
|
16
|
-
/specweave-jira:sync-epic <epic-id> [--project <project-key>]
|
|
17
|
-
```
|
|
18
|
-
|
|
19
|
-
## What It Does
|
|
20
|
-
|
|
21
|
-
**Hierarchical Sync Process**:
|
|
22
|
-
|
|
23
|
-
1. **Load Epic folder** from `.specweave/docs/internal/specs/FS-XXX-name/`
|
|
24
|
-
2. **Parse Epic README.md** to get Epic metadata (title, increments, status)
|
|
25
|
-
3. **Create or update JIRA Epic**:
|
|
26
|
-
- Summary: `[FS-001] Epic Title`
|
|
27
|
-
- Description: Epic overview + progress stats
|
|
28
|
-
- Priority: Mapped from P0→Highest, P1→High, etc.
|
|
29
|
-
- Labels: `epic-sync`, `fs-001`
|
|
30
|
-
4. **Sync each increment as JIRA Story**:
|
|
31
|
-
- Summary: `[INC-0001-core-framework] Title`
|
|
32
|
-
- Description: Increment overview
|
|
33
|
-
- Epic Link: Links to Epic via `epicKey` field
|
|
34
|
-
- Labels: `increment`, `epic-sync`
|
|
35
|
-
5. **Update frontmatter** in Epic README.md and increment files
|
|
36
|
-
|
|
37
|
-
## Examples
|
|
38
|
-
|
|
39
|
-
### Sync Epic FS-001 (Core Framework Architecture)
|
|
40
|
-
|
|
41
|
-
```bash
|
|
42
|
-
/specweave-jira:sync-epic FS-001 --project SPEC
|
|
43
|
-
```
|
|
44
|
-
|
|
45
|
-
**Output**:
|
|
46
|
-
```
|
|
47
|
-
🔄 Syncing Epic FS-001 to JIRA...
|
|
48
|
-
📦 Epic: Core Framework Architecture
|
|
49
|
-
📊 Increments: 4
|
|
50
|
-
🚀 Creating JIRA Epic...
|
|
51
|
-
✅ Created Epic SPEC-100
|
|
52
|
-
|
|
53
|
-
📝 Syncing 4 increments...
|
|
54
|
-
✅ Created Story SPEC-101 for 0001-core-framework
|
|
55
|
-
✅ Created Story SPEC-102 for 0002-core-enhancements
|
|
56
|
-
✅ Created Story SPEC-103 for 0004-plugin-architecture
|
|
57
|
-
✅ Created Story SPEC-104 for 0005-cross-platform-cli
|
|
58
|
-
|
|
59
|
-
✅ Epic sync complete!
|
|
60
|
-
Epic: https://mycompany.atlassian.net/browse/SPEC-100
|
|
61
|
-
Stories created: 4
|
|
62
|
-
Stories updated: 0
|
|
63
|
-
```
|
|
64
|
-
|
|
65
|
-
### Sync Epic with short ID
|
|
66
|
-
|
|
67
|
-
```bash
|
|
68
|
-
/specweave-jira:sync-epic 031 --project SPEC
|
|
69
|
-
```
|
|
70
|
-
|
|
71
|
-
### Re-sync Epic (updates existing)
|
|
72
|
-
|
|
73
|
-
```bash
|
|
74
|
-
/specweave-jira:sync-epic FS-001 --project SPEC
|
|
75
|
-
```
|
|
76
|
-
|
|
77
|
-
**Output**:
|
|
78
|
-
```
|
|
79
|
-
🔄 Syncing Epic FS-001 to JIRA...
|
|
80
|
-
♻️ Updating existing Epic SPEC-100...
|
|
81
|
-
✅ Updated Epic SPEC-100
|
|
82
|
-
|
|
83
|
-
📝 Syncing 4 increments...
|
|
84
|
-
♻️ Updated Story SPEC-101 for 0001-core-framework
|
|
85
|
-
♻️ Updated Story SPEC-102 for 0002-core-enhancements
|
|
86
|
-
♻️ Updated Story SPEC-103 for 0004-plugin-architecture
|
|
87
|
-
♻️ Updated Story SPEC-104 for 0005-cross-platform-cli
|
|
88
|
-
|
|
89
|
-
✅ Epic sync complete!
|
|
90
|
-
Epic: https://mycompany.atlassian.net/browse/SPEC-100
|
|
91
|
-
Stories created: 0
|
|
92
|
-
Stories updated: 4
|
|
93
|
-
```
|
|
94
|
-
|
|
95
|
-
## Arguments
|
|
96
|
-
|
|
97
|
-
- `<epic-id>` - Epic ID (e.g., `FS-001` or just `001`)
|
|
98
|
-
- `--project <key>` - JIRA project key (e.g., `SPEC`, `PROJ`, `DEV`)
|
|
99
|
-
|
|
100
|
-
## What Gets Created
|
|
101
|
-
|
|
102
|
-
### JIRA Epic (Epic-level)
|
|
103
|
-
|
|
104
|
-
```
|
|
105
|
-
Key: SPEC-100
|
|
106
|
-
Summary: [FS-001] Core Framework Architecture
|
|
107
|
-
|
|
108
|
-
Description:
|
|
109
|
-
Epic: Core Framework Architecture
|
|
110
|
-
|
|
111
|
-
Progress: 4/4 increments (100%)
|
|
112
|
-
|
|
113
|
-
Priority: P0
|
|
114
|
-
Status: complete
|
|
115
|
-
|
|
116
|
-
Labels: epic-sync, fs-001
|
|
117
|
-
Priority: Highest (P0 → Highest)
|
|
118
|
-
```
|
|
119
|
-
|
|
120
|
-
### JIRA Story (Increment-level)
|
|
121
|
-
|
|
122
|
-
```
|
|
123
|
-
Key: SPEC-101
|
|
124
|
-
Summary: [INC-0001-core-framework] Core Framework
|
|
125
|
-
|
|
126
|
-
Description:
|
|
127
|
-
Foundation framework with CLI, plugin system, and agent architecture...
|
|
128
|
-
|
|
129
|
-
---
|
|
130
|
-
|
|
131
|
-
**Increment**: 0001-core-framework
|
|
132
|
-
**Epic**: SPEC-100
|
|
133
|
-
|
|
134
|
-
🤖 Auto-created by SpecWeave Epic Sync
|
|
135
|
-
|
|
136
|
-
Epic Link: SPEC-100 (linked via Epic Link field)
|
|
137
|
-
Labels: increment, epic-sync
|
|
138
|
-
```
|
|
139
|
-
|
|
140
|
-
## Frontmatter Updates
|
|
141
|
-
|
|
142
|
-
### Epic README.md (after sync)
|
|
143
|
-
|
|
144
|
-
```yaml
|
|
145
|
-
---
|
|
146
|
-
id: FS-001
|
|
147
|
-
title: "Core Framework Architecture"
|
|
148
|
-
external_tools:
|
|
149
|
-
jira:
|
|
150
|
-
type: epic
|
|
151
|
-
key: SPEC-100 # ← Added
|
|
152
|
-
url: https://mycompany.atlassian.net/browse/SPEC-100 # ← Added
|
|
153
|
-
increments:
|
|
154
|
-
- id: 0001-core-framework
|
|
155
|
-
external:
|
|
156
|
-
jira: SPEC-101 # ← Added
|
|
157
|
-
- id: 0002-core-enhancements
|
|
158
|
-
external:
|
|
159
|
-
jira: SPEC-102 # ← Added
|
|
160
|
-
---
|
|
161
|
-
```
|
|
162
|
-
|
|
163
|
-
### Increment file (0001-core-framework.md)
|
|
164
|
-
|
|
165
|
-
```yaml
|
|
166
|
-
---
|
|
167
|
-
id: 0001-core-framework
|
|
168
|
-
epic: FS-001
|
|
169
|
-
external:
|
|
170
|
-
jira:
|
|
171
|
-
story: SPEC-101 # ← Added
|
|
172
|
-
url: https://mycompany.atlassian.net/browse/SPEC-101 # ← Added
|
|
173
|
-
---
|
|
174
|
-
```
|
|
175
|
-
|
|
176
|
-
## Benefits
|
|
177
|
-
|
|
178
|
-
✅ **Hierarchical tracking**: JIRA Epics group related Stories
|
|
179
|
-
✅ **Epic-level progress**: See completion in Epic details
|
|
180
|
-
✅ **Automatic linking**: Epic Link field links Stories to Epic
|
|
181
|
-
✅ **Idempotent**: Safe to re-run (updates existing Epic/Stories)
|
|
182
|
-
✅ **Brownfield-ready**: Links existing JIRA Epics/Stories
|
|
183
|
-
|
|
184
|
-
## Requirements
|
|
185
|
-
|
|
186
|
-
1. **JIRA credentials** in `.env`:
|
|
187
|
-
```
|
|
188
|
-
JIRA_DOMAIN=mycompany.atlassian.net
|
|
189
|
-
JIRA_EMAIL=user@mycompany.com
|
|
190
|
-
JIRA_API_TOKEN=your-api-token
|
|
191
|
-
```
|
|
192
|
-
2. **Project exists** in JIRA
|
|
193
|
-
3. **Write access** to project (for creating Epics/Stories)
|
|
194
|
-
4. **Epic folder exists** at `.specweave/docs/internal/specs/FS-XXX-name/`
|
|
195
|
-
|
|
196
|
-
## Architecture: Why Epic Link?
|
|
197
|
-
|
|
198
|
-
**JIRA's Hierarchy**:
|
|
199
|
-
- JIRA Epics = Top-level grouping
|
|
200
|
-
- JIRA Stories = Implementation work
|
|
201
|
-
- Epic Link field = Links Stories to Epic
|
|
202
|
-
|
|
203
|
-
**Comparison with GitHub/ADO**:
|
|
204
|
-
- GitHub: Epic → Milestone, Increment → Issue (Milestone link)
|
|
205
|
-
- JIRA: Epic → Epic, Increment → Story (Epic Link field)
|
|
206
|
-
- ADO: Epic → Feature, Increment → User Story (Parent link)
|
|
207
|
-
|
|
208
|
-
All three implement the same Universal Hierarchy, just with different fields/terminology.
|
|
209
|
-
|
|
210
|
-
## Priority Mapping
|
|
211
|
-
|
|
212
|
-
| SpecWeave | JIRA |
|
|
213
|
-
|-----------|------|
|
|
214
|
-
| P0 | Highest |
|
|
215
|
-
| P1 | High |
|
|
216
|
-
| P2 | Medium |
|
|
217
|
-
| P3 | Low |
|
|
218
|
-
|
|
219
|
-
## Troubleshooting
|
|
220
|
-
|
|
221
|
-
**"Epic FS-001 not found"**:
|
|
222
|
-
- Check Epic folder exists: `ls .specweave/docs/internal/specs/`
|
|
223
|
-
- Verify Epic ID format: `FS-001-epic-name/`
|
|
224
|
-
|
|
225
|
-
**"Epic README.md missing YAML frontmatter"**:
|
|
226
|
-
- Ensure Epic was migrated with `migrate-to-epic-folders.ts`
|
|
227
|
-
- Frontmatter must start with `---` on line 1
|
|
228
|
-
|
|
229
|
-
**"Failed to create JIRA Epic"**:
|
|
230
|
-
- Check credentials: `echo $JIRA_API_TOKEN`
|
|
231
|
-
- Verify project exists in JIRA
|
|
232
|
-
- Check write permissions
|
|
233
|
-
|
|
234
|
-
**"Epic Link field not found"**:
|
|
235
|
-
- Some JIRA instances use custom field for Epic Link
|
|
236
|
-
- Check with JIRA admin for custom field ID
|
|
237
|
-
- May need configuration update
|
|
238
|
-
|
|
239
|
-
## Related Commands
|
|
240
|
-
|
|
241
|
-
- `/specweave-github:sync-epic` - Sync to GitHub Milestone + Issues
|
|
242
|
-
- `/specweave-ado:sync-epic` - Sync to ADO Feature + User Stories
|
|
243
|
-
- `/specweave-jira:sync-spec` - OLD (flat spec → epic) - DEPRECATED
|
|
244
|
-
|
|
245
|
-
## Implementation
|
|
246
|
-
|
|
247
|
-
**File**: `plugins/specweave-jira/lib/jira-epic-sync.ts`
|
|
248
|
-
|
|
249
|
-
**Core Class**: `JiraEpicSync`
|
|
250
|
-
|
|
251
|
-
**Methods**:
|
|
252
|
-
- `syncEpicToJira(epicId)` - Main sync logic
|
|
253
|
-
- `createEpic(epic)` - Create JIRA Epic
|
|
254
|
-
- `updateEpic(key, epic)` - Update existing Epic
|
|
255
|
-
- `createStory(increment, epicKey)` - Create JIRA Story
|
|
256
|
-
- `updateStory(key, increment, epicKey)` - Update existing Story
|
|
257
|
-
- `updateEpicReadme(path, jira)` - Update frontmatter
|
|
258
|
-
- `updateIncrementExternalLink(...)` - Update increment frontmatter
|
|
259
|
-
|
|
260
|
-
## Next Steps
|
|
261
|
-
|
|
262
|
-
After syncing Epic to JIRA:
|
|
263
|
-
|
|
264
|
-
1. **View Epic**: Open in JIRA browser
|
|
265
|
-
2. **List Stories**: Filter by Epic Link field
|
|
266
|
-
3. **Track completion**: JIRA shows Epic progress automatically
|
|
267
|
-
4. **Link to Sprint**: Drag Stories into Sprint planning
|
|
@@ -1,240 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: specweave-jira-sync-spec
|
|
3
|
-
description: Sync SpecWeave spec to Jira Epic (bidirectional). Use when syncing .specweave/docs/internal/specs/spec-*.md files with Jira Epics for permanent feature tracking.
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
# Sync Spec to Jira Epic
|
|
7
|
-
|
|
8
|
-
**CORRECT ARCHITECTURE**: This command syncs `.specweave/docs/internal/specs/spec-*.md` files (PERMANENT living docs) to Jira Epics, NOT increments to issues.
|
|
9
|
-
|
|
10
|
-
## Usage
|
|
11
|
-
|
|
12
|
-
```bash
|
|
13
|
-
/specweave-jira:sync-spec <spec-id> [--direction <to-jira|from-jira|bidirectional>]
|
|
14
|
-
```
|
|
15
|
-
|
|
16
|
-
## What It Does
|
|
17
|
-
|
|
18
|
-
**Architecture**:
|
|
19
|
-
- **Spec → Jira Epic** (not increment → issue!)
|
|
20
|
-
- **User Story → Jira Story** (subtask of epic)
|
|
21
|
-
- **Acceptance Criteria → Checklist** (in story description)
|
|
22
|
-
|
|
23
|
-
**Sync Process**:
|
|
24
|
-
|
|
25
|
-
1. **Load spec** from `.specweave/docs/internal/specs/spec-{id}.md`
|
|
26
|
-
2. **Load Jira configuration** from `.env` (domain, email, API token, project key)
|
|
27
|
-
3. **Create or update Jira Epic**:
|
|
28
|
-
- Summary: `[SPEC-001] Feature Title`
|
|
29
|
-
- Description: Spec overview + progress
|
|
30
|
-
- Status: Matches spec status
|
|
31
|
-
4. **Sync user stories as Jira Stories**:
|
|
32
|
-
- Create stories for new user stories
|
|
33
|
-
- Update existing stories
|
|
34
|
-
- Transition stories based on user story status
|
|
35
|
-
5. **Link spec to epic** (update frontmatter)
|
|
36
|
-
|
|
37
|
-
## Examples
|
|
38
|
-
|
|
39
|
-
### Sync spec to Jira (create or update)
|
|
40
|
-
|
|
41
|
-
```bash
|
|
42
|
-
/specweave-jira:sync-spec spec-001
|
|
43
|
-
```
|
|
44
|
-
|
|
45
|
-
**Output**:
|
|
46
|
-
```
|
|
47
|
-
🔄 Syncing spec spec-001 to Jira Epic...
|
|
48
|
-
Creating new Jira Epic...
|
|
49
|
-
✅ Created Jira Epic SPEC-1: https://company.atlassian.net/browse/SPEC-1
|
|
50
|
-
Syncing 35 user stories...
|
|
51
|
-
✅ Created US-001 → Story SPEC-2
|
|
52
|
-
✅ Created US-002 → Story SPEC-3
|
|
53
|
-
...
|
|
54
|
-
✅ Sync complete!
|
|
55
|
-
Created: 35 user stories
|
|
56
|
-
Jira Epic: https://company.atlassian.net/browse/SPEC-1
|
|
57
|
-
```
|
|
58
|
-
|
|
59
|
-
### Sync FROM Jira to spec (bidirectional)
|
|
60
|
-
|
|
61
|
-
```bash
|
|
62
|
-
/specweave-jira:sync-spec spec-001 --direction from-jira
|
|
63
|
-
```
|
|
64
|
-
|
|
65
|
-
**Output**:
|
|
66
|
-
```
|
|
67
|
-
🔄 Syncing FROM Jira to spec spec-001...
|
|
68
|
-
Fetching Jira Epic SPEC-1...
|
|
69
|
-
⚠️ Detected 3 conflict(s)
|
|
70
|
-
🔄 Resolving: US-002 marked Done in Jira (Jira wins)
|
|
71
|
-
🔄 Resolving: US-005 marked In Progress in Jira (Jira wins)
|
|
72
|
-
✅ Sync FROM Jira complete!
|
|
73
|
-
Updated: 3 user stories
|
|
74
|
-
```
|
|
75
|
-
|
|
76
|
-
## Arguments
|
|
77
|
-
|
|
78
|
-
- `<spec-id>` - Spec ID (e.g., `spec-001` or just `001`)
|
|
79
|
-
- `--direction <mode>` - Sync direction (default: `to-jira`)
|
|
80
|
-
- `to-jira` - Push local spec to Jira
|
|
81
|
-
- `from-jira` - Pull Jira state to spec
|
|
82
|
-
- `bidirectional` - Sync both ways (conflict resolution)
|
|
83
|
-
|
|
84
|
-
## Configuration
|
|
85
|
-
|
|
86
|
-
**Required `.env` variables**:
|
|
87
|
-
|
|
88
|
-
```bash
|
|
89
|
-
# Jira Configuration
|
|
90
|
-
JIRA_DOMAIN=company.atlassian.net
|
|
91
|
-
JIRA_EMAIL=your-email@company.com
|
|
92
|
-
JIRA_API_TOKEN=your_api_token_here
|
|
93
|
-
JIRA_PROJECT_KEY=SPEC
|
|
94
|
-
```
|
|
95
|
-
|
|
96
|
-
**How to get API token**:
|
|
97
|
-
1. Go to https://id.atlassian.com/manage-profile/security/api-tokens
|
|
98
|
-
2. Click "Create API token"
|
|
99
|
-
3. Copy token to `.env`
|
|
100
|
-
|
|
101
|
-
## Conflict Resolution
|
|
102
|
-
|
|
103
|
-
When syncing FROM Jira, conflicts are resolved as follows:
|
|
104
|
-
|
|
105
|
-
**Jira wins** (default):
|
|
106
|
-
- User story status changes → update spec
|
|
107
|
-
- Acceptance criteria status → update spec
|
|
108
|
-
- Story completion → mark user story done
|
|
109
|
-
|
|
110
|
-
**Local wins** (future):
|
|
111
|
-
- Spec changes take precedence
|
|
112
|
-
- Push to Jira
|
|
113
|
-
|
|
114
|
-
## Requirements
|
|
115
|
-
|
|
116
|
-
1. **Jira account** with API access
|
|
117
|
-
2. **Jira API token** (from https://id.atlassian.com/manage-profile/security/api-tokens)
|
|
118
|
-
3. **Project permissions** (create epics, create stories)
|
|
119
|
-
4. **Spec file exists** at `.specweave/docs/internal/specs/spec-{id}.md`
|
|
120
|
-
|
|
121
|
-
## What Gets Synced
|
|
122
|
-
|
|
123
|
-
### Spec → Jira Epic
|
|
124
|
-
|
|
125
|
-
- ✅ Summary: `[SPEC-001] Feature Area Title`
|
|
126
|
-
- ✅ Description: Overview + progress stats (Jira wiki markup)
|
|
127
|
-
- ✅ Labels: `spec:spec-001`, `priority:P1`
|
|
128
|
-
- ✅ Status: To Do/In Progress/Done based on spec
|
|
129
|
-
|
|
130
|
-
### User Story → Jira Story
|
|
131
|
-
|
|
132
|
-
- ✅ Summary: `[US-001] As a user, I want...`
|
|
133
|
-
- ✅ Description: User story + acceptance criteria checklist
|
|
134
|
-
- ✅ Labels: `user-story`, `spec:spec-001`, `priority:P1`
|
|
135
|
-
- ✅ Epic Link: Links story to epic
|
|
136
|
-
- ✅ Status: To Do (todo) / In Progress (in-progress) / Done (done)
|
|
137
|
-
|
|
138
|
-
### Acceptance Criteria → Checklist
|
|
139
|
-
|
|
140
|
-
```
|
|
141
|
-
h2. Acceptance Criteria
|
|
142
|
-
|
|
143
|
-
* (/) User can log in with email/password
|
|
144
|
-
* (x) Invalid credentials show error message
|
|
145
|
-
* (x) Account locks after 5 failed attempts
|
|
146
|
-
```
|
|
147
|
-
|
|
148
|
-
*Note*: Jira uses `(/)` for checked, `(x)` for unchecked.
|
|
149
|
-
|
|
150
|
-
## Architecture
|
|
151
|
-
|
|
152
|
-
**Why This Architecture?**
|
|
153
|
-
|
|
154
|
-
✅ **Permanent tracking**: Specs never deleted, Jira links remain valid
|
|
155
|
-
✅ **Feature-level granularity**: One Jira Epic per feature (not per increment)
|
|
156
|
-
✅ **PM-friendly**: Stakeholders see progress in Jira board
|
|
157
|
-
✅ **Brownfield-ready**: Existing Jira epics map to specs
|
|
158
|
-
|
|
159
|
-
**What's WRONG?**
|
|
160
|
-
|
|
161
|
-
❌ Increment → Jira Issue (increments are temporary!)
|
|
162
|
-
❌ Tasks → Jira Issues (too granular, implementation details)
|
|
163
|
-
❌ Multiple epics per feature (split across increments)
|
|
164
|
-
|
|
165
|
-
## Metadata
|
|
166
|
-
|
|
167
|
-
After sync, spec frontmatter is updated:
|
|
168
|
-
|
|
169
|
-
```yaml
|
|
170
|
-
---
|
|
171
|
-
id: spec-001
|
|
172
|
-
title: Core Framework Architecture
|
|
173
|
-
status: in-progress
|
|
174
|
-
priority: P0
|
|
175
|
-
externalLinks:
|
|
176
|
-
jira:
|
|
177
|
-
epicKey: SPEC-1
|
|
178
|
-
epicUrl: https://company.atlassian.net/browse/SPEC-1
|
|
179
|
-
syncedAt: "2025-11-10T12:00:00Z"
|
|
180
|
-
projectKey: SPEC
|
|
181
|
-
domain: company.atlassian.net
|
|
182
|
-
---
|
|
183
|
-
```
|
|
184
|
-
|
|
185
|
-
## Troubleshooting
|
|
186
|
-
|
|
187
|
-
**"Jira API authentication failed"**:
|
|
188
|
-
- Check `.env` has correct `JIRA_DOMAIN`, `JIRA_EMAIL`, `JIRA_API_TOKEN`
|
|
189
|
-
- Verify API token is valid (not expired)
|
|
190
|
-
- Test authentication: `curl -u email:token https://company.atlassian.net/rest/api/3/myself`
|
|
191
|
-
|
|
192
|
-
**"Spec not found"**:
|
|
193
|
-
- Check spec exists: `ls .specweave/docs/internal/specs/`
|
|
194
|
-
- Use correct ID: `spec-001` or `001`
|
|
195
|
-
|
|
196
|
-
**"Cannot create epic"**:
|
|
197
|
-
- Ensure you have permissions to create epics in the project
|
|
198
|
-
- Check project key is correct in `.env`
|
|
199
|
-
|
|
200
|
-
**"Epic Link field not found"**:
|
|
201
|
-
- Epic Link field ID varies by Jira configuration
|
|
202
|
-
- Default: `customfield_10014`
|
|
203
|
-
- Find your field: Go to Jira → Settings → Issues → Custom fields → Find "Epic Link"
|
|
204
|
-
- Update code if needed
|
|
205
|
-
|
|
206
|
-
**"No user stories to sync"**:
|
|
207
|
-
- Add user stories to spec.md:
|
|
208
|
-
```markdown
|
|
209
|
-
**US-001**: As a user, I want...
|
|
210
|
-
- [ ] **AC-001-01**: Acceptance criteria 1
|
|
211
|
-
```
|
|
212
|
-
|
|
213
|
-
## Related
|
|
214
|
-
|
|
215
|
-
- `/specweave-github:sync-spec` - Sync to GitHub Project
|
|
216
|
-
- `/specweave-ado:sync-spec` - Sync to Azure DevOps Feature
|
|
217
|
-
- `/specweave:sync-docs` - Sync living docs from increments to specs
|
|
218
|
-
|
|
219
|
-
## Implementation
|
|
220
|
-
|
|
221
|
-
**File**: `plugins/specweave-jira/lib/jira-spec-sync.ts`
|
|
222
|
-
|
|
223
|
-
**Core Class**: `JiraSpecSync`
|
|
224
|
-
|
|
225
|
-
**Methods**:
|
|
226
|
-
- `syncSpecToJira(specId)` - Push to Jira
|
|
227
|
-
- `syncFromJira(specId)` - Pull from Jira
|
|
228
|
-
- `detectConflicts(spec, epic)` - Compare states
|
|
229
|
-
- `resolveConflicts(spec, conflicts)` - Apply resolution strategy
|
|
230
|
-
|
|
231
|
-
## Jira API Reference
|
|
232
|
-
|
|
233
|
-
**Endpoints used**:
|
|
234
|
-
- `POST /rest/api/3/issue` - Create epic/story
|
|
235
|
-
- `PUT /rest/api/3/issue/{key}` - Update epic/story
|
|
236
|
-
- `GET /rest/api/3/issue/{key}` - Fetch epic/story
|
|
237
|
-
- `GET /rest/api/3/search?jql=...` - Search for stories
|
|
238
|
-
- `POST /rest/api/3/issue/{key}/transitions` - Transition story status
|
|
239
|
-
|
|
240
|
-
**Authentication**: Basic auth with email + API token
|