otto
Use Cautionnpx machina-cli add skill brsbl/ottonomous/otto --openclawProduct Idea: $ARGUMENTS
Autonomous Behavior
All skills are invoked via subagents.
When a skill asks questions or requests confirmation:
- Auto-select "(Recommended)" options
- Auto-approve specs, plans, and confirmations
Phase Reference
| Phase | Action | Verify | Agents |
|---|---|---|---|
init | Create session, branch | state.json exists | - |
spec | /spec {product_idea} | spec file exists | - |
task | /task {spec_id} | tasks file exists | - |
session:{id}:implement | /next {id} | session status is done | frontend-developer, backend-architect per task type |
session:{id}:test | /test write staged | tests pass | - |
session:{id}:review | /review staged | review complete | architect-reviewer, senior-code-reviewer per change type |
session:{id}:fix | /review fix P0-P1 | P0/P1 fixed (if any) | - |
build | npm run build | exit 0 | - |
test | /test all | tests pass | - |
review | /review branch | review complete | architect-reviewer, senior-code-reviewer per change type |
review:fix | /review fix P0-P1 | P0/P1 fixed (if any) | - |
summary | /summary | HTML created | - |
Workflow
Phase: init
Create session:
session_id="otto-$(date +%Y%m%d-%H%M%S)-$(openssl rand -hex 2)"
mkdir -p .otto/otto/sessions/${session_id}
Initialize state.json:
{
"session_id": "{session_id}",
"status": "in_progress",
"product_idea": "{product_idea}",
"spec_id": null,
"current_phase": "init",
"current_session_id": null,
"sessions": { "total": 0, "completed": 0 }
}
Create feature branch:
git checkout -b otto/${session_id}
Update current_phase → spec
Phase: spec
Invoke /spec {product_idea}
Verify: .otto/specs/{id}.md exists. If not, retry.
After verification:
- Update
spec_idin state.json - Update
current_phase→task
Phase: task
Invoke /task {spec_id}
Verify: .otto/tasks/{spec_id}.json exists with sessions array. If not, retry.
Update sessions.total in state.json.
Per-Session Loop
Invoke /next session (no other arguments)
Returns the next session id without implementing.
After /next session returns:
- Update
current_session_id→{id} - Update
current_phase→session:{id}:implement
Phase: session:{id}:implement
Invoke /next {session-id}
Subagent implements tasks using specialized agents:
- Frontend tasks →
frontend-developer - Backend tasks →
backend-architect
(Subagent implements all tasks in the session, updating each task status as it goes)
Update current_phase → session:{id}:test
Phase: session:{id}:test
Invoke /test write staged
Update current_phase → session:{id}:review
Phase: session:{id}:review
Invoke /review staged (creates fix plan)
Uses specialized reviewers based on change type:
- Architectural changes →
architect-reviewer - Implementation changes →
senior-code-reviewer
If review finds P0/P1 issues:
- Update
current_phase→session:{id}:fix
Otherwise:
- Increment
sessions.completed
Phase: session:{id}:fix
Invoke /review fix P0-P1 (implements P0/P1 fixes)
- Increment
sessions.completed - If more pending sessions: Return to Per-Session Loop
- If no more sessions: Update
current_phase→build
Checkpoint commit every 2 sessions:
git add -A && git commit -m "otto: checkpoint - {completed}/{total} sessions"
Phase: build
log_file=".otto/otto/sessions/${session_id}/build.log"
npm run build > >(tee "$log_file") 2>&1
Verify: Build exits 0. If not, fix issues and retry.
Update current_phase → test
Phase: test
Invoke /test all
Update current_phase → review
Phase: review
Invoke /review branch (creates fix plan)
If review finds P0/P1 issues:
- Update
current_phase→review:fix
Otherwise:
- Update
current_phase→summary
Phase: review:fix
Invoke /review fix P0-P1 (implements P0/P1 fixes)
Final commit:
git add -A && git commit -m "otto: complete - {completed}/{total} sessions"
Update current_phase → summary
Phase: summary
Invoke /summary
Set status → completed
Announce:
Session complete!
- Sessions: {completed}/{total}
- Branch: otto/{session_id}
- Summary: .otto/summaries/{branch}-{date}.html
Recovery
When /otto is invoked, check for existing session:
- Check
.otto/otto/sessions/for state.json withstatus: "in_progress" - Read
current_phaseandcurrent_session_id - Offer to resume or start fresh
- If resuming, continue from
current_phase
Overview
otto is an autonomous agent that takes a product idea and builds it end-to-end using subagents. It writes a product spec, generates tasks from the spec, implements each task while testing and reviewing changes, and performs final verification across a phase-driven workflow. Use it when you want to build something from scratch.
How This Skill Works
All work is performed by subagents and follows a phase-driven workflow: init creates a session and branch, spec generates a spec from the product idea, task generates tasks from that spec, and the per-session loop uses implement, test, review, and fix with specialized agents (frontend-developer for frontend tasks, backend-architect for backend tasks; architect-reviewer and senior-code-reviewer handle reviews). The system auto-selects recommended options when asking questions and auto-approves specs, plans, and confirmations to keep momentum, with checkpoint commits every two sessions and a final build and summary.
When to Use It
- When you have a new product idea and want an automated, end-to-end build without manual task management.
- When you need a rapid prototype with a formalized spec and task breakdown.
- When frontend and backend work must be coordinated across multiple sessions.
- When you want automated testing, review, and fixes with specialized reviewers.
- When you prefer a traceable, phase-driven pipeline from idea to final verification.
Quick Start
- Step 1: Define your product idea and start the Otto session (init) to create a branch.
- Step 2: Invoke /spec {product_idea} to generate the spec, then /task {spec_id} to create tasks.
- Step 3: Run the per-session loop: /next session, /next {id}:implement, /test write staged, /review staged, (optional) /review fix P0-P1, then proceed to build and summary.
Best Practices
- Provide a clear product idea and ensure the state.json reflects the current progress.
- Keep specs and tasks organized under .otto/specs and .otto/tasks and verify their existence at each phase.
- Let the per-session loop drive implementation, testing, review, and fixes in order.
- Use the appropriate reviewers for changes (architect-reviewer for architectural changes, senior-code-reviewer for implementation changes).
- Use checkpoint commits every 2 sessions to capture progress and enable rollback if needed.
Example Use Cases
- Prototype a note-taking app end-to-end, from idea to build and verification.
- Create an automated data ingestion pipeline with a frontend dashboard and backend processing.
- Develop a full e-commerce checkout flow with UI, backend services, and end-to-end tests.
- Build an internal admin dashboard for user management and analytics.
- Generate a microservice from a spec and validate it with end-to-end tests and reviews.