specweave 0.12.1 → 0.12.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CLAUDE.md +22 -0
- package/dist/cli/commands/init.d.ts.map +1 -1
- package/dist/cli/commands/init.js +85 -28
- package/dist/cli/commands/init.js.map +1 -1
- package/dist/core/specs/spec-metadata-manager.d.ts +70 -0
- package/dist/core/specs/spec-metadata-manager.d.ts.map +1 -0
- package/dist/core/specs/spec-metadata-manager.js +371 -0
- package/dist/core/specs/spec-metadata-manager.js.map +1 -0
- package/dist/core/specs/spec-parser.d.ts +66 -0
- package/dist/core/specs/spec-parser.d.ts.map +1 -0
- package/dist/core/specs/spec-parser.js +276 -0
- package/dist/core/specs/spec-parser.js.map +1 -0
- package/dist/core/types/config.d.ts.map +1 -1
- package/dist/core/types/config.js +7 -0
- package/dist/core/types/config.js.map +1 -1
- package/dist/core/types/spec-metadata.d.ts +229 -0
- package/dist/core/types/spec-metadata.d.ts.map +1 -0
- package/dist/core/types/spec-metadata.js +14 -0
- package/dist/core/types/spec-metadata.js.map +1 -0
- package/dist/hooks/lib/prepare-reflection-context.js +1 -1
- package/dist/hooks/lib/prepare-reflection-context.js.map +1 -1
- package/package.json +10 -3
- package/plugins/specweave/agents/pm/AGENT.md +183 -0
- package/plugins/specweave/hooks/post-spec-update.sh +158 -0
- package/plugins/specweave/hooks/post-user-story-complete.sh +179 -0
- package/plugins/specweave/skills/increment-planner/SKILL.md +17 -0
- package/plugins/specweave-ado/commands/specweave-ado-sync-spec.md +255 -0
- package/plugins/specweave-ado/lib/ado-spec-sync.ts +593 -0
- package/plugins/specweave-ado/skills/ado-sync/SKILL.md +12 -6
- package/plugins/specweave-github/commands/specweave-github-sync-spec.md +208 -0
- package/plugins/specweave-github/lib/github-spec-sync.ts +656 -0
- package/plugins/specweave-github/skills/github-sync/SKILL.md +16 -8
- package/plugins/specweave-jira/commands/specweave-jira-sync-spec.md +240 -0
- package/plugins/specweave-jira/lib/jira-spec-sync.ts +582 -0
- package/plugins/specweave-jira/skills/jira-sync/SKILL.md +20 -5
- package/dist/cli/commands/docs-build.d.ts +0 -7
- package/dist/cli/commands/docs-build.d.ts.map +0 -1
- package/dist/cli/commands/docs-build.js +0 -31
- package/dist/cli/commands/docs-build.js.map +0 -1
- package/dist/cli/commands/docs-preview.d.ts +0 -7
- package/dist/cli/commands/docs-preview.d.ts.map +0 -1
- package/dist/cli/commands/docs-preview.js +0 -50
- package/dist/cli/commands/docs-preview.js.map +0 -1
- package/dist/cli/commands/docs-setup.d.ts +0 -7
- package/dist/cli/commands/docs-setup.d.ts.map +0 -1
- package/dist/cli/commands/docs-setup.js +0 -31
- package/dist/cli/commands/docs-setup.js.map +0 -1
- package/dist/cli/commands/plugin.d.ts +0 -54
- package/dist/cli/commands/plugin.d.ts.map +0 -1
- package/dist/core/rfc-generator.d.ts +0 -147
- package/dist/core/rfc-generator.d.ts.map +0 -1
- package/dist/core/rfc-generator.js +0 -434
- package/dist/core/rfc-generator.js.map +0 -1
- package/dist/core/schemas/plugin-manifest.schema.json +0 -253
- package/dist/plugins/specweave/lib/hooks/git-diff-analyzer.d.ts +0 -89
- package/dist/plugins/specweave/lib/hooks/git-diff-analyzer.d.ts.map +0 -1
- package/dist/plugins/specweave/lib/hooks/git-diff-analyzer.js +0 -226
- package/dist/plugins/specweave/lib/hooks/git-diff-analyzer.js.map +0 -1
- package/dist/plugins/specweave/lib/hooks/invoke-translator-skill.d.ts +0 -60
- package/dist/plugins/specweave/lib/hooks/invoke-translator-skill.d.ts.map +0 -1
- package/dist/plugins/specweave/lib/hooks/invoke-translator-skill.js +0 -201
- package/dist/plugins/specweave/lib/hooks/invoke-translator-skill.js.map +0 -1
- package/dist/plugins/specweave/lib/hooks/prepare-reflection-context.d.ts +0 -42
- package/dist/plugins/specweave/lib/hooks/prepare-reflection-context.d.ts.map +0 -1
- package/dist/plugins/specweave/lib/hooks/prepare-reflection-context.js +0 -123
- package/dist/plugins/specweave/lib/hooks/prepare-reflection-context.js.map +0 -1
- package/dist/plugins/specweave/lib/hooks/reflection-config-loader.d.ts +0 -45
- package/dist/plugins/specweave/lib/hooks/reflection-config-loader.d.ts.map +0 -1
- package/dist/plugins/specweave/lib/hooks/reflection-config-loader.js +0 -132
- package/dist/plugins/specweave/lib/hooks/reflection-config-loader.js.map +0 -1
- package/dist/plugins/specweave/lib/hooks/reflection-parser.d.ts +0 -33
- package/dist/plugins/specweave/lib/hooks/reflection-parser.d.ts.map +0 -1
- package/dist/plugins/specweave/lib/hooks/reflection-parser.js +0 -419
- package/dist/plugins/specweave/lib/hooks/reflection-parser.js.map +0 -1
- package/dist/plugins/specweave/lib/hooks/reflection-prompt-builder.d.ts +0 -56
- package/dist/plugins/specweave/lib/hooks/reflection-prompt-builder.d.ts.map +0 -1
- package/dist/plugins/specweave/lib/hooks/reflection-prompt-builder.js +0 -239
- package/dist/plugins/specweave/lib/hooks/reflection-prompt-builder.js.map +0 -1
- package/dist/plugins/specweave/lib/hooks/reflection-storage.d.ts +0 -64
- package/dist/plugins/specweave/lib/hooks/reflection-storage.d.ts.map +0 -1
- package/dist/plugins/specweave/lib/hooks/reflection-storage.js +0 -305
- package/dist/plugins/specweave/lib/hooks/reflection-storage.js.map +0 -1
- package/dist/plugins/specweave/lib/hooks/run-self-reflection.d.ts +0 -43
- package/dist/plugins/specweave/lib/hooks/run-self-reflection.d.ts.map +0 -1
- package/dist/plugins/specweave/lib/hooks/run-self-reflection.js +0 -203
- package/dist/plugins/specweave/lib/hooks/run-self-reflection.js.map +0 -1
- package/dist/plugins/specweave/lib/hooks/sync-living-docs.d.ts +0 -27
- package/dist/plugins/specweave/lib/hooks/sync-living-docs.d.ts.map +0 -1
- package/dist/plugins/specweave/lib/hooks/sync-living-docs.js +0 -116
- package/dist/plugins/specweave/lib/hooks/sync-living-docs.js.map +0 -1
- package/dist/plugins/specweave/lib/hooks/translate-file.d.ts +0 -59
- package/dist/plugins/specweave/lib/hooks/translate-file.d.ts.map +0 -1
- package/dist/plugins/specweave/lib/hooks/translate-file.js +0 -350
- package/dist/plugins/specweave/lib/hooks/translate-file.js.map +0 -1
- package/dist/plugins/specweave/lib/hooks/translate-living-docs.d.ts +0 -13
- package/dist/plugins/specweave/lib/hooks/translate-living-docs.d.ts.map +0 -1
- package/dist/plugins/specweave/lib/hooks/translate-living-docs.js +0 -175
- package/dist/plugins/specweave/lib/hooks/translate-living-docs.js.map +0 -1
- package/dist/plugins/specweave/lib/hooks/types/reflection-types.d.ts +0 -164
- package/dist/plugins/specweave/lib/hooks/types/reflection-types.d.ts.map +0 -1
- package/dist/plugins/specweave/lib/hooks/types/reflection-types.js +0 -73
- package/dist/plugins/specweave/lib/hooks/types/reflection-types.js.map +0 -1
- package/dist/plugins/specweave/lib/hooks/update-tasks-md.d.ts +0 -29
- package/dist/plugins/specweave/lib/hooks/update-tasks-md.d.ts.map +0 -1
- package/dist/plugins/specweave/lib/hooks/update-tasks-md.js +0 -203
- package/dist/plugins/specweave/lib/hooks/update-tasks-md.js.map +0 -1
- package/dist/plugins/specweave-ado/lib/ado-board-resolver.d.ts +0 -94
- package/dist/plugins/specweave-ado/lib/ado-board-resolver.d.ts.map +0 -1
- package/dist/plugins/specweave-ado/lib/ado-board-resolver.js +0 -219
- package/dist/plugins/specweave-ado/lib/ado-board-resolver.js.map +0 -1
- package/dist/plugins/specweave-ado/lib/ado-client-v2.d.ts +0 -124
- package/dist/plugins/specweave-ado/lib/ado-client-v2.d.ts.map +0 -1
- package/dist/plugins/specweave-ado/lib/ado-client-v2.js +0 -382
- package/dist/plugins/specweave-ado/lib/ado-client-v2.js.map +0 -1
- package/dist/plugins/specweave-ado/lib/ado-client.d.ts +0 -112
- package/dist/plugins/specweave-ado/lib/ado-client.d.ts.map +0 -1
- package/dist/plugins/specweave-ado/lib/ado-client.js +0 -257
- package/dist/plugins/specweave-ado/lib/ado-client.js.map +0 -1
- package/dist/plugins/specweave-ado/lib/ado-hierarchical-sync.d.ts +0 -40
- package/dist/plugins/specweave-ado/lib/ado-hierarchical-sync.d.ts.map +0 -1
- package/dist/plugins/specweave-ado/lib/ado-hierarchical-sync.js +0 -370
- package/dist/plugins/specweave-ado/lib/ado-hierarchical-sync.js.map +0 -1
- package/dist/plugins/specweave-ado/lib/project-selector.d.ts +0 -42
- package/dist/plugins/specweave-ado/lib/project-selector.d.ts.map +0 -1
- package/dist/plugins/specweave-ado/lib/project-selector.js +0 -211
- package/dist/plugins/specweave-ado/lib/project-selector.js.map +0 -1
- package/dist/plugins/specweave-github/lib/github-board-resolver.d.ts +0 -54
- package/dist/plugins/specweave-github/lib/github-board-resolver.d.ts.map +0 -1
- package/dist/plugins/specweave-github/lib/github-board-resolver.js +0 -122
- package/dist/plugins/specweave-github/lib/github-board-resolver.js.map +0 -1
- package/dist/plugins/specweave-github/lib/github-client-v2.d.ts +0 -104
- package/dist/plugins/specweave-github/lib/github-client-v2.d.ts.map +0 -1
- package/dist/plugins/specweave-github/lib/github-client-v2.js +0 -408
- package/dist/plugins/specweave-github/lib/github-client-v2.js.map +0 -1
- package/dist/plugins/specweave-github/lib/github-client.d.ts +0 -96
- package/dist/plugins/specweave-github/lib/github-client.d.ts.map +0 -1
- package/dist/plugins/specweave-github/lib/github-client.js +0 -299
- package/dist/plugins/specweave-github/lib/github-client.js.map +0 -1
- package/dist/plugins/specweave-github/lib/github-hierarchical-sync.d.ts +0 -29
- package/dist/plugins/specweave-github/lib/github-hierarchical-sync.d.ts.map +0 -1
- package/dist/plugins/specweave-github/lib/github-hierarchical-sync.js +0 -268
- package/dist/plugins/specweave-github/lib/github-hierarchical-sync.js.map +0 -1
- package/dist/plugins/specweave-github/lib/index.d.ts +0 -10
- package/dist/plugins/specweave-github/lib/index.d.ts.map +0 -1
- package/dist/plugins/specweave-github/lib/index.js +0 -10
- package/dist/plugins/specweave-github/lib/index.js.map +0 -1
- package/dist/plugins/specweave-github/lib/repo-selector.d.ts +0 -49
- package/dist/plugins/specweave-github/lib/repo-selector.d.ts.map +0 -1
- package/dist/plugins/specweave-github/lib/repo-selector.js +0 -216
- package/dist/plugins/specweave-github/lib/repo-selector.js.map +0 -1
- package/dist/plugins/specweave-github/lib/subtask-sync.d.ts +0 -51
- package/dist/plugins/specweave-github/lib/subtask-sync.d.ts.map +0 -1
- package/dist/plugins/specweave-github/lib/subtask-sync.js +0 -147
- package/dist/plugins/specweave-github/lib/subtask-sync.js.map +0 -1
- package/dist/plugins/specweave-github/lib/task-parser.d.ts +0 -37
- package/dist/plugins/specweave-github/lib/task-parser.d.ts.map +0 -1
- package/dist/plugins/specweave-github/lib/task-parser.js +0 -211
- package/dist/plugins/specweave-github/lib/task-parser.js.map +0 -1
- package/dist/plugins/specweave-github/lib/task-sync.d.ts +0 -51
- package/dist/plugins/specweave-github/lib/task-sync.d.ts.map +0 -1
- package/dist/plugins/specweave-github/lib/task-sync.js +0 -332
- package/dist/plugins/specweave-github/lib/task-sync.js.map +0 -1
- package/dist/plugins/specweave-github/lib/types.d.ts +0 -80
- package/dist/plugins/specweave-github/lib/types.d.ts.map +0 -1
- package/dist/plugins/specweave-github/lib/types.js +0 -5
- package/dist/plugins/specweave-github/lib/types.js.map +0 -1
- package/dist/plugins/specweave-jira/lib/jira-board-resolver.d.ts +0 -50
- package/dist/plugins/specweave-jira/lib/jira-board-resolver.d.ts.map +0 -1
- package/dist/plugins/specweave-jira/lib/jira-board-resolver.js +0 -84
- package/dist/plugins/specweave-jira/lib/jira-board-resolver.js.map +0 -1
- package/dist/plugins/specweave-jira/lib/jira-hierarchical-sync.d.ts +0 -33
- package/dist/plugins/specweave-jira/lib/jira-hierarchical-sync.d.ts.map +0 -1
- package/dist/plugins/specweave-jira/lib/jira-hierarchical-sync.js +0 -206
- package/dist/plugins/specweave-jira/lib/jira-hierarchical-sync.js.map +0 -1
- package/dist/plugins/specweave-jira/lib/project-selector.d.ts +0 -42
- package/dist/plugins/specweave-jira/lib/project-selector.d.ts.map +0 -1
- package/dist/plugins/specweave-jira/lib/project-selector.js +0 -216
- package/dist/plugins/specweave-jira/lib/project-selector.js.map +0 -1
- package/dist/plugins/specweave-jira/lib/reorganization-detector.d.ts +0 -67
- package/dist/plugins/specweave-jira/lib/reorganization-detector.d.ts.map +0 -1
- package/dist/plugins/specweave-jira/lib/reorganization-detector.js +0 -252
- package/dist/plugins/specweave-jira/lib/reorganization-detector.js.map +0 -1
- package/dist/plugins/specweave-jira/lib/setup-wizard.d.ts +0 -29
- package/dist/plugins/specweave-jira/lib/setup-wizard.d.ts.map +0 -1
- package/dist/plugins/specweave-jira/lib/setup-wizard.js +0 -219
- package/dist/plugins/specweave-jira/lib/setup-wizard.js.map +0 -1
- package/dist/src/adapters/adapter-base.d.ts +0 -71
- package/dist/src/adapters/adapter-base.d.ts.map +0 -1
- package/dist/src/adapters/adapter-base.js +0 -139
- package/dist/src/adapters/adapter-base.js.map +0 -1
- package/dist/src/adapters/adapter-interface.d.ts +0 -149
- package/dist/src/adapters/adapter-interface.d.ts.map +0 -1
- package/dist/src/adapters/adapter-interface.js +0 -8
- package/dist/src/adapters/adapter-interface.js.map +0 -1
- package/dist/src/adapters/adapter-loader.d.ts +0 -91
- package/dist/src/adapters/adapter-loader.d.ts.map +0 -1
- package/dist/src/adapters/adapter-loader.js +0 -238
- package/dist/src/adapters/adapter-loader.js.map +0 -1
- package/dist/src/adapters/agents-md-generator.d.ts +0 -48
- package/dist/src/adapters/agents-md-generator.d.ts.map +0 -1
- package/dist/src/adapters/agents-md-generator.js +0 -193
- package/dist/src/adapters/agents-md-generator.js.map +0 -1
- package/dist/src/adapters/claude/adapter.d.ts +0 -128
- package/dist/src/adapters/claude/adapter.d.ts.map +0 -1
- package/dist/src/adapters/claude/adapter.js +0 -415
- package/dist/src/adapters/claude/adapter.js.map +0 -1
- package/dist/src/adapters/claude-md-generator.d.ts +0 -78
- package/dist/src/adapters/claude-md-generator.d.ts.map +0 -1
- package/dist/src/adapters/claude-md-generator.js +0 -307
- package/dist/src/adapters/claude-md-generator.js.map +0 -1
- package/dist/src/adapters/codex/adapter.d.ts +0 -50
- package/dist/src/adapters/codex/adapter.d.ts.map +0 -1
- package/dist/src/adapters/codex/adapter.js +0 -316
- package/dist/src/adapters/codex/adapter.js.map +0 -1
- package/dist/src/adapters/cursor/adapter.d.ts +0 -98
- package/dist/src/adapters/cursor/adapter.d.ts.map +0 -1
- package/dist/src/adapters/cursor/adapter.js +0 -406
- package/dist/src/adapters/cursor/adapter.js.map +0 -1
- package/dist/src/adapters/doc-generator.d.ts +0 -69
- package/dist/src/adapters/doc-generator.d.ts.map +0 -1
- package/dist/src/adapters/doc-generator.js +0 -247
- package/dist/src/adapters/doc-generator.js.map +0 -1
- package/dist/src/adapters/gemini/adapter.d.ts +0 -50
- package/dist/src/adapters/gemini/adapter.d.ts.map +0 -1
- package/dist/src/adapters/gemini/adapter.js +0 -281
- package/dist/src/adapters/gemini/adapter.js.map +0 -1
- package/dist/src/adapters/generic/adapter.d.ts +0 -86
- package/dist/src/adapters/generic/adapter.d.ts.map +0 -1
- package/dist/src/adapters/generic/adapter.js +0 -338
- package/dist/src/adapters/generic/adapter.js.map +0 -1
- package/dist/src/cli/commands/abandon.d.ts +0 -13
- package/dist/src/cli/commands/abandon.d.ts.map +0 -1
- package/dist/src/cli/commands/abandon.js +0 -15
- package/dist/src/cli/commands/abandon.js.map +0 -1
- package/dist/src/cli/commands/import-docs.d.ts +0 -21
- package/dist/src/cli/commands/import-docs.d.ts.map +0 -1
- package/dist/src/cli/commands/import-docs.js +0 -146
- package/dist/src/cli/commands/import-docs.js.map +0 -1
- package/dist/src/cli/commands/init-multiproject.d.ts +0 -11
- package/dist/src/cli/commands/init-multiproject.d.ts.map +0 -1
- package/dist/src/cli/commands/init-multiproject.js +0 -202
- package/dist/src/cli/commands/init-multiproject.js.map +0 -1
- package/dist/src/cli/commands/init.d.ts +0 -9
- package/dist/src/cli/commands/init.d.ts.map +0 -1
- package/dist/src/cli/commands/init.js +0 -1205
- package/dist/src/cli/commands/init.js.map +0 -1
- package/dist/src/cli/commands/install.d.ts +0 -9
- package/dist/src/cli/commands/install.d.ts.map +0 -1
- package/dist/src/cli/commands/install.js +0 -127
- package/dist/src/cli/commands/install.js.map +0 -1
- package/dist/src/cli/commands/list.d.ts +0 -8
- package/dist/src/cli/commands/list.d.ts.map +0 -1
- package/dist/src/cli/commands/list.js +0 -119
- package/dist/src/cli/commands/list.js.map +0 -1
- package/dist/src/cli/commands/migrate-to-multiproject.d.ts +0 -37
- package/dist/src/cli/commands/migrate-to-multiproject.d.ts.map +0 -1
- package/dist/src/cli/commands/migrate-to-multiproject.js +0 -189
- package/dist/src/cli/commands/migrate-to-multiproject.js.map +0 -1
- package/dist/src/cli/commands/migrate-to-profiles.d.ts +0 -25
- package/dist/src/cli/commands/migrate-to-profiles.d.ts.map +0 -1
- package/dist/src/cli/commands/migrate-to-profiles.js +0 -350
- package/dist/src/cli/commands/migrate-to-profiles.js.map +0 -1
- package/dist/src/cli/commands/pause.d.ts +0 -13
- package/dist/src/cli/commands/pause.d.ts.map +0 -1
- package/dist/src/cli/commands/pause.js +0 -15
- package/dist/src/cli/commands/pause.js.map +0 -1
- package/dist/src/cli/commands/qa.d.ts +0 -54
- package/dist/src/cli/commands/qa.d.ts.map +0 -1
- package/dist/src/cli/commands/qa.js +0 -98
- package/dist/src/cli/commands/qa.js.map +0 -1
- package/dist/src/cli/commands/resume.d.ts +0 -12
- package/dist/src/cli/commands/resume.d.ts.map +0 -1
- package/dist/src/cli/commands/resume.js +0 -14
- package/dist/src/cli/commands/resume.js.map +0 -1
- package/dist/src/cli/commands/status.d.ts +0 -12
- package/dist/src/cli/commands/status.d.ts.map +0 -1
- package/dist/src/cli/commands/status.js +0 -23
- package/dist/src/cli/commands/status.js.map +0 -1
- 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 -91
- package/dist/src/cli/commands/switch-project.js.map +0 -1
- package/dist/src/cli/commands/validate-jira.d.ts +0 -35
- package/dist/src/cli/commands/validate-jira.d.ts.map +0 -1
- package/dist/src/cli/commands/validate-jira.js +0 -112
- package/dist/src/cli/commands/validate-jira.js.map +0 -1
- package/dist/src/cli/commands/validate-plugins.d.ts +0 -41
- package/dist/src/cli/commands/validate-plugins.d.ts.map +0 -1
- package/dist/src/cli/commands/validate-plugins.js +0 -171
- package/dist/src/cli/commands/validate-plugins.js.map +0 -1
- package/dist/src/cli/helpers/issue-tracker/ado.d.ts +0 -57
- package/dist/src/cli/helpers/issue-tracker/ado.d.ts.map +0 -1
- package/dist/src/cli/helpers/issue-tracker/ado.js +0 -243
- package/dist/src/cli/helpers/issue-tracker/ado.js.map +0 -1
- package/dist/src/cli/helpers/issue-tracker/github.d.ts +0 -65
- package/dist/src/cli/helpers/issue-tracker/github.d.ts.map +0 -1
- package/dist/src/cli/helpers/issue-tracker/github.js +0 -426
- package/dist/src/cli/helpers/issue-tracker/github.js.map +0 -1
- package/dist/src/cli/helpers/issue-tracker/index.d.ts +0 -22
- package/dist/src/cli/helpers/issue-tracker/index.d.ts.map +0 -1
- package/dist/src/cli/helpers/issue-tracker/index.js +0 -314
- package/dist/src/cli/helpers/issue-tracker/index.js.map +0 -1
- package/dist/src/cli/helpers/issue-tracker/jira.d.ts +0 -61
- package/dist/src/cli/helpers/issue-tracker/jira.d.ts.map +0 -1
- package/dist/src/cli/helpers/issue-tracker/jira.js +0 -404
- package/dist/src/cli/helpers/issue-tracker/jira.js.map +0 -1
- package/dist/src/cli/helpers/issue-tracker/types.d.ts +0 -107
- package/dist/src/cli/helpers/issue-tracker/types.d.ts.map +0 -1
- package/dist/src/cli/helpers/issue-tracker/types.js +0 -16
- package/dist/src/cli/helpers/issue-tracker/types.js.map +0 -1
- package/dist/src/cli/helpers/issue-tracker/utils.d.ts +0 -112
- package/dist/src/cli/helpers/issue-tracker/utils.d.ts.map +0 -1
- package/dist/src/cli/helpers/issue-tracker/utils.js +0 -247
- package/dist/src/cli/helpers/issue-tracker/utils.js.map +0 -1
- package/dist/src/core/agent-model-manager.d.ts +0 -52
- package/dist/src/core/agent-model-manager.d.ts.map +0 -1
- package/dist/src/core/agent-model-manager.js +0 -120
- package/dist/src/core/agent-model-manager.js.map +0 -1
- package/dist/src/core/brownfield/analyzer.d.ts +0 -86
- package/dist/src/core/brownfield/analyzer.d.ts.map +0 -1
- package/dist/src/core/brownfield/analyzer.js +0 -365
- package/dist/src/core/brownfield/analyzer.js.map +0 -1
- package/dist/src/core/brownfield/importer.d.ts +0 -76
- package/dist/src/core/brownfield/importer.d.ts.map +0 -1
- package/dist/src/core/brownfield/importer.js +0 -287
- package/dist/src/core/brownfield/importer.js.map +0 -1
- package/dist/src/core/config-manager.d.ts +0 -47
- package/dist/src/core/config-manager.d.ts.map +0 -1
- package/dist/src/core/config-manager.js +0 -136
- package/dist/src/core/config-manager.js.map +0 -1
- package/dist/src/core/cost-tracker.d.ts +0 -108
- package/dist/src/core/cost-tracker.d.ts.map +0 -1
- package/dist/src/core/cost-tracker.js +0 -281
- package/dist/src/core/cost-tracker.js.map +0 -1
- package/dist/src/core/credentials-manager.d.ts +0 -107
- package/dist/src/core/credentials-manager.d.ts.map +0 -1
- package/dist/src/core/credentials-manager.js +0 -457
- package/dist/src/core/credentials-manager.js.map +0 -1
- package/dist/src/core/i18n/language-detector.d.ts +0 -29
- package/dist/src/core/i18n/language-detector.d.ts.map +0 -1
- package/dist/src/core/i18n/language-detector.js +0 -143
- package/dist/src/core/i18n/language-detector.js.map +0 -1
- package/dist/src/core/i18n/language-manager.d.ts +0 -101
- package/dist/src/core/i18n/language-manager.d.ts.map +0 -1
- package/dist/src/core/i18n/language-manager.js +0 -232
- package/dist/src/core/i18n/language-manager.js.map +0 -1
- package/dist/src/core/i18n/language-registry.d.ts +0 -44
- package/dist/src/core/i18n/language-registry.d.ts.map +0 -1
- package/dist/src/core/i18n/language-registry.js +0 -234
- package/dist/src/core/i18n/language-registry.js.map +0 -1
- package/dist/src/core/i18n/locale-manager.d.ts +0 -62
- package/dist/src/core/i18n/locale-manager.d.ts.map +0 -1
- package/dist/src/core/i18n/locale-manager.js +0 -137
- package/dist/src/core/i18n/locale-manager.js.map +0 -1
- package/dist/src/core/i18n/system-prompt-injector.d.ts +0 -33
- package/dist/src/core/i18n/system-prompt-injector.d.ts.map +0 -1
- package/dist/src/core/i18n/system-prompt-injector.js +0 -131
- package/dist/src/core/i18n/system-prompt-injector.js.map +0 -1
- package/dist/src/core/i18n/types.d.ts +0 -151
- package/dist/src/core/i18n/types.d.ts.map +0 -1
- package/dist/src/core/i18n/types.js +0 -11
- package/dist/src/core/i18n/types.js.map +0 -1
- package/dist/src/core/increment/limits.d.ts +0 -68
- package/dist/src/core/increment/limits.d.ts.map +0 -1
- package/dist/src/core/increment/limits.js +0 -224
- package/dist/src/core/increment/limits.js.map +0 -1
- package/dist/src/core/increment/metadata-manager.d.ts +0 -114
- package/dist/src/core/increment/metadata-manager.d.ts.map +0 -1
- package/dist/src/core/increment/metadata-manager.js +0 -320
- package/dist/src/core/increment/metadata-manager.js.map +0 -1
- package/dist/src/core/increment/status-commands.d.ts +0 -43
- package/dist/src/core/increment/status-commands.d.ts.map +0 -1
- package/dist/src/core/increment/status-commands.js +0 -277
- package/dist/src/core/increment/status-commands.js.map +0 -1
- package/dist/src/core/increment-status.d.ts +0 -72
- package/dist/src/core/increment-status.d.ts.map +0 -1
- package/dist/src/core/increment-status.js +0 -227
- package/dist/src/core/increment-status.js.map +0 -1
- package/dist/src/core/model-selector.d.ts +0 -57
- package/dist/src/core/model-selector.d.ts.map +0 -1
- package/dist/src/core/model-selector.js +0 -115
- package/dist/src/core/model-selector.js.map +0 -1
- package/dist/src/core/phase-detector.d.ts +0 -62
- package/dist/src/core/phase-detector.d.ts.map +0 -1
- package/dist/src/core/phase-detector.js +0 -229
- package/dist/src/core/phase-detector.js.map +0 -1
- package/dist/src/core/plugin-loader.d.ts +0 -131
- package/dist/src/core/plugin-loader.d.ts.map +0 -1
- package/dist/src/core/plugin-loader.js +0 -421
- package/dist/src/core/plugin-loader.js.map +0 -1
- package/dist/src/core/project-manager.d.ts +0 -127
- package/dist/src/core/project-manager.d.ts.map +0 -1
- package/dist/src/core/project-manager.js +0 -524
- package/dist/src/core/project-manager.js.map +0 -1
- package/dist/src/core/project-structure-detector.d.ts +0 -92
- package/dist/src/core/project-structure-detector.d.ts.map +0 -1
- package/dist/src/core/project-structure-detector.js +0 -289
- package/dist/src/core/project-structure-detector.js.map +0 -1
- package/dist/src/core/qa/qa-runner.d.ts +0 -16
- package/dist/src/core/qa/qa-runner.d.ts.map +0 -1
- package/dist/src/core/qa/qa-runner.js +0 -404
- package/dist/src/core/qa/qa-runner.js.map +0 -1
- package/dist/src/core/qa/quality-gate-decider.d.ts +0 -53
- package/dist/src/core/qa/quality-gate-decider.d.ts.map +0 -1
- package/dist/src/core/qa/quality-gate-decider.js +0 -268
- package/dist/src/core/qa/quality-gate-decider.js.map +0 -1
- package/dist/src/core/qa/risk-calculator.d.ts +0 -126
- package/dist/src/core/qa/risk-calculator.d.ts.map +0 -1
- package/dist/src/core/qa/risk-calculator.js +0 -247
- package/dist/src/core/qa/risk-calculator.js.map +0 -1
- package/dist/src/core/qa/types.d.ts +0 -315
- package/dist/src/core/qa/types.d.ts.map +0 -1
- package/dist/src/core/qa/types.js +0 -8
- package/dist/src/core/qa/types.js.map +0 -1
- package/dist/src/core/rfc-generator-v2.d.ts +0 -149
- package/dist/src/core/rfc-generator-v2.d.ts.map +0 -1
- package/dist/src/core/rfc-generator-v2.js +0 -399
- package/dist/src/core/rfc-generator-v2.js.map +0 -1
- package/dist/src/core/sync/bidirectional-engine.d.ts +0 -110
- package/dist/src/core/sync/bidirectional-engine.d.ts.map +0 -1
- package/dist/src/core/sync/bidirectional-engine.js +0 -356
- package/dist/src/core/sync/bidirectional-engine.js.map +0 -1
- package/dist/src/core/sync/folder-mapper.d.ts +0 -71
- package/dist/src/core/sync/folder-mapper.d.ts.map +0 -1
- package/dist/src/core/sync/folder-mapper.js +0 -168
- package/dist/src/core/sync/folder-mapper.js.map +0 -1
- package/dist/src/core/sync/profile-manager.d.ts +0 -72
- package/dist/src/core/sync/profile-manager.d.ts.map +0 -1
- package/dist/src/core/sync/profile-manager.js +0 -338
- package/dist/src/core/sync/profile-manager.js.map +0 -1
- package/dist/src/core/sync/profile-selector.d.ts +0 -52
- package/dist/src/core/sync/profile-selector.d.ts.map +0 -1
- package/dist/src/core/sync/profile-selector.js +0 -179
- package/dist/src/core/sync/profile-selector.js.map +0 -1
- package/dist/src/core/sync/profile-validator.d.ts +0 -52
- package/dist/src/core/sync/profile-validator.d.ts.map +0 -1
- package/dist/src/core/sync/profile-validator.js +0 -225
- package/dist/src/core/sync/profile-validator.js.map +0 -1
- package/dist/src/core/sync/project-context.d.ts +0 -81
- package/dist/src/core/sync/project-context.d.ts.map +0 -1
- package/dist/src/core/sync/project-context.js +0 -354
- package/dist/src/core/sync/project-context.js.map +0 -1
- package/dist/src/core/sync/rate-limiter.d.ts +0 -116
- package/dist/src/core/sync/rate-limiter.d.ts.map +0 -1
- package/dist/src/core/sync/rate-limiter.js +0 -308
- package/dist/src/core/sync/rate-limiter.js.map +0 -1
- package/dist/src/core/sync/time-range-selector.d.ts +0 -48
- package/dist/src/core/sync/time-range-selector.d.ts.map +0 -1
- package/dist/src/core/sync/time-range-selector.js +0 -224
- package/dist/src/core/sync/time-range-selector.js.map +0 -1
- package/dist/src/core/types/config.d.ts +0 -90
- package/dist/src/core/types/config.d.ts.map +0 -1
- package/dist/src/core/types/config.js +0 -37
- package/dist/src/core/types/config.js.map +0 -1
- package/dist/src/core/types/increment-metadata.d.ts +0 -120
- package/dist/src/core/types/increment-metadata.d.ts.map +0 -1
- package/dist/src/core/types/increment-metadata.js +0 -138
- package/dist/src/core/types/increment-metadata.js.map +0 -1
- package/dist/src/core/types/plugin.d.ts +0 -283
- package/dist/src/core/types/plugin.d.ts.map +0 -1
- package/dist/src/core/types/plugin.js +0 -49
- package/dist/src/core/types/plugin.js.map +0 -1
- package/dist/src/core/types/sync-profile.d.ts +0 -403
- package/dist/src/core/types/sync-profile.d.ts.map +0 -1
- package/dist/src/core/types/sync-profile.js +0 -55
- package/dist/src/core/types/sync-profile.js.map +0 -1
- package/dist/src/hooks/lib/types/reflection-types.d.ts +0 -125
- package/dist/src/hooks/lib/types/reflection-types.d.ts.map +0 -1
- package/dist/src/hooks/lib/types/reflection-types.js +0 -54
- package/dist/src/hooks/lib/types/reflection-types.js.map +0 -1
- package/dist/src/integrations/ado/ado-client.d.ts +0 -127
- package/dist/src/integrations/ado/ado-client.d.ts.map +0 -1
- package/dist/src/integrations/ado/ado-client.js +0 -416
- package/dist/src/integrations/ado/ado-client.js.map +0 -1
- package/dist/src/integrations/jira/jira-client.d.ts +0 -139
- package/dist/src/integrations/jira/jira-client.d.ts.map +0 -1
- package/dist/src/integrations/jira/jira-client.js +0 -386
- package/dist/src/integrations/jira/jira-client.js.map +0 -1
- package/dist/src/integrations/jira/jira-incremental-mapper.d.ts +0 -75
- package/dist/src/integrations/jira/jira-incremental-mapper.d.ts.map +0 -1
- package/dist/src/integrations/jira/jira-incremental-mapper.js +0 -474
- package/dist/src/integrations/jira/jira-incremental-mapper.js.map +0 -1
- package/dist/src/integrations/jira/jira-mapper.d.ts +0 -105
- package/dist/src/integrations/jira/jira-mapper.d.ts.map +0 -1
- package/dist/src/integrations/jira/jira-mapper.js +0 -494
- package/dist/src/integrations/jira/jira-mapper.js.map +0 -1
- package/dist/src/metrics/calculators/change-failure-rate.d.ts +0 -22
- package/dist/src/metrics/calculators/change-failure-rate.d.ts.map +0 -1
- package/dist/src/metrics/calculators/change-failure-rate.js +0 -70
- package/dist/src/metrics/calculators/change-failure-rate.js.map +0 -1
- package/dist/src/metrics/calculators/deployment-frequency.d.ts +0 -20
- package/dist/src/metrics/calculators/deployment-frequency.d.ts.map +0 -1
- package/dist/src/metrics/calculators/deployment-frequency.js +0 -61
- package/dist/src/metrics/calculators/deployment-frequency.js.map +0 -1
- package/dist/src/metrics/calculators/lead-time.d.ts +0 -22
- package/dist/src/metrics/calculators/lead-time.d.ts.map +0 -1
- package/dist/src/metrics/calculators/lead-time.js +0 -82
- package/dist/src/metrics/calculators/lead-time.js.map +0 -1
- package/dist/src/metrics/calculators/mttr.d.ts +0 -21
- package/dist/src/metrics/calculators/mttr.d.ts.map +0 -1
- package/dist/src/metrics/calculators/mttr.js +0 -60
- package/dist/src/metrics/calculators/mttr.js.map +0 -1
- package/dist/src/metrics/dora-calculator.d.ts +0 -28
- package/dist/src/metrics/dora-calculator.d.ts.map +0 -1
- package/dist/src/metrics/dora-calculator.js +0 -117
- package/dist/src/metrics/dora-calculator.js.map +0 -1
- package/dist/src/metrics/github-client.d.ts +0 -51
- package/dist/src/metrics/github-client.d.ts.map +0 -1
- package/dist/src/metrics/github-client.js +0 -133
- package/dist/src/metrics/github-client.js.map +0 -1
- package/dist/src/metrics/report-generator.d.ts +0 -17
- package/dist/src/metrics/report-generator.d.ts.map +0 -1
- package/dist/src/metrics/report-generator.js +0 -403
- package/dist/src/metrics/report-generator.js.map +0 -1
- package/dist/src/metrics/types.d.ts +0 -112
- package/dist/src/metrics/types.d.ts.map +0 -1
- package/dist/src/metrics/types.js +0 -10
- package/dist/src/metrics/types.js.map +0 -1
- package/dist/src/metrics/utils/percentile.d.ts +0 -25
- package/dist/src/metrics/utils/percentile.d.ts.map +0 -1
- package/dist/src/metrics/utils/percentile.js +0 -46
- package/dist/src/metrics/utils/percentile.js.map +0 -1
- package/dist/src/metrics/utils/tier-classifier.d.ts +0 -61
- package/dist/src/metrics/utils/tier-classifier.d.ts.map +0 -1
- package/dist/src/metrics/utils/tier-classifier.js +0 -100
- package/dist/src/metrics/utils/tier-classifier.js.map +0 -1
- package/dist/src/testing/test-generator.d.ts +0 -117
- package/dist/src/testing/test-generator.d.ts.map +0 -1
- package/dist/src/testing/test-generator.js +0 -370
- package/dist/src/testing/test-generator.js.map +0 -1
- package/dist/src/types/cost-tracking.d.ts +0 -43
- package/dist/src/types/cost-tracking.d.ts.map +0 -1
- package/dist/src/types/cost-tracking.js +0 -8
- package/dist/src/types/cost-tracking.js.map +0 -1
- package/dist/src/types/model-selection.d.ts +0 -53
- package/dist/src/types/model-selection.d.ts.map +0 -1
- package/dist/src/types/model-selection.js +0 -12
- package/dist/src/types/model-selection.js.map +0 -1
- package/dist/src/utils/agents-md-compiler.d.ts +0 -68
- package/dist/src/utils/agents-md-compiler.d.ts.map +0 -1
- package/dist/src/utils/agents-md-compiler.js +0 -420
- package/dist/src/utils/agents-md-compiler.js.map +0 -1
- package/dist/src/utils/auth-helpers.d.ts +0 -58
- package/dist/src/utils/auth-helpers.d.ts.map +0 -1
- package/dist/src/utils/auth-helpers.js +0 -108
- package/dist/src/utils/auth-helpers.js.map +0 -1
- package/dist/src/utils/auto-install.d.ts +0 -47
- package/dist/src/utils/auto-install.d.ts.map +0 -1
- package/dist/src/utils/auto-install.js +0 -211
- package/dist/src/utils/auto-install.js.map +0 -1
- package/dist/src/utils/claude-cli-detector.d.ts +0 -75
- package/dist/src/utils/claude-cli-detector.d.ts.map +0 -1
- package/dist/src/utils/claude-cli-detector.js +0 -285
- package/dist/src/utils/claude-cli-detector.js.map +0 -1
- package/dist/src/utils/cost-reporter.d.ts +0 -58
- package/dist/src/utils/cost-reporter.d.ts.map +0 -1
- package/dist/src/utils/cost-reporter.js +0 -224
- package/dist/src/utils/cost-reporter.js.map +0 -1
- package/dist/src/utils/docs-preview/config-generator.d.ts +0 -46
- package/dist/src/utils/docs-preview/config-generator.d.ts.map +0 -1
- package/dist/src/utils/docs-preview/config-generator.js +0 -377
- package/dist/src/utils/docs-preview/config-generator.js.map +0 -1
- package/dist/src/utils/docs-preview/docusaurus-setup.d.ts +0 -38
- package/dist/src/utils/docs-preview/docusaurus-setup.d.ts.map +0 -1
- package/dist/src/utils/docs-preview/docusaurus-setup.js +0 -177
- package/dist/src/utils/docs-preview/docusaurus-setup.js.map +0 -1
- package/dist/src/utils/docs-preview/index.d.ts +0 -7
- package/dist/src/utils/docs-preview/index.d.ts.map +0 -1
- package/dist/src/utils/docs-preview/index.js +0 -7
- package/dist/src/utils/docs-preview/index.js.map +0 -1
- package/dist/src/utils/docs-preview/package-installer.d.ts +0 -42
- package/dist/src/utils/docs-preview/package-installer.d.ts.map +0 -1
- package/dist/src/utils/docs-preview/package-installer.js +0 -182
- package/dist/src/utils/docs-preview/package-installer.js.map +0 -1
- package/dist/src/utils/docs-preview/server-manager.d.ts +0 -30
- package/dist/src/utils/docs-preview/server-manager.d.ts.map +0 -1
- package/dist/src/utils/docs-preview/server-manager.js +0 -212
- package/dist/src/utils/docs-preview/server-manager.js.map +0 -1
- package/dist/src/utils/docs-preview/sidebar-builder.d.ts +0 -32
- package/dist/src/utils/docs-preview/sidebar-builder.d.ts.map +0 -1
- package/dist/src/utils/docs-preview/sidebar-builder.js +0 -202
- package/dist/src/utils/docs-preview/sidebar-builder.js.map +0 -1
- package/dist/src/utils/docs-preview/types.d.ts +0 -57
- package/dist/src/utils/docs-preview/types.d.ts.map +0 -1
- package/dist/src/utils/docs-preview/types.js +0 -2
- package/dist/src/utils/docs-preview/types.js.map +0 -1
- package/dist/src/utils/env-file.d.ts +0 -88
- package/dist/src/utils/env-file.d.ts.map +0 -1
- package/dist/src/utils/env-file.js +0 -180
- package/dist/src/utils/env-file.js.map +0 -1
- package/dist/src/utils/env-multi-project-parser.d.ts +0 -220
- package/dist/src/utils/env-multi-project-parser.d.ts.map +0 -1
- package/dist/src/utils/env-multi-project-parser.js +0 -403
- package/dist/src/utils/env-multi-project-parser.js.map +0 -1
- package/dist/src/utils/esm-helpers.d.ts +0 -50
- package/dist/src/utils/esm-helpers.d.ts.map +0 -1
- package/dist/src/utils/esm-helpers.js +0 -57
- package/dist/src/utils/esm-helpers.js.map +0 -1
- package/dist/src/utils/execFileNoThrow.d.ts +0 -99
- package/dist/src/utils/execFileNoThrow.d.ts.map +0 -1
- package/dist/src/utils/execFileNoThrow.js +0 -137
- package/dist/src/utils/execFileNoThrow.js.map +0 -1
- package/dist/src/utils/external-resource-validator.d.ts +0 -102
- package/dist/src/utils/external-resource-validator.d.ts.map +0 -1
- package/dist/src/utils/external-resource-validator.js +0 -400
- package/dist/src/utils/external-resource-validator.js.map +0 -1
- package/dist/src/utils/generate-skills-index.d.ts +0 -24
- package/dist/src/utils/generate-skills-index.d.ts.map +0 -1
- package/dist/src/utils/generate-skills-index.js +0 -410
- package/dist/src/utils/generate-skills-index.js.map +0 -1
- package/dist/src/utils/model-selection.d.ts +0 -75
- package/dist/src/utils/model-selection.d.ts.map +0 -1
- package/dist/src/utils/model-selection.js +0 -204
- package/dist/src/utils/model-selection.js.map +0 -1
- package/dist/src/utils/plugin-validator.d.ts +0 -161
- package/dist/src/utils/plugin-validator.d.ts.map +0 -1
- package/dist/src/utils/plugin-validator.js +0 -558
- package/dist/src/utils/plugin-validator.js.map +0 -1
- package/dist/src/utils/pricing-constants.d.ts +0 -70
- package/dist/src/utils/pricing-constants.d.ts.map +0 -1
- package/dist/src/utils/pricing-constants.js +0 -71
- package/dist/src/utils/pricing-constants.js.map +0 -1
- package/dist/src/utils/project-detection.d.ts +0 -141
- package/dist/src/utils/project-detection.d.ts.map +0 -1
- package/dist/src/utils/project-detection.js +0 -321
- package/dist/src/utils/project-detection.js.map +0 -1
- package/dist/src/utils/string-utils.d.ts +0 -40
- package/dist/src/utils/string-utils.d.ts.map +0 -1
- package/dist/src/utils/string-utils.js +0 -58
- package/dist/src/utils/string-utils.js.map +0 -1
- package/dist/src/utils/translation.d.ts +0 -187
- package/dist/src/utils/translation.d.ts.map +0 -1
- package/dist/src/utils/translation.js +0 -414
- package/dist/src/utils/translation.js.map +0 -1
- package/dist/utils/docs-preview.bak/config-generator.d.ts +0 -46
- package/dist/utils/docs-preview.bak/config-generator.d.ts.map +0 -1
- package/dist/utils/docs-preview.bak/config-generator.js +0 -377
- package/dist/utils/docs-preview.bak/config-generator.js.map +0 -1
- package/dist/utils/docs-preview.bak/package-installer.d.ts +0 -42
- package/dist/utils/docs-preview.bak/package-installer.d.ts.map +0 -1
- package/dist/utils/docs-preview.bak/package-installer.js +0 -182
- package/dist/utils/docs-preview.bak/package-installer.js.map +0 -1
- package/dist/utils/docs-preview.bak/server-manager.d.ts +0 -30
- package/dist/utils/docs-preview.bak/server-manager.d.ts.map +0 -1
- package/dist/utils/docs-preview.bak/server-manager.js +0 -207
- package/dist/utils/docs-preview.bak/server-manager.js.map +0 -1
- package/dist/utils/docs-preview.bak/sidebar-builder.d.ts +0 -31
- package/dist/utils/docs-preview.bak/sidebar-builder.d.ts.map +0 -1
- package/dist/utils/docs-preview.bak/sidebar-builder.js +0 -202
- package/dist/utils/docs-preview.bak/sidebar-builder.js.map +0 -1
- package/dist/utils/docs-preview.bak/types.d.ts +0 -60
- package/dist/utils/docs-preview.bak/types.d.ts.map +0 -1
- package/dist/utils/docs-preview.bak/types.js +0 -5
- package/dist/utils/docs-preview.bak/types.js.map +0 -1
- package/dist/utils/plugin-detection.d.ts +0 -50
- package/dist/utils/plugin-detection.d.ts.map +0 -1
- package/dist/utils/secrets-loader.d.ts +0 -88
- package/dist/utils/secrets-loader.d.ts.map +0 -1
- package/dist/utils/secrets-loader.js +0 -271
- package/dist/utils/secrets-loader.js.map +0 -1
- package/src/templates/environments/minimal/.env.production +0 -16
- package/src/templates/environments/standard/.env.production +0 -30
|
@@ -107,6 +107,189 @@ As PM Agent, you are the **gatekeeper**. You MUST:
|
|
|
107
107
|
|
|
108
108
|
---
|
|
109
109
|
|
|
110
|
+
## 🔗 External Sync Architecture (CRITICAL UNDERSTANDING)
|
|
111
|
+
|
|
112
|
+
**SpecWeave's Source of Truth**: `.specweave/docs/specs/` is the **permanent, local source of truth**. External tools (GitHub, Jira, ADO) are **MIRRORS** of this truth.
|
|
113
|
+
|
|
114
|
+
### Correct Sync Direction
|
|
115
|
+
|
|
116
|
+
```
|
|
117
|
+
✅ CORRECT Architecture:
|
|
118
|
+
.specweave/docs/specs/ ↔ GitHub Issues
|
|
119
|
+
.specweave/docs/specs/ ↔ Jira Epics
|
|
120
|
+
.specweave/docs/specs/ ↔ Azure DevOps Work Items
|
|
121
|
+
|
|
122
|
+
❌ WRONG (External-to-External):
|
|
123
|
+
GitHub PRs ↔ Jira
|
|
124
|
+
GitHub Issues ↔ Jira Epics
|
|
125
|
+
```
|
|
126
|
+
|
|
127
|
+
**The Hub is LOCAL**, not external!
|
|
128
|
+
|
|
129
|
+
### Sync Direction Options
|
|
130
|
+
|
|
131
|
+
When asking users about sync behavior, use these terms:
|
|
132
|
+
|
|
133
|
+
| Option | Direction | Description |
|
|
134
|
+
|--------|-----------|-------------|
|
|
135
|
+
| **Bidirectional** | Local ↔ External | Changes sync **both ways** (Local ↔ GitHub/Jira/ADO) |
|
|
136
|
+
| **Export only** | Local → External | Push changes **from Local to External** |
|
|
137
|
+
| **Import only** | External → Local | Pull changes **from External to Local** |
|
|
138
|
+
|
|
139
|
+
**Default recommendation**: **Bidirectional** (most useful for teams)
|
|
140
|
+
|
|
141
|
+
### When Setting Up Sync (Interactive Wizard)
|
|
142
|
+
|
|
143
|
+
**Step 1: GitHub/Jira/ADO Authentication**
|
|
144
|
+
- Ask: "Do you want to sync increments to GitHub/Jira/ADO?"
|
|
145
|
+
- If yes → Set up authentication
|
|
146
|
+
- If no → Skip sync setup
|
|
147
|
+
|
|
148
|
+
**Step 2: Sync Direction** (ONLY ask about enabled providers!)
|
|
149
|
+
```
|
|
150
|
+
Question: "What should be the sync behavior between local increments (.specweave/) and GitHub Issues?"
|
|
151
|
+
|
|
152
|
+
Options:
|
|
153
|
+
1. Bidirectional sync (Recommended)
|
|
154
|
+
Local increments ↔ GitHub Issues
|
|
155
|
+
- Changes sync both ways automatically (on task completion)
|
|
156
|
+
- Conflicts: You will be prompted to resolve when both sides change
|
|
157
|
+
- Scope: Active increments only (completed/abandoned not auto-synced)
|
|
158
|
+
- Example: Complete task in SpecWeave → GitHub issue updates with progress
|
|
159
|
+
|
|
160
|
+
2. Export only (Local → GitHub)
|
|
161
|
+
Local increments → GitHub Issues
|
|
162
|
+
- SpecWeave is source of truth, GitHub is read-only mirror
|
|
163
|
+
- Changes push from local to GitHub only
|
|
164
|
+
- GitHub changes are ignored (must update locally)
|
|
165
|
+
- Example: Create increment in SpecWeave → GitHub issue created automatically
|
|
166
|
+
|
|
167
|
+
3. Import only (GitHub → Local)
|
|
168
|
+
GitHub Issues → Local increments
|
|
169
|
+
- GitHub is source of truth, local workspace mirrors it
|
|
170
|
+
- Changes pull from GitHub to local only
|
|
171
|
+
- Good for: Onboarding existing GitHub projects
|
|
172
|
+
- Example: Close GitHub issue → Local increment status updates
|
|
173
|
+
|
|
174
|
+
4. Manual sync only
|
|
175
|
+
Use /specweave-github:sync command when needed
|
|
176
|
+
- No automatic sync via hooks
|
|
177
|
+
- Full control over when sync happens
|
|
178
|
+
- Good for: Testing, one-off syncs, experimental increments
|
|
179
|
+
```
|
|
180
|
+
|
|
181
|
+
**CRITICAL**: The prompt MUST say "between local increments and [External Tool]", NOT "between [Tool A] and [Tool B]"!
|
|
182
|
+
|
|
183
|
+
**Visual Aid** (include in prompt):
|
|
184
|
+
```
|
|
185
|
+
✅ CORRECT Architecture:
|
|
186
|
+
Local (.specweave/) ↔ GitHub Issues
|
|
187
|
+
|
|
188
|
+
❌ WRONG:
|
|
189
|
+
GitHub ↔ Jira
|
|
190
|
+
```
|
|
191
|
+
|
|
192
|
+
**Step 3: Auto-Create Issues**
|
|
193
|
+
```
|
|
194
|
+
Question: "Should SpecWeave auto-create GitHub issues when planning increments?"
|
|
195
|
+
|
|
196
|
+
Options:
|
|
197
|
+
1. Yes, auto-create (Recommended)
|
|
198
|
+
Every /specweave:increment creates a GitHub issue automatically
|
|
199
|
+
- Immediate team visibility
|
|
200
|
+
- Bidirectional sync works from day 1
|
|
201
|
+
- Zero manual work
|
|
202
|
+
- Links: spec.md, plan.md, tasks.md included in issue
|
|
203
|
+
|
|
204
|
+
2. No, manual creation
|
|
205
|
+
Use /specweave-github:create-issue manually when needed
|
|
206
|
+
- Create issues only for important increments
|
|
207
|
+
- More control over what goes to GitHub
|
|
208
|
+
- Good for: Experimental/internal increments
|
|
209
|
+
```
|
|
210
|
+
|
|
211
|
+
---
|
|
212
|
+
|
|
213
|
+
### Jira Sync Prompts (if enabled)
|
|
214
|
+
|
|
215
|
+
**Step 2: Sync Direction**
|
|
216
|
+
```
|
|
217
|
+
Question: "What should be the sync behavior between local increments (.specweave/) and Jira Epics?"
|
|
218
|
+
|
|
219
|
+
Options:
|
|
220
|
+
1. Bidirectional sync (Recommended)
|
|
221
|
+
Local increments ↔ Jira Epics
|
|
222
|
+
- Changes sync both ways automatically (on task completion)
|
|
223
|
+
- Conflicts: You will be prompted to resolve when both sides change
|
|
224
|
+
- Scope: Active increments only
|
|
225
|
+
- Example: Complete task in SpecWeave → Jira epic status updates
|
|
226
|
+
|
|
227
|
+
2. Export only (Local → Jira)
|
|
228
|
+
Local increments → Jira Epics
|
|
229
|
+
- SpecWeave is source of truth, Jira is read-only mirror
|
|
230
|
+
- Changes push from local to Jira only
|
|
231
|
+
- Jira changes are ignored (must update locally)
|
|
232
|
+
- Example: Create increment in SpecWeave → Jira epic created automatically
|
|
233
|
+
|
|
234
|
+
3. Import only (Jira → Local)
|
|
235
|
+
Jira Epics → Local increments
|
|
236
|
+
- Jira is source of truth, local workspace mirrors it
|
|
237
|
+
- Changes pull from Jira to local only
|
|
238
|
+
- Good for: Onboarding existing Jira projects
|
|
239
|
+
- Example: Update Jira epic → Local increment syncs
|
|
240
|
+
|
|
241
|
+
4. Manual sync only
|
|
242
|
+
Use /specweave-jira:sync command when needed
|
|
243
|
+
- No automatic sync via hooks
|
|
244
|
+
- Full control over when sync happens
|
|
245
|
+
```
|
|
246
|
+
|
|
247
|
+
---
|
|
248
|
+
|
|
249
|
+
### Azure DevOps Sync Prompts (if enabled)
|
|
250
|
+
|
|
251
|
+
**Step 2: Sync Direction**
|
|
252
|
+
```
|
|
253
|
+
Question: "What should be the sync behavior between local increments (.specweave/) and Azure DevOps work items?"
|
|
254
|
+
|
|
255
|
+
Options:
|
|
256
|
+
1. Bidirectional sync (Recommended)
|
|
257
|
+
Local increments ↔ ADO Work Items
|
|
258
|
+
- Changes sync both ways automatically (on task completion)
|
|
259
|
+
- Conflicts: You will be prompted to resolve when both sides change
|
|
260
|
+
- Scope: Active increments only
|
|
261
|
+
- Example: Complete task in SpecWeave → ADO work item updates
|
|
262
|
+
|
|
263
|
+
2. Export only (Local → ADO)
|
|
264
|
+
Local increments → ADO Work Items
|
|
265
|
+
- SpecWeave is source of truth, ADO is read-only mirror
|
|
266
|
+
- Changes push from local to ADO only
|
|
267
|
+
- ADO changes are ignored (must update locally)
|
|
268
|
+
- Example: Create increment in SpecWeave → ADO work item created automatically
|
|
269
|
+
|
|
270
|
+
3. Import only (ADO → Local)
|
|
271
|
+
ADO Work Items → Local increments
|
|
272
|
+
- ADO is source of truth, local workspace mirrors it
|
|
273
|
+
- Changes pull from ADO to local only
|
|
274
|
+
- Good for: Onboarding existing ADO projects
|
|
275
|
+
- Example: Update ADO work item → Local increment syncs
|
|
276
|
+
|
|
277
|
+
4. Manual sync only
|
|
278
|
+
Use /specweave-ado:sync command when needed
|
|
279
|
+
- No automatic sync via hooks
|
|
280
|
+
- Full control over when sync happens
|
|
281
|
+
```
|
|
282
|
+
|
|
283
|
+
### Implementation Notes
|
|
284
|
+
|
|
285
|
+
When generating the increment planning wizard:
|
|
286
|
+
1. ✅ Check `config.plugins.enabled` array
|
|
287
|
+
2. ✅ ONLY ask about enabled plugins (GitHub/Jira/ADO)
|
|
288
|
+
3. ✅ For each enabled plugin, ask: "Local ↔ [Provider]" sync direction
|
|
289
|
+
4. ❌ NEVER ask about external-to-external sync (e.g., "GitHub ↔ Jira")
|
|
290
|
+
|
|
291
|
+
---
|
|
292
|
+
|
|
110
293
|
## 📊 Living Docs Spec Detection (Step 0B - Validation)
|
|
111
294
|
|
|
112
295
|
**AFTER** validating increment discipline, you SHOULD suggest living docs specs for large features.
|
|
@@ -0,0 +1,158 @@
|
|
|
1
|
+
#!/bin/bash
|
|
2
|
+
|
|
3
|
+
###############################################################################
|
|
4
|
+
# SpecWeave Post-Spec-Update Hook
|
|
5
|
+
#
|
|
6
|
+
# CRITICAL ARCHITECTURE:
|
|
7
|
+
# - Fires when .specweave/docs/internal/specs/spec-*.md is updated
|
|
8
|
+
# - Auto-syncs to linked external tool (GitHub Project/Jira Epic/ADO Feature)
|
|
9
|
+
# - Replaces increment-based sync (which was wrong!)
|
|
10
|
+
#
|
|
11
|
+
# Trigger Points:
|
|
12
|
+
# 1. After /specweave:sync-docs update (spec updated from increment)
|
|
13
|
+
# 2. After manual spec.md edits (user updates living docs directly)
|
|
14
|
+
# 3. After bidirectional sync from external tool
|
|
15
|
+
#
|
|
16
|
+
# What It Does:
|
|
17
|
+
# - Detects which spec was updated
|
|
18
|
+
# - Checks if spec is linked to external tool (frontmatter: externalLinks)
|
|
19
|
+
# - Syncs changes to GitHub Project / Jira Epic / ADO Feature
|
|
20
|
+
# - Updates user stories, acceptance criteria, progress
|
|
21
|
+
#
|
|
22
|
+
# Usage:
|
|
23
|
+
# post-spec-update.sh <spec-file-path>
|
|
24
|
+
#
|
|
25
|
+
# Example:
|
|
26
|
+
# post-spec-update.sh .specweave/docs/internal/specs/spec-001-core-framework.md
|
|
27
|
+
#
|
|
28
|
+
###############################################################################
|
|
29
|
+
|
|
30
|
+
set -euo pipefail
|
|
31
|
+
|
|
32
|
+
# Arguments
|
|
33
|
+
SPEC_FILE_PATH="${1:-}"
|
|
34
|
+
|
|
35
|
+
# Validate arguments
|
|
36
|
+
if [[ -z "$SPEC_FILE_PATH" ]]; then
|
|
37
|
+
echo "❌ Error: Spec file path required"
|
|
38
|
+
echo "Usage: post-spec-update.sh <spec-file-path>"
|
|
39
|
+
exit 1
|
|
40
|
+
fi
|
|
41
|
+
|
|
42
|
+
# Check if spec file exists
|
|
43
|
+
if [[ ! -f "$SPEC_FILE_PATH" ]]; then
|
|
44
|
+
echo "❌ Error: Spec file not found: $SPEC_FILE_PATH"
|
|
45
|
+
exit 1
|
|
46
|
+
fi
|
|
47
|
+
|
|
48
|
+
# Extract spec ID from file path
|
|
49
|
+
# Example: .specweave/docs/internal/specs/spec-001-core-framework.md → spec-001
|
|
50
|
+
SPEC_ID=$(basename "$SPEC_FILE_PATH" .md)
|
|
51
|
+
|
|
52
|
+
echo ""
|
|
53
|
+
echo "🔗 Post-Spec-Update Hook"
|
|
54
|
+
echo " Spec: $SPEC_ID"
|
|
55
|
+
echo " File: $SPEC_FILE_PATH"
|
|
56
|
+
|
|
57
|
+
# Load config to check if auto-sync is enabled
|
|
58
|
+
CONFIG_FILE=".specweave/config.json"
|
|
59
|
+
if [[ ! -f "$CONFIG_FILE" ]]; then
|
|
60
|
+
echo " ℹ️ No config file found, skipping auto-sync"
|
|
61
|
+
exit 0
|
|
62
|
+
fi
|
|
63
|
+
|
|
64
|
+
# Check if auto-sync is enabled
|
|
65
|
+
AUTO_SYNC=$(jq -r '.hooks.post_spec_update.auto_sync // true' "$CONFIG_FILE")
|
|
66
|
+
|
|
67
|
+
if [[ "$AUTO_SYNC" != "true" ]]; then
|
|
68
|
+
echo " ℹ️ Auto-sync disabled in config, skipping"
|
|
69
|
+
exit 0
|
|
70
|
+
fi
|
|
71
|
+
|
|
72
|
+
# Parse spec frontmatter to detect external links
|
|
73
|
+
# Use gray-matter or similar to extract YAML frontmatter
|
|
74
|
+
# For now, use simple grep/sed approach
|
|
75
|
+
|
|
76
|
+
# Check if GitHub link exists
|
|
77
|
+
GITHUB_LINK=$(grep -A 10 "^externalLinks:" "$SPEC_FILE_PATH" | grep -A 5 "github:" | grep "projectId:" | sed 's/.*projectId: *//; s/ *$//' || echo "")
|
|
78
|
+
|
|
79
|
+
# Check if Jira link exists
|
|
80
|
+
JIRA_LINK=$(grep -A 10 "^externalLinks:" "$SPEC_FILE_PATH" | grep -A 5 "jira:" | grep "epicKey:" | sed 's/.*epicKey: *//; s/ *$//' || echo "")
|
|
81
|
+
|
|
82
|
+
# Check if ADO link exists
|
|
83
|
+
ADO_LINK=$(grep -A 10 "^externalLinks:" "$SPEC_FILE_PATH" | grep -A 5 "ado:" | grep "featureId:" | sed 's/.*featureId: *//; s/ *$//' || echo "")
|
|
84
|
+
|
|
85
|
+
# Determine which provider to sync
|
|
86
|
+
PROVIDER=""
|
|
87
|
+
if [[ -n "$GITHUB_LINK" ]]; then
|
|
88
|
+
PROVIDER="github"
|
|
89
|
+
EXTERNAL_ID="$GITHUB_LINK"
|
|
90
|
+
elif [[ -n "$JIRA_LINK" ]]; then
|
|
91
|
+
PROVIDER="jira"
|
|
92
|
+
EXTERNAL_ID="$JIRA_LINK"
|
|
93
|
+
elif [[ -n "$ADO_LINK" ]]; then
|
|
94
|
+
PROVIDER="ado"
|
|
95
|
+
EXTERNAL_ID="$ADO_LINK"
|
|
96
|
+
fi
|
|
97
|
+
|
|
98
|
+
# No external link found - skip sync
|
|
99
|
+
if [[ -z "$PROVIDER" ]]; then
|
|
100
|
+
echo " ℹ️ Spec not linked to external tool, skipping sync"
|
|
101
|
+
echo " Hint: Use /specweave-github:sync-spec or /specweave-jira:sync-spec to link"
|
|
102
|
+
exit 0
|
|
103
|
+
fi
|
|
104
|
+
|
|
105
|
+
echo " 🔗 Detected external link: $PROVIDER (ID: $EXTERNAL_ID)"
|
|
106
|
+
|
|
107
|
+
# Sync to external tool based on provider
|
|
108
|
+
case "$PROVIDER" in
|
|
109
|
+
github)
|
|
110
|
+
echo " 🔄 Syncing to GitHub Project..."
|
|
111
|
+
|
|
112
|
+
# Check if GitHub CLI is available
|
|
113
|
+
if ! command -v gh &> /dev/null; then
|
|
114
|
+
echo " ⚠️ GitHub CLI (gh) not found, skipping sync"
|
|
115
|
+
exit 0
|
|
116
|
+
fi
|
|
117
|
+
|
|
118
|
+
# TODO: Call GitHub spec sync
|
|
119
|
+
# For now, just log the action
|
|
120
|
+
echo " ✅ GitHub sync queued (implementation pending)"
|
|
121
|
+
;;
|
|
122
|
+
|
|
123
|
+
jira)
|
|
124
|
+
echo " 🔄 Syncing to Jira Epic..."
|
|
125
|
+
|
|
126
|
+
# Check if Jira config exists
|
|
127
|
+
if [[ -z "${JIRA_DOMAIN:-}" ]]; then
|
|
128
|
+
echo " ⚠️ Jira not configured (.env), skipping sync"
|
|
129
|
+
exit 0
|
|
130
|
+
fi
|
|
131
|
+
|
|
132
|
+
# TODO: Call Jira spec sync
|
|
133
|
+
echo " ✅ Jira sync queued (implementation pending)"
|
|
134
|
+
;;
|
|
135
|
+
|
|
136
|
+
ado)
|
|
137
|
+
echo " 🔄 Syncing to Azure DevOps Feature..."
|
|
138
|
+
|
|
139
|
+
# Check if ADO config exists
|
|
140
|
+
if [[ -z "${ADO_ORGANIZATION:-}" ]]; then
|
|
141
|
+
echo " ⚠️ ADO not configured (.env), skipping sync"
|
|
142
|
+
exit 0
|
|
143
|
+
fi
|
|
144
|
+
|
|
145
|
+
# TODO: Call ADO spec sync
|
|
146
|
+
echo " ✅ ADO sync queued (implementation pending)"
|
|
147
|
+
;;
|
|
148
|
+
|
|
149
|
+
*)
|
|
150
|
+
echo " ⚠️ Unknown provider: $PROVIDER"
|
|
151
|
+
exit 0
|
|
152
|
+
;;
|
|
153
|
+
esac
|
|
154
|
+
|
|
155
|
+
echo " ✅ Post-spec-update hook complete"
|
|
156
|
+
echo ""
|
|
157
|
+
|
|
158
|
+
exit 0
|
|
@@ -0,0 +1,179 @@
|
|
|
1
|
+
#!/bin/bash
|
|
2
|
+
|
|
3
|
+
###############################################################################
|
|
4
|
+
# SpecWeave Post-User-Story-Complete Hook
|
|
5
|
+
#
|
|
6
|
+
# CRITICAL ARCHITECTURE:
|
|
7
|
+
# - Fires when user story marked complete in spec.md (AC checkbox checked)
|
|
8
|
+
# - Updates external PM tool (GitHub Issue/Jira Story/ADO User Story)
|
|
9
|
+
# - Moves GitHub card to "Done" / Closes Jira story / Completes ADO story
|
|
10
|
+
#
|
|
11
|
+
# Trigger Points:
|
|
12
|
+
# 1. After user manually checks AC checkbox in spec.md
|
|
13
|
+
# 2. After bidirectional sync updates AC status
|
|
14
|
+
# 3. After increment completion syncs to spec
|
|
15
|
+
#
|
|
16
|
+
# What It Does:
|
|
17
|
+
# - Detects which user story was completed (all AC checkboxes checked)
|
|
18
|
+
# - Finds corresponding external item (GitHub Issue/Jira Story/ADO User Story)
|
|
19
|
+
# - Updates item status to "Done" / "Closed"
|
|
20
|
+
# - Adds completion comment with timestamp
|
|
21
|
+
#
|
|
22
|
+
# Usage:
|
|
23
|
+
# post-user-story-complete.sh <spec-id> <user-story-id>
|
|
24
|
+
#
|
|
25
|
+
# Example:
|
|
26
|
+
# post-user-story-complete.sh spec-001 US-001
|
|
27
|
+
#
|
|
28
|
+
###############################################################################
|
|
29
|
+
|
|
30
|
+
set -euo pipefail
|
|
31
|
+
|
|
32
|
+
# Arguments
|
|
33
|
+
SPEC_ID="${1:-}"
|
|
34
|
+
USER_STORY_ID="${2:-}"
|
|
35
|
+
|
|
36
|
+
# Validate arguments
|
|
37
|
+
if [[ -z "$SPEC_ID" || -z "$USER_STORY_ID" ]]; then
|
|
38
|
+
echo "❌ Error: Spec ID and User Story ID required"
|
|
39
|
+
echo "Usage: post-user-story-complete.sh <spec-id> <user-story-id>"
|
|
40
|
+
exit 1
|
|
41
|
+
fi
|
|
42
|
+
|
|
43
|
+
echo ""
|
|
44
|
+
echo "🎉 Post-User-Story-Complete Hook"
|
|
45
|
+
echo " Spec: $SPEC_ID"
|
|
46
|
+
echo " User Story: $USER_STORY_ID"
|
|
47
|
+
|
|
48
|
+
# Find spec file
|
|
49
|
+
SPEC_FILE=""
|
|
50
|
+
if [[ -f ".specweave/docs/internal/specs/$SPEC_ID.md" ]]; then
|
|
51
|
+
SPEC_FILE=".specweave/docs/internal/specs/$SPEC_ID.md"
|
|
52
|
+
elif [[ -f ".specweave/docs/internal/projects/default/specs/$SPEC_ID.md" ]]; then
|
|
53
|
+
SPEC_FILE=".specweave/docs/internal/projects/default/specs/$SPEC_ID.md"
|
|
54
|
+
else
|
|
55
|
+
echo "❌ Error: Spec file not found for $SPEC_ID"
|
|
56
|
+
exit 1
|
|
57
|
+
fi
|
|
58
|
+
|
|
59
|
+
# Load config to check if auto-sync is enabled
|
|
60
|
+
CONFIG_FILE=".specweave/config.json"
|
|
61
|
+
if [[ ! -f "$CONFIG_FILE" ]]; then
|
|
62
|
+
echo " ℹ️ No config file found, skipping auto-sync"
|
|
63
|
+
exit 0
|
|
64
|
+
fi
|
|
65
|
+
|
|
66
|
+
# Check if auto-sync is enabled
|
|
67
|
+
AUTO_SYNC=$(jq -r '.hooks.post_user_story_complete.auto_sync // true' "$CONFIG_FILE")
|
|
68
|
+
|
|
69
|
+
if [[ "$AUTO_SYNC" != "true" ]]; then
|
|
70
|
+
echo " ℹ️ Auto-sync disabled in config, skipping"
|
|
71
|
+
exit 0
|
|
72
|
+
fi
|
|
73
|
+
|
|
74
|
+
# Parse spec frontmatter to detect external links
|
|
75
|
+
# Check if GitHub link exists
|
|
76
|
+
GITHUB_LINK=$(grep -A 10 "^externalLinks:" "$SPEC_FILE" | grep -A 5 "github:" | grep "projectId:" | sed 's/.*projectId: *//; s/ *$//' || echo "")
|
|
77
|
+
|
|
78
|
+
# Check if Jira link exists
|
|
79
|
+
JIRA_LINK=$(grep -A 10 "^externalLinks:" "$SPEC_FILE" | grep -A 5 "jira:" | grep "epicKey:" | sed 's/.*epicKey: *//; s/ *$//' || echo "")
|
|
80
|
+
|
|
81
|
+
# Check if ADO link exists
|
|
82
|
+
ADO_LINK=$(grep -A 10 "^externalLinks:" "$SPEC_FILE" | grep -A 5 "ado:" | grep "featureId:" | sed 's/.*featureId: *//; s/ *$//' || echo "")
|
|
83
|
+
|
|
84
|
+
# Determine which provider to sync
|
|
85
|
+
PROVIDER=""
|
|
86
|
+
if [[ -n "$GITHUB_LINK" ]]; then
|
|
87
|
+
PROVIDER="github"
|
|
88
|
+
EXTERNAL_ID="$GITHUB_LINK"
|
|
89
|
+
elif [[ -n "$JIRA_LINK" ]]; then
|
|
90
|
+
PROVIDER="jira"
|
|
91
|
+
EXTERNAL_ID="$JIRA_LINK"
|
|
92
|
+
elif [[ -n "$ADO_LINK" ]]; then
|
|
93
|
+
PROVIDER="ado"
|
|
94
|
+
EXTERNAL_ID="$ADO_LINK"
|
|
95
|
+
fi
|
|
96
|
+
|
|
97
|
+
# No external link found - skip sync
|
|
98
|
+
if [[ -z "$PROVIDER" ]]; then
|
|
99
|
+
echo " ℹ️ Spec not linked to external tool, skipping sync"
|
|
100
|
+
exit 0
|
|
101
|
+
fi
|
|
102
|
+
|
|
103
|
+
echo " 🔗 Detected external link: $PROVIDER"
|
|
104
|
+
|
|
105
|
+
# Update external tool based on provider
|
|
106
|
+
case "$PROVIDER" in
|
|
107
|
+
github)
|
|
108
|
+
echo " 🔄 Updating GitHub Issue for $USER_STORY_ID..."
|
|
109
|
+
|
|
110
|
+
# Check if GitHub CLI is available
|
|
111
|
+
if ! command -v gh &> /dev/null; then
|
|
112
|
+
echo " ⚠️ GitHub CLI (gh) not found, skipping sync"
|
|
113
|
+
exit 0
|
|
114
|
+
fi
|
|
115
|
+
|
|
116
|
+
# Find GitHub Issue for this user story
|
|
117
|
+
# Search for issue with title pattern "[USER_STORY_ID]"
|
|
118
|
+
REPO=$(git remote get-url origin | sed -E 's/.*github\.com[:/]([^/]+\/[^/]+)(\.git)?$/\1/')
|
|
119
|
+
|
|
120
|
+
# Search for issue
|
|
121
|
+
ISSUE_NUMBER=$(gh issue list --repo "$REPO" --search "\"[$USER_STORY_ID]\" in:title" --json number --jq '.[0].number' 2>/dev/null || echo "")
|
|
122
|
+
|
|
123
|
+
if [[ -z "$ISSUE_NUMBER" ]]; then
|
|
124
|
+
echo " ⚠️ GitHub Issue not found for $USER_STORY_ID"
|
|
125
|
+
exit 0
|
|
126
|
+
fi
|
|
127
|
+
|
|
128
|
+
echo " 📝 Found GitHub Issue #$ISSUE_NUMBER"
|
|
129
|
+
|
|
130
|
+
# Close issue
|
|
131
|
+
gh issue close "$ISSUE_NUMBER" --repo "$REPO" --comment "✅ User story completed
|
|
132
|
+
|
|
133
|
+
🤖 Auto-closed by SpecWeave hook
|
|
134
|
+
Completed at: $(date -u +%Y-%m-%dT%H:%M:%SZ)" 2>/dev/null || {
|
|
135
|
+
echo " ⚠️ Failed to close issue"
|
|
136
|
+
exit 0
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
echo " ✅ GitHub Issue #$ISSUE_NUMBER closed"
|
|
140
|
+
;;
|
|
141
|
+
|
|
142
|
+
jira)
|
|
143
|
+
echo " 🔄 Updating Jira Story for $USER_STORY_ID..."
|
|
144
|
+
|
|
145
|
+
# Check if Jira config exists
|
|
146
|
+
if [[ -z "${JIRA_DOMAIN:-}" ]]; then
|
|
147
|
+
echo " ⚠️ Jira not configured (.env), skipping sync"
|
|
148
|
+
exit 0
|
|
149
|
+
fi
|
|
150
|
+
|
|
151
|
+
# TODO: Find Jira Story by title pattern
|
|
152
|
+
# TODO: Transition story to "Done" status
|
|
153
|
+
echo " ✅ Jira story transition queued (implementation pending)"
|
|
154
|
+
;;
|
|
155
|
+
|
|
156
|
+
ado)
|
|
157
|
+
echo " 🔄 Updating ADO User Story for $USER_STORY_ID..."
|
|
158
|
+
|
|
159
|
+
# Check if ADO config exists
|
|
160
|
+
if [[ -z "${ADO_ORGANIZATION:-}" ]]; then
|
|
161
|
+
echo " ⚠️ ADO not configured (.env), skipping sync"
|
|
162
|
+
exit 0
|
|
163
|
+
fi
|
|
164
|
+
|
|
165
|
+
# TODO: Find ADO User Story by title pattern
|
|
166
|
+
# TODO: Update state to "Closed"
|
|
167
|
+
echo " ✅ ADO user story update queued (implementation pending)"
|
|
168
|
+
;;
|
|
169
|
+
|
|
170
|
+
*)
|
|
171
|
+
echo " ⚠️ Unknown provider: $PROVIDER"
|
|
172
|
+
exit 0
|
|
173
|
+
;;
|
|
174
|
+
esac
|
|
175
|
+
|
|
176
|
+
echo " ✅ Post-user-story-complete hook complete"
|
|
177
|
+
echo ""
|
|
178
|
+
|
|
179
|
+
exit 0
|
|
@@ -80,6 +80,23 @@ Do NOT activate if:
|
|
|
80
80
|
- ❌ User is already in an active increment planning workflow
|
|
81
81
|
- ❌ Increment files (spec.md, plan.md, tasks.md) are currently being created
|
|
82
82
|
|
|
83
|
+
## 🔗 External Sync Architecture (CRITICAL)
|
|
84
|
+
|
|
85
|
+
**Source of Truth**: `.specweave/docs/specs/` (LOCAL) is the permanent source of truth. External tools (GitHub, Jira, ADO) are **MIRRORS**.
|
|
86
|
+
|
|
87
|
+
**Correct sync direction**:
|
|
88
|
+
```
|
|
89
|
+
✅ CORRECT:
|
|
90
|
+
.specweave/ ↔ GitHub Issues (Local ↔ External)
|
|
91
|
+
.specweave/ ↔ Jira Epics (Local ↔ External)
|
|
92
|
+
.specweave/ ↔ ADO Work Items (Local ↔ External)
|
|
93
|
+
|
|
94
|
+
❌ WRONG:
|
|
95
|
+
GitHub ↔ Jira (External ↔ External - NO!)
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
**When invoking PM agent**: Ensure it understands sync is **Local ↔ External**, not External ↔ External!
|
|
99
|
+
|
|
83
100
|
## Activation Triggers
|
|
84
101
|
|
|
85
102
|
This skill activates automatically when users say:
|