Gradual determinism via do-nothing scripts for agentic workflows

I'm a big fan of "Do-nothing scripting: the key to gradual automation" for personal-use scripts. I recommend reading it first, as it's a short read and I'll be building on it. Summary: A do-nothing script walks you through a manual process without automating anything, lowering the activation energy to automate it one step at a time.

Claude Code's bash tool doesn't support interactive stdin, so it can't use python's input function for basic "perform x then continue" steps. This means the gap between a checklist-based prompt and a do-nothing script is wide.

As I've been using Claude Code as my primary computer interface for the last few weeks, I've built up a lot of checklist-based prompts that really should be do-nothing scripts.

So, I've made python-agent-input, which addresses this by adding agent_input(). It's like python's input, but for agents.

I've realized this enables gradual determinism of common workflows. Converting a checklist-based prompt to a do-nothing script immediately gives you deterministic ordering, as-needed context, and manual approvals, all of which makes the agent more predictable.

Unlike existing agentic workflow systems, which treat the workflow as the driver of the agent, this approach treats the agent as the driver of the workflow. As a result, the conversational context that led to the script call is available without additional engineering, and the human is kept in the loop by default.

This tends to work better than automating individual steps of a prompt-based checklist because checklist-based workflows often exist to manage highly-coupled steps, and, in my experience, highly-coupled tools are easiest to manage when they're in the same script.