はじめに
Claude Codeを使って作業していると「今日何をやったか」が後から追いにくい問題があります。
Slackやメモに残すのを忘れるし、Claudeとの会話ログを後から掘り返すのも手間。
そこで Claude CodeのStopフック を使って、セッションが終わるたびに作業ログを自動追記する仕組みを作りました。
セットアップは5分以内で完了します。
Claude Code Hooksとは
ClaudeがAIとして何かをする際、その前後に自動でシェルコマンドを実行できる仕組みです。
| フック名 | タイミング |
|---|---|
| PreToolUse | ツール使用の前 |
| PostToolUse | ツール使用の後 |
| Notification | 通知が来た時 |
| Stop | Claudeの返答が終わった後 ← 今回使う |
作るもの
Claudeが返答するたびに、以下のような日記ファイルに自動追記されます。
# 20260620
## Claude作業ログ
- 14:30: Claudeとセッション
- 14:45: Claudeとセッション
- 15:10: Claudeとセッション
Step 1: シェルスクリプトを作る
任意の場所にスクリプトファイルを作成します。
mkdir -p ~/diary
#!/bin/bash
# Claudeのセッション終了時に diary/ へ自動追記するフック
DATE=$(date +%Y%m%d)
TIME=$(date +%H:%M)
DIARY_DIR="$HOME/diary"
DIARY_FILE="$DIARY_DIR/$DATE.md"
# stdinのJSONを読み捨て(hookの仕様上必要)
cat > /dev/null
# 日記ファイルがなければ今日の見出しを作る
if [ ! -f "$DIARY_FILE" ]; then
cat > "$DIARY_FILE" << EOF
# $DATE
## Claude作業ログ
EOF
fi
# 「## Claude作業ログ」セクションがなければ追加
if ! grep -q "## Claude作業ログ" "$DIARY_FILE"; then
echo "" >> "$DIARY_FILE"
echo "## Claude作業ログ" >> "$DIARY_FILE"
echo "" >> "$DIARY_FILE"
fi
# タイムスタンプを追記
echo "- $TIME: Claudeとセッション" >> "$DIARY_FILE"
実行権限を付与します。
chmod +x diary_hook.sh
スクリプト内の
DIARY_DIRを自分の好きなパスに変更してください。
Step 2: settings.jsonに登録する
プロジェクトルートの .claude/settings.json に以下を追加します。
{
"hooks": {
"Stop": [
{
"matcher": "",
"hooks": [
{
"type": "command",
"command": "/絶対パス/diary_hook.sh",
"statusMessage": "作業ログを記録中..."
}
]
}
]
}
}
commandにはdiary_hook.shの絶対パスを指定してください。
~/は展開されないので注意。
設定ファイルの場所は2種類あります:
| ファイル | スコープ |
|---|---|
~/.claude/settings.json |
全プロジェクト共通 |
.claude/settings.json |
プロジェクト単位 |
Step 3: 動作確認
Claude Codeで何か話しかけて、セッションが終わった後に日記ファイルを確認します。
cat ~/diary/$(date +%Y%m%d).md
こんな感じで追記されていれば成功です。
# 20260620
## Claude作業ログ
- 14:30: Claudeとセッション
ポイント:cat > /dev/null が必要な理由
Hookスクリプトは stdinにJSONが渡されます。
{
"session_id": "...",
"tool_name": "...",
"tool_input": {}
}
このstdinを読み捨てないとスクリプトが正常終了しないので、cat > /dev/null で明示的に捨てています。
応用アイデア
同じStopフックで、こんなことも実現できます。
| やりたいこと | 方法 |
|---|---|
| Mac通知を出す | osascript -e 'display notification "作業終了"' |
| 作業時間をCSVに記録 | タイムスタンプをCSVファイルに追記 |
| Slackに送る |
curl でIncoming Webhookに投げる |
| 深夜作業を検知する | 時刻判定して通知 |
まとめ
- Claude CodeのStopフックで セッション終了時に自動でスクリプトを実行できる
- シェルスクリプト1本 + settings.jsonの設定だけで動く
- 作業ログの自動記録はシンプルで効果的なユースケース
スクリプトはGistにも置いています。
https://gist.github.com/mstng/cd7b0352efd37197374969f052a6d920