home / skills / oimiragieo / agent-studio / task-breakdown

task-breakdown skill

/.claude/skills/task-breakdown

This skill translates implementation plans into structured Epic, Story, and Task hierarchies with enablers, priorities, and automatic TaskCreate integration.

npx playbooks add skill oimiragieo/agent-studio --skill task-breakdown

Review the files below or copy the command above to add this skill to your agents.

Files (1)
SKILL.md
22.7 KB
---
name: task-breakdown
description: Break down implementation plans into organized task lists using Epic → Story → Task hierarchy with Enabler support, P1/P2/P3 prioritization, and TaskCreate integration
version: 1.0.0
model: sonnet
invoked_by: both
user_invocable: true
tools: [Read, Write, Skill, TaskCreate, TaskUpdate, TaskList, Grep, Glob]
args: '<plan-file> [--create-tasks] [--output <path>]'
best_practices:
  - Always identify Enablers first (shared infrastructure that blocks all stories)
  - Use P1/P2/P3 prioritization (P1 = MVP must-haves)
  - Invoke template-renderer for consistent task document generation
  - Create TaskCreate calls for all atomic tasks with proper dependencies
  - Validate acceptance criteria are testable and measurable
  - Ensure task IDs follow convention (ENABLER-X.Y, P1-X.Y.Z, P2-X.Y.Z, P3-X.Y.Z)
error_handling: strict
streaming: not_supported
---

# Task Breakdown Skill

<identity>
Task Breakdown Skill - Transforms implementation plans into structured task lists using Epic → Story → Task hierarchy (ADR-045). Supports Enabler tasks for shared infrastructure, P1/P2/P3 prioritization (MoSCoW method), and automatic TaskCreate integration for tracking.
</identity>

<capabilities>
- Parse implementation plans and extract phases/milestones
- Identify Enabler tasks (shared infrastructure that blocks all user stories)
- Organize tasks by Epic → User Story → Task hierarchy
- Apply P1/P2/P3 prioritization (Must/Should/Could have)
- Generate acceptance criteria for user stories
- Calculate dependencies and blockers (Enablers → P1 → P2 → P3)
- Invoke template-renderer to create structured task documents
- Create TaskCreate calls for all atomic tasks with proper metadata
- Validate task completeness and dependency integrity
- Support SAFe/Azure DevOps/Jira task organization patterns
</capabilities>

## Purpose

Break down high-level implementation plans into actionable task lists with proper user story organization, enabling:

1. **Structured Planning**: Epic → Story → Task hierarchy with clear dependencies
2. **Infrastructure First**: Enabler tasks completed before user-facing work
3. **Priority-Driven**: P1 (MVP) → P2 (Nice-to-Have) → P3 (Polish) execution order
4. **Acceptance Driven**: Each story has testable acceptance criteria
5. **Tracking Integration**: Automatic TaskCreate for all tasks with proper metadata

## When to Use

Invoke this skill after plan-generator creates an implementation plan and before development starts:

```javascript
// After plan-generator completes
Skill({
  skill: 'task-breakdown',
  args: '.claude/context/plans/my-feature-plan.md --create-tasks --output .claude/context/artifacts/tasks/my-feature-tasks.md',
});
```

**Use when:**

- Plan-generator has created a multi-phase implementation plan
- You need to convert plan phases into trackable tasks
- User stories need to be prioritized (P1/P2/P3)
- Shared infrastructure (Enablers) needs to be identified
- TaskCreate calls are needed for task tracking system

**Skip when:**

- Plan is already in task format (no conversion needed)
- Single-phase simple task (directly use TaskCreate)
- Exploratory research (use research-synthesis instead)

## Iron Law: Enablers Before Stories

**CRITICAL**: Enabler tasks (shared infrastructure) MUST complete before any user story begins.

```
WRONG (concurrent):
ENABLER-1.1 ─┐
             ├──→ [ALL START TOGETHER - RACE CONDITIONS]
P1-1.1.1 ────┘

CORRECT (sequential):
ENABLER-1.1 → ENABLER-1.2 → [ALL ENABLERS DONE] → P1-1.1.1 → P1-1.1.2 → ...
```

