Change one contract across three repos
Create one feature, promote api, web and shared-types, plan once, and preview one pull request per repo.
You need a hall with api, web, shared-types and infra, and a harness you can launch from it. The change: add an avatarUrl field to the user profile, return it from the API and render it on the web profile page.
ivar feature create avatar-url
ivar feature promote avatar-url api
ivar feature promote avatar-url web
ivar feature promote avatar-url shared-types
ivar session start avatar-urlIn the session, run /ivar-plan and approve each gate. Then, from the hall:
ivar feature deliver avatar-url --previewWhat happens
feature createnames the branch once. No repo carries it yet.- Each
feature promoteputs a worktree on theavatar-urlbranch in that repo.shared-typesdescribes the field inuser.ts,apireturns it andwebshows it. infrais not promoted, so it stays read-only on its default branch and the agent cannot commit there./ivar-planwrites one plan for the three repos.deliver --previewrefuses to run until the plan gate is approved.- The preview prints a summary and a fingerprint and pushes nothing. It lists three pull requests:
api,webandshared-types.infragets none.
To see where the feature stands before you deliver, run ivar feature status avatar-url. It lists every promoted repo and its state. If a repo needs another change later, promote it onto the same branch with ivar feature promote avatar-url <repo>. Nothing already in the feature moves.
The plan is the point of the order. /ivar-plan runs requirements, analysis and plan with an approval gate after each, so the agent writes code against one agreed contract in shared-types instead of three guesses. Delivery then pushes three branches that share a name and opens three pull requests that link to each other.
Read the full walkthrough
One feature across multiple repos covers the same flow with the preview output and the sibling-PRs comment. For the commands, see features and delivery.
Hall upkeep
Keeping the hall honest from inside the harness — reconciling against ivar.json, listing what is registered, and authoring the setup script a fresh worktree needs.
Run two features in parallel on one repo
Split one repo's work into two subfeatures, run an agent in each on its own branch, and integrate both into the parent.