specweave 0.33.5 → 0.34.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (683) hide show
  1. package/.claude-plugin/README.md +13 -13
  2. package/.claude-plugin/marketplace.json +26 -37
  3. package/CLAUDE.md +427 -70
  4. package/README.md +34 -31
  5. package/bin/fix-marketplace-errors.sh +1 -1
  6. package/bin/install-commands.sh +2 -2
  7. package/bin/specweave.js +58 -1
  8. package/dist/plugins/specweave-github/lib/ThreeLayerSyncManager.d.ts +5 -0
  9. package/dist/plugins/specweave-github/lib/ThreeLayerSyncManager.d.ts.map +1 -1
  10. package/dist/plugins/specweave-github/lib/ThreeLayerSyncManager.js +14 -4
  11. package/dist/plugins/specweave-github/lib/ThreeLayerSyncManager.js.map +1 -1
  12. package/dist/plugins/specweave-github/lib/completion-calculator.d.ts +1 -0
  13. package/dist/plugins/specweave-github/lib/completion-calculator.d.ts.map +1 -1
  14. package/dist/plugins/specweave-github/lib/completion-calculator.js +2 -0
  15. package/dist/plugins/specweave-github/lib/completion-calculator.js.map +1 -1
  16. package/dist/plugins/specweave-github/lib/duplicate-detector.d.ts.map +1 -1
  17. package/dist/plugins/specweave-github/lib/duplicate-detector.js +20 -6
  18. package/dist/plugins/specweave-github/lib/duplicate-detector.js.map +1 -1
  19. package/dist/plugins/specweave-github/lib/github-client-v2.d.ts +9 -0
  20. package/dist/plugins/specweave-github/lib/github-client-v2.d.ts.map +1 -1
  21. package/dist/plugins/specweave-github/lib/github-client-v2.js +31 -18
  22. package/dist/plugins/specweave-github/lib/github-client-v2.js.map +1 -1
  23. package/dist/plugins/specweave-github/lib/github-feature-sync.d.ts +7 -0
  24. package/dist/plugins/specweave-github/lib/github-feature-sync.d.ts.map +1 -1
  25. package/dist/plugins/specweave-github/lib/github-feature-sync.js +47 -11
  26. package/dist/plugins/specweave-github/lib/github-feature-sync.js.map +1 -1
  27. package/dist/plugins/specweave-github/lib/github-increment-sync-cli.js +39 -13
  28. package/dist/plugins/specweave-github/lib/github-increment-sync-cli.js.map +1 -1
  29. package/dist/plugins/specweave-github/lib/github-issue-updater.d.ts.map +1 -1
  30. package/dist/plugins/specweave-github/lib/github-issue-updater.js +15 -3
  31. package/dist/plugins/specweave-github/lib/github-issue-updater.js.map +1 -1
  32. package/dist/plugins/specweave-github/lib/github-spec-sync.d.ts +7 -0
  33. package/dist/plugins/specweave-github/lib/github-spec-sync.d.ts.map +1 -1
  34. package/dist/plugins/specweave-github/lib/github-spec-sync.js +17 -4
  35. package/dist/plugins/specweave-github/lib/github-spec-sync.js.map +1 -1
  36. package/dist/plugins/specweave-github/lib/github-sync-bidirectional.d.ts.map +1 -1
  37. package/dist/plugins/specweave-github/lib/github-sync-bidirectional.js +13 -3
  38. package/dist/plugins/specweave-github/lib/github-sync-bidirectional.js.map +1 -1
  39. package/dist/plugins/specweave-github/lib/github-sync-increment-changes.d.ts.map +1 -1
  40. package/dist/plugins/specweave-github/lib/github-sync-increment-changes.js +14 -4
  41. package/dist/plugins/specweave-github/lib/github-sync-increment-changes.js.map +1 -1
  42. package/dist/plugins/specweave-github/lib/increment-issue-builder.d.ts.map +1 -1
  43. package/dist/plugins/specweave-github/lib/increment-issue-builder.js +24 -8
  44. package/dist/plugins/specweave-github/lib/increment-issue-builder.js.map +1 -1
  45. package/dist/plugins/specweave-github/lib/user-story-content-builder.d.ts.map +1 -1
  46. package/dist/plugins/specweave-github/lib/user-story-content-builder.js +21 -18
  47. package/dist/plugins/specweave-github/lib/user-story-content-builder.js.map +1 -1
  48. package/dist/plugins/specweave-github/lib/user-story-issue-builder.d.ts +3 -0
  49. package/dist/plugins/specweave-github/lib/user-story-issue-builder.d.ts.map +1 -1
  50. package/dist/plugins/specweave-github/lib/user-story-issue-builder.js +20 -19
  51. package/dist/plugins/specweave-github/lib/user-story-issue-builder.js.map +1 -1
  52. package/dist/src/cli/cleanup-zombies.js +34 -18
  53. package/dist/src/cli/cleanup-zombies.js.map +1 -1
  54. package/dist/src/cli/commands/discrepancies.js +6 -6
  55. package/dist/src/cli/commands/discrepancies.js.map +1 -1
  56. package/dist/src/cli/commands/docs.js +1 -1
  57. package/dist/src/cli/commands/docs.js.map +1 -1
  58. package/dist/src/cli/commands/import-docs.d.ts +1 -1
  59. package/dist/src/cli/commands/import-docs.js +2 -2
  60. package/dist/src/cli/commands/import-docs.js.map +1 -1
  61. package/dist/src/cli/commands/import-external.d.ts +1 -1
  62. package/dist/src/cli/commands/import-external.js +1 -1
  63. package/dist/src/cli/commands/init-multiproject.d.ts +1 -1
  64. package/dist/src/cli/commands/init-multiproject.js +3 -3
  65. package/dist/src/cli/commands/init-multiproject.js.map +1 -1
  66. package/dist/src/cli/commands/init.js +2 -2
  67. package/dist/src/cli/commands/init.js.map +1 -1
  68. package/dist/src/cli/commands/living-docs.d.ts +1 -0
  69. package/dist/src/cli/commands/living-docs.d.ts.map +1 -1
  70. package/dist/src/cli/commands/living-docs.js +18 -2
  71. package/dist/src/cli/commands/living-docs.js.map +1 -1
  72. package/dist/src/cli/commands/migrate-to-multiproject.js +1 -1
  73. package/dist/src/cli/commands/migrate-to-multiproject.js.map +1 -1
  74. package/dist/src/cli/commands/migrate-to-profiles.js +1 -1
  75. package/dist/src/cli/commands/migrate-to-profiles.js.map +1 -1
  76. package/dist/src/cli/commands/next-command.d.ts +1 -1
  77. package/dist/src/cli/commands/next-command.js +9 -9
  78. package/dist/src/cli/commands/next-command.js.map +1 -1
  79. package/dist/src/cli/commands/notifications.js +3 -3
  80. package/dist/src/cli/commands/notifications.js.map +1 -1
  81. package/dist/src/cli/commands/plan/increment-detector.js +2 -2
  82. package/dist/src/cli/commands/plan/increment-detector.js.map +1 -1
  83. package/dist/src/cli/commands/plan/plan-orchestrator.d.ts +2 -2
  84. package/dist/src/cli/commands/plan/plan-orchestrator.js +2 -2
  85. package/dist/src/cli/commands/plan/plan-validator.js +2 -2
  86. package/dist/src/cli/commands/plan/plan-validator.js.map +1 -1
  87. package/dist/src/cli/commands/plan/types.d.ts +1 -1
  88. package/dist/src/cli/commands/plan/types.js +1 -1
  89. package/dist/src/cli/commands/plan-command.d.ts +3 -3
  90. package/dist/src/cli/commands/plan-command.js +12 -12
  91. package/dist/src/cli/commands/plan-command.js.map +1 -1
  92. package/dist/src/cli/commands/project.d.ts +77 -0
  93. package/dist/src/cli/commands/project.d.ts.map +1 -0
  94. package/dist/src/cli/commands/project.js +526 -0
  95. package/dist/src/cli/commands/project.js.map +1 -0
  96. package/dist/src/cli/commands/save.d.ts +49 -0
  97. package/dist/src/cli/commands/save.d.ts.map +1 -0
  98. package/dist/src/cli/commands/save.js +583 -0
  99. package/dist/src/cli/commands/save.js.map +1 -0
  100. package/dist/src/cli/commands/sync-spec-commits.js +15 -6
  101. package/dist/src/cli/commands/sync-spec-commits.js.map +1 -1
  102. package/dist/src/cli/commands/sync-spec-content.js +15 -6
  103. package/dist/src/cli/commands/sync-spec-content.js.map +1 -1
  104. package/dist/src/cli/helpers/init/ado-repo-cloning.js +2 -2
  105. package/dist/src/cli/helpers/init/ado-repo-cloning.js.map +1 -1
  106. package/dist/src/cli/helpers/init/bitbucket-repo-cloning.d.ts +1 -1
  107. package/dist/src/cli/helpers/init/bitbucket-repo-cloning.js +3 -3
  108. package/dist/src/cli/helpers/init/bitbucket-repo-cloning.js.map +1 -1
  109. package/dist/src/cli/helpers/init/brownfield-analysis.js +18 -18
  110. package/dist/src/cli/helpers/init/brownfield-analysis.js.map +1 -1
  111. package/dist/src/cli/helpers/init/directory-structure.d.ts.map +1 -1
  112. package/dist/src/cli/helpers/init/directory-structure.js +3 -0
  113. package/dist/src/cli/helpers/init/directory-structure.js.map +1 -1
  114. package/dist/src/cli/helpers/init/external-import.js +18 -18
  115. package/dist/src/cli/helpers/init/external-import.js.map +1 -1
  116. package/dist/src/cli/helpers/init/github-repo-cloning.d.ts +1 -1
  117. package/dist/src/cli/helpers/init/github-repo-cloning.js +3 -3
  118. package/dist/src/cli/helpers/init/github-repo-cloning.js.map +1 -1
  119. package/dist/src/cli/helpers/init/initial-increment-generator.js +12 -12
  120. package/dist/src/cli/helpers/init/living-docs-preflight.js +5 -5
  121. package/dist/src/cli/helpers/init/living-docs-preflight.js.map +1 -1
  122. package/dist/src/cli/helpers/init/next-steps.js +9 -9
  123. package/dist/src/cli/helpers/init/next-steps.js.map +1 -1
  124. package/dist/src/cli/helpers/init/plugin-installer.js +3 -3
  125. package/dist/src/cli/helpers/init/plugin-installer.js.map +1 -1
  126. package/dist/src/cli/helpers/init/translation-config.js +9 -9
  127. package/dist/src/cli/helpers/init/translation-config.js.map +1 -1
  128. package/dist/src/cli/helpers/init/types.d.ts +1 -1
  129. package/dist/src/cli/helpers/init/types.d.ts.map +1 -1
  130. package/dist/src/cli/helpers/issue-tracker/ado.js +1 -1
  131. package/dist/src/cli/helpers/issue-tracker/ado.js.map +1 -1
  132. package/dist/src/cli/helpers/issue-tracker/github.js +1 -1
  133. package/dist/src/cli/helpers/issue-tracker/github.js.map +1 -1
  134. package/dist/src/cli/helpers/issue-tracker/index.js +2 -2
  135. package/dist/src/cli/helpers/issue-tracker/index.js.map +1 -1
  136. package/dist/src/cli/helpers/issue-tracker/jira.js +1 -1
  137. package/dist/src/cli/helpers/issue-tracker/jira.js.map +1 -1
  138. package/dist/src/cli/update-status-line.js +1 -1
  139. package/dist/src/cli/update-status-line.js.map +1 -1
  140. package/dist/src/cli/workers/brownfield-worker.js +1 -1
  141. package/dist/src/cli/workers/brownfield-worker.js.map +1 -1
  142. package/dist/src/cli/workers/import-worker.js +1 -1
  143. package/dist/src/cli/workers/import-worker.js.map +1 -1
  144. package/dist/src/core/background/brownfield-launcher.js +4 -4
  145. package/dist/src/core/background/brownfield-launcher.js.map +1 -1
  146. package/dist/src/core/background/index.d.ts +3 -3
  147. package/dist/src/core/background/index.js +3 -3
  148. package/dist/src/core/background/job-launcher.d.ts +1 -1
  149. package/dist/src/core/background/job-launcher.js +3 -3
  150. package/dist/src/core/background/job-launcher.js.map +1 -1
  151. package/dist/src/core/brownfield/importer.js +1 -1
  152. package/dist/src/core/brownfield/importer.js.map +1 -1
  153. package/dist/src/core/config/config-manager.d.ts +7 -1
  154. package/dist/src/core/config/config-manager.d.ts.map +1 -1
  155. package/dist/src/core/config/config-manager.js +24 -2
  156. package/dist/src/core/config/config-manager.js.map +1 -1
  157. package/dist/src/core/config/single-project-migrator.d.ts +110 -0
  158. package/dist/src/core/config/single-project-migrator.d.ts.map +1 -0
  159. package/dist/src/core/config/single-project-migrator.js +179 -0
  160. package/dist/src/core/config/single-project-migrator.js.map +1 -0
  161. package/dist/src/core/config/types.d.ts +3 -3
  162. package/dist/src/core/credentials/credentials-manager.d.ts +25 -4
  163. package/dist/src/core/credentials/credentials-manager.d.ts.map +1 -1
  164. package/dist/src/core/credentials/credentials-manager.js +54 -15
  165. package/dist/src/core/credentials/credentials-manager.js.map +1 -1
  166. package/dist/src/core/deduplication/command-deduplicator.d.ts +4 -4
  167. package/dist/src/core/deduplication/command-deduplicator.d.ts.map +1 -1
  168. package/dist/src/core/deduplication/command-deduplicator.js +3 -3
  169. package/dist/src/core/external-tools/external-items-counter.d.ts +4 -4
  170. package/dist/src/core/external-tools/external-items-counter.js +4 -4
  171. package/dist/src/core/external-tools/external-items-display.js +4 -4
  172. package/dist/src/core/external-tools/external-items-display.js.map +1 -1
  173. package/dist/src/core/increment/completion-validator.js +3 -3
  174. package/dist/src/core/increment/completion-validator.js.map +1 -1
  175. package/dist/src/core/increment/conflict-resolver.js +2 -2
  176. package/dist/src/core/increment/conflict-resolver.js.map +1 -1
  177. package/dist/src/core/increment/desync-detector.d.ts +1 -1
  178. package/dist/src/core/increment/desync-detector.js +3 -3
  179. package/dist/src/core/increment/desync-detector.js.map +1 -1
  180. package/dist/src/core/increment/discipline-checker.js +2 -2
  181. package/dist/src/core/increment/discipline-checker.js.map +1 -1
  182. package/dist/src/core/increment/increment-archiver.js +4 -4
  183. package/dist/src/core/increment/increment-archiver.js.map +1 -1
  184. package/dist/src/core/increment/increment-utils.d.ts +53 -2
  185. package/dist/src/core/increment/increment-utils.d.ts.map +1 -1
  186. package/dist/src/core/increment/increment-utils.js +78 -7
  187. package/dist/src/core/increment/increment-utils.js.map +1 -1
  188. package/dist/src/core/increment/metadata-manager.js +6 -6
  189. package/dist/src/core/increment/metadata-manager.js.map +1 -1
  190. package/dist/src/core/increment/metadata-validator.js +1 -1
  191. package/dist/src/core/increment/metadata-validator.js.map +1 -1
  192. package/dist/src/core/increment/recent-work-scanner.js +2 -2
  193. package/dist/src/core/increment/recent-work-scanner.js.map +1 -1
  194. package/dist/src/core/increment/spec-sync-manager.js +1 -1
  195. package/dist/src/core/increment/spec-sync-manager.js.map +1 -1
  196. package/dist/src/core/increment/status-auto-transition.d.ts +68 -1
  197. package/dist/src/core/increment/status-auto-transition.d.ts.map +1 -1
  198. package/dist/src/core/increment/status-auto-transition.js +141 -1
  199. package/dist/src/core/increment/status-auto-transition.js.map +1 -1
  200. package/dist/src/core/increment/status-change-sync-trigger.d.ts +1 -1
  201. package/dist/src/core/increment/status-change-sync-trigger.js +3 -3
  202. package/dist/src/core/increment/status-change-sync-trigger.js.map +1 -1
  203. package/dist/src/core/living-docs/cross-project-sync.d.ts +12 -0
  204. package/dist/src/core/living-docs/cross-project-sync.d.ts.map +1 -1
  205. package/dist/src/core/living-docs/cross-project-sync.js +33 -0
  206. package/dist/src/core/living-docs/cross-project-sync.js.map +1 -1
  207. package/dist/src/core/living-docs/feature-archiver.d.ts +3 -3
  208. package/dist/src/core/living-docs/feature-archiver.js +3 -3
  209. package/dist/src/core/living-docs/feature-consistency-validator.js +1 -1
  210. package/dist/src/core/living-docs/feature-consistency-validator.js.map +1 -1
  211. package/dist/src/core/living-docs/feature-id-manager.d.ts +5 -0
  212. package/dist/src/core/living-docs/feature-id-manager.d.ts.map +1 -1
  213. package/dist/src/core/living-docs/feature-id-manager.js +19 -1
  214. package/dist/src/core/living-docs/feature-id-manager.js.map +1 -1
  215. package/dist/src/core/living-docs/governance/standards-generator.js +1 -1
  216. package/dist/src/core/living-docs/governance/standards-generator.js.map +1 -1
  217. package/dist/src/core/living-docs/hierarchy-mapper.d.ts +5 -0
  218. package/dist/src/core/living-docs/hierarchy-mapper.d.ts.map +1 -1
  219. package/dist/src/core/living-docs/hierarchy-mapper.js +22 -2
  220. package/dist/src/core/living-docs/hierarchy-mapper.js.map +1 -1
  221. package/dist/src/core/living-docs/living-docs-sync.d.ts +1 -0
  222. package/dist/src/core/living-docs/living-docs-sync.d.ts.map +1 -1
  223. package/dist/src/core/living-docs/living-docs-sync.js +77 -8
  224. package/dist/src/core/living-docs/living-docs-sync.js.map +1 -1
  225. package/dist/src/core/living-docs/project-detector.d.ts +9 -0
  226. package/dist/src/core/living-docs/project-detector.d.ts.map +1 -1
  227. package/dist/src/core/living-docs/project-detector.js +38 -3
  228. package/dist/src/core/living-docs/project-detector.js.map +1 -1
  229. package/dist/src/core/living-docs/suggestions-generator.js +1 -1
  230. package/dist/src/core/living-docs/suggestions-generator.js.map +1 -1
  231. package/dist/src/core/notifications/command-integration.js +1 -1
  232. package/dist/src/core/notifications/command-integration.js.map +1 -1
  233. package/dist/src/core/project/adapters/ado-project-adapter.d.ts +73 -0
  234. package/dist/src/core/project/adapters/ado-project-adapter.d.ts.map +1 -0
  235. package/dist/src/core/project/adapters/ado-project-adapter.js +304 -0
  236. package/dist/src/core/project/adapters/ado-project-adapter.js.map +1 -0
  237. package/dist/src/core/project/adapters/github-project-adapter.d.ts +76 -0
  238. package/dist/src/core/project/adapters/github-project-adapter.d.ts.map +1 -0
  239. package/dist/src/core/project/adapters/github-project-adapter.js +315 -0
  240. package/dist/src/core/project/adapters/github-project-adapter.js.map +1 -0
  241. package/dist/src/core/project/adapters/jira-project-adapter.d.ts +69 -0
  242. package/dist/src/core/project/adapters/jira-project-adapter.d.ts.map +1 -0
  243. package/dist/src/core/project/adapters/jira-project-adapter.js +241 -0
  244. package/dist/src/core/project/adapters/jira-project-adapter.js.map +1 -0
  245. package/dist/src/core/project/project-event-bus.d.ts +72 -0
  246. package/dist/src/core/project/project-event-bus.d.ts.map +1 -0
  247. package/dist/src/core/project/project-event-bus.js +150 -0
  248. package/dist/src/core/project/project-event-bus.js.map +1 -0
  249. package/dist/src/core/project/project-manager.d.ts +0 -22
  250. package/dist/src/core/project/project-manager.d.ts.map +1 -1
  251. package/dist/src/core/project/project-manager.js +5 -275
  252. package/dist/src/core/project/project-manager.js.map +1 -1
  253. package/dist/src/core/project/project-registry.d.ts +93 -0
  254. package/dist/src/core/project/project-registry.d.ts.map +1 -0
  255. package/dist/src/core/project/project-registry.js +448 -0
  256. package/dist/src/core/project/project-registry.js.map +1 -0
  257. package/dist/src/core/project/project-resolution.d.ts +229 -0
  258. package/dist/src/core/project/project-resolution.d.ts.map +1 -0
  259. package/dist/src/core/project/project-resolution.js +633 -0
  260. package/dist/src/core/project/project-resolution.js.map +1 -0
  261. package/dist/src/core/project/types/project-types.d.ts +214 -0
  262. package/dist/src/core/project/types/project-types.d.ts.map +1 -0
  263. package/dist/src/core/project/types/project-types.js +9 -0
  264. package/dist/src/core/project/types/project-types.js.map +1 -0
  265. package/dist/src/core/repo-structure/setup-summary.js +2 -2
  266. package/dist/src/core/repo-structure/setup-summary.js.map +1 -1
  267. package/dist/src/core/specs/spec-identifier-detector.d.ts.map +1 -1
  268. package/dist/src/core/specs/spec-identifier-detector.js +8 -5
  269. package/dist/src/core/specs/spec-identifier-detector.js.map +1 -1
  270. package/dist/src/core/status-line/status-line-updater.js +1 -1
  271. package/dist/src/core/status-line/status-line-updater.js.map +1 -1
  272. package/dist/src/core/types/increment-metadata.d.ts +3 -3
  273. package/dist/src/core/types/increment-metadata.js +3 -3
  274. package/dist/src/core/types/increment-metadata.js.map +1 -1
  275. package/dist/src/core/types/sync-profile.d.ts +1 -0
  276. package/dist/src/core/types/sync-profile.d.ts.map +1 -1
  277. package/dist/src/core/types/sync-profile.js.map +1 -1
  278. package/dist/src/core/validators/ac-presence-validator.d.ts +4 -4
  279. package/dist/src/core/validators/ac-presence-validator.js +3 -3
  280. package/dist/src/core/validators/ac-presence-validator.js.map +1 -1
  281. package/dist/src/core/workflow/backlog-scanner.d.ts +5 -0
  282. package/dist/src/core/workflow/backlog-scanner.d.ts.map +1 -1
  283. package/dist/src/core/workflow/backlog-scanner.js +14 -2
  284. package/dist/src/core/workflow/backlog-scanner.js.map +1 -1
  285. package/dist/src/core/workflow/phase-detector.js +17 -17
  286. package/dist/src/core/workflow/phase-detector.js.map +1 -1
  287. package/dist/src/core/workflow/types.d.ts +1 -1
  288. package/dist/src/core/workflow/types.d.ts.map +1 -1
  289. package/dist/src/core/workflow/workflow-orchestrator.d.ts +1 -1
  290. package/dist/src/core/workflow/workflow-orchestrator.js +9 -9
  291. package/dist/src/core/workflow/workflow-orchestrator.js.map +1 -1
  292. package/dist/src/hooks/scheduler-startup.js +1 -1
  293. package/dist/src/hooks/scheduler-startup.js.map +1 -1
  294. package/dist/src/importers/item-converter.js +1 -1
  295. package/dist/src/importers/item-converter.js.map +1 -1
  296. package/dist/src/integrations/jira/jira-incremental-mapper.d.ts +17 -1
  297. package/dist/src/integrations/jira/jira-incremental-mapper.d.ts.map +1 -1
  298. package/dist/src/integrations/jira/jira-incremental-mapper.js +20 -12
  299. package/dist/src/integrations/jira/jira-incremental-mapper.js.map +1 -1
  300. package/dist/src/integrations/jira/jira-mapper.d.ts +17 -1
  301. package/dist/src/integrations/jira/jira-mapper.d.ts.map +1 -1
  302. package/dist/src/integrations/jira/jira-mapper.js +13 -5
  303. package/dist/src/integrations/jira/jira-mapper.js.map +1 -1
  304. package/dist/src/living-docs/enterprise-analyzer.js +1 -1
  305. package/dist/src/living-docs/enterprise-analyzer.js.map +1 -1
  306. package/dist/src/sync/ado-reconciler.d.ts +5 -0
  307. package/dist/src/sync/ado-reconciler.d.ts.map +1 -1
  308. package/dist/src/sync/ado-reconciler.js +16 -4
  309. package/dist/src/sync/ado-reconciler.js.map +1 -1
  310. package/dist/src/sync/jira-reconciler.d.ts +3 -0
  311. package/dist/src/sync/jira-reconciler.d.ts.map +1 -1
  312. package/dist/src/sync/jira-reconciler.js +12 -5
  313. package/dist/src/sync/jira-reconciler.js.map +1 -1
  314. package/dist/src/types/dashboard-cache.d.ts +4 -2
  315. package/dist/src/types/dashboard-cache.d.ts.map +1 -1
  316. package/dist/src/types/dashboard-cache.js +1 -1
  317. package/dist/src/types/dashboard-cache.js.map +1 -1
  318. package/dist/src/utils/ac-embedder.d.ts +1 -1
  319. package/dist/src/utils/docs-preview/docusaurus-setup.js +2 -2
  320. package/dist/src/utils/docs-preview/docusaurus-setup.js.map +1 -1
  321. package/dist/src/utils/docs-preview/sidebar-builder.js +1 -1
  322. package/dist/src/utils/env-multi-project-parser.d.ts +17 -0
  323. package/dist/src/utils/env-multi-project-parser.d.ts.map +1 -1
  324. package/dist/src/utils/env-multi-project-parser.js +26 -1
  325. package/dist/src/utils/env-multi-project-parser.js.map +1 -1
  326. package/dist/src/utils/external-tool-drift-detector.d.ts +2 -2
  327. package/dist/src/utils/external-tool-drift-detector.js +6 -6
  328. package/dist/src/utils/external-tool-drift-detector.js.map +1 -1
  329. package/dist/src/utils/notification-constants.js +2 -2
  330. package/dist/src/utils/notification-constants.js.map +1 -1
  331. package/dist/src/utils/notification-manager.d.ts +12 -3
  332. package/dist/src/utils/notification-manager.d.ts.map +1 -1
  333. package/dist/src/utils/notification-manager.js +51 -49
  334. package/dist/src/utils/notification-manager.js.map +1 -1
  335. package/dist/src/utils/platform-utils.d.ts +12 -3
  336. package/dist/src/utils/platform-utils.d.ts.map +1 -1
  337. package/dist/src/utils/platform-utils.js +35 -16
  338. package/dist/src/utils/platform-utils.js.map +1 -1
  339. package/dist/src/utils/plugin-validator.js +11 -11
  340. package/dist/src/utils/plugin-validator.js.map +1 -1
  341. package/dist/src/validators/ac-coverage-validator.d.ts +1 -1
  342. package/dist/src/validators/ac-coverage-validator.js +1 -1
  343. package/package.json +3 -1
  344. package/plugins/PLUGINS-INDEX.md +1 -2
  345. package/plugins/specweave/.claude-plugin/plugin.json +1 -1
  346. package/plugins/specweave/COMMANDS.md +49 -49
  347. package/plugins/specweave/agents/pm/AGENT.md +18 -18
  348. package/plugins/specweave/agents/test-aware-planner/AGENT.md +7 -7
  349. package/plugins/specweave/agents/translator/AGENT.md +2 -2
  350. package/plugins/specweave/commands/{specweave-abandon.md → abandon.md} +20 -20
  351. package/plugins/specweave/commands/{specweave-analyze-standards.sh → analyze-standards.sh} +4 -4
  352. package/plugins/specweave/commands/{specweave-archive-features.md → archive-features.md} +7 -7
  353. package/plugins/specweave/commands/{specweave-archive.md → archive.md} +36 -36
  354. package/plugins/specweave/commands/{specweave-backlog.md → backlog.md} +24 -24
  355. package/plugins/specweave/commands/{specweave-check-hooks.md → check-hooks.md} +10 -10
  356. package/plugins/specweave/commands/{specweave-check-tests.md → check-tests.md} +14 -14
  357. package/plugins/specweave/commands/{specweave-costs.md → costs.md} +8 -8
  358. package/plugins/specweave/commands/{specweave-discrepancies.md → discrepancies.md} +15 -15
  359. package/plugins/specweave/commands/{specweave-discrepancy-to-increment.md → discrepancy-to-increment.md} +10 -10
  360. package/plugins/specweave/commands/{specweave-do.md → do.md} +37 -39
  361. package/plugins/specweave/commands/{specweave-done.md → done.md} +23 -23
  362. package/plugins/specweave/commands/{specweave-embed-acs.md → embed-acs.md} +21 -21
  363. package/plugins/specweave/commands/{specweave-external.md → external.md} +11 -11
  364. package/plugins/specweave/commands/{specweave-fix-duplicates.md → fix-duplicates.md} +16 -16
  365. package/plugins/specweave/commands/{specweave-import-docs.md → import-docs.md} +7 -7
  366. package/plugins/specweave/commands/{specweave-import-external.md → import-external.md} +9 -9
  367. package/plugins/specweave/commands/{specweave-increment.md → increment.md} +17 -17
  368. package/plugins/specweave/commands/{specweave-jobs.md → jobs.md} +28 -28
  369. package/plugins/specweave/commands/{specweave-judge-llm.md → judge-llm.md} +19 -19
  370. package/plugins/specweave/commands/{specweave-living-docs.md → living-docs.md} +72 -29
  371. package/plugins/specweave/commands/migrate-config.md +2 -2
  372. package/plugins/specweave/commands/{specweave-next.md → next.md} +20 -20
  373. package/plugins/specweave/commands/{specweave-notifications.md → notifications.md} +11 -11
  374. package/plugins/specweave/commands/{specweave-organize-docs.md → organize-docs.md} +9 -9
  375. package/plugins/specweave/commands/{specweave-pause.md → pause.md} +19 -19
  376. package/plugins/specweave/commands/{specweave-plan.md → plan.md} +19 -19
  377. package/plugins/specweave/commands/{specweave-progress.md → progress.md} +6 -6
  378. package/plugins/specweave/commands/{specweave-qa.md → qa.md} +15 -15
  379. package/plugins/specweave/commands/{specweave-reopen.md → reopen.md} +41 -41
  380. package/plugins/specweave/commands/{specweave-restore-feature.md → restore-feature.md} +6 -6
  381. package/plugins/specweave/commands/{specweave-restore.md → restore.md} +26 -26
  382. package/plugins/specweave/commands/{specweave-resume.md → resume.md} +33 -33
  383. package/plugins/specweave/commands/revert-wip-limit.md +4 -4
  384. package/plugins/specweave/commands/{specweave-save.md → save.md} +34 -34
  385. package/plugins/specweave/commands/{specweave-status.md → status.md} +29 -29
  386. package/plugins/specweave/commands/{specweave.md → sw.md} +28 -28
  387. package/plugins/specweave/commands/{specweave-sync-acs.md → sync-acs.md} +12 -12
  388. package/plugins/specweave/commands/sync-diagnostics.md +5 -5
  389. package/plugins/specweave/commands/{specweave-sync-docs.md → sync-docs.md} +7 -7
  390. package/plugins/specweave/commands/{specweave-sync-logs.md → sync-logs.md} +14 -14
  391. package/plugins/specweave/commands/{specweave-sync-monitor.md → sync-monitor.md} +5 -5
  392. package/plugins/specweave/commands/{specweave-sync-progress.md → sync-progress.md} +38 -38
  393. package/plugins/specweave/commands/{specweave-sync-specs.md → sync-specs.md} +17 -17
  394. package/plugins/specweave/commands/{specweave-sync-status.md → sync-status.md} +16 -16
  395. package/plugins/specweave/commands/{specweave-sync-tasks.md → sync-tasks.md} +13 -13
  396. package/plugins/specweave/commands/{specweave-tdd-cycle.md → tdd-cycle.md} +1 -1
  397. package/plugins/specweave/commands/{specweave-tdd-green.md → tdd-green.md} +1 -1
  398. package/plugins/specweave/commands/{specweave-tdd-red.md → tdd-red.md} +1 -1
  399. package/plugins/specweave/commands/{specweave-tdd-refactor.md → tdd-refactor.md} +1 -1
  400. package/plugins/specweave/commands/{specweave-translate.md → translate.md} +17 -17
  401. package/plugins/specweave/commands/{specweave-update-scope.md → update-scope.md} +8 -8
  402. package/plugins/specweave/commands/{specweave-update-status.md → update-status.md} +6 -6
  403. package/plugins/specweave/commands/{specweave-validate-features.md → validate-features.md} +8 -8
  404. package/plugins/specweave/commands/{specweave-validate.md → validate.md} +20 -20
  405. package/plugins/specweave/commands/{specweave-workflow.md → workflow.md} +40 -40
  406. package/plugins/specweave/hooks/README.md +5 -5
  407. package/plugins/specweave/hooks/config-env-separator.sh +99 -0
  408. package/plugins/specweave/hooks/github-metadata-guard.sh +73 -0
  409. package/plugins/specweave/hooks/hooks.json +32 -2
  410. package/plugins/specweave/hooks/post-first-increment.sh +2 -2
  411. package/plugins/specweave/hooks/post-increment-completion.sh +7 -7
  412. package/plugins/specweave/hooks/post-increment-planning.sh +11 -11
  413. package/plugins/specweave/hooks/post-increment-status-change.sh +1 -1
  414. package/plugins/specweave/hooks/post-metadata-change.sh +1 -1
  415. package/plugins/specweave/hooks/post-spec-update.sh +2 -2
  416. package/plugins/specweave/hooks/post-task-completion.sh +2 -2
  417. package/plugins/specweave/hooks/pre-increment-start.sh +7 -7
  418. package/plugins/specweave/hooks/project-folder-guard.sh +272 -0
  419. package/plugins/specweave/hooks/spec-project-validator.sh +68 -47
  420. package/plugins/specweave/hooks/user-prompt-submit.sh +27 -27
  421. package/plugins/specweave/hooks/v2/guards/completion-guard.sh +2 -2
  422. package/plugins/specweave/hooks/v2/guards/metadata-json-guard.sh +1 -1
  423. package/plugins/specweave/hooks/v2/handlers/github-sync-handler.sh +1 -1
  424. package/plugins/specweave/lib/hooks/consolidated-sync.js +35 -5
  425. package/plugins/specweave/lib/hooks/invoke-translator-skill.js +2 -2
  426. package/plugins/specweave/lib/hooks/invoke-translator-skill.ts +2 -2
  427. package/plugins/specweave/lib/hooks/prepare-reflection-context.js +1 -1
  428. package/plugins/specweave/lib/hooks/prepare-reflection-context.ts +1 -1
  429. package/plugins/specweave/lib/hooks/sync-living-docs.js +5 -5
  430. package/plugins/specweave/lib/hooks/translate-file.d.ts +1 -1
  431. package/plugins/specweave/lib/hooks/translate-file.js +2 -2
  432. package/plugins/specweave/lib/hooks/translate-file.ts +3 -3
  433. package/plugins/specweave/lib/hooks/us-completion-orchestrator.js +1 -1
  434. package/plugins/specweave/lib/hooks/us-completion-orchestrator.ts +2 -2
  435. package/plugins/specweave/lib/vendor/core/increment/metadata-manager.js +6 -6
  436. package/plugins/specweave/lib/vendor/core/increment/metadata-manager.js.map +1 -1
  437. package/plugins/specweave/lib/vendor/core/increment/status-auto-transition.d.ts +113 -0
  438. package/plugins/specweave/lib/vendor/core/increment/status-auto-transition.js +318 -0
  439. package/plugins/specweave/lib/vendor/core/increment/status-auto-transition.js.map +1 -0
  440. package/plugins/specweave/lib/vendor/core/types/increment-metadata.d.ts +3 -3
  441. package/plugins/specweave/lib/vendor/core/types/increment-metadata.js +3 -3
  442. package/plugins/specweave/lib/vendor/core/types/increment-metadata.js.map +1 -1
  443. package/plugins/specweave/scripts/README.md +9 -9
  444. package/plugins/specweave/scripts/cleanup-state.sh +1 -1
  445. package/plugins/specweave/scripts/jobs.js +2 -2
  446. package/plugins/specweave/scripts/progress.js +6 -6
  447. package/plugins/specweave/scripts/read-costs.sh +3 -3
  448. package/plugins/specweave/scripts/read-jobs.sh +8 -8
  449. package/plugins/specweave/scripts/read-progress.sh +17 -10
  450. package/plugins/specweave/scripts/read-status.sh +7 -7
  451. package/plugins/specweave/scripts/read-workflow.sh +18 -18
  452. package/plugins/specweave/scripts/rebuild-dashboard-cache.sh +6 -5
  453. package/plugins/specweave/scripts/session-watchdog.sh +4 -4
  454. package/plugins/specweave/scripts/status.js +7 -7
  455. package/plugins/specweave/scripts/update-dashboard-cache.sh +28 -10
  456. package/plugins/specweave/skills/SKILLS-INDEX.md +4 -4
  457. package/plugins/specweave/skills/archive-increments/SKILL.md +15 -15
  458. package/plugins/specweave/skills/brownfield-analyzer/SKILL.md +5 -5
  459. package/plugins/specweave/skills/code-standards-analyzer/SKILL.md +4 -4
  460. package/plugins/specweave/skills/context-loader/SKILL.md +1 -1
  461. package/plugins/specweave/skills/{specweave-detector → detector}/SKILL.md +5 -5
  462. package/plugins/specweave/skills/discrepancy-viewer.md +4 -4
  463. package/plugins/specweave/skills/external-sync-wizard/SKILL.md +24 -24
  464. package/plugins/specweave/skills/{specweave-framework → framework}/SKILL.md +33 -33
  465. package/plugins/specweave/skills/increment-planner/SKILL.md +25 -24
  466. package/plugins/specweave/skills/increment-planner/templates/spec-multi-project.md +6 -16
  467. package/plugins/specweave/skills/increment-planner/templates/spec-single-project.md +6 -12
  468. package/plugins/specweave/skills/increment-quality-judge-v2/SKILL.md +6 -6
  469. package/plugins/specweave/skills/increment-work-router/SKILL.md +23 -23
  470. package/plugins/specweave/skills/instant-status/SKILL.md +7 -7
  471. package/plugins/specweave/skills/plugin-validator/SKILL.md +9 -9
  472. package/plugins/specweave/skills/pm-closure-validation/SKILL.md +4 -4
  473. package/plugins/specweave/skills/progress-sync/SKILL.md +51 -51
  474. package/plugins/specweave/skills/project-kickstarter/SKILL.md +11 -11
  475. package/plugins/specweave/skills/role-orchestrator/README.md +1 -1
  476. package/plugins/specweave/skills/role-orchestrator/SKILL.md +4 -4
  477. package/plugins/specweave/skills/smart-reopen-detector/SKILL.md +17 -17
  478. package/plugins/specweave/skills/spec-generator/SKILL.md +6 -6
  479. package/plugins/specweave/skills/tdd-workflow/SKILL.md +21 -21
  480. package/plugins/specweave/skills/translator/SKILL.md +4 -4
  481. package/plugins/specweave/skills/umbrella-repo-detector/SKILL.md +5 -5
  482. package/plugins/specweave-ado/.claude-plugin/plugin.json +1 -1
  483. package/plugins/specweave-ado/agents/ado-manager/AGENT.md +4 -4
  484. package/plugins/specweave-ado/agents/ado-sync-judge/AGENT.md +4 -4
  485. package/plugins/specweave-ado/commands/cleanup-duplicates.md +9 -9
  486. package/plugins/specweave-ado/commands/clone.md +17 -17
  487. package/plugins/specweave-ado/commands/close.md +10 -10
  488. package/plugins/specweave-ado/commands/create.md +8 -8
  489. package/plugins/specweave-ado/commands/import-areas.md +15 -15
  490. package/plugins/specweave-ado/commands/import-projects.md +12 -12
  491. package/plugins/specweave-ado/commands/pull.md +25 -25
  492. package/plugins/specweave-ado/commands/push.md +20 -20
  493. package/plugins/specweave-ado/commands/reconcile.md +7 -7
  494. package/plugins/specweave-ado/commands/status.md +7 -7
  495. package/plugins/specweave-ado/commands/sync.md +17 -17
  496. package/plugins/specweave-ado/hooks/post-living-docs-update.sh +2 -2
  497. package/plugins/specweave-ado/lib/ado-project-detector.js +1 -1
  498. package/plugins/specweave-ado/lib/ado-project-detector.ts +1 -1
  499. package/plugins/specweave-ado/skills/{specweave-ado-mapper → ado-mapper}/SKILL.md +2 -2
  500. package/plugins/specweave-ado/skills/ado-multi-project/SKILL.md +6 -6
  501. package/plugins/specweave-ado/skills/ado-resource-validator/SKILL.md +5 -5
  502. package/plugins/specweave-ado/skills/ado-sync/SKILL.md +19 -19
  503. package/plugins/specweave-alternatives/.claude-plugin/plugin.json +1 -1
  504. package/plugins/specweave-alternatives/commands/alternatives-analyze.md +14 -14
  505. package/plugins/specweave-backend/.claude-plugin/plugin.json +1 -1
  506. package/plugins/specweave-confluent/.claude-plugin/plugin.json +1 -1
  507. package/plugins/specweave-cost-optimizer/.claude-plugin/plugin.json +1 -1
  508. package/plugins/specweave-cost-optimizer/commands/cost-analyze.md +1 -1
  509. package/plugins/specweave-cost-optimizer/commands/cost-optimize.md +1 -1
  510. package/plugins/specweave-diagrams/.claude-plugin/plugin.json +1 -1
  511. package/plugins/specweave-diagrams/commands/diagrams-generate.md +1 -1
  512. package/plugins/specweave-docs/.claude-plugin/plugin.json +1 -1
  513. package/plugins/specweave-docs/commands/build.md +8 -8
  514. package/plugins/specweave-docs/commands/generate.md +22 -22
  515. package/plugins/specweave-docs/commands/health.md +10 -10
  516. package/plugins/specweave-docs/commands/init.md +9 -9
  517. package/plugins/specweave-docs/commands/organize.md +10 -10
  518. package/plugins/specweave-docs/commands/validate.md +9 -9
  519. package/plugins/specweave-docs/commands/view.md +14 -14
  520. package/plugins/specweave-docs/skills/preview/SKILL.md +11 -11
  521. package/plugins/specweave-figma/.claude-plugin/plugin.json +1 -1
  522. package/plugins/specweave-figma/commands/figma-import.md +1 -1
  523. package/plugins/specweave-figma/commands/figma-to-react.md +1 -1
  524. package/plugins/specweave-figma/commands/figma-tokens.md +1 -1
  525. package/plugins/specweave-frontend/.claude-plugin/plugin.json +1 -1
  526. package/plugins/specweave-frontend/agents/frontend-architect/README.md +5 -5
  527. package/plugins/specweave-frontend/commands/component-generate.md +1 -1
  528. package/plugins/specweave-frontend/commands/design-system-init.md +1 -1
  529. package/plugins/specweave-frontend/commands/frontend-scaffold.md +1 -1
  530. package/plugins/specweave-frontend/commands/nextjs-setup.md +1 -1
  531. package/plugins/specweave-github/.claude-plugin/plugin.json +1 -1
  532. package/plugins/specweave-github/MULTI-PROJECT-SYNC-ARCHITECTURE.md +4 -4
  533. package/plugins/specweave-github/SYNC-ARCHITECTURE-FIX-SUMMARY.md +18 -18
  534. package/plugins/specweave-github/agents/github-manager/AGENT.md +8 -8
  535. package/plugins/specweave-github/commands/cleanup-duplicates.md +8 -8
  536. package/plugins/specweave-github/commands/close.md +25 -25
  537. package/plugins/specweave-github/commands/create.md +17 -17
  538. package/plugins/specweave-github/commands/pull.md +12 -12
  539. package/plugins/specweave-github/commands/push.md +12 -12
  540. package/plugins/specweave-github/commands/reconcile.md +7 -7
  541. package/plugins/specweave-github/commands/status.md +24 -24
  542. package/plugins/specweave-github/commands/sync.md +34 -34
  543. package/plugins/specweave-github/commands/update-user-story.md +6 -6
  544. package/plugins/specweave-github/hooks/README.md +8 -8
  545. package/plugins/specweave-github/hooks/post-task-completion.sh +2 -2
  546. package/plugins/specweave-github/lib/ThreeLayerSyncManager.js +12 -4
  547. package/plugins/specweave-github/lib/ThreeLayerSyncManager.ts +16 -4
  548. package/plugins/specweave-github/lib/completion-calculator.js +3 -1
  549. package/plugins/specweave-github/lib/completion-calculator.ts +6 -0
  550. package/plugins/specweave-github/lib/duplicate-detector.js +12 -6
  551. package/plugins/specweave-github/lib/duplicate-detector.ts +22 -6
  552. package/plugins/specweave-github/lib/github-board-resolver.js +7 -2
  553. package/plugins/specweave-github/lib/github-board-resolver.ts +13 -2
  554. package/plugins/specweave-github/lib/github-client-v2.js +29 -18
  555. package/plugins/specweave-github/lib/github-client-v2.ts +33 -18
  556. package/plugins/specweave-github/lib/github-feature-sync.js +41 -11
  557. package/plugins/specweave-github/lib/github-feature-sync.ts +52 -11
  558. package/plugins/specweave-github/lib/github-hierarchical-sync.js +6 -1
  559. package/plugins/specweave-github/lib/github-hierarchical-sync.ts +12 -1
  560. package/plugins/specweave-github/lib/github-increment-sync-cli.js +35 -17
  561. package/plugins/specweave-github/lib/github-increment-sync-cli.ts +44 -16
  562. package/plugins/specweave-github/lib/github-issue-updater.js +8 -3
  563. package/plugins/specweave-github/lib/github-issue-updater.ts +16 -3
  564. package/plugins/specweave-github/lib/github-spec-sync.js +14 -4
  565. package/plugins/specweave-github/lib/github-spec-sync.ts +19 -4
  566. package/plugins/specweave-github/lib/github-sync-bidirectional.js +8 -3
  567. package/plugins/specweave-github/lib/github-sync-bidirectional.ts +14 -3
  568. package/plugins/specweave-github/lib/github-sync-increment-changes.js +9 -4
  569. package/plugins/specweave-github/lib/github-sync-increment-changes.ts +15 -4
  570. package/plugins/specweave-github/lib/increment-issue-builder.js +23 -10
  571. package/plugins/specweave-github/lib/increment-issue-builder.ts +29 -11
  572. package/plugins/specweave-github/lib/user-story-content-builder.js +19 -16
  573. package/plugins/specweave-github/lib/user-story-content-builder.ts +24 -19
  574. package/plugins/specweave-github/lib/user-story-issue-builder.js +10 -13
  575. package/plugins/specweave-github/lib/user-story-issue-builder.ts +20 -19
  576. package/plugins/specweave-github/reference/github-specweave-mapping.md +1 -1
  577. package/plugins/specweave-github/skills/github-issue-standard/SKILL.md +3 -3
  578. package/plugins/specweave-github/skills/github-issue-tracker/SKILL.md +8 -8
  579. package/plugins/specweave-github/skills/github-sync/SKILL.md +14 -14
  580. package/plugins/specweave-infrastructure/.claude-plugin/plugin.json +1 -1
  581. package/plugins/specweave-infrastructure/commands/{specweave-infrastructure-monitor-setup.md → monitor-setup.md} +1 -1
  582. package/plugins/specweave-infrastructure/commands/{specweave-infrastructure-slo-implement.md → slo-implement.md} +1 -1
  583. package/plugins/specweave-jira/.claude-plugin/plugin.json +1 -1
  584. package/plugins/specweave-jira/agents/jira-sync-judge/AGENT.md +3 -3
  585. package/plugins/specweave-jira/commands/cleanup-duplicates.md +9 -9
  586. package/plugins/specweave-jira/commands/close.md +13 -13
  587. package/plugins/specweave-jira/commands/create.md +8 -8
  588. package/plugins/specweave-jira/commands/import-boards.md +15 -15
  589. package/plugins/specweave-jira/commands/import-projects-full.md +15 -15
  590. package/plugins/specweave-jira/commands/import-projects.md +10 -10
  591. package/plugins/specweave-jira/commands/pull.md +10 -10
  592. package/plugins/specweave-jira/commands/push.md +11 -11
  593. package/plugins/specweave-jira/commands/reconcile.md +7 -7
  594. package/plugins/specweave-jira/commands/status.md +16 -16
  595. package/plugins/specweave-jira/commands/sync.md +27 -27
  596. package/plugins/specweave-jira/skills/{specweave-jira-mapper → jira-mapper}/SKILL.md +2 -2
  597. package/plugins/specweave-jira/skills/jira-resource-validator/SKILL.md +4 -4
  598. package/plugins/specweave-jira/skills/jira-sync/SKILL.md +5 -5
  599. package/plugins/specweave-kafka/.claude-plugin/plugin.json +1 -1
  600. package/plugins/specweave-kafka/IMPLEMENTATION-COMPLETE.md +10 -10
  601. package/plugins/specweave-kafka/README.md +12 -12
  602. package/plugins/specweave-kafka/commands/deploy.md +5 -5
  603. package/plugins/specweave-kafka/commands/dev-env.md +2 -2
  604. package/plugins/specweave-kafka/commands/mcp-configure.md +3 -3
  605. package/plugins/specweave-kafka/commands/monitor-setup.md +3 -3
  606. package/plugins/specweave-kafka/skills/kafka-architecture/SKILL.md +4 -4
  607. package/plugins/specweave-kafka/skills/kafka-cli-tools/SKILL.md +5 -5
  608. package/plugins/specweave-kafka/skills/kafka-mcp-integration/SKILL.md +6 -6
  609. package/plugins/specweave-kafka-streams/.claude-plugin/plugin.json +1 -1
  610. package/plugins/specweave-kafka-streams/commands/topology.md +4 -4
  611. package/plugins/specweave-kubernetes/.claude-plugin/plugin.json +1 -1
  612. package/plugins/specweave-ml/.claude-plugin/plugin.json +1 -1
  613. package/plugins/specweave-ml/README.md +9 -9
  614. package/plugins/specweave-ml/commands/{specweave-ml-deploy.md → deploy.md} +1 -1
  615. package/plugins/specweave-ml/commands/{specweave-ml-evaluate.md → evaluate.md} +1 -1
  616. package/plugins/specweave-ml/commands/{specweave-ml-explain.md → explain.md} +1 -1
  617. package/plugins/specweave-ml/commands/{specweave-ml-pipeline.md → pipeline.md} +1 -1
  618. package/plugins/specweave-ml/skills/automl-optimizer/SKILL.md +1 -1
  619. package/plugins/specweave-ml/skills/data-visualizer/SKILL.md +1 -1
  620. package/plugins/specweave-ml/skills/experiment-tracker/SKILL.md +4 -4
  621. package/plugins/specweave-ml/skills/feature-engineer/SKILL.md +1 -1
  622. package/plugins/specweave-ml/skills/ml-deployment-helper/SKILL.md +2 -2
  623. package/plugins/specweave-ml/skills/ml-pipeline-orchestrator/SKILL.md +10 -10
  624. package/plugins/specweave-ml/skills/model-registry/SKILL.md +1 -1
  625. package/plugins/specweave-ml/skills/time-series-forecaster/SKILL.md +1 -1
  626. package/plugins/specweave-mobile/.claude-plugin/plugin.json +1 -1
  627. package/plugins/specweave-mobile/README.md +2 -2
  628. package/plugins/specweave-mobile/agents/mobile-architect/AGENT.md +2 -2
  629. package/plugins/specweave-mobile/skills/react-native-setup/SKILL.md +1 -1
  630. package/plugins/specweave-n8n/.claude-plugin/plugin.json +1 -1
  631. package/plugins/specweave-n8n/commands/workflow-template.md +4 -4
  632. package/plugins/specweave-payments/.claude-plugin/plugin.json +1 -1
  633. package/plugins/specweave-payments/commands/stripe-setup.md +1 -1
  634. package/plugins/specweave-payments/commands/subscription-flow.md +1 -1
  635. package/plugins/specweave-plugin-dev/.claude-plugin/plugin.json +1 -1
  636. package/plugins/specweave-plugin-dev/commands/plugin-create.md +1 -1
  637. package/plugins/specweave-plugin-dev/commands/plugin-publish.md +1 -1
  638. package/plugins/specweave-plugin-dev/commands/plugin-test.md +1 -1
  639. package/plugins/specweave-release/.claude-plugin/plugin.json +1 -1
  640. package/plugins/specweave-release/IMPLEMENTATION.md +14 -14
  641. package/plugins/specweave-release/README.md +33 -33
  642. package/plugins/specweave-release/agents/release-manager/AGENT.md +18 -18
  643. package/plugins/specweave-release/commands/{specweave-release-align.md → align.md} +19 -19
  644. package/plugins/specweave-release/commands/{specweave-release-init.md → init.md} +19 -19
  645. package/plugins/specweave-release/commands/{specweave-release-npm.md → npm.md} +14 -14
  646. package/plugins/specweave-release/commands/{specweave-release-platform.md → platform.md} +17 -17
  647. package/plugins/specweave-release/commands/{specweave-release-rc.md → rc.md} +37 -37
  648. package/plugins/specweave-release/hooks/post-task-completion.sh +1 -1
  649. package/plugins/specweave-release/skills/rc-manager/SKILL.md +12 -12
  650. package/plugins/specweave-release/skills/release-coordinator/SKILL.md +11 -11
  651. package/plugins/specweave-release/skills/release-strategy-advisor/SKILL.md +4 -4
  652. package/plugins/specweave-release/skills/version-aligner/SKILL.md +7 -7
  653. package/plugins/specweave-testing/.claude-plugin/plugin.json +1 -1
  654. package/plugins/specweave-testing/agents/qa-engineer/README.md +5 -5
  655. package/plugins/specweave-testing/commands/e2e-setup.md +1 -1
  656. package/plugins/specweave-testing/commands/test-coverage.md +1 -1
  657. package/plugins/specweave-testing/commands/test-generate.md +1 -1
  658. package/plugins/specweave-testing/commands/test-init.md +1 -1
  659. package/plugins/specweave-tooling/.claude-plugin/plugin.json +1 -1
  660. package/plugins/specweave-tooling/commands/{specweave-tooling-skill-create.md → skill-create.md} +1 -1
  661. package/plugins/specweave-tooling/commands/{specweave-tooling-skill-package.md → skill-package.md} +1 -1
  662. package/plugins/specweave-tooling/commands/{specweave-tooling-skill-validate.md → skill-validate.md} +1 -1
  663. package/plugins/specweave-ui/.claude-plugin/plugin.json +1 -1
  664. package/plugins/specweave-ui/commands/ui-automate.md +9 -9
  665. package/plugins/specweave-ui/commands/ui-inspect.md +6 -6
  666. package/src/templates/AGENTS.md.template +49 -49
  667. package/src/templates/CLAUDE.md.template +11 -11
  668. package/dist/src/cli/commands/switch-project.d.ts +0 -13
  669. package/dist/src/cli/commands/switch-project.d.ts.map +0 -1
  670. package/dist/src/cli/commands/switch-project.js +0 -78
  671. package/dist/src/cli/commands/switch-project.js.map +0 -1
  672. package/plugins/specweave/commands/specweave-init-multiproject.md +0 -146
  673. package/plugins/specweave-core/.claude-plugin/plugin.json +0 -21
  674. package/plugins/specweave-core/commands/architecture-review.md +0 -288
  675. package/plugins/specweave-core/commands/code-review.md +0 -213
  676. package/plugins/specweave-core/commands/refactor-plan.md +0 -249
  677. package/plugins/specweave-core/skills/code-quality/SKILL.md +0 -158
  678. package/plugins/specweave-core/skills/design-patterns/SKILL.md +0 -245
  679. package/plugins/specweave-core/skills/software-architecture/SKILL.md +0 -84
  680. /package/plugins/specweave/skills/{specweave-framework → framework}/test-cases/test-1-increment-naming.yaml +0 -0
  681. /package/plugins/specweave/skills/{specweave-framework → framework}/test-cases/test-2-source-of-truth.yaml +0 -0
  682. /package/plugins/specweave/skills/{specweave-framework → framework}/test-cases/test-3-increment-discipline.yaml +0 -0
  683. /package/plugins/specweave/skills/{specweave-framework → framework}/test-cases/test-4-file-placement.yaml +0 -0
