Claude Codeを開くたびに「まだ終わっていない作業」を教えてもらう設定(SessionStartフック)|コードなしで作る手順

カスタマイズ

結論:開くたびに、やり残しを教えてもらえます。作るのはClaudeに頼めます

結論、Claude Codeを開くたびに「今日まだ終わっていないこと」を教えてもらう設定は、コードが書けなくても作れます。仕組みは「フック(hooks)」の中の SessionStart という機能で、作る中身は「記録ファイル1つ」「短いスクリプト1つ」「設定の数行」だけです。

毎日やるはずの作業を、ふと気づいたら忘れていた。そんな経験はありませんか。日報、投稿、請求の確認など、毎日の定型作業をうっかり忘れる人向けの記事です。

この記事でわかること:

  • 起動したときに、今日の未済を教えてもらう仕組み(SessionStartフック)
  • 「済んでいれば何も言わない」ようにする考え方
  • Claudeに頼んで、確認用の小さなスクリプトを作ってもらう手順
  • 動かないときの原因別の対処

※フックの基本(何のための機能か、設定ファイルの場所)は、Claude Codeの通知設定の記事で説明しています。先に読むと分かりやすいです。
※検証環境: Windows 11 / Claude Code 2.1.283・2.1.304/確認日 2026-10-20(画面の撮影は2.1.304)

SessionStartフックとは?

Claude Codeは、「会話を始めるとき」に、決まった処理を自動で実行できます。それが SessionStart フックです。

  • 実行されるのは、会話の開始時、または再開時(公式ドキュメントより)
  • 実行した処理が文字を出すと、その内容はClaudeに渡されます(公式: 標準出力に書いた文字はClaudeの文脈に入る)
  • つまり、「今日まだ〇〇が終わっていません」とClaudeに伝えておけば、Claudeが最初の返事で教えてくれる、という使い方ができます

ふつうの指示(CLAUDE.mdなど)は、「毎回こうしてね」という固定のお願いです。フックは、その日の状況を見て、違う内容を渡せるのが強みです。

作る前に決めること(3つ)

  1. 何を見て判定するか: 例)「今日の日付が、記録ファイルに書いてあるか」
  2. 済んでいたらどうするか: 何も出さない(毎回うるさく言われない)
  3. 未済のとき、Claudeに何と伝えるか: 例)「今日はまだ〇〇を出していません。次の1つを提示してください」

この「済んでいれば黙る」が大事です。毎回出る通知は、そのうち読まなくなります。

手順

ステップ1: 記録ファイルを決める

「今日やった」を残すファイルを、1つ決めます。メモ帳のようなテキストファイルで構いません。ここでは done-log.md とします。

## 記録
2026-10-19 | 日報を出した
2026-10-20 | 日報を出した

この形式のダミーファイルで、日付の判定ができることを実機で確認しています(2026-10-20)。

ステップ2: Claudeに、確認用のスクリプトを作ってもらう

Claude Codeに、次のように頼みます。

done-log.md を読んで、今日の日付(YYYY-MM-DD)が書かれていなければ、
「今日はまだ日報を出していません」とClaudeに伝えるスクリプトを、
.claude/reminder.ps1 に作ってください。
今日の日付があれば、何も出さずに終わるようにしてください。
Windows(PowerShell)で動くものにしてください。

できあがるスクリプトは、毎回少し違います。以下は、私が動作確認した版です(JSON形式で出力する版。Claudeが作る版は、文字をそのまま出す形になることもありますが、どちらも動作しました。JSONで出したい場合は、依頼文に「JSON形式で出力して」と足してください)。

$log = Join-Path $PSScriptRoot "..\done-log.md"
$today = Get-Date -Format "yyyy-MM-dd"
if (Select-String -Path $log -Pattern $today -Quiet) { exit 0 }
[Console]::OutputEncoding = [System.Text.Encoding]::UTF8
$msg = "今日($today)はまだ日報を出していません。最初の返事で、ユーザーに伝えてください。"
@{ hookSpecificOutput = @{ hookEventName = "SessionStart"; additionalContext = $msg } } | ConvertTo-Json -Compress
  • 1〜3行目: 記録ファイルに今日の日付があるか調べます。あれば何も出さずに終わります(exit 0)
  • 4〜6行目: 無ければ、Claudeへの伝言を所定の形で出力します

