knip をエージェントに入れさせ、pre-commit と CI で「使われていないコード」を毎回落とす
「knip を使って無駄コードを掃除して。build と test が今まで通り通ることも確認して」と頼むだけで、エージェントが導入→検出→削除→再実行を回す。続けて pre-commit と CI に入れさせれば、以後は不要コードが出るたびにエージェント自身が直す。
どんな時に使う?
- エージェントに書かせ続けた JavaScript/TypeScript のリポジトリに、使われていないファイル・export・依存が溜まっている
- 人のレビューでは不要コードを拾いきれない
- 「コードベースを小さく保つ」をエージェントの自走ループに組み込みたい
手順
- (ネットワーク制限がある環境なら)先に自分で
npm install -D knip - エージェントに頼む:
text
knipを使って無駄コードを掃除して。buildやtestが今まで通り通ることも確認して。→ 設定の作成、knip 実行、検出、削除、再実行までを繰り返す
- 暗黙に参照されているもの(例: Tailwind 関連)を消して build/test が落ちたら、エージェントが元に戻して
knip.jsonに無視設定を足す - 定着させる:
text
knipをpre-commitとCIに追加して。
なぜエージェントと相性がよいか
- pre-commit で落ちるとコミットが失敗し、エージェントがエラーを読んで直して再コミットする、という自走ループになる(人には煩わしいチェックも、エージェントには好都合)
- CI に入れておけば、GitHub Actions 上で動くリモートエージェント(Claude Code Action など)にも同じ効果がある
- よしこさんの OSS(difit)では、Codex への指示だけで、lockfile を除いて実質170行が減った
注意点
- knip は package.json にあるのに使われていない依存も見つける。消す前に build と test を必ず通させる
- pre-commit のフック管理は Lefthook、husky、prek(Rust 製)など。どれを入れるかもエージェントに任せられる
- 静的検査で自己検証させる考え方は hooks でリンターの結果をエージェントに返し、リンター設定は書き換えさせない(ハーネスの組み方) も参照
出典
- @yoshiko_pg 2026-02-20: @yoshiko_pg · 2026-02-20
- よしこ「AIエージェント × knipで無駄コードを簡単に掃除」(Zenn): zenn.dev