Skip to content

v2.5.0 ·

Start a roadmap item in herdr and the agent is already there

Starting a roadmap item in its own worktree ends with a command to copy: cd <worktree> && claude "/aidlc-continue <name>". In herdr, which gives each worktree its own workspace, that meant the same chore every time. Open a workspace at that path, paste the command, press Enter. herdr can do all three from its own command line. aidlc just never asked it to.

What changed

Run aidlc start --worktree inside herdr and it now does the hand-off itself. It opens the new worktree as a herdr workspace, labelled with the instance name, and types the continue command into that workspace's first pane. A Codex project gets codex instead of claude. You get one line saying what happened:

  Herdr:    opened workspace my-item (w3) and ran claude "/aidlc-continue my-item" in it

The workspace opens in the background. You stay where you were, and the sidebar shows where the work went.

Outside herdr nothing changes, and no herdr process is even started. Inside herdr, --no-open gives you the old behaviour. A test checks that a start with --no-open prints exactly what a start outside herdr prints.

Why it never fails a start

The risks are an agent starting when you did not expect one, and a broken herdr breaking aidlc start. So every herdr outcome is one printed line. If herdr errors, takes longer than ten seconds, or finds the workspace already open, the line gives you the command to run yourself, and the start finishes exactly as it would have. Failing the start would throw away a good worktree because a terminal app did not answer.

Autopilot needed its own guard. It calls the same aidlc start --worktree and then launches its own agent. Run from a herdr pane, every item would have had a second agent in the same worktree. Autopilot now passes --no-open, and any run with AIDLC_UNATTENDED=1 skips the hand-off too.

The one string that reaches a shell is the command typed into the pane. The instance name has to match a strict pattern and the path is single-quoted, or nothing is typed at all.

What it does not do yet

It has not run against a live herdr session. The session that built it ran outside herdr, and herdr's own guidance says not to drive a herdr session from outside one. The tests use a fake herdr that logs what it was asked and answers with the JSON shape herdr api schema documents. The first real run is the check, and the steps for it are in this change's deployment record.