package/CLAUDE.md CHANGED
@@ -15,8 +15,8 @@ For **contributors to SpecWeave itself** (not users).
15
15
 
16
16
  ```bash
17
17
  # Before editing large files outside increment:
18
- /specweave:pause XXXX → edit → /specweave:resume XXXX
19
- # OR close completed increments: /specweave:done XXXX
18
+ /sw:pause XXXX → edit → /sw:resume XXXX
19
+ # OR close completed increments: /sw:done XXXX
20
20
  ```
21
21
 
22
22
  ### 1b. Max 25 Tasks Per Increment (SOFT LIMIT)
@@ -65,7 +65,7 @@ Edit("metadata.json", '"status": "active"', '"status": "completed"')
65
65
 
66
66
  ✅ CORRECT workflow:
67
67
  1. All tasks completed → auto-transition to "ready_for_review"
68
- 2. /specweave:done <id> → validates ACs + asks for user confirmation
68
+ 2. /sw:done <id> → validates ACs + asks for user confirmation
69
69
  3. Only then → status becomes "completed" with approvedAt timestamp
70
70
  ```
71
71
 
@@ -77,61 +77,69 @@ MetadataManager.updateStatus(incrementId, IncrementStatus.COMPLETED);
77
77
  // Only succeeds if current status is "ready_for_review"
78
78
  ```
