anchor left anchor right

Jun 01 2026 AIツール活用

Claude Codeの過去の質問をスクロールで遡る手間を解消|最初にすべきフック設定【2026年版】

anchor left anchor right

本記事の前提と必要な準備を最初にまとめます。

  • 本記事の目的:Claude Code の settings.jsonUserPromptSubmit フックを設定し、質問単位のチャプターを自動登録する方法を紹介します。
  • 想定読者:業務で Claude Code を日常的に使うエンジニア・編集者
  • 設定時間:約5分
  • 必要なもの:Claude Code、テキストエディタ、~/.claude/settings.json(またはプロジェクト直下の .claude/settings.json)への書き込み権限

結論:settings.jsonUserPromptSubmit フックを1つ追加するだけで、毎ターン応答フローが強制注入され、mark_chapter が確実に呼ばれるようになります。

こんなことに困っていませんか?(Before)

本設定が必要になる典型的な悩みは次の通りです。

  • Claude Code との長い会話で、過去の質問を探すのにスクロールで遡るしかなく時間がかかる
  • 公式の「チャプターとしてピン留め」機能はあるが、毎回手動でクリックして登録する必要があり押し忘れる
  • CLAUDE.md にルールを書いても、セッションによっては応答フローが守られないことがある

この記事を読むと解決できること(After)

本記事の手順を実践すると、上記の悩みが次のように変わります。

  • settings.json のフックで毎ターン強制的に応答フローが注入され、チャプター登録が確実に走る
  • 質問文がそのままチャプタータイトルになるため、目視で過去質問を検索できる
  • CLAUDE.md と違い、ユーザー入力ごとに必ず発火するため設定が無視されない

チャプター機能の概要

標準でできること

Claude Code の回答ブロックにカーソルを合わせると、ピンマークから「チャプターとしてピン留め」を手動で登録できます。登録した箇所はチャプター一覧から1クリックでジャンプできます。

chapter-pin-ui

ただし、登録は1件ずつ手動で押す必要があり、長時間セッションでは押し忘れが起きやすい仕組みです。

本設定で得られる効果

3方式の差は下記の通りです。

項目標準CLAUDE.md版settings.jsonフック版(本記事)
発火タイミング手動クリック時のみセッション読み込み時に一度ユーザー入力ごとに毎回
確実性押し忘れあり文脈によりスキップされる場合あり毎ターン強制注入で確実
反映までの操作都度クリックセッション再起動即時(次のプロンプトから)
チーム共有不可リポジトリ直下に置けば可プロジェクト .claude/settings.json で可

設定手順

手順1:settings.json を開く

全プロジェクト共通で適用したい場合は ~/.claude/settings.json、特定プロジェクトだけに適用したい場合はリポジトリ直下の .claude/settings.json を開きます。ファイルが存在しない場合は新規作成します。

手順2:UserPromptSubmit フックを追記

以下の hooks セクションを追記します。既に他のフックがある場合は UserPromptSubmit 配列に追加してください。

{
  "hooks": {
    "UserPromptSubmit": [
      {
        "hooks": [
          {
            "type": "command",
            "command": "cat <<'EOF'\n【必須応答フロー:このターン必ず守ること】\n1. 最初のツール呼び出しとして mark_chapter を呼ぶ\n   - title: ユーザー質問の完全原文(改行は半角スペースに置換、40字超は冒頭38字+「…」でトリム)\n   - summary: ユーザー質問の完全原文(改行は半角スペースに置換、1行)\n2. テキスト応答の冒頭に以下を出力:\n   ---\n\n   > **Q.** ユーザー質問の完全原文(改行を含む場合は各行に「> 」を付ける)\n\n   ---\n3. 本文を記述\n4. テキスト応答の末尾に「---」を出力\nEOF"
          }
        ]
      }
    ]
  }
}

このフックは、ユーザーがプロンプトを送信するたびに発火し、標準出力の内容を「システムリマインダー」として Claude Code に注入します。CLAUDE.md と違い、毎ターン必ず注入されるため見落としが起きません。

手順3:保存して新しいセッションで起動

settings.json を保存後、Claude Code を一度終了して新しいセッションで再起動します。次の質問から UserPromptSubmit フックが発火するようになります。

動作確認

質問を送信すると、回答の冒頭で mark_chapter ツールが最初に呼ばれ、続いて区切り線と > Q. ブロックが出力されます。チャプター一覧に質問文がそのままタイトルとして積み上がっていれば成功です。

chapter-list-ui

フックが正しく登録されているかは、ターミナルで以下を実行して確認できます。

