add-component
Checklists for adding a new MCP tool, a new Flyway database migration, or a new Gradle dependency to the Task Orchestrator…
Internal, hook-triggered: materializes MCP items from the approved plan and dispatches implementation.
$ npx -y skills add jpicklyk/task-orchestrator --skill post-plan-workflow --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/post-plan-workflowContext preview
The summary Claude sees to decide when to auto-load this skill.
Internal, hook-triggered: materializes MCP items from the approved plan and dispatches implementation.
name: post-plan-workflow description: "Internal, hook-triggered: materializes MCP items from the approved plan and dispatches implementation." user-invocable: false
Plan approval is the green light for the full pipeline. Proceed through all three phases without stopping; the one expected stop is the turn that ends when a run-wave Method A launch hands control to the async notification (see Phase 2, Route).
Complete materialization **before** any implementation begins.
**Prefer a stashed docRef over re-authoring note bodies.** On HTTP+REST workspaces, the `plan-capture` hook stashes the just-approved plan as a plan document as ExitPlanMode fires, and reports the slug via `additionalContext` (`Task Orchestrator: plan stashed as plan document '<slug>' (root <rootId>)`). When that context is present, or `manage_plan_documents(operation="list", rootId=..., status="pending")` confirms a pending document for this root, use it as the source of truth for materialization — quote/reference its content instead of retyping the plan into note bodies. Fall back to the plan text already in context when no stashed doc exists (stdio setups, or the hook failed open).
1. **Create MCP items** from the approved plan using `create_work_tree` (preferred for structured work with dependencies) or `manage_items` (for individual items). Apply appropriate schema tags based on the plan and the project's `.taskorchestrator/config.yaml` — this activates gate enforcement for each item. If the config defines separate schemas for containers vs. child tasks, apply the appropriate tag at each level.
2. **Wire dependency edges** between items — use `BLOCKS` only for a semantic dependency (B consumes A's API, output or decision), `fan-out`/`fan-in` patterns for parallel work. Record each edge's reason on the dependent's spec note as one line: `Depends on <blocker short>: <reason>` (dependencies carry no description of their own). When two items in one feature only edit the same file, add no edge: per-file locks serialize a shared file inside one shared-worktree run, while an edge that unblocks at review or terminal costs a separate run (in shared mode an edge that unblocks at work or queue stays in the same run). Name the file in both items' spec notes on one line: `Shared file, lock-serialized: <path> (with <other short>)`. `run-planner plan` warns (advisory, exit 0) on a same-feature edge whose scopes share a file and whose dependent has no `Depends on` line for that blocker. The warning fires only in shared mode. 3. **Check `expectedNotes` in create responses** — if the item's tags match a schema, the response includes the expected note keys and phases. Fill required queue-phase notes (`feature-summary`, `task-scope`, etc.) with content from the plan before advancing.
4. **Verify all item UUIDs exist** — confirm the full item graph is materialized before proceeding
**If `create_work_tree` fails:** Check partial state with `query_items(operation='overview')`. Delete partial items with `manage_items(operation="delete", itemIds=["<uuid>"], recursive=true)` and retry.
Do NOT dispatch implementation agents until materialization is complete. Agents need MCP item UUIDs to self-report progress.
Hand off to `/task-orchestrator:run-wave` only when ALL four conditions hold; each is a concrete probe:
1. **Two or more unblocked leaf items.** At least two leaf items (no children) were materialized and are unblocked: they are absent from `get_blocked_items(ancestorId=<materialized root>)`. 2. **A rootId resolves** (project or personal), in the order run-wave Step 1 uses: session context (`Active project:` or `Personal root:` line), else `project.rootId` from the file on that context's `Config:` line, else `.taskorchestrator/config.yaml`. 3. **Queue notes are filled.** Each of those leaves has its required queue notes filled (`get_context(itemId)` shows no missing queue notes) or is schema-
Server-enforced workflow discipline for AI agents. Prompt-based frameworks hope the LLM follows instructions. This one blocks the call if it doesn't.
Checklists for adding a new MCP tool, a new Flyway database migration, or a new Gradle dependency to the Task Orchestrator…
Compatibility assessment for items with the needs-api-compat-review trait. Evaluates the MCP tool surface and the REST surface…
Guides the full lifecycle of a feature-implementation tagged MCP item (the feature container) — from queue through review.…
End-to-end workflow for taking MCP work items from backlog to merged PR. Handles git branching, schema-driven planning,…
SQLite migration assessment for items with the needs-migration-review trait. Evaluates schema changes, table recreation patterns,…
Performance impact assessment for items with the needs-perf-review trait. Evaluates hot paths, query patterns, and measurement…