.claude/skills/workflow/plan-tasks/SKILL.md
Create epics, stories, and tasks with schema v2.0 compliance. Guidance for breaking epics into stories, stories into tasks. Use during /epic or /write-stories-and-tasks.
npx skillsauth add brdohman/agile-maestro plan-tasksInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
When creating tasks using TaskCreate during planning phases.
Schema Version: 2.0 (AI-first schema)
Epic (top-level initiative)
Story (phase/component)
Task (actual work item)
Critical: Phases are type: "story", NOT type: "epic".
"2.0"execution_plan - AI-oriented sequencing (replaces timeline)estimate - Unified estimate object (replaces estimated_hours/estimated_days/size)acceptance_criteria - Minimum 5 items (Given/When/Then/Verify format)definition_of_done - Structured object with completion_gates and generation_hintsacceptance_criteria - Minimum 3 items (Given/When/Then/Verify format)definition_of_done - Structured objectimplementation_constraints - (Recommended) Technical constraintsai_context - (Recommended) Context for AI agentslocal_checks - Minimum 3 items (replaces acceptance_criteria)checklist - Minimum 2 items (replaces subtasks)completion_signal - When is this task done?validation_hint - How to verify (replaces verify)ai_execution_hints - (Recommended) Hints for AI executionNote: Tasks do NOT have definition_of_done - that is a repo-level quality gate.
Before creating any task, read the appropriate template:
.claude/templates/tasks/epic.md.claude/templates/tasks/story.md.claude/templates/tasks/task.md.claude/templates/tasks/metadata-schema.md| Level | Behavior | Examples |
|-------|----------|----------|
| Required | Must be present and meet minimum counts. Validation fails without them. | schema_version, completion_signal, validation_hint, local_checks (min 3), checklist (min 2) |
| Recommended | Should be present. Agents prompt for these if empty but don't block validation. | ai_execution_hints, implementation_constraints, ai_context |
Before using TaskCreate, verify:
schema_version: "2.0" is setlocal_checks (min 3), checklist (min 2), completion_signal, validation_hintacceptance_criteria (min 3), epic_id, definition_of_doneacceptance_criteria (min 5), execution_plan, estimate, definition_of_doneX TaskCreate with type: "epic" for a phase Wrong type: phases should be type: "story"
X TaskCreate with only title and type Missing: description, required fields, parent
X TaskCreate with vague title and minimal description Too vague: title unclear, description lacks structure
X Use old v1.0 field names for tasks
Wrong: acceptance_criteria, subtasks, verify, definition_of_done
Correct: local_checks, checklist, validation_hint (no DoD on tasks)
X Skip schema_version
All v2.0 items MUST have schema_version: "2.0"
{
"title": "Epic: PROJECT-100 - [Descriptive Name]",
"type": "epic",
"description": "## Problem Statement\n...\n\n## Solution\n...\n\n## Outcome to be Achieved\n...",
"metadata": {
"schema_version": "2.0",
"id": "PROJECT-100",
"type": "epic",
"priority": "P1",
"goal": "One-line goal statement",
"approval": "pending",
"blocked": false,
"review_stage": null,
"review_result": null,
"labels": ["infrastructure"],
"acceptance_criteria": [...],
"execution_plan": {...},
"estimate": {...},
"definition_of_done": {...}
}
}
{
"title": "Story: [Descriptive Name]",
"type": "story",
"description": "## Summary\n...\n\n## User Story\nAs a... I want... So that...",
"parentId": "<epic-task-id>",
"metadata": {
"schema_version": "2.0",
"type": "story",
"parent": "<epic-task-id>",
"story_id": "PROJECT-101",
"epic_id": "PROJECT-100",
"approval": "pending",
"blocked": false,
"review_stage": null,
"review_result": null,
"labels": ["phase-1"],
"acceptance_criteria": [...],
"definition_of_done": {...}
}
}
{
"title": "Task: [Action Verb] [Description]",
"type": "task",
"description": "## What\n[1-2 sentences]\n\n## Why\n[context]\n\n## How\n[approach]",
"parentId": "<story-task-id>",
"metadata": {
"schema_version": "2.0",
"type": "task",
"parent": "<story-task-id>",
"task_id": "PROJECT-101-1",
"story_id": "PROJECT-101",
"approval": "pending",
"blocked": false,
"labels": ["implementation"],
"files": [...],
"checklist": [...],
"local_checks": [...],
"completion_signal": "...",
"validation_hint": "..."
}
}
All comments must use the structured format:
{
"id": "C1",
"timestamp": "2026-01-30T10:00:00Z",
"author": "macos-developer-agent",
"type": "note",
"content": "Comment text here"
}
Valid comment types: question, decision, blocker, note, review, handoff, approval, rejection
Valid author values: pm-agent, staff-engineer-agent, macos-developer-agent, qa-agent, security-agent, build-engineer-agent, designer-agent, data-architect-agent, planning-agent, human
Workflow state is tracked in dedicated metadata fields, not labels.
approval Field (All Types)"pending" - Needs human approval"approved" - Work can beginblocked Field (All Types)true - Blocked by external factorfalse - No blockersreview_stage Field (Stories/Epics Only -- NOT Tasks)"code-review" - Ready for Staff Engineer review"qa" - Ready for QA testing"security" - Ready for security review"product-review" - Ready for PM sign-offnull - Not in review (initial or completed)review_result Field (Stories/Epics Only -- NOT Tasks)"awaiting" - Waiting for reviewer"rejected" - Reviewer found issuesnull - Not in review (initial or completed)labels Field (All Types)["infrastructure", "phase-1", "ui"])For tasks, these fields have been renamed:
| Old Name (v1.0) | New Name (v2.0) | Notes |
|-----------------|-----------------|-------|
| acceptance_criteria | local_checks | Tasks only; Stories/Epics keep acceptance_criteria |
| subtasks | checklist | Granular steps within task |
| verify | validation_hint | How to verify completion |
| definition_of_done | (removed) | Tasks don't have DoD; it's repo-level |
For epics, these fields have been changed:
| Old Name (v1.0) | New Name (v2.0) | Notes |
|-----------------|-----------------|-------|
| timeline | execution_plan | AI-oriented sequencing |
| size, estimated_hours, estimated_days | estimate | Unified estimate object |
| git_setup | (removed) | Git commands are standard |
| tech_spec_lines, data_schema_lines | references | Section anchors, not lines |
schema_version: "2.0" is setlocal_checks (min 3), checklist (min 2), completion_signal, validation_hintacceptance_criteria (min 3), set epic_id, add definition_of_doneacceptance_criteria (min 5), execution_plan, estimate, definition_of_donetesting
XCTest patterns for macOS Swift apps. Unit tests, async tests, Core Data tests, mock patterns, and assertion reference. Use when writing or reviewing tests.
tools
How to transition workflow state between review stages. Rules for setting review_stage and review_result fields on Stories and Epics.
documentation
Comment structure and rules for task workflow updates. Use when adding any comment to a task during implementation, review, or fix cycles.
testing
Validate task/story/epic/bug/techdebt metadata against schema v2.0. Run after TaskCreate or TaskUpdate to verify compliance. Returns pass/fail with actionable details.