Automated summary
This skill reads Claude Code .jsonl transcripts and distills them into structured per-project session notes (TL;DR, goal, outcome, decisions, blockers, next steps) inside a vault's Sessions folder.
Strengths
- Turns empty session-auto-track stubs into substantive notes that QMD can actually index and search
- Defaults to `claude -p`, so it runs on the local Claude Code subscription with no API key or Console billing
- Idempotent by session_id, so reruns skip already-summarized sessions safely
- Vault path is resolved without hardcoding (CLI flag, env vars, common locations) and --dry-run previews work without any distillation
Limitations
- Assumes Braynee's session-auto-track stubs and Claude Code's `~/.claude/projects/` layout, so it is not portable to arbitrary transcript stores
- Expects a vault convention of `2. Areas/Sessions/<Project>` for notes to land correctly
- Each session costs one LLM call, so a full `--all` backfill over many sessions can take a while
Use it when your vault has placeholder or empty session notes and you want a searchable project history rebuilt from the real Claude Code conversations.
Skip it if you don't work in Claude Code with an Obsidian vault laid out this way, or if you don't want an LLM summarizing your transcripts.
Security analysis
SafeSkill instructs running a Python script and the Claude Code CLI to read local transcript files and write structured markdown notes locally. No destructive, exfiltrating, or obfuscated commands are present. The script explicitly strips ANTHROPIC_API_KEY from the subprocess environment to prevent unintended API billing, and network use is limited to the Claude Code subscription, which is expected and legitimate.
No concerns found
How this analysis is madeExamples
Backfill my Claude Code sessions for sophon-webapp into the vault.Do a dry run of the session backfill for the foreman project so I can see which notes would be created.Summarize the last 5 Claude Code sessions for foreman and fill in the empty session notes.name: session-backfill description: > Backfill structured session summaries from Claude Code .jsonl transcripts into the vault's per-project Sessions folder. Distills each CC session into TL;DR / Goal / Outcome / Decisions / Blockers / Next / References — agent- and human-searchable, not raw transcripts. Use when user says "backfill sessions", "summarize my sessions for X", "fill in the empty session notes", or wants to make QMD project history actually useful. argument-hint: '[--project NAME | --all] [--limit N] [--dry-run]' allowed-tools: Bash(python3:), Bash(claude:)
Session Backfill Skill
Turn empty braynee session-auto-track stubs into substantive per-project session notes by distilling the real Claude Code conversation history.
Why
Braynee's session-auto-track creates a one-line stub session note when each CC session starts. The stubs never get filled in — they say "Waiting for user to state goal" and "(none yet)" forever. Meanwhile the actual conversation lives in ~/.claude/projects/<encoded-path>/*.jsonl. QMD indexes only the stubs, so project history is unsearchable.
This skill reads each .jsonl, filters the tool-call noise, distills the conversation skeleton, and writes a structured summary into <vault>/2. Areas/Sessions/<Project>/<date>-<slug>-<type>-<id>.md.
Idempotent: if a structured note already exists for a session_id, it's skipped. Safe to rerun.
Distillation: no API billing by default
The default backend is claude -p — it uses your local Claude Code subscription via OAuth. No ANTHROPIC_API_KEY, no Console credits, no infisical, no per-session cost. The script explicitly strips ANTHROPIC_API_KEY from the claude -p subprocess env so it can never silently fall back to API billing.
--use-api is an explicit opt-in for the raw Anthropic API (Console credits). Use it only if you specifically want API billing and have set ANTHROPIC_API_KEY yourself. It is never required and never the default.
Commands
# Single project (pilot use) — uses `claude -p`, no API billing
python3 {baseDir}/scripts/backfill.py --project sophon-webapp
# Dry run — print what would be created, no distillation at all
python3 {baseDir}/scripts/backfill.py --project sophon-webapp --dry-run
# Limit to N most-recent sessions per project
python3 {baseDir}/scripts/backfill.py --project foreman --limit 5
# All projects (the big backfill)
python3 {baseDir}/scripts/backfill.py --all
# Point at a non-default vault location
python3 {baseDir}/scripts/backfill.py --all --vault "/path/to/Obsidian Vault"
# Opt in to the raw API (Console billing — only if you explicitly want it)
ANTHROPIC_API_KEY=... python3 {baseDir}/scripts/backfill.py --project foreman --use-api
Vault resolution
The vault is resolved universally, no hardcoded path:
--vault PATHargument$BRAYNEE_VAULT/$OBSIDIAN_VAULTenvironment variable- Common locations probed for a
.obsidiandirectory (~/Obsidian Vault,~/vault,~/Documents/Obsidian Vault, OneDrive / iCloud variants) - Falls back to
~/Obsidian Vaultso a brand-new vault still works
Note format produced
Every backfilled note follows this structure:
---
type: session
project: "[[Sophon Webapp]]"
status: done
session_type: debug
session_id: "66b42f24-..."
started: 2026-04-27T09:01:00Z
tags:
- session
- debug
---
## TL;DR
[1-2 sentences — state of work + outcome]
## Goal
[What this session was trying to accomplish]
## Outcome
- **Shipped:** concrete changes that landed
- **In flight:** things started but not finished
## Decisions
- **[Decision]** — rationale, tradeoff
## Blockers / Open Questions
- [Things stuck, waiting, unknown]
## Next
[Single highest-leverage next action]
## References
- **Files:** `path/to/file.ts`
- **Related:** [[wikilinks]]
Project name mapping
Claude Code stores each project under ~/.claude/projects/<encoded-path>/, where the encoded path is the project's absolute path with separators (and the Windows drive colon) replaced by -. The skill derives the project slug generically — it strips a leading Windows drive letter, then takes the path segment after the last recognised parent directory token (code, src, work, repos, dev, …). This works for any user on any OS regardless of where their code lives.
For projects where the derived slug doesn't map to a clean wikilink (e.g., dealreveal-engine → DealReveal, not Dealreveal Engine), add an override in scripts/project_map.json. Overrides are optional — without them the slug is title-cased word-by-word.
Requirements
- Python 3.10+ — that's it for the default path.
claudeCLI on PATH (Claude Code) — used for distillation via your subscription. Already present wherever this skill runs.- Optional:
pip install anthropiconly if you pass--use-api(raw API, Console billing). - No infisical, no secrets manager, no API key needed for normal use.
Cost
- Default (
claude -p): consumes your Claude Code subscription quota, no API dollar cost. --use-api(opt-in only):claude-sonnet-4-6, prompt-cached system prompt, ~$0.02/session on Console credits.
From the file to a first result
The download contains exactly the content displayed on this page. This copy may differ from the latest version in the source repository.
View the source and supporting filesThis download contains SKILL.md only. Any scripts, references, templates and dependencies are not included. Get the required files from the source, preserving their directory structure, before continuing.
1. Download the file
Download SKILL.mdFrom the root of a test project, save the file as .skill-downloads/session-backfill-mrwakblw/SKILL.md, or use the command below. This folder is for inspecting the skill before installation.
Command for macOS/Linux or WSL: requires a POSIX shell and curl. On Windows without WSL, use the download button and create the folder manually.
mkdir -p '.skill-downloads/session-backfill-mrwakblw' && curl --fail --show-error --location 'https://skills-guides.com/api/skills/session-backfill-mrwakblw/download' --output '.skill-downloads/session-backfill-mrwakblw/SKILL.md.part' && mv '.skill-downloads/session-backfill-mrwakblw/SKILL.md.part' '.skill-downloads/session-backfill-mrwakblw/SKILL.md'2. Check prerequisites
Read SKILL.md before using it. If it references scripts or external services, inspect them and prepare the required access in your test environment.
Tools declared by the author (check availability in your agent): Bash(python3:*), Bash(claude:*)
Original excerpt: Requirements
- Python 3.10+ — that's it for the default path.
claudeCLI on PATH (Claude Code) — used for distillation via your subscription. Already present wherever this skill runs.- Optional:
pip install anthropiconly if you pass--use-api(raw API, Console billing). - No infisical, no secrets manager, no API key needed for normal use.
The platforms on this page are catalog indications. The paths below follow tool documentation; they do not prove this skill has been run in those tools. No minimum tool version is confirmed for this listing.
3. Load the skill
After inspection, copy the complete folder into your project using one of the commands below, then open a new tool session. The command stops if a folder with the same name already exists: compare the files before replacing it.
Claude Code
test -f '.skill-downloads/session-backfill-mrwakblw/SKILL.md' && test -s '.skill-downloads/session-backfill-mrwakblw/SKILL.md' && mkdir -p '.claude/skills' && test ! -e '.claude/skills/session-backfill' && cp -R '.skill-downloads/session-backfill-mrwakblw' '.claude/skills/session-backfill'OpenSkills
OpenSkills must already be installed. The local install/read procedure is checked with OpenSkills 1.5.0, which requires Node.js ≥ 20.6.0. Catalog slugs are not resolved automatically.
Official OpenSkills installationopenskills install './.skill-downloads/session-backfill-mrwakblw'openskills read 'session-backfill-mrwakblw'Reading should display the installed file content and its base directory. It does not run the skill or install its dependencies.
For an agent that reads AGENTS.md, then sync the index. This command changes AGENTS.md: review the diff before using it.
openskills syncManual method or another tool: attach SKILL.md to a conversation, or open it in an agent that can read files. Include any required supporting resources. No universal folder is recognized by every tool.
4. Try a first task
Use a short, synthetic input: an API endpoint, a small document or an interface brief. In a new conversation, attach the file or give the agent its path, then adapt this request:
Read .skill-downloads/session-backfill-mrwakblw/SKILL.md and apply its instructions to this example: [describe a test input]. Identify any missing files, dependencies or access. Produce the result requested by the skill without inventing data or running unreviewed scripts.Expected result: output matching the skill instructions, or a precise list of missing prerequisites. A read confirmation alone does not validate a first use. If an external resource is unavailable, that path remains untested.
PDF Reader
Productivity
Read and extract text from PDF files, including documents, reports, contracts, and spreadsheets. Works with local files, URLs, and WhatsApp attachments. Use whenever PDF content is needed, even if not explicitly requested.
Discord Messaging Workflows
Productivity
Use the message tool to send, edit, and moderate Discord messages with interactive components.
Interactive Verdict Preview
Productivity
Generate an interactive HTML preview of keep/drop verdicts for maintainer review, then process the pasted feedback JSON.