Skip to main content
skill Claude Code CX Codex Cursor GitHub Copilot

arena — Claude Code skill: what it does, how to install

Runs several parallel attempts at the same task, scores them against a rubric, then grafts the best pieces of the losers into the winning base.

Install into Claude Code · Skills CLI (Vercel) All methods and platforms ↓
npx skills add backnotprop/pstack --skill arena -a claude-code
Open on GitHub

What arena does

Arena pushes one task through several subagents at once and folds the results into a single artifact. The Frame phase writes the task down and derives a rubric of 3-6 gradeable criteria. Candidates never see that rubric; it belongs to whoever picks the base. Each seat gets its own output path, a git worktree where the repo allows it, otherwise /tmp/arena-<slug>/candidate-<n>/.

Fan out happens in one message with run_in_background: true. Once the candidates finish, a readonly cross-judge on a different model family scores them against the rubric and names a base. You read every candidate end to end anyway, compare notes, then fold one or two things from the losers into the base by hand. Shapes that converged need no graft at all. Wild divergence means Frame was vague, so you reframe and rerun instead of averaging the mess.

Runners come from the arena runners line in the pstack settings file: ~/.claude/rules/pstack-models.md on Claude Code, ~/.cursor/rules/pstack-models.mdc on Cursor, ~/.agents/pstack-models.md elsewhere. Miss that file and the run falls back to claude-opus-5-5-xhigh and grok-4.7-xhigh-fast, so creating it first is worth the minute. The frontmatter sets disable-model-invocation: true, which means nothing autoloads it. You type /arena.

What it helps with

  • compare three architectural directions before one hardens into code
  • score candidate artifacts against written criteria instead of gut feel
  • port a good idea out of a losing variant without rewriting the winner
  • catch a prompt that was too vague and rerun it rather than merge the divergence
  • keep parallel candidates in separate worktrees so they stop stepping on each other

Example prompts for the agent

  • `/arena` rewrite the auth layer, three candidates, pick the base by rubric
  • arena this: sketch two migration plans and graft the better parts
  • throw it in the arena, the log parser is too load-bearing for one attempt

How to install arena

1Skills CLI (Vercel)

npx skills add backnotprop/pstack --skill arena -a claude-code

2Manually: put the files in place

~/.claude/skills/arena/SKILL.md

Copy the whole skill folder; for one project use .claude/skills/arena/

From the same set5

The whole set →

Similar

llm-wiki Ar9av The schema side of a personal Obsidian wiki: source layers, categories, project trees and a page template. Use it when you're deciding how knowledge should be stored. Claude Code CX Codex Cursor +1 4,100installs document jsmastery-pro Turns a finished change into prose people actually read: a PR body, a changelog entry, release notes, a postmortem. It works from the commits and the diff. Claude Code CX Codex Cursor +1 4,300installs cli-anything-anygen HKUDS Provides a CLI wrapper around the AnyGen OpenAPI to build slides and diagrams. Useful when automating document workflows in AI agents. Claude Code CX Codex Cursor +1 465installs router-core TanStack Entry skill for TanStack Router that points a task at the right sub-skill and pins the type-inference and client-first rules agents keep breaking. Claude Code CX Codex Cursor +1 587installs gpt-image wuyoscar Type a prompt, get an image file back. The skill resolves the model first, then runs a packaged CLI for generation, reference edits or inpainting. Claude Code CX Codex Cursor +1 553installs setup-matt-pocock-skills Matt Pocock This skill configures a repository for Matt Pocock's engineering skills by setting its issue tracker, triage labels, and domain docs layout. Run it before using the other skills. Claude Code 1,052,851installs to-tickets Matt Pocock Turns a plan, spec, or conversation into small end-to-end tickets with explicit blockers. Use it to agree on the work breakdown before tickets go to a tracker. Claude Code 711,230installs writing-plans Jesse Vincent This skill turns requirements for a multi-step task into an implementation plan before code changes begin. It helps when another engineer needs exact files, interfaces, and checks. Claude Code CX Codex 282,859installs

Questions about arena

How do I install arena in Claude Code?

Run npx skills add backnotprop/pstack --skill arena -a claude-code. The skill lands at ~/.claude/skills/arena/SKILL.md.

