Card packs that feel like an event: six rarity tiers, holo foil and fair odds
One prompt and a skill added card packs to our pixel sushi bar: 28 sushi cards from Common to Ultimate, each tier with one more effect, a reveal that builds to the best card, shown odds, pity and no wasted duplicates. Part 2. Open a pack.

What we asked“Add card packs to Neta. Packs cost coins and give ingredient cards (fish and other toppings) in six rarity tiers from Common to Ultimate, and each new card adds a new nigiri to the menu that customers can order. Opening a pack should be the most exciting moment in the game.”
What happened
- Loaded the card-packs skill and read the whole game from part 1
- Wrote one card table that both the game and the art script read: 28 nigiri, from tamago to wagyu
- Wrote the odds, pity and duplicate rules as plain code and opened 100,000 packs with a fixed seed
- Ran the shop with a simulated player who buys packs
- Built the pack screen: tear, rise, flip, glow before rare cards, summary, book and odds
- Drove real pack openings of every tier in a browser, frame by frame, at 720 px and on phones
In part 1 we got a pixel sushi bar that runs itself, with three fixed nigiri. Now the menu grows through card packs. Every card is a sushi topping, and a new card puts a new nigiri on the menu that customers order right away. We asked for one thing above all: opening a pack should be the best moment in the game.

Open a pack
The first pack is free: click the pack button at the bottom, then drag across the top of the pack or just tap. After that a pack costs coins. Click to turn on sound. Open full screen
1. Each tier adds one thing
Marvel Snap upgrades a card in steps you can see: grey and flat, then green with the art breaking the frame, then blue and 3D, purple and animated, orange with a shiny logo, red with an animated border (Marvel Snap Zone). Our own holo-card game uses the same idea. It started from Holo Card Studio, EverettFish's open-source skill that turns one artwork into a layered 3D foil card with a laser rainbow, sparkle and a gold edge, and later grew its own six rarity tiers, each adding one layer: none, depth, foil, motion, light, spectacle. The skill gives Claude that ladder, and the rule that a lower tier never borrows a higher tier's effect:
| Tier | Adds |
|---|---|
| Common (grey) | a flat card |
| Uncommon (green) | depth and a drop shadow |
| Rare (blue) | rainbow foil and a sea-wave background |
| Epic (purple) | moving art that breaks out of the frame, a night sky |
| Legendary (gold) | glare under the pointer and a glow behind the card |
| Ultimate (red) | an aura around the sushi, an animated border, orbiting sparkles |
Here is the reveal of each tier, from Common to Ultimate. You can tell them apart by the frame alone, and colour-blind players get a corner gem and one to six pips:

All 28 cards. Claude drew every nigiri as pixel art in code, and rarer cards get a richer background: waves for Rare, a night sky for Epic, a sunrise for Legendary and Ultimate.

2. Crisp pixels, separate shine
Holographic cards on the web are usually made the way simeydotme's pokemon-cards-css does it: the card tilts toward the pointer, and a rainbow layer and a white glare move over the art with blend modes (GitHub). On pixel art that blurs everything. The skill keeps the art and the shine apart: the art stays whole pixels, the foil moves in stepped bands, and sparkles are tiny plus shapes. Claude checked a tilted card up close before calling it done:

3. A reveal that builds
The order comes from Pokémon TCG Pocket and Hearthstone. You tear the pack (dragging, or a tap), and light leaks out of the slit in the colour of the best card inside. The five cards are sorted so the best comes last. Before a Rare or better flips, it glows its tier colour and trembles while a sound rises. Hearthstone shows the rarity colour on face-down cards in the same way (Hearthstone Wiki). Before a Legendary or Ultimate, the rest of the screen goes dark.
Players open packs a lot, so the whole thing can be skipped. The team behind TCG Pocket tuned the tear sound on real packs "since we expect users to open packs every day" (GoNintendo), and not being able to skip became its top complaint (Dexerto). In Neta a tap finishes the current card and "Reveal all" finishes the pack. Measured from tap to summary:
| Best card in the pack | Time |
|---|---|
| Rare | 5.6 s |
| Epic | 6.6 s |
| Legendary | 8.4 s |
| Ultimate | 10.9 s |
| Legendary, reduced motion | 4.4 s |
4. Fair, and shown
The odds are one tap away from the shop, the pack and the summary. They follow Hearthstone's well-tested rules (Hearthstone Wiki): the fifth card is always Rare or better, an Epic or better is guaranteed within 10 packs and a Legendary or better within 40, with the counters on screen. You can't get a second Legendary or Ultimate before you own them all, and duplicates turn into pearls, which buy any card you choose.
Claude opened 100,000 packs to check. The longest run without an Epic was 9 packs, and without a Legendary 39. A full collection takes a median of 132 packs, or 97 if you spend pearls on the missing cards. In a simulated game, a player opens a pack about every 3 minutes at the start and every 19 minutes after three hours, while income grows from about 70 to 350 coins a minute.
What it cost
One prompt, no follow-ups: 39 minutes and $8.52 of Claude Code working alone, starting from the part 1 game.
Not done yet: nothing is saved yet, so the collection resets when you reload. Duplicates give pearls but don't level cards up. The reveal runs at 60 fps with a graphics card; on a machine with only software rendering and a large screen it drops to 14–40 fps.
Next: inventing sushi
Right now each card is one fixed nigiri. In part 3 the cards become ingredients: rice, toppings, sauces and preparations that you combine into your own sushi. Some combinations are great and some are terrible, and the rules come from what sushi chefs actually do.
Add packs to your game
- Copy the skill below into
.claude/skills/card-packs/, or download it with its references. - Ask your agent: "Add card packs to my game. Make opening one the most exciting moment."
- Check its report: the measured rate of each tier, the longest drought (it must respect the guarantees), and how long a pack takes to open.
The skill that made it work
This is the skill we gave Claude Code. The full version has three reference files: the tier table, the reveal timings and the odds, pity and duplicate rules. Copy the rules below, or download it with its references.
- Cards are game items. Every card is something the game uses (an ingredient, a unit, a recipe), with its data in one table: id, name, tier, art, and what it does in the game. Packs feed the main loop: a new card unlocks or improves something within the next minute of play. A collection that sits beside the game is a side game nobody needs.
- Six tiers, one new effect each. Common (grey, flat), Uncommon (green, depth), Rare (blue, foil), Epic (purple, motion), Legendary (gold, light), Ultimate (red, spectacle). Each tier keeps everything from the tier below and adds one thing, the way Marvel Snap's card upgrades do. A lower tier never borrows a higher tier's effect. The tier must read from the border colour alone, plus a corner gem and pips for colour-blind players. See references/tiers.md.
- Crisp art, separate shine. The card art is pixel art at one scale, never blurred. Shine, glare, sparkle and glow are separate layers on top: shine through a hand-drawn foil mask (only the parts meant to be foil shine), with its colour bands stepped to whole art pixels; sparkles are 1–3 px plus-shapes from the palette, not soft dots. Cards tilt toward the pointer (at most about 14°) and spring back.
- Make each card worth looking at. A card shows a big illustration of the item (about 40–56 art px), a name in a pixel font and one line of what it does. Rarer cards get richer art: a background scene instead of a flat colour, the item breaking out of the frame at Epic and above.
- An opening sequence that builds. Tear (following the drag or a click), cards stacked face down, flip one at a time, the best card last. Before a rare-or-better card flips it glows its tier colour, longer for higher tiers; then a burst, a flash and a small screen shake that grow with the tier. End on a summary of the pack with NEW tags. See references/reveal.md for the timings.
- Always skippable. Tap to finish a card early, a "reveal all" button, and a reduced-motion setting (no shake, half the time). A pack with only commons must take under about 4 seconds to open.
- Show the odds. Per-slot odds for every tier, and the real chance per pack including guarantees, one tap away in the shop and the pack screen. Never change the odds based on what the player has done or spent.
- Guarantees and pity. Every 5-card pack has at least one Rare or better in its last slot. Visible pity counters: an Epic or better within 10 packs, a Legendary or better within 40. The first pack is free and scripted to unlock something new right away.
- No wasted pulls. No second copy of a Legendary or Ultimate until the player owns every card of that tier. Duplicates turn into a currency (and/or raise the card's level) that can buy a chosen card, worth about a quarter of that card's price. See references/fairness.md.
- Price that grows. Packs cost the game's main currency and get pricier as the player grows (`price = base × 1.07^packsBought` or tied to income), so an active player opens one every 3–5 minutes early on and every 15–30 minutes later.
- Measure it. Simulate at least 100,000 packs with a fixed seed and report the real rate of each tier per card and per pack, the longest drought for Epic and Legendary (must respect pity), how many packs a full collection takes, and how much currency duplicates give. Check the opening sequence in a real browser at 720 px wide and on a phone, for every tier (add a debug way to force a tier).
- Report the tier table, the measured rates, the time to open a pack, and what is not done.
Save it as .claude/skills/card-packs/SKILL.md in your project. Put the references folder next to it.

