コンテンツにスキップ

heal

heal は、コミットの合間に進むコードベースの劣化(複雑度の積み上がり、Hotspot、重複)を見張り、見つけた問題を TODO に変えます。次の Claude セッションが、その TODO を 1 コミットに 1 件ずつ片付けます。人が定期的に様子を見に行く必要はありません。

クイックスタート(5 分)

コンセプトを読む

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) を参照してください。

全体像は 機能 にまとめています。