TPP Orchestration
Documented in depth: Claude Code has amnesia. So do PRs, changelogs, and your future self.
You are the orchestrator for a documented queue of Technical Project Plans
(TPPs) — self-contained plan files that carry research, design decisions, and
acceptance criteria across sessions. The queue may be a backlog such as
_todo/ or a temporary feature integration queue such as _feat-auth/; plans
move to _done/ when finished, and a roadmap or queue README.md defines the
order. The TPP system itself — layouts, frontmatter, the plan template — is
defined in the bundled TPP-GUIDE.md, or the project's own
docs/TPP-GUIDE.md, which wins. The sibling tpp and handoff skills work a
single plan within a session; this skill is the loop that drives a whole queue
of them through subagents and review gates.
The loop exists because a subagent's green test suite is not proof of
correctness. ../second-opinion/SKILL.md explains
that failure mode and its counterpart — confidently wrong reviewers — and owns
the gate that settles both. This skill owns the queue around it: delegate,
gate, record, commit, repeat.
Before the first TPP
- Read the roadmap and every queued TPP's summary. Confirm dependency order.
- Identify the project's ground truth as the gate defines it, and write down the exact command to query it. Every TPP in the queue is vetted against it.
- Ask the user any clarifying questions now — scope ambiguities are cheapest to resolve before any code exists.
The loop, per TPP
Work serially: one TPP through the full loop before starting the next. Only parallelize TPPs within a wave when their file sets are provably disjoint and neither depends on the other's decisions — review gates stay per-TPP either way.
1. Scope and clarify
Read the TPP and its sources of truth. If anything is ambiguous or the plan contradicts what you find in the code, ask the user before delegating — don't let a subagent guess.
2. Delegate with TDD
Launch an implementation subagent through the host's available collaboration mechanism. Select the strongest available model and higher reasoning effort for large, novel, security-sensitive, or weakly specified work. Use a faster model or moderate reasoning effort only when the TPP, reference behavior, and existing tests pin the implementation tightly. If the surface does not expose model selection, keep the same risk-based scrutiny in the prompt and review gate.
The prompt must include:
- The TPP path and the sources of truth (spec files, reference implementation paths).
- Tests first: port or write the acceptance tests before implementing, then implement until green. The full suite must stay green — not just the new tests.
- Project pitfalls relevant to this TPP (from
AGENTS.md, optionalCLAUDE.md, or the TPP itself). - "You cannot talk to the user. Record open questions, assumptions you made, and every intentional divergence from the plan in your final report."
3. Relay questions
Triage the subagent's open questions. Ask the user about decision-worthy ones before the review gate — a review of code built on a wrong assumption is wasted.
4. Run the review gate
Read and follow ../second-opinion/SKILL.md on this TPP's diff. The gate owns reviewer creation, vetting, and pinning tests — do not add reviewers here or restate its rules. Give it this TPP's spec/reference files, the diff range, and a scrutiny list of the riskiest areas the plan touches.
You are the gate's second reviewer, and the only one who knows the whole roadmap. Read the new code yourself while the external review runs.
5. Record the verdicts
Add a "Post-review fixes" section to the TPP listing every finding — accepted and vetoed — with the evidence for each verdict and which model raised it. Vetoes especially: the next session will see the same "bug" and must not re-litigate it.
6. Close out
Move the TPP to _done/, update the roadmap's status section, and make one coherent commit per TPP (implementation + tests + TPP move together), following the repo's commit conventions. Then start the next TPP.
Guidelines
- Never let a review gate slip. "The agent's tests pass and the diff looks clean" is exactly the state in which review has found real bugs.
- Rebuild before testing built artifacts. CLI/dist tests against a stale build silently test old code.
- Report honestly. The per-TPP summary to the user lists: what shipped, findings accepted/vetoed (with one-line reasons), open questions, and anything you diverged on.
Adapting for your project
- Name the ground truth explicitly — e.g. "CPython 3.12 via
uv run python -c ...in the reference submodule", "the staging API", "the RFC's test vectors". The vetting step is only as strong as this. - Reviewer choices and scrutiny-list tuning live in the gate — adapt ../second-opinion/SKILL.md, and this loop inherits it.
- Tune the model heuristic to your roster — the invariant is "risk decides the model", not the specific names.
- Rename the file conventions (
_todo/,_feat-<name>/,_done/, and the roadmap or queue README) to whatever your plan system uses; the loop doesn't care about paths.