[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6FDYVDSB80KXVAZ8A03EE64":3,"skill-same:01M6FDYVDSB80KXVAZ8A03EE64":50},{"skillNo":4,"name":5,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":11,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":15,"categories":16,"keywords":22,"publishedAt":23,"linkOnly":24,"markdownContent":25,"markdownBody":25,"frontMatter":26,"refName":27,"commitSha":28,"skillDirectory":29,"forksCount":30,"repositoryHtmlUrl":31,"repositoryHomepageUrl":32,"ownerHtmlUrl":33,"ownerBlogUrl":6,"ownerDescription":34,"updatedAt":35,"install":36,"resources":49},"01M6FDYVDSB80KXVAZ8A03EE64","slides",null,"ComeOnOliver\u002Fskillshub","ComeOnOliver","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F43215937?v=4","01M6E5JNFECJAAVFE0W7SMWWD2","Haoran Shu","01M6E5JNNDQS7AJZDYFQ8TPZCK",67,"MIT","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fopenai\u002Fskills\u002Fslides\u002FSKILL.md",[17],{"categoryNo":18,"categoryName":19,"taxonomyType":20,"taxonomyTypeDesc":21},"01JBSEEDCAT000000000000003","演示文稿","SCENARIO","使用场景",[5],"2026-11-10 10:12:30",false,"# Slides\n\n## Overview\n\nUse PptxGenJS for slide authoring. Do not use `python-pptx` for deck generation unless the task is inspection-only; keep editable output in JavaScript and deliver both the `.pptx` and the source `.js`.\n\nKeep work in a task-local directory. Only copy final artifacts to the requested destination after rendering and validation pass.\n\n## Bundled Resources\n\n- `assets\u002Fpptxgenjs_helpers\u002F`: Copy this folder into the deck workspace and import it locally instead of reimplementing helper logic.\n- `scripts\u002Frender_slides.py`: Rasterize a `.pptx` or `.pdf` to per-slide PNGs.\n- `scripts\u002Fslides_test.py`: Detect content that overflows the slide canvas.\n- `scripts\u002Fcreate_montage.py`: Build a contact-sheet style montage of rendered slides.\n- `scripts\u002Fdetect_font.py`: Report missing or substituted fonts as LibreOffice resolves them.\n- `scripts\u002Fensure_raster_image.py`: Convert SVG\u002FEMF\u002FHEIC\u002FPDF-like assets into PNGs for quick inspection.\n- `references\u002Fpptxgenjs-helpers.md`: Load only when you need API details or dependency notes.\n\n## Workflow\n\n1. Inspect the request and determine whether you are creating a new deck, recreating an existing deck, or editing one.\n2. Set the slide size up front. Default to 16:9 (`LAYOUT_WIDE`) unless the source material clearly uses another aspect ratio.\n3. Copy `assets\u002Fpptxgenjs_helpers\u002F` into the working directory and import the helpers from there.\n4. Build the deck in JavaScript with an explicit theme font, stable spacing, and editable PowerPoint-native elements when practical.\n5. Run the bundled scripts from this skill directory or copy the needed ones into the task workspace. Render the result with `render_slides.py`, review the PNGs, and fix layout issues before delivery.\n6. Run `slides_test.py` for overflow checks when slide edges are tight or the deck is dense.\n7. Deliver the `.pptx`, the authoring `.js`, and any generated assets that are required to rebuild the deck.\n\n## Authoring Rules\n\n- Set theme fonts explicitly. Do not rely on PowerPoint defaults if typography matters.\n- Use `autoFontSize`, `calcTextBox`, and related helpers to size text boxes; do not use PptxGenJS `fit` or `autoFit`.\n- Use bullet options, not literal `•` characters.\n- Use `imageSizingCrop` or `imageSizingContain` instead of PptxGenJS built-in image sizing.\n- Use `latexToSvgDataUri()` for equations and `codeToRuns()` for syntax-highlighted code blocks.\n- Prefer native PowerPoint charts for simple bar\u002Fline\u002Fpie\u002Fhistogram style visuals so reviewers can edit them later.\n- For charts or diagrams that PptxGenJS cannot express well, render SVG externally and place the SVG in the slide.\n- Include both `warnIfSlideHasOverlaps(slide, pptx)` and `warnIfSlideElementsOutOfBounds(slide, pptx)` in the submitted JavaScript whenever you generate or substantially edit slides.\n- Fix all unintentional overlap and out-of-bounds warnings before delivering. If an overlap is intentional, leave a short code comment near the relevant element.\n\n## Recreate Or Edit Existing Slides\n\n- Render the source deck or reference PDF first so you can compare slide geometry visually.\n- Match the original aspect ratio before rebuilding layout.\n- Preserve editability where possible: text should stay text, and simple charts should stay native charts.\n- If a reference slide uses raster artwork, use `ensure_raster_image.py` to generate debug PNGs from vector or odd image formats before placing them.\n\n## Validation Commands\n\nExamples below assume you copied the needed scripts into the working directory. If not, invoke the same script paths relative to this skill folder.\n\n```bash\n# Render slides to PNGs for review\npython3 scripts\u002Frender_slides.py deck.pptx --output_dir rendered\n\n# Build a montage for quick scanning\npython3 scripts\u002Fcreate_montage.py --input_dir rendered --output_file montage.png\n\n# Check for overflow beyond the original slide canvas\npython3 scripts\u002Fslides_test.py deck.pptx\n\n# Detect missing or substituted fonts\npython3 scripts\u002Fdetect_font.py deck.pptx --json\n```\n\nLoad `references\u002Fpptxgenjs-helpers.md` if you need the helper API summary or dependency details.\n",{},"main","def8531e65114c0fca8fb8551c1871ee0eed705c","skills\u002Fopenai\u002Fskills\u002Fslides",24,"https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub","https:\u002F\u002Fskillshub.wtf","https:\u002F\u002Fgithub.com\u002FComeOnOliver","AI & Blockchain Engineer\r\n","2026-06-24 22:07:19",{"source":7,"skillName":5,"commands":37,"prompt":47,"zipAvailable":48},[38,41,44],{"tool":39,"command":40},"npx","npx skills add ComeOnOliver\u002Fskillshub --skill slides",{"tool":42,"command":43},"bunx","bunx skills add ComeOnOliver\u002Fskillshub --skill slides",{"tool":45,"command":46},"pnpm","pnpm dlx skills add ComeOnOliver\u002Fskillshub --skill slides","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fopenai\u002Fskills\u002Fslides\u002FSKILL.md",true,[],[51,63,73,82,88,95],{"skillNo":52,"name":53,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":11,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":54,"categories":55,"keywords":59,"publishedAt":23},"01M6FKJN13GMG4KY57J3QD8GY5","model-hierarchy-skill","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzscole\u002Fmodel-hierarchy-skill\u002Fmodel-hierarchy-skill\u002FSKILL.md",[56],{"categoryNo":57,"categoryName":58,"taxonomyType":20,"taxonomyTypeDesc":21},"01JBSEEDCAT000000000000023","Skill与智能体开发",[60,61,62],"model","model hierarchy","model hierarchy skill",{"skillNo":64,"name":65,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":11,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":66,"categories":67,"keywords":69,"publishedAt":23},"01M6FKJJJ6GCAMR4PPPRD12M5X","zoom-mcp","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzoom\u002Fskills\u002Fzoom-mcp\u002FSKILL.md",[68],{"categoryNo":57,"categoryName":58,"taxonomyType":20,"taxonomyTypeDesc":21},[70,71,72],"MCP","zoom","zoom mcp",{"skillNo":74,"name":75,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":11,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":76,"categories":77,"keywords":78,"publishedAt":23},"01M6FKJE3KYT3KPEZMEEHYKA6K","zoom-apps-sdk","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzoom\u002Fskills\u002Fzoom-apps-sdk\u002FSKILL.md",[],[79,80,81,71],"sdk","zoom apps sdk","apps",{"skillNo":83,"name":84,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":11,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":85,"categories":86,"keywords":87,"publishedAt":23},"01M6FKJ9EDH9Q5VWDF8HAJRSP0","windows","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzoom\u002Fskills\u002Fwindows\u002FSKILL.md",[],[84],{"skillNo":89,"name":90,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":11,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":91,"categories":92,"keywords":94,"publishedAt":23},"01M6FKJ666BEEFC3AE9GJ72Q93","whiteboard","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzoom\u002Fskills\u002Fwhiteboard\u002FSKILL.md",[93],{"categoryNo":57,"categoryName":58,"taxonomyType":20,"taxonomyTypeDesc":21},[90],{"skillNo":96,"name":97,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":11,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":98,"categories":99,"keywords":100,"publishedAt":23},"01M6FKJ21WFCDGTJQ2Q91T9DVW","websockets","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzoom\u002Fskills\u002Fwebsockets\u002FSKILL.md",[],[97]]