Getting it into your agent
This one installs as part of its plugin. Adding the marketplace and installing the plugin brings it with everything else the plugin ships.
/plugin marketplace add masterleopold/book-capture/plugin install book-captureWrote this? Show the measurements
A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.
[](https://agentmods.dev/commands/masterleopold/book-capture/photos)<a href="https://agentmods.dev/commands/masterleopold/book-capture/photos"><img src="https://agentmods.dev/badge/commands/masterleopold/book-capture/photos.svg" alt="Measured on agentmods" height="20"></a>What it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5.1 | $0.00013 | $0.00579 |
| Opus 5 | $0.00006 | $0.00290 |
| Sonnet 5 | $0.00003 | $0.00116 |
| Haiku 4.5 | $0.00001 | $0.00058 |
Grade A, and why
photos scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 6d ago.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Nothing flagged
None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.
What it actually says
Photo Book Capture
Source is pre-selected: photos (a folder of camera photos — phone, scanner app — one per page).
Follow the full pipeline in ${CLAUDE_PLUGIN_ROOT}/commands/capture.md with source = photos. Skip the platform selection step; there is no browser and no login.
Photo-specific notes:
- HEIC is read directly (an iPhone's default), alongside JPEG/PNG/TIFF. No pre-conversion step.
- Photos are rotated upright from their EXIF orientation. A phone stores the sensor's landscape pixels with a "rotate me" tag; ignore it and every page is sideways, which OCR reads as nothing.
- Order is the pipeline's weak point here. Kindle and PDF pages arrive in reading order for free; a photo folder does not. Import decides the order once, renames to
page_NNN.webp, and everything downstream (/ocr,/generate) then behaves exactly as for a captured book.--order time(default) — the photo's capture time, which is what you want when the filenames are unhelpful.--order filename— natural sort (IMG_9beforeIMG_10). Use this when a page was re-shot: it keeps its slot in the sequence, whereas in time order it jumps to the end of the book.
- Originals are never modified or moved. The import writes WebP copies into the output directory.
- Check the page order before running OCR. Pass
--dry-runfirst to print thephoto -> page_NNNmapping, and confirm the first and last pages are the ones you expect. A mis-ordered import produces a book whose text is subtly scrambled, which is far harder to notice later than a crash.
# Preview the ordering first
node "${CLAUDE_PLUGIN_ROOT}/scripts/import-photos.mjs" "<photo-dir>" --output-dir "<OUTPUT_DIR>" --dry-run
# Then import
node "${CLAUDE_PLUGIN_ROOT}/scripts/import-photos.mjs" "<photo-dir>" --output-dir "<OUTPUT_DIR>" [--order time|filename]
Photos already sitting in the captures tree (copied in by hand, rather than imported) can be compressed in place instead — this keeps their filenames, so use it only where nothing links to the images:
node "${CLAUDE_PLUGIN_ROOT}/scripts/compress-captures.mjs" "<captures-root>" --dry-run
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- 6d ago First seen · 36 lines · 13 tokens per session scan A 44d1f92c16b6
photos is a command published in the GitHub repository masterleopold/book-capture (10 stars, last pushed 1mo ago), licensed MIT. It adds 13 tokens to every session and 579 once invoked, about $0.0001 per session on Opus 5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-31.
Other commands, from other repositories
report
Generate a publication-grade HTML report from a markdown source using the TRAID Design System catalog (5 templates). Agy matches content to template, you confirm, agy produces final branded HTML.
doc-to-md
Convert a PDF, docx, image, or other document to clean Markdown using Antigravity (agy) multimodal Gemini. Saves to docs/agy/converted/.
ccc-update-docs
Sync documentation with the codebase by generating from source-of-truth files.
obsidian-distill
Condense a long note or source into key claims, each tagged with provenance back to the exact source block it came from.
recall-save
Generate / overwrite .recall/context.md with Recall's local offline summarizer.
spreadsheet-audit
Perform a 6-step audit of an Excel spreadsheet for formula correctness, formatting consistency, data integrity, boss-auditable simplicity, and spec compliance. Uses the excel-screenshot MCP server tools — no Excel installation required.