specweave 0.33.5 → 0.34.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.claude-plugin/README.md +13 -13
- package/.claude-plugin/marketplace.json +26 -37
- package/CLAUDE.md +427 -70
- package/README.md +34 -31
- package/bin/fix-marketplace-errors.sh +1 -1
- package/bin/install-commands.sh +2 -2
- package/bin/specweave.js +58 -1
- package/dist/plugins/specweave-github/lib/ThreeLayerSyncManager.d.ts +5 -0
- package/dist/plugins/specweave-github/lib/ThreeLayerSyncManager.d.ts.map +1 -1
- package/dist/plugins/specweave-github/lib/ThreeLayerSyncManager.js +14 -4
- package/dist/plugins/specweave-github/lib/ThreeLayerSyncManager.js.map +1 -1
- package/dist/plugins/specweave-github/lib/completion-calculator.d.ts +1 -0
- package/dist/plugins/specweave-github/lib/completion-calculator.d.ts.map +1 -1
- package/dist/plugins/specweave-github/lib/completion-calculator.js +2 -0
- package/dist/plugins/specweave-github/lib/completion-calculator.js.map +1 -1
- package/dist/plugins/specweave-github/lib/duplicate-detector.d.ts.map +1 -1
- package/dist/plugins/specweave-github/lib/duplicate-detector.js +20 -6
- package/dist/plugins/specweave-github/lib/duplicate-detector.js.map +1 -1
- package/dist/plugins/specweave-github/lib/github-client-v2.d.ts +9 -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 +31 -18
- package/dist/plugins/specweave-github/lib/github-client-v2.js.map +1 -1
- package/dist/plugins/specweave-github/lib/github-feature-sync.d.ts +7 -0
- package/dist/plugins/specweave-github/lib/github-feature-sync.d.ts.map +1 -1
- package/dist/plugins/specweave-github/lib/github-feature-sync.js +47 -11
- package/dist/plugins/specweave-github/lib/github-feature-sync.js.map +1 -1
- package/dist/plugins/specweave-github/lib/github-increment-sync-cli.js +39 -13
- package/dist/plugins/specweave-github/lib/github-increment-sync-cli.js.map +1 -1
- package/dist/plugins/specweave-github/lib/github-issue-updater.d.ts.map +1 -1
- package/dist/plugins/specweave-github/lib/github-issue-updater.js +15 -3
- package/dist/plugins/specweave-github/lib/github-issue-updater.js.map +1 -1
- package/dist/plugins/specweave-github/lib/github-spec-sync.d.ts +7 -0
- package/dist/plugins/specweave-github/lib/github-spec-sync.d.ts.map +1 -1
- package/dist/plugins/specweave-github/lib/github-spec-sync.js +17 -4
- package/dist/plugins/specweave-github/lib/github-spec-sync.js.map +1 -1
- package/dist/plugins/specweave-github/lib/github-sync-bidirectional.d.ts.map +1 -1
- package/dist/plugins/specweave-github/lib/github-sync-bidirectional.js +13 -3
- package/dist/plugins/specweave-github/lib/github-sync-bidirectional.js.map +1 -1
- package/dist/plugins/specweave-github/lib/github-sync-increment-changes.d.ts.map +1 -1
- package/dist/plugins/specweave-github/lib/github-sync-increment-changes.js +14 -4
- package/dist/plugins/specweave-github/lib/github-sync-increment-changes.js.map +1 -1
- package/dist/plugins/specweave-github/lib/increment-issue-builder.d.ts.map +1 -1
- package/dist/plugins/specweave-github/lib/increment-issue-builder.js +24 -8
- package/dist/plugins/specweave-github/lib/increment-issue-builder.js.map +1 -1
- package/dist/plugins/specweave-github/lib/user-story-content-builder.d.ts.map +1 -1
- package/dist/plugins/specweave-github/lib/user-story-content-builder.js +21 -18
- package/dist/plugins/specweave-github/lib/user-story-content-builder.js.map +1 -1
- package/dist/plugins/specweave-github/lib/user-story-issue-builder.d.ts +3 -0
- package/dist/plugins/specweave-github/lib/user-story-issue-builder.d.ts.map +1 -1
- package/dist/plugins/specweave-github/lib/user-story-issue-builder.js +20 -19
- package/dist/plugins/specweave-github/lib/user-story-issue-builder.js.map +1 -1
- package/dist/src/cli/cleanup-zombies.js +34 -18
- package/dist/src/cli/cleanup-zombies.js.map +1 -1
- package/dist/src/cli/commands/discrepancies.js +6 -6
- package/dist/src/cli/commands/discrepancies.js.map +1 -1
- package/dist/src/cli/commands/docs.js +1 -1
- package/dist/src/cli/commands/docs.js.map +1 -1
- package/dist/src/cli/commands/import-docs.d.ts +1 -1
- package/dist/src/cli/commands/import-docs.js +2 -2
- package/dist/src/cli/commands/import-docs.js.map +1 -1
- package/dist/src/cli/commands/import-external.d.ts +1 -1
- package/dist/src/cli/commands/import-external.js +1 -1
- package/dist/src/cli/commands/init-multiproject.d.ts +1 -1
- package/dist/src/cli/commands/init-multiproject.js +3 -3
- package/dist/src/cli/commands/init-multiproject.js.map +1 -1
- package/dist/src/cli/commands/init.js +2 -2
- package/dist/src/cli/commands/init.js.map +1 -1
- package/dist/src/cli/commands/living-docs.d.ts +1 -0
- package/dist/src/cli/commands/living-docs.d.ts.map +1 -1
- package/dist/src/cli/commands/living-docs.js +18 -2
- package/dist/src/cli/commands/living-docs.js.map +1 -1
- package/dist/src/cli/commands/migrate-to-multiproject.js +1 -1
- package/dist/src/cli/commands/migrate-to-multiproject.js.map +1 -1
- package/dist/src/cli/commands/migrate-to-profiles.js +1 -1
- package/dist/src/cli/commands/migrate-to-profiles.js.map +1 -1
- package/dist/src/cli/commands/next-command.d.ts +1 -1
- package/dist/src/cli/commands/next-command.js +9 -9
- package/dist/src/cli/commands/next-command.js.map +1 -1
- package/dist/src/cli/commands/notifications.js +3 -3
- package/dist/src/cli/commands/notifications.js.map +1 -1
- package/dist/src/cli/commands/plan/increment-detector.js +2 -2
- package/dist/src/cli/commands/plan/increment-detector.js.map +1 -1
- package/dist/src/cli/commands/plan/plan-orchestrator.d.ts +2 -2
- package/dist/src/cli/commands/plan/plan-orchestrator.js +2 -2
- package/dist/src/cli/commands/plan/plan-validator.js +2 -2
- package/dist/src/cli/commands/plan/plan-validator.js.map +1 -1
- package/dist/src/cli/commands/plan/types.d.ts +1 -1
- package/dist/src/cli/commands/plan/types.js +1 -1
- package/dist/src/cli/commands/plan-command.d.ts +3 -3
- package/dist/src/cli/commands/plan-command.js +12 -12
- package/dist/src/cli/commands/plan-command.js.map +1 -1
- package/dist/src/cli/commands/project.d.ts +77 -0
- package/dist/src/cli/commands/project.d.ts.map +1 -0
- package/dist/src/cli/commands/project.js +526 -0
- package/dist/src/cli/commands/project.js.map +1 -0
- package/dist/src/cli/commands/save.d.ts +49 -0
- package/dist/src/cli/commands/save.d.ts.map +1 -0
- package/dist/src/cli/commands/save.js +583 -0
- package/dist/src/cli/commands/save.js.map +1 -0
- package/dist/src/cli/commands/sync-spec-commits.js +15 -6
- package/dist/src/cli/commands/sync-spec-commits.js.map +1 -1
- package/dist/src/cli/commands/sync-spec-content.js +15 -6
- package/dist/src/cli/commands/sync-spec-content.js.map +1 -1
- package/dist/src/cli/helpers/init/ado-repo-cloning.js +2 -2
- package/dist/src/cli/helpers/init/ado-repo-cloning.js.map +1 -1
- package/dist/src/cli/helpers/init/bitbucket-repo-cloning.d.ts +1 -1
- package/dist/src/cli/helpers/init/bitbucket-repo-cloning.js +3 -3
- package/dist/src/cli/helpers/init/bitbucket-repo-cloning.js.map +1 -1
- package/dist/src/cli/helpers/init/brownfield-analysis.js +18 -18
- package/dist/src/cli/helpers/init/brownfield-analysis.js.map +1 -1
- package/dist/src/cli/helpers/init/directory-structure.d.ts.map +1 -1
- package/dist/src/cli/helpers/init/directory-structure.js +3 -0
- package/dist/src/cli/helpers/init/directory-structure.js.map +1 -1
- package/dist/src/cli/helpers/init/external-import.js +18 -18
- package/dist/src/cli/helpers/init/external-import.js.map +1 -1
- package/dist/src/cli/helpers/init/github-repo-cloning.d.ts +1 -1
- package/dist/src/cli/helpers/init/github-repo-cloning.js +3 -3
- package/dist/src/cli/helpers/init/github-repo-cloning.js.map +1 -1
- package/dist/src/cli/helpers/init/initial-increment-generator.js +12 -12
- package/dist/src/cli/helpers/init/living-docs-preflight.js +5 -5
- package/dist/src/cli/helpers/init/living-docs-preflight.js.map +1 -1
- package/dist/src/cli/helpers/init/next-steps.js +9 -9
- package/dist/src/cli/helpers/init/next-steps.js.map +1 -1
- package/dist/src/cli/helpers/init/plugin-installer.js +3 -3
- package/dist/src/cli/helpers/init/plugin-installer.js.map +1 -1
- package/dist/src/cli/helpers/init/translation-config.js +9 -9
- package/dist/src/cli/helpers/init/translation-config.js.map +1 -1
- package/dist/src/cli/helpers/init/types.d.ts +1 -1
- package/dist/src/cli/helpers/init/types.d.ts.map +1 -1
- package/dist/src/cli/helpers/issue-tracker/ado.js +1 -1
- package/dist/src/cli/helpers/issue-tracker/ado.js.map +1 -1
- package/dist/src/cli/helpers/issue-tracker/github.js +1 -1
- package/dist/src/cli/helpers/issue-tracker/github.js.map +1 -1
- package/dist/src/cli/helpers/issue-tracker/index.js +2 -2
- package/dist/src/cli/helpers/issue-tracker/index.js.map +1 -1
- package/dist/src/cli/helpers/issue-tracker/jira.js +1 -1
- package/dist/src/cli/helpers/issue-tracker/jira.js.map +1 -1
- package/dist/src/cli/update-status-line.js +1 -1
- package/dist/src/cli/update-status-line.js.map +1 -1
- package/dist/src/cli/workers/brownfield-worker.js +1 -1
- package/dist/src/cli/workers/brownfield-worker.js.map +1 -1
- package/dist/src/cli/workers/import-worker.js +1 -1
- package/dist/src/cli/workers/import-worker.js.map +1 -1
- package/dist/src/core/background/brownfield-launcher.js +4 -4
- package/dist/src/core/background/brownfield-launcher.js.map +1 -1
- package/dist/src/core/background/index.d.ts +3 -3
- package/dist/src/core/background/index.js +3 -3
- package/dist/src/core/background/job-launcher.d.ts +1 -1
- package/dist/src/core/background/job-launcher.js +3 -3
- package/dist/src/core/background/job-launcher.js.map +1 -1
- package/dist/src/core/brownfield/importer.js +1 -1
- package/dist/src/core/brownfield/importer.js.map +1 -1
- package/dist/src/core/config/config-manager.d.ts +7 -1
- package/dist/src/core/config/config-manager.d.ts.map +1 -1
- package/dist/src/core/config/config-manager.js +24 -2
- package/dist/src/core/config/config-manager.js.map +1 -1
- package/dist/src/core/config/single-project-migrator.d.ts +110 -0
- package/dist/src/core/config/single-project-migrator.d.ts.map +1 -0
- package/dist/src/core/config/single-project-migrator.js +179 -0
- package/dist/src/core/config/single-project-migrator.js.map +1 -0
- package/dist/src/core/config/types.d.ts +3 -3
- package/dist/src/core/credentials/credentials-manager.d.ts +25 -4
- package/dist/src/core/credentials/credentials-manager.d.ts.map +1 -1
- package/dist/src/core/credentials/credentials-manager.js +54 -15
- package/dist/src/core/credentials/credentials-manager.js.map +1 -1
- package/dist/src/core/deduplication/command-deduplicator.d.ts +4 -4
- package/dist/src/core/deduplication/command-deduplicator.d.ts.map +1 -1
- package/dist/src/core/deduplication/command-deduplicator.js +3 -3
- package/dist/src/core/external-tools/external-items-counter.d.ts +4 -4
- package/dist/src/core/external-tools/external-items-counter.js +4 -4
- package/dist/src/core/external-tools/external-items-display.js +4 -4
- package/dist/src/core/external-tools/external-items-display.js.map +1 -1
- package/dist/src/core/increment/completion-validator.js +3 -3
- package/dist/src/core/increment/completion-validator.js.map +1 -1
- package/dist/src/core/increment/conflict-resolver.js +2 -2
- package/dist/src/core/increment/conflict-resolver.js.map +1 -1
- package/dist/src/core/increment/desync-detector.d.ts +1 -1
- package/dist/src/core/increment/desync-detector.js +3 -3
- package/dist/src/core/increment/desync-detector.js.map +1 -1
- package/dist/src/core/increment/discipline-checker.js +2 -2
- package/dist/src/core/increment/discipline-checker.js.map +1 -1
- package/dist/src/core/increment/increment-archiver.js +4 -4
- package/dist/src/core/increment/increment-archiver.js.map +1 -1
- package/dist/src/core/increment/increment-utils.d.ts +53 -2
- package/dist/src/core/increment/increment-utils.d.ts.map +1 -1
- package/dist/src/core/increment/increment-utils.js +78 -7
- package/dist/src/core/increment/increment-utils.js.map +1 -1
- package/dist/src/core/increment/metadata-manager.js +6 -6
- package/dist/src/core/increment/metadata-manager.js.map +1 -1
- package/dist/src/core/increment/metadata-validator.js +1 -1
- package/dist/src/core/increment/metadata-validator.js.map +1 -1
- package/dist/src/core/increment/recent-work-scanner.js +2 -2
- package/dist/src/core/increment/recent-work-scanner.js.map +1 -1
- package/dist/src/core/increment/spec-sync-manager.js +1 -1
- package/dist/src/core/increment/spec-sync-manager.js.map +1 -1
- package/dist/src/core/increment/status-auto-transition.d.ts +68 -1
- package/dist/src/core/increment/status-auto-transition.d.ts.map +1 -1
- package/dist/src/core/increment/status-auto-transition.js +141 -1
- package/dist/src/core/increment/status-auto-transition.js.map +1 -1
- package/dist/src/core/increment/status-change-sync-trigger.d.ts +1 -1
- package/dist/src/core/increment/status-change-sync-trigger.js +3 -3
- package/dist/src/core/increment/status-change-sync-trigger.js.map +1 -1
- package/dist/src/core/living-docs/cross-project-sync.d.ts +12 -0
- package/dist/src/core/living-docs/cross-project-sync.d.ts.map +1 -1
- package/dist/src/core/living-docs/cross-project-sync.js +33 -0
- package/dist/src/core/living-docs/cross-project-sync.js.map +1 -1
- package/dist/src/core/living-docs/feature-archiver.d.ts +3 -3
- package/dist/src/core/living-docs/feature-archiver.js +3 -3
- package/dist/src/core/living-docs/feature-consistency-validator.js +1 -1
- package/dist/src/core/living-docs/feature-consistency-validator.js.map +1 -1
- package/dist/src/core/living-docs/feature-id-manager.d.ts +5 -0
- package/dist/src/core/living-docs/feature-id-manager.d.ts.map +1 -1
- package/dist/src/core/living-docs/feature-id-manager.js +19 -1
- package/dist/src/core/living-docs/feature-id-manager.js.map +1 -1
- package/dist/src/core/living-docs/governance/standards-generator.js +1 -1
- package/dist/src/core/living-docs/governance/standards-generator.js.map +1 -1
- package/dist/src/core/living-docs/hierarchy-mapper.d.ts +5 -0
- package/dist/src/core/living-docs/hierarchy-mapper.d.ts.map +1 -1
- package/dist/src/core/living-docs/hierarchy-mapper.js +22 -2
- package/dist/src/core/living-docs/hierarchy-mapper.js.map +1 -1
- package/dist/src/core/living-docs/living-docs-sync.d.ts +1 -0
- package/dist/src/core/living-docs/living-docs-sync.d.ts.map +1 -1
- package/dist/src/core/living-docs/living-docs-sync.js +77 -8
- package/dist/src/core/living-docs/living-docs-sync.js.map +1 -1
- package/dist/src/core/living-docs/project-detector.d.ts +9 -0
- package/dist/src/core/living-docs/project-detector.d.ts.map +1 -1
- package/dist/src/core/living-docs/project-detector.js +38 -3
- package/dist/src/core/living-docs/project-detector.js.map +1 -1
- package/dist/src/core/living-docs/suggestions-generator.js +1 -1
- package/dist/src/core/living-docs/suggestions-generator.js.map +1 -1
- package/dist/src/core/notifications/command-integration.js +1 -1
- package/dist/src/core/notifications/command-integration.js.map +1 -1
- package/dist/src/core/project/adapters/ado-project-adapter.d.ts +73 -0
- package/dist/src/core/project/adapters/ado-project-adapter.d.ts.map +1 -0
- package/dist/src/core/project/adapters/ado-project-adapter.js +304 -0
- package/dist/src/core/project/adapters/ado-project-adapter.js.map +1 -0
- package/dist/src/core/project/adapters/github-project-adapter.d.ts +76 -0
- package/dist/src/core/project/adapters/github-project-adapter.d.ts.map +1 -0
- package/dist/src/core/project/adapters/github-project-adapter.js +315 -0
- package/dist/src/core/project/adapters/github-project-adapter.js.map +1 -0
- package/dist/src/core/project/adapters/jira-project-adapter.d.ts +69 -0
- package/dist/src/core/project/adapters/jira-project-adapter.d.ts.map +1 -0
- package/dist/src/core/project/adapters/jira-project-adapter.js +241 -0
- package/dist/src/core/project/adapters/jira-project-adapter.js.map +1 -0
- package/dist/src/core/project/project-event-bus.d.ts +72 -0
- package/dist/src/core/project/project-event-bus.d.ts.map +1 -0
- package/dist/src/core/project/project-event-bus.js +150 -0
- package/dist/src/core/project/project-event-bus.js.map +1 -0
- package/dist/src/core/project/project-manager.d.ts +0 -22
- package/dist/src/core/project/project-manager.d.ts.map +1 -1
- package/dist/src/core/project/project-manager.js +5 -275
- package/dist/src/core/project/project-manager.js.map +1 -1
- package/dist/src/core/project/project-registry.d.ts +93 -0
- package/dist/src/core/project/project-registry.d.ts.map +1 -0
- package/dist/src/core/project/project-registry.js +448 -0
- package/dist/src/core/project/project-registry.js.map +1 -0
- package/dist/src/core/project/project-resolution.d.ts +229 -0
- package/dist/src/core/project/project-resolution.d.ts.map +1 -0
- package/dist/src/core/project/project-resolution.js +633 -0
- package/dist/src/core/project/project-resolution.js.map +1 -0
- package/dist/src/core/project/types/project-types.d.ts +214 -0
- package/dist/src/core/project/types/project-types.d.ts.map +1 -0
- package/dist/src/core/project/types/project-types.js +9 -0
- package/dist/src/core/project/types/project-types.js.map +1 -0
- package/dist/src/core/repo-structure/setup-summary.js +2 -2
- package/dist/src/core/repo-structure/setup-summary.js.map +1 -1
- package/dist/src/core/specs/spec-identifier-detector.d.ts.map +1 -1
- package/dist/src/core/specs/spec-identifier-detector.js +8 -5
- package/dist/src/core/specs/spec-identifier-detector.js.map +1 -1
- package/dist/src/core/status-line/status-line-updater.js +1 -1
- package/dist/src/core/status-line/status-line-updater.js.map +1 -1
- package/dist/src/core/types/increment-metadata.d.ts +3 -3
- package/dist/src/core/types/increment-metadata.js +3 -3
- package/dist/src/core/types/increment-metadata.js.map +1 -1
- package/dist/src/core/types/sync-profile.d.ts +1 -0
- package/dist/src/core/types/sync-profile.d.ts.map +1 -1
- package/dist/src/core/types/sync-profile.js.map +1 -1
- package/dist/src/core/validators/ac-presence-validator.d.ts +4 -4
- package/dist/src/core/validators/ac-presence-validator.js +3 -3
- package/dist/src/core/validators/ac-presence-validator.js.map +1 -1
- package/dist/src/core/workflow/backlog-scanner.d.ts +5 -0
- package/dist/src/core/workflow/backlog-scanner.d.ts.map +1 -1
- package/dist/src/core/workflow/backlog-scanner.js +14 -2
- package/dist/src/core/workflow/backlog-scanner.js.map +1 -1
- package/dist/src/core/workflow/phase-detector.js +17 -17
- package/dist/src/core/workflow/phase-detector.js.map +1 -1
- package/dist/src/core/workflow/types.d.ts +1 -1
- package/dist/src/core/workflow/types.d.ts.map +1 -1
- package/dist/src/core/workflow/workflow-orchestrator.d.ts +1 -1
- package/dist/src/core/workflow/workflow-orchestrator.js +9 -9
- package/dist/src/core/workflow/workflow-orchestrator.js.map +1 -1
- package/dist/src/hooks/scheduler-startup.js +1 -1
- package/dist/src/hooks/scheduler-startup.js.map +1 -1
- package/dist/src/importers/item-converter.js +1 -1
- package/dist/src/importers/item-converter.js.map +1 -1
- package/dist/src/integrations/jira/jira-incremental-mapper.d.ts +17 -1
- package/dist/src/integrations/jira/jira-incremental-mapper.d.ts.map +1 -1
- package/dist/src/integrations/jira/jira-incremental-mapper.js +20 -12
- package/dist/src/integrations/jira/jira-incremental-mapper.js.map +1 -1
- package/dist/src/integrations/jira/jira-mapper.d.ts +17 -1
- package/dist/src/integrations/jira/jira-mapper.d.ts.map +1 -1
- package/dist/src/integrations/jira/jira-mapper.js +13 -5
- package/dist/src/integrations/jira/jira-mapper.js.map +1 -1
- package/dist/src/living-docs/enterprise-analyzer.js +1 -1
- package/dist/src/living-docs/enterprise-analyzer.js.map +1 -1
- package/dist/src/sync/ado-reconciler.d.ts +5 -0
- package/dist/src/sync/ado-reconciler.d.ts.map +1 -1
- package/dist/src/sync/ado-reconciler.js +16 -4
- package/dist/src/sync/ado-reconciler.js.map +1 -1
- package/dist/src/sync/jira-reconciler.d.ts +3 -0
- package/dist/src/sync/jira-reconciler.d.ts.map +1 -1
- package/dist/src/sync/jira-reconciler.js +12 -5
- package/dist/src/sync/jira-reconciler.js.map +1 -1
- package/dist/src/types/dashboard-cache.d.ts +4 -2
- package/dist/src/types/dashboard-cache.d.ts.map +1 -1
- package/dist/src/types/dashboard-cache.js +1 -1
- package/dist/src/types/dashboard-cache.js.map +1 -1
- package/dist/src/utils/ac-embedder.d.ts +1 -1
- package/dist/src/utils/docs-preview/docusaurus-setup.js +2 -2
- package/dist/src/utils/docs-preview/docusaurus-setup.js.map +1 -1
- package/dist/src/utils/docs-preview/sidebar-builder.js +1 -1
- package/dist/src/utils/env-multi-project-parser.d.ts +17 -0
- package/dist/src/utils/env-multi-project-parser.d.ts.map +1 -1
- package/dist/src/utils/env-multi-project-parser.js +26 -1
- package/dist/src/utils/env-multi-project-parser.js.map +1 -1
- package/dist/src/utils/external-tool-drift-detector.d.ts +2 -2
- package/dist/src/utils/external-tool-drift-detector.js +6 -6
- package/dist/src/utils/external-tool-drift-detector.js.map +1 -1
- package/dist/src/utils/notification-constants.js +2 -2
- package/dist/src/utils/notification-constants.js.map +1 -1
- package/dist/src/utils/notification-manager.d.ts +12 -3
- package/dist/src/utils/notification-manager.d.ts.map +1 -1
- package/dist/src/utils/notification-manager.js +51 -49
- package/dist/src/utils/notification-manager.js.map +1 -1
- package/dist/src/utils/platform-utils.d.ts +12 -3
- package/dist/src/utils/platform-utils.d.ts.map +1 -1
- package/dist/src/utils/platform-utils.js +35 -16
- package/dist/src/utils/platform-utils.js.map +1 -1
- package/dist/src/utils/plugin-validator.js +11 -11
- package/dist/src/utils/plugin-validator.js.map +1 -1
- package/dist/src/validators/ac-coverage-validator.d.ts +1 -1
- package/dist/src/validators/ac-coverage-validator.js +1 -1
- package/package.json +3 -1
- package/plugins/PLUGINS-INDEX.md +1 -2
- package/plugins/specweave/.claude-plugin/plugin.json +1 -1
- package/plugins/specweave/COMMANDS.md +49 -49
- package/plugins/specweave/agents/pm/AGENT.md +18 -18
- package/plugins/specweave/agents/test-aware-planner/AGENT.md +7 -7
- package/plugins/specweave/agents/translator/AGENT.md +2 -2
- package/plugins/specweave/commands/{specweave-abandon.md → abandon.md} +20 -20
- package/plugins/specweave/commands/{specweave-analyze-standards.sh → analyze-standards.sh} +4 -4
- package/plugins/specweave/commands/{specweave-archive-features.md → archive-features.md} +7 -7
- package/plugins/specweave/commands/{specweave-archive.md → archive.md} +36 -36
- package/plugins/specweave/commands/{specweave-backlog.md → backlog.md} +24 -24
- package/plugins/specweave/commands/{specweave-check-hooks.md → check-hooks.md} +10 -10
- package/plugins/specweave/commands/{specweave-check-tests.md → check-tests.md} +14 -14
- package/plugins/specweave/commands/{specweave-costs.md → costs.md} +8 -8
- package/plugins/specweave/commands/{specweave-discrepancies.md → discrepancies.md} +15 -15
- package/plugins/specweave/commands/{specweave-discrepancy-to-increment.md → discrepancy-to-increment.md} +10 -10
- package/plugins/specweave/commands/{specweave-do.md → do.md} +37 -39
- package/plugins/specweave/commands/{specweave-done.md → done.md} +23 -23
- package/plugins/specweave/commands/{specweave-embed-acs.md → embed-acs.md} +21 -21
- package/plugins/specweave/commands/{specweave-external.md → external.md} +11 -11
- package/plugins/specweave/commands/{specweave-fix-duplicates.md → fix-duplicates.md} +16 -16
- package/plugins/specweave/commands/{specweave-import-docs.md → import-docs.md} +7 -7
- package/plugins/specweave/commands/{specweave-import-external.md → import-external.md} +9 -9
- package/plugins/specweave/commands/{specweave-increment.md → increment.md} +17 -17
- package/plugins/specweave/commands/{specweave-jobs.md → jobs.md} +28 -28
- package/plugins/specweave/commands/{specweave-judge-llm.md → judge-llm.md} +19 -19
- package/plugins/specweave/commands/{specweave-living-docs.md → living-docs.md} +72 -29
- package/plugins/specweave/commands/migrate-config.md +2 -2
- package/plugins/specweave/commands/{specweave-next.md → next.md} +20 -20
- package/plugins/specweave/commands/{specweave-notifications.md → notifications.md} +11 -11
- package/plugins/specweave/commands/{specweave-organize-docs.md → organize-docs.md} +9 -9
- package/plugins/specweave/commands/{specweave-pause.md → pause.md} +19 -19
- package/plugins/specweave/commands/{specweave-plan.md → plan.md} +19 -19
- package/plugins/specweave/commands/{specweave-progress.md → progress.md} +6 -6
- package/plugins/specweave/commands/{specweave-qa.md → qa.md} +15 -15
- package/plugins/specweave/commands/{specweave-reopen.md → reopen.md} +41 -41
- package/plugins/specweave/commands/{specweave-restore-feature.md → restore-feature.md} +6 -6
- package/plugins/specweave/commands/{specweave-restore.md → restore.md} +26 -26
- package/plugins/specweave/commands/{specweave-resume.md → resume.md} +33 -33
- package/plugins/specweave/commands/revert-wip-limit.md +4 -4
- package/plugins/specweave/commands/{specweave-save.md → save.md} +34 -34
- package/plugins/specweave/commands/{specweave-status.md → status.md} +29 -29
- package/plugins/specweave/commands/{specweave.md → sw.md} +28 -28
- package/plugins/specweave/commands/{specweave-sync-acs.md → sync-acs.md} +12 -12
- package/plugins/specweave/commands/sync-diagnostics.md +5 -5
- package/plugins/specweave/commands/{specweave-sync-docs.md → sync-docs.md} +7 -7
- package/plugins/specweave/commands/{specweave-sync-logs.md → sync-logs.md} +14 -14
- package/plugins/specweave/commands/{specweave-sync-monitor.md → sync-monitor.md} +5 -5
- package/plugins/specweave/commands/{specweave-sync-progress.md → sync-progress.md} +38 -38
- package/plugins/specweave/commands/{specweave-sync-specs.md → sync-specs.md} +17 -17
- package/plugins/specweave/commands/{specweave-sync-status.md → sync-status.md} +16 -16
- package/plugins/specweave/commands/{specweave-sync-tasks.md → sync-tasks.md} +13 -13
- package/plugins/specweave/commands/{specweave-tdd-cycle.md → tdd-cycle.md} +1 -1
- package/plugins/specweave/commands/{specweave-tdd-green.md → tdd-green.md} +1 -1
- package/plugins/specweave/commands/{specweave-tdd-red.md → tdd-red.md} +1 -1
- package/plugins/specweave/commands/{specweave-tdd-refactor.md → tdd-refactor.md} +1 -1
- package/plugins/specweave/commands/{specweave-translate.md → translate.md} +17 -17
- package/plugins/specweave/commands/{specweave-update-scope.md → update-scope.md} +8 -8
- package/plugins/specweave/commands/{specweave-update-status.md → update-status.md} +6 -6
- package/plugins/specweave/commands/{specweave-validate-features.md → validate-features.md} +8 -8
- package/plugins/specweave/commands/{specweave-validate.md → validate.md} +20 -20
- package/plugins/specweave/commands/{specweave-workflow.md → workflow.md} +40 -40
- package/plugins/specweave/hooks/README.md +5 -5
- package/plugins/specweave/hooks/config-env-separator.sh +99 -0
- package/plugins/specweave/hooks/github-metadata-guard.sh +73 -0
- package/plugins/specweave/hooks/hooks.json +32 -2
- package/plugins/specweave/hooks/post-first-increment.sh +2 -2
- package/plugins/specweave/hooks/post-increment-completion.sh +7 -7
- package/plugins/specweave/hooks/post-increment-planning.sh +11 -11
- package/plugins/specweave/hooks/post-increment-status-change.sh +1 -1
- package/plugins/specweave/hooks/post-metadata-change.sh +1 -1
- package/plugins/specweave/hooks/post-spec-update.sh +2 -2
- package/plugins/specweave/hooks/post-task-completion.sh +2 -2
- package/plugins/specweave/hooks/pre-increment-start.sh +7 -7
- package/plugins/specweave/hooks/project-folder-guard.sh +272 -0
- package/plugins/specweave/hooks/spec-project-validator.sh +68 -47
- package/plugins/specweave/hooks/user-prompt-submit.sh +27 -27
- package/plugins/specweave/hooks/v2/guards/completion-guard.sh +2 -2
- package/plugins/specweave/hooks/v2/guards/metadata-json-guard.sh +1 -1
- package/plugins/specweave/hooks/v2/handlers/github-sync-handler.sh +1 -1
- package/plugins/specweave/lib/hooks/consolidated-sync.js +35 -5
- package/plugins/specweave/lib/hooks/invoke-translator-skill.js +2 -2
- package/plugins/specweave/lib/hooks/invoke-translator-skill.ts +2 -2
- package/plugins/specweave/lib/hooks/prepare-reflection-context.js +1 -1
- package/plugins/specweave/lib/hooks/prepare-reflection-context.ts +1 -1
- package/plugins/specweave/lib/hooks/sync-living-docs.js +5 -5
- package/plugins/specweave/lib/hooks/translate-file.d.ts +1 -1
- package/plugins/specweave/lib/hooks/translate-file.js +2 -2
- package/plugins/specweave/lib/hooks/translate-file.ts +3 -3
- package/plugins/specweave/lib/hooks/us-completion-orchestrator.js +1 -1
- package/plugins/specweave/lib/hooks/us-completion-orchestrator.ts +2 -2
- package/plugins/specweave/lib/vendor/core/increment/metadata-manager.js +6 -6
- package/plugins/specweave/lib/vendor/core/increment/metadata-manager.js.map +1 -1
- package/plugins/specweave/lib/vendor/core/increment/status-auto-transition.d.ts +113 -0
- package/plugins/specweave/lib/vendor/core/increment/status-auto-transition.js +318 -0
- package/plugins/specweave/lib/vendor/core/increment/status-auto-transition.js.map +1 -0
- package/plugins/specweave/lib/vendor/core/types/increment-metadata.d.ts +3 -3
- package/plugins/specweave/lib/vendor/core/types/increment-metadata.js +3 -3
- package/plugins/specweave/lib/vendor/core/types/increment-metadata.js.map +1 -1
- package/plugins/specweave/scripts/README.md +9 -9
- package/plugins/specweave/scripts/cleanup-state.sh +1 -1
- package/plugins/specweave/scripts/jobs.js +2 -2
- package/plugins/specweave/scripts/progress.js +6 -6
- package/plugins/specweave/scripts/read-costs.sh +3 -3
- package/plugins/specweave/scripts/read-jobs.sh +8 -8
- package/plugins/specweave/scripts/read-progress.sh +17 -10
- package/plugins/specweave/scripts/read-status.sh +7 -7
- package/plugins/specweave/scripts/read-workflow.sh +18 -18
- package/plugins/specweave/scripts/rebuild-dashboard-cache.sh +6 -5
- package/plugins/specweave/scripts/session-watchdog.sh +4 -4
- package/plugins/specweave/scripts/status.js +7 -7
- package/plugins/specweave/scripts/update-dashboard-cache.sh +28 -10
- package/plugins/specweave/skills/SKILLS-INDEX.md +4 -4
- package/plugins/specweave/skills/archive-increments/SKILL.md +15 -15
- package/plugins/specweave/skills/brownfield-analyzer/SKILL.md +5 -5
- package/plugins/specweave/skills/code-standards-analyzer/SKILL.md +4 -4
- package/plugins/specweave/skills/context-loader/SKILL.md +1 -1
- package/plugins/specweave/skills/{specweave-detector → detector}/SKILL.md +5 -5
- package/plugins/specweave/skills/discrepancy-viewer.md +4 -4
- package/plugins/specweave/skills/external-sync-wizard/SKILL.md +24 -24
- package/plugins/specweave/skills/{specweave-framework → framework}/SKILL.md +33 -33
- package/plugins/specweave/skills/increment-planner/SKILL.md +25 -24
- package/plugins/specweave/skills/increment-planner/templates/spec-multi-project.md +6 -16
- package/plugins/specweave/skills/increment-planner/templates/spec-single-project.md +6 -12
- package/plugins/specweave/skills/increment-quality-judge-v2/SKILL.md +6 -6
- package/plugins/specweave/skills/increment-work-router/SKILL.md +23 -23
- package/plugins/specweave/skills/instant-status/SKILL.md +7 -7
- package/plugins/specweave/skills/plugin-validator/SKILL.md +9 -9
- package/plugins/specweave/skills/pm-closure-validation/SKILL.md +4 -4
- package/plugins/specweave/skills/progress-sync/SKILL.md +51 -51
- package/plugins/specweave/skills/project-kickstarter/SKILL.md +11 -11
- package/plugins/specweave/skills/role-orchestrator/README.md +1 -1
- package/plugins/specweave/skills/role-orchestrator/SKILL.md +4 -4
- package/plugins/specweave/skills/smart-reopen-detector/SKILL.md +17 -17
- package/plugins/specweave/skills/spec-generator/SKILL.md +6 -6
- package/plugins/specweave/skills/tdd-workflow/SKILL.md +21 -21
- package/plugins/specweave/skills/translator/SKILL.md +4 -4
- package/plugins/specweave/skills/umbrella-repo-detector/SKILL.md +5 -5
- package/plugins/specweave-ado/.claude-plugin/plugin.json +1 -1
- package/plugins/specweave-ado/agents/ado-manager/AGENT.md +4 -4
- package/plugins/specweave-ado/agents/ado-sync-judge/AGENT.md +4 -4
- package/plugins/specweave-ado/commands/cleanup-duplicates.md +9 -9
- package/plugins/specweave-ado/commands/clone.md +17 -17
- package/plugins/specweave-ado/commands/close.md +10 -10
- package/plugins/specweave-ado/commands/create.md +8 -8
- package/plugins/specweave-ado/commands/import-areas.md +15 -15
- package/plugins/specweave-ado/commands/import-projects.md +12 -12
- package/plugins/specweave-ado/commands/pull.md +25 -25
- package/plugins/specweave-ado/commands/push.md +20 -20
- package/plugins/specweave-ado/commands/reconcile.md +7 -7
- package/plugins/specweave-ado/commands/status.md +7 -7
- package/plugins/specweave-ado/commands/sync.md +17 -17
- package/plugins/specweave-ado/hooks/post-living-docs-update.sh +2 -2
- package/plugins/specweave-ado/lib/ado-project-detector.js +1 -1
- package/plugins/specweave-ado/lib/ado-project-detector.ts +1 -1
- package/plugins/specweave-ado/skills/{specweave-ado-mapper → ado-mapper}/SKILL.md +2 -2
- package/plugins/specweave-ado/skills/ado-multi-project/SKILL.md +6 -6
- package/plugins/specweave-ado/skills/ado-resource-validator/SKILL.md +5 -5
- package/plugins/specweave-ado/skills/ado-sync/SKILL.md +19 -19
- package/plugins/specweave-alternatives/.claude-plugin/plugin.json +1 -1
- package/plugins/specweave-alternatives/commands/alternatives-analyze.md +14 -14
- package/plugins/specweave-backend/.claude-plugin/plugin.json +1 -1
- package/plugins/specweave-confluent/.claude-plugin/plugin.json +1 -1
- package/plugins/specweave-cost-optimizer/.claude-plugin/plugin.json +1 -1
- package/plugins/specweave-cost-optimizer/commands/cost-analyze.md +1 -1
- package/plugins/specweave-cost-optimizer/commands/cost-optimize.md +1 -1
- package/plugins/specweave-diagrams/.claude-plugin/plugin.json +1 -1
- package/plugins/specweave-diagrams/commands/diagrams-generate.md +1 -1
- package/plugins/specweave-docs/.claude-plugin/plugin.json +1 -1
- package/plugins/specweave-docs/commands/build.md +8 -8
- package/plugins/specweave-docs/commands/generate.md +22 -22
- package/plugins/specweave-docs/commands/health.md +10 -10
- package/plugins/specweave-docs/commands/init.md +9 -9
- package/plugins/specweave-docs/commands/organize.md +10 -10
- package/plugins/specweave-docs/commands/validate.md +9 -9
- package/plugins/specweave-docs/commands/view.md +14 -14
- package/plugins/specweave-docs/skills/preview/SKILL.md +11 -11
- package/plugins/specweave-figma/.claude-plugin/plugin.json +1 -1
- package/plugins/specweave-figma/commands/figma-import.md +1 -1
- package/plugins/specweave-figma/commands/figma-to-react.md +1 -1
- package/plugins/specweave-figma/commands/figma-tokens.md +1 -1
- package/plugins/specweave-frontend/.claude-plugin/plugin.json +1 -1
- package/plugins/specweave-frontend/agents/frontend-architect/README.md +5 -5
- package/plugins/specweave-frontend/commands/component-generate.md +1 -1
- package/plugins/specweave-frontend/commands/design-system-init.md +1 -1
- package/plugins/specweave-frontend/commands/frontend-scaffold.md +1 -1
- package/plugins/specweave-frontend/commands/nextjs-setup.md +1 -1
- package/plugins/specweave-github/.claude-plugin/plugin.json +1 -1
- package/plugins/specweave-github/MULTI-PROJECT-SYNC-ARCHITECTURE.md +4 -4
- package/plugins/specweave-github/SYNC-ARCHITECTURE-FIX-SUMMARY.md +18 -18
- package/plugins/specweave-github/agents/github-manager/AGENT.md +8 -8
- package/plugins/specweave-github/commands/cleanup-duplicates.md +8 -8
- package/plugins/specweave-github/commands/close.md +25 -25
- package/plugins/specweave-github/commands/create.md +17 -17
- package/plugins/specweave-github/commands/pull.md +12 -12
- package/plugins/specweave-github/commands/push.md +12 -12
- package/plugins/specweave-github/commands/reconcile.md +7 -7
- package/plugins/specweave-github/commands/status.md +24 -24
- package/plugins/specweave-github/commands/sync.md +34 -34
- package/plugins/specweave-github/commands/update-user-story.md +6 -6
- package/plugins/specweave-github/hooks/README.md +8 -8
- package/plugins/specweave-github/hooks/post-task-completion.sh +2 -2
- package/plugins/specweave-github/lib/ThreeLayerSyncManager.js +12 -4
- package/plugins/specweave-github/lib/ThreeLayerSyncManager.ts +16 -4
- package/plugins/specweave-github/lib/completion-calculator.js +3 -1
- package/plugins/specweave-github/lib/completion-calculator.ts +6 -0
- package/plugins/specweave-github/lib/duplicate-detector.js +12 -6
- package/plugins/specweave-github/lib/duplicate-detector.ts +22 -6
- package/plugins/specweave-github/lib/github-board-resolver.js +7 -2
- package/plugins/specweave-github/lib/github-board-resolver.ts +13 -2
- package/plugins/specweave-github/lib/github-client-v2.js +29 -18
- package/plugins/specweave-github/lib/github-client-v2.ts +33 -18
- package/plugins/specweave-github/lib/github-feature-sync.js +41 -11
- package/plugins/specweave-github/lib/github-feature-sync.ts +52 -11
- package/plugins/specweave-github/lib/github-hierarchical-sync.js +6 -1
- package/plugins/specweave-github/lib/github-hierarchical-sync.ts +12 -1
- package/plugins/specweave-github/lib/github-increment-sync-cli.js +35 -17
- package/plugins/specweave-github/lib/github-increment-sync-cli.ts +44 -16
- package/plugins/specweave-github/lib/github-issue-updater.js +8 -3
- package/plugins/specweave-github/lib/github-issue-updater.ts +16 -3
- package/plugins/specweave-github/lib/github-spec-sync.js +14 -4
- package/plugins/specweave-github/lib/github-spec-sync.ts +19 -4
- package/plugins/specweave-github/lib/github-sync-bidirectional.js +8 -3
- package/plugins/specweave-github/lib/github-sync-bidirectional.ts +14 -3
- package/plugins/specweave-github/lib/github-sync-increment-changes.js +9 -4
- package/plugins/specweave-github/lib/github-sync-increment-changes.ts +15 -4
- package/plugins/specweave-github/lib/increment-issue-builder.js +23 -10
- package/plugins/specweave-github/lib/increment-issue-builder.ts +29 -11
- package/plugins/specweave-github/lib/user-story-content-builder.js +19 -16
- package/plugins/specweave-github/lib/user-story-content-builder.ts +24 -19
- package/plugins/specweave-github/lib/user-story-issue-builder.js +10 -13
- package/plugins/specweave-github/lib/user-story-issue-builder.ts +20 -19
- package/plugins/specweave-github/reference/github-specweave-mapping.md +1 -1
- package/plugins/specweave-github/skills/github-issue-standard/SKILL.md +3 -3
- package/plugins/specweave-github/skills/github-issue-tracker/SKILL.md +8 -8
- package/plugins/specweave-github/skills/github-sync/SKILL.md +14 -14
- package/plugins/specweave-infrastructure/.claude-plugin/plugin.json +1 -1
- package/plugins/specweave-infrastructure/commands/{specweave-infrastructure-monitor-setup.md → monitor-setup.md} +1 -1
- package/plugins/specweave-infrastructure/commands/{specweave-infrastructure-slo-implement.md → slo-implement.md} +1 -1
- package/plugins/specweave-jira/.claude-plugin/plugin.json +1 -1
- package/plugins/specweave-jira/agents/jira-sync-judge/AGENT.md +3 -3
- package/plugins/specweave-jira/commands/cleanup-duplicates.md +9 -9
- package/plugins/specweave-jira/commands/close.md +13 -13
- package/plugins/specweave-jira/commands/create.md +8 -8
- package/plugins/specweave-jira/commands/import-boards.md +15 -15
- package/plugins/specweave-jira/commands/import-projects-full.md +15 -15
- package/plugins/specweave-jira/commands/import-projects.md +10 -10
- package/plugins/specweave-jira/commands/pull.md +10 -10
- package/plugins/specweave-jira/commands/push.md +11 -11
- package/plugins/specweave-jira/commands/reconcile.md +7 -7
- package/plugins/specweave-jira/commands/status.md +16 -16
- package/plugins/specweave-jira/commands/sync.md +27 -27
- package/plugins/specweave-jira/skills/{specweave-jira-mapper → jira-mapper}/SKILL.md +2 -2
- package/plugins/specweave-jira/skills/jira-resource-validator/SKILL.md +4 -4
- package/plugins/specweave-jira/skills/jira-sync/SKILL.md +5 -5
- package/plugins/specweave-kafka/.claude-plugin/plugin.json +1 -1
- package/plugins/specweave-kafka/IMPLEMENTATION-COMPLETE.md +10 -10
- package/plugins/specweave-kafka/README.md +12 -12
- package/plugins/specweave-kafka/commands/deploy.md +5 -5
- package/plugins/specweave-kafka/commands/dev-env.md +2 -2
- package/plugins/specweave-kafka/commands/mcp-configure.md +3 -3
- package/plugins/specweave-kafka/commands/monitor-setup.md +3 -3
- package/plugins/specweave-kafka/skills/kafka-architecture/SKILL.md +4 -4
- package/plugins/specweave-kafka/skills/kafka-cli-tools/SKILL.md +5 -5
- package/plugins/specweave-kafka/skills/kafka-mcp-integration/SKILL.md +6 -6
- package/plugins/specweave-kafka-streams/.claude-plugin/plugin.json +1 -1
- package/plugins/specweave-kafka-streams/commands/topology.md +4 -4
- package/plugins/specweave-kubernetes/.claude-plugin/plugin.json +1 -1
- package/plugins/specweave-ml/.claude-plugin/plugin.json +1 -1
- package/plugins/specweave-ml/README.md +9 -9
- package/plugins/specweave-ml/commands/{specweave-ml-deploy.md → deploy.md} +1 -1
- package/plugins/specweave-ml/commands/{specweave-ml-evaluate.md → evaluate.md} +1 -1
- package/plugins/specweave-ml/commands/{specweave-ml-explain.md → explain.md} +1 -1
- package/plugins/specweave-ml/commands/{specweave-ml-pipeline.md → pipeline.md} +1 -1
- package/plugins/specweave-ml/skills/automl-optimizer/SKILL.md +1 -1
- package/plugins/specweave-ml/skills/data-visualizer/SKILL.md +1 -1
- package/plugins/specweave-ml/skills/experiment-tracker/SKILL.md +4 -4
- package/plugins/specweave-ml/skills/feature-engineer/SKILL.md +1 -1
- package/plugins/specweave-ml/skills/ml-deployment-helper/SKILL.md +2 -2
- package/plugins/specweave-ml/skills/ml-pipeline-orchestrator/SKILL.md +10 -10
- package/plugins/specweave-ml/skills/model-registry/SKILL.md +1 -1
- package/plugins/specweave-ml/skills/time-series-forecaster/SKILL.md +1 -1
- package/plugins/specweave-mobile/.claude-plugin/plugin.json +1 -1
- package/plugins/specweave-mobile/README.md +2 -2
- package/plugins/specweave-mobile/agents/mobile-architect/AGENT.md +2 -2
- package/plugins/specweave-mobile/skills/react-native-setup/SKILL.md +1 -1
- package/plugins/specweave-n8n/.claude-plugin/plugin.json +1 -1
- package/plugins/specweave-n8n/commands/workflow-template.md +4 -4
- package/plugins/specweave-payments/.claude-plugin/plugin.json +1 -1
- package/plugins/specweave-payments/commands/stripe-setup.md +1 -1
- package/plugins/specweave-payments/commands/subscription-flow.md +1 -1
- package/plugins/specweave-plugin-dev/.claude-plugin/plugin.json +1 -1
- package/plugins/specweave-plugin-dev/commands/plugin-create.md +1 -1
- package/plugins/specweave-plugin-dev/commands/plugin-publish.md +1 -1
- package/plugins/specweave-plugin-dev/commands/plugin-test.md +1 -1
- package/plugins/specweave-release/.claude-plugin/plugin.json +1 -1
- package/plugins/specweave-release/IMPLEMENTATION.md +14 -14
- package/plugins/specweave-release/README.md +33 -33
- package/plugins/specweave-release/agents/release-manager/AGENT.md +18 -18
- package/plugins/specweave-release/commands/{specweave-release-align.md → align.md} +19 -19
- package/plugins/specweave-release/commands/{specweave-release-init.md → init.md} +19 -19
- package/plugins/specweave-release/commands/{specweave-release-npm.md → npm.md} +14 -14
- package/plugins/specweave-release/commands/{specweave-release-platform.md → platform.md} +17 -17
- package/plugins/specweave-release/commands/{specweave-release-rc.md → rc.md} +37 -37
- package/plugins/specweave-release/hooks/post-task-completion.sh +1 -1
- package/plugins/specweave-release/skills/rc-manager/SKILL.md +12 -12
- package/plugins/specweave-release/skills/release-coordinator/SKILL.md +11 -11
- package/plugins/specweave-release/skills/release-strategy-advisor/SKILL.md +4 -4
- package/plugins/specweave-release/skills/version-aligner/SKILL.md +7 -7
- package/plugins/specweave-testing/.claude-plugin/plugin.json +1 -1
- package/plugins/specweave-testing/agents/qa-engineer/README.md +5 -5
- package/plugins/specweave-testing/commands/e2e-setup.md +1 -1
- package/plugins/specweave-testing/commands/test-coverage.md +1 -1
- package/plugins/specweave-testing/commands/test-generate.md +1 -1
- package/plugins/specweave-testing/commands/test-init.md +1 -1
- package/plugins/specweave-tooling/.claude-plugin/plugin.json +1 -1
- package/plugins/specweave-tooling/commands/{specweave-tooling-skill-create.md → skill-create.md} +1 -1
- package/plugins/specweave-tooling/commands/{specweave-tooling-skill-package.md → skill-package.md} +1 -1
- package/plugins/specweave-tooling/commands/{specweave-tooling-skill-validate.md → skill-validate.md} +1 -1
- package/plugins/specweave-ui/.claude-plugin/plugin.json +1 -1
- package/plugins/specweave-ui/commands/ui-automate.md +9 -9
- package/plugins/specweave-ui/commands/ui-inspect.md +6 -6
- package/src/templates/AGENTS.md.template +49 -49
- package/src/templates/CLAUDE.md.template +11 -11
- package/dist/src/cli/commands/switch-project.d.ts +0 -13
- package/dist/src/cli/commands/switch-project.d.ts.map +0 -1
- package/dist/src/cli/commands/switch-project.js +0 -78
- package/dist/src/cli/commands/switch-project.js.map +0 -1
- package/plugins/specweave/commands/specweave-init-multiproject.md +0 -146
- package/plugins/specweave-core/.claude-plugin/plugin.json +0 -21
- package/plugins/specweave-core/commands/architecture-review.md +0 -288
- package/plugins/specweave-core/commands/code-review.md +0 -213
- package/plugins/specweave-core/commands/refactor-plan.md +0 -249
- package/plugins/specweave-core/skills/code-quality/SKILL.md +0 -158
- package/plugins/specweave-core/skills/design-patterns/SKILL.md +0 -245
- package/plugins/specweave-core/skills/software-architecture/SKILL.md +0 -84
- /package/plugins/specweave/skills/{specweave-framework → framework}/test-cases/test-1-increment-naming.yaml +0 -0
- /package/plugins/specweave/skills/{specweave-framework → framework}/test-cases/test-2-source-of-truth.yaml +0 -0
- /package/plugins/specweave/skills/{specweave-framework → framework}/test-cases/test-3-increment-discipline.yaml +0 -0
- /package/plugins/specweave/skills/{specweave-framework → framework}/test-cases/test-4-file-placement.yaml +0 -0
|
@@ -154,14 +154,30 @@ class IncrementIssueBuilder {
|
|
|
154
154
|
const incrementId = incrementData.frontmatter.increment;
|
|
155
155
|
const title = `[${featureId}][${story.id}] ${story.title}`;
|
|
156
156
|
let body = "";
|
|
157
|
-
|
|
157
|
+
const completedACs = story.acceptanceCriteria.filter((ac) => ac.completed).length;
|
|
158
|
+
const totalACs = story.acceptanceCriteria.length;
|
|
159
|
+
const storyTasks = incrementData.tasks.filter(
|
|
160
|
+
(t) => t.userStories.includes(story.id) || t.userStories.some((us) => us.toUpperCase() === story.id.toUpperCase())
|
|
161
|
+
);
|
|
162
|
+
const completedTasks = storyTasks.filter((t) => t.completed).length;
|
|
163
|
+
const totalTasks = storyTasks.length;
|
|
164
|
+
const overallPercentage = totalACs + totalTasks > 0 ? Math.round((completedACs + completedTasks) / (totalACs + totalTasks) * 100) : 0;
|
|
165
|
+
body += `## Progress
|
|
166
|
+
|
|
158
167
|
`;
|
|
159
|
-
body += `**
|
|
168
|
+
body += `**Acceptance Criteria**: ${completedACs}/${totalACs} (${totalACs > 0 ? Math.round(completedACs / totalACs * 100) : 0}%)
|
|
160
169
|
`;
|
|
161
|
-
body += `**
|
|
170
|
+
body += `**Tasks**: ${completedTasks}/${totalTasks} (${totalTasks > 0 ? Math.round(completedTasks / totalTasks * 100) : 0}%)
|
|
162
171
|
`;
|
|
163
|
-
body +=
|
|
164
|
-
|
|
172
|
+
body += `**Overall**: ${overallPercentage}%
|
|
173
|
+
|
|
174
|
+
`;
|
|
175
|
+
const filledBlocks = Math.floor(overallPercentage / 5);
|
|
176
|
+
const emptyBlocks = 20 - filledBlocks;
|
|
177
|
+
body += `${"\u2588".repeat(filledBlocks)}${"\u2591".repeat(emptyBlocks)} ${overallPercentage}%
|
|
178
|
+
|
|
179
|
+
`;
|
|
180
|
+
body += `---
|
|
165
181
|
|
|
166
182
|
`;
|
|
167
183
|
body += `## User Story
|
|
@@ -207,15 +223,12 @@ class IncrementIssueBuilder {
|
|
|
207
223
|
body += `---
|
|
208
224
|
|
|
209
225
|
`;
|
|
210
|
-
const storyTasks = incrementData.tasks.filter(
|
|
211
|
-
(t) => t.userStories.includes(story.id) || t.userStories.some((us) => us.toUpperCase() === story.id.toUpperCase())
|
|
212
|
-
);
|
|
213
226
|
if (storyTasks.length > 0) {
|
|
214
227
|
body += `## Tasks
|
|
215
228
|
|
|
216
229
|
`;
|
|
217
|
-
const
|
|
218
|
-
body += `Progress: ${
|
|
230
|
+
const completedTasks2 = storyTasks.filter((t) => t.completed).length;
|
|
231
|
+
body += `Progress: ${completedTasks2}/${storyTasks.length} tasks
|
|
219
232
|
|
|
220
233
|
`;
|
|
221
234
|
for (const task of storyTasks) {
|
|
@@ -287,11 +287,34 @@ export class IncrementIssueBuilder {
|
|
|
287
287
|
// Build body
|
|
288
288
|
let body = '';
|
|
289
289
|
|
|
290
|
-
//
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
290
|
+
// ❌ REMOVED: Metadata header (Feature, Status, Priority)
|
|
291
|
+
// WHY: GitHub has NATIVE fields for this (labels, milestones)
|
|
292
|
+
// Body should contain ONLY actual work content (ACs, tasks, user story)
|
|
293
|
+
// See: .specweave/docs/internal/troubleshooting/CRITICAL-remove-metadata-header-from-github-issues.md
|
|
294
|
+
|
|
295
|
+
// Progress section (consistency with user-story-issue-builder.ts)
|
|
296
|
+
const completedACs = story.acceptanceCriteria.filter(ac => ac.completed).length;
|
|
297
|
+
const totalACs = story.acceptanceCriteria.length;
|
|
298
|
+
const storyTasks = incrementData.tasks.filter(t =>
|
|
299
|
+
t.userStories.includes(story.id) ||
|
|
300
|
+
t.userStories.some(us => us.toUpperCase() === story.id.toUpperCase())
|
|
301
|
+
);
|
|
302
|
+
const completedTasks = storyTasks.filter(t => t.completed).length;
|
|
303
|
+
const totalTasks = storyTasks.length;
|
|
304
|
+
const overallPercentage = (totalACs + totalTasks) > 0
|
|
305
|
+
? Math.round(((completedACs + completedTasks) / (totalACs + totalTasks)) * 100)
|
|
306
|
+
: 0;
|
|
307
|
+
|
|
308
|
+
body += `## Progress\n\n`;
|
|
309
|
+
body += `**Acceptance Criteria**: ${completedACs}/${totalACs} (${totalACs > 0 ? Math.round((completedACs / totalACs) * 100) : 0}%)\n`;
|
|
310
|
+
body += `**Tasks**: ${completedTasks}/${totalTasks} (${totalTasks > 0 ? Math.round((completedTasks / totalTasks) * 100) : 0}%)\n`;
|
|
311
|
+
body += `**Overall**: ${overallPercentage}%\n\n`;
|
|
312
|
+
|
|
313
|
+
// Progress bar
|
|
314
|
+
const filledBlocks = Math.floor(overallPercentage / 5);
|
|
315
|
+
const emptyBlocks = 20 - filledBlocks;
|
|
316
|
+
body += `${'█'.repeat(filledBlocks)}${'░'.repeat(emptyBlocks)} ${overallPercentage}%\n\n`;
|
|
317
|
+
body += `---\n\n`;
|
|
295
318
|
|
|
296
319
|
// User Story description
|
|
297
320
|
body += `## User Story\n\n`;
|
|
@@ -324,12 +347,7 @@ export class IncrementIssueBuilder {
|
|
|
324
347
|
|
|
325
348
|
body += `---\n\n`;
|
|
326
349
|
|
|
327
|
-
// Tasks for this user story
|
|
328
|
-
const storyTasks = incrementData.tasks.filter(t =>
|
|
329
|
-
t.userStories.includes(story.id) ||
|
|
330
|
-
t.userStories.some(us => us.toUpperCase() === story.id.toUpperCase())
|
|
331
|
-
);
|
|
332
|
-
|
|
350
|
+
// Tasks for this user story (already calculated above for Progress section)
|
|
333
351
|
if (storyTasks.length > 0) {
|
|
334
352
|
body += `## Tasks\n\n`;
|
|
335
353
|
const completedTasks = storyTasks.filter(t => t.completed).length;
|
|
@@ -40,25 +40,28 @@ class UserStoryContentBuilder {
|
|
|
40
40
|
async buildIssueBody(githubRepo) {
|
|
41
41
|
const content = await this.parse();
|
|
42
42
|
let body = "";
|
|
43
|
-
const priority = this.extractPriorityFromACs(content.acceptanceCriteria);
|
|
44
43
|
const repo = githubRepo || await this.detectGitHubRepo();
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
44
|
+
const completedACs = content.acceptanceCriteria.filter((ac) => ac.completed).length;
|
|
45
|
+
const totalACs = content.acceptanceCriteria.length;
|
|
46
|
+
const completedTasks = content.tasks.filter((t) => t.status).length;
|
|
47
|
+
const totalTasks = content.tasks.length;
|
|
48
|
+
const overallPercentage = totalACs + totalTasks > 0 ? Math.round((completedACs + completedTasks) / (totalACs + totalTasks) * 100) : 0;
|
|
49
|
+
body += `## Progress
|
|
50
|
+
|
|
49
51
|
`;
|
|
50
|
-
}
|
|
51
|
-
body += `**Feature**: ${content.featureId}
|
|
52
|
+
body += `**Acceptance Criteria**: ${completedACs}/${totalACs} (${totalACs > 0 ? Math.round(completedACs / totalACs * 100) : 0}%)
|
|
52
53
|
`;
|
|
53
|
-
}
|
|
54
|
-
body += `**Status**: ${content.frontmatter.status}
|
|
54
|
+
body += `**Tasks**: ${completedTasks}/${totalTasks} (${totalTasks > 0 ? Math.round(completedTasks / totalTasks * 100) : 0}%)
|
|
55
55
|
`;
|
|
56
|
-
|
|
57
|
-
|
|
56
|
+
body += `**Overall**: ${overallPercentage}%
|
|
57
|
+
|
|
58
58
|
`;
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
59
|
+
const filledBlocks = Math.floor(overallPercentage / 5);
|
|
60
|
+
const emptyBlocks = 20 - filledBlocks;
|
|
61
|
+
body += `${"\u2588".repeat(filledBlocks)}${"\u2591".repeat(emptyBlocks)} ${overallPercentage}%
|
|
62
|
+
|
|
63
|
+
`;
|
|
64
|
+
body += `---
|
|
62
65
|
|
|
63
66
|
`;
|
|
64
67
|
body += `## User Story
|
|
@@ -99,9 +102,9 @@ class UserStoryContentBuilder {
|
|
|
99
102
|
`;
|
|
100
103
|
for (const ac of content.acceptanceCriteria) {
|
|
101
104
|
const checkbox = ac.completed ? "[x]" : "[ ]";
|
|
102
|
-
const
|
|
105
|
+
const priority = ac.priority ? ` (${ac.priority})` : "";
|
|
103
106
|
const testable = ac.testable ? " [testable]" : "";
|
|
104
|
-
body += `- ${checkbox} **${ac.id}**: ${ac.description}${
|
|
107
|
+
body += `- ${checkbox} **${ac.id}**: ${ac.description}${priority}${testable}
|
|
105
108
|
`;
|
|
106
109
|
}
|
|
107
110
|
body += "\n";
|
|
@@ -116,28 +116,33 @@ export class UserStoryContentBuilder {
|
|
|
116
116
|
|
|
117
117
|
let body = '';
|
|
118
118
|
|
|
119
|
-
// Extract priority from ACs (highest priority wins)
|
|
120
|
-
const priority = this.extractPriorityFromACs(content.acceptanceCriteria);
|
|
121
|
-
|
|
122
119
|
// Detect GitHub repo from git remote if not provided
|
|
123
120
|
const repo = githubRepo || await this.detectGitHubRepo();
|
|
124
121
|
|
|
125
|
-
//
|
|
126
|
-
//
|
|
127
|
-
//
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
body +=
|
|
122
|
+
// ❌ REMOVED: Metadata header (Feature, Status, Priority)
|
|
123
|
+
// WHY: GitHub has NATIVE fields for this (labels, milestones)
|
|
124
|
+
// Body should contain ONLY actual work content (ACs, tasks, user story)
|
|
125
|
+
// See: .specweave/docs/internal/troubleshooting/CRITICAL-remove-metadata-header-from-github-issues.md
|
|
126
|
+
|
|
127
|
+
// Progress section (consistency with user-story-issue-builder.ts)
|
|
128
|
+
const completedACs = content.acceptanceCriteria.filter(ac => ac.completed).length;
|
|
129
|
+
const totalACs = content.acceptanceCriteria.length;
|
|
130
|
+
const completedTasks = content.tasks.filter(t => t.status).length;
|
|
131
|
+
const totalTasks = content.tasks.length;
|
|
132
|
+
const overallPercentage = (totalACs + totalTasks) > 0
|
|
133
|
+
? Math.round(((completedACs + completedTasks) / (totalACs + totalTasks)) * 100)
|
|
134
|
+
: 0;
|
|
135
|
+
|
|
136
|
+
body += `## Progress\n\n`;
|
|
137
|
+
body += `**Acceptance Criteria**: ${completedACs}/${totalACs} (${totalACs > 0 ? Math.round((completedACs / totalACs) * 100) : 0}%)\n`;
|
|
138
|
+
body += `**Tasks**: ${completedTasks}/${totalTasks} (${totalTasks > 0 ? Math.round((completedTasks / totalTasks) * 100) : 0}%)\n`;
|
|
139
|
+
body += `**Overall**: ${overallPercentage}%\n\n`;
|
|
140
|
+
|
|
141
|
+
// Progress bar
|
|
142
|
+
const filledBlocks = Math.floor(overallPercentage / 5);
|
|
143
|
+
const emptyBlocks = 20 - filledBlocks;
|
|
144
|
+
body += `${'█'.repeat(filledBlocks)}${'░'.repeat(emptyBlocks)} ${overallPercentage}%\n\n`;
|
|
145
|
+
body += `---\n\n`;
|
|
141
146
|
|
|
142
147
|
// User Story description
|
|
143
148
|
body += `## User Story\n\n`;
|
|
@@ -12,10 +12,10 @@ This prevents incorrect issue titles like [undefined][US-XXX] or [SP-US-XXX].
|
|
|
12
12
|
Provide the correct Feature ID (e.g., "FS-047") when constructing this builder.`
|
|
13
13
|
);
|
|
14
14
|
}
|
|
15
|
-
if (!/^FS-\d{3,}
|
|
15
|
+
if (!/^FS-\d{3,}E?$/.test(featureId)) {
|
|
16
16
|
throw new Error(
|
|
17
17
|
`UserStoryIssueBuilder: Invalid featureId format "${featureId}".
|
|
18
|
-
Expected format: FS-XXX (e.g., "FS-047", "FS-
|
|
18
|
+
Expected format: FS-XXX or FS-XXXE (e.g., "FS-047", "FS-123E", "FS-1000").
|
|
19
19
|
This prevents incorrect issue titles like [SP-US-XXX] or [${featureId}][US-XXX].`
|
|
20
20
|
);
|
|
21
21
|
}
|
|
@@ -43,11 +43,11 @@ This prevents incorrect issue titles like [SP-US-XXX] or [${featureId}][US-XXX].
|
|
|
43
43
|
const acceptanceCriteria = this.extractAcceptanceCriteria(bodyContent);
|
|
44
44
|
const tasks = await this.extractTasks(bodyContent, frontmatter.id);
|
|
45
45
|
const title = `[${this.featureId}][${frontmatter.id}] ${frontmatter.title}`;
|
|
46
|
-
const titlePattern = /^\[FS-\d{3,}
|
|
46
|
+
const titlePattern = /^\[FS-\d{3,}E?\]\[US-\d{3,}E?\] .+$/;
|
|
47
47
|
if (!titlePattern.test(title)) {
|
|
48
48
|
throw new Error(
|
|
49
49
|
`Generated issue title has incorrect format: "${title}"
|
|
50
|
-
Expected: [FS-XXX][US-YYY] Title (3+ digits each)
|
|
50
|
+
Expected: [FS-XXX][US-YYY] or [FS-XXXE][US-YYYE] Title (3+ digits each, E-suffix for external)
|
|
51
51
|
This indicates a bug in UserStoryIssueBuilder or invalid frontmatter.
|
|
52
52
|
Feature ID: ${this.featureId}
|
|
53
53
|
User Story ID: ${frontmatter.id}`
|
|
@@ -235,13 +235,6 @@ User Story ID: ${frontmatter.id}`
|
|
|
235
235
|
data.acceptanceCriteria,
|
|
236
236
|
data.tasks
|
|
237
237
|
);
|
|
238
|
-
sections.push(`**Feature**: ${this.featureId}`);
|
|
239
|
-
sections.push(`**Status**: ${this.capitalize(data.frontmatter.status)}`);
|
|
240
|
-
sections.push(`**Priority**: ${data.frontmatter.priority || "P2"}`);
|
|
241
|
-
if (data.frontmatter.project && data.frontmatter.project !== "default") {
|
|
242
|
-
sections.push(`**Project**: ${data.frontmatter.project}`);
|
|
243
|
-
}
|
|
244
|
-
sections.push("");
|
|
245
238
|
sections.push(IssueStateManager.formatProgressMarkdown(progress));
|
|
246
239
|
sections.push("");
|
|
247
240
|
if (data.userStoryStatement) {
|
|
@@ -356,6 +349,9 @@ User Story ID: ${frontmatter.id}`
|
|
|
356
349
|
*
|
|
357
350
|
* CRITICAL: Label names must match repository labels exactly!
|
|
358
351
|
* Repository uses: status:complete, status:active, status:not_started
|
|
352
|
+
*
|
|
353
|
+
* v0.35.0: Project derived from frontmatter.project in us-*.md files.
|
|
354
|
+
* Living docs sync transforms spec.md **Project**: → us-*.md frontmatter project:
|
|
359
355
|
*/
|
|
360
356
|
buildLabels(frontmatter) {
|
|
361
357
|
const labels = ["user-story", "specweave"];
|
|
@@ -382,8 +378,9 @@ User Story ID: ${frontmatter.id}`
|
|
|
382
378
|
if (frontmatter.priority) {
|
|
383
379
|
labels.push(frontmatter.priority.toLowerCase());
|
|
384
380
|
}
|
|
385
|
-
|
|
386
|
-
|
|
381
|
+
const project = frontmatter.project?.toLowerCase();
|
|
382
|
+
if (project && project !== "default") {
|
|
383
|
+
labels.push(`project:${project}`);
|
|
387
384
|
}
|
|
388
385
|
return labels;
|
|
389
386
|
}
|
|
@@ -65,11 +65,11 @@ export class UserStoryIssueBuilder {
|
|
|
65
65
|
);
|
|
66
66
|
}
|
|
67
67
|
|
|
68
|
-
// ✅ VALIDATION: Ensure featureId matches expected pattern (FS-XXX
|
|
69
|
-
if (!/^FS-\d{3,}
|
|
68
|
+
// ✅ VALIDATION: Ensure featureId matches expected pattern (FS-XXX or FS-XXXE for external)
|
|
69
|
+
if (!/^FS-\d{3,}E?$/.test(featureId)) {
|
|
70
70
|
throw new Error(
|
|
71
71
|
`UserStoryIssueBuilder: Invalid featureId format "${featureId}".\n` +
|
|
72
|
-
`Expected format: FS-XXX (e.g., "FS-047", "FS-
|
|
72
|
+
`Expected format: FS-XXX or FS-XXXE (e.g., "FS-047", "FS-123E", "FS-1000").\n` +
|
|
73
73
|
`This prevents incorrect issue titles like [SP-US-XXX] or [${featureId}][US-XXX].`
|
|
74
74
|
);
|
|
75
75
|
}
|
|
@@ -115,11 +115,11 @@ export class UserStoryIssueBuilder {
|
|
|
115
115
|
const title = `[${this.featureId}][${frontmatter.id}] ${frontmatter.title}`;
|
|
116
116
|
|
|
117
117
|
// ✅ SAFETY CHECK: Ensure title matches expected pattern (3+ digits)
|
|
118
|
-
const titlePattern = /^\[FS-\d{3,}
|
|
118
|
+
const titlePattern = /^\[FS-\d{3,}E?\]\[US-\d{3,}E?\] .+$/;
|
|
119
119
|
if (!titlePattern.test(title)) {
|
|
120
120
|
throw new Error(
|
|
121
121
|
`Generated issue title has incorrect format: "${title}"\n` +
|
|
122
|
-
`Expected: [FS-XXX][US-YYY] Title (3+ digits each)\n` +
|
|
122
|
+
`Expected: [FS-XXX][US-YYY] or [FS-XXXE][US-YYYE] Title (3+ digits each, E-suffix for external)\n` +
|
|
123
123
|
`This indicates a bug in UserStoryIssueBuilder or invalid frontmatter.\n` +
|
|
124
124
|
`Feature ID: ${this.featureId}\n` +
|
|
125
125
|
`User Story ID: ${frontmatter.id}`
|
|
@@ -135,7 +135,7 @@ export class UserStoryIssueBuilder {
|
|
|
135
135
|
bodyContent
|
|
136
136
|
});
|
|
137
137
|
|
|
138
|
-
// 5. Determine labels
|
|
138
|
+
// 5. Determine labels (v0.35.0: project from frontmatter, not body)
|
|
139
139
|
const labels = this.buildLabels(frontmatter);
|
|
140
140
|
|
|
141
141
|
return {
|
|
@@ -397,17 +397,12 @@ export class UserStoryIssueBuilder {
|
|
|
397
397
|
data.tasks
|
|
398
398
|
);
|
|
399
399
|
|
|
400
|
-
//
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
// ✅ FIX: Only output Project if defined and not "default"
|
|
405
|
-
if (data.frontmatter.project && data.frontmatter.project !== 'default') {
|
|
406
|
-
sections.push(`**Project**: ${data.frontmatter.project}`);
|
|
407
|
-
}
|
|
408
|
-
sections.push('');
|
|
400
|
+
// ❌ REMOVED: Metadata header (Feature, Status, Priority, Project)
|
|
401
|
+
// WHY: GitHub has NATIVE fields for this (labels, milestones)
|
|
402
|
+
// Body should contain ONLY actual work content (ACs, tasks, user story)
|
|
403
|
+
// See: .specweave/docs/internal/troubleshooting/CRITICAL-remove-metadata-header-from-github-issues.md
|
|
409
404
|
|
|
410
|
-
// Progress section
|
|
405
|
+
// Progress section
|
|
411
406
|
sections.push(IssueStateManager.formatProgressMarkdown(progress));
|
|
412
407
|
sections.push('');
|
|
413
408
|
|
|
@@ -568,6 +563,9 @@ export class UserStoryIssueBuilder {
|
|
|
568
563
|
*
|
|
569
564
|
* CRITICAL: Label names must match repository labels exactly!
|
|
570
565
|
* Repository uses: status:complete, status:active, status:not_started
|
|
566
|
+
*
|
|
567
|
+
* v0.35.0: Project derived from frontmatter.project in us-*.md files.
|
|
568
|
+
* Living docs sync transforms spec.md **Project**: → us-*.md frontmatter project:
|
|
571
569
|
*/
|
|
572
570
|
private buildLabels(frontmatter: UserStoryFrontmatter): string[] {
|
|
573
571
|
const labels: string[] = ['user-story', 'specweave'];
|
|
@@ -607,9 +605,12 @@ export class UserStoryIssueBuilder {
|
|
|
607
605
|
labels.push(frontmatter.priority.toLowerCase());
|
|
608
606
|
}
|
|
609
607
|
|
|
610
|
-
// Add project label
|
|
611
|
-
|
|
612
|
-
|
|
608
|
+
// Add project label (v0.35.0: extract from frontmatter.project in us-*.md files)
|
|
609
|
+
// Living docs sync transforms spec.md **Project**: → us-*.md frontmatter project:
|
|
610
|
+
// See CLAUDE.md "Two File Formats for Project Field" for architecture
|
|
611
|
+
const project = frontmatter.project?.toLowerCase();
|
|
612
|
+
if (project && project !== 'default') {
|
|
613
|
+
labels.push(`project:${project}`);
|
|
613
614
|
}
|
|
614
615
|
|
|
615
616
|
return labels;
|
|
@@ -295,7 +295,7 @@ Body: We need OAuth2 authentication with Google and GitHub providers...
|
|
|
295
295
|
|
|
296
296
|
### Example 3: Close Increment → Close Issue
|
|
297
297
|
|
|
298
|
-
**SpecWeave**: `/
|
|
298
|
+
**SpecWeave**: `/sw:done 0004` (all 48 tasks complete)
|
|
299
299
|
|
|
300
300
|
**GitHub**: Close issue #130 with comment:
|
|
301
301
|
```markdown
|
|
@@ -190,9 +190,9 @@ All GitHub issue content is generated by these builders:
|
|
|
190
190
|
|
|
191
191
|
All GitHub sync commands use the Universal Hierarchy:
|
|
192
192
|
|
|
193
|
-
- `/
|
|
194
|
-
- `/
|
|
195
|
-
- `/
|
|
193
|
+
- `/sw-github:sync` - Sync increments via Feature/UserStory hierarchy
|
|
194
|
+
- `/sw-github:create-issue` - Create issue using standard format
|
|
195
|
+
- `/sw-github:update-user-story` - Update user story issue
|
|
196
196
|
|
|
197
197
|
## Validation Checklist
|
|
198
198
|
|
|
@@ -14,7 +14,7 @@ description: Task-level GitHub issue tracking for SpecWeave increments. Provides
|
|
|
14
14
|
- Blocking issue tracking
|
|
15
15
|
- Task-level comments and discussions
|
|
16
16
|
|
|
17
|
-
**Integration**: Works with `github-sync` skill and `/
|
|
17
|
+
**Integration**: Works with `github-sync` skill and `/sw:github:*` commands
|
|
18
18
|
|
|
19
19
|
---
|
|
20
20
|
|
|
@@ -171,7 +171,7 @@ plugins:
|
|
|
171
171
|
### Check Task Status
|
|
172
172
|
|
|
173
173
|
```bash
|
|
174
|
-
/
|
|
174
|
+
/sw:github:status 0004
|
|
175
175
|
```
|
|
176
176
|
|
|
177
177
|
Output:
|
|
@@ -196,7 +196,7 @@ Week 1: Foundation
|
|
|
196
196
|
### Sync Task Checklist
|
|
197
197
|
|
|
198
198
|
```bash
|
|
199
|
-
/
|
|
199
|
+
/sw:github:sync 0004 --tasks
|
|
200
200
|
```
|
|
201
201
|
|
|
202
202
|
Updates GitHub issue checklist to match current increment progress.
|
|
@@ -204,7 +204,7 @@ Updates GitHub issue checklist to match current increment progress.
|
|
|
204
204
|
### Comment on Task
|
|
205
205
|
|
|
206
206
|
```bash
|
|
207
|
-
/
|
|
207
|
+
/sw:github:comment 0004 T-008 "Cursor adapter completed, moving to testing phase"
|
|
208
208
|
```
|
|
209
209
|
|
|
210
210
|
Posts custom comment to GitHub issue for specific task.
|
|
@@ -308,7 +308,7 @@ tasks:
|
|
|
308
308
|
Generate time reports:
|
|
309
309
|
|
|
310
310
|
```bash
|
|
311
|
-
/
|
|
311
|
+
/sw:github:time-report 0004
|
|
312
312
|
```
|
|
313
313
|
|
|
314
314
|
Output:
|
|
@@ -458,7 +458,7 @@ Warn when tasks are behind schedule:
|
|
|
458
458
|
**Checklist not updating?**
|
|
459
459
|
- Verify `update_checklist: true` in config
|
|
460
460
|
- Check GitHub API permissions (repo write access)
|
|
461
|
-
- Manually sync: `/
|
|
461
|
+
- Manually sync: `/sw:github:sync 0004 --tasks`
|
|
462
462
|
|
|
463
463
|
**Comments not posting?**
|
|
464
464
|
- Check `post_task_comments: true`
|
|
@@ -468,7 +468,7 @@ Warn when tasks are behind schedule:
|
|
|
468
468
|
**Time tracking inaccurate?**
|
|
469
469
|
- Verify task timestamps in `.metadata.yaml`
|
|
470
470
|
- Check for manual edits to metadata
|
|
471
|
-
- Re-sync: `/
|
|
471
|
+
- Re-sync: `/sw:github:sync 0004 --force`
|
|
472
472
|
|
|
473
473
|
---
|
|
474
474
|
|
|
@@ -488,7 +488,7 @@ Warn when tasks are behind schedule:
|
|
|
488
488
|
|
|
489
489
|
- **github-sync**: High-level increment ↔ issue synchronization
|
|
490
490
|
- **github-manager agent**: AI agent for GitHub operations
|
|
491
|
-
- **Commands**: All `/
|
|
491
|
+
- **Commands**: All `/sw:github:*` commands
|
|
492
492
|
|
|
493
493
|
---
|
|
494
494
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: github-sync
|
|
3
|
-
description: Two-way synchronization between SpecWeave specs and GitHub Projects (push & pull by default). Activates ONLY when user asks questions about GitHub integration or needs help configuring GitHub sync. Does NOT activate for slash commands. For syncing, use /
|
|
3
|
+
description: Two-way synchronization between SpecWeave specs and GitHub Projects (push & pull by default). Activates ONLY when user asks questions about GitHub integration or needs help configuring GitHub sync. Does NOT activate for slash commands. For syncing, use /sw-github:sync-spec command instead.
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# GitHub Sync - Two-way Spec ↔ Project Synchronization
|
|
@@ -9,7 +9,7 @@ description: Two-way synchronization between SpecWeave specs and GitHub Projects
|
|
|
9
9
|
|
|
10
10
|
**Default Behavior**: **Two-way sync** (push & pull) - Changes in either system are automatically synchronized
|
|
11
11
|
|
|
12
|
-
**⚠️ IMPORTANT**: This skill provides HELP and GUIDANCE about GitHub sync. For actual syncing, users should use the `/
|
|
12
|
+
**⚠️ IMPORTANT**: This skill provides HELP and GUIDANCE about GitHub sync. For actual syncing, users should use the `/sw-github:sync-spec` command directly. This skill should NOT auto-activate when the command is being invoked.
|
|
13
13
|
|
|
14
14
|
## When to Activate
|
|
15
15
|
|
|
@@ -20,11 +20,11 @@ description: Two-way synchronization between SpecWeave specs and GitHub Projects
|
|
|
20
20
|
- User needs help configuring GitHub integration
|
|
21
21
|
|
|
22
22
|
❌ **Do NOT activate when**:
|
|
23
|
-
- User invokes `/
|
|
23
|
+
- User invokes `/sw-github:sync-spec` command (command handles it)
|
|
24
24
|
- Command is already running (avoid duplicate invocation)
|
|
25
25
|
- Task completion hook is syncing (automatic process)
|
|
26
26
|
|
|
27
|
-
**Integration**: Works with `/
|
|
27
|
+
**Integration**: Works with `/sw-github:sync-spec` command
|
|
28
28
|
|
|
29
29
|
---
|
|
30
30
|
|
|
@@ -176,7 +176,7 @@ As a developer, I want to install SpecWeave via NPM so that I can use it in my p
|
|
|
176
176
|
|
|
177
177
|
**Use Case**: Import existing GitHub Projects as SpecWeave specs
|
|
178
178
|
|
|
179
|
-
**Command**: `/
|
|
179
|
+
**Command**: `/sw-github:import-project <project-number>`
|
|
180
180
|
|
|
181
181
|
**Actions**:
|
|
182
182
|
1. Fetch project via GitHub GraphQL API
|
|
@@ -238,7 +238,7 @@ gh auth status
|
|
|
238
238
|
### Sync Spec to GitHub
|
|
239
239
|
|
|
240
240
|
```bash
|
|
241
|
-
/
|
|
241
|
+
/sw-github:sync-spec spec-001
|
|
242
242
|
```
|
|
243
243
|
|
|
244
244
|
Creates or updates GitHub Project for spec-001.
|
|
@@ -246,7 +246,7 @@ Creates or updates GitHub Project for spec-001.
|
|
|
246
246
|
### Sync All Specs
|
|
247
247
|
|
|
248
248
|
```bash
|
|
249
|
-
/
|
|
249
|
+
/sw-github:sync-spec --all
|
|
250
250
|
```
|
|
251
251
|
|
|
252
252
|
Syncs all specs to GitHub Projects.
|
|
@@ -254,7 +254,7 @@ Syncs all specs to GitHub Projects.
|
|
|
254
254
|
### Import Project
|
|
255
255
|
|
|
256
256
|
```bash
|
|
257
|
-
/
|
|
257
|
+
/sw-github:import-project 123
|
|
258
258
|
```
|
|
259
259
|
|
|
260
260
|
Imports GitHub Project #123 as a SpecWeave spec.
|
|
@@ -262,7 +262,7 @@ Imports GitHub Project #123 as a SpecWeave spec.
|
|
|
262
262
|
### Check Status
|
|
263
263
|
|
|
264
264
|
```bash
|
|
265
|
-
/
|
|
265
|
+
/sw-github:status spec-001
|
|
266
266
|
```
|
|
267
267
|
|
|
268
268
|
Shows sync status (project ID, last sync time, progress %).
|
|
@@ -283,11 +283,11 @@ PM: Creates .specweave/docs/internal/specs/spec-005-user-auth.md
|
|
|
283
283
|
→ Issues created for each user story
|
|
284
284
|
|
|
285
285
|
# 3. Implement increments
|
|
286
|
-
/
|
|
286
|
+
/sw:increment "Add login flow"
|
|
287
287
|
→ Increment 0010 created (implements US-001, US-002)
|
|
288
288
|
|
|
289
289
|
# 4. Work on tasks
|
|
290
|
-
/
|
|
290
|
+
/sw:do
|
|
291
291
|
→ Task completed
|
|
292
292
|
→ Hook fires
|
|
293
293
|
→ Spec updated (AC marked complete)
|
|
@@ -328,7 +328,7 @@ The spec is always the source of truth. GitHub Projects are a mirror for visibil
|
|
|
328
328
|
2. Manual edits to project/issue body/title
|
|
329
329
|
|
|
330
330
|
**Resolution**:
|
|
331
|
-
- Run `/
|
|
331
|
+
- Run `/sw-github:sync-spec spec-001 --force` to overwrite project from spec
|
|
332
332
|
- Or manually update spec metadata to match project
|
|
333
333
|
|
|
334
334
|
---
|
|
@@ -386,7 +386,7 @@ The spec is always the source of truth. GitHub Projects are a mirror for visibil
|
|
|
386
386
|
**Progress not updating?**
|
|
387
387
|
- Check `autoSyncSpecs: true` in config
|
|
388
388
|
- Verify hook execution: `.specweave/logs/hooks-debug.log`
|
|
389
|
-
- Manually sync: `/
|
|
389
|
+
- Manually sync: `/sw-github:sync-spec spec-001`
|
|
390
390
|
|
|
391
391
|
---
|
|
392
392
|
|
|
@@ -462,7 +462,7 @@ For monorepos with multiple GitHub repositories:
|
|
|
462
462
|
|
|
463
463
|
- **github-issue-tracker**: Track individual tasks as issue comments (DEPRECATED - use spec sync instead)
|
|
464
464
|
- **github-manager agent**: AI agent for GitHub operations
|
|
465
|
-
- **Commands**: `/
|
|
465
|
+
- **Commands**: `/sw-github:sync-spec`, `/sw-github:import-project`, `/sw-github:status`
|
|
466
466
|
|
|
467
467
|
---
|
|
468
468
|
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
{
|
|
2
|
-
"name": "
|
|
2
|
+
"name": "sw-infra",
|
|
3
3
|
"description": "Cloud infrastructure provisioning and monitoring. Includes Hetzner Cloud provisioning, Prometheus/Grafana setup, distributed tracing (Jaeger/Tempo), and SLO implementation. Focus on cost-effective, production-ready infrastructure.",
|
|
4
4
|
"version": "0.24.0",
|
|
5
5
|
"author": {
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
{
|
|
2
|
-
"name": "
|
|
2
|
+
"name": "sw-jira",
|
|
3
3
|
"description": "JIRA integration for SpecWeave increments. Bidirectional sync between SpecWeave increments and JIRA epics/stories. Automatically creates JIRA issues from increments, tracks progress, and updates status.",
|
|
4
4
|
"version": "0.24.0",
|
|
5
5
|
"author": {
|
|
@@ -58,7 +58,7 @@ if (localStatus !== externalStatus) {
|
|
|
58
58
|
- MUST be 100% complete to close
|
|
59
59
|
- All tasks completed
|
|
60
60
|
- All tests passing
|
|
61
|
-
- `/
|
|
61
|
+
- `/sw:done` validates strictly
|
|
62
62
|
- Can be deleted after completion
|
|
63
63
|
|
|
64
64
|
2. **Spec Lifecycle** (Flexible):
|
|
@@ -85,7 +85,7 @@ Verify hooks fire correctly:
|
|
|
85
85
|
|
|
86
86
|
```bash
|
|
87
87
|
# Check 1: Post-increment completion
|
|
88
|
-
Event: /
|
|
88
|
+
Event: /sw:done completes
|
|
89
89
|
Expected: Living docs updated → Sync triggered
|
|
90
90
|
Validate:
|
|
91
91
|
- Hook fires within 5 seconds
|
|
@@ -294,7 +294,7 @@ Timeline:
|
|
|
294
294
|
Day 3:
|
|
295
295
|
- All tasks complete
|
|
296
296
|
- Tests passing
|
|
297
|
-
- /
|
|
297
|
+
- /sw:done executed
|
|
298
298
|
- Increment: closed
|
|
299
299
|
- JIRA status: In Progress (from JIRA)
|
|
300
300
|
- Spec status: in_progress (from JIRA)
|