--- description: セッション終了前にメモリを整理・保存する。「バイ」「bye」「終わり」「閉じる」等でも使う。 --- # Session End — メモリ整理 ## タスク このセッションを振り返り、将来の会話で役立つ情報をメモリに保存する。 ### 保存すべき情報の判断基準 以下に該当するものがあれば保存する(なければスキップ): - **user**: ユーザーの役割・知識・好みで新たに判明したこと - **feedback**: ユーザーが承認・修正した非自明なアプローチ(なぜそうするかの理由も含めて) - **project**: 誰が何をいつやるか、意思決定の背景、締め切り等 - **reference**: 外部システム・ URL・ドキュメントの場所 ### 保存しないもの - コードパターン・アーキテクチャ(コードから読める) - git 履歴・直近の変更(git log から読める) - 一時的なタスク状態・今セッションだけの情報 - CLAUDE.md に既に書かれていること ## 手順 1. **自己点検(agent の未完タスク確認)** - 会話履歴を振り返り、agent が「後でやる」「後回し」「次回確認」「あとで〜する」等と言ったまま未実施のことがないか確認する - `.claude/todo.md` が存在すれば読んで、未完(`[ ]`)のタスクを確認する - コミット漏れがないか確認する(`git status` で作業ツリーに残った変更がないか) - **main に入っていないコミットがないか確認する**(`git log main..HEAD --oneline` でコミット済みだが main 未到達のコミットがないか) - **push 漏れがないか確認する**(`git log origin/main..main --oneline`)。このセッションで push してよいと明示的に指示されている場合だけ `git push` を実行して main をリモートに反映させる。指示がなければ push せず、push 待ちのコミットを残件として挙げる - 残件があれば **AskUserQuestion** で「〇〇がまだ残っていますが、今やりますか?」とユーザーに確認する - 残件がなければそのままメモリ保存フェーズへ進む 2. **/checkpoint と同じメモリ保存処理を実行する** - 保存すべき事実を先に頭の中で全部決める。`MEMORY.md` は起動時に CLAUDE.md の import で既に文脈にあるので **Read し直さない**。文脈内の索引を見て、新規に書くか既存エントリを更新するかを判断し、重複追記はしない - **1 回の Bash(heredoc)でまとめて書き込む**。既存ファイルの有無は同じ Bash の中で `test -f` / `ls` で確かめ、メモリ本体を `cat > '' <<'EOF' … EOF` で書く(`<<'EOF'` で引用し frontmatter の書式を崩さない)。`MEMORY.md` への索引行は `>> ''` で**追記**する(Edit で全体を書き換えない。他セッションとの同時編集で追記が消える事故の対策)。検証は末尾で `head` を 1 回流す程度にとどめる - 既存メモリファイルの一部だけを直す必要があるときだけ Edit を使い、その数は最小にする 3. 「保存完了 / 保存なし」を1行で報告してセッション終了を告げる ## メモリ保存先 - `~/.claude/memory/`(索引は `~/.claude/memory/MEMORY.md`。`~/.claude/CLAUDE.md` に `@~/.claude/memory/MEMORY.md` と書いて起動時に読み込ませる)