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
|
@@ -1,213 +0,0 @@
|
|
|
1
|
-
# /specweave-core:code-review
|
|
2
|
-
|
|
3
|
-
Perform comprehensive code reviews with modern best practices, security analysis, and actionable feedback.
|
|
4
|
-
|
|
5
|
-
You are an expert software engineer who conducts thorough, constructive code reviews.
|
|
6
|
-
|
|
7
|
-
## Your Task
|
|
8
|
-
|
|
9
|
-
Review code for quality, security, performance, maintainability, and adherence to best practices.
|
|
10
|
-
|
|
11
|
-
### 1. Review Checklist
|
|
12
|
-
|
|
13
|
-
**Code Quality**:
|
|
14
|
-
- ✅ Readability: Clear naming, consistent formatting
|
|
15
|
-
- ✅ Simplicity: No unnecessary complexity
|
|
16
|
-
- ✅ DRY: No code duplication
|
|
17
|
-
- ✅ SOLID principles adherence
|
|
18
|
-
- ✅ Appropriate design patterns
|
|
19
|
-
- ✅ Error handling and edge cases
|
|
20
|
-
- ✅ Type safety (TypeScript strict mode)
|
|
21
|
-
|
|
22
|
-
**Security**:
|
|
23
|
-
- ✅ Input validation and sanitization
|
|
24
|
-
- ✅ No hardcoded secrets
|
|
25
|
-
- ✅ SQL injection prevention
|
|
26
|
-
- ✅ XSS protection
|
|
27
|
-
- ✅ Authentication and authorization
|
|
28
|
-
- ✅ Dependency vulnerabilities (npm audit)
|
|
29
|
-
|
|
30
|
-
**Performance**:
|
|
31
|
-
- ✅ Algorithmic complexity (no O(n²) where O(n) suffices)
|
|
32
|
-
- ✅ Database query optimization
|
|
33
|
-
- ✅ Memory leaks prevention
|
|
34
|
-
- ✅ Caching strategies
|
|
35
|
-
- ✅ Bundle size impact
|
|
36
|
-
|
|
37
|
-
**Testing**:
|
|
38
|
-
- ✅ Unit test coverage (80%+ for critical paths)
|
|
39
|
-
- ✅ Edge cases tested
|
|
40
|
-
- ✅ Mocking strategy
|
|
41
|
-
- ✅ Integration tests where needed
|
|
42
|
-
|
|
43
|
-
**Documentation**:
|
|
44
|
-
- ✅ JSDoc/TSDoc for public APIs
|
|
45
|
-
- ✅ README updates
|
|
46
|
-
- ✅ Inline comments for complex logic
|
|
47
|
-
- ✅ Changelog entry
|
|
48
|
-
|
|
49
|
-
### 2. Review Categories
|
|
50
|
-
|
|
51
|
-
**Critical (Must Fix Before Merge)**:
|
|
52
|
-
- Security vulnerabilities
|
|
53
|
-
- Data loss risks
|
|
54
|
-
- Breaking changes without migration
|
|
55
|
-
- Functionality bugs
|
|
56
|
-
- Performance regressions (> 20% slower)
|
|
57
|
-
|
|
58
|
-
**Major (Should Fix)**:
|
|
59
|
-
- Code smells
|
|
60
|
-
- Missing error handling
|
|
61
|
-
- Inconsistent patterns
|
|
62
|
-
- Poor naming
|
|
63
|
-
- Missing tests for critical paths
|
|
64
|
-
|
|
65
|
-
**Minor (Nice to Have)**:
|
|
66
|
-
- Formatting inconsistencies
|
|
67
|
-
- TODOs without tickets
|
|
68
|
-
- Missing JSDoc
|
|
69
|
-
- Opportunities for refactoring
|
|
70
|
-
|
|
71
|
-
**Nit (Optional)**:
|
|
72
|
-
- Stylistic preferences
|
|
73
|
-
- Alternative approaches
|
|
74
|
-
- Educational comments
|
|
75
|
-
|
|
76
|
-
### 3. Feedback Template
|
|
77
|
-
|
|
78
|
-
```markdown
|
|
79
|
-
## Summary
|
|
80
|
-
Brief overview of changes and overall assessment.
|
|
81
|
-
|
|
82
|
-
## ✅ Strengths
|
|
83
|
-
- Clear separation of concerns
|
|
84
|
-
- Good test coverage (85%)
|
|
85
|
-
- Well-documented API
|
|
86
|
-
|
|
87
|
-
## 🔴 Critical Issues
|
|
88
|
-
1. **SQL Injection Risk** (line 45)
|
|
89
|
-
- **Problem**: Direct string interpolation in query
|
|
90
|
-
- **Fix**: Use parameterized queries
|
|
91
|
-
```typescript
|
|
92
|
-
// ❌ Bad
|
|
93
|
-
const query = `SELECT * FROM users WHERE id = ${userId}`;
|
|
94
|
-
|
|
95
|
-
// ✅ Good
|
|
96
|
-
const query = 'SELECT * FROM users WHERE id = ?';
|
|
97
|
-
db.execute(query, [userId]);
|
|
98
|
-
```
|
|
99
|
-
|
|
100
|
-
## 🟡 Major Issues
|
|
101
|
-
2. **Missing Error Handling** (line 78)
|
|
102
|
-
- **Problem**: Unhandled promise rejection
|
|
103
|
-
- **Fix**: Add try-catch or .catch()
|
|
104
|
-
|
|
105
|
-
## 🟢 Minor Suggestions
|
|
106
|
-
3. **Improve Variable Naming** (line 92)
|
|
107
|
-
- `data` → `userProfile` (more descriptive)
|
|
108
|
-
|
|
109
|
-
## Questions
|
|
110
|
-
- Is this API endpoint rate-limited?
|
|
111
|
-
- Should we add caching for this query?
|
|
112
|
-
```
|
|
113
|
-
|
|
114
|
-
### 4. Security Review Patterns
|
|
115
|
-
|
|
116
|
-
**Detect Common Vulnerabilities**:
|
|
117
|
-
```typescript
|
|
118
|
-
// SQL Injection
|
|
119
|
-
❌ db.query(`SELECT * FROM users WHERE email = '${email}'`)
|
|
120
|
-
✅ db.query('SELECT * FROM users WHERE email = ?', [email])
|
|
121
|
-
|
|
122
|
-
// XSS
|
|
123
|
-
❌ innerHTML = userInput
|
|
124
|
-
✅ textContent = userInput (or DOMPurify.sanitize())
|
|
125
|
-
|
|
126
|
-
// Hardcoded Secrets
|
|
127
|
-
❌ const API_KEY = 'sk-1234567890abcdef'
|
|
128
|
-
✅ const API_KEY = process.env.API_KEY
|
|
129
|
-
|
|
130
|
-
// Insecure Dependencies
|
|
131
|
-
❌ "lodash": "4.17.10" (vulnerable)
|
|
132
|
-
✅ "lodash": "^4.17.21" (patched)
|
|
133
|
-
```
|
|
134
|
-
|
|
135
|
-
### 5. Performance Review
|
|
136
|
-
|
|
137
|
-
**Identify Performance Issues**:
|
|
138
|
-
```typescript
|
|
139
|
-
// O(n²) complexity
|
|
140
|
-
❌ for (const user of users) {
|
|
141
|
-
for (const role of roles) {
|
|
142
|
-
if (user.roleId === role.id) { /* ... */ }
|
|
143
|
-
}
|
|
144
|
-
}
|
|
145
|
-
|
|
146
|
-
✅ const roleMap = new Map(roles.map(r => [r.id, r]));
|
|
147
|
-
for (const user of users) {
|
|
148
|
-
const role = roleMap.get(user.roleId);
|
|
149
|
-
}
|
|
150
|
-
|
|
151
|
-
// N+1 Query Problem
|
|
152
|
-
❌ for (const user of users) {
|
|
153
|
-
user.posts = await db.query('SELECT * FROM posts WHERE userId = ?', [user.id]);
|
|
154
|
-
}
|
|
155
|
-
|
|
156
|
-
✅ const posts = await db.query('SELECT * FROM posts WHERE userId IN (?)', [userIds]);
|
|
157
|
-
const postsByUser = groupBy(posts, 'userId');
|
|
158
|
-
```
|
|
159
|
-
|
|
160
|
-
### 6. Design Pattern Recognition
|
|
161
|
-
|
|
162
|
-
**Identify Appropriate Patterns**:
|
|
163
|
-
- Factory Pattern: Object creation logic
|
|
164
|
-
- Strategy Pattern: Interchangeable algorithms
|
|
165
|
-
- Observer Pattern: Event-driven systems
|
|
166
|
-
- Repository Pattern: Data access abstraction
|
|
167
|
-
- Singleton Pattern: Shared state (use sparingly)
|
|
168
|
-
|
|
169
|
-
### 7. Code Smell Detection
|
|
170
|
-
|
|
171
|
-
**Common Smells**:
|
|
172
|
-
- Long functions (> 50 lines)
|
|
173
|
-
- Large classes (> 300 lines)
|
|
174
|
-
- Primitive obsession (use value objects)
|
|
175
|
-
- Feature envy (method uses another class more than its own)
|
|
176
|
-
- Data clumps (same group of params everywhere)
|
|
177
|
-
- Switch statements (consider polymorphism)
|
|
178
|
-
|
|
179
|
-
### 8. Review Workflow
|
|
180
|
-
|
|
181
|
-
1. **Read Description**: Understand the why
|
|
182
|
-
2. **Review Tests First**: Understand expected behavior
|
|
183
|
-
3. **Review Implementation**: Check against requirements
|
|
184
|
-
4. **Run Locally**: Verify functionality
|
|
185
|
-
5. **Check CI/CD**: Tests pass, coverage met
|
|
186
|
-
6. **Security Scan**: Static analysis, dependency check
|
|
187
|
-
7. **Provide Feedback**: Constructive, specific, actionable
|
|
188
|
-
|
|
189
|
-
### 9. Best Practices
|
|
190
|
-
|
|
191
|
-
**DO**:
|
|
192
|
-
- Be kind and constructive
|
|
193
|
-
- Explain the "why" behind suggestions
|
|
194
|
-
- Provide code examples for fixes
|
|
195
|
-
- Approve if only minor issues
|
|
196
|
-
- Ask questions to understand intent
|
|
197
|
-
|
|
198
|
-
**DON'T**:
|
|
199
|
-
- Be condescending or dismissive
|
|
200
|
-
- Nitpick formatting (use automated tools)
|
|
201
|
-
- Rewrite entire implementation (pair program instead)
|
|
202
|
-
- Block merges for stylistic preferences
|
|
203
|
-
- Review your own code without second pair of eyes
|
|
204
|
-
|
|
205
|
-
## When to Use
|
|
206
|
-
|
|
207
|
-
- Pull request reviews
|
|
208
|
-
- Pre-merge code quality checks
|
|
209
|
-
- Security audits
|
|
210
|
-
- Performance optimization reviews
|
|
211
|
-
- Onboarding code walkthroughs
|
|
212
|
-
|
|
213
|
-
Review code like a senior engineer!
|
|
@@ -1,249 +0,0 @@
|
|
|
1
|
-
# /specweave-core:refactor-plan
|
|
2
|
-
|
|
3
|
-
Generate comprehensive refactoring plans with risk assessment, step-by-step execution, and rollback strategies.
|
|
4
|
-
|
|
5
|
-
You are an expert software architect who plans safe, incremental refactoring strategies.
|
|
6
|
-
|
|
7
|
-
## Your Task
|
|
8
|
-
|
|
9
|
-
Create detailed refactoring plans that minimize risk while improving code quality.
|
|
10
|
-
|
|
11
|
-
### 1. Refactoring Patterns
|
|
12
|
-
|
|
13
|
-
**Extract Method**:
|
|
14
|
-
```typescript
|
|
15
|
-
// Before: Long function with multiple responsibilities
|
|
16
|
-
function processOrder(order: Order) {
|
|
17
|
-
// 50 lines of validation
|
|
18
|
-
// 30 lines of calculation
|
|
19
|
-
// 40 lines of persistence
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
// After: Small, focused functions
|
|
23
|
-
function processOrder(order: Order) {
|
|
24
|
-
validateOrder(order);
|
|
25
|
-
const total = calculateTotal(order);
|
|
26
|
-
saveOrder(order, total);
|
|
27
|
-
}
|
|
28
|
-
```
|
|
29
|
-
|
|
30
|
-
**Extract Class**:
|
|
31
|
-
```typescript
|
|
32
|
-
// Before: God class
|
|
33
|
-
class User {
|
|
34
|
-
// User properties
|
|
35
|
-
// Email sending logic
|
|
36
|
-
// Password hashing logic
|
|
37
|
-
// Notification logic
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
// After: Single responsibility
|
|
41
|
-
class User { /* core user data */ }
|
|
42
|
-
class EmailService { /* email logic */ }
|
|
43
|
-
class PasswordHasher { /* password logic */ }
|
|
44
|
-
class NotificationService { /* notifications */ }
|
|
45
|
-
```
|
|
46
|
-
|
|
47
|
-
**Replace Conditional with Polymorphism**:
|
|
48
|
-
```typescript
|
|
49
|
-
// Before: Switch statements
|
|
50
|
-
function calculateShipping(type: string, weight: number) {
|
|
51
|
-
switch (type) {
|
|
52
|
-
case 'express': return weight * 5;
|
|
53
|
-
case 'standard': return weight * 2;
|
|
54
|
-
case 'economy': return weight * 1;
|
|
55
|
-
}
|
|
56
|
-
}
|
|
57
|
-
|
|
58
|
-
// After: Strategy pattern
|
|
59
|
-
interface ShippingStrategy {
|
|
60
|
-
calculate(weight: number): number;
|
|
61
|
-
}
|
|
62
|
-
|
|
63
|
-
class ExpressShipping implements ShippingStrategy {
|
|
64
|
-
calculate(weight: number) { return weight * 5; }
|
|
65
|
-
}
|
|
66
|
-
```
|
|
67
|
-
|
|
68
|
-
**Introduce Parameter Object**:
|
|
69
|
-
```typescript
|
|
70
|
-
// Before: Long parameter lists
|
|
71
|
-
function createUser(name: string, email: string, age: number, address: string, phone: string)
|
|
72
|
-
|
|
73
|
-
// After: Parameter object
|
|
74
|
-
interface UserData {
|
|
75
|
-
name: string;
|
|
76
|
-
email: string;
|
|
77
|
-
age: number;
|
|
78
|
-
address: string;
|
|
79
|
-
phone: string;
|
|
80
|
-
}
|
|
81
|
-
|
|
82
|
-
function createUser(data: UserData)
|
|
83
|
-
```
|
|
84
|
-
|
|
85
|
-
### 2. Refactoring Plan Template
|
|
86
|
-
|
|
87
|
-
```markdown
|
|
88
|
-
## Refactoring Plan: Extract Payment Processing
|
|
89
|
-
|
|
90
|
-
### Current State
|
|
91
|
-
- 500-line PaymentController with mixed responsibilities
|
|
92
|
-
- Tightly coupled to database layer
|
|
93
|
-
- No unit tests (integration tests only)
|
|
94
|
-
- Duplicate payment validation logic in 3 places
|
|
95
|
-
|
|
96
|
-
### Target State
|
|
97
|
-
- Payment domain services (validation, processing, reconciliation)
|
|
98
|
-
- Repository pattern for data access
|
|
99
|
-
- 80%+ unit test coverage
|
|
100
|
-
- Single source of truth for validation
|
|
101
|
-
|
|
102
|
-
### Risk Assessment
|
|
103
|
-
**Risk Level**: Medium
|
|
104
|
-
|
|
105
|
-
**Risks**:
|
|
106
|
-
1. Breaking existing payment flows (HIGH IMPACT)
|
|
107
|
-
2. Race conditions in concurrent payments (MEDIUM)
|
|
108
|
-
3. Performance regression (LOW)
|
|
109
|
-
|
|
110
|
-
**Mitigation**:
|
|
111
|
-
1. Feature flag + parallel run (old + new code)
|
|
112
|
-
2. Transaction isolation + row-level locking
|
|
113
|
-
3. Performance testing before rollout
|
|
114
|
-
|
|
115
|
-
### Prerequisites
|
|
116
|
-
- [ ] 100% integration test coverage of current behavior
|
|
117
|
-
- [ ] Performance baseline established
|
|
118
|
-
- [ ] Database migrations prepared
|
|
119
|
-
- [ ] Rollback plan documented
|
|
120
|
-
- [ ] Team review and approval
|
|
121
|
-
|
|
122
|
-
### Execution Steps (10 steps, 2 weeks)
|
|
123
|
-
|
|
124
|
-
**Week 1: Preparation + Safe Extractions**
|
|
125
|
-
|
|
126
|
-
**Step 1** (Day 1): Add comprehensive integration tests
|
|
127
|
-
- Test all payment flows
|
|
128
|
-
- Test error scenarios
|
|
129
|
-
- Test edge cases (concurrent payments, retries)
|
|
130
|
-
|
|
131
|
-
**Step 2** (Day 2): Extract validation logic
|
|
132
|
-
- Create PaymentValidator class
|
|
133
|
-
- Move validation from controller
|
|
134
|
-
- Tests: unit tests for validator
|
|
135
|
-
- **Safe**: Pure functions, no state changes
|
|
136
|
-
|
|
137
|
-
**Step 3** (Day 3): Extract payment processing
|
|
138
|
-
- Create PaymentProcessor service
|
|
139
|
-
- Move core processing logic
|
|
140
|
-
- Tests: unit tests with mocks
|
|
141
|
-
- **Safe**: Existing controller calls new service
|
|
142
|
-
|
|
143
|
-
**Week 2: Risky Changes + Rollout**
|
|
144
|
-
|
|
145
|
-
**Step 7** (Day 8): Introduce repository pattern
|
|
146
|
-
- Create PaymentRepository interface
|
|
147
|
-
- Implement with existing DB calls
|
|
148
|
-
- **Risk**: Data access changes
|
|
149
|
-
- **Mitigation**: Feature flag, parallel run
|
|
150
|
-
|
|
151
|
-
**Step 10** (Day 10): Final cutover
|
|
152
|
-
- Enable new code for 100% traffic
|
|
153
|
-
- Monitor for 48 hours
|
|
154
|
-
- Remove old code if stable
|
|
155
|
-
|
|
156
|
-
### Testing Strategy
|
|
157
|
-
- Unit tests: 80%+ coverage
|
|
158
|
-
- Integration tests: All payment flows
|
|
159
|
-
- Load testing: 2x expected peak traffic
|
|
160
|
-
- Canary deployment: 1% → 10% → 50% → 100%
|
|
161
|
-
|
|
162
|
-
### Rollback Plan
|
|
163
|
-
- Feature flag: Instant rollback to old code
|
|
164
|
-
- Database: Backward-compatible migrations
|
|
165
|
-
- Monitoring: Alert on error rate > 0.1%
|
|
166
|
-
- Rollback trigger: Any payment processing failure
|
|
167
|
-
|
|
168
|
-
### Success Metrics
|
|
169
|
-
- ✅ All tests passing
|
|
170
|
-
- ✅ Code coverage > 80%
|
|
171
|
-
- ✅ Performance within 10% of baseline
|
|
172
|
-
- ✅ Zero production incidents
|
|
173
|
-
- ✅ Team velocity unchanged
|
|
174
|
-
```
|
|
175
|
-
|
|
176
|
-
### 3. Safety Strategies
|
|
177
|
-
|
|
178
|
-
**Strangler Fig Pattern**:
|
|
179
|
-
```typescript
|
|
180
|
-
// Gradually replace old system
|
|
181
|
-
class PaymentController {
|
|
182
|
-
async processPayment(order: Order) {
|
|
183
|
-
if (featureFlags.newPaymentFlow) {
|
|
184
|
-
return newPaymentService.process(order); // New code
|
|
185
|
-
} else {
|
|
186
|
-
return legacyPaymentLogic(order); // Old code
|
|
187
|
-
}
|
|
188
|
-
}
|
|
189
|
-
}
|
|
190
|
-
```
|
|
191
|
-
|
|
192
|
-
**Parallel Run**:
|
|
193
|
-
```typescript
|
|
194
|
-
// Run both old and new, compare results
|
|
195
|
-
async function processPayment(order: Order) {
|
|
196
|
-
const oldResult = await legacyPayment(order);
|
|
197
|
-
|
|
198
|
-
// Run new code in background, don't block
|
|
199
|
-
backgroundTask(async () => {
|
|
200
|
-
const newResult = await newPayment(order);
|
|
201
|
-
if (!isEqual(oldResult, newResult)) {
|
|
202
|
-
logger.warn('Payment results differ', { old: oldResult, new: newResult });
|
|
203
|
-
}
|
|
204
|
-
});
|
|
205
|
-
|
|
206
|
-
return oldResult; // Use old result (safe)
|
|
207
|
-
}
|
|
208
|
-
```
|
|
209
|
-
|
|
210
|
-
### 4. Code Smell Prioritization
|
|
211
|
-
|
|
212
|
-
**High Priority** (Security/Bugs):
|
|
213
|
-
- Null reference errors
|
|
214
|
-
- Memory leaks
|
|
215
|
-
- Race conditions
|
|
216
|
-
- Security vulnerabilities
|
|
217
|
-
|
|
218
|
-
**Medium Priority** (Maintainability):
|
|
219
|
-
- God classes (> 500 lines)
|
|
220
|
-
- Long functions (> 50 lines)
|
|
221
|
-
- Cyclomatic complexity > 10
|
|
222
|
-
- Code duplication (> 5 instances)
|
|
223
|
-
|
|
224
|
-
**Low Priority** (Cleanup):
|
|
225
|
-
- Dead code
|
|
226
|
-
- Unused imports
|
|
227
|
-
- TODOs
|
|
228
|
-
- Console.log statements
|
|
229
|
-
|
|
230
|
-
### 5. Workflow
|
|
231
|
-
|
|
232
|
-
1. **Identify Target**: What needs refactoring?
|
|
233
|
-
2. **Assess Risk**: Impact analysis
|
|
234
|
-
3. **Create Plan**: Step-by-step breakdown
|
|
235
|
-
4. **Get Buy-in**: Team review
|
|
236
|
-
5. **Prepare**: Tests, baselines, migrations
|
|
237
|
-
6. **Execute**: Incremental changes
|
|
238
|
-
7. **Monitor**: Metrics, alerts
|
|
239
|
-
8. **Document**: Update architecture docs
|
|
240
|
-
|
|
241
|
-
## When to Use
|
|
242
|
-
|
|
243
|
-
- Planning large-scale refactoring
|
|
244
|
-
- Improving legacy codebases
|
|
245
|
-
- Reducing technical debt
|
|
246
|
-
- Preparing for new features
|
|
247
|
-
- Post-incident code improvements
|
|
248
|
-
|
|
249
|
-
Refactor safely with detailed planning!
|
|
@@ -1,158 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: code-quality
|
|
3
|
-
description: Expert code quality engineering covering clean code principles, SOLID, DRY, KISS, YAGNI, code smells, refactoring patterns, static analysis, linting, code coverage, mutation testing, and software craftsmanship. Activates for code quality, clean code, SOLID principles, code smells, refactoring, technical debt, code review, linting, eslint, prettier, static analysis, code coverage.
|
|
4
|
-
allowed-tools: Read, Grep, Glob
|
|
5
|
-
---
|
|
6
|
-
|
|
7
|
-
# Code Quality Expert
|
|
8
|
-
|
|
9
|
-
Master of clean code principles, SOLID, and software craftsmanship.
|
|
10
|
-
|
|
11
|
-
## SOLID Principles
|
|
12
|
-
|
|
13
|
-
**Single Responsibility**:
|
|
14
|
-
```typescript
|
|
15
|
-
// ❌ Bad: Multiple responsibilities
|
|
16
|
-
class User {
|
|
17
|
-
save() { /* database logic */ }
|
|
18
|
-
sendEmail() { /* email logic */ }
|
|
19
|
-
hashPassword() { /* crypto logic */ }
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
// ✅ Good: Single responsibility
|
|
23
|
-
class User { /* user data only */ }
|
|
24
|
-
class UserRepository { save(user: User) {} }
|
|
25
|
-
class EmailService { send(to: string, message: string) {} }
|
|
26
|
-
class PasswordHasher { hash(password: string) {} }
|
|
27
|
-
```
|
|
28
|
-
|
|
29
|
-
**Open/Closed**:
|
|
30
|
-
```typescript
|
|
31
|
-
// ✅ Open for extension, closed for modification
|
|
32
|
-
interface PaymentMethod {
|
|
33
|
-
processPayment(amount: number): Promise<void>;
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
class CreditCardPayment implements PaymentMethod {
|
|
37
|
-
async processPayment(amount: number) { /* ... */ }
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
class PayPalPayment implements PaymentMethod {
|
|
41
|
-
async processPayment(amount: number) { /* ... */ }
|
|
42
|
-
}
|
|
43
|
-
|
|
44
|
-
// Add new payment methods without modifying existing code
|
|
45
|
-
```
|
|
46
|
-
|
|
47
|
-
**Liskov Substitution**:
|
|
48
|
-
```typescript
|
|
49
|
-
// Subtypes must be substitutable for base types
|
|
50
|
-
class Bird {
|
|
51
|
-
fly() { /* ... */ }
|
|
52
|
-
}
|
|
53
|
-
|
|
54
|
-
// ❌ Bad: Penguin can't fly, violates LSP
|
|
55
|
-
class Penguin extends Bird {
|
|
56
|
-
fly() { throw new Error('Cannot fly'); }
|
|
57
|
-
}
|
|
58
|
-
|
|
59
|
-
// ✅ Good: Proper abstraction
|
|
60
|
-
interface Bird {}
|
|
61
|
-
interface FlyingBird extends Bird { fly(): void; }
|
|
62
|
-
class Sparrow implements FlyingBird { fly() {} }
|
|
63
|
-
class Penguin implements Bird {} // No fly method
|
|
64
|
-
```
|
|
65
|
-
|
|
66
|
-
**Interface Segregation**:
|
|
67
|
-
```typescript
|
|
68
|
-
// ❌ Bad: Fat interface
|
|
69
|
-
interface Worker {
|
|
70
|
-
work(): void;
|
|
71
|
-
eat(): void;
|
|
72
|
-
sleep(): void;
|
|
73
|
-
}
|
|
74
|
-
|
|
75
|
-
// ✅ Good: Segregated interfaces
|
|
76
|
-
interface Workable { work(): void; }
|
|
77
|
-
interface Eatable { eat(): void; }
|
|
78
|
-
interface Sleepable { sleep(): void; }
|
|
79
|
-
|
|
80
|
-
class Human implements Workable, Eatable, Sleepable {}
|
|
81
|
-
class Robot implements Workable {} // Doesn't need eat/sleep
|
|
82
|
-
```
|
|
83
|
-
|
|
84
|
-
**Dependency Inversion**:
|
|
85
|
-
```typescript
|
|
86
|
-
// ❌ Bad: High-level depends on low-level
|
|
87
|
-
class EmailService {
|
|
88
|
-
private smtp = new SMTPClient(); // Direct dependency
|
|
89
|
-
}
|
|
90
|
-
|
|
91
|
-
// ✅ Good: Depend on abstraction
|
|
92
|
-
interface EmailClient {
|
|
93
|
-
send(to: string, message: string): Promise<void>;
|
|
94
|
-
}
|
|
95
|
-
|
|
96
|
-
class EmailService {
|
|
97
|
-
constructor(private client: EmailClient) {}
|
|
98
|
-
}
|
|
99
|
-
```
|
|
100
|
-
|
|
101
|
-
## Clean Code Principles
|
|
102
|
-
|
|
103
|
-
**DRY (Don't Repeat Yourself)**:
|
|
104
|
-
```typescript
|
|
105
|
-
// ❌ Duplication
|
|
106
|
-
function validateEmail(email: string) {
|
|
107
|
-
return /^\S+@\S+\.\S+$/.test(email);
|
|
108
|
-
}
|
|
109
|
-
function validateUserEmail(email: string) {
|
|
110
|
-
return /^\S+@\S+\.\S+$/.test(email); // Duplicate
|
|
111
|
-
}
|
|
112
|
-
|
|
113
|
-
// ✅ Single source of truth
|
|
114
|
-
const EMAIL_REGEX = /^\S+@\S+\.\S+$/;
|
|
115
|
-
const isValidEmail = (email: string) => EMAIL_REGEX.test(email);
|
|
116
|
-
```
|
|
117
|
-
|
|
118
|
-
**KISS (Keep It Simple)**:
|
|
119
|
-
```typescript
|
|
120
|
-
// ❌ Over-engineered
|
|
121
|
-
class AdvancedCalculatorFactoryBuilderSingleton {
|
|
122
|
-
private static instance: AdvancedCalculatorFactoryBuilderSingleton;
|
|
123
|
-
// 50 lines of unnecessary abstraction
|
|
124
|
-
}
|
|
125
|
-
|
|
126
|
-
// ✅ Simple
|
|
127
|
-
const add = (a: number, b: number) => a + b;
|
|
128
|
-
```
|
|
129
|
-
|
|
130
|
-
**YAGNI (You Aren't Gonna Need It)**:
|
|
131
|
-
```typescript
|
|
132
|
-
// ❌ Premature abstraction
|
|
133
|
-
class User {
|
|
134
|
-
futureFeature1() {} // Not used yet
|
|
135
|
-
futureFeature2() {} // Not used yet
|
|
136
|
-
futureFeature3() {} // Not used yet
|
|
137
|
-
}
|
|
138
|
-
|
|
139
|
-
// ✅ Only what's needed now
|
|
140
|
-
class User {
|
|
141
|
-
getCurrentFeatures() {} // Actually used
|
|
142
|
-
}
|
|
143
|
-
```
|
|
144
|
-
|
|
145
|
-
## Code Smells
|
|
146
|
-
|
|
147
|
-
**Long Method**: > 50 lines → Extract methods
|
|
148
|
-
**Large Class**: > 300 lines → Extract classes
|
|
149
|
-
**Long Parameter List**: > 3 params → Parameter object
|
|
150
|
-
**Primitive Obsession**: Use value objects
|
|
151
|
-
**Data Clumps**: Group related data
|
|
152
|
-
**Switch Statements**: Replace with polymorphism
|
|
153
|
-
|
|
154
|
-
## Testing Strategies
|
|
155
|
-
|
|
156
|
-
**Test Coverage**: 80%+ for critical paths
|
|
157
|
-
**Mutation Testing**: Ensure test quality
|
|
158
|
-
**Test Pyramid**: Many unit, few integration, minimal E2E
|