specweave 0.23.14 → 0.23.18

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 (119) hide show
  1. package/.claude-plugin/marketplace.json +11 -0
  2. package/CLAUDE.md +77 -7
  3. package/dist/plugins/specweave-github/lib/github-spec-content-sync.d.ts.map +1 -1
  4. package/dist/plugins/specweave-github/lib/github-spec-content-sync.js +57 -0
  5. package/dist/plugins/specweave-github/lib/github-spec-content-sync.js.map +1 -1
  6. package/dist/src/cli/commands/sync-spec-content.js +3 -0
  7. package/dist/src/cli/commands/sync-spec-content.js.map +1 -1
  8. package/dist/src/core/progress/progress-tracker.d.ts +4 -1
  9. package/dist/src/core/progress/progress-tracker.d.ts.map +1 -1
  10. package/dist/src/core/progress/progress-tracker.js +33 -4
  11. package/dist/src/core/progress/progress-tracker.js.map +1 -1
  12. package/dist/src/core/spec-content-sync.d.ts +1 -1
  13. package/dist/src/core/spec-content-sync.d.ts.map +1 -1
  14. package/dist/src/core/spec-detector.d.ts +5 -0
  15. package/dist/src/core/spec-detector.d.ts.map +1 -1
  16. package/dist/src/core/spec-detector.js +91 -33
  17. package/dist/src/core/spec-detector.js.map +1 -1
  18. package/dist/src/integrations/ado/ado-dependency-loader.d.ts +1 -1
  19. package/dist/src/integrations/ado/ado-dependency-loader.d.ts.map +1 -1
  20. package/dist/src/integrations/ado/ado-dependency-loader.js +39 -7
  21. package/dist/src/integrations/ado/ado-dependency-loader.js.map +1 -1
  22. package/package.json +1 -1
  23. package/plugins/specweave/hooks/lib/migrate-increment-work.sh +1 -1
  24. package/plugins/specweave/hooks/lib/migrate-increment-work.sh.bak +245 -0
  25. package/plugins/specweave/hooks/lib/sync-spec-content.sh +2 -2
  26. package/plugins/specweave/hooks/lib/sync-spec-content.sh.bak +149 -0
  27. package/plugins/specweave/hooks/lib/update-status-line.sh +34 -4
  28. package/plugins/specweave/hooks/lib/validate-spec-status.sh +1 -1
  29. package/plugins/specweave/hooks/lib/validate-spec-status.sh.bak +163 -0
  30. package/plugins/specweave/hooks/post-first-increment.sh +1 -1
  31. package/plugins/specweave/hooks/post-first-increment.sh.bak +61 -0
  32. package/plugins/specweave/hooks/post-spec-update.sh +1 -1
  33. package/plugins/specweave/hooks/post-spec-update.sh.bak +158 -0
  34. package/plugins/specweave/hooks/post-user-story-complete.sh +1 -1
  35. package/plugins/specweave/hooks/post-user-story-complete.sh.bak +179 -0
  36. package/plugins/specweave/hooks/pre-command-deduplication.sh +1 -1
  37. package/plugins/specweave/hooks/pre-command-deduplication.sh.bak +83 -0
  38. package/plugins/specweave/hooks/user-prompt-submit.sh +1 -1
  39. package/plugins/specweave/hooks/user-prompt-submit.sh.bak +386 -0
  40. package/plugins/specweave/skills/specweave-framework/SKILL.md +1 -1
  41. package/plugins/specweave-ado/agents/ado-manager/AGENT.md +23 -0
  42. package/plugins/specweave-ado/agents/ado-multi-project-mapper/AGENT.md +23 -0
  43. package/plugins/specweave-ado/agents/ado-sync-judge/AGENT.md +23 -0
  44. package/plugins/specweave-backend/agents/database-optimizer/AGENT.md +23 -0
  45. package/plugins/specweave-confluent/agents/confluent-architect/AGENT.md +23 -0
  46. package/plugins/specweave-diagrams/agents/diagrams-architect/AGENT.md +23 -0
  47. package/plugins/specweave-github/.claude-plugin/plugin.json +15 -1
  48. package/plugins/specweave-github/agents/github-manager/AGENT.md +23 -0
  49. package/plugins/specweave-github/agents/github-task-splitter/AGENT.md +25 -0
  50. package/plugins/specweave-github/agents/user-story-updater/AGENT.md +25 -0
  51. package/plugins/specweave-github/hooks/.specweave/logs/hooks-debug.log +16 -0
  52. package/plugins/specweave-github/hooks/post-task-completion.sh +53 -0
  53. package/plugins/specweave-github/lib/github-spec-content-sync.js +49 -0
  54. package/plugins/specweave-github/lib/github-spec-content-sync.ts +67 -0
  55. package/plugins/specweave-infrastructure/agents/devops/AGENT.md +26 -0
  56. package/plugins/specweave-infrastructure/agents/network-engineer/AGENT.md +26 -0
  57. package/plugins/specweave-infrastructure/agents/observability-engineer/AGENT.md +26 -0
  58. package/plugins/specweave-infrastructure/agents/performance-engineer/AGENT.md +26 -0
  59. package/plugins/specweave-infrastructure/agents/sre/AGENT.md +26 -0
  60. package/plugins/specweave-jira/agents/jira-manager/AGENT.md +26 -0
  61. package/plugins/specweave-kafka/agents/kafka-architect/AGENT.md +26 -0
  62. package/plugins/specweave-kafka/agents/kafka-devops/AGENT.md +26 -0
  63. package/plugins/specweave-kafka/agents/kafka-observability/AGENT.md +26 -0
  64. package/plugins/specweave-kubernetes/agents/kubernetes-architect/AGENT.md +26 -0
  65. package/plugins/specweave-ml/.claude-plugin/plugin.json +2 -2
  66. package/plugins/specweave-ml/agents/data-scientist/AGENT.md +26 -0
  67. package/plugins/specweave-ml/agents/ml-engineer/AGENT.md +26 -0
  68. package/plugins/specweave-ml/agents/mlops-engineer/AGENT.md +26 -0
  69. package/plugins/specweave-mobile/agents/mobile-architect/AGENT.md +26 -0
  70. package/plugins/specweave-payments/agents/payment-integration/AGENT.md +26 -0
  71. package/plugins/specweave-plugin-dev/.claude-plugin/plugin.json +19 -0
  72. package/plugins/specweave-plugin-dev/skills/plugin-expert/SKILL.md +1231 -0
  73. package/plugins/specweave-release/agents/release-manager/AGENT.md +27 -0
  74. package/plugins/specweave-release/hooks/.specweave/logs/dora-tracking.log +24 -0
  75. package/plugins/specweave/skills/plugin-expert/SKILL.md +0 -340
  76. package/plugins/specweave-alternatives/.claude-plugin/plugin.json +0 -21
  77. package/plugins/specweave-alternatives/skills/bmad-method-expert/SKILL.md +0 -626
  78. package/plugins/specweave-alternatives/skills/bmad-method-expert/scripts/analyze-project.js +0 -318
  79. package/plugins/specweave-alternatives/skills/bmad-method-expert/scripts/check-setup.js +0 -208
  80. package/plugins/specweave-alternatives/skills/bmad-method-expert/scripts/generate-template.js +0 -1149
  81. package/plugins/specweave-alternatives/skills/bmad-method-expert/scripts/validate-documents.js +0 -340
  82. package/plugins/specweave-alternatives/skills/spec-kit-expert/SKILL.md +0 -1010
  83. package/plugins/specweave-cost-optimizer/.claude-plugin/plugin.json +0 -20
  84. package/plugins/specweave-cost-optimizer/skills/cost-optimizer/SKILL.md +0 -190
  85. package/plugins/specweave-docs/.claude-plugin/plugin.json +0 -19
  86. package/plugins/specweave-docs/skills/docusaurus/SKILL.md +0 -613
  87. package/plugins/specweave-docs/skills/spec-driven-brainstorming/README.md +0 -264
  88. package/plugins/specweave-docs/skills/spec-driven-brainstorming/SKILL.md +0 -439
  89. package/plugins/specweave-docs/skills/spec-driven-debugging/README.md +0 -479
  90. package/plugins/specweave-docs/skills/spec-driven-debugging/SKILL.md +0 -652
  91. package/plugins/specweave-figma/.claude-plugin/.mcp.json +0 -12
  92. package/plugins/specweave-figma/.claude-plugin/plugin.json +0 -20
  93. package/plugins/specweave-figma/ARCHITECTURE.md +0 -453
  94. package/plugins/specweave-figma/README.md +0 -728
  95. package/plugins/specweave-figma/skills/figma-to-code/SKILL.md +0 -632
  96. package/plugins/specweave-figma/skills/figma-to-code/test-1-token-generation.yaml +0 -29
  97. package/plugins/specweave-figma/skills/figma-to-code/test-2-component-generation.yaml +0 -27
  98. package/plugins/specweave-figma/skills/figma-to-code/test-3-typescript-generation.yaml +0 -28
  99. package/plugins/specweave-frontend/.claude-plugin/plugin.json +0 -21
  100. package/plugins/specweave-frontend/skills/design-system-architect/SKILL.md +0 -107
  101. package/plugins/specweave-frontend/skills/frontend/SKILL.md +0 -177
  102. package/plugins/specweave-frontend/skills/nextjs/SKILL.md +0 -176
  103. package/plugins/specweave-testing/.claude-plugin/plugin.json +0 -20
  104. package/plugins/specweave-testing/skills/e2e-playwright/README.md +0 -506
  105. package/plugins/specweave-testing/skills/e2e-playwright/SKILL.md +0 -457
  106. package/plugins/specweave-testing/skills/e2e-playwright/execute.js +0 -373
  107. package/plugins/specweave-testing/skills/e2e-playwright/lib/utils.js +0 -514
  108. package/plugins/specweave-testing/skills/e2e-playwright/package.json +0 -33
  109. package/plugins/specweave-tooling/.claude-plugin/plugin.json +0 -19
  110. package/plugins/specweave-tooling/skills/skill-creator/LICENSE.txt +0 -202
  111. package/plugins/specweave-tooling/skills/skill-creator/SKILL.md +0 -209
  112. package/plugins/specweave-tooling/skills/skill-creator/scripts/init_skill.py +0 -303
  113. package/plugins/specweave-tooling/skills/skill-creator/scripts/package_skill.py +0 -110
  114. package/plugins/specweave-tooling/skills/skill-creator/scripts/quick_validate.py +0 -65
  115. package/plugins/specweave-tooling/skills/skill-router/SKILL.md +0 -479
  116. package/plugins/specweave-ui/.claude-plugin/plugin.json +0 -26
  117. package/plugins/specweave-ui/.mcp.json +0 -10
  118. package/plugins/specweave-ui/README.md +0 -492
  119. package/plugins/specweave-ui/skills/browser-automation/SKILL.md +0 -676
