@goan999999: Codex 5.6 装上这个 Skill,能少写 90% 废代码 很多人用 Codex,需求一丢进去,AI 就开始给你堆组件、装依赖、写一大堆根本用不到的代码。token 越烧越多,代码反而越难维护。 这个 GitHub 项目叫 pony…
摘要
这篇文章介绍了一个名为ponytail的GitHub项目,它可以作为Codex的插件,强制AI在编码前判断是否真的需要写代码,从而减少90%的无用代码,降低token消耗并提高代码质量。
查看缓存全文
缓存时间: 2026/08/30 02:13
Codex 5.6 装上这个 Skill,能少写 90% 废代码
很多人用 Codex,需求一丢进去,AI 就开始给你堆组件、装依赖、写一大堆根本用不到的代码。token 越烧越多,代码反而越难维护。
这个 GitHub 项目叫 ponytail。它会在 Codex 写代码前先强制判断:这件事真的需要写吗?项目里有没有现成代码?标准库能不能解决?浏览器原生能力能不能解决?能不能只写一行?
只有这些路都走不通,才写最少、真正能跑的代码,在也不会出现垃圾代码了。
比如你让 AI 做日期选择器,普通 Agent 可能给你装库、写组件、加样式;ponytail 会直接告诉它:浏览器本身就有 。
安装提示词,直接复制给 Codex:
“请帮我安 https://github.com/DietrichGebert/ponytail…。先在终端依次执行:codex plugin marketplace add DietrichGebert/ponytail,然后执行 codex plugin add ponytail@ponytail。安装完成后打开 /hooks,检查并信任 Ponytail 的两个 lifecycle hooks,最后提示我重启 Codex 并新开一个会话。以后所有编码任务默认启用 full 模式;需要更强力地减少过度设计时,使用 @ponytail ultra。”
少写无用代码 = 少花 Token + 更快交付 + 更少 Bug
DietrichGebert/ponytail
Source: https://github.com/DietrichGebert/ponytail
Ponytail
He says nothing. He writes one line. It works.
~54% less code (up to 94%) · ~20% cheaper · ~27% faster · 100% safe
Measured on real Claude Code sessions editing a real open-source repo (FastAPI + React), against the same agent with no skill. ~54% is the mean across 12 feature tasks (Haiku 4.5, n=4); it reaches 94% where an agent over-builds (a date picker) and is near zero where the code is already minimal. ponytail keeps every safety guard while a bare "write one-liners" prompt drops one. (The earlier single-shot benchmark reported 80-94% as a flat figure; against a fair agentic baseline that is the per-task ceiling, not the average.) Full writeup · reproduce it.
You know him. Long ponytail. Oval glasses. Has been at the company longer than the version control. You show him fifty lines; he looks at them, says nothing, and replaces them with one.
Ponytail puts him inside your AI agent.
Before / after
You ask for a date picker. Your agent installs flatpickr, writes a wrapper component, adds a stylesheet, and starts a discussion about timezones.
With ponytail:
<!-- ponytail: browser has one -->
<input type="date">
More survivors in examples/.
Numbers
The honest measurement is a real agent doing real work: a headless Claude Code session editing tiangolo’s full-stack-fastapi-template (a real FastAPI + React repo), scored on the git diff it leaves behind. Twelve feature tickets, the same agent with and without the skill, n=4, Haiku 4.5.
| vs no-skill baseline | LOC | tokens | cost | time | safe |
|---|---|---|---|---|---|
| ponytail | -54% | -22% | -20% | -27% | 100% |
| caveman (terse-prose control) | -20% | +7% | +3% | +2% | 100% |
| “YAGNI + one-liners” prompt | -33% | -14% | -21% | -30% | 95% |
ponytail is the only arm that cuts every metric, and the only one that stays fully safe while doing it. The cut is biggest where there is a real over-build trap (date picker 404 to 23 lines, color picker 287 to 23, because it reaches for a native <input> instead of a component) and near zero on code that is already minimal. Full method, per-task tables, and limitations: benchmarks/results/2026-06-18-agentic.md.
Older single-shot numbers (isolated generation)
Five everyday tasks, three models, three arms (no skill, caveman, ponytail), ten runs, median reported. One prompt, one completion, counting lines of the answer:
This showed 80-94% less code. #126 fairly pointed out that the bare-model baseline pads its answer with prose and options, so that gap is partly a conversational-baseline artifact. The agentic numbers above are the corrected, defensible version. Reproduce the single-shot run with npx promptfoo eval -c benchmarks/promptfooconfig.yaml.
The rule was never “fewest tokens.” It is: write only what the task needs, and never cut validation, error handling, security, or accessibility. The code ends up small because it is necessary, not golfed. Lower cost and latency are a side effect on the models that follow the ladder; a terse reasoning model that spends thinking tokens deliberating the rungs can go the other way (on GPT-5.5 it does).
How it works
Before writing code, the agent stops at the first rung that holds:
1. Does this need to exist? → no: skip it (YAGNI)
2. Already in this codebase? → reuse it, don't rewrite
3. Stdlib does it? → use it
4. Native platform feature? → use it
5. Installed dependency? → use it
6. One line? → one line
7. Only then: the minimum that works
The ladder runs after it understands the problem, not instead of it: it reads the code the change touches and traces the real flow before picking a rung. Lazy about the solution, never about reading.
Lazy, not negligent: trust-boundary validation, data-loss handling, security, and accessibility are never on the chopping block.
Install
The most effort ponytail will ever ask of you:
The Claude Code and Codex plugins run two tiny Node.js lifecycle hooks, so node needs to be on your PATH (note for Nix/nvm users: it must be on the non-interactive shell’s PATH). If it isn’t, the skills still work, the always-on activation just stays quiet instead of erroring on every prompt.
Claude Code
/plugin marketplace add DietrichGebert/ponytail
/plugin install ponytail@ponytail
(You have to send two separate prompts for the install to work)
Same steps in the Claude Code Desktop app’s Code tab: type the two /plugin commands above into the prompt box, or click the + button next to it, choose Plugins → Add plugin to browse your configured marketplaces, and manage marketplaces from Customize in the sidebar.
Codex
codex plugin marketplace add DietrichGebert/ponytail
codex plugin add ponytail@ponytail
Run codex and open /hooks, review and trust its two lifecycle hooks, and start a new thread.
This same install also covers the Codex desktop app: restart the app after installing and it picks up the plugin.
GitHub Copilot CLI
copilot plugin marketplace add DietrichGebert/ponytail
copilot plugin install ponytail@ponytail
In an interactive Copilot CLI session, use the slash equivalents:
/plugin marketplace add DietrichGebert/ponytail
/plugin install ponytail@ponytail
Copilot CLI namespaces plugin commands by plugin name. For example:
/ponytail:ponytail ultra
/ponytail:ponytail-review
Pi agent harness
pi install git:github.com/DietrichGebert/ponytail
OpenCode
Add to opencode.json:
{ "plugin": ["@dietrichgebert/ponytail"] }
Run from a checkout instead (the plugin reuses hooks/ and skills/):
{ "plugin": ["./.opencode/plugins/ponytail.mjs"] }
Injects the ruleset every turn at the active level; adds the /ponytail commands (see Commands). OpenCode also auto-loads this repo’s AGENTS.md, so the rules hold even without the plugin. The plugin adds the lite/full/ultra/off levels.
The ./ path resolves against your project’s opencode.json; to share one checkout across projects, point it at the absolute path of the .mjs instead (it finds its hooks/ and skills/ relative to its own file).
Gemini CLI
gemini extensions install https://github.com/DietrichGebert/ponytail
Loads the ruleset as always-on context every session and registers the /ponytail commands; the skills/ ship too, activated when a task needs them.
The Gemini adapter intentionally does not ship a root hooks/hooks.json: Gemini auto-loads that path, while Ponytail’s lifecycle hooks use Claude/Codex event names.
Qoder
Qoder auto-loads AGENTS.md from the repo root as always-on context, so running ponytail from a checkout works with zero setup. For per-project rules, copy .qoder/rules/ponytail.md into your project’s .qoder/rules/. The six ponytail skills (/ponytail, /ponytail-review, /ponytail-audit, /ponytail-debt, /ponytail-gain, /ponytail-help) are available via Qoder’s Skill system; the plugin manifest at .qoder-plugin/plugin.json points at the skills/ directory.
For full plugin-tier support (automatic mode activation + ruleset injection on every prompt), add the hooks from hooks/qoder-hooks.json to your .qoder/settings.json. Replace PONYTAIL_DIR with the path to your ponytail checkout. Qoder’s UserPromptSubmit hook activates the default mode on first prompt and injects the ruleset every turn; PreToolUse with task|Task matcher injects the ruleset into subagents. Level switches (/ponytail lite|full|ultra|off) work automatically.
Antigravity CLI
Google is renaming Gemini CLI to Antigravity CLI (the agy binary); the same extension installs there:
agy plugin install https://github.com/DietrichGebert/ponytail
It reuses this repo’s gemini-extension.json. One difference: Antigravity converts the /ponytail commands into skills, so you type them into the chat (e.g. /ponytail-review as a message) instead of picking them from a slash menu. Until the migration completes (around June 18, 2026), gemini extensions install still works too. To run it as an always-on rule instead, drop the ruleset into .agents/rules/.
Hermes Agent
hermes plugins install DietrichGebert/ponytail --enable
Restart Hermes after installing. The plugin injects the active Ponytail mode before each LLM turn, registers the bundled skills as ponytail:<skill>, and adds /ponytail, /ponytail-review, /ponytail-audit, /ponytail-debt, /ponytail-gain, and /ponytail-help. In shared gateways, restrict /ponytail to trusted users with Hermes slash-command access controls; runtime mode is process-local.
CodeWhale
Reads AGENTS.md from the project root, zero setup. Copy AGENTS.md to your project, or run codewhale from a checkout of this repo. That’s it.
Swival
Stage the collection in your library first, then add the skills you want:
swival skills add --global https://github.com/DietrichGebert/ponytail # stage into ~/.config/swival/library
swival skills add ponytail # install the collection into this project
swival skills add --global ponytail # or activate it in every project
Swival also reads AGENTS.md from the project root and ~/.config/swival/AGENTS.md globally, the instruction-only fallback.
On the command line, use a $ prefix to explicitly activate a skill. For example: $ponytail-review.
Devin CLI
devin plugins install DietrichGebert/ponytail
Installs ponytail as a Devin plugin; skills are available as /ponytail:ponytail, /ponytail:ponytail-review, and so on.
OpenClaw
clawhub install ponytail
Installs ponytail as an OpenClaw skill from ClawHub; the review, audit, debt, gain, and help skills install the same way (clawhub install ponytail-review, and so on). OpenClaw applies it on coding tasks and also exposes it as a /ponytail command. Without ClawHub, copy .openclaw/skills/ponytail into ~/.openclaw/skills/.
Grok Build
grok plugin install DietrichGebert/ponytail --trust
Enable the plugin (off by default): /plugins → Plugins → Space on ponytail, or in ~/.grok/config.toml:
[plugins]
enabled = ["ponytail"]
Start a new session (or reload plugins). Skills show as /ponytail, /ponytail-review, /ponytail-audit, /ponytail-debt, /ponytail-gain, /ponytail-help. Verify with grok inspect. Grok can auto-invoke ponytail for coding tasks from its skill description; use /ponytail (or /ponytail lite, /ponytail full, /ponytail ultra) when activation needs to be explicit. Grok lifecycle hooks are not used because their SessionStart output cannot inject instructions.
AGENTS.md still works instruction-only from a checkout without the plugin.
That was it. He’d be proud. He won’t say it.
Active every session, with a handful of commands (see Commands). /ponytail ultra exists for when the codebase has wronged you personally. Startup and mode-change text shows the current mode.
Set the level for every new session with the PONYTAIL_DEFAULT_MODE env var (lite/full/ultra/off), or a defaultMode field in ~/.config/ponytail/config.json (%APPDATA%\ponytail\config.json on Windows). The default is full.
While active, the ruleset is also injected into every subagent spawned via the Agent tool. To scope that to specific agent types (say, keep it off read-only search agents), set the PONYTAIL_SUBAGENT_MATCHER env var to a regex tested against the subagent’s agent_type. It is unanchored and case-insensitive: explore|general matches either, ^general$ is exact, and plugin agent types look like plugin:name. Unset means inject into every subagent (the default); an invalid regex, or a subagent whose type the platform doesn’t report, also falls back to injecting.
Cursor, Windsurf, Cline, GitHub Copilot Chat (the VS Code, JetBrains, and Visual Studio editor extension, not the standalone Copilot CLI covered under Install), Aider, Kiro, Zed, CodeWhale, Swival, Qoder: copy the matching rules file from this repo (.cursor/rules/, .windsurf/rules/, .clinerules/, .github/copilot-instructions.md, AGENTS.md, .kiro/steering/, .qoder/rules/).
Kiro: copy .kiro/steering/ponytail.md to ~/.kiro/steering/ (global) or .kiro/steering/ in your project.
GitHub Copilot CLI fallback (instruction-only mode): it reads AGENTS.md and .github/copilot-instructions.md in a project, or copy the rules into ~/.copilot/copilot-instructions.md to run ponytail in every project. This path keeps always-on guidance, but does not add plugin mode switches or hooks.
VS Code with the Codex extension reads AGENTS.md, which this repo ships, so it works from the repo root with no setup (~/.codex/AGENTS.md makes Codex global).
JetBrains Junie can read AGENTS.md once you point it there in Settings → Tools → Junie → Project Settings → Guidelines Path (it is not automatic yet). This repo ships AGENTS.md; .junie/guidelines.md is Junie’s legacy path.
Amp (Sourcegraph) reads AGENTS.md from the working directory and parent directories up to $HOME, which this repo ships, so it works with no setup (~/.config/amp/AGENTS.md works globally).
Jules (Google) reads AGENTS.md from the repository root, which this repo ships, so it picks up the ruleset with no setup.
Which files map to which agent: Agent portability.
Uninstall
| Host | Command |
|---|---|
| Claude Code | /plugin remove ponytail |
| Codex | codex plugin remove ponytail |
| Devin CLI | devin plugins remove ponytail |
| Grok Build | grok plugin uninstall ponytail |
| Pi agent | pi uninstall ponytail |
| Cursor / Windsurf / Cline / Qoder / etc. | Delete the copied rule file |
These remove the plugin’s own files. They leave behind a small amount of state ponytail writes outside the plugin folder: the mode flag, ~/.config/ponytail/config.json, and (if you accepted the setup nudge) a statusLine entry in ~/.claude/settings.json. Run node scripts/uninstall.js to clean those up too. Run it before the host remove command above — the script is itself a plugin file, so removing the plugin first deletes it (or run it from a separate clone of this repo). It only removes the statusLine entry if it points at ponytail’s own script, so a statusline you set up yourself is left untouched.
Commands
| Command | What it does |
|---|---|
/ponytail [lite | full | ultra | off] | Set the intensity, or turn it off. No argument reports the current level. |
/ponytail-review | Review the current diff for over-engineering, hands back a delete-list. |
/ponytail-audit | Audit the whole repo for over-engineering, not just the diff. |
/ponytail-debt | Harvest the ponytail: shortcuts you’ve deferred into a ledger, so “later” doesn’t become “never”. |
/ponytail-gain | Show the measured impact scoreboard (less code, less cost, more speed) from the benchmark. |
/ponytail-help | Quick reference for the commands above. |
Commands need a skill-capable host (Claude Code, Codex, Devin CLI, OpenCode, Gemini, pi, Swival, Hermes Agent, Qoder, Grok Build). In Codex they’re skills, invoke with @ (@ponytail-review). The instruction-only adapters (Cursor, Windsurf, Cline, Copilot, Kiro, Antigravity) load the always-on ruleset without the commands.
Development
When changing the compact rule text, keep the agent copies aligned:
node scripts/check-rule-copies.js
npm test
The OpenClaw skill package (.openclaw/skills/) is generated from skills/; rerun node scripts/build-openclaw-skills.js after changing a skill, the test suite fails if it is stale. To publish the skills to ClawHub, run clawhub login once, then node scripts/publish-openclaw-skills.js (it publishes all six at the package.json version; pass --dry-run to preview).
The correctness benchmark spawns Python for email and CSV checks; python3 is tried before python. CSV checks need pandas installed locally.
FAQ
Can I use it with caveman? Yes, and you should. Caveman shrinks what the agent says; ponytail shrinks what it builds. Different halves, no overlap: caveman leaves code byte-for-byte exact, ponytail stays out of the prose. Terse talk about minimal code.
Does it need a config file?
No. An optional ~/.config/ponytail/config.json or PONYTAIL_DEFAULT_MODE env var can set the default level, but nothing is required.
What if I really need the 120-line cache class? You don’t. Insist anyway and he’ll build it. Slowly. Correctly. While looking at you.
Does it scale? The code you never wrote scales infinitely. Zero bugs, zero CVEs, 100% uptime since forever.
Why “ponytail”? You know exactly why.
Sponsors
License
MIT. The shortest license that works.
Star History
govin.eth | G哥 (@goan999999): Codex 5.6 + last30days-skill,直接把全网信息变成你的赚钱情报系统
90%的人不知道。信息差,依然是 AI 时代最好赚的钱之一
最快的捷径,不是每天刷 8 小时 X,而是让 Codex 直接挖穿 Reddit、X、YouTube、TikTok、Hacker News、GitHub、Polymarket 等 10+ 搞钱信息源
最近 GitHub 上 Trending
相似文章
@vikingmute: 发现这个 Ponytail 和 Codex 是绝配了https://github.com/DietrichGebert/ponytail… GPT 写兜底代码上瘾了,没有明确指示总是写一大堆防御性代码,看的想哭。 它的核心理念是 “The…
Ponytail是一个AI代理技能,通过强制代理先检查是否需要写新代码来大幅减少过度工程,声称能减少80-94%的代码量和42-75%的成本。作者推荐与Codex搭配使用,并已在GitHub上开源。
@FakeMaidenMaker: Codex 的最强 Skill 你都装了吗? 这 6 个 skill 装上(Codex、Claude Code、Cursor 都能装),它能干的活远超你想象,这些 Skill 的口碑早已被各大社区验证过: 1、Superpowers(ob…
推荐了六个增强Codex、Claude Code、Cursor等AI编程助手的Skill插件,包括Superpowers、OpenAI官方插件、claude-mem、Agent-Reach、GitNexus和Humanizer-zh,涵盖工作方法、长期记忆、互联网访问、代码理解等功能。
@aronhouyu: https://x.com/aronhouyu/status/2063561548145275255
介绍了一个名为awesome-codex-skills的开源仓库,收录了上千个针对Codex(以及Claude Code、Gemini CLI等)的预设技能(Skills),涵盖开发、数据、协作等场景,并提供了安装和使用指南,帮助用户复用工作流。
@0xQiYan: 装完 Codex 不搞钱?难道等着吃灰? 很多人装完 Codex,只会让它改代码、写脚本。 但我觉得更有想象力的玩法,是让它参与整条视频制作流程。 给 Codex 装上这 6 个 GitHub 上的视频 Skills,它就不只是写代码的工…
介绍如何为 Codex 安装6个 GitHub 视频技能,用于脚本、分镜、剪辑、渲染等完整视频制作流程,并推荐搭配方案。
@AI_jacksaku: https://x.com/AI_jacksaku/status/2068702722807771294
本文整理了Codex必装的10个高价值Skills,涵盖规划、代码质量、前端实现、自动化测试、CI/CD、安全及外部工具接入,并提供了安装方法和推荐组合,帮助用户提升开发效率。
