Skip to content

Commit 1af98d7

Browse files
jpicklykclaude
andcommitted
feat: add feature-task schema for lighter child work item gates
Split feature work into two schema tiers: feature-implementation for the parent container (full spec, holistic review with /simplify) and feature-task for child work items (task-scope, task-level review). Plugin skills updated to remain generic — they reference config.yaml for schema discovery rather than hardcoding specific tag names. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
1 parent 9b7981f commit 1af98d7

File tree

6 files changed

+50
-8
lines changed

6 files changed

+50
-8
lines changed

.claude/skills/feature-implementation/SKILL.md

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,15 @@
11
---
2-
description: Guide the full lifecycle of a feature-implementation tagged MCP item — from queue through review
2+
description: Guide the full lifecycle of a feature-implementation tagged MCP item (the feature container) — from queue through review
33
---
44

55
# Feature Implementation Workflow
66

7-
End-to-end workflow for a `feature-implementation` tagged item. Covers all three phases
8-
(queue → work → review) with gate-enforced notes at each transition.
7+
End-to-end workflow for a `feature-implementation` tagged item — the **feature container**
8+
that holds the specification, plan, and holistic review. Child work items under this
9+
container use the `feature-task` tag with lighter gates (task-scope instead of full
10+
specification, task-level review without `/simplify`).
11+
12+
Covers all three phases (queue → work → review) with gate-enforced notes at each transition.
913

1014
**Usage:** `/feature-implementation [item-uuid]`
1115

.claude/skills/implement/SKILL.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,7 @@ its own isolated branch automatically. See Worktree Isolation below. Worktree
6969
branches are also local-only and get squash-merged into `main` after review.
7070

7171
**Branch naming** (for local working branches):
72-
- `feat/<short-description>` — feature-implementation items
72+
- `feat/<short-description>` — feature-implementation / feature-task items
7373
- `fix/<short-description>` — bug-fix items
7474
- `fix/<grouped-description>` — batch of related bug fixes
7575
- `chore/<short-description>` — tech debt, refactoring, observations

claude-plugins/task-orchestrator/skills/create-item/SKILL.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -81,9 +81,9 @@ Read `.taskorchestrator/config.yaml` to discover available note schemas (this is
8181

8282
| Context signal | Schema to apply |
8383
|----------------|-----------------|
84-
| Feature, enhancement, new capability | `feature-implementation` (if it exists in config) |
85-
| Bug, error, crash, unexpected behavior | `bug-fix` (if it exists in config) |
86-
| Observation, friction, optimization, missing capability | `agent-observation` (if it exists in config) |
84+
| Feature, enhancement, new capability | Match against feature-related schema keys in config (if any exist) |
85+
| Bug, error, crash, unexpected behavior | Match against bug-related schema keys in config (if any exist) |
86+
| Observation, friction, optimization, missing capability | Match against observation-related schema keys in config (if any exist) |
8787

8888
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.
8989

claude-plugins/task-orchestrator/skills/manage-schemas/references/example-schemas.md

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,34 @@ feature-implementation:
3535
guidance: "Note whether a rebuild/deploy was done, what version was bumped to, and whether reconnect was required."
3636
```
3737
38+
## `feature-task` (queue + work + review, lighter than feature-implementation)
39+
40+
Schema for child work items under a feature container. Lighter queue gate (task scope instead of full specification) and task-scoped review (no `/simplify` — that happens at the container level).
41+
42+
```yaml
43+
feature-task:
44+
- key: task-scope
45+
role: queue
46+
required: true
47+
description: "What to build — target files, acceptance criteria, constraints."
48+
guidance: "Define the narrow scope. Include: what to build, target files, acceptance criteria, constraints. The parent feature spec covers the 'why'."
49+
- key: implementation-notes
50+
role: work
51+
required: true
52+
description: "Context handoff — deviations, surprises, decisions affecting dependent work."
53+
guidance: "Document decisions not in the task scope. Focus on what downstream agents need."
54+
- key: review-checklist
55+
role: review
56+
required: true
57+
description: "Task-level quality gate — scope alignment and test coverage."
58+
guidance: "Verify scope alignment, test coverage, no unintended side effects. No /simplify here."
59+
- key: session-tracking
60+
role: work
61+
required: true
62+
description: "Session context for retrospective."
63+
guidance: "Record outcome, files changed, deviations, friction, test results."
64+
```
65+
3866
## `bug-fix` (queue + work, no review)
3967

4068
Lightweight schema for bug fixes — root cause before code, verification after.

claude-plugins/task-orchestrator/skills/post-plan-workflow/SKILL.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ Plan approval is the green light for the full pipeline. Proceed through all thre
1212

1313
Complete materialization **before** any implementation begins.
1414

15-
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 (e.g., `tags: "feature-implementation"`) based on the plan — this activates gate enforcement for the item.
15+
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.
1616
2. **Wire dependency edges** between items — use `BLOCKS` for sequencing, `fan-out`/`fan-in` patterns for parallel work
1717
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 (`requirements`, `acceptance-criteria`, etc.) with content from the plan before advancing.
1818
4. **Verify all item UUIDs exist** — confirm the full item graph is materialized before proceeding

current/src/test/kotlin/io/github/jpicklyk/mcptask/current/test/TestNoteSchemaService.kt

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,16 @@ class TestNoteSchemaService(
2727
)
2828
))
2929

30+
/** Feature task schema — lighter gates for child work items under a feature container. */
31+
val FEATURE_TASK = TestNoteSchemaService(mapOf(
32+
"feature-task" to listOf(
33+
NoteSchemaEntry(key = "task-scope", role = "queue", required = true, description = "What to build — target files, acceptance criteria, constraints"),
34+
NoteSchemaEntry(key = "implementation-notes", role = "work", required = true, description = "Context handoff — deviations, surprises, decisions"),
35+
NoteSchemaEntry(key = "review-checklist", role = "review", required = true, description = "Task-level quality gate — scope alignment and test coverage"),
36+
NoteSchemaEntry(key = "session-tracking", role = "work", required = true, description = "Session context for retrospective")
37+
)
38+
))
39+
3040
/** Bug fix schema — queue and work only, no review phase. */
3141
val BUG_FIX = TestNoteSchemaService(mapOf(
3242
"bug-fix" to listOf(

0 commit comments

Comments
 (0)