qna watches your session, parks the choices that slip by, and hands them back as batched, dependency-ordered questions — each with real alternatives, never a yes-or-no trap.
$ curl -fsSL https://raw.githubusercontent.com/jinhuang712/claude-code-qna/main/reinstall.sh | bash
Ask Claude Code what's outstanding and you get ten numbered questions in one message. Answering means scrolling and typing Q1: … Q2: … by hand — then watching them scroll away.
The interesting part isn't the prompt — it's which parts are not prompt.
Every question renders as real options with a preview panel. Free text is only the "Other" fallback — you answer in clicks, batched four at a time.
Choices Claude makes without your sign-off get parked in a per-session log. So the options you're offered later are the ones actually weighed at the time — not three invented on the spot.
"Give three options" and "always show a preview" aren't polite requests. Scripts and hooks refuse anything that doesn't measure up — on both the recording side and the asking side.
No interruption to your flow. Decisions accumulate silently; you collect them on your terms.
Three rules: when Claude decides something you didn't sign off on, when you defer something, and when a parked item gets settled. Each runs qna-add or qna-resolve — which refuse bad entries.
Decisions live in .qna/<session>.md, not in context. After a compaction the protocol and backlog re-inject automatically. Nothing evaporates.
/qna:ask and collectIt scans the conversation and the log, reconciles what's already settled, ranks by dependency, and asks — batched, with previews. A hook validates every question: no yes/no traps, no preview-less options.
No settings.json edits, no PATH changes, no CLAUDE.md edits.
One line, from your terminal:
Work as usual inside Claude Code, then: