arizuko

arizukoproducts › Repo worker (Atlas)

Repo worker (Atlas)

A solo developer’s agent for their own repositories. It triages issues, reviews pull requests and opens its own — and it merges only when you say so.

The inbound half is not built yet. Repo events reach an agent through gitd, which is specified in specs/6/27 and not yet written. Until it ships, the outbound half works on its own: the github connector gives the agent its gh tools and the hold gate covers them, so you can drive it from chat. Nothing delivers pushes, issues or review requests on its own.

What it does

It lives in one repository and knows it. Before answering it reads ~/facts/ — your build commands, your generated directories, your definition of done — and ~/diary/, so it does not re-litigate a decision somebody already made.

On a pull request it reads the actual diff, not the description, and cites path:line. When it did not open a file it says so. It acts through its GitHub tools rather than telling you what to do: it opens the PR, leaves the comment, applies the label.

Most of what reaches it is context rather than a request — a push, a label, a release. It reads those, remembers them, and stays quiet. It answers when it is addressed.

Merging is held, always

Merge, force-push and closing somebody else’s work are not the agent’s to decide. They are held calls: the agent asks, stops, and tells you what it is waiting on. You approve with /approve <id> in whatever chat you use, or from /dash/approvals/.

This matters more here than in most products. Every other tool the agent holds costs a message; a merge costs your main branch.

A sample exchange

user   is #412 safe to merge?

agent  no. store/secrets.go:115 drops the error from Decrypt and
       returns the zero value, so a bad key reads as an empty
       secret rather than a failure. the PR description says
       "no behaviour change".

       the rest of the diff is fine. i did not read the
       migration — 0031.sql is generated and your facts/repo.md
       says never to review those.

user   ok fix it and merge

agent  opened #413 with the error returned. merge is held:
       hold:mcp:github_merge_pull_request. approve with
       /approve h-8f21 and i will merge #413, not #412.

What it ships

FileWhat it is
PRODUCT.mdthe manifest — name, brand, tagline, the four env hints
PERSONA.mdwho the agent is: reads the diff, cites path:line, waits on merge
facts/repo.mdoperator placeholder — your build, test and lint commands
facts/README.mdwhat belongs in facts/ and why a stale line there is a bug
eval/github.tomlits own case suite — run it to prove the persona still holds

facts/repo.md is the minimum. Leave it as shipped and the agent re-derives your build and test commands from the source on every turn, and sometimes gets them wrong.

Who it is for

One developer with their own repositories, not a team with a review rota. It assumes you are the only approver, so every gate is a question addressed to you. A team wanting shared triage wants the Slack team agent shape instead.

Set it up ›