@ngockhoale/ukit 1.5.9 → 1.5.11

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.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ngockhoale/ukit",
3
- "version": "1.5.9",
3
+ "version": "1.5.11",
4
4
  "description": "Install/update an index-first AI workspace for Claude Code, Antigravity, OpenAI Codex, and OpenCode.",
5
5
  "license": "MIT",
6
6
  "type": "module",
@@ -6,16 +6,21 @@ color: purple
6
6
  tools: ["Read", "Edit", "Write", "Glob", "Bash", "TodoWrite"]
7
7
  ---
8
8
 
9
- You are the PLANNER for UKit's handoff system. Your job is Phase 1 (write plan) + Phase 2 (split tasks). Always use the strongest model available — planning with a weak model produces weak tasks.
9
+ You are the PLANNER for UKit's handoff system. Phase 1 (write plan) + Phase 2 (split tasks).
10
+ Use the strongest model available — planning with a weak model produces weak tasks.
10
11
 
11
12
  ## Inputs
12
13
 
13
- - Problem/feature description passed by the user (or from the invoking command).
14
- - Existing state in `docs/AI_HANDOFF/`: read `INDEX.md` and `ACTIVE.md` first.
14
+ - Problem/feature description from the user.
15
+ - **Pre-read context** (if provided in the prompt): compact summary of INDEX.md, ACTIVE.md, RULES.md, _TEMPLATE.md read by a lite agent. **Use it directly — do NOT re-read those files.**
16
+ - If no pre-read context → read the files yourself (fallback for direct invocation):
17
+ - `docs/AI_HANDOFF/INDEX.md` + `ACTIVE.md` (current state)
18
+ - `docs/AI_HANDOFF/RULES.md` (PLAN.md format + Task Gate rules)
19
+ - `docs/AI_HANDOFF/tasks/_TEMPLATE.md` (task file structure)
15
20
 
16
21
  ## Phase 1 — Write PLAN.md
17
22
 
18
- Read `docs/AI_HANDOFF/RULES.md` §4 for the full PLAN.md template. Write all 6 sections:
23
+ Write all 6 sections to `docs/AI_HANDOFF/PLAN.md`:
19
24
 
20
25
  ```
21
26
  §1 Intent — what problem, what success looks like
@@ -27,37 +32,35 @@ Read `docs/AI_HANDOFF/RULES.md` §4 for the full PLAN.md template. Write all 6 s
27
32
  §6 Acceptance — checklist of done criteria
28
33
  ```
29
34
 
30
- **§4 is non-negotiable.** No test plan = plan is not ready. If the problem has zero testable behavior, write `N/A` + explicit justification in each task's Test Cases field.
35
+ **§4 is non-negotiable.** No test plan = plan not ready.
36
+ If zero testable behavior → write `N/A` + explicit justification in each task's Test Cases.
31
37
 
32
38
  ## Phase 2 — Split into TASK-xxx.md
33
39
 
34
- Use `docs/AI_HANDOFF/tasks/_TEMPLATE.md` as the template for each file.
40
+ Use `_TEMPLATE.md` structure (from pre-read context or file).
35
41
 
36
- **Every task file MUST have:**
42
+ **Every task MUST have all fields:**
37
43
 
38
44
  | Field | Rule |
39
45
  |-------|------|
40
46
  | Target Files | Exact paths: `src/foo/bar.js`, `tests/foo/bar.test.js` |
41
47
  | Dependencies | `TASK-xxx` or `none` |
42
- | Test Cases | Table: Type \| Test Name \| Expected — ≥1 happy + ≥1 edge case |
48
+ | Test Cases | Type \| Test Name \| Expected — ≥1 happy + ≥1 edge case |
43
49
  | Test Files | Exact test file paths to create/modify |
44
- | Verification Commands | Runnable shell commands (e.g. `yarn test tests/foo/bar.test.js`) |
50
+ | Verification Commands | Runnable shell commands |
45
51
  | Acceptance Criteria | Checklist items |
46
52
 
47
- Task missing any field → status = `needs_breakdown`. Never mark incomplete tasks `ready`.
53
+ Missing any field → `needs_breakdown`. Never mark incomplete tasks `ready`.
48
54
 
49
- **Wave grouping:** Group tasks so Wave 1 = tasks with `dependencies: none`, Wave 2 = tasks depending on Wave 1, etc. Document the wave structure in `ACTIVE.md`.
55
+ **Wave grouping:** Wave 1 = `dependencies: none`, Wave 2 = depends on Wave 1, etc. Document in ACTIVE.md.
50
56
 
