specweave 0.1.9 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (293) hide show
  1. package/CLAUDE.md +600 -0
  2. package/README.md +245 -81
  3. package/bin/install-all.sh +1 -1
  4. package/bin/install-commands.sh +3 -3
  5. package/bin/specweave.js +39 -9
  6. package/dist/adapters/adapter-base.d.ts +1 -1
  7. package/dist/adapters/adapter-base.d.ts.map +1 -1
  8. package/dist/adapters/adapter-base.js +6 -41
  9. package/dist/adapters/adapter-base.js.map +1 -1
  10. package/dist/adapters/adapter-interface.js +1 -2
  11. package/dist/adapters/adapter-interface.js.map +1 -1
  12. package/dist/adapters/adapter-loader.d.ts +86 -0
  13. package/dist/adapters/adapter-loader.d.ts.map +1 -0
  14. package/dist/adapters/adapter-loader.js +216 -0
  15. package/dist/adapters/adapter-loader.js.map +1 -0
  16. package/dist/adapters/agents-md-generator.d.ts +48 -0
  17. package/dist/adapters/agents-md-generator.d.ts.map +1 -0
  18. package/dist/adapters/agents-md-generator.js +132 -0
  19. package/dist/adapters/agents-md-generator.js.map +1 -0
  20. package/dist/adapters/claude/adapter.d.ts +2 -2
  21. package/dist/adapters/claude/adapter.d.ts.map +1 -1
  22. package/dist/adapters/claude/adapter.js +5 -42
  23. package/dist/adapters/claude/adapter.js.map +1 -1
  24. package/dist/adapters/claude-md-generator.d.ts +78 -0
  25. package/dist/adapters/claude-md-generator.d.ts.map +1 -0
  26. package/dist/adapters/claude-md-generator.js +246 -0
  27. package/dist/adapters/claude-md-generator.js.map +1 -0
  28. package/dist/adapters/codex/adapter.d.ts +50 -0
  29. package/dist/adapters/codex/adapter.d.ts.map +1 -0
  30. package/dist/adapters/codex/adapter.js +316 -0
  31. package/dist/adapters/codex/adapter.js.map +1 -0
  32. package/dist/adapters/copilot/adapter.d.ts +10 -9
  33. package/dist/adapters/copilot/adapter.d.ts.map +1 -1
  34. package/dist/adapters/copilot/adapter.js +35 -100
  35. package/dist/adapters/copilot/adapter.js.map +1 -1
  36. package/dist/adapters/cursor/adapter.d.ts +8 -6
  37. package/dist/adapters/cursor/adapter.d.ts.map +1 -1
  38. package/dist/adapters/cursor/adapter.js +47 -130
  39. package/dist/adapters/cursor/adapter.js.map +1 -1
  40. package/dist/adapters/doc-generator.d.ts +69 -0
  41. package/dist/adapters/doc-generator.d.ts.map +1 -0
  42. package/dist/adapters/doc-generator.js +247 -0
  43. package/dist/adapters/doc-generator.js.map +1 -0
  44. package/dist/adapters/gemini/adapter.d.ts +50 -0
  45. package/dist/adapters/gemini/adapter.d.ts.map +1 -0
  46. package/dist/adapters/gemini/adapter.js +281 -0
  47. package/dist/adapters/gemini/adapter.js.map +1 -0
  48. package/dist/adapters/generic/adapter.d.ts +7 -4
  49. package/dist/adapters/generic/adapter.d.ts.map +1 -1
  50. package/dist/adapters/generic/adapter.js +60 -59
  51. package/dist/adapters/generic/adapter.js.map +1 -1
  52. package/dist/cli/commands/init.d.ts +3 -1
  53. package/dist/cli/commands/init.d.ts.map +1 -1
  54. package/dist/cli/commands/init.js +272 -170
  55. package/dist/cli/commands/init.js.map +1 -1
  56. package/dist/cli/commands/install.d.ts.map +1 -1
  57. package/dist/cli/commands/install.js +22 -58
  58. package/dist/cli/commands/install.js.map +1 -1
  59. package/dist/cli/commands/list.d.ts.map +1 -1
  60. package/dist/cli/commands/list.js +27 -64
  61. package/dist/cli/commands/list.js.map +1 -1
  62. package/dist/core/credentials-manager.d.ts +90 -0
  63. package/dist/core/credentials-manager.d.ts.map +1 -0
  64. package/dist/core/credentials-manager.js +271 -0
  65. package/dist/core/credentials-manager.js.map +1 -0
  66. package/dist/core/project-structure-detector.d.ts +92 -0
  67. package/dist/core/project-structure-detector.d.ts.map +1 -0
  68. package/dist/core/project-structure-detector.js +289 -0
  69. package/dist/core/project-structure-detector.js.map +1 -0
  70. package/dist/core/rfc-generator-v2.d.ts +149 -0
  71. package/dist/core/rfc-generator-v2.d.ts.map +1 -0
  72. package/dist/core/rfc-generator-v2.js +399 -0
  73. package/dist/core/rfc-generator-v2.js.map +1 -0
  74. package/dist/core/rfc-generator.d.ts +147 -0
  75. package/dist/core/rfc-generator.d.ts.map +1 -0
  76. package/dist/core/rfc-generator.js +434 -0
  77. package/dist/core/rfc-generator.js.map +1 -0
  78. package/dist/integrations/ado/ado-client.d.ts +123 -0
  79. package/dist/integrations/ado/ado-client.d.ts.map +1 -0
  80. package/dist/integrations/ado/ado-client.js +398 -0
  81. package/dist/integrations/ado/ado-client.js.map +1 -0
  82. package/dist/integrations/jira/jira-client.d.ts +139 -0
  83. package/dist/integrations/jira/jira-client.d.ts.map +1 -0
  84. package/dist/integrations/jira/jira-client.js +386 -0
  85. package/dist/integrations/jira/jira-client.js.map +1 -0
  86. package/dist/integrations/jira/jira-incremental-mapper.d.ts +75 -0
  87. package/dist/integrations/jira/jira-incremental-mapper.d.ts.map +1 -0
  88. package/dist/integrations/jira/jira-incremental-mapper.js +474 -0
  89. package/dist/integrations/jira/jira-incremental-mapper.js.map +1 -0
  90. package/dist/integrations/jira/jira-mapper.d.ts +105 -0
  91. package/dist/integrations/jira/jira-mapper.d.ts.map +1 -0
  92. package/dist/integrations/jira/jira-mapper.js +494 -0
  93. package/dist/integrations/jira/jira-mapper.js.map +1 -0
  94. package/dist/testing/test-generator.d.ts +117 -0
  95. package/dist/testing/test-generator.d.ts.map +1 -0
  96. package/dist/testing/test-generator.js +370 -0
  97. package/dist/testing/test-generator.js.map +1 -0
  98. package/dist/utils/auto-install.d.ts +3 -0
  99. package/dist/utils/auto-install.d.ts.map +1 -1
  100. package/dist/utils/auto-install.js +16 -82
  101. package/dist/utils/auto-install.js.map +1 -1
  102. package/dist/utils/esm-helpers.d.ts +50 -0
  103. package/dist/utils/esm-helpers.d.ts.map +1 -0
  104. package/dist/utils/esm-helpers.js +57 -0
  105. package/dist/utils/esm-helpers.js.map +1 -0
  106. package/package.json +16 -7
  107. package/src/adapters/README.md +1 -2
  108. package/src/adapters/adapter-base.ts +6 -3
  109. package/src/adapters/adapter-loader.ts +261 -0
  110. package/src/adapters/agents-md-generator.ts +162 -0
  111. package/src/adapters/claude/README.md +6 -14
  112. package/src/adapters/claude/adapter.ts +4 -4
  113. package/src/adapters/claude-md-generator.ts +311 -0
  114. package/src/adapters/codex/README.md +105 -0
  115. package/src/adapters/codex/adapter.ts +333 -0
  116. package/src/adapters/copilot/adapter.ts +36 -65
  117. package/src/adapters/cursor/README.md +0 -2
  118. package/src/adapters/cursor/adapter.ts +46 -92
  119. package/src/adapters/doc-generator.ts +331 -0
  120. package/src/adapters/gemini/README.md +97 -0
  121. package/src/adapters/gemini/adapter.ts +298 -0
  122. package/src/adapters/generic/adapter.ts +61 -57
  123. package/src/adapters/registry.yaml +86 -25
  124. package/src/agents/devops/AGENT.md +16 -18
  125. package/src/agents/docs-writer/AGENT.md +2 -2
  126. package/src/agents/pm/AGENT.md +1 -50
  127. package/src/commands/README.md +134 -111
  128. package/src/commands/{build.md → specweave.do.md} +141 -69
  129. package/src/commands/{done.md → specweave.done.md} +3 -3
  130. package/src/commands/{inc.md → specweave.inc.md} +4 -4
  131. package/src/commands/{increment.md → specweave.increment.md} +143 -76
  132. package/src/commands/specweave.md +430 -0
  133. package/src/commands/specweave.next.md +495 -0
  134. package/src/commands/{progress.md → specweave.progress.md} +12 -12
  135. package/src/commands/specweave.sync-docs.md +665 -0
  136. package/src/commands/specweave.sync-github.md +269 -0
  137. package/src/commands/specweave.sync-jira.md +197 -0
  138. package/src/commands/{validate.md → specweave.validate.md} +4 -4
  139. package/src/hooks/README.md +19 -29
  140. package/src/hooks/post-task-completion.sh +25 -30
  141. package/src/skills/ado-sync/README.md +1 -36
  142. package/src/skills/bmad-method-expert/SKILL.md +1 -3
  143. package/src/skills/brownfield-analyzer/SKILL.md +429 -23
  144. package/src/skills/brownfield-onboarder/SKILL.md +221 -8
  145. package/src/skills/context-loader/SKILL.md +239 -617
  146. package/src/skills/context-optimizer/SKILL.md +0 -30
  147. package/src/skills/github-sync/SKILL.md +1 -19
  148. package/src/skills/increment-planner/SKILL.md +64 -18
  149. package/src/skills/increment-quality-judge/SKILL.md +1 -36
  150. package/src/skills/jira-sync/README.md +1 -38
  151. package/src/skills/role-orchestrator/README.md +1 -22
  152. package/src/skills/role-orchestrator/SKILL.md +1 -59
  153. package/src/skills/skill-router/SKILL.md +0 -18
  154. package/src/skills/spec-kit-expert/SKILL.md +1 -3
  155. package/src/skills/specweave-detector/SKILL.md +225 -275
  156. package/src/skills/task-builder/README.md +1 -7
  157. package/src/templates/AGENTS.md.template +334 -0
  158. package/src/templates/CLAUDE.md.template +131 -298
  159. package/src/templates/README.md.template +115 -23
  160. package/src/templates/environments/minimal/README.md +0 -1
  161. package/INSTALL.md +0 -848
  162. package/SPECWEAVE.md +0 -743
  163. package/src/adapters/copilot/.github/copilot/instructions.md +0 -376
  164. package/src/adapters/cursor/.cursorrules +0 -325
  165. package/src/adapters/generic/SPECWEAVE-MANUAL.md +0 -676
  166. package/src/commands/create-project.md +0 -528
  167. package/src/commands/generate-docs.md +0 -623
  168. package/src/commands/review-docs.md +0 -331
  169. package/src/commands/sync-github.md +0 -115
  170. package/src/skills/ado-sync/test-cases/test-1.yaml +0 -9
  171. package/src/skills/ado-sync/test-cases/test-2.yaml +0 -8
  172. package/src/skills/ado-sync/test-cases/test-3.yaml +0 -9
  173. package/src/skills/bmad-method-expert/test-cases/test-1-placeholder.yaml +0 -12
  174. package/src/skills/bmad-method-expert/test-cases/test-2-placeholder.yaml +0 -12
  175. package/src/skills/bmad-method-expert/test-cases/test-3-placeholder.yaml +0 -12
  176. package/src/skills/brownfield-analyzer/test-cases/test-1-basic-analysis.yaml +0 -48
  177. package/src/skills/brownfield-analyzer/test-cases/test-2-placeholder.yaml +0 -12
  178. package/src/skills/brownfield-analyzer/test-cases/test-3-placeholder.yaml +0 -12
  179. package/src/skills/brownfield-onboarder/test-cases/test-1-placeholder.yaml +0 -12
  180. package/src/skills/brownfield-onboarder/test-cases/test-2-placeholder.yaml +0 -12
  181. package/src/skills/brownfield-onboarder/test-cases/test-3-placeholder.yaml +0 -12
  182. package/src/skills/calendar-system/test-cases/test-1-placeholder.yaml +0 -12
  183. package/src/skills/calendar-system/test-cases/test-2-placeholder.yaml +0 -12
  184. package/src/skills/calendar-system/test-cases/test-3-placeholder.yaml +0 -12
  185. package/src/skills/context-loader/test-cases/test-1-basic-loading.yaml +0 -39
  186. package/src/skills/context-loader/test-cases/test-2-token-budget-exceeded.yaml +0 -44
  187. package/src/skills/context-loader/test-cases/test-3-section-anchors.yaml +0 -45
  188. package/src/skills/context-optimizer/test-cases/test-1-bug-fix-narrow.yaml +0 -97
  189. package/src/skills/context-optimizer/test-cases/test-2-feature-focused.yaml +0 -109
  190. package/src/skills/context-optimizer/test-cases/test-3-architecture-broad.yaml +0 -98
  191. package/src/skills/cost-optimizer/test-cases/test-1-basic-comparison.yaml +0 -75
  192. package/src/skills/cost-optimizer/test-cases/test-2-budget-constraint.yaml +0 -52
  193. package/src/skills/cost-optimizer/test-cases/test-3-scale-requirement.yaml +0 -63
  194. package/src/skills/cost-optimizer/test-results/README.md +0 -46
  195. package/src/skills/design-system-architect/test-cases/test-1-token-structure.yaml +0 -23
  196. package/src/skills/design-system-architect/test-cases/test-2-component-hierarchy.yaml +0 -24
  197. package/src/skills/design-system-architect/test-cases/test-3-accessibility-checklist.yaml +0 -23
  198. package/src/skills/diagrams-architect/test-cases/test-1-c4-context.yaml +0 -13
  199. package/src/skills/diagrams-architect/test-cases/test-2-sequence-diagram.yaml +0 -13
  200. package/src/skills/diagrams-architect/test-cases/test-3-er-diagram.yaml +0 -13
  201. package/src/skills/diagrams-generator/test-cases/test-1.yaml +0 -9
  202. package/src/skills/diagrams-generator/test-cases/test-2.yaml +0 -9
  203. package/src/skills/diagrams-generator/test-cases/test-3.yaml +0 -8
  204. package/src/skills/docs-updater/test-cases/test-1-placeholder.yaml +0 -12
  205. package/src/skills/docs-updater/test-cases/test-2-placeholder.yaml +0 -12
  206. package/src/skills/docs-updater/test-cases/test-3-placeholder.yaml +0 -12
  207. package/src/skills/dotnet-backend/test-cases/test-1-rest-api.yaml +0 -14
  208. package/src/skills/dotnet-backend/test-cases/test-2-authentication.yaml +0 -13
  209. package/src/skills/dotnet-backend/test-cases/test-3-minimal-api.yaml +0 -13
  210. package/src/skills/e2e-playwright/test-cases/TC-001-basic-navigation.yaml +0 -54
  211. package/src/skills/e2e-playwright/test-cases/TC-002-form-interaction.yaml +0 -64
  212. package/src/skills/e2e-playwright/test-cases/TC-003-specweave-integration.yaml +0 -74
  213. package/src/skills/e2e-playwright/test-cases/TC-004-accessibility-check.yaml +0 -98
  214. package/src/skills/figma-designer/test-cases/test-1-design-system.yaml +0 -13
  215. package/src/skills/figma-designer/test-cases/test-2-component-library.yaml +0 -13
  216. package/src/skills/figma-designer/test-cases/test-3-responsive-layout.yaml +0 -13
  217. package/src/skills/figma-implementer/test-cases/test-1-design-to-react.yaml +0 -13
  218. package/src/skills/figma-implementer/test-cases/test-2-storybook.yaml +0 -13
  219. package/src/skills/figma-implementer/test-cases/test-3-design-tokens.yaml +0 -13
  220. package/src/skills/figma-mcp-connector/test-cases/test-1-read-file-desktop.yaml +0 -22
  221. package/src/skills/figma-mcp-connector/test-cases/test-2-read-file-framelink.yaml +0 -21
  222. package/src/skills/figma-mcp-connector/test-cases/test-3-error-handling.yaml +0 -18
  223. package/src/skills/figma-to-code/test-cases/test-1-token-generation.yaml +0 -29
  224. package/src/skills/figma-to-code/test-cases/test-2-component-generation.yaml +0 -27
  225. package/src/skills/figma-to-code/test-cases/test-3-typescript-generation.yaml +0 -28
  226. package/src/skills/frontend/test-cases/test-1-react-component.yaml +0 -13
  227. package/src/skills/frontend/test-cases/test-2-form-validation.yaml +0 -13
  228. package/src/skills/frontend/test-cases/test-3-state-management.yaml +0 -13
  229. package/src/skills/github-sync/test-cases/test-1-placeholder.yaml +0 -12
  230. package/src/skills/github-sync/test-cases/test-2-placeholder.yaml +0 -12
  231. package/src/skills/github-sync/test-cases/test-3-placeholder.yaml +0 -12
  232. package/src/skills/hetzner-provisioner/test-cases/test-1-basic-provision.yaml +0 -71
  233. package/src/skills/hetzner-provisioner/test-cases/test-2-postgres-provision.yaml +0 -85
  234. package/src/skills/hetzner-provisioner/test-cases/test-3-ssl-config.yaml +0 -126
  235. package/src/skills/hetzner-provisioner/test-results/README.md +0 -259
  236. package/src/skills/increment-planner/test-cases/test-1-basic-feature.yaml +0 -27
  237. package/src/skills/increment-planner/test-cases/test-2-complex-feature.yaml +0 -30
  238. package/src/skills/increment-planner/test-cases/test-3-auto-numbering.yaml +0 -24
  239. package/src/skills/increment-quality-judge/test-cases/test-1-good-spec.yaml +0 -95
  240. package/src/skills/increment-quality-judge/test-cases/test-2-poor-spec.yaml +0 -108
  241. package/src/skills/increment-quality-judge/test-cases/test-3-export-suggestions.yaml +0 -87
  242. package/src/skills/jira-sync/test-cases/test-1.yaml +0 -9
  243. package/src/skills/jira-sync/test-cases/test-2.yaml +0 -9
  244. package/src/skills/jira-sync/test-cases/test-3.yaml +0 -10
  245. package/src/skills/nextjs/test-cases/test-1-app-router.yaml +0 -13
  246. package/src/skills/nextjs/test-cases/test-2-server-actions.yaml +0 -13
  247. package/src/skills/nextjs/test-cases/test-3-api-routes.yaml +0 -13
  248. package/src/skills/nodejs-backend/test-cases/test-1-express-api.yaml +0 -13
  249. package/src/skills/nodejs-backend/test-cases/test-2-prisma-orm.yaml +0 -13
  250. package/src/skills/nodejs-backend/test-cases/test-3-authentication.yaml +0 -13
  251. package/src/skills/notification-system/test-cases/test-1-placeholder.yaml +0 -12
  252. package/src/skills/notification-system/test-cases/test-2-placeholder.yaml +0 -12
  253. package/src/skills/notification-system/test-cases/test-3-placeholder.yaml +0 -12
  254. package/src/skills/python-backend/test-cases/test-1-fastapi-crud.yaml +0 -13
  255. package/src/skills/python-backend/test-cases/test-2-sqlalchemy.yaml +0 -13
  256. package/src/skills/python-backend/test-cases/test-3-authentication.yaml +0 -13
  257. package/src/skills/role-orchestrator/test-cases/test-1-simple-product.yaml +0 -98
  258. package/src/skills/role-orchestrator/test-cases/test-2-quality-gate-failure.yaml +0 -73
  259. package/src/skills/role-orchestrator/test-cases/test-3-security-workflow.yaml +0 -121
  260. package/src/skills/role-orchestrator/test-cases/test-4-parallel-execution.yaml +0 -145
  261. package/src/skills/role-orchestrator/test-cases/test-5-feedback-loops.yaml +0 -149
  262. package/src/skills/skill-creator/test-cases/test-1-placeholder.yaml +0 -12
  263. package/src/skills/skill-creator/test-cases/test-2-placeholder.yaml +0 -12
  264. package/src/skills/skill-creator/test-cases/test-3-placeholder.yaml +0 -12
  265. package/src/skills/skill-router/test-cases/test-1-basic-routing.yaml +0 -33
  266. package/src/skills/skill-router/test-cases/test-2-ambiguous-request.yaml +0 -42
  267. package/src/skills/skill-router/test-cases/test-3-nested-orchestration.yaml +0 -50
  268. package/src/skills/spec-driven-brainstorming/test-cases/TC-001-simple-idea-to-design.yaml +0 -148
  269. package/src/skills/spec-driven-brainstorming/test-cases/TC-002-complex-ultrathink-design.yaml +0 -190
  270. package/src/skills/spec-driven-brainstorming/test-cases/TC-003-unclear-requirements-socratic.yaml +0 -233
  271. package/src/skills/spec-driven-debugging/test-cases/TC-001-simple-auth-bug.yaml +0 -212
  272. package/src/skills/spec-driven-debugging/test-cases/TC-002-race-condition-ultrathink.yaml +0 -461
  273. package/src/skills/spec-driven-debugging/test-cases/TC-003-brownfield-missing-spec.yaml +0 -366
  274. package/src/skills/spec-kit-expert/test-cases/test-1-placeholder.yaml +0 -12
  275. package/src/skills/spec-kit-expert/test-cases/test-2-placeholder.yaml +0 -12
  276. package/src/skills/spec-kit-expert/test-cases/test-3-placeholder.yaml +0 -12
  277. package/src/skills/specweave-ado-mapper/test-cases/test-1-export-to-ado.yaml +0 -13
  278. package/src/skills/specweave-ado-mapper/test-cases/test-2-import-from-ado.yaml +0 -13
  279. package/src/skills/specweave-ado-mapper/test-cases/test-3-bidirectional-sync.yaml +0 -13
  280. package/src/skills/specweave-detector/test-cases/test-1-basic-detection.yaml +0 -37
  281. package/src/skills/specweave-detector/test-cases/test-2-missing-config.yaml +0 -37
  282. package/src/skills/specweave-detector/test-cases/test-3-non-specweave-project.yaml +0 -34
  283. package/src/skills/specweave-jira-mapper/test-cases/test-1-export-to-jira.yaml +0 -13
  284. package/src/skills/specweave-jira-mapper/test-cases/test-2-import-from-jira.yaml +0 -13
  285. package/src/skills/specweave-jira-mapper/test-cases/test-3-sync-status.yaml +0 -13
  286. package/src/skills/stripe-integrator/test-cases/test-1-placeholder.yaml +0 -12
  287. package/src/skills/stripe-integrator/test-cases/test-2-placeholder.yaml +0 -12
  288. package/src/skills/stripe-integrator/test-cases/test-3-placeholder.yaml +0 -12
  289. package/src/skills/task-builder/test-cases/test-1-placeholder.yaml +0 -12
  290. package/src/skills/task-builder/test-cases/test-2-placeholder.yaml +0 -12
  291. package/src/skills/task-builder/test-cases/test-3-placeholder.yaml +0 -12
  292. package/src/templates/config.yaml +0 -351
  293. /package/src/commands/{list-increments.md → specweave.list-increments.md} +0 -0
