APP v0.2.0

Shotlog

Chronological screenshot logging for AI debug loops โ€” capture, annotate, and review visual progress across channels.

Shotlog demo: ralph loop inspecting SN65HVD230 molecule from 4 angles with live captions, timeline zoom, file path click, and clipboard paste

๐Ÿ’ฌ Sample prompts Paste any of these into Claude Code to use this app
Open viewer Open the shotlog for my project
Start channel Start a shotlog channel for this debug session
Capture 3D Take a screenshot of the 3D viewer and log it to shotlog
Ralph loop Do a ralph loop on the schematic โ€” screenshot each change and log it
Show history Show me the screenshot history for this project
Inject one Inject this screenshot into shotlog with a description
โšก Install this app

Paste this into Claude Code (VS Code panel, Adom editor, or terminal) to install:

I want to install the "Shotlog" app from the Adom Wiki (https://wiki-ufypy5dpx93o.adom.cloud/wiki/apps/shotlog). For the Docker CLI: gh release download v0.2.0 --repo adom-inc/shotlog --pattern shotlog -D /usr/local/bin && chmod +x /usr/local/bin/shotlog && shotlog install Then verify the install works.

Download v0.2.0

โŠž Windows coming soon
macOS coming soon
๐Ÿง Linux coming soon
๐Ÿณ Adom Docker CLI shotlog ยท

See all releases on GitHub (private repo โ€” access required)

Shotlog

A Rust CLI + HTTP server for chronological screenshot logging. Shotlog gives you a real-time visual timeline where screenshots are logged with descriptions, organized into named channels, and streamed live to a viewer via WebSocket.

Built for AI-assisted development workflows where Claude Code captures, annotates, and iterates on visual output โ€” and you watch the progress unfold in real time.

Features

  • Named channels โ€” organize screenshots by project or task (board-review, debug-session, 3d-viewer)
  • Real-time WebSocket viewer โ€” new screenshots appear instantly as they're injected
  • Meaningful filenames โ€” descriptions become filenames, so your screenshot folder tells a story
  • Clipboard paste โ€” Ctrl+V in the viewer to paste and log screenshots with auto-resize
  • Auto-resize โ€” images resized to max 1400px on longest edge (Lanczos resampling)
  • Delete from viewer โ€” remove individual screenshots directly from the timeline UI
  • Persistent storage โ€” channels survive server restarts, recovered from disk on startup

CLI Reference

Start the server

shotlog serve              # Default: port 8820, data in ./screenshots/shotlog
shotlog serve -p 8820 -d ./data   # Custom port and data directory

Check server health

shotlog health
# OK: Shotlog server running on port 8820 with 3 channel(s)

Inject a screenshot

shotlog inject -c board-review -d "PCB layout after routing power traces" -s av_capture screenshot.png
# OK: Injected pcb-layout-after-routing-power-traces.png (1400x765, 538 KB) into channel board-review
#      Saved to: /home/adom/project/screenshots/shotlog/board-review/pcb-layout-after-routing-power-traces.png
FlagRequiredDescription
-cyesChannel name
-dyesDescription of what the screenshot shows (becomes the filename)
-snoSource label (e.g. av_capture, pup_screenshot, clipboard)
FILEyesPath to PNG file

Open the viewer

shotlog open -c board-review    # Opens the timeline viewer panel

Resize an image

shotlog resize large.png                # Resize in-place (max 1400px)
shotlog resize large.png -o small.png   # Resize to new file
shotlog resize large.png -w 800         # Custom max width

Install skill + completions

shotlog install    # Deploys Claude Code skill + bash completions

How it works

  1. shotlog serve starts an HTTP server on port 8820 that manages channels (directories of screenshot pairs: .png + .json metadata)
  2. shotlog inject adds a screenshot to a channel with a description that becomes the filename
  3. shotlog open launches the timeline viewer in a browser panel
  4. The viewer connects via WebSocket and shows new screenshots as they arrive โ€” no refresh needed
  5. Users can also paste from clipboard (Ctrl+V) directly into the viewer

Use cases

  • Ralph loops โ€” the primary use case. Claude Code captures screenshots after each iteration of a visual debug loop, injecting them into shotlog so you can watch the fix unfold. Rotate a 3D model, tweak a schematic, iterate on a UI โ€” each step gets logged with a description.
  • Design iteration โ€” log mockup revisions in a channel to see the progression from rough draft to final
  • 3D model review โ€” capture renders from different angles into a channel for side-by-side comparison
  • Bug documentation โ€” build a visual timeline of reproduction steps
  • Animation development โ€” log individual frames to review motion sequences

Install

Paste this into Claude Code:

Install shotlog from the Adom Wiki. Download the binary from https://wiki-ufypy5dpx93o.adom.cloud/static/apps/shotlog/shotlog, place it at /usr/local/bin/shotlog, make it executable, and run shotlog install.

SHOT
shotlog 17 days ago
shotlog Linux binary
Publish shotlog binary to wiki for auto-discovery and LCS deploymentJohn Lauer ยท 17 days ago
2.0 MB

Install notes

Adom Docker CLI install steps
gh release download v0.2.0 --repo adom-inc/shotlog --pattern shotlog -D /usr/local/bin && chmod +x /usr/local/bin/shotlog && shotlog install

Screenshots

AI Skill โ€” how Claude uses this app

Edit AI Skill

name: shotlog description: "Screenshot log viewer and injector. Use when: logging screenshots during debug loops, documenting visual progress, reviewing screenshot history, opening the screenshot log panel, injecting a screenshot into the log. Trigger words: shotlog, screenshot log, shot log, visual log, screenshot history, log screenshot, open shotlog, screenshot viewer."

Shotlog - Screenshot Log

Binary: /usr/local/bin/shotlog Port: 8820

CRITICAL: Always write great descriptions

The --desc flag is the most important part of every inject. The description becomes the filename (slugified), so it needs to be specific and descriptive. Future you (and the user) will read these filenames in the folder to understand what happened.

Bad descriptions:

--desc "screenshot"
--desc "test"
--desc "after fix"
--desc "board"

Good descriptions:

--desc "PCB board layout after routing power traces"
--desc "3D model front view with LED indicators lit"
--desc "Sign placement on rail car side panel verified"
--desc "Schematic after adding decoupling caps to U3"
--desc "Homepage hero section with animation at frame 42"
--desc "Error state when WiFi disconnected"

Think: what was I doing, what am I looking at, and why did I take this shot? Put that in the description.

Quick Start

shotlog serve &
shotlog open --channel my-project
shotlog inject -c my-project -d "Initial board layout before routing" -s av_capture screenshot.png
shotlog health
shotlog install

Commands

shotlog inject

shotlog inject -c CHANNEL -d "DESCRIPTION" -s SOURCE FILE
FlagRequiredDefaultDescription
-cyes-Channel name
-dyes-Why this screenshot was taken (becomes the filename)
-snocliSource: av_capture, pup_screenshot, clipboard, etc.
FILEyes-PNG file path (or - for stdin)

shotlog paste

Like inject but resizes to max 1400px width first.

shotlog resize

shotlog resize FILE                    # Resize in-place to max 1400px
shotlog resize FILE -o output.png      # Resize to new file
shotlog resize FILE -w 800             # Custom max width

shotlog open

shotlog open -c my-project             # Open webview tab in Hydrogen

shotlog serve

shotlog serve                          # Default port 8820, data in ./screenshots/shotlog
shotlog serve -p 8820 -d ./data        # Custom port and data dir

shotlog health

shotlog health                         # Check if server is running

shotlog install

shotlog install                        # Install skill + bash completions

Integration Pattern

After taking ANY screenshot, always inject it into shotlog with a good description:

# After pup browser_screenshot
SHOT=$(node ~/gallia/server/conduit-cli.js browser_screenshot '{"sessionId":"..."}' | python3 -c "import sys,json; print(json.load(sys.stdin).get('savedTo',''))")
shotlog inject -c my-project -d "Homepage after nav redesign with dropdown open" -s pup_screenshot "$SHOT"

# After av_capture saves to disk
shotlog inject -c my-project -d "3D component viewer showing SOIC-8 package from top" -s av_capture /path/to/screenshot.png

# Resize a large image for AI consumption
shotlog resize large-screenshot.png
shotlog inject -c my-project -d "Full schematic page 2 after DRC cleanup" -s manual large-screenshot.png

Browser Paste

Users can Ctrl+V in the shotlog webview to paste clipboard screenshots. Pasted images are auto-resized to max 1400px width.

Channel Naming

Use the project or task name:

  • board-review - PCB layout review
  • schematic-check - Schematic verification
  • sign-designer - Sign placement work
  • debug-session - Active debugging

Output

All commands use colored OK/ERROR output:

OK: Injected pcb-board-layout-after-routing-power-traces.png (1400x765, 538 KB) into channel board-review
OK: Shotlog server running on port 8820 with 3 channel(s)
ERROR: Cannot connect to shotlog on port 8820
Hint: Start with: shotlog serve &

Sub-Skills
?
What are Sub-Skills?

Sub-skills are community-contributed AI skill extensions for this component. They teach AI assistants about specific tools, configurators, or workflows.

Examples:

  • A manufacturer’s configuration tool for a motor controller
  • A community-written design guide for an amplifier circuit
  • An automated test/validation script for a sensor module

How to add one: Click Add Sub-Skill, provide the URL to your skill and a brief description. Submissions are reviewed by the Adom team before going live.

No sub-skills yet. Be the first to contribute one!

๐Ÿ”Ž How Claude finds this page (discovery snippet)

This page opts into Adom Wiki auto-discovery. When a user working in Claude Code mentions any of the trigger phrases below, Claude can proactively suggest this page. The pitch is exactly what Claude will say.

Pitch
"Chronological screenshot logging for AI debug loops โ€” capture, annotate, and review visual progress across channels with a built-in viewer panel."
Triggers
"shotlog", "screenshot log", "screenshot history", "visual log", "log screenshots", "screenshot viewer", "screenshot timeline", "debug screenshots", "visual debug loop", "screenshot channel", "inject screenshot", "open shotlog", "screenshot progress", "document visual progress"

Recent activity

1 commit