# jakeschincariol/arena-skill architecture

> Architecture diagram of the GitHub repository jakeschincariol/arena-skill, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-10-12). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/jakeschincariol/arena-skill
- Repository: https://github.com/jakeschincariol/arena-skill

## Overview

Arena is a Claude Code skill that turns a rejected answer or new task into a tournament of strategy-guided sub-agents, then returns the surviving solution and its match history. The user invokes the skill; Claude’s main session coordinates spawning, attacks, defenses, judging, and bracket advancement, while bracket.py persists tournament state and calculates outcomes. The README documents these relationships and capabilities; source excerpts are partial, so internal call details beyond them are not inferred.

Main entry points: [`skills/arena/SKILL.md`](https://github.com/jakeschincariol/arena-skill/blob/main/skills/arena/SKILL.md) (Main session), [`skills/arena/bracket.py`](https://github.com/jakeschincariol/arena-skill/blob/main/skills/arena/bracket.py) (Bracket engine), [`skills/arena/strategies.json`](https://github.com/jakeschincariol/arena-skill/blob/main/skills/arena/strategies.json) (Strategy cards), [`skills/arena/rubric.md`](https://github.com/jakeschincariol/arena-skill/blob/main/skills/arena/rubric.md) (Scoring rubric)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_coordination["Skill coordination"]
  node_skill["Arena skill<br/>[SKILL.md]"]
  node_session["Main session<br/>[SKILL.md]"]
  node_result["Winning solution<br/>[bracket.py]"]
end

subgraph group_tournament["Tournament runtime"]
  node_agents["Competitor agents"]
  node_strategies["Strategy cards<br/>[strategies.json]"]
  node_attacks["Attack and defend<br/>[SKILL.md]"]
  node_bracket["Bracket engine<br/>[bracket.py]"]
  node_state[("Tournament state<br/>[bracket.py]")]
end

subgraph group_evaluation["Evaluation rules"]
  node_judge["Match judge<br/>[SKILL.md]"]
  node_rubric["Scoring rubric<br/>[rubric.md]"]
end

node_user(("Claude Code user"))

node_user -->|"invokes"| node_skill
node_skill -->|"guides"| node_session
node_session -->|"runs commands"| node_bracket
node_session -->|"spawns"| node_agents
node_agents -->|"receives cards"| node_strategies
node_session -->|"coordinates"| node_attacks
node_attacks -->|"exchanges solutions"| node_agents
node_session -->|"requests verdicts"| node_judge
node_judge -->|"scores against"| node_rubric
node_judge -->|"returns verdict"| node_bracket
node_bracket -->|"reads and writes"| node_state
node_bracket -->|"reports winner"| node_result
node_session -->|"presents"| node_result

click node_skill "https://github.com/jakeschincariol/arena-skill/blob/main/skills/arena/SKILL.md"
click node_session "https://github.com/jakeschincariol/arena-skill/blob/main/skills/arena/SKILL.md"
click node_strategies "https://github.com/jakeschincariol/arena-skill/blob/main/skills/arena/strategies.json"
click node_attacks "https://github.com/jakeschincariol/arena-skill/blob/main/skills/arena/SKILL.md"
click node_judge "https://github.com/jakeschincariol/arena-skill/blob/main/skills/arena/SKILL.md"
click node_rubric "https://github.com/jakeschincariol/arena-skill/blob/main/skills/arena/rubric.md"
click node_bracket "https://github.com/jakeschincariol/arena-skill/blob/main/skills/arena/bracket.py"
click node_state "https://github.com/jakeschincariol/arena-skill/blob/main/skills/arena/bracket.py"
click node_result "https://github.com/jakeschincariol/arena-skill/blob/main/skills/arena/bracket.py"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_skill,node_session,node_result,node_user toneBlue
class node_agents,node_strategies,node_attacks,node_bracket,node_state toneAmber
class node_judge,node_rubric toneMint
```

## Components

### Skill coordination

- [Arena skill](https://github.com/jakeschincariol/arena-skill/blob/main/skills/arena/SKILL.md): `skills/arena/SKILL.md`
- [Main session](https://github.com/jakeschincariol/arena-skill/blob/main/skills/arena/SKILL.md): `skills/arena/SKILL.md`
- [Winning solution](https://github.com/jakeschincariol/arena-skill/blob/main/skills/arena/bracket.py): `skills/arena/bracket.py`

### Tournament runtime

- **Competitor agents**
- [Strategy cards](https://github.com/jakeschincariol/arena-skill/blob/main/skills/arena/strategies.json): `skills/arena/strategies.json`
- [Attack and defend](https://github.com/jakeschincariol/arena-skill/blob/main/skills/arena/SKILL.md): `skills/arena/SKILL.md`
- [Bracket engine](https://github.com/jakeschincariol/arena-skill/blob/main/skills/arena/bracket.py): `skills/arena/bracket.py`
- [Tournament state](https://github.com/jakeschincariol/arena-skill/blob/main/skills/arena/bracket.py): `skills/arena/bracket.py`

### Evaluation rules

- [Match judge](https://github.com/jakeschincariol/arena-skill/blob/main/skills/arena/SKILL.md): `skills/arena/SKILL.md`
- [Scoring rubric](https://github.com/jakeschincariol/arena-skill/blob/main/skills/arena/rubric.md): `skills/arena/rubric.md`

### Other components

- **Claude Code user**

## Connections

- Claude Code user → Arena skill: invokes (evidence: `README.md`)
- Arena skill → Main session: guides (evidence: `README.md`)
- Main session → Bracket engine: runs commands (evidence: `README.md`)
- Main session → Competitor agents: spawns (evidence: `README.md`)
- Competitor agents → Strategy cards: receives cards (evidence: `README.md`)
- Main session → Attack and defend: coordinates (evidence: `README.md`)
- Attack and defend → Competitor agents: exchanges solutions (evidence: `README.md`)
- Main session → Match judge: requests verdicts (evidence: `README.md`)
- Match judge → Scoring rubric: scores against (evidence: `README.md`)
- Match judge → Bracket engine: returns verdict (evidence: `README.md`)
- Bracket engine → Tournament state: reads and writes (evidence: `skills/arena/bracket.py`)
- Bracket engine → Winning solution: reports winner (evidence: `README.md`)
- Main session → Winning solution: presents (evidence: `README.md`)
