jpicklyk/task-orchestrator/post-plan-workflow
Claude Code and agent skill by jpicklyk/task-orchestrator
- community
Checking that the SKILL.md file is still in the repository.
Internal, hook-triggered when a plan is approved: materializes MCP items from the plan and dispatches implementation.
Install
npx vskill@latest install jpicklyk/task-orchestrator/post-plan-workflowSKILL.md
Post-Plan Workflow - Materialize and Implement
Plan approval is the green light for the full pipeline. Run all three phases without stopping; the one expected stop is the turn that ends when a run-wave Method A launch hands control to its async notification (Phase 2, Route). Shapes are in `_generated/call-shapes.md`; ids below are 8-hex shorts.
Phase 1: Materialize
Finish materialization before any implementation begins.
Prefer the stashed plan. The plan-capture hook stashes the approved plan as a plan document when ExitPlanMode fires and reports the slug in its context (plan stashed as plan document '<slug>' (root <rootId>)). Confirm it and read it:
A plan with no adoptedBy is still pending. docs_read get with kind: "plan" and the slug returns the body. Quote or anchor its sections instead of retyping them; with no stashed document (stdio setups, hook failed open) use the plan text in context.
- Create the items with one
create_treecall (all-or-nothing, so there is no partial state to repair). Every item needs a declaredtype(readconfig effectivetypes; see create-item Step 4);traitsandtagsare arrays. Anchor the root under the project: setparentIdto the project rootId (or a category container beneath it) when known. Dedup first, once per new root or feature (children inherit): one unscopeditems_readsearch(kinds: ["item"],limit: 5); unscoped on purpose so legacy depth-0 and other-root items show. Show close matches as one FYI line and keep going; never auto-link, auto-skip or auto-cancel.
docRef plus noteAnchors cut plan sections into notes and the root adopts the document; notes[] writes explicit bodies. The result is {ok, id, version, items, deps, notes} and carries no expectedNotes.
- Dependencies. A
blocksedge (thedepsarray, ordeps_writelater) is for a semantic dependency only: the dependent cannot start meaningfully until the other item is done.
- Give each edge a
Depends on <short>: <reason>line on the dependent's spec note (write it onceitems[]gives the ids). - Items that only share files in one shared-worktree run get NO edge; the per-file lock serializes same-file edits. Record each shared file as
Shared file, lock-serialized: <path> (with <short>)in both items' scopes. - Qualifications: this holds in shared-worktree mode only; an edge that unblocks at review or terminal costs a separate run, because the dependent cannot enter the run until the blocker reaches that role; per-item worktree mode still defers on overlap.
- Fill queue notes. Read the schema (a create returns no
expectedNotes):
data is {schemaFree: true} for a schema-free item. Otherwise fill each required queue note (feature-summary, task-scope, ...) from the plan, in one notes_write call with an upsert element per note.
- `feature-implementation` root: keep
feature-summarylean (under 2k chars): goal in 2-3 sentences, a findings-to-tasks table mapping plan findings to the child items just created, the dependency edges between them, and a pointer to non-goals. Alternatives, blast radius, risk flags and test strategy go in each child'stask-scope. - Test owner flag. Detect seats from the
items_readschemaanswer (seats). For each seat-aware item that lists no test-author seat and whose spec note names test files or test commands, show one FYI line:test owner: <short> lists tests without needs-test-author - add the trait (preferred) or drop the tests; run-wave stops a seat-aware item after its planner (a seat-less item is not stopped; its implementer gets a TESTS ARE YOURS line instead). Never add the trait automatically.
- Verify the graph. Confirm every id in
items[]exists:
Do not dispatch implementation agents until materialization is complete; they need the item ids to report progress.
Phase 2: Implement
Route: run-wave or hand-dispatch
Hand off to /task-orchestrator:run-wave only when ALL four conditions hold. Each is a concrete probe:
- Two or more unblocked leaf items. At least two leaves (no children) were materialized and none appears in the blocked list:
- A rootId resolves (project or personal), in run-wave Step 1's order: session context (
Active project:orPersonal root:line), thenproject.rootIdfrom the file on that context'sConfig:line, then.taskorchestrator/config.yaml. - Queue notes are filled. For each leaf,
items_readcontextwith itsitemIdshows no missing queue notes ingateStatus.missing, or its schema read is{schemaFree: true}. - Protocol rules are served. This lists
protocol.entry-seat,protocol.in-phase-seatandprotocol.read-only-agent(a seed made earlier this session by init or the run-wave repair shows up):
If all four hold, invoke /task-orchestrator:run-wave <materialized root id> and follow it. Plan approval counts as run-wave's Checkpoint 1. When a degradation forces a human look (meta.excluded or meta.degradations non-empty, or an empty run), show the explain table and end the turn; never use AskUserQuestion. A Method A launch ending the turn is expected. run-wave's post-run replaces Phase 3, which then applies only to the hand-dispatch path.
If any condition fails, hand-dispatch and add one line naming the failed condition(s); for conditions 2 and 4 point at /task-orchestrator:init.
Hand-dispatch
- Each subagent owns one item: put the item id in the delegation prompt.
- Resolve each note's
guidanceandskillwithitems_readschema(fields: ["guidance"]) and embed the guidance as authoring instructions. When a note has askill, add: "Before filling the<key>note, invoke/<skill>and follow its framework." - Agents own phase entry only. Each agent calls
advancetransitionwithtrigger: "start"once to enter work, fills the work-phase notes and returns:
- Respect dependency order: do not dispatch an agent for a blocked item until its blockers complete.
- Between waves run
items_readblockedwith the feature'sancestorId(it catches blockers anywhere in the subtree, not just direct children). An item still blocked means an upstream item never transitioned: investigate it. - Do not transition delegated items to terminal yourself before their agents return; the orchestrator reviews and advances them afterwards.
Do not use AskUserQuestion between phases.
Phase 3: Verify
After all agents return:
- List items still in
queue(agents that failed leave their items there; therole: "work"list is what you review and advance next) and diagnose them with/status-progression:
- Run the health check to see what completed, stalled or is blocked:
items_readcontextwith the sameancestorId. - For each stalled item,
items_readcontextwith itsitemIdshowsgateStatus.missing. - Address blockers or incomplete work. An agent that returned
awaiting_decisionneeds a decision raised per decisions.md (when it had no seat token); do not re-dispatch it until the decision is answered and the item resumed.
Workflow complete
Report the final status: what completed, what needs attention, what is still in progress.
Security
- Security scanPassed, 100 of 100Pattern checks on the skill's files.
- Model reviewNot runA model review is scheduled for the next rescan.
Quality evaluation
- Task evaluationNot runNo evaluation yet. Run one in Skill Studio.
Source
- SKILL.md in the repositoryCheckingclaude-plugins/task-orchestrator/skills/post-plan-workflow/SKILL.md
Popularity
- Repository stars
- 170
- Repository forks
- 18
- 7-day trend score
- 26
Stars and forks are for the whole GitHub repository, not this skill alone. Refreshed 18 Mar 2026, 7 months ago.
Works with
Any agent vskill installs to: 56 targets in all. These 39 have a page on this site.
- Claude Code
- Cursor
- GitHub Copilot
- Windsurf
- Codex
- Gemini CLI
- Cline
- Amp
- Roo Code
- Goose
- Continue
- Kilo Code
- Junie
- Trae
- OpenHands
- Qwen Code
- AI Agent
- Tabnine Chat
- Sourcegraph Cody
- Amazon Q
- Firebase Genkit
- Sweep
- Devin
- Phind
- Mentat
- Claude Desktop
- Aider
- GPT Pilot
- Plandex
- bolt.new
- v0
- Replit Agent
- Anse
- TypingMind
- BetterChatGPT
- LibreChat
- Warp AI
- Pieces
- Fig AI
Embed badge
[](https://verified-skill.com/skills/jpicklyk/task-orchestrator/post-plan-workflow)