@ngockhoale/ukit 1.5.9 → 1.5.10
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
|
@@ -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,13 +1,35 @@
|
|
|
1
1
|
# /ukit:create-handoff
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
Two-step: **lite model reads context** → **Opus writes plan**.
|
|
4
4
|
|
|
5
5
|
## Problem / feature
|
|
6
6
|
$ARGUMENTS
|
|
7
7
|
|
|
8
8
|
---
|
|
9
9
|
|
|
10
|
+
## Step 1 — Pre-read (Haiku / unic-lite, fast)
|
|
11
|
+
|
|
10
12
|
Spawn Agent:
|
|
13
|
+
- `subagent_type: ukit-small-task-maintainer`
|
|
14
|
+
- `model: haiku`
|
|
15
|
+
- `prompt`:
|
|
16
|
+
|
|
17
|
+
```
|
|
18
|
+
Read and summarize the current handoff state for the planner. Be compact.
|
|
19
|
+
|
|
20
|
+
1. Read docs/AI_HANDOFF/INDEX.md → list all tasks + statuses (or "empty" if none)
|
|
21
|
+
2. Read docs/AI_HANDOFF/ACTIVE.md → current cycle ID + goal (or "no active cycle")
|
|
22
|
+
3. Read docs/AI_HANDOFF/RULES.md → extract: PLAN.md 6 sections, Task Gate fields, wave grouping rule
|
|
23
|
+
4. Read docs/AI_HANDOFF/tasks/_TEMPLATE.md → paste the template structure
|
|
24
|
+
|
|
25
|
+
Return a compact summary block the planner can read directly without opening files.
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
---
|
|
29
|
+
|
|
30
|
+
## Step 2 — Plan (Opus / unic-smart, strong)
|
|
31
|
+
|
|
32
|
+
Take the summary from Step 1. Spawn Agent:
|
|
11
33
|
- `subagent_type: handoff-planner`
|
|
12
34
|
- `model: opus`
|
|
13
35
|
- `prompt`:
|
|
@@ -15,25 +37,25 @@ Spawn Agent:
|
|
|
15
37
|
```
|
|
16
38
|
Problem to plan: $ARGUMENTS
|
|
17
39
|
|
|
18
|
-
|
|
19
|
-
|
|
40
|
+
Pre-read context (from lite agent):
|
|
41
|
+
<insert Step 1 output here>
|
|
42
|
+
|
|
43
|
+
Using the context above (do NOT re-read the same files):
|
|
20
44
|
|
|
21
|
-
|
|
45
|
+
1. If INDEX.md shows undone tasks → warn human: continue old cycle or start fresh?
|
|
22
46
|
|
|
23
|
-
|
|
24
|
-
§1 Intent | §2 Scope | §3 Approach | §4 Test Plan | §5 Verification
|
|
25
|
-
§4 Test Plan: happy path + ≥1 edge case + regression if bugfix
|
|
47
|
+
2. Write docs/AI_HANDOFF/PLAN.md — all 6 sections (from RULES.md format in context):
|
|
48
|
+
§1 Intent | §2 Scope | §3 Approach | §4 Test Plan | §5 Verification | §6 Acceptance
|
|
49
|
+
§4 Test Plan: happy path + ≥1 edge case + regression if bugfix — non-negotiable
|
|
26
50
|
|
|
27
|
-
|
|
28
|
-
Each task MUST have
|
|
29
|
-
Verification Commands, Acceptance Criteria
|
|
30
|
-
Missing any field → status: needs_breakdown (never ready)
|
|
51
|
+
3. Create docs/AI_HANDOFF/tasks/TASK-001.md ... using _TEMPLATE.md structure (from context)
|
|
52
|
+
Each task MUST have all Task Gate fields. Missing any → needs_breakdown, never ready.
|
|
31
53
|
|
|
32
|
-
|
|
33
|
-
|
|
54
|
+
4. Update INDEX.md — add rows, status=ready
|
|
55
|
+
5. Update ACTIVE.md — cycle snapshot + wave structure
|
|
34
56
|
|
|
35
|
-
|
|
57
|
+
6. Report: task list + IDs, wave map, any needs_breakdown, next step for human
|
|
36
58
|
```
|
|
37
59
|
|
|
38
|
-
After
|
|
60
|
+
After both agents complete:
|
|
39
61
|
> Switch to **Sonnet / unic-code** → run `/ukit:implement-handoff`
|