/next
Pick or implement the next task or session. Use when continuing work, picking the next task, or implementing tasks from a task list.
$ npx -y skills add brsbl/ottonomous --skill next --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
- Fires itselfAuto-invocation. Claude auto-loads it when your prompt matches the work.
- You can call itInvoke it directly when you want it.
- Slash command
/next
Context preview
The summary Claude sees to decide when to auto-load this skill.
Pick or implement the next task or session. Use when continuing work, picking the next task, or implementing tasks from a task list.
SKILL.md
next.SKILL.mdname: next
description: Pick or implement the next task or session. Use when continuing work, picking the next task, or implementing tasks from a task list.
argument-hint: [task | session | batch]
**Argument:** $ARGUMENTS
| Argument | Behavior | |----------|----------| | (none) or `task` | Select and implement next task (Section 2) | | `session` | Select and implement next session (Section 3) | | `batch` | Implement all highest-priority unblocked sessions (Section 4) | | `task status` | Select and report next task without implementing (Section 2, stop before implementation) | | `session status` | Select and report next session without implementing (Section 3, stop before implementation) |
**Always start with Section 1 (Find Tasks).**
---
1. Find Tasks
ls .otto/tasks/*.json 2>/dev/null
Read each file, check for pending sessions/tasks. For each task file, also read the corresponding spec file frontmatter to get the spec name.
**If no task files:** "No tasks found. Run `task <spec-name>` to generate."
**If multiple specs have pending work**, use an interactive prompt:
Multiple specs have pending work:
1. {spec-name} ({spec-id}): {n} sessions pending
2. {spec-name} ({spec-id}): {n} sessions pending
Which spec should I work on?Branch Check (Sections 2, 3, 4)
Before proceeding to any implementation section, check the current branch:
current_branch=$(git branch --show-current)
**If on `main` or `master`**, use an interactive prompt:
You're on '{current_branch}'. Create a feature branch or continue here?
1. Create branch: otto/{spec-id} (recommended)
2. Stay on {current_branch}If user picks 1, create the branch and continue. If 2, proceed as-is.
---
2. Select Task
Select the next task:
1. Filter to tasks with status "pending" 2. Filter to unblocked tasks (all `depends_on` tasks are "done") 3. Sort by priority (lower number = higher priority) 4. Tie-break by ID (lower ID first)
**If no unblocked tasks:**
| State | Message | |-------|---------| | All tasks "done" | "All tasks complete for {spec-name}!" | | Pending but blocked | "{n} tasks blocked. Waiting on: {blocker-ids}" |
**Report the selected task:**
Next task: {id}
Title: {title}
Priority: {priority}
Session: {session_id}If invoked with `status` suffix, stop here — do NOT implement.
Implement Task
1. Update task status to "in_progress" 2. Report: "Starting task {id}: {title}"
**Delegate to a subagent:**
- subagent role: `frontend-developer` (frontend tasks) or `backend-architect` (backend tasks), personas defined in `agents/`
- Include in prompt: task context + planning workflow (see below)
- Wait for subagent to complete
**Subagent prompt must include:**
## Task Context
- **Task:** {task title}
- **Description:** {task description}
- **Files:** {file list}
- **Done when:** {done condition}
- **Spec path:** {spec_path from task file}
## Required Workflow
**Always plan before implementing.** Simple tasks get simple plans.
### Phase 1: Plan
1. Read the spec's Technical Design section at {spec_path}
2. Explore relevant files to understand existing patterns
3. Write your implementation plan to `.otto/plans/task-{task_id}.md`:
- Describe your approach
- List files to modify and key changes
- Note any spec decisions that affect implementation
### Phase 2: Implement
4. Implement according to your plan
5. Verify the done condition is met
Keep the plan concise - it's for your reference and audit trail.**After subagent completes:**
- Update task status to "done"
- Check if all tasks in session are "done"; if so, mark session "done"
- Stage: `git add -u && git add .otto/`
- Commit: `git commit -m "otto: {spec-id} task {id} — {title}"`
Report: "Task {id} complete."
---
3. Select Session
Select the next session:
1. Filter to sessions with status "pending" 2. Filter to unblocked sessions (all `depends_on` sessions are "done") 3. Sort by priority (lower number = higher priority) 4. Tie-break by ID (S1 before S2)
**If no unblocked sessions:**
| State | Message | |-------|---------| | All sessions "done" | "All sessions complete for {spec-name}!" | | Pending but blocked | "{n} sessions blocked. Waiting on: {blocker-ids}" |
**Report the selected session:**
Next session: {id}
Title: {title}
Priority: {priority}
Tasks: {task_count}If invoked with `status` suffix, stop here — do NOT implement.
Implement Session
1. Update session status to "in_progress" 2. Report: "Starting session {id}: {title} ({n} tasks)"
**Delegate to a subagent:**
- subagent role: `frontend-developer` (frontend tasks) or `backend-architect` (backend tasks), personas defined in `agents/`
- Include in prompt: session context + planning workflow (see below)
- Subagent implements tasks sequentially, marking each "done" as completed
- Wait for subagent to complete
**Subagent prompt must include:**
## Session Context
- **Session:** {session title}
- **Tasks:** {task titles with descriptions}
- **Files:** {file lists from all tasks}
- **Done when:** {done conditions for each task}
- **Spec path:** {spec_path from task file}
## Required Workflow
**Always plan before implementing.** Simple tasks get simple plans.
### Phase 1: Plan
1. Read the spec's Technical Design section at {spec_path}
2. Explore relevant files to understand existing patterns
3. Write your implementation plan to `.otto/plans/{session_id}.md`:
- List each task you will implement
- For each task, describe: approach, files to modify, key changes
- Note any spec decisions that affect implementation
### Phase 2: Implement
4. Implement each task according to your plan
5. After each task: verify the done condition is met
6. Mark each task "done" as completed
Keep the plan concise - it's for your reference and audit trail.**After subagent completes:**
- Update session status to "done"
- Stage: `git add -u && git add .otto/`
- Commit: `git commit
Read more
name: next description: Pick or implement the next task or session. Use when continuing work, picking the next task, or implementing tasks from a task list. argument-hint: [task | session | batch]
**Argument:** $ARGUMENTS
| Argument | Behavior | |----------|----------| | (none) or `task` | Select and implement next task (Section 2) | | `session` | Select and implement next session (Section 3) | | `batch` | Implement all highest-priority unblocked sessions (Section 4) | | `task status` | Select and report next task without implementing (Section 2, stop before implementation) | | `session status` | Select and report next session without implementing (Section 3, stop before implementation) |
**Always start with Section 1 (Find Tasks).**
---
1. Find Tasks
ls .otto/tasks/*.json 2>/dev/null
Read each file, check for pending sessions/tasks. For each task file, also read the corresponding spec file frontmatter to get the spec name.
**If no task files:** "No tasks found. Run `task <spec-name>` to generate."
**If multiple specs have pending work**, use an interactive prompt:
Multiple specs have pending work:
1. {spec-name} ({spec-id}): {n} sessions pending
2. {spec-name} ({spec-id}): {n} sessions pending
Which spec should I work on?Branch Check (Sections 2, 3, 4)
Before proceeding to any implementation section, check the current branch:
current_branch=$(git branch --show-current)
**If on `main` or `master`**, use an interactive prompt:
You're on '{current_branch}'. Create a feature branch or continue here?
1. Create branch: otto/{spec-id} (recommended)
2. Stay on {current_branch}If user picks 1, create the branch and continue. If 2, proceed as-is.
---
2. Select Task
Select the next task:
1. Filter to tasks with status "pending" 2. Filter to unblocked tasks (all `depends_on` tasks are "done") 3. Sort by priority (lower number = higher priority) 4. Tie-break by ID (lower ID first)
**If no unblocked tasks:**
| State | Message | |-------|---------| | All tasks "done" | "All tasks complete for {spec-name}!" | | Pending but blocked | "{n} tasks blocked. Waiting on: {blocker-ids}" |
**Report the selected task:**
Next task: {id}
Title: {title}
Priority: {priority}
Session: {session_id}If invoked with `status` suffix, stop here — do NOT implement.
Implement Task
1. Update task status to "in_progress" 2. Report: "Starting task {id}: {title}"
**Delegate to a subagent:**
- subagent role: `frontend-developer` (frontend tasks) or `backend-architect` (backend tasks), personas defined in `agents/`
- Include in prompt: task context + planning workflow (see below)
- Wait for subagent to complete
**Subagent prompt must include:**
## Task Context
- **Task:** {task title}
- **Description:** {task description}
- **Files:** {file list}
- **Done when:** {done condition}
- **Spec path:** {spec_path from task file}
## Required Workflow
**Always plan before implementing.** Simple tasks get simple plans.
### Phase 1: Plan
1. Read the spec's Technical Design section at {spec_path}
2. Explore relevant files to understand existing patterns
3. Write your implementation plan to `.otto/plans/task-{task_id}.md`:
- Describe your approach
- List files to modify and key changes
- Note any spec decisions that affect implementation
### Phase 2: Implement
4. Implement according to your plan
5. Verify the done condition is met
Keep the plan concise - it's for your reference and audit trail.**After subagent completes:**
- Update task status to "done"
- Check if all tasks in session are "done"; if so, mark session "done"
- Stage: `git add -u && git add .otto/`
- Commit: `git commit -m "otto: {spec-id} task {id} — {title}"`
Report: "Task {id} complete."
---
3. Select Session
Select the next session:
1. Filter to sessions with status "pending" 2. Filter to unblocked sessions (all `depends_on` sessions are "done") 3. Sort by priority (lower number = higher priority) 4. Tie-break by ID (S1 before S2)
**If no unblocked sessions:**
| State | Message | |-------|---------| | All sessions "done" | "All sessions complete for {spec-name}!" | | Pending but blocked | "{n} sessions blocked. Waiting on: {blocker-ids}" |
**Report the selected session:**
Next session: {id}
Title: {title}
Priority: {priority}
Tasks: {task_count}If invoked with `status` suffix, stop here — do NOT implement.
Implement Session
1. Update session status to "in_progress" 2. Report: "Starting session {id}: {title} ({n} tasks)"
**Delegate to a subagent:**
- subagent role: `frontend-developer` (frontend tasks) or `backend-architect` (backend tasks), personas defined in `agents/`
- Include in prompt: session context + planning workflow (see below)
- Subagent implements tasks sequentially, marking each "done" as completed
- Wait for subagent to complete
**Subagent prompt must include:**
## Session Context
- **Session:** {session title}
- **Tasks:** {task titles with descriptions}
- **Files:** {file lists from all tasks}
- **Done when:** {done conditions for each task}
- **Spec path:** {spec_path from task file}
## Required Workflow
**Always plan before implementing.** Simple tasks get simple plans.
### Phase 1: Plan
1. Read the spec's Technical Design section at {spec_path}
2. Explore relevant files to understand existing patterns
3. Write your implementation plan to `.otto/plans/{session_id}.md`:
- List each task you will implement
- For each task, describe: approach, files to modify, key changes
- Note any spec decisions that affect implementation
### Phase 2: Implement
4. Implement each task according to your plan
5. After each task: verify the done condition is met
6. Mark each task "done" as completed
Keep the plan concise - it's for your reference and audit trail.**After subagent completes:**
- Update session status to "done"
- Stage: `git add -u && git add .otto/`
- Commit: `git commit
Showing the first part of this file.
Skills for every stage of product development — spec writing, task prioritization, implementation, testing, code review, and summaries — that work in both Claude Code and OpenAI Codex.
Repo: brsbl/ottonomous
Other skills on ottonomous.
- /reset-code
What to reset: diffs, otto, code, deps, or all (default: all)
Open skill - /skill-diff
Shows side-by-side diffs of skill changes. Generates HTML comparison of before/after for changed SKILL.md files. Use when reviewing skill changes.
Open skill - /otto
Autonomous product development. Takes an idea and builds it end-to-end with subagents. Write a product spec, generate tasks from spec, implement each task while testing/reviewing changes, with final verification. Use when you want to build something from scratch.
Open skill - /reset
Subdirectories to clear: tasks, specs, sessions, or all (default: all). Docs are preserved.
Open skill - /review
Reviews code changes for bugs with P0-P2 prioritized feedback. Uses parallel subagents for thorough analysis, then creates fix plans. Use when reviewing code, finding bugs, checking quality, or before merging. Use review fix to implement fixes.
Open skill - /spec
Writes product specifications through collaborative interview with web research. Use when planning, gathering requirements, designing new features, or creating a spec/PRD.
Open skill

