Developer Experience

Posts about improving developer experience, tooling, and workflows.

Tips for writing efficient skills for LLM agents

Reading a skill is the cheap part. The work it drives is where the tokens and the time go - every search, file read, retry and wrong turn the agent takes along the way. A good skill makes that work predictable: fewer wrong turns, and the same result tomorrow as today.

This article walks through how I plan and write skills, with a release-notes skill as the running example, and how to test them with tools like skillgrade.

Spec-Driven Development (SDD) for AI Coding Agents

Coding agents forget everything between sessions, and the bigger the codebase grows, the more they have to rediscover before they can do anything useful.

This article covers spec-driven development as a whole - why agents need specs, the frameworks worth starting with, and how my own setup evolved from homegrown commands to OpenSpec and beads.

Project Instructions and Reusable Commands

Starting a new codebase with Claude Code or another AI coding agent, requires a lot of fine tuning to make long-term, production ready code development consistent.

The main entry points for day-to-day interactions with an agent within a project are CLAUDE.md and custom bot commands. In combination with specs, these become the bread and butter of your daily coding activities.

Sandboxing AI Agents with Dev Containers

Coding agents run shell commands with your user's privileges, whether it's Claude Code, Codex, or an open-source harness like OpenCode running against your own models. Their own guardrails have come a long way, but a prompt injection hidden in an open-source package can still turn the agent against your machine. Agents belong in a sandbox, especially when you run a swarm of them.

This article shows how I sandbox mine in a dev container: the agent works on the project inside the container, the host keeps the git credentials, and notifications get out through a single whitelisted command. One trade-off up front: containers are slower on macOS and Windows, where they run inside a virtual machine with limited access to the bare metal.