◉CLAUDE LABEN
●2.1.296 — サブエージェントごとに autoCompactWindow を指定でき、ワークフロー用のモデルも環境変数で固定できます●HAIKU 5.5 — 2.1.293(10/07)から claude-haiku-5-5 が Anthropic API の既定の Haiku モデルになりました●SONNET 4.5 — Claude API での提供終了は 11/30、残り47日。移行先は Sonnet 5.5●Q&A — Mod が「エラーなしで何も描かれない」ときに見る3か所が共有されています●AGENTS.MD — Codex と Claude Code を同じフォルダで使うとき、AGENTS.md と CLAUDE.md の入口をどう分けるかの整理が出ています●NEW — 「cd して git add して commit」の承認が毎回出るのは、設定の抜けではなく仕様でした●2.1.296 — サブエージェントごとに autoCompactWindow を指定でき、ワークフロー用のモデルも環境変数で固定できます●HAIKU 5.5 — 2.1.293(10/07)から claude-haiku-5-5 が Anthropic API の既定の Haiku モデルになりました●SONNET 4.5 — Claude API での提供終了は 11/30、残り47日。移行先は Sonnet 5.5●Q&A — Mod が「エラーなしで何も描かれない」ときに見る3か所が共有されています●AGENTS.MD — Codex と Claude Code を同じフォルダで使うとき、AGENTS.md と CLAUDE.md の入口をどう分けるかの整理が出ています●NEW — 「cd して git add して commit」の承認が毎回出るのは、設定の抜けではなく仕様でした
記事一覧/Claude.ai
◉ Claude.ai/2026-09-15中級

戻ってしまう指示を、会話・スタイル・設定ファイル・フックのどこに置くか

コメントを付けないで、この語は訳さないで。伝えたはずの指示が数往復で戻ってくるとき、直すのは言い方ではなく置き場所です。会話・スタイル・プロジェクト設定ファイル・フックの四つの層を同じ一文で比べ、どの指示をどこへ移すかの判断基準をお伝えします。

instructionsclaude-code132hooks20settings6workflow26

受託でお預かりしているサイトの改修中、同じ一行を三度書いておりました。「コードに説明のコメントは付けないでください」。一度目は効きます。二度目も効きます。四往復ほど進んで別のコンポーネントに移ったところで、// 状態を更新する という、コードをそのまま言い直しただけの行が戻ってまいりました。

最初のうち私は、言い方が足りないのだろうと考えておりました。強い語を足し、大文字にし、理由まで添えて書き直しました。結果は芳しくありませんでした。指示は弱かったのではなく、読み直されない場所に置かれていたのです。

置き場所には段があります。そして段ごとに、読み直される回数がまったく違います。好みは上の層に、外せない決まりは下の層に。 この線引きに移してから、同じ指示を三度書く日がほとんどなくなりました。

指示が戻るのは、置いた場所が読み直されないからです

Claude に指示を渡せる場所は、大きく四つに分かれます。上ほど手軽で、下ほど回数に強い構造です。

層置く場所読み直されるタイミング
① 会話その場のメッセージ直後の数ターンのみ。要約や話題の転換で薄まります
② スタイル・カスタム指示Claude アプリのカスタムスタイル、プロジェクトのカスタム指示、Claude Code の output styles会話をまたいで効きます。主題が離れると弱まります
③ プロジェクト設定ファイルCLAUDE.md、プロジェクト直下の設定セッションの開始ごと。置き場所とキー名が正しい場合に限ります
④ 実行時の歯止めフック、検査スクリプトツールが動くたび。判定できる指示だけが対象です

同じ困りごとは Claude Code の Issue にも積み上がっております。議論が割れているのは「どう言えば効くか」の部分で、層を分けて比べた記録は見当たりませんでした。それなら自分の手元で比べるのが早い、と考えた次第です。

同じ一文を四か所に置いて、そのあとの十往復を見ました

条件をそろえます。指示は「コードに説明のコメントを付けない」の一文だけ。作業は、受託サイトの小さな UI 修正を十回続けるというもの。毎回ファイルを開いて直させ、コメント行が復活した往復の番号を数えました。

層戻ってきた往復破れ方
① 会話の冒頭で一度だけ伝える三〜四往復目ファイルが替わった直後に戻ります
② スタイルに書く七往復目以降会話はまたげますが、長い実装の途中で薄れます
③ 設定ファイルに書く戻らずただし書き間違いに気づけません
④ フックで止める戻らず判定できない指示は、そもそも載せられません

意外だったのは③です。戻らなかったのではなく、戻っていないことを自分で確かめる手立てがない——そこが③と④の本質的な差だと気づいたのは、数日おなじ設定のまま走らせたあとでした。設定ファイルは、キー名を一文字間違えても何も言わずに無視されます。この黙り方についてはsettings.json のキー名を1文字間違えても、Claude Code は何も言わずに無視しますで詳しく書いております。

好みは上に、決まりは下に

四つの層を、指示の性質で振り分けます。私が使っている基準は二つです。破れたときに実害が出るか。そして、破れたかどうかを機械で判定できるか。

  • 好み(口調、段落の長さ、絵文字の有無、説明の詳しさ)は①②で足ります。戻っても言い直せば済みますし、そもそも厳密に測れません。
  • 決まり(触らせないファイル、コミットの可否、命名規則、訳さない固有名詞)は③④へ移します。戻ると後片付けが要りますので、言い直しでは追いつきません。

個人開発で続けている壁紙アプリのストア文言を多言語へ広げるときも、同じ形で詰まりました。「アプリ名と機能名は訳さないでください」を会話で伝えますと、言語が三つ、四つと増えたあたりから訳され始めます。いまは訳さない語を一覧にしたファイルを置き、仕上がりに固有名詞がそのまま残っているかを最後に機械で見ております。会話で頼むのをやめた、というより——頼む相手を層ごとに変えた、という感覚に近いです。