**Why**: Enablers provide shared infrastructure (database schema, authentication middleware, shared utilities). Starting user stories before enablers complete causes:

- Duplicate infrastructure work across stories
- Breaking changes when enabler completes late
- Integration bugs from inconsistent infrastructure

**Task Dependencies**: All P1 story tasks MUST have `addBlockedBy: ['ENABLER-1.1', 'ENABLER-1.2', ...]`

## Workflow

### Step 1: Read Plan and Extract Structure

Read the implementation plan created by plan-generator:

```javascript
const plan = Read('.claude/context/plans/my-feature-plan.md');

// Extract key information:
// - Plan title and overview
// - Executive summary
// - Total phases and milestones
// - Dependencies between phases
// - Key deliverables per phase
// - Estimated effort per phase
```

Parse the plan structure:

- Identify all phases (Phase 0: Research, Phase 1: Foundation, Phase 2: Core Features, etc.)
- Extract tasks from each phase
- Identify parallelizable work (PARALLEL_OK flags)
- Note dependencies between phases

### Step 2: Identify Enablers (Shared Infrastructure)

**CRITICAL**: Scan phases for infrastructure work that blocks all user stories.

Enabler Indicators:

- Database schema/migrations
- Authentication/authorization middleware
- Shared utility libraries
- API scaffolding/routing setup
- Configuration/environment setup
- Deployment infrastructure (Docker, CI/CD)

**Example Enablers**:

```
Phase 1: Foundation
├── Task 1.1: Create user database schema → ENABLER-1.1
├── Task 1.2: Implement JWT token service → ENABLER-1.2
└── Task 1.3: Set up authentication middleware → ENABLER-1.3

Reason: All user stories need these for authentication
```

**Enabler Extraction Algorithm**:

1. Find tasks in "Foundation" or "Infrastructure" phases
2. Check if task description includes: schema, middleware, shared, infrastructure, setup, config
3. Verify task is referenced by multiple user stories
4. Mark as `[ENABLER]` and assign ID: `ENABLER-X.Y`

### Step 3: Extract User Stories from Plan Phases

Convert plan phases into user stories using the "As a... I want... So that..." format.

**Phase → Story Mapping**:

```
Plan Phase 2: Core Features
├── Milestone 2.1: User login functionality
│   ├── Task: Create login API endpoint
│   └── Task: Build login form UI
└── Milestone 2.2: User registration

↓ CONVERT TO ↓

User Story 1.1: User Login with Email/Password [P1]
As a registered user,
I want to log in with my email and password,
So that I can access my account securely.

Tasks:
- [P1-1.1.1] Create login API endpoint
- [P1-1.1.2] Build login form UI
```

**Story Extraction Rules**:

1. Each milestone becomes a user story (if user-facing)
2. Combine related tasks under the same story
3. Generate user role, capability, business value
4. Extract acceptance criteria from plan verification steps
5. Calculate estimated effort (sum of task efforts)

### Step 4: Apply P1/P2/P3 Prioritization (MoSCoW Method)

Classify each user story by priority:

| Priority              | MoSCoW      | Meaning                             | Criteria                                                              |
| --------------------- | ----------- | ----------------------------------- | --------------------------------------------------------------------- |
| **P1 (MVP)**          | Must Have   | Critical for minimum viable product | Core functionality, user login, data CRUD, essential workflows        |
| **P2 (Nice-to-Have)** | Should Have | Important but not blocking          | Password reset, profile editing, advanced search, email notifications |
| **P3 (Polish)**       | Could Have  | Refinement and optimization         | Remember me checkbox, avatars, dark mode, performance tweaks          |

**Prioritization Algorithm**:

```javascript
function prioritizeStory(story, plan) {
  // P1 indicators (MVP)
  if (
    story.includes('authentication') ||
    story.includes('core data') ||
    story.includes('essential workflow')
  ) {
    return 'P1';
  }

  // P3 indicators (polish)
  if (
    story.includes('optimization') ||
    story.includes('polish') ||
    story.includes('nice-to-have')
  ) {
    return 'P3';
  }

  // Default to P2
  return 'P2';
}
```

