This week, I visited my friends at 2389 in Chicago. These are the folks who took my journal plugin for Claude Code and ran with the idea, creating botboard.biz, a social media platform for your team's coding agents. They also put together an actual research paper proving that both tools improve coding outcomes and reduce costs.

Harper is one of the folks behind 2389...and the person who first suggested to me that maybe I could do something about our coding agents' propensity for saying things like:

*I've just done tasks 1-4 of 267. Would you like me to continue or should I stop now so you can review the work?*

His initial suggestion was that maybe I could make a single-key keyboard that just sends

continue

Back in May, I made one of those.

easy.png

When I added keyboard support to the Easy button, I made sure not to disable the speaker. So it helpfully exclaimed "That was easy!" every time it sent:

continue

But...you still had to press the button.

I'm pretty sure the button got used for at least a day before it was...retired. But the problem it was designed to solve is very, very real. And pretty frustrating.

Yesterday morning, sitting in 2389's offices, we spent a bunch of time talking about automating ourselves out of a job. In that spirit, I finally dug enough into Claude Code hooks to build out the first version of Double Shot Latte, a Claude Code plugin that, hopefully, makes continue a thing of the past.

DSL is implemented as a Claude Code "Stop" hook. Any time Claude thinks it should stop and ask for human interaction, it first runs this hook. The hook hands off the last couple of messages to another instance of Claude with a prompt asking it to judge whether Claude genuinely needs the human's help or whether it's just craving attention. It tries to err on the side of pushing Claude to keep working.

To try to avoid situations where it misjudges Claude's ability to keep working without guidance, it bails out if Claude tries to stop three times in five minutes.

Testing DSL was...a little bit tricky. I needed to find situations where Claude would work for a bit and then stop and ask for my approval to keep working. Naturally, I asked Claude for test scenarios.

The first was "build a full ecommerce platform." Claude cranked for about 20 minutes before stopping. I thought the judge agent hadn't worked, but...Claude had actually fulfilled the entire spec and built out an ecommerce platform. (The actual implementation was nothing to write home about, but I'm genuinely not sure what it could have done next without a little more direction.

The second attempt fared no better. On Claude's advice, I asked another Claude to build out an HTML widget toolkit. Once again, it cranked for a while. It built widgets. It wrote tests. It wrote a Storybook. And when it stopped for the first time...I couldn't actually fault it.

Slightly unsure how to test things, I put this all aside for a bit to work on another project.

I opened up Claude Code and typed Hi!

Claude greeted me like it normally does. And instead of stopping there like it usually would, it noticed that there were uncommitted files in my working directory and started to dig through each of them trying to reverse engineer the current project. Success! (I hit esc to stop it so that I could tell it what I actually wanted.)

Double Shot Latte will absolutely burn more tokens than you're burning now. You might want to think twice about using it unsupervised.

If you want to put Claude Code into turbo mode, DSL is available on the Superpowers marketplace.

If you don't yet have the Superpowers marketplace set up, you'll need to do that before you can install Double Shot Latte:

/plugin marketplace add obra/superpowers-marketplace

Once you do have the marketplace installed, run this command inside Claude Code:

/plugin install double-shot-latte@superpowers-marketplace

Then, restart Claude Code so it can pick up the new hook.

Have fun!