specweave 0.33.4 → 0.33.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (719) hide show
  1. package/.claude-plugin/README.md +13 -13
  2. package/.claude-plugin/marketplace.json +26 -37
  3. package/CLAUDE.md +445 -80
  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/jobs.js +19 -2
  69. package/dist/src/cli/commands/jobs.js.map +1 -1
  70. package/dist/src/cli/commands/living-docs.d.ts +1 -0
  71. package/dist/src/cli/commands/living-docs.d.ts.map +1 -1
  72. package/dist/src/cli/commands/living-docs.js +19 -3
  73. package/dist/src/cli/commands/living-docs.js.map +1 -1
  74. package/dist/src/cli/commands/migrate-to-multiproject.js +1 -1
  75. package/dist/src/cli/commands/migrate-to-multiproject.js.map +1 -1
  76. package/dist/src/cli/commands/migrate-to-profiles.js +1 -1
  77. package/dist/src/cli/commands/migrate-to-profiles.js.map +1 -1
  78. package/dist/src/cli/commands/next-command.d.ts +1 -1
  79. package/dist/src/cli/commands/next-command.js +9 -9
  80. package/dist/src/cli/commands/next-command.js.map +1 -1
  81. package/dist/src/cli/commands/notifications.js +3 -3
  82. package/dist/src/cli/commands/notifications.js.map +1 -1
  83. package/dist/src/cli/commands/plan/increment-detector.js +2 -2
  84. package/dist/src/cli/commands/plan/increment-detector.js.map +1 -1
  85. package/dist/src/cli/commands/plan/plan-orchestrator.d.ts +2 -2
  86. package/dist/src/cli/commands/plan/plan-orchestrator.js +2 -2
  87. package/dist/src/cli/commands/plan/plan-validator.js +2 -2
  88. package/dist/src/cli/commands/plan/plan-validator.js.map +1 -1
  89. package/dist/src/cli/commands/plan/types.d.ts +1 -1
  90. package/dist/src/cli/commands/plan/types.js +1 -1
  91. package/dist/src/cli/commands/plan-command.d.ts +3 -3
  92. package/dist/src/cli/commands/plan-command.js +12 -12
  93. package/dist/src/cli/commands/plan-command.js.map +1 -1
  94. package/dist/src/cli/commands/project.d.ts +77 -0
  95. package/dist/src/cli/commands/project.d.ts.map +1 -0
  96. package/dist/src/cli/commands/project.js +526 -0
  97. package/dist/src/cli/commands/project.js.map +1 -0
  98. package/dist/src/cli/commands/save.d.ts +49 -0
  99. package/dist/src/cli/commands/save.d.ts.map +1 -0
  100. package/dist/src/cli/commands/save.js +583 -0
  101. package/dist/src/cli/commands/save.js.map +1 -0
  102. package/dist/src/cli/commands/sync-spec-commits.js +15 -6
  103. package/dist/src/cli/commands/sync-spec-commits.js.map +1 -1
  104. package/dist/src/cli/commands/sync-spec-content.js +15 -6
  105. package/dist/src/cli/commands/sync-spec-content.js.map +1 -1
  106. package/dist/src/cli/helpers/init/ado-repo-cloning.js +2 -2
  107. package/dist/src/cli/helpers/init/ado-repo-cloning.js.map +1 -1
  108. package/dist/src/cli/helpers/init/bitbucket-repo-cloning.d.ts +1 -1
  109. package/dist/src/cli/helpers/init/bitbucket-repo-cloning.js +3 -3
  110. package/dist/src/cli/helpers/init/bitbucket-repo-cloning.js.map +1 -1
  111. package/dist/src/cli/helpers/init/brownfield-analysis.js +18 -18
  112. package/dist/src/cli/helpers/init/brownfield-analysis.js.map +1 -1
  113. package/dist/src/cli/helpers/init/directory-structure.d.ts.map +1 -1
  114. package/dist/src/cli/helpers/init/directory-structure.js +3 -0
  115. package/dist/src/cli/helpers/init/directory-structure.js.map +1 -1
  116. package/dist/src/cli/helpers/init/external-import-grouping.d.ts.map +1 -1
  117. package/dist/src/cli/helpers/init/external-import-grouping.js +11 -7
  118. package/dist/src/cli/helpers/init/external-import-grouping.js.map +1 -1
  119. package/dist/src/cli/helpers/init/external-import.js +18 -18
  120. package/dist/src/cli/helpers/init/external-import.js.map +1 -1
  121. package/dist/src/cli/helpers/init/github-repo-cloning.d.ts +1 -1
  122. package/dist/src/cli/helpers/init/github-repo-cloning.js +3 -3
  123. package/dist/src/cli/helpers/init/github-repo-cloning.js.map +1 -1
  124. package/dist/src/cli/helpers/init/initial-increment-generator.js +12 -12
  125. package/dist/src/cli/helpers/init/living-docs-preflight.js +5 -5
  126. package/dist/src/cli/helpers/init/living-docs-preflight.js.map +1 -1
  127. package/dist/src/cli/helpers/init/next-steps.js +9 -9
  128. package/dist/src/cli/helpers/init/next-steps.js.map +1 -1
  129. package/dist/src/cli/helpers/init/plugin-installer.js +3 -3
  130. package/dist/src/cli/helpers/init/plugin-installer.js.map +1 -1
  131. package/dist/src/cli/helpers/init/translation-config.js +9 -9
  132. package/dist/src/cli/helpers/init/translation-config.js.map +1 -1
  133. package/dist/src/cli/helpers/init/types.d.ts +1 -1
  134. package/dist/src/cli/helpers/init/types.d.ts.map +1 -1
  135. package/dist/src/cli/helpers/issue-tracker/ado.js +1 -1
  136. package/dist/src/cli/helpers/issue-tracker/ado.js.map +1 -1
  137. package/dist/src/cli/helpers/issue-tracker/github.js +1 -1
  138. package/dist/src/cli/helpers/issue-tracker/github.js.map +1 -1
  139. package/dist/src/cli/helpers/issue-tracker/index.js +2 -2
  140. package/dist/src/cli/helpers/issue-tracker/index.js.map +1 -1
  141. package/dist/src/cli/helpers/issue-tracker/jira.js +1 -1
  142. package/dist/src/cli/helpers/issue-tracker/jira.js.map +1 -1
  143. package/dist/src/cli/update-status-line.js +1 -1
  144. package/dist/src/cli/update-status-line.js.map +1 -1
  145. package/dist/src/cli/workers/brownfield-worker.js +1 -1
  146. package/dist/src/cli/workers/brownfield-worker.js.map +1 -1
  147. package/dist/src/cli/workers/clone-worker.js +22 -5
  148. package/dist/src/cli/workers/clone-worker.js.map +1 -1
  149. package/dist/src/cli/workers/import-worker.js +1 -1
  150. package/dist/src/cli/workers/import-worker.js.map +1 -1
  151. package/dist/src/core/background/brownfield-launcher.js +4 -4
  152. package/dist/src/core/background/brownfield-launcher.js.map +1 -1
  153. package/dist/src/core/background/index.d.ts +3 -3
  154. package/dist/src/core/background/index.js +3 -3
  155. package/dist/src/core/background/job-dependency.d.ts.map +1 -1
  156. package/dist/src/core/background/job-dependency.js +1 -0
  157. package/dist/src/core/background/job-dependency.js.map +1 -1
  158. package/dist/src/core/background/job-launcher.d.ts +1 -1
  159. package/dist/src/core/background/job-launcher.js +5 -5
  160. package/dist/src/core/background/job-launcher.js.map +1 -1
  161. package/dist/src/core/background/job-manager.d.ts +8 -0
  162. package/dist/src/core/background/job-manager.d.ts.map +1 -1
  163. package/dist/src/core/background/job-manager.js +19 -1
  164. package/dist/src/core/background/job-manager.js.map +1 -1
  165. package/dist/src/core/background/types.d.ts +9 -1
  166. package/dist/src/core/background/types.d.ts.map +1 -1
  167. package/dist/src/core/background/types.js +8 -1
  168. package/dist/src/core/background/types.js.map +1 -1
  169. package/dist/src/core/brownfield/importer.js +1 -1
  170. package/dist/src/core/brownfield/importer.js.map +1 -1
  171. package/dist/src/core/config/config-manager.d.ts +7 -1
  172. package/dist/src/core/config/config-manager.d.ts.map +1 -1
  173. package/dist/src/core/config/config-manager.js +24 -2
  174. package/dist/src/core/config/config-manager.js.map +1 -1
  175. package/dist/src/core/config/single-project-migrator.d.ts +110 -0
  176. package/dist/src/core/config/single-project-migrator.d.ts.map +1 -0
  177. package/dist/src/core/config/single-project-migrator.js +179 -0
  178. package/dist/src/core/config/single-project-migrator.js.map +1 -0
  179. package/dist/src/core/config/types.d.ts +3 -3
  180. package/dist/src/core/credentials/credentials-manager.d.ts +25 -4
  181. package/dist/src/core/credentials/credentials-manager.d.ts.map +1 -1
  182. package/dist/src/core/credentials/credentials-manager.js +54 -15
  183. package/dist/src/core/credentials/credentials-manager.js.map +1 -1
  184. package/dist/src/core/deduplication/command-deduplicator.d.ts +4 -4
  185. package/dist/src/core/deduplication/command-deduplicator.d.ts.map +1 -1
  186. package/dist/src/core/deduplication/command-deduplicator.js +3 -3
  187. package/dist/src/core/external-tools/external-items-counter.d.ts +4 -4
  188. package/dist/src/core/external-tools/external-items-counter.js +4 -4
  189. package/dist/src/core/external-tools/external-items-display.js +4 -4
  190. package/dist/src/core/external-tools/external-items-display.js.map +1 -1
  191. package/dist/src/core/increment/completion-validator.js +3 -3
  192. package/dist/src/core/increment/completion-validator.js.map +1 -1
  193. package/dist/src/core/increment/conflict-resolver.js +2 -2
  194. package/dist/src/core/increment/conflict-resolver.js.map +1 -1
  195. package/dist/src/core/increment/desync-detector.d.ts +1 -1
  196. package/dist/src/core/increment/desync-detector.js +3 -3
  197. package/dist/src/core/increment/desync-detector.js.map +1 -1
  198. package/dist/src/core/increment/discipline-checker.js +2 -2
  199. package/dist/src/core/increment/discipline-checker.js.map +1 -1
  200. package/dist/src/core/increment/increment-archiver.js +4 -4
  201. package/dist/src/core/increment/increment-archiver.js.map +1 -1
  202. package/dist/src/core/increment/increment-utils.d.ts +53 -2
  203. package/dist/src/core/increment/increment-utils.d.ts.map +1 -1
  204. package/dist/src/core/increment/increment-utils.js +78 -7
  205. package/dist/src/core/increment/increment-utils.js.map +1 -1
  206. package/dist/src/core/increment/metadata-manager.js +6 -6
  207. package/dist/src/core/increment/metadata-manager.js.map +1 -1
  208. package/dist/src/core/increment/metadata-validator.js +1 -1
  209. package/dist/src/core/increment/metadata-validator.js.map +1 -1
  210. package/dist/src/core/increment/recent-work-scanner.js +2 -2
  211. package/dist/src/core/increment/recent-work-scanner.js.map +1 -1
  212. package/dist/src/core/increment/spec-sync-manager.js +1 -1
  213. package/dist/src/core/increment/spec-sync-manager.js.map +1 -1
  214. package/dist/src/core/increment/status-auto-transition.d.ts +68 -1
  215. package/dist/src/core/increment/status-auto-transition.d.ts.map +1 -1
  216. package/dist/src/core/increment/status-auto-transition.js +141 -1
  217. package/dist/src/core/increment/status-auto-transition.js.map +1 -1
  218. package/dist/src/core/increment/status-change-sync-trigger.d.ts +1 -1
  219. package/dist/src/core/increment/status-change-sync-trigger.js +3 -3
  220. package/dist/src/core/increment/status-change-sync-trigger.js.map +1 -1
  221. package/dist/src/core/living-docs/cross-project-sync.d.ts +12 -0
  222. package/dist/src/core/living-docs/cross-project-sync.d.ts.map +1 -1
  223. package/dist/src/core/living-docs/cross-project-sync.js +33 -0
  224. package/dist/src/core/living-docs/cross-project-sync.js.map +1 -1
  225. package/dist/src/core/living-docs/feature-archiver.d.ts +3 -3
  226. package/dist/src/core/living-docs/feature-archiver.js +3 -3
  227. package/dist/src/core/living-docs/feature-consistency-validator.js +1 -1
  228. package/dist/src/core/living-docs/feature-consistency-validator.js.map +1 -1
  229. package/dist/src/core/living-docs/feature-id-manager.d.ts +5 -0
  230. package/dist/src/core/living-docs/feature-id-manager.d.ts.map +1 -1
  231. package/dist/src/core/living-docs/feature-id-manager.js +19 -1
  232. package/dist/src/core/living-docs/feature-id-manager.js.map +1 -1
  233. package/dist/src/core/living-docs/governance/standards-generator.js +1 -1
  234. package/dist/src/core/living-docs/governance/standards-generator.js.map +1 -1
  235. package/dist/src/core/living-docs/hierarchy-mapper.d.ts +5 -0
  236. package/dist/src/core/living-docs/hierarchy-mapper.d.ts.map +1 -1
  237. package/dist/src/core/living-docs/hierarchy-mapper.js +22 -2
  238. package/dist/src/core/living-docs/hierarchy-mapper.js.map +1 -1
  239. package/dist/src/core/living-docs/living-docs-sync.d.ts +1 -0
  240. package/dist/src/core/living-docs/living-docs-sync.d.ts.map +1 -1
  241. package/dist/src/core/living-docs/living-docs-sync.js +77 -8
  242. package/dist/src/core/living-docs/living-docs-sync.js.map +1 -1
  243. package/dist/src/core/living-docs/project-detector.d.ts +9 -0
  244. package/dist/src/core/living-docs/project-detector.d.ts.map +1 -1
  245. package/dist/src/core/living-docs/project-detector.js +38 -3
  246. package/dist/src/core/living-docs/project-detector.js.map +1 -1
  247. package/dist/src/core/living-docs/suggestions-generator.js +1 -1
  248. package/dist/src/core/living-docs/suggestions-generator.js.map +1 -1
  249. package/dist/src/core/notifications/command-integration.js +1 -1
  250. package/dist/src/core/notifications/command-integration.js.map +1 -1
  251. package/dist/src/core/project/adapters/ado-project-adapter.d.ts +73 -0
  252. package/dist/src/core/project/adapters/ado-project-adapter.d.ts.map +1 -0
  253. package/dist/src/core/project/adapters/ado-project-adapter.js +304 -0
  254. package/dist/src/core/project/adapters/ado-project-adapter.js.map +1 -0
  255. package/dist/src/core/project/adapters/github-project-adapter.d.ts +76 -0
  256. package/dist/src/core/project/adapters/github-project-adapter.d.ts.map +1 -0
  257. package/dist/src/core/project/adapters/github-project-adapter.js +315 -0
  258. package/dist/src/core/project/adapters/github-project-adapter.js.map +1 -0
  259. package/dist/src/core/project/adapters/jira-project-adapter.d.ts +69 -0
  260. package/dist/src/core/project/adapters/jira-project-adapter.d.ts.map +1 -0
  261. package/dist/src/core/project/adapters/jira-project-adapter.js +241 -0
  262. package/dist/src/core/project/adapters/jira-project-adapter.js.map +1 -0
  263. package/dist/src/core/project/project-event-bus.d.ts +72 -0
  264. package/dist/src/core/project/project-event-bus.d.ts.map +1 -0
  265. package/dist/src/core/project/project-event-bus.js +150 -0
  266. package/dist/src/core/project/project-event-bus.js.map +1 -0
  267. package/dist/src/core/project/project-manager.d.ts +0 -22
  268. package/dist/src/core/project/project-manager.d.ts.map +1 -1
  269. package/dist/src/core/project/project-manager.js +5 -275
  270. package/dist/src/core/project/project-manager.js.map +1 -1
  271. package/dist/src/core/project/project-registry.d.ts +93 -0
  272. package/dist/src/core/project/project-registry.d.ts.map +1 -0
  273. package/dist/src/core/project/project-registry.js +448 -0
  274. package/dist/src/core/project/project-registry.js.map +1 -0
  275. package/dist/src/core/project/project-resolution.d.ts +229 -0
  276. package/dist/src/core/project/project-resolution.d.ts.map +1 -0
  277. package/dist/src/core/project/project-resolution.js +633 -0
  278. package/dist/src/core/project/project-resolution.js.map +1 -0
  279. package/dist/src/core/project/types/project-types.d.ts +214 -0
  280. package/dist/src/core/project/types/project-types.d.ts.map +1 -0
  281. package/dist/src/core/project/types/project-types.js +9 -0
  282. package/dist/src/core/project/types/project-types.js.map +1 -0
  283. package/dist/src/core/repo-structure/setup-summary.js +2 -2
  284. package/dist/src/core/repo-structure/setup-summary.js.map +1 -1
  285. package/dist/src/core/specs/spec-identifier-detector.d.ts.map +1 -1
  286. package/dist/src/core/specs/spec-identifier-detector.js +8 -5
  287. package/dist/src/core/specs/spec-identifier-detector.js.map +1 -1
  288. package/dist/src/core/status-line/status-line-updater.js +1 -1
  289. package/dist/src/core/status-line/status-line-updater.js.map +1 -1
  290. package/dist/src/core/types/increment-metadata.d.ts +3 -3
  291. package/dist/src/core/types/increment-metadata.js +3 -3
  292. package/dist/src/core/types/increment-metadata.js.map +1 -1
  293. package/dist/src/core/types/sync-profile.d.ts +1 -0
  294. package/dist/src/core/types/sync-profile.d.ts.map +1 -1
  295. package/dist/src/core/types/sync-profile.js.map +1 -1
  296. package/dist/src/core/validators/ac-presence-validator.d.ts +4 -4
  297. package/dist/src/core/validators/ac-presence-validator.js +3 -3
  298. package/dist/src/core/validators/ac-presence-validator.js.map +1 -1
  299. package/dist/src/core/workflow/backlog-scanner.d.ts +5 -0
  300. package/dist/src/core/workflow/backlog-scanner.d.ts.map +1 -1
  301. package/dist/src/core/workflow/backlog-scanner.js +14 -2
  302. package/dist/src/core/workflow/backlog-scanner.js.map +1 -1
  303. package/dist/src/core/workflow/phase-detector.js +17 -17
  304. package/dist/src/core/workflow/phase-detector.js.map +1 -1
  305. package/dist/src/core/workflow/types.d.ts +1 -1
  306. package/dist/src/core/workflow/types.d.ts.map +1 -1
  307. package/dist/src/core/workflow/workflow-orchestrator.d.ts +1 -1
  308. package/dist/src/core/workflow/workflow-orchestrator.js +9 -9
  309. package/dist/src/core/workflow/workflow-orchestrator.js.map +1 -1
  310. package/dist/src/hooks/scheduler-startup.js +1 -1
  311. package/dist/src/hooks/scheduler-startup.js.map +1 -1
  312. package/dist/src/importers/external-importer.d.ts +26 -5
  313. package/dist/src/importers/external-importer.d.ts.map +1 -1
  314. package/dist/src/importers/item-converter.d.ts.map +1 -1
  315. package/dist/src/importers/item-converter.js +19 -2
  316. package/dist/src/importers/item-converter.js.map +1 -1
  317. package/dist/src/importers/jira-importer.d.ts.map +1 -1
  318. package/dist/src/importers/jira-importer.js +15 -1
  319. package/dist/src/importers/jira-importer.js.map +1 -1
  320. package/dist/src/integrations/jira/jira-incremental-mapper.d.ts +17 -1
  321. package/dist/src/integrations/jira/jira-incremental-mapper.d.ts.map +1 -1
  322. package/dist/src/integrations/jira/jira-incremental-mapper.js +20 -12
  323. package/dist/src/integrations/jira/jira-incremental-mapper.js.map +1 -1
  324. package/dist/src/integrations/jira/jira-mapper.d.ts +17 -1
  325. package/dist/src/integrations/jira/jira-mapper.d.ts.map +1 -1
  326. package/dist/src/integrations/jira/jira-mapper.js +13 -5
  327. package/dist/src/integrations/jira/jira-mapper.js.map +1 -1
  328. package/dist/src/living-docs/enterprise-analyzer.js +1 -1
  329. package/dist/src/living-docs/enterprise-analyzer.js.map +1 -1
  330. package/dist/src/living-docs/smart-doc-organizer.js +1 -1
  331. package/dist/src/living-docs/smart-doc-organizer.js.map +1 -1
  332. package/dist/src/sync/ado-reconciler.d.ts +5 -0
  333. package/dist/src/sync/ado-reconciler.d.ts.map +1 -1
  334. package/dist/src/sync/ado-reconciler.js +16 -4
  335. package/dist/src/sync/ado-reconciler.js.map +1 -1
  336. package/dist/src/sync/jira-reconciler.d.ts +3 -0
  337. package/dist/src/sync/jira-reconciler.d.ts.map +1 -1
  338. package/dist/src/sync/jira-reconciler.js +12 -5
  339. package/dist/src/sync/jira-reconciler.js.map +1 -1
  340. package/dist/src/types/dashboard-cache.d.ts +4 -2
  341. package/dist/src/types/dashboard-cache.d.ts.map +1 -1
  342. package/dist/src/types/dashboard-cache.js +1 -1
  343. package/dist/src/types/dashboard-cache.js.map +1 -1
  344. package/dist/src/utils/ac-embedder.d.ts +1 -1
  345. package/dist/src/utils/docs-preview/config-generator.d.ts.map +1 -1
  346. package/dist/src/utils/docs-preview/config-generator.js +4 -0
  347. package/dist/src/utils/docs-preview/config-generator.js.map +1 -1
  348. package/dist/src/utils/docs-preview/docusaurus-setup.js +2 -2
  349. package/dist/src/utils/docs-preview/docusaurus-setup.js.map +1 -1
  350. package/dist/src/utils/docs-preview/sidebar-builder.js +1 -1
  351. package/dist/src/utils/env-multi-project-parser.d.ts +17 -0
  352. package/dist/src/utils/env-multi-project-parser.d.ts.map +1 -1
  353. package/dist/src/utils/env-multi-project-parser.js +26 -1
  354. package/dist/src/utils/env-multi-project-parser.js.map +1 -1
  355. package/dist/src/utils/external-tool-drift-detector.d.ts +2 -2
  356. package/dist/src/utils/external-tool-drift-detector.js +6 -6
  357. package/dist/src/utils/external-tool-drift-detector.js.map +1 -1
  358. package/dist/src/utils/notification-constants.d.ts +8 -6
  359. package/dist/src/utils/notification-constants.d.ts.map +1 -1
  360. package/dist/src/utils/notification-constants.js +10 -8
  361. package/dist/src/utils/notification-constants.js.map +1 -1
  362. package/dist/src/utils/notification-manager.d.ts +36 -3
  363. package/dist/src/utils/notification-manager.d.ts.map +1 -1
  364. package/dist/src/utils/notification-manager.js +80 -49
  365. package/dist/src/utils/notification-manager.js.map +1 -1
  366. package/dist/src/utils/platform-utils.d.ts +12 -3
  367. package/dist/src/utils/platform-utils.d.ts.map +1 -1
  368. package/dist/src/utils/platform-utils.js +35 -16
  369. package/dist/src/utils/platform-utils.js.map +1 -1
  370. package/dist/src/utils/plugin-validator.js +11 -11
  371. package/dist/src/utils/plugin-validator.js.map +1 -1
  372. package/dist/src/validators/ac-coverage-validator.d.ts +1 -1
  373. package/dist/src/validators/ac-coverage-validator.js +1 -1
  374. package/package.json +3 -1
  375. package/plugins/PLUGINS-INDEX.md +1 -2
  376. package/plugins/specweave/.claude-plugin/plugin.json +1 -1
  377. package/plugins/specweave/COMMANDS.md +49 -49
  378. package/plugins/specweave/agents/pm/AGENT.md +18 -18
  379. package/plugins/specweave/agents/test-aware-planner/AGENT.md +7 -7
  380. package/plugins/specweave/agents/translator/AGENT.md +2 -2
  381. package/plugins/specweave/commands/{specweave-abandon.md → abandon.md} +20 -20
  382. package/plugins/specweave/commands/{specweave-analyze-standards.sh → analyze-standards.sh} +4 -4
  383. package/plugins/specweave/commands/{specweave-archive-features.md → archive-features.md} +7 -7
  384. package/plugins/specweave/commands/{specweave-archive.md → archive.md} +36 -36
  385. package/plugins/specweave/commands/{specweave-backlog.md → backlog.md} +24 -24
  386. package/plugins/specweave/commands/{specweave-check-hooks.md → check-hooks.md} +10 -10
  387. package/plugins/specweave/commands/{specweave-check-tests.md → check-tests.md} +14 -14
  388. package/plugins/specweave/commands/{specweave-costs.md → costs.md} +8 -8
  389. package/plugins/specweave/commands/{specweave-discrepancies.md → discrepancies.md} +15 -15
  390. package/plugins/specweave/commands/{specweave-discrepancy-to-increment.md → discrepancy-to-increment.md} +10 -10
  391. package/plugins/specweave/commands/{specweave-do.md → do.md} +37 -39
  392. package/plugins/specweave/commands/{specweave-done.md → done.md} +23 -23
  393. package/plugins/specweave/commands/{specweave-embed-acs.md → embed-acs.md} +21 -21
  394. package/plugins/specweave/commands/{specweave-external.md → external.md} +11 -11
  395. package/plugins/specweave/commands/{specweave-fix-duplicates.md → fix-duplicates.md} +16 -16
  396. package/plugins/specweave/commands/{specweave-import-docs.md → import-docs.md} +7 -7
  397. package/plugins/specweave/commands/{specweave-import-external.md → import-external.md} +9 -9
  398. package/plugins/specweave/commands/{specweave-increment.md → increment.md} +17 -17
  399. package/plugins/specweave/commands/{specweave-jobs.md → jobs.md} +28 -28
  400. package/plugins/specweave/commands/judge-llm.md +296 -0
  401. package/plugins/specweave/commands/{specweave-living-docs.md → living-docs.md} +72 -29
  402. package/plugins/specweave/commands/migrate-config.md +2 -2
  403. package/plugins/specweave/commands/{specweave-next.md → next.md} +20 -20
  404. package/plugins/specweave/commands/{specweave-notifications.md → notifications.md} +11 -11
  405. package/plugins/specweave/commands/{specweave-organize-docs.md → organize-docs.md} +9 -9
  406. package/plugins/specweave/commands/{specweave-pause.md → pause.md} +19 -19
  407. package/plugins/specweave/commands/{specweave-plan.md → plan.md} +19 -19
  408. package/plugins/specweave/commands/{specweave-progress.md → progress.md} +6 -6
  409. package/plugins/specweave/commands/{specweave-qa.md → qa.md} +15 -15
  410. package/plugins/specweave/commands/{specweave-reopen.md → reopen.md} +41 -41
  411. package/plugins/specweave/commands/{specweave-restore-feature.md → restore-feature.md} +6 -6
  412. package/plugins/specweave/commands/{specweave-restore.md → restore.md} +26 -26
  413. package/plugins/specweave/commands/{specweave-resume.md → resume.md} +33 -33
  414. package/plugins/specweave/commands/revert-wip-limit.md +4 -4
  415. package/plugins/specweave/commands/{specweave-save.md → save.md} +34 -34
  416. package/plugins/specweave/commands/{specweave-status.md → status.md} +29 -29
  417. package/plugins/specweave/commands/{specweave.md → sw.md} +28 -28
  418. package/plugins/specweave/commands/{specweave-sync-acs.md → sync-acs.md} +12 -12
  419. package/plugins/specweave/commands/sync-diagnostics.md +5 -5
  420. package/plugins/specweave/commands/{specweave-sync-docs.md → sync-docs.md} +7 -7
  421. package/plugins/specweave/commands/{specweave-sync-logs.md → sync-logs.md} +14 -14
  422. package/plugins/specweave/commands/{specweave-sync-monitor.md → sync-monitor.md} +5 -5
  423. package/plugins/specweave/commands/{specweave-sync-progress.md → sync-progress.md} +38 -38
  424. package/plugins/specweave/commands/{specweave-sync-specs.md → sync-specs.md} +17 -17
  425. package/plugins/specweave/commands/{specweave-sync-status.md → sync-status.md} +16 -16
  426. package/plugins/specweave/commands/{specweave-sync-tasks.md → sync-tasks.md} +13 -13
  427. package/plugins/specweave/commands/{specweave-tdd-cycle.md → tdd-cycle.md} +1 -1
  428. package/plugins/specweave/commands/{specweave-tdd-green.md → tdd-green.md} +1 -1
  429. package/plugins/specweave/commands/{specweave-tdd-red.md → tdd-red.md} +1 -1
  430. package/plugins/specweave/commands/{specweave-tdd-refactor.md → tdd-refactor.md} +1 -1
  431. package/plugins/specweave/commands/{specweave-translate.md → translate.md} +17 -17
  432. package/plugins/specweave/commands/{specweave-update-scope.md → update-scope.md} +8 -8
  433. package/plugins/specweave/commands/{specweave-update-status.md → update-status.md} +6 -6
  434. package/plugins/specweave/commands/{specweave-validate-features.md → validate-features.md} +8 -8
  435. package/plugins/specweave/commands/{specweave-validate.md → validate.md} +20 -20
  436. package/plugins/specweave/commands/{specweave-workflow.md → workflow.md} +40 -40
  437. package/plugins/specweave/hooks/README.md +5 -5
  438. package/plugins/specweave/hooks/config-env-separator.sh +99 -0
  439. package/plugins/specweave/hooks/github-metadata-guard.sh +73 -0
  440. package/plugins/specweave/hooks/hooks.json +41 -1
  441. package/plugins/specweave/hooks/post-first-increment.sh +2 -2
  442. package/plugins/specweave/hooks/post-increment-completion.sh +7 -7
  443. package/plugins/specweave/hooks/post-increment-planning.sh +11 -11
  444. package/plugins/specweave/hooks/post-increment-status-change.sh +1 -1
  445. package/plugins/specweave/hooks/post-metadata-change.sh +1 -1
  446. package/plugins/specweave/hooks/post-spec-update.sh +2 -2
  447. package/plugins/specweave/hooks/post-task-completion.sh +2 -2
  448. package/plugins/specweave/hooks/pre-increment-start.sh +7 -7
  449. package/plugins/specweave/hooks/project-folder-guard.sh +272 -0
  450. package/plugins/specweave/hooks/spec-project-validator.sh +68 -47
  451. package/plugins/specweave/hooks/user-prompt-submit.sh +27 -27
  452. package/plugins/specweave/hooks/v2/guards/completion-guard.sh +2 -2
  453. package/plugins/specweave/hooks/v2/guards/metadata-json-guard.sh +87 -0
  454. package/plugins/specweave/hooks/v2/guards/metadata-json-guard.test.sh +302 -0
  455. package/plugins/specweave/hooks/v2/guards/per-us-project-validator.sh +72 -18
  456. package/plugins/specweave/hooks/v2/guards/per-us-project-validator.test.sh +406 -0
  457. package/plugins/specweave/hooks/v2/handlers/github-sync-handler.sh +1 -1
  458. package/plugins/specweave/lib/hooks/consolidated-sync.js +35 -5
  459. package/plugins/specweave/lib/hooks/invoke-translator-skill.js +2 -2
  460. package/plugins/specweave/lib/hooks/invoke-translator-skill.ts +2 -2
  461. package/plugins/specweave/lib/hooks/prepare-reflection-context.js +1 -1
  462. package/plugins/specweave/lib/hooks/prepare-reflection-context.ts +1 -1
  463. package/plugins/specweave/lib/hooks/sync-living-docs.js +5 -5
  464. package/plugins/specweave/lib/hooks/translate-file.d.ts +1 -1
  465. package/plugins/specweave/lib/hooks/translate-file.js +2 -2
  466. package/plugins/specweave/lib/hooks/translate-file.ts +3 -3
  467. package/plugins/specweave/lib/hooks/us-completion-orchestrator.js +1 -1
  468. package/plugins/specweave/lib/hooks/us-completion-orchestrator.ts +2 -2
  469. package/plugins/specweave/lib/vendor/core/increment/metadata-manager.js +6 -6
  470. package/plugins/specweave/lib/vendor/core/increment/metadata-manager.js.map +1 -1
  471. package/plugins/specweave/lib/vendor/core/increment/status-auto-transition.d.ts +113 -0
  472. package/plugins/specweave/lib/vendor/core/increment/status-auto-transition.js +318 -0
  473. package/plugins/specweave/lib/vendor/core/increment/status-auto-transition.js.map +1 -0
  474. package/plugins/specweave/lib/vendor/core/types/increment-metadata.d.ts +3 -3
  475. package/plugins/specweave/lib/vendor/core/types/increment-metadata.js +3 -3
  476. package/plugins/specweave/lib/vendor/core/types/increment-metadata.js.map +1 -1
  477. package/plugins/specweave/scripts/README.md +9 -9
  478. package/plugins/specweave/scripts/cleanup-state.sh +1 -1
  479. package/plugins/specweave/scripts/jobs.js +2 -2
  480. package/plugins/specweave/scripts/progress.js +6 -6
  481. package/plugins/specweave/scripts/read-costs.sh +3 -3
  482. package/plugins/specweave/scripts/read-jobs.sh +8 -8
  483. package/plugins/specweave/scripts/read-progress.sh +17 -10
  484. package/plugins/specweave/scripts/read-status.sh +7 -7
  485. package/plugins/specweave/scripts/read-workflow.sh +18 -18
  486. package/plugins/specweave/scripts/rebuild-dashboard-cache.sh +6 -5
  487. package/plugins/specweave/scripts/session-watchdog.sh +14 -8
  488. package/plugins/specweave/scripts/status.js +7 -7
  489. package/plugins/specweave/scripts/update-dashboard-cache.sh +28 -10
  490. package/plugins/specweave/skills/SKILLS-INDEX.md +4 -4
  491. package/plugins/specweave/skills/archive-increments/SKILL.md +15 -15
  492. package/plugins/specweave/skills/brownfield-analyzer/SKILL.md +5 -5
  493. package/plugins/specweave/skills/code-standards-analyzer/SKILL.md +4 -4
  494. package/plugins/specweave/skills/context-loader/SKILL.md +1 -1
  495. package/plugins/specweave/skills/{specweave-detector → detector}/SKILL.md +5 -5
  496. package/plugins/specweave/skills/discrepancy-viewer.md +4 -4
  497. package/plugins/specweave/skills/external-sync-wizard/SKILL.md +24 -24
  498. package/plugins/specweave/skills/{specweave-framework → framework}/SKILL.md +33 -33
  499. package/plugins/specweave/skills/increment-planner/SKILL.md +25 -24
  500. package/plugins/specweave/skills/increment-planner/templates/spec-multi-project.md +6 -16
  501. package/plugins/specweave/skills/increment-planner/templates/spec-single-project.md +6 -12
  502. package/plugins/specweave/skills/increment-quality-judge-v2/SKILL.md +6 -6
  503. package/plugins/specweave/skills/increment-work-router/SKILL.md +23 -23
  504. package/plugins/specweave/skills/instant-status/SKILL.md +7 -7
  505. package/plugins/specweave/skills/plugin-validator/SKILL.md +9 -9
  506. package/plugins/specweave/skills/pm-closure-validation/SKILL.md +4 -4
  507. package/plugins/specweave/skills/progress-sync/SKILL.md +51 -51
  508. package/plugins/specweave/skills/project-kickstarter/SKILL.md +11 -11
  509. package/plugins/specweave/skills/role-orchestrator/README.md +1 -1
  510. package/plugins/specweave/skills/role-orchestrator/SKILL.md +4 -4
  511. package/plugins/specweave/skills/smart-reopen-detector/SKILL.md +17 -17
  512. package/plugins/specweave/skills/spec-generator/SKILL.md +6 -6
  513. package/plugins/specweave/skills/tdd-workflow/SKILL.md +21 -21
  514. package/plugins/specweave/skills/translator/SKILL.md +4 -4
  515. package/plugins/specweave/skills/umbrella-repo-detector/SKILL.md +5 -5
  516. package/plugins/specweave-ado/.claude-plugin/plugin.json +1 -1
  517. package/plugins/specweave-ado/agents/ado-manager/AGENT.md +4 -4
  518. package/plugins/specweave-ado/agents/ado-sync-judge/AGENT.md +4 -4
  519. package/plugins/specweave-ado/commands/cleanup-duplicates.md +9 -9
  520. package/plugins/specweave-ado/commands/clone.md +17 -17
  521. package/plugins/specweave-ado/commands/close.md +10 -10
  522. package/plugins/specweave-ado/commands/create.md +8 -8
  523. package/plugins/specweave-ado/commands/import-areas.md +15 -15
  524. package/plugins/specweave-ado/commands/import-projects.md +12 -12
  525. package/plugins/specweave-ado/commands/pull.md +25 -25
  526. package/plugins/specweave-ado/commands/push.md +20 -20
  527. package/plugins/specweave-ado/commands/reconcile.md +7 -7
  528. package/plugins/specweave-ado/commands/status.md +7 -7
  529. package/plugins/specweave-ado/commands/sync.md +17 -17
  530. package/plugins/specweave-ado/hooks/post-living-docs-update.sh +2 -2
  531. package/plugins/specweave-ado/lib/ado-project-detector.js +1 -1
  532. package/plugins/specweave-ado/lib/ado-project-detector.ts +1 -1
  533. package/plugins/specweave-ado/skills/{specweave-ado-mapper → ado-mapper}/SKILL.md +2 -2
  534. package/plugins/specweave-ado/skills/ado-multi-project/SKILL.md +6 -6
  535. package/plugins/specweave-ado/skills/ado-resource-validator/SKILL.md +5 -5
  536. package/plugins/specweave-ado/skills/ado-sync/SKILL.md +19 -19
  537. package/plugins/specweave-alternatives/.claude-plugin/plugin.json +1 -1
  538. package/plugins/specweave-alternatives/commands/alternatives-analyze.md +14 -14
  539. package/plugins/specweave-backend/.claude-plugin/plugin.json +1 -1
  540. package/plugins/specweave-confluent/.claude-plugin/plugin.json +1 -1
  541. package/plugins/specweave-cost-optimizer/.claude-plugin/plugin.json +1 -1
  542. package/plugins/specweave-cost-optimizer/commands/cost-analyze.md +1 -1
  543. package/plugins/specweave-cost-optimizer/commands/cost-optimize.md +1 -1
  544. package/plugins/specweave-diagrams/.claude-plugin/plugin.json +1 -1
  545. package/plugins/specweave-diagrams/commands/diagrams-generate.md +1 -1
  546. package/plugins/specweave-docs/.claude-plugin/plugin.json +1 -1
  547. package/plugins/specweave-docs/commands/build.md +9 -9
  548. package/plugins/specweave-docs/commands/generate.md +22 -22
  549. package/plugins/specweave-docs/commands/health.md +10 -10
  550. package/plugins/specweave-docs/commands/init.md +9 -9
  551. package/plugins/specweave-docs/commands/organize.md +10 -10
  552. package/plugins/specweave-docs/commands/validate.md +9 -9
  553. package/plugins/specweave-docs/commands/view.md +391 -0
  554. package/plugins/specweave-docs/skills/preview/SKILL.md +60 -21
  555. package/plugins/specweave-figma/.claude-plugin/plugin.json +1 -1
  556. package/plugins/specweave-figma/commands/figma-import.md +1 -1
  557. package/plugins/specweave-figma/commands/figma-to-react.md +1 -1
  558. package/plugins/specweave-figma/commands/figma-tokens.md +1 -1
  559. package/plugins/specweave-frontend/.claude-plugin/plugin.json +1 -1
  560. package/plugins/specweave-frontend/agents/frontend-architect/README.md +5 -5
  561. package/plugins/specweave-frontend/commands/component-generate.md +1 -1
  562. package/plugins/specweave-frontend/commands/design-system-init.md +1 -1
  563. package/plugins/specweave-frontend/commands/frontend-scaffold.md +1 -1
  564. package/plugins/specweave-frontend/commands/nextjs-setup.md +1 -1
  565. package/plugins/specweave-github/.claude-plugin/plugin.json +1 -1
  566. package/plugins/specweave-github/MULTI-PROJECT-SYNC-ARCHITECTURE.md +4 -4
  567. package/plugins/specweave-github/SYNC-ARCHITECTURE-FIX-SUMMARY.md +18 -18
  568. package/plugins/specweave-github/agents/github-manager/AGENT.md +8 -8
  569. package/plugins/specweave-github/commands/cleanup-duplicates.md +8 -8
  570. package/plugins/specweave-github/commands/close.md +25 -25
  571. package/plugins/specweave-github/commands/create.md +17 -17
  572. package/plugins/specweave-github/commands/pull.md +12 -12
  573. package/plugins/specweave-github/commands/push.md +12 -12
  574. package/plugins/specweave-github/commands/reconcile.md +7 -7
  575. package/plugins/specweave-github/commands/status.md +24 -24
  576. package/plugins/specweave-github/commands/sync.md +34 -34
  577. package/plugins/specweave-github/commands/update-user-story.md +6 -6
  578. package/plugins/specweave-github/hooks/README.md +8 -8
  579. package/plugins/specweave-github/hooks/post-task-completion.sh +2 -2
  580. package/plugins/specweave-github/lib/ThreeLayerSyncManager.js +12 -4
  581. package/plugins/specweave-github/lib/ThreeLayerSyncManager.ts +16 -4
  582. package/plugins/specweave-github/lib/completion-calculator.js +3 -1
  583. package/plugins/specweave-github/lib/completion-calculator.ts +6 -0
  584. package/plugins/specweave-github/lib/duplicate-detector.js +12 -6
  585. package/plugins/specweave-github/lib/duplicate-detector.ts +22 -6
  586. package/plugins/specweave-github/lib/github-board-resolver.js +7 -2
  587. package/plugins/specweave-github/lib/github-board-resolver.ts +13 -2
  588. package/plugins/specweave-github/lib/github-client-v2.js +29 -18
  589. package/plugins/specweave-github/lib/github-client-v2.ts +33 -18
  590. package/plugins/specweave-github/lib/github-feature-sync.js +41 -11
  591. package/plugins/specweave-github/lib/github-feature-sync.ts +52 -11
  592. package/plugins/specweave-github/lib/github-hierarchical-sync.js +6 -1
  593. package/plugins/specweave-github/lib/github-hierarchical-sync.ts +12 -1
  594. package/plugins/specweave-github/lib/github-increment-sync-cli.js +35 -17
  595. package/plugins/specweave-github/lib/github-increment-sync-cli.ts +44 -16
  596. package/plugins/specweave-github/lib/github-issue-updater.js +8 -3
  597. package/plugins/specweave-github/lib/github-issue-updater.ts +16 -3
  598. package/plugins/specweave-github/lib/github-spec-sync.js +14 -4
  599. package/plugins/specweave-github/lib/github-spec-sync.ts +19 -4
  600. package/plugins/specweave-github/lib/github-sync-bidirectional.js +8 -3
  601. package/plugins/specweave-github/lib/github-sync-bidirectional.ts +14 -3
  602. package/plugins/specweave-github/lib/github-sync-increment-changes.js +9 -4
  603. package/plugins/specweave-github/lib/github-sync-increment-changes.ts +15 -4
  604. package/plugins/specweave-github/lib/increment-issue-builder.js +23 -10
  605. package/plugins/specweave-github/lib/increment-issue-builder.ts +29 -11
  606. package/plugins/specweave-github/lib/user-story-content-builder.js +19 -16
  607. package/plugins/specweave-github/lib/user-story-content-builder.ts +24 -19
  608. package/plugins/specweave-github/lib/user-story-issue-builder.js +10 -13
  609. package/plugins/specweave-github/lib/user-story-issue-builder.ts +20 -19
  610. package/plugins/specweave-github/reference/github-specweave-mapping.md +1 -1
  611. package/plugins/specweave-github/skills/github-issue-standard/SKILL.md +3 -3
  612. package/plugins/specweave-github/skills/github-issue-tracker/SKILL.md +8 -8
  613. package/plugins/specweave-github/skills/github-sync/SKILL.md +14 -14
  614. package/plugins/specweave-infrastructure/.claude-plugin/plugin.json +1 -1
  615. package/plugins/specweave-infrastructure/commands/{specweave-infrastructure-monitor-setup.md → monitor-setup.md} +1 -1
  616. package/plugins/specweave-infrastructure/commands/{specweave-infrastructure-slo-implement.md → slo-implement.md} +1 -1
  617. package/plugins/specweave-jira/.claude-plugin/plugin.json +1 -1
  618. package/plugins/specweave-jira/agents/jira-sync-judge/AGENT.md +3 -3
  619. package/plugins/specweave-jira/commands/cleanup-duplicates.md +9 -9
  620. package/plugins/specweave-jira/commands/close.md +13 -13
  621. package/plugins/specweave-jira/commands/create.md +8 -8
  622. package/plugins/specweave-jira/commands/import-boards.md +15 -15
  623. package/plugins/specweave-jira/commands/import-projects-full.md +15 -15
  624. package/plugins/specweave-jira/commands/import-projects.md +10 -10
  625. package/plugins/specweave-jira/commands/pull.md +10 -10
  626. package/plugins/specweave-jira/commands/push.md +11 -11
  627. package/plugins/specweave-jira/commands/reconcile.md +7 -7
  628. package/plugins/specweave-jira/commands/status.md +16 -16
  629. package/plugins/specweave-jira/commands/sync.md +27 -27
  630. package/plugins/specweave-jira/skills/{specweave-jira-mapper → jira-mapper}/SKILL.md +2 -2
  631. package/plugins/specweave-jira/skills/jira-resource-validator/SKILL.md +4 -4
  632. package/plugins/specweave-jira/skills/jira-sync/SKILL.md +5 -5
  633. package/plugins/specweave-kafka/.claude-plugin/plugin.json +1 -1
  634. package/plugins/specweave-kafka/IMPLEMENTATION-COMPLETE.md +10 -10
  635. package/plugins/specweave-kafka/README.md +12 -12
  636. package/plugins/specweave-kafka/commands/deploy.md +5 -5
  637. package/plugins/specweave-kafka/commands/dev-env.md +2 -2
  638. package/plugins/specweave-kafka/commands/mcp-configure.md +3 -3
  639. package/plugins/specweave-kafka/commands/monitor-setup.md +3 -3
  640. package/plugins/specweave-kafka/skills/kafka-architecture/SKILL.md +4 -4
  641. package/plugins/specweave-kafka/skills/kafka-cli-tools/SKILL.md +5 -5
  642. package/plugins/specweave-kafka/skills/kafka-mcp-integration/SKILL.md +6 -6
  643. package/plugins/specweave-kafka-streams/.claude-plugin/plugin.json +1 -1
  644. package/plugins/specweave-kafka-streams/commands/topology.md +4 -4
  645. package/plugins/specweave-kubernetes/.claude-plugin/plugin.json +1 -1
  646. package/plugins/specweave-ml/.claude-plugin/plugin.json +1 -1
  647. package/plugins/specweave-ml/README.md +9 -9
  648. package/plugins/specweave-ml/commands/{specweave-ml-deploy.md → deploy.md} +1 -1
  649. package/plugins/specweave-ml/commands/{specweave-ml-evaluate.md → evaluate.md} +1 -1
  650. package/plugins/specweave-ml/commands/{specweave-ml-explain.md → explain.md} +1 -1
  651. package/plugins/specweave-ml/commands/{specweave-ml-pipeline.md → pipeline.md} +1 -1
  652. package/plugins/specweave-ml/skills/automl-optimizer/SKILL.md +1 -1
  653. package/plugins/specweave-ml/skills/data-visualizer/SKILL.md +1 -1
  654. package/plugins/specweave-ml/skills/experiment-tracker/SKILL.md +4 -4
  655. package/plugins/specweave-ml/skills/feature-engineer/SKILL.md +1 -1
  656. package/plugins/specweave-ml/skills/ml-deployment-helper/SKILL.md +2 -2
  657. package/plugins/specweave-ml/skills/ml-pipeline-orchestrator/SKILL.md +10 -10
  658. package/plugins/specweave-ml/skills/model-registry/SKILL.md +1 -1
  659. package/plugins/specweave-ml/skills/time-series-forecaster/SKILL.md +1 -1
  660. package/plugins/specweave-mobile/.claude-plugin/plugin.json +1 -1
  661. package/plugins/specweave-mobile/README.md +2 -2
  662. package/plugins/specweave-mobile/agents/mobile-architect/AGENT.md +2 -2
  663. package/plugins/specweave-mobile/skills/react-native-setup/SKILL.md +1 -1
  664. package/plugins/specweave-n8n/.claude-plugin/plugin.json +1 -1
  665. package/plugins/specweave-n8n/commands/workflow-template.md +4 -4
  666. package/plugins/specweave-payments/.claude-plugin/plugin.json +1 -1
  667. package/plugins/specweave-payments/commands/stripe-setup.md +1 -1
  668. package/plugins/specweave-payments/commands/subscription-flow.md +1 -1
  669. package/plugins/specweave-plugin-dev/.claude-plugin/plugin.json +1 -1
  670. package/plugins/specweave-plugin-dev/commands/plugin-create.md +1 -1
  671. package/plugins/specweave-plugin-dev/commands/plugin-publish.md +1 -1
  672. package/plugins/specweave-plugin-dev/commands/plugin-test.md +1 -1
  673. package/plugins/specweave-release/.claude-plugin/plugin.json +1 -1
  674. package/plugins/specweave-release/IMPLEMENTATION.md +14 -14
  675. package/plugins/specweave-release/README.md +33 -33
  676. package/plugins/specweave-release/agents/release-manager/AGENT.md +18 -18
  677. package/plugins/specweave-release/commands/{specweave-release-align.md → align.md} +19 -19
  678. package/plugins/specweave-release/commands/{specweave-release-init.md → init.md} +19 -19
  679. package/plugins/specweave-release/commands/{specweave-release-npm.md → npm.md} +14 -14
  680. package/plugins/specweave-release/commands/{specweave-release-platform.md → platform.md} +17 -17
  681. package/plugins/specweave-release/commands/{specweave-release-rc.md → rc.md} +37 -37
  682. package/plugins/specweave-release/hooks/post-task-completion.sh +1 -1
  683. package/plugins/specweave-release/skills/rc-manager/SKILL.md +12 -12
  684. package/plugins/specweave-release/skills/release-coordinator/SKILL.md +11 -11
  685. package/plugins/specweave-release/skills/release-strategy-advisor/SKILL.md +4 -4
  686. package/plugins/specweave-release/skills/version-aligner/SKILL.md +7 -7
  687. package/plugins/specweave-testing/.claude-plugin/plugin.json +1 -1
  688. package/plugins/specweave-testing/agents/qa-engineer/README.md +5 -5
  689. package/plugins/specweave-testing/commands/e2e-setup.md +1 -1
  690. package/plugins/specweave-testing/commands/test-coverage.md +1 -1
  691. package/plugins/specweave-testing/commands/test-generate.md +1 -1
  692. package/plugins/specweave-testing/commands/test-init.md +1 -1
  693. package/plugins/specweave-tooling/.claude-plugin/plugin.json +1 -1
  694. package/plugins/specweave-tooling/commands/{specweave-tooling-skill-create.md → skill-create.md} +1 -1
  695. package/plugins/specweave-tooling/commands/{specweave-tooling-skill-package.md → skill-package.md} +1 -1
  696. package/plugins/specweave-tooling/commands/{specweave-tooling-skill-validate.md → skill-validate.md} +1 -1
  697. package/plugins/specweave-ui/.claude-plugin/plugin.json +1 -1
  698. package/plugins/specweave-ui/commands/ui-automate.md +9 -9
  699. package/plugins/specweave-ui/commands/ui-inspect.md +6 -6
  700. package/src/templates/AGENTS.md.template +73 -77
  701. package/src/templates/CLAUDE.md.template +23 -19
  702. package/dist/src/cli/commands/switch-project.d.ts +0 -13
  703. package/dist/src/cli/commands/switch-project.d.ts.map +0 -1
  704. package/dist/src/cli/commands/switch-project.js +0 -78
  705. package/dist/src/cli/commands/switch-project.js.map +0 -1
  706. package/plugins/specweave/commands/specweave-init-multiproject.md +0 -146
  707. package/plugins/specweave/commands/specweave-judge.md +0 -276
  708. package/plugins/specweave-core/.claude-plugin/plugin.json +0 -21
  709. package/plugins/specweave-core/commands/architecture-review.md +0 -288
  710. package/plugins/specweave-core/commands/code-review.md +0 -213
  711. package/plugins/specweave-core/commands/refactor-plan.md +0 -249
  712. package/plugins/specweave-core/skills/code-quality/SKILL.md +0 -158
  713. package/plugins/specweave-core/skills/design-patterns/SKILL.md +0 -245
  714. package/plugins/specweave-core/skills/software-architecture/SKILL.md +0 -84
  715. package/plugins/specweave-docs/commands/preview.md +0 -274
  716. /package/plugins/specweave/skills/{specweave-framework → framework}/test-cases/test-1-increment-naming.yaml +0 -0
  717. /package/plugins/specweave/skills/{specweave-framework → framework}/test-cases/test-2-source-of-truth.yaml +0 -0
  718. /package/plugins/specweave/skills/{specweave-framework → framework}/test-cases/test-3-increment-discipline.yaml +0 -0
  719. /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,32 +735,77 @@ 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. macOS Notifications - MUST Be Explicit (v0.33.3+)
