DietrichGebert/ponytail
AIに「書かずに済むか」を先に考えさせ、頼んでいないコードを増やさない
どういうものか
コーディングエージェントに機能を頼むと、たいてい頼んだ以上のものが返ってくる。日付を選ぶ欄がほしいだけなのに、外部ライブラリを入れ、包むための部品を作り、見た目の調整まで足してくる。ponytail はこの「作りすぎ」を止めるための決まりごと一式で、エージェントがコードを書き始める前に、書かずに済む道を順番に確かめさせる。先の例なら、ブラウザに最初からある日付入力で終わる。
中心にあるのは7段の確認の順番だ。そもそも要るのか → すでにコードの中にあるか → 標準ライブラリにあるか → ブラウザなど実行環境の機能にあるか → もう入れてある依存パッケージにあるか → 1行で済むか、と上から問い、どれにも当たらなかったときにだけ最小限を書く。一方で、削ってはいけないものも決めてある。外から入ってくる値の検査、データを守るためのエラー処理、セキュリティ、アクセシビリティ、それに頼まれたものは、どの段でも省かない。見えている限界を承知のうえで簡略にした箇所には ponytail: という印のコメントを残させ、その上限と直し方を書かせるので、あとから探し出せる。報告のしかたも決まっていて、コードを先に出し、そのあと3行以内で「何を飛ばしたか、いつ足すか」を書かせる形。溜まった印をあとから一覧にするコマンドもあり、「あとで」が「ずっとやらない」にならないようにしてある。
中身の本体は文章の決まりなので、形を変えて多くの道具に配られている。Claude Code・Codex・Gemini CLI・OpenCode などにはプラグインとして入り、プラグインを入れた場合にかぎり強さを lite/full/ultra/off の4段で切り替えられる。ほかに、いまの差分から作りすぎを探す、リポジトリ全体を点検する、といったコマンドが付く。Cursor・Windsurf・Cline・Aider などには、常に効く決まりのファイルとして置く形になる。作者は効果の計測結果も公開しており、いま載っている Claude Haiku 4.5 での試験(FastAPI の雛形を実際に編集させる12の課題)では、書かれる行数が半分以下になったとしている。
どんなときに使うか
AIが頼んだ以上のものを作ってきて、読むのに疲れているとき
小さな修正のたびに新しいファイルや依存パッケージが増え、差分を確かめるだけで時間が溶ける。書く前に「既存のもので済まないか」を確かめさせるので、レビューする量そのものが減る。何を作らなかったかも説明させるため、足りないと思えば自分で頼み直せる。
すでに育ったリポジトリの「作りすぎ」を洗い出したいとき
プラグインとして入れた場合は、いまの差分やリポジトリ全体を点検させるコマンドがある。新しく書く分を抑えるだけでなく、すでにある過剰な部分を見つける側にも使える。
注意点
「短いほど良い」が合わない場面もある。 将来の拡張を見越してあらかじめ骨組みを作っておきたい、チームの決まった書き方に揃えたい、といった方針とはぶつかりやすい。そうした場合は強さを lite に下げるか、頼むときに意図を明示する必要がある。
公表されている効果は作者自身の計測である。 Claude のモデルを使い、題材を決めて測った数字で、削減幅は作りすぎの罠がある課題ほど大きく、もともと短く済む課題ではほとんど差が出ないと作者自身も書いている。自分の案件で同じだけ減るとは限らない。
Claude Code と Codex で自動の仕掛けまで使うには Node.js が要る。 起動時に決まりを差し込む仕組みなどが Node.js で動くため。決まりのファイルとして置くだけなら不要。外したあとに設定ファイルなどが少し残る点も README に書かれている。
ライセンスは MIT。