What does arena do?

It spawns parallel subagents on the same task, judges their output against a rubric built up front, and merges everything into one artifact with a chosen base and a few grafted pieces.

Which models does arena use?

Whatever sits on the arena runners line of the pstack settings file. Without that file it defaults to claude-opus-5-5-xhigh and grok-4.7-xhigh-fast.

Source text

SKILL.md · MIT
---
name: arena
description: "Spawn N parallel candidates at the same task, pick a base, graft the strongest parts of the losers into it. Use for /arena, 'arena this', 'throw it in the arena', or when one attempt at a non-trivial artifact would lock in the wrong shape."
disable-model-invocation: true
---

# Arena

Open a todolist 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. It is the picker's tool in Phase D. Candidates only see the task.
3. Pick the runners. Use the `arena runners` line in the pstack settings file (`~/.cursor/rules/pstack-models.mdc` in Cursor, `~/.claude/rules/pstack-models.md` in Claude Code, `~/.agents/pstack-models.md` in other harnesses). If the file or that line is missing, default to one each on `claude-opus-5-5-xhigh` and `grok-4.7-xhigh-fast`. An `auto` or `inherit-parent` entry in this line or the cross-judge line means the parent model, so omit `model` for it. If your subagent tool rejects a configured entry, run that seat on its family's default and say so. Families go by prefix: `claude-*`, and `grok-*` with `cursor-grok-*` and `composer-*`. A refused `composer-*` entry runs on `grok-4.7-xhigh-fast`. With no family match, use `claude-opus-5-5-xhigh`. If it rejects a default, use the closest valid slug of the same family from its error message or your harness's model list. 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. Pick each subagent's reasoning level and fast or standard speed for the job, per the Subagents section of the **poteto-mode** skill.
4. Give each candidate its own output location (a git worktree where possible, otherwise `/tmp/arena-<slug>/candidate-<n>/`), per the **separate-before-serializing-shared-state** principle skill.

## 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.

If a candidate produces no output, proceed with N-1 and note the dropout.

## Phase C: Cross-judge

After all Phase B candidates complete, choose one model from the `arena cross-judge pool` line in the pstack settings file. If the file or that line is missing, choose from `claude-opus-5-5-xhigh` and `grok-4.7-xhigh-fast`. Prefer a different model family from the parent's. Spawn one readonly judge subagent on that model. It sees the rubric and the candidates by path label, scores each criterion, and recommends a base with rationale. It runs in parallel with your reading in Phase D. Don't spawn it while candidates are still writing.

## Phase D: Pick a base

Read every candidate end to end before picking. Score each against the rubric criterion by criterion, not on holistic feel, and compare with the cross-judge. Agreement on the base confirms the pick. Disagreement means one of you is biased or the rubric was ambiguous. Read both rationales before deciding.

Pick the base a future maintainer can extend most easily without breaking invariants. When two feel tied, prefer the cleaner boundary or smaller API, per the Laziness Protocol.

## Phase E: Graft

Walk each losing candidate once more for what is worth porting into the base, usually one or two things per candidate, not most of it. Fold each graft in by hand, per the **redesign-from-first-principles** principle skill, so the result stays coherent under one mental model. Don't paste mechanically.

If the candidates converge on one shape, that is strong agreement. Note it and ship the consensus shape. No graft is needed. If they wildly diverge, Phase A was under-specified. Reframe and re-run rather than averaging the divergence.

## Phase F: Verify

Verify the synthesized artifact like any other output, per the **prove-it-works** principle skill. If verification finds a problem the arena missed, either Phase A was wrong (re-frame and re-run) or a candidate caught it and you missed the graft (go back to Phase E). Don't paper over it.

## Outputs

One synthesized artifact, with a short synthesis note alongside naming the base and why, the cross-judge's verdict, each graft with its source candidate, what was rejected and why, any convergence or dropouts, and the verification result.

© backnotprop · MIT · backnotprop/pstack

See also

Project sponsors

Companies that keep this analytics open
Gold sponsor

Impressions, clicks and code copies — open statistics. We keep the numbers public for the same reason NeBlask itself is public. Become a sponsor