원클릭으로
schema-workflow
Internal, hook-triggered: drives a schema-typed MCP item through its gate-enforced phases, filling required notes.
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
메뉴
Internal, hook-triggered: drives a schema-typed MCP item through its gate-enforced phases, filling required notes.
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
SOC 직업 분류 기준
| name | schema-workflow |
| description | Internal, hook-triggered: drives a schema-typed MCP item through its gate-enforced phases, filling required notes. |
| user-invocable | false |
Drive any schema-tagged MCP work item through its gate-enforced lifecycle. This skill is schema-driven — it reads note requirements and authoring guidance from the item's tag schema at runtime, never hardcoding what notes should contain.
When this skill applies: Any item whose type field matches a schema defined in
work_item_schemas: in .taskorchestrator/config.yaml, or whose tags match a schema in
note_schemas: (legacy). Items without a matching type or tags advance freely (no gates).
Start by loading the item's context:
get_context(itemId="<uuid>")
The response tells you everything needed to proceed:
| Field | What it means |
|---|---|
currentRole | Which phase the item is in (queue, work, review, terminal) |
canAdvance | Whether the gate is satisfied for the next start trigger |
missing | Required notes not yet filled for the current phase |
expectedNotes | All notes defined by the schema, with exists and filled status (keys-only — no description/guidance/skill) |
guidanceKey | Key of the first unfilled required note with guidance; resolve its text via query_items(operation="schema", itemId=...) |
noteSchema | The full schema definition matching the item's tags |
If currentRole is terminal, the item is already complete — nothing to do.
If noteSchema is null or empty, no schema matches the item. This means either:
.taskorchestrator/config.yaml doesn't exist or has no work_item_schemas or note_schemas sectiontype field doesn't match any configured schema key in work_item_schemasnote_schemas (legacy fallback)default schema exists as a fallbackInform the user: "No schema found for this item's type/tags. Use /manage-schemas to configure gate workflows." The item can still advance freely — this is non-blocking, but gate enforcement won't apply.
Each phase follows the same pattern: fill required notes, then advance.
From get_context, check the missing array. These are the required notes that must be
filled before the gate allows advancement.
If missing is empty and canAdvance is true, skip to Step 3.
For each missing note, guidanceKey names the note with authoring guidance; resolve its text via
query_items(operation="schema", itemId=...) and follow it.
manage_notes(
operation="upsert",
notes=[{
itemId: "<uuid>",
key: "<note-key>",
role: "<note-role>",
body: "<content following the resolved guidance>"
}]
)
Keep the body distilled prose; route verbatim artifacts (test output, diffs, logs) through bodyFromFile instead of pasting them inline.
How guidanceKey works:
get_context returns guidanceKey (a note key) for the first unfilled required noteget_context again to get the key for the next oneguidance text via query_items(operation="schema", itemId=...)guidanceKey is null, no unfilled required note has guidance — use the note's description (also from the schema op) as a general guideSkill-assisted note filling:
get_context response includes skillPointer (a non-null string), invoke that skill via the Skill tool before filling the noteskillPointer is derived from the first unfilled required note's skill field in the schemaskillPointer is null, use the resolved guidanceKey text as the authoring guidedescription/guidance/skill are not in expectedNotes (keys-only) — fetch them via query_items(operation="schema", itemId=...)Batch filling: If you already know the content for multiple notes (e.g., from a completed
plan or implementation), fill them all in one manage_notes call. You only need to re-check
get_context between notes when you need the next guidanceKey for authoring direction.
advance_item(transitions=[{ itemId: "<uuid>", trigger: "start" }])
The response confirms the transition:
| Field | Check |
|---|---|
applied | Must be true — if false, the gate rejected (notes still missing) |
newRole | Phase you moved to (previousRole is omitted from success results) |
expectedNotes | Notes required for the new phase (fill these next) |
unblockedItems | Other items that were waiting on this one |
If the gate rejects: The response lists which notes are missing. Fill them (Step 2),
then retry. Do not call get_context first — advance_item already told you what's needed.
After advancing, check whether the new phase has its own required notes:
expectedNotes in the advance response shows unfilled required notes → loop back to Step 2newRole is terminal → the item is completeThe schema defines which notes belong to which phase. Common patterns:
| Phase | Typical purpose | When notes get filled |
|---|---|---|
| queue | Requirements, design, reproduction steps | During planning, before implementation starts |
| work | Implementation notes, test results, fix summaries | During or after implementation |
| review | Deploy notes, verification results | After implementation, during validation |
The actual note keys and content requirements vary per schema — always check expectedNotes
rather than assuming specific keys exist.
Orchestrator (this skill's primary user):
advance_item(start) and inspects newRole:
review: dispatches review agents or performs inline reviewterminal: item completed through a lightweight lifecycle (no review-phase notes in schema)Implementation agents (agent-owned-phase model):
subagent-start hookadvance_item(start) once to enter work phase (queue→work)advance_item againReview agents (dispatched into an item already in review):
subagent-start hook, which tells them to call advance_item(start)advance_item returns applied: false — this is expectedget_context(itemId=...) to get guidance insteadadvance_item again — the orchestrator handles the terminal transitionKey invariant: Agents own phase entry (one advance_item(start) call to enter their assigned phase). The orchestrator owns all phase-to-phase transitions — advancing the item, inspecting the schema to determine the next phase (review or terminal), and dispatching phase-appropriate agents. Review agents fill review-phase notes and return — they do not advance items.
When creating a new item with a schema, set the type field to the schema key:
manage_items(
operation="create",
items=[{ title: "...", type: "<schema-key>", priority: "medium" }]
)
The type field is the primary schema selector — it maps directly to a key in work_item_schemas:.
Tags can still be used for additional categorization and as a legacy schema fallback, but type
takes precedence.
Check expectedNotes in the response — it lists all notes the schema requires across all
phases. Begin filling queue-phase notes immediately, then follow the progression loop above.
Gate rejection: advance_item returns applied: false with the missing note keys.
Fill them and retry — no need for a separate get_context call.
Wrong phase notes: If you try to upsert a note with a role that doesn't match the
item's current role, the note is still created (notes are not phase-locked), but it won't
satisfy a gate for a different phase. Always match the note's role to the schema definition.
Blocked items: If advance_item fails because the item is blocked by a dependency,
resolve the blocking item first. Use get_blocked_items or query_dependencies to diagnose.
No schema match: Items whose type doesn't match any schema in work_item_schemas and
whose tags don't match any schema in note_schemas have no gate enforcement. advance_item
will succeed without notes. This is by design — only typed or tagged items require structured
note workflows.
Migrates an already-populated, unscoped Task Orchestrator database in place to the project-scoping convention — creates a project anchor root, re-parents existing work trees under it, and writes rootId back to config.yaml. Use when a user says: adopt project scope, migrate this database to project scoping, make this DB multi-project, project-scope this workspace, adopt existing database, or set up project scoping for an existing DB.
Creates an MCP work item from conversation context. Scans existing containers to anchor the item in the right place (Bugs, Features, Tech Debt, Observations, etc.), infers type and priority, creates single items or work trees, and pre-fills required notes. Use when the conversation surfaces a bug, feature idea, tech debt item, or observation worth tracking persistently. Also use when user says: track this, log this bug, create a task for, or add this to the backlog.
Creates, views, edits, deletes, and validates note schemas for the MCP Task Orchestrator in .taskorchestrator/config.yaml — the templates that define which notes agents must fill at each workflow phase. Also manages the actor_authentication config block: set actor authentication policy, configure degraded mode, show actor_authentication config, set degradedModePolicy to reject, what's the current degraded mode policy. Use when user says: create schema, show schemas, edit schema, delete schema, validate config, what schemas exist, add a note to schema, remove note from schema, or configure gates.
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".
Compatibility assessment for items with the needs-api-compat-review trait. Evaluates the MCP tool surface and the REST surface separately, since their compatibility models differ. Invoked via skillPointer when filling api-compatibility notes.
Guides the full lifecycle of a feature-implementation tagged MCP item (the feature container) — from queue through review. Creates or resumes the feature container, fills gate-enforced notes at each phase (feature-summary, implementation-notes, session-tracking, review-checklist), dispatches implementation subagents, and advances through queue, work, and review to terminal. Use when the user says: implement a feature, start a new feature, feature workflow, resume feature work, guide feature lifecycle, or references a feature-implementation item UUID.