--- 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.