StudioCreate
Rules, written
down twice.
Once in the words people read, once in the structure the engine runs. Studio keeps the two side by side, so every compiled rule can point at its sentence and every unclear sentence becomes a question.
“When Spark Imp enters play, deal 2 damage to an enemy unit in an adjacent lane.”
# compiled from §4.1 · source line cited
when spark_imp.enters
target 1 enemy.unit where lane in adjacent(self.lane)
do damage(target, 2)
Dials re-parameterize the engine instantly; nothing is re-generated.
ProvenanceEvery rule cites a sentence
The rulebook
is the source.
The blue words are dials: values Claude found in the text and exposed as parameters. Changing one re-parameterizes the engine instantly. Nothing is regenerated, so nothing else moves.
Margin notesClaude’s notes stay in the margin, in blue. They suggest and ask. They never change a rule on their own.
§1 Setup
- §1.1
Two players face each other across three lanes. Each defends a Keep.
- §1.2
Each Keep starts with health.
- §1.3
Shuffle your 12-card deck and draw cards.
- §1.4
The second player draws extra cards.
ClaudeThis is the seat-balance knob. Worth a Break-It run before anyone playtests.
§2 Your turn
- §2.1
Gain energy equal to the number of turns you have taken, up to .
- §2.2
Then draw a card. The first player draw on their first turn.
- §2.3
Play units from your hand by paying their cost. Each lane holds one unit per side.
§3 Combat
- §3.1
At the end of your turn, each ready unit attacks the enemy unit across from it, which strikes back. If that lane is empty, it hits the enemy Keep.
Claude“Strikes back” read as simultaneous: both units deal damage in the same step.
- §3.2
Units that entered play this turn ready.
Question A-3Two readings are possible. Using the literal one until you rule.
- §3.3
A unit with damage equal to its health is destroyed.
§4 Card effects
- §4.1
When Spark Imp enters play, deal damage to an enemy unit in .
Claude“Adjacent” read as one lane to the left or right, not the same lane. Confirm?
- §4.2
If no enemy unit is in range, Spark Imp .
Question A-2Two readings are possible. Using the literal one until you rule.
- §4.3
When Cinder Drake enters play, deal 1 damage to each enemy unit.
- §4.4
When Sniper Owl enters play, deal 2 damage to the enemy Keep.
§5 Healing
- §5.1
When Mender enters play, heal 2 damage from a friendly unit.
- §5.2
Whenever another friendly unit is healed, Bloom Wisp heals 1 damage from another friendly unit.
ClaudeThis trigger can fire itself again. Whether it stops depends on §5.3.
- §5.3
A heal that removes no damage as healing.
Question A-1Two readings are possible. Using the literal one until you rule.
§6 Winning
- §6.1
A player whose Keep reaches 0 health loses.
- §6.2
After 40 turns the game is a draw.
Ambiguity LedgerQuestions instead of guesses
When the text
could mean two things.
Rulebooks are written for people, who fill gaps without noticing. An engine can’t. The ledger lists each gap, explains why it matters and shows what each answer changes. Until you rule, the literal reading applies, and the Lab will tell you what that costs.
- A-1 · §5.3Open question
Does a heal that removes no damage still count as “healed”?
Why Claude asks§5.2 fires whenever a unit is healed. If a full-health unit can be “healed”, Mender and Bloom Wisp can keep triggering each other.
- A-2 · §4.2Open question
Can Spark Imp be played when no enemy unit is in range?
Why Claude asksThe card says “deal 2 damage to an enemy unit”. It doesn’t say what happens when there isn’t one.
- A-3 · §3.2Open question
Do units attack on the turn they enter play?
Why Claude asks§3.1 says “each ready unit”. The rulebook never defines ready.
ImportBring the rules you have
From PDF
to Rulespec.
Studio reads a rulebook, a card spreadsheet and the FAQ together, drafts Rulespec for each mechanic and links every line back to its page.
- ember-league-rules-v3.pdf24 pagesread
- cards.csv112 rowsread
- faq-2026-08.md31 rulingsread
- errata.md6 changesreading…
draft · rule 7.3 · from rules-v3.pdf p.11, FAQ ruling 12
“Burn counters are removed at the start of their controller’s turn.”
on turn.start(player)
for unit in player.units
unit.burn = 0QuestionFAQ ruling 12 says burn is removed “at end of turn”. Which one is current?