決まりを外させないなら、読ませるのではなく止めます

④の実物をお見せします。編集が終わった直後に、そのファイルだけを見る形のフックです。settings.json に置きます。

{
  "hooks": {
    "PostToolUse": [
      {
        "matcher": "Edit|Write",
        "hooks": [
          {
            "type": "command",
            "command": "$CLAUDE_PROJECT_DIR/.claude/hooks/no-echo-comments.sh"
          }
        ]
      }
    ]
  }
}

呼ばれるスクリプトです。標準入力に届く JSON から、いま編集されたファイルのパスを取り出します。

#!/usr/bin/env bash
# PostToolUse フック: 編集直後のファイル 1 つだけを見ます
INPUT=$(cat)
FILE=$(printf '%s' "$INPUT" | python3 -c 'import json,sys; print(json.load(sys.stdin).get("tool_input",{}).get("file_path",""))')
 
# 対象を絞ります。設定ファイルや Markdown まで見ると誤検知が増えます
case "$FILE" in
  *.ts|*.tsx|*.js|*.jsx) ;;
  *) exit 0 ;;
esac
 
# コードをそのまま言い直しただけの行を拾います
HITS=$(grep -nE '^[[:space:]]*//[[:space:]]*.+を(返す|設定する|更新する|取得する|初期化する)[[:space:]]*$' "$FILE")
 
# 何も無ければ黙って終わります
[ -z "$HITS" ] && exit 0
 
{
  echo "コードを言い直しただけのコメントが残っています。削ってから次へ進んでください:"
  echo "$HITS"
} >&2
exit 2

期待される動きはこうなります。

$ # Claude が Edit を実行した直後
コードを言い直しただけのコメントが残っています。削ってから次へ進んでください:
42:  // 状態を更新する

要点は三つです。第一に、exit 2 は「やり直させる」合図で、標準エラーへ書いた文面がそのまま Claude へ戻ります。第二に、対象拡張子を先に絞ります。全ファイルを見ますと、設定ファイルのコメントまで拾って作業が止まります。第三に、通ったときは何も出しません。成功時まで饒舌なフックが何を招くかは、検証スクリプトの出力を、そのまま hook から返してはいけませんに書いたとおりです。

なお、コードを書かない使い方でフックが手元に無い場合は、③までで止めて構いません。そのかわり、③に置く一文を「判定できる書き方」にしておきます。「簡潔に」ではなく「一文を四十字以内に」と書けば、あとから自分の目でも数えられます。

それでも戻るときに確かめる三つのこと

  1. 置き場所とキー名が正しいか。 効いていないのではなく、読まれてすらいない場合があります。まずファイルが読み込まれた形跡を確かめます。
  2. その指示は判定できる形か。 「丁寧に」「賢く」は、層をいくら下げても守られたかどうかを確かめられません。数えられる言葉へ置き換えます。
  3. 同じ層に矛盾する二文が無いか。 設定ファイルが育ってきますと、半年前の一行と今日の一行が逆を向いていることがあります。長い会話で指示が薄れる感覚については前回の続きを頼むとき、メモリと過去チャットの検索のどちらに頼るかにも書いております。

今日できることを一つだけ挙げます。いま会話のなかで三度言い直している指示を一つ選び、ひとつ下の層へ移してみてください。三度書いているという事実そのものが、その指示の置き場所が合っていないという合図です。

私自身、いまだに②で足りるものを④まで下ろしてしまい、誤検知に足を取られることがあります。層を上げ下げしながら落ち着く場所を探すことも、作業のうちなのかもしれません。お読みいただきありがとうございました。

シェア

お読みいただきありがとうございます

Claude Lab は広告なしで運営しており、サーバー費用などの運営コストはメンバーシップのご支援で賄っています。実装コード・ベンチマーク・本番設計パターンなど、実務でお役立ていただける記事を毎日更新しています。もし読んでよかったと感じていただけましたら、ぜひご覧ください。

  • ✦コピー&ペーストで使える実装コード付き
  • ✦毎日新しい上級ガイドを追加
  • ✦¥580/月 または ¥1,480 の永久アクセス
メンバーシップを見る →

もしこの記事がお役に立ちましたら、チップ(¥150)で応援いただけると大変励みになります。広告なしでの運営を続けるため、皆さまのご支援が大きな力になっています。

関連記事

◉ Claude.ai2026-09-17
Claude の上限に当たる前にやめること — 5時間の区切りに合わせて一日を組み直す
Claude の使用量は5時間の区切りごとに回復しますが、その区切りは時計ではなく自分が送った最初の一通から始まります。上限に当たってから慌てないために、一日の順番をどう入れ替えたかを書き残します。
⟐ Claude Code2026-05-02
Claude Code の Edit ツールで「old_string is not unique」エラーを止める実践的な書き換え戦略
Claude Code の Edit ツールで「old_string is not unique」が頻発するのは、編集ターゲットの一意性をプロンプト側で保証していないことが根本原因です。再発を防ぐ書き換え戦略を解説します。
⟐ Claude Code2026-05-02
Claude Code のステータスラインを自分好みに作り変える — モデル名・残コンテキスト・Git 状態を1行で見せる設定例
現在のモデル・残コンテキスト・Gitブランチを1行で確認できるClaude Codeのステータスライン設定例を紹介します。シェルスクリプトとNode.jsの両方の実装、エラーを握りつぶして会話を壊さない工夫、アスキーで描く残コンテキストバー、プロジェクトごとの表示切り替えまで扱います。