Build a custom Jumpstart 2025-style 20-card pack from owned cards.
Build custom Jumpstart 2025-style 20-card packs using cards the user actually owns.
Every J25 pack follows this formula (derived from analyzing all 121 real J25 decks):
J25 analysis shows themes exist on a spectrum from tight engine to loose flavor. All three tiers produce good decks. The theme guides card selection, not deck mechanics — it tells you which good cards to pick.
Almost every card participates in the mechanic. The deck doesn't function without it. Examples: graveyard (11/12 on-theme), draw-two (11/12), mill (12/12), landfall (7-10/11), flash (8-10/12). Build these by finding 2-4 explicit payoffs and filling the rest with enablers that naturally do the thing.
The creature type IS the synergy. Elves naturally make mana and go wide. Vampires naturally drain and have lifelink. Clerics naturally gain life and sacrifice. You don't need "Elves you control get +1/+1" for an elf deck to feel like an elf deck — 8 elves doing elf things is plenty. 0-3 tribal payoff cards is normal. Even the most synergistic tribal decks (goblins: 6-7 payoffs) still run 2-3 off-tribe utility cards.
The name is a vibe, the cards are individually good. Real J25 examples: "Encounter" has 1 fight card in 12 — it's actually "+1/+1 counters on green creatures." "Explorers" often has 0 explore cards — it's "green value creatures that find lands." These decks differentiate through card selection coherence, not mechanical density. Don't force payoffs that aren't there. If the theme is "big green creatures," just pick the best big green creatures.
Packs can start from either direction:
The user names a theme (tribal, mechanical, or flavor). Search for cards that fit, build an oversized pool, cut to 12.
The user names a specific card, sees a cool rare, or notices a cluster of cards that work together. Build outward from that seed — find what supports it, what fills the gaps, what gives it a name.
1. Establish the seed. Either a theme name or 1-3 cards to build around. If the user is vague ("green deck"), search broadly to find what clusters exist in their collection.
2. Search broadly. Cast a wide net with multiple searches. The goal is 15-25+ candidates — much more than the final 12. Use jumpstart-search.py with different oracle text patterns, type lines, subtypes, and rarity filters. A single search always misses related cards.
3. Read oracle text on promising candidates. Confirm cards actually do what you think. Use jumpstart-card-oracle.py for quick lookups.
4. Identify the synergy tier. Based on what you found, is this an engine (most cards must participate), tribal (creature type coherence), or flavor (individually good cards with a shared vibe)? This determines how aggressively to prioritize on-theme cards during cuts.
5. Insert the oversized pool. Use jumpstart-insert-deck.py. The user will trim in the UI, or you can help cut.
6. Cut to 12. Prioritize:
7. Generate a Scryfall URL so the user can visually verify the final list.
All tools are invoked via uv run python .claude/skills/jumpstart/scripts/<tool>.py <args>.
Host configuration: Scripts read the server URL from .claude/skills/jumpstart/host (one URL per line). Override with --host <url> flag or MTGC_HOST env var. Priority: --host flag > MTGC_HOST env > host file > default (https://localhost:8081).
IMPORTANT — one command per tool call. Do NOT chain multiple script invocations with &&, ;, or subshells. Each script call should be a separate Bash tool invocation. Chaining causes permission prompts for every sub-command.
"<sql_where_clause>"Search owned cards using raw SQL WHERE clauses. The core exploration tool — use it to find candidates, scout what's available in a color, check creature type density, find rares, etc. Use --schema to see available columns. All color/hybrid filtering is done via the WHERE clause directly.
# Mono-green creatures
jumpstart-search.py "c.type_line LIKE '%Elf%' AND c.colors = '[\"G\"]'"
# Cards castable with only green mana (mono-green + G hybrids + colorless)
jumpstart-search.py "c.mana_cost NOT LIKE '%{W}%' AND c.mana_cost NOT LIKE '%{U}%' AND c.mana_cost NOT LIKE '%{B}%' AND c.mana_cost NOT LIKE '%{R}%' AND c.cmc <= 3"
# Rarity search
jumpstart-search.py "p.rarity IN ('rare', 'mythic') AND c.cmc <= 5 AND c.colors = '[\"G\"]'"
# See available columns
jumpstart-search.py --schema
"<card name>"Read a card's full oracle text. Use to confirm a card does what you think before including it.
[COLOR] [--rare-category bomb|engine|lord] [--rm-count 2|3] [--seed N]Generate a soft pack shape: curve distribution, creature/spell count, rarity budget. Color is W/U/B/R/G; random if omitted. --rm-count forces 2 or 3 rare/mythic slots (random if omitted). Use --seed for reproducibility.
--color C --theme "Theme" --description "..." "Card1" "Card2" ...Insert a finished pack as a idea deck. Color can be a single letter (W/U/B/R/G/C) or a pair (WU/BR/etc). Multicolor decks get one thriving land (first color) and split basics between colors.
--deck <id> "Card1" "Card2" ...Remove cards by name from a idea deck. Useful for trimming oversized pools down to the final 12 spells.
"Card 1" "Card 2" ... [--open]Generate a Scryfall search URL showing all cards (using owned printings). Add --open to launch in browser.
<group_size> [group_size ...] [--need N ...] [--by N] [--label L ...]Calculate probability of drawing specific card combinations in a Jumpstart game. Pure math — no server needed. Uses simulation (200k trials).
# Combo check: need Dark Ritual + Gwenom + a land in opening hand
jumpstart-odds.py 1 1 16 --by 8 --label "Dark Ritual" "Gwenom" "lands"
# Density check: need 5 goblins in first 20 cards from pool of 9
jumpstart-odds.py 9 --need 5 --by 20 --label "goblins"
# Flags:
# --need N [N ...] How many from each group (default: 1 each)
# --by N Cards drawn (default: 8 = opening hand + first draw)
# --deck N Deck size (default: 40)
# --label L [L ...] Optional names for each group
Hard constraints:
Soft (deviate if it gets a better card):
Curve discipline matters. With only 8 lands in a 40-card shuffled deck (~16 lands total), top-heavy curves brick. Resist the urge to jam multiple splashy high-MV cards even when they're on-theme. Stick to the curve targets — if the shape says 1 card at MV5+, don't put 3 there.
These rules apply to ALL card choices in the pack:
No wrath effects. Do not include board wipes, mass removal, "destroy all creatures", or similar mass disruption. These packs are meant to be fun and interactive — wraths are miserable in Jumpstart.
Triple-pip mana costs are OK but rare. Cards with 3 colored pips (e.g., {1}{W}{W}{W}) are allowed — ~6% of real J25 decks include one. Don't load up on them (1 per deck max), and avoid 4+ pips. Double-pip is the sweet spot.
Focus on interactivity. Prefer cards that create interesting game states over cards that shut opponents out. Prioritize creatures with combat tricks, ETB effects, auras, equipment, and targeted removal over pillowfort, stax, or prison effects. The goal is two players trading blows, not one player locked out.