specweave 0.33.4 → 0.33.6
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 +445 -80
- 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/jobs.js +19 -2
- package/dist/src/cli/commands/jobs.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 +19 -3
- 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-grouping.d.ts.map +1 -1
- package/dist/src/cli/helpers/init/external-import-grouping.js +11 -7
- package/dist/src/cli/helpers/init/external-import-grouping.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/clone-worker.js +22 -5
- package/dist/src/cli/workers/clone-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-dependency.d.ts.map +1 -1
- package/dist/src/core/background/job-dependency.js +1 -0
- package/dist/src/core/background/job-dependency.js.map +1 -1
- package/dist/src/core/background/job-launcher.d.ts +1 -1
- package/dist/src/core/background/job-launcher.js +5 -5
- package/dist/src/core/background/job-launcher.js.map +1 -1
- package/dist/src/core/background/job-manager.d.ts +8 -0
- package/dist/src/core/background/job-manager.d.ts.map +1 -1
- package/dist/src/core/background/job-manager.js +19 -1
- package/dist/src/core/background/job-manager.js.map +1 -1
- package/dist/src/core/background/types.d.ts +9 -1
- package/dist/src/core/background/types.d.ts.map +1 -1
- package/dist/src/core/background/types.js +8 -1
- package/dist/src/core/background/types.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/external-importer.d.ts +26 -5
- package/dist/src/importers/external-importer.d.ts.map +1 -1
- package/dist/src/importers/item-converter.d.ts.map +1 -1
- package/dist/src/importers/item-converter.js +19 -2
- package/dist/src/importers/item-converter.js.map +1 -1
- package/dist/src/importers/jira-importer.d.ts.map +1 -1
- package/dist/src/importers/jira-importer.js +15 -1
- package/dist/src/importers/jira-importer.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/living-docs/smart-doc-organizer.js +1 -1
- package/dist/src/living-docs/smart-doc-organizer.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/config-generator.d.ts.map +1 -1
- package/dist/src/utils/docs-preview/config-generator.js +4 -0
- package/dist/src/utils/docs-preview/config-generator.js.map +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.d.ts +8 -6
- package/dist/src/utils/notification-constants.d.ts.map +1 -1
- package/dist/src/utils/notification-constants.js +10 -8
- package/dist/src/utils/notification-constants.js.map +1 -1
- package/dist/src/utils/notification-manager.d.ts +36 -3
- package/dist/src/utils/notification-manager.d.ts.map +1 -1
- package/dist/src/utils/notification-manager.js +80 -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/judge-llm.md +296 -0
- 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 +41 -1
- 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 +87 -0
- package/plugins/specweave/hooks/v2/guards/metadata-json-guard.test.sh +302 -0
- package/plugins/specweave/hooks/v2/guards/per-us-project-validator.sh +72 -18
- package/plugins/specweave/hooks/v2/guards/per-us-project-validator.test.sh +406 -0
- 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 +14 -8
- 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 +9 -9
- 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 +391 -0
- package/plugins/specweave-docs/skills/preview/SKILL.md +60 -21
- 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 +73 -77
- package/src/templates/CLAUDE.md.template +23 -19
- 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/commands/specweave-judge.md +0 -276
- 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-docs/commands/preview.md +0 -274
- /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
|
@@ -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 ""
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
#!/usr/bin/env bash
|
|
2
|
-
# read-progress.sh - Pure bash reader for /
|
|
2
|
+
# read-progress.sh - Pure bash reader for /sw:progress
|
|
3
3
|
#
|
|
4
4
|
# Reads from pre-computed dashboard cache for <10ms response time.
|
|
5
5
|
# Falls back to Node.js script if jq is not available.
|
|
@@ -73,7 +73,7 @@ progress_bar() {
|
|
|
73
73
|
format_status() {
|
|
74
74
|
case "$1" in
|
|
75
75
|
active) echo "🔄 active" ;;
|
|
76
|
-
planning) echo "📝 planning" ;;
|
|
76
|
+
planning|planned) echo "📝 planning" ;;
|
|
77
77
|
paused) echo "⏸️ paused" ;;
|
|
78
78
|
completed) echo "✅ completed" ;;
|
|
79
79
|
abandoned) echo "❌ abandoned" ;;
|
|
@@ -147,22 +147,23 @@ if [[ -n "$READY_FOR_REVIEW" ]]; then
|
|
|
147
147
|
bar=$(progress_bar "$pct" 15)
|
|
148
148
|
echo " $id"
|
|
149
149
|
echo " $bar $completed/$total ($pct%)"
|
|
150
|
-
echo " → /
|
|
150
|
+
echo " → /sw:done $id"
|
|
151
151
|
done <<< "$READY_FOR_REVIEW"
|
|
152
152
|
echo ""
|
|
153
153
|
fi
|
|
154
154
|
|
|
155
155
|
# Get active increments (excluding ready_for_review)
|
|
156
|
+
# Note: "planned" is a legacy typo for "planning" - support both for backwards compatibility
|
|
156
157
|
ACTIVE=$(jq -r '
|
|
157
158
|
.increments | to_entries[] |
|
|
158
|
-
select(.value.status == "active" or .value.status == "planning" or .value.status == "backlog") |
|
|
159
|
-
"\(.key)|\(.value.tasks.completed)|\(.value.tasks.total)"
|
|
159
|
+
select(.value.status == "active" or .value.status == "planning" or .value.status == "planned" or .value.status == "backlog") |
|
|
160
|
+
"\(.key)|\(.value.tasks.completed)|\(.value.tasks.total)|\(.value.status)"
|
|
160
161
|
' "$CACHE_FILE" 2>/dev/null)
|
|
161
162
|
|
|
162
163
|
ACTIVE_COUNT=0
|
|
163
164
|
if [[ -n "$ACTIVE" ]]; then
|
|
164
165
|
echo "🔄 Active:"
|
|
165
|
-
while IFS='|' read -r id completed total; do
|
|
166
|
+
while IFS='|' read -r id completed total inc_status; do
|
|
166
167
|
[[ -z "$id" ]] && continue
|
|
167
168
|
ACTIVE_COUNT=$((ACTIVE_COUNT + 1))
|
|
168
169
|
if [[ "$total" -gt 0 ]]; then
|
|
@@ -171,7 +172,13 @@ if [[ -n "$ACTIVE" ]]; then
|
|
|
171
172
|
pct=0
|
|
172
173
|
fi
|
|
173
174
|
bar=$(progress_bar "$pct" 15)
|
|
174
|
-
|
|
175
|
+
# Show status indicator if not "active"
|
|
176
|
+
status_indicator=""
|
|
177
|
+
case "$inc_status" in
|
|
178
|
+
planning|planned) status_indicator=" (📝 planning)" ;;
|
|
179
|
+
backlog) status_indicator=" (📋 backlog)" ;;
|
|
180
|
+
esac
|
|
181
|
+
echo " $id$status_indicator"
|
|
175
182
|
echo " $bar $completed/$total ($pct%)"
|
|
176
183
|
done <<< "$ACTIVE"
|
|
177
184
|
echo ""
|
|
@@ -222,9 +229,9 @@ fi
|
|
|
222
229
|
|
|
223
230
|
echo ""
|
|
224
231
|
if [[ "$REVIEW_COUNT" -gt 0 ]]; then
|
|
225
|
-
echo "💡 Run /
|
|
232
|
+
echo "💡 Run /sw:done <id> to close reviewed increments"
|
|
226
233
|
elif [[ "$ACTIVE_COUNT" -eq 0 ]]; then
|
|
227
|
-
echo "💡 Run /
|
|
234
|
+
echo "💡 Run /sw:increment to start new work"
|
|
228
235
|
else
|
|
229
|
-
echo "💡 For details: /
|
|
236
|
+
echo "💡 For details: /sw:progress <incrementId>"
|
|
230
237
|
fi
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
#!/usr/bin/env bash
|
|
2
|
-
# read-status.sh - Pure bash reader for /
|
|
2
|
+
# read-status.sh - Pure bash reader for /sw:status
|
|
3
3
|
#
|
|
4
4
|
# Reads from pre-computed dashboard cache for <10ms response time.
|
|
5
5
|
# Falls back to Node.js script if jq is not available.
|
|
@@ -58,14 +58,14 @@ echo "📋 SpecWeave Status Overview"
|
|
|
58
58
|
echo ""
|
|
59
59
|
|
|
60
60
|
# Status display order and icons
|
|
61
|
+
# Note: "planned" is a legacy typo for "planning" - both are handled
|
|
61
62
|
declare -a STATUS_ORDER
|
|
62
|
-
STATUS_ORDER=("active" "planning" "
|
|
63
|
+
STATUS_ORDER=("active" "planning" "planned" "ready_for_review" "paused" "backlog" "completed" "abandoned")
|
|
63
64
|
|
|
64
65
|
status_icon() {
|
|
65
66
|
case "$1" in
|
|
66
67
|
active) echo "🔄" ;;
|
|
67
|
-
planning) echo "📝" ;;
|
|
68
|
-
in-progress) echo "⚙️" ;;
|
|
68
|
+
planning|planned) echo "📝" ;;
|
|
69
69
|
ready_for_review) echo "👀" ;;
|
|
70
70
|
paused) echo "⏸️" ;;
|
|
71
71
|
backlog) echo "📋" ;;
|
|
@@ -141,6 +141,6 @@ fi
|
|
|
141
141
|
|
|
142
142
|
echo ""
|
|
143
143
|
echo "💡 Commands:"
|
|
144
|
-
echo " /
|
|
145
|
-
echo " /
|
|
146
|
-
echo " /
|
|
144
|
+
echo " /sw:progress Show task progress"
|
|
145
|
+
echo " /sw:do Execute current tasks"
|
|
146
|
+
echo " /sw:done <id> Close increment"
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
#!/usr/bin/env bash
|
|
2
|
-
# read-workflow.sh - Pure bash reader for /
|
|
2
|
+
# read-workflow.sh - Pure bash reader for /sw:workflow
|
|
3
3
|
#
|
|
4
4
|
# Shows current phase, suggests next actions based on increment state.
|
|
5
5
|
# Reads from pre-computed dashboard cache for <10ms response time.
|
|
@@ -79,13 +79,13 @@ if [[ -z "$ACTIVE_ID" ]]; then
|
|
|
79
79
|
BACKLOG_COUNT=$(jq '.summary.backlog // 0' "$CACHE_FILE")
|
|
80
80
|
if [[ "$BACKLOG_COUNT" -gt 0 ]]; then
|
|
81
81
|
echo "📋 Backlog: $BACKLOG_COUNT item(s) waiting"
|
|
82
|
-
echo " Resume with: /
|
|
82
|
+
echo " Resume with: /sw:resume <id>"
|
|
83
83
|
echo ""
|
|
84
84
|
fi
|
|
85
85
|
|
|
86
86
|
echo "💡 Suggestions:"
|
|
87
|
-
echo " • /
|
|
88
|
-
echo " • /
|
|
87
|
+
echo " • /sw:increment \"feature name\" - Plan new work"
|
|
88
|
+
echo " • /sw:status - View all increments"
|
|
89
89
|
exit 0
|
|
90
90
|
fi
|
|
91
91
|
|
|
@@ -117,37 +117,37 @@ SUGGESTIONS=""
|
|
|
117
117
|
|
|
118
118
|
if [[ "$STATUS" == "backlog" ]] || [[ "$STATUS" == "planned" ]]; then
|
|
119
119
|
PHASE="📝 Planning"
|
|
120
|
-
SUGGESTIONS="• /
|
|
121
|
-
• /
|
|
120
|
+
SUGGESTIONS="• /sw:do - Start implementation
|
|
121
|
+
• /sw:plan - Generate plan.md and tasks.md"
|
|
122
122
|
|
|
123
123
|
elif [[ "$TASKS_COMPLETED" -eq 0 ]]; then
|
|
124
124
|
PHASE="🚀 Starting"
|
|
125
|
-
SUGGESTIONS="• /
|
|
126
|
-
• /
|
|
125
|
+
SUGGESTIONS="• /sw:do - Execute first task
|
|
126
|
+
• /sw:pause - Pause if not ready"
|
|
127
127
|
|
|
128
128
|
elif [[ "$TASK_PCT" -lt 50 ]]; then
|
|
129
129
|
PHASE="🔨 In Progress (Early)"
|
|
130
|
-
SUGGESTIONS="• /
|
|
131
|
-
• /
|
|
130
|
+
SUGGESTIONS="• /sw:do - Continue implementation
|
|
131
|
+
• /sw:progress - Check task details"
|
|
132
132
|
|
|
133
133
|
elif [[ "$TASK_PCT" -lt 100 ]]; then
|
|
134
134
|
PHASE="⚙️ In Progress (Late)"
|
|
135
|
-
SUGGESTIONS="• /
|
|
136
|
-
• /
|
|
135
|
+
SUGGESTIONS="• /sw:do - Complete remaining tasks
|
|
136
|
+
• /sw:validate - Early quality check"
|
|
137
137
|
|
|
138
138
|
elif [[ "$STATUS" == "ready_for_review" ]]; then
|
|
139
139
|
PHASE="👀 Review"
|
|
140
|
-
SUGGESTIONS="• /
|
|
141
|
-
• /
|
|
140
|
+
SUGGESTIONS="• /sw:validate - Full validation
|
|
141
|
+
• /sw:done - Close increment (PM approval)"
|
|
142
142
|
|
|
143
143
|
elif [[ "$TASKS_COMPLETED" -eq "$TASKS_TOTAL" ]]; then
|
|
144
144
|
PHASE="✅ Tasks Complete"
|
|
145
|
-
SUGGESTIONS="• /
|
|
146
|
-
• /
|
|
145
|
+
SUGGESTIONS="• /sw:validate - Run quality checks
|
|
146
|
+
• /sw:done - Close increment"
|
|
147
147
|
|
|
148
148
|
else
|
|
149
149
|
PHASE="❓ Unknown"
|
|
150
|
-
SUGGESTIONS="• /
|
|
150
|
+
SUGGESTIONS="• /sw:status - Check status"
|
|
151
151
|
fi
|
|
152
152
|
|
|
153
153
|
# Display
|
|
@@ -168,6 +168,6 @@ echo ""
|
|
|
168
168
|
# Additional context
|
|
169
169
|
PAUSED_COUNT=$(jq '.summary.paused // 0' "$CACHE_FILE")
|
|
170
170
|
if [[ "$PAUSED_COUNT" -gt 0 ]]; then
|
|
171
|
-
echo "ℹ️ $PAUSED_COUNT paused increment(s) - /
|
|
171
|
+
echo "ℹ️ $PAUSED_COUNT paused increment(s) - /sw:resume to continue"
|
|
172
172
|
echo ""
|
|
173
173
|
fi
|
|
@@ -47,7 +47,7 @@ log "🔄 Rebuilding dashboard cache..."
|
|
|
47
47
|
|
|
48
48
|
# Initialize counters using simple variables (bash 3.x compatible)
|
|
49
49
|
status_backlog=0
|
|
50
|
-
|
|
50
|
+
status_planning=0
|
|
51
51
|
status_active=0
|
|
52
52
|
status_paused=0
|
|
53
53
|
status_ready_for_review=0
|
|
@@ -197,9 +197,10 @@ for increment_dir in "$INCREMENTS_DIR"/[0-9]*/; do
|
|
|
197
197
|
'.[$id] = { metadata: $meta, tasks: $tasks, spec: $spec }')
|
|
198
198
|
|
|
199
199
|
# Update status counters (bash 3.x compatible)
|
|
200
|
+
# Note: "planned" is a legacy typo for "planning" - both map to planning counter
|
|
200
201
|
case "$status" in
|
|
201
202
|
backlog) status_backlog=$((status_backlog + 1)) ;;
|
|
202
|
-
planned)
|
|
203
|
+
planning|planned) status_planning=$((status_planning + 1)) ;;
|
|
203
204
|
active) status_active=$((status_active + 1)) ;;
|
|
204
205
|
paused) status_paused=$((status_paused + 1)) ;;
|
|
205
206
|
ready_for_review) status_ready_for_review=$((status_ready_for_review + 1)) ;;
|
|
@@ -266,7 +267,7 @@ cache_json=$(jq -n \
|
|
|
266
267
|
--argjson active "$status_active" \
|
|
267
268
|
--argjson paused "$status_paused" \
|
|
268
269
|
--argjson backlog "$status_backlog" \
|
|
269
|
-
--argjson
|
|
270
|
+
--argjson planning "$status_planning" \
|
|
270
271
|
--argjson ready_for_review "$status_ready_for_review" \
|
|
271
272
|
--argjson completed "$status_completed" \
|
|
272
273
|
--argjson abandoned "$status_abandoned" \
|
|
@@ -293,7 +294,7 @@ cache_json=$(jq -n \
|
|
|
293
294
|
active: $active,
|
|
294
295
|
paused: $paused,
|
|
295
296
|
backlog: $backlog,
|
|
296
|
-
|
|
297
|
+
planning: $planning,
|
|
297
298
|
ready_for_review: $ready_for_review,
|
|
298
299
|
completed: $completed,
|
|
299
300
|
abandoned: $abandoned,
|
|
@@ -323,5 +324,5 @@ echo "$cache_json" > "$TEMP_FILE"
|
|
|
323
324
|
mv "$TEMP_FILE" "$CACHE_FILE"
|
|
324
325
|
|
|
325
326
|
log "✅ Dashboard cache rebuilt"
|
|
326
|
-
log " 📊 $total_count increments | $status_active active | $status_completed completed"
|
|
327
|
+
log " 📊 $total_count increments | $status_active active | $status_planning planning | $status_completed completed"
|
|
327
328
|
log " 📁 Cache: $CACHE_FILE"
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
# - ELIMINATED FALSE POSITIVES: No longer triggers on stale files alone
|
|
7
7
|
# - SMART DETECTION: Verifies actual stuck processes, not just file ages
|
|
8
8
|
# - SEVERITY LEVELS: Only CRITICAL issues trigger notifications
|
|
9
|
-
# - DIAGNOSTICS: Writes detailed logs for /
|
|
9
|
+
# - DIAGNOSTICS: Writes detailed logs for /sw:jobs to display
|
|
10
10
|
#
|
|
11
11
|
# Usage: bash session-watchdog.sh [--daemon] [--interval=60] [--threshold=300]
|
|
12
12
|
|
|
@@ -77,15 +77,21 @@ send_notification() {
|
|
|
77
77
|
return
|
|
78
78
|
fi
|
|
79
79
|
|
|
80
|
-
# macOS notification
|
|
80
|
+
# macOS notification - use "Submarine" for warnings (not alarming like "Basso")
|
|
81
|
+
# Per CLAUDE.md section 11: Basso = ONLY critical errors requiring IMMEDIATE action
|
|
82
|
+
# Zombie detection is recoverable - user can run cleanup script when convenient
|
|
81
83
|
if command -v osascript &> /dev/null; then
|
|
82
|
-
osascript -e "display notification \"$message\" with title \"$title\" sound name \"
|
|
84
|
+
osascript -e "display notification \"$message\" with title \"$title\" sound name \"Submarine\""
|
|
83
85
|
fi
|
|
84
86
|
|
|
85
|
-
# Linux notification (if available)
|
|
87
|
+
# Linux notification (if available) - use "normal" urgency (not "critical")
|
|
88
|
+
# Critical urgency can bypass Do Not Disturb, which is too aggressive
|
|
86
89
|
if command -v notify-send &> /dev/null; then
|
|
87
|
-
notify-send "$title" "$message" --urgency=
|
|
90
|
+
notify-send "$title" "$message" --urgency=normal
|
|
88
91
|
fi
|
|
92
|
+
|
|
93
|
+
# Windows: notifications sent via PowerShell toast don't have urgency levels
|
|
94
|
+
# They're always non-alarming by design
|
|
89
95
|
}
|
|
90
96
|
|
|
91
97
|
get_file_age_seconds() {
|
|
@@ -251,7 +257,7 @@ check_orphaned_jobs() {
|
|
|
251
257
|
fi
|
|
252
258
|
|
|
253
259
|
if [[ "$orphaned_count" -gt 0 ]]; then
|
|
254
|
-
result_message="$orphaned_count orphaned job(s) found (run /
|
|
260
|
+
result_message="$orphaned_count orphaned job(s) found (run /sw:jobs to see details)"
|
|
255
261
|
fi
|
|
256
262
|
|
|
257
263
|
echo "orphaned_jobs=$orphaned_count" >> "$DIAGNOSTICS_FILE.tmp"
|
|
@@ -260,7 +266,7 @@ check_orphaned_jobs() {
|
|
|
260
266
|
return $result_severity
|
|
261
267
|
}
|
|
262
268
|
|
|
263
|
-
# Write diagnostics file for /
|
|
269
|
+
# Write diagnostics file for /sw:jobs to read
|
|
264
270
|
write_diagnostics() {
|
|
265
271
|
local overall_severity="$1"
|
|
266
272
|
local overall_status="$2"
|
|
@@ -345,7 +351,7 @@ check_session_health() {
|
|
|
345
351
|
CONSECUTIVE_WARNINGS=0 # Reset on healthy check
|
|
346
352
|
fi
|
|
347
353
|
|
|
348
|
-
# Write diagnostics for /
|
|
354
|
+
# Write diagnostics for /sw:jobs
|
|
349
355
|
write_diagnostics "$max_severity" "$overall_status"
|
|
350
356
|
|
|
351
357
|
# Only alert if CRITICAL and seen multiple consecutive times
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
/**
|
|
3
3
|
* Instant Increment Status Overview
|
|
4
4
|
*
|
|
5
|
-
* Executed by UserPromptSubmit hook for /
|
|
5
|
+
* Executed by UserPromptSubmit hook for /sw:status
|
|
6
6
|
* Bypasses LLM entirely - output shown directly to user
|
|
7
7
|
*
|
|
8
8
|
* Usage: node status.js [--help]
|
|
@@ -28,7 +28,7 @@ DESCRIPTION
|
|
|
28
28
|
This script bypasses LLM processing for instant results (<100ms).
|
|
29
29
|
|
|
30
30
|
EXECUTION PATHS
|
|
31
|
-
1. Claude Code: /
|
|
31
|
+
1. Claude Code: /sw:status (hook intercepts, <100ms)
|
|
32
32
|
2. Any LLM: Skill instructs to run this script (~2s)
|
|
33
33
|
3. Terminal: specweave status (~500ms)
|
|
34
34
|
|
|
@@ -113,7 +113,7 @@ for (const status of statusOrder) {
|
|
|
113
113
|
console.log(` ${item}`);
|
|
114
114
|
// Add action hint for ready_for_review
|
|
115
115
|
if (status === 'ready_for_review') {
|
|
116
|
-
console.log(` → /
|
|
116
|
+
console.log(` → /sw:done ${item}`);
|
|
117
117
|
}
|
|
118
118
|
}
|
|
119
119
|
if (items.length > 5) {
|
|
@@ -161,11 +161,11 @@ console.log('');
|
|
|
161
161
|
|
|
162
162
|
// Context-aware command hints
|
|
163
163
|
if (reviewCount > 0) {
|
|
164
|
-
console.log('💡 Next step: /
|
|
164
|
+
console.log('💡 Next step: /sw:done <id> to close reviewed increment(s)');
|
|
165
165
|
} else if (activeCount > 0) {
|
|
166
166
|
console.log('💡 Commands:');
|
|
167
|
-
console.log(' /
|
|
168
|
-
console.log(' /
|
|
167
|
+
console.log(' /sw:progress Show task progress');
|
|
168
|
+
console.log(' /sw:do Execute current tasks');
|
|
169
169
|
} else {
|
|
170
|
-
console.log('💡 Run /
|
|
170
|
+
console.log('💡 Run /sw:increment to start new work');
|
|
171
171
|
}
|
|
@@ -83,6 +83,15 @@ for dir in "$INCREMENTS_DIR"/*"$INCREMENT_ID"*/; do
|
|
|
83
83
|
fi
|
|
84
84
|
done
|
|
85
85
|
|
|
86
|
+
# Helper to normalize status for counter keys (planned → planning)
|
|
87
|
+
# Defined early so it can be used in removal section
|
|
88
|
+
normalize_status_key() {
|
|
89
|
+
case "$1" in
|
|
90
|
+
planned) echo "planning" ;; # Legacy typo - map to planning counter
|
|
91
|
+
*) echo "$1" ;;
|
|
92
|
+
esac
|
|
93
|
+
}
|
|
94
|
+
|
|
86
95
|
if [[ -z "$INCREMENT_DIR" ]] || [[ ! -d "$INCREMENT_DIR" ]]; then
|
|
87
96
|
# Increment might have been archived or deleted
|
|
88
97
|
# Remove from cache if it exists
|
|
@@ -90,18 +99,19 @@ if [[ -z "$INCREMENT_DIR" ]] || [[ ! -d "$INCREMENT_DIR" ]]; then
|
|
|
90
99
|
if jq -e --arg id "$INCREMENT_ID" '.increments[$id]' "$CACHE_FILE" >/dev/null 2>&1; then
|
|
91
100
|
# Get old status for counter updates
|
|
92
101
|
old_status=$(jq -r --arg id "$INCREMENT_ID" '.increments[$id].status // "backlog"' "$CACHE_FILE")
|
|
102
|
+
old_status_key=$(normalize_status_key "$old_status")
|
|
93
103
|
old_type=$(jq -r --arg id "$INCREMENT_ID" '.increments[$id].type // "feature"' "$CACHE_FILE")
|
|
94
104
|
old_priority=$(jq -r --arg id "$INCREMENT_ID" '.increments[$id].priority // "P1"' "$CACHE_FILE")
|
|
95
105
|
|
|
96
|
-
# Remove increment and update counters
|
|
106
|
+
# Remove increment and update counters (use normalized status key)
|
|
97
107
|
jq --arg id "$INCREMENT_ID" \
|
|
98
|
-
--arg
|
|
108
|
+
--arg old_status_key "$old_status_key" \
|
|
99
109
|
--arg old_type "$old_type" \
|
|
100
110
|
--arg old_priority "$old_priority" '
|
|
101
111
|
del(.increments[$id]) |
|
|
102
112
|
del(.mtimes[$id]) |
|
|
103
113
|
.summary.total -= 1 |
|
|
104
|
-
.summary[$
|
|
114
|
+
.summary[$old_status_key] -= 1 |
|
|
105
115
|
.summary.byType[$old_type] -= 1 |
|
|
106
116
|
.summary.byPriority[$old_priority] -= 1 |
|
|
107
117
|
.updatedAt = (now | strftime("%Y-%m-%dT%H:%M:%SZ"))
|
|
@@ -122,6 +132,10 @@ fi
|
|
|
122
132
|
|
|
123
133
|
# Read current values
|
|
124
134
|
status=$(jq -r '.status // "backlog"' "$metadata_file" 2>/dev/null)
|
|
135
|
+
# Normalize status for counter keys (planned → planning for backwards compatibility)
|
|
136
|
+
# The raw status is preserved in increment data, but counters use normalized key
|
|
137
|
+
status_key=$(normalize_status_key "$status")
|
|
138
|
+
|
|
125
139
|
type=$(jq -r '.type // "feature"' "$metadata_file" 2>/dev/null)
|
|
126
140
|
priority=$(jq -r '.priority // "P1"' "$metadata_file" 2>/dev/null)
|
|
127
141
|
title=$(jq -r '.title // ""' "$metadata_file" 2>/dev/null)
|
|
@@ -232,36 +246,40 @@ mtime_json=$(jq -n \
|
|
|
232
246
|
# Apply incremental update
|
|
233
247
|
if [[ "$is_new" == "true" ]]; then
|
|
234
248
|
# New increment - add to cache and increment counters
|
|
249
|
+
# Note: Use status_key for counter updates (normalizes planned → planning)
|
|
235
250
|
jq --arg id "$INCREMENT_ID" \
|
|
236
251
|
--argjson inc "$increment_json" \
|
|
237
252
|
--argjson mtime "$mtime_json" \
|
|
238
|
-
--arg
|
|
253
|
+
--arg status_key "$status_key" \
|
|
239
254
|
--arg type "$type" \
|
|
240
255
|
--arg priority "$priority" '
|
|
241
256
|
.increments[$id] = $inc |
|
|
242
257
|
.mtimes[$id] = $mtime |
|
|
243
258
|
.summary.total += 1 |
|
|
244
|
-
.summary[$
|
|
259
|
+
.summary[$status_key] += 1 |
|
|
245
260
|
.summary.byType[$type] += 1 |
|
|
246
261
|
.summary.byPriority[$priority] += 1 |
|
|
247
262
|
.updatedAt = (now | strftime("%Y-%m-%dT%H:%M:%SZ"))
|
|
248
263
|
' "$CACHE_FILE" > "$TEMP_FILE"
|
|
249
264
|
else
|
|
250
265
|
# Existing increment - update and adjust counters if status/type/priority changed
|
|
266
|
+
# Normalize old_status for counter lookup (planned → planning)
|
|
267
|
+
old_status_key=$(normalize_status_key "$old_status")
|
|
268
|
+
|
|
251
269
|
jq --arg id "$INCREMENT_ID" \
|
|
252
270
|
--argjson inc "$increment_json" \
|
|
253
271
|
--argjson mtime "$mtime_json" \
|
|
254
|
-
--arg
|
|
255
|
-
--arg
|
|
272
|
+
--arg old_status_key "$old_status_key" \
|
|
273
|
+
--arg new_status_key "$status_key" \
|
|
256
274
|
--arg old_type "$old_type" \
|
|
257
275
|
--arg new_type "$type" \
|
|
258
276
|
--arg old_priority "$old_priority" \
|
|
259
277
|
--arg new_priority "$priority" '
|
|
260
278
|
.increments[$id] = $inc |
|
|
261
279
|
.mtimes[$id] = $mtime |
|
|
262
|
-
(if $
|
|
263
|
-
.summary[$
|
|
264
|
-
.summary[$
|
|
280
|
+
(if $old_status_key != $new_status_key then
|
|
281
|
+
.summary[$old_status_key] -= 1 |
|
|
282
|
+
.summary[$new_status_key] += 1
|
|
265
283
|
else . end) |
|
|
266
284
|
(if $old_type != $new_type then
|
|
267
285
|
.summary.byType[$old_type] -= 1 |
|