**Priority Assignment Rules**:

- Foundation/infrastructure → Enabler (not P1/P2/P3)
- Core user flows → P1
- User account management (beyond login) → P2
- UI polish, performance optimizations → P3
- Check plan's "Critical Path" section for P1 hints

### Step 5: Generate Acceptance Criteria

For each user story, create testable acceptance criteria:

**Acceptance Criteria Formula**:

```
- [ ] {User action} results in {expected outcome}
- [ ] {Edge case} handled with {specific behavior}
- [ ] {Performance metric} meets {threshold}
- [ ] {Security requirement} enforced
```

**Examples**:

```markdown
User Story: User Login with Email/Password [P1]

Acceptance Criteria:

- [ ] User can submit email and password via login form
- [ ] Valid credentials return JWT token and redirect to dashboard
- [ ] Invalid credentials show error message "Invalid email or password"
- [ ] Failed login attempts are logged for security audit
- [ ] Login response time < 200ms (p95)
```

**Extraction from Plan**:

1. Look for plan's "Verification Commands" per task → convert to acceptance criteria
2. Extract performance requirements from plan overview
3. Add security criteria for auth/data handling stories
4. Include error handling criteria for all user actions

### Step 6: Assign Task IDs and Dependencies

Use standardized task ID convention:

**Task ID Format**:

- **Enablers**: `ENABLER-X.Y` (e.g., `ENABLER-1.1`, `ENABLER-1.2`)
  - X = Enabler group number
  - Y = Task number within group
- **P1 Tasks**: `P1-X.Y.Z` (e.g., `P1-1.1.1`, `P1-1.1.2`)
  - X = Story number within P1
  - Y = Substory (usually 1 unless nested)
  - Z = Task number within story
- **P2 Tasks**: `P2-X.Y.Z` (same structure as P1)
- **P3 Tasks**: `P3-X.Y.Z` (same structure as P1)

**Dependency Rules**:

1. **All P1 stories** depend on **all Enablers**
2. **P2 stories** depend on **P1 stories** they extend
3. **P3 stories** depend on **P1 or P2** they enhance
4. **Tasks within a story** are sequential by default (each depends on previous)

**Example Dependencies**:

```javascript
// Enabler tasks (no dependencies)
TaskCreate({ subject: 'ENABLER-1.1: Create user database schema', ... });
TaskCreate({ subject: 'ENABLER-1.2: Implement JWT token service', ... });

// P1 story tasks (blocked by enablers)
TaskCreate({
  subject: 'P1-1.1.1: Create login API endpoint',
  metadata: { priority: 'p1', story: '1.1' }
});
TaskUpdate({ taskId: 'P1-1.1.1', addBlockedBy: ['ENABLER-1.1', 'ENABLER-1.2'] });

// P1 story task (blocked by previous task in same story)
TaskCreate({
  subject: 'P1-1.1.2: Build login form UI',
  metadata: { priority: 'p1', story: '1.1' }
});
TaskUpdate({ taskId: 'P1-1.1.2', addBlockedBy: ['P1-1.1.1'] });

// P2 story task (blocked by P1 story it extends)
TaskCreate({
  subject: 'P2-2.1.1: Implement password reset token generation',
  metadata: { priority: 'p2', story: '2.1' }
});
TaskUpdate({ taskId: 'P2-2.1.1', addBlockedBy: ['P1-1.1.1'] }); // Needs auth infrastructure
```

### Step 7: Invoke Template Renderer

Use template-renderer to generate the structured task document:

