specweave 0.24.11 → 0.26.2

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 (411) hide show
  1. package/CLAUDE.md +742 -26
  2. package/bin/specweave.js +14 -0
  3. package/dist/plugins/specweave-github/lib/CodeValidator.js +2 -2
  4. package/dist/plugins/specweave-github/lib/CodeValidator.js.map +1 -1
  5. package/dist/plugins/specweave-github/lib/ThreeLayerSyncManager.js +1 -1
  6. package/dist/plugins/specweave-github/lib/ThreeLayerSyncManager.js.map +1 -1
  7. package/dist/plugins/specweave-github/lib/github-client-v2.d.ts +28 -0
  8. package/dist/plugins/specweave-github/lib/github-client-v2.d.ts.map +1 -1
  9. package/dist/plugins/specweave-github/lib/github-client-v2.js +64 -1
  10. package/dist/plugins/specweave-github/lib/github-client-v2.js.map +1 -1
  11. package/dist/plugins/specweave-github/lib/github-issue-updater.js +1 -1
  12. package/dist/plugins/specweave-github/lib/github-issue-updater.js.map +1 -1
  13. package/dist/plugins/specweave-github/lib/github-sync-bidirectional.js +1 -1
  14. package/dist/plugins/specweave-github/lib/github-sync-bidirectional.js.map +1 -1
  15. package/dist/plugins/specweave-github/lib/github-sync-increment-changes.js +1 -1
  16. package/dist/plugins/specweave-github/lib/github-sync-increment-changes.js.map +1 -1
  17. package/dist/plugins/specweave-github/lib/user-story-issue-builder.d.ts.map +1 -1
  18. package/dist/plugins/specweave-github/lib/user-story-issue-builder.js +7 -6
  19. package/dist/plugins/specweave-github/lib/user-story-issue-builder.js.map +1 -1
  20. package/dist/plugins/specweave-jira/lib/jira-epic-sync.js +1 -1
  21. package/dist/plugins/specweave-jira/lib/jira-epic-sync.js.map +1 -1
  22. package/dist/src/adapters/adapter-base.js +1 -1
  23. package/dist/src/adapters/adapter-base.js.map +1 -1
  24. package/dist/src/adapters/adapter-loader.js +1 -1
  25. package/dist/src/adapters/adapter-loader.js.map +1 -1
  26. package/dist/src/adapters/agents-md-generator.js +1 -1
  27. package/dist/src/adapters/agents-md-generator.js.map +1 -1
  28. package/dist/src/adapters/claude/adapter.js +1 -1
  29. package/dist/src/adapters/claude/adapter.js.map +1 -1
  30. package/dist/src/adapters/claude-md-generator.js +1 -1
  31. package/dist/src/adapters/claude-md-generator.js.map +1 -1
  32. package/dist/src/adapters/codex/adapter.js +1 -1
  33. package/dist/src/adapters/codex/adapter.js.map +1 -1
  34. package/dist/src/adapters/cursor/adapter.js +1 -1
  35. package/dist/src/adapters/cursor/adapter.js.map +1 -1
  36. package/dist/src/adapters/doc-generator.js +1 -1
  37. package/dist/src/adapters/doc-generator.js.map +1 -1
  38. package/dist/src/adapters/gemini/adapter.js +1 -1
  39. package/dist/src/adapters/gemini/adapter.js.map +1 -1
  40. package/dist/src/adapters/generic/adapter.js +1 -1
  41. package/dist/src/adapters/generic/adapter.js.map +1 -1
  42. package/dist/src/cli/commands/cicd-monitor.js +1 -1
  43. package/dist/src/cli/commands/cicd-monitor.js.map +1 -1
  44. package/dist/src/cli/commands/delete-feature.d.ts +14 -0
  45. package/dist/src/cli/commands/delete-feature.d.ts.map +1 -0
  46. package/dist/src/cli/commands/delete-feature.js +87 -0
  47. package/dist/src/cli/commands/delete-feature.js.map +1 -0
  48. package/dist/src/cli/commands/detect-specs.js +1 -1
  49. package/dist/src/cli/commands/detect-specs.js.map +1 -1
  50. package/dist/src/cli/commands/import-external.js +1 -1
  51. package/dist/src/cli/commands/import-external.js.map +1 -1
  52. package/dist/src/cli/commands/init.d.ts.map +1 -1
  53. package/dist/src/cli/commands/init.js +45 -47
  54. package/dist/src/cli/commands/init.js.map +1 -1
  55. package/dist/src/cli/commands/install.js +1 -1
  56. package/dist/src/cli/commands/install.js.map +1 -1
  57. package/dist/src/cli/commands/list.js +1 -1
  58. package/dist/src/cli/commands/list.js.map +1 -1
  59. package/dist/src/cli/commands/migrate-to-multiproject.js +1 -1
  60. package/dist/src/cli/commands/migrate-to-multiproject.js.map +1 -1
  61. package/dist/src/cli/commands/migrate-to-profiles.js +1 -1
  62. package/dist/src/cli/commands/migrate-to-profiles.js.map +1 -1
  63. package/dist/src/cli/commands/plan/agent-invoker.js +1 -1
  64. package/dist/src/cli/commands/repair-status-desync.js +1 -1
  65. package/dist/src/cli/commands/repair-status-desync.js.map +1 -1
  66. package/dist/src/cli/commands/revert-wip-limit.js +1 -1
  67. package/dist/src/cli/commands/revert-wip-limit.js.map +1 -1
  68. package/dist/src/cli/commands/sync-specs.js +1 -1
  69. package/dist/src/cli/commands/sync-specs.js.map +1 -1
  70. package/dist/src/cli/helpers/init/initial-increment-generator.js +1 -1
  71. package/dist/src/cli/helpers/init/initial-increment-generator.js.map +1 -1
  72. package/dist/src/cli/helpers/issue-tracker/github-multi-repo.d.ts.map +1 -1
  73. package/dist/src/cli/helpers/issue-tracker/github-multi-repo.js +15 -36
  74. package/dist/src/cli/helpers/issue-tracker/github-multi-repo.js.map +1 -1
  75. package/dist/src/cli/helpers/issue-tracker/index.d.ts.map +1 -1
  76. package/dist/src/cli/helpers/issue-tracker/index.js +12 -31
  77. package/dist/src/cli/helpers/issue-tracker/index.js.map +1 -1
  78. package/dist/src/cli/helpers/issue-tracker/types.d.ts +6 -1
  79. package/dist/src/cli/helpers/issue-tracker/types.d.ts.map +1 -1
  80. package/dist/src/cli/helpers/issue-tracker/types.js.map +1 -1
  81. package/dist/src/config/import-config.js +1 -1
  82. package/dist/src/config/import-config.js.map +1 -1
  83. package/dist/src/config/types.d.ts +203 -1208
  84. package/dist/src/config/types.d.ts.map +1 -1
  85. package/dist/src/core/ac-test-validator-cli.js +1 -1
  86. package/dist/src/core/ac-test-validator-cli.js.map +1 -1
  87. package/dist/src/core/ac-test-validator.js +1 -1
  88. package/dist/src/core/ac-test-validator.js.map +1 -1
  89. package/dist/src/core/brownfield/analyzer.js +1 -1
  90. package/dist/src/core/brownfield/analyzer.js.map +1 -1
  91. package/dist/src/core/brownfield/importer.js +1 -1
  92. package/dist/src/core/brownfield/importer.js.map +1 -1
  93. package/dist/src/core/cicd/config-loader.js +1 -1
  94. package/dist/src/core/cicd/config-loader.js.map +1 -1
  95. package/dist/src/core/cicd/notifier.js +1 -1
  96. package/dist/src/core/cicd/notifier.js.map +1 -1
  97. package/dist/src/core/cicd/parent-repo-validator.js +1 -1
  98. package/dist/src/core/cicd/parent-repo-validator.js.map +1 -1
  99. package/dist/src/core/cicd/state-manager.js +1 -1
  100. package/dist/src/core/cicd/state-manager.js.map +1 -1
  101. package/dist/src/core/config/types.d.ts +46 -12
  102. package/dist/src/core/config/types.d.ts.map +1 -1
  103. package/dist/src/core/config/types.js +0 -5
  104. package/dist/src/core/config/types.js.map +1 -1
  105. package/dist/src/core/config-manager.js +1 -1
  106. package/dist/src/core/config-manager.js.map +1 -1
  107. package/dist/src/core/cost-tracker.js +1 -1
  108. package/dist/src/core/cost-tracker.js.map +1 -1
  109. package/dist/src/core/deduplication/command-deduplicator.js +1 -1
  110. package/dist/src/core/deduplication/command-deduplicator.js.map +1 -1
  111. package/dist/src/core/feature-deleter/audit-logger.d.ts +30 -0
  112. package/dist/src/core/feature-deleter/audit-logger.d.ts.map +1 -0
  113. package/dist/src/core/feature-deleter/audit-logger.js +77 -0
  114. package/dist/src/core/feature-deleter/audit-logger.js.map +1 -0
  115. package/dist/src/core/feature-deleter/confirmation-manager.d.ts +39 -0
  116. package/dist/src/core/feature-deleter/confirmation-manager.d.ts.map +1 -0
  117. package/dist/src/core/feature-deleter/confirmation-manager.js +89 -0
  118. package/dist/src/core/feature-deleter/confirmation-manager.js.map +1 -0
  119. package/dist/src/core/feature-deleter/deletion-transaction.d.ts +51 -0
  120. package/dist/src/core/feature-deleter/deletion-transaction.d.ts.map +1 -0
  121. package/dist/src/core/feature-deleter/deletion-transaction.js +185 -0
  122. package/dist/src/core/feature-deleter/deletion-transaction.js.map +1 -0
  123. package/dist/src/core/feature-deleter/git-service.d.ts +43 -0
  124. package/dist/src/core/feature-deleter/git-service.d.ts.map +1 -0
  125. package/dist/src/core/feature-deleter/git-service.js +127 -0
  126. package/dist/src/core/feature-deleter/git-service.js.map +1 -0
  127. package/dist/src/core/feature-deleter/github-service.d.ts +36 -0
  128. package/dist/src/core/feature-deleter/github-service.d.ts.map +1 -0
  129. package/dist/src/core/feature-deleter/github-service.js +102 -0
  130. package/dist/src/core/feature-deleter/github-service.js.map +1 -0
  131. package/dist/src/core/feature-deleter/index.d.ts +35 -0
  132. package/dist/src/core/feature-deleter/index.d.ts.map +1 -0
  133. package/dist/src/core/feature-deleter/index.js +199 -0
  134. package/dist/src/core/feature-deleter/index.js.map +1 -0
  135. package/dist/src/core/feature-deleter/types.d.ts +179 -0
  136. package/dist/src/core/feature-deleter/types.d.ts.map +1 -0
  137. package/dist/src/core/feature-deleter/types.js +7 -0
  138. package/dist/src/core/feature-deleter/types.js.map +1 -0
  139. package/dist/src/core/feature-deleter/validator.d.ts +46 -0
  140. package/dist/src/core/feature-deleter/validator.d.ts.map +1 -0
  141. package/dist/src/core/feature-deleter/validator.js +231 -0
  142. package/dist/src/core/feature-deleter/validator.js.map +1 -0
  143. package/dist/src/core/hooks/HealthReporter.js +1 -1
  144. package/dist/src/core/hooks/HealthReporter.js.map +1 -1
  145. package/dist/src/core/hooks/HookAutoFixer.js +1 -1
  146. package/dist/src/core/hooks/HookAutoFixer.js.map +1 -1
  147. package/dist/src/core/hooks/HookScanner.js +1 -1
  148. package/dist/src/core/hooks/HookScanner.js.map +1 -1
  149. package/dist/src/core/i18n/language-manager.js +1 -1
  150. package/dist/src/core/i18n/language-manager.js.map +1 -1
  151. package/dist/src/core/i18n/locale-manager.js +1 -1
  152. package/dist/src/core/i18n/locale-manager.js.map +1 -1
  153. package/dist/src/core/i18n/system-prompt-injector.js +1 -1
  154. package/dist/src/core/i18n/system-prompt-injector.js.map +1 -1
  155. package/dist/src/core/increment/ac-status-manager.d.ts.map +1 -1
  156. package/dist/src/core/increment/ac-status-manager.js +18 -4
  157. package/dist/src/core/increment/ac-status-manager.js.map +1 -1
  158. package/dist/src/core/increment/active-increment-manager.js +1 -1
  159. package/dist/src/core/increment/active-increment-manager.js.map +1 -1
  160. package/dist/src/core/increment/completion-validator.js +1 -1
  161. package/dist/src/core/increment/completion-validator.js.map +1 -1
  162. package/dist/src/core/increment/conflict-resolver.js +1 -1
  163. package/dist/src/core/increment/conflict-resolver.js.map +1 -1
  164. package/dist/src/core/increment/desync-detector.js +1 -1
  165. package/dist/src/core/increment/desync-detector.js.map +1 -1
  166. package/dist/src/core/increment/discipline-checker.js +1 -1
  167. package/dist/src/core/increment/discipline-checker.js.map +1 -1
  168. package/dist/src/core/increment/duplicate-detector.js +1 -1
  169. package/dist/src/core/increment/duplicate-detector.js.map +1 -1
  170. package/dist/src/core/increment/increment-archiver.js +1 -1
  171. package/dist/src/core/increment/increment-archiver.js.map +1 -1
  172. package/dist/src/core/increment/increment-reopener.js +1 -1
  173. package/dist/src/core/increment/increment-reopener.js.map +1 -1
  174. package/dist/src/core/increment/metadata-manager.js +1 -1
  175. package/dist/src/core/increment/metadata-manager.js.map +1 -1
  176. package/dist/src/core/increment/metadata-validator.js +1 -1
  177. package/dist/src/core/increment/metadata-validator.js.map +1 -1
  178. package/dist/src/core/increment/recent-work-scanner.js +1 -1
  179. package/dist/src/core/increment/recent-work-scanner.js.map +1 -1
  180. package/dist/src/core/increment/spec-frontmatter-updater.js +1 -1
  181. package/dist/src/core/increment/spec-frontmatter-updater.js.map +1 -1
  182. package/dist/src/core/increment/status-auto-transition.js +1 -1
  183. package/dist/src/core/increment/status-auto-transition.js.map +1 -1
  184. package/dist/src/core/increment-status.js +1 -1
  185. package/dist/src/core/increment-status.js.map +1 -1
  186. package/dist/src/core/living-docs/content-distributor.js +1 -1
  187. package/dist/src/core/living-docs/content-distributor.js.map +1 -1
  188. package/dist/src/core/living-docs/cross-linker.js +1 -1
  189. package/dist/src/core/living-docs/cross-linker.js.map +1 -1
  190. package/dist/src/core/living-docs/feature-archiver.js +1 -1
  191. package/dist/src/core/living-docs/feature-archiver.js.map +1 -1
  192. package/dist/src/core/living-docs/feature-id-manager.js +1 -1
  193. package/dist/src/core/living-docs/feature-id-manager.js.map +1 -1
  194. package/dist/src/core/living-docs/hierarchy-mapper.js +1 -1
  195. package/dist/src/core/living-docs/hierarchy-mapper.js.map +1 -1
  196. package/dist/src/core/living-docs/living-docs-sync.d.ts +14 -0
  197. package/dist/src/core/living-docs/living-docs-sync.d.ts.map +1 -1
  198. package/dist/src/core/living-docs/living-docs-sync.js +72 -13
  199. package/dist/src/core/living-docs/living-docs-sync.js.map +1 -1
  200. package/dist/src/core/living-docs/project-detector.js +1 -1
  201. package/dist/src/core/living-docs/project-detector.js.map +1 -1
  202. package/dist/src/core/living-docs/task-project-specific-generator.js +1 -1
  203. package/dist/src/core/living-docs/task-project-specific-generator.js.map +1 -1
  204. package/dist/src/core/logging/prompt-logger.js +1 -1
  205. package/dist/src/core/logging/prompt-logger.js.map +1 -1
  206. package/dist/src/core/plugin-loader.js +1 -1
  207. package/dist/src/core/plugin-loader.js.map +1 -1
  208. package/dist/src/core/project-manager.js +1 -1
  209. package/dist/src/core/project-manager.js.map +1 -1
  210. package/dist/src/core/qa/qa-runner.js +1 -1
  211. package/dist/src/core/qa/qa-runner.js.map +1 -1
  212. package/dist/src/core/repo-structure/folder-detector.js +1 -1
  213. package/dist/src/core/repo-structure/folder-detector.js.map +1 -1
  214. package/dist/src/core/repo-structure/repo-bulk-discovery.d.ts.map +1 -1
  215. package/dist/src/core/repo-structure/repo-bulk-discovery.js +20 -5
  216. package/dist/src/core/repo-structure/repo-bulk-discovery.js.map +1 -1
  217. package/dist/src/core/repo-structure/repo-structure-manager.d.ts.map +1 -1
  218. package/dist/src/core/repo-structure/repo-structure-manager.js +29 -14
  219. package/dist/src/core/repo-structure/repo-structure-manager.js.map +1 -1
  220. package/dist/src/core/repo-structure/setup-state-manager.js +1 -1
  221. package/dist/src/core/repo-structure/setup-state-manager.js.map +1 -1
  222. package/dist/src/core/spec-detector.js +1 -1
  223. package/dist/src/core/spec-detector.js.map +1 -1
  224. package/dist/src/core/specs/spec-metadata-manager.js +1 -1
  225. package/dist/src/core/specs/spec-metadata-manager.js.map +1 -1
  226. package/dist/src/core/status-line/status-line-updater.js +1 -1
  227. package/dist/src/core/status-line/status-line-updater.js.map +1 -1
  228. package/dist/src/core/status-line-validator.js +1 -1
  229. package/dist/src/core/status-line-validator.js.map +1 -1
  230. package/dist/src/core/sync/bidirectional-engine.js +1 -1
  231. package/dist/src/core/sync/bidirectional-engine.js.map +1 -1
  232. package/dist/src/core/sync/profile-manager.js +1 -1
  233. package/dist/src/core/sync/profile-manager.js.map +1 -1
  234. package/dist/src/core/sync/project-context.js +1 -1
  235. package/dist/src/core/sync/project-context.js.map +1 -1
  236. package/dist/src/core/sync/sync-event-logger.js +1 -1
  237. package/dist/src/core/sync/sync-event-logger.js.map +1 -1
  238. package/dist/src/core/types/config.js +1 -1
  239. package/dist/src/core/types/config.js.map +1 -1
  240. package/dist/src/core/us-completion-detector.d.ts +124 -0
  241. package/dist/src/core/us-completion-detector.d.ts.map +1 -0
  242. package/dist/src/core/us-completion-detector.js +270 -0
  243. package/dist/src/core/us-completion-detector.js.map +1 -0
  244. package/dist/src/core/utils/permission-checker.js +1 -1
  245. package/dist/src/core/utils/permission-checker.js.map +1 -1
  246. package/dist/src/core/workflow/autonomous-executor.js +1 -1
  247. package/dist/src/core/workflow/autonomous-executor.js.map +1 -1
  248. package/dist/src/core/workflow/backlog-scanner.js +1 -1
  249. package/dist/src/core/workflow/backlog-scanner.js.map +1 -1
  250. package/dist/src/core/workflow/cost-estimator.js +1 -1
  251. package/dist/src/core/workflow/cost-estimator.js.map +1 -1
  252. package/dist/src/core/workflow/state-manager.js +1 -1
  253. package/dist/src/core/workflow/state-manager.js.map +1 -1
  254. package/dist/src/importers/duplicate-detector.js +1 -1
  255. package/dist/src/importers/duplicate-detector.js.map +1 -1
  256. package/dist/src/importers/item-converter.js +1 -1
  257. package/dist/src/importers/item-converter.js.map +1 -1
  258. package/dist/src/init/architecture/types.d.ts +33 -140
  259. package/dist/src/init/architecture/types.d.ts.map +1 -1
  260. package/dist/src/init/compliance/types.d.ts +30 -27
  261. package/dist/src/init/compliance/types.d.ts.map +1 -1
  262. package/dist/src/init/repo/types.d.ts +11 -34
  263. package/dist/src/init/repo/types.d.ts.map +1 -1
  264. package/dist/src/init/research/src/config/types.d.ts +15 -82
  265. package/dist/src/init/research/src/config/types.d.ts.map +1 -1
  266. package/dist/src/init/research/types.d.ts +38 -93
  267. package/dist/src/init/research/types.d.ts.map +1 -1
  268. package/dist/src/init/team/types.d.ts +4 -42
  269. package/dist/src/init/team/types.d.ts.map +1 -1
  270. package/dist/src/integrations/jira/jira-incremental-mapper.d.ts +1 -1
  271. package/dist/src/integrations/jira/jira-incremental-mapper.d.ts.map +1 -1
  272. package/dist/src/integrations/jira/jira-incremental-mapper.js +3 -3
  273. package/dist/src/integrations/jira/jira-incremental-mapper.js.map +1 -1
  274. package/dist/src/living-docs/fs-id-allocator.js +1 -1
  275. package/dist/src/living-docs/fs-id-allocator.js.map +1 -1
  276. package/dist/src/living-docs/id-registry.js +1 -1
  277. package/dist/src/living-docs/id-registry.js.map +1 -1
  278. package/dist/src/sync/external-item-sync-service.js +1 -1
  279. package/dist/src/sync/external-item-sync-service.js.map +1 -1
  280. package/dist/src/sync/format-preservation-sync.d.ts.map +1 -1
  281. package/dist/src/sync/format-preservation-sync.js +23 -5
  282. package/dist/src/sync/format-preservation-sync.js.map +1 -1
  283. package/dist/src/sync/frontmatter-updater.d.ts +57 -0
  284. package/dist/src/sync/frontmatter-updater.d.ts.map +1 -0
  285. package/dist/src/sync/frontmatter-updater.js +147 -0
  286. package/dist/src/sync/frontmatter-updater.js.map +1 -0
  287. package/dist/src/sync/sync-coordinator.d.ts +22 -1
  288. package/dist/src/sync/sync-coordinator.d.ts.map +1 -1
  289. package/dist/src/sync/sync-coordinator.js +268 -21
  290. package/dist/src/sync/sync-coordinator.js.map +1 -1
  291. package/dist/src/sync/sync-metadata.js +1 -1
  292. package/dist/src/sync/sync-metadata.js.map +1 -1
  293. package/dist/src/types/living-docs-us-file.d.ts +18 -0
  294. package/dist/src/types/living-docs-us-file.d.ts.map +1 -1
  295. package/dist/src/types/living-docs-us-file.js.map +1 -1
  296. package/dist/src/utils/agents-md-compiler.js +1 -1
  297. package/dist/src/utils/agents-md-compiler.js.map +1 -1
  298. package/dist/src/utils/auto-install.js +1 -1
  299. package/dist/src/utils/auto-install.js.map +1 -1
  300. package/dist/src/utils/cost-reporter.js +1 -1
  301. package/dist/src/utils/cost-reporter.js.map +1 -1
  302. package/dist/src/utils/docs-preview/config-generator.js +1 -1
  303. package/dist/src/utils/docs-preview/config-generator.js.map +1 -1
  304. package/dist/src/utils/docs-preview/docusaurus-setup.js +1 -1
  305. package/dist/src/utils/docs-preview/docusaurus-setup.js.map +1 -1
  306. package/dist/src/utils/docs-preview/package-installer.js +1 -1
  307. package/dist/src/utils/docs-preview/package-installer.js.map +1 -1
  308. package/dist/src/utils/docs-preview/sidebar-builder.js +1 -1
  309. package/dist/src/utils/docs-preview/sidebar-builder.js.map +1 -1
  310. package/dist/src/utils/env-file-generator.js +1 -1
  311. package/dist/src/utils/env-file-generator.js.map +1 -1
  312. package/dist/src/utils/external-resource-validator.js +1 -1
  313. package/dist/src/utils/external-resource-validator.js.map +1 -1
  314. package/dist/src/utils/fs-native.d.ts +51 -5
  315. package/dist/src/utils/fs-native.d.ts.map +1 -1
  316. package/dist/src/utils/fs-native.js +100 -5
  317. package/dist/src/utils/fs-native.js.map +1 -1
  318. package/dist/src/utils/plugin-validator.js +1 -1
  319. package/dist/src/utils/plugin-validator.js.map +1 -1
  320. package/dist/src/utils/project-detection.js +1 -1
  321. package/dist/src/utils/project-detection.js.map +1 -1
  322. package/dist/src/utils/project-validator.js +1 -1
  323. package/dist/src/utils/project-validator.js.map +1 -1
  324. package/dist/src/utils/spec-parser.js +1 -1
  325. package/dist/src/utils/spec-parser.js.map +1 -1
  326. package/dist/src/utils/spec-splitter.js +1 -1
  327. package/dist/src/utils/spec-splitter.js.map +1 -1
  328. package/dist/src/validators/ac-coverage-validator.js +1 -1
  329. package/dist/src/validators/ac-coverage-validator.js.map +1 -1
  330. package/package.json +5 -6
  331. package/plugins/specweave/.claude-plugin/plugin.json +17 -11
  332. package/plugins/specweave/agents/architect/AGENT.md +115 -45
  333. package/plugins/specweave/agents/code-standards-detective/AGENT.md +47 -0
  334. package/plugins/specweave/agents/docs-writer/AGENT.md +134 -1
  335. package/plugins/specweave/agents/increment-quality-judge-v2/AGENT.md +1 -0
  336. package/plugins/specweave/agents/infrastructure/AGENT.md +48 -1
  337. package/plugins/specweave/agents/performance/AGENT.md +46 -0
  338. package/plugins/specweave/agents/pm/AGENT.md +115 -3
  339. package/plugins/specweave/agents/qa-lead/AGENT.md +40 -1
  340. package/plugins/specweave/agents/reflective-reviewer/AGENT.md +5 -0
  341. package/plugins/specweave/agents/security/AGENT.md +45 -0
  342. package/plugins/specweave/agents/tdd-orchestrator/AGENT.md +128 -1
  343. package/plugins/specweave/agents/tech-lead/AGENT.md +138 -1
  344. package/plugins/specweave/agents/test-aware-planner/AGENT.md +76 -6
  345. package/plugins/specweave/agents/translator/AGENT.md +132 -0
  346. package/plugins/specweave/commands/specweave-sync-progress.md +616 -0
  347. package/plugins/specweave/hooks/hooks.json +0 -9
  348. package/plugins/specweave/hooks/lib/update-status-line.sh +19 -0
  349. package/plugins/specweave/hooks/post-edit-write-consolidated.sh +335 -0
  350. package/plugins/specweave/hooks/post-increment-completion.sh +133 -0
  351. package/plugins/specweave/hooks/post-metadata-change.sh +58 -19
  352. package/plugins/specweave/hooks/post-task-completion.sh +100 -9
  353. package/plugins/specweave/hooks/pre-edit-spec.sh +0 -11
  354. package/plugins/specweave/hooks/pre-edit-write-consolidated.sh +225 -0
  355. package/plugins/specweave/hooks/pre-task-completion.sh +11 -0
  356. package/plugins/specweave/hooks/pre-write-spec.sh +0 -11
  357. package/plugins/specweave/hooks/shared/bulk-operation-detector.sh +167 -0
  358. package/plugins/specweave/lib/hooks/consolidated-sync.js +78 -3
  359. package/plugins/specweave/lib/hooks/us-completion-orchestrator.js +135 -0
  360. package/plugins/specweave/lib/vendor/core/increment/ac-status-manager.js +18 -4
  361. package/plugins/specweave/lib/vendor/core/increment/ac-status-manager.js.map +1 -1
  362. package/plugins/specweave/lib/vendor/core/increment/active-increment-manager.js +1 -1
  363. package/plugins/specweave/lib/vendor/core/increment/active-increment-manager.js.map +1 -1
  364. package/plugins/specweave/lib/vendor/core/increment/duplicate-detector.js +1 -1
  365. package/plugins/specweave/lib/vendor/core/increment/duplicate-detector.js.map +1 -1
  366. package/plugins/specweave/lib/vendor/core/increment/metadata-manager.js +1 -1
  367. package/plugins/specweave/lib/vendor/core/increment/metadata-manager.js.map +1 -1
  368. package/plugins/specweave/skills/code-reviewer/SKILL.md +1 -1
  369. package/plugins/specweave/skills/progress-sync/SKILL.md +405 -0
  370. package/plugins/specweave-ado/lib/ado-project-detector.js +1 -1
  371. package/plugins/specweave-ado/lib/ado-project-detector.ts +1 -1
  372. package/plugins/specweave-ado/lib/conflict-resolver.js +1 -1
  373. package/plugins/specweave-ado/lib/conflict-resolver.ts +1 -1
  374. package/plugins/specweave-backend/agents/database-optimizer/AGENT.md +1 -1
  375. package/plugins/specweave-frontend/agents/frontend-architect/AGENT.md +5 -0
  376. package/plugins/specweave-github/.claude-plugin/plugin.json +1 -15
  377. package/plugins/specweave-github/hooks/.specweave/logs/hooks-debug.log +480 -0
  378. package/plugins/specweave-github/hooks/README.md +34 -25
  379. package/plugins/specweave-github/lib/CodeValidator.js +1 -1
  380. package/plugins/specweave-github/lib/CodeValidator.ts +2 -2
  381. package/plugins/specweave-github/lib/ThreeLayerSyncManager.js +1 -1
  382. package/plugins/specweave-github/lib/ThreeLayerSyncManager.ts +1 -1
  383. package/plugins/specweave-github/lib/github-client-v2.js +59 -1
  384. package/plugins/specweave-github/lib/github-client-v2.ts +82 -1
  385. package/plugins/specweave-github/lib/github-issue-updater.js +1 -1
  386. package/plugins/specweave-github/lib/github-issue-updater.ts +1 -1
  387. package/plugins/specweave-github/lib/github-sync-bidirectional.js +1 -1
  388. package/plugins/specweave-github/lib/github-sync-bidirectional.ts +1 -1
  389. package/plugins/specweave-github/lib/github-sync-increment-changes.js +1 -1
  390. package/plugins/specweave-github/lib/github-sync-increment-changes.ts +1 -1
  391. package/plugins/specweave-github/lib/user-story-issue-builder.js +4 -4
  392. package/plugins/specweave-github/lib/user-story-issue-builder.ts +7 -6
  393. package/plugins/specweave-infrastructure/agents/devops/AGENT.md +48 -1
  394. package/plugins/specweave-infrastructure/agents/network-engineer/AGENT.md +6 -1
  395. package/plugins/specweave-infrastructure/agents/observability-engineer/AGENT.md +6 -1
  396. package/plugins/specweave-infrastructure/agents/performance-engineer/AGENT.md +6 -1
  397. package/plugins/specweave-infrastructure/agents/sre/AGENT.md +5 -0
  398. package/plugins/specweave-jira/lib/jira-epic-sync.js +1 -1
  399. package/plugins/specweave-jira/lib/jira-epic-sync.ts +1 -1
  400. package/plugins/specweave-kafka/agents/kafka-architect/AGENT.md +5 -0
  401. package/plugins/specweave-kubernetes/agents/kubernetes-architect/AGENT.md +47 -2
  402. package/plugins/specweave-ml/agents/data-scientist/AGENT.md +1 -1
  403. package/plugins/specweave-ml/agents/ml-engineer/AGENT.md +5 -0
  404. package/plugins/specweave-ml/agents/mlops-engineer/AGENT.md +6 -1
  405. package/plugins/specweave-payments/agents/payment-integration/AGENT.md +1 -1
  406. package/plugins/specweave-release/commands/specweave-release-npm.md +130 -2
  407. package/plugins/specweave-release/hooks/.specweave/logs/dora-tracking.log +198 -0
  408. package/plugins/specweave-ado/hooks/hooks.json +0 -15
  409. package/plugins/specweave-github/hooks/hooks.json +0 -15
  410. package/plugins/specweave-jira/hooks/hooks.json +0 -15
  411. package/plugins/specweave-release/hooks/hooks.json +0 -15