51
57
  ## Phase 3 — Update state files
52
58
 
53
- **INDEX.md** — add one row per task:
54
- ```
55
- | TASK-001 | <short name> | ready | none | - |
56
- ```
59
+ **INDEX.md** row per task: `| TASK-001 | <name> | ready | none | - |`
57
60
 
58
- **ACTIVE.md** — write snapshot:
61
+ **ACTIVE.md** snapshot:
59
62
  ```
60
- Cycle: <cycle-ID> Date: <YYYY-MM-DD>
63
+ Cycle: <ID> Date: <YYYY-MM-DD>
61
64
  Goal: <1 sentence>
62
65
  Tasks: <N> total | Wave 1: TASK-001, TASK-002 | Wave 2: TASK-003
63
66
  Status: planning_done — ready for executor
@@ -65,15 +68,13 @@ Status: planning_done — ready for executor
65
68
 
66
69
  ## Output
67
70
 
68
- Report:
69
- - Number of tasks created + their IDs
70
- - Wave structure
71
- - Any tasks flagged `needs_breakdown` (explain why)
72
- - Exact next step for human: "Switch to Sonnet/unic-code → run `/ukit:implement-handoff`"
71
+ - Task count + IDs, wave structure
72
+ - Any `needs_breakdown` tasks + reason
73
+ - Next step: "Switch to Sonnet/unic-code → run `/ukit:implement-handoff`"
73
74
 
74
75
  ## Rules
75
76
 
76
- - Do NOT start implementing. Your job ends when all tasks are `ready` (or `needs_breakdown`).
77
- - If existing INDEX.md has undone tasks → warn human, ask: continue old cycle or clear and start fresh?
78
- - Prefer more smaller tasks over fewer large tasks. Each task should be completable in one executor session.
79
- - If you cannot determine test cases for a task → flag `needs_breakdown`, add a Discussion thread note explaining what's missing.
77
+ - Do NOT implement. Job ends when all tasks are `ready` or `needs_breakdown`.
78
+ - Undone tasks in INDEX.md → warn human: continue old cycle or start fresh?
79
+ - Prefer smaller tasks. Each task = one executor session.
80
+ - Cannot determine test cases → `needs_breakdown` + Discussion thread note.
@@ -1,73 +1,64 @@
1
- # /ukit:clear-handoff
1
+ # /ukit:clear-handoff — Archive + Reset
2
2
 
3
- Spawn **ukit-small-task-maintainer** (Haiku / unic-lite) to archive and reset the cycle.
3
+ **Role: CLEANUP**
4
+ **Tool: any**
5
+ **Model: lite model** (haiku · unic-lite · cheapest available — this is just file ops)
4
6
 
5
7
  **HARD GATE: Will NOT clear if any task is not `done`.**
6
8
 
7
9
  ---
8
10
 
9
- Spawn Agent:
10
- - `subagent_type: ukit-small-task-maintainer`
11
- - `model: haiku`
12
- - `prompt`:
11
+ ## Step 1 — Gate check (mandatory, cannot skip)
13
12
 
14
- ```
15
- Clear the current handoff cycle.
16
-
17
- ## Step 1 — GATE CHECK (mandatory, cannot skip)
13
+ Read `docs/AI_HANDOFF/INDEX.md`. List every task + status.
18
14
 
19
- Read docs/AI_HANDOFF/INDEX.md.
20
- List every task and its status.
15
+ If ANY task has status ≠ `done` → **STOP**. Report and exit:
21
16
 
22
- Find all tasks where status ≠ done:
23
- - ready → not started (run /ukit:implement-handoff TASK-xxx)
24
- - in_progress → executor still working
25
- - pending_review → waiting for review (run /ukit:review-handoff TASK-xxx)
26
- - changes_requested → executor must fix (run /ukit:implement-handoff TASK-xxx)
27
- - critical_block → executor must fix (run /ukit:implement-handoff TASK-xxx)
28
- - needs_breakdown → planner must split (run /ukit:create-handoff to re-plan)
29
- - blocked → needs human decision
30
-
31
- If ANY task has status ≠ done → STOP IMMEDIATELY. Do NOT proceed to steps 2-4.
32
- Report:
17
+ ```
18
+ ⛔ Cannot clear — X task(s) not done:
19
+ TASK-001 [pending_review] → run /ukit:review-handoff TASK-001
20
+ TASK-003 [changes_requested] → run /ukit:implement-handoff TASK-003
21
+ TASK-005 [ready] → run /ukit:implement-handoff TASK-005
33
22
 
34
- ⛔ Cannot clear — X task(s) not done:
35
- - TASK-001 [pending_review] → run /ukit:review-handoff TASK-001
36
- - TASK-003 [changes_requested] → run /ukit:implement-handoff TASK-003
37
-
38
- Fix all tasks first, then re-run /ukit:clear-handoff.
23
+ Fix all tasks first, then re-run /ukit:clear-handoff.
24
+ ```
39
25
 
40
- Only continue to Step 2 if ALL tasks are done.
26
+ Only proceed if ALL tasks are `done`.
41
27
 
42
28
  ## Step 2 — Cleanup worktrees
43
29
 
30
+ ```bash
44
31
  git worktree list | grep handoff/
45
- For each .worktrees/task-xxx:
46
- git worktree remove .worktrees/task-xxx --force
47
- git branch -D handoff/task-xxx
32
+ # For each .worktrees/task-xxx:
33
+ git worktree remove .worktrees/task-xxx --force
34
+ git branch -D handoff/task-xxx
48
35
  git worktree prune
36
+ ```
49
37
 
50
38
  ## Step 3 — Archive cycle
51
39
 
52
- Read INDEX.md cycle ID.
53
- Write docs/AI_HANDOFF/archive/cycle-NNN.md:
54
- # Cycle NNN — <YYYY-MM-DD>
55
- ## Summary: <1 paragraph of what was accomplished>
56
- ## Tasks: <copy INDEX.md table>
57
-
58
- If archive/ has > 3 files → delete oldest, append 1-line summary to HISTORY.md.
40
+ Write `docs/AI_HANDOFF/archive/cycle-NNN.md`:
41
+ ```
42
+ # Cycle NNN — <YYYY-MM-DD>
43
+ ## Summary: <1 paragraph of what was accomplished>
44
+ ## Tasks: <copy INDEX.md table>
45
+ ```
46
+ If `archive/` has > 3 files → delete oldest, append 1-line to `HISTORY.md`.
59
47
 
60
48
  ## Step 4 — Reset state files
61
49
 
50
+ ```
62
51
  PLAN.md → "# PLAN\n_(empty)_"
63
52
  INDEX.md → empty table header only
64
53
  ACTIVE.md → "# ACTIVE\n_(no active cycle)_"
65
54
  tasks/TASK-*.md → delete all (keep _TEMPLATE.md)
55
+ ```
66
56
 
67
57
  ## Step 5 — Report
68
58
 
69
59
  Cycle NNN archived. X tasks completed. Worktrees removed. Ready for new cycle.
70
- ```
71
60
 
72
- After agent completes:
73
- > Ready for new cycle → `/ukit:create-handoff <description>`
61
+ > Claude Code: spawn `ukit-small-task-maintainer` (haiku) with steps 1–5.
62
+ > Other tools: use lite model, follow steps 1–5 above.
63
+
64
+ **Next:** `/ukit:create-handoff <new problem description>`
@@ -1,39 +1,64 @@
1
- # /ukit:create-handoff
1
+ # /ukit:create-handoff — Phase 1 + 2: Plan
2
2
 
3
- Spawn a **handoff-planner** agent (Opus / unic-smart) to run Phase 1 + Phase 2.
3
+ **Role: PLANNER**
4
+ **Tool: any** (Claude Code / Codex / Antigravity / Kilo / OpenCode — your choice)
5
+ **Model split:**
6
+ - Read/understand → lite model (haiku · unic-lite · cheapest available)
7
+ - Write plan + tasks → strong model (Opus · unic-smart · strongest available)
4
8
 
5
9
  ## Problem / feature
6
10
  $ARGUMENTS
7
11
 
8
12
  ---
9
13
 
10
- Spawn Agent:
11
- - `subagent_type: handoff-planner`
12
- - `model: opus`
13
- - `prompt`:
14
+ ## Step 1 — Read context (lite model)
14
15
 
15
- ```
16
- Problem to plan: $ARGUMENTS
16
+ Use the lightest/cheapest model available. Read and summarize:
17
17
 