```javascript
// Build token map from extracted data
const tokens = {
  // Header metadata
  FEATURE_NAME: extractFeatureName(plan),
  VERSION: '1.0.0',
  AUTHOR: 'Claude',
  DATE: new Date().toISOString().split('T')[0],
  STATUS: 'draft',
  PRIORITY: determinePriority(plan),
  ESTIMATED_EFFORT: calculateTotalEffort(plan),

  // Overview
  FEATURE_DISPLAY_NAME: extractDisplayName(plan),
  FEATURE_DESCRIPTION: plan.executiveSummary,
  BUSINESS_VALUE: extractBusinessValue(plan),
  USER_IMPACT: extractUserImpact(plan),

  // Epic level
  EPIC_NAME: extractEpicName(plan),
  EPIC_GOAL: plan.overview.goal,
  SUCCESS_CRITERIA: extractSuccessCriteria(plan),

  // Enablers (repeat for each enabler)
  ENABLER_1_NAME: 'Authentication Infrastructure',
  ENABLER_1_PURPOSE: 'Set up shared authentication middleware and database schema',
  ENABLER_1_EFFORT: '2 days',

  // User stories (repeat for each story)
  // P1 stories, P2 stories, P3 stories

  // Summary counts
  ENABLER_COUNT: enablers.length,
  P1_STORY_COUNT: p1Stories.length,
  P2_STORY_COUNT: p2Stories.length,
  P3_STORY_COUNT: p3Stories.length,
  TOTAL_STORIES: allStories.length,
  TOTAL_TASKS: allTasks.length,
  TOTAL_EFFORT: totalEffort,
};

// Invoke template-renderer
Skill({
  skill: 'template-renderer',
  args: {
    templateName: 'tasks-template',
    outputPath: outputPath,
    tokens: tokens,
  },
});
```

### Step 8: Create TaskCreate Calls (Optional --create-tasks)

If `--create-tasks` flag is provided, generate TaskCreate calls for all tasks:

```javascript
// Phase 1: Create all Enabler tasks
enablers.forEach(enabler => {
  TaskCreate({
    subject: `${enabler.id}: ${enabler.title}`,
    description: enabler.description,
    activeForm: enabler.activeForm,
    metadata: {
      type: 'enabler',
      blocksAll: true,
      estimatedEffort: enabler.effort,
      outputArtifacts: enabler.outputs,
    },
  });
});

// Phase 2: Create P1 tasks with Enabler dependencies
p1Tasks.forEach(task => {
  TaskCreate({
    subject: `${task.id}: ${task.title}`,
    description: task.description,
    activeForm: task.activeForm,
    metadata: {
      priority: 'p1',
      story: task.storyId,
      estimatedEffort: task.effort,
      outputArtifacts: task.outputs,
    },
  });

  // Block P1 tasks on all enablers
  TaskUpdate({
    taskId: task.id,
    addBlockedBy: enablers.map(e => e.id),
  });

  // Block on previous task in same story
  if (task.previousTaskInStory) {
    TaskUpdate({
      taskId: task.id,
      addBlockedBy: [task.previousTaskInStory],
    });
  }
});

// Phase 3: Create P2 tasks
p2Tasks.forEach(task => {
  TaskCreate({
    subject: `${task.id}: ${task.title}`,
    description: task.description,
    activeForm: task.activeForm,
    metadata: {
      priority: 'p2',
      story: task.storyId,
      estimatedEffort: task.effort,
    },
  });

  // Block P2 on dependencies (usually P1 stories)
  TaskUpdate({
    taskId: task.id,
    addBlockedBy: task.dependencies,
  });
});

// Phase 4: Create P3 tasks (similar to P2)
```

**TaskCreate Best Practices**:

1. Always include `activeForm` (present continuous for spinner display)
2. Use metadata for priority, story ID, effort, outputs
3. Create tasks in dependency order (Enablers → P1 → P2 → P3)
4. Use TaskUpdate immediately after TaskCreate to set dependencies
5. Record task IDs in memory for verification

### Step 9: Validation and Verification

Run post-breakdown validation:

```bash
# Check no unresolved placeholders in task document
grep "{{" <output-file> && echo "ERROR: Unresolved tokens!" || echo "✓ All tokens resolved"

# Verify all P1 stories have acceptance criteria
grep -A 5 "## User Story.*\[P1\]" <output-file> | grep "Acceptance Criteria" || echo "WARNING: P1 missing acceptance criteria"

# Check task ID format
grep -E "(ENABLER-[0-9]+\.[0-9]+|P[123]-[0-9]+\.[0-9]+\.[0-9]+)" <output-file> || echo "WARNING: Invalid task IDs"

# Verify dependency integrity (if --create-tasks used)
TaskList() # Check all tasks created successfully
```

