Agent skills
Two skills. Which one you want is decided by where your game’s state lives, not by how fast it plays: a signed off-chain channel between two to four named players is building-channel-games; a world the chain persists, where every move is its own transaction, is building-persistent-games.
Unzip into .claude/skills/ — no install step, nothing to run. Command line and other agents below.
| What you are building | Skill | Start with |
|---|---|---|
| Two to four people playing each other, in real time or fast turns | building-channel-games | ARCADE.md |
| A persistent world, an MMO, an economy, or an async every-move-on-chain game | building-persistent-games | SKILL.md |
Before you build an Arcade game
An Arcade game is 2 to 4 seats, React/Next only (the SDK has no supported non-React path today), and ships as a static export with no server of any kind — no API routes, no server actions, no database, no asset backend, no leaderboard service, and no accounts beyond your Xaya p/ name. All shared state is produced by a deterministic wasm judge with no floats, no clock, no network and no file access, whose state output is bounded and whose execution is fuel-capped — which caps how big a world and how long a history you can have. Input is keyboard- or tap-shaped, and every game must be playable by touch: it declares on-screen touch controls (a d-pad and/or action buttons) that the SDK mounts on touch devices, or it declares that it draws its own touch surface and takes the whole frame to draw it in — a game that declares neither is labelled desktop-only on the shelf and a player on a phone cannot start or join a match in it. There is no gamepad support and no key remapping. And a match needs two to four named, funded humans online at the same moment; there is no solo mode, no bot and no matchmaking.
Authority: arcade-xayaman/next.config.ts — “A static export has NO SERVER”.
If your idea does not fit, say so in Discord before you build — we would rather hear it early. A persistent world, an economy or an async every-move-on-chain game is not a worse idea; it is the other skill.
Download
This is the install that works today, for Claude Code:
Or from a terminal:
curl -fsSLO https://arcade.xaya.io/skills/arcade-skills.zipunzip arcade-skills.zip -d .claude/skills/
Skills placed under .claude/skills/ load automatically in Claude Code — nothing else to run.
A template fork already carries these vendored at .claude/skills/. If you have one, you already have the skills and can skip this step.
If your agent has no plugin system
Cursor, Codex, Copilot and Gemini do not read .claude/skills/. Give them these URLs directly — every skill and module is served as plain markdown:
https://arcade.xaya.io/skills/building-channel-games.md
https://arcade.xaya.io/skills/building-channel-games/arcade.md
https://arcade.xaya.io/skills/building-channel-games/standalone.md
https://arcade.xaya.io/skills/building-channel-games/wasm.md
https://arcade.xaya.io/skills/building-channel-games/wagering.md
https://arcade.xaya.io/skills/building-channel-games/hidden-information.md
https://arcade.xaya.io/skills/building-channel-games/commit-reveal.md
https://arcade.xaya.io/skills/building-channel-games/pitfalls.md
https://arcade.xaya.io/skills/building-channel-games/examples.md
https://arcade.xaya.io/skills/building-persistent-games.md
https://arcade.xaya.io/skills/building-persistent-games/gsp.md
https://arcade.xaya.io/skills/building-persistent-games/determinism.md
https://arcade.xaya.io/skills/building-persistent-games/ops.md
https://arcade.xaya.io/skills/building-persistent-games/fork-testing.md
https://arcade.xaya.io/skills/building-persistent-games/pitfalls.md
https://arcade.xaya.io/skills/building-persistent-games/examples.mdClaude Code plugin marketplace
Not yet public. xaya/arcade-skills is a private repository, so the commands below fail today — use the download above instead. This is the install that works once the repository is public:
/plugin marketplace add xaya/arcade-skills
/plugin install arcade-skills@arcade-skillsThat command pair is the supported way to install via the marketplace — a site-hosted marketplace.json URL is not an interchangeable alternative. It does not retire the download above; both stay valid side by side. Cloning xaya/arcade-skills directly needs the same repository to be public.
building-channel-games
For a game two to four people play against each other in real time or in fast turns: moves are signed off chain and only open, join, close and dispute touch the chain. Covers both the hosted Xaya Arcade — write rules and a board UI, upload, no servers of your own — and a standalone channel game you host yourself.
- ARCADE.md — The one file to read if you just want to ship a game: the whole flow from a template clone to an accepted submission.
- STANDALONE.md — Running a channel game without the Arcade: your own referee GSP, relay, session keys and deployment.
- WASM.md — Compiling deterministic C++ rules to a freestanding WebAssembly judge, and authoring the golden traces that prove it.
- WAGERING.md — Putting a WCHI stake on a match: escrow, the payment queue, and paying out N players.
- HIDDEN-INFORMATION.md — Every seat holds the full signed state, so nothing in it is secret: where a secret lives instead, and what crosses the wire in its place.
- COMMIT-REVEAL.md — Simultaneous moves on a strictly turn-based protocol, at N seats — the commitment, the reveal window, and the seat that never opens theirs.
- PITFALLS.md — The failures this platform actually produces, written so you recognise one in seconds.
- EXAMPLES.md — Shipped channel games and what each one is worth reading for.
building-persistent-games
For a game whose state lives fully on chain — a persistent world, an MMO, an economy, or an async game where every move is its own transaction — and for the platform foundation every Xaya game rests on: the GSP, the XayaX Polygon bridge, names, moves and determinism.
- GSP.md — Building a GSP on libxayagame: the callbacks you implement, protobuf state, and the build recipe.
- DETERMINISM.md — The law every Xaya game obeys — the same ordered moves must produce byte-identical state — and how to prove yours does.
- OPS.md — The day-2 runbook: WAL growth, ZMQ staleness, resync and genesis height, and a GSP that will not sync.
- FORK-TESTING.md — Testing against a forked Polygon chain with no real funds, and the traps that come with it.
- PITFALLS.md — The on-chain and GSP failures that bite hardest, with the symptom first.
- EXAMPLES.md — Shipped persistent worlds and the foundation repositories both skills rest on.
Driving an agent?
There is a literal copy-paste opening prompt for each of the two paths — see /docs/ai-agent.
/repos — every repository this site points you at, and what your relationship to it is · Quickstart · llms.txt