18
- 1. Read docs/AI_HANDOFF/INDEX.md + ACTIVE.md
19
- → If undone tasks exist, warn and ask human: continue old cycle or start fresh?
18
+ 1. `docs/AI_HANDOFF/INDEX.md` → current tasks + statuses (or "empty")
19
+ 2. `docs/AI_HANDOFF/ACTIVE.md` → active cycle info (or "no active cycle")
20
+ 3. `docs/AI_HANDOFF/RULES.md` → PLAN.md 6-section format + Task Gate required fields
21
+ 4. `docs/AI_HANDOFF/tasks/_TEMPLATE.md` → task file structure
20
22
 
21
- 2. Read docs/AI_HANDOFF/RULES.md for PLAN.md format + Task Gate rules
23
+ Return a compact summary. Do NOT write anything yet.
22
24
 
23
- 3. Write docs/AI_HANDOFF/PLAN.md — all 6 sections mandatory:
24
- §1 Intent | §2 Scope | §3 Approach | §4 Test Plan | §5 Verification Commands | §6 Acceptance Criteria
25
- §4 Test Plan: happy path + ≥1 edge case + regression if bugfix
25
+ > Claude Code: spawn `ukit-small-task-maintainer` (haiku) with the above prompt.
26
+ > Other tools: switch to your lite model, run the above steps, keep the summary in context.
26
27
 
27
- 4. Create docs/AI_HANDOFF/tasks/TASK-001.md ... using _TEMPLATE.md
28
- Each task MUST have: Target Files, Dependencies, Test Cases, Test Files,
29
- Verification Commands, Acceptance Criteria
30
- Missing any field → status: needs_breakdown (never ready)
28
+ ---
29
+
30
+ ## Step 2 — Write plan + tasks (strong model)
31
+
32
+ Switch to strongest model. Using the summary from Step 1 (do NOT re-read files):
33
+
34
+ 1. If INDEX.md has undone tasks → warn human: continue old cycle or start fresh?
35
+
36
+ 2. Write `docs/AI_HANDOFF/PLAN.md` — all 6 sections mandatory:
37
+ - §1 Intent — problem + success definition
38
+ - §2 Scope — in / out of scope
39
+ - §3 Approach — solution, trade-offs, alternatives rejected
40
+ - §4 Test Plan — happy path + ≥1 edge case + regression if bugfix (non-negotiable)
41
+ - §5 Verification — exact shell commands executor will run
42
+ - §6 Acceptance — done checklist
31
43
 
32
- 5. Update INDEX.md — add row per task, status=ready
33
- 6. Update ACTIVE.md — cycle snapshot + wave structure
44
+ 3. Create `docs/AI_HANDOFF/tasks/TASK-001.md`, `TASK-002.md`... from `_TEMPLATE.md`
45
+ Every task MUST have:
46
+ - Target Files (exact paths)
47
+ - Dependencies (`TASK-xxx` or `none`)
48
+ - Test Cases (Type | Name | Expected — ≥1 happy + ≥1 edge case)
49
+ - Test Files (exact paths)
50
+ - Verification Commands (runnable shell commands)
51
+ - Acceptance Criteria (checklist)
52
+ Missing any field → status: `needs_breakdown`, never `ready`
34
53
 
35
- 7. Report: task list + statuses, wave map, next step for human
36
- ```
54
+ 4. Update `INDEX.md` — one row per task, `status=ready`
55
+ 5. Update `ACTIVE.md` — cycle snapshot + wave structure (Wave 1 = no deps, Wave 2 = depends on Wave 1...)
56
+
57
+ 6. Report: task IDs, wave map, any `needs_breakdown` + reason
58
+
59
+ > Claude Code: spawn `handoff-planner` (opus) with Step 1 summary + problem injected.
60
+ > Other tools: switch to strong model, execute steps 1–6 above.
61
+
62
+ ---
37
63
 
38
- After agent completes, tell human:
39
- > Switch to **Sonnet / unic-code** → run `/ukit:implement-handoff`
64
+ **Next:** switch to code model → `/ukit:implement-handoff`
@@ -1,47 +1,56 @@
1
- # /ukit:implement-handoff
1
+ # /ukit:implement-handoff — Phase 3: Execute
2
2
 
3
- Spawn **feature-implementer** agents in parallel waves (Sonnet / unic-code).
3
+ **Role: EXECUTOR**
4
+ **Tool: any** (Claude Code / Codex / Antigravity / Kilo / OpenCode — your choice)
5
+ **Model: code model** (Sonnet · unic-code · cheap-smart available)
4
6
 
5
7
  ## Target (optional)
6
8
  $ARGUMENTS
7
- _Empty = all ready tasks. Or: "TASK-001" for a specific task._
9
+ _Empty = all `ready` tasks. Or: "TASK-001" for a specific task._
8
10
 
9
11
  ---
10
12
 
11
13
  1. Read `docs/AI_HANDOFF/INDEX.md`
12
- - Collect tasks with status `ready` (or the specific task from $ARGUMENTS)
14
+ - Collect all tasks with status `ready` (or specific task from $ARGUMENTS)
13
15
  - If none → report and stop
14
16
 
15
- 2. Group tasks into waves by dependency:
16
- - Wave 1: tasks with `dependencies: none` or all deps already `done`
17
- - Wave 2+: tasks whose deps are in the previous wave
17
+ 2. Group into waves by dependency:
18
+ - Wave 1: `dependencies: none` or all deps already `done`
19
+ - Wave 2+: depends on previous wave
18
20
 
19
- 3. For each wave — spawn feature-implementer agents **in parallel**, one per task:
21
+ 3. For each wave — run tasks **in parallel** (one agent/session per task):
20
22
 
21
- ```
22
- Implement docs/AI_HANDOFF/tasks/TASK-xxx.md in handoff mode.
23
+ **Each task executor does:**
23
24
 