79
79
 
80
- ### 2c. spec.md MUST Have project: (and board: for 2-level) - RESOLVED VALUES ONLY! (v0.34.0+)
80
+ ### 2c. Per-US **Project**: Fields are PRIMARY Source of Truth (ADR-0140, v0.35.0+)
81
81
 
82
- **Increment creation WITHOUT resolved project context = SYNC FAILURE**
82
+ **Frontmatter `project:` and `board:` are OPTIONAL** - per-US fields are now PRIMARY!
83
83
 
84
- **⛔ YOU MUST RUN `specweave context projects` BEFORE GENERATING spec.md!**
85
-
86
- ```bash
87
- # MANDATORY FIRST STEP - run this BEFORE generating any spec.md:
88
- specweave context projects
89
-
90
- # Parse the JSON output:
91
- # 1-level: {"level": 1, "projects": [{"id": "frontend-app"}, {"id": "backend-api"}]}
92
- # 2-level: {"level": 2, "projects": [...], "boardsByProject": {"project-id": [{"id": "board-1"}]}}
93
-
94
- # USE the actual IDs from the output - NEVER use placeholders!
95
- ```
84
+ **Resolution Priority Chain** (ProjectResolutionService):
85
+ 1. Per-US `**Project**:` fields (highest priority)
86
+ 2. `config.json` → `project.name` (single-project mode)
87
+ 3. Intelligent detection (keywords, tech stack)
88
+ 4. Ultimate fallback: "default"
96
89
 
