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
@@ -5,6 +5,11 @@ import {
5
5
  loadIncrementMetadata,
6
6
  detectRepo
7
7
  } from "./github-issue-updater.js";
8
+ import { getGitHubAuthFromProject } from "../../../src/utils/auth-helpers.js";
9
+ function getGhEnv() {
10
+ const { token } = getGitHubAuthFromProject(process.cwd());
11
+ return token ? { ...process.env, GH_TOKEN: token } : process.env;
12
+ }
8
13
  async function syncFromGitHub(incrementId) {
9
14
  console.log(`
10
15
  \u{1F504} Syncing from GitHub for increment: ${incrementId}`);
@@ -47,7 +52,7 @@ async function fetchGitHubIssueState(issueNumber, owner, repo) {
47
52
  `${owner}/${repo}`,
48
53
  "--json",
49
54
  "number,title,body,state,labels,assignees,milestone,updatedAt"
50
- ]);
55
+ ], { env: getGhEnv() });
51
56
  if (issueResult.exitCode !== 0) {
52
57
  throw new Error(`Failed to fetch issue: ${issueResult.stderr}`);
53
58
  }
@@ -57,7 +62,7 @@ async function fetchGitHubIssueState(issueNumber, owner, repo) {
57
62
  `repos/${owner}/${repo}/issues/${issueNumber}/comments`,
58
63
  "--jq",
59
64
  ".[] | {id: .id, author: .user.login, body: .body, created_at: .created_at}"
60
- ]);
65
+ ], { env: getGhEnv() });
61
66
  let comments = [];
62
67
  if (commentsResult.exitCode === 0 && commentsResult.stdout.trim()) {
63
68
  const commentLines = commentsResult.stdout.trim().split("\n");
@@ -108,7 +113,7 @@ async function resolveStatusConflict(incrementId, metadata, githubState) {
108
113
  if (githubStatus === "closed" && specweaveStatus === "active") {
109
114
  console.log(`
110
115
  \u26A0\uFE0F **CONFLICT**: GitHub issue closed but SpecWeave increment still active!`);
111
- console.log(` Recommendation: Run /specweave:done ${incrementId} to close increment`);
116
+ console.log(` Recommendation: Run /sw:done ${incrementId} to close increment`);
112
117
  console.log(` Or reopen issue on GitHub if work is not complete`);
113
118
  }
114
119
  if (githubStatus === "open" && specweaveStatus === "completed") {
@@ -24,6 +24,17 @@ import {
24
24
  IncrementMetadata,
25
25
  detectRepo
26
26
  } from './github-issue-updater.js';
27
+ import { getGitHubAuthFromProject } from '../../../src/utils/auth-helpers.js';
28
+
29
+ /**
30
+ * Get environment object with GH_TOKEN for gh CLI commands.
31
+ */
32
+ function getGhEnv(): NodeJS.ProcessEnv {
33
+ const { token } = getGitHubAuthFromProject(process.cwd());
34
+ return token
35
+ ? { ...process.env, GH_TOKEN: token }
36
+ : process.env;
37
+ }
27
38
 
28
39
  export interface GitHubIssueState {
29
40
  number: number;
@@ -124,7 +135,7 @@ async function fetchGitHubIssueState(
124
135
  `${owner}/${repo}`,
125
136
  '--json',
126
137
  'number,title,body,state,labels,assignees,milestone,updatedAt'
127
- ]);
138
+ ], { env: getGhEnv() });
128
139
 
129
140
  if (issueResult.exitCode !== 0) {
130
141
  throw new Error(`Failed to fetch issue: ${issueResult.stderr}`);
@@ -138,7 +149,7 @@ async function fetchGitHubIssueState(
138
149
  `repos/${owner}/${repo}/issues/${issueNumber}/comments`,
139
150
  '--jq',
140
151
  '.[] | {id: .id, author: .user.login, body: .body, created_at: .created_at}'
141
- ]);
152
+ ], { env: getGhEnv() });
142
153
 
143
154
  let comments: GitHubComment[] = [];