**Validation Checklist**:

- [ ] All `{{PLACEHOLDER}}` values replaced
- [ ] All enabler tasks identified and marked `[ENABLER]`
- [ ] User stories prioritized (P1 = MVP, P2 = Nice-to-Have, P3 = Polish)
- [ ] Task dependencies documented (blockedBy references)
- [ ] Acceptance criteria defined for each user story
- [ ] Task IDs follow convention (ENABLER-X.Y, P1-X.Y.Z)
- [ ] If `--create-tasks`: All TaskCreate calls successful
- [ ] Task summary table has correct counts

## Examples

### Example 1: Basic Task Breakdown (No TaskCreate)

```javascript
// After plan-generator creates a plan
Skill({
  skill: 'task-breakdown',
  args: '.claude/context/plans/auth-feature-plan.md --output .claude/context/artifacts/tasks/auth-tasks.md',
});

// Result: .claude/context/artifacts/tasks/auth-tasks.md created with:
// - 2 Enabler groups (database, authentication middleware)
// - 3 P1 user stories (login, logout, session management)
// - 2 P2 user stories (password reset, profile editing)
// - 1 P3 user story (remember me checkbox)
// - All tasks have IDs, descriptions, acceptance criteria
```

### Example 2: Task Breakdown with TaskCreate Integration

```javascript
// Generate task document AND create tasks in tracking system
Skill({
  skill: 'task-breakdown',
  args: '.claude/context/plans/api-feature-plan.md --create-tasks --output .claude/context/artifacts/tasks/api-tasks.md',
});

// Result:
// 1. Task document created at .claude/context/artifacts/tasks/api-tasks.md
// 2. TaskCreate calls executed for all tasks:
//    - ENABLER-1.1: Create API schema
//    - ENABLER-1.2: Set up API versioning
//    - P1-1.1.1: Create GET /users endpoint
//    - P1-1.1.2: Add authentication to GET /users
//    - ... (all tasks created)
// 3. Dependencies set via TaskUpdate
// 4. TaskList() shows all tasks ready for assignment
```

### Example 3: From Planner Agent

```javascript
// In planner agent workflow
// Step 1: Create implementation plan
Skill({
  skill: 'plan-generator',
  args: '--feature "User Authentication" --output .claude/context/plans/auth-plan.md',
});

// Step 2: Break down plan into tasks
Skill({
  skill: 'task-breakdown',
  args: '.claude/context/plans/auth-plan.md --create-tasks --output .claude/context/artifacts/tasks/auth-tasks.md',
});

// Step 3: Verify tasks created
TaskList(); // Shows all tasks with proper priorities and dependencies

// Step 4: Developer can now claim tasks in order:
// 1. Claim ENABLER-1.1 (no blockers)
// 2. After ENABLER-1.1 done, claim P1-1.1.1 (now unblocked)
// 3. Continue sequential execution
```

### Example 4: Manual Task Breakdown (CLI)

```bash
# Using skill via CLI
node .claude/skills/task-breakdown/scripts/main.cjs \
  --plan .claude/context/plans/feature-plan.md \
  --output ./tasks.md \
  --create-tasks

# Output:
# ✓ Plan parsed: 5 phases, 14 tasks extracted
# ✓ Identified 2 Enabler groups (4 tasks)
# ✓ Extracted 8 user stories (4 P1, 3 P2, 1 P3)
# ✓ Generated acceptance criteria for all stories
# ✓ Task document created: ./tasks.md
# ✓ Created 14 tasks in tracking system
# ✓ All dependencies configured
# → Next: TaskList() to view tasks
```

## Integration with Planner Agent

The task-breakdown skill is designed to be invoked by the planner agent after plan-generator:

**Planner Agent Workflow**:

```
1. [PLANNER] Invoke plan-generator → creates .claude/context/plans/feature-plan.md
2. [PLANNER] Invoke task-breakdown → creates .claude/context/artifacts/tasks/feature-tasks.md
3. [PLANNER] Review task breakdown for completeness
4. [PLANNER] If --create-tasks used: TaskList() to verify all tasks created
5. [PLANNER] Hand off to developer agent to claim first unblocked task
```

**Expected Output**:

```
[PLANNER] ✓ Plan created: auth-feature-plan.md (5 phases, 14 tasks)
[PLANNER] → Invoking task-breakdown...
[TASK-BREAKDOWN] ✓ Identified 2 Enabler groups (4 tasks)
[TASK-BREAKDOWN] ✓ Extracted 8 user stories (4 P1, 3 P2, 1 P3)
[TASK-BREAKDOWN] ✓ Task document created: auth-tasks.md
[TASK-BREAKDOWN] ✓ Created 14 tasks in tracking system
[PLANNER] → Verification: TaskList()
[PLANNER] ✓ All tasks visible, ready for development
[PLANNER] → Next: Developer claims ENABLER-1.1
```

## Task ID to TaskCreate Mapping

**How to convert task IDs to TaskCreate subject strings**:

```javascript
// Task ID in document: ENABLER-1.1
// TaskCreate subject: "ENABLER-1.1: Create user database schema"

// Task ID in document: P1-1.1.1
// TaskCreate subject: "P1-1.1.1: Create login API endpoint"

// Format: "{TASK_ID}: {TASK_TITLE}"
```

**Metadata to include**:

```javascript
TaskCreate({
  subject: 'ENABLER-1.1: Create user database schema',
  description:
    'Design and implement users table with email, password_hash, created_at, last_login columns. Create migration file.',
  activeForm: 'Creating user database schema',
  metadata: {
    type: 'enabler', // 'enabler' | 'p1' | 'p2' | 'p3'
    blocksAll: true, // Only for enablers
    priority: 'enabler', // 'enabler' | 'p1' | 'p2' | 'p3'
    story: null, // Story ID (e.g., '1.1') or null for enablers
    estimatedEffort: '4 hours', // From plan
    outputArtifacts: ['migration file', 'schema documentation'],
    verificationCommand: 'psql -c "\\d users"',
  },
});
```

## Best Practices

1. **Always identify Enablers first** - Shared infrastructure must complete before user stories
2. **Use P1 for MVP only** - P1 should be releasable minimum viable product
3. **Testable acceptance criteria** - Every criterion should be verifiable (e.g., "response time < 200ms")
4. **Follow task ID convention** - ENABLER-X.Y, P1-X.Y.Z, P2-X.Y.Z, P3-X.Y.Z
5. **Sequential task creation** - Create tasks in dependency order to avoid circular dependencies
6. **Invoke template-renderer** - Don't manually write task documents (use token replacement)
7. **Validate before TaskCreate** - Check task document completeness before creating tasks
8. **Use metadata extensively** - Include priority, story, effort, outputs in TaskCreate metadata
9. **Record task IDs** - Keep list of created task IDs in memory for verification

## Error Handling

**Missing Plan File**:

```
ERROR: Plan file not found: .claude/context/plans/missing-plan.md
Ensure plan-generator has run successfully before invoking task-breakdown.
```

**No User Stories Extracted**:

```
ERROR: No user stories extracted from plan
Plan may be too abstract. Ensure plan has concrete phases with tasks.
Check plan sections: Executive Summary, Implementation Phases, Key Deliverables.
```

**Invalid Task ID Format**:

```
ERROR: Invalid task ID format: "TASK-1.1"
Must use: ENABLER-X.Y for enablers, P1-X.Y.Z for P1 tasks
Example: ENABLER-1.1, P1-1.1.1, P2-2.1.3
```

**Circular Dependency Detected**:

```
ERROR: Circular dependency detected: P1-1.1.2 → P1-1.1.3 → P1-1.1.2
Fix: Ensure tasks within a story are sequential, not circular.
```

