検査をどこで走らせるか
validate を手で打つだけでは、ドリフトは事後にしか分かりません。hook install には3つの形があり、それぞれ強制力の度合いが違います。実際に何をするのかをまとめました。
harnd validate は、実行したときにドリフトを教えてくれます。3つの hook install のバリエーションは、それをいつ走らせるかを、あなたが覚えていなくても決めてくれます。3つともAPIキーは不要です。
hook install(オプションなし)
Claude Code の「Stop hook」を .claude/settings.json に設置します。AIエージェントがターンを終えたと言った瞬間に harnd validate --diff --hook を実行します。
npx @harnd/cli hook installエラーは exit code 2 とともに stderr に出ます。Claude Code はこれを「エージェントは終了前にこれを直さなければならない」と扱います。ドリフトは、あなたが目にする前に、それを生んだのと同じループの中で見つかり、直されます。これは Claude Code 固有の仕組みです。
hook install --npm-script <name>
コミット前に既に走らせている npm script があるチーム向けです——たとえば "check": "tsc && vitest"。
npx @harnd/cli hook install --npm-script checkそのスクリプトの末尾に && npx @harnd/cli validate を追記します——常に末尾なので、既存のチェックが失敗すればそちらが先に報告されます。Claude Code に限らずどのエディタ・AIエージェントでも動き、既にそのスクリプトを呼んでいる CI や pre-commit hook でも機能します。冪等で、既に別のスクリプト経由で harnd を間接的に呼んでいる場合はそれを検出し、二重に追記しません。
hook install --agents-md
既存の CLAUDE.md または AGENTS.md に短い一節を追記し、UIを触った後に npx @harnd/cli scan を、コミット前に npx @harnd/cli validate を実行するようコーディングエージェントに指示します。
npx @harnd/cli hook install --agents-mdこれは自動化を何も設置しません——そのファイルを読んだAIエージェントが従うかもしれない、平文の指示です。CLAUDE.md や AGENTS.md が無ければ代わりに作ることもありません。harnd は .harnd/ の外にファイルを先回りして作ることはしません。
どれを使うか
- Claude Code を使っているなら、オプション無しの
hook installが最も強力です——ドリフトが直るまで、文字通りエージェントの終了をブロックできます。 - それ以外のAIコーディングエージェント を使っている、または CI や pre-commit hook でも強制したい場合は、
--npm-scriptが汎用の選択肢です。 --agents-mdは、上記のどちらかと組み合わせられる軽い後押しです。単体では何も強制しません——他の2つの代わりとして扱わないでください。
3つとも --dry-run を受け付け、書き込む前に何が書き込まれるかを表示できます。
どの harnd が走るのか
3つの形はいずれも npx @harnd/cli を走らせます。npx はいま居るプロジェクトに入っている方を優先するので、検査に使われるのは このプロジェクトの harnd です(全体に入れたものではありません)。
おかげで、そのリポジトリで作業する全員が同じ版を使えます。同時にこれは、自分で作ったのではないプロジェクトでフックを設置すると、そのプロジェクトが用意したコードが走るということでもあります — オプション無しの hook install は設置後に1回だけ動作確認のため実行し、以後はエージェントが作業を終えるたびに走ります。harnd に見せかけた別物を同梱することもでき、リポジトリの中身だけでは本物かどうか見分けられません(こちらが確かめられることは、プロジェクト側も書けるからです)。
そのプロジェクトのインストール手順を実行する必要すらありません。git は実行ビットも symlink もそのまま保存するので、その写しをコミット済みのファイルとして持ち込めるからです。clone しただけで条件が揃います。これはプロジェクト付属の道具に共通する性質で、husky や lint-staged、テスト実行器も同じです。そもそもそのプロジェクトの依存を入れる時点で同じだけの信用を渡しています。実務上の判断は短く済みます — 信用できるプロジェクトでだけ設置する。見知らぬリポジトリは、そのインストール手順を実行するときと同じ慎重さで扱ってください。
harnd は設定ファイルに、リポジトリ内の特定のファイルの場所を書き込みません。以前の作りでは「本物か」を確かめたうえで書き込んでいましたが、その確認はリポジトリにコミットするだけで通せるものでした。偽りの安心として残すより、確認ごと取り除いています。
hook install が加えたものを外す
このページが説明したものだけを戻したいなら npx @harnd/cli hook uninstall を使ってください。Stop フック・package.json の1行・CLAUDE.md の節を外し、.harnd/ には触れません——APIキーも残ります。
npx @harnd/cli uninstall は範囲が広く、それらに加えてAPIキーも削除します。使うのをやめたあとに生の秘密が残るほうが害が大きいためです。.harnd/ に溜まった知見——トークン・intent・意思決定——は --all を渡さない限り残ります。まず --dry-run で何が消えるかを確認してください。