heal
heal は、コミットの合間に進むコードベースの劣化(複雑度の積み上がり、Hotspot、重複)を見張り、見つけた問題を TODO に変えます。次の Claude セッションが、その TODO を 1 コミットに 1 件ずつ片付けます。人が定期的に様子を見に行く必要はありません。
クイックスタート(5 分)
コンセプトを読む
なぜ heal なのか
Section titled “なぜ heal なのか”AI コーディングエージェントは、頼まれた次の変更を作るのは得意です。ところがコードベースは絶えず変わっていきます。複雑度が積み上がり、同じファイルが何度も書き換えられ、重複したブロックが少しずつ入り込みます。エージェントはこうした長い時間をかけた変化を見ていません。外からシグナルが届かなければ、それを追いかけられるのは人だけです。
heal はこの隙間を埋めます。git の post-commit フックが Critical / High の問題をコミットの出力にそのまま表示し、heal status が同じ TODO リストを /heal:refactor スキルに渡します。スキルは修正を提案し、承認されたものを 1 件ずつコミットします。
heal が見るのは、3 つのファミリと、オプトインの Semantic です。
- Code は常にオンです。複雑度、churn、重複、Hotspot、凝集度を見ます。
heal initを実行したプロジェクトでは、7 つのメトリクスと Hotspot の装飾が最初から有効です。 - Test(オプトイン)は、既存のカバレッジリポータが出す
lcov.infoを読み、テストの届いていないよく変わる箇所と、ソースから取り残されたテストを見つけます。 - Docs(オプトイン)は、ペアになったドキュメントを、それが説明するソースと比べ、内容のずれ、リンク切れ、孤立ページを見つけます。
- Semantic(オプトイン)は、名前と中身が合わない関数、何も確かめていないテスト、コードと合わなくなったドキュメントのように、メトリクスでは答えられない問いを TypeSafe の分類モデル Jev に投げます。heal の中でネットワークに内容を送るのはこの機能だけで、それも
heal semantic askを実行したときに限ります。詳しくは Semantic (Jev) を参照してください。
全体像は 機能 にまとめています。