How it plugs in
peepshow ships as a proper Gemini CLI extension, not just an instruction file. The manifest declares the extension, `commands/peepshow/*.toml` register two namespaced slash commands, and `GEMINI.md` imports `AGENTS.md` so the model has the full CLI contract in context even when you call peepshow by hand. There is no MCP server to run and no daemon to keep alive — the commands shell out to the `peepshow` binary, so npm supplies the runtime and the extension supplies the workflow.
Install
npm install -g peepshow # runtime
gemini extensions install https://github.com/t0mtaylor/peepshow
# then, inside Gemini CLI:
/peepshow:slides ./demo.mp4Files involved
gemini-extension.jsonExtension manifest — name, version, and the context file to load.commands/peepshow/slides.tomlRegisters /peepshow:slides — extraction, frame reading, transcript, annotate.commands/peepshow/sink.tomlRegisters /peepshow:sink — list, add, remove and condition auto-sinks.GEMINI.mdContext file. Imports AGENTS.md so the full CLI contract is always loaded.
Slash commands
Registered by the extension itself — they show up in /help after a restart or /commands reload.
/peepshow:slides <video>Runs the extraction, reads every frame in order, reads the transcript, answers, then writes the analysis back into the run's report./peepshow:sink <intent>Manages the persistent auto-sink list in plain language — including --when conditions like director=Kubrick or extension=mp4,mov.
In practice
user: /peepshow:slides ./demo.mp4
gemini: (runs peepshow → reads frames in order → reads transcript
→ answers → peepshow report annotate)All 95 sinks still work
The CLI is the same across agents — which means every sink documented under /sinks is available here. Auto-sinks fire regardless of which agent invoked peepshow.
Report + LLM analysis loop
Every run also writes a self-contained report.html + manifest.json next to the frames (see the Report page). When Gemini CLI consumes the frames, the analysis flows back into the report so whoever opens it next sees the model's understanding without re-running the prompt.
echo '{"summary":"<your summary>","provider":"gemini"}' \
| peepshow report annotate "<outputDir>"The annotate instruction is wired into the Gemini CLI integration — the agent runs it after reading the frames + transcript. Report walkthrough →