From ottonomous
Autonomously builds products end-to-end from ideas using subagents: generates specs/tasks, implements/tests/reviews changes per task, verifies final output. For scratch development.
npx claudepluginhub brsbl/ottonomous --plugin ottonomousThis skill uses the workspace's default tool permissions.
**Product Idea:** $ARGUMENTS
Drives AI coding agents through gated Spec → Plan → Build → Test → Review → Ship workflow for non-trivial features, refactors, or multi-file projects.
Orchestrates all code-modifying development tasks like bug fixes, enhancements, and new features using adaptive phases for analysis, specs, TDD, implementation, and verification.
Share bugs, ideas, or general feedback.
Product Idea: $ARGUMENTS
All skills are invoked via subagents.
When a skill asks questions or requests confirmation:
| Phase | Action | Verify | Agents |
|---|---|---|---|
init | Create session, branch | state.json exists | - |
spec | /spec {product_idea} | spec file exists | - |
task | /task {spec_name_or_id} | tasks file exists | - |
session:{id}:implement | /next session | session status is done | frontend-developer, backend-architect per task type |
session:{id}:test | /test write staged | tests pass | - |
session:{id}:verify | /verify | all criteria pass | smoke-tester, verify-fixer |
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 | - |
verify | /verify | all criteria pass | smoke-tester, verify-fixer |
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 | - |
Before each phase (except init): verify git branch --show-current matches otto/${session_id}. If not, git checkout otto/${session_id}.
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
Invoke /spec {product_idea}
Verify: .otto/specs/{id}.md exists. If not, retry.
After verification:
spec_id in state.jsoncurrent_phase → taskInvoke /task {spec_name_or_id}
Verify: .otto/tasks/{spec_id}.json exists with sessions array. If not, retry.
Update sessions.total in state.json.
Invoke /next session status
Returns the next session id without implementing.
If no unblocked sessions and all are "done": proceed to Phase: build. If no unblocked sessions but some blocked: report "{n} sessions blocked."
After /next session status returns:
current_session_id → {id}current_phase → session:{id}:implementInvoke /next session
Subagent implements tasks using specialized agents:
frontend-developerbackend-architect(Subagent implements all tasks in the session, updating each task status as it goes)
Update current_phase → session:{id}:test
Invoke /test write staged
Update current_phase → session:{id}:verify
Invoke /verify
Launches the built app and verifies against spec criteria for this session. Hard gate — loops (diagnose → fix → rebuild → re-verify) until all criteria pass.
Update current_phase → session:{id}:review
Invoke /review staged (creates fix plan)
Uses specialized reviewers based on change type:
architect-reviewersenior-code-reviewerIf review finds P0/P1 issues:
current_phase → session:{id}:fixOtherwise:
sessions.completedInvoke /review fix P0-P1 (implements P0/P1 fixes)
sessions.completedcurrent_phase → buildCheckpoint commit every 2 sessions:
git add -A && git commit -m "otto: checkpoint - {completed}/{total} sessions"
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
Invoke /test all
Update current_phase → verify
Invoke /verify
Final verification against all spec criteria. Hard gate — loops until all pass.
Update current_phase → review
Invoke /review branch (creates fix plan)
If review finds P0/P1 issues:
current_phase → review:fixOtherwise:
current_phase → summaryInvoke /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
Invoke /summary
Set status → completed
Open the generated summary in the default browser:
open .otto/summaries/{branch}-{date}.html
Announce:
Session complete!
- Sessions: {completed}/{total}
- Branch: otto/{session_id}
- Summary: .otto/summaries/{branch}-{date}.html
When /otto is invoked, check for existing session:
.otto/otto/sessions/ for state.json with status: "in_progress"current_phase and current_session_idotto/${session_id}. If on wrong branch, switch: git checkout otto/${session_id}current_phase