folder icon Windows 95zach.dev
city icon Windows 95StartupCities
StoresData iconStoresData
Automation.co iconAutomation.co
LearnClaude.ai iconLearnClaude.ai
roman statue taking a selfie
Ionian columnfloating Orb1floating Orb2
Windows95 Program Icon
C:/zach.dev/home
Windows95 minimize window iconWindows95 maximize window iconWindows95 close window icon
Windows95 Directory IconWho?
I'm a software engineer and entrepreneur focused on modern web technologies and AI.

Here's an ongoing autobiography, which also shares the story of my by-the-bootstraps "unschooling" education: now the subject of a chapter on grit and resilience in the bestselling book Mindshift by Barbara Oakley.

An angel investor once described my core soft skill in the role of founder or early team member as: "The ability to perceive exactly what needs to be done. And then to do it."

My experience working in difficult environments around the world means that I can be trusted to get things done, even when things go wrong.

In the past, I coined the term "Startup Cities" as co-founder of StartupCities.org and a startup spinoff, both of which focused on why startups should build cities. I now write about Startup Cities at StartupCities.com

I've won several awards for economic research and have been published or interviewed in Virgin Entrepreneur, a16z's Future.com, The Atlantic's CityLab, Foreign Policy, and in academic volumes by Routledge and Palgrave MacMillan.

Wait... what is this site?
This is my personal portfolio, inspired by the question: "What would the opposite of the two-color template developer blog look like?"

Have fun exploring!

Click the Start Menu to learn more.

Contact:hello @ zach.dev
Windows95 Program Icon
C:/zach.dev/clis-that-agents-want-to-use
Windows95 minimize window iconWindows95 maximize window iconWindows95 close window icon

CLIs that Agents Want to Use

Recently Spotify changed their APIs and broke lots of open source tools.

So I built a new Spotify CLI for my AI agents to build playlists and DJ for me.

The tool was also an experiment in how to make a command line tool maximally useful to AI agents. Here's what I learned.

Structured, chainable output

Most CLIs stream text for human eyes. But agents can more easily use JSON to chain commands. So Spotify CLI streams JSON to stdout:

spotify track saved --limit 5 | jq '.items[].track.name'

Structured errors go to stderr with error codes, so agents can programmatically handle failures instead of parsing error messages.

Discoverable commands

Agents waste lots of cycles guessing commands. Adding great --help text at each layer aids agent discoverability and speed. Every command and subcommand in Spotify CLI has detailed help text that tells the agent exactly what's available and how to use it.

Human-readable data

The data itself needs to be understandable by an LLM. Unfortunately, Spotify's API speaks in a language of giant random strings. These don't help communicate the domain to the LLM (or the human).

So Spotify CLI resolves these IDs into actual track names, artists, and albums automatically. The tool also adds fuzzy text search so intuitive commands like spotify queue add "bohemian rhapsody" work automagically.

Three principles for agent-native CLI design

  1. Structured and chainable output — JSON to stdout, structured errors to stderr
  2. Discoverable commands — rich --help text at every layer
  3. Domain-native data — resolve opaque IDs into concepts that match how people and agents actually think about the domain

Open source, 40 commands, PKCE auth, MIT licensed, single binary: spotify-cli.zach.dev

Mar 19, 2026
<< Previous
Reality is a Game of Trial and Error
Next >>
BuiltWith API v3 — Monorepo, MCP Server, and CLI
zach.dev
About Me
Music On
Home
Blog
Programming
Entrepreneurship
Speaking
Adventure
Unschooling
Windows 95 Flying Window logo
Start
Home
Designing CLIs that Agents Want to Use
volume button
08:53 PM
floating pink cloudfloating pink cloudfloating pink cloudfloating pink cloudfloating pink cloudfloating pink cloudfloating pink cloudfloating pink cloudfloating pink cloudfloating pink cloudfloating pink cloudfloating pink cloudfloating pink cloudfloating pink cloudfloating pink cloudfloating pink cloudfloating pink cloudfloating pink cloud