session-backfill

Distill Claude Code .jsonl transcripts into structured per-project Markdown session notes.

2|1|Updated Feb 14, 2026
One-click install
npx skills add https://github.com/hamchowderr/braynee --skill session-backfill
Or copy as Structured Prompt for Agent
Please help me install this Agent Skill.
Skill: session-backfill
Source: https://github.com/hamchowderr/braynee/tree/main/skills/session-backfill
Command: npx skills add https://github.com/hamchowderr/braynee --skill session-backfill

SYSTEM DOCUMENTATION & REQUIREMENTS

💡 This Skill requires anthropic, claude, and includes scripts (resource) components.

What problem does it solve?

Session history often stays unhelpful because Claude Code auto-tracking creates only one-line stub notes, while the real conversation details live in local .jsonl transcripts and are not indexed well in your knowledge base.

Core Features & Use Cases

  • Distills .jsonl transcripts into structured session notes: Produces notes with TL;DR, Goal, Outcome, Decisions, Blockers / Open Questions, Next, and References for agent- and human-search.
  • Writes into the per-project Sessions vault structure: Automatically targets 2. Areas/Sessions/<Project>/ using project slug mapping derived from your Claude Code project directories.
  • Idempotent backfill: Skips sessions that already have a matching structured note, so you can safely rerun the skill.
  • Cost-safe default: Uses claude -p (Claude Code OAuth subscription) by default and strips ANTHROPIC_API_KEY so it won’t silently fall back to API billing; --use-api is an explicit opt-in.

Quick Start

Run the backfill for one project by executing: python3 {baseDir}/scripts/backfill.py --project sophon-webapp.

Frequently Asked Questions about session-backfill

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I convert Claude Code .jsonl transcripts into searchable Obsidian notes?

You can backfill unfilled session stub notes by distilling user and assistant content from local .jsonl transcripts into structured per-project Markdown session entries. This process writes notes with TL;DR, Goal, Outcome, and Decisions directly into your Obsidian vault.

Why are my Claude Code session notes showing up as unsearchable one-line stubs in Obsidian?

Auto-tracking creates only placeholder stub notes while the real conversation details remain trapped in local .jsonl transcripts. Backfilling distills these raw transcripts into structured Markdown entries to make outcomes and decisions searchable in your knowledge base.

Do I need an Anthropic API key to backfill Claude session transcripts into Markdown?

No, the default distillation uses the Claude Code CLI via `claude -p` and explicitly strips the `ANTHROPIC_API_KEY` to prevent silent API billing. You only need the Anthropic SDK and API key if you explicitly opt-in using the `--use-api` flag.

How do I rerun session backfill without creating duplicate notes in my vault?

The backfill process is idempotent, automatically skipping any sessions that already have a matching structured note with an existing session_id. You can safely rerun the script for a specific project without generating duplicate Markdown entries.

What Python version is required to distill Claude Code session transcripts?

You need Python 3.10 or higher to execute the backfill script that distills local .jsonl transcripts into structured per-project Markdown session notes. The script also requires the Claude CLI for default distillation.

How does distilling raw Claude Code transcripts differ from keeping the original .jsonl files?

Raw .jsonl transcripts contain unindexed tool noise, whereas distilling them produces structured Markdown notes featuring TL;DR, Goal, Outcome, Decisions, and Blockers. This format enables effective agent and human search across your per-project Sessions vault.