ClaudeCodeのhooks機能で開発日記の自動化してみた

に公開

ClaudeCodeにhooks機能が公開されたので、「stop hook」を使用して、会話終了時に開発日記の作成をさせるための設定を作ってみました。

開発日誌自体以前からところてんさんのXでの投稿を参考にしていました。
ありがとうございます。
https://x.com/tokoroten/status/1936656130106946004

でも、CLAUDE.mdへの記載だと結構モデルが忘れて書かないことが多いんですよね。
今回のhooksで強制的できるといちいちclaude君に命令をしなくて済むので便利ですね。

スクリプト

#!/bin/bash

INPUT_JSON=$(cat)
SESSION_ID=$(jq -r '.session_id' <<< \"$INPUT_JSON\")
HOOK_ACTIVE=$(jq -r '.stop_hook_active // false' <<< $INPUT_JSON)

if [ \"$HOOK_ACTIVE\" = \"true\" ]; then
  # 無限ループ防止
  echo '{\"continue\": true}'
  exit 0
fi

# 開発日記作成を促すメッセージを生成
jq -n \
  --arg id   "$SESSION_ID" \
  --arg now  "$NOW" \
  --arg file "$FILENAME" \
  '{
     decision: "block",
     reason: (
       "write develop diary.\n" +
       "filename:" + $file + "\n" +
       "template:#{topic}\n" +
       "## [" + $now + "]\n" +
       "- **作業**: [何をしたか - 1行で]\n" +
       "- **結果**: [成功/失敗/部分完了]\n" +
       "- **問題**: [なければ「なし」]\n" +
       "- **学び**: [なければ「なし」]"
     )
   }'
exit 0

使い方

  1. 上のスクリプトをnotify-devlog.sh みたいな名前で保存
  2. 実行権限を付与します (chmod +x notify-devlog.sh)。
  3. claudecodeの/hooksで、stop hookにこのスクリプトのパスを指定します。
    (自分は~/.claude/hooks/notify-devlog.shに保存しました。)
    細かいやり方は公式ドキュメントが詳しく書いてますのでおすすめです。
    https://docs.anthropic.com/en/docs/claude-code/hooks

今後の改良

このスクリプトで生成されるのは時系列順のメモだけなのでそれをサマるためのカスタムコマンドはまた別途設定しないといけないですね。

Discussion