144
155
  if (commentsResult.exitCode === 0 && commentsResult.stdout.trim()) {
@@ -222,7 +233,7 @@ async function resolveStatusConflict(
222
233
  // GitHub closed but SpecWeave active
223
234
  if (githubStatus === 'closed' && specweaveStatus === 'active') {
224
235
  console.log(`\n⚠️ **CONFLICT**: GitHub issue closed but SpecWeave increment still active!`);
225
- console.log(` Recommendation: Run /specweave:done ${incrementId} to close increment`);
236
+ console.log(` Recommendation: Run /sw:done ${incrementId} to close increment`);
226
237
  console.log(` Or reopen issue on GitHub if work is not complete`);
227
238
  }
228
239
 
@@ -7,6 +7,11 @@ import {
7
7
  postScopeChangeComment
8
8
  } from "./github-issue-updater.js";
9
9
  import { execFileNoThrow } from "../../../src/utils/execFileNoThrow.js";
10
+ import { getGitHubAuthFromProject } from "../../../src/utils/auth-helpers.js";
11
+ function getGhEnv() {
12
+ const { token } = getGitHubAuthFromProject(process.cwd());
13
+ return token ? { ...process.env, GH_TOKEN: token } : process.env;
14
+ }
10
15
  async function syncIncrementChanges(incrementId, changedFile) {
11
16
  console.log(`
12
17
  \u{1F504} Syncing ${changedFile} changes to GitHub...`);
@@ -181,7 +186,7 @@ async function updateIssueTitle(issueNumber, title, owner, repo) {
181
186
  `${owner}/${repo}`,
182
187
  "--title",
183
188
  title
184
- ]);
189
+ ], { env: getGhEnv() });
185
190
  if (result.exitCode !== 0) {
186
191
  console.warn(`\u26A0\uFE0F Could not update issue title: ${result.stderr}`);
187
192
  }
@@ -197,7 +202,7 @@ async function updateIssueTaskChecklist(issueNumber, tasks, owner, repo) {
197
202
  "body",
198
203
  "-q",
199
204
  ".body"
200
- ]);
205
+ ], { env: getGhEnv() });
201
206
  if (result.exitCode !== 0) {
202
207
  throw new Error(`Failed to get issue body: ${result.stderr}`);
203
208
  }
@@ -224,7 +229,7 @@ ${taskChecklist}
224
229
  `${owner}/${repo}`,
225
230
  "--body",
226
231
  updatedBody
227
- ]);
232
+ ], { env: getGhEnv() });
228
233
  if (updateResult.exitCode !== 0) {
229
234
  throw new Error(`Failed to update issue body: ${updateResult.stderr}`);
230
235
  }
@@ -238,7 +243,7 @@ async function postComment(issueNumber, comment, owner, repo) {
238
243
  `${owner}/${repo}`,
239
244
  "--body",
240
245
  comment
241
- ]);
246
+ ], { env: getGhEnv() });
242
247
  if (result.exitCode !== 0) {
243
248
  throw new Error(`Failed to post comment: ${result.stderr}`);
244
249
  }
@@ -16,6 +16,17 @@ import {
16
16
  postScopeChangeComment
17
17
  } from './github-issue-updater.js';
18
18
  import { execFileNoThrow } from '../../../src/utils/execFileNoThrow.js';
19
+ import { getGitHubAuthFromProject } from '../../../src/utils/auth-helpers.js';
20
+
21
+ /**
22
+ * Get environment object with GH_TOKEN for gh CLI commands.
23
+ */
24
+ function getGhEnv(): NodeJS.ProcessEnv {
25
+ const { token } = getGitHubAuthFromProject(process.cwd());
26
+ return token
27
+ ? { ...process.env, GH_TOKEN: token }
28
+ : process.env;
29
+ }
19
30
 
20
31
  export interface SpecChanges {
21
32
  added: string[];
@@ -289,7 +300,7 @@ async function updateIssueTitle(
289
300
  `${owner}/${repo}`,
290
301
  '--title',
291
302
  title
292
- ]);
303
+ ], { env: getGhEnv() });
293
304
 
294
305
  if (result.exitCode !== 0) {
295
306
  console.warn(`⚠️ Could not update issue title: ${result.stderr}`);
@@ -316,7 +327,7 @@ async function updateIssueTaskChecklist(
316
327
  'body',
317
328
  '-q',
318
329
  '.body'
319
- ]);
330
+ ], { env: getGhEnv() });
320
331
 
321
332
  if (result.exitCode !== 0) {
322
333
  throw new Error(`Failed to get issue body: ${result.stderr}`);
@@ -348,7 +359,7 @@ async function updateIssueTaskChecklist(
348
359
  `${owner}/${repo}`,
349
360
  '--body',
350
361
  updatedBody
351
- ]);
362
+ ], { env: getGhEnv() });
352
363
 
