From ottonomous
Selects and implements next unblocked task or session from .otto/tasks JSON files. Checks git branch, handles priorities/blockers, launches frontend/backend subagents.
npx claudepluginhub brsbl/ottonomous --plugin ottonomousThis skill uses the workspace's default tool permissions.
**Argument:** $ARGUMENTS
Executes eligible tasks from session task list, syncs against codebase/PR state to surface stales, and generates handovers. Use /task-run [--all] [--sync [--dry-run]] [--handover [query]].
Suggests 1-3 prioritized next tasks by analyzing TASKS.md, recent sessions via ctx journal, and priority tags. Use at session start, after tasks, or when unsure what to prioritize.
Executes pending Claude Code Tasks in dependency order with wave-based concurrent execution, adaptive verification, retries, task group filtering, and configurable parallelism.
Share bugs, ideas, or general feedback.
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).
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 AskUserQuestion:
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?
Before proceeding to any implementation section, check the current branch:
current_branch=$(git branch --show-current)
If on main or master, use AskUserQuestion:
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.
Select the next task:
depends_on tasks are "done")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.
Launch subagent using Task tool:
subagent_type: frontend-developer (frontend tasks) or backend-architect (backend tasks)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:
git add -u && git add .otto/git commit -m "otto: {spec-id} task {id} — {title}"Report: "Task {id} complete."
Select the next session:
depends_on sessions are "done")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.
Launch subagent using Task tool:
subagent_type: frontend-developer (frontend tasks) or backend-architect (backend tasks)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:
git add -u && git add .otto/git commit -m "otto: {spec-id} session {id} — {title}"Report: "Session {id} complete. {n} tasks done."
Select sessions to implement:
depends_on sessions are "done")If no unblocked sessions: Show same messages as Section 3.
If only 1 session: Continue to Section 3's "Implement Session" subsection with that session.
If multiple sessions: Launch parallel subagents.
Mark all sessions as "in_progress" before launching.
Launch ALL sessions in a single message with multiple Task tool calls (one per session), using run_in_background: true:
subagent_type: frontend-developer (frontend tasks) or backend-architect (backend tasks)Example (3 sessions → 3 Task calls in one response):
Task(description="Implement S1", prompt="...", subagent_type="frontend-developer", run_in_background=true)
Task(description="Implement S2", prompt="...", subagent_type="backend-architect", run_in_background=true)
Task(description="Implement S3", prompt="...", subagent_type="frontend-developer", run_in_background=true)
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.
Report:
Launching {n} priority-{p} sessions in parallel:
- Session {id1}: {title1} ({n} tasks)
- Session {id2}: {title2} ({n} tasks)
Monitor and complete:
git add -u && git add .otto/git commit -m "otto: {spec-id} batch — {n} sessions at priority {p}"/next batch again for next priority level."