Opinionated multi-model delegation for very large repos.
Use to run an accepted thunderkit plan: implements disjoint lanes in parallel across the fleet via portable CLI dispatch (claude/codex), each lane in its own git worktree with a captured resumable session id.
Install: npx skills add thunderock/thunderkit -s tk-execute -g
Takes .thunderkit/plan.json from tk-plan and implements its lanes in parallel across the fleet. Layer by layer: all lanes in a layer dispatch concurrently (they're disjoint by construction), the layer's verifications gate advancement, then the next layer starts.
Dispatch is portable CLI only — claude -p and codex exec — so this runs on anyone's machine with no private orchestrator. See the dispatch table in ../references/model-roster.md.
.thunderkit/plan.json exists and passed tk-plan's parallelism check.tk-router) — critical-path lane model isresolved, not a placeholder.
run the lanes you can, report which lanes are blocked on which missing auth.
Each lane runs in its own git worktree so parallel lanes never touch each other's working tree:
git worktree add ../wt-<lane-id> -b tk/<lane-id>
Dispatch the lane to its chosen model via the roster's dispatch commands. Always capture the resumable id — a lane that stalls with no session id is stranded work:
# Claude Code lane (critical path), permissions granted on the command:
claude -p "<lane prompt>" --output-format json --permission-mode acceptEdits \
--add-dir ../wt-<lane-id> > .thunderkit/runs/<lane-id>.json
# → read .session_id ; resume with: claude -p --resume <session_id>
# Codex lane (cross-family / breadth):
codex exec --json "<lane prompt>" --skip-git-repo-check -C ../wt-<lane-id> \
> .thunderkit/runs/<lane-id>.jsonl
# → read .thread_id ; resume with: codex exec resume <thread_id> --skip-git-repo-check
Build it from the lane record. It must be self-contained — the dispatched agent has none of this conversation's context:
plan.json), and this lane's file scope and acceptance criteria.files list. Editing outside scopebreaks the disjointness guarantee and collides with a sibling lane.
Show the composed prompt (a bounded preview) in your status output — the user must see *what* each lane was asked to do, not just that something ran.
(Opus 4.8 high), (Sol), (Fable 5.1).probe run. A permission denial in a non-interactive run recurs identically on retry — never redispatch until a changed grant is proven.
git worktree remove after merge.verify (or hand the whole layer to tk-review).itself and its dependents — sibling lanes still land.
Because lanes in a layer are file-disjoint, their worktree branches merge without conflict *by construction*. If a merge *does* conflict, the plan's disjointness was violated — stop, report it as a tk-plan defect (overlapping files), and don't paper over it with a manual resolve.
.thunderkit/runs/<lane-id>.json[l] per lane (with the resumable id).Never push or open a PR — stop at merged local commits and hand to tk-review.