Nm Scribe Session Replay

v1.0.0

Convert a Claude Code session JSONL file into an animated GIF replay showing the conversation as typed terminal output

0· 105·1 current·1 all-time

Install

OpenClaw Prompt Flow

Install with OpenClaw

Best for remote or guided setup. Copy the exact prompt, then paste it into OpenClaw for athola/nm-scribe-session-replay.

Previewing Install & Setup.
Prompt PreviewInstall & Setup
Install the skill "Nm Scribe Session Replay" (athola/nm-scribe-session-replay) from ClawHub.
Skill page: https://clawhub.ai/athola/nm-scribe-session-replay
Keep the work scoped to this skill only.
After install, inspect the skill metadata and help me finish setup.
Config paths to check: night-market.scry:vhs-recording
Use only the metadata you can verify from ClawHub; do not invent missing requirements.
Ask before making any broader environment changes.

Command Line

CLI Commands

Use the direct CLI path if you want to install manually and keep every step visible.

OpenClaw CLI

Canonical install target

openclaw skills install athola/nm-scribe-session-replay

ClawHub CLI

Package manager switcher

npx clawhub@latest install nm-scribe-session-replay
Security Scan
VirusTotalVirusTotal
Benign
View report →
OpenClawOpenClaw
Benign
high confidence
Purpose & Capability
The name/description (session → animated GIF) match the runtime instructions: listing/parsing Claude Code JSONL sessions, generating a VHS 'tape', and handing off to scry for GIF rendering. Required config (night-market.scry:vhs-recording) aligns with the declared rendering dependency.
Instruction Scope
Instructions explicitly read session files under ~/.claude/projects and parse/interpret user/assistant/tool turns — this is expected for the stated task. Note: session files may contain sensitive content (API keys, credentials, or PII); the skill will include whatever text is in the session when producing the GIF. The skill does not instruct contacting external endpoints or reading unrelated system paths.
Install Mechanism
Instruction-only skill with no install spec and no bundled code — nothing is written to disk by an installer. It may recommend installing the 'vhs' binary (go install) if missing, which is a reasonable runtime dependency for GIF rendering.
Credentials
No environment variables or credentials are requested. The only declared requirement is a config path to the scry VHS-rendering integration, which is appropriate for delegating GIF generation. No unrelated secrets or service credentials are requested.
Persistence & Privilege
always is false and the skill does not request persistent or elevated platform privileges. It writes a temporary tape file during processing and deletes it afterward — expected behavior for this workflow.
Assessment
This skill appears to do what it says: it reads Claude Code session JSONL files, converts them into a VHS-style tape, and asks scry to render a GIF. Before installing or running it, inspect the session files you plan to render — sessions often contain sensitive data (API keys, credentials, PII, or private code snippets) and the generated GIF will include whatever text is in the session. Ensure you have the scry integration available and the vhs binary installed (the README points to `go install github.com/charmbracelet/vhs@latest`), and avoid rendering sessions that contain secrets or private information. Because this is an instruction-only skill, there is no installer writing code to disk beyond the normal temporary output it creates during processing.

Like a lobster shell, security has layers — review code before you run it.

Runtime requirements

🦞 Clawdis
Confignight-market.scry:vhs-recording
latestvk97fnn17kqfpwem1wd8dvr2qc5857kbc
105downloads
0stars
1versions
Updated 1w ago
v1.0.0
MIT-0

Night Market Skill — ported from claude-night-market/scribe. For the full experience with agents, hooks, and commands, install the Claude Code plugin.

Session Replay

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.

When To Use

  • Creating demos of development workflows
  • Adding visual evidence to pull requests
  • Sharing session highlights to Slack or GitHub
  • Embedding session replays in tutorials

When NOT To Use

  • Writing blog posts from sessions (use scribe:session-to-post)
  • Generating API documentation (use scribe:doc-generator)
  • Recording live terminal commands (use scry:vhs-recording directly)

Integration Points

NeedSkillWhat it adds
GIF renderingscry:vhs-recordingConverts VHS tape to animated GIF
Tutorial embeddingscribe:tech-tutorialEmbed GIF in tutorial markdown
PR preparationsanctum:prepare-prAttach replay as PR evidence

Workflow

Step 0: Pick a Session (when no path is provided)

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:

  • path -- full path to the .jsonl file
  • modified -- mtime timestamp
  • first_user_message -- preview of the first human message
  • turn_count -- number of user turns in the session
  • project_name -- parent directory name

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.

Step 1: Parse the Session

Use scribe.session_parser.parse_session() to read the JSONL file. The parser:

  • Extracts user and assistant turns
  • Skips sidechain (subagent) records
  • Collapses tool calls into readable summaries
  • Wraps text at the configured column width
  • Truncates long responses at the configured row count

Apply filters based on user options:

  • --turns selects specific turn ranges (e.g. 1-5)
  • --show controls which layers appear: user, assistant, tools, thinking (thinking is excluded by default)

Step 2: Generate VHS Tape

Use scribe.tape_generator.generate_tape() to convert the parsed turns into a VHS tape file. The generator:

  • Creates the Output directive and Set commands
  • Types user messages at 30ms/char with $ prefix
  • Types assistant responses at 15ms/char
  • Types tool summaries at 100ms with two-space indent
  • Adds 1.5s pauses between turns
  • Holds the final frame for 3s
  • Scales all timing by the --speed multiplier
  • Truncates when --max-duration is exceeded

Write the tape to a temp file: {tempdir}/session-replay-{timestamp}.tape

Step 3: Render GIF

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 Handling

ErrorAction
VHS not installedReport: install via go install github.com/charmbracelet/vhs@latest
Tape syntax errorReport VHS error output. Likely a string escaping bug.
GIF generation failsReport VHS error. Suggest --turns 1-5 to reduce scope.
Scry skill not foundReport: scry plugin required for GIF rendering.

Example

# 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)

Comments

Loading comments...