An AI photography coach you run in Claude Code. Hand it your images. It critiques them honestly — no flattery, clear is kind — tracks the weaknesses that keep recurring across your rolls, and assigns challenges to fix them.
Built for film, where slowing down is the point. But works for any camera.
- Critiques a curated selection of frames against a craft rubric, in a fixed order: a cold read first (what the photo says to a stranger), then specific, falsifiable craft notes, a strength only if one is genuinely carrying the frame, and a verdict.
- Tracks recurring weaknesses in a plain-text ledger that both you and the coach re-read every session. Progress is a file on disk, not the model's memory.
- Audits a whole roll to catch the habits your editing hides — the frames you'd never submit are where your worst tendencies live.
- Assigns challenges — constraints aimed squarely at your most stubborn weakness.
Illustrative example — not a real photo. This is the shape and voice of the output: a cold read first, then specific craft notes tagged with tracked weaknesses, a strength only if one is carrying the frame, then a verdict.
frame-04.jpg
Cold read: A man waits at a bus stop, shot from across the street. The eye lands on the lit shop window behind him first, then has to work back to find him. He reads as incidental — like he wandered into a photo of the window.
Craft: He's parked dead-center with the pole of the bus-stop sign growing out
of his shoulder (centered-default, tangent). The shop window is brighter than
his face and sits at his head height, so it wins the frame (busy-edges). His
dark coat falls against the dark doorway behind him and the edge dissolves — you
lose his shoulder line (subject-merge). Shot from across the street; the
distance reads as caution (too-far).
Strength: The reflection in the window — a second figure passing, unaware — is the actual picture. It's just in the wrong half of the frame.
Verdict: Doesn't work as framed. The man isn't the subject, and the real subject — that reflection — is an afterthought. Cross the street, get close, and let the window do the work.
It sees a scan and nothing else — no film stock, no settings, no idea what you were going for. So it judges only what's in the frame, and it will ask before guessing. It can read craft fundamentals well; it cannot tell you whether a photo is art. Taste is yours. This tool sharpens the craft underneath it.
It will not flatter you, and it will not pretend to certainty it doesn't have. If a frame is ambiguous, it asks one question before ruling.
- Install Claude Code.
- Clone this repo and open it in Claude Code:
git clone https://github.com/Jason-Cyr/photography-coach.git cd photography-coach claude - Scan a roll. Put your curated picks in a new folder under
sessions/, e.g.sessions/2026-06-28-portra-walk/. - In Claude Code, run
/critique.
| Command | What it does |
|---|---|
/critique |
Critique your curated picks from a roll |
/audit |
Whole-roll pass to surface habits your edit hides |
/review |
Honest synthesis of your progress across sessions |
/challenge |
Assign your next challenge from your worst weakness |
coach/ the system — edit these to change how the coach thinks
persona.md voice and hard rules
rubric.md craft dimensions a cold read can judge
weaknesses.md the tracking vocabulary
challenges.md constraint-based assignments
.claude/commands/ the slash commands
templates/ output formats
sessions/ your scans + critiques (gitignored — private)
progress/ your weakness ledger + log (gitignored — private)
Everything is plain markdown. Want a harsher coach, a softer one, a
genre-specific rubric, or new failure modes you keep hitting? Edit the files in
coach/. The weaknesses.md taxonomy is meant to grow as you discover your own
patterns — just reuse existing tags where they fit so tracking holds.
Your photos and your progress live in sessions/ and progress/, which are
gitignored. Fork the repo, keep your work private, share the system.