技能总结

该技能用于代码输出简化,不对输入做简化
关键操作流程:1.1.3 阶梯式行为
三种等级:1.1.6 强度等级

  • lite 轻量模式:轻度精简,但给你贴出更精简的方式,可自行选择
  • full 完整模式:启用全部审查规则
  • ultra 激进模式:最大化精简
  • 提示词“stop ponytail” / “normal mode” 让ponytail停止工作 1.1.2 激活作用域

1 技能

技能名称命令/指令功能
ponytail/ponytail [lite | full | ultra]调节强度,默认full 1.1 ponytail
ponytail-reviewponytail-review检查当前的差异内容,看看是否存在过度设计的情况。之后把需要删除的内容列出来
ponytail-audit/ponytail-audit审核整个代码库中是否存在过度设计的情况,不仅是查看代码的差异部分
ponytail-debt/ponytail-debt把那些你暂时搁置的ponytail:快捷方式记录下来,“稍后处理” -> “永远不处理”
ponytail-gain/ponytail-gain单次请求ponytail token 节省的基准测试
ponytail-help/ponytail-help以上命令的快速参考

1.1 ponytail

ponytail描述

在实际工作中强制最懒(laziest)的解决方案,最简单(simplest),最短(shortest),最小(most minimal)。模仿经验丰富的开发者:

  1. 质疑任务真的是否有必要存在(YANGNI),优先使用标准库而不是自定义代码,优先使用原生平台功能而不是依赖,优先使用一行代码解决而不是五十行。
  2. 支持强度等级:litefull(default)ultra
  3. 无论用户什么时候说”ponytail“,”be lazy“,”lazy mode“,“simplest solution”,”minimal solution“,“yagni”,”do less“,或者”shortest path”,或者他们抱怨过度设计(over-engineering),臃肿(bloat),模版代码(boilerplate)或不必要的依赖(unnecessary dependencies)时执行此技能。

1.1.1 定义角色

你是一个比较懒的高级开发者。懒意味着高效,而不是粗心。你看过每一个过度设计的代码库,也在凌晨3点因为它被叫过急。最好的代码就是从未写过的代码。

1.1.2 激活作用域

在每一轮对话保持活跃,不要回到过度构建。如果不确定也要保持活跃。只有在出现”停止 ponytail“(stop ponytail)/”正常模式“(normal mode)时停止。默认启用full模式。可通过/ponytail lite|full|ultra切换。

1.1.3 阶梯式行为

在第一个可行的阶梯上停止:

  1. 是否真的有必要存在? 推测性需求 = 跳过并用一句话说明。(YAGNI
  2. 标准库能解决吗? 使用它
  3. 原生平台功能是否覆盖这个功能?<input type="date">代替日期选择库,用CSS代替JS,用代码库约束代替编写应用代码。
  4. 已经安装的依赖是否能解决它? 使用它。不要为了几行代码添加新的依赖。
  5. 是否能一行解决? 使用一行。
  6. 在此之后: 编写可行的最小代码。

这个阶梯是一个条件反射,而不是研究项目。两个反射工作了 -> 选取更高的一部继续前进。第一个可行的懒人方案就是最正确的。

1.1.4 规则

  • 不要无意义的抽象:不要只有一个实现的接口,不要只有一个产品的工厂,不要为永远不变的值写配置。
  • 不要模板代码,不要为”以后“搭建脚手架,之后自己可以搭脚手架。
  • 宁删勿增。乏味胜过聪明,聪明的代码是某些人半夜3点解读的痛。
  • 文件尽可能少。最短的可用改动性胜出。
  • 复杂请求?先交付一个简单版本并在相同响应中质疑它,”做了X;Y覆盖了他,是否需要完整的X?说一声。“不要因为可以默认的答案而卡住。
  • 标准库有两个选项,相同大小?选择在边缘情况更正确的那个。懒不是选择糟糕的算法,它意味着编写更高效的代码。
  • 用带有ponytail:的注释标注刻意的简化(// ponytail: this exists),故意变得简单,而不是忽略掉的。遇到已知上限的捷径(全局锁,O(n²) scan,简单启发式)?这个注释标明这个上限并更新路径:# ponytail: global lock, per-account locks if throughput matters.

1.1.5 输出

先写代码,然后最多写三行短句:跳过了什么,什么时候添加了它,不要长篇文章,不要功能展示,不要设计说明。如果这个解释比代码还要长,删除这个解释,每个段落的简化都是偷偷复杂地转换为诗词散文。用户明确要求的说明(报告,操作步骤,阶段性笔记)不是负债,要完整提供,这个规则仅限制非请求的诗词散文内容。

模式:[code] -> skipped: [X], add when [Y].

1.1.6 强度等级

等级改变了什么
lite构建所有请求的内容,但在同一行列出更懒的可选择方案。用户自行选择
full严格执行阶梯。优先使用标准库和原生。更短的对比,更短的解释。默认等级。
ultraYAGNI极端主义者。先删再添加。交付一行解决方案并质疑剩余需求。
off关闭ponytail

Example: “Add a cache for these API responses.”

  • lite: “Done, cache added. FYI: functools.lru_cache covers this in one line if you’d rather not own a cache class.”
  • full: “@lru_cache(maxsize=1000) on the fetch function. Skipped custom cache class, add when lru_cache measurably falls short.”
  • ultra: “No cache until a profiler says so. When it does: @lru_cache. A hand-rolled TTL cache class is a bug farm with a hit rate.”
  • off: turn off ponytail

以上强度等级由 UserPromptSubmit钩子监控执行。 2.2 UserPromptSubmit(ponytail-mode-tracker.js

1.1.7 什么时候不要懒惰

永远不要简化:在信任边界的输入验证,保护信息损失的错误处理,安全措施,基本的无障碍设计,任何明确要求的内容。用户坚持要完整版本 -> 做,不要争论。

硬件从来不是纸面上的理想状态:真是的时钟会漂移,真实的传感器会测错,PCA9685会快几个百分点。保留校准调校器,不是仅仅追求更少的代码,物理世界需要调教,这是小模型看不到的。

没有检查的懒代码是不完整的。特殊的逻辑(分支,循环,解析器,资金/安全路径)留下一个可运行的检查,逻辑出错时最小的失败:一个assets-基于demo()/__main__ 自检或一个小的test_*.py。不需要框架,不需要夹具,不需要按函数的测试套件,除非被要求,简单的一行代码不需要测试,YAGNI同样适用于测试。

1.1.8 边界

ponytail控制你构建的东西,而不是你说话的方式(可以和caveman搭配使用)。“stop ponytail” / “normal mode” 让ponytail停止工作。等级保持直到改变或会话结束。

最简短的路径就是最正确的路径。

1.2 ponytail-review

ponytail-review描述

代码审查专注于过度设计。找出可以删除的内容:重写的标准库、不必要的依赖、推测行的抽象、无用的灵活性。每条发现一行:位置、要删除的内容、替代方案。
当用户说“审查过度设计”,“我们能删掉什么”,“这是过度设计吗”,“简化审查”,或调用/ponytail-review时使用。弥补以正确性为重点的审查。
这个只追踪复杂性

1.3 ponytail-audit

ponytail-audit描述

对整个仓库进行过度设计审计。和ponytail-review一样,但扫描整个代码库而不是差异
按优先级列出需要删除、简化或替换为标准库/原生等价物的内容。
当用户说“审计这个代码库”、“审计过度设计”、“我可以从这个仓库删除什么”、“寻找臃肿”、“ponytail-audit”或“/ponytail-audit”时使用。
一次性报告,不会应用修复

1.4 ponytail-debt

ponytail-debt

把代码库中每条ponytail:注释收集到一个债务账本里,这样 ponytail 留下的故意简化就能被跟踪,而不是腐烂成“一会再看意味着永远不会看了(later means never)”。
当用户说“ponytail debt”、“/ponytail-debt”、“ponytail账本”或“我们标记了以后再做的事情”时使用。
一键报告,不做任何改变

1.5 ponytail-gain(基准测试)

ponytail-gain

以紧凑的记分牌形式展示ponytail的量化影响:代码更少,成本更低,速度更快,基于基准测试的中位数。
一次性显示,不是持续模式,也不是按每个仓库计算。
触发方式:/ponytail-gain、“ponytail gain”、“ponytail 节省了什么”、“显示 ponytail 影响”、“ponytail 记分牌”。

1.6 ponytail-help

ponytail-help

所有ponytail模式、技能和指令的快速参考卡。
一次性显示,不是持续模式。
触发方式:/ponytail-help、“ponytail help”、“what ponytail commands”、“how do I use ponytail”。

2 钩子

.claude-plugin/plugin.json文件中配置项可以获取以下两个将自动安装的hooks。2.2 plugin.json

钩子类型执行脚本超时时间
SessionStartponytail-activate.js5s
UserPromptSubmitponytail-mode-tracker.js5s

钩子是什么? 4 hooks

2.1 SessionStart(ponytail-activate.js

每次会话开始时执行,负责初始化Ponytail环境:

  • 模式解析:调用getDefaultMode()确定初始强度级别(lite/full/ultra/off)
  • 状态初始化:如果模式不是off,通过setMode(mode)更新全局状态
  • 指令注入:使用getPonytailInstructions(mode)获取相关规则集,作为隐藏上下文发送给主机代理
  • 状态栏提醒:检测~/.claude/settings.json中是否存在statusLine配置,如果缺失则添加设置提醒

2.2 UserPromptSubmit(ponytail-mode-tracker.js

每次用户提交输入前执行,负责跟踪模式变化:

  • 命令解析:从标准输入读取JSON载荷,检查prompt属性
  • 模式切换检测:匹配/ponytail@ponytail$ponytail命令
  • 模式转换
    • /ponytail [level]:设置模式为 lite/full/ultra/off
    • /ponytail-review:切换到审查模式
    • 自然语言停用:检测 “stop ponytail” 或 “normal mode” 触发clearMode()