claude-code-plugin-ref…
Explain plugin, skill, command, agent, and hook mechanics used here. Use when authoring or debugging plugins. Do not use for ops;…
Converts a Claude Code session JSONL file into an animated GIF terminal replay. Use when creating demos or visual evidence from past sessions.
Claude Code
$ npx -y skills add athola/claude-night-market --skill session-replay --agent claude-code
Codex
$ npx skills add athola/claude-night-market --skill session-replay -a codex -y
Cursor
$ npx skills add athola/claude-night-market --skill session-replay -a cursor -y
Gemini CLI
$ npx skills add athola/claude-night-market --skill session-replay -a gemini-cli -y
GitHub Copilot
$ npx skills add athola/claude-night-market --skill session-replay -a github-copilot -y
OpenCode
$ npx skills add athola/claude-night-market --skill session-replay -a opencode -y
Windsurf
$ npx skills add athola/claude-night-market --skill session-replay -a windsurf -y
name: session-replay description: Converts a Claude Code session JSONL file into an animated GIF terminal replay. Use when creating demos or visual evidence from past sessions. globs: "**/*.jsonl" alwaysApply: false category: artifact-generation tags: - recording - demo - session-capture - gif - terminal - replay tools: [] complexity: medium estimated_tokens: 1500 progressive_loading: false dependencies: - scry:vhs-recording
Turn a Claude Code session JSONL file into an animated GIF that plays back the conversation as typed terminal output.
The skill orchestrates three steps: parse the session file into turns, generate a VHS tape from those turns, and hand off to scry for GIF rendering.
| Need | Skill | What it adds | |------|-------|-------------| | GIF rendering | `scry:vhs-recording` | Converts VHS tape to animated GIF | | Tutorial embedding | `scribe:tech-tutorial` | Embed GIF in tutorial markdown | | PR preparation | `sanctum:prepare-pr` | Attach replay as PR evidence |
When the user invokes `/session-replay` without a path argument, use `scribe.session_parser.list_sessions()` to discover recent session files from `~/.claude/projects/`.
The function returns a list of `SessionInfo` objects sorted by modification time (most recent first), each containing:
Present the list to the user as a numbered menu:
Recent sessions: 1. [my-project] "implement auth module" (8 turns, 2h ago) 2. [api-server] "fix rate limiting bug" (3 turns, 5h ago) 3. [docs-site] "update installation guide" (12 turns, 1d ago)
Ask the user to pick a number. Use the selected session's `path` for the remaining steps.
If `list_sessions` returns an empty list, report that no sessions were found and suggest providing a path directly.
Use `scribe.session_parser.parse_session()` to read the JSONL file. The parser:
Apply filters based on user options:
`tools`, `thinking` (thinking is excluded by default)
Use `scribe.tape_generator.generate_tape()` to convert the parsed turns into a VHS tape file. The generator:
Write the tape to a temp file: `{tempdir}/session-replay-{timestamp}.tape`
Invoke `Skill(scry:vhs-recording)` with the tape file path. Scry validates the tape, runs VHS, and produces the GIF at the path specified in the Output directive.
After successful rendering, delete the temp tape file.
| Error | Action | |-------|--------| | VHS not installed | Report: install via `go install github.com/charmbracelet/vhs@latest` | | Tape syntax error | Report VHS error output. Likely a string escaping bug. | | GIF generation fails | Report VHS error. Suggest `--turns 1-5` to reduce scope. | | Scry skill not found | Report: scry plugin required for GIF rendering. |
# Pick from recent sessions interactively /session-replay # Replay a specific file directly /session-replay ~/.claude/projects/my-project/abc123.jsonl # First 5 turns only, faster playback /session-replay --turns 1-5 --speed 1.5 # Show only the conversation, no tool calls /session-replay --show user,assistant --output demo.gif
Output (interactive picker):
Recent sessions: 1. [my-project] "implement auth module" (8 turns, 2h ago) 2. [api-server] "fix rate limiting bug" (3 turns, 5h ago) 3. [docs-site] "update installation guide" (12 turns, 1d ago) Pick a session [1-3]: 1 Parsed 42 turns from session (12 user, 15 assistant, 15 tools) Generated tape: /tmp/session-replay-1711234567.tape Rendering GIF via scry... Done: session-replay.gif (18s, 960x540)
before rendering is attempted
directive and its size reported (duration, dimensions)
`go install github.com/charmbracelet/vhs@latest` rather than silently failing
user is told no sessions were found and directed to provide a path directly
A plugin marketplace for Claude Code. Install only the plugins you need to run git workflows, code review, spec-driven development, and autonomous agents from inside your Claude Code session.
Explain plugin, skill, command, agent, and hook mechanics used here. Use when authoring or debugging plugins. Do not use for ops;…
States load-bearing decisions, invariants, and weak points. Use when judging a design change. Do not use for gating; use…
Rebuild the dev environment: uv, Python tiers, pins, traps. Use when onboarding or toolchain breaks. Do not use for daily…
Classify, gate, and review changes. Use when landing a PR, releasing, or amending rules. Do not use for failure triage; use…
Search and record project memory (Discussions, journal, ADRs). Use before re-investigating anything. Do not use for settled…
Bind loop 'done' to unfakeable gates. Use to harden egregore/herald loops or promote completion_integrity. Not for QA gates; use…
You MUST use this before any creative work - creating features, building components, adding functionality, modifying behavior, or…
Ask which skill or flow fits your situation. A router over the skills in this repo.