ルール準拠を自動チェックする(後編)— Claude Codeに『オレたち流』を守らせる

に公開

この記事は Claude on SonicGarden の記事です。ソニックガーデンのプログラマが、Claude Codeの活用について書いています。#claude_on_sonicgarden

きっかけ

前編extract-rules によるルール抽出、中編merge-rules / apply-rules による組織ルールの共有について紹介しました。

ここまででルールの抽出と共有はできるようになったのですが、正直なところルールを書いてもClaude Codeに無視されることが結構あります。ルールファイルが増えるほどその傾向は強くなります。

最初はサブエージェントによるコードレビューにルールの観点も含めてチェックしていたのですが、通常のレビュー観点と混ぜるとルール違反の検出漏れがなかなか減りませんでした。

そこで、ルールチェックに特化したレビュースキルを別で作ることにしました。


作ったもの

/rules-review

これだけで、HEAD~1 を起点にした差分をルールファイルと照合してチェックしてくれます。--base-commit abc1234 で起点を変えることもできます。


仕組み

各ルールファイルの paths: フロントマターで変更ファイルとルールを紐づけます(paths: がないルールは project.md のように全変更ファイルに適用)。カテゴリごとにグルーピングした上で、グループごとに並列でサブエージェントを起動してチェックします。

AIエージェントの開発をしていて感じるのは、LLMに指示を守ってもらうにはできるだけ責務をシンプルにしたほうがいいということです。Claude Codeも本質的には同じはずなので、グループ単位で分けて各エージェントが見るべきルールと差分を絞ることで、レビュー精度は上がると考えています。ルールファイル1つずつに並列エージェントを立てたほうがより精度は上がるかもしれませんが、トークン消費がヤバいことになりそうなので現状はカテゴリ単位にしています。一般的なコード品質やバグの指摘は行わず、ルールファイルに書かれていない問題は報告対象外です。

出力例

違反なし:

All rules compliant

違反あり:

## Rules Compliance Violations

### .claude/rules/frameworks/rails-controllers.md

- **Violated rule**: コントローラーにビジネスロジックを書かない
- **Location**: app/controllers/users_controller.rb:15
- **Description**: createアクション内でユーザーの権限チェックロジックが直接記述されている
- **Suggested fix**: 権限チェックをPunditポリシーに移動する

どのルールの、コードのどこが違反していて、どう直すかまで出してくれます。


4つのスキルの全体ワークフロー

3回にわたって紹介してきた4つのスキルは、こんな感じで循環します。

スキル 役割 実行タイミング
extract-rules ルールの抽出 プロジェクト開始時、会話後、PRレビュー後
merge-rules 組織ルールの統合 ルールが更新されたとき
apply-rules ルールの適用 新規プロジェクト、ルール更新後
rules-review 準拠チェック コード変更時

ちなみに、これらのスキルを統合した dev-workflow というスキルも同じリポジトリにあります。計画 → 実装 → テスト → コードレビュー → ルール更新の流れの中で、完了時に --from-conversation を自動実行してくれるので、ルールが勝手に育っていきます。


おわりに

3回にわたって4つのスキルを紹介しました。

記事 スキル やること
前編 extract-rules プロジェクトの流儀を抽出する
中編 merge-rules + apply-rules 組織のルールを共有する
後編 rules-review ルール準拠をチェックする

ルールを書いただけではClaude Codeに無視されることが結構あるので、ルールの抽出・共有だけでは片手落ちだったなーというのが正直なところです。rules-review による準拠チェックを組み合わせて、今のところいい感じにルールを守らせることができている感触があります。興味があれば試してみてください。


今回紹介したスキルは以下のリポジトリで公開しています。
hiroro-work/claude-plugins


この記事はZenn/Qiitaにクロスポストしています

株式会社ソニックガーデン

Discussion