[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M69BAZX368QZW0Z60C3PGVHC":3,"skill-same:01M69BAZX368QZW0Z60C3PGVHC":79},{"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":27,"linkOnly":28,"markdownContent":29,"markdownBody":30,"frontMatter":31,"refName":32,"commitSha":33,"skillDirectory":34,"forksCount":35,"repositoryHtmlUrl":36,"repositoryHomepageUrl":6,"ownerHtmlUrl":37,"ownerBlogUrl":38,"ownerDescription":39,"updatedAt":40,"install":41,"resources":54},"01M69BAZX368QZW0Z60C3PGVHC","markdown-optimizer",null,"Recommend a discount percentage and new price for each slow-moving product by running the bundled markdown_optimizer.py script, respecting pricing guardrails that come from the Store Policy Agent (never hardcode them). Use after sales-analysis-chart has identified the slow movers and after fetching the markdown guardrails via the Store Policy Agent's get_markdown_policy. The script applies the max-discount cap and margin floor, computes each new price and margin, flags items that cannot be meaningfully promoted within the floor for clearance instead, and renders a recommended-discount chart.","microsoft\u002Fnew-copilot-studio-tech-guide-kr","microsoft","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F6154722?v=4","01M698VYDXZ6JW5WH3CRV650R8","Microsoft","01M69BAPAFGG5SHJ812JZDC3AR",0,"MIT","https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Fnew-copilot-studio-tech-guide-kr\u002Fblob\u002Fmain\u002Fsample\u002Farchive\u002Fstore-solution\u002Fskills\u002Fmarkdown-optimizer\u002FSKILL.md",[18],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000002","文档处理","SCENARIO","使用场景",[24,25,26],"markdown optimizer","policy","pricing","2026-11-10 10:12:30",false,"---\nname: markdown-optimizer\ndescription: Recommend a discount percentage and new price for each slow-moving product by running the bundled markdown_optimizer.py script, respecting pricing guardrails that come from the Store Policy Agent (never hardcode them). Use after sales-analysis-chart has identified the slow movers and after fetching the markdown guardrails via the Store Policy Agent's get_markdown_policy. The script applies the max-discount cap and margin floor, computes each new price and margin, flags items that cannot be meaningfully promoted within the floor for clearance instead, and renders a recommended-discount chart.\n---\n\n# Markdown Optimizer (BlastBox Omega)\n\nThis skill decides **how much to mark down** each slow-moving product by **running the\nbundled `markdown_optimizer.py` script**. You do **not** write any Python and you do\n**not** hardcode the pricing rules: the guardrails come from the **Store Policy Agent**\nvia `get_markdown_policy(markdown_type)` and are passed to the script as CLI flags. This\nkeeps all policy in one place (the Policy Agent owns it).\n\n## When to use\n\nAfter `sales-analysis-chart` has produced the structured `slow_movers` list, and after\nyou have fetched the guardrails from the **Store Policy Agent**. Use it whenever a\nmanager asks what to mark down and by how much within policy.\n\n## Inputs (gather these first, then pass them as flags)\n\n1. **Slow movers** - the `slow_movers` JSON from `sales-analysis-chart`: a list of\n   `{sku, name, price, cost}` (extra keys are ignored).\n2. **Guardrails** - call the **Store Policy Agent** - `get_markdown_policy(\"promo\")`. It\n   returns `max_discount_pct`, `margin_floor_pct`, and `min_useful_promo_discount_pct`\n   (e.g. `30`, `15`, `10`). Pass all three. Do **not** invent or hardcode them. For a\n   clearance pass, call `get_markdown_policy(\"clearance\")` and use `--markdown-type clearance`.\n\n## Run the bundled script\n\nFor a promo markdown, pass the slow movers and the three guardrails:\n\n```bash\npython3 markdown_optimizer.py \\\n    --markdown-type promo \\\n    --max-discount 30 --margin-floor 15 --min-useful 10 \\\n    --slow-movers '[{\"sku\":\"SKU-VR-NEBULA\",\"name\":\"Nebula VR Headset\",\"price\":199.99,\"cost\":70.00},\n                    {\"sku\":\"SKU-GALAXY-PAD\",\"name\":\"Galaxy Pad Controller\",\"price\":49.99,\"cost\":18.00}]'\n```\n\nFor a clearance pass (no promo math, every item flagged for a manager decision):\n\n```bash\npython3 markdown_optimizer.py --markdown-type clearance \\\n    --slow-movers '[{\"sku\":\"SKU-OMEGA-CORE\",\"name\":\"Omega Core Console\",\"price\":399.99,\"cost\":320.00}]'\n```\n\nThe script prints one line per item, then `RECOMMENDATIONS_JSON=\u003Cjson>`, and writes\n`markdowns.png` (a bar chart of the recommended promo discounts).\n\n## What the script does (for your report, not for you to reimplement)\n\n- **floor price** = `cost \u002F (1 - margin_floor_pct\u002F100)` - the lowest price that still\n  keeps the required gross margin.\n- **recommended discount %** = `min(max_discount_pct, floor-allowed %)`. When the cap\n  binds you get the headline discount; when the **floor** binds the new margin equals the\n  floor (`binding` says which).\n- Items whose floor-allowed discount is below `min_useful_promo_discount_pct` come back\n  with `flag_clearance: true` - they can't be meaningfully promoted, so they should be\n  cleared out via a **clearance** pass (a separate decision requiring a manager flag).\n\n## Report\n\n- Present a table: product, current price, recommended discount %, new price, new margin,\n  and whether the **margin floor** or **max-discount cap** was binding.\n- Call out any item **flagged for clearance**, noting clearance is a separate manager\n  decision (`get_markdown_policy(\"clearance\")`).\n- Hand the finalized promo set (`RECOMMENDATIONS_JSON`) to **merch-report-pdf** for the\n  shareable report.\n\n## Notes\n\n- The bundled script is `markdown_optimizer.py`; it depends only on `matplotlib`\n  (available in the runtime) and prints recommendations even if the chart is skipped.\n- The guardrail numbers MUST come from the Store Policy Agent. If they are missing, fetch\n  them before running - do not guess.\n- All data is mock; recommendations are for demo purposes only.\n","# Markdown Optimizer (BlastBox Omega)\n\nThis skill decides **how much to mark down** each slow-moving product by **running the\nbundled `markdown_optimizer.py` script**. You do **not** write any Python and you do\n**not** hardcode the pricing rules: the guardrails come from the **Store Policy Agent**\nvia `get_markdown_policy(markdown_type)` and are passed to the script as CLI flags. This\nkeeps all policy in one place (the Policy Agent owns it).\n\n## When to use\n\nAfter `sales-analysis-chart` has produced the structured `slow_movers` list, and after\nyou have fetched the guardrails from the **Store Policy Agent**. Use it whenever a\nmanager asks what to mark down and by how much within policy.\n\n## Inputs (gather these first, then pass them as flags)\n\n1. **Slow movers** - the `slow_movers` JSON from `sales-analysis-chart`: a list of\n   `{sku, name, price, cost}` (extra keys are ignored).\n2. **Guardrails** - call the **Store Policy Agent** - `get_markdown_policy(\"promo\")`. It\n   returns `max_discount_pct`, `margin_floor_pct`, and `min_useful_promo_discount_pct`\n   (e.g. `30`, `15`, `10`). Pass all three. Do **not** invent or hardcode them. For a\n   clearance pass, call `get_markdown_policy(\"clearance\")` and use `--markdown-type clearance`.\n\n## Run the bundled script\n\nFor a promo markdown, pass the slow movers and the three guardrails:\n\n```bash\npython3 markdown_optimizer.py \\\n    --markdown-type promo \\\n    --max-discount 30 --margin-floor 15 --min-useful 10 \\\n    --slow-movers '[{\"sku\":\"SKU-VR-NEBULA\",\"name\":\"Nebula VR Headset\",\"price\":199.99,\"cost\":70.00},\n                    {\"sku\":\"SKU-GALAXY-PAD\",\"name\":\"Galaxy Pad Controller\",\"price\":49.99,\"cost\":18.00}]'\n```\n\nFor a clearance pass (no promo math, every item flagged for a manager decision):\n\n```bash\npython3 markdown_optimizer.py --markdown-type clearance \\\n    --slow-movers '[{\"sku\":\"SKU-OMEGA-CORE\",\"name\":\"Omega Core Console\",\"price\":399.99,\"cost\":320.00}]'\n```\n\nThe script prints one line per item, then `RECOMMENDATIONS_JSON=\u003Cjson>`, and writes\n`markdowns.png` (a bar chart of the recommended promo discounts).\n\n## What the script does (for your report, not for you to reimplement)\n\n- **floor price** = `cost \u002F (1 - margin_floor_pct\u002F100)` - the lowest price that still\n  keeps the required gross margin.\n- **recommended discount %** = `min(max_discount_pct, floor-allowed %)`. When the cap\n  binds you get the headline discount; when the **floor** binds the new margin equals the\n  floor (`binding` says which).\n- Items whose floor-allowed discount is below `min_useful_promo_discount_pct` come back\n  with `flag_clearance: true` - they can't be meaningfully promoted, so they should be\n  cleared out via a **clearance** pass (a separate decision requiring a manager flag).\n\n## Report\n\n- Present a table: product, current price, recommended discount %, new price, new margin,\n  and whether the **margin floor** or **max-discount cap** was binding.\n- Call out any item **flagged for clearance**, noting clearance is a separate manager\n  decision (`get_markdown_policy(\"clearance\")`).\n- Hand the finalized promo set (`RECOMMENDATIONS_JSON`) to **merch-report-pdf** for the\n  shareable report.\n\n## Notes\n\n- The bundled script is `markdown_optimizer.py`; it depends only on `matplotlib`\n  (available in the runtime) and prints recommendations even if the chart is skipped.\n- The guardrail numbers MUST come from the Store Policy Agent. If they are missing, fetch\n  them before running - do not guess.\n- All data is mock; recommendations are for demo purposes only.\n",{"name":5,"description":7},"main","82f9c0b1b1bacfd0fdabdc9cc717bc8849d185ec","sample\u002Farchive\u002Fstore-solution\u002Fskills\u002Fmarkdown-optimizer",1,"https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Fnew-copilot-studio-tech-guide-kr","https:\u002F\u002Fgithub.com\u002Fmicrosoft","https:\u002F\u002Fopensource.microsoft.com","Open source projects and samples from Microsoft","2026-11-14 08:05:55",{"source":8,"skillName":5,"commands":42,"prompt":52,"zipAvailable":53},[43,46,49],{"tool":44,"command":45},"npx","npx skills add microsoft\u002Fnew-copilot-studio-tech-guide-kr --skill markdown-optimizer",{"tool":47,"command":48},"bunx","bunx skills add microsoft\u002Fnew-copilot-studio-tech-guide-kr --skill markdown-optimizer",{"tool":50,"command":51},"pnpm","pnpm dlx skills add microsoft\u002Fnew-copilot-studio-tech-guide-kr --skill markdown-optimizer","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Fnew-copilot-studio-tech-guide-kr\u002Fblob\u002Fmain\u002Fsample\u002Farchive\u002Fstore-solution\u002Fskills\u002Fmarkdown-optimizer\u002FSKILL.md",true,[55,61,65,69,75],{"path":56,"resourceType":57,"resourceTypeDesc":58,"sizeBytes":59,"sourceHtmlUrl":60},"clickable-references.md","REFERENCE","参考文档",2135,"https:\u002F\u002Fgithub.com\u002Fapache\u002Fmagpie\u002Fblob\u002Fmain\u002Fplugins\u002Fmagpie-issue\u002Fskills\u002Ffix-workflow\u002Fclickable-references.md",{"path":62,"resourceType":57,"resourceTypeDesc":58,"sizeBytes":63,"sourceHtmlUrl":64},"draft-pr-procedure.md",1257,"https:\u002F\u002Fgithub.com\u002Fapache\u002Fmagpie\u002Fblob\u002Fmain\u002Fplugins\u002Fmagpie-issue\u002Fskills\u002Ffix-workflow\u002Fdraft-pr-procedure.md",{"path":66,"resourceType":57,"resourceTypeDesc":58,"sizeBytes":67,"sourceHtmlUrl":68},"golden-rule-details.md",3056,"https:\u002F\u002Fgithub.com\u002Fapache\u002Fmagpie\u002Fblob\u002Fmain\u002Fplugins\u002Fmagpie-issue\u002Fskills\u002Ffix-workflow\u002Fgolden-rule-details.md",{"path":70,"resourceType":71,"resourceTypeDesc":72,"sizeBytes":73,"sourceHtmlUrl":74},"markdown_optimizer.py","SCRIPT","脚本",6281,"https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Fnew-copilot-studio-tech-guide-kr\u002Fblob\u002Fmain\u002Fsample\u002Farchive\u002Fstore-solution\u002Fskills\u002Fmarkdown-optimizer\u002Fmarkdown_optimizer.py",{"path":76,"resourceType":57,"resourceTypeDesc":58,"sizeBytes":77,"sourceHtmlUrl":78},"pre-pr-adversarial-review.md",5078,"https:\u002F\u002Fgithub.com\u002Fapache\u002Fmagpie\u002Fblob\u002Fmain\u002Fplugins\u002Fmagpie-issue\u002Fskills\u002Ffix-workflow\u002Fpre-pr-adversarial-review.md",[80,93,102,114,127,134],{"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":87,"publishedAt":27},"01M69BBNKA733YFENEN2JV629D","slip-pdf-generator","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.","https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Fnew-copilot-studio-tech-guide-kr\u002Fblob\u002Fmain\u002Fsample\u002Fsolution\u002Fsrc\u002FBlastBoxAgents\u002Fbotcomponents\u002Fcra24a45_skill_md_d925ad573675\u002Ffiledata\u002FSKILL.md",[86],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},[88,89,90,91,92],"slip pdf generator","PDF","python","customer","generate",{"skillNo":94,"name":95,"nameZh":6,"description":96,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":97,"categories":98,"keywords":99,"publishedAt":27},"01M69BBKZ5BCFW611KF1WG5RQQ","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-kr\u002Fblob\u002Fmain\u002Fsample\u002Fsolution\u002Fsrc\u002FBlastBoxAgents\u002Fbotcomponents\u002Fcra24a45_skill_md_4e6ebf925ae8\u002Ffiledata\u002FSKILL.md",[],[100,90,91,101],"points reconciliation","claw",{"skillNo":103,"name":104,"nameZh":6,"description":105,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":106,"categories":107,"keywords":111,"publishedAt":27},"01M69BBJ8SMZ4CY7TA6R7TTEBY","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-kr\u002Fblob\u002Fmain\u002Fsample\u002Fsolution\u002Fsrc\u002FBlastBoxAgents\u002Fbotcomponents\u002Fcra24a45_skill_md_30aa9a7b2b7c\u002Ffiledata\u002FSKILL.md",[108],{"categoryNo":109,"categoryName":110,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000023","Skill与智能体开发",[112,25,91,90,113],"prorated refund calculator","MCP",{"skillNo":115,"name":116,"nameZh":6,"description":117,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":118,"categories":119,"keywords":124,"publishedAt":27},"01M69BBGFGN30E47RJSP2GGDZQ","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-kr\u002Fblob\u002Fmain\u002Fsample\u002Fsolution\u002Fsrc\u002FBlastBoxAgents\u002Fbotcomponents\u002FDefault_draft_IsBewO.file.SKILL.md\u002Ffiledata\u002FSKILL.md",[120,123],{"categoryNo":121,"categoryName":122,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000016","图像与多媒体",{"categoryNo":109,"categoryName":110,"taxonomyType":21,"taxonomyTypeDesc":22},[125,92,90,126,113],"membership card png","image",{"skillNo":128,"name":116,"nameZh":6,"description":117,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":129,"categories":130,"keywords":133,"publishedAt":27},"01M69BBEKS0MQ7NGABMZJH80YW","https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Fnew-copilot-studio-tech-guide-kr\u002Fblob\u002Fmain\u002Fsample\u002Farchive\u002Fstore-solution\u002Fsrc\u002Fbotcomponents\u002FDefault_draft_IsBewO.file.SKILL.md\u002Ffiledata\u002FSKILL.md",[131,132],{"categoryNo":121,"categoryName":122,"taxonomyType":21,"taxonomyTypeDesc":22},{"categoryNo":109,"categoryName":110,"taxonomyType":21,"taxonomyTypeDesc":22},[125,92,90,126,113],{"skillNo":135,"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":136,"categories":137,"keywords":139,"publishedAt":27},"01M69BBCTR19H23S9D12T2K68E","https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Fnew-copilot-studio-tech-guide-kr\u002Fblob\u002Fmain\u002Fsample\u002Farchive\u002Fstore-solution\u002Fskills\u002Fslip-pdf-generator\u002FSKILL.md",[138],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},[88,89,92,91,90]]