[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M69B5V0891MZX3575Z1CBH7B":3,"skill-same:01M69B5V0891MZX3575Z1CBH7B":57},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":16,"categories":17,"keywords":23,"publishedAt":28,"linkOnly":29,"markdownContent":30,"markdownBody":31,"frontMatter":32,"refName":33,"commitSha":34,"skillDirectory":35,"forksCount":36,"repositoryHtmlUrl":37,"repositoryHomepageUrl":38,"ownerHtmlUrl":39,"ownerBlogUrl":40,"ownerDescription":41,"updatedAt":42,"install":43,"resources":56},"01M69B5V0891MZX3575Z1CBH7B","slip-pdf-generator",null,"Generate a printable BlastBox return \u002F RMA \u002F exchange slip as a PDF for the associate to hand to the customer. Use at the end of a return, warranty swap, membership cancellation, or upgrade once all amounts are final. The skill runs a bundled Python script that renders the confirmed slip values into a real PDF file.","microsoft\u002Fnew-copilot-studio-tech-guide","microsoft","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F6154722?v=4","01M698VYDXZ6JW5WH3CRV650R8","Microsoft","01M69B4WAHGNC7KVW5MVXCGRYK",21,"MIT","https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Fnew-copilot-studio-tech-guide\u002Fblob\u002Fmain\u002Fsample\u002Fsolution\u002Fsrc\u002FBlastBoxAgents\u002Fbotcomponents\u002Fcra24a45_skill_md_d925ad573675\u002Ffiledata\u002FSKILL.md",[18],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000002","文档处理","SCENARIO","使用场景",[24,25,26,27],"PDF","slip pdf generator","python","customer","2026-11-10 10:12:30",false,"---\nname: slip-pdf-generator\ndescription: Generate a printable BlastBox return \u002F RMA \u002F exchange slip as a PDF for the associate to hand to the customer. Use at the end of a return, warranty swap, membership cancellation, or upgrade once all amounts are final. The skill runs a bundled Python script that renders the confirmed slip values into a real PDF file.\n---\n\n# Return \u002F RMA Slip PDF Generator\n\nThis skill produces the **printable slip** that closes out a transaction at the\nreturns desk. You collect the final, already-confirmed values, then **run the\nbundled `slip_pdf.py` script** to render the slip to a **PDF** using `reportlab`.\nDo not hand-draw the PDF, write your own rendering code, or invent amounts — every\nvalue comes from earlier steps (Policy Agent ruling, Membership MCP, Warehouse MCP,\nand the `prorated-refund-calculator` skill).\n\n## When to use\n\nUse this skill **last**, after every amount is final:\n\n- the eligibility \u002F warranty ruling is decided (Store Policy Agent),\n- any membership refund is computed (`prorated-refund-calculator`),\n- any upgrade settlement \u002F net-due is computed (`prorated-refund-calculator`),\n- the customer has agreed to the outcome.\n\nDo **not** use it to *decide* anything — it only renders the agreed result.\n\n## Slip types\n\nSet `slip_type` to the right label:\n\n- `WARRANTY SWAP` — defective item replaced under warranty.\n- `RETURN \u002F REFUND` — item returned for a refund.\n- `EXCHANGE \u002F UPGRADE` — item swapped for a different model with a price difference.\n- `MEMBERSHIP CANCELLATION` — BlastPass cancelled (often combined with the above).\n\n## Workflow\n\n### 1. Assemble the confirmed values\n\nBuild a JSON object with the final values. Every field is optional except those\nthat apply to this transaction. Keep amounts formatted to 2 decimals with a `$`\nprefix.\n\n| Field | Meaning |\n| --- | --- |\n| `slip_type` | one of the labels above |\n| `rma_ref` | RMA \u002F reference number |\n| `date` | `YYYY-MM-DD` |\n| `store` \u002F `associate` | store name\u002Fnumber and associate\u002Fdesk |\n| `customer_name` | customer name |\n| `member_id` \u002F `member_tier` | BlastPass id and tier |\n| `items` | list of `[item, sku, disposition, amount]` rows |\n| `settlement` | list of `[label, amount]` rows (upgrade difference, refund applied as credit, etc.) |\n| `net_label` \u002F `net_amount` | e.g. `NET DUE FROM CUSTOMER` \u002F `$23.34`, or `REFUND TO CUSTOMER` \u002F `$76.66` |\n| `notes` | free-text notes |\n\n### 2. Run the bundled script\n\nPass the JSON to `slip_pdf.py`:\n\n```bash\npython3 slip_pdf.py --slip-json '\u003Cjson>' --output blastbox_slip.pdf\n```\n\nFor the upgrade-settlement example (defective base console → MEGA edition, with a\nBlastPass refund applied as store credit):\n\n```bash\npython3 slip_pdf.py --output blastbox_slip.pdf --slip-json '{\n  \"slip_type\": \"EXCHANGE \u002F UPGRADE\",\n  \"rma_ref\": \"RMA-OMEGA-1024\",\n  \"date\": \"2026-06-07\",\n  \"store\": \"BlastBox #214 - Seattle\",\n  \"associate\": \"Associate Desk\",\n  \"customer_name\": \"Jordan Pixel\",\n  \"member_id\": \"MEGA-BLAST-1024\",\n  \"member_tier\": \"BlastPass Plus Extra\",\n  \"items\": [\n    [\"BlastBox Omega (defective)\", \"SKU-OMEGA\", \"Warranty credit\", \"$399.99\"],\n    [\"BlastBox Omega MEGA Edition\", \"SKU-OMEGA-MEGA\", \"Upgrade (new)\", \"$499.99\"]\n  ],\n  \"settlement\": [\n    [\"Upgrade difference ($499.99 - $399.99)\", \"$100.00\"],\n    [\"BlastPass Plus Extra refund applied as store credit\", \"-$76.66\"]\n  ],\n  \"net_label\": \"NET DUE FROM CUSTOMER\",\n  \"net_amount\": \"$23.34\",\n  \"notes\": \"Manufacturing defect confirmed within 30 days - no restocking fee. BlastPass Plus Extra (MEGA-BLAST-1024) cancelled; 8 unused months prorated.\"\n}'\n```\n\nThe script writes the PDF and prints `WROTE blastbox_slip.pdf`. If the JSON is\nlong, you may write it to a file and pass `--slip-file slip.json` instead.\n\n### 3. Report\n\n- Confirm the PDF was written and give its filename.\n- Restate the **net amount** (due or refunded) and the slip type.\n- Offer to email or reprint the slip if needed.\n\n## Notes\n\n- The script uses `reportlab` (the available PDF library). No network calls.\n- The layout fits a single page for a normal transaction.\n- Pass plain text in the values; the script escapes `&` for you.\n","# Return \u002F RMA Slip PDF Generator\n\nThis skill produces the **printable slip** that closes out a transaction at the\nreturns desk. You collect the final, already-confirmed values, then **run the\nbundled `slip_pdf.py` script** to render the slip to a **PDF** using `reportlab`.\nDo not hand-draw the PDF, write your own rendering code, or invent amounts — every\nvalue comes from earlier steps (Policy Agent ruling, Membership MCP, Warehouse MCP,\nand the `prorated-refund-calculator` skill).\n\n## When to use\n\nUse this skill **last**, after every amount is final:\n\n- the eligibility \u002F warranty ruling is decided (Store Policy Agent),\n- any membership refund is computed (`prorated-refund-calculator`),\n- any upgrade settlement \u002F net-due is computed (`prorated-refund-calculator`),\n- the customer has agreed to the outcome.\n\nDo **not** use it to *decide* anything — it only renders the agreed result.\n\n## Slip types\n\nSet `slip_type` to the right label:\n\n- `WARRANTY SWAP` — defective item replaced under warranty.\n- `RETURN \u002F REFUND` — item returned for a refund.\n- `EXCHANGE \u002F UPGRADE` — item swapped for a different model with a price difference.\n- `MEMBERSHIP CANCELLATION` — BlastPass cancelled (often combined with the above).\n\n## Workflow\n\n### 1. Assemble the confirmed values\n\nBuild a JSON object with the final values. Every field is optional except those\nthat apply to this transaction. Keep amounts formatted to 2 decimals with a `$`\nprefix.\n\n| Field | Meaning |\n| --- | --- |\n| `slip_type` | one of the labels above |\n| `rma_ref` | RMA \u002F reference number |\n| `date` | `YYYY-MM-DD` |\n| `store` \u002F `associate` | store name\u002Fnumber and associate\u002Fdesk |\n| `customer_name` | customer name |\n| `member_id` \u002F `member_tier` | BlastPass id and tier |\n| `items` | list of `[item, sku, disposition, amount]` rows |\n| `settlement` | list of `[label, amount]` rows (upgrade difference, refund applied as credit, etc.) |\n| `net_label` \u002F `net_amount` | e.g. `NET DUE FROM CUSTOMER` \u002F `$23.34`, or `REFUND TO CUSTOMER` \u002F `$76.66` |\n| `notes` | free-text notes |\n\n### 2. Run the bundled script\n\nPass the JSON to `slip_pdf.py`:\n\n```bash\npython3 slip_pdf.py --slip-json '\u003Cjson>' --output blastbox_slip.pdf\n```\n\nFor the upgrade-settlement example (defective base console → MEGA edition, with a\nBlastPass refund applied as store credit):\n\n```bash\npython3 slip_pdf.py --output blastbox_slip.pdf --slip-json '{\n  \"slip_type\": \"EXCHANGE \u002F UPGRADE\",\n  \"rma_ref\": \"RMA-OMEGA-1024\",\n  \"date\": \"2026-06-07\",\n  \"store\": \"BlastBox #214 - Seattle\",\n  \"associate\": \"Associate Desk\",\n  \"customer_name\": \"Jordan Pixel\",\n  \"member_id\": \"MEGA-BLAST-1024\",\n  \"member_tier\": \"BlastPass Plus Extra\",\n  \"items\": [\n    [\"BlastBox Omega (defective)\", \"SKU-OMEGA\", \"Warranty credit\", \"$399.99\"],\n    [\"BlastBox Omega MEGA Edition\", \"SKU-OMEGA-MEGA\", \"Upgrade (new)\", \"$499.99\"]\n  ],\n  \"settlement\": [\n    [\"Upgrade difference ($499.99 - $399.99)\", \"$100.00\"],\n    [\"BlastPass Plus Extra refund applied as store credit\", \"-$76.66\"]\n  ],\n  \"net_label\": \"NET DUE FROM CUSTOMER\",\n  \"net_amount\": \"$23.34\",\n  \"notes\": \"Manufacturing defect confirmed within 30 days - no restocking fee. BlastPass Plus Extra (MEGA-BLAST-1024) cancelled; 8 unused months prorated.\"\n}'\n```\n\nThe script writes the PDF and prints `WROTE blastbox_slip.pdf`. If the JSON is\nlong, you may write it to a file and pass `--slip-file slip.json` instead.\n\n### 3. Report\n\n- Confirm the PDF was written and give its filename.\n- Restate the **net amount** (due or refunded) and the slip type.\n- Offer to email or reprint the slip if needed.\n\n## Notes\n\n- The script uses `reportlab` (the available PDF library). No network calls.\n- The layout fits a single page for a normal transaction.\n- Pass plain text in the values; the script escapes `&` for you.\n",{"name":5,"description":7},"main","a2c7726117cccf8b8e09a45674a5b75266117f03","sample\u002Fsolution\u002Fsrc\u002FBlastBoxAgents\u002Fbotcomponents\u002Fcra24a45_skill_md_d925ad573675\u002Ffiledata",18,"https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Fnew-copilot-studio-tech-guide","https:\u002F\u002Fmicrosoft.github.io\u002Fnew-copilot-studio-tech-guide\u002F","https:\u002F\u002Fgithub.com\u002Fmicrosoft","https:\u002F\u002Fopensource.microsoft.com","Open source projects and samples from Microsoft","2026-11-03 16:16:31",{"source":8,"skillName":5,"commands":44,"prompt":54,"zipAvailable":55},[45,48,51],{"tool":46,"command":47},"npx","npx skills add microsoft\u002Fnew-copilot-studio-tech-guide --skill slip-pdf-generator",{"tool":49,"command":50},"bunx","bunx skills add microsoft\u002Fnew-copilot-studio-tech-guide --skill slip-pdf-generator",{"tool":52,"command":53},"pnpm","pnpm dlx skills add microsoft\u002Fnew-copilot-studio-tech-guide --skill slip-pdf-generator","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Fnew-copilot-studio-tech-guide\u002Fblob\u002Fmain\u002Fsample\u002Fsolution\u002Fsrc\u002FBlastBoxAgents\u002Fbotcomponents\u002Fcra24a45_skill_md_d925ad573675\u002Ffiledata\u002FSKILL.md",true,[],[58,67,80,93,100,106],{"skillNo":59,"name":60,"nameZh":6,"description":61,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":62,"categories":63,"keywords":64,"publishedAt":28},"01M69B5SK7S95EJDCDVEH5CR5A","points-reconciliation","Reconcile a customer's BlastPoints loyalty balance after a complex visit (purchases, returns, promo multipliers, expiry) and convert the net balance to store credit. Use when an associate asks about a member's points, or after a return that should claw back previously earned points. The skill runs a bundled Python script that applies the base earn rate, promo multipliers, tier bonus, clawbacks, and expiry, then prints a points ledger and the redeemable store-credit value.","https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Fnew-copilot-studio-tech-guide\u002Fblob\u002Fmain\u002Fsample\u002Fsolution\u002Fsrc\u002FBlastBoxAgents\u002Fbotcomponents\u002Fcra24a45_skill_md_4e6ebf925ae8\u002Ffiledata\u002FSKILL.md",[],[65,66,27,26],"points reconciliation","claw",{"skillNo":68,"name":69,"nameZh":6,"description":70,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":71,"categories":72,"keywords":76,"publishedAt":28},"01M69B5R4AKKQ3E2Q7J67VQF9W","prorated-refund-calculator","Calculate the exact prorated refund when a customer cancels a BlastPass membership, and the net settlement when a defective unit is traded up to a pricier model. Use after the Store Policy Agent confirms the refund rule and the Membership MCP has returned the membership details. The skill runs a bundled Python script so the arithmetic is exact.","https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Fnew-copilot-studio-tech-guide\u002Fblob\u002Fmain\u002Fsample\u002Fsolution\u002Fsrc\u002FBlastBoxAgents\u002Fbotcomponents\u002Fcra24a45_skill_md_30aa9a7b2b7c\u002Ffiledata\u002FSKILL.md",[73],{"categoryNo":74,"categoryName":75,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000023","Skill与智能体开发",[77,27,78,26,79],"prorated refund calculator","policy","MCP",{"skillNo":81,"name":82,"nameZh":6,"description":83,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":84,"categories":85,"keywords":90,"publishedAt":28},"01M69B5NT2G4A8E8BP7Q04APSC","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\u002Fstolen\u002Fdamaged 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.","https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Fnew-copilot-studio-tech-guide\u002Fblob\u002Fmain\u002Fsample\u002Fsolution\u002Fsrc\u002FBlastBoxAgents\u002Fbotcomponents\u002FDefault_draft_IsBewO.file.SKILL.md\u002Ffiledata\u002FSKILL.md",[86,89],{"categoryNo":87,"categoryName":88,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000016","图像与多媒体",{"categoryNo":74,"categoryName":75,"taxonomyType":21,"taxonomyTypeDesc":22},[91,26,92,79],"membership card png","image",{"skillNo":94,"name":82,"nameZh":6,"description":83,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":95,"categories":96,"keywords":99,"publishedAt":28},"01M69B5M5R4NDD56YXG27NMA2J","https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Fnew-copilot-studio-tech-guide\u002Fblob\u002Fmain\u002Fsample\u002Farchive\u002Fstore-solution\u002Fsrc\u002Fbotcomponents\u002FDefault_draft_IsBewO.file.SKILL.md\u002Ffiledata\u002FSKILL.md",[97,98],{"categoryNo":87,"categoryName":88,"taxonomyType":21,"taxonomyTypeDesc":22},{"categoryNo":74,"categoryName":75,"taxonomyType":21,"taxonomyTypeDesc":22},[91,26,92,79],{"skillNo":101,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":102,"categories":103,"keywords":105,"publishedAt":28},"01M69B5JA3J0EZCP7VJHXX6F4M","https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Fnew-copilot-studio-tech-guide\u002Fblob\u002Fmain\u002Fsample\u002Farchive\u002Fstore-solution\u002Fskills\u002Fslip-pdf-generator\u002FSKILL.md",[104],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},[25,24,27,26],{"skillNo":107,"name":108,"nameZh":6,"description":109,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":110,"categories":111,"keywords":118,"publishedAt":28},"01M69B5G3RM8NAVK0MK9YHXQHX","sales-analysis","Turn the RAW weekly sales rows and catalog facts from the Sales & Performance MCP into merchandising analytics by running the bundled sales_analysis.py script. Use first in an end-of-quarter markdown review, when a manager wants top sellers and slow-moving \u002F dead stock over a period. The MCP returns raw data only, so the script derives velocity, weeks-of-cover, and margin, then prints the top sellers and slow movers as structured JSON. It renders NO charts (the merch-report-html skill owns all visuals) and does NOT decide discounts (hand the slow movers to markdown-optimizer).","https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Fnew-copilot-studio-tech-guide\u002Fblob\u002Fmain\u002Fsample\u002Farchive\u002Fstore-solution\u002Fskills\u002Fsales-analysis\u002FSKILL.md",[112,113],{"categoryNo":74,"categoryName":75,"taxonomyType":21,"taxonomyTypeDesc":22},{"categoryNo":114,"categoryName":115,"taxonomyType":116,"taxonomyTypeDesc":117},"01JBSEEDCAT000000000000033","数据分析师","PROFESSION","适用职业",[119,120,121,122,79,123],"sales analysis","review","performance","analytics","visuals"]