@@ -1 +1 @@
1
- {"version":3,"file":"spec-detector.js","sourceRoot":"","sources":["../../../src/core/spec-detector.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"spec-detector.js","sourceRoot":"","sources":["../../../src/core/spec-detector.ts"],"names":[],"mappings":"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"}
@@ -86,7 +86,7 @@ export declare class AdoDependencyLoader {
86
86
  * Tier 3: Bulk pre-load all dependencies (optional command)
87
87
  *
88
88
  * Performance: 1-2 minutes for 50 projects (150-200 API calls, batched)
89
- * Progress: Real-time progress tracking, cancelation support
89
+ * Progress: Real-time progress tracking with ProgressTracker, cancelation with CancelationHandler
90
90
  *
91
91
  * @param projectNames Array of project names to preload
92
92
  * @returns void (results cached)
@@ -1 +1 @@
1
- {"version":3,"file":"ado-dependency-loader.d.ts","sourceRoot":"","sources":["../../../../src/integrations/ado/ado-dependency-loader.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,mCAAmC,CAAC;AACjE,OAAO,EAAE,gBAAgB,EAAE,MAAM,wCAAwC,CAAC;AAC1E,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,MAAM,EAAiB,MAAM,uBAAuB,CAAC;AAE9D;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;CACf;AAED;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACrC,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,KAAK,CAAC;QACf,EAAE,EAAE,MAAM,CAAC;QACX,IAAI,EAAE,MAAM,CAAC;QACb,IAAI,EAAE,MAAM,CAAC;QACb,WAAW,CAAC,EAAE,OAAO,CAAC;QACtB,QAAQ,CAAC,EAAE,GAAG,EAAE,CAAC;KAClB,CAAC,CAAC;IACH,KAAK,EAAE,KAAK,CAAC;QACX,EAAE,EAAE,MAAM,CAAC;QACX,IAAI,EAAE,MAAM,CAAC;QACb,WAAW,CAAC,EAAE,MAAM,CAAC;KACtB,CAAC,CAAC;IACH,WAAW,EAAE,MAAM,CAAC;CACrB;AAED;;GAEG;AACH,qBAAa,mBAAmB;IAC9B,OAAO,CAAC,YAAY,CAAe;IACnC,OAAO,CAAC,gBAAgB,CAAmB;IAC3C,OAAO,CAAC,SAAS,CAAY;IAC7B,OAAO,CAAC,MAAM,CAAS;gBAEX,OAAO,EAAE;QACnB,SAAS,EAAE,SAAS,CAAC;QACrB,YAAY,EAAE,YAAY,CAAC;QAC3B,gBAAgB,CAAC,EAAE,gBAAgB,CAAC;QACpC,MAAM,CAAC,EAAE,MAAM,CAAC;KACjB;IAOD;;;;;;;;OAQG;IACG,mBAAmB,CAAC,WAAW,GAAE,MAAW,GAAG,OAAO,CAAC,kBAAkB,EAAE,CAAC;IA+DlF;;;;;;;;OAQG;IACG,uBAAuB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,sBAAsB,CAAC;IAwFnF;;;;;;;;OAQG;IACG,sBAAsB,CAC1B,YAAY,EAAE,MAAM,EAAE,EACtB,OAAO,GAAE;QACP,UAAU,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;QACtD,MAAM,CAAC,EAAE,WAAW,CAAC;KACjB,GACL,OAAO,CAAC,IAAI,CAAC;CAoCjB"}
1
+ {"version":3,"file":"ado-dependency-loader.d.ts","sourceRoot":"","sources":["../../../../src/integrations/ado/ado-dependency-loader.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,mCAAmC,CAAC;AACjE,OAAO,EAAE,gBAAgB,EAAE,MAAM,wCAAwC,CAAC;AAC1E,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,MAAM,EAAiB,MAAM,uBAAuB,CAAC;AAI9D;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;CACf;AAED;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACrC,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,KAAK,CAAC;QACf,EAAE,EAAE,MAAM,CAAC;QACX,IAAI,EAAE,MAAM,CAAC;QACb,IAAI,EAAE,MAAM,CAAC;QACb,WAAW,CAAC,EAAE,OAAO,CAAC;QACtB,QAAQ,CAAC,EAAE,GAAG,EAAE,CAAC;KAClB,CAAC,CAAC;IACH,KAAK,EAAE,KAAK,CAAC;QACX,EAAE,EAAE,MAAM,CAAC;QACX,IAAI,EAAE,MAAM,CAAC;QACb,WAAW,CAAC,EAAE,MAAM,CAAC;KACtB,CAAC,CAAC;IACH,WAAW,EAAE,MAAM,CAAC;CACrB;AAED;;GAEG;AACH,qBAAa,mBAAmB;IAC9B,OAAO,CAAC,YAAY,CAAe;IACnC,OAAO,CAAC,gBAAgB,CAAmB;IAC3C,OAAO,CAAC,SAAS,CAAY;IAC7B,OAAO,CAAC,MAAM,CAAS;gBAEX,OAAO,EAAE;QACnB,SAAS,EAAE,SAAS,CAAC;QACrB,YAAY,EAAE,YAAY,CAAC;QAC3B,gBAAgB,CAAC,EAAE,gBAAgB,CAAC;QACpC,MAAM,CAAC,EAAE,MAAM,CAAC;KACjB;IAOD;;;;;;;;OAQG;IACG,mBAAmB,CAAC,WAAW,GAAE,MAAW,GAAG,OAAO,CAAC,kBAAkB,EAAE,CAAC;IA+DlF;;;;;;;;OAQG;IACG,uBAAuB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,sBAAsB,CAAC;IAwFnF;;;;;;;;OAQG;IACG,sBAAsB,CAC1B,YAAY,EAAE,MAAM,EAAE,EACtB,OAAO,GAAE;QACP,UAAU,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;QACtD,MAAM,CAAC,EAAE,WAAW,CAAC;KACjB,GACL,OAAO,CAAC,IAAI,CAAC;CAuEjB"}
@@ -16,6 +16,8 @@
16
16
  */
17
17
  import { RateLimitChecker } from '../../core/cache/rate-limit-checker.js';
18
18
  import { consoleLogger } from '../../utils/logger.js';
19
+ import { ProgressTracker } from '../../core/progress/progress-tracker.js';
20
+ import { CancelationHandler } from '../../core/progress/cancelation-handler.js';
19
21
  /**
20
22
  * AdoDependencyLoader - Three-tier dependency loading with smart caching
21
23
  */
@@ -168,7 +170,7 @@ export class AdoDependencyLoader {
168
170
  * Tier 3: Bulk pre-load all dependencies (optional command)
169
171
  *
170
172
  * Performance: 1-2 minutes for 50 projects (150-200 API calls, batched)
171
- * Progress: Real-time progress tracking, cancelation support
173
+ * Progress: Real-time progress tracking with ProgressTracker, cancelation with CancelationHandler
172
174
  *
173
175
  * @param projectNames Array of project names to preload
174
176
  * @returns void (results cached)
@@ -177,22 +179,50 @@ export class AdoDependencyLoader {
177
179
  const { onProgress, signal } = options;
178
180
  const total = projectNames.length;
179
181
  this.logger.log(`Preloading dependencies for ${total} projects...`);
182
+ // Initialize ProgressTracker
183
+ const progressTracker = new ProgressTracker({
184
+ total,
185
+ label: 'Preloading ADO dependencies',
186
+ updateFrequency: 5, // Update every 5 projects
187
+ showEta: true,
188
+ logger: this.logger
189
+ });
190
+ // Initialize CancelationHandler
191
+ let succeeded = 0;
192
+ let failed = 0;
193
+ let loadedProjects = [];
194
+ const cancelHandler = new CancelationHandler({
195
+ onSaveState: async () => {
196
+ this.logger.log(`\nPartial preload saved: ${loadedProjects.length}/${total} projects cached`);
197
+ this.logger.log(`Success: ${succeeded}, Failed: ${failed}`);
198
+ },
199
+ logger: this.logger
200
+ });
201
+ // Register SIGINT handler
202
+ cancelHandler.register();
180
203
  for (let i = 0; i < total; i++) {
181
- // Check for cancelation
182
- if (signal?.aborted) {
183
- this.logger.warn('Preload canceled by user');
204
+ // Check for cancelation (both new handler and legacy signal)
205
+ if (cancelHandler.shouldCancel() || signal?.aborted) {
206
+ this.logger.warn('\n⚠️ Preload canceled by user');
207
+ this.logger.log(`\n💡 Resume with: /specweave-ado:preload-dependencies --resume`);
208
+ cancelHandler.unregister();
184
209
  throw new Error('Preload canceled');
185
210
  }
186
211
  const projectName = projectNames[i];
187
- this.logger.log(`[${i + 1}/${total}] Preloading ${projectName}...`);
188
212
  try {
189
213
  await this.loadProjectDependencies(projectName);
190
- // Report progress
214
+ loadedProjects.push(projectName);
215
+ succeeded++;
216
+ // Update progress
217
+ progressTracker.update(projectName, 'success');
218
+ // Legacy callback support
191
219
  if (onProgress) {
192
220
  onProgress(i + 1, total);
193
221
  }
194
222
  }
195
223
  catch (error) {
224
+ failed++;
225
+ progressTracker.update(projectName, 'error');
196
226
  this.logger.error(`Failed to preload ${projectName}: ${error.message}`);
197
227
  // Continue with next project (don't fail entire batch)
198
228
  }
@@ -201,7 +231,9 @@ export class AdoDependencyLoader {
201
231
  await new Promise((resolve) => setTimeout(resolve, 300));
202
232
  }
203
233
  }
204
- this.logger.log('Preload complete!');
234
+ // Unregister handler and show final summary
235
+ cancelHandler.unregister();
236
+ progressTracker.finish(succeeded, failed, 0);
205
237
  }
206
238
  }
207
239
  //# sourceMappingURL=ado-dependency-loader.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ado-dependency-loader.js","sourceRoot":"","sources":["../../../../src/integrations/ado/ado-dependency-loader.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ado-dependency-loader.js","sourceRoot":"","sources":["../../../../src/integrations/ado/ado-dependency-loader.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAGH,OAAO,EAAE,gBAAgB,EAAE,MAAM,wCAAwC,CAAC;AAE1E,OAAO,EAAU,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAC9D,OAAO,EAAE,eAAe,EAAE,MAAM,yCAAyC,CAAC;AAC1E,OAAO,EAAE,kBAAkB,EAAE,MAAM,4CAA4C,CAAC;AAkChF;;GAEG;AACH,MAAM,OAAO,mBAAmB;IAM9B,YAAY,OAKX;QACC,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC;QACnC,IAAI,CAAC,YAAY,GAAG,OAAO,CAAC,YAAY,CAAC;QACzC,IAAI,CAAC,gBAAgB,GAAG,OAAO,CAAC,gBAAgB,IAAI,IAAI,gBAAgB,CAAC,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,qBAAqB;QAClH,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,aAAa,CAAC;IAChD,CAAC;IAED;;;;;;;;OAQG;IACH,KAAK,CAAC,mBAAmB,CAAC,cAAsB,EAAE;QAChD,MAAM,QAAQ,GAAG,cAAc,CAAC;QAEhC,oBAAoB;QACpB,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,GAAG,CAAqC,QAAQ,CAAC,CAAC;QACzF,IAAI,MAAM,EAAE,CAAC;YACX,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,cAAc,QAAQ,KAAK,MAAM,CAAC,QAAQ,CAAC,MAAM,YAAY,CAAC,CAAC;YAC/E,OAAO,MAAM,CAAC,QAAQ,CAAC;QACzB,CAAC;QAED,8BAA8B;QAC9B,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,eAAe,QAAQ,4BAA4B,CAAC,CAAC;QAErE,IAAI,CAAC;YACH,uCAAuC;YACvC,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC;gBACnD,GAAG,EAAE,WAAW;aACjB,CAAC,CAAC;YAEH,6BAA6B;YAC7B,MAAM,gBAAgB,GAAG,IAAI,CAAC,gBAAgB,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;YACxE,MAAM,cAAc,GAAG,IAAI,CAAC,gBAAgB,CAAC,aAAa,CAAC,gBAAgB,CAAC,CAAC;YAE7E,IAAI,CAAC,cAAc,CAAC,UAAU,EAAE,CAAC;gBAC/B,IAAI,CAAC,MAAM,CAAC,IAAI,CACd,uBAAuB,cAAc,CAAC,MAAM,+BAA+B,CAC5E,CAAC;YACJ,CAAC;YAED,iBAAiB;YACjB,MAAM,QAAQ,GAAyB,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,OAAY,EAAE,EAAE,CAAC,CAAC;gBAC3E,EAAE,EAAE,OAAO,CAAC,EAAE;gBACd,IAAI,EAAE,OAAO,CAAC,IAAI;gBAClB,WAAW,EAAE,OAAO,CAAC,WAAW;gBAChC,UAAU,EAAE,OAAO,CAAC,UAAU,IAAI,SAAS;gBAC3C,KAAK,EAAE,OAAO,CAAC,KAAK,IAAI,YAAY;aACrC,CAAC,CAAC,CAAC;YAEJ,eAAe;YACf,MAAM,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,QAAQ,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAC;YACpD,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,UAAU,QAAQ,CAAC,MAAM,4BAA4B,CAAC,CAAC;YAEvE,OAAO,QAAQ,CAAC;QAClB,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YACpB,mCAAmC;YACnC,IAAI,IAAI,CAAC,gBAAgB,CAAC,gBAAgB,CAAC,KAAK,CAAC,EAAE,CAAC;gBAClD,MAAM,IAAI,CAAC,gBAAgB,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAC;gBAExD,yBAAyB;gBACzB,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,QAAQ,CACjD,QAAQ,CACT,CAAC;gBAEF,IAAI,UAAU,EAAE,CAAC;oBACf,OAAO,UAAU,CAAC,QAAQ,CAAC;gBAC7B,CAAC;YACH,CAAC;YAED,yDAAyD;YACzD,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;IAED;;;;;;;;OAQG;IACH,KAAK,CAAC,uBAAuB,CAAC,WAAmB;QAC/C,MAAM,QAAQ,GAAG,OAAO,WAAW,OAAO,CAAC;QAE3C,oBAAoB;QACpB,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,GAAG,CAAyB,QAAQ,CAAC,CAAC;QAC7E,IAAI,MAAM,EAAE,CAAC;YACX,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,cAAc,QAAQ,EAAE,CAAC,CAAC;YAC1C,OAAO,MAAM,CAAC;QAChB,CAAC;QAED,8BAA8B;QAC9B,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,eAAe,QAAQ,4BAA4B,CAAC,CAAC;QAErE,IAAI,CAAC;YACH,yCAAyC;YACzC,MAAM,CAAC,iBAAiB,EAAE,aAAa,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;gBAC3D,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,WAAW,EAAE,EAAE,CAAC;gBAC5C,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,WAAW,CAAC;aACrC,CAAC,CAAC;YAEH,yBAAyB;YACzB,MAAM,gBAAgB,GAAG,CAAC,IAAS,EAAE,aAAqB,EAAE,EAAS,EAAE;gBACrE,MAAM,WAAW,GAAG,UAAU,CAAC,CAAC,CAAC,GAAG,UAAU,KAAK,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;gBAC3E,MAAM,MAAM,GAAG;oBACb;wBACE,EAAE,EAAE,IAAI,CAAC,EAAE;wBACX,IAAI,EAAE,IAAI,CAAC,IAAI;wBACf,IAAI,EAAE,WAAW;wBACjB,WAAW,EAAE,IAAI,CAAC,WAAW,IAAI,KAAK;qBACvC;iBACF,CAAC;gBAEF,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;oBAClB,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,KAAU,EAAE,EAAE;wBACnC,MAAM,CAAC,IAAI,CAAC,GAAG,gBAAgB,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC,CAAC;oBACvD,CAAC,CAAC,CAAC;gBACL,CAAC;gBAED,OAAO,MAAM,CAAC;YAChB,CAAC,CAAC;YAEF,MAAM,SAAS,GAAG,iBAAiB,CAAC,CAAC,CAAC,gBAAgB,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YAE/E,4BAA4B;YAC5B,MAAM,YAAY,GAA2B;gBAC3C,SAAS,EAAE,WAAW,EAAE,4CAA4C;gBACpE,WAAW;gBACX,SAAS;gBACT,KAAK,EAAE,aAAa,CAAC,GAAG,CAAC,CAAC,IAAS,EAAE,EAAE,CAAC,CAAC;oBACvC,EAAE,EAAE,IAAI,CAAC,EAAE;oBACX,IAAI,EAAE,IAAI,CAAC,IAAI;oBACf,WAAW,EAAE,IAAI,CAAC,WAAW;iBAC9B,CAAC,CAAC;gBACH,WAAW,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;aACtC,CAAC;YAEF,eAAe;YACf,MAAM,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC;YACpD,IAAI,CAAC,MAAM,CAAC,GAAG,CACb,2BAA2B,WAAW,KAAK,YAAY,CAAC,SAAS,CAAC,MAAM,gBAAgB,YAAY,CAAC,KAAK,CAAC,MAAM,QAAQ,CAC1H,CAAC;YAEF,OAAO,YAAY,CAAC;QACtB,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YACpB,oDAAoD;YACpD,IAAI,KAAK,CAAC,QAAQ,EAAE,MAAM,KAAK,GAAG,EAAE,CAAC;gBACnC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,WAAW,yCAAyC,CAAC,CAAC;gBAClF,MAAM,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;gBACzC,MAAM,IAAI,KAAK,CAAC,WAAW,WAAW,YAAY,CAAC,CAAC;YACtD,CAAC;YAED,2BAA2B;YAC3B,IAAI,IAAI,CAAC,gBAAgB,CAAC,gBAAgB,CAAC,KAAK,CAAC,EAAE,CAAC;gBAClD,MAAM,IAAI,CAAC,gBAAgB,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAC;gBAExD,yBAAyB;gBACzB,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAyB,QAAQ,CAAC,CAAC;gBAEtF,IAAI,UAAU,EAAE,CAAC;oBACf,OAAO,UAAU,CAAC;gBACpB,CAAC;YACH,CAAC;YAED,0BAA0B;YAC1B,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;IAED;;;;;;;;OAQG;IACH,KAAK,CAAC,sBAAsB,CAC1B,YAAsB,EACtB,UAGI,EAAE;QAEN,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC;QACvC,MAAM,KAAK,GAAG,YAAY,CAAC,MAAM,CAAC;QAElC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,+BAA+B,KAAK,cAAc,CAAC,CAAC;QAEpE,6BAA6B;QAC7B,MAAM,eAAe,GAAG,IAAI,eAAe,CAAC;YAC1C,KAAK;YACL,KAAK,EAAE,6BAA6B;YACpC,eAAe,EAAE,CAAC,EAAE,0BAA0B;YAC9C,OAAO,EAAE,IAAI;YACb,MAAM,EAAE,IAAI,CAAC,MAAM;SACpB,CAAC,CAAC;QAEH,gCAAgC;QAChC,IAAI,SAAS,GAAG,CAAC,CAAC;QAClB,IAAI,MAAM,GAAG,CAAC,CAAC;QACf,IAAI,cAAc,GAAa,EAAE,CAAC;QAElC,MAAM,aAAa,GAAG,IAAI,kBAAkB,CAAC;YAC3C,WAAW,EAAE,KAAK,IAAI,EAAE;gBACtB,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,4BAA4B,cAAc,CAAC,MAAM,IAAI,KAAK,kBAAkB,CAAC,CAAC;gBAC9F,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,YAAY,SAAS,aAAa,MAAM,EAAE,CAAC,CAAC;YAC9D,CAAC;YACD,MAAM,EAAE,IAAI,CAAC,MAAM;SACpB,CAAC,CAAC;QAEH,0BAA0B;QAC1B,aAAa,CAAC,QAAQ,EAAE,CAAC;QAEzB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC;YAC/B,6DAA6D;YAC7D,IAAI,aAAa,CAAC,YAAY,EAAE,IAAI,MAAM,EAAE,OAAO,EAAE,CAAC;gBACpD,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,gCAAgC,CAAC,CAAC;gBACnD,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,gEAAgE,CAAC,CAAC;gBAClF,aAAa,CAAC,UAAU,EAAE,CAAC;gBAC3B,MAAM,IAAI,KAAK,CAAC,kBAAkB,CAAC,CAAC;YACtC,CAAC;YAED,MAAM,WAAW,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC;YAEpC,IAAI,CAAC;gBACH,MAAM,IAAI,CAAC,uBAAuB,CAAC,WAAW,CAAC,CAAC;gBAChD,cAAc,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;gBACjC,SAAS,EAAE,CAAC;gBAEZ,kBAAkB;gBAClB,eAAe,CAAC,MAAM,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC;gBAE/C,0BAA0B;gBAC1B,IAAI,UAAU,EAAE,CAAC;oBACf,UAAU,CAAC,CAAC,GAAG,CAAC,EAAE,KAAK,CAAC,CAAC;gBAC3B,CAAC;YACH,CAAC;YAAC,OAAO,KAAU,EAAE,CAAC;gBACpB,MAAM,EAAE,CAAC;gBACT,eAAe,CAAC,MAAM,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;gBAC7C,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,qBAAqB,WAAW,KAAK,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;gBACxE,uDAAuD;YACzD,CAAC;YAED,sFAAsF;YACtF,IAAI,CAAC,GAAG,KAAK,GAAG,CAAC,EAAE,CAAC;gBAClB,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC;YAC3D,CAAC;QACH,CAAC;QAED,4CAA4C;QAC5C,aAAa,CAAC,UAAU,EAAE,CAAC;QAC3B,eAAe,CAAC,MAAM,CAAC,SAAS,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC;IAC/C,CAAC;CACF"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "specweave",
3
- "version": "0.23.14",
3
+ "version": "0.23.18",
4
4
  "description": "Spec-driven development framework for Claude Code. AI-native workflow with living documentation, intelligent agents, and multilingual support (9 languages). Enterprise-grade traceability with permanent specs and temporary increments.",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -8,7 +8,7 @@
8
8
  # 2. Adjust WIP limit (temporarily allow 3 active)
9
9
  # 3. Force-close (mark as complete without transferring work)
10
10
 
11
- set -euo pipefail
11
+ set +e # EMERGENCY FIX: Changed from set -euo pipefail to prevent Claude Code crashes
12
12
 
13
13
  # ============================================================================
14
14
  # CONFIGURATION
@@ -0,0 +1,245 @@
1
+ #!/bin/bash
2
+
3
+ # SpecWeave Increment Work Migration Utility
4
+ # Purpose: Smart migration options when WIP limit is reached
5
+ #
6
+ # Options:
7
+ # 1. Transfer work (move incomplete tasks to new increment)
8
+ # 2. Adjust WIP limit (temporarily allow 3 active)
9
+ # 3. Force-close (mark as complete without transferring work)
10
+
11
+ set -euo pipefail
12
+
13
+ # ============================================================================
14
+ # CONFIGURATION
15
+ # ============================================================================
16
+
17
+ SPECWEAVE_DIR="${SPECWEAVE_DIR:-.specweave}"
18
+ CONFIG_FILE="$SPECWEAVE_DIR/config.json"
19
+
20
+ # ============================================================================
21
+ # HELPER FUNCTIONS
22
+ # ============================================================================
23
+
24
+ # Get incomplete tasks from increment
25
+ get_incomplete_tasks() {
26
+ local increment_id="$1"
27
+ local tasks_file="$SPECWEAVE_DIR/increments/$increment_id/tasks.md"
28
+
29
+ if [[ ! -f "$tasks_file" ]]; then
30
+ echo ""
31
+ return
32
+ fi
33
+
34
+ # Extract unchecked tasks (lines starting with "- [ ]")
35
+ grep -E "^\s*-\s*\[ \]" "$tasks_file" 2>/dev/null || echo ""
36
+ }
37
+
38
+ # Count incomplete tasks
39
+ count_incomplete_tasks() {
40
+ local increment_id="$1"
41
+ local tasks=$(get_incomplete_tasks "$increment_id")
42
+
43
+ if [[ -z "$tasks" ]]; then
44
+ echo "0"
45
+ else
46
+ echo "$tasks" | wc -l | xargs
47
+ fi
48
+ }
49
+
50
+ # Transfer work from old increment to new increment
51
+ transfer_work() {
52
+ local source_increment="$1"
53
+ local target_increment="$2"
54
+
55
+ echo "🔄 Transferring incomplete work from $source_increment to $target_increment..."
56
+
57
+ # Get incomplete tasks
58
+ local incomplete_tasks=$(get_incomplete_tasks "$source_increment")
59
+
60
+ if [[ -z "$incomplete_tasks" ]]; then
61
+ echo "✅ No incomplete tasks to transfer"
62
+ return 0
63
+ fi
64
+
65
+ local task_count=$(echo "$incomplete_tasks" | wc -l | xargs)
66
+ echo " 📋 Found $task_count incomplete tasks"
67
+
68
+ # Append to target increment's tasks.md
69
+ local target_tasks="$SPECWEAVE_DIR/increments/$target_increment/tasks.md"
70
+
71
+ if [[ ! -f "$target_tasks" ]]; then
72
+ echo "❌ Target increment tasks.md not found: $target_tasks"
73
+ return 1
74
+ fi
75
+
76
+ # Add separator and transferred tasks
77
+ cat >> "$target_tasks" <<EOF
78
+
79
+ ---
80
+
81
+ ## 🔄 Transferred from $source_increment
82
+
83
+ $incomplete_tasks
84
+
85
+ EOF
86
+
87
+ echo " ✅ Transferred $task_count tasks to $target_tasks"
88
+
89
+ # Mark source increment as completed-with-work-transfer
90
+ local source_metadata="$SPECWEAVE_DIR/increments/$source_increment/metadata.json"
91
+
92
+ if [[ -f "$source_metadata" ]]; then
93
+ node -e "
94
+ const fs = require('fs');
95
+ const path = '$source_metadata';
96
+ const data = JSON.parse(fs.readFileSync(path, 'utf-8'));
97
+ data.status = 'completed';
98
+ data.completionNote = 'Work transferred to $target_increment';
99
+ data.completedAt = new Date().toISOString();
100
+ data.workTransferredTo = '$target_increment';
101
+ fs.writeFileSync(path, JSON.stringify(data, null, 2));
102
+ "
103
+ echo " ✅ Updated $source_increment metadata (status: completed, work transferred)"
104
+ fi
105
+
106
+ # Update target increment metadata
107
+ local target_metadata="$SPECWEAVE_DIR/increments/$target_increment/metadata.json"
108
+
109
+ if [[ -f "$target_metadata" ]]; then
110
+ node -e "
111
+ const fs = require('fs');
112
+ const path = '$target_metadata';
113
+ const data = JSON.parse(fs.readFileSync(path, 'utf-8'));
114
+ data.workTransferredFrom = data.workTransferredFrom || [];
115
+ data.workTransferredFrom.push('$source_increment');
116
+ fs.writeFileSync(path, JSON.stringify(data, null, 2));
117
+ "
118
+ echo " ✅ Updated $target_increment metadata (work received from $source_increment)"
119
+ fi
120
+
121
+ echo "✅ Work transfer complete!"
122
+ return 0
123
+ }
124
+
125
+ # Adjust WIP limit temporarily
126
+ adjust_wip_limit() {
127
+ local new_limit="$1"
128
+
129
+ echo "⚠️ Temporarily adjusting WIP limit to $new_limit..."
130
+
131
+ if [[ ! -f "$CONFIG_FILE" ]]; then
132
+ echo "❌ Config file not found: $CONFIG_FILE"
133
+ return 1
134
+ fi
135
+
136
+ # Update config.json (create backup first)
137
+ cp "$CONFIG_FILE" "$CONFIG_FILE.bak"
138
+
139
+ node -e "
140
+ const fs = require('fs');
141
+ const path = '$CONFIG_FILE';
142
+ const data = JSON.parse(fs.readFileSync(path, 'utf-8'));
143
+
144
+ // Ensure limits object exists
145
+ if (!data.limits) {
146
+ data.limits = {};
147
+ }
148
+
149
+ // Store original limit
150
+ if (!data.limits.originalHardCap) {
151
+ data.limits.originalHardCap = data.limits.hardCap || 2;
152
+ }
153
+
154
+ // Set new limit
155
+ data.limits.hardCap = parseInt('$new_limit', 10);
156
+ data.limits.wipAdjustedAt = new Date().toISOString();
157
+
158
+ fs.writeFileSync(path, JSON.stringify(data, null, 2));
159
+ "
160
+
161
+ echo " ✅ WIP limit adjusted to $new_limit"
162
+ echo " ⚠️ Remember to revert after completing one increment!"
163
+ echo " 💡 Run: specweave revert-wip-limit"
164
+
165
+ return 0
166
+ }
167
+
168
+ # Force-close increment
169
+ force_close() {
170
+ local increment_id="$1"
171
+
172
+ echo "⚠️ Force-closing $increment_id..."
173
+
174
+ local metadata_file="$SPECWEAVE_DIR/increments/$increment_id/metadata.json"
175
+
176
+ if [[ ! -f "$metadata_file" ]]; then
177
+ echo "❌ Metadata file not found: $metadata_file"
178
+ return 1
179
+ fi
180
+
181
+ node -e "
182
+ const fs = require('fs');
183
+ const path = '$metadata_file';
184
+ const data = JSON.parse(fs.readFileSync(path, 'utf-8'));
185
+ data.status = 'completed';
186
+ data.completionNote = 'Force-closed to start new increment (WIP limit reached)';
187
+ data.completedAt = new Date().toISOString();
188
+ data.forceCloseReason = 'wip-limit-reached';
189
+ fs.writeFileSync(path, JSON.stringify(data, null, 2));
190
+ "
191
+
192
+ echo " ✅ $increment_id marked as completed (force-closed)"
193
+ echo " ⚠️ Incomplete work was not transferred!"
194
+
195
+ return 0
196
+ }
197
+
198
+ # ============================================================================
199
+ # MAIN CLI
200
+ # ============================================================================
201
+
202
+ case "${1:-}" in
203
+ transfer)
204
+ if [[ $# -ne 3 ]]; then
205
+ echo "Usage: $0 transfer <source_increment> <target_increment>"
206
+ exit 1
207
+ fi
208
+ transfer_work "$2" "$3"
209
+ ;;
210
+
211
+ adjust-wip)
212
+ if [[ $# -ne 2 ]]; then
213
+ echo "Usage: $0 adjust-wip <new_limit>"
214
+ exit 1
215
+ fi
216
+ adjust_wip_limit "$2"
217
+ ;;
218
+
219
+ force-close)
220
+ if [[ $# -ne 2 ]]; then
221
+ echo "Usage: $0 force-close <increment_id>"
222
+ exit 1
223
+ fi
224
+ force_close "$2"
225
+ ;;
226
+
227
+ count-incomplete)
228
+ if [[ $# -ne 2 ]]; then
229
+ echo "Usage: $0 count-incomplete <increment_id>"
230
+ exit 1
231
+ fi
232
+ count_incomplete_tasks "$2"
233
+ ;;
234
+
235
+ *)
236
+ echo "SpecWeave Increment Work Migration Utility"
237
+ echo ""
238
+ echo "Usage:"
239
+ echo " $0 transfer <source> <target> # Transfer work from source to target"
240
+ echo " $0 adjust-wip <limit> # Adjust WIP limit temporarily"
241
+ echo " $0 force-close <increment> # Force-close increment"
242
+ echo " $0 count-incomplete <increment> # Count incomplete tasks"
243
+ exit 1
244
+ ;;
245
+ esac
@@ -15,7 +15,7 @@
15
15
  # sync-spec-content.sh <spec-path>
16
16
  #
17
17
 
18
- set -euo pipefail
18
+ set +e # EMERGENCY FIX: Changed from set -euo pipefail to prevent Claude Code crashes
19
19
 
20
20
  # Get script directory
21
21
  SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
@@ -131,7 +131,7 @@ echo ""
131
131
  set +e
132
132
  node "$SYNC_CLI" --spec "$SPEC_PATH" --provider "$PROVIDER"
133
133
  SYNC_EXIT_CODE=$?
134
- set -e
134
+ set +e # EMERGENCY FIX: Changed from set -e to prevent Claude Code crashes
135
135
 
136
136
  if [ $SYNC_EXIT_CODE -eq 0 ]; then
137
137
  echo ""
@@ -0,0 +1,149 @@
1
+ #!/bin/bash
2
+ #
3
+ # Sync Spec Content to External Tools
4
+ #
5
+ # This script automatically syncs spec CONTENT (title, description, user stories)
6
+ # to external tools (GitHub Issues, JIRA Epics, Azure DevOps Features).
7
+ #
8
+ # CRITICAL: This does NOT sync STATUS - that's managed by external tools.
9
+ #
10
+ # Sync Direction:
11
+ # - Title/Description/User Stories: SpecWeave → External Tool (we update)
12
+ # - Status/State: External Tool → SpecWeave (we read)
13
+ #
14
+ # Usage:
15
+ # sync-spec-content.sh <spec-path>
16
+ #
17
+
18
+ set -euo pipefail
19
+
20
+ # Get script directory
21
+ SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
22
+ PROJECT_ROOT="$(cd "$SCRIPT_DIR/../../../.." && pwd)"
23
+
24
+ # Input validation
25
+ if [ $# -lt 1 ]; then
26
+ echo "Usage: $0 <spec-path>" >&2
27
+ exit 1
28
+ fi
29
+
30
+ SPEC_PATH="$1"
31
+
32
+ # Validate spec file exists
33
+ if [ ! -f "$SPEC_PATH" ]; then
34
+ echo "❌ Spec file not found: $SPEC_PATH" >&2
35
+ exit 1
36
+ fi
37
+
38
+ # Check if sync is enabled
39
+ CONFIG_FILE="$PROJECT_ROOT/.specweave/config.json"
40
+ if [ ! -f "$CONFIG_FILE" ]; then
41
+ echo "ℹ️ No config file found, skipping spec content sync" >&2
42
+ exit 0
43
+ fi
44
+
45
+ # Check if sync is enabled in config
46
+ SYNC_ENABLED=$(node -p "
47
+ try {
48
+ const config = require('$CONFIG_FILE');
49
+ config.sync?.enabled ?? false;
50
+ } catch {
51
+ false;
52
+ }
53
+ " 2>/dev/null || echo "false")
54
+
55
+ if [ "$SYNC_ENABLED" != "true" ]; then
56
+ echo "ℹ️ Sync disabled in config, skipping spec content sync" >&2
57
+ exit 0
58
+ fi
59
+
60
+ # Check if spec content sync is enabled
61
+ SPEC_SYNC_ENABLED=$(node -p "
62
+ try {
63
+ const config = require('$CONFIG_FILE');
64
+ config.sync?.settings?.syncSpecContent ?? true;
65
+ } catch {
66
+ true;
67
+ }
68
+ " 2>/dev/null || echo "true")
69
+
70
+ if [ "$SPEC_SYNC_ENABLED" != "true" ]; then
71
+ echo "ℹ️ Spec content sync disabled in config" >&2
72
+ exit 0
73
+ fi
74
+
75
+ # Get active provider
76
+ ACTIVE_PROFILE=$(node -p "
77
+ try {
78
+ const config = require('$CONFIG_FILE');
79
+ config.sync?.activeProfile ?? null;
80
+ } catch {
81
+ null;
82
+ }
83
+ " 2>/dev/null || echo "null")
84
+
85
+ if [ "$ACTIVE_PROFILE" = "null" ]; then
86
+ echo "ℹ️ No active sync profile, skipping spec content sync" >&2
87
+ exit 0
88
+ fi
89
+
90
+ # Get provider from active profile
91
+ PROVIDER=$(node -p "
92
+ try {
93
+ const config = require('$CONFIG_FILE');
94
+ config.sync?.profiles?.['"$ACTIVE_PROFILE"']?.provider ?? null;
95
+ } catch {
96
+ null;
97
+ }
98
+ " 2>/dev/null || echo "null")
99
+
100
+ if [ "$PROVIDER" = "null" ]; then
101
+ echo "ℹ️ No provider configured for profile '$ACTIVE_PROFILE'" >&2
102
+ exit 0
103
+ fi
104
+
105
+ # Validate provider
106
+ if [[ ! "$PROVIDER" =~ ^(github|jira|ado)$ ]]; then
107
+ echo "❌ Invalid provider: $PROVIDER (must be github, jira, or ado)" >&2
108
+ exit 1
109
+ fi
110
+
111
+ # Check if sync CLI command exists
112
+ SYNC_CLI="$PROJECT_ROOT/dist/src/cli/commands/sync-spec-content.js"
113
+ if [ ! -f "$SYNC_CLI" ]; then
114
+ echo "ℹ️ Sync CLI not built, skipping spec content sync" >&2
115
+ echo " Run: npm run build" >&2
116
+ exit 0
117
+ fi
118
+
119
+ # Check if Node.js is available
120
+ if ! command -v node &> /dev/null; then
121
+ echo "❌ Node.js not found, cannot sync spec content" >&2
122
+ exit 1
123
+ fi
124
+
125
+ echo ""
126
+ echo "🔄 Syncing spec content to $PROVIDER..."
127
+ echo " Spec: $(basename "$SPEC_PATH")"
128
+ echo ""
129
+
130
+ # Run sync
131
+ set +e
132
+ node "$SYNC_CLI" --spec "$SPEC_PATH" --provider "$PROVIDER"
133
+ SYNC_EXIT_CODE=$?
134
+ set -e
135
+
136
+ if [ $SYNC_EXIT_CODE -eq 0 ]; then
137
+ echo ""
138
+ echo "✅ Spec content synced successfully"
139
+ echo ""
140
+ else
141
+ echo ""
142
+ echo "⚠️ Spec content sync failed (exit code: $SYNC_EXIT_CODE)" >&2
143
+ echo " This is non-blocking. You can sync manually later:" >&2
144
+ echo " node dist/src/cli/commands/sync-spec-content.js --spec \"$SPEC_PATH\" --provider $PROVIDER" >&2
145
+ echo ""
146
+ # Non-blocking: continue execution even if sync fails
147
+ fi
148
+
149
+ exit 0
@@ -14,8 +14,12 @@
14
14
  # 6. Write to cache
15
15
  #
16
16
  # Performance: 50-100ms (runs async, user doesn't wait)
17
+ #
18
+ # EMERGENCY FIX (v0.24.4): Changed from set -euo pipefail to set +e
19
+ # CRITICAL: Hooks MUST use set +e to prevent Claude Code crashes!
20
+ # See: CLAUDE.md section 9a - Hook Performance & Safety
17
21
 
18
- set -euo pipefail
22
+ set +e
19
23
 
20
24
  # Find project root
21
25
  find_project_root() {
@@ -149,8 +153,20 @@ INCREMENT_ID=$(echo "$CURRENT_INCREMENT" | grep -oE '^[0-9]{4}')
149
153
  INCREMENT_NAME_ONLY=$(echo "$CURRENT_INCREMENT" | sed 's/^[0-9]\{4\}-//')
150
154
  INCREMENT_NAME="$INCREMENT_ID-$INCREMENT_NAME_ONLY"
151
155
 
152
- # Step 6: Write cache (now includes AC metrics)
153
- jq -n \
156
+ # Step 6: Write cache with atomic validation (v0.24.4 - prevents corruption)
157
+ TMP_CACHE_FILE="$PROJECT_ROOT/.specweave/state/.status-line-tmp.json"
158
+
159
+ # Validate all numeric inputs before jq (prevents jq failures)
160
+ [[ "$TOTAL_TASKS" =~ ^[0-9]+$ ]] || TOTAL_TASKS=0
161
+ [[ "$COMPLETED_TASKS" =~ ^[0-9]+$ ]] || COMPLETED_TASKS=0
162
+ [[ "$PERCENTAGE" =~ ^[0-9]+$ ]] || PERCENTAGE=0
163
+ [[ "$TOTAL_ACS" =~ ^[0-9]+$ ]] || TOTAL_ACS=0
164
+ [[ "$COMPLETED_ACS" =~ ^[0-9]+$ ]] || COMPLETED_ACS=0
165
+ [[ "$OPEN_ACS" =~ ^[0-9]+$ ]] || OPEN_ACS=0
166
+ [[ "$OPEN_COUNT" =~ ^[0-9]+$ ]] || OPEN_COUNT=0
167
+
168
+ # Generate cache to temp file first (atomic operation)
169
+ if jq -n \
154
170
  --arg id "$CURRENT_INCREMENT" \
155
171
  --arg name "$INCREMENT_NAME" \
156
172
  --argjson completed "$COMPLETED_TASKS" \
@@ -171,6 +187,20 @@ jq -n \
171
187
  },
172
188
  openCount: $openCount,
173
189
  lastUpdate: (now | strftime("%Y-%m-%dT%H:%M:%SZ"))
174
- }' > "$CACHE_FILE"
190
+ }' > "$TMP_CACHE_FILE" 2>/dev/null; then
191
+
192
+ # Validate generated JSON before replacing cache (corruption prevention)
193
+ if jq empty "$TMP_CACHE_FILE" 2>/dev/null; then
194
+ mv "$TMP_CACHE_FILE" "$CACHE_FILE"
195
+ else
196
+ # Invalid JSON generated - keep old cache
197
+ echo "[$(date)] ERROR: Generated invalid JSON, keeping old cache" >> "$DEBUG_LOG" 2>/dev/null || true
198
+ rm -f "$TMP_CACHE_FILE"
199
+ fi
200
+ else
201
+ # jq generation failed - keep old cache
202
+ echo "[$(date)] ERROR: jq failed to generate status cache (exit $?)" >> "$DEBUG_LOG" 2>/dev/null || true
203
+ rm -f "$TMP_CACHE_FILE"
204
+ fi
175
205
 
176
206
  exit 0