add-component
Checklists for adding a new MCP tool, a new Flyway database migration, or a new Gradle dependency to the Task Orchestrator…
Interactive onboarding for the MCP Task Orchestrator. Detects empty or populated workspaces and walks through how plan mode, persistent tracking, and the MCP work together. Use when a user says "get started", "how do I use this", "quick start", "first time setup", "onboard me",
$ npx -y skills add jpicklyk/task-orchestrator --skill quick-start --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/quick-startContext preview
The summary Claude sees to decide when to auto-load this skill.
Interactive onboarding for the MCP Task Orchestrator. Detects empty or populated workspaces and walks through how plan mode, persistent tracking, and the MCP work together. Use when a user says "get started", "how do I use this", "quick start", "first time setup", "onboard me",
name: quick-start description: Interactive onboarding for the MCP Task Orchestrator. Detects empty or populated workspaces and walks through how plan mode, persistent tracking, and the MCP work together. Use when a user says "get started", "how do I use this", "quick start", "first time setup", "onboard me", "what can this MCP do", or "help me learn task orchestrator". argument-hint: "[optional: describe what you want to track, e.g. 'a web app project']"
Interactive onboarding that teaches by doing. Detects your workspace state and adapts.
Resolve the scope first. Check session context for the SessionStart hook's output: a `## Project Scope` section carries a **project rootId** (it scopes reads and anchors new items); a `## Personal Scope` section carries a **personal root** (it only anchors new items; reads stay unscoped).
Without session context, ask the config locator, not a cwd-relative file read. Resolve `<plugin root>` as init Step 0 does, then:
node --input-type=module -e "const m = await import('file:///<plugin root>/hooks/config-locator.mjs'); const l = m.locateConfig(); console.log(JSON.stringify({scope: l.scope, path: l.path, rootId: l.rootId, name: l.name}))"(forward slashes only; the drive-letter form on Windows). Scope `project` with a `rootId` is a project rootId; scope `user` with a `rootId` is the personal root.
Call the health check to determine which path to follow:
get_context()
When a **project** rootId is known, pass it to scope the check to this project: `get_context(ancestorId="<rootId>")`. In personal scope, or when no rootId is known (a truly fresh workspace), call unscoped exactly as shown.
**If no active or stalled items exist** — follow the **Fresh-Start Path** (Steps 2-8). **If active items exist** — follow the **Orientation Path** (Steps A-C).
---
Before following either path, check whether this workspace has a project anchor yet. Use the scope resolved in Step 1: if either kind of root (project or personal) is known, the workspace is set up and nothing more is needed here.
If no root is known, offer setup via `AskUserQuestion`: *"This workspace isn't set up for Task Orchestrator yet. Run `/task-orchestrator:init` to create a project anchor (or `/task-orchestrator:init --user` for a personal root that serves every unconfigured directory)?"* `/task-orchestrator:init` owns the anchor, the `config.yaml` `project:` block, the server push and the bundled-rule seeding; this skill does none of that itself. If the user accepts, run it (or tell them to) and then continue here.
If the user declines, proceed unscoped. Nothing else in this skill requires an anchor.
---
Explain briefly:
---
Show how plan mode and the MCP work together. This is the workflow users will experience:
You describe what you want
│
▼
EnterPlanMode ← Claude explores the codebase
│
pre-plan hook fires ← Plugin sets the definition floor: existing work, schemas, gate requirements
│
▼
Plan written to disk ← Persistent markdown file — your design document
│
Plan approved (ExitPlanMode)
│
post-plan hook fires ← Plugin tells Claude to materialize before implementing
│
▼
Materialize ← Claude creates MCP items from the plan
│ Items, dependencies, notes — execution tracking
▼
Implement ← Subagents work, each transitioning their MCP item
│ advance_item(start) → work → advance_item(complete)
▼
Health check ← get_context() shows what completed and what didn't**Reinforce to the user:**
---
Now let's create some MCP items to see how the execution tracking works.
**Determine the project topic:**
Create a container with child items and dependencies in one atomic call:
create_work_tree(
root: {
title: "<Project Name> — Tutorial",
summary: "Quick-start tutorial project to learn MCP Task Orchestrator",
type: "container",
priority: "medium"
},
children: [
{ ref: "design", title: "Design <topic>", summary: "Define requirements and approach", type: "feature-task", priority: "high" },
{ ref: "implement", title: "Implement <topic>", summary: "Build the solution", type: "feServer-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…