cat ~/.claude/settings.json | grep -A5 UserPromptSubmit

操作方法

過去の質問にジャンプする

チャプター一覧から該当タイトルをクリックすると、その回答位置までスクロールします。タイトルには質問文がそのまま入っているため、キーワードで目視検索しやすくなります。

プロジェクトごとに有効/無効を切り替える

~/.claude/settings.json ではなく、特定プロジェクトの .claude/settings.json に書けば、そのプロジェクト内でのみフックが発火します。チームメンバーと運用ルールを共有したい場合に有効です。

トラブルシューティング

失敗ケース1:フックが発火しない

主な原因と対処は次の通りです。

  • settings.json のパスが違う:ユーザー全体は ~/.claude/settings.json、プロジェクト固有はリポジトリ直下の .claude/settings.json です。
  • JSON 構文エラー:カンマ抜け・引用符閉じ忘れがあるとフック全体が読み込まれません。jq . ~/.claude/settings.json で構文チェックできます。
  • セッション再起動を忘れているsettings.json は起動時に読み込まれるため、保存後に1回再起動が必要です。

失敗ケース2:シェルでコマンド実行を求められる

type: "command" のフックは初回実行時に許可確認が出る場合があります。一度許可すれば以降は自動実行されます。

失敗ケース3:チャプタータイトルが要約されてしまう

フック本文の「ユーザー質問の完全原文」「要約しない」を強調表現で残しておくと再現性が上がります。それでも要約される場合は、タイトル指定に「逐語コピー」「翻訳禁止」と追記すると改善することがあります。

まとめ

設定の流れを3ステップに圧縮すると次の通りです。

  1. ~/.claude/settings.json を開く
  2. UserPromptSubmit フックを追記する
  3. セッションを再起動して動作確認する

この3ステップで、Claude Code の会話を毎ターン自動でチャプター化できます。CLAUDE.md 版より強制力が高く、長期運用しても設定が劣化しません。

FAQ

Q1. CLAUDE.md とどちらに書くべきですか?

確実性を最優先するなら settings.json のフック方式です。CLAUDE.md はセッション開始時の1回しか読み込まれず、長い会話では指示が薄まる場合があります。フックは毎ターン強制注入されるため、運用が劣化しません。

Q2. settings.json はどこに置けばよいですか?

全プロジェクト共通で適用したい場合は ~/.claude/settings.json、特定リポジトリだけで使う場合はリポジトリ直下の .claude/settings.json に記述します。両方ある場合は両方が読み込まれ、プロジェクト側が優先される場合があります。

Q3. UserPromptSubmit フックは何を返せばよいですか?

標準出力に出した文字列が、そのままシステムリマインダーとして Claude Code に注入されます。echocat <<EOF で任意のテキストを返せます。空文字を返した場合は何も注入されません。

Q4. 既存の hooks 設定と競合しませんか?

UserPromptSubmit 配列に複数のフックを並べれば、すべて順番に発火します。既存のフックを残したまま追加できます。

Q5. シェルが使えない環境でも動きますか?

type: "command" は OS のシェルでコマンドを実行する仕組みのため、シェルが使える環境(macOS、Linux、WSL)が前提です。Windows ネイティブの PowerShell でも動作する場合がありますが、実機で確認してください。

Q6. パフォーマンスへの影響はありますか?

echocat のような軽量コマンドであれば、体感できる遅延はほぼ発生しません。重い処理(HTTP リクエストや DB アクセス)をフックに入れると毎ターン待たされるため、軽量に保つことが重要です。

Q7. 元に戻したい場合は?

追記した UserPromptSubmit セクションを settings.json から削除し、セッションを再起動するだけで標準動作に戻ります。手動の「チャプターとしてピン留め」は引き続き利用できます。

関連記事

本記事のテーマに関連する記事を3本紹介します。


この記事について: AI 支援で執筆、編集部が事実確認・編集しています。誤りや追加情報があれば Contact よりお知らせください。

anchor left anchor right
TAKESHI MORI

ソフトウェアエンジニアとして、AIツールの最新動向を誰よりも早くキャッチすることを日課にしている。リリースされたばかりのツールをすぐ試し、実務で使えるかどうかを自分の手で確かめるのがスタイル。「ちょっと役立つ」くらいがちょうどいい——そんな感覚で、難しくなりすぎず、でも本質を外さない使い方やニュースをライトに発信していく。

人気の記事

anchor left anchor left

おすすめの記事

anchor left anchor left

categories

anchor left anchor left

tags

anchor left anchor left