npx skills add https://github.com/brsbl/ottonomous --skill otto产品构想: $ARGUMENTS
所有技能均通过子代理调用。
当技能询问问题或请求确认时:
| 阶段 | 操作 | 验证 | 代理 |
|---|---|---|---|
init | 创建会话、分支 | state.json 存在 | - |
spec | /spec {product_idea} | 规格文件存在 | - |
task |
广告位招租
在这里展示您的产品或服务
触达数万 AI 开发者,精准高效
/task {spec_id} |
| 任务文件存在 |
| - |
session:{id}:implement | /next {id} | 会话状态为完成 | frontend-developer, backend-architect 根据任务类型 |
session:{id}:test | /test write staged | 测试通过 | - |
session:{id}:review | /review staged | 审查完成 | architect-reviewer, senior-code-reviewer 根据变更类型 |
session:{id}:fix | /review fix P0-P1 | P0/P1 问题修复(如有) | - |
build | npm run build | 退出码为 0 | - |
test | /test all | 测试通过 | - |
review | /review branch | 审查完成 | architect-reviewer, senior-code-reviewer 根据变更类型 |
review:fix | /review fix P0-P1 | P0/P1 问题修复(如有) | - |
summary | /summary | HTML 文件已创建 | - |
创建会话:
session_id="otto-$(date +%Y%m%d-%H%M%S)-$(openssl rand -hex 2)"
mkdir -p .otto/otto/sessions/${session_id}
初始化 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 }
}
创建功能分支:
git checkout -b otto/${session_id}
更新 current_phase → spec
调用/spec {product_idea}
验证: .otto/specs/{id}.md 文件存在。如果不存在,重试。
验证后:
spec_idcurrent_phase → task调用/task {spec_id}
验证: .otto/tasks/{spec_id}.json 文件存在且包含 sessions 数组。如果不存在,重试。
更新 state.json 中的 sessions.total。
调用/next session (不带其他参数)
返回下一个会话 ID,但不执行实现。
在 /next session 返回后:
current_session_id → {id}current_phase → session:{id}:implement调用/next {session-id}
子代理使用专门的代理执行任务:
frontend-developerbackend-architect(子代理实现会话中的所有任务,并更新每个任务的状态)
更新 current_phase → session:{id}:test
调用/test write staged
更新 current_phase → session:{id}:review
调用/review staged (创建修复计划)
根据变更类型使用专门的审查者:
architect-reviewersenior-code-reviewer如果审查发现 P0/P1 问题:
current_phase → session:{id}:fix否则:
sessions.completed调用/review fix P0-P1 (实现 P0/P1 修复)
sessions.completedcurrent_phase → build每 2 个会话进行一次检查点提交:
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
验证: 构建退出码为 0。如果不是,修复问题并重试。
更新 current_phase → test
调用/test all
更新 current_phase → review
调用/review branch (创建修复计划)
如果审查发现 P0/P1 问题:
current_phase → review:fix否则:
current_phase → summary调用/review fix P0-P1 (实现 P0/P1 修复)
最终提交:
git add -A && git commit -m "otto: complete - {completed}/{total} sessions"
更新 current_phase → summary
调用/summary
设置 status → completed
在默认浏览器中打开生成的摘要:
open .otto/summaries/{branch}-{date}.html
宣布:
会话完成!
- 会话数:{completed}/{total}
- 分支:otto/{session_id}
- 摘要:.otto/summaries/{branch}-{date}.html
当调用 /otto 时,检查现有会话:
.otto/otto/sessions/ 中是否存在 status: "in_progress" 的 state.jsoncurrent_phase 和 current_session_idcurrent_phase 继续每周安装数
1
仓库
GitHub 星标数
10
首次出现
今天
安全审计
安装于
amp1
cline1
opencode1
cursor1
kimi-cli1
codex1
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_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 | - |
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_id}
Verify: .otto/tasks/{spec_id}.json exists with sessions array. If not, retry.
Update sessions.total in state.json.
Invoke/next session (no other arguments)
Returns the next session id without implementing.
After /next session returns:
current_session_id → {id}current_phase → session:{id}:implementInvoke/next {session-id}
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}: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 → 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_idcurrent_phaseWeekly Installs
1
Repository
GitHub Stars
10
First Seen
Today
Security Audits
Gen Agent Trust HubPassSocketPassSnykWarn
Installed on
amp1
cline1
opencode1
cursor1
kimi-cli1
codex1
agent-browser 浏览器自动化工具 - Vercel Labs 命令行网页操作与测试
147,400 周安装