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.