build-presentation
Skill0 starsChanged 4 months agoMITView on GitHub
Create polished, on-brand PowerPoint decks. Use whenever building, generating, or overhauling a slide deck / presentation / PPTX. Bakes in template-driven sizing, theme-only colors, auto-diagrams, per-slide visual design with mocks/placeholders, and mandatory render-and-inspect verification.
1 other project uses a version of this.
Adopted by
Most recently taken up by
- olivMertens/copilot-skillstheir own version, first seen Nov 8, 2026
Other versions1 project uses a version of this.
Word for word · 0
None found.
Edited · 0
None found.
Wrote their own version · 1
- olivMertens/copilot-skills★ 1same name
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
We split this skill into the rules it gives an agent
11 rules. About 0 are common, 8 are distinctive, and 3 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈8
Distinctive · estimate
This author's own choices. Worth a look.
3
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 14
If no template exists, create one deliberately once and reuse it — a blank deck has no theme to anchor colors and fonts, which defeats Step …
- Distinctive: line 18
Never invent a color palette: Every fill, line, text, chart, and diagram color must come from the template's own theme.
- Very specific: line 23
After building, audit every shape's fill/line/font against the theme set and report "0 non-theme colors" or fix what leaked.
- Distinctive: line 39
Check the actual slide size before choosing font sizes.
- Very specific: line 47
Bullet size: use buSzPct val="100000" (never buSzPts) so the dot scales with text.
- Distinctive: line 55
Treat every slide as a design problem.
- Distinctive: line 60
Don't over-diagram: a pure statement slide or section divider stays clean.
- Distinctive: line 61
Push detail to speaker notes: If the slide's title + visual elements already convey the message, put the supporting detail in the slide's …
- Very specific: line 65
Don't trust a layout is "blank" from placeholder count alone — templates bake mascots/sparkles/watermarks into layout/master backgrounds.
- Distinctive: line 72
Keep framing consistent and lead with the strategic objective the work serves, then the specifics.
- Distinctive: line 84
Look at every PNG and confirm: no background junk, readable contrast, nothing clipped or overlapping, fonts big enough.
≈ “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.
Files
Build Presentation
Author a slide deck that is on-brand, visually designed per slide, and verified by eye before you call it done. Follow all of it, every time.
Step 0 — Pick the template (never start blank)
Choose the base template up front and load it — do NOT create a blank Presentation(). Keep a small map of your own templates (corporate, summit, etc.) and pick by deck type. Load with Presentation('<template path>'), not a blank deck.
If no template exists, create one deliberately once and reuse it — a blank deck has no theme to anchor colors and fonts, which defeats Step 1.
Step 1 — Extract the theme (colors + font) BEFORE drawing anything
Never invent a color palette. Every fill, line, text, chart, and diagram color must come from the template's own theme.
- Unzip the .pptx and read
ppt/theme/theme1.xml→<a:clrScheme>(dk1, lt1, dk2, lt2, accent1–6, hlink, folHlink) and<a:fontScheme>for the typeface. Use ONLY those hexes + that font. - Missing semantic role (e.g. no green/grey)? Reuse an existing theme color for that semantic — never add a new one.
- Auto-contrast: compute luminance of a fill and place
dk1orlt1text on it — don't guess. - After building, audit every shape's fill/line/font against the theme set and report "0 non-theme colors" or fix what leaked.
# Extract theme colors and fonts
unzip -p deck.pptx ppt/theme/theme1.xml | python3 -c "
import sys, re
xml = sys.stdin.read()
for m in re.finditer(r'<a:(dk1|lt1|dk2|lt2|accent[1-6]|hlink|folHlink)>.*?(?:srgbClr val=\"([0-9A-Fa-f]{6})\"|sysClr[^>]*lastClr=\"([0-9A-Fa-f]{6})\")', xml):
print(m.group(1), '#'+(m.group(2) or m.group(3)))
for m in re.finditer(r'<a:(majorFont|minorFont)>.*?typeface=\"([^\"]+)\"', xml):
print(m.group(1), m.group(2))
"Step 2 — Size for your template's slide dimensions
Check the actual slide size before choosing font sizes. Standard 16:9 decks are 10" × 7.5" (or 13.3" × 7.5"); some corporate templates use double-scale slides (e.g. 20" × 11.25"), in which case all fonts scale up proportionally. Text that is unreadable when projected gets decks rebuilt.
Guidance for a standard 13.3" × 7.5" deck (scale up for double-size templates):
- Title: 28–36pt bold · Subtitle: 18–22pt · Body/bullets: 14–18pt, never below 12pt
- Bullet spacing:
space_before=Pt(6),space_after=Pt(8) - Max 6–8 bullets per body area. More content → split across slides. Never pack 15+ bullets on one slide.
- Bullet structure: section headings/labels inside a body placeholder (larger font) use
buNone(plain bold text); only real list items getbuChar. Never bullet a heading. - Bullet size: use
buSzPct val="100000"(neverbuSzPts) so the dot scales with text. - Titles: Capitalize All Slide Titles for consistency.
Pick layouts by inspecting the template's own slide layouts
Enumerate ppt/slideLayouts/slideLayoutN.xml and map each to a use (title slide, single-body, two-column comparison, section divider, title+body+footer). Match the layout to each slide's message — don't default everything to title + bullets. Watch out for footer-strip placeholders (very short height ~0.5") — never use them for body content.
Step 3 — Design each slide to communicate (not default to bullets)
Treat every slide as a design problem. Pick the layout that best carries that slide's message. Prefer well-structured visual layouts, and add mocks / placeholders wherever possible.
- Choose per message: two-column, comparison table, timeline, diagram + caption, quote block, big-number stat, UI mock.
- Add mocks/placeholders liberally: UI mockup boxes, chart/graph shells with representative shape, labeled screenshot placeholders ("[Dashboard: metric here]"), diagram frames.
- Auto-add diagrams without being asked wherever they strengthen the message — architecture, flows, timelines/roadmaps, comparison visuals. Use Mermaid (rendered to PNG) for flows/architecture, python-pptx shapes for timelines/roadmaps, tables for comparisons.
- Don't over-diagram: a pure statement slide or section divider stays clean.
- Push detail to speaker notes. If the slide's title + visual elements already convey the message, put the supporting detail in the slide's speaker notes — not on the slide. Keep the slide clean and visual; narration lives in the notes (python-pptx:
slide.notes_slide.notes_text_frame.text).
Step 4 — Layout hygiene (kill template background junk)
- Don't trust a layout is "blank" from placeholder count alone — templates bake mascots/sparkles/watermarks into layout/master backgrounds.
- Inspect
ppt/slideLayouts/slideLayoutN.xmlfor<p:pic>and large decorative<p:sp>; prefer a layout withpic=0and a plain<p:bg>solidFill. - Belt-and-suspenders: on every slide set
cSld showMasterSp="0"AND draw a full-bleed theme-color background rectangle as the first shape.
Step 5 — Language rules
- Match terminology to your audience. For customer-facing decks, use official external product names only; internal decks may use internal names. Keep a name-mapping if your product has both.
- Keep framing consistent and lead with the strategic objective the work serves, then the specifics.
Step 6 — Render and LOOK before declaring done (MANDATORY)
Geometry checks are not enough — they miss baked-in graphics and low-contrast slides. Render to images and visually inspect every slide:
SOFF=/Applications/LibreOffice.app/Contents/MacOS/soffice # adjust per OS
"$SOFF" --headless --convert-to pdf --outdir /tmp/deckpng "<the.pptx>"
pdftoppm -png -r 80 /tmp/deckpng/*.pdf /tmp/deckpng/slide # then view each slide-*.pngLook at every PNG and confirm: no background junk, readable contrast, nothing clipped or overlapping, fonts big enough. Only then say it's done. If soffice isn't installed, say so and flag the deck as unverified.
Definition of done
- Built on a real template (not blank)
- 0 non-theme colors; theme font only
- Fonts sized for the actual slide dimensions (readable when projected)
- Each slide visually designed for its message; mocks/placeholders + diagrams added where useful
- Consistent, audience-appropriate terminology
- No layout/master background junk
- Rendered to images and every slide visually inspected
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
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.

