agentleFS
Angel-GrilAngel-Gril/Kimi-PPT-Skills/skills/open-kimi-ppt/SKILL.md

open-kimi-ppt

Skill7 starsChanged 3 months agoMITView on GitHub

Create, edit, replicate, read, and export presentations. For every PPT task, the default deliverables are BOTH (1) a self-contained PPTD project folder containing the .pptd manifest plus pages/media dependencies and (2) a locally generated .pptx with embedded fonts and fade slide transitions. Use for any presentation, PowerPoint, PPT/PPTX, slide deck, PPTD, infographic, or poster task unless the user explicitly requests another format. Deliver with normal local file/folder links using absolute paths.

1 other project uses a version of this, 1 of them edited.

Adopted by

Most recently taken up by

  • Other versions1 project uses a version of this.

    Word for word · 0

    None found.

    Edited · 1

    1. momo0338/skills★ 188% same

    Wrote their own version · 0

    None found.

    How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.

The file

Show its rules and text

We split this skill into the rules it gives an agent

27 rules. About 0 are common, 14 are distinctive, and 13 are very specific to this project.

  • ≈0

    Common · estimate

    Many files like this have a rule of this kind.

  • ≈14

    Distinctive · estimate

    This author's own choices. Worth a look.

  • 13

    Very specific

    Tied to their project's names, files or tools. Probably skip.

  • Common
  • Distinctive
  • Very specific
  1. Very specific:

    Default delivery includes PPTX export (and optional npx open-kimi-ppt-skills serve), which need a local toolchain.

    line 22
  2. Very specific:

    python3: run python3 --version (on Windows, python may be the correct command).

    line 24
  3. Very specific:

    Read all files uploaded by the user, the provided URLs, and the pptd format guide reference/pptd.md to fully understand the user's …

    line 30
  4. Distinctive:

    Create a PPT: create a new presentation (from scratch, or from an existing pptx template)

    line 35
  5. Distinctive:

    Use a template: a template is provided and must be used

    line 42
  6. Distinctive:

    If the user requests a specific page count, the user's requirement takes priority

    line 52
  7. Distinctive:

    When a complete and relatively structured document is provided: ask the user how much document content one page should cover, and give an …

    line 54
  8. Distinctive:

    When any of the following situations arise, resolve them by asking the user (use the agent's ask/clarification tool when available)

    line 57
  9. Distinctive:

    When the purpose, design direction, input type, page count, etc.

    line 66
  10. Very specific:

    Before generating, first read reference/pptd.md to understand the pptd format definition and constraints.

    line 70
  11. Distinctive:

    When generating a PPT, adopt different production approaches for different user [design directions]

    line 84
  12. Very specific:

    Read the design guide reference/slides_categories.md, and read the scenario document corresponding to the user's query

    line 86
  13. Very specific:

    Read the general constraints section of the reference/slides_categories.md guide, and read the scenario document corresponding to the …

    line 93
  14. Very specific:

    Do not auto-pick a preset during self-directed design.

    line 96
  15. Distinctive:

    If the user provides a style reference URL, do not only read the text content.

    line 106
  16. Distinctive:

    When a page involves products, people, places, buildings, events, cases, interfaces, experimental subjects, or spatial environments, …

    line 112
  17. Very specific:

    After deciding which images are needed, complete image search, generation, and downloading in a batch before designing pages around their …

    line 114
  18. Distinctive:

    Do not add irrelevant images merely to meet a quantity target.

    line 116
  19. Distinctive:

    Do not overuse metaphors, slogans, or abstract jargon such as distribution, an N-step argument, everything at a glance, a closed loop, …

    line 120
  20. Distinctive:

    Do not use common AI phrasing such as “not X, but Y,” “X is Y,” “why / based on what / how,” “key takeaway,” or “N battlefronts / paths”

    line 121
  21. Distinctive:

    Do not use overly colloquial expressions such as “where should the ammunition go,” “the Nth thing,” “can't pick the right one,” or “cannot …

    line 122
  22. Very specific:

    Run scripts/export_images.py.

    line 127
  23. Very specific:

    Read the stitched overview image (project.qa-images/overview.jpg) and check every page against this list:

    line 137
  24. Very specific:

    Do not export the PPTX until the visual review passes.

    line 147
  25. Distinctive:

    When the model cannot read images, fall back to a structural review of the generated pages (bounds, overflow-prone long text, contrast, …

    line 148
  26. Very specific:

    Always produce a self-contained project directory.

    line 151
  27. Very specific:

    do not claim PowerPoint/WPS/Keynote playback compatibility solely because ZIP validation succeeds.

    line 192

≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.

Keep what fits and drop the rest. Your version, ready for your agents.
Files
SKILL.md

Definition

open-kimi-ppt is a presentation creation and export skill built around Moonshot AI's PPTD format and browser-side PPTX writer. It defines a YAML-format intermediate DSL (.pptd) that abstracts OOXML and keeps each page self-contained.

The default output is not PPTD-only. Unless the user explicitly opts out, always produce both:

  1. the complete editable PPTD project directory (.pptd + pages/ + media/ and other referenced dependencies);
  2. the matching locally generated .pptx, with font embedding enabled and fade slide transitions applied by default.

Existing PPTX files may also be converted into PPTD for editing, after which both outputs are delivered again.

The pptd format

The .pptd format is a simplified abstraction layer over OOXML that follows basic YAML syntax. This abstraction preserves the core content of OOXML (theme, page layout, element positions and definitions, etc.) while removing complex nesting logic such as Masters; every page is self-contained — what you see is what you get. Read reference/pptd.md for the complete definition of this DSL.

PPT production workflow

step0. Check local prerequisites

Default delivery includes PPTX export (and optional npx open-kimi-ppt-skills serve), which need a local toolchain. Before generating, verify:

  1. python3: run python3 --version (on Windows, python may be the correct command). It runs export_pptx.py and export_images.py.
  2. Chrome / Chromium / Edge: required for Kimi browser export and visual QA. The exporter uses a dedicated profile under ~/.open-kimi-ppt/browser-profile; it never attaches to the user's everyday browser profile.
  3. Soft dependencies are auto-handled when missing: PyYAML, Playwright, and for image QA Pillow. Playwright uses an installed Chrome/Chromium/Edge channel and does not install or upgrade global npm packages.
  4. Network access to www.kimi.com and statics.moonshot.cn is required. The first editable PPTX export opens the dedicated browser and waits up to 10 minutes for the user to sign in to Kimi. Later exports reuse that dedicated login profile.

step1. Read the context thoroughly

Read all files uploaded by the user, the provided URLs, and the pptd format guide reference/pptd.md to fully understand the user's requirements.

step2. Understand the user's requirements

Understand the user's requirements based on the context:

  1. First determine the purpose of the request
  • Create a PPT: create a new presentation (from scratch, or from an existing pptx template)
  • Edit a PPT: edit the user's uploaded PPT (local modifications, single-page beautification, etc.)
  • Replicate a PPT: replicate a presentation from a non-pptx format (images, PDF, etc.) into pptd format
  1. Then determine the design direction
  • Self-directed design: no preference, or only simple style constraints given; you need to fill in or create the design
  • Design system: a preset design system from the skill (reference/design_system/) is specified, or the user provides a complete and detailed design scheme covering all color, font, layout, and component specifications
  • Use a template: a template is provided and must be used
  • Style transfer: a style reference source is provided (images, web pages, etc.)
  1. Then determine the input type
  • Topic only: only a PPT topic direction or content requirements for the presentation are given, with no concrete content
  • Full document: the user provides a complete document (paper, research report, press release, etc.)
  • Outline: the user provides a page-by-page outline, speech script, or similar content
  • When the "user input type" is [Full document] or [Outline] and it is not specified whether expansion is allowed: since a page-by-page outline, speech script, or user document can hardly support the full content of a presentation, prefer using search to expand with more relevant material, cases, etc., unless the user explicitly says not to expand
  1. Finally determine the exact page count
  • If the user requests a specific page count, the user's requirement takes priority
  • Page-by-page outline/script provided: match the number of pages in the outline/script
  • When a complete and relatively structured document is provided: ask the user how much document content one page should cover, and give an estimated total page count; when only a topic is provided: suggest a recommended page count and confirm with the user

Clarification and follow-up questions

When any of the following situations arise, resolve them by asking the user (use the agent's ask/clarification tool when available)

  1. Requirements are ambiguous
  • The user's intent is unclear or hard to understand
  • The files/URLs provided by the user are inaccessible
  1. Conflicting intents
  • The user's intents contradict each other. For example:
    • A design system is selected while also requesting a style that is completely inconsistent with that design system (e.g., using a McKinsey style while requiring large areas of whitespace on pages) / using a template / referencing an image style
    • Requesting both "make 10 pages" and "deliver 30+ pages of output"
  1. Unable to determine the user's requirements on your own
  • When the purpose, design direction, input type, page count, etc. are hard to determine by yourself

step3. Generate the presentation based on the user's requirements

Before generating, first read reference/pptd.md to understand the pptd format definition and constraints.

Replicating a PPT

  • Analyze the images to estimate element positions, fonts and sizes, etc., and replicate 1:1 as closely as possible.
  • For parts that are difficult to make out, use methods such as grid lines and close-up views to improve understanding.
  • Replicate simple content in the image with elements; icons may be approximated with icons provided by Font Awesome. For content that cannot be approximated with icons or shapes, such as photos and avatars, use tools such as bash or python to crop and split the original image, then add the resulting image elements to the presentation

Editing a PPT

  • Convert the user's uploaded pptx file to .pptd format
  • Review the converted pages (structure and key visual details). Read a few key pages individually afterwards.
  • Locate the pages to edit, and be careful not to affect parts outside the intended scope.

Conversion from pptx to pptd is not perfectly lossless. If the user later reports format errors, garbled content, etc., compare against the original pptx and repair the pptd with reference to the comparison

Generating a PPT

When generating a PPT, adopt different production approaches for different user [design directions]

Self-directed design
  1. Read the design guide reference/slides_categories.md, and read the scenario document corresponding to the user's query
  2. Produce the presentation based on the above

Generating content in other formats

  • When the user explicitly asks for an infographic, poster, or a highly visual single-page design, read reference/general-poster.md and implement it as a single-page or few-page editable PPTD; when the user only asks for an image, still build it with PPTD first, then output the image via screenshot or rendering. Do not load this reference file for ordinary PPT requests.
Design system
  1. Read the general constraints section of the reference/slides_categories.md guide, and read the scenario document corresponding to the user's query as the design foundation
  2. Read the specified design system as the presentation style: either the user-provided design scheme, or the matching preset under reference/design_system/ (search by name / path the user specified; prefer the folder's design.md when present). It is strictly forbidden to reference or mix in other design styles
  3. Produce the presentation with reference to the above
  4. Do not auto-pick a preset during self-directed design; only use reference/design_system/ when a preset is explicitly specified
Using a template
  1. Convert the user's uploaded pptx file into pptd form
  2. Review the converted pages to understand the template's visual style (color scheme, font style, element characteristics, layout characteristics, content density, etc.)
  3. Identify page types; focus on reading special pages such as the cover, summary pages, and section dividers (single-page screenshots, .page files), extracting their page layouts, content structures, reusable components (icons, shapes, smartart, reusable body layout schemes, etc.), and element styles (e.g., whitespace/line/card separators, square/rounded corners, etc.)
  4. Produce the presentation using the template
Style transfer
  1. Analyze the reference file's visual style (color scheme, font style, element characteristics, layout characteristics, content density, etc.), page layouts, content structures, reusable components (icons, shapes, smartart, reusable body layout schemes, etc.), and element styles (e.g., whitespace/line/card separators, square/rounded corners, etc.).
  • If the user provides a style reference URL, do not only read the text content; refer to and learn from the page's visual effect more to help understand the style
  1. Produce the presentation using the reference file's style characteristics. You are encouraged to reuse illustrations, fonts, font-size hierarchies, elements, etc. from the original pdf/url
Images and Visual Materials
  1. Images are an effective way to enrich a presentation's visual impact. Appropriate images should be used not only on covers and section dividers, but also on body pages to enrich the page, aid understanding, or support decision-making
  2. Images are used to show concrete subjects, explain content, provide evidence, or establish a scene. Logos, icons, decorative textures, and very small thumbnails do not count as substantive imagery.
  3. When a page involves products, people, places, buildings, events, cases, interfaces, experimental subjects, or spatial environments, prioritize corresponding real images or screenshots. If real images and screenshots cannot be obtained, generated images may be used instead.
  4. Image priority: images provided by the user; images from official websites, official reports, and credible sources; searched images that are directly relevant to the content; images generated for conceptual expression or atmosphere.
  5. After deciding which images are needed, complete image search, generation, and downloading in a batch before designing pages around their proportions. Save images in the media directory, keep them clear, and never stretch or distort them.
  6. Analytical, technical, and academic PPTs should use corresponding evidence images when products, experiments, interfaces, cases, or on-site materials are available. Do not reduce every page to text, color blocks, and shapes.
  7. Do not add irrelevant images merely to meet a quantity target. Every image must be directly relevant to the page's conclusion or communication goal.
Content Guidelines
  1. Language style: unless the user explicitly requests otherwise, strictly avoid overly abstract expressions and uncommon metaphors
  • Do not overuse metaphors, slogans, or abstract jargon such as distribution, an N-step argument, everything at a glance, a closed loop, hands-on practice, verification, deconstruction, second-class citizens, poison pills, or wall clocks
  • Do not use common AI phrasing such as “not X, but Y,” “X is Y,” “why / based on what / how,” “key takeaway,” or “N battlefronts / paths”
  • Do not use overly colloquial expressions such as “where should the ammunition go,” “the Nth thing,” “can't pick the right one,” or “cannot be used as X”

step4. PPT validation

  1. Validate the generated pptd against the format definition in reference/pptd.md (required fields, types, bounds, theme tokens, resource paths, etc.) and repair issues over multiple rounds
  2. Visual review with exported page images — required before PPTX export when the model supports image input (multimodal):
    • Run scripts/export_images.py. It loads the deck into Kimi's public editor, chooses 导出 → 图片, downloads the images ZIP, unzips it, and stitches all pages into one overview image:

      python3 ~/.agents/skills/open-kimi-ppt/scripts/export_images.py \
        /abs/path/project/deck.pptd \
        --output /abs/path/project.qa-images

      The image output directory must be completely outside the PPTD project tree. The default is the sibling directory <project-name>.qa-images. The script prints a JSON summary mapping each stitched label (P1…Pn, 1-based page order) to its .page file.

    • Read the stitched overview image (project.qa-images/overview.jpg) and check every page against this list:
      1. 图片是否清晰、不变形(无拉伸、压缩、模糊)
      2. 文字是否压在关键画面(人脸、产品主体、Logo 等)上
      3. 元素坐标是否超出页面边界
      4. 边界与配色对比是否足够(文字与背景、相邻色块之间)
      5. 排版是否统一(对齐、间距、字号层级、页边距)
      6. 文字是否可能溢出文本框(文本过长、行距过密、字号过大)
      7. 内容是否被上层元素遮挡
    • For any suspicious page, read its full-resolution image (project.qa-images/pages/<n>.jpeg) to confirm the problem before editing.
    • Fix issues in the corresponding .page file, then re-run scripts/export_images.py --force and review the new overview; repeat until every page passes.
    • Do not export the PPTX until the visual review passes. The sibling <project-name>.qa-images/ directory is an intermediate QA artifact and may be deleted after delivery.
  3. When the model cannot read images, fall back to a structural review of the generated pages (bounds, overflow-prone long text, contrast, hierarchy, layout density) over multiple rounds, and state that image-based visual QA was skipped.

step5. PPT output and delivery

  1. Always produce a self-contained project directory. Keep the .pptd manifest and every referenced dependency together; never deliver a standalone manifest without its referenced files. Use this layout unless an existing project already has a valid equivalent structure:

    deck/
      deck.pptd
      pages/
        *.page
      media/
        *                # when the deck has local media
      deck.pptx          # generated by default
  2. Generate the .pptx by default after PPTD validation, even when the user only asks to create or edit a presentation. Skip PPTX export only when the user explicitly requests PPTD-only output or the environment cannot run the exporter; in the latter case, report the exact blocker and still deliver the complete PPTD project.
  3. Deliver with normal clickable local links using absolute paths. In the final response, link all of the following:
    • the project directory;
    • the .pptd manifest;
    • the pages/ directory and media/ directory when present;
    • the generated .pptx file.
  4. PPTX conversion: use scripts/export_pptx.py. It opens a temporary localhost SDK host, loads the .pptd into Kimi's browser editor, invokes the browser-side OOXML writer, captures the generated PPTX with Playwright, applies transitions, and validates ZIP/slide/editability structure. The first run opens a dedicated browser profile for Kimi sign-in; do not attach it to an everyday browser profile.
  5. Default PPTX options:
    • page transition: fade (淡入淡出), written to every slide after the official browser export;
    • font embedding: enabled whenever the official writer exposes/supports it;
    • these defaults may be explicitly overridden with --transition none or --no-embed-fonts.
  6. Export command:

    python3 ~/.agents/skills/open-kimi-ppt/scripts/export_pptx.py \
      /abs/path/project/deck.pptd \
      --output /abs/path/project/deck.pptx

    A project directory may be passed instead of the manifest only when it contains exactly one .pptd file. Existing output files are not overwritten unless --force is passed.

  7. Local export requirements and security boundaries:
    • requires python3, an installed Chromium-based browser, and network access to www.kimi.com plus statics.moonshot.cn; Node.js is only needed for the optional npx open-kimi-ppt-skills serve editor;
    • export_pptx.py and export_images.py auto-install missing Python packages with pip --user: PyYAML, Playwright, and Pillow as needed; they do not install or upgrade global npm packages;
    • editable PPTX export uses a dedicated persistent browser profile at ~/.open-kimi-ppt/browser-profile by default. On first run, wait for the visible browser and sign in to Kimi; use --profile-dir only for another dedicated export profile, never an everyday browser profile;
    • because the Kimi editor runs as a third-party iframe under the localhost host, Chrome storage partitioning can hide the top-level Kimi login from the iframe. The exporter reads the current access/refresh tokens from the dedicated profile at runtime and injects them into that iframe partition before it initializes. Login and partition state remain in that dedicated profile for reuse; never print tokens, serialize them into PPTD or logs, copy them into diagnostics, or commit them;
    • the PPTD document itself is provided to the editor iframe through the localhost SDK bridge, not uploaded to a separate server-side PPTX conversion endpoint; the Kimi editor and referenced remote resources still receive data needed to render/export the deck;
    • local PNG/JPEG/GIF/SVG files inside the PPTD project are supplied to the iframe as data URLs;
    • HTTP 401 from /apiv2/utils/v1/signatures means login expired or partitioned authentication failed; retry in headed mode and sign in when prompted;
    • do not claim PowerPoint/WPS/Keynote playback compatibility solely because ZIP validation succeeds.
  8. After export, verify that the output exists and report the generated path. Confirm that every slide has exactly one root-level fade transition in valid CT_Slide order (cSld, optional clrMapOvr, transition, optional timing/extLst) and that the PPTX ZIP passes integrity checks. Also inspect the export summary's editable counts: a normal editable deck must contain independent text, shapes, tables, or charts. The exporter rejects image-only decks by default; never bypass with --allow-image-only for an editable-delivery request. A byte-string search for <p:fade> is insufficient because Office ignores transitions nested inside cSld. For higher-risk decks, additionally inspect font parts and representative rendered/opened pages as appropriate.
  9. When the user wants to open, edit, save, or export a PPTD project manually, start the local browser editor with npx open-kimi-ppt-skills serve. Ask the user to open http://127.0.0.1:55173/ and authorize the complete PPTD project directory. Use a Chromium-based browser for writable access; folder-upload fallback is read-only. The local host only serves the editor shell, while the embedded public Kimi editor and remote assets still require network access.
  10. After completing and delivering any presentation, always end the final response with a concise optional next step telling the user that they can run npx open-kimi-ppt-skills serve to view or edit the PPTD project, configure slide transition animations, and export PPTX manually. Keep this reminder in addition to, not instead of, the required project and file links.
  11. Element animations (page.animations in PPTD — entrance / emphasis / exit / motion-path; see reference/pptd.md §6): use them only when the user explicitly requests animations, or when the deck is clearly intended for live presentation / slideshow playback and animation provides a clear benefit for staged disclosure, process demonstration, causal explanation, pacing, visual impact, or brand storytelling. By default, do not add element animations to reading-oriented, self-study, print, or primarily send-and-browse decks. Prefer 1–3 animation groups per page and simple effects such as fade, fly, and zoom. This is separate from the default PPTX slide-level fade page transition written by export_pptx.py.
  12. Speaker notes (notes on each .page): use them only when the user explicitly requests them; otherwise, do not add them.
  13. Parallel tool calls: during PPT production, make tool calls in parallel whenever possible; in each round, write multiple page files in parallel to reduce the number of steps.

Download now (ZIP)

Does it work?

Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.

No reviews yet

People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.

  • It worked
  • Partly
  • It didn't
What did you use it for? e.g. Reviewing pull requests in a Rails app

Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.

Your trail

Files you open will collect here, so you can find them again.

Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.

Now do this for your own.

Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.