shoots — documentation

DocsOverview

shoots — documentation

Scriptable batch automation for professional photography workflows.

shoots is an orchestration layer, not an editor and not a DAM. It sits before or after Lightroom / Capture One / your culling tool of choice and automates the tedious parts around them.


Start here

Page What it covers
Getting started Install, setup, doctor, your first import
Core concepts Non-destructive rules, exit codes, JSON output, file discovery
Command reference Every command, every flag, with examples
Interactive shell The fullscreen shoots shell, / palette, @ mentions

Guides

Page What it covers
Filename templates The {date}_{camera}_{seq:4}.{ext} token language
Rating profiles Built-in profiles, how stars are decided, learned profiles
Preference learning embeddingsmatch duels → your own profile
Develop predictor The local "Lightroom AI": learn your edit style, predict XMP
Pipelines Declarative YAML pipelines (status: authorable, not yet executable)
Scripting & automation JSON, exit codes, cron, CI, watch folders
Recipes Complete end-to-end workflows for real shoots

Reference

Page What it covers
Configuration ~/.shoots layout, every environment variable
Migration notes What each release asks of you — printed by shoots release-notes
Troubleshooting Common failures and their fixes
Development Monorepo layout, build, release process

The 60-second tour

# 1. Install external tools (exiftool, LibRaw, the CLIP model) into ~/.shoots
shoots setup

# 2. Offload a card into a dated catalog, checksum-verified
shoots import E:/DCIM/100CANON --dest D:/Shoots/2026/smith-wedding

# 3. Stamp studio metadata onto everything
shoots exif D:/Shoots/2026/smith-wedding \
  --set-artist "Jane Doe Photography" \
  --set-copyright "© 2026 Jane Doe" \
  --set-keywords wedding,smith

# 4. Move the out-of-focus frames out of the way (keepers stay put)
shoots cull D:/Shoots/2026/smith-wedding --dest D:/Shoots/2026/smith-wedding/rejects

# 5. Star-rate what is left, as XMP sidecars Lightroom will read
shoots rate D:/Shoots/2026/smith-wedding --profile wedding --write-xmp

Every mutating command accepts --dry-run. Every command accepts --json. Nothing is ever deleted.


Command map

shoots
├── import       card → catalog, renamed and SHA-256 verified
├── rename       in-place batch rename with the same template engine
├── exif         batch read/write EXIF·IPTC·XMP via exiftool
├── cull         focus-aware blur detection; relocate or review rejects
├── rate         0–5 star ratings + keywords via the ONNX CLIP model
├── embeddings   profile-neutral CLIP export for preference learning
├── match        learn your eye from duels → a personal rating profile
│   ├── import      an embeddings bundle → the duel database
│   ├── serve       the duel UI at 127.0.0.1:4576
│   └── train       Bradley-Terry + ridge → ~/.shoots/profiles/<name>.json
├── develop      personal develop-setting predictor
│   ├── export      build a training dataset from an edited catalog
│   ├── train       fit a per-catalog develop profile
│   ├── predict     apply a profile → predicted crs vector / XMP sidecar
│   └── diagnose    style-clustering diagnostic
├── setup        provision exiftool + LibRaw + the inference model
├── doctor       environment health check
├── update       self-update the standalone binary
├── release-notes  the migration steps this release needs, checked against ~/.shoots
└── shell        the interactive shell (default with no arguments)

License

Source-available, not open source — PolyForm Noncommercial 1.0.0. Free to read, use, modify and share for noncommercial purposes only. For a commercial license, contact stefanopascazi@gmail.com.

Edit this page on GitHub