Ever since Claude Code launched its AskUserQuestion tool, my AI conversations changed. Mid-session, Claude stops and asks me pointed questions, with options to choose from or type a freeform response. The tool is simple but what it forces me to do isn't.
In that pause, I have to articulate why I'm doing something, what I actually want, and how it connects to something tangible. I liked it enough to put it in my global CLAUDE.md settings: a permanent instruction that says always use AskUserQuestion when interviewing me.
Often, the questions and my own answers surprise me. I push back, we go in a different direction, and that back-and-forth is the part I keep coming back to. This is also the most intellectually stimulating part of my day.

The problem with ephemeral conversations
I often re-read my old emails and documents as a learning exercise. I can see how I used to think, how I framed problems, where I was sharp (rarely) and where I was vague (always). My AI conversations have that same quality. But I can't revisit them.
Once a Claude Code session ends, the Q&A is gone. The reasoning trace lives in JSONL files. Transcript viewers exist, but they visualize everything equally: tool calls, file reads, code generation, and Q&A moments all get the same treatment. None of them surface the questions and decisions as first-class content.
Those Q&A moments are where I made decisions, changed direction, or discovered I didn't know what I wanted. That signal was getting lost in noise.
What I built
A reflection visualizer. A zero-dependency Node.js script that scans all Claude Code session logs across every project, extracts every AskUserQuestion interaction, and generates a self-contained HTML file. No server, no cloud, everything stays on your machine.
The viewer uses a 3-tier visual hierarchy: Q&A cards front and center, conversation context around them, and tool calls collapsed into pills. Light/dark mode, expandable entries, JSON export for the data. Runs standalone or as a Claude Code skill.

Building it
I built this with Claude Code. The parsing logic is straightforward: read JSONL, filter for AskUserQuestion tool calls, template into HTML. The interesting part was the design conversation. Claude asked me what a "useful" visualization would look like, and I realized I didn't want a transcript viewer with syntax highlighting. I wanted something that felt like reading a journal. My questions, my decisions, my reasoning, without the noise.
The irony of using AskUserQuestion to build a tool that preserves AskUserQuestion moments was hard to miss.
If you use Claude Code and find yourself drawn to the interactive moments more than the outputs, give it a try.