reflection

v2026.09.24

Build a candid, evidence-grounded self-portrait from the user's own corpus — Claude Code transcripts plus their Obsidian vault. Answers 22 questions about blind spots, contradictions, expensive habits, and trajectory, each with cited evidence, a confidence score, and one concrete action. Use when the user asks for a reflection, a read on themselves, a self-portrait, "what am I missing", or invokes the reflection engine.

GitHub
Install command
npx skhub add idanbeck/reflection
Markdown
SKILL.md

Reflection

Turns the corpus an assistant can actually see into a frank self-portrait: 22 questions, each with cited evidence, a self-scored confidence number, and one concrete thing to try this week.

Adapted from Reflection Engine v1.3 by Kevin Rose. The method lives in METHOD.md — read it in full before analysing anything.

⚠️ The output is sensitive

It is a blunt read on someone, drawn from their most personal material.

  • Write it somewhere private — the vault, or ~/Desktop. Never into a shared or public repo.
  • This skill's directory is gitignored for out/ and *-portrait.md precisely so a portrait cannot be committed by accident.
  • Do not paste it into team chat, an issue, a PR, or an artifact without the user explicitly asking for that.
  • Do not run this on a third party. It is for the person who asked for it, about themselves.

Run it

1. See what corpus exists

python3 ~/.claude/skills/reflection/reflection_corpus.py --inventory

Reports transcript months and volume, vault span, and memory-file count. If the corpus covers only a few weeks or one domain, say so up front — a thin corpus produces a horoscope, and the honest move is to lower confidence, not to write more confidently.

2. Build the digest

python3 ~/.claude/skills/reflection/reflection_corpus.py --out /tmp/reflection-corpus.md

Useful flags:

FlagPurpose
--sources claude,vault,memoryWhich sources to include (default: all three)
--vault PATHObsidian vault root (defaults to the local iCloud vault)
--budget 600000Approx max characters; spread evenly across months so recent material cannot dominate
--per-month 40Max items kept per month per source
--min-chars 120Ignore fragments shorter than this

The digest buckets material by month and labels every entry with its source, so the analysis can sample across time and distinguish the person's own words from assistant summaries.

3. Read the digest and write the portrait

Read /tmp/reflection-corpus.md, follow METHOD.md exactly, and write the result to a private path — e.g. <vault>/Personal/Reflection Portrait YYYY-MM-DD.md.

For a corpus of any real size, do the reading in parallel: assign agents to different months or domains to build the evidence base, then answer the questions from the pooled evidence. The questions are not independent — 20, 21 and 22 synthesise the rest, so answer them last and give them the most care.

What makes an answer good here

  • Two independent anchors from different months or domains for anything scored 7+.
  • Their words, not memory files. Memory is the assistant's own prior summary; use it to find evidence, never as proof. METHOD.md is strict about this and it matters — otherwise the model grades its own homework.
  • Correct for the corpus shape. A coding-assistant transcript is work-heavy because that is what the tool is for. Concluding "work dominates their life" from it is a measurement artifact.
  • Absence of a decision is weak evidence. People decide off-channel and never report back. Requires positive evidence before calling something avoidance; cap at 6 otherwise.
  • Say "insufficient evidence" rather than writing fluent filler. A 3/10 honestly marked is worth more than an 8/10 invented.

Files

FileRole
METHOD.mdThe full protocol, corpus rules, metadata format, and the 22 questions
reflection_corpus.pyCorpus harvester (stdlib only) — transcripts + vault + memory, bucketed by month
Discovery
Tags

No tags published for this skill.

Version
Latest version metadata

Version

v2026.09.24

Published

Sep 24, 2026

Category

Uncategorized

License

Not specified

Source path

reflection

Default branch

main

Latest commit

37ba03e

Tree SHA

265ac91