**TaskCreate Failed**:

```
ERROR: TaskCreate failed for P1-1.1.1
Reason: Task with same subject already exists
Solution: Check TaskList() for existing tasks before creating
```

## Memory Protocol (MANDATORY)

**Before starting:**

```bash
cat .claude/context/memory/learnings.md
```

Check for:

- Previously created task breakdowns
- Common task ID patterns for this project
- User preferences for prioritization
- Known issues with plan-generator output

**After completing:**

- New task breakdown created → Append to `.claude/context/memory/learnings.md`
  ```
  ## Task Breakdown: {feature-name} ({date})
  - Plan: {plan-file}
  - Output: {task-file}
  - Enablers: {count}
  - User Stories: P1={count}, P2={count}, P3={count}
  - Tasks Created: {yes/no}, Count={count}
  ```
- Issue found → Append to `.claude/context/memory/issues.md`
  ```
  ## Issue: {description} ({date})
  - Context: task-breakdown skill processing {plan-file}
  - Problem: {what went wrong}
  - Workaround: {how it was resolved}
  ```
- Decision made → Append to `.claude/context/memory/decisions.md`
  ```
  ## [ADR-XXX] {title}
  - Date: {date}
  - Context: {why decision was needed}
  - Decision: {what was decided}
  - Consequences: {impact}
  ```

> ASSUME INTERRUPTION: Your context may reset. If it's not in memory, it didn't happen.

Overview

This skill breaks high-level implementation plans into organized, trackable task lists using an Epic → Story → Task hierarchy. It identifies Enabler work, assigns P1/P2/P3 priorities, generates acceptance criteria, and can emit TaskCreate calls for automated tracking. The output is validation-ready and formatted for SAFe/Azure DevOps/Jira patterns.

How this skill works

The skill parses a plan file to extract phases, milestones, and tasks, then detects Enablers (shared infrastructure) and converts milestones into user stories with testable acceptance criteria. It assigns priority tags (P1/P2/P3), computes dependencies so Enablers block stories, renders a structured task document via template-renderer, and optionally issues TaskCreate and TaskUpdate calls with proper metadata.

When to use it

  • After plan-generator produces a multi-phase implementation plan and you need trackable work items.
  • When shared infrastructure must be completed before user-facing stories (Enabler-first workflows).
  • To convert milestones and phase tasks into Epic → Story → Task hierarchies with acceptance criteria.
  • When you need TaskCreate integration to push tasks into a tracking system automatically.
  • When prioritization (MVP vs nice-to-have vs polish) must be explicit and enforced.

Best practices

  • Always run Enabler detection first and block all P1 story tasks on listed Enablers.
  • Create tasks in dependency order: Enablers → P1 → P2 → P3, using TaskUpdate immediately after TaskCreate to set blockers.
  • Generate clear, testable acceptance criteria for every P1 story before creating tasks.
  • Include activeForm and metadata (priority, storyId, estimatedEffort, outputs) with each TaskCreate call.
  • Validate output tokens, task ID formats, and that all P1 stories have acceptance criteria before starting development.

Example use cases

  • Transform a multi-phase feature plan into an Epic with P1 user stories, enabler tasks, and TaskCreate calls for Azure DevOps.
  • Convert a foundation+core-features plan into prioritized tasks where database and auth enablers block all user flows.
  • Auto-generate acceptance criteria and sequential tasks for a login/registration milestone and push them into a tracker.
  • Split a large implementation into P1 MVP scope and P2/P3 follow-ups with explicit dependencies for release planning.
  • Validate that no P1 story starts before shared infrastructure is complete and produce a verification report.

FAQ

How does the skill identify Enabler tasks?

It scans foundation/infrastructure phases for keywords (schema, middleware, setup, config), checks cross-story references, and marks tasks referenced by multiple stories as Enablers.

Can it create tasks in an external tracker automatically?

Yes — with the --create-tasks flag the skill emits TaskCreate and TaskUpdate calls containing subject, description, activeForm, and metadata so tasks are created with correct blockers and IDs.