738
+ ### 11. Notifications - MUST Be Non-Alarming AND Non-Blocking (v0.33.4+)
468
739
 
469
- **Vague notifications = user confusion!** Every notification MUST clearly state:
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)
744
+ 4. **NEVER trigger alert icon** - no red/warning badges!
745
+ 5. **NEVER block execution** - fire-and-forget pattern ONLY!
473
746
 
474
747
  ```
475
- ❌ FORBIDDEN (vague, alarming):
476
- Title: "🚨 Zombie Cleanup" ← What does this mean?!
477
- Sound: "Basso" (error sound) ← Red alert icon, scary!
478
- Message: "Cleaned up 5 processes" ← So what?
748
+ ❌ FORBIDDEN (alarming):
749
+ Title: "🚨 Zombie Cleanup" ← Emoji overload
750
+ Sound: "Basso" Shows RED ALERT ICON - NEVER USE!
751
+ Message: "Cleaned up 5 processes" ← Too vague
752
+
753
+ ❌ FORBIDDEN (blocking):
754
+ execSync(`osascript -e 'display notification...'`) ← BLOCKS main thread!
755
+ await exec(`osascript -e 'display notification...'`) ← BLOCKS cleanup/exit!
479
756
 
480
- ✅ CORRECT (explicit, calm):
757
+ ✅ CORRECT (explicit, calm, non-blocking):
481
758
  Title: "SpecWeave: Cleanup Done" ← Clear source
482
- Sound: "Pop" (neutral) Not alarming
759
+ Sound: "Pop" or "Submarine" Neutral sounds ONLY
483
760
  Message: "Cleaned up 5 zombie processes. No action needed."
761
+ exec(`osascript...`, (error) => { /* log */ }) ← Fire-and-forget!
484
762
  ```
