Agent Triforge
Install

Put Claude Code, Codex and Antigravity on one team.

One agent leads. The others build, review and test, and nothing merges until a different agent has checked it.

Claude Code leads

$ claude plugin marketplace add https://github.com/Ninety2UA/agent-triforge$ claude plugin install agent-triforge@agent-triforge

The lead merges task 2. Every change was reviewed by an agent that didn't write it.

Each agent gets a role

The lead plans the work, hands it out and merges it. Claude Code leads by default and Codex can lead too. The others work in the roles one editable file gives them, and every fallback ends at Claude Code, Antigravity or Codex.

Always on the team

  • Claude CodeLeads by default and builds.Code goes to Anthropic
  • AntigravityMaps the codebase and writes docs.Code goes to Google
  • CodexReviews and tests. Can lead.Code goes to OpenAI

Join when you add them

  • OpenCodeAny role.Code goes to Zhipu / Z.ai via OpenRouter
  • Kimi CodeAny role.Code goes to Moonshot
  • CursorAny role.Code goes to xAI via Cursor
  • Grok BuildBuilder, reviewer or analyst.Code goes to xAI
  • DevinReviewer or analyst, after your consent.Code goes to Cognition
Fig. 1Default roles, the others covering for a missing agent, and Codex taking the lead
Default roles and who covers them
RoleDoesAgentFalls back to
builderWrites the code for a taskClaude CodeCodex, then Antigravity
reviewerReviews every task it didn't buildCodexAntigravity, then Claude Code
testerWrites the failing test firstCodexClaude Code
analystMaps the codebase before planningAntigravityClaude Code
documenterWrites the documentationAntigravityClaude Code

How the roster works

One task's life

Every task is built in its own git worktree, the lead's own tasks included. It merges only after a reviewer approves it, and the reviewer has to be a different agent from the one that built it.

Read the leases guide

Fig. 2One task from its own workspace to the merge, then a self-review that is refused
Claude Code built task 1. Who reviews it?
  1. Assigned

    The lead gives task 1 to Claude Code, in a workspace of its own.

  2. Built

    Claude Code builds it and reports back that it's done.

  3. Reviewed

    Codex reviews the change. It didn't write it.

  4. Merged

    The lead merges its own copy of the change.

  5. On main

    The lead moves the finished work to main.

Merged and on main. Codex reviewed what Claude Code built, and the lead merged it.

Watch one sprint

An example sprint, rate-limiting a login endpoint, from the goal to the finished work. 55 seconds, no sound. Pick a chapter to jump to it.

0:00 / 0:54

From goal to finished sprint

/at-ship <goal> runs every phase in one session. Choose a phase to see which skills run it and who does the work.

Phase 2: Build, review, merge

Each task gets its own worktree. A builder writes it, a pinned reviewer from a different roster member checks it, and the lead squash-merges its own copy. integration-verifier runs between waves, and only its explicit PASS moves on.

Skills
at-buildwave-orchestration
Writes
ops/leases.tomlops/CHANGELOG.md
Who
Builder: Claude Code. Reviewer: Codex.

The sprint, phase by phase

Seventeen workflows, ten portable skills

Workflows named at-* run in the lead. Portable skills work in any agent and usually start on their own when the context fits. Here are twelve of the 27.

Showing 12 of 12 featured skills

  • Full sprintlead

    at-ship

    One sprint on its own: analyze, plan, build, review, test, wrap, then mark it complete.

    Use it when a scoped goal should ship in one run.

  • Full sprintlead

    at-coordinate

    The plain Phase 0 to 6 cycle that coordinate.sh drives, session after session.

    Use it for the same sprint without convergence or team flags.

  • Planlead

    at-plan

    Turns a goal into ops/TASKS.md with waves, failure paths and a plan-checker verdict.

    Use it when you want to read the plan before anything is built.

  • Buildlead

    at-build

    Builds tasks in waves, pins a reviewer to each and merges what passes.

    Use it when ops/TASKS.md holds assigned tasks.

  • Reviewlead

    at-review

    Review lanes from the roster plus specialist reviewers, merged into one report.

    Use it when built tasks need Phase 3 and 4 review.

  • Testlead

    at-test

    Finds untested paths, gets tests from the roster tester, fixes until green.

    Use it when changed code needs Phase 5 testing.

  • Wraplead

    at-wrap

    Records what was learned, archives review files, writes STATE.md, marks completion.

    Use it when a sprint or a session ends.

  • Utilitylead

    at-quick

    A test-first change with a self-review and no swarm.

    Use it for fewer than 3 files with no shared interface or protected path.

  • Utilitylead

    at-debug

    Reproduce, find the root cause with evidence, fix, write it down.

    Use it when a bug report or an error needs a cause.

  • Portable

    wave-orchestration

    Leases, pinned cross-review and merges in wave order.

    Use it when a validated plan has two or more tasks.

  • Portable

    verification-before-completion

    Fresh evidence behind every claim that something is done.

    Use it before calling anything done.

  • Portable

    knowledge-compounding

    Writes a note only when a future agent would repeat the mistake without it.

    Use it when a task ends with something learned.