97
90
  ```yaml
98
- # 1-level structure (RESOLVED values only):
99
- ---
100
- increment: 0001-feature-name
101
- project: frontend-app # ← RESOLVED from context API (NOT {{PROJECT_ID}})
102
- ---
103
-
104
- # 2-level structure (BOTH RESOLVED):
91
+ # NEW (v0.35.0+): Frontmatter project: is OPTIONAL
105
92
  ---
106
93
  increment: 0001-feature-name
107
- project: acme-corp # RESOLVED from projects[].id
108
- board: digital-operations # RESOLVED from boardsByProject[project][].id
94
+ # NOTE: project: field REMOVED per ADR-0140
95
+ # Project is resolved from per-US **Project**: fields or config
109
96
  ---
110
97
  ```
111
98
 
112
- **Per-US Project/Board (v0.34.0+ MANDATORY):**
99
+ **Per-US Project/Board (PRIMARY SOURCE in spec.md):**
113
100
  ```markdown
114
101
  ### US-001: Login Form
115
- **Project**: frontend-app # ← RESOLVED value, not placeholder!
116
- **Board**: ui-team # ← RESOLVED value (2-level only)
102
+ **Project**: frontend-app # ← PRIMARY source of truth (in spec.md BODY)
103
+ **Board**: ui-team # ← Required for 2-level structures only
117
104
  ```
