---
title: Ryan Waits
description: Designer and engineer exploring what dev tools look like when agents are users
location: Austin, TX
---
# Ryan Waits
I design developer tools. Mostly CLIs, docs systems, and the invisible stuff that makes codebases easier to work with.
Spent three years at [Hiro](https://hiro.so) shaping Bitcoin developer infrastructure — rearchitected their docs system across 12+ packages and 10+ APIs, designed and built the [Chainhooks CLI](https://github.com/hirosystems/chainhooks), and prototyped onboarding flows for their event-streaming platform. All with a team of one, which meant designing for constraints: atomic primitives, automation-first, surfaces that could scale without me.
I was designing for agents before it was obvious. Now it's obvious.
---
## Now
Thinking about what software design means when agents are the user. Should we be building fewer features and more primitives? What does a good API surface look like when the consumer isn't a human skimming docs?
Still figuring it out. Building things to learn:
**[openpkg](https://github.com/ryanwaits/openpkg)** — Extracts the public API from any TypeScript package. JSON Schema out. One command. I wanted OpenAPI for packages — turns out it didn't exist, so I built it.
**[doccov](https://github.com/ryanwaits/doccov)** — Documentation coverage tool built on openpkg.
**[secondlayer](https://github.com/ryanwaits/secondlayer)** — Type-safe TypeScript from Clarity contracts. Point at a contract, get interfaces, helpers, React hooks. No manual type definitions.
---
## Thinking
I write when I figure something out:
- **[Tools Return Data, Agents Make Decisions](/t/tools-return-data)** — The refactor that made openpkg agent-native.
- **[Features Don't Compose](/t/features-dont-compose)** — Why agents need primitives, not features.
- **[How Does This Not Exist?](/t/how-does-this-not-exist)** — The missing standard for TypeScript packages.
---
## How I work
I prototype in code. Mockups are fine but I'd rather build the thing and feel it. Most of my design decisions come from using what I made and noticing what's off.
I obsess over small details — error messages, progress feedback, what information shows when. Developer tools should feel fast and unsurprising.
I delete more than I add. If I can remove a feature and the tool gets simpler without getting worse, I remove it.
---
## Contact
[@ryan_waits](https://x.com/ryan_waits) · [GitHub](https://github.com/ryanwaits)
Press `A` to chat with the agent.