@@ -0,0 +1,269 @@
1
+ ---
2
+ name: specweave.sync-github
3
+ description: Sync SpecWeave increments with GitHub issues. Supports import, export, bidirectional sync, and granular issue operations
4
+ ---
5
+
6
+ # Sync GitHub Command
7
+
8
+ You are a GitHub synchronization expert. Help the user sync between GitHub and SpecWeave with granular control.
9
+
10
+ ## Available Operations
11
+
12
+ ### Milestone-Level Operations
13
+
14
+ **1. Import GitHub Milestone as SpecWeave Increment**
15
+ ```
16
+ /specweave.sync-github import milestone-1
17
+ ```
18
+
19
+ **2. Sync existing linked Increment with GitHub**
20
+ ```
21
+ /specweave.sync-github sync 0003
22
+ ```
23
+
24
+ **3. Export SpecWeave Increment to GitHub**
25
+ ```
26
+ /specweave.sync-github export 0001
27
+ ```
28
+
29
+ ### Granular Issue Operations
30
+
31
+ **4. Add specific Issue to existing Increment**
32
+ ```
33
+ /specweave.sync-github add #42 to 0003
34
+ /specweave.sync-github add #42 # Adds to current increment
35
+ ```
36
+
37
+ **5. Create Increment from specific issues (cherry-pick)**
38
+ ```
39
+ /specweave.sync-github create "User Authentication" from #42 #45 #47
40
+ /specweave.sync-github create "Bug Fixes Sprint 1" from #10 #15 #20
41
+ ```
42
+
43
+ **6. Show sync status**
44
+ ```
45
+ /specweave.sync-github status
46
+ /specweave.sync-github status 0003 # Status of specific increment
47
+ ```
48
+
49
+ ## Your Task
50
+
51
+ When the user runs this command:
52
+
53
+ 1. **Parse the command arguments**:
54
+ - Operation: import, sync, export, add, create, or status
55
+ - ID: GitHub issue number (e.g., #123) or Increment ID (e.g., 0001)
56
+
57
+ 2. **Execute the operation**:
58
+
59
+ **For import Milestone**:
60
+ ```typescript
61
+ import { GitHubClient } from './src/integrations/github/github-client';
62
+ import { GitHubMapper } from './src/integrations/github/github-mapper';
63
+
64
+ const client = new GitHubClient();
65
+ const mapper = new GitHubMapper(client);
66
+ const result = await mapper.importMilestoneAsIncrement('milestone-1');
67
+ ```
68
+
69
+ **For add issue**:
70
+ ```typescript
71
+ import { GitHubIncrementalMapper } from './src/integrations/github/github-incremental-mapper';
72
+
73
+ const incrementalMapper = new GitHubIncrementalMapper(client);
74
+ const result = await incrementalMapper.addIssueToIncrement('0003', 42);
75
+ ```
76
+
77
+ **For create from issues**:
78
+ ```typescript
79
+ const result = await incrementalMapper.createIncrementFromIssues(
80
+ 'User Authentication',
81
+ [42, 45, 47]
82
+ );
83
+ ```
84
+
85
+ **For sync**:
86
+ ```typescript
87
+ const result = await mapper.syncIncrement('0003');
88
+ ```
89
+
90
+ **For export**:
91
+ ```typescript
92
+ const result = await mapper.exportIncrementAsIssues('0001');
93
+ ```
94
+
95
+ 3. **Show results**:
96
+ - Display sync summary
97
+ - Show conflicts (if any)
98
+ - List created/updated files
99
+ - Provide links to GitHub and SpecWeave
100
+
101
+ 4. **Handle errors gracefully**:
102
+ - Check if GITHUB_TOKEN exists in environment
103
+ - Validate increment/issue exists
104
+ - Check repository is configured
105
+ - Show clear error messages
106
+
107
+ ## Examples
108
+
109
+ ### Example 1: Import Milestone
110
+ **User**: `/specweave.sync-github import milestone-1`
111
+ **You**:
112
+ - Import Milestone "milestone-1" from GitHub
113
+ - Show: "✅ Imported as Increment 0004"
114
+ - List: "Created: spec.md, tasks.md, RFC document"
115
+ - Link: "GitHub: https://github.com/user/repo/milestone/1 | Increment: .specweave/increments/0004/"
116
+
117
+ ### Example 2: Add Issue to Current Increment
118
+ **User**: `/specweave.sync-github add #42`
119
+ **You**:
120
+ - Determine current increment (latest or from context)
121
+ - Fetch issue #42 from GitHub
122
+ - Add to increment's spec.md (under ## User Stories or ## Bugs based on labels)
123
+ - Update tasks.md
124
+ - Update RFC
125
+ - Show: "✅ Added Issue #42 to Increment 0003"
126
+ - Display: "Type: feature | Title: User authentication | Status: open"
127
+
128
+ ### Example 3: Add Bug Issue to Specific Increment
129
+ **User**: `/specweave.sync-github add #123 to 0003`
130
+ **You**:
131
+ - Fetch issue #123 from GitHub (labeled as "bug")
132
+ - Add to increment 0003's spec.md (under ## Bugs)
133
+ - Update tasks.md
134
+ - Update RFC
135
+ - Show: "✅ Added Bug #123 to Increment 0003"
136
+ - Display: "Type: bug | Priority: high | Title: Fix login redirect"
137
+
138
+ ### Example 4: Create Increment from Multiple Issues
139
+ **User**: `/specweave.sync-github create "User Authentication" from #42 #45 #47`
140
+ **You**:
141
+ - Fetch all 3 issues from GitHub
142
+ - Determine types based on labels (feature, bug, enhancement)
143
+ - Create new increment 0005
144
+ - Group by type in spec.md:
145
+ - ## User Stories (#42, #45)
146
+ - ## Technical Tasks (#47)
147
+ - Generate RFC with all items
148
+ - Show: "✅ Created Increment 0005 with 3 issues"
149
+ - Display table:
150
+ ```
151
+ | Type | Issue | Title |
152
+ |---------|-------|--------------------|
153
+ | Feature | #42 | User login UI |
154
+ | Feature | #45 | OAuth backend |
155
+ | Task | #47 | Setup provider |
156
+ ```
157
+
158
+ ### Example 5: Sync Existing Increment
159
+ **User**: `/specweave.sync-github sync 0003`
160
+ **You**:
161
+ - Read increment 0003
162
+ - Find linked GitHub issues (from spec.md frontmatter.github_issues)
163
+ - Fetch current state from GitHub
164
+ - Detect changes (status, labels, assignees, comments)
165
+ - Show conflicts if any
166
+ - Apply sync bidirectionally:
167
+ - Update GitHub issue status based on task completion
168
+ - Update spec.md based on GitHub changes
169
+ - Display: "✅ Synced 0003 | Updated: 2 issues | #42 → closed, #45 → in-progress"
170
+
171
+ ### Example 6: Status Overview
172
+ **User**: `/specweave.sync-github status`
173
+ **You**:
174
+ - Scan all increments for GitHub metadata
175
+ - Show table:
176
+ ```
177
+ | Increment | Title | GitHub Issues | Last Sync |
178
+ |-----------|------------------|---------------|--------------------|
179
+ | 0003 | Test Feature | 0 issues | 2025-10-28 17:42 |
180
+ | 0004 | User Auth | 3 issues | 2025-10-28 18:00 |
181
+ | 0005 | Bug Fixes | 5 issues | Never |
182
+ ```
183
+
184
+ ## GitHub Issue Format
185
+
186
+ When creating GitHub issues from increments, use this format:
187
+
188
+ ```markdown
189
+ # [Increment ###] Title
190
+
191
+ ## Overview
192
+ [From spec.md]
193
+
194
+ ## Business Value
195
+ [From spec.md if exists]
196
+
197
+ ## User Stories
198
+
199
+ - [ ] **US1**: [Title] (P1)
200
+ - Acceptance test 1
201
+ - Acceptance test 2
202
+ - [ ] **US2**: [Title] (P2)
203
+ - Acceptance test 1
204
+
205
+ ## Implementation Tasks
206
+
207
+ ### Phase 1: [Phase Name]
208
+ - [ ] **T001**: [Task description]
209
+ - [ ] **T002**: [Task description]
210
+
211
+ ### Phase 2: [Phase Name]
212
+ - [ ] **T010**: [Task description]
213
+
214
+ ## Documentation
215
+
216
+ - [Specification](.specweave/increments/####-name/spec.md)
217
+ - [Tasks](.specweave/increments/####-name/tasks.md)
218
+ - [Architecture](.specweave/docs/architecture/) (if applicable)
219
+
220
+ ## Dependencies
221
+
222
+ - Depends on: #[issue-number] (if applicable)
223
+
224
+ ## Success Criteria
225
+
226
+ [From spec.md]
227
+
228
+ ---
229
+ *Created by SpecWeave - [Learn more](https://github.com/specweave/specweave)*
230
+ ```
231
+
232
+ ## Bidirectional Sync
233
+
234
+ When syncing an increment that already has `github_issues` in frontmatter:
235
+ - Update existing issues instead of creating new ones
236
+ - Sync status changes:
237
+ - Task completion → Close GitHub issue
238
+ - GitHub issue closed → Mark task as completed
239
+ - Sync labels and priorities
240
+ - Add comments with sync timestamps
241
+
242
+ ## Important Notes
243
+
244
+ - Always check if GITHUB_TOKEN exists in environment
245
+ - Never log tokens or credentials
246
+ - Show clear progress messages
247
+ - Display rich output with links
248
+ - Use GitHub CLI (`gh`) if available for better integration
249
+ - Respect rate limits (pause if needed)
250
+ - Save sync results to test-results/ if requested
251
+
252
+ ## Error Handling
253
+
254
+ - **Not a git repository**: "Error: Not a git repository. Initialize git first."
255
+ - **No GitHub credentials**: "Error: GITHUB_TOKEN not set. Configure GitHub authentication."
256
+ - **Increment not found**: "Error: Increment 0003 not found. Use /specweave.increment first."
257
+ - **Issue not found**: "Error: Issue #42 not found in repository."
258
+ - **Rate limit exceeded**: "Warning: GitHub rate limit reached. Waiting 60 seconds..."
259
+
260
+ ## Related Commands
261
+
262
+ - `/specweave.sync-jira` - Sync to Jira
263
+ - `/specweave.increment` - Create new increment
264
+ - `/specweave.validate` - Validate increment quality
265
+ - `/specweave.progress` - Check increment progress
266
+
267
+ ---
268
+
269
+ **Granular Control**: Unlike simple milestone import/export, this command supports cherry-picking individual issues for maximum flexibility, just like the Jira sync integration.
@@ -0,0 +1,197 @@
1
+ ---
2
+ name: specweave.sync-jira
3
+ description: Sync SpecWeave increments with JIRA epics/stories. Supports import, export, bidirectional sync, and granular item operations
4
+ ---
5
+
6
+ # Sync Jira Command
7
+
8
+ You are a Jira synchronization expert. Help the user sync between Jira and SpecWeave with granular control.
9
+
10
+ ## Available Operations
11
+
12
+ ### Epic-Level Operations
13
+
14
+ **1. Import Jira Epic as SpecWeave Increment**
15
+ ```
16
+ /specweave.sync-jira import SCRUM-123
17
+ ```
18
+
19
+ **2. Sync existing linked Increment with Jira**
20
+ ```
21
+ /specweave.sync-jira sync 0003
22
+ ```
23
+
24
+ **3. Export SpecWeave Increment to Jira**
25
+ ```
26
+ /specweave.sync-jira export 0001
27
+ ```
28
+
29
+ ### Granular Item Operations
30
+
31
+ **4. Add specific Story/Bug/Task to existing Increment**
32
+ ```
33
+ /specweave.sync-jira add SCRUM-1 to 0003
34
+ /specweave.sync-jira add SCRUM-1 # Adds to current increment
35
+ ```
36
+
37
+ **5. Create Increment from specific items (cherry-pick)**
38
+ ```
39
+ /specweave.sync-jira create "User Authentication" from SCRUM-1 SCRUM-5 SCRUM-7
40
+ /specweave.sync-jira create "Bug Fixes Sprint 1" from SCRUM-10 SCRUM-15 SCRUM-20
41
+ ```
42
+
43
+ **6. Show sync status**
44
+ ```
45
+ /specweave.sync-jira status
46
+ /specweave.sync-jira status 0003 # Status of specific increment
47
+ ```
48
+
49
+ ## Your Task
50
+
51
+ When the user runs this command:
52
+
53
+ 1. **Parse the command arguments**:
54
+ - Operation: import, sync, export, add, create, or status
55
+ - ID: Jira Epic key (e.g., SCRUM-123) or Increment ID (e.g., 0001)
56
+
57
+ 2. **Execute the operation**:
58
+
59
+ **For import Epic**:
60
+ ```typescript
61
+ import { JiraClient } from './src/integrations/jira/jira-client';
62
+ import { JiraMapper } from './src/integrations/jira/jira-mapper';
63
+
64
+ const client = new JiraClient();
65
+ const mapper = new JiraMapper(client);
66
+ const result = await mapper.importEpicAsIncrement('SCRUM-123');
67
+ ```
68
+
69
+ **For add item**:
70
+ ```typescript
71
+ import { JiraIncrementalMapper } from './src/integrations/jira/jira-incremental-mapper';
72
+
73
+ const incrementalMapper = new JiraIncrementalMapper(client);
74
+ const result = await incrementalMapper.addItemToIncrement('0003', 'SCRUM-1');
75
+ ```
76
+
77
+ **For create from items**:
78
+ ```typescript
79
+ const result = await incrementalMapper.createIncrementFromItems(
80
+ 'User Authentication',
81
+ ['SCRUM-1', 'SCRUM-5', 'SCRUM-7']
82
+ );
83
+ ```
84
+
85
+ **For sync**:
86
+ ```typescript
87
+ const result = await mapper.syncIncrement('0003');
88
+ ```
89
+
90
+ **For export**:
91
+ ```typescript
92
+ const result = await mapper.exportIncrementAsEpic('0001', 'SCRUM');
93
+ ```
94
+
95
+ 3. **Show results**:
96
+ - Display sync summary
97
+ - Show conflicts (if any)
98
+ - List created/updated files
99
+ - Provide links to Jira and SpecWeave
100
+
101
+ 4. **Handle errors gracefully**:
102
+ - Check if .env credentials exist
103
+ - Validate increment/epic exists
104
+ - Show clear error messages
105
+
106
+ ## Examples
107
+
108
+ ### Example 1: Import Epic
109
+ **User**: `/specweave.sync-jira import SCRUM-2`
110
+ **You**:
111
+ - Import Epic SCRUM-2 from Jira
112
+ - Show: "✅ Imported as Increment 0004"
113
+ - List: "Created: spec.md, tasks.md, RFC document"
114
+ - Link: "Jira: https://... | Increment: .specweave/increments/0004/"
115
+
116
+ ### Example 2: Add Story to Current Increment
117
+ **User**: `/specweave.sync-jira add SCRUM-1`
118
+ **You**:
119
+ - Determine current increment (latest or from context)
120
+ - Fetch SCRUM-1 from Jira
121
+ - Add to increment's spec.md (under ## User Stories)
122
+ - Update tasks.md
123
+ - Update RFC
124
+ - Show: "✅ Added Story SCRUM-1 to Increment 0003"
125
+ - Display: "Type: story | Title: User can login | Status: in-progress"
126
+
127
+ ### Example 3: Add Bug to Specific Increment
128
+ **User**: `/specweave.sync-jira add SCRUM-10 to 0003`
129
+ **You**:
130
+ - Fetch SCRUM-10 from Jira (it's a Bug)
131
+ - Add to increment 0003's spec.md (under ## Bugs)
132
+ - Update tasks.md
133
+ - Update RFC
134
+ - Show: "✅ Added Bug SCRUM-10 to Increment 0003"
135
+ - Display: "Type: bug | Priority: P1 | Title: Fix login redirect"
136
+
137
+ ### Example 4: Create Increment from Multiple Items
138
+ **User**: `/specweave.sync-jira create "User Authentication" from SCRUM-1 SCRUM-5 SCRUM-7`
139
+ **You**:
140
+ - Fetch all 3 issues from Jira
141
+ - Determine types (story, bug, task)
142
+ - Create new increment 0005
143
+ - Group by type in spec.md:
144
+ - ## User Stories (SCRUM-1, SCRUM-5)
145
+ - ## Technical Tasks (SCRUM-7)
146
+ - Generate RFC with all items
147
+ - Show: "✅ Created Increment 0005 with 3 work items"
148
+ - Display table:
149
+ ```
150
+ | Type | Jira Key | Title |
151
+ |-------|----------|-----------------|
152
+ | Story | SCRUM-1 | User login UI |
153
+ | Story | SCRUM-5 | OAuth backend |
154
+ | Task | SCRUM-7 | Setup provider |
155
+ ```
156
+
157
+ ### Example 5: Sync Existing Increment
158
+ **User**: `/specweave.sync-jira sync 0003`
159
+ **You**:
160
+ - Read increment 0003
161
+ - Find linked Jira items (from spec.md frontmatter.work_items)
162
+ - Fetch current state from Jira
163
+ - Detect changes (status, priority, description)
164
+ - Show conflicts if any
165
+ - Apply sync bidirectionally
166
+ - Display: "✅ Synced 0003 | Updated: 2 items | SCRUM-1 → in-progress, SCRUM-10 → completed"
167
+
168
+ ### Example 6: Status Overview
169
+ **User**: `/specweave.sync-jira status`
170
+ **You**:
171
+ - Scan all increments for Jira metadata
172
+ - Show table:
173
+ ```
174
+ | Increment | Title | Jira Items | Last Sync |
175
+ |-----------|------------------|------------|--------------------|
176
+ | 0003 | Test Epic | 0 items | 2025-10-28 17:42 |
177
+ | 0004 | User Auth | 3 items | 2025-10-28 18:00 |
178
+ | 0005 | Bug Fixes | 5 items | Never |
179
+ ```
180
+
181
+ ## Important Notes
182
+
183
+ - Always check if .env has Jira credentials before syncing
184
+ - Never log secrets or tokens
185
+ - Show clear progress messages
186
+ - Display rich output with links
187
+ - Save sync results to test-results/ if requested
188
+
189
+ ## Related Commands
190
+
191
+ - `/specweave.sync-github` - Sync to GitHub issues
192
+ - `/specweave.increment` - Create new increment
193
+ - `/specweave.validate` - Validate increment quality
194
+
195
+ ---
196
+
197
+ **Granular Control**: Unlike simple epic import/export, this command supports cherry-picking individual stories, bugs, and tasks for maximum flexibility.
@@ -1,5 +1,5 @@
1
1
  ---
2
- name: validate
2
+ name: specweave.validate
3
3
  description: Validate SpecWeave increment with rule-based checks and optional AI quality assessment
4
4
  ---
5
5
 
@@ -406,7 +406,7 @@ Remaining issues: 1 (requires manual review)
406
406
 
407
407
  **If `--always` flag OR user selects "Always run"**:
408
408
 
409
- 1. Update `.specweave/config.yaml`:
409
+ 1. SpecWeave uses auto-detection
410
410
  ```yaml
411
411
  validation:
412
412
  quality_judge:
@@ -435,7 +435,7 @@ validation:
435
435
  Quality assessment will now run automatically for all future validations.
436
436
 
437
437
  To disable:
438
- 1. Edit .specweave/config.yaml
438
+ 1. Initialize your project
439
439
  2. Set validation.quality_judge.always_run: false
440
440
 
441
441
  Or run: /validate-increment <id> (quality will run automatically)
@@ -781,7 +781,7 @@ validation:
781
781
  ## Related Commands
782
782
 
783
783
  - `/create-increment`: Create new increment (auto-validates on creation)
784
- - `/review-docs`: Review strategic documentation before implementation
784
+ - `/sync-docs`: Review strategic documentation before implementation
785
785
  - `/close-increment`: Close increment (validates before closing)
786
786
  - `/sync-github`: Sync to GitHub (validates before sync)
787
787
 
@@ -18,16 +18,21 @@ Hooks automate workflows and provide feedback during development:
18
18
  ## Available Hooks
19
19
 
20
20
  ### 1. `post-task-completion.sh`
21
- **Triggers**: After ANY task is marked complete
21
+ **Triggers**: After ANY task is marked complete (via TodoWrite tool)
22
22
 
23
23
  **Actions**:
24
- 1. Plays completion sound (Glass.aiff on macOS, equivalent on Linux/Windows)
25
- 2. Triggers `docs-updater` skill (if exists)
26
- 3. Checks if CLAUDE.md needs update
27
- 4. Logs task completion
24
+ 1. Plays completion sound **synchronously** (Glass.aiff on macOS, equivalent on Linux/Windows)
25
+ 2. Outputs JSON with systemMessage reminder to update docs
26
+ 3. Logs task completion
28
27
 
29
28
  **Sound**: Glass.aiff (or system equivalent)
30
29
 
30
+ **Important**: Hooks cannot invoke slash commands or skills. The hook only:
31
+ - Plays sound to notify user
32
+ - Shows reminder message
33
+ - Claude must manually update CLAUDE.md/README.md inline after each task
34
+ - Living docs sync (via `/sync-docs`) happens after ALL tasks complete
35
+
31
36
  ---
32
37
 
33
38
  ### 2. `human-input-required.sh`
@@ -93,10 +98,10 @@ This creates symlinks:
93
98
  ### Method 2: Copy (For New Projects)
94
99
  ```bash
95
100
  # When creating new project
96
- npx specweave create-project my-project
101
+ npx specweave init my-project
97
102
  ```
98
103
 
99
- This copies `src/hooks/` → `my-project/src/hooks/` → `my-project/.claude/hooks/`
104
+ This copies `src/hooks/` → `my-project/.claude/hooks/`
100
105
 
101
106
  **Benefit**: New project gets its own copy of hooks (can customize if needed)
102
107
 
@@ -114,30 +119,15 @@ chmod +x .claude/hooks/*.sh
114
119
 
115
120
  ## Configuration
116
121
 
117
- Hooks respect `.specweave/config.yaml`:
118
-
119
- ```yaml
120
- ---
121
- hooks:
122
- enabled: true
123
-
124
- # Sound notifications
125
- sounds:
126
- enabled: true
127
- completion: /System/Library/Sounds/Glass.aiff # macOS
128
- input_required: /System/Library/Sounds/Ping.aiff
122
+ Hooks are enabled by default. To customize behavior, hooks can check environment variables or use auto-detection.
129
123
 
130
- # Auto-update docs
131
- docs_updater:
132
- enabled: true
133
- auto_commit: false # If true, auto-commit doc changes
124
+ ### Default Behavior
125
+ - Sound notifications enabled (platform-specific)
126
+ - Auto-update docs after task completion
127
+ - Regression checks for brownfield projects
134
128
 
135
- # Regression checks
136
- regression:
137
- enabled: true
138
- require_baseline_tests: false # If true, block if no baseline tests
139
- ---
140
- ```
129
+ ### Customization
130
+ Hooks use auto-detection for platform-specific features (macOS/Linux/Windows sound files).
141
131
 
142
132
  ---
143
133
 
@@ -1,32 +1,30 @@
1
1
  #!/bin/bash
2
2
 
3
3
  # SpecWeave Post-Task-Completion Hook
4
- # Runs automatically after ANY task is marked complete
4
+ # Runs automatically after ANY task is marked complete via TodoWrite
5
5
  #
6
6
  # Actions:
7
- # 1. Play completion sound
8
- # 2. Trigger docs-updater skill (if exists)
9
- # 3. Update CLAUDE.md if needed
10
- # 4. Log completion
7
+ # 1. Play completion sound (synchronously, not background)
8
+ # 2. Output JSON systemMessage reminding to update docs
9
+ # 3. Log completion
11
10
 
12
11
  set -e
13
12
 
14
13
  PROJECT_ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/../.." && pwd)"
15
- cd "$PROJECT_ROOT"
14
+ cd "$PROJECT_ROOT" 2>/dev/null || true
16
15
 
17
- # Colors
18
- GREEN='\033[0;32m'
19
- BLUE='\033[0;34m'
20
- YELLOW='\033[1;33m'
21
- NC='\033[0m'
16
+ # DEBUG: Log hook invocation
17
+ mkdir -p .specweave/logs 2>/dev/null || true
18
+ echo "[$(date)] Hook invoked! PWD=$PWD Args=$*" >> .specweave/logs/hooks-debug.log 2>/dev/null || true
19
+ echo "[$(date)] Hook stdin:" >> .specweave/logs/hooks-debug.log 2>/dev/null || true
20
+ cat >> .specweave/logs/hooks-debug.log 2>/dev/null || true
22
21
 
23
- echo -e "${BLUE}🔔 Task Completed${NC}"
24
-
25
- # 1. Play notification sound (cross-platform)
22
+ # 1. Play notification sound SYNCHRONOUSLY (cross-platform)
26
23
  play_sound() {
27
24
  case "$(uname -s)" in
28
25
  Darwin)
29
- afplay /System/Library/Sounds/Glass.aiff 2>/dev/null &
26
+ # Play synchronously (remove &)
27
+ afplay /System/Library/Sounds/Glass.aiff 2>/dev/null || true
30
28
  ;;
31
29
  Linux)
32
30
  paplay /usr/share/sounds/freedesktop/stereo/complete.oga 2>/dev/null || \
@@ -38,20 +36,17 @@ play_sound() {
38
36
  esac
39
37
  }
40
38
 
41
- play_sound &
42
-
43
- # 2. Trigger docs-updater (if skill exists)
44
- if [ -d "src/skills/docs-updater" ] || [ -d ".claude/skills/docs-updater" ]; then
45
- echo -e "${YELLOW}📝 docs-updater skill will update documentation${NC}"
46
- fi
39
+ # Play sound FIRST (synchronously)
40
+ play_sound
47
41
 
48
- # 3. Check if CLAUDE.md needs update
49
- if git diff --name-only | grep -qE "(\.specweave/|src/skills/)"; then
50
- echo -e "${YELLOW}📄 CLAUDE.md may need update (structural changes detected)${NC}"
51
- fi
42
+ # 2. Log completion
43
+ mkdir -p .specweave/logs 2>/dev/null || true
44
+ echo "[$(date)] Task completed" >> .specweave/logs/tasks.log 2>/dev/null || true
52
45
 
53
- # 4. Log completion
54
- mkdir -p .specweave/logs
55
- echo "[$(date)] Task completed" >> .specweave/logs/tasks.log
56
-
57
- echo -e "${GREEN}✅ Post-task-completion hook complete${NC}"
46
+ # 3. Output JSON to instruct Claude (systemMessage is shown to user)
47
+ cat <<EOF
48
+ {
49
+ "continue": true,
50
+ "systemMessage": "🔔 Task completed! Remember to update documentation with inline edits to CLAUDE.md and README.md as needed."
51
+ }
52
+ EOF