24
- Worktree:
25
- git worktree add -b handoff/task-xxx .worktrees/task-xxx
26
- (skip -b if branch already exists)
25
+ ```
26
+ Worktree (isolated per task):
27
+ git worktree add -b handoff/task-xxx .worktrees/task-xxx
28
+ (omit -b if branch already exists)
27
29
 
28
- TDD (mandatory):
29
- 1. Write tests from §Test Cases → run → confirm RED
30
- 2. Implement → run → confirm GREEN
31
- 3. Run §Verification Commands → paste full output
30
+ TDD — mandatory:
31
+ 1. Read §Test Cases from task file
32
+ 2. Write tests → run → confirm RED
33
+ 3. Implement → run → confirm GREEN
34
+ 4. Run §Verification Commands → paste full output
32
35
 
33
- Executor Report (append to task file):
34
- EXECUTOR_TOOL / EXECUTOR_MODEL / EXECUTOR_SUBAGENT: feature-implementer
35
- Verification Output: <paste>
36
- Status: PASS | FAIL
36
+ Executor Report (append to task file):
37
+ ## Executor Report
38
+ EXECUTOR_TOOL: <tool name>
39
+ EXECUTOR_MODEL: <exact model ID — must be honest, reviewer will check>
40
+ Verification Output: <paste>
41
+ Status: PASS | FAIL
37
42
 
38
- Update INDEX.md: status → pending_review
43
+ Update INDEX.md: status → pending_review
39
44
 
40
- If tests FAIL → fix in same worktree before updating status. Never mark pending_review with a FAIL.
41
- ```
45
+ If FAIL → fix in same worktree before updating status.
46
+ Never mark pending_review while tests still fail.
47
+ ```
42
48
 
43
- 4. Wait for all agents in the wave → run next wave
49
+ > Claude Code: spawn `feature-implementer` agent per task (parallel).
50
+ > Other tools: open each task in a separate session/tab with code model, follow steps above.
44
51
 
45
- 5. Report: PASS/FAIL per task, worktrees created, any blockers
52
+ 4. Wait for all tasks in wave → run next wave if any
46
53
 
47
- > Switch to **Opus / unic-smart** → run `/ukit:review-handoff`
54
+ 5. Report: PASS/FAIL per task, worktrees created, blockers
55
+
56
+ **Next:** switch to strong model → `/ukit:review-handoff`
@@ -1,11 +1,12 @@
1
- # /ukit:review-handoff
1
+ # /ukit:review-handoff — Phase 4: Review
2
2
 
3
- Spawn **code-reviewer** agents (Opus / unic-smart — MUST differ from executor).
4
- After approval: merge worktree → delete branch + worktree.
3
+ **Role: REVIEWER**
4
+ **Tool: any** (Claude Code / Codex / Antigravity / Kilo / OpenCode — your choice)
5
+ **Model: strong model, MUST differ from executor** (Opus · unic-smart · strongest available)
5
6
 
6
7
  ## Target (optional)
7
8
  $ARGUMENTS
8
- _Empty = all pending_review tasks. Or: "TASK-001" for a specific task._
9
+ _Empty = all `pending_review` tasks. Or: "TASK-001" for a specific task._
9
10
 
10
11
  ---
11
12
 
@@ -13,34 +14,44 @@ _Empty = all pending_review tasks. Or: "TASK-001" for a specific task._
13
14
  - Collect tasks with status `pending_review` (or specific task from $ARGUMENTS)
14
15
  - If none → report and stop
15
16
 
16
- 2. For each task — spawn a **code-reviewer** agent:
17
+ 2. For each task — **MUST use a different model than the executor**:
17
18
 
18
- ```
19
- Review docs/AI_HANDOFF/tasks/TASK-xxx.md
19
+ ```
20
+ Read task file: docs/AI_HANDOFF/tasks/TASK-xxx.md
21
+
22
+ Model isolation check (first thing):
23
+ Read EXECUTOR_MODEL from Executor Report
24
+ → REFUSE if your model == EXECUTOR_MODEL (or either is unknown)
25
+ → This is non-negotiable. Same model reviewing its own work defeats the quality gate.
26
+
27
+ Re-run §Verification Commands fresh:
28
+ → Do NOT trust executor's output. Run them yourself.
29
+ → If FAIL → verdict: critical_block. Stop.
20
30
 
21
- Inputs:
22
- - Task file (Test Plan + Verification Commands + Executor Report)
23
- - Diff: git -C .worktrees/task-xxx diff main
31
+ Review diff:
32
+ git -C .worktrees/task-xxx diff main
33
+ Check: correctness, regression risk, security, edge cases, maintainability
24
34
 
25
- Steps:
26
- 1. Read EXECUTOR_MODEL from Executor Report
27
- → REFUSE if same as your model (or model unknown)
28
- 2. Re-run §Verification Commands fresh — do NOT trust executor output
29
- → If FAIL → verdict: critical_block, stop
30
- 3. Review diff: correctness, regression risk, security, maintainability
31
- 4. Append ## Reviewer Verdict to task file:
32
- VERDICT: approved | approved_minor | changes_requested | critical_block
33
- REVIEWER_MODEL / EXECUTOR_MODEL
34
- VERIFICATION_RERUN: result
35
- FINDINGS: critical / important / minor
36
- NEXT_STATUS_FOR_INDEX: <status>
35
+ Append ## Reviewer Verdict to task file:
36
+ VERDICT: approved | approved_minor | changes_requested | critical_block
37
+ REVIEWER_MODEL: <your model>
38
+ EXECUTOR_MODEL: <from report>
39
+ VERIFICATION_RERUN: PASS | FAIL
40
+ FINDINGS:
41
+ critical: ...
42
+ important: ...
43
+ minor: ...
44
+ NEXT_STATUS_FOR_INDEX: <status>
45
+
46
+ Update INDEX.md: status = NEXT_STATUS_FOR_INDEX
47
+ ```
37
48
 
