Claude Codeを「とりあえず使う」段階を超えたら、次は仕組みで効率化するフェーズだ。プラグイン・メモリ・フックを組み合わせることで、トークン消費を60%以上削減しながら複数プロジェクトを並行して扱えるようになる。実際に12のリポジトリで実運用しているセットアップを参考に、ポイントを解説する。
プラグインは多ければいいわけじゃない。毎セッション読み込まれるものはコンテキストを消費するため、本当に使うものだけを厳選するのが鉄則だ。
| プラグイン | 用途 |
|---|---|
| newword-hunter | SEOキーワード発掘(Google TrendsやSEMrushをCDP経由でスクレイピング) |
| gsd | フェーズ分けと依存関係分析を含む構造化プランニング |
| code-reviewer | 重要度別のPRレビュー自動化 |
| brainstorming | 機能スコーピング |
| debugging | 根本原因のトレース分析 |
| claude-md-improver | リポジトリのオンボーディングドキュメント整備 |
v2.1.139では claude plugin details <name> コマンドが追加され、プラグインごとのセッション推定トークンコストを事前に確認できるようになった。どのプラグインが重いか把握したうえで選定できるのはありがたい。
「全部読み込んでおけばいい」という発想は、コンテキストとコストの両面で無駄が多い。3層のロード戦略を使うと平均セッションで60〜65%のトークン削減が実現できる。
受け取ったプロンプトのキーワードから作業の種類を判定する。この時点ではまだファイルを読まない。
判定された作業に関連するファイルを絞り込み、各20行ほどだけロードする。
実際に作業を進めながら、本当に必要になったファイルだけを動的に読む。
「全部ロード」の約80行に対して、この方法では約35行で済む。コンテキストを節約しつつ必要な情報には確実にアクセスできる。
フックは「実行されるまでコンテキストを消費しない」唯一の抽象化だ。しかし、効果よりコストが上回るフックは削除すべきだ。
SessionStartコンテキストローダー
セッション開始時にプロジェクト固有のコンテキストをロードする。
PreToolUse bashリンター
sleep のチェーン実行や --no-verify フラグの使用をブロックする。悪い習慣を自動的に防いでくれる。
UserPromptSubmit 明瞭性チェッカー
曖昧なプロンプトを送信前にチェックする。
なお、v2.1.139では continueOnBlock の設定が追加され、フックがブロックした際の拒否理由をClaudeにフィードバックして処理を継続させることができるようになった。これにより「なぜブロックされたのか」をClaudeに伝えた上で別の方法で試させるといったワークフローが実現できる。
| 問題 | 解決策 |
|---|---|
| DrissionPageがChrome 8タブ以上でハングする | urllib + websocketでCDPを直接叩く |
| キーワードにCRLF不一致が出る | 明示的に .rstrip('\r\n') でノーマライズ |
| 複数エージェントでポート9222が衝突する | エージェント1つにつきポート1つ(9222/9223)のルールを固定 |
| メモリに重複ファイルが315件 | 「保存する価値があるか」の基準を明文化し、毎月コンパクト実行 |
Claude Codeを本格的に使いこなすには、個々のセッションの質を上げるだけでなく、フック・メモリ・プラグインを組み合わせたシステム設計が重要になってくる。特にメモリの3層ロード戦略とフックの厳選は、複数リポジトリを管理する場合に即効性が高い。v2.1.139の claude plugin details コマンドも活用して、どのプラグインがどれだけコストを食っているかを可視化するところから始めてみよう。