Manage implementation tasks with sequential sub-steps within a plan
Scanned 5/31/2026
Install via CLI
openskills install diegosouzapw/awesome-omni-skill---
name: manage-tasks
description: Manage implementation tasks with sequential sub-steps within a plan
user-invocable: false
allowed-tools: Read, Glob, Bash
---
# Manage Tasks Skill
Manage implementation tasks with sequential sub-steps within a plan. Each task references deliverables from the solution document and contains ordered steps for execution.
> **Implementation Details**: See [design-for-manage-tasks.md](/.plan/task-management/design-for-manage-tasks.md) for the complete specification including file format, all commands, parameters, and validation rules.
## What This Skill Provides
- Individual TOON file storage for each task
- Sequential, immutable numbering (TASK-1, TASK-2, etc.)
- Deliverable references (M:N relationship to solution_outline.md)
- Delegation context (skill + workflow for execution)
- Verification commands and criteria
- Step management with status tracking
- Simple execution loop via `next` query
## When to Activate This Skill
Activate this skill when:
- Creating or managing implementation tasks for a plan
- Querying next actionable task/step
- Marking steps as started/completed/skipped
- Tracking implementation progress
---
## Storage Location
Tasks are stored in the plan directory:
```
{plan_dir}/tasks/
TASK-001-IMPL.toon
TASK-002-IMPL.toon
TASK-003-FIX.toon
```
**Filename format**: `TASK-{NNN}-{TYPE}.toon` where TYPE is: IMPL, FIX, SONAR, PR, LINT, SEC, DOC
---
## File Format (Summary)
```toon
number: 1
title: Update misc agents to TOON output
status: pending
phase: 5-execute
domain: plan-marshall-plugin-dev
profile: implementation
origin: plan
created: 2025-12-02T10:30:00Z
updated: 2025-12-02T10:30:00Z
skills:
- pm-plugin-development:plugin-maintain
- pm-plugin-development:plugin-architecture
deliverables[3]:
- 1
- 2
- 4
depends_on: TASK-1, TASK-2
description: |
Migrate miscellaneous agents from JSON to TOON output format.
domain: plan-marshall-plugin-dev
profile: implementation
type: IMPL
origin: plan
steps[3]{number,title,status}:
1,pm-plugin-development/agents/tool-coverage-agent.md,pending
2,pm-dev-builder/agents/gradle-builder.md,pending
3,pm-dev-frontend/commands/js-generate-coverage.md,pending
verification:
commands[1]:
- grep -L '```json' {files} | wc -l
criteria: No JSON blocks remain
manual: false
current_step: 1
```
**New Fields**:
| Field | Type | Description |
|-------|------|-------------|
| `domain` | string | Task domain (arbitrary string, e.g., java, javascript, my-domain) |
| `profile` | string | Task profile (arbitrary string, e.g., `implementation`, `testing`) |
| `type` | string | Task type for filename: `IMPL`, `FIX`, `SONAR`, `PR`, `LINT`, `SEC`, `DOC` |
| `skills` | list | Pre-resolved skills for task execution |
| `origin` | string | Task origin: `plan` (from task-plan phase) or `fix` (from verify) |
---
## Operations
Script: `pm-workflow:manage-tasks:manage-tasks`
| Command | Parameters | Description |
|---------|------------|-------------|
| `add` | `--plan-id` + stdin | Add a new task (reads definition from stdin) |
| `update` | `--plan-id --number [--title] [--description] [--depends-on] [--status] [--domain] [--profile] [--skills] [--deliverables]` | Update task metadata |
| `remove` | `--plan-id --number` | Remove a task |
| `list` | `--plan-id [--status] [--phase] [--deliverable] [--ready]` | List all tasks |
| `get` | `--plan-id --number` | Get single task details |
| `next` | `--plan-id [--phase] [--include-context] [--ignore-deps]` | Get next pending task/step |
| `tasks-by-domain` | `--plan-id --domain` | List tasks filtered by domain |
| `tasks-by-profile` | `--plan-id --profile` | List tasks filtered by profile |
| `next-tasks` | `--plan-id` | Get all tasks ready for parallel execution |
| `step-start` | `--plan-id --task --step` | Mark step as in_progress |
| `step-done` | `--plan-id --task --step` | Mark step as done |
| `step-skip` | `--plan-id --task --step [--reason]` | Skip a step |
| `add-step` | `--plan-id --task --title [--after]` | Add step to task |
| `remove-step` | `--plan-id --task --step` | Remove step from task |
### Add Command (stdin-based API)
The `add` command reads the task definition from stdin in TOON format. Only `--plan-id` is passed as a CLI argument.
**Why stdin?** Complex task definitions with verification commands containing shell metacharacters (pipes, wildcards, quotes) caused permission issues when passed as CLI arguments. The stdin approach avoids shell interpretation of these characters.
**Stdin format**:
```toon
title: My Task Title
deliverables: [1, 2, 3]
domain: plan-marshall-plugin-dev
profile: implementation
type: IMPL
phase: 5-execute
origin: plan
description: |
Multi-line task description here.
Can include any characters.
skills:
- pm-plugin-development:plugin-maintain
- pm-plugin-development:plugin-architecture
steps:
- First step to execute
- Second step to execute
- Third step to execute
depends_on: none
verification:
commands:
- grep -l '```json' marketplace/bundles/*.md | wc -l
- mvn verify
criteria: All grep commands return 0 (no JSON blocks remain)
manual: false
```
**Required fields**: `title`, `deliverables`, `domain`, `profile`, `skills`, `steps`
**Optional fields**: `phase` (default: execute), `description`, `depends_on`, `verification`, `origin` (default: plan)
**Field values**:
- `deliverables`: Array of integers `[1, 2, 3]`
- `domain`: Domain from references.toon (e.g., `java`, `javascript`, `plan-marshall-plugin-dev`)
- `profile`: Arbitrary profile key from marshal.json (e.g., `implementation`, `testing`, `architecture`)
- `skills`: Array of `bundle:skill` format strings
- `phase`: One of `init`, `outline`, `plan`, `execute`, `finalize`
- `depends_on`: `none` or task references like `TASK-1, TASK-2`
- `origin`: `plan` (from task-plan phase) or `fix` (from verify phase)
### List/Next Filters
| Parameter | Description |
|-----------|-------------|
| `--phase` | Filter by plan phase (init/outline/plan/execute/finalize) |
| `--deliverable` | Filter by deliverable number |
| `--ready` | Only tasks with satisfied dependencies |
| `--ignore-deps` | (next only) Ignore dependency constraints |
---
## Quick Examples
### Add a task
```bash
python3 .plan/execute-script.py pm-workflow:manage-tasks:manage-tasks add \
--plan-id my-feature <<'EOF'
title: Update misc agents to TOON
deliverables: [1, 2, 4]
domain: java
description: |
Migrate miscellaneous agents from JSON to TOON output format.
steps:
- file1.md
- file2.md
- file3.md
verification:
commands:
- mvn verify
criteria: Build passes
EOF
```
### Add a task with dependencies
```bash
python3 .plan/execute-script.py pm-workflow:manage-tasks:manage-tasks add \
--plan-id my-feature <<'EOF'
title: Write integration tests
deliverables: [3]
domain: java-testing
description: Add integration tests for new endpoint
steps:
- Create test class
- Add test methods
- Run tests
depends_on: TASK-1, TASK-2
verification:
commands:
- mvn verify -Pintegration
criteria: All tests pass
EOF
```
### Add a task with complex verification commands (shell metacharacters)
```bash
python3 .plan/execute-script.py pm-workflow:manage-tasks:manage-tasks add \
--plan-id migrate-json-to-toon <<'EOF'
title: Migrate agent outputs to TOON
deliverables: [1, 2, 3]
domain: plan-marshall-plugin-dev
description: |
Update agents to use TOON format instead of JSON.
steps:
- Update java-implement-agent.md
- Update java-verify-agent.md
- Update gradle-builder.md
verification:
commands:
- grep -l '```json' marketplace/bundles/pm-dev-java/agents/*.md | wc -l
- grep -l '```json' marketplace/bundles/pm-dev-builder/agents/*.md | wc -l
criteria: All grep commands return 0 (no JSON blocks remain)
EOF
```
### Get next task/step (respects dependencies)
```bash
python3 .plan/execute-script.py pm-workflow:manage-tasks:manage-tasks next \
--plan-id my-feature
```
### Get next task in specific phase
```bash
python3 .plan/execute-script.py pm-workflow:manage-tasks:manage-tasks next \
--plan-id my-feature \
--phase 5-execute
```
### List ready tasks only
```bash
python3 .plan/execute-script.py pm-workflow:manage-tasks:manage-tasks list \
--plan-id my-feature \
--ready
```
### Mark step done
```bash
python3 .plan/execute-script.py pm-workflow:manage-tasks:manage-tasks step-done \
--plan-id my-feature \
--task 2 \
--step 3
```
---
## Integration Points
### With task-plan-agent
Task-plan agents create tasks during plan refinement using heredoc:
```bash
python3 .plan/execute-script.py pm-workflow:manage-tasks:manage-tasks add \
--plan-id {plan_id} <<'EOF'
title: {task_title}
deliverables: [{n1}, {n2}]
domain: {domain}
steps:
- {step1}
- {step2}
...
EOF
```
### With plan-execute
Plan-execute iterates through tasks:
```
LOOP:
1. manage-tasks next --plan-id {plan_id}
2. IF no next: DONE
3. SPAWN implement agent
4. CONTINUE
```
### With implement-agent
Implement agents execute steps:
```
1. manage-tasks get --plan-id {plan_id} --number {N}
2. FOR EACH step: step-start → execute → step-done
3. RUN verification
```
---
## Deliverable-to-Task Relationship
Tasks reference deliverables from `solution_outline.md` using the `deliverables` field in stdin.
| Pattern | Description | Example |
|---------|-------------|---------|
| 1:1 | One task per deliverable | `deliverables: [1]` - Task implements deliverable 1 |
| N:1 | Multiple deliverables in one task | `deliverables: [1, 2, 3]` - Task implements deliverables 1, 2, 3 |
| 1:N | One deliverable split across tasks | TASK-1 and TASK-2 both have `deliverables: [1]` |
**When to use N:1**: Group related deliverables that share implementation context.
**When to use 1:N**: Split large deliverables into phased implementation (e.g., init task, implement task, verify task).
---
## Dependency Management
Tasks can depend on other tasks using the `depends_on` field in stdin:
```yaml
# Task 3 waits for Task 1 and Task 2 to complete
depends_on: TASK-1, TASK-2
# No dependencies
depends_on: none
```
**Dependency enforcement**:
- `next` command only returns tasks with satisfied dependencies
- Use `--ignore-deps` to bypass dependency checking
- Use `--ready` filter to list only ready tasks
**Blocked output**: When tasks are blocked by dependencies, `next` returns:
```toon
next: null
blocked_tasks[2]{number,title,waiting_for}:
1,Write tests,TASK-3
2,Deploy,TASK-3, TASK-4
```
---
## Phase Filtering
Tasks belong to plan phases: `1-init`, `2-refine`, `3-outline`, `4-plan`, `5-execute`, `6-verify`, `7-finalize`
**Filter by phase**:
```bash
# List execute phase tasks only
--phase 5-execute
# Get next task in verify phase
next --phase 6-verify
# Get next task in finalize phase
next --phase 7-finalize
```
**Phase purpose**:
- `init`: Setup tasks (create directories, configs)
- `outline`: Solution outline creation
- `plan`: Task planning and skill resolution
- `execute`: Implementation tasks (code changes)
- `verify`: Quality verification tasks (build, lint, tests)
- `finalize`: Shipping tasks (commit, PR, knowledge capture)
---
## Status Model
**Task Status**: `pending` → `in_progress` → `done` (or `blocked`)
**Step Status**: `pending` → `in_progress` → `done` (or `skipped`)
---
## Related Documents
- [design-for-manage-tasks.md](/.plan/task-management/design-for-manage-tasks.md) - Complete implementation specification
- [design-for-task-planning.md](/.plan/task-management/design-for-task-planning.md) - Task-plan agent workflows
- [architecture.md](/.plan/task-management/architecture.md) - Core concepts
No comments yet. Be the first to comment!