Writing

Some work deserves more explanation than a commit message or a pull request description can hold. This is where it goes: how something was built, what broke along the way, and what I'd do the same way again. There's no schedule. Things show up here when they're worth writing down.

Teaching Claude Code to Run a Security Response

After a critical PHP advisory and a round of Symfony security releases, here's how we turned "check everything we run" into a Claude Code skill — four investigating agents, mitigations proven in Docker, and an approval gate in front of every live change.