118
105
 
119
- **VALIDATION RULES (ENFORCED BY HOOK):**
106
+ **CRITICAL: Two File Formats for Project Field**
107
+
108
+ 1. **spec.md** (increment folder): `**Project**:` in BODY of each user story
109
+ 2. **us-*.md** (living docs folder): `project:` in FRONTMATTER
110
+
111
+ When living docs sync runs, it extracts `**Project**:` from spec.md body and places it in us-*.md frontmatter:
112
+
113
+ ```yaml
114
+ # us-001-login-form.md frontmatter (living docs)
115
+ ---
116
+ id: US-001
117
+ project: frontend-app # ← Extracted from spec.md **Project**: field
118
+ ---
120
119
  ```
121
- ❌ FORBIDDEN: Generating spec.md WITHOUT running "specweave context projects" first
122
- FORBIDDEN: Using {{PROJECT_ID}}, {{BOARD_ID}}, {{RESOLVED_PROJECT}} placeholders
123
- FORBIDDEN: Inventing project/board names not in the API response
124
- FORBIDDEN: User stories without **Project**: field
125
- FORBIDDEN: User stories in 2-level without **Board**: field
126
- ✅ REQUIRED: Run "specweave context projects" and parse output BEFORE generating
127
- ✅ REQUIRED: Each US has **Project**: with RESOLVED value from API
128
- ✅ REQUIRED: Each US (2-level) has **Board**: with RESOLVED value from API
120
+
121
+ **Code Implementation Rules:**
122
+ - **Generating GitHub issues**: Read from `frontmatter.project` in us-*.md files
123
+ - **Parsing spec.md**: Extract from `**Project**:` in body using regex
124
+ - **Living docs sync**: Transforms body field frontmatter field
125
+
126
+ **VALIDATION RULES (ENFORCED BY HOOKS):**
127
+ ```
128
+ ✅ Per-US **Project**: fields are PRIMARY source
129
+ ✅ Frontmatter project:/board: are OPTIONAL (deprecated but allowed)
130
+ ✅ Single-project mode: auto-resolves from config.project.name
131
+ ❌ FORBIDDEN: Using {{...}} placeholders in spec.md
132
+ ❌ FORBIDDEN: User stories without **Project**: field (multi-project mode)
133
+ ❌ FORBIDDEN: Multiple comma-separated projects per US
129
134
  ```
