PR Explainer — Narrated Code Tours & Reviews
by Indieprise
Walks you through PRs with voice narration and code review findings, grounded in actual code analysis.

What it does
PR Explainer reads your codebase before it reads your diff. It traces imports, resolves dependencies, classifies changes by severity, and picks framework-specific context — then hands all of that to the LLM. The result: tours that reference real files at real line numbers, and review findings that understand how your change fits into the project.
Two main workflows:
- Narrated tours — step-by-step audio walkthroughs of PRs, uncommitted changes, or individual files. Each stop highlights a code region and narrates what changed and why.
- Code review — severity-graded findings (critical, warning, good practice) shown inline with gutter decorations. Run standalone or combined with tours.
Getting started
- Install the extension
- Open a project with changes
Cmd+Shift+P → PR Explainer: Explain Code Changes...
- Sign in when prompted — no API keys needed
The Smart Diff Picker auto-detects your PR, uncommitted changes, or lets you pick a commit range. First tour takes a few seconds; replays are instant from cache.
Tour modes
Explain Code Changes — The main entry point. Picks up your PR or uncommitted changes automatically, lets you choose detail level, and optionally includes review findings.
Review Code Changes — Same analysis, but focused on finding issues. Each stop shows severity-graded findings with inline gutter markers in the editor.
Explain This File — Deep dive into a single file. Good for onboarding or understanding unfamiliar code.
Code review
When review mode is on (via the "Review Code Changes" command or the includeReview setting), each tour stop includes findings graded by severity:
- Critical — breaking changes, security issues, bugs
- Warning — code quality issues, missed edge cases
- Good practice — things done well worth noting
Findings appear in the narration panel and as colored gutter decorations in the editor. The status bar shows accumulated counts across the tour.
Audio & video
Every tour is narrated with natural TTS. Pick from OpenAI, ElevenLabs, or the free Web Speech API. Pause, skip between stops, mute, or just read the text.
Export any tour as an MP4 with narration and closed captions — useful for async PR reviews or team onboarding. Requires ffmpeg on PATH.
Share tours
Export a tour as a portable .prtour file and send it to anyone — it bundles the narration, audio, and a snapshot of the referenced code, so it opens without your repo. When a teammate runs Open Tour File, the tour snaps to their checkout: matching files open live, drifted files re-anchor to the moved code, and anything missing falls back to the author's read-only snapshot with a clear banner.
Language & framework support
11 languages: Rust, Go, TypeScript, JavaScript, Python, Java, Kotlin, C#, PHP, Ruby, Scala.
7 framework-specific recipes: React, Next.js, Spring Boot, FastAPI, Django, Gin, Axum. Each recipe knows the framework's idioms — route handlers, middleware patterns, ORM models — so tours explain changes in the right context.
Detail levels
- Critical — 3-5 stops, just the important changes
- Medium — 5-10 stops, balanced (default)
- All — up to 15 stops, comprehensive
Two ways to run
Managed mode (default): Sign in with Google, GitHub, or email. We handle the AI and TTS — no keys needed. Free tier gets 10 tours/month. Pro waitlist open.
Local mode: Set prexplainer.hostedMode to off and add your own API keys. All code stays on your machine. No account, no limits.
Commands
| Command |
What it does |
Shortcut |
| Explain Code Changes... |
Smart diff picker → tour |
— |
| Review Code Changes... |
Smart diff picker → review |
— |
| Explain This File |
Tour current file |
— |
| Replay Last Tour |
Play from cache |
— |
| Export Tour as Video |
MP4 with captions |
— |
| Export Tour as PDF |
Selectable-text PDF |
— |
| Open Tour File (.prtour) |
Open a shared tour with snap-to-live |
— |
| Pause Tour |
Pause/resume |
Alt+Space |
| Mute/Unmute |
Toggle voice |
Alt+M |
| Previous Stop |
Back one stop |
Alt+[ |
| Next Stop |
Forward one stop |
Alt+] |
| Stop Tour |
Cancel |
Escape |
| Sign In / Sign Out |
Managed mode auth |
— |
Settings
LLM
| Setting |
Description |
prexplainer.llmProvider |
anthropic, openai, google, or auto-detect |
prexplainer.llmModel |
Model name (e.g. claude-sonnet-4-6, gpt-5.4) |
prexplainer.anthropicApiKey |
Anthropic key (or PREXPLAINER_ANTHROPIC_API_KEY env var) |
prexplainer.openaiApiKey |
OpenAI key (or PREXPLAINER_OPENAI_API_KEY env var) |
prexplainer.googleApiKey |
Google key (or PREXPLAINER_GOOGLE_API_KEY env var) |
TTS
| Setting |
Description |
prexplainer.ttsProvider |
openai, elevenlabs, web-speech, or auto-detect |
prexplainer.ttsModel |
Model (e.g. gpt-4o-mini-tts, tts-1-hd) |
prexplainer.ttsVoice |
Voice (e.g. nova, alloy, Rachel) |
prexplainer.elevenLabsApiKey |
ElevenLabs key (or PREXPLAINER_ELEVENLABS_API_KEY env var) |
Other
| Setting |
Description |
prexplainer.tourLevel |
Default detail: critical, medium, all |
prexplainer.hostedMode |
on (managed, default) or off (bring your own keys) |
prexplainer.includeReview |
Include code review findings in tours (default: off) |
Privacy
Local mode: Code goes directly from your machine to your LLM/TTS provider. We never see it.
Managed mode: Code context is sent to our servers for processing and deleted immediately after. You opt in explicitly by signing in. See our privacy policy.
Tour data and audio are cached locally in .prexplainer/ (gitignored).
Requirements
- VS Code 1.95+
- Local mode: At least one LLM API key
- Video export: ffmpeg and ffprobe on PATH
License
MIT