create-claude-workspace 1.1.24 → 1.1.26

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.
@@ -310,13 +310,13 @@ To determine if a task is frontend, backend, or fullstack, use this heuristic:
310
310
  - **First, update tracking files** (so they are included in the same commit):
311
311
  - **TODO.md**: Check off the completed task: `- [x] **Task** — description ([date])`
312
312
  - For skipped tasks: `- [~] ~~**Task**~~ — SKIPPED: [brief reason]`
313
- - **MEMORY.md**:
313
+ - **MEMORY.md** — set the FINAL state here (no further commits after merge):
314
314
  - Move item from "Next" to "Done" (with date)
315
315
  - Set new "Next" item (= next unchecked task in TODO.md with all dependencies met, skipping `[~]` tasks)
316
316
  - Update "Current Phase" if the phase changed
317
317
  - Update `Complexity This Session` (add S=1, M=2, L=4 for completed task)
318
318
  - Set `Current Task` to `(none)`
319
- - Set `Current Step` to `12 — POST-MERGE (pending)`
319
+ - Set `Current Step` to `(none)`
320
320
  - Decisions, Blockers, Notes sections
321
321
  - **Stage ALL files in a single commit** — NEVER `git add -A`:
322
322
  ```bash
@@ -340,7 +340,8 @@ To determine if a task is frontend, backend, or fullstack, use this heuristic:
340
340
  4. Commit is still local and safe — do NOT reset or amend without reason
341
341
 
342
342
  **STEP 12: POST-MERGE & NEXT ITEM**
343
- - Working tree is now **clean** (everything committed in STEP 11, including `Current Step: 12 — POST-MERGE (pending)` in MEMORY.md).
343
+ - Working tree is now **clean** (everything committed in STEP 11, including final MEMORY.md state).
344
+ - **ZERO commits in this step** — all tracking was already committed in STEP 11. This step only performs git operations (merge, checkout, push, branch delete) and delegates issue status updates. Do NOT create any "chore: update progress tracking" commits.
344
345
  - **Worktree handling**: If any `git checkout main` below fails with "already checked out at" error (you're in a git worktree while main is checked out elsewhere):
345
346
  1. Merge without checkout: `git fetch . feat/{branch-name}:main` (fast-forwards local main). If not a fast-forward (main diverged), rebase first: `git rebase main && git fetch . HEAD:main`.
346
347
  2. Detach HEAD: `git checkout --detach`
@@ -366,7 +367,7 @@ To determine if a task is frontend, backend, or fullstack, use this heuristic:
366
367
  git pull --rebase origin HEAD
367
368
  git branch -d feat/{branch-name} 2>/dev/null || true
368
369
  ```
369
- - Delegate to `devops-integrator`: "Update issue #N status to done. Do NOT perform any git operations — already handled."
370
+ - Delegate to `devops-integrator`: "Update issue #N status to done. Do NOT perform any git operations or file edits — already handled."
370
371
  - **If no git integration** (no MR/PR):
371
372
  - Merge locally:
372
373
  ```bash
@@ -379,7 +380,7 @@ To determine if a task is frontend, backend, or fullstack, use this heuristic:
379
380
  - Delete merged branch: `git branch -d feat/{branch-name}`
380
381
  - If platform merge fails (auth, permissions):
381
382
  - Fall back to local merge (same as no-git-integration path above)
382
- - Delegate to `devops-integrator`: "Update issue #N status to done. Do NOT perform any git operations — already handled."
383
+ - Delegate to `devops-integrator`: "Update issue #N status to done. Do NOT perform any git operations or file edits — already handled."
383
384
  - **Team workflow** (CLAUDE.md `Workflow: team`):
384
385
  - If remote exists: push the branch:
385
386
  ```bash
@@ -390,7 +391,6 @@ To determine if a task is frontend, backend, or fullstack, use this heuristic:
390
391
  git checkout main 2>/dev/null || git checkout master
391
392
  ```
392
393
  - If remote exists: `git pull --rebase origin HEAD`
393
- - Note in MEMORY.md: "MR/PR #N pending review for [task]"
394
394
  - If git integration active: delegate to `devops-integrator`: "Update issue #N status to in-review. Do NOT perform any git operations."
395
395
  - Start next task:
396
396
  - If the next task depends on the previous (unmerged) MR/PR:
@@ -399,7 +399,7 @@ To determine if a task is frontend, backend, or fullstack, use this heuristic:
399
399
  - When the previous MR/PR is merged, rebase: `git rebase --onto main feat/{previous} feat/{next}`
400
400
  - Otherwise: `git checkout -b feat/{next-task-slug}`
401
401
  - **If no `[ ]` tasks remain in current phase AND at least one `[~]` exists** (all remaining were skipped): do NOT auto-advance. Delegate to `product-owner`: "All tasks in Phase [N] are blocked/skipped. The autonomous loop cannot proceed. Options: (1) ADD replacement tasks that unblock progress, (2) REPRIORITIZE to skip this phase entirely and move to next, (3) declare a BLOCKER requiring human intervention." If product-owner returns only CONFIRM with no actionable changes, STOP the autonomous loop and log: "Phase [N] fully blocked — requires human intervention. Run orchestrator manually after resolving blockers."
402
- - One task per invocation — after post-merge, update MEMORY.md and end session. The external loop will start the next invocation.
402
+ - One task per invocation — after post-merge, end session. The external loop will start the next invocation. Do NOT update MEMORY.md here (already done in STEP 11).
403
403
  - **If no `[ ]` tasks remain in current phase AND zero `[~]` exist** (all completed) -> phase transition (handled at start of STEP 1)
404
404
  - **If no `[ ]` tasks remain in ALL phases AND zero `[~]` exist** (everything completed) -> final completion sequence:
405
405
  1. Delegate to `product-owner` agent:
@@ -438,16 +438,11 @@ For critical production bugs (outside normal TODO.md flow):
438
438
  4. Build, lint & test (STEP 5)
439
439
  5. Code review (STEP 7 — cannot be skipped). **Include in reviewer prompt**: "NOTE: This is a hotfix. Test writing was intentionally deferred — do not flag missing test coverage for this change."
440
440
  6. If reviewer finds CRITICAL or WARN issues: set `Current Step: 7 — REVIEW (hotfix rework)`, fix them and re-review (max 2 cycles for hotfixes). If still failing, commit anyway with a note in MEMORY.md — hotfix urgency takes priority.
441
- 7. Commit & push (STEP 11)
442
- 8. Post-merge: follow STEP 12 logic (solo: merge to main, team: MR/PR)
443
- 9. After merge, on main: add a note to MEMORY.md under "Notes": `Hotfix: [description] [commit-hash] ([date])`. Reset `Current Task` to `(none)` and `Current Step` to `(none)`.
444
- 10. Do NOT update TODO.md checkboxes unless the fix corresponds to an existing task. Commit the MEMORY.md update:
445
- ```bash
446
- git add MEMORY.md && git commit -m "chore: log hotfix"
447
- # push only if remote exists:
448
- git remote -v | grep -q origin && git push origin HEAD
449
- ```
450
- 11. **Patch release**: if git integration active, delegate to `devops-integrator`: "Hotfix merged. Create a patch release with changelog."
441
+ 7. Commit & push (STEP 11) — include in the SAME commit:
442
+ - MEMORY.md: add note under "Notes": `Hotfix: [description] ([date])`, set `Current Task` to `(none)`, `Current Step` to `(none)`
443
+ - Do NOT update TODO.md checkboxes unless the fix corresponds to an existing task
444
+ 8. Post-merge: follow STEP 12 logic (solo: merge to main, team: MR/PR). No additional commits.
445
+ 9. **Patch release**: if git integration active, delegate to `devops-integrator`: "Hotfix merged. Create a patch release with changelog."
451
446
 
452
447
  **Skipped steps:** STEP 4 (tests — unless the bug reveals missing test coverage), STEP 6 (visual verification).
453
448
 
@@ -191,12 +191,15 @@ export function runClaude(opts, log, runOpts = {}) {
191
191
  flags.push('--dangerously-skip-permissions');
192
192
  // Reset stream state for this invocation
193
193
  resetStreamState();
194
- // Spawn
194
+ // Spawn — detached on both platforms to isolate child from CTRL+C.
195
+ // First CTRL+C sets stopping flag (parent only); child finishes current step.
196
+ // Second CTRL+C force-kills the child via killProcessTree.
195
197
  const child = isWin
196
- ? spawn('claude', flags, {
198
+ ? spawn(process.env.ComSpec ?? 'cmd.exe', ['/c', 'claude', ...flags], {
197
199
  cwd: opts.projectDir,
198
200
  stdio: ['pipe', 'pipe', 'pipe'],
199
- shell: true,
201
+ detached: true,
202
+ windowsHide: true,
200
203
  })
201
204
  : spawn('claude', [...flags, prompt], {
202
205
  cwd: opts.projectDir,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "create-claude-workspace",
3
- "version": "1.1.24",
3
+ "version": "1.1.26",
4
4
  "description": "Scaffold a project with Claude Code agents for autonomous AI-driven development",
5
5
  "type": "module",
6
6
  "bin": {