autopilot Checked
Installation
Copy the prompt below and send it to your AI assistant (e.g. Claude Code) — it will follow the instructions and install automatically.
Install the "autopilot" skill by following the instructions at https://skill123.me/install/autopilot.
Run in your terminal — downloads and installs to ~/.claude/skills/.
curl -fsSL https://skill123.me/install/autopilot.sh | bash
Download the zip and extract it into your skills directory (e.g. ~/.claude/skills/), then restart your session.
⬇ Download v1.0.2c2f140 · 50 KBNot live-tested yet — this skill is rated on static analysis only.
About this skill
接收一句模糊指令,自动调查、分类、拆解为 XML 阶段计划、选 skill、定完成判定,
然后以无人值守模式通过 loop/goal + agent-mode 完整执行到底——
包括自动部署、自动 E2E 测试、自动代码 review,不跳过任何阶段。
当用户扔过来一句宽泛任务时主动使用——"把 bug 修了"、"补测试"、
"优化性能"、"把这个功能做完"、"代码扫一遍"、"调查一下为什么 XX"。
也在用户说"autopilot"、"auto"、"帮我规划"、"自己搞定"、"直接跑"、
"你来拆"、"别问我怎么做"时触发。即使用户没有说这些关键词,
只要输入明显是未拆解的宽泛意图,也应该主动激活。
调用 autopilot = 授权全自动无人值守执行,不需要中途确认。
Autopilot
接收一句话,自动拆解成结构化执行计划,然后以无人值守模式完整执行到底。
用户调用 autopilot 意味着:**授权 AI 完全自主地完成整套流程**——
调查、实现、部署、E2E 验证、代码 review、二次部署、二次验证、收尾。
不需要中途确认,不允许跳过必要阶段或把未完成包装为完成。用户说“发版”“发布”“上线”未限定范围时,默认自动发布当前项目所有适用发布面;先检查和验证,结果逐项回读,不扩到无关项目。用户明确限制始终优先。
---
Documentation
接收一句模糊指令,自动调查、分类、拆解为 XML 阶段计划、选 skill、定完成判定,
然后以无人值守模式通过 loop/goal + agent-mode 完整执行到底——
包括自动部署、自动 E2E 测试、自动代码 review,不跳过任何阶段。
当用户扔过来一句宽泛任务时主动使用——"把 bug 修了"、"补测试"、
"优化性能"、"把这个功能做完"、"代码扫一遍"、"调查一下为什么 XX"。
也在用户说"autopilot"、"auto"、"帮我规划"、"自己搞定"、"直接跑"、
"你来拆"、"别问我怎么做"时触发。即使用户没有说这些关键词,
只要输入明显是未拆解的宽泛意图,也应该主动激活。
调用 autopilot = 授权全自动无人值守执行,不需要中途确认。
Autopilot
接收一句话,自动拆解成结构化执行计划,然后以无人值守模式完整执行到底。
用户调用 autopilot 意味着:**授权 AI 完全自主地完成整套流程**——
调查、实现、部署、E2E 验证、代码 review、二次部署、二次验证、收尾。
不需要中途确认,不允许跳过必要阶段或把未完成包装为完成。用户说“发版”“发布”“上线”未限定范围时,默认自动发布当前项目所有适用发布面;先检查和验证,结果逐项回读,不扩到无关项目。用户明确限制始终优先。
---
安装与更新
来源:Skills.sh
# 首次全局安装,或更新失败时重新安装
npx skills add yan-labs/yan-skills --skill autopilot -g -y
# 将已安装的全局 Skill 更新到最新版
npx skills update autopilot -g -y
若使用项目级安装,去掉安装命令中的 -g;项目级更新使用 npx skills update autopilot -p -y。
---
编排者角色(CRITICAL · 贯穿全程)
**你的主要任务是分析、编排和验证,具体任务尽可能交给 subagent 去执行。**
自己只做需求澄清、方案拆解、任务分发和结果验收;
实现类工作(读大量代码、写代码、跑测试、批量修改)一律用 Agent 工具派给 subagent 执行。
主循环是指挥,不是工兵——把上下文留给决策,把苦力留给 subagent。
这条规则与下方 <behavior id="main-context-execution"> 和 <rule id="context-hygiene"> 是同一件事的三种表述,互相加强,不冲突。
---
执行与恢复规则(CRITICAL)
调用 autopilot 授权持续推进任务,不等于授权创建持久 Goal,也不要求先安排唤醒才允许工作。
- 默认采用 **state-only**:先把目标、阶段、验证条件和有界下一步写入
progress.md,然后在当前轮直接执行可推进工作。多个阶段可在同一轮完成,按阶段更新状态。 - 只有用户或系统明确要求持久 Goal 时,才采用 **explicit-goal**:创建或恢复该任务唯一的 Goal;不得因调用本技能、无人值守或等待部署而隐式创建。
- 只有确实需要跨轮等待或恢复时,使用当前平台实际可用的调度能力。CI/部署等待按项目规则安排当前任务唯一的定时恢复,登记目标任务及下一次运行时间后结束当前轮;不以前台反复查询代替恢复。
- 缺少调度工具不会阻止当前仍可执行的工作。确实需要等待且无法恢复时,记录准确状态和恢复阻碍,不声称定时已安排或任务已完成。
- 恢复后读取同一状态文件,继续尚未完成的有界动作。不要从头重建任务,不启动第二个 controller。
- 状态文件中的
loop-goal是完成条件文本,不代表已经创建平台 Goal;explicit-goal 才记录实际 Goal 身份。
进入执行前核对:状态文件存在、完成条件可验证、下一步具体。调度登记只在确需恢复时检查;Goal 身份只在 explicit-goal 模式检查。
---
核心原则
这些原则来自 loop engineering 的实战经验,是防止 loop 变成烧钱空转的关键。
<core-principles>
<principle id="state-file">
<name>State File — agent 会遗忘,文件不会</name>
每轮开始时创建 progress.md 记录已完成和待完成的阶段。
每个 phase 完成后立即更新。下次迭代从 state file 恢复而非从零开始。
这是 loop 能跨迭代续跑的脊柱。
</principle>
<principle id="maker-checker-split">
<name>Maker-Checker Split — 写代码的不能自己判卷</name>
实现代码的 subagent 和验证代码的 subagent 必须是不同的 subagent。
同一个 agent 写完代码再"review"自己的代码,只是第二个乐观主义者在点头。
E2E 验证、代码 review 必须由独立的 subagent 执行,
不接触实现 subagent 的推理过程。
</principle>
<principle id="objective-gate">
<name>Objective Gate — 每个验证必须有机器可判定的信号</name>
"看起来没问题"不是验证。验证必须有客观的 pass/fail 信号:
- 本地验证:tsc 退出码 0 + test 全绿
- 部署验证:gh run 状态 = success
- E2E 验证:agent-browser 在 test 环境复现→现象消失
- Review 验证:review skill 输出无 blocking issue
没有客观信号的"验证"不算完成。
</principle>
<principle id="hard-stop">
<name>Hard Stop — loop 必须有刹车</name>
每个 loop 必须有明确的停止条件:
- 成功停止:loop-goal 的所有条件满足
- 重复失败:同一失败签名连续三次 → 停止原样重试,调查并改换可测试的策略;仍有安全下一步时继续
- 任务停止:用户明确的上限已到,或调查证明没有安全可执行下一步;不自设任务硬停止预算
没有刹车的 loop 会空转到被外部杀掉——这不是停止,是崩溃。
</principle>
View full documentation
<principle id="no-ralph-wiggum">
<name>No Ralph Wiggum — 不允许半完成就声称 done</name>
agent 可能在只完成了一半的时候提前退出 loop("看起来差不多了")。
防护措施:
- 每个 phase 完成后输出 ✓ PHASE [id] COMPLETE: [客观证据]
- loop 结束前逐一核对所有 mandatory phase 的完成标记
- 缺标记 = 未完成 = 不允许退出
</principle>
<principle id="failure-classification">
<name>Failure Classification — 先分类再重试</name>
phase 失败时不能盲目 loop 回去重试同样的事情。
必须先分类失败原因,然后根据分类选择不同的修复路径:
<failure-type id="missing-context">
缺少上下文/信息。修复:扩大调查范围,读更多代码/日志/文档。
</failure-type>
<failure-type id="wrong-approach">
方案本身有问题。修复:回退到 plan 阶段,探索替代路径(多角度发散思考)。
</failure-type>
<failure-type id="environment-issue">
环境/配置/依赖问题(非代码 bug)。修复:用项目 debug skill 排查环境。
</failure-type>
<failure-type id="hallucinated-assumption">
基于错误假设实现。修复:回退到 investigate,验证假设再重新实现。
</failure-type>
<failure-type id="incomplete-output">
做了一部分但不完整。修复:继续当前 phase,不要从头开始。
</failure-type>
<failure-type id="external-blocker">
被外部因素阻塞(API 不可用、权限不足等)。修复:降级或中止并报告。
</failure-type>
记录每次失败的分类到 progress.md,防止重蹈覆辙。
</principle>
<principle id="adaptive-retry">
<name>Adaptive Retry — 重试必须改变策略</name>
"更多次重试 ≠ 更好的结果。如果系统重复相同的行为,它不是在改进,它只是在空转。"
每次 loop 回去重试时,必须满足以下条件之一:
- 使用了不同的修复方案
- 获取了新的上下文/信息
- 缩小了问题范围
- 换了工具或 skill
- 修正了之前的错误假设
如果想不出任何不同的做法 → 不要重试,直接中止并报告:
"连续 N 次以相同方式失败,无法找到新的修复路径。"
这比空转烧 token 有价值得多。
失败签名 = phase + 客观 gate + 观察到的失败 + 失败边界。
只有四项全同才累加重复计数;失败点向下游移动是 progressive discovery,
重置该签名计数但全局预算继续累计。详见 references/execution-budget.md。
</principle>
<principle id="evidence-ladder">
<name>Evidence Ladder — 说清楚你的"验证"到底证明了什么</name>
每条实质性结论都必须带证据等级:
L0 假设/读代码 → L1 单测 → L2 集成测试/fixture/构造流程
→ L3 目标环境上的原始事故身份或显式等价身份 → L4 部署后真实复发观测。
铁律:绝不能把 L0–L2 说成"历史根因已证实"。
加了兜底之后跑通了,只说明兜底生效,不说明原路径坏在哪。
fixture-only 的 L2 通过永远不能关闭一个用户报告的缺陷。
根因用词必须精确:confirmed root cause / supported mechanism /
defensive hardening / bounded unknown。详见 references/evidence-and-verification.md。
</principle>
<principle id="single-writer">
<name>Single Writer — "只有我在改这个仓库"是必须被证明的假设</name>
同一台机器上经常有多个 agent、多个 worktree 共享同一个 git 仓库。
任何时刻只允许一个 maker 写同一个工作树、一个 landing owner 做
commit/push/发布。写入前必须持有 git-common-dir 的原子租约;
证明不了本机独占就停止。
staging 只用精确文件清单,绝不 git add -A / git add .;
绝不 stash / checkout / reset / 覆盖别人的改动;绝不 force push。
push 后必须 fetch 并用 git merge-base --is-ancestor 回读远端 ancestry——
本地 commit 不算交付。详见 references/concurrency-and-landing.md。
</principle>
<principle id="bounded-increment">
<name>Bounded Increment — 每轮只推进一个有界增量</name>
一轮迭代 = 读 checkpoint → 校验归属与租约 → 提出一个假设或一个 phase delta
→ 执行一个带客观 gate 的 maker 或 checker 动作 → 记录结果和最强证据
→ 选择一个有界的下一步或停止。
不允许把"调查全部 + 实现 + 部署 + review"塞进一个增量。
只读的事实收集可以并行(输出互不依赖时),写入永远单 maker。
</principle>
</core-principles>
---
平台适配
autopilot 默认通过状态文件推进;需要跨轮恢复时使用当前平台能力,持久 Goal 另受明确请求约束:
<platform-detection>
<platform id="claude-code">
<loop-command>/loop</loop-command>
<goal-command>/loop + 自定步调目标驱动</goal-command>
<description>
Claude Code 中使用 /loop 驱动目标迭代。
/loop 支持按间隔运行,也支持自定步调(不指定间隔时 model 自行决定何时继续)。
</description>
</platform>
<platform id="codex">
<loop-command>state-only + 当前任务定时恢复</loop-command>
<goal-command>仅 explicit-goal 模式:/goal [完成条件描述]</goal-command>
<description>
Codex 仅在用户或系统明确要求持久 Goal 时使用 /goal;否则使用运行状态和当前任务定时恢复。
/goal 持续运行直到声明的条件成立,由独立的 checker model 验证完成。
</description>
</platform>
<fallback>
平台未知时先检查实际工具,不猜测命令。继续 state-only 的可执行工作;需要恢复时再选择可用调度能力。两种模式都必须执行完整客观验收。
</fallback>
</platform-detection>
---
工作流程总览
<workflow>
<step id="scope">快速调查,理解任务实际涉及什么(2-5 分钟)</step>
<step id="plan">分类任务 → 拆解为 XML 阶段 → 选 skill → 定 loop 目标 → 初始化 state file</step>
<step id="execute">运行状态(explicit-goal 仅在明确请求时)+ agent-mode(内层按阶段派 subagent)→ 全程无人值守</step>
<step id="report">输出收尾总结 + 所有 phase 完成标记</step>
</workflow>
用户调用 autopilot 本身就是确认——不需要中途展示计划等"go"。
如果用户明确说"先让我看看计划",才暂停展示。默认直接执行。
### Reference 导航(按 phase 加载,不要在开始时全部加载)
| 时机 | 加载 |
| --- | --- |
| 任务形态模板与调查清单 | references/phase-library.md 中对应那一节 |
| goal / loop / checkpoint / 预算 / 失败记账 | references/execution-budget.md |
| 工单归属、认领、批次、终态、续跑租约 | references/ownership-and-tracker.md |
| maker 编辑 / commit / rebase / push / 发布 | references/concurrency-and-landing.md |
| 测试设计 / E2E / 根因表述 / 关闭判定 | references/evidence-and-verification.md |
| 交付、复盘、规则晋升、最终审计 | references/learning-and-audit.md |
### 必须停止的红旗
- 候选工单是 draft、
in-progress、有预约/有效外来租约/接管,或已有开工证据; - 认领回读未成功却已经开始改代码;
- 一批只共享标签/模块/症状,没有共享精确根因和同一条验证链;
- 出现第二个 maker 或第二个 landing owner,或本机租约回读不一致;
- 想用 mock/fixture 关闭用户报告的缺陷,或用兜底成功宣称历史根因已证实;
- 任务目标没有 proof/constraints,未记录用户明确的上限,或 checkpoint 没有有界的下一步动作;
- 同一失败签名重复三次而策略没有真正改变,或 A→B→A 无新证据来回摆;
- staging 含任务外路径、远端回读不含交付 SHA,或出现任何 force-push 倾向;
- 学习规则没有证据/eval/独立 checker 就要改权威规则文件。
命中红旗时:先记录 checkpoint,停止有问题的操作或原样重试,检查可安全继续的替代路径。仍有有界下一步时继续;只有用户上限已到或证据证明没有安全路径时才结束任务并报告未完成部分。不得靠重复等待或无变化的重试绕过保护。
---
Step 1: 快速定范围
在规划之前,先花 2-5 分钟弄清任务实际涉及什么。
没有调查的计划是空中楼阁——先看再拆。
### 1a. 自动分类任务类型
根据用户输入 + 调查发现判断类型:
<task-types>
<type id="bug-fix"
signals="fix, broken, 不工作, issue, error, 报错, 修, crash, 挂了">
修复已知缺陷。从现象追到根因,根治而非打补丁。
</type>
<type id="feature"
signals="add, implement, 新增, 做一个, 加上, 支持, spec, 功能">
Score breakdown
Assessment methodology
Version history
— Refreshed from GitHub yan-labs/yan-skills@2c2f140
Imported from yan-labs/yan-skills@main