More Spec-ulation

Completely unrelated - I've started splitting my Liked Songs in Spotify into random playlists 50 songs long (my Liked Songs list was about 1300 songs long when I started, and though it's supposed to loop through them at random, it seemed to get stuck on certain loops, which got repetitive).  Why random?  Because trying to figure out where to bucket 100s of songs is tedious.  Why 50 songs?  Because I wanted manageable lists.

Anyhoo, the point is that I thought I'd struggle with naming playlists all riffing on "Rando" or "Random" as a title.  I was wrong.  At slightly less than halfway through, my latest list is Rando the Barbarian; my favorite right now is probably Randosdottir.

Why do I bring this up?  Don't bet against me on my quest to inundate you with dumb-ass "spec" related puns.

And now onto the real content.

I started using spec-driven development a couple of weeks back via GitHub and Microsoft's open source spec-kit.  I'm still a fan, but I noticed that, at least with its nominal workflow, it's fairly formal and hard to update specs mid-implementation.  As part of my research, I'd also glimpsed another tool named OpenSpec, which I originally opted against because its documentation seemed light or non-existent.  I was wrong; it's just in a different place.

Once spec-kit seemed to box me in a bit during the implementation one too many times, I decided to add OpenSpec to my agent toolkit alongside spec-kit.  OpenSpec's workflow is a little simpler, and the documents it produces are fewer in number, but still offer clarity.  But there are two particular features that have OpenSpec winning the job for me:

  • It's easy to start a new "delta spec" mid-implementation, so you don't have to worry about the agent  losing the parent thread or rewriting the parent spec and losing all your hard-won requirements.
  • Its explore workflow is actually pretty solid.  It's what I want out of the plan mode from my coding agents.  It lays out the workflow as it understands it in a flow chart and discusses options for the changes in turn.  Its composition is much easier to follow than the typical plan mode dross.
As I mentioned in previous posts, the tools don't keep agents from lying or being creative like a monkey on a poo-flinging spree, but they help make the lies and fecal containment strategy much more manageable.

I'm currently wrapping up my conversion to SimpleFIN and the necessary syncing logic (which is non-trivial), and the number of times I've sworn at the agent for its poor decisions is easily down by 90%.  Often, it's just easier to guide it to correct the spec than swear at it for producing 400 lines of free-form jazz as played by a toddler and crying in frustration because you have to listen to the whole set.

I'll probably wax poetic on SDD for a post or two more, but, honestly, the beauty is in the simplicity, and I've probably exhausted my topics of discourse on the subject (but that won't stop me just yet).

Until next time, my human and robot friends.

Comments

Popular Posts