LibraryClaude skillPDF

Dinner Arena: ten Claudes fight over where you eat tonight

A free Claude skill. Tell it who's eating, where, and what they can't eat. Ten Claude food critics fight it out in a knockout bracket over real restaurants near you, and one survives with a message ready for the group chat.

By Josh Pocock · Oct 28, 2026 · v1.0 · 4 min read

ClaudeClaude CodeGitHub
It never books, orders or pays for anything, and it never calls a restaurant allergy-safe. You book, and you tell them about the allergy.
On this pageThe one prompt

The one prompt

One line. Paste this into Claude Code and it does the rest.

Prompt
Install the Dinner Arena skill: clone https://github.com/joshpocock/dinner-arena into ~/.claude/skills/dinner-arena, then confirm /dinner-arena works.
  1. 01
    Copy the prompt above
    The repo link plus one line
  2. 02
    Paste it into Claude
    Claude Code installs the skill
  3. 03
    /dinner-arena
    Then say who's eating, where, and what they can't eat
  4. 04
    Send the group chat message
    Winner, backup and the allergy call, ready to paste

By hand

Terminal
git clone https://github.com/joshpocock/dinner-arena ~/.claude/skills/dinner-arena

Start a new Claude Code session and type /dinner-arena. Keep web search on so Claude can find real places, or paste a screenshot of a maps search. The screenshot gives the critics the best numbers.

On the Claude app

  1. Turn on Settings > Capabilities > Code execution and file creation, and keep web search on.
  2. On the GitHub page click Code > Download ZIP.
  3. In Claude go to Customize > Skills > + > Upload a skill and pick the zip.
  4. Start a new chat and say "use the dinner-arena skill", then tell it who's eating and where.

No install at all? Paste SKILL.md and references/critics.md into any chat. Claude runs the bracket by hand from the same rules.

Illustration: restaurant plates in boxing gloves squaring off in a gold boxing ring under a tournament bracket
Illustration, not a real log.

How the fight works

The stage names are the joke. The votes are the honest part: every critic votes on one real number, so the same inputs always give the same winner.

StageWhat happens
Group intakeWho's eating, each budget, diets and allergies, cravings, favorites, vetoes, the vibe.
Real placesA maps screenshot you paste, or open restaurants Claude finds with web search. Nothing invented.
Allergy TribunalOut if the place says it can't cater for a need, or hasn't confirmed a severe allergy.
Budget ExecutionerOut if it costs more than the cheapest person's limit.
Veto Box, Closed SignOut if anyone vetoed it or it's closed.
The BracketThree critics vote on every match. All ten vote in the final.
Crowd OverrideThe humans can overrule any result.
Last Restaurant StandingWinner, backup, call-ahead and allergy warnings, and a message for the group chat.
CriticVotes for
The Budget ExecutionerThe cheaper place
The Distance HaterThe closer place
The Review SkepticThe better rating, weighted by how many reviews
The Craving WhispererMore of tonight's cravings
The Allergy LawyerMore of the group's needs the restaurant itself confirms
The Wait-Time ProphetThe shorter wait
The Adventurous OneSomething the group hasn't eaten lately
The Comfort Food LoyalistOne of the group's all-time favorites
The Vibe CuratorThe place that fits tonight's vibe
The Group Chat DiplomatThe place where the least happy person is happiest

One dinner, start to finish

A made-up example, real tool output. Four friends, one vegetarian, one nut allergy, the cheapest budget at price level 2, eleven places. Four are out before a single fight:

Terminal
ALLERGY TRIBUNAL + BUDGET EXECUTIONER  (group needs: nut allergy, vegetarian; price cap 2)
  ELIMINATED  EXAMPLE Ember Steakhouse     Budget Executioner: price level 4 is over the group cap of 2
  ELIMINATED  EXAMPLE Sushi Wave           Budget Executioner: price level 3 is over the group cap of 2
  ELIMINATED  EXAMPLE Satay House          Allergy Tribunal: says it can't cater for: nut allergy
  ELIMINATED  EXAMPLE Nonna's Pizza        Closed Sign: not open tonight

Seven survivors go into the bracket. In the final, all ten critics vote:

Terminal
  R3M1: EXAMPLE Lotus Thai Kitchen  vs  EXAMPLE Masala Street
      The Budget Executioner     -> abstains (tie)   [cheaper wins]
      The Distance Hater         -> EXAMPLE Lotus Thai Kitchen   [closer wins]
      The Review Skeptic         -> EXAMPLE Masala Street   [better rating, weighted by how many reviews]
      The Craving Whisperer      -> EXAMPLE Lotus Thai Kitchen   [matches more of tonight's cravings]
      The Allergy Lawyer         -> EXAMPLE Masala Street   [more of the group's needs the restaurant itself confirms]
      The Wait-Time Prophet      -> EXAMPLE Lotus Thai Kitchen   [shorter wait]
      The Adventurous One        -> abstains (tie)   [something the group has not eaten lately]
      The Comfort Food Loyalist  -> abstains (tie)   [one of the group's favorites]
      The Vibe Curator           -> EXAMPLE Masala Street   [fits tonight's vibe]
      The Group Chat Diplomat    -> abstains (tie)   [the least unhappy person is happiest]
      SURVIVES: EXAMPLE Lotus Thai Kitchen  3-3 (tie broken by group fit)

Claude gives every critic a line in character, naming the real number behind the vote. Then the winner card:

Terminal
LAST RESTAURANT STANDING: EXAMPLE Lotus Thai Kitchen
  thai, noodles | price 2 | 1.2 km | rating 4.5
  CALL AHEAD to confirm: nut allergy
  ALLERGY: tell them about the nut allergy when you book, even if the menu says it's fine. A website label is not a guarantee.
  Backup if it's full: EXAMPLE Masala Street
  Final vote: 3-3

GROUP CHAT MESSAGE:
  Ten critics fought. EXAMPLE Lotus Thai Kitchen survived. Calling ahead first about the nut allergy. Backup is EXAMPLE Masala Street. Booking unless someone objects in 10 min.

When the humans disagree

The critics advise. The group decides. Say "Alex had Thai for lunch" and Claude overrules the final, puts Masala Street through and rewrites the group chat message. You can run the tool yourself too. It's plain Python with nothing to install:

Terminal
python scripts/arena.py override R3M1 --winner "EXAMPLE Masala Street" --reason "Alex had Thai for lunch"
python scripts/arena.py final

The fine print

It never books anything. No ordering, no paying, no reservations. Claude gives you the link and you book.

Allergies are rules, not opinions. A place that says it can't cater for a need is out. A severe allergy knocks out every place that hasn't confirmed it. If that leaves nothing, it tells you to call two or three places, never to drop the allergy.

Never take a menu's word for an allergy. Even a place that says "nut-free" gets a reminder: tell them about the allergy when you book.

Real places only. Ratings, prices and hours come from what Claude finds or what you paste. Check before you go.

Your food needs stay in the chat. The bracket is a file in a .dinner-arena folder where you run it.