私が同じ依頼文を、空のフォルダで実際に試したところ、日本語のままで通り、動くスクリプトができました(2026-10-20・2.1.283)。確認した点は3つです。

  • 記録ファイルに今日の日付が無いとき: 「今日はまだ日報を出していません」と出る
  • 今日の日付があるとき: 何も出さずに終わる(終了コード0)
  • 記録ファイルが無いときも、同じメッセージを出す作りになっていた

つまずきやすい点が2つありました。

  1. .claude フォルダへの書き込みは、許可を求められます。私の環境では最初、「書き込みが権限上ブロックされています。承認してください」と返ってきました。画面に許可の確認が出たら、内容を見て承認してください
  2. 日本語を含むスクリプトは、保存形式で文字化けすることがあります。私のときは、Claudeが自分で「BOM付きUTF-8で保存した」と報告してくれました。化けたら「BOM付きUTF-8で保存し直して」と頼んでください

スクリプトとは: 命令を書いた短いファイルです。中身が読めなくても、「何をするか」をClaudeに説明してもらえます。実行する前に、「このスクリプトは何をしますか?ファイルを書き換えたり、外に送ったりしませんか?」と聞いて確認してください。

ステップ3: フックとして登録する

.claude/settings.json に、次を足します。すでに hooks がある場合は、置き換えずに中に足してください。

{
  "hooks": {
    "SessionStart": [
      {
        "matcher": "startup",
        "hooks": [
          {
            "type": "command",
            "command": "powershell -NoProfile -ExecutionPolicy Bypass -File .claude/reminder.ps1",
            "shell": "powershell",
            "timeout": 15,
            "statusMessage": "今日の未済を確認中"
          }
        ]
      }
    ]
  }
}
  • matcher: "startup" は、「新しく起動したときだけ」という意味です。実機では、--continue(前の会話を再開)のときはフックが動かず、二重にはなりませんでした(再開時にはリマインドも出ません)
  • timeout: 15 は、15秒たっても終わらなければ止める、という上限です
  • statusMessage は、実行中に表示される文言です

ステップ4: 動いているか確認する

  1. Claude Codeを開き直す(初回は「このフォルダを信頼しますか?」と聞かれるので、自分のフォルダなら「Yes, I trust this folder」を選びます)
  2. /hooks と打つ。一覧に SessionStart が出ていればOK

ステップ5: 実際に試す

  • 未済の状態で起動: 記録ファイルに今日の日付が無い状態で開く → Claudeの最初の返事で、リマインドが出るか。実機(普段のターミナル画面)では、起動した直後の画面には、フックの文章そのものは出ませんでした。最初の返事で、Claudeが自分から「今日(2026-10-20)はまだ日報を出していません」と触れました。フックの出力は画面に直接は見えず、Claudeの返事を通して知らされる、と考えてください(Claude Code 2.1.304で撮影)。
  • 済んでいる状態で起動: 今日の日付を足して開く → 何も言われないか

実際にやってみた

私は、毎日のSNS投稿を忘れないように、この仕組みを実際に使っています。

  • 判定は「記録ファイルに、今日の日付があるか」
  • 無ければ、Claudeに「今日はまだ出していません。次の1本を提示して」と伝える
  • あれば、何も出さずに終わる

2.1.283で、今日分が済んでいる状態でスクリプトを直接実行したところ、何も出力されず、エラーもなく終わりました(想定どおり)。今日の日付が無い状態では、「今日はまだ出していません」という文を入れたJSONが出力されました。なお、上のスクリーンショットは、記事用に作った最小版(ダミーのフォルダ)で撮ったものです。

わざと壊す実験もしました。JSONを壊すと、エラーは一切出ず、静かに無視されます。リマインドが来ないときは、スクリプトだけを単体で実行して、出力を目で確認してください。

助かった場面: いろんな作業を並行してやっていると、どうしても忘れてしまいます。Claude Codeを開いて「今日の作業は?」と聞くだけで、今日やらなきゃいけない作業が一覧で出てくる。これが本当に助かっています。

うまくいかなかった点: 一日過ぎてしまった作業は表示されず、やらないまま過ぎていきました。何日か経ってから気づくことが、何度かありました。

