CLAUDE.mdではなくCODE_STANDARDS.mdに書いてレビュアーエージェントに渡す
概要¶
Claude Codeのコーディング規約をCLAUDE.mdに書くと実装フェーズのトークンを消費し続ける。代わりにCODE_STANDARDS.mdに分離し、PRごとにレビュアーエージェントが参照するパターンが効率的。
詳細¶
問題: CLAUDE.mdにコーディング規約を書くコスト¶
解決策: CODE_STANDARDS.mdに分離する¶
レビュアーエージェントの設定例¶
# .claude/agents/reviewer.md
---
name: code-reviewer
description: PRのコードをCODE_STANDARDS.mdに基づいてレビューする
---
CODE_STANDARDS.mdを参照し、以下を確認してください:
1. 命名規則の遵守
2. エラーハンドリングのパターン
3. テストカバレッジ
4. ドキュメントコメントの有無
GitHub Actions での自動レビュー¶
# .github/workflows/review.yml
name: AI Code Review
on: [pull_request]
jobs:
review:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Run Claude Code Reviewer
run: |
claude -p "$(cat .claude/agents/reviewer.md)" \
--context CODE_STANDARDS.md \
"Review the changes in this PR"
トークン効率の比較¶
従来(CLAUDE.mdに全部):
実装フェーズ: コンテキスト = プロジェクト概要 + 規約 + コード
レビューフェーズ: コンテキスト = プロジェクト概要 + 規約 + コード
新方式(分離):
実装フェーズ: コンテキスト = プロジェクト概要 + コード(規約なし)
レビューフェーズ: コンテキスト = 規約 + 変更差分のみ
→ 実装フェーズのトークン消費を大幅削減
CODE_STANDARDS.mdの書き方例¶
# Code Standards
## 命名規則
- 関数名: camelCase
- 定数: UPPER_SNAKE_CASE
- インターフェース: IPrefix は使わない
## エラーハンドリング
- エラーは必ずラップして文脈を付ける: fmt.Errorf("failed to X: %w", err)
- panicは使わない(テストコードを除く)
## テスト
- テーブルドリブンテストを使う
- テスト関数名: TestXxx_scenario形式
## コメント
- 公開関数には必ずGoDoc形式のコメントを書く
なぜ重要か / いつ使うか¶
- Claude Codeを使ったチーム開発でコーディング規約の自動チェックをしたいとき
- CLAUDE.mdが肥大化してトークン消費が気になるとき
- PRレビューの品質を一定に保ちたいとき
- 人間のレビュアーは設計・ロジックに集中し、スタイルチェックをAIに任せたいとき