Personal tool / open source
Letterboxd CLI
The terminal for cinephiles.
I kept forgetting to log films after watching them. Opening the app, finding the title, picking a rating, writing the review was too much friction for a passing thought. So I built a CLI that posts straight to Letterboxd from the terminal: type the thought, it finds the film and logs it.
The Problem
I'd watch a film, think "I should log that," and forget by morning. The takes I actually cared about got lost in the friction: open the app, search the title, pick a rating, type the review. Four steps to save one thought I'd already half-lost.
How It Works
One command from the terminal does the whole thing: auth, find the film, post the entry. Letterboxd has no public API, so Playwright drives a real browser session underneath, with fallback locators so a layout change doesn't break it. Every command also speaks --json, so the same tool I use to log a film can be piped into a script or handed to an agent.
What I Was Testing
This was me learning how agents drive command-line tools. I designed the output for a machine first, then let the human terminal view sit on top. Every command carries a stable --json with predictable fields, so the output parses the same way every time. Branded types for film slugs and ratings catch the obvious mistakes before they ship.
It's the early, simpler version of an idea I took further with the Printing Press library, where a single --agent flag bundles the whole machine contract. What I'd revisit now: defaulting to JSON when the output isn't a terminal, and a real agent mode instead of passing --json by hand.
Built with TypeScript, Playwright, Commander, and Chalk.