130
135
 
136
+ **Pre-tool-use hook `spec-project-validator.sh` ALLOWS:**
137
+ - spec.md WITHOUT frontmatter `project:` field (new best practice)
138
+ - spec.md WITHOUT frontmatter `board:` field
139
+
131
140
  **Pre-tool-use hook `spec-project-validator.sh` BLOCKS:**
132
- - spec.md with `{{...}}` placeholders
133
- - spec.md without `project:` field
134
- - spec.md (2-level) without `board:` field
141
+ - spec.md with `{{...}}` unresolved placeholders
142
+ - Frontmatter project: that doesn't match config (if present)
135
143
  - User stories with unresolved `**Project**:` or `**Board**:` placeholders
136
144
 
137
145
  ### 2c-bis. Each User Story MUST Have **Project**: (and **Board**: for 2-level) (v0.34.0+)
@@ -202,9 +210,10 @@ SPECWEAVE_LEGACY_SPEC=1 # Allow legacy specs without per-US fields
202
210
  .specweave/docs/internal/specs/{project}/FS-116/FEATURE.md
203
211
  ```
204
212
 
205
- **Where `{project}` comes from:**
206
- 1. spec.md YAML frontmatter `project:` field (MANDATORY)
207
- 2. Example: `project: specweave` `.specweave/docs/internal/specs/specweave/FS-116/`
213
+ **Where `{project}` comes from (ADR-0140 v0.35.0+):**
214
+ 1. Per-US `**Project**:` field (PRIMARY - recommended)
215
+ 2. `config.json` `project.name` (single-project mode fallback)
216
+ 3. Example: `**Project**: specweave` → `.specweave/docs/internal/specs/specweave/FS-116/`
208
217
 
209
218
  **Pre-tool-use hook `features-folder-guard.sh` BLOCKS writes to `_features/` (v0.33.0+).**
210
219
 
@@ -237,36 +246,44 @@ SPECWEAVE_LEGACY_SPEC=1 # Allow legacy specs without per-US fields
237
246
 
238
247
  **Pre-tool-use hook `increment-root-guard.sh` BLOCKS non-standard files at root (v0.33.0+).**
239
248
 
240
- ### 2f. NEVER Create Duplicate Increment IDs (v0.33.0+)
249
+ ### 2f. NEVER Create Duplicate Increment IDs (v0.33.0+, enhanced v0.34.0)
241
250
 
242
251
  **Increment numbers MUST be unique across ALL directories!**
243
252
 
244
253
  ```
245
- ❌ FORBIDDEN (Bug pattern from 2025-12-07):
254
+ ❌ FORBIDDEN (Bug pattern from 2025-12-07 and 2025-12-10):
246
255
  0121-ado-jira-feature-parity-p2-p3/ ← exists
247
256
  0121-intelligent-living-docs-content/ ← DUPLICATE!
248
257
 
258
+ ❌ ALSO FORBIDDEN when splitting increments:
259
+ 0141-frontmatter-removal-part1/ ← exists (original split)
260
+ 0141-frontmatter-removal-code/ ← DUPLICATE! (created later with same ID)
261
+
249
262
  ❌ ALSO FORBIDDEN (0001 and 0001E share SAME base number):
250
263
  0001-internal-feature/
251
264
  0001E-external-fix/ ← COLLISION! Same base number!
252
265
  ```
253
266
 
254
- **VALIDATION RULES:**
255
- ```
256
- ALWAYS use IncrementNumberManager.generateUniqueIncrementId()
257
- ALWAYS use IncrementNumberManager.validateUnique() before creating
258
- ✅ Check ALL directories: active, _archive, _abandoned, _paused
259
- ```
267
+ **MULTI-LAYER PREVENTION (v0.34.0+):**
268
+ 1. **Code-level**: `generateIncrementId()` now validates by default
269
+ 2. **Hook-level**: `increment-duplicate-guard.sh` blocks Write operations
270
+ 3. **Split-level**: Use `validateExplicitId()` when manually specifying IDs
260
271
 
261
- **API (v0.33.0+):**
272
+ **API (v0.34.0+):**
262
273
  ```typescript
263
274
  import { IncrementNumberManager } from './core/increment/increment-utils.js';
264
275
 
265
- // Safe generation with validation:
266
- const id = IncrementNumberManager.generateUniqueIncrementId('feature-name');
267
- // → "0122-feature-name" (guaranteed unique)
276
+ // RECOMMENDED: Auto-generated ID (validates by default)
277
+ const id = IncrementNumberManager.generateIncrementId('feature-name');
278
+ // → "0122-feature-name" (guaranteed unique, throws if duplicate)
279
+
280
+ // For explicit IDs (e.g., splits): MUST validate first!
281
+ IncrementNumberManager.validateExplicitId('0145-split-part2');
282
+ // → Throws if 0145 already exists!
283
+
284
+ // Then create folder only if validation passes
268
285
 
269
- // Manual validation:
286
+ // Manual validation (still available):
270
287
  IncrementNumberManager.validateUnique('0121-new-name'); // throws if duplicate!
271
288
 
272
289
  // Find duplicates:
@@ -274,6 +291,17 @@ IncrementNumberManager.findDuplicates('0121');
274
291
  // → ["0121-ado-jira-feature (active)", "0121-intelligent-living-docs (active)"]
275
292
  ```
276
293
 
294
+ **CRITICAL: When Splitting Increments:**
295
+ ```typescript
296
+ // ❌ WRONG - Manually specifying ID without validation:
297
+ const splitId = '0141-feature-part2'; // May conflict!
298
+ fs.mkdirSync(path.join(incrementsDir, splitId));
299
+
300
+ // ✅ CORRECT - Validate first:
301
+ IncrementNumberManager.validateExplicitId('0145-feature-part2'); // Throws if exists!
302
+ // Only proceed if no error thrown
303
+ ```
304
+
277
305
  **Pre-tool-use hook `increment-duplicate-guard.sh` BLOCKS duplicate increment creation (v0.33.0+).**
278
306
 
279
307
  ### 2f. Gap-Filling Increment IDs (v0.33.1+)
@@ -314,6 +342,249 @@ IncrementNumberManager.getNextIncrementNumber(); // "0001" ← Starts from begin
314
342
 
315
343
  **Details:** See ADR-0142 (`.specweave/docs/internal/architecture/adr/0142-gap-filling-increment-ids.md`)
316
344
 
345
+ ### 2g. NEVER Create Project Folders Without Validation (v0.34.0+, fixed v0.35.1)
346
+
347
+ **Project folders MUST exist in config.json before creation!**
348
+
349
+ ```
350
+ ❌ FORBIDDEN (Bug pattern from 2025-12-11):
351
+ .specweave/docs/internal/specs/MyApp (3 repos)/ ← Example from spec.md!
352
+ .specweave/docs/internal/specs/frontend-app/ ← Example from spec.md!
353
+ .specweave/docs/internal/specs/backend-api/ ← Example from spec.md!
354
+ .specweave/docs/internal/specs/acme-corp/ ← Example from spec.md!
355
+ .specweave/docs/internal/specs/{{PROJECT_ID}}.../ ← Unresolved placeholder!
356
+
357
+ ✅ CORRECT - Only configured projects:
358
+ .specweave/docs/internal/specs/specweave/ (exists in config.json)
359
+ ```
360
+
361
+ **ROOT CAUSE (Fixed in v0.35.1):**
362
+ - Increments contain EXAMPLE User Stories with placeholder `**Project**:` values
363
+ - `extractUserStoryProjectInfo()` in parsers.ts extracts ANY string after `**Project**:`
364
+ - When sync runs, creates folders for ALL projects mentioned, including examples
365
+ - v0.35.1 FIX: `ProjectResolutionService.validateProjectForFolderCreation()` now validates BEFORE folder creation
366
+
367
+ **KNOWN EXAMPLE PROJECT NAMES (ALWAYS BLOCKED unless configured):**
368
+ - `frontend-app`, `backend-api`, `mobile-app`, `shared-lib`
369
+ - `acme-corp`, `my-app`, `myapp`, `example-project`, `sample-project`
370
+ - `test-project`, `demo`, `placeholder`, `per`, `default`
371
+
372
+ **MULTI-LAYER PROTECTION (v0.35.1+):**
373
+ 1. **Code-level**: `ProjectResolutionService.validateProjectForFolderCreation()` validates in TypeScript
374
+ 2. **Living-docs-sync**: Filters out invalid projects BEFORE calling `ensureDir()`
375
+ 3. **Cross-project-sync**: `ensureSpecsFolder()` throws Error if project invalid
376
+ 4. **Hook-level**: `project-folder-guard.sh` blocks Write operations to invalid folders
377
+
378
+ **EXAMPLES OF FORBIDDEN PATTERNS:**
379
+ ```markdown
380
+ ### US-001: Example Login Form
381
+ **Project**: MyApp (3 repos) ← FORBIDDEN (parentheses not allowed!)
382
+
383
+ ### US-002: Example API
384
+ **Project**: frontend-app, backend-api ← FORBIDDEN (comma-separated!)
385
+
386
+ ### US-003: Placeholder Story
387
+ **Project**: acme-corp ← FORBIDDEN (example name not in config!)
388
+
389
+ ### US-004: Unresolved
390
+ **Project**: {{PROJECT_ID}} ← FORBIDDEN (unresolved placeholder!)
391
+ ```
392
+
393
+ **VALIDATION RULES (ENFORCED BY CODE + HOOK):**
394
+ ```
395
+ ❌ FORBIDDEN: Creating folders for projects not in config.json
396
+ ❌ FORBIDDEN: Example/placeholder project names (see list above)
397
+ ❌ FORBIDDEN: Parentheses in project names (e.g., "MyApp (3 repos)")
398
+ ❌ FORBIDDEN: Comma-separated projects (must be ONE project per US)
399
+ ❌ FORBIDDEN: Template placeholders like {{PROJECT_ID}}
400
+
401
+ ✅ REQUIRED: All projects MUST be in config.project.name (single) or config.multiProject.projects (multi)
402
+ ✅ REQUIRED: Run `specweave context projects` to get valid project IDs
403
+ ✅ REQUIRED: Use RESOLVED values from config, never placeholders
404
+ ```
405
+
406
+ **BYPASS (EMERGENCY ONLY):**
407
+ ```bash
408
+ SPECWEAVE_FORCE_PROJECT=1 # Skip project folder validation (DANGEROUS!)
409
+ ```
410
+
411
+ **API for validation (v0.35.1+):**
412
+ ```typescript
413
+ import { ProjectResolutionService } from './core/project/project-resolution.js';
414
+
415
+ const resolver = new ProjectResolutionService(projectRoot);
416
+
417
+ // Validate before folder creation
418
+ const validation = await resolver.validateProjectForFolderCreation('frontend-app');
419
+ if (!validation.valid) {
420
+ console.error(`Cannot create folder: ${validation.reason}`);
421
+ console.log(`Allowed projects: ${validation.allowedProjects.join(', ')}`);
422
+ }
423
+
424
+ // Static sync check for hooks
425
+ if (ProjectResolutionService.isExampleProjectName('frontend-app')) {
426
+ // Block - it's a known example name
427
+ }
428
+ ```
429
+
430
+ **Pre-tool-use hook `project-folder-guard.sh` BLOCKS writes to non-configured project folders (v0.35.1 enhanced).**
431
+
432
+ ### 2h. Single-Project-First Architecture (v0.34.0+)
433
+
434
+ **SpecWeave defaults to single-project mode** for 99% of users. Multi-project is an explicit opt-in.
435
+
436
+ ```
437
+ DEFAULT: Single-project mode (multiProject.enabled=false)
438
+ OPT-IN: Multi-project mode (/sw:enable-multiproject)
439
+ ```
440
+
441
+ **Why Single-Project-First?**
442
+ - **Simplicity**: Most repos have one project → no need for project complexity
443
+ - **No Accidental Folders**: Example user stories don't create random project folders
444
+ - **Clear Migration Path**: Explicit command when you need multi-project features
445
+ - **Backwards Compatible**: Existing multi-project setups unaffected
446
+
447
+ #### Single-Project Mode (Default)
448
+
449
+ ```json
450
+ // config.json - single project
451
+ {
452
+ "project": {
453
+ "name": "my-app",
454
+ "description": "My Application",
455
+ "techStack": ["TypeScript", "React"]
456
+ },
457
+ "multiProject": {
458
+ "enabled": false // ← Default!
459
+ }
460
+ }
461
+ ```
462
+
463
+ **Behavior**:
464
+ - All increments go to same project folder
465
+ - No `project:` field required in spec.md (optional)
466
+ - No `board:` field allowed (always blocked)
467
+ - Living docs auto-use `project.name`
468
+
469
+ **Commands**:
470
+ ```bash
471
+ specweave init . # Creates single-project config by default
472
+ ```
473
+
474
+ #### Multi-Project Mode (Opt-In)
475
+
476
+ ```json
477
+ // config.json - multi-project (after migration)
478
+ {
479
+ "multiProject": {
480
+ "enabled": true,
481
+ "activeProject": "frontend-app",
482
+ "projects": {
483
+ "frontend-app": {
484
+ "name": "Frontend App",
485
+ "techStack": ["TypeScript", "React"]
486
+ },
487
+ "backend-api": {
488
+ "name": "Backend API",
489
+ "techStack": ["Node.js", "Express"]
490
+ }
491
+ }
492
+ }
493
+ }
494
+ ```
495
+
496
+ **Behavior**:
497
+ - Each increment requires `project:` field in spec.md
498
+ - Living docs distributed across project folders
499
+ - Can switch between projects with `/sw:switch-project`
500
+
501
+ **Commands**:
502
+ ```bash
503
+ /sw:enable-multiproject # Explicit opt-in with confirmation
504
+ /sw:switch-project # Change active project
505
+ ```
506
+
507
+ #### When to Enable Multi-Project?
508
+
509
+ | Scenario | Use Single-Project | Use Multi-Project |
510
+ |----------|-------------------|-------------------|
511
+ | One repository, one application | ✅ Default | ❌ Unnecessary |
512
+ | Monorepo with 2-3 services | ✅ Simpler | ⚠️ Optional |
513
+ | 5+ services/teams | ❌ Too simple | ✅ Recommended |
514
+ | Multi-repo (umbrella) | ❌ Not supported | ✅ Required |
515
+
516
+ **Migration Example**:
517
+ ```bash
518
+ # You start with single-project (default):
519
+ # project.name = "my-app"
520
+ # multiProject.enabled = false
521
+
522
+ # Later, you need multi-project features:
523
+ /sw:enable-multiproject
524
+
525
+ # Prompts for confirmation, then:
526
+ # 1. Migrates project → multiProject.projects
527
+ # 2. Sets multiProject.enabled = true
528
+ # 3. Creates project folders
529
+ # 4. Updates existing increments with project: field
530
+ ```
531
+
532
+ #### Validation Rules
533
+
534
+ **Single-Project Mode**:
535
+ ```markdown
536
+ # spec.md frontmatter
537
+ ---
538
+ increment: 0001-feature
539
+ project: my-app # ← OPTIONAL (auto-filled if missing)
540
+ ---
541
+
542
+ # User story
543
+ ### US-001: Feature Name
544
+ **Project**: my-app # ← OPTIONAL (ignored in single-project)
545
+ ```
546
+
547
+ **Multi-Project Mode**:
548
+ ```markdown
549
+ # spec.md frontmatter
550
+ ---
551
+ increment: 0001-feature
552
+ project: frontend-app # ← REQUIRED
553
+ ---
554
+
555
+ # User story
556
+ ### US-001: Feature Name
557
+ **Project**: frontend-app # ← REQUIRED (validated against config)
558
+ ```
559
+
560
+ #### Automatic Migration (v0.34.0+)
561
+
562
+ **SpecWeave auto-detects single-project repos with incorrect config:**
563
+
564
+ ```
565
+ If config.multiProject.enabled = true
566
+ AND only 1 project in multiProject.projects
567
+ THEN auto-migrate to single-project mode
568
+ ```
569
+
570
+ This fixes the bug where `specweave init` created multi-project configs by default.
571
+
572
+ **Migration log**: `.specweave/logs/migration.log`
573
+
574
+ #### Troubleshooting
575
+
576
+ **Error**: "Project folders created for example names (MyApp, frontend-app)"
577
+ **Cause**: Old bug - auto-enabled multi-project mode
578
+ **Fix**: Auto-migration runs on next command. Check `migration.log`.
579
+
580
+ **Error**: "board: field not allowed"
581
+ **Cause**: Using `board:` in single-project mode
582
+ **Fix**: Remove `board:` field OR run `/sw:enable-multiproject`
583
+
584
+ **Error**: "Only folder allowed: my-app"
585
+ **Cause**: Trying to create non-configured project folder
586
+ **Fix**: Check `project.name` in config OR run `/sw:enable-multiproject`
587
+
317
588
  ### 3. Protected Directories
318
589
 
319
590
  **NEVER delete**: `.specweave/docs/`, `.specweave/increments/`
@@ -464,13 +735,14 @@ rm -f .specweave/state/.dedup-cache/*.lock
464
735
 
465
736
  **Mental model**: Bash = "run a program". Write/Edit/Read = "modify files".
466
737
 
467
- ### 11. Notifications - MUST Be Non-Alarming (v0.33.4+)
738
+ ### 11. Notifications - MUST Be Non-Alarming AND Non-Blocking (v0.33.4+)
468
739
 
469
740
  **All notifications are INFORMATIVE only - NEVER alarming!** Every notification MUST:
470
741
  1. **WHO** sent it (always start with "SpecWeave:")
471
742
  2. **WHAT** happened (specific action, not vague alert)
472
743
  3. **ACTION** needed (or "No action needed" if informational)
473
744
  4. **NEVER trigger alert icon** - no red/warning badges!
745
+ 5. **NEVER block execution** - fire-and-forget pattern ONLY!
474
746
 
475
747
  ```
476
748
  ❌ FORBIDDEN (alarming):
@@ -478,12 +750,48 @@ Title: "🚨 Zombie Cleanup" ← Emoji overload
478
750
  Sound: "Basso" ← Shows RED ALERT ICON - NEVER USE!
479
751
  Message: "Cleaned up 5 processes" ← Too vague
480
752
 
481
- CORRECT (explicit, calm):
753
+ FORBIDDEN (blocking):
754
+ execSync(`osascript -e 'display notification...'`) ← BLOCKS main thread!
755
+ await exec(`osascript -e 'display notification...'`) ← BLOCKS cleanup/exit!
756
+
757
+ ✅ CORRECT (explicit, calm, non-blocking):
482
758
  Title: "SpecWeave: Cleanup Done" ← Clear source
483
759
  Sound: "Pop" or "Submarine" ← Neutral sounds ONLY
484
760
  Message: "Cleaned up 5 zombie processes. No action needed."
761
+ exec(`osascript...`, (error) => { /* log */ }) ← Fire-and-forget!
485
762
  ```
486
763
 
764
+ **CRITICAL: Fire-and-Forget Pattern (v0.33.6+)**
765
+
766
+ **⛔ NEVER use `execSync()` or `await exec()` for notifications!**
767
+ - Notifications MUST be **fire-and-forget** to prevent blocking Claude Code
768
+ - macOS `osascript` can take 1-2 seconds → blocks session if awaited
769
+ - Use callback-based `exec()` WITHOUT await/Promise wrapping
770
+
771
+ ```typescript
772
+ // ❌ WRONG - BLOCKS execution!
773
+ execSync(`osascript -e 'display notification...'`);
774
+ await exec(`osascript -e 'display notification...'`);
775
+
776
+ // ✅ CORRECT - Fire-and-forget!
777
+ import('child_process').then(cp => {
778
+ cp.exec(`osascript -e 'display notification...'`, (error) => {
779
+ if (error) logger.debug(`Notification failed: ${error.message}`);
780
+ });
781
+ });
782
+
783
+ // Or using require (CommonJS):
784
+ const { exec } = require('child_process');
785
+ exec(`osascript -e 'display notification...'`, (error) => {
786
+ if (error) logger.debug(`Notification failed: ${error.message}`);
787
+ });
788
+ ```
789
+
790
+ **Files using notifications MUST follow fire-and-forget pattern:**
791
+ - [src/utils/platform-utils.ts](src/utils/platform-utils.ts) (uses dynamic import)
792
+ - [src/utils/notification-manager.ts](src/utils/notification-manager.ts) (resolves immediately)
793
+ - [src/cli/cleanup-zombies.ts](src/cli/cleanup-zombies.ts) (uses childProcess.exec callback)
794
+
487
795
  **Sound selection rules (macOS only, other OS have no sound param):**
488
796
  | Sound | When to use |
489
797
  |-------|-------------|
@@ -508,7 +816,10 @@ const msg = buildNotificationMessage('cleanup', { count: 5 }); // "Cleaned up 5
508
816
  const sound = getSoundForType('cleanup'); // "Pop" (NEVER returns "Basso")
509
817
  ```
510
818
 
511
- **Code review should verify notification messages follow these standards.**
819
+ **Code review should verify:**
820
+ 1. Notification messages follow WHO/WHAT/ACTION pattern
821
+ 2. All notification calls use fire-and-forget (no await/execSync)
822
+ 3. macOS notifications use dynamic import or callback pattern
512
823
 
513
824
  ---
514
825
 
@@ -521,7 +832,7 @@ git add . && git commit -m "feat: feature" && git push origin develop
521
832
  ```
522
833
 
523
834
  **Marketplace**: `bash scripts/refresh-marketplace.sh` (GitHub mode, always use)
524
- **NPM Release**: `/specweave-release:npm`
835
+ **NPM Release**: `/sw-release:npm`
525
836
 
526
837
  ---
527
838
 
@@ -652,7 +963,7 @@ board: digital-operations # REQUIRED for 2-level structures
652
963
  Use `DuplicateDetector.createWithProtection()`, NEVER `--limit 1` in gh searches
653
964
 
654
965
  ### AC Presence in spec.md
655
- **MANDATORY** - even with external living docs. Use `/specweave:embed-acs` if missing.
966
+ **MANDATORY** - even with external living docs. Use `/sw:embed-acs` if missing.
656
967
 
657
968
  ### Git Provider Abstraction
658
969
  Use `getPlatformRegistry().getProvider('github')`. NEVER hardcode platform names/endpoints.
@@ -661,20 +972,66 @@ Use `getPlatformRegistry().getProvider('github')`. NEVER hardcode platform names
661
972
 
662
973
  ## Configuration
663
974
 
664
- **Secrets** (`.env`, gitignored): Tokens, PATs, emails
665
- **Config** (`.specweave/config.json`, committed): Domains, strategies, sync settings
975
+ ### Secrets vs Configuration (v0.34.0+ MANDATORY)
976
+
977
+ **CRITICAL**: Configuration values MUST NOT be in .env. Use config.json via ConfigManager.
978
+
979
+ **Secrets** (`.env`, gitignored):
980
+ - `AZURE_DEVOPS_PAT` - Personal Access Token
981
+ - `JIRA_API_TOKEN` - API Token
982
+ - `JIRA_EMAIL` - Auth email
983
+ - `GH_TOKEN` / `GITHUB_TOKEN` - GitHub token
984
+
985
+ **Config** (`.specweave/config.json`, committed):
986
+ - `issueTracker.domain` - JIRA domain (e.g., "company.atlassian.net")
987
+ - `issueTracker.organization_ado` - ADO organization name
988
+ - `issueTracker.project` - Project name
989
+ - `sync.profiles` - Sync profile configurations
990
+
991
+ ### FORBIDDEN Patterns (Pre-tool-use hook blocks these)
992
+ ```typescript
993
+ // NEVER DO THIS in src/ files:
994
+ const domain = process.env.JIRA_DOMAIN; // VIOLATION!
995
+ const org = process.env.AZURE_DEVOPS_ORG; // VIOLATION!
996
+
997
+ // ALWAYS DO THIS:
998
+ const config = await this.configManager.read();
999
+ const domain = config.issueTracker?.domain || '';
1000
+ const org = config.issueTracker?.organization_ado || '';
1001
+ ```
1002
+
1003
+ ### Migration from .env to config.json
1004
+ ```bash
1005
+ # 1. Add to config.json
1006
+ specweave config set issueTracker.domain "company.atlassian.net"
1007
+ specweave config set issueTracker.organization_ado "my-org"
1008
+
1009
+ # 2. Remove deprecated vars from .env (keep only secrets)
1010
+ # JIRA_DOMAIN=xxx # DELETE THIS LINE
1011
+ # AZURE_DEVOPS_ORG=xxx # DELETE THIS LINE
1012
+
1013
+ # 3. Keep these in .env (secrets):
1014
+ AZURE_DEVOPS_PAT=xxx
1015
+ JIRA_API_TOKEN=xxx
1016
+ JIRA_EMAIL=xxx
1017
+ ```
1018
+
1019
+ ### ADR Reference
1020
+ See ADR-0194 for full architecture decision.
666
1021
 
667
1022
  ---
668
1023
 
669
1024
  ## Commands
670
1025
 
671
1026
  ```bash
672
- /specweave:increment "feature" # Plan new increment
673
- /specweave:do # Execute tasks
674
- /specweave:done 0002 # Close (validates gates)
675
- /specweave:progress # Show status
676
- /specweave:sync-progress # Full sync (tasks→docs→GitHub/JIRA/ADO)
677
- /specweave:validate 0001 # Validate increment
1027
+ /sw:increment "feature" # Plan new increment
1028
+ /sw:do # Execute tasks
1029
+ /sw:done 0002 # Close (validates gates)
1030
+ /sw:progress # Show status
1031
+ /sw:sync-progress # Full sync (tasks→docs→GitHub/JIRA/ADO)
1032
+ /sw:validate 0001 # Validate increment
1033
+ /sw:living-docs # Launch living docs builder (interactive)
1034
+ /sw:living-docs --full-scan # Full deep scan (all phases: repos, org, arch, inconsistencies, strategy)
678
1035
  ```
679
1036
 
680
1037
  ---