Generates parallelizable task lists from specs. Breaks specs into atomic, prioritized tasks with dependencies. Use when you have a spec and need tasks, implementation breakdown, or a work plan.
Argument: $ARGUMENTS
| Command | Behavior |
|---|---|
/task list | List all task files with spec, sessions, tasks, progress |
/task {spec-name-or-id} | Generate tasks from approved spec |
If $ARGUMENTS is list:
.otto/tasks/*.jsonspec_path to get the name from frontmatter)| Name | ID | Sessions | Tasks | Progress |
|------|-----|----------|-------|----------|
| Design Skill | design-skill-a1b2 | 3 | 12 | 4/12 (33%) |
/task <spec-name>Usage: /task <spec-name-or-id>
.otto/specs/$ARGUMENTS.md (exact ID match).otto/specs/*.md and read frontmatter of each:
name field (case-insensitive substring)AskUserQuestion to disambiguate, showing name and ID for each/spec list to see available specs."Each task should be an atomic unit of work:
depends_on when task truly cannot start without anotherResolve the spec argument (see Resolve Spec Argument above), then read the spec file.
If not found after resolution, list available specs:
ls .otto/specs/*.md 2>/dev/null
If spec status is not "approved", report: "Spec has status '{status}'. Only approved specs can generate tasks."
Break spec into discrete, implementable tasks following the design principles above.
Assign priorities:
Assign task type:
frontend - UI components, styling, client-side state, React/Vue/etc., browser APIsbackend - APIs, database, server logic, authentication, infrastructureGroup related tasks into sessions — units of work that can be completed in one agent session.
Grouping criteria:
Session sizing: 2-5 tasks per session (minimum 1)
Session dependencies:
Write to .otto/tasks/{spec-id}.json:
{
"spec_id": "{spec-id}",
"spec_path": ".otto/specs/{spec-id}.md",
"sessions": [
{
"id": "S1",
"title": "Session title",
"status": "pending",
"priority": 0,
"depends_on": [],
"task_ids": ["1", "2"]
}
],
"tasks": [
{
"id": "1",
"title": "Task title",
"description": "Success: [done condition]. Files: [paths]. Scope: [estimate]",
"status": "pending",
"priority": 1,
"type": "frontend | backend",
"depends_on": [],
"session_id": "S1"
}
]
}
Launch principal-engineer subagent with Task tool (forked context):
Review Criteria:
Finding format (P0 = critical, P1 = important, P2 = minor):
### [P{0-2}] {title}
**Tasks:** {task IDs affected}
**Issue:** {what's wrong}
**Suggestion:** {split, merge, reorder, add dependency}
**Alternatives:** {if non-obvious, options}
Wait for review to complete.
If no findings, skip to step 6.
For each finding (highest priority first):
AskUserQuestion with "Accept", "Reject", "Modify"AskUserQuestion with the optionsAfter processing all findings, continue to step 6.
Show sessions with nested task tables:
Proposed sessions for {spec-name}:
## Session S1: {session-title} (P{priority})
| ID | Title | Type | Priority | Depends On |
|----|-------|------|----------|------------|
| 1 | Setup project | backend | P0 | - |
| 2 | Core types | backend | P0 | 1 |
## Session S2: {session-title} (P{priority}, depends on S1)
| ID | Title | Type | Priority | Depends On |
|----|-------|------|----------|------------|
| 3 | Core feature | frontend | P1 | 2 |
| 4 | Feature tests | frontend | P1 | 3 |
Note parallelism:
Use AskUserQuestion with options:
Revise until approved.
Report: "Created {n} tasks in {m} sessions for {spec-name}"
Offer to start:
"Run
/nextto implement the first session, or/next batchto run all unblocked sessions in parallel."