【要約】Claude Code に「同じ指摘を二度させない」仕組みを hook で作った [Zenn_Python] | Summary by TechDistill
> Source: Zenn_Python
Execute Primary Source
// Problem
開発者がClaude Codeを用いた開発を行う際、AIに対して同じ指摘を何度も繰り返さなければならないという、精神的・時間的な消耗が課題となっている。AIはセッションが長くなると、以前の指示を忘却したり、例外的な理由を付けてルールを無視したりする傾向がある。
具体的な問題点は以下の通りである。
具体的な問題点は以下の通りである。
- ・CLAUDE.md等の指示ファイルが、長時間のセッションでは効力を失う。
- ・「何回同じ指摘をしたか」という履歴が管理できず、人間側も管理不能になる。
- ・AIが「今回は特別だから」といった論理で、規約違反を正当化しようとする。
// Approach
筆者は、指摘内容を個別のファイルとして永続化し、指摘回数(count)に応じて強制力を自動的に引き上げる仕組みを構築した。指摘を単なる対話ではなく、評価可能な「ルール」として定義している。
採用された具体的な手法は以下の通りである。
採用された具体的な手法は以下の通りである。
- ・指摘を1ファイル1ルール(Markdown + Frontmatter)で管理する。
- ・指摘回数に基づき、warn、ask、block、denyの4段階で制約の強さを決定する。
- ・3つのhook(inject, guard, stop-check)を使い、指示の注入、実行前の阻止、実行後の修正強制を多層的に行う。
- ・hook自体のバグで作業が止まらないよう、例外を握り潰す設計を採用する。
// Result
この仕組みの導入により、AIの規約違反を物理的に抑制し、開発プロセスにおける規約遵守の精度を向上させた。現在、47個のルールが運用されており、そのうち14個は機械的な検知が可能となっている。
得られた成果は以下の通りである。
得られた成果は以下の通りである。
- ・TDD(テスト駆動開発)の強制において、実装前にテストを書かせる順序を制御できた。
- ・GitHub ActionsのSHAピン留めなど、セキュリティ上重要な規約の遵守を自動化した。
- ・指摘回数を明示することで、AIに対して「これは重要なルールである」という重み付けを伝達できた。
Senior Engineer Insight
> AIエージェントの制御において、プロンプトによる「お願い」ではなく、実行環境の「制約」としてルールを実装した点が極めて優秀である。特に、指摘回数に応じて制約を強める設計は、誤検知による開発効率低下を防ぐための現実的な解だ。また、hookのバグが開発者の作業を人質に取らないよう、例外を握り潰してexit 0を返す設計思想には、実戦的なシステム運用の知見が凝縮されている。スケーラビリティの観点では、コンテキスト圧迫を防ぐための優先度付き切り捨てロジックも実装されており、実用性が高い。