Skill v1.0.0
currentAutomated scan100/100version: "1.0.0" name: rbx-mtx-gamepasses description: > Gamepass design plus everything code-side — benefit wiring, ownership checks, shop surface — with the dashboard creation step handed off as a ready-to-paste Cowork prompt. Use when the user wants a gamepass ("make a 2x coins pass", "add VIP"), asks what passes their game should sell, or has pass ids to wire in. Do not use for consumables — load rbx-mtx-devproducts — or for the ProcessReceipt pipeline — load rbx-mtx-receipts instead. class: HANDOFF
rbx-mtx-gamepasses
Triggers
A pass is the right product when the benefit is permanent and per-player (2x currency, VIP area, auto-collect, cosmetic aura). Repeatable or stackable → rbx-mtx-devproducts. Pricing and which passes a genre supports: rbx-mtx-shop-strategy, rbx-mtx-pricing.
Do first (all of it, before any handoff)
- Benefit wiring, server-side —
MarketplaceService:UserOwnsGamePassAsync(pcall,
cached per player per session, re-checked on PromptGamePassPurchaseFinished), benefit applied in one server module — never trust a client claim of ownership (rbx-security law).
- Prompt surface — shop card (
rbx-ui-shop) and/or contextual prompt at the moment the
benefit is felt (locked door, full backpack). PromptGamePassPurchase on click.
- CONFIG placeholder —
GAMEPASS_2X_COINS = 0 -- TODO: real id, surfaced per
luau-contract.md rule 4.
- Purchase celebration wired (
rbx-juice-celebrations) for the finished-purchase event.
The prompt
Fill cowork-handoff-template.md with: experience name + universe id, the pass table (name, price from the strategy skill, description copy, icon file path if rbx-marketing-icon produced one), dashboard path (Creations → experience → Monetization → Passes → Create), and the REPORT BACK block asking for each pass's numeric id.
Verify & clear
When ids come back: pcall(MarketplaceService:GetProductInfo(id, Enum.InfoType.GamePass)) — name must match; paste ids into CONFIG; prompt-purchase once in Studio to confirm the wiring end-to-end. Then clear the manual steps pending: entry in the game's projects.md block and record name=id under the game's products line (NEVER transferred to other games — see MEMORY-PROTOCOL.md).