All 27 skills

Why it holds up

No agent merges its own work

A task merges only after a pinned reviewer approves it, and the helper refuses to pin the agent that built it. The lead's own tasks follow the same rule. After three fix cycles with the same reviewer, you decide.

Fig. 3Five reviewers at once, the fixes, and a second pass with only minor findings left

Reviews run until findings converge

Each reviewer writes its own file, so they can all run at once. Findings are P1, P2 or P3 with a confidence tier, and a low-confidence finding is never P1. You pick where the loop stops.

ModeStops when
fastno P1 is left
standardno P1 or P2 is left (the default)
deepno P1 or P2, and fewer than 3 P3

Done needs fresh evidence

verification-before-completion asks for new evidence behind every claim. A builder's report has to end in a typed status, and a clean exit without one counts as a missing report.

The last lines of a builder's report (example)
Tests: 14 passed, 0 failed
Concerns: the limiter's window is per process
Discoveries for later tasks: None
Status: DONE_WITH_CONCERNS

A sprint is done only when the lead creates ops/.sprint-complete, after the checklist passes.

What a sprint learns, the next one reads

knowledge-compounding writes a note only when a future agent would repeat the mistake without it. Before the next plan, learnings-researcher searches those notes.

Written at the end of a sprint (example names)
ops/solutions/
  login-rate-limit-window.md
  redis-test-fixture.md
Read before the next plan
ops/decisions/
  limiter-per-ip-not-per-user.md
ops/STATE.md

Specialist reviewers

There are 19 personas, each with its own tools, starting model and turn budget. These five check the plan and review the code in /at-ship.

  • security-sentinel

    Reviews for security and nothing else: OWASP-class issues, in depth.

    Never moved to a smaller model
  • performance-oracle

    Finds bottlenecks and scaling problems, such as nested loops over the same data.

  • code-simplicity-reviewer

    Flags complexity the change does not need, like an interface with one implementation.

  • findings-synthesizer

    Reads every review file, removes duplicates, sets confidence tiers and writes one report.

    Never moved to a smaller model
  • plan-checker

    Checks the plan before anything is built, and keeps checking until it approves.

    Never moved to a smaller model

All 19 personas

Leave it running

/at-ship runs a whole sprint in one session. For bigger goals, coordinate.sh starts fresh lead sessions until the sprint is marked done.

  • Five sessions at most by default; --max changes it.
  • An integrity check runs before each session.
  • It stops on a login or quota failure.
  • It tells you through a webhook and a desktop notification.
$ TRIFORGE="$(tail -n 1 .agents/triforge-plugin-root.local)"$ bash "$TRIFORGE/scripts/coordinate.sh" "Build auth" --dry-run$ bash "$TRIFORGE/scripts/coordinate.sh" "Build auth" --max 5 --convergence deep --team

A Codex lead also needs --allow-full-access, which only you can pass.

Unattended runs

Fig. 4One fresh session at a time, each checking its records first, until the sprint is finished

What it does not do

Data egress and consent

It does not sandbox workers.

A worktree sets where a worker starts. A worker with a shell can still read and write anything your user account can, including other branches and the ledger.

It detects changes, and merges only the lead's snapshot.

Lease helpers compare git config, hooks, refs, worktree pointers and the ledger with a recorded baseline. On a change the lead did not make, they refuse with rc 44. Only the lead's own snapshot of a task is ever merged.

Each agent's provider sees the code it is handed.

Anthropic, Google and OpenAI for Claude Code, Antigravity and Codex, plus the provider of each optional member you add. Devin may train on data unless the account opts out, so Triforge records your consent before it joins. Captured output is scrubbed before it lands in ops/.

Install in two commands

Claude Code leads

$ claude plugin marketplace add https://github.com/Ninety2UA/agent-triforge$ claude plugin install agent-triforge@agent-triforge

Add --scope project to the install line to share it with your team.

Before you start

  • Claude Code, Antigravity (agy) and Codex installed and logged in.
  • Python 3.
  • On macOS, GNU coreutils (brew install coreutils). Without a timeout binary the helper refuses external calls.
  • Claude Code 2.1.314, agy 1.1.27 and Codex 0.153.0, or later. A lead alone runs from Claude Code 2.1.277, but the default Claude builder needs 2.1.314.

Your first run

  1. Start claude or codex in your project. That creates ops/.
  2. Run /at-setup to pick the lead, check Claude Code, Antigravity and Codex, and set roles.
  3. Run /at-ship <goal>.

Run your first sprint

Install the plugin, start Claude Code or Codex in your project, run /at-setup, then /at-ship <goal>.

Claude Code leads

$ claude plugin marketplace add https://github.com/Ninety2UA/agent-triforge$ claude plugin install agent-triforge@agent-triforge
Fig. 5Nothing merges until a different agent has checked it