353
364
  if (updateResult.exitCode !== 0) {
354
365
  throw new Error(`Failed to update issue body: ${updateResult.stderr}`);
@@ -372,7 +383,7 @@ async function postComment(
372
383
  `${owner}/${repo}`,
373
384
  '--body',
374
385
  comment
375
- ]);
386
+ ], { env: getGhEnv() });
376
387
 
377
388
  if (result.exitCode !== 0) {
378
389
  throw new Error(`Failed to post comment: ${result.stderr}`);
@@ -154,14 +154,30 @@ class IncrementIssueBuilder {
154
154
  const incrementId = incrementData.frontmatter.increment;
155
155
  const title = `[${featureId}][${story.id}] ${story.title}`;
156
156
  let body = "";
157
- body += `**Feature**: ${featureId}
157
+ const completedACs = story.acceptanceCriteria.filter((ac) => ac.completed).length;
158
+ const totalACs = story.acceptanceCriteria.length;
159
+ const storyTasks = incrementData.tasks.filter(
160
+ (t) => t.userStories.includes(story.id) || t.userStories.some((us) => us.toUpperCase() === story.id.toUpperCase())
161
+ );
162
+ const completedTasks = storyTasks.filter((t) => t.completed).length;
163
+ const totalTasks = storyTasks.length;
164
+ const overallPercentage = totalACs + totalTasks > 0 ? Math.round((completedACs + completedTasks) / (totalACs + totalTasks) * 100) : 0;
165
+ body += `## Progress
166
+
158
167
  `;
159
- body += `**Status**: ${incrementData.frontmatter.status || "planning"}
168
+ body += `**Acceptance Criteria**: ${completedACs}/${totalACs} (${totalACs > 0 ? Math.round(completedACs / totalACs * 100) : 0}%)
160
169
  `;
161
- body += `**Priority**: P1
170
+ body += `**Tasks**: ${completedTasks}/${totalTasks} (${totalTasks > 0 ? Math.round(completedTasks / totalTasks * 100) : 0}%)
162
171
  `;
163
- body += `
164
- ---
172
+ body += `**Overall**: ${overallPercentage}%
173
+
174
+ `;
175
+ const filledBlocks = Math.floor(overallPercentage / 5);
176
+ const emptyBlocks = 20 - filledBlocks;
177
+ body += `${"\u2588".repeat(filledBlocks)}${"\u2591".repeat(emptyBlocks)} ${overallPercentage}%
178
+
179
+ `;
180
+ body += `---
165
181
 
166
182
  `;
167
183
  body += `## User Story
@@ -207,15 +223,12 @@ class IncrementIssueBuilder {
207
223
  body += `---
208
224
 
209
225
  `;
210
- const storyTasks = incrementData.tasks.filter(
211
- (t) => t.userStories.includes(story.id) || t.userStories.some((us) => us.toUpperCase() === story.id.toUpperCase())
212
- );
213
226
  if (storyTasks.length > 0) {
214
227
  body += `## Tasks
215
228
 
216
229
  `;
217
- const completedTasks = storyTasks.filter((t) => t.completed).length;
218
- body += `Progress: ${completedTasks}/${storyTasks.length} tasks
230
+ const completedTasks2 = storyTasks.filter((t) => t.completed).length;
231
+ body += `Progress: ${completedTasks2}/${storyTasks.length} tasks
219
232
 
220
233
  `;
221
234
  for (const task of storyTasks) {
@@ -287,11 +287,34 @@ export class IncrementIssueBuilder {
287
287
  // Build body
288
288
  let body = '';
289
289
 
290
- // Header with metadata
291
- body += `**Feature**: ${featureId}\n`;
292
- body += `**Status**: ${incrementData.frontmatter.status || 'planning'}\n`;
293
- body += `**Priority**: P1\n`;
294
- body += `\n---\n\n`;
290
+ // REMOVED: Metadata header (Feature, Status, Priority)
291
+ // WHY: GitHub has NATIVE fields for this (labels, milestones)
292
+ // Body should contain ONLY actual work content (ACs, tasks, user story)
293
+ // See: .specweave/docs/internal/troubleshooting/CRITICAL-remove-metadata-header-from-github-issues.md
294
+
295
+ // Progress section (consistency with user-story-issue-builder.ts)
296
+ const completedACs = story.acceptanceCriteria.filter(ac => ac.completed).length;
297
+ const totalACs = story.acceptanceCriteria.length;
298
+ const storyTasks = incrementData.tasks.filter(t =>
299
+ t.userStories.includes(story.id) ||
300
+ t.userStories.some(us => us.toUpperCase() === story.id.toUpperCase())
301
+ );
302
+ const completedTasks = storyTasks.filter(t => t.completed).length;
303
+ const totalTasks = storyTasks.length;
304
+ const overallPercentage = (totalACs + totalTasks) > 0
305
+ ? Math.round(((completedACs + completedTasks) / (totalACs + totalTasks)) * 100)
306
+ : 0;
307
+
308
+ body += `## Progress\n\n`;
309
+ body += `**Acceptance Criteria**: ${completedACs}/${totalACs} (${totalACs > 0 ? Math.round((completedACs / totalACs) * 100) : 0}%)\n`;
310
+ body += `**Tasks**: ${completedTasks}/${totalTasks} (${totalTasks > 0 ? Math.round((completedTasks / totalTasks) * 100) : 0}%)\n`;
311
+ body += `**Overall**: ${overallPercentage}%\n\n`;
312
+
313
+ // Progress bar
314
+ const filledBlocks = Math.floor(overallPercentage / 5);
315
+ const emptyBlocks = 20 - filledBlocks;
316
+ body += `${'█'.repeat(filledBlocks)}${'░'.repeat(emptyBlocks)} ${overallPercentage}%\n\n`;
317
+ body += `---\n\n`;
295
318
 
296
319
  // User Story description
297
320
  body += `## User Story\n\n`;
@@ -324,12 +347,7 @@ export class IncrementIssueBuilder {
324
347
 
325
348
  body += `---\n\n`;
326
349
 
327
- // Tasks for this user story
328
- const storyTasks = incrementData.tasks.filter(t =>
329
- t.userStories.includes(story.id) ||
330
- t.userStories.some(us => us.toUpperCase() === story.id.toUpperCase())
331
- );
332
-
350
+ // Tasks for this user story (already calculated above for Progress section)
333
351
  if (storyTasks.length > 0) {
334
352
  body += `## Tasks\n\n`;
335
353
  const completedTasks = storyTasks.filter(t => t.completed).length;
@@ -40,25 +40,28 @@ class UserStoryContentBuilder {
40
40
  async buildIssueBody(githubRepo) {
41
41
  const content = await this.parse();
42
42
  let body = "";
43
- const priority = this.extractPriorityFromACs(content.acceptanceCriteria);
44
43
  const repo = githubRepo || await this.detectGitHubRepo();
45
- if (repo) {
46
- const pathMatch = this.userStoryPath.match(/specs\/([^/]+)\/FS-\d+\//);
47
- const projectFolder = pathMatch ? pathMatch[1] : "default";
48
- body += `**Feature**: [${content.featureId}](https://github.com/${repo}/tree/develop/.specweave/docs/internal/specs/${projectFolder}/${content.featureId})
44
+ const completedACs = content.acceptanceCriteria.filter((ac) => ac.completed).length;
45
+ const totalACs = content.acceptanceCriteria.length;
46
+ const completedTasks = content.tasks.filter((t) => t.status).length;
47
+ const totalTasks = content.tasks.length;
48
+ const overallPercentage = totalACs + totalTasks > 0 ? Math.round((completedACs + completedTasks) / (totalACs + totalTasks) * 100) : 0;
49
+ body += `## Progress
50
+
49
51
  `;
50
- } else {
51
- body += `**Feature**: ${content.featureId}
52
+ body += `**Acceptance Criteria**: ${completedACs}/${totalACs} (${totalACs > 0 ? Math.round(completedACs / totalACs * 100) : 0}%)
52
53
  `;
53
- }
54
- body += `**Status**: ${content.frontmatter.status}
54
+ body += `**Tasks**: ${completedTasks}/${totalTasks} (${totalTasks > 0 ? Math.round(completedTasks / totalTasks * 100) : 0}%)
55
55
  `;
56
- if (priority) {
57
- body += `**Priority**: ${priority}
56
+ body += `**Overall**: ${overallPercentage}%
57
+
58
58
  `;
59
- }
60
- body += `
61
- ---
59
+ const filledBlocks = Math.floor(overallPercentage / 5);
60
+ const emptyBlocks = 20 - filledBlocks;
61
+ body += `${"\u2588".repeat(filledBlocks)}${"\u2591".repeat(emptyBlocks)} ${overallPercentage}%
62
+
63
+ `;
64
+ body += `---
62
65
 
63
66
  `;
64
67
  body += `## User Story
@@ -99,9 +102,9 @@ class UserStoryContentBuilder {
99
102
  `;
100
103
  for (const ac of content.acceptanceCriteria) {
101
104
  const checkbox = ac.completed ? "[x]" : "[ ]";
102
- const priority2 = ac.priority ? ` (${ac.priority})` : "";
105
+ const priority = ac.priority ? ` (${ac.priority})` : "";
103
106
  const testable = ac.testable ? " [testable]" : "";
104
- body += `- ${checkbox} **${ac.id}**: ${ac.description}${priority2}${testable}
107
+ body += `- ${checkbox} **${ac.id}**: ${ac.description}${priority}${testable}
105
108
  `;
106
109
  }
107
110
  body += "\n";
@@ -116,28 +116,33 @@ export class UserStoryContentBuilder {
116
116
 
117
117
  let body = '';
118
118
 
119
- // Extract priority from ACs (highest priority wins)
120
- const priority = this.extractPriorityFromACs(content.acceptanceCriteria);
121
-
122
119
  // Detect GitHub repo from git remote if not provided
123
120
  const repo = githubRepo || await this.detectGitHubRepo();
124
121
 
125
- // Header with metadata
126
- // v5.0.0+: Features live in project folders, NOT _features
127
- // Extract project from path: specs/{project}/FS-XXX/us-*.md
128
- if (repo) {
129
- const pathMatch = this.userStoryPath.match(/specs\/([^/]+)\/FS-\d+\//);
130
- const projectFolder = pathMatch ? pathMatch[1] : 'default';
131
- body += `**Feature**: [${content.featureId}](https://github.com/${repo}/tree/develop/.specweave/docs/internal/specs/${projectFolder}/${content.featureId})\n`;
132
- } else {
133
- body += `**Feature**: ${content.featureId}\n`;
134
- }
135
- body += `**Status**: ${content.frontmatter.status}\n`;
136
- if (priority) {
137
- body += `**Priority**: ${priority}\n`;
138
- }
139
-
140
- body += `\n---\n\n`;
122
+ // REMOVED: Metadata header (Feature, Status, Priority)
123
+ // WHY: GitHub has NATIVE fields for this (labels, milestones)
124
+ // Body should contain ONLY actual work content (ACs, tasks, user story)
125
+ // See: .specweave/docs/internal/troubleshooting/CRITICAL-remove-metadata-header-from-github-issues.md
126
+
127
+ // Progress section (consistency with user-story-issue-builder.ts)
128
+ const completedACs = content.acceptanceCriteria.filter(ac => ac.completed).length;
129
+ const totalACs = content.acceptanceCriteria.length;
130
+ const completedTasks = content.tasks.filter(t => t.status).length;
131
+ const totalTasks = content.tasks.length;
132
+ const overallPercentage = (totalACs + totalTasks) > 0
133
+ ? Math.round(((completedACs + completedTasks) / (totalACs + totalTasks)) * 100)
134
+ : 0;
135
+
136
+ body += `## Progress\n\n`;
137
+ body += `**Acceptance Criteria**: ${completedACs}/${totalACs} (${totalACs > 0 ? Math.round((completedACs / totalACs) * 100) : 0}%)\n`;
138
+ body += `**Tasks**: ${completedTasks}/${totalTasks} (${totalTasks > 0 ? Math.round((completedTasks / totalTasks) * 100) : 0}%)\n`;
139
+ body += `**Overall**: ${overallPercentage}%\n\n`;
140
+
141
+ // Progress bar
142
+ const filledBlocks = Math.floor(overallPercentage / 5);
143
+ const emptyBlocks = 20 - filledBlocks;
144
+ body += `${'█'.repeat(filledBlocks)}${'░'.repeat(emptyBlocks)} ${overallPercentage}%\n\n`;
145
+ body += `---\n\n`;
141
146
 
142
147
  // User Story description
143
148
  body += `## User Story\n\n`;
@@ -12,10 +12,10 @@ This prevents incorrect issue titles like [undefined][US-XXX] or [SP-US-XXX].
12
12
  Provide the correct Feature ID (e.g., "FS-047") when constructing this builder.`
13
13
  );
14
14
  }
15
- if (!/^FS-\d{3,}$/.test(featureId)) {
15
+ if (!/^FS-\d{3,}E?$/.test(featureId)) {
16
16
  throw new Error(
17
17
  `UserStoryIssueBuilder: Invalid featureId format "${featureId}".
18
- Expected format: FS-XXX (e.g., "FS-047", "FS-123", "FS-1000").
18
+ Expected format: FS-XXX or FS-XXXE (e.g., "FS-047", "FS-123E", "FS-1000").
19
19
  This prevents incorrect issue titles like [SP-US-XXX] or [${featureId}][US-XXX].`
20
20
  );
21
21
  }
@@ -43,11 +43,11 @@ This prevents incorrect issue titles like [SP-US-XXX] or [${featureId}][US-XXX].
43
43
  const acceptanceCriteria = this.extractAcceptanceCriteria(bodyContent);
44
44
  const tasks = await this.extractTasks(bodyContent, frontmatter.id);
45
45
  const title = `[${this.featureId}][${frontmatter.id}] ${frontmatter.title}`;
46
- const titlePattern = /^\[FS-\d{3,}\]\[US-\d{3,}\] .+$/;
46
+ const titlePattern = /^\[FS-\d{3,}E?\]\[US-\d{3,}E?\] .+$/;
47
47
  if (!titlePattern.test(title)) {
48
48
  throw new Error(
49
49
  `Generated issue title has incorrect format: "${title}"
50
- Expected: [FS-XXX][US-YYY] Title (3+ digits each)
50
+ Expected: [FS-XXX][US-YYY] or [FS-XXXE][US-YYYE] Title (3+ digits each, E-suffix for external)
51
51
  This indicates a bug in UserStoryIssueBuilder or invalid frontmatter.
52
52
  Feature ID: ${this.featureId}
53
53
  User Story ID: ${frontmatter.id}`
@@ -235,13 +235,6 @@ User Story ID: ${frontmatter.id}`
235
235
  data.acceptanceCriteria,
236
236
  data.tasks
237
237
  );
238
- sections.push(`**Feature**: ${this.featureId}`);
239
- sections.push(`**Status**: ${this.capitalize(data.frontmatter.status)}`);
240
- sections.push(`**Priority**: ${data.frontmatter.priority || "P2"}`);
241
- if (data.frontmatter.project && data.frontmatter.project !== "default") {
242
- sections.push(`**Project**: ${data.frontmatter.project}`);
243
- }
244
- sections.push("");
245
238
  sections.push(IssueStateManager.formatProgressMarkdown(progress));
246
239
  sections.push("");
247
240
  if (data.userStoryStatement) {
@@ -356,6 +349,9 @@ User Story ID: ${frontmatter.id}`
356
349
  *
357
350
  * CRITICAL: Label names must match repository labels exactly!
358
351
  * Repository uses: status:complete, status:active, status:not_started
352
+ *
353
+ * v0.35.0: Project derived from frontmatter.project in us-*.md files.
354
+ * Living docs sync transforms spec.md **Project**: → us-*.md frontmatter project:
359
355
  */
360
356
  buildLabels(frontmatter) {
361
357
  const labels = ["user-story", "specweave"];
@@ -382,8 +378,9 @@ User Story ID: ${frontmatter.id}`
382
378
  if (frontmatter.priority) {
383
379
  labels.push(frontmatter.priority.toLowerCase());
384
380
  }
385
- if (frontmatter.project && frontmatter.project !== "default") {
386
- labels.push(`project:${frontmatter.project}`);
381
+ const project = frontmatter.project?.toLowerCase();
382
+ if (project && project !== "default") {
383
+ labels.push(`project:${project}`);
387
384
  }
388
385
  return labels;
389
386
  }
@@ -65,11 +65,11 @@ export class UserStoryIssueBuilder {
65
65
  );
66
66
  }
67
67
 
68
- // ✅ VALIDATION: Ensure featureId matches expected pattern (FS-XXX, 3+ digits)
69
- if (!/^FS-\d{3,}$/.test(featureId)) {
68
+ // ✅ VALIDATION: Ensure featureId matches expected pattern (FS-XXX or FS-XXXE for external)
69
+ if (!/^FS-\d{3,}E?$/.test(featureId)) {
70
70
  throw new Error(
71
71
  `UserStoryIssueBuilder: Invalid featureId format "${featureId}".\n` +
72
- `Expected format: FS-XXX (e.g., "FS-047", "FS-123", "FS-1000").\n` +
72
+ `Expected format: FS-XXX or FS-XXXE (e.g., "FS-047", "FS-123E", "FS-1000").\n` +
73
73
  `This prevents incorrect issue titles like [SP-US-XXX] or [${featureId}][US-XXX].`
74
74
  );
75
75
  }
@@ -115,11 +115,11 @@ export class UserStoryIssueBuilder {
115
115
  const title = `[${this.featureId}][${frontmatter.id}] ${frontmatter.title}`;
116
116
 
117
117
  // ✅ SAFETY CHECK: Ensure title matches expected pattern (3+ digits)
118
- const titlePattern = /^\[FS-\d{3,}\]\[US-\d{3,}\] .+$/;
118
+ const titlePattern = /^\[FS-\d{3,}E?\]\[US-\d{3,}E?\] .+$/;
119
119
  if (!titlePattern.test(title)) {
120
120
  throw new Error(
121
121
  `Generated issue title has incorrect format: "${title}"\n` +
122
- `Expected: [FS-XXX][US-YYY] Title (3+ digits each)\n` +
122
+ `Expected: [FS-XXX][US-YYY] or [FS-XXXE][US-YYYE] Title (3+ digits each, E-suffix for external)\n` +
123
123
  `This indicates a bug in UserStoryIssueBuilder or invalid frontmatter.\n` +
124
124
  `Feature ID: ${this.featureId}\n` +
125
125
  `User Story ID: ${frontmatter.id}`
@@ -135,7 +135,7 @@ export class UserStoryIssueBuilder {
135
135
  bodyContent
136
136
  });
137
137
 
138
- // 5. Determine labels
138
+ // 5. Determine labels (v0.35.0: project from frontmatter, not body)
139
139
  const labels = this.buildLabels(frontmatter);
140
140
 
141
141
  return {
@@ -397,17 +397,12 @@ export class UserStoryIssueBuilder {
397
397
  data.tasks
398
398
  );
399
399
 
400
- // Header with metadata
401
- sections.push(`**Feature**: ${this.featureId}`);
402
- sections.push(`**Status**: ${this.capitalize(data.frontmatter.status)}`);
403
- sections.push(`**Priority**: ${data.frontmatter.priority || 'P2'}`);
404
- // ✅ FIX: Only output Project if defined and not "default"
405
- if (data.frontmatter.project && data.frontmatter.project !== 'default') {
406
- sections.push(`**Project**: ${data.frontmatter.project}`);
407
- }
408
- sections.push('');
400
+ // REMOVED: Metadata header (Feature, Status, Priority, Project)
401
+ // WHY: GitHub has NATIVE fields for this (labels, milestones)
402
+ // Body should contain ONLY actual work content (ACs, tasks, user story)
403
+ // See: .specweave/docs/internal/troubleshooting/CRITICAL-remove-metadata-header-from-github-issues.md
409
404
 
410
- // Progress section (NEW)
405
+ // Progress section
411
406
  sections.push(IssueStateManager.formatProgressMarkdown(progress));
412
407
  sections.push('');
413
408
 
@@ -568,6 +563,9 @@ export class UserStoryIssueBuilder {
568
563
  *
569
564
  * CRITICAL: Label names must match repository labels exactly!
570
565
  * Repository uses: status:complete, status:active, status:not_started
566
+ *
567
+ * v0.35.0: Project derived from frontmatter.project in us-*.md files.
568
+ * Living docs sync transforms spec.md **Project**: → us-*.md frontmatter project:
571
569
  */
572
570
  private buildLabels(frontmatter: UserStoryFrontmatter): string[] {
573
571
  const labels: string[] = ['user-story', 'specweave'];
@@ -607,9 +605,12 @@ export class UserStoryIssueBuilder {
607
605
  labels.push(frontmatter.priority.toLowerCase());
608
606
  }
609
607
 
610
- // Add project label
611
- if (frontmatter.project && frontmatter.project !== 'default') {
612
- labels.push(`project:${frontmatter.project}`);
608
+ // Add project label (v0.35.0: extract from frontmatter.project in us-*.md files)
609
+ // Living docs sync transforms spec.md **Project**: us-*.md frontmatter project:
610
+ // See CLAUDE.md "Two File Formats for Project Field" for architecture
611
+ const project = frontmatter.project?.toLowerCase();
612
+ if (project && project !== 'default') {
613
+ labels.push(`project:${project}`);
613
614
  }
614
615
 
615
616
  return labels;
@@ -295,7 +295,7 @@ Body: We need OAuth2 authentication with Google and GitHub providers...
295
295
 
296
296
  ### Example 3: Close Increment → Close Issue
297
297
 
298
- **SpecWeave**: `/specweave:done 0004` (all 48 tasks complete)
298
+ **SpecWeave**: `/sw:done 0004` (all 48 tasks complete)
299
299
 
300
300
  **GitHub**: Close issue #130 with comment:
301
301
  ```markdown
@@ -190,9 +190,9 @@ All GitHub issue content is generated by these builders:
190
190
 
191
191
  All GitHub sync commands use the Universal Hierarchy:
192
192
 
193
- - `/specweave-github:sync` - Sync increments via Feature/UserStory hierarchy
194
- - `/specweave-github:create-issue` - Create issue using standard format
195
- - `/specweave-github:update-user-story` - Update user story issue
193
+ - `/sw-github:sync` - Sync increments via Feature/UserStory hierarchy
194
+ - `/sw-github:create-issue` - Create issue using standard format
195
+ - `/sw-github:update-user-story` - Update user story issue
196
196
 
197
197
  ## Validation Checklist
198
198
 
@@ -14,7 +14,7 @@ description: Task-level GitHub issue tracking for SpecWeave increments. Provides
14
14
  - Blocking issue tracking
15
15
  - Task-level comments and discussions
16
16
 
17
- **Integration**: Works with `github-sync` skill and `/specweave:github:*` commands
17
+ **Integration**: Works with `github-sync` skill and `/sw:github:*` commands
18
18
 
19
19
  ---
20
20
 
@@ -171,7 +171,7 @@ plugins:
171
171
  ### Check Task Status
172
172
 
173
173
  ```bash
174
- /specweave:github:status 0004
174
+ /sw:github:status 0004
175
175
  ```
176
176
 
177
177
  Output:
@@ -196,7 +196,7 @@ Week 1: Foundation
196
196
  ### Sync Task Checklist
197
197
 
198
198
  ```bash
199
- /specweave:github:sync 0004 --tasks
199
+ /sw:github:sync 0004 --tasks
200
200
  ```
201
201
 
202
202
  Updates GitHub issue checklist to match current increment progress.
@@ -204,7 +204,7 @@ Updates GitHub issue checklist to match current increment progress.
204
204
  ### Comment on Task
205
205
 
206
206
  ```bash
207
- /specweave:github:comment 0004 T-008 "Cursor adapter completed, moving to testing phase"
207
+ /sw:github:comment 0004 T-008 "Cursor adapter completed, moving to testing phase"
208
208
  ```
209
209
 
210
210
  Posts custom comment to GitHub issue for specific task.
@@ -308,7 +308,7 @@ tasks:
308
308
  Generate time reports:
309
309
 
310
310
  ```bash
311
- /specweave:github:time-report 0004
311
+ /sw:github:time-report 0004
312
312
  ```
313
313
 
314
314
  Output:
@@ -458,7 +458,7 @@ Warn when tasks are behind schedule:
458
458
  **Checklist not updating?**
459
459
  - Verify `update_checklist: true` in config
460
460
  - Check GitHub API permissions (repo write access)
461
- - Manually sync: `/specweave:github:sync 0004 --tasks`
461
+ - Manually sync: `/sw:github:sync 0004 --tasks`
462
462
 
463
463
  **Comments not posting?**
464
464
  - Check `post_task_comments: true`
@@ -468,7 +468,7 @@ Warn when tasks are behind schedule:
468
468
  **Time tracking inaccurate?**
469
469
  - Verify task timestamps in `.metadata.yaml`
470
470
  - Check for manual edits to metadata
471
- - Re-sync: `/specweave:github:sync 0004 --force`
471
+ - Re-sync: `/sw:github:sync 0004 --force`
472
472
 
473
473
  ---
474
474
 
@@ -488,7 +488,7 @@ Warn when tasks are behind schedule:
488
488
 
489
489
  - **github-sync**: High-level increment ↔ issue synchronization
490
490
  - **github-manager agent**: AI agent for GitHub operations
491
- - **Commands**: All `/specweave:github:*` commands
491
+ - **Commands**: All `/sw:github:*` commands
492
492
 
493
493
  ---
494
494