@@ -7,7 +7,7 @@
7
7
 
8
8
  ## Purpose
9
9
 
10
- This hook automatically syncs SpecWeave increment progress to GitHub Issues after each task completion.
10
+ This hook provides GitHub Issues sync functionality for SpecWeave increments.
11
11
 
12
12
  **Key Features**:
13
13
  - ✅ Updates GitHub issue checkboxes based on `tasks.md` completion status
@@ -16,13 +16,15 @@ This hook automatically syncs SpecWeave increment progress to GitHub Issues afte
16
16
  - ✅ Non-blocking (failures don't stop core workflow)
17
17
  - ✅ Self-contained (no dependencies on core plugin)
18
18
 
19
+ **IMPORTANT CHANGE (v0.26.0)**: This hook is NO LONGER automatically triggered on task completion. GitHub sync should be done manually or on increment completion to avoid excessive API calls and performance overhead.
20
+
19
21
  ---
20
22
 
21
23
  ## Available Hooks
22
24
 
23
25
  ### 1. `post-task-completion.sh`
24
26
 
25
- **Triggers**: After ANY task is marked complete (via TodoWrite tool)
27
+ **Triggers**: Manual invocation or increment completion (NOT on task completion)
26
28
 
27
29
  **Preconditions**:
28
30
  - ✅ Active increment exists (`.specweave/increments/####/`)
@@ -59,30 +61,36 @@ Log: "[GitHub] ✅ GitHub sync complete"
59
61
 
60
62
  ## Configuration
61
63
 
62
- ### Hook Registration (`hooks.json`)
64
+ ### Hook Registration
63
65
 
64
- ```json
65
- {
66
- "hooks": {
67
- "PostToolUse": [
68
- {
69
- "matcher": "TodoWrite",
70
- "hooks": [
71
- {
72
- "type": "command",
73
- "command": "${CLAUDE_PLUGIN_ROOT}/hooks/post-task-completion.sh"
74
- }
75
- ]
76
- }
77
- ]
78
- }
79
- }
66
+ **DEPRECATED (v0.26.0)**: This hook is NO LONGER automatically registered on TodoWrite events.
67
+
68
+ **Previous behavior (v0.24.0 and earlier)**:
69
+ - Hook automatically fired on EVERY task completion
70
+ - Caused excessive GitHub API calls
71
+ - Created performance overhead and duplicate executions
72
+
73
+ **New behavior (v0.26.0+)**:
74
+ - Hook must be invoked manually via `/specweave-github:sync`
75
+ - OR triggered on increment completion (not task completion)
76
+ - Reduces API calls by 90%+
77
+ - Eliminates duplicate hook executions
78
+
79
+ ### Usage
80
+
81
+ **Manual Sync** (recommended workflow):
82
+ ```bash
83
+ # After completing several tasks, sync progress to GitHub
84
+ /specweave-github:sync
85
+
86
+ # Or sync specific feature
87
+ /specweave-github:sync FS-048
80
88
  ```
81
89
 
82
- **Key Points**:
83
- - Uses `${CLAUDE_PLUGIN_ROOT}` to reference plugin directory
84
- - Matches `TodoWrite` tool (fires when tasks complete)
85
- - Runs as `command` type (shell script)
90
+ **Automatic Sync Options**:
91
+ 1. **On Increment Completion**: Add hook to specweave plugin's post-increment-completion
92
+ 2. **Periodic Sync**: Set up cron job or CI/CD trigger
93
+ 3. **On Demand**: Call `/specweave-github:sync` when needed
86
94
 
87
95
  ### Metadata Format
88
96
 
@@ -143,8 +151,9 @@ bash -n plugins/specweave-github/hooks/post-task-completion.sh
143
151
 
144
152
  1. Create increment: `/specweave:increment "test feature"`
145
153
  2. Create GitHub issue: `/specweave-github:create-issue 0001`
146
- 3. Complete a task (TodoWrite)
147
- 4. Hook fires Check GitHub issue for updates
154
+ 3. Complete several tasks via TodoWrite
155
+ 4. **Manually trigger sync**: `/specweave-github:sync`
156
+ 5. Check GitHub issue for updates
148
157
 
149
158
  ---
150
159
 
@@ -1,4 +1,4 @@
1
- import fs from "fs-extra";
1
+ import * as fs from "../../../src/utils/fs-native.js";
2
2
  import path from "path";
3
3
  class CodeValidator {
4
4
  constructor(options = {}) {
@@ -12,7 +12,7 @@
12
12
  * @module CodeValidator
13
13
  */
14
14
 
15
- import fs from 'fs-extra';
15
+ import * as fs from '../../../src/utils/fs-native.js';
16
16
  import path from 'path';
17
17
 
18
18
  /**
@@ -133,7 +133,7 @@ export class CodeValidator {
133
133
  // Read file content
134
134
  const content = await fs.readFile(absolutePath, 'utf-8');
135
135
  const lines = content.split('\n');
136
- const nonEmptyLines = lines.filter(line => line.trim().length > 0);
136
+ const nonEmptyLines = lines.filter((line: string) => line.trim().length > 0);
137
137
 
138
138
  // Check line count
139
139
  if (nonEmptyLines.length < this.options.minLines) {
@@ -1,4 +1,4 @@
1
- import fs from "fs-extra";
1
+ import * as fs from "../../../src/utils/fs-native.js";
2
2
  import path from "path";
3
3
  import { execFileNoThrow } from "../../../src/utils/execFileNoThrow.js";
4
4
  import { CodeValidator } from "./CodeValidator.js";
@@ -18,7 +18,7 @@
18
18
  * @module ThreeLayerSyncManager
19
19
  */
20
20
 
21
- import fs from 'fs-extra';
21
+ import * as fs from '../../../src/utils/fs-native.js';
22
22
  import path from 'path';
23
23
  import { execFileNoThrow } from '../../../src/utils/execFileNoThrow.js';
24
24
  import { CodeValidator, type TaskValidationResult } from './CodeValidator.js';
@@ -162,6 +162,27 @@ FIX: Use /specweave:sync-docs to generate living docs, then sync to GitHub.
162
162
  );
163
163
  }
164
164
  }
165
+ /**
166
+ * Create User Story issue (for automatic GitHub sync)
167
+ *
168
+ * CRITICAL: This is the CORRECT format for User Story GitHub issues
169
+ * Title format: [FS-XXX][US-YYY] User Story Title
170
+ *
171
+ * Used by: SyncCoordinator.createGitHubIssuesForUserStories()
172
+ *
173
+ * @param params - User story issue parameters
174
+ * @returns Created GitHub issue
175
+ */
176
+ async createUserStoryIssue(params) {
177
+ const formattedTitle = `[${params.featureId}][${params.userStoryId}] ${params.title}`;
178
+ const allLabels = params.labels || [];
179
+ return await this.createEpicIssue(
180
+ formattedTitle,
181
+ params.body,
182
+ params.milestone || void 0,
183
+ allLabels
184
+ );
185
+ }
165
186
  /**
166
187
  * Create epic issue (increment-level)
167
188
  */
@@ -181,7 +202,19 @@ FIX: Use /specweave:sync-docs to generate living docs, then sync to GitHub.
181
202
  args.push("--label", label);
182
203
  }
183
204
  if (milestone !== void 0) {
184
- args.push("--milestone", String(milestone));
205
+ if (typeof milestone === "number") {
206
+ const msResult = await execFileNoThrow("gh", [
207
+ "api",
208
+ `repos/${this.fullRepo}/milestones/${milestone}`,
209
+ "--jq",
210
+ ".title"
211
+ ]);
212
+ if (msResult.exitCode === 0 && msResult.stdout.trim()) {
213
+ args.push("--milestone", msResult.stdout.trim());
214
+ }
215
+ } else {
216
+ args.push("--milestone", milestone);
217
+ }
185
218
  }
186
219
  const createResult = await execFileNoThrow("gh", args);
187
220
  if (createResult.exitCode !== 0) {
@@ -326,6 +359,31 @@ ${body}`;
326
359
  );
