Context persistence plugin for Claude Code sessions
npx claudepluginhub nyxcore-systems/letter-for-myselfContext persistence between Claude Code sessions via structured memory checkpoints. Prevents amnesia across sessions with Pain Logs, Done Lists, and actionable Next Steps. Optional blog generation pipeline.
A Claude Code plugin for context persistence between sessions.
When sessions end, chats get compacted, or days pass between work blocks, Claude forgets everything. This plugin solves that by writing structured "handoff letters" to a local .memory/ folder that Claude reads on startup.
Result: Less re-explaining, fewer repeated mistakes, smoother "back into flow" experience.
Save structured session summaries with a single command:
Automatically transform session memories into public-ready blog posts via GitHub Actions + Claude API. Perfect for "building in public" with zero friction.
git clone https://github.com/mrwind-up-bird/letter-for-my-future-self.git
cd letter-for-my-future-self
chmod +x install_agents.sh
./install_agents.sh
Or install as a local plugin:
claude plugin install . --scope user
Copy the template to your project:
cp /path/to/letter-for-my-future-self/CLAUDE_TEMPLATE.md /path/to/your-project/CLAUDE.md
If you already have a CLAUDE.md, merge the relevant sections.
Start Claude Code in your project:
cd /path/to/your-project
claude
When ending a session, run:
/checkpoint
Or say "wrap up", "exit", or "end session".
A memory file appears in .memory/letter_YYYYMMDDHHMMSS.md.
claude
Claude reads the latest letter and picks up where you left off.
| Command | Description |
|---|---|
/checkpoint | Save a session memory to .memory/ |
/letter-init | Set up the Letter to Blog CI/CD pipeline |
| Flag | Description |
|---|---|
--file, -f | Convert a specific memory file (filename or path) |
--setup | Configure global API key (~/.config/letter-for-my-future-self/) |
--setup-project | Configure project-specific API key (.letter-config.json) |
--status | Show current API key configuration status |
Transform private session memories into polished blog posts automatically.
.memory/letter_03.md → GitHub Actions → Claude API → drafts/blog_2026-01-29_letter_03.md
.memory/.memory/** changesdrafts/Initialize the pipeline:
/letter-init
This creates:
.github/scripts/blog_gen.py — Python generator script.github/scripts/vibe_requirements.txt — Dependencies.github/workflows/vibe_publisher.yml — GitHub Actions workflowdrafts/ — Output directoryAdd your API key to GitHub Secrets:
ANTHROPIC_API_KEYCommit and push:
git add .github/ drafts/
git commit -m "feat: add letter to blog pipeline"
git push
See LETTER_TO_BLOG.md for full documentation.
Each checkpoint creates a file like .memory/letter_20260130143200.md:
# Letter to Myself (Session Handoff)
**Date:** 2026-01-30 14:32
## 1. Executive Summary
* **Goal:** Building a REST API for user authentication
* **Current Status:** Stopped at JWT refresh token implementation
## 2. The "Done" List (Context Anchor)
* Implemented user registration endpoint in `src/routes/auth.ts`
* Added password hashing with bcrypt
* Created PostgreSQL schema in `migrations/001_users.sql`
## 3. The "Pain" Log (CRITICAL)
* **Tried:** jsonwebtoken library for JWT signing
* **Failed:** "Algorithm not supported" error with RS256
* **Workaround:** Switched to HS256 with environment secret
* *Note:* Do not retry RS256 without proper key configuration.
## 4. Active Variable State
* PORT=3000, DATABASE_URL in .env
* Test user: [email protected] / password123
## 5. Immediate Next Steps
1. [ ] Implement refresh token rotation
2. [ ] Add rate limiting to auth endpoints
3. [ ] Write integration tests
Track .memory/ in Git to maintain a timeline of your project's decisions.
mkdir -p .memory
git add .memory
git commit -m "chore(memory): start tracking session memory"