@ngockhoale/ukit 1.5.18 → 1.5.19
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/manifests/platform.full.yaml +0 -12
- package/package.json +1 -1
- package/src/core/runInstallPipeline.js +1 -0
- package/templates/.claude/commands/ukit/create-handoff.md +6 -1
- package/templates/adapter-presets/opencode/opencode.template.json +1 -1
- package/templates/.claude/commands/ukit/abort-handoff.md +0 -59
|
@@ -879,18 +879,6 @@ items:
|
|
|
879
879
|
packs:
|
|
880
880
|
- core
|
|
881
881
|
|
|
882
|
-
- id: command-abort-handoff
|
|
883
|
-
type: command
|
|
884
|
-
sourceTemplate: .claude/commands/ukit/abort-handoff.md
|
|
885
|
-
targetPath: .claude/commands/ukit/abort-handoff.md
|
|
886
|
-
requires:
|
|
887
|
-
- command-create-handoff
|
|
888
|
-
mergeStrategy: overwrite_with_backup
|
|
889
|
-
variables: []
|
|
890
|
-
enabledByDefault: true
|
|
891
|
-
packs:
|
|
892
|
-
- core
|
|
893
|
-
|
|
894
882
|
- id: provider-compat-config
|
|
895
883
|
type: config
|
|
896
884
|
sourceTemplate: .claude/config/providers.md
|
package/package.json
CHANGED
|
@@ -9,6 +9,8 @@
|
|
|
9
9
|
## Problem / feature
|
|
10
10
|
$ARGUMENTS
|
|
11
11
|
|
|
12
|
+
> **Can be run multiple times.** If the plan or tasks aren't satisfactory after the first run, re-run `/ukit:create-handoff` to refine until the plan is good — as long as no task has been implemented yet.
|
|
13
|
+
|
|
12
14
|
---
|
|
13
15
|
|
|
14
16
|
## Step 1 — Read context (lite model)
|
|
@@ -31,7 +33,10 @@ Return compact summary. Do NOT write anything yet.
|
|
|
31
33
|
|
|
32
34
|
Switch to strongest model. Use Step 1 summary — do NOT re-read files.
|
|
33
35
|
|
|
34
|
-
1.
|
|
36
|
+
1. Check INDEX.md task statuses:
|
|
37
|
+
- All tasks are `ready` (planning only) → **re-run allowed**: overwrite PLAN.md and TASK-xxx.md freely — this is iterative refinement.
|
|
38
|
+
- Any task is `pending_review`, `changes_requested`, `merge_conflict`, or `blocked` → **STOP**: warn human — tasks are already in implement/review phase, cannot overwrite safely.
|
|
39
|
+
- No tasks → fresh cycle, proceed normally.
|
|
35
40
|
|
|
36
41
|
2. Resolve base branch:
|
|
37
42
|
```bash
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"$schema":"https://opencode.ai/config.json","default_agent":"build","share":"disabled","compaction":{"auto":true,"prune":true,"reserved":10000},"watcher":{"ignore":[".git/**","node_modules/**",".cache/**",".ukit/**",".claude/ukit/permission-usage.json",".claude/ukit/permission-audit.log"]},"permission":{"doom_loop":"deny"},"command":{"ukit-route":{"description":"Internal shared UKit route. Run at the start of every non-trivial task to get skill and context hints before writing code.","agent":"build","template":"Run `node .claude/ukit/index/route-task.mjs \"<task>\" --adapter opencode`; reuse `.claude/ukit/skill-router-state.json`."},"ukit-context":{"description":"Internal UKit context.","agent":"build","template":"Run `node .claude/ukit/index/resolve-context.mjs \"<intent>\" [--target <file>]`."},"ukit-verify":{"description":"Internal UKit verify lane.","agent":"build","template":"Run `node .claude/ukit/index/verify-context.mjs \"<intent>\" [--target <file>]`."},"ukit-triage":{"description":"Internal UKit triage.","agent":"build","template":"Run `node .claude/ukit/index/triage.mjs \"<error>\"`."},"ukit-query":{"description":"Internal UKit query.","agent":"build","template":"Run `node .claude/ukit/index/query-index.mjs \"<error|symbol|path>\"`."},"ukit-index":{"description":"Internal UKit index.","agent":"build","template":"Run `node .claude/ukit/index/refresh-index.mjs` (fallback: `node .claude/ukit/index/build-index.mjs`)."},"ukit-status-handoff":{"description":"Handoff dashboard — show current cycle status (read-only).","agent":"build","template":"Read `docs/AI_HANDOFF/INDEX.md`, `docs/AI_HANDOFF/ACTIVE.md`, and `docs/AI_HANDOFF/PLAN.md`. Report: active cycle name, task table with status, any blockers. No writes."},"ukit-create-handoff":{"description":"Create a new handoff cycle — Phase 1+2: write PLAN.md + TASK-xxx.md files.","agent":"build","template":"Read `.claude/commands/ukit/create-handoff.md` for full instructions, then execute. Description: <what to build>"},"ukit-implement-handoff":{"description":"Execute handoff tasks — Phase 3: implement the next Ready task.","agent":"build","template":"Read `.claude/commands/ukit/implement-handoff.md` for full instructions, then execute. Task ID (optional): <TASK-xxx>"},"ukit-review-handoff":{"description":"Review handoff results — Phase 4: verify implementation and give verdict.","agent":"build","template":"Read `.claude/commands/ukit/review-handoff.md` for full instructions, then execute. Task ID (optional): <TASK-xxx>"},"ukit-clear-handoff":{"description":"Archive and reset the current handoff cycle.","agent":"build","template":"Read `.claude/commands/ukit/clear-handoff.md` for full instructions, then execute."}
|
|
1
|
+
{"$schema":"https://opencode.ai/config.json","default_agent":"build","share":"disabled","compaction":{"auto":true,"prune":true,"reserved":10000},"watcher":{"ignore":[".git/**","node_modules/**",".cache/**",".ukit/**",".claude/ukit/permission-usage.json",".claude/ukit/permission-audit.log"]},"permission":{"doom_loop":"deny"},"command":{"ukit-route":{"description":"Internal shared UKit route. Run at the start of every non-trivial task to get skill and context hints before writing code.","agent":"build","template":"Run `node .claude/ukit/index/route-task.mjs \"<task>\" --adapter opencode`; reuse `.claude/ukit/skill-router-state.json`."},"ukit-context":{"description":"Internal UKit context.","agent":"build","template":"Run `node .claude/ukit/index/resolve-context.mjs \"<intent>\" [--target <file>]`."},"ukit-verify":{"description":"Internal UKit verify lane.","agent":"build","template":"Run `node .claude/ukit/index/verify-context.mjs \"<intent>\" [--target <file>]`."},"ukit-triage":{"description":"Internal UKit triage.","agent":"build","template":"Run `node .claude/ukit/index/triage.mjs \"<error>\"`."},"ukit-query":{"description":"Internal UKit query.","agent":"build","template":"Run `node .claude/ukit/index/query-index.mjs \"<error|symbol|path>\"`."},"ukit-index":{"description":"Internal UKit index.","agent":"build","template":"Run `node .claude/ukit/index/refresh-index.mjs` (fallback: `node .claude/ukit/index/build-index.mjs`)."},"ukit-status-handoff":{"description":"Handoff dashboard — show current cycle status (read-only).","agent":"build","template":"Read `docs/AI_HANDOFF/INDEX.md`, `docs/AI_HANDOFF/ACTIVE.md`, and `docs/AI_HANDOFF/PLAN.md`. Report: active cycle name, task table with status, any blockers. No writes."},"ukit-create-handoff":{"description":"Create a new handoff cycle — Phase 1+2: write PLAN.md + TASK-xxx.md files.","agent":"build","template":"Read `.claude/commands/ukit/create-handoff.md` for full instructions, then execute. Description: <what to build>"},"ukit-implement-handoff":{"description":"Execute handoff tasks — Phase 3: implement the next Ready task.","agent":"build","template":"Read `.claude/commands/ukit/implement-handoff.md` for full instructions, then execute. Task ID (optional): <TASK-xxx>"},"ukit-review-handoff":{"description":"Review handoff results — Phase 4: verify implementation and give verdict.","agent":"build","template":"Read `.claude/commands/ukit/review-handoff.md` for full instructions, then execute. Task ID (optional): <TASK-xxx>"},"ukit-clear-handoff":{"description":"Archive and reset the current handoff cycle.","agent":"build","template":"Read `.claude/commands/ukit/clear-handoff.md` for full instructions, then execute."}},"agent":{"build":{"description":"UKit build agent. Follow AGENTS.md. For every non-trivial task: run /ukit-route first, use index-first loop, activate matching skill, never claim done after read-only steps. Keep internal ukit-* helpers hidden; users only need ukit install.","permission":{"edit":"allow","task":"allow","skill":"allow","bash":{"*":"ask","pwd":"allow","ls":"allow","ls *":"allow","find *":"allow","rg *":"allow","grep *":"allow","cat *":"allow","sed *":"allow","head *":"allow","tail *":"allow","wc *":"allow","echo *":"allow","printf *":"allow","awk *":"allow","tr *":"allow","cut *":"allow","sort *":"allow","uniq *":"allow","diff *":"allow","jq *":"allow","stat *":"allow","file *":"allow","which *":"allow","date *":"allow","basename *":"allow","dirname *":"allow","realpath *":"allow","xargs *":"allow","mkdir *":"allow","touch *":"allow","cp *":"allow","vitest *":"allow","jest *":"allow","git status":"allow","git status *":"allow","git diff":"allow","git diff *":"allow","git log":"allow","git log *":"allow","git show *":"allow","git grep *":"allow","git rev-parse *":"allow","git branch *":"allow","git stash list":"allow","git ls-files *":"allow","git tag *":"allow","node .claude/ukit/index/*":"allow","node .claude/ukit/runtime/*":"allow","{{runtime.packageManager}} test":"allow","{{runtime.packageManager}} test *":"allow","{{runtime.packageManager}} lint":"allow","{{runtime.packageManager}} lint *":"allow","{{runtime.packageManager}} typecheck":"allow","{{runtime.packageManager}} typecheck *":"allow","{{runtime.packageManager}} build":"allow","{{runtime.packageManager}} build *":"allow","npm run test":"allow","npm run test *":"allow","npm run lint":"allow","npm run lint *":"allow","npm run typecheck":"allow","npm run typecheck *":"allow","npm run build":"allow","npm run build *":"allow","pnpm test":"allow","pnpm test *":"allow","pnpm lint":"allow","pnpm lint *":"allow","pnpm typecheck":"allow","pnpm typecheck *":"allow","pnpm build":"allow","pnpm build *":"allow","pnpm run test":"allow","pnpm run test *":"allow","pnpm run lint":"allow","pnpm run lint *":"allow","pnpm run typecheck":"allow","pnpm run typecheck *":"allow","pnpm run build":"allow","pnpm run build *":"allow","bun test":"allow","bun test *":"allow","bun run test":"allow","bun run test *":"allow","bun run lint":"allow","bun run lint *":"allow","bun run typecheck":"allow","bun run typecheck *":"allow","bun run build":"allow","bun run build *":"allow","git commit":"ask","git commit *":"ask","git push":"ask","git push *":"ask","git clean":"deny","git clean *":"deny","git reset":"deny","git reset *":"deny","rm *":"deny"}}},"plan":{"permission":{"edit":"ask","bash":"ask"}}}}
|
|
@@ -1,59 +0,0 @@
|
|
|
1
|
-
# /ukit:abort-handoff — Force Abandon Cycle (no archive)
|
|
2
|
-
|
|
3
|
-
**Role: CLEANUP**
|
|
4
|
-
**Tool: any**
|
|
5
|
-
**Model: lite model** (haiku · unic-lite)
|
|
6
|
-
|
|
7
|
-
**Use when:** plan is wrong from the root, or cycle is unrecoverable. Discards everything — no archive, no history entry.
|
|
8
|
-
**Different from `/ukit:clear-handoff`:** clear = "done, save it". abort = "throw it away".
|
|
9
|
-
|
|
10
|
-
---
|
|
11
|
-
|
|
12
|
-
## Step 1 — Confirm intent
|
|
13
|
-
|
|
14
|
-
Report the current state before doing anything:
|
|
15
|
-
```
|
|
16
|
-
⚠️ About to ABORT handoff cycle:
|
|
17
|
-
Cycle: <ID> Goal: <goal>
|
|
18
|
-
Tasks that will be lost: TASK-001 [in_progress], TASK-002 [ready], ...
|
|
19
|
-
Branch to delete: handoff/integration (task worktrees already cleaned up during implement)
|
|
20
|
-
|
|
21
|
-
This will NOT be archived. All uncommitted work in integration branch will be discarded.
|
|
22
|
-
Respond "confirm abort" to proceed.
|
|
23
|
-
```
|
|
24
|
-
|
|
25
|
-
Wait for human to confirm. If not confirmed → stop.
|
|
26
|
-
|
|
27
|
-
## Step 2 — Force remove all worktrees + branches
|
|
28
|
-
|
|
29
|
-
```bash
|
|
30
|
-
# Remove task worktrees + branches
|
|
31
|
-
git worktree list | grep '.worktrees/task-' | awk '{print $1}' | while read wt; do
|
|
32
|
-
name=$(basename $wt)
|
|
33
|
-
git worktree remove $wt --force
|
|
34
|
-
git branch -D handoff/$name 2>/dev/null
|
|
35
|
-
done
|
|
36
|
-
|
|
37
|
-
# Remove integration branch
|
|
38
|
-
git branch -D handoff/integration 2>/dev/null
|
|
39
|
-
|
|
40
|
-
git worktree prune
|
|
41
|
-
```
|
|
42
|
-
|
|
43
|
-
## Step 3 — Reset state files (no archive)
|
|
44
|
-
|
|
45
|
-
```
|
|
46
|
-
PLAN.md → "# PLAN\n_(empty)_"
|
|
47
|
-
INDEX.md → empty table header only
|
|
48
|
-
ACTIVE.md → "# ACTIVE\n_(no active cycle)_"
|
|
49
|
-
tasks/TASK-*.md → delete all (keep _TEMPLATE.md)
|
|
50
|
-
```
|
|
51
|
-
|
|
52
|
-
## Step 4 — Report
|
|
53
|
-
|
|
54
|
-
Cycle aborted. No archive written. Worktrees and branches removed. Ready for new cycle.
|
|
55
|
-
|
|
56
|
-
> Claude Code: spawn `ukit-small-task-maintainer` (haiku) with steps 1–4.
|
|
57
|
-
> Other tools: use lite model, follow steps above.
|
|
58
|
-
|
|
59
|
-
**Next:** `/ukit:create-handoff <new problem description>` (start fresh)
|