327
360
  }
328
361
  }
362
+ /**
363
+ * Get last comment on issue (for idempotency check)
364
+ *
365
+ * Returns the most recent comment body, or null if no comments exist
366
+ */
367
+ async getLastComment(issueNumber) {
368
+ const result = await execFileNoThrow("gh", [
369
+ "api",
370
+ `repos/${this.fullRepo}/issues/${issueNumber}/comments`,
371
+ "--jq",
372
+ ".[-1] | {body: .body, author: .user.login}"
373
+ // Get last comment only
374
+ ]);
375
+ if (result.exitCode !== 0) {
376
+ return null;
377
+ }
378
+ if (!result.stdout.trim()) {
379
+ return null;
380
+ }
381
+ try {
382
+ return JSON.parse(result.stdout);
383
+ } catch {
384
+ return null;
385
+ }
386
+ }
329
387
  /**
330
388
  * Add labels to issue
331
389
  */
@@ -220,6 +220,40 @@ export class GitHubClientV2 {
220
220
  }
221
221
  }
222
222
 
223
+ /**
224
+ * Create User Story issue (for automatic GitHub sync)
225
+ *
226
+ * CRITICAL: This is the CORRECT format for User Story GitHub issues
227
+ * Title format: [FS-XXX][US-YYY] User Story Title
228
+ *
229
+ * Used by: SyncCoordinator.createGitHubIssuesForUserStories()
230
+ *
231
+ * @param params - User story issue parameters
232
+ * @returns Created GitHub issue
233
+ */
234
+ async createUserStoryIssue(params: {
235
+ featureId: string;
236
+ userStoryId: string;
237
+ title: string;
238
+ body: string;
239
+ labels?: string[];
240
+ milestone?: number | null;
241
+ }): Promise<GitHubIssue> {
242
+ // Format title: [FS-XXX][US-YYY] Title
243
+ const formattedTitle = `[${params.featureId}][${params.userStoryId}] ${params.title}`;
244
+
245
+ // Use only provided labels (don't add defaults that may not exist)
246
+ const allLabels = params.labels || [];
247
+
248
+ // Create issue using standard method
249
+ return await this.createEpicIssue(
250
+ formattedTitle,
251
+ params.body,
252
+ params.milestone || undefined,
253
+ allLabels
254
+ );
255
+ }
256
+
223
257
  /**
224
258
  * Create epic issue (increment-level)
225
259
  */