原因は、この仕組みが見ているのが「今日の分」だけだからです。昨日までの未済は、判定の対象に入っていません。気づいた今は、「過去数日分の未済も見る」ように作り直すと防げます(下の「応用」を参照)。

正直な感想: 「忘れても、開けば気づける」安心感は大きいです。一方で、今日の分しか見ない作りだと、過ぎた日のやり残しは拾えません。最初は1つだけ、今日の分から始めて、慣れたら「過去数日分」を足すのがおすすめです。

応用:非エンジニアの使いどころ(4つ)

  1. 毎日の日報・投稿の確認: 今日の分が済んでいなければ知らせる(上の例)
  2. 週の定例: 曜日を見て、「今日は月曜なので、週次の確認をしてください」と伝える
  3. 締め切りが近いものの確認: 期限ファイルを見て、3日以内のものだけ伝える
  4. 過ぎた日のやり残しも拾う: 「今日の分」だけでなく、「過去3日分で未済のものがあれば伝える」ようにする。私は、一日過ぎた作業に何日も気づかなかったことがあったので、これを一番足したい機能だと思っています(Claudeに「過去3日分も確認して」と頼めば作れます。この拡張版は、この記事では動作確認していません)

やりすぎ注意: 伝えることが増えすぎると、結局読まなくなります。最初は1つだけにしてください。

うまくいかないとき

症状考えられる原因対処
/hooks に SessionStart が出ない設定ファイルの場所、または { } や " の欠けファイルの場所と書式を確認。Claudeに「このJSONを直して」と頼む
出るが、リマインドが来ない今日の日付がすでに記録されている/日付の書式が違う記録ファイルの日付の書き方と、スクリプトの判定を揃える
毎回、2回出る起動と再開の両方で動いているmatcher を startup に絞る(実機で、絞ると再開時には動かないことを確認済み・2.1.283)
エラーも出ないのに、リマインドが来ないスクリプトの出力(JSON)が壊れている。エラーは出ず、静かに無視されるスクリプトだけを単体で実行して、出力を目で確認する(実機で再現・2.1.283)
起動時の確認が途中で打ち切られる処理がtimeoutを超えた(実機では「中止」扱いで、起動は止まらずリマインドだけ届かない)スクリプトを軽くする/timeoutを調整
日本語が文字化けする文字コードの違いスクリプト内で出力をUTF-8にする(Claudeに頼む)(私の環境では文字化けは出ませんでした。他の環境は未検証です)
起動が遅くなったスクリプトが重い/timeout が長いtimeout を短くする。読むファイルを小さくする
動作が複雑で原因がわからない—claude --debug で起動してログを見る
止めたい—設定に "disableAllHooks": true を入れる

安全のために: フックは、あなたの権限で命令を実行します。他人のフックを、中身を確認せずにコピーしないでください。

よくある質問

Q. 料金はかかりますか?
この記事のフック(command 型=PowerShellなどを実行するだけのもの)は、公式ドキュメントの説明では、AIモデルを呼ぶ種類ではありません。ただし公式にフックの料金は書かれていないため、「無料」とは断定しません。Claude Code自体の利用には、契約しているプランの料金や利用枠がかかります(出典: 公式 hooks・確認日 2026-10-20)。

Q. MacやLinuxでも使えますか?
考え方は同じですが、この記事の手順(PowerShell)はWindows向けです。他のOSでは検証していません。

Q. 通知設定の記事との違いは?
通知は「Claudeが待っているとき」に知らせる仕組みです。この記事は「起動したときに、やり残しを知らせる」仕組みです。目的もイベントも違います。

Q. 画面に表示されますか?Claudeが教えてくれますか?
フックの文章そのものは、画面には直接出ません。Claudeが、最初の返事で触れます(Claude Code 2.1.304・2026-10-20に確認。仕様はバージョンで変わる可能性があります)。

Q. 毎日使うと、Claudeの利用枠を消費しますか?
フックが渡した文章は、Claudeが読む内容に加わります。公式は消費量の数字を示していませんが、入れた分だけ読む量が増えると考えてよいはずです。渡す文章は短くしてください。公式の上限は1回あたり1万文字です(確認日 2026-10-20)。

関連記事

noteでは、Claudeと一緒に記事を書き続ける仕組みを、有料記事「AIにネタを出させて記事を書き続けるループの作り方」にまとめています。

コメント

タイトルとURLをコピーしました