ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

Ponytail ponytail-review:一个只找“该删什么“的过度设计代码审查技能

Ponytail ponytail-review:一个只找“该删什么“的过度设计代码审查技能 Ponytail ponytail-review一个只找该删什么的过度设计代码审查技能【免费下载链接】ponytailMakes your AI agent think like the laziest senior dev in the room. The best code is the code you never wrote.项目地址: https://gitcode.com/GitHub_Trending/po/ponytailPonytail 把最懒的资深工程师装进你的 AI Agent其中/ponytail-review是它提供的六个技能之一专门做一件事审查当前 diff只找过度工程over-engineering并输出一份删除清单。读完本文你将掌握这条审查规则的完整输出格式、五种发现标签delete / stdlib / native / yagni / shrink的判定标准、评分机制与边界约束以及它如何在 Claude Code、Codex、Hermes、pi 等宿主中以命令、技能或插件形式被触发——这套规则本身就是一份可以直接抄进任何 Agent 工作流的减法式审查规范。定位它不查正确性只查复杂度skills/ponytail-review/SKILL.md 的 frontmatter 把技能定位写得很明确输入是一次代码改动diff任务是对不必要的复杂度做审查每条发现一行位置、该删什么、用什么替代目标是让 diff 变得更短——The diffs best outcome is getting shorter触发条件用户说 review for over-engineering、what can we delete、is this over-engineered、simplify review或直接调用/ponytail-review与常规审查的关系是互补常规审查找正确性 bug、安全漏洞、性能问题而这个技能只猎杀复杂度this one only hunts complexity。这种切分不是随口一说它和 Ponytail 主技能的设计一脉相承。主技能 skills/ponytail/SKILL.md 定义了一条阶梯ladder要求 Agent 写代码前停在第一级站得住的横档上这段代码需要存在吗YAGNI代码库里已经有了吗复用别重写标准库能做吗用它平台原生能力能覆盖吗用原生如input typedate胜过日期选择器库已安装的依赖能解决吗用它能一行搞定吗一行最后才写能工作的最小代码ponytail-review 的五种标签下一节详述正是对这条阶梯的逆向检查delete:对应第 1 档stdlib:对应第 3 档native:对应第 4 档yagni:对应只有一个实现的抽象这类第 1 档违规shrink:对应第 6/7 档。也就是说主技能管写的时候别多写ponytail-review 管写完之后审掉多写的。输出格式一行一个发现技能文件给出的格式规范只有一句模板Lline: tag what. replacement.对多文件 diff前面加上文件名file:Lline: ...格式刻意压缩到最简不写段落、不写论证、不写建议考虑。每条发现必须包含三个要素——位置行号或文件:行号、该删/该换什么、替代品。替代品可以为无即直接删掉。五种标签delete、stdlib、native、yagni、shrinkSKILL.md 的 Tags 小节定义了完整的标签表这是整个技能的核心判定标准标签判定标准替代物要求delete:死代码、没人用的灵活性、投机性功能替代品无nothingstdlib:手搓了标准库本身就带的东西必须点名那个标准库函数native:依赖或代码在做平台已经会做的事必须点名那个平台特性yagni:只有一个实现的抽象、没人设置的配置、只有一个调用者的层—shrink:同样的逻辑、更少的行数必须展示更短的写法注意后三列替代物的强制性stdlib:不能只说用标准库必须写出具体函数名如dict(zip(...))、Intl.DateTimeFormatnative:必须写出具体平台特性shrink:必须给出更短形态本身。这保证了审查结果是可直接执行的删除清单而不是需要再翻译一遍的评论。yagni:的判定措辞也值得对照主技能 skills/ponytail/SKILL.md 的 Rules 一节no interface with one implementation, no factory for one product, no config for a value that never changes——一个实现接口的抽象、一个产品的工厂、一个永不变更值的配置就是 yagni 标签的三个标准形态。而惰性不是疏忽的底线信任边界校验、数据丢失防护、安全、可访问性永不裁剪同样适用于审查主技能 AGENTS.md 中 Not lazy about 一节列出的那些东西审查时同样不应标记为可删。示例拒绝模糊只给结论SKILL.md 的 Examples 小节先给了一个反面教材再给了五个正面样例。反面教材展示了 Ponytail 明确反对的审查腔调❌ This EmailValidator class might be more complex than necessary, have you considered whether all these validation rules are needed at this stage?这个 EmailValidator 类可能比必要的更复杂你考虑过这个阶段是否需要所有这些校验规则吗——含糊、无定位、无替代物。然后是五个正面样例完整继承如下✅ L12-38: stdlib: 27-line validator class. in email, 1 line, real validation is the confirmation mail. ✅ L4: native: moment.js imported for one format call. Intl.DateTimeFormat, 0 deps. ✅ repo.py:L88: yagni: AbstractRepository with one implementation. Inline it until a second one exists. ✅ L52-71: delete: retry wrapper around an idempotent local call. Nothing replaces it. ✅ L30-44: shrink: manual loop builds dict. dict(zip(keys, values)), 1 line.五条样例恰好各用一个标签也各自示范了标签的硬性要求stdlib:样例同时点名了替代函数并补了一句业务判断——真正的校验是确认邮件本身把校验逻辑的成本归零native:样例点名了Intl.DateTimeFormat并量化了收益 0 depsyagni:样例展示了多文件 diff 的repo.py:L88写法替代动作是内联直到出现第二个实现delete:样例展示了替代品为无的写法并且给出的删除理由是语义性的幂等的本地调用套重试包装没有意义shrink:样例直接写出了更短的那一行代码dict(zip(keys, values))。仓库 examples/ 目录下的实战案例如 examples/email-validation.md、examples/debounce.md展示了同一套思维在写代码侧的产物ponytail-review 则是把同样的判断标准用在审代码侧。评分唯一重要的指标是净删行数Scoring 小节规定审查必须以唯一重要的指标收尾net: -N lines possible.如果没什么可删输出Lean already. Ship.已经是精简的直接发布然后停止。这个收尾设计有两个作用一是把审查结果量化成单一数字让这次审查值不值可比较二是给了无可删一个明确出口避免 Agent 为了交差而硬凑发现——代码本来够精简时正确的输出就是没有发现。边界不修、不越界、可退出Boundaries 小节划出了四条硬边界这也是使用这个技能时最容易踩错的点范围仅限过度工程与复杂度。正确性 bug、安全漏洞、性能问题被明确排除在范围外explicitly out of scope应当路由到常规审查流程而不是在这条通道里报最低限度的测试不算臃肿。单个冒烟测试或基于assert的自检是 Ponytail 体系的最低要求而非 bloat——主技能 skills/ponytail/SKILL.md 的 When NOT to be lazy 一节规定非平凡逻辑要留下一个可运行的检查审查时必须与这条自洽永远不能把这类测试标记为删除对象只列清单不执行修复does not apply the fixes, only lists them可退出用户说 stop ponytail-review 或 normal mode 时回退到冗长的常规审查风格。第 3 条让它天然适合嵌入流水线审查产出是一份待办删除清单是否执行、何时执行由人决定Agent 不越权改码。在宿主中如何调用ponytail-review 作为技能存放在 skills/ponytail-review/SKILL.md各宿主通过各自的适配层把它注册成命令或技能适配规则见 docs/agent-portability.mdskills/ 持有核心行为宿主文件只是让它容易被加载的适配器。从源码结构看几种典型宿主的接入方式如下Claude Code / Codex 插件仓库根目录的 commands/ponytail-review.toml 是命令适配器内容与技能文件同源——它把整条规则压缩成一段 prompt 注入description Review changes for over-engineering, what can be deleted prompt Review the current code changes for over-engineering only, not correctness. One line per finding: Lline: tag what to cut. replacement. Tags: delete (dead code/speculative feature), stdlib (reinvented standard library), native (dependency doing what the platform does), yagni (abstraction with one implementation), shrink (same logic, fewer lines). End with the net lines removable. If nothing to cut: Lean already. Ship.这段 prompt 完整保留了技能文件的全部要素单行格式、五个标签、net 行评分、Lean already. Ship. 出口。安装与调用方式/plugin marketplace add/plugin install ponytailponytail详见 README.md 的 Install 一节之后直接在会话中发/ponytail-review即可对当前改动执行审查。Hermes Agentplugin.yaml 把ponytail-review同时注册在provides_commands和provides_skills两个列表里即它既是斜杠命令/ponytail-review也可作为ponytail:ponytail-review技能引用after-install.md 给出的命令清单里它是/ponytail-review [target]支持指定审查目标。pi agent harnesspi-extension/index.js 中pi.registerCommand(ponytail-review, ...)把命令映射为/skill:ponytail-review的别名发送即复用同一份 SKILL.md 的完整规则。Codex技能以前缀调用写作ponytail-review见 README.md Commands 一节的说明。指令级宿主Cursor、Windsurf、Cline、Copilot 等无技能支持的宿主没有斜杠命令只有常驻规则集此时可以把 skills/ponytail-review/SKILL.md 的正文内容直接贴给 Agent 作为一次性审查指令使用——因为它本身不依赖任何运行时。与 ponytail-audit 的区别diff 与全库容易混淆的相邻技能是 skills/ponytail-audit/SKILL.md。它的开头一句话就说明了关系ponytail-review, repo-wide. Scan the whole tree instead of a diff.——同一个标签体系、同一套边界只是扫描范围从当前改动扩大到整个代码树且结果按删得最多的排最前排序收尾指标也多了一项依赖数net: -N lines, -M deps possible.。两者都只列清单、不执行修复。选哪个取决于问题粒度审查一次提交用 review体检整个仓库用 audit。可验证性与工程约定这条规则并不是孤立的文本仓库 scripts/check-rule-copies.js 负责在修改紧凑规则文本时校验各宿主的副本保持一致npm test测试见 tests/会校验技能与其派生包如 OpenClaw 技能包不出现漂移。这意味着你从任何一个宿主看到的 ponytail-review 行为都来自这一份 skills/ponytail-review/SKILL.md且各宿主副本受脚本与测试约束对齐。小结把删当作审查的第一性ponytail-review 的价值不在它发现了什么模式而在它对审查形态的强制约束一行一个发现、标签必须对应可执行动作、替代物必须点名、以净删行数收尾、无可删则明说。它把 code review 从意见交换变成删除清单并且用边界条款不查正确性、不删最低限度测试、不改码保证了自己不会变成另一个什么都说的常规审查器。如果你的 Agent 工作流里需要一个瘦身专用的审查通道这份不到六十行的 SKILL.md 本身就可以作为规范直接引用。【免费下载链接】ponytailMakes your AI agent think like the laziest senior dev in the room. The best code is the code you never wrote.项目地址: https://gitcode.com/GitHub_Trending/po/ponytail创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表