Tested demoQuality 94/100Review permissions

XiaomiMiMo/MiMo-Code/packages/opencode/src/skill/builtin/.bundle/pptx-official/SKILL.md

pptx-official

Use this skill whenever a Microsoft PowerPoint (.pptx) file is being produced, opened, transformed, or read. That includes: authoring slide decks, pitch decks, executive readouts, training material, or any presentation deliverable; extracting text or structure from an existing .pptx; filling a .pptx template with values; converting a deck to PDF or images; splitting or merging decks; inspecting slides, layouts, masters, tables, images, charts, speaker notes, or comments. Trigger on words like 'd

Source repository stars
12,872
Declared platforms
0
Static risk flags
2
Last source update
2026-08-25
Source checked
2026-08-26

Decision brief

What it does: where it fits

An Apache-2.0 toolkit for producing, editing, and reading Microsoft PowerPoint (.pptx) files. Written from scratch against the public ECMA-376 / ISO/IEC 29500 (PresentationML) specification and built on permissively-licensed tooling (python-pptx MIT, pptxgenjs MIT, lxml BSD-3-Cl…

Best for

    Not for

    • Tasks that require unconfirmed production actions or broad system permissions.
    • Environments where the pinned source and install steps cannot be inspected.
    Controlled single-run demoChecked 2026-08-20

    What changed when the Skill was used

    In this controlled same-task single run, enabling pptx-official changed the output from 2653 non-whitespace characters and 16 headings to 2658 characters and 18 headings. Matches among 8 signals extracted from the pinned source changed from 0 to 0. Both actual outputs are shown; this is a structural observation, not a quality score or a universal performance claim.

    Same test task

    Create a design direction and implementation handoff for a developer tool that compares two API responses. Prioritize the repeated user workflow and responsive behavior. The deliverable must specifically reflect this user intent: Use this skill whenever a Microsoft PowerPoint (.pptx) file is being produced, opened, transformed, or read. That includes: authoring slide decks, pitch decks, executive readouts, training material, or any presentation deliverable; extracting text or structure from an existing .pptx; filling a .pptx template with values; converting a deck to PDF or images; splitting or merging decks; inspecting slides, layouts, masters, tables, images, charts, speaker notes, or comments. Trigger on words like 'd

    Without the Skill
    Screenshot of the actual model output for pptx-official without the Skill

    Baseline: 2653 non-whitespace characters, 16 headings, and 55 list items.

    With the Skill
    Screenshot of the actual model output for pptx-official with the Skill

    With Skill: 2658 non-whitespace characters, 18 headings, and 55 list items.

    ObservationWithout SkillWith Skill
    Source-signal coverage0/8: none0/8: none
    Output structure2653 chars · 16 headings · 55 list items · 1 code blocks2658 chars · 18 headings · 55 list items · 1 code blocks
    Verification and caution signals2 verification signals · 2 risk/limitation signals4 verification signals · 2 risk/limitation signals

    A prompt you can use

    Use the pptx-official Skill pinned at 6ee774bad24c for my task. Follow its source-specific constraints around `pptx-official`, `decision`, `matrix`, `one-time`, then return the finished deliverable with explicit assumptions, verification, failure conditions, and limits. Do not treat the Skill text as a factual source or claim that a single demonstration proves universal performance.

    Method and limitationsExpand

    Test method

    • Baseline and treatment used the same task, model (gpt-5.3-codex-low), and runner; the only planned difference was whether the complete target Skill text was injected.
    • The treatment used snapshot 245191352ac9b7521ea41c94d5b90130c8c334f7; the current source commit 6ee774bad24c4f830536167d8db5e0d81ec50ba5 was verified against content hash b828e4dc877f. The baseline explicitly prohibited loading any Skill or external rule file.
    • The same deterministic script counted characters, headings, lists, code blocks, verification terms, caution terms, and source signals in both artifacts. Source signals: `pptx-official`, `decision`, `matrix`, `one-time`, `environment`, `setup`, `prerequisites`, `install`.
    • The visuals are local screenshots of the actual Markdown artifacts in a fixed 1200 × 800 evidence canvas, not recreated product mockups. Raw JSON artifacts and request records are retained in the research directory.

    Do not over-read this demo

    • This is one controlled demonstration per condition, not a multi-run statistical benchmark; the model is stochastic.
    • Character, structure, and keyword counts show observable differences but cannot by themselves prove correctness, originality, or business impact.
    • The task is a representative test designed for repeatability, not every real-world use of the Skill; rerun after a material source change.
    Editorial review
    SkillSignal editorial
    Runner
    Cursor Agent 2026.07.09-a3815c0
    Model
    gpt-5.3-codex-low
    Refresh due
    2026-11-18
    Reviewed commit
    6ee774bad24c4f830536167d8db5e0d81ec50ba5
    Test snapshot
    245191352ac9b7521ea41c94d5b90130c8c334f7

    Compatibility matrix

    Platform support, with evidence labels

    PlatformStatusEvidenceWhat to check
    CodexNot declaredNo explicit evidencePortability before use
    Claude CodeNot declaredNo explicit evidencePortability before use
    CursorNot declaredNo explicit evidencePortability before use
    Gemini CLINot declaredNo explicit evidencePortability before use
    Open the compatibility checker

    Installation

    Inspect first. Install second.

    The source command is displayed only when detected. A safe inspection prompt is always available so your agent can explain every action before execution.

    Source-detected install commandSource
    npx skills add https://github.com/XiaomiMiMo/MiMo-Code --skill "packages/opencode/src/skill/builtin/.bundle/pptx-official"
    Safe inspection promptEditorial

    Inspect the Agent Skill "pptx-official" from https://github.com/XiaomiMiMo/MiMo-Code/blob/689a989098373ba4053ef662f40199edfeab6fdb/packages/opencode/src/skill/builtin/.bundle/pptx-official/SKILL.md at commit 689a989098373ba4053ef662f40199edfeab6fdb. List every install step, command, network request, credential, file read/write, external action, and rollback step. Explain whether it fits my task. Do not install or execute anything until I approve.

    Workflow

    What the source asks the agent to do

    1. 01

      One-time environment setup

      Bundled runtime: when the MIMOPYTHON environment variable is set, skip uv/pip installs — run every Python command below with uv run replaced by "$MIMOPYTHON" (python-pptx/Pillow/lxml preinstalled; pip console scripts unavailable, use "$MIMOPYTHON" -m ). A bundled LibreOffice is…

      Bundled runtime: when the MIMOPYTHON environment variable is set, skip uv/pip installs — run every Python command below with uv run replaced by "$MIMOPYTHON" (python-pptx/Pillow/lxml preinstalled; pip console scripts un…If uv or bun are not yet installed:
    2. 02

      Install bun (TypeScript runtime, replaces Node.js for this workflow)

      Review the “Install bun (TypeScript runtime, replaces Node.js for this workflow)” section in the pinned source before continuing.

      Review and apply the “Install bun (TypeScript runtime, replaces Node.js for this workflow)” source section.
    3. 03

      2. Convert a deck to PDF for review

      uv run scripts/renderpdf.py input.pptx writes input.pdf next to it

      uv run scripts/renderpdf.py input.pptx writes input.pdf next to it
    4. 04

      Decision matrix

      If the task mixes several of these, do them in this order: read → plan slide-by-slide → edit/create → validate → visual QA.

      If the task mixes several of these, do them in this order: read → plan slide-by-slide → edit/create → validate → visual QA.
    5. 05

      Prerequisites

      If uv or bun are not yet installed:

      If uv or bun are not yet installed:

    Permission review

    Static risk signals and limitations

    Runs scripts

    medium · line 28

    The documentation asks the agent to run terminal commands or scripts.

    **Bundled runtime:** when the `MIMO_PYTHON` environment variable is set, skip `uv`/pip installs — run every Python command below with `uv run` replaced by `"$MIMO_PYTHON"` (python-pptx/Pillow/lxml preinstalled; pip console scripts unavailab

    Network access

    medium · line 37

    The documentation includes network, browsing, or remote request actions.

    curl -LsSf https://astral.sh/uv/install.sh | sh

    Network access

    medium · line 38

    The documentation includes network, browsing, or remote request actions.

    # Windows: powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"

    Runs scripts

    medium · line 72

    The documentation asks the agent to run terminal commands or scripts.

    bun init -y

    Evidence record

    Why each signal appears

    EvidenceSourceComputedTestedEditorial
    SignalValueEvidence typeMeaning
    Quality score94/100ComputedDocumentation, specificity, maintenance, and trust rules
    Repository stars12,872SourceRepository attention, not individual Skill quality
    Compatibility0 platformsSourceDeclared in the catalog source record
    Usage guidetested outcome pageTestedGenerated or reviewed according to the visible evidence level

    Pinned source

    Provenance and original SKILL.md

    Repository
    XiaomiMiMo/MiMo-Code
    Skill path
    packages/opencode/src/skill/builtin/.bundle/pptx-official/SKILL.md
    Commit
    689a989098373ba4053ef662f40199edfeab6fdb
    License
    MIT
    Collected
    2026-08-26
    Default branch
    main
    View the original SKILL.md

    PPTX Skill

    An Apache-2.0 toolkit for producing, editing, and reading Microsoft PowerPoint (.pptx) files. Written from scratch against the public ECMA-376 / ISO/IEC 29500 (PresentationML) specification and built on permissively-licensed tooling (python-pptx MIT, pptxgenjs MIT, lxml BSD-3-Clause, Pillow MIT-CMU, optional external binaries soffice MPL 2.0 and pdftoppm GPL) so it can be reused in commercial projects without restriction.

    Decision matrix

    SituationPathRead first
    Build a deck from a prompt or dataset — no source file to start fromAuthor with python-pptx (structured / repeatable) or PptxGenJS (design-heavy, JS)create.md
    You have a .pptx template to fill in — keep its master, layouts, lookPlaceholder replacement via python-pptxedit.mdTemplate fill
    Deep structural edits — reorder slides, splice XML, add unusual objectsExplode → edit XML parts → assembleedit.mdRaw XML workflow
    Only need the text / speaker notes / structure out of a .pptxExtraction pipelineread.md
    Turn a deck into PDF or PNG images (visual QA, publishing)scripts/render_pdf.py / scripts/render_slides.py via LibreOfficesee QA below
    Grid of slide thumbnails for previewing a templatescripts/contact_sheet.py (Pillow)read.mdThumbnails

    If the task mixes several of these, do them in this order: read → plan slide-by-slide → edit/create → validate → visual QA.

    One-time environment setup

    Bundled runtime: when the MIMO_PYTHON environment variable is set, skip uv/pip installs — run every Python command below with uv run replaced by "$MIMO_PYTHON" (python-pptx/Pillow/lxml preinstalled; pip console scripts unavailable, use "$MIMO_PYTHON" -m <module>). A bundled LibreOffice is exposed as MIMO_SOFFICE (picked up automatically by soffice_bridge.py/render_pdf.py), and slide rasterisation automatically falls back to pypdfium2 in that interpreter when Poppler (pdftoppm) is absent. For the PptxGenJS authoring path, bundled Node.js is exposed as MIMO_NODE, with pptxgenjs/react/react-dom/sharp/react-icons/mathjax-full preinstalled in MIMO_NODE_MODULES — run scripts as NODE_PATH="$MIMO_NODE_MODULES" "$MIMO_NODE" <script.js> instead of npm install.

    Prerequisites

    If uv or bun are not yet installed:

    # Install uv (Python package/project manager)
    # macOS / Linux
    curl -LsSf https://astral.sh/uv/install.sh | sh
    # Windows: powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"
    
    # Install bun (TypeScript runtime, replaces Node.js for this workflow)
    # macOS / Linux
    curl -fsSL https://bun.sh/install | bash
    # Windows: powershell -c "irm bun.sh/install.ps1|iex"
    

    Only if the user explicitly refuses uv / bun, substitute pip (in a venv you manage yourself) for uv, and npm/pnpm + npx tsx for bun — everything else in this skill stays the same.

    Python (uv)

    Python dependencies are managed by uv. Do not use pip directly.

    # Initialize project (if no pyproject.toml exists)
    uv init -p 3.12
    
    # Add dependencies
    uv add python-pptx lxml Pillow
    uv add defusedxml                  # safe XML parsing (recommended for manual XML edits)
    

    Rules:

    • Never use pip — always uv add for packages.
    • Never run python scripts/... directly — always uv run scripts/....
    • Don't manually manage environments with python -m venv or source .venv/bin/activate.

    TypeScript (bun)

    For PptxGenJS creation, use bun (project-local, not global installs):

    # Initialize (if no package.json exists)
    bun init -y
    
    # Add dependencies
    bun add pptxgenjs                  # core PPTX creation library
    bun add react react-dom sharp      # rasterization (icons + formulas)
    bun add react-icons                # icon library (FA, MD, etc.)
    bun add mathjax-full               # LaTeX formula rendering
    
    # Type definitions (including Bun runtime types)
    bun add -d @types/bun @types/react @types/react-dom
    

    Create a tsconfig.json if one doesn't exist:

    {
      "compilerOptions": {
        "lib": ["ESNext"],
        "target": "ESNext",
        "module": "Preserve",
        "moduleResolution": "bundler",
        "allowImportingTsExtensions": true,
        "noEmit": true,
        "jsx": "react-jsx",
        "strict": true,
        "skipLibCheck": true,
        "types": ["bun"]
      }
    }
    

    Run scripts directly as TypeScript — no transpilation needed:

    bun run create-ppt.ts
    

    Always run type checking after writing or modifying TS code:

    bun tsc --noEmit
    

    Models may inadvertently use outdated PptxGenJS API signatures or deprecated syntax without realizing it. A type check catches these mismatches before runtime.

    System dependencies (PDF/PNG rendering)

    # macOS
    brew install --cask libreoffice
    brew install poppler
    
    # Debian/Ubuntu
    sudo apt-get install -y libreoffice poppler-utils
    

    Every script under scripts/ uses only the standard library plus python-pptx, lxml, and Pillow. No proprietary dependencies. External binaries (soffice, pdftoppm) are invoked as subprocesses; nothing is bundled or statically linked.

    Common commands

    # 1. Extract text from every slide (title, body, notes) — the "what does it say?" query
    uv run scripts/dump_text.py input.pptx --notes > input.txt
    
    # 2. Convert a deck to PDF for review
    uv run scripts/render_pdf.py input.pptx                     # writes input.pdf next to it
    
    # 3. Convert every slide to a PNG (visual QA)
    uv run scripts/render_slides.py input.pptx --out slides/       # writes slides/slide-1.png, ...
    
    # 4. Grid thumbnail preview (planning which template slide to reuse)
    uv run scripts/contact_sheet.py input.pptx --cols 3         # writes input.contact-sheet.jpg
    
    # 5. Explode a .pptx into readable XML for surgical edits
    uv run scripts/explode.py input.pptx unpacked/
    
    # 6. Reassemble an exploded tree
    uv run scripts/assemble.py unpacked/ output.pptx
    
    # 7. Drop orphaned slides and unused media before reassembly
    uv run scripts/prune.py unpacked/
    
    # 8. Duplicate slide 3, or spin up a new slide from layout 5
    uv run scripts/insert_slide.py unpacked/ --clone slide3.xml
    uv run scripts/insert_slide.py unpacked/ --blank-from slideLayout5.xml
    
    # 9. Well-formedness check (ZIP + XML + python-pptx round-trip)
    uv run scripts/diagnose.py output.pptx
    

    Every script is a small Python CLI. Some scripts (e.g. render_pdf.py, render_slides.py, contact_sheet.py) import from a shared helper (soffice_bridge.py) in the same directory — copy them together. Read the top of each file for its full CLI options.

    Live preview

    A live preview server is available for real-time slide feedback. Not started by default. When multi-slide work begins, ask the user if they want live preview enabled.

    Only offer this in a pure command-line environment. This server is for the MiMoCode CLI. If you are running inside a host that embeds MiMoCode via the SDK — a web UI, a desktop app, an IDE plugin, etc. — that host almost certainly has its own native preview / file-open mechanism; use it instead and do NOT start this server.

    If yes, and this is a CLI environment:

    # `scripts/preview.ts` lives in this skill's bundle directory, not in
    # your cwd. Prefix it with the absolute path shown in this skill's
    # location header (the folder that contains SKILL.md) — refer to it
    # as <SKILL_DIR> below.
    
    # Start (spawns background server, prints URL, exits immediately)
    bun run <SKILL_DIR>/scripts/preview.ts /path/to/output.pptx
    bun run <SKILL_DIR>/scripts/preview.ts /path/to/output.pptx --port 5000
    
    # Stop
    bun run <SKILL_DIR>/scripts/preview.ts --stop /path/to/output.pptx
    

    If the server is already running, preview.ts detects this via PID file and prints the existing URL instead of spawning a duplicate.

    The background server watches the .pptx file, debounces (800ms), converts to PDF via LibreOffice, and pushes a WebSocket reload to the browser. The browser's native PDF viewer provides scroll, thumbnails, zoom, and search. Preview output goes to .pptx-preview/ (separate from qa/, no conflict with other scripts).

    Give the user the printed URL to open in their browser.

    Live preview is for humans only — it does NOT replace visual QA. The preview server lets the user watch progress. You must still run the visual QA subagent (render PNGs to qa/, spawn a vision model to inspect them) as described in the "Visual QA execution model" section. These are independent workflows:

    • Preview server → user sees live updates in browser
    • Visual QA subagent → automated inspection, catches issues you can't

    When to regenerate the .pptx during multi-slide work: If the user has the preview server running, regenerate the .pptx (re-run the creation script) after completing each logical module — e.g. after finishing a section's slides, not after every single shape placement. This gives the user meaningful visual checkpoints without excessive intermediate renders.

    Authoring principles

    Slides are a visual surface. Users read the deck at 40 feet from the back of a room, or in a browser tab three inches wide on a phone. Both have to work. Keep these in mind:

    1. One idea per slide. If you can't summarize the slide in a five-word title, split it in two. Long-form reasoning belongs in the doc that accompanies the deck, not on the slide itself.
    2. Title, not label. The title is the thesis of the slide. "Revenue" is a label. "Revenue grew 34% on 22% headcount" is a title. Titles carry the argument; bodies carry the evidence.
    3. Every slide earns its visuals. A slide without a chart, image, icon, or shape is usually a bullet dump. Turn it into a comparison, a stat callout, a diagram, or delete it.
    4. Layouts, not per-slide geometry. For anything reused (section dividers, content pages, quote slides), define a slide_layout once and apply it. This makes swapping the theme a one-line change instead of a fifty-slide sweep.
    5. Aspect ratio matches the target. 16:9 (default) for laptops and projectors; 4:3 only when explicitly asked (still common in academia and some corporate templates); 16:10 for older widescreen.
    6. Speaker notes carry the words. Put the full narration into slide.notes_slide.notes_text_frame so the presenter can rehearse from the deck itself. On the slide, keep it to the phrase they can hold in their head.
    7. Bullets are not the default. Bullet lists are the failure mode of most decks — comparisons, tables, icons-with-labels, and stat callouts almost always land better.

    Typography defaults (safe starting point)

    ElementFontSizeWeightNotes
    Slide titleCalibri / Segoe UI32-40ptBoldOne line — wrap = rework the title
    Section headerCalibri24-28ptBoldOn dedicated divider slides
    Body / bulletsCalibri18-22ptRegularNever below 18pt for a room; 14pt for on-screen decks
    Stat calloutCalibri Light60-96ptBoldThe number, then the label below at 14-18pt
    Caption / footerCalibri10-12ptRegularMuted gray #7A7A7A
    Code / monoConsolas / Cascadia Code16-20ptRegularLeft aligned, no word wrap

    Change the palette for the topic (financial → navy #1F3A5F; environment → forest #2C5F2D; product launches → your brand's accent). Avoid pure black on pure white for backgrounds — #F7F5F0 cream on #1F1F1F ink reads softer under a projector.

    Slide sizes

    AspectWidth × Height (inches)Pixels @ 96 DPIWhen to use
    16:9 widescreen (default)13.333 × 7.51280 × 720Almost every new deck
    16:1013.333 × 8.3331280 × 800Older projectors; some corporate templates
    4:3 standard10.0 × 7.5960 × 720Academia, legacy templates, printed handouts
    A4 landscape11.69 × 8.271123 × 794Print-first decks (EU)
    Letter landscape11.0 × 8.51056 × 816Print-first decks (US)

    QA checklist — always run before declaring done

    Assume something is wrong. PowerPoint opens broken files quietly: a misaligned text box, a chart pointing at deleted data, a stray placeholder that survived template fill. Verify explicitly.

    1. Opens cleanly. No repair dialog, no missing-part warning.

      uv run scripts/diagnose.py output.pptx
      
    2. Text integrity. No placeholder residue and no unfilled {{token}}s:

      uv run scripts/dump_text.py output.pptx --notes \
          | grep -Ei "\{\{|TODO|TBD|lorem|ipsum|xxxx|click to add"
      

      Grep must return nothing.

    3. Visual sanity. Render the whole deck to PNG, spot-check the first, last, and any slide you touched. Look for:

      • Text overflowing the placeholder or getting auto-shrunk past readability.
      • Two shapes overlapping (title over image, footer over content).
      • Legend / axis labels cut off on charts.
      • Icons at the wrong scale (tiny hairline icons, or huge stretched ones).
      • Off-brand colors that snuck in from a copied slide.
      uv run scripts/render_slides.py output.pptx --out qa/
      
    4. Layout hygiene. Every non-master slide should reference a real layout, not slideLayout1 by default for a section divider:

      uv run python -c "
      from pptx import Presentation
      prs = Presentation('output.pptx')
      for i, s in enumerate(prs.slides, 1):
          print(f'slide {i}: layout={s.slide_layout.name!r}')"
      

    If any of these fail, fix and re-run — don't paper over.

    Visual QA execution model

    Slide images are expensive. A single rendered PNG at 150 DPI consumes thousands of context tokens. Loading multiple slides into the main conversation for inspection will quickly exhaust your context budget and crowd out useful working memory.

    Default: always use a subagent for visual inspection. Spawn a general subagent with the rendered PNG paths and the inspection criteria from step 3 above. The subagent reports findings as text (slide number + issue description); the images never enter the main conversation context. This is mandatory unless the exception below applies.

    actor({
      operation: {
        action: "run",
        subagent_type: "general",
        // omit `model` when your current model is vision-capable (preferred — see Model selection)
        description: "Visual QA slides",
        prompt: "Inspect the rendered slide images in qa/ for: text overflow, overlapping shapes, cut-off labels, wrong-scale icons, off-brand colors. Report each issue as 'slide N: <problem>'. Images: qa/slide-1.png through qa/slide-<N>.png."
      }
    })
    

    Model selection (in priority order):

    1. Prefer the user's current model. Query the servable vision models via actor({ operation: { action: "models", vision: true } }). If your current model is in the list, omit the model parameter — the subagent inherits it, and visual QA runs on the model the user chose.
    2. Fallback: lightweight vision model, stated explicitly. If your current model is not vision-capable, pick a lightweight vision model from the query result (haiku/flash/lite-class if present, otherwise the cheapest listed) and tell the user in your reply which model you used for visual QA and why (current model cannot inspect images).
    3. No vision model available. If the query returns an empty list, do not guess a model id — skip the visual QA subagent, run the structural checks only, and tell the user visual inspection could not be performed.

    Never hardcode a model id. Which models are servable varies per deployment and changes over time; only ids returned by the vision models query are guaranteed to work. A guessed id fails the subagent outright.

    Exception — direct inspection in the main context: Only load slide images directly (without a subagent) when the user explicitly requests that the current model inspect a specific slide for fine-grained, interactive editing (e.g. "look at slide 5 and adjust the title position"). This requires the current model to be multimodal. If it isn't, inform the user and offer to spawn a vision subagent instead.

    Common visual pitfalls

    • Titles wrap onto two lines — either shorten the title or widen the placeholder. Wrapped titles push body content down and break layout alignment across slides.
    • Body text auto-shrinks below 14pt — python-pptx respects the placeholder's autofit setting; if the resulting size is unreadable, split the slide instead of accepting the shrink.
    • Charts inherit Office defaults — the pale blue / gray palette shipped with PowerPoint looks generic. Explicitly set chart.chart_style or use python-pptx's low-level access to set fill colors on series.
    • Speaker notes forgotten — a deck without notes cannot be rehearsed. Fill notes_slide.notes_text_frame.text on every slide, even if just a single sentence.
    • Images at wrong DPI — a 4000×3000 photo on a 1280×720 slide bloats the file with no visual benefit. Resample down to ~150 DPI at the target display size (see create.mdImages).
    • Fonts not embeddedpython-pptx does not embed fonts. If the deck is opened on a machine without the chosen font, PowerPoint substitutes, and layout drifts. For Latin text, prefer system-safe fonts (Calibri, Arial, Segoe UI, Times New Roman, Consolas) or ship the .pptx alongside a font install step.
    • CJK text needs the East-Asian font slotrun.font.name only sets the Latin typeface (a:latin); Chinese / Japanese / Korean glyphs come from the East-Asian slot (a:ea), which python-pptx does not expose. Leave it unset and CJK renders as tofu boxes or an inconsistent substitute. Set a:latin + a:ea + a:cs to a CJK-capable font on every run that contains CJK text (recipe in create.mdCJK / East-Asian text).

    What is out of scope

    • .ppt (PowerPoint 97-2003 binary). Convert first: soffice --headless --convert-to pptx old.ppt.
    • VBA / macros / .pptm. This skill does not emit or execute macros.
    • Password-protected or encrypted decks. python-pptx cannot read encrypted files; strip protection with PowerPoint or LibreOffice first.
    • Live PowerPoint automation. For COM (Windows) or AppleScript (macOS) integration, use a dedicated automation library — this toolkit is file-in / file-out.
    • Keynote .key files. Not a PresentationML format; use Apple's Keynote or LibreOffice for round-trip.

    Where each detail lives

    • Creating from scratch: create.md — python-pptx recipes, PptxGenJS recipes, layouts, text, tables, images, charts, icons, backgrounds, speaker notes, palette and typography guidance.
    • Editing / templating: edit.md — placeholder fill, slide duplication / reorder / delete, explode/assemble for XML surgery, comments, cleanup of orphaned parts, common pitfalls.
    • Reading / extracting: read.md — plain-text export (including speaker notes), structural walk, metadata, thumbnails, image extraction, conversion to PDF / PNG for QA.
    • Scripts: scripts/ — CLI utilities (some share a local soffice_bridge.py helper; copy together when extracting).
    • Live preview: scripts/preview.ts — launcher (start/stop); scripts/preview_server.ts — background server that watches .pptx, converts to PDF, serves with WebSocket hot-reload in the browser's native PDF viewer.

    Frequently asked questions

    What to verify before installation and use

    What does the pptx-official source document cover?

    An Apache-2.0 toolkit for producing, editing, and reading Microsoft PowerPoint (.pptx) files. Written from scratch against the public ECMA-376 / ISO/IEC 29500 (PresentationML) specification and built on permissively-licensed tooling (python-pptx MIT, pptxgenjs MIT, lxml BSD-3-Cl…

    How do I install pptx-official?

    The source record exposes this install command: npx skills add https://github.com/XiaomiMiMo/MiMo-Code --skill "packages/opencode/src/skill/builtin/.bundle/pptx-official". Inspect the command and pinned source before running it.

    Which permission-related actions were detected?

    Static rules flagged exec-script, network in the source; the page lists the matching lines and excerpts.

    Alternatives

    Compare before choosing

    Computed 9764

    Jamie-BitFlight/claude_skills

    standards-for-python-development

    Shared Python 3.11+ development standards covering type safety (ty, native generics, Protocol, TypeIs), layered architecture, error handling, performance, identifier naming, UI/CLI patterns (Rich/Typer), testing requirements (pytest, 80% coverage, TDD), and quality gates. Activates when any Python skill or agent needs to apply shared standards for implementation, code review, refactoring, or test authoring.

    Computed 9618,936

    teng-lin/notebooklm-py

    notebooklm

    Complete API for Google NotebookLM - full programmatic access including features not in the web UI. Create notebooks, add sources, generate all artifact types, download in multiple formats. Activates on explicit /notebooklm or intent like "create a podcast about X"

    Computed 961,078

    TencentCloudBase/CloudBase-AI-Toolkit

    cloudbase-agent-python

    Build production-ready AI agent backends using the CloudBase Agent Python SDK — create agents with LangGraph/CrewAI/LlamaIndex, serve them via FastAPI with AG-UI protocol streaming + OpenAI-compatible endpoints, add tools (bash, filesystem, MCP, code execution), memory (in-memory, TDAI, MySQL, MongoDB), observability (OpenTelemetry/Langfuse), and middleware (auth, logging). Use this skill when the user wants to create an AI agent server, build a chatbot backend, set up human-in-the-loop workflow

    Computed 96330

    athola/claude-night-market

    hook-authoring

    Guide creating Claude Code hooks with security-first design. Use for validation and enforcement.