@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 +1 -1
- package/templates/.claude/agents/handoff-planner.md +27 -26
- package/templates/.claude/commands/ukit/clear-handoff.md +33 -42
- package/templates/.claude/commands/ukit/create-handoff.md +49 -24
- package/templates/.claude/commands/ukit/implement-handoff.md +36 -27
- package/templates/.claude/commands/ukit/review-handoff.md +43 -32
package/package.json
CHANGED
|
@@ -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.
|
|
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
|
|
14
|
-
-
|
|
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
|
-
|
|
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
|
|
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 `
|
|
40
|
+
Use `_TEMPLATE.md` structure (from pre-read context or file).
|
|
35
41
|
|
|
36
|
-
**Every task
|
|
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 |
|
|
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
|
|
50
|
+
| Verification Commands | Runnable shell commands |
|
|
45
51
|
| Acceptance Criteria | Checklist items |
|
|
46
52
|
|
|
47
|
-
|
|
53
|
+
Missing any field → `needs_breakdown`. Never mark incomplete tasks `ready`.
|
|
48
54
|
|
|
49
|
-
**Wave grouping:**
|
|
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**
|
|
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**
|
|
61
|
+
**ACTIVE.md** snapshot:
|
|
59
62
|
```
|
|
60
|
-
Cycle: <
|
|
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
|
-
|
|
69
|
-
-
|
|
70
|
-
-
|
|
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
|
|
77
|
-
-
|
|
78
|
-
- Prefer
|
|
79
|
-
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
20
|
-
List every task and its status.
|
|
15
|
+
If ANY task has status ≠ `done` → **STOP**. Report and exit:
|
|
21
16
|
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
-
|
|
25
|
-
-
|
|
26
|
-
-
|
|
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
|
-
|
|
35
|
-
|
|
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
|
|
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
|
-
|
|
47
|
-
|
|
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
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
If archive
|
|
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
|
-
|
|
73
|
-
>
|
|
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
|
-
|
|
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
|
-
|
|
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.
|
|
19
|
-
|
|
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
|
-
|
|
23
|
+
Return a compact summary. Do NOT write anything yet.
|
|
22
24
|
|
|
23
|
-
|
|
24
|
-
|
|
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
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
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
|
-
|
|
33
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
|
14
|
+
- Collect all tasks with status `ready` (or specific task from $ARGUMENTS)
|
|
13
15
|
- If none → report and stop
|
|
14
16
|
|
|
15
|
-
2. Group
|
|
16
|
-
- Wave 1:
|
|
17
|
-
- Wave 2+:
|
|
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 —
|
|
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
|
-
|
|
25
|
-
|
|
26
|
-
|
|
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
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
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
|
-
|
|
35
|
-
|
|
36
|
-
|
|
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
|
|
41
|
-
|
|
45
|
+
If FAIL → fix in same worktree before updating status.
|
|
46
|
+
Never mark pending_review while tests still fail.
|
|
47
|
+
```
|
|
42
48
|
|
|
43
|
-
|
|
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
|
-
|
|
52
|
+
4. Wait for all tasks in wave → run next wave if any
|
|
46
53
|
|
|
47
|
-
|
|
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
|
-
|
|
4
|
-
|
|
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 —
|
|
17
|
+
2. For each task — **MUST use a different model than the executor**:
|
|
17
18
|
|
|
18
|
-
```
|
|
19
|
-
|
|
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
|
-
|
|
22
|
-
|
|
23
|
-
|
|
31
|
+
Review diff:
|
|
32
|
+
git -C .worktrees/task-xxx diff main
|
|
33
|
+
Check: correctness, regression risk, security, edge cases, maintainability
|
|
24
34
|
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
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
|
-
|
|
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
|
|
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
|
-
|
|
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:
|
|
68
|
+
4. Report: merged tasks, tasks needing fixes, remaining worktrees
|
|
59
69
|
|
|
60
|
-
|
|
61
|
-
|
|
70
|
+
**Next:**
|
|
71
|
+
- All done → `/ukit:clear-handoff`
|
|
72
|
+
- Has fixes → executor runs `/ukit:implement-handoff TASK-xxx`
|