From task-orchestrator
Creates MCP work items from conversation context, anchors in Bugs/Features/Tech Debt/Observations containers, infers type/priority, builds single items or trees. Use for bugs, features, or user requests to track/log tasks.
How this skill is triggered — by the user, by Claude, or both
Slash command
/task-orchestrator:create-itemThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Create MCP work items intelligently from conversation context. This skill handles container anchoring, tag inference, structure decisions, and note pre-population so you don't have to.
Create MCP work items intelligently from conversation context. This skill handles container anchoring, tag inference, structure decisions, and note pre-population so you don't have to.
Determine from context (or from $ARGUMENTS if provided):
If title or type cannot be inferred with confidence, use AskUserQuestion with concrete options. Do not ask open-ended questions.
query_items(operation="overview", includeChildren=true)
Classify the existing structure:
| Pattern | Classification |
|---|---|
| Depth-0 item with category-named children (Bugs, Features, etc.) | Hierarchical — project root exists |
| Category-named items at depth 0, no project root | Flat — use category containers directly |
| No items at all | Empty — offer to create project root |
| Item type | Target category container | Signal keywords |
|---|---|---|
| Bug / error / crash / unexpected behavior | Bugs | bug, error, crash, broken, failure, wrong, exception |
| Feature / enhancement / new capability | Features | feature, add, implement, new, support, capability, enhancement |
| Tech debt / refactor / cleanup / improvement | Tech Debt | refactor, cleanup, simplify, debt, improve, migrate, restructure |
| Observation / friction / optimization / missing capability | Observations | slow, performance, optimize, latency, friction, missing, gap, observe |
| Action item / follow-up / reminder / TODO | Action Items | todo, follow up, remind, action, track, check |
| General / unclear | Best-effort match — ask if uncertain |
Hierarchical structure:
Matching category found under project root → use as parentId
Category missing under project root → create it, then use as parentId
Flat structure:
Matching category at depth 0 → use as parentId
Category missing at depth 0 → create it, then use as parentId
Empty (no project root exists):
→ AskUserQuestion: "No project root container exists yet.
Would you like to create one for this project?"
→ Yes: create project root → create category under it → create item
→ No: create category container at depth 0 → create item under it
Read .taskorchestrator/config.yaml to discover available note schemas (this is a file read, not an MCP call). In Docker, the config is mounted at a path controlled by the AGENT_CONFIG_DIR env var — read $AGENT_CONFIG_DIR/.taskorchestrator/config.yaml if that variable is set, otherwise use .taskorchestrator/config.yaml relative to the working directory. Each schema key is a tag that activates gate enforcement when applied to an item.
Error handling: If the config file is not found, cannot be read, or contains invalid YAML, skip schema-based tagging and create the item without tags. Inform the user: "No schema config found — item created without schema tags." Do not abort item creation due to a missing or malformed config.
Infer the best schema match from context:
| Context signal | Schema to apply |
|---|---|
| Feature, enhancement, new capability | Match against feature-related schema keys in config (if any exist) |
| Bug, error, crash, unexpected behavior | Match against bug-related schema keys in config (if any exist) |
| Observation, friction, optimization, missing capability | Match against observation-related schema keys in config (if any exist) |
If the inferred schema key exists in the config, apply it as the item's tags value. If the key does not exist in the config (e.g., no bug-fix schema defined), leave tags empty — do not apply a tag that has no matching schema.
When no confident match can be inferred:
default exists in the config, apply it as the fallback — this lets users control what happens to unclassified itemsAskUserQuestion, listing the available schema keys from the configIf no config file exists, skip tagging entirely — all items will be schema-free.
Single item (bug, observation, standalone task, action item):
manage_items(operation="create", items=[{
title: "<inferred title>",
summary: "<1-2 sentence description from context>",
priority: "<inferred priority>",
tags: "<tags or omit>",
parentId: "<category container UUID>"
// Additional fields like `complexity` are optional — omit if not relevant
}])
Work tree (feature with 2+ distinct subtasks clearly described):
create_work_tree(
root={title, summary, priority, tags},
children=[{ref: "t1", title: "..."}, {ref: "t2", title: "..."}, ...],
parentId="<category container UUID>"
)
Default to single item when scope is unclear. Use create_work_tree only when the conversation explicitly names multiple distinct subtasks.
Check expectedNotes in the create response. For each note where required: true and role: "queue":
expectedNotes entry for a guidance field — use it as the authoring instruction for note content. Guidance takes precedence over free-form inference.manage_notes(operation="upsert", notes=[
{itemId: "<uuid>", key: "reproduction-steps", role: "queue", body: "..."},
{itemId: "<uuid>", key: "root-cause", role: "queue", body: "..."}
])
✓ Created: [title] (`short-id`)
Path: [container path, e.g. "Features" or "Project Root › Features"]
Tags: [tags, or "none"]
Notes pre-filled: [key names, or "none"]
If a new category container was created, add one line:
↳ Created new container: [category name] under [parent]
No containers found in overview
AskUserQuestionWrong container chosen for the item
manage_items(operation="update", items=[{id: "<uuid>", parentId: "<correct-container-uuid>"}])Tags not matching a schema — expectedNotes is empty
.taskorchestrator/config.yaml, or the config hasn't been loadednote_schemas: key exactly. If the config was recently changed, run /mcp to reconnect the serverExpected notes not returned after item creation
/mcp in Claude Code to reconnect the server, then retry the create operationnpx claudepluginhub jpicklyk/task-orchestrator --plugin task-orchestratorGuides users through creating a structured work item (feature, bug, task, spike, or epic) with collaborative research and reasoning.
Captures backlog items via MCP server in guided, quick, or autonomous modes. Validates fields, detects duplicates, creates GitHub issues for P0/P1 priorities.
Task creation for issue trackers — structured descriptions, acceptance criteria, field categorization, and tracker linking. Invoke whenever task involves creating work items in any issue tracker — bugs, features, stories, tasks, or any tracked work from standalone requests or decomposition documents.