#!/usr/bin/env bash # SessionEnd フック:取り組んだモジュールを尋ね、~/.claude-howto-progress.json に # セッション記録を追記して、学習進捗を永続的に追跡する。 # # Claude Code セッション終了時に 1 回だけ発火する(応答ごとではない)。 # 標準入力にはフックの JSON ペイロードが流れているため、対話入力には /dev/tty を使う。 # # 導入:.claude/settings.json の "SessionEnd" イベントに登録する(下記参照)。 PROGRESS_FILE="$HOME/.claude-howto-progress.json" # ガード:このリポジトリ内でのみ動かす if [[ "$CLAUDE_PROJECT_DIR" != *"claude-howto"* ]] && [[ "$PWD" != *"claude-howto"* ]]; then exit 0 fi # 進捗ファイルが無ければ作成 if [ ! -f "$PROGRESS_FILE" ]; then echo '{"sessions":[]}' > "$PROGRESS_FILE" fi DATE=$(date +"%Y-%m-%d") TIME=$(date +"%H:%M") echo "" echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━" echo " Claude Code — 学習セッション終了" echo " $DATE $TIME" echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━" echo "" echo " どのモジュールに取り組みましたか?(例:06,07 / Enter でスキップ)" echo " 01=Slash 02=Memory 03=Skills 04=Subagents 05=MCP" echo " 06=Hooks 07=Plugins 08=Checkpoints 09=Advanced 10=CLI" echo "" printf " > " read -r INPUT