@@ -249,7 +283,23 @@ export class GitHubClientV2 {
249
283
 
250
284
  // Add milestone
251
285
  if (milestone !== undefined) {
252
- args.push('--milestone', String(milestone));
286
+ // gh CLI requires milestone TITLE, not number
287
+ if (typeof milestone === 'number') {
288
+ // Fetch milestone by number to get title
289
+ const msResult = await execFileNoThrow('gh', [
290
+ 'api',
291
+ `repos/${this.fullRepo}/milestones/${milestone}`,
292
+ '--jq',
293
+ '.title'
294
+ ]);
295
+
296
+ if (msResult.exitCode === 0 && msResult.stdout.trim()) {
297
+ args.push('--milestone', msResult.stdout.trim());
298
+ }
299
+ // If milestone fetch fails, skip milestone assignment (non-blocking)
300
+ } else {
301
+ args.push('--milestone', milestone);
302
+ }
253
303
  }
254
304
 
255
305
  // Create issue (returns URL)
@@ -426,6 +476,37 @@ export class GitHubClientV2 {
426
476
  }
427
477
  }
428
478
 
479
+ /**
480
+ * Get last comment on issue (for idempotency check)
481
+ *
482
+ * Returns the most recent comment body, or null if no comments exist
483
+ */
484
+ async getLastComment(issueNumber: number): Promise<{body: string; author: string} | null> {
485
+ // Get all comments (sorted by creation date, newest last)
486
+ const result = await execFileNoThrow('gh', [
487
+ 'api',
488
+ `repos/${this.fullRepo}/issues/${issueNumber}/comments`,
489
+ '--jq',
490
+ '.[-1] | {body: .body, author: .user.login}', // Get last comment only
491
+ ]);
492
+
493
+ if (result.exitCode !== 0) {
494
+ // If error, return null (no comments or API error)
495
+ return null;
496
+ }
497
+
498
+ if (!result.stdout.trim()) {
499
+ // Empty response = no comments
500
+ return null;
501
+ }
502
+
503
+ try {
504
+ return JSON.parse(result.stdout);
505
+ } catch {
506
+ return null;
507
+ }
508
+ }
509
+
429
510
  /**
430
511
  * Add labels to issue
431
512
  */
