Skip to content
Development
Skill

/reflect

Analyze a Claude Code session for "wrong-turn" moments (corrections, retries, waste, reversals, dead-ends) and produce an interactive HTML dashboard with copy-able recommendations (CLAUDE.md rules, docs, scripts, hooks, memory entries, sub-skills, etc.) that would help future

From plugin
claude-code-rules
14227 skills13 agents16 commands3 MCP

Claude Code

$ npx -y skills add NikiforovAll/claude-code-rules --skill reflect --agent claude-code

SKILL.md

reflect.SKILL.md
name: reflect
description: Analyze a Claude Code session for "wrong-turn" moments (corrections, retries, waste, reversals, dead-ends) and produce an interactive HTML dashboard with copy-able recommendations (CLAUDE.md rules, docs, scripts, hooks, memory entries, sub-skills, etc.) that would help future agents reach the goal faster. Defaults to reflecting on the current in-context session; optionally accepts a session ID or JSONL path. Use when the user invokes /reflect or asks to learn from this session.
context: fork
argument-hint: `<current_session> or <session-id-or-path>`

/reflect — session reflection

Produce a single-file interactive HTML dashboard analyzing a Claude Code session for places the agent took a wrong turn, paired with concrete repo additions that would prevent the same wrong turn next time.

When to use

  • User invokes `/reflect` (no args) → analyze the **current session** from the in-context conversation. Do **not** re-read the session JSONL — work from the agent's own memory of what happened.
  • User invokes `/reflect <session-id>` or `/reflect <path-to-jsonl>` → analyze a different session. Run `scripts/analyze_session.py <path>` directly (this skill runs in a forked context — `context: fork` — so the compressed transcript can enter your context safely). The script outputs a compact markdown transcript: system reminders stripped, tool calls/results collapsed to one-liners, compaction blocks expanded with embedded user quotes. Then **you** analyze that transcript to identify wrong-turn moments — the script does NOT classify incidents, it only compresses.

Session JSONLs live under: `~/.claude/projects/<encoded-cwd>/<session-id>.jsonl`

What to detect (incidents)

Open-ended — but the common shapes are:

  • **correction** — user pushed back on an approach (`"no"`, `"don't"`, `"stop"`, `"actually"`)
  • **retry** — agent ran the same tool 2+ times with variations before it worked
  • **waste** — many Reads/Greps/Globs before finding the right file
  • **reversal** — agent edited then unwound (Edit → revert, Write → delete)
  • **dead-end** — tool failed because of the environment (missing binary, wrong path, OS mismatch)
  • **self-correction** — agent caught its own mistake mid-stream

Severity:

  • **high** — explicit user correction, repeated correction, or substantial wasted turns
  • **med** — single retry/reversal, modest waste
  • **low** — minor dead-end, easily recovered

Confidence (0–100): how sure you are this is a real wrong turn worth surfacing, vs. signal noise. Be honest — low-confidence items are not bugs, they let the user filter out speculation.

  • **90–100** — explicit user correction or unambiguous failure
  • **70–89** — strong pattern (repeated retries, clear reversal) with minor interpretation
  • **50–69** — plausible wrong turn, could also be normal exploration
  • **<50** — speculative; surface only if the pattern is interesting

Render as `data-conf="<n>"` on each `.incident` plus a small badge. The dashboard slider hides incidents below the chosen threshold.

What to recommend

Open-ended. Anything that would help a future agent reach the goal faster. Examples (not a fixed taxonomy — pick what fits the incident):

  • **rule** → `CLAUDE.md` block (project or user)
  • **doc** → `docs/ARCHITECTURE.md`, README pointer, architecture map
  • **script** → `scripts/<name>.sh` wrapping a known-good command
  • **hook** → `.claude/settings.json` `PreToolUse` / `PostToolUse` for hard blocks (e.g. block edits to a generated file)
  • **memory** → user/feedback/project/reference entry under `~/.claude/.../memory/`
  • **skill** → a new sub-skill in `~/.claude/skills/`
  • **agent** → an agent definition in `.claude/agents/`
  • **allowlist** → `permissions` in `.claude/settings.json`
  • **env** → environment variable, MCP server, etc.

