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
|
@@ -0,0 +1,318 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Status Auto-Transition Module
|
|
3
|
+
*
|
|
4
|
+
* Automatically transitions increment status based on file activity:
|
|
5
|
+
* - When spec.md created → status = PLANNING (if not already set)
|
|
6
|
+
* - When tasks.md created → status = ACTIVE (if currently PLANNING)
|
|
7
|
+
* - When first task marked in-progress → status = ACTIVE (if not already)
|
|
8
|
+
* - When ALL tasks completed → status = READY_FOR_REVIEW (v0.35.0+)
|
|
9
|
+
*
|
|
10
|
+
* CRITICAL (v0.35.0+): ACTIVE → READY_FOR_REVIEW auto-transition prevents
|
|
11
|
+
* the auto-completion bug where increments get marked "completed" without
|
|
12
|
+
* user approval. Only /sw:done can transition READY_FOR_REVIEW → COMPLETED.
|
|
13
|
+
*
|
|
14
|
+
* Part of increment 0039: Ultra-Smart Next Command
|
|
15
|
+
*/
|
|
16
|
+
import * as fs from '../../utils/fs-native.js';
|
|
17
|
+
import * as path from 'path';
|
|
18
|
+
import { IncrementStatus } from '../types/increment-metadata.js';
|
|
19
|
+
import { MetadataManager } from './metadata-manager.js';
|
|
20
|
+
/**
|
|
21
|
+
* File paths that trigger status transitions
|
|
22
|
+
*/
|
|
23
|
+
const TRANSITION_TRIGGERS = {
|
|
24
|
+
/** spec.md existence indicates planning started */
|
|
25
|
+
SPEC_FILE: 'spec.md',
|
|
26
|
+
/** plan.md existence indicates detailed planning */
|
|
27
|
+
PLAN_FILE: 'plan.md',
|
|
28
|
+
/** tasks.md existence indicates ready for active work */
|
|
29
|
+
TASKS_FILE: 'tasks.md'
|
|
30
|
+
};
|
|
31
|
+
/**
|
|
32
|
+
* Check if increment folder has specific file
|
|
33
|
+
*/
|
|
34
|
+
function hasFile(incrementId, fileName) {
|
|
35
|
+
const incrementPath = path.join(process.cwd(), '.specweave', 'increments', incrementId);
|
|
36
|
+
const filePath = path.join(incrementPath, fileName);
|
|
37
|
+
return fs.existsSync(filePath);
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Check if tasks.md has any in-progress tasks
|
|
41
|
+
*/
|
|
42
|
+
function hasInProgressTasks(incrementId) {
|
|
43
|
+
const incrementPath = path.join(process.cwd(), '.specweave', 'increments', incrementId);
|
|
44
|
+
const tasksPath = path.join(incrementPath, TRANSITION_TRIGGERS.TASKS_FILE);
|
|
45
|
+
if (!fs.existsSync(tasksPath)) {
|
|
46
|
+
return false;
|
|
47
|
+
}
|
|
48
|
+
try {
|
|
49
|
+
const content = fs.readFileSync(tasksPath, 'utf-8');
|
|
50
|
+
// Match tasks with in-progress markers: [⏳], [🔄], or [ ] followed by **T-XXX**
|
|
51
|
+
const inProgressPattern = /^\s*-\s*\[(?:⏳|🔄|x)\]\s+\*\*T-\d+\*\*/m;
|
|
52
|
+
return inProgressPattern.test(content);
|
|
53
|
+
}
|
|
54
|
+
catch (error) {
|
|
55
|
+
return false;
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Check task completion status from tasks.md
|
|
60
|
+
*
|
|
61
|
+
* Parses tasks.md to count completed vs pending tasks.
|
|
62
|
+
* A task is considered completed if it has:
|
|
63
|
+
* - **Status**: [x] completed
|
|
64
|
+
* - Or checkbox [x] before task ID
|
|
65
|
+
*
|
|
66
|
+
* @param incrementId - Increment ID to check
|
|
67
|
+
* @returns Task completion status or null if tasks.md doesn't exist
|
|
68
|
+
*/
|
|
69
|
+
export function getTaskCompletionStatus(incrementId) {
|
|
70
|
+
const incrementPath = path.join(process.cwd(), '.specweave', 'increments', incrementId);
|
|
71
|
+
const tasksPath = path.join(incrementPath, TRANSITION_TRIGGERS.TASKS_FILE);
|
|
72
|
+
if (!fs.existsSync(tasksPath)) {
|
|
73
|
+
return null;
|
|
74
|
+
}
|
|
75
|
+
try {
|
|
76
|
+
const content = fs.readFileSync(tasksPath, 'utf-8');
|
|
77
|
+
// Count tasks by looking for ### T-XXX headers
|
|
78
|
+
const taskHeaders = content.match(/^###\s+T-\d+/gm) || [];
|
|
79
|
+
const totalTasks = taskHeaders.length;
|
|
80
|
+
if (totalTasks === 0) {
|
|
81
|
+
return {
|
|
82
|
+
totalTasks: 0,
|
|
83
|
+
completedTasks: 0,
|
|
84
|
+
pendingTasks: 0,
|
|
85
|
+
allCompleted: false,
|
|
86
|
+
percentage: 0
|
|
87
|
+
};
|
|
88
|
+
}
|
|
89
|
+
// Count completed tasks by looking for **Status**: [x] completed pattern
|
|
90
|
+
// This is the canonical way to mark tasks complete in SpecWeave
|
|
91
|
+
const completedPattern = /\*\*Status\*\*:\s*\[x\]\s*completed/gi;
|
|
92
|
+
const completedMatches = content.match(completedPattern) || [];
|
|
93
|
+
const completedTasks = completedMatches.length;
|
|
94
|
+
const pendingTasks = totalTasks - completedTasks;
|
|
95
|
+
const percentage = Math.round((completedTasks / totalTasks) * 100);
|
|
96
|
+
const allCompleted = completedTasks === totalTasks && totalTasks > 0;
|
|
97
|
+
return {
|
|
98
|
+
totalTasks,
|
|
99
|
+
completedTasks,
|
|
100
|
+
pendingTasks,
|
|
101
|
+
allCompleted,
|
|
102
|
+
percentage
|
|
103
|
+
};
|
|
104
|
+
}
|
|
105
|
+
catch (error) {
|
|
106
|
+
return null;
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
/**
|
|
110
|
+
* Check if ALL tasks in tasks.md are completed
|
|
111
|
+
*
|
|
112
|
+
* CRITICAL (v0.35.0+): This is used to auto-transition from ACTIVE → READY_FOR_REVIEW.
|
|
113
|
+
* This prevents the auto-completion bug where increments could be marked "completed"
|
|
114
|
+
* without going through the proper review gate.
|
|
115
|
+
*
|
|
116
|
+
* @param incrementId - Increment ID to check
|
|
117
|
+
* @returns true if all tasks are completed, false otherwise
|
|
118
|
+
*/
|
|
119
|
+
export function areAllTasksCompleted(incrementId) {
|
|
120
|
+
const status = getTaskCompletionStatus(incrementId);
|
|
121
|
+
return status !== null && status.allCompleted;
|
|
122
|
+
}
|
|
123
|
+
/**
|
|
124
|
+
* Auto-transition increment status based on file activity
|
|
125
|
+
*
|
|
126
|
+
* Transition Rules:
|
|
127
|
+
* 1. PLANNING → ACTIVE: When tasks.md created or first task in-progress
|
|
128
|
+
* 2. BACKLOG → PLANNING: When spec.md created (resume planning)
|
|
129
|
+
* 3. Any status → ACTIVE: When first task in-progress (override)
|
|
130
|
+
* 4. ACTIVE → READY_FOR_REVIEW: When ALL tasks completed (v0.35.0+ - CRITICAL!)
|
|
131
|
+
*
|
|
132
|
+
* CRITICAL (v0.35.0+): Rule 4 prevents the auto-completion bug.
|
|
133
|
+
* ACTIVE cannot transition directly to COMPLETED - it MUST go through READY_FOR_REVIEW.
|
|
134
|
+
* Only /sw:done can transition READY_FOR_REVIEW → COMPLETED with user approval.
|
|
135
|
+
*
|
|
136
|
+
* @param incrementId - Increment ID to check
|
|
137
|
+
* @param triggerFile - File that triggered the check (optional, for logging)
|
|
138
|
+
* @returns true if status was transitioned, false otherwise
|
|
139
|
+
*/
|
|
140
|
+
export function autoTransitionStatus(incrementId, triggerFile) {
|
|
141
|
+
try {
|
|
142
|
+
// Read current metadata
|
|
143
|
+
const metadata = MetadataManager.read(incrementId);
|
|
144
|
+
const currentStatus = metadata.status;
|
|
145
|
+
// Rule 4 (HIGHEST PRIORITY - v0.35.0+): ACTIVE → READY_FOR_REVIEW (when ALL tasks completed)
|
|
146
|
+
// CRITICAL: This prevents the auto-completion bug! Must be checked FIRST.
|
|
147
|
+
// When all tasks are done, increment goes to READY_FOR_REVIEW, NOT completed.
|
|
148
|
+
// Only /sw:done can then transition to COMPLETED with user approval.
|
|
149
|
+
if (currentStatus === IncrementStatus.ACTIVE && areAllTasksCompleted(incrementId)) {
|
|
150
|
+
MetadataManager.updateStatus(incrementId, IncrementStatus.READY_FOR_REVIEW);
|
|
151
|
+
console.log(`📋 Auto-transitioned ${incrementId}: ACTIVE → READY_FOR_REVIEW (all tasks completed)`);
|
|
152
|
+
console.log(` Run /sw:done ${incrementId} to close this increment with user approval.`);
|
|
153
|
+
return true;
|
|
154
|
+
}
|
|
155
|
+
// Rule 1: PLANNING → ACTIVE (when tasks.md created AND tasks in-progress)
|
|
156
|
+
if (currentStatus === IncrementStatus.PLANNING && hasFile(incrementId, TRANSITION_TRIGGERS.TASKS_FILE) && hasInProgressTasks(incrementId)) {
|
|
157
|
+
MetadataManager.updateStatus(incrementId, IncrementStatus.ACTIVE);
|
|
158
|
+
console.log(`✅ Auto-transitioned ${incrementId}: PLANNING → ACTIVE (tasks in-progress)`);
|
|
159
|
+
return true;
|
|
160
|
+
}
|
|
161
|
+
// Rule 2: BACKLOG → PLANNING (when spec.md created)
|
|
162
|
+
if (currentStatus === IncrementStatus.BACKLOG && hasFile(incrementId, TRANSITION_TRIGGERS.SPEC_FILE)) {
|
|
163
|
+
MetadataManager.updateStatus(incrementId, IncrementStatus.PLANNING);
|
|
164
|
+
console.log(`✅ Auto-transitioned ${incrementId}: BACKLOG → PLANNING (spec.md created)`);
|
|
165
|
+
return true;
|
|
166
|
+
}
|
|
167
|
+
// Rule 3: Any non-ACTIVE status → ACTIVE (when tasks in-progress)
|
|
168
|
+
if (currentStatus !== IncrementStatus.ACTIVE && hasInProgressTasks(incrementId)) {
|
|
169
|
+
MetadataManager.updateStatus(incrementId, IncrementStatus.ACTIVE);
|
|
170
|
+
console.log(`✅ Auto-transitioned ${incrementId}: ${currentStatus} → ACTIVE (tasks in-progress)`);
|
|
171
|
+
return true;
|
|
172
|
+
}
|
|
173
|
+
return false; // No transition needed
|
|
174
|
+
}
|
|
175
|
+
catch (error) {
|
|
176
|
+
console.warn(`⚠️ Auto-transition failed for ${incrementId}:`, error);
|
|
177
|
+
return false;
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
/**
|
|
181
|
+
* Check and auto-transition increment to READY_FOR_REVIEW if all tasks completed
|
|
182
|
+
*
|
|
183
|
+
* CRITICAL (v0.35.0+): This function should be called after every task completion
|
|
184
|
+
* to ensure increments transition to READY_FOR_REVIEW when all work is done.
|
|
185
|
+
*
|
|
186
|
+
* This is the ONLY path from ACTIVE to closure - prevents auto-completion bug.
|
|
187
|
+
*
|
|
188
|
+
* @param incrementId - Increment ID to check
|
|
189
|
+
* @returns Object with transition result
|
|
190
|
+
*/
|
|
191
|
+
export function checkAndTransitionToReadyForReview(incrementId) {
|
|
192
|
+
try {
|
|
193
|
+
const metadata = MetadataManager.read(incrementId);
|
|
194
|
+
const currentStatus = metadata.status;
|
|
195
|
+
const taskStatus = getTaskCompletionStatus(incrementId);
|
|
196
|
+
// Only transition from ACTIVE
|
|
197
|
+
if (currentStatus !== IncrementStatus.ACTIVE) {
|
|
198
|
+
return {
|
|
199
|
+
transitioned: false,
|
|
200
|
+
taskStatus: taskStatus || undefined,
|
|
201
|
+
message: `Increment is ${currentStatus}, not active - no transition needed`
|
|
202
|
+
};
|
|
203
|
+
}
|
|
204
|
+
// Check task completion
|
|
205
|
+
if (!taskStatus) {
|
|
206
|
+
return {
|
|
207
|
+
transitioned: false,
|
|
208
|
+
message: 'No tasks.md found - cannot determine completion status'
|
|
209
|
+
};
|
|
210
|
+
}
|
|
211
|
+
if (!taskStatus.allCompleted) {
|
|
212
|
+
return {
|
|
213
|
+
transitioned: false,
|
|
214
|
+
taskStatus,
|
|
215
|
+
message: `${taskStatus.completedTasks}/${taskStatus.totalTasks} tasks completed (${taskStatus.percentage}%) - not ready for review`
|
|
216
|
+
};
|
|
217
|
+
}
|
|
218
|
+
// All tasks completed! Transition to READY_FOR_REVIEW
|
|
219
|
+
MetadataManager.updateStatus(incrementId, IncrementStatus.READY_FOR_REVIEW);
|
|
220
|
+
return {
|
|
221
|
+
transitioned: true,
|
|
222
|
+
from: IncrementStatus.ACTIVE,
|
|
223
|
+
to: IncrementStatus.READY_FOR_REVIEW,
|
|
224
|
+
taskStatus,
|
|
225
|
+
message: `All ${taskStatus.totalTasks} tasks completed - transitioned to READY_FOR_REVIEW. Run /sw:done to close.`
|
|
226
|
+
};
|
|
227
|
+
}
|
|
228
|
+
catch (error) {
|
|
229
|
+
return {
|
|
230
|
+
transitioned: false,
|
|
231
|
+
message: `Error checking transition: ${error instanceof Error ? error.message : String(error)}`
|
|
232
|
+
};
|
|
233
|
+
}
|
|
234
|
+
}
|
|
235
|
+
/**
|
|
236
|
+
* Auto-transition based on specific file creation
|
|
237
|
+
*
|
|
238
|
+
* This is called by file watchers or post-write hooks
|
|
239
|
+
*
|
|
240
|
+
* @param incrementId - Increment ID
|
|
241
|
+
* @param createdFile - File that was just created
|
|
242
|
+
*/
|
|
243
|
+
export function onFileCreated(incrementId, createdFile) {
|
|
244
|
+
const fileName = path.basename(createdFile);
|
|
245
|
+
// Only trigger on known files
|
|
246
|
+
if (!Object.values(TRANSITION_TRIGGERS).includes(fileName)) {
|
|
247
|
+
return;
|
|
248
|
+
}
|
|
249
|
+
autoTransitionStatus(incrementId, fileName);
|
|
250
|
+
}
|
|
251
|
+
/**
|
|
252
|
+
* Check if increment should auto-transition to ACTIVE
|
|
253
|
+
*
|
|
254
|
+
* Used by /sw:do command before execution
|
|
255
|
+
*/
|
|
256
|
+
export function shouldTransitionToActive(incrementId) {
|
|
257
|
+
try {
|
|
258
|
+
const metadata = MetadataManager.read(incrementId);
|
|
259
|
+
// Already active, no transition needed
|
|
260
|
+
if (metadata.status === IncrementStatus.ACTIVE) {
|
|
261
|
+
return false;
|
|
262
|
+
}
|
|
263
|
+
// Planning with tasks.md → should transition
|
|
264
|
+
if (metadata.status === IncrementStatus.PLANNING && hasFile(incrementId, TRANSITION_TRIGGERS.TASKS_FILE)) {
|
|
265
|
+
return true;
|
|
266
|
+
}
|
|
267
|
+
// Any status with in-progress tasks → should transition
|
|
268
|
+
if (hasInProgressTasks(incrementId)) {
|
|
269
|
+
return true;
|
|
270
|
+
}
|
|
271
|
+
return false;
|
|
272
|
+
}
|
|
273
|
+
catch (error) {
|
|
274
|
+
return false;
|
|
275
|
+
}
|
|
276
|
+
}
|
|
277
|
+
/**
|
|
278
|
+
* Validate and fix "planned" vs "planning" inconsistency
|
|
279
|
+
*
|
|
280
|
+
* Legacy increments may have "planned" status (not in enum).
|
|
281
|
+
* This migrates them to "planning" (valid enum value).
|
|
282
|
+
*/
|
|
283
|
+
export function migrateLegacyStatuses() {
|
|
284
|
+
let migratedCount = 0;
|
|
285
|
+
try {
|
|
286
|
+
const incrementsPath = path.join(process.cwd(), '.specweave', 'increments');
|
|
287
|
+
if (!fs.existsSync(incrementsPath)) {
|
|
288
|
+
return 0;
|
|
289
|
+
}
|
|
290
|
+
const increments = fs.readdirSync(incrementsPath)
|
|
291
|
+
.filter(name => !name.startsWith('_')) // Skip _archive, _templates
|
|
292
|
+
.filter(name => fs.statSync(path.join(incrementsPath, name)).isDirectory());
|
|
293
|
+
for (const incrementId of increments) {
|
|
294
|
+
const metadataPath = path.join(incrementsPath, incrementId, 'metadata.json');
|
|
295
|
+
if (!fs.existsSync(metadataPath)) {
|
|
296
|
+
continue;
|
|
297
|
+
}
|
|
298
|
+
try {
|
|
299
|
+
const metadata = fs.readJsonSync(metadataPath);
|
|
300
|
+
// Migrate "planned" → "planning"
|
|
301
|
+
if (metadata.status === 'planned') {
|
|
302
|
+
metadata.status = IncrementStatus.PLANNING;
|
|
303
|
+
fs.writeJsonSync(metadataPath, metadata, { spaces: 2 });
|
|
304
|
+
console.log(`✅ Migrated ${incrementId}: "planned" → "planning"`);
|
|
305
|
+
migratedCount++;
|
|
306
|
+
}
|
|
307
|
+
}
|
|
308
|
+
catch (error) {
|
|
309
|
+
console.warn(`⚠️ Failed to migrate ${incrementId}:`, error);
|
|
310
|
+
}
|
|
311
|
+
}
|
|
312
|
+
}
|
|
313
|
+
catch (error) {
|
|
314
|
+
console.error('Migration error:', error);
|
|
315
|
+
}
|
|
316
|
+
return migratedCount;
|
|
317
|
+
}
|
|
318
|
+
//# sourceMappingURL=status-auto-transition.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"status-auto-transition.js","sourceRoot":"","sources":["../../../../src/core/increment/status-auto-transition.ts"],"names":[],"mappings":"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"}
|
|
@@ -22,8 +22,8 @@ export declare enum IncrementStatus {
|
|
|
22
22
|
*
|
|
23
23
|
* CRITICAL: This is a gating status that prevents auto-completion bugs.
|
|
24
24
|
* - Auto-transitions to READY_FOR_REVIEW when all tasks completed
|
|
25
|
-
* - User MUST explicitly run /
|
|
26
|
-
* - /
|
|
25
|
+
* - User MUST explicitly run /sw:done to move to COMPLETED
|
|
26
|
+
* - /sw:next will prompt for confirmation before closure
|
|
27
27
|
*
|
|
28
28
|
* Prevents the bug where status becomes "completed" without:
|
|
29
29
|
* 1. ACs being checked in spec.md
|
|
@@ -92,7 +92,7 @@ export interface IncrementMetadata {
|
|
|
92
92
|
readyForReviewAt?: string;
|
|
93
93
|
/**
|
|
94
94
|
* Timestamp when user approved completion (ISO 8601)
|
|
95
|
-
* Set only via explicit /
|
|
95
|
+
* Set only via explicit /sw:done command
|
|
96
96
|
* (v0.28.63+)
|
|
97
97
|
*/
|
|
98
98
|
approvedAt?: string;
|
|
@@ -23,8 +23,8 @@ export var IncrementStatus;
|
|
|
23
23
|
*
|
|
24
24
|
* CRITICAL: This is a gating status that prevents auto-completion bugs.
|
|
25
25
|
* - Auto-transitions to READY_FOR_REVIEW when all tasks completed
|
|
26
|
-
* - User MUST explicitly run /
|
|
27
|
-
* - /
|
|
26
|
+
* - User MUST explicitly run /sw:done to move to COMPLETED
|
|
27
|
+
* - /sw:next will prompt for confirmation before closure
|
|
28
28
|
*
|
|
29
29
|
* Prevents the bug where status becomes "completed" without:
|
|
30
30
|
* 1. ACs being checked in spec.md
|
|
@@ -88,7 +88,7 @@ export const VALID_TRANSITIONS = {
|
|
|
88
88
|
IncrementStatus.ABANDONED
|
|
89
89
|
],
|
|
90
90
|
[IncrementStatus.READY_FOR_REVIEW]: [
|
|
91
|
-
IncrementStatus.COMPLETED, // ONLY via explicit /
|
|
91
|
+
IncrementStatus.COMPLETED, // ONLY via explicit /sw:done with user approval
|
|
92
92
|
IncrementStatus.ACTIVE, // Reopen if more work needed
|
|
93
93
|
IncrementStatus.ABANDONED // Cancel if requirements changed
|
|
94
94
|
],
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"increment-metadata.js","sourceRoot":"","sources":["../../../../src/core/types/increment-metadata.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH;;;GAGG;AACH,MAAM,CAAN,IAAY,eAgCX;AAhCD,WAAY,eAAe;IACzB,yFAAyF;IACzF,wCAAqB,CAAA;IAErB,gCAAgC;IAChC,oCAAiB,CAAA;IAEjB,6EAA6E;IAC7E,sCAAmB,CAAA;IAEnB,0EAA0E;IAC1E,oCAAiB,CAAA;IAEjB;;;;;;;;;;;OAWG;IACH,wDAAqC,CAAA;IAErC,gEAAgE;IAChE,0CAAuB,CAAA;IAEvB,4DAA4D;IAC5D,0CAAuB,CAAA;AACzB,CAAC,EAhCW,eAAe,KAAf,eAAe,QAgC1B;AAED;;;GAGG;AACH,MAAM,CAAN,IAAY,aAkBX;AAlBD,WAAY,aAAa;IACvB,oDAAoD;IACpD,kCAAiB,CAAA;IAEjB,qDAAqD;IACrD,oCAAmB,CAAA;IAEnB,oEAAoE;IACpE,4BAAW,CAAA;IAEX,yDAAyD;IACzD,kDAAiC,CAAA;IAEjC,yCAAyC;IACzC,sCAAqB,CAAA;IAErB,6DAA6D;IAC7D,0CAAyB,CAAA;AAC3B,CAAC,EAlBW,aAAa,KAAb,aAAa,QAkBxB;AAkFD;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAA+C;IAC3E,CAAC,eAAe,CAAC,QAAQ,CAAC,EAAE;QAC1B,eAAe,CAAC,MAAM,EAAM,kCAAkC;QAC9D,eAAe,CAAC,OAAO,EAAK,mCAAmC;QAC/D,eAAe,CAAC,SAAS,CAAG,kBAAkB;KAC/C;IACD,CAAC,eAAe,CAAC,MAAM,CAAC,EAAE;QACxB,eAAe,CAAC,OAAO;QACvB,eAAe,CAAC,MAAM;QACtB,eAAe,CAAC,gBAAgB,EAAE,mCAAmC;QACrE,eAAe,CAAC,SAAS;QACzB,8EAA8E;KAC/E;IACD,CAAC,eAAe,CAAC,OAAO,CAAC,EAAE;QACzB,eAAe,CAAC,QAAQ,EAAI,kBAAkB;QAC9C,eAAe,CAAC,MAAM;QACtB,eAAe,CAAC,SAAS;KAC1B;IACD,CAAC,eAAe,CAAC,MAAM,CAAC,EAAE;QACxB,eAAe,CAAC,MAAM;QACtB,eAAe,CAAC,gBAAgB,EAAE,6BAA6B;QAC/D,eAAe,CAAC,SAAS;KAC1B;IACD,CAAC,eAAe,CAAC,gBAAgB,CAAC,EAAE;QAClC,eAAe,CAAC,SAAS,EAAG,
|
|
1
|
+
{"version":3,"file":"increment-metadata.js","sourceRoot":"","sources":["../../../../src/core/types/increment-metadata.ts"],"names":[],"mappings":"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"}
|
|
@@ -6,15 +6,15 @@ These scripts provide instant (<100ms) output for status queries that don't requ
|
|
|
6
6
|
|
|
7
7
|
## Why These Exist
|
|
8
8
|
|
|
9
|
-
Status commands (`/
|
|
9
|
+
Status commands (`/sw:status`, `/sw:progress`, `/sw:jobs`) were taking 3+ minutes because they expanded as prompts requiring LLM processing. These commands need NO reasoning - they just read JSON and format output.
|
|
10
10
|
|
|
11
11
|
**Performance comparison:**
|
|
12
12
|
|
|
13
13
|
| Command | Before | After |
|
|
14
14
|
|---------|--------|-------|
|
|
15
|
-
| `/
|
|
16
|
-
| `/
|
|
17
|
-
| `/
|
|
15
|
+
| `/sw:status` | 3+ min | <100ms |
|
|
16
|
+
| `/sw:progress` | 2+ min | <100ms |
|
|
17
|
+
| `/sw:jobs` | 3+ min | <100ms |
|
|
18
18
|
|
|
19
19
|
## Scripts
|
|
20
20
|
|
|
@@ -59,7 +59,7 @@ These scripts work across all contexts through a layered architecture:
|
|
|
59
59
|
|
|
60
60
|
| Layer | Context | Speed | How It Works |
|
|
61
61
|
|-------|---------|-------|--------------|
|
|
62
|
-
| **Hook** | Claude Code | <100ms | `UserPromptSubmit` intercepts `/
|
|
62
|
+
| **Hook** | Claude Code | <100ms | `UserPromptSubmit` intercepts `/sw:*`, runs script, blocks prompt |
|
|
63
63
|
| **Skill** | Any LLM | ~2s | Skill instructs LLM to run script via Bash |
|
|
64
64
|
| **CLI** | Terminal | ~500ms | `specweave status` / direct `node scripts/*.js` |
|
|
65
65
|
|
|
@@ -68,7 +68,7 @@ These scripts work across all contexts through a layered architecture:
|
|
|
68
68
|
In Claude Code, the `UserPromptSubmit` hook automatically intercepts status commands:
|
|
69
69
|
|
|
70
70
|
```
|
|
71
|
-
User types: /
|
|
71
|
+
User types: /sw:status
|
|
72
72
|
Hook runs: bash plugins/specweave/scripts/read-status.sh
|
|
73
73
|
Output appears instantly (<10ms)
|
|
74
74
|
LLM never processes the prompt
|
|
@@ -79,7 +79,7 @@ LLM never processes the prompt
|
|
|
79
79
|
In Cursor, Windsurf, Copilot, or API usage, the `instant-status` skill provides instructions:
|
|
80
80
|
|
|
81
81
|
```
|
|
82
|
-
User types: /
|
|
82
|
+
User types: /sw:status
|
|
83
83
|
Skill activates and instructs LLM to run the script
|
|
84
84
|
LLM executes: bash plugins/specweave/scripts/read-status.sh
|
|
85
85
|
Output appears (~2s)
|
|
@@ -103,7 +103,7 @@ bash plugins/specweave/scripts/read-progress.sh 0045
|
|
|
103
103
|
|
|
104
104
|
| Situation | Recommended Path |
|
|
105
105
|
|-----------|------------------|
|
|
106
|
-
| Quick status check in Claude Code | Just type `/
|
|
106
|
+
| Quick status check in Claude Code | Just type `/sw:status` |
|
|
107
107
|
| Using Cursor/Windsurf/Copilot | Let skill guide execution |
|
|
108
108
|
| Terminal/scripting | `specweave status` or `node scripts/*.js` |
|
|
109
109
|
| CI/CD pipelines | Direct `node scripts/*.js` |
|
|
@@ -145,7 +145,7 @@ DESCRIPTION
|
|
|
145
145
|
What this command does...
|
|
146
146
|
|
|
147
147
|
EXECUTION PATHS
|
|
148
|
-
1. Claude Code: /
|
|
148
|
+
1. Claude Code: /sw:newcmd (hook intercepts)
|
|
149
149
|
2. Any LLM: Skill instructs to run this script
|
|
150
150
|
3. Terminal: specweave newcmd
|
|
151
151
|
`);
|
|
@@ -134,7 +134,7 @@ echo "✅ Cleanup complete!"
|
|
|
134
134
|
echo ""
|
|
135
135
|
echo "Next steps:"
|
|
136
136
|
echo " 1. Restart Claude Code"
|
|
137
|
-
echo " 2. Run /
|
|
137
|
+
echo " 2. Run /sw:progress to check status"
|
|
138
138
|
echo ""
|
|
139
139
|
echo "If MCP issues persist:"
|
|
140
140
|
echo " • Update Claude Code VS Code extension"
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
/**
|
|
3
3
|
* Instant Background Jobs Status
|
|
4
4
|
*
|
|
5
|
-
* Executed by UserPromptSubmit hook for /
|
|
5
|
+
* Executed by UserPromptSubmit hook for /sw:jobs
|
|
6
6
|
* Bypasses LLM entirely - output shown directly to user
|
|
7
7
|
*
|
|
8
8
|
* Usage: node jobs.js [--all] [--id <jobId>] [--help]
|
|
@@ -30,7 +30,7 @@ DESCRIPTION
|
|
|
30
30
|
This script bypasses LLM processing for instant results (<100ms).
|
|
31
31
|
|
|
32
32
|
EXECUTION PATHS
|
|
33
|
-
1. Claude Code: /
|
|
33
|
+
1. Claude Code: /sw:jobs (hook intercepts, <100ms)
|
|
34
34
|
2. Any LLM: Skill instructs to run this script (~2s)
|
|
35
35
|
3. Terminal: specweave jobs (~500ms)
|
|
36
36
|
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
/**
|
|
3
3
|
* Instant Increment Progress
|
|
4
4
|
*
|
|
5
|
-
* Executed by UserPromptSubmit hook for /
|
|
5
|
+
* Executed by UserPromptSubmit hook for /sw:progress
|
|
6
6
|
* Bypasses LLM entirely - output shown directly to user
|
|
7
7
|
*
|
|
8
8
|
* Usage: node progress.js [incrementId] [--help]
|
|
@@ -29,7 +29,7 @@ DESCRIPTION
|
|
|
29
29
|
This script bypasses LLM processing for instant results (<100ms).
|
|
30
30
|
|
|
31
31
|
EXECUTION PATHS
|
|
32
|
-
1. Claude Code: /
|
|
32
|
+
1. Claude Code: /sw:progress (hook intercepts, <100ms)
|
|
33
33
|
2. Any LLM: Skill instructs to run this script (~2s)
|
|
34
34
|
3. Terminal: specweave status --verbose (~500ms)
|
|
35
35
|
|
|
@@ -131,7 +131,7 @@ if (readyForReview.length > 0) {
|
|
|
131
131
|
const bar = createProgressBar(inc.percentage, 15);
|
|
132
132
|
console.log(` ${inc.id}`);
|
|
133
133
|
console.log(` ${bar} ${inc.completedTasks}/${inc.totalTasks} (${inc.percentage}%)`);
|
|
134
|
-
console.log(` → /
|
|
134
|
+
console.log(` → /sw:done ${inc.id}`);
|
|
135
135
|
}
|
|
136
136
|
console.log('');
|
|
137
137
|
}
|
|
@@ -165,9 +165,9 @@ if (readyForReview.length > 0 || active.length > 0 || paused.length > 0) {
|
|
|
165
165
|
console.log('');
|
|
166
166
|
|
|
167
167
|
if (readyForReview.length > 0) {
|
|
168
|
-
console.log('💡 Run /
|
|
168
|
+
console.log('💡 Run /sw:done <id> to close reviewed increments');
|
|
169
169
|
} else {
|
|
170
|
-
console.log('💡 For details: /
|
|
170
|
+
console.log('💡 For details: /sw:progress <incrementId>');
|
|
171
171
|
}
|
|
172
172
|
} else {
|
|
173
173
|
console.log('No active increments.');
|
|
@@ -176,7 +176,7 @@ if (readyForReview.length > 0 || active.length > 0 || paused.length > 0) {
|
|
|
176
176
|
console.log(`${completed.length} completed increment(s).`);
|
|
177
177
|
}
|
|
178
178
|
console.log('');
|
|
179
|
-
console.log('💡 Run /
|
|
179
|
+
console.log('💡 Run /sw:increment to start new work');
|
|
180
180
|
}
|
|
181
181
|
|
|
182
182
|
// Helpers
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
#!/usr/bin/env bash
|
|
2
|
-
# read-costs.sh - Pure bash reader for /
|
|
2
|
+
# read-costs.sh - Pure bash reader for /sw:costs
|
|
3
3
|
#
|
|
4
4
|
# Shows cost/token tracking dashboard.
|
|
5
5
|
# Reads from pre-computed dashboard cache for <10ms response time.
|
|
@@ -128,5 +128,5 @@ jq -r '.costs.byIncrement | to_entries | sort_by(-.value.cost) | .[0:5][] |
|
|
|
128
128
|
echo ""
|
|
129
129
|
|
|
130
130
|
echo "💡 Commands:"
|
|
131
|
-
echo " /
|
|
132
|
-
echo " /
|
|
131
|
+
echo " /sw:costs <id> View increment costs"
|
|
132
|
+
echo " /sw:progress View task progress"
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
#!/usr/bin/env bash
|
|
2
|
-
# read-jobs.sh - Pure bash reader for /
|
|
2
|
+
# read-jobs.sh - Pure bash reader for /sw:jobs
|
|
3
3
|
#
|
|
4
4
|
# Shows current work status (increments) + background jobs + helpful context.
|
|
5
5
|
# Reads from pre-computed dashboard cache for <10ms response time.
|
|
@@ -185,7 +185,7 @@ if [[ -f "$CACHE_FILE" ]] && jq -e '.' "$CACHE_FILE" >/dev/null 2>&1; then
|
|
|
185
185
|
else
|
|
186
186
|
echo ""
|
|
187
187
|
echo " No increment data available (cache not found)."
|
|
188
|
-
echo " Run /
|
|
188
|
+
echo " Run /sw:status to rebuild cache."
|
|
189
189
|
fi
|
|
190
190
|
|
|
191
191
|
echo ""
|
|
@@ -215,7 +215,7 @@ if [[ "$HAS_JOBS" == "false" ]]; then
|
|
|
215
215
|
echo " • Brownfield analysis (documentation gap detection)"
|
|
216
216
|
echo ""
|
|
217
217
|
echo " Start jobs with:"
|
|
218
|
-
echo " • /
|
|
218
|
+
echo " • /sw:import-external - Import from external tools"
|
|
219
219
|
echo " • specweave init - May spawn background jobs"
|
|
220
220
|
else
|
|
221
221
|
echo ""
|
|
@@ -316,9 +316,9 @@ echo ""
|
|
|
316
316
|
echo "────────────────────────────────────────"
|
|
317
317
|
echo ""
|
|
318
318
|
echo "💡 Commands:"
|
|
319
|
-
echo " /
|
|
320
|
-
echo " /
|
|
321
|
-
echo " /
|
|
322
|
-
echo " /
|
|
323
|
-
echo " /
|
|
319
|
+
echo " /sw:do Execute current tasks"
|
|
320
|
+
echo " /sw:progress Show task progress details"
|
|
321
|
+
echo " /sw:done <id> Close increment"
|
|
322
|
+
echo " /sw:jobs --id <id> View background job details"
|
|
323
|
+
echo " /sw:jobs --all Show completed jobs"
|
|
324
324
|
echo ""
|