@@ -1,4 +1,4 @@
1
- import fs from "fs-extra";
1
+ import * as fs from "../../../src/utils/fs-native.js";
2
2
  import path from "path";
3
3
  import { execFileNoThrow } from "../../../src/utils/execFileNoThrow.js";
4
4
  async function updateIssueLivingDocs(issueNumber, livingDocs, owner, repo) {
@@ -7,7 +7,7 @@
7
7
  * @module github-issue-updater
8
8
  */
9
9
 
10
- import fs from 'fs-extra';
10
+ import * as fs from '../../../src/utils/fs-native.js';
11
11
  import path from 'path';
12
12
  import { execFileNoThrow } from '../../../src/utils/execFileNoThrow.js';
13
13
 
@@ -1,4 +1,4 @@
1
- import fs from "fs-extra";
1
+ import * as fs from "../../../src/utils/fs-native.js";
2
2
  import path from "path";
3
3
  import { execFileNoThrow } from "../../../src/utils/execFileNoThrow.js";
4
4
  import {
@@ -16,7 +16,7 @@
16
16
  * @module github-sync-bidirectional
17
17
  */
18
18
 
19
- import fs from 'fs-extra';
19
+ import * as fs from '../../../src/utils/fs-native.js';
20
20
  import path from 'path';
21
21
  import { execFileNoThrow } from '../../../src/utils/execFileNoThrow.js';
22
22
  import {
@@ -1,4 +1,4 @@
1
- import fs from "fs-extra";
1
+ import * as fs from "../../../src/utils/fs-native.js";
2
2
  import path from "path";
3
3
  import { execSync } from "child_process";
4
4
  import {
@@ -7,7 +7,7 @@
7
7
  * @module github-sync-increment-changes
8
8
  */
9
9
 
10
- import fs from 'fs-extra';
10
+ import * as fs from '../../../src/utils/fs-native.js';
11
11
  import path from 'path';
12
12
  import { execSync } from 'child_process';
13
13
  import {
@@ -152,12 +152,12 @@ User Story ID: ${frontmatter.id}`
152
152
  return this.extractTasksLegacy(userStoryContent, userStoryId);
153
153
  }
154
154
  const tasksSection = tasksMatch[1];
155
- const taskPattern = /^[-*]\s+\[([x ])\]\s+\*\*(T-\d+)\*\*:\s+(.+)$/gm;
155
+ const taskPattern = /^[-*]\s+\[([x ])\]\s+(?:\[(T-\d+)\]\([^)]+\)|\*\*(T-\d+)\*\*):\s+(.+)$/gm;
156
156
  let match;
157
157
  while ((match = taskPattern.exec(tasksSection)) !== null) {
158
158
  const completed = match[1] === "x";
159
- const taskId = match[2];
160
- const taskTitle = match[3].trim();
159
+ const taskId = match[2] || match[3];
160
+ const taskTitle = match[4].trim();
161
161
  tasks.push({
162
162
  id: taskId,
163
163
  title: taskTitle,
@@ -203,7 +203,7 @@ User Story ID: ${frontmatter.id}`
203
203
  const taskId = match[1];
204
204
  const taskTitle = match[2].trim();
205
205
  const taskBody = match[3];
206
- const acMatch = taskBody.match(/\*\*AC\*\*:\s*([^\n]+)/);
206
+ const acMatch = taskBody.match(/\*\*(?:Satisfies ACs?|AC)\*\*:\s*([^\n]+)/);
207
207
  if (!acMatch) {
208
208
  continue;
209
209
  }
@@ -265,14 +265,15 @@ export class UserStoryIssueBuilder {
265
265
 
266
266
  const tasksSection = tasksMatch[1];
267
267
 
268
- // Pattern: - [x] **T-001**: Task title or - [ ] **T-001**: Task title
269
- const taskPattern = /^[-*]\s+\[([x ])\]\s+\*\*(T-\d+)\*\*:\s+(.+)$/gm;
268
+ // Pattern 1 (NEW): - [x] [T-001](link): Task title
269
+ // Pattern 2 (OLD): - [x] **T-001**: Task title
270
+ const taskPattern = /^[-*]\s+\[([x ])\]\s+(?:\[(T-\d+)\]\([^)]+\)|\*\*(T-\d+)\*\*):\s+(.+)$/gm;
270
271
 
271
272
  let match;
272
273
  while ((match = taskPattern.exec(tasksSection)) !== null) {
273
274
  const completed = match[1] === 'x';
274
- const taskId = match[2];
275
- const taskTitle = match[3].trim();
275
+ const taskId = match[2] || match[3]; // Support both patterns
276
+ const taskTitle = match[4].trim();
276
277
 
277
278
  tasks.push({
278
279
  id: taskId,
@@ -342,8 +343,8 @@ export class UserStoryIssueBuilder {
342
343
  const taskTitle = match[2].trim();
343
344
  const taskBody = match[3];
344
345
 
345
- // Extract AC list
346
- const acMatch = taskBody.match(/\*\*AC\*\*:\s*([^\n]+)/);
346
+ // Extract AC list (support both old and new field names)
347
+ const acMatch = taskBody.match(/\*\*(?:Satisfies ACs?|AC)\*\*:\s*([^\n]+)/);
347
348
  if (!acMatch) {
348
349
  continue; // Skip tasks without AC field
349
350
  }
@@ -1,11 +1,12 @@
1
1
  ---
2
2
  name: devops
3
- description: DevOps and infrastructure expert for cloud deployments, CI/CD pipelines, Infrastructure as Code (Terraform, Pulumi), Kubernetes, Docker, and monitoring. Handles AWS, Azure, GCP deployments. Activates for: deploy, infrastructure, terraform, kubernetes, docker, ci/cd, devops, cloud, deployment, aws, azure, gcp, pipeline, monitoring, ECS, EKS, AKS, GKE, Fargate, Lambda, CloudFormation, Helm, Kustomize, ArgoCD, GitHub Actions, GitLab CI, Jenkins.
3
+ description: DevOps and infrastructure expert that generates IaC ONE COMPONENT AT A TIME (VPC → Compute → Database → Monitoring) to prevent crashes. Handles Terraform, Kubernetes, Docker, CI/CD. **CRITICAL CHUNKING RULE - Large deployments (EKS + RDS + monitoring = 20+ files) done incrementally.** Activates for: deploy, infrastructure, terraform, kubernetes, docker, ci/cd, devops, cloud, deployment, aws, azure, gcp, pipeline, monitoring, ECS, EKS, AKS, GKE, Fargate, Lambda, CloudFormation, Helm, Kustomize, ArgoCD, GitHub Actions, GitLab CI, Jenkins.
4
4
  tools: Read, Write, Edit, Bash
5
5
  model: claude-sonnet-4-5-20250929
6
6
  model_preference: haiku
7
7
  cost_profile: execution
8
8
  fallback_behavior: flexible
9
+ max_response_tokens: 2000
9
10
  ---
10
11
 
11
12
  # DevOps Agent - Infrastructure & Deployment Expert
@@ -29,6 +30,52 @@ Task({
29
30
  - **Directory**: devops
30
31
  - **Agent Name**: devops
31
32
 
33
+ ---
34
+
35
+ ## ⚠️🚨 CRITICAL SAFETY RULE 🚨⚠️
36
+
37
+ **YOU MUST GENERATE INFRASTRUCTURE ONE COMPONENT AT A TIME** (Configured: `max_response_tokens: 2000`)
38
+
39
+ ### THE ABSOLUTE RULE: NO MASSIVE INFRASTRUCTURE GENERATION
40
+
41
+ **VIOLATION CAUSES CRASHES!** Large deployments (EKS + RDS + monitoring) = 20+ files, 2500+ lines.
42
+
43
+ 1. Analyze → List infrastructure components → ASK which to start (< 500 tokens)
44
+ 2. Generate ONE component (e.g., VPC) → ASK "Ready for next?" (< 800 tokens)
45
+ 3. Repeat ONE component at a time → NEVER generate all at once
46
+
47
+ **Chunk by Infrastructure Layer**:
48
+ - **Layer 1: Network** (VPC, subnets, security groups) → ONE response
49
+ - **Layer 2: Compute** (EKS, EC2, ASG) → ONE response
50
+ - **Layer 3: Database** (RDS, ElastiCache, backups) → ONE response
51
+ - **Layer 4: Monitoring** (CloudWatch, Prometheus, Grafana) → ONE response
52
+ - **Layer 5: CI/CD** (GitHub Actions, ArgoCD) → ONE response
53
+
54
+ ❌ WRONG: All Terraform files in one response → CRASH!
55
+ ✅ CORRECT: One infrastructure layer per response, user confirms each
56
+
57
+ **Example**: "Deploy EKS with monitoring"
58
+ ```
59
+ Response 1: Analyze → List 5 layers → Ask which first
60
+ Response 2: VPC layer (vpc.tf, subnets.tf, sg.tf) → Ask "Ready for EKS?"
61
+ Response 3: EKS layer (eks.tf, node-groups.tf) → Ask "Ready for RDS?"
62
+ Response 4: RDS layer (rds.tf, backups.tf) → Ask "Ready for monitoring?"
63
+ Response 5: Monitoring (cloudwatch.tf, prometheus/) → Ask "Ready for CI/CD?"
64
+ Response 6: CI/CD (.github/workflows/) → Complete!
65
+ ```
66
+
67
+ ### 📊 Self-Check Before Sending Response
68
+
69
+ Before you finish ANY response, mentally verify:
70
+
71
+ - [ ] Am I generating more than 1 infrastructure layer? **→ STOP! One layer per response**
72
+ - [ ] Is my response > 2000 tokens? **→ STOP! This is too large**
73
+ - [ ] Did I ask user which layer to do next? **→ REQUIRED!**
74
+ - [ ] Am I waiting for explicit confirmation? **→ YES! Never auto-continue**
75
+ - [ ] For large deployments (5+ layers), am I chunking? **→ YES! One layer at a time**
76
+
77
+ ---
78
+
32
79
  **When to Use**:
33
80
  - You need to design and implement cloud infrastructure (AWS, Azure, GCP)
34
81
  - You want to create Infrastructure as Code with Terraform or CloudFormation
@@ -1,12 +1,17 @@
1
1
  ---
2
2
  name: network-engineer
3
3
  description: Expert network engineer specializing in modern cloud networking, security architectures, and performance optimization. Masters multi-cloud connectivity, service mesh, zero-trust networking, SSL/TLS, global load balancing, and advanced troubleshooting. Handles CDN optimization, network automation, and compliance. Use PROACTIVELY for network design, connectivity issues, or performance optimization.
4
- model: haiku
4
+ model: claude-haiku-4-5-20251001
5
5
  model_preference: haiku
6
6
  cost_profile: execution
7
7
  fallback_behavior: flexible
8
+ max_response_tokens: 2000
8
9
  ---
9
10
 
11
+ ## ⚠️ Chunking for Large Network Architectures
12
+
13
+ When generating comprehensive network architectures that exceed 1000 lines (e.g., complete multi-cloud network design with VPCs, subnets, routing, load balancing, service mesh, and security policies), generate output **incrementally** to prevent crashes. Break large network implementations into logical layers (e.g., VPC & Subnets → Routing → Load Balancing → Service Mesh → Security Policies) and ask the user which layer to design next. This ensures reliable delivery of network architecture without overwhelming the system.
14
+
10
15
  You are a network engineer specializing in modern cloud networking, security, and performance optimization.
11
16
 
12
17
  ## 🚀 How to Invoke This Agent
@@ -1,12 +1,17 @@
1
1
  ---
2
2
  name: observability-engineer
3
3
  description: Build production-ready monitoring, logging, and tracing systems. Implements comprehensive observability strategies, SLI/SLO management, and incident response workflows. Use PROACTIVELY for monitoring infrastructure, performance optimization, or production reliability.
4
- model: sonnet
4
+ model: claude-sonnet-4-5-20250929
5
5
  model_preference: haiku
6
6
  cost_profile: execution
7
7
  fallback_behavior: flexible
8
+ max_response_tokens: 2000
8
9
  ---
9
10
 
11
+ ## ⚠️ Chunking for Large Monitoring Setups
12
+
13
+ When generating comprehensive monitoring and observability setups that exceed 1000 lines (e.g., complete observability stack with Prometheus, Grafana, OpenTelemetry, log aggregation, and distributed tracing), generate output **incrementally** to prevent crashes. Break large monitoring implementations into logical components (e.g., Metrics Collection → Dashboards → Alerting → Distributed Tracing → Log Aggregation) and ask the user which component to implement next. This ensures reliable delivery of observability infrastructure without overwhelming the system.
14
+
10
15
  You are an observability engineer specializing in production-grade monitoring, logging, tracing, and reliability systems for enterprise-scale applications.
11
16
 
12
17
  ## 🚀 How to Invoke This Agent
@@ -1,12 +1,17 @@
1
1
  ---
2
2
  name: performance-engineer
3
3
  description: Expert performance engineer specializing in modern observability, application optimization, and scalable system performance. Masters OpenTelemetry, distributed tracing, load testing, multi-tier caching, Core Web Vitals, and performance monitoring. Handles end-to-end optimization, real user monitoring, and scalability patterns. Use PROACTIVELY for performance optimization, observability, or scalability challenges.
4
- model: sonnet
4
+ model: claude-sonnet-4-5-20250929
5
5
  model_preference: haiku
6
6
  cost_profile: execution
7
7
  fallback_behavior: flexible
8
+ max_response_tokens: 2000
8
9
  ---
9
10
 
11
+ ## ⚠️ Chunking for Large Performance Optimization Plans
12
+
13
+ When generating comprehensive performance optimization implementations that exceed 1000 lines (e.g., complete performance stack with distributed tracing, multi-tier caching, load testing setup, and Core Web Vitals optimization), generate output **incrementally** to prevent crashes. Break large performance projects into logical components (e.g., Profiling & Baselining → Caching Strategy → Database Optimization → Load Testing → Monitoring Setup) and ask the user which component to implement next. This ensures reliable delivery of performance infrastructure without overwhelming the system.
14
+
10
15
  You are a performance engineer specializing in modern application optimization, observability, and scalable system performance.
11
16
 
12
17
  ## 🚀 How to Invoke This Agent
@@ -6,10 +6,15 @@ model: claude-sonnet-4-5-20250929
6
6
  model_preference: auto
7
7
  cost_profile: hybrid
8
8
  fallback_behavior: auto
9
+ max_response_tokens: 2000
9
10
  ---
10
11
 
11
12
  # SRE Agent - Site Reliability Engineering Expert
12
13
 
14
+ ## ⚠️ Chunking for Large Incident Reports
15
+
16
+ When generating comprehensive incident reports that exceed 1000 lines (e.g., complete post-mortems covering root cause analysis, mitigation plans, runbooks, and preventive measures across multiple system layers), generate output **incrementally** to prevent crashes. Break large incident reports into logical phases (e.g., Triage → Root Cause Analysis → Immediate Mitigation → Long-term Prevention → Post-Mortem) and ask the user which phase to work on next. This ensures reliable delivery of SRE documentation without overwhelming the system.
17
+
13
18
  ## 🚀 How to Invoke This Agent
14
19
 
15
20
  **Subagent Type**: `specweave-infrastructure:sre:sre`
@@ -1,4 +1,4 @@
1
- import * as fs from "fs-extra";
1
+ import * as fs from "../../../src/utils/fs-native.js";
2
2
  import * as path from "path";
3
3
  import * as yaml from "yaml";
4
4
  class JiraEpicSync {
@@ -8,7 +8,7 @@
8
8
  * This implements the Universal Hierarchy architecture for JIRA.
9
9
  */
10
10
 
11
- import * as fs from 'fs-extra';
11
+ import * as fs from '../../../src/utils/fs-native.js';
12
12
  import * as path from 'path';
13
13
  import * as yaml from 'yaml';
14
14
  import { JiraClient, JiraIssue, JiraIssueCreate } from '../../../src/integrations/jira/jira-client.js';
@@ -1,10 +1,15 @@
1
1
  ---
2
2
  name: kafka-architect
3
3
  description: Kafka architecture and design specialist. Expert in system design, partition strategy, data modeling, replication topology, capacity planning, and event-driven architecture patterns.
4
+ max_response_tokens: 2000
4
5
  ---
5
6
 
6
7
  # Kafka Architect Agent
7
8
 
9
+ ## ⚠️ Chunking for Large Kafka Architectures
10
+
11
+ When generating comprehensive Kafka architectures that exceed 1000 lines (e.g., complete event-driven system design with multiple topics, partition strategies, consumer groups, and CQRS patterns), generate output **incrementally** to prevent crashes. Break large Kafka implementations into logical components (e.g., Topic Design → Partition Strategy → Consumer Groups → Event Sourcing Patterns → Monitoring) and ask the user which component to design next. This ensures reliable delivery of Kafka architecture without overwhelming the system.
12
+
8
13
  ## 🚀 How to Invoke This Agent
9
14
 
10
15
  **Subagent Type**: `specweave-kafka:kafka-architect:kafka-architect`