Riftbound rules answers you can actually check.
Ask your AI agent a rules question. Get back a verdict, the reasoning split into individually-graded claims, and every citation one click away from the rule it rests on.
Ask a chatbot the same question and it will cite 471.1.b.1 with total confidence whether or
not that rule exists. Across 7,774 community-written answers to real Riftbound questions,
29% of rule citations point at an ID that doesn't exist at all.
This one can't do that. Before a report is rendered, a verifier proves every cited rule exists
and every quote appears verbatim. A citation that fails doesn't get softened — it forces the
whole answer to UNSETTLED.
npx skills add gear-null/riftbound-oracleClaude Code, Cursor, Codex, Gemini CLI, GitHub Copilot and a dozen more. Python 3.9+ is the only requirement — the one macOS already ships. No build, no API key, no account.
Then just ask:
Does a countered Flow spell still get banished?
Unchecked Power deals 12 damage to all units at battlefields. Player 2 has
Viktor, Leader and two Vanguard Sergeants. How many Recruits do they play?
Explain the HOT FEPR loop as best you can
Your agent looks up the cards, walks the rulebook, writes the answer, verifies it, and opens the report. You never run a command.
Claude Desktop, mobile, and installing without Node
Desktop and mobile apps take a file instead. Download the .zip from
Releases and upload it as a
skill. Those apps block remote images, so set RIFTBOUND_EMBED_ART=1 to inline the card
artwork.
No Node? Same release, verified against its published checksum:
curl -fsSL https://raw.githubusercontent.com/gear-null/riftbound-oracle/main/install.sh | shAnywhere else. It's a plain folder of Python and data — no runtime, no daemon, no install
hooks. Drop it where your agent keeps skills and point it at SKILL.md.
Text-only skill surfaces (Gemini Spark, for one) can't run it. The answers come from executing a verifier against a corpus, not from prose an agent reads.
Check it's healthy any time with python3 rules_cli.py selftest from the skill's lib/.
Every citation is followable. Click a rule and the full rulebook opens over the report, scrolled to the exact clause with its cross-references live — without losing your place in the argument.
The argument stays navigable. A hard ruling runs long, so it's indexed beside itself — the verdict, the weakest link, and every claim in order with the load-bearing one marked. It tracks which claim you're reading. Print it and the index drops away, every citation opens, and the whole thing inverts to a clean sheet, because judges print these.
It explains things, not only rules on them. Ask how something works rather than what happens in one situation and you get a primer instead of a ruling: the procedure as numbered steps, every move between them cited, and a diagram of the whole loop. The diagram is derived from those cited transitions — there is no field an author can draw an arrow in — so the picture can never say something the document didn't declare.
It tells you when it doesn't know. When the rules genuinely don't settle something, you get
UNSETTLED and a list of what was searched — not a confident guess. Refusal is a rare quality
in a language model.
You always know the weakest step. Confidence is the floor, never the average: nine solid claims and one inference make an inferred answer, and the report names which claim is the soft one.
Cards show up, and they're right. Artwork, stats and printed text for everything the answer touches — with Riot's published errata applied. The card database the rest of the ecosystem reads is months behind; 28 cards here say what Riot actually ruled.
It works on a plane. Rules, cards and rulebook all ship with the skill, so answering needs no network at all — only the card artwork loads remotely, when you open a report.
The same repo ships a second skill, deck-lab, for building decks and testing them
against real tournament lists.
Build me an aggressive Irelia list and see how it holds up against the Master Yi decks
It is a table, not a player. Code owns everything that must not be imagined — the shuffle, what you drew, whose turn it is, what a rune pool holds, how much damage a combat assigns, who scored and when, and whether the deck is legal under rule 103. Your agent owns every decision and every word of card text, because a scripted engine over 1,037 cards is wrong in ways nobody notices — and an agent asked what it drew will produce a card that suits its plan.
So the report keeps its two halves apart, and says which is which:
- Shuffle math at 50,000 hands in the report — curve reachability, domain access, cards stranded in hand, hands blocked on Power rather than Energy. No decisions are involved, so it is exact and it is cheap.
- Played games at the sample size games are actually played at, with
nand a Wilson interval beside every rate. At four games that interval runs 30–95%, and the report prints it rather than quietly rounding a 3–1 into "75%".
24 tournament decklists ship with it, refreshed on demand with npm run oracle decks pull.
See ADR 0007 for why it is built this way, and
the skill itself for how to drive it.
| Reading a report | What the grades, superscripts and symbol legend mean |
| The deck lab | Building a deck, playing it out, and reporting results honestly |
| Changelog | What changed, and which rules version each release ships |
| Contributing & design notes | How it's built, and what was measured to decide that |
The code is MIT — use it, fork it, sell something built on it, no attribution required. See LICENSE.
That covers this project's own work only. The Riftbound rules text under output/
and the card text in the skill's data are Riot Games' copyright, included so a
citation can be checked verbatim against the document it quotes, and used under
Riot's policy for community projects. They travel under Riot's terms, not MIT.
Riftbound is a trademark of Riot Games. This project is unofficial and not endorsed by Riot Games. No card artwork is redistributed: reports reference Riot's CDN by URL, and a reader with no network sees a labelled placeholder. What is committed, and why.



