Turn GitHub Issues into pull requests automatically
The simplest setup there is. Add a label to an issue, and a tested, reviewed pull request follows. No account beyond GitHub, and it runs from GitHub Actions.
Why start here
GitHub Issues needs no extra account and no extra secret for the board — the token your
GitHub Actions run already has is enough. It is the default in init, and the quickest way
to see what claudrunner does.
Labels are the queues
| Label | Meaning |
|---|---|
claudrunner:ready |
You add this. The next run picks the issue up |
claudrunner:running |
Claimed by a run |
claudrunner:in-review |
A pull request is open for it |
claudrunner:needs-input |
Parked, with a question in a comment |
claudrunner:finding |
Filed by the bug sweep |
You can rename every one of them in init.
What a run does
- Lists open issues labelled ready, oldest first, up to five.
- Swaps ready for running, then re-reads the issue — GitHub labels are not an atomic claim, so a concurrent run that also claimed it makes this one step back.
- The AI coding agent implements the issue on a fresh branch, writes tests and runs them.
- A fresh reviewer grades the diff P0, P1 or P2; serious findings are fixed first.
- It opens the pull request, comments the link on the issue, and moves it to in-review.
It never closes an issue. Closing is your decision, after you merge.
Set it up
/plugin marketplace add samiraklf/claudrunner
/plugin install claudrunner
/claudrunner:init
Pick GitHub Issues and CI cron. init writes two workflow files: the fast loop that
works issues, and the slow loop that sweeps for bugs. Add one secret, ANTHROPIC_API_KEY, for the
agent, commit the workflows, and it runs on the schedule you chose — every 10 minutes by default.
Runs never overlap: the workflow uses a concurrency group, so a slow run is never joined by a second one in the same tree.
Keep the repository safe
For a public repository, three settings matter more than anything the agent does:
- Protect the default branch — require a pull request, block force-push and deletion. claudrunner never pushes there anyway; this protects you from everyone else.
- Require approval for workflows from forks, so a stranger’s pull request cannot read your secrets.
- Give the run token the narrowest scope that works.
More in the security model.
Next
- AI code review before every PR
- Scheduling — choose how often it polls
Try it on your own repository
/plugin marketplace add samiraklf/claudrunner
/plugin install claudrunner
/claudrunner:init
Free and open source. It runs on your own Claude Code subscription, and nothing runs until you turn the schedule on. Getting started