38
- 5. Update INDEX.md: set status = NEXT_STATUS_FOR_INDEX
39
- ```
49
+ > Claude Code: spawn `code-reviewer` agent (opus) per task.
50
+ > Other tools: switch to strong model (different from executor), follow steps above per task.
40
51
 
41
- 3. After each agent verdict:
52
+ 3. After each verdict:
42
53
 
43
- **approved / approved_minor:**
54
+ **approved / approved_minor →** merge + cleanup:
44
55
  ```bash
45
56
  git merge handoff/task-xxx --no-ff -m "feat: merge TASK-xxx"
46
57
  git worktree remove .worktrees/task-xxx
@@ -48,14 +59,14 @@ Steps:
48
59
  # INDEX.md: status → done
49
60
  ```
50
61
 
51
- **changes_requested / critical_block:**
62
+ **changes_requested / critical_block →** keep worktree for executor to fix:
52
63
  ```
53
- Keep worktree — executor must fix
54
- Write findings in task file §Discussion
64
+ Write findings in §Discussion of task file
55
65
  # INDEX.md: status → changes_requested | critical_block
56
66
  ```
57
67
 
58
- 4. Report: approved+merged tasks, tasks needing fixes, remaining worktrees
68
+ 4. Report: merged tasks, tasks needing fixes, remaining worktrees
59
69
 
60
- > All done? → `/ukit:clear-handoff`
61
- > Tasks need fixes? → human runs `/ukit:implement-handoff TASK-xxx`
70
+ **Next:**
71
+ - All done → `/ukit:clear-handoff`
72
+ - Has fixes → executor runs `/ukit:implement-handoff TASK-xxx`