arena

Installation
SKILL.md

Arena

Open a worklist with one entry per phase (Frame, Fan out, Cross-judge, Pick, Graft, Verify) before launching anything.

Phase A: Frame

Every candidate gets the same prompt, so the prompt is the contract.

  1. State the artifact each candidate is producing.
  2. Derive the rubric, 3-6 concrete gradeable criteria for what success looks like on this task. For subjective criteria, use Eval's criterion and calibration guidance. It is the picker's tool in Phase D. Candidates only see the task.
  3. Pick the runners. Use the arena runners role, one arm per entry. Its default is one each on fable, opus, sonnet. A rejected entry also follows the required-arm rule below. Spawn more runners when the arena covers multiple design directions. Use the same model N times when the work is generation-bound rather than judgment-sensitive. Use the pstack-harness skill for the spawn. Its Spawn a role section resolves the role and builds this CLI's spawn call.
  4. Give each candidate its own output location (a git worktree where possible, otherwise candidate-<n>/ inside a fresh mktemp -d "${TMPDIR:-/tmp}/arena-<slug>.XXXXXX" made for this run), per the separate-before-serializing-shared-state principle skill. Never reuse an earlier run's directory. A native isolation option counts only when it makes a git worktree, where git -C <its path> rev-parse --path-format=absolute --git-common-dir prints the project's. Grok Build's isolation: worktree can make a standalone clone, so spawn there with isolation: none. If you omit the field, a Grok role or persona default can still turn isolation on. Make every other candidate worktree yourself, one at a time, with git worktree add --detach <run dir>/candidate-<n>, where <run dir> is that fresh mktemp -d, and name the path in the candidate's brief. If an add fails, remove the worktrees already made and give every candidate a plain directory there instead, so all candidates start alike. The pstack-harness skill's fallback says how to seed and brief a plain directory. Clean up the run when it ends, after saving its outputs per Outputs, and before a re-frame and re-run starts, whether Phase E or Phase F sent you back. To clean up, remove each candidate worktree with git worktree remove --force <path>, delete any branch made for it with git branch -D, and delete the scratch directory. Going back to Phase E to graft keeps them. Keep the rubric outside every directory a candidate can read, and give it to the cross-judge in its prompt.

Phase B: Fan out

Spawn all N subagents in one message with run_in_background: true, each with the task, the path to the shared grounding, its own output path, and instructions to produce the artifact and a short rationale naming the alternatives it considered and what it rejected.

Required arms

Installs
139
GitHub Stars
7
First Seen
Sep 1, 2026