Back to the campaign table

The Rallypoint Playbook

A repository protocol agents can actually follow.

Rallypoint does not run your models. It gives every coding agent a shared operating system for deciding what to do, proving ownership, shipping changes, reviewing them, and keeping the queue healthy.

The party oath

  1. 1

    One issue, one branch, one pull request.

  2. 2

    A worker claims exactly one ready issue before editing code.

  3. 3

    A reviewer never approves work produced by the same agent.

  4. 4

    The repository and GitHub API are the only coordination state.

  5. 5

    Every role has explicit GitHub permissions and explicit prohibitions.

  6. 6

    Failed checks and requested changes stay with the current quest.

Role boundaries

RoleClaims?Reviews?Purpose
PlannerNoNoGrooms a ready backlog.
WorkerOneNever own workShips one issue as one pull request.
ReviewerNoYesGrants or withholds the verdict.
TesterFiled gap onlyNoFinds and closes coverage gaps.
FixerNoNoAddresses review feedback in place.
JanitorNoNoReleases stale claims and reservations.
OrchestratorNoNoReads state and dispatches the next role.

Install the campaign pack

Rallypoint’s CLI reads its own signed campaign manifest and writes each file to an explicit repository-root path. It stops on conflicts rather than overwriting anything silently. An existing AGENTS.md gets special handling: it’s left untouched, the rest of the loop still installs, and the CLI suggests adding a one-line @AGENTIC_LOOP.md reference to it.

npx rallypoint@latest view loop
npx rallypoint@latest add loop

Prompt the party

A role is one file, so at minimum, prompting an agent to become that role means pointing a fresh session at AGENTS.md and exactly one file under .rallypoint/roles/. The table below is that literal minimum — the shortest instruction an agent needs, stripped of anything a person would normally say.

Don’t know what should happen next? Prompt the orchestrator first. It reads the same queue every other role reads and names the next role and target, so you know exactly what to prompt a fresh session with.

RolePrompt
OrchestratorRead AGENTS.md, then read .rallypoint/roles/orchestrator.md. Decide which role should run next and name the exact issue or pull request it targets.
PlannerRead AGENTS.md, then read .rallypoint/roles/planner.md and follow it exactly.
WorkerRead AGENTS.md, then read .rallypoint/roles/worker.md and follow it exactly.
ReviewerRead AGENTS.md, then read .rallypoint/roles/reviewer.md and follow it exactly.
TesterRead AGENTS.md, then read .rallypoint/roles/tester.md and follow it exactly.
FixerRead AGENTS.md, then read .rallypoint/roles/fixer.md and follow it exactly.
JanitorRead AGENTS.md, then read .rallypoint/roles/janitor.md and follow it exactly.
Read AGENTS.md, then read .rallypoint/roles/orchestrator.md. Decide which role should run next and name the exact issue or pull request it targets.

How a person actually asks

Nobody talks like the table above. People say please, add context the role file doesn’t need, chain two or three asks into one message, run several roles at once, or set the whole thing on a schedule. None of that breaks the loop — the role files are boundaries, not scripts, so any of these land the same as the literal prompts above.

  • A simple, polite ask

    Could you grab the next ready issue and ship it? Thanks!

  • With extra context the role file doesn’t need

    A couple of users got stuck on the auth step in yesterday's onboarding call — can you check the backlog reflects that, add whatever's missing, and reprioritize anything blocking a fix?

  • Chained into one message

    Run the planner to top up the ready queue, then have a worker pick up whatever's highest priority, and kick off review as soon as that PR is open.

  • Several roles at once

    Spin up three workers in parallel on the three oldest ready issues, and have a reviewer standing by for whichever one finishes first.

  • On a schedule

    Set this up to loop: run the janitor every morning to clear stale claims, and have the orchestrator check in every few hours to tell me what's next.