arena

Installation
SKILL.md

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 runner seats. A seat is an agent, never a model slug, and it must be one OMP can spawn (scout, librarian, reviewer, security-reviewer, task, sonic, poteto-agent, comment-sicko, seance). The default seats are task and reviewer. poteto-agent is a third distinct seat. A caller such as the architect skill (skill://architect) may name its own seats. Each agent's model comes from task.agentModelOverrides and modelRoles in ~/.omp/agent/config.yml, which /skill:setup-pstack (skill://setup-pstack) writes. Model diversity exists only when the operator has configured distinct overrides for the seat agents. Claim that two runners ran on different models only from the resolved-model metadata OMP returns with each result. Never infer it from the agent names. Spawn more runners when the arena covers multiple design directions. Use the same agent N times, each item with its own name, when the work is generation-bound rather than judgment-sensitive. Set each item's effort for the job only when the task schema shows an effort field (task.enableEffort). Otherwise omit it.
  4. Give each candidate its own output location, per the separate-before-serializing-shared-state principle skill (skill://principle-separate-before-serializing-shared-state). Use a git worktree you create with git worktree add where possible, otherwise /tmp/arena-<slug>/candidate-<n>/. When the task schema shows isolated (task.isolation.enabled), you may set it on a runner for its own workspace, and the brief still names the output path to read back. Never depend on isolated being present.

N runners plus the judge must fit within task.maxConcurrency (32 by default) so the runners start together. Runners are leaves. They never call task, which also keeps the tree inside task.maxRecursionDepth (2).

Phase B: Fan out

Start all N runners in one task call. context holds the task, the path to the shared grounding, and the output-path convention. Each item carries name (unique, CamelCase, for example CandidateA), agent (its seat), task, and solutionSpace. The task field has the task, the path to the shared grounding, that runner's own output path, and instructions to produce the artifact and a short rationale naming the alternatives it considered and what it rejected. Set solutionSpace to how open the candidate's shape is, and never mention the other runners in it.

Installs
1
Repository
dsebban/skills
GitHub Stars
72
First Seen
5 days ago