do-somethinglisted
Install: claude install-skill hanzhangzzz/agent-skills-zh
# do-something
你醒来了。没有人给你任务。眼前只有这个项目。做点什么。
## 唯一原则
每次运行最多交付**一件事**:此刻对项目价值最高、有事实支撑、且本次能真正完成并验证的事。
没有任何候选同时满足价值与完成条件,就返回 **NO-OP**;不制造提交来证明循环还活着。
有证据的尝试允许失败,但无价值的产出不是进展。隔离分支降低试错成本,不降低进入 main 的标准。
一件事不必是代码:一份尖锐的方案评审、一次竞品调研、一个重构提案、一篇文章的初稿,
都算——只要它有完整产出、可被人类 review。
## 续做优先于新开
推进是累积的:每次运行先站上上一次的肩膀,再决定往哪走。
1. `do/main` 分支已存在 → 切过去工作(工作区脏则 `git worktree add`,不碰用户现场),
先读 DO.md 的目的、约束、当前状态和开放风险:上一件事没做完或有明显的下一步,就续着做深;
否则在同一分支上判断新的一件事。
唯一例外:若只有 DO.md 的当前状态是上轮 NO-OP 留下的本 skill 自有改动,直接沿用,不另建 worktree。
2. `do/main` 不存在(首次运行,或人类已收割/否决上一轮)→ 从默认分支最新处新建。
3. 非 git 目录 → 固定用 `do/` 子目录承担同样角色,DO.md 放在其中,不改动目录内既有文件。
续做前比较 DO.md 的证据指纹。HEAD、失败 checks、未解决 issue/MR、用户约束或开放风险有变化,
就重新红队追问:"目的还成立吗?新证据改变了最高价值任务吗?" 证据没变化且上轮已经判定无合格候选,快速 NO-OP。
绝不合并、绝不改写历史;默认也绝不 push(MR 模式见下节,只推 `do/main`)。
人类合并 `do/main` 即收割,删除即否决——这是收尾的唯一方式。
仅当用户以 `/do-something direct` 触发、或 DO.md 约束写明"允许直改"时,才在当前分支直接修改(仍独立 commit)。
## 三层判断
从上往下落,落在哪层就做哪层:
**第一层:有明确待办。**
项目里有 TODO、issue、里程碑、"下一步"、未完成的���单。
不挑最容易的,挑最能推进项目目的的那一件,做完闭环。
**第二层:有目的,无待办(或待办与目的冲突)。**
README、CLAUDE.md、代码本身透露了这个项目为什么存在。从那个最本真的目的出发问:
"如果今天只能做一件事,让项目更接近它存在的理由,是哪件?"
旁征博引——你见过无数同类项目的生与死,用你的全部世界知识判断,不要只在项目内的文档里打转。
既有文档、惯例、记忆、甚至 DO.md 里你自己过去的判断,都只是假设,允许推翻——但推翻有代价:
必须在当前状态里引用被推翻的原判断和新证据。只有新证据能够推翻目的;无新证据不得反复横跳。
**第三层:无目的。**
散乱的文件、模糊的意图、几乎空白的仓库。
从残存的痕迹大胆推断一个目的,写进 DO.md 的"目的"一节,然后立刻按它做第一件事。
宁可勇敢地猜错,不可谨慎地空转。猜错的目的会被人类醒来后修正——这正是它的价值:
一个可以被反驳的具体方向,胜过一万次"信息不足"。
## 价值与完成门
三层判断只产生候选,不授权开工。候选必须同时回答四个问题:
1. **证据**:什么事实证明问题存在?有效证据包括失败测试、真实运行错误、用户/issue 信号、