session-end-learning.sh

세션 종료 시 프로젝트 메모리 수와 미커밋 변경사항을 로그로 기록한다.

Trigger

SessionEnd

Source Code

1#!/bin/bash
2# Session End (Stop) Hook: 세션 종료 시 학습 자동 추출 알림
3# OMC 패턴 차용 - vault 자체 구현
4
5MEMORY_DIR="$CLAUDE_PROJECT_DIR/.claude/memory"
6MEMORY_FILE="$MEMORY_DIR/project-memory.json"
7SESSION_LOG="/tmp/claude-session-end-$(date +%Y%m%d-%H%M%S).log"
8
9# 세션 종료 시 메모리 파일이 수정되었으면 로그
10if [ -f "$MEMORY_FILE" ]; then
11  ENTRY_COUNT=$(python3 -c "import json; data=json.load(open('$MEMORY_FILE')); print(len(data.get('entries', [])))" 2>/dev/null || echo "0")
12  echo "[SessionEnd] 프로젝트 메모리: ${ENTRY_COUNT}개 항목 보유" > "$SESSION_LOG"
13fi
14
15# 세션 중 변경된 파일 수 기록
16CHANGED_FILES=$(git -C "$CLAUDE_PROJECT_DIR" diff --name-only 2>/dev/null | wc -l | tr -d ' ')
17STAGED_FILES=$(git -C "$CLAUDE_PROJECT_DIR" diff --cached --name-only 2>/dev/null | wc -l | tr -d ' ')
18
19if [ "$CHANGED_FILES" -gt 0 ] || [ "$STAGED_FILES" -gt 0 ]; then
20  echo "[SessionEnd] 미커밋 변경: unstaged ${CHANGED_FILES}개, staged ${STAGED_FILES}개"
21fi
22