Install
openclaw skills install the-arenaTurn a Discord server into a moderated debate arena with an AI judge. Supports multiple debate formats, configurable personas, scored verdicts, and a persistent scoreboard. Keywords: debate server, debate moderator, debate judge, argument judge, discussion moderator, moderated debates, debate arena, debate bot, AI judge, the arena.
openclaw skills install the-arenaTransform any Discord server into a structured debate arena with AI moderation, fair judging, and a persistent scoreboard.
This skill requires the following. Nothing is configured automatically — all privileged actions require your manual review and approval.
| Requirement | Details |
|---|---|
| Discord bot token | Your existing OpenClaw bot token (already in your gateway config) |
| Discord bot permissions | Read/Send Messages, Create Threads, Manage Messages, Read History, Add Reactions |
| Discord guild (server) | You create or choose the server. You provide the guild ID. |
| Gateway admin access | You manually review and apply config changes via config.patch |
DEBATE_SCOREBOARD_DB (optional) | Env var to set SQLite DB path. Default: ./data/scoreboard.db (within skill workspace) |
fs.workspaceOnly: true, exec.security: "deny").scripts/setup.sh, scripts/scoreboard.sh) only create
files within the skill workspace. They make no network calls and write no files
outside the skill directory. Inspect them before running — both are plain
bash with no obfuscation, under 400 lines each../data/scoreboard.db relative to the
skill directory (or at $DEBATE_SCOREBOARD_DB if set). It never writes outside
the skill workspace.requireMention: false on arena channels means the bot processes every
message in that channel. This increases token usage and data exposure. Use
requireMention: true for lower cost and reduced visibility.Say "set up a debate server" and the agent walks you through configuration choices, then generates templates for your review.
Create a new Discord server or pick an existing one. You'll need the guild ID (right-click the server icon → Copy Server ID with Developer Mode enabled).
Pick the voice your moderator uses during debates. Default: Scholar.
| Persona | Vibe |
|---|---|
| Scholar | Measured, references history & philosophy |
| Sports Commentator | High-energy play-by-play |
| Philosopher | Socratic method, questions everything |
| Comedian | Witty roast-style commentary |
| Drill Sergeant | No-nonsense, demands evidence |
| Custom | You write the persona description |
Details in references/personas.md.
The default format used when someone starts a debate without specifying one. Default: Campfire.
| Format | Style | Best For |
|---|---|---|
| Campfire | Free-form exchange | General topics, casual |
| Oxford | Formal rounds, audience vote | Serious propositions |
| Lincoln-Douglas | 1v1 value debate | Philosophy, ethics |
| Hot Takes | One message each, best wins | Quick fun rounds |
| Devil's Advocate | Argue opposite of your belief | Steelmanning practice |
| Roundtable | Multi-perspective, no winner | Complex nuanced topics |
Details in references/formats.md.
Customize how the moderator scores arguments. Defaults:
| Criterion | Default Weight |
|---|---|
| Evidence & Reasoning | 35% |
| Engagement | 25% |
| Intellectual Honesty | 20% |
| Persuasiveness | 20% |
Weights must sum to 100%. Details in references/judging.md.
Default channel names (all customizable):
| Channel | Purpose |
|---|---|
#rules | Server rules, format overview, commands |
#propose-a-topic | Topic proposals and voting |
#the-arena | Where debates happen |
#hall-of-records | Verdicts, scoreboard, debate history |
#the-bar | Casual off-topic discussion |
The agent generates config snippets and an AGENTS.md tailored to your choices.
You must review and manually apply all gateway config changes. The agent does
not apply config patches automatically. See references/setup-guide.md for the
full config template and a step-by-step walkthrough.
Important: agents.list and bindings are arrays — config.patch replaces
them entirely. Always review the full patch to ensure your existing agents and
bindings are preserved.
After you create channels in Discord, the agent can post welcome messages from
assets/welcome-messages.md — or you can copy-paste them manually.
The agent posts the full rules document in #rules.
Controls the moderator's voice and commentary style.
The format used when a debate is started without specifying one.
Customize the four scoring criteria. Must sum to 100%.
All five channels can be renamed. Provide a mapping during setup.
How the moderator delivers the final ruling.
CLI: scripts/scoreboard.sh. DB location: $DEBATE_SCOREBOARD_DB or ./data/scoreboard.db.
Hours before the moderator flags a stale debate. Default: 48.
Maximum simultaneous debates in the arena. Default: 3.
In #propose-a-topic, post:
Topic: [Your topic]
Format: [optional — defaults to server default]
Others react with 👍 to show interest. When at least two people are ready, anyone can say "let's debate" to move to the arena.
In #the-arena, the moderator:
Participants can also start directly in the arena:
@Moderator start debate: "Pineapple belongs on pizza" [format: hot-takes]
The moderator's behavior depends on the format:
The moderator flags logical fallacies, tracks participation balance, and keeps the debate moving. In mention-only mode, participants @mention for moderator input.
The moderator evaluates using the configured judging weights and delivers the
verdict in the configured style. The verdict is posted in both #the-arena and
#hall-of-records.
When the scoreboard is enabled, results are automatically recorded.
Commands (via scripts/scoreboard.sh):
scoreboard.sh init # Create database
scoreboard.sh record <winner> <loser> <topic> # Record result
scoreboard.sh leaderboard # Show standings
scoreboard.sh history [--limit N] # Recent debates
scoreboard.sh stats <participant> # Individual stats
scoreboard.sh reset # Clear all data
The moderator should run these automatically when delivering verdicts and when users ask for standings.
| Channel | Moderator Behavior |
|---|---|
#rules | Posts rules only. Does not engage in conversation. |
#propose-a-topic | Acknowledges proposals, suggests formats, helps refine topics. |
#the-arena | Full moderator mode. Manages debates, enforces rules, delivers verdicts. |
#hall-of-records | Posts verdicts and scoreboard updates. Read-only for moderator. |
#the-bar | Casual mode. Can chat, joke, discuss past debates. No moderation. |
The debate moderator MUST run as a separate OpenClaw agent with restricted permissions. This is critical because the debate server is semi-public — other users interact with the bot, and prompt injection is a real risk.
Recommended agent restrictions:
tools.fs.workspaceOnly: true — can only read/write within the skill workspacetools.exec.security: "deny" — cannot execute shell commandstools.deny list blocking: exec, process, nodes, cron, gateway, browser,
canvas, sessions_*, subagents, memory_search, memory_get, tts, imagetools.profile: "messaging" — only Discord messaging + web search (for fact-checking)What this ensures:
All config changes are your responsibility. The agent generates templates;
you review and apply them. See references/setup-guide.md for the full
security configuration and a tested tool deny list.
| File | Purpose |
|---|---|
references/formats.md | Detailed format rules and moderator instructions |
references/personas.md | Full persona descriptions and voice guides |
references/judging.md | Scoring criteria, bonuses, penalties, format adjustments |
references/setup-guide.md | Gateway config template, permissions, security |
references/agents-template.md | Complete AGENTS.md template for the debate agent |
scripts/scoreboard.sh | SQLite scoreboard CLI |
scripts/setup.sh | Interactive setup wizard |
assets/welcome-messages.md | Default welcome messages for all channels |