Triage. Plan. Implement. Review. Fix. Ship a draft.
Roark picks up a labelled GitHub issue while you sleep, runs the full do-workflow on a dedicated branch, and opens a draft PR — only when both gates pass.
▌ one command
$ roark auto --repo owner/repo --limit 1 \ $ --verify "bun run typecheck"
that's it. drive it from cron / launchd / actions.
The shape of it.
- LABEL-GATEDOnly issues you opt in with afk are eligible. Skip-labels remove issues from the pool.→
- BRANCH-ISOLATEDEvery issue gets roark/issue-<n>, branched from main. No collisions.→
- SELF-REVIEWINGTwo independent review agents pass over every diff, then up to N fix cycles.→
- TWO GATESreadiness.md must say ready-for-pr; --verify must exit 0. Both, or nothing.→
- DRAFT-ONLYgh pr create --draft. Never merges. Never closes. Humans do that.→
- NO DAEMONDrive it from cron, launchd, or Actions. One-shot, --limit 1.→
▌ do(issue)
fetch ── triage ── plan ── implement ── review ── fix*── readiness ── verify ── pr
│ │ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ └─ gh pr create --draft
│ │ │ │ │ │ │ └────────── exit 0 required
│ │ │ │ │ │ └────────────────────── ## Status: ready-for-pr
│ │ │ │ │ └─────────────────────────────── up to --max-fix-passes
│ │ │ │ └──────────────────────────────────────── 2 review agents
│ │ │ └──────────────────────────────────────────────────── on roark/issue-<n>
│ │ └────────────────────────────────────────────────────────────── plan.md
│ └────────────────────────────────────────────────────────────────────── proceed | block | reject
└──────────────────────────────────────────────────────────────────────────────── gh issue view§
It works while you’re asleep, and never hits merge.
github
clone the repo
install
bun add -g roark-coding-agent