Timbers Ships (Knock on Wood)
In Nobody Trained Claude on Your CLI, I teased a tool called Timbers. "A development ledger that captures what/why/how alongside Git history," I wrote. "Timbers isn't public yet. I'm still dogfooding it. When it ships, I'll write about what worked and what didn't."
Well. It shipped. Sort of. Here's what I've learned.
I've been vibe coding like an animal for months—shipping features, fixing bugs, spinning up prototypes at a pace that would've been absurd a year ago. But when someone asks "what did you do this week?" I'm drowning in hundreds of AI-written commit messages. An overwhelming mass of data that would take forever to read and extract meaning from. The commits don't capture the reasoning, the thought process, the twists and turns and facepalms and wins. An agent can grind through all that history, sure. But ask it why one change or another was made and you get blank stares, shrugs, or outright hallucinations.
Git knows what changed. It even hints at how. But the why—the reasoning, the trade-offs, the "I tried three approaches and this one won because..."—that disappears into compacted Claude sessions. Months later, I'm staring at agent-written code with no memory of why it exists.
Timbers captures that context as structured entries attached to commits via Git notes. What you did. Why you did it. How you did it. Then—and this is the part that actually excites me—it generates artifacts from that data. Run timbers draft changelog and get a changelog. Run timbers draft devblog and get a devblog. Decision logs. Executive summaries. Sprint reports. Release notes. Same structured data, different audiences, zero extra work.
The generation part is easy. Claude's good at taking structured data and producing prose. The capture part is the hard problem—getting agents to reliably log their reasoning without you stopping to do it yourself.
I modeled Timbers after Beads, Steve Yegge's task tracker that agents use without fumbling. Same philosophy: prime for context injection, pending for "here's what needs attention," --json on everything, structured errors with recovery hints. Studying and reproducing that agent DX took more work than I expected. Beads is deceptively polished—every command feels obvious in retrospect, but someone had to pave those desire paths first.
The result feels solid. Claude uses the CLI without hallucinating commands. The draft templates produce surprisingly coherent artifacts. But I haven't battle-tested it on a fresh project yet. This is a soft launch—cautiously optimistic, totally unsure if it survives contact with reality.
The dream scenario: Claude automatically captures entries as it works, and I generate a devblog at the end of the week without thinking about it. I think that might actually work now. The hooks are there. The prompts are there. The patterns that make Beads reliable have been reproduced. A week or two of real dev will tell me if the capture actually happens, if the artifacts are worth reading, and if anyone besides me finds value in them.
Four percent of GitHub commits are now written by Claude. Projected to hit 20% by year end. Timbers itself is part of that statistic—100% Claude-authored, under my direction. That's a lot of code shipping without documented reasoning. If Timbers works, it's a bridge between velocity and understanding. If it doesn't, I'll write a retro about what went wrong.
Either way: here it is. If you're drowning in AI commits and wondering where the reasoning went, give it a shot. Try it. Break it. Tell me what's missing.