485
763
 
486
- **Sound selection rules:**
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
+
795
+ **Sound selection rules (macOS only, other OS have no sound param):**
487
796
  | Sound | When to use |
488
797
  |-------|-------------|
489
798
  | `Pop` | Success, completion (neutral) |
490
799
  | `Glass` | Informational (gentle) |
491
- | `Submarine` | Warning (not critical) |
492
- | `Basso` | ONLY critical errors requiring immediate action |
800
+ | `Submarine` | Warning OR error (deep but calm) |
801
+
802
+ **⛔ NEVER USE "Basso"** - it triggers a RED ALERT ICON in macOS notification center!
803
+ SpecWeave notifications are informative, never require immediate action.
804
+
805
+ **Cross-platform behavior:**
806
+ - **macOS**: Uses `osascript` with sound name param (Pop/Glass/Submarine ONLY)
807
+ - **Linux**: Uses `notify-send` with `--urgency=normal` (never `critical`)
808
+ - **Windows**: Uses PowerShell toast (no urgency levels, always neutral)
493
809
 
494
810
  **Use notification constants from `src/utils/notification-constants.ts`:**
495
811
  ```typescript
@@ -497,10 +813,13 @@ import { getTitleForType, buildNotificationMessage, getSoundForType } from './no
497
813
 
498
814
  const title = getTitleForType('cleanup'); // "SpecWeave: Cleanup Done"
499
815
  const msg = buildNotificationMessage('cleanup', { count: 5 }); // "Cleaned up 5 zombie..."
500
- const sound = getSoundForType('cleanup'); // "Pop"
816
+ const sound = getSoundForType('cleanup'); // "Pop" (NEVER returns "Basso")
501
817
  ```
