Skip to main content

membership-card-png

Generate a digital BlastPass membership card as a PNG image by running the bundled card_png.py script. Use when a member self-serves a lost/stolen/damaged card replacement, or any time a card needs to be shown on screen (vs. printed). The skill takes the member details returned by the Membership MCP (get_membership) plus the new_card_serial returned by reissue_card and passes them as command-line flags to a bundled Python (matplotlib) script that renders a CR80-sized membership card to a real PNG. It only renders the card from already-retrieved values — it never looks anything up or invents data.

Source facts

Repository
microsoft/new-copilot-studio-tech-guide
Last source activity
June 20, 2026 at 21:18
Detected SKILL.md language
English
Stars
20
Forks
18

Install options

The review-first prompt is selected by default. You can switch to a direct command or download a local copy.

Review the source files

Read SKILL.md and any companion files shown by SkillsMP before deciding whether to install.

Showing SKILL.md

SKILL.md
Source instructions · Read-only preview
name
membership-card-png
description
Generate a digital BlastPass membership card as a PNG image by running the bundled card_png.py script. Use when a member self-serves a lost/stolen/damaged card replacement, or any time a card needs to be shown on screen (vs. printed). The skill takes the member details returned by the Membership MCP (get_membership) plus the new_card_serial returned by reissue_card and passes them as command-line flags to a bundled Python (matplotlib) script that renders a CR80-sized membership card to a real PNG. It only renders the card from already-retrieved values — it never looks anything up or invents data.
# BlastPass Membership Card PNG Generator This skill produces a **digital BlastPass membership card** as a shareable image by running the **bundled `card_png.py` script**. It is the self-serve companion to `membership-card-pdf`: when a member reissues a lost, stolen, or damaged card, you mint a new serial via the Membership MCP and hand the member a PNG to save to their phone **while the physical card ships**. You do **not** write any Python. You take the member record you already pulled from the **Membership MCP** (`get_membership`) and the **new serial** returned by `reissue_card`, then **run the bundled script** with those values as CLI flags. Never invent a member, tier, or serial number — every value on the card comes from the MCP results. The script only *draws* the card; it does not decide anything. ## When to use Use this skill in the **self-serve card reissue** scenario, after: 1. `get_membership(customer_id)` confirmed the member and returned their details. 2. The member verified their identity (last 4 of the console serial). 3. `reissue_card(customer_id, reason)` deactivated the old card and returned a `new_card_serial`. Use the PDF skill instead when an in-store associate needs a **printable** card. Use this PNG skill when the member needs an **on-screen / saveable** card. ## Inputs (map MCP results → CLI flags) | Script flag | Source | | --- | --- | | `--member-name` | `get_membership.member_name` | | `--member-id` | `get_membership.customer_id` | | `--tier` | `get_membership.tier` (e.g. `"BlastPass Plus Extra"`) | | `--tier-code` | `get_membership.tier_code` (`plus` \| `extra` \| `mega`) — drives accent color & perks | | `--card-serial` | **`reissue_card.new_card_serial`** (the freshly minted card; falls back to `get_membership.card_serial` if not a reissue) | | `--console-serial` | `get_membership.console_serial` | | `--member-since` | `get_membership.activation_date` | | `--valid-through` | `get_membership.term_end_date` | | `--out` | optional output path (default `blastpass_card.png`) | The `--tier-code` selects the card's accent color, header badge, and the perks line printed beneath the card: - `plus` → blue, "PLUS", 5% off + 10 BlastPoints/$1 - `extra` → purple, "PLUS EXTRA", 10% off + 20% BlastPoints bonus - `mega` → orange, "MEGA!!!", 15% off + 50% BlastPoints + day-one exclusives ## Workflow ### 1. Gather the confirmed values From `get_membership` (tier, dates, console serial, name, id) and from `reissue_card` (`new_card_serial`). Do **not** pass any value the MCP didn't return. ### 2. Run the bundled script Pass the confirmed values as flags. The script writes `blastpass_card.png` to the working directory (or `--out`) and prints a one-line confirmation: ```bash python3 card_png.py \ --member-name "Jordan Pixel" \ --member-id MEGA-BLAST-1024 \ --tier "BlastPass Plus Extra" \ --tier-code extra \ --card-serial BLAST-A1B2-1024 \ --console-serial OMEGA-7F3A-1024 \ --member-since 2026-02-26 \ --valid-through 2027-02-26 ``` `--card-serial` must be the **new** serial from `reissue_card` — never the old (now-deactivated) one. ### 3. Hand back the image Tell the member their new digital card is ready (`blastpass_card.png`), read back the **new card serial** and tier so they can confirm it, and remind them the old card is now deactivated and the physical replacement ships in ~7 days. ## Notes - The bundled script is `card_png.py`, validated against the four mock members in the Membership MCP. It depends only on `matplotlib` (available in the runtime). - The card serial shown is the **new** one from `reissue_card`; the old serial is already deactivated server-side, so it must never appear on the card. - The barcode is decorative (deterministic from the card serial) — it is not a real scannable symbology. - All data is mock; the card is for demo purposes only.
View on GitHub