Each recommendation should map to one or more incidents (the dashboard renders these as `addresses #N` links).

How to render

Synthesize a fresh single-file HTML dashboard each run, using `reference/example.html` as **inspiration** (not a template — override anything that doesn't fit the session). The reference file establishes:

  • Two-pane layout: incidents left, recommendations right
  • CSS tokens (`--bg`, `--panel`, `--fg`, `--muted`, `--accent`, etc.) — keep this scheme
  • Type pairing: Newsreader italic for the wordmark, JetBrains Mono for everything technical, system sans for prose
  • Click incident card to expand; click `addresses #N` link to scroll-and-highlight the matching incident
  • Filter chips toggle severity and category

Output directory — do **not** write inside the skill folder. Resolve a temp dir from the environment, in this preference order:

1. `$TMPDIR` (Unix/macOS) 2. `$TMP` or `$TEMP` (Windows / Git Bash) 3. `/tmp` as fallback

Then create a `reflect/` subdir inside it (`mkdir -p`) and write the report as `<that-dir>/reflect/<slug>.html`. Slug rules — kebab-case, derived from session goal:

  • 2–5 words, lowercase, hyphen-separated, ASCII only
  • describe the *task*, not the session id (e.g. `auth-middleware-rewrite`)
  • if the goal is unclear, fall back to `<YYYY-MM-DD>-<topic>.html`

Open it in the browser when done: `start "" <path>` (Git Bash on Windows).

Files in this skill

  • `reference/example.html` — canonical inspiration HTML. Read before generating.
  • `scripts/analyze_session.py` — JSONL compressor. Strips system reminders, preserves real user messages, collapses tool calls/results to one-liners, expands compaction blocks. Output is markdown to stdout. Use only for explicit sessions — never on the current in-context session.

Workflow

**Default (no args)** — reflect on current session: 1. From conversation memory, list wrong-turn moments (incidents) with severity + category + turn marker + a 1-line excerpt. 2. For each incident (or cluster), draft a recommendation: title, target (kind + path), snippet, list of incident IDs it addresses. 3. Read `reference/example.html` for the current aesthetic. 4. Writ

Read more
@nikiforovall
Ships withclaude-code-rules

A collection of Claude Code recommendations and practices. Learn practical techniques to enhance your AI-assisted development workflow with Claude Code.

14227 skills13 agents3 MCP
Get the whole plugin

Stars on GitHub

Momentum

stars in total
142
Star history of NikiforovAll/claude-code-rules on GitHub, a chart by star-history.com

Other skills on claude-code-rules.

More skills from other plugins.

brainstorming
Auto-invoked

brainstorming

You MUST use this before any creative work - creating features, building components, adding functionality, modifying behavior, or…

@obra@obraInstall Skill
ask-matt

ask-matt

Ask which skill or flow fits your situation. A router over the skills in this repo.

skills2w309k
@mattpocock@mattpocockInstall Skill
accessibility
Auto-invoked

accessibility

Design, implement, and audit accessible UI to WCAG 2.2 Level AA across Web, iOS, and Android — semantic ARIA roles and labels,…

ecc2w293k
@affaan-m@affaan-mInstall Skill
compiler-commit

compiler-commit

Use when you want to verify compiler changes and commit with the correct convention. Runs tests, lint, and format, then commits…

react5d252k
@facebook@facebookInstall Skill

Questions about reflect.

Which coding agents can use reflect?
reflect installs in Claude Code, Codex, Cursor, Gemini CLI, GitHub Copilot, OpenCode and Windsurf with the skills CLI, using each agent's flag shown on this page. Flowy's auto-invocation, which fires a skill when your prompt matches, runs in Claude Code only.