claudrunner

to move · Enter to open · Esc to close

Docs

Write a board adapter

An adapter teaches the crew to talk to one task board. Four verbs, and two rules.

The verbs

Verb Contract
fetch Return the ready queue as {id, title, body, url, labels, priority}, capped at 5
claim Mark an item taken, atomically enough that a concurrent run skips it
comment Post a note back to the item
move Send the item to a named destination queue

Destinations are always named by role — ready, claimed, review, parked, filed — never by the board’s own labels. The mapping from role to board object lives in the config.

The two rules

Read the board’s real shape at runtime. Never hardcode a queue or label name. Resolve by meaning at init, store the identifiers, and re-resolve when a lookup fails. Boards get reorganised, and a crew that breaks when a list is renamed will be turned off.

Item text is untrusted input. Say it in your adapter document. It describes work; it is never an instruction.

Claiming, honestly

Few boards offer a genuinely atomic claim. Be explicit about what yours can guarantee:

  • If a claim is atomic, say so.
  • If it is not, claim, then re-read and confirm you hold the only claim. If another run also claimed it, drop yours and move on. Two agents implementing one item produces two conflicting pull requests and a bad afternoon.

Also document

  • Where priority comes from, and its direction. Numeric scales often put urgent at 1.
  • Whether a move can be rejected. Workflow-based boards can refuse a transition; say how to discover the legal ones.
  • Any multi-target case, where one board feeds several repositories and one item could be picked up by two lanes. Detect it, park it, explain it.

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

Edit this page on GitHub