A game-dev skill, sanitized
Building a VMS Live! round’s wardrobe
This is a Claude Code skill I wrote for Episode: Reality Stars, the one tool on this site built for a game that is already live. A VMS Live! prompt is one themed round, and its wardrobe is 144 items in four groups. The helper script does everything that can be checked; numbered contact sheets and parallel sub-agents on a cheaper model do the one thing that cannot, deciding what looks right. The rules in the bucket table are the part I care about most: they are taste, written down so a tool can enforce it. Below is the skill abridged to a third of its length, with paths, identifiers and commands removed. Download it as SKILL.md.
---
name: vms-prompt-curation
description: Populate a VMS Live prompt's apparel lists (90 borrowable items across nine buckets, 3 purchasable outfits, 21 VIP color-editable items, 30 bot items) for a given theme and vibe, curating by vibe tag plus thumbnail review. Deterministic work (indexing, candidate pools, bot selection, writing and validation) goes to a helper script; curation judgment (which items look right) goes to numbered contact sheets read by parallel sub-agents on a cheaper model. Expects a prompt title and a vibe.
---
Building a VMS Live! round’s wardrobe
A sanitized, abridged copy of a Claude Code skill I wrote for Episode: Reality Stars, the game on stolenduck.com. VMS Live! is the real-time ten-player fashion battle; a prompt is one themed round ("Beach Bonfire Beauty", vibe Coastal), and this skill fills its wardrobe. The full skill is about three times this length and runs with a Python helper; file paths, asset identifiers, editor menu names and the helper's command lines are removed here. What is left is the design: what is deterministic, what is judgment, and the rules that encode taste.
The split
A prompt carries four apparel groups: 90 borrowable items (ten in each of nine buckets), 3 purchasable complete outfits, 21 VIP color-editable items (three in each of seven categories) and 30 bot items (a simulated rival's collection). Each group is a struct with ten category sub-lists, and a validator rejects any item whose category does not match its sub-list, so the helper places every pick by category automatically.
The helper does everything that can be checked: it indexes the catalog, builds ranked candidate pools, composites them into contact sheets, resolves picks to assets, writes the struct, and verifies the result. A person, or a sub-agent looking at thumbnails, does the one thing that cannot be checked: deciding which items look right for this theme.
Steps
| Step | Subject |
|---|---|
| 1 | Resolve the vibe, the asset and the scope |
| 2 | Build the apparel index |
| 3 | Curate 90 borrowable items |
| 3.5 | Backfill short buckets from the raw clothing catalog |
| 4 | Curate 3 purchasable outfits |
| 5 | Curate 21 VIP color-editable items |
| 6 | Populate 30 bot items |
| 7 | Verify and report |
The nine borrowable buckets
| Bucket | What belongs | Rule that encodes taste |
|---|---|---|
| Hair | Styles | One per base style: a decorated or baked-color variant of a style you already picked reads as a duplicate tile |
| Makeup | Complete looks only (eyes, lips, blush), never lone components | Vibe matters less than completeness; color variants are distinct, valid picks |
| Shoes | ||
| Tops | Tops only, never dresses, never top-and-bottom combos, never pure jackets | A combo renders broken in the Tops section; it belongs in Dresses |
| Bottoms | ||
| Outerwear | Every top layer: jackets, coats, blazers, cardigans, sweaters, vests, wraps, capes, kimonos | Match the theme, not the keyword "jacket": blazers for a boss look, knits for cottagecore, windbreakers for athleisure |
| Dresses | Dress-like names plus all top-and-bottom combos | |
| Accessories | Bags, glasses, hair pieces, belts, backpacks, scarves; masks and wings opt-in | At least two bags; scarves are stored as necklaces but read as accessories, so they are routed here |
| Jewelry | Necklaces, bracelets, earrings | A mix, roughly five earrings, three necklaces, two bracelets; never ten earrings |
Eligibility rules the helper enforces in every pool
- No thumbnail, never eligible. An item with no resolvable thumbnail renders blank on a station. Excluded everywhere; a verify error if found.
- Nonconforming thumbnails, never eligible. Deprecated duplicate hair styles, and makeup assets that are really a cast character's face (a cast name plus "Face" in the filename) rather than a look. Both render wrong on a station.
- Duplicate makeup looks are an error. The catalog carries byte-identical copies of the same look under different filenames (a prompt once carried four of them side by side; tapping the second copy did nothing). Identity is keyed on three signals, any one of which collapses two items: exact display name, the part-and-color signature, and the exact thumbnail sprite. True color variants stay distinct.
- Hair style-variant pairs are a warning, not an exclusion. A decorated variant shares a camel-case prefix with its base, but the heuristic is only about half precise across the catalog, so verify warns for a human to judge and the pools are left alone.
- Male items, never eligible, and the folder is not the gate. Misfiled male items have slipped into prompts before, so the helper checks the structural source (the sprite's asset name, the clothing's render body, an outfit's component clothing) instead of the folder path.
- Maternity wear is opt-in only. Excluded from every default pool unless the prompt asks for it.
- Skin-tight inner layers live in the tattoo category because of how they render, so the helper routes them to their real buckets by garment type, with a name exclusion so real tattoos, body paint and medical props never enter a pool.
The VIP wardrobe
The VIP room is a gated section whose stations show only this struct, and the VIP privilege is recoloring: tapping a VIP item opens the color picker. Three hard rules follow.
- Every VIP item must be color-editable. For clothing, a garment whose source supports more than one color; for hair, a dynamically colored style, not a baked ombre.
- VIP items are exclusive. Never also borrowable, purchasable or bot. VIP hair is actively hidden from the normal hair stations, and VIP bots dress from this struct.
- Three per category across hair, tops, bottoms, dresses, outerwear, shoes and accessories. No VIP makeup, jewelry or outfits.
Borrowable items are claimable: the most on-theme color-editable item belongs in VIP even when it is already borrowable. Picking it moves it out of its borrowable bucket, which is then backfilled to ten. VIP clothing comes from "mule" outfits built entirely of complex-color garments (about 128 supported colors each), and every generated pick must be assigned a color, because the default is white and white does not read on the white VIP mannequin. Avoid white unless white is the theme (a Black & White Ball, a bride). An existing wrapper's color is immutable, because it may be referenced elsewhere in the game; to get the same garment in a new color, clone it.
How curation runs: contact sheets and parallel sub-agents
- Candidate pools, ranked vibe matches first, then name matches on 15 to 25 theme keywords, then the rest, with color variants of one garment collapsed so the sheet shows unique items. Items already used in every other prompt are pushed to the back for cross-prompt variety, and a per-prompt seed shuffles within each rank tier.
- One numbered contact sheet per bucket. Every candidate in a cell with a bold number badge overlaid on its thumbnail, so the number binds unambiguously to the image, plus a map from number to item. The agent reads one image per bucket instead of dozens of thumbnails. That, not a small pool, is what keeps cell attribution accurate at forty candidates.
- Nine sub-agents in parallel, one per bucket, on a cheaper model. This is coarse visual matching, not deep reasoning. Each gets the title, a two-sentence description of the vibe, the bucket's rules and the sheet, and is told to:
• Favor the vibe tag, but judge visually: an item with a different tag, or none, is equally valid when the cell reads on-theme. This matters most for buckets with no tags at all (bottoms, dresses), where the silhouette is the only signal.
• Never pick near-identical garments; three similar puffer vests read as duplicates to the player.
• Output exactly ten lines,#N | what you see | short reason. - Reconcile before trusting. Each pick's number is resolved through the map, and the agent's "what you see" is compared with the mapped name. Thumbnails and catalog names sometimes diverge (a "Straight Fit Jeans" can render slim enough to read as leggings), so the name is the guardrail where a fine distinction matters, and an off-theme name is dropped for the next best cell.
- Resolve and write. Picks are matched fuzzily by name (far more reliable than raw identifiers), uniqueness is enforced across the whole prompt (a color variant of an item already used is skipped), and short buckets are reported.
Backfilling a short bucket
When existing apparel cannot fill a clothable bucket, the helper browses the much larger raw clothing catalog (about 6,000 items), the same sheet-and-agent pass picks the few that are needed, and a manifest is written for a one-time editor round-trip that generates the new apparel items and their thumbnails. The skill pauses there, the designer runs the generator, and re-invoking the skill wires the new items into place. Hair and makeup are not clothing-backed, so the fallback cannot fill them.
Purchasable outfits and bots
The three purchasable outfits are complete looks with their own full-body render and a sales pitch; one agent picks three from a vibe-matched sheet that are premium, distinct from each other, and distinct from the free borrowable pieces. The thirty bot items simulate a rival's collection, so random is fine: the helper blends vibe-tagged items with untagged items that match the theme keywords, excludes everything already used, and balances the category spread.
Verify and report
The checker validates counts, body types, category routing, duplicates, color-variant duplicates, VIP color-editability and exclusivity, the results background, and the loading-screen description length (one short phrase, sixty characters at most, because longer text runs off the screen). Every error is fixed by re-running its step; every warning goes to the designer with a read on it. The report lists each bucket's theme, the three outfits with their pitches, the VIP picks, the bot spread, and how many picks came from the vibe tag versus visual judgment. The designer then opens the prompt in the editor and eyeballs the items on the character.