CtrlK
BlogDocsLog inGet started
Tessl Logo

pptx

Create polished, editable PowerPoint files for slide decks, presentations, and explicit .pptx requests.

69

Quality

85%

Does it follow best practices?

Run evals on this skill

Adds up to 20 points to the overall score

View guide

SecuritybySnyk

Passed

No findings from the security scan

SKILL.md
Quality
Evals
Security

PPTX

Create the requested presentation in /workspace with the preinstalled python-pptx package. Never install or download dependencies.

Authoring rules

  • Use a 16:9 presentation unless the user requests another aspect ratio. Set prs.slide_width and prs.slide_height once; slide size is deck-wide.
  • Use a consistent layout, palette, type scale, spacing system, and placement grid across the deck. Prefer the default template's layouts and placeholders over unrelated free-positioned text boxes.
  • Keep at least 0.5 inches of outer margin and 0.3 inches between unrelated content regions. Define title, subtitle, body, and footer regions once and reuse them; title and subtitle regions must not overlap.
  • Give every slide one clear purpose. Keep body copy concise: normally no more than six bullets, with short phrases rather than paragraphs.
  • Default to Arial for fit-sensitive text; LibreOffice substitutes the metric-compatible Liberation Sans installed in the sandbox. Use Times New Roman/Liberation Serif when a serif is appropriate, and Noto for scripts they do not cover. If the user requires another font, leave about 10% extra width and height because LibreOffice and PowerPoint may use different metrics.
  • Use 32–40 pt titles, 18–24 pt subtitles, and body text of at least 18 pt. Set text_frame.word_wrap = True and explicit text-frame margins; use zero margins where text must align exactly with a nearby shape.
  • Do not use PowerPoint runtime autofit (text_frame.auto_size) because PowerPoint and LibreOffice can resolve it differently. For a single-style title or subtitle, use text_frame.fit_text(...) with an explicit Liberation font file so the fitted size is written into the PPTX. If a title must shrink below 28 pt or a subtitle below 16 pt, shorten it, enlarge its region, or split the content across slides instead of accepting the smaller text.
  • Keep every shape on the slide canvas. Intentional edge bleed may cross a slide boundary, but do not park unused shapes off-canvas or hide backup slides.
  • Preserve image aspect ratios. When calling add_picture, derive the missing dimension from the source image instead of setting both width and height to unrelated values. Extended crop values are legal, but the left and right crop fractions must sum to less than 1, as must the top and bottom fractions, so some of the image remains visible.
  • Prefer editable native text, shapes, tables, and charts. Avoid SmartArt and elaborate gradients whose LibreOffice conversion is unreliable.

Build the complete deck before verification. Before saving the PPTX, run local assertions that name the slide and shape when they fail:

  • required slide count and content are present;
  • title and subtitle regions do not overlap;
  • area shapes have positive width and height, while a connector may have one zero extent but not two;
  • every shape intersects the slide canvas; and
  • fitted title and subtitle text remains above the minimum sizes above.

Generate the complete PPTX and pass those local checks before verification. Do not call verify_artifact after each slide because each call renders and reviews the whole draft again.

Revisions

Start an in-place revision with load_artifact_for_revision. Open primary_path with python-pptx, edit that current deck directly, and save the result to expected_output_path. Preserve unaffected slide masters, layouts, notes, relationships, and media. Use markdown_path as textual context, not as a replacement deck. Do not reconstruct slides with vision; verify_artifact may use vision after the revision is written.

Save the verified revision with the returned artifact_id and expected_generation. A changed title, filename, or design is still the same artifact unless the user explicitly asks for a separate copy.

Verify and save

Call verify_artifact(path=output_path). Warnings are advisory. If it reports blocking findings, fix all reported blockers together, rerun the local checks, regenerate once at the same output path, and reverify. If a blocker remains, stop and explain it rather than entering another automatic rewrite loop.

Call save_artifact only when the latest verification of those exact PPTX bytes returned status="verified", using save_artifact(path=output_path, title="...", markdown_representation="..."). A failed verification invalidates every earlier pass: never attempt to save afterward. Working files may use any paths; no source file, preview file, or matching filename stem is part of the publication contract. The Markdown representation must faithfully contain the deck's substantive text for accessibility and search.

Repository
MODSetter/SurfSense
Last updated
First committed

Is this your skill?

If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.