Skip to content
Back to skills

Do Something

ASecurity

Autonomously push the current project forward: answer feedback first, select the highest-value task supported by real evidence, finish and verify a durable outcome, or explicitly return NO-OP when nothing valuable can truly be completed. Every run continues on one do/main branch with bounded DO.md state; optional MR mode pairs with ci-review's separate value and execution verdicts before auto-merge. Built for unattended cron/loop runs and manual triggers. Use when the user says /do-something,...

  • 2 stars
  • 0 votes
  • 0 copies
  • 3 views
  • Added September 19, 2026
ai-agentsgitapi

Works with

  • claude code
  • api

Security analysis

A100/100

Pro scans all 4 files and shows the line behind each finding

Scanned September 23, 2026

npx -y skills add hanzhangzzz/agent-skills-zh --skill do-something --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Do Something?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Do Something
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/hanzhangzzz-do-something/badge)](https://www.skillsdirectory.com/skills/hanzhangzzz-do-something)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: do-something
description: |
  Autonomously push the current project forward: answer feedback first, select the highest-value task supported by real evidence, finish and verify a durable outcome, or explicitly return NO-OP when nothing valuable can truly be completed. Every run continues on one do/main branch with bounded DO.md state; optional MR mode pairs with ci-review's separate value and execution verdicts before auto-merge. Built for unattended cron/loop runs and manual triggers. Use when the user says /do-something, 做点什么, 自己看着办, 推进一下, do something useful, keep improving this project.
trigger: /do-something
compatibility: Claude Code, Codex
license: MIT
---

# 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、`feedback_seen` 之后的新评论、用户约束或开放风险有变化,
就重新红队追问:"目的还成立吗?新证据改变了最高价值任务吗?" 证据没变化且上轮已经判定无合格候选,快速 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 信号、
   未覆盖的高频关键路径,或多次独立出现的重复劳动。"感觉可以更好"不是证据。
2. **目的关联**:修完怎样直接推进项目存在的理由?说不出因果链就是旁支。
3. **持久成果**:本轮会留下修复、永久测试、生成器/门禁或用户可见能力中的哪一种?
   只运行已有测试并记录全绿、重复 sweep、只追加 DO.md,都不是持久成果。
4. **真正完成**:最终交付物能否在本轮完整产出并验证?关键路径仍写"后续再测",就是没做完。

四项全满足才执行。能连续找到多件合格的事,就允许后续运行连续推进,不按日期、次数或配额限流。

**真正无事可做**:先排除未回应反馈、失败 checks、未解决 issue/MR、DO.md 开放风险、
尚未持久化的重复验证和本轮能闭环的目的相关候选。全部为空才是 NO-OP;扫描草率不是无事可做。
NO-OP 时只更新本地 DO.md 的当前状态和证据指纹,不 commit、不 push、不创建 MR。

## 禁止

- **避重就轻**:因为怕错而选安慰剂工作(重排文档、加注释、改格式),除非它真是当前最高杠杆。
- **账本冒充交付**:验证没有发现缺陷、也没有新增永久门禁,就 NO-OP;不为验证记录创建 MR。
- **不可逆动作**:对外发消息、付款、删数据、调生产 API、开云资源、改写 git 历史、push(MR 模式下只推 `do/main` 除外)——一律不做,再高的杠杆也不做。
- **等待**:没有人在。不提问、不请求确认,用判断代替提问,把疑虑写进 DO.md 开放风险。

## MR 模式——让人类在远端收割

默认关闭。DO.md 约束写 `MR: on`,或以 `/do-something mr` 触发单次启用。
未启用时上文"绝不 push"原样生效。启用后,`do/main` 对应**一个活的 draft MR**:
每次运行结束都 push,MR 随之生长;人类合并即收割,关闭 MR 并删远端分支即否决。
不等"方向完成"才提 MR——但只有通过价值与完成门的产出才 push,每次 push 都是可合并的增量;
人类想什么时候收就什么时候收,机器不因等待而停下。

具体命令(GitHub `gh` / GitLab `glab`、评审线程的 resolve 写法)见 `references/mr-ops.md`。

**第 0 步:先回应反馈,再选新事。** 位于"续做优先于新开"之前:

1. `git fetch`。`do/main` 已进默认分支,或 MR 状态为已合并(squash 合并后祖先关系判不出,以 MR 状态为准)→ 视为收割,按"首次运行"重建分支;
   MR 已关闭(非合并)且远端分支已删 → 视为否决,同样重建。
2. 查 MR 的 CI 状态与反馈。反馈有两种来源,**必须都查**——只查可解决线程会漏掉全部普通评论
   (GitLab 直接发的评论 `resolvable=false`,GitHub 的 PR 对话区评论和 review 总评不在 review threads 里):
   - **CI 红**:修到绿就是本次唯一的事。没验证过的分支上不叠新产出。
   - **未解决线程**(人类和 CR 机器人一视同仁):逐条判断。认可就改、回复"已修:<commit>"并 resolve;
     不认可就回复理由,不 resolve,留给人裁决。同一线程与机器人最多来回 5 轮,超过就回复"留人裁决"停手;
     人类的线程不设上限。
   - **新普通评论**:创建时间晚于 DO.md 证据指纹里 `feedback_seen` 水位的所有非系统评论(含 ci-review 结论、人类裁决、
     其他 reviewer 意见),排除自己带 `<!-- do-something -->` 标记的回复。同样逐条认可就改、不认可就回复理由;
     普通评论无法 resolve,用一条带标记的回复逐条点名处理结果即闭环。处理完把水位推到本轮开始时读到的最新评论时间。
     指纹里没有水位(首次或旧格式)→ 读全部评论。
   - 反馈处理预计不到半次运行 → 处理完继续选新的一件事;否则它就是本次唯一的事。
3. 全绿、无未解决线程、水位之后无新评论 → 正常走三层判断。

**结束时**:四项价值与完成门全部通过、最终产物验证后才 commit 和 `git push origin do/main`。
根据 `origin/<default>...HEAD` 的完整 diff,概括当前 MR
相对默认分支的**主要可交付成果**,标题写成 `do: <具体成果>`:说清改了什么对象、带来什么结果,
不准拿长期不变的“目的”、泛泛的“继续改进项目”或本轮工作过程当标题。新 MR 的标题若与上一个已合并的
`do/main` MR 完全相同,说明概括仍不具体,结合本次 diff 补足区别;不要用日期、序号凑唯一。
无 MR 则用该标题新建 draft MR;已有 MR 也要按全部未合并改动重算并更新标题。
正文必须给 reviewer 足够证据判断价值、完成度和运行版本,格式见 `references/mr-ops.md`。

**与 ci-review 配对**:`ci-review` 装进仓库后,每次 push 分别给出 `execution` 与 `value` verdict。
你下一轮的第 0 步读它的评论;认可就修,不认可就用证据回应并留给人裁决。
ci-review 开了"通过即合并"档时,`do/*` 只有价值和执行双通过且无未解决线程才会自动合并:
下一轮第 0 步会看到 MR 已合并,按收割处理重建分支。你留下的"不认可、留人裁决"线程会挡住合并,这是唯一由你触发的人工介入点。
此时 MR 正文和 DO.md 里的验证声明就是审查对象,写不出验证方式的产出不会被合并,所以每次都要写清楚。
验证声明写到"审查者能在干净副本上逐条重跑"的粒度:写明变异/复现命令与预期退出码。
警惕验证工具本身静默失败——sed 方言差异(GNU 的 `0,/re/` 地址 BSD 不支持且不报错)、
变异脚本提前退出都会让你验证一个没被修改的文件;注入类验证必须先断言变异真的生效(文件内容变了),
再跑检查。声明与事实不符会消耗一整轮审查来回。

## DO.md——记忆与方向盘

`DO.md` 活在 `do/main` 分支上(非 git 则在 `do/` 目录里),保存有限状态,不保存逐轮流水账:

```markdown
# 目的
<一句话:这个项目为什么存在。第三层推断出的目的写在这里,人类可随时改写>

# 约束
<人类留下的边界,如"不要动 src/legacy"、"允许直改"、"MR: on"、"本周聚焦 X"。没有就留空>

# 当前状态
证据指纹:base=<默认分支 sha>;feedback=<CI/线程摘要>;feedback_seen=<已处理到的最新评论 created_at,取 API 原值>;issues=<开放事项摘要>;constraints=<约束摘要>
上次裁决:<正在做什么,或为什么 NO-OP>

# 已证实不变量
<已经有持久测试/门禁支撑、无需反复 sweep 的事实>

# 开放风险与候选
<尚未闭环的风险,以及下轮需要新证据才能成立的候选>
```

每次运行开始时读它(不存在则本次结束前创建),结束时更新对应字段,不追加逐轮日志;历史已经在 git 和 MR 中。
NO-OP 留在本地不提交;有效交付只提交与本次结果有关的最新状态。
人类通过编辑这个文件来掌舵;MR 模式下 MR 评论是同等的第二信道,第 0 步必须读。

## 结束一次运行

自检四问:证据与目的关联成立吗?承诺的事情真正完成了吗?最终产物验证过了吗?DO.md 是最新有限状态吗?
有一个否,就不能声称完成或 push。四个都是才停;MR 模式再确认双 verdict 所需正文已更新。

## 无人值守

```text
/loop 1h /do-something     # 每小时推进一次
```

或用 Claude Code 的 cron 在夜间定时运行 `/do-something`。
定时器只提供重新观察的机会,不构成必须产出的理由。没有新证据时,NO-OP 就是正确结果。

Files in this skill

  • SKILL.md11.1 KB
  • references/mr-ops.md4.6 KB
  • tests/test_flywheel_policy.py1.9 KB
  • tests/test_mr_title_contract.py1.9 KB

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.