DEV Community

Cover image for clerk: Auto-Summarize Your Claude Code Sessions
Vulcan Shen
Vulcan Shen

Posted on

clerk: Auto-Summarize Your Claude Code Sessions

The Friday Afternoon Problem

It's 4 PM on Friday. Your manager asks for the weekly report. You stare at your terminal, trying to remember what you did on Monday. Was it the auth refactor or the API migration? Which project was that even in?

You open git log. Scroll. Scroll. Scroll. Piece together commit messages across 4 repositories. Thirty minutes later, you have a rough draft that still feels incomplete.

Sound familiar?

The Daily Problem

But it's not just Fridays. Every morning, you open Claude Code and realize you forgot to use --resume. Yesterday's session had all the context — the architecture decisions, the debugging steps, the half-finished plan. Now it's gone, buried in a pile of session IDs.

What if your sessions just... remembered themselves?

That's what clerk does. Install once, forget about it. Every session is automatically summarized when it ends.

brew install vulcanshen/tap/clerk
clerk install
Enter fullscreen mode Exit fullscreen mode

No configuration needed. No commands to remember. No habits to build.

clerk runs entirely on your machine — no remote services, no accounts, no data leaving your laptop. All you need is Claude Code.

What You Get

Auto-generated daily summaries

Every time a Claude Code session ends, clerk processes the transcript and saves a structured summary as a markdown file, organized by date and project:

~/.clerk/
├── summary/
│   ├── 20260414/
│   │   ├── projects-my-api.md
│   │   └── work-frontend.md
│   └── 20260416/
│       ├── projects-my-api.md
│       └── work-frontend.md
├── tags/
│   ├── auth.md
│   ├── vue.md
│   └── refactor.md
└── ...
Enter fullscreen mode Exit fullscreen mode

Context recovery

Forgot --resume? No problem. Just type /clerk-resume in Claude Code:

Claude reads your past summaries and transcripts, rebuilds the context, and you're back where you left off.

Semantic search

Need to find that session where you worked on authentication?

Type /clerk-search and say "auth". clerk uses AI-powered semantic matching — it doesn't just string-match tags, it understands that "auth" relates to "jwt", "oauth", "login".

Weekly reports

This is the one that saves Friday afternoons:

clerk report --days 7
Enter fullscreen mode Exit fullscreen mode

clerk reads all summaries from the past 7 days, sends them to Claude, and outputs a structured report:

### Summary (2026-04-14 ~ 2026-04-18)

#### my-api-server
Implemented JWT auth with refresh tokens, added rate limiting
middleware, fixed connection pool leak under high concurrency.

#### frontend-app
Migrated from Vue 2 to Vue 3, replaced Vuex with Pinia,
updated all unit tests.

---

### By Date

#### 2026-04-14
- **my-api-server**: JWT auth with refresh token rotation
- **frontend-app**: Started Vue 3 migration, updated build config

#### 2026-04-16
- **my-api-server**: Rate limiting middleware, connection pool fix
- **frontend-app**: Vuex → Pinia, 12 store modules migrated

---

### By Project

#### my-api-server
- **2026-04-14**: JWT auth with refresh token rotation
- **2026-04-16**: Rate limiting middleware, connection pool fix

#### frontend-app
- **2026-04-14**: Vue 3 migration kickoff, build config update
- **2026-04-16**: Vuex → Pinia, 12 store modules converted
Enter fullscreen mode Exit fullscreen mode

Save it, paste it into Slack, attach it to your standup — whatever works for you:

clerk report --days 7 > weekly-report.md
Enter fullscreen mode Exit fullscreen mode

Default is --days 1 — great for daily standup summaries.

Need to include sessions that haven't ended yet? Add --realtime:

clerk report --days 7 --realtime
Enter fullscreen mode Exit fullscreen mode

This processes active session transcripts on the spot. Note that it uses additional Claude API calls — without the flag, only completed sessions are included.

Obsidian Integration

If you use Obsidian, clerk's output directory works as a vault out of the box. Summaries include YAML frontmatter tags, and tag files use standard markdown links. Open ~/.clerk/ in Obsidian and you get a graph view connecting tags to summaries across all your projects.

Installation

macOS / Linux

brew install vulcanshen/tap/clerk
clerk install
Enter fullscreen mode Exit fullscreen mode

Other options

# Quick install script
curl -fsSL https://raw.githubusercontent.com/vulcanshen/clerk/main/install.sh | sh

# Or build from source
go install github.com/vulcanshen/clerk@latest
Enter fullscreen mode Exit fullscreen mode

Then run clerk install to set up hooks, MCP server, and slash commands.

How It Works Under the Hood

  1. clerk install registers SessionStart and SessionEnd hooks in Claude Code
  2. When a session ends, the hook triggers clerk feed in the background
  3. Feed reads only new transcript lines since the last run (cursor tracking)
  4. It calls claude -p to merge new activity into the existing daily summary
  5. Tags are extracted and indexed for search

The whole thing is a single Go binary. No dependencies beyond Claude Code itself.


GitHub: github.com/vulcanshen/clerk

If you have feedback or ideas, issues and PRs are welcome!

Top comments (0)