502
818
 
503
- **Pre-commit hook validates notification messages in new code (v0.33.3+).**
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
504
823
 
505
824
  ---
506
825
 
@@ -513,7 +832,7 @@ git add . && git commit -m "feat: feature" && git push origin develop
513
832
  ```
514
833
 
515
834
  **Marketplace**: `bash scripts/refresh-marketplace.sh` (GitHub mode, always use)
516
- **NPM Release**: `/specweave-release:npm`
835
+ **NPM Release**: `/sw-release:npm`
517
836
 
518
837
  ---
519
838
 
@@ -644,7 +963,7 @@ board: digital-operations # REQUIRED for 2-level structures
644
963
  Use `DuplicateDetector.createWithProtection()`, NEVER `--limit 1` in gh searches
645
964
 
646
965
  ### AC Presence in spec.md
647
- **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.
648
967
 
649
968
  ### Git Provider Abstraction
650
969
  Use `getPlatformRegistry().getProvider('github')`. NEVER hardcode platform names/endpoints.
@@ -653,20 +972,66 @@ Use `getPlatformRegistry().getProvider('github')`. NEVER hardcode platform names
653
972
 
654
973
  ## Configuration
655
974
 
656
- **Secrets** (`.env`, gitignored): Tokens, PATs, emails
657
- **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.
658
1021
 
659
1022
  ---
660
1023
 
661
1024
  ## Commands
662
1025
 
663
1026
  ```bash
664
- /specweave:increment "feature" # Plan new increment
665
- /specweave:do # Execute tasks
666
- /specweave:done 0002 # Close (validates gates)
667
- /specweave:progress # Show status
668
- /specweave:sync-progress # Full sync (tasks→docs→GitHub/JIRA/ADO)
669
- /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)
670
1035
  ```
671
1036
 
672
1037
  ---