Getting it into your agent
One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.
npx skills add Shimonimposed141/powerpoint-skill --skill powerpoint-slidesgit clone --depth 1 https://github.com/Shimonimposed141/powerpoint-skillWrote this? Show the measurements
A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.
[](https://agentmods.dev/skills/shimonimposed141/powerpoint-skill/powerpoint-slides)<a href="https://agentmods.dev/skills/shimonimposed141/powerpoint-skill/powerpoint-slides"><img src="https://agentmods.dev/badge/skills/shimonimposed141/powerpoint-skill/powerpoint-slides/github.svg" alt="Measured on agentmods" height="20"></a>Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.
<a href="https://agentmods.dev/skills/shimonimposed141/powerpoint-skill/powerpoint-slides"><img src="https://agentmods.dev/badge/skills/shimonimposed141/powerpoint-skill/powerpoint-slides.svg" alt="Reviewed on agentmods" width="80" height="20"></a>What it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5.1 | $0.00203 | $0.12615 |
| Opus 5 | $0.00102 | $0.06307 |
| Sonnet 5 | $0.00041 | $0.02523 |
| Haiku 4.5 | $0.00020 | $0.01261 |
Grade A, and why
powerpoint-slides scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 9d ago.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Nothing flagged
None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.
This is a copy
100% identical to powerpoint-slides — 0 lines differ, which has more behind it and is treated as the original. This page carries a canonical link to it rather than competing with it.
How it starts
The opening of the file, as written. The whole thing — 827 lines — stays where its author put it; the contents beside it link to each section on GitHub.
PowerPoint Slides Workflow
Academic PowerPoint presentation skill. Full lifecycle: create → compile → review → polish → verify.
Execution model: Claude writes a PptxGenJS (Node.js) script → executes → .pptx.
Math formulas: OMML (native math, default) or LaTeX → PNG/SVG pipeline (paragraph-mode fallback).
0. Quick Reference
| Task | Command | Description |
|---|---|---|
| Create from paper | create [topic] |
Full Phase 0-5 pipeline |
| Execute JS script | compile [file.js] |
Run script, produce .pptx |
| Proofread | review [file.pptx] |
Grammar, typos, consistency |
| Visual audit | audit [file.pptx] |
Per-slide layout inspection |
| Teaching quality | pedagogy [file.pptx] |
13 pedagogical patterns |
| Full review | excellence [file.pptx] |
5 parallel agent review |
| Visual check | visual-check [file.pptx] |
PDF→image systematic check |
| Validate metrics | validate [file.pptx] [duration] |
Slide count, file size |
| Extract figures | extract-figures [file.pdf] [pages] |
Extract paper figures for slides |
Parse $ARGUMENTS to determine which action to run. If no action specified, ask.
1. Hard Rules (Non-Negotiable)
- Motivation before formalism — every concept starts with "Why?" before "What?". Never drop a definition without context.
- Worked example within 2 slides — every definition must have a concrete worked example within 2 slides of its introduction.
- Telegraphic style — keyword phrases, not full sentences. Slides are speaker prompts, not manuscripts. Exception: one framing sentence per slide to set context.
- Every slide earns its place — must contain at least one substantive element (formula, diagram, table, theorem, algorithm, chart). A slide with only 3 short bullets and nothing else must be merged or enriched.
- Max 2 accent cards per slide — more dilutes emphasis. Accent cards are colored boxes, callout shapes, or highlighted regions. Demote lower-priority items to plain text.
- Reference slide — the second-to-last slide (before Thank You) must list key cited works. Include the primary paper and 3-5 most relevant references.
- Color-blind safe palette — blue+orange preferred, never red+green for binary contrasts. WCAG AA contrast ratio ≥ 4.5:1 for text on backgrounds. Semantic colors defined in theme.
- Font size hierarchy —
Fconstant object defines default baselines: cover 48pt, section 36pt, title bar 22pt, body 15pt, small 12pt, caption 11pt, cardTitle 18pt, tblHead 13pt, tblCell 12pt. Never go below 10pt. When a card or region has sparse content (text fills <50% of available area), scale up by 2-4pt in the QA fix pass. - Backup slides — 3-5 after Thank You, separated by an appendix divider slide. For anticipated questions: detailed proofs, extended comparisons, additional data.
- Verify after every task — execute JS →
soffice→ PDF → image inspection. No task is complete without visual verification. - No AI-signature accent lines — never place decorative lines directly under titles. This is a tell-tale of AI-generated slides and looks unprofessional.
- Layout diversity — never use the same layout type for 3+ consecutive slides. Alternate among: full-width, two-column, formula-centered, stat-callout, icon-grid, timeline, table, chart, etc.
- Formula rendering — OMML (native PowerPoint math) for display/inline formulas (default). PNG@600DPI or SVG for paragraph-mode formulas (fallback). Blurry image formulas unacceptable.
- 16:9 layout, 0.5" margins —
LAYOUT_16x9(10" x 5.625"). Maintain 0.5" breathing room on all four sides. Content area: 9" x 4.625". - Never reuse PptxGenJS option objects — the library mutates objects in-place (e.g., converting shadow values to EMU). Always create fresh objects per call. Use factory functions:
const makeShadow = () => ({...}). - No # prefix on hex colors — use
"FF0000"not"#FF0000". The#prefix corrupts the output file silently. - Visual theme consistency — the chosen palette applies globally: slide backgrounds, text colors, formula foreground, chart colors, accent card fills, divider lines. No off-theme colors.
- No Unicode math approximations — never use Unicode subscripts (₀, ₁), superscripts (ᵖᵉ), or special math symbols (∑, ∏, ∈, ∀, ∝) as plain text inside cards or text boxes. All mathematical notation — including inline formulas, variable-with-subscript, Greek letters in equations — must be rendered via OMML (preferred) or the LaTeX image pipeline (for paragraph mode). For card bodies that mix text and math, use OMML placeholders for individual formulas or render the entire body as a single LaTeX image. The only exceptions: simple single Latin letters (x, y, n) and plain numbers without operators.
- Vertical content distribution — content below the title bar must span ≥75% of
CHvertically. If all elements end in the upper half, something is wrong: increase card heights, add spacing, scale up fonts, or add a summary/insight card at the bottom. Every content slide should feel "filled" — no large empty patches below the last element. - Content density lower bounds — a slide with ≤3 short text-only bullets (no formula, diagram, table, or card) is too sparse — merge with an adjacent slide or enrich with a visual element. Pure text-only slides should be ≤20% of the total deck. Each card must contain enough text to fill ≥40% of its interior area; if not, scale up font by 2-4pt or merge cards.
- Boundary validation — every element must satisfy
y + h ≤ SH - M(5.125"). During script generation, mentally verify each element's bottom edge before writing it. Common traps: stacking cards below a table without accounting for table rendered height;addCardFormulawith a formula image taller than the card body area; two-row card layouts where the second row overshoots. When usingaddCardFormula, the formula height parameterfHmust be ≤cardH - 0.75(title area). If content cannot fit, reduce card height, shrink formulatargetH, or split across two slides. The visual QA agent must specifically flag any element whose bottom edge is clipped by the slide boundary. - Reference slide formatting — strictly single-column layout. Divide
CHequally among N references, each entry vertically centered in its row. UseF.body.sizefont (orF.small.sizeif many entries). No divider lines, no decorative elements — just evenly distributed text rows filling the page. If references exceed 8 per page, continue on a second reference slide. The reference slide must look evenly filled — no large blank patches at top or bottom. - OMML post-processing & sizing — after PptxGenJS generates the .pptx, run
inject_omml.pyto replace{{MATH:id}}placeholders with native OMML math. Verify zero residual{{MATH:placeholders in the output. OMML formulas display as blank or distorted in LibreOffice — this is expected and not a bug. Only check image formula clarity in visual QA. CRITICAL OMML sizing rule: OMML formulas render at the text box's font size and do NOT respect the text box height constraint — tall constructs like\sqrt{},\frac{}{},\sum,\prodwill visually overflow the text box. To prevent overlap: (a) never place an OMML formula directly above or below a card/table with tight spacing — leave ≥0.15" extra vertical gap per level of nesting (fractions, roots, large operators); (b) for complex formulas with roots, fractions, or stacked operators, prefer image rendering ("render": "image"in formulas.json) which respects exact pixel dimensions; (c) when usingaddMathTextwithF.body.size(15pt), expect the rendered height to be ~0.4" for simple formulas but up to 0.7" for formulas with\sqrt{}or\frac{}{}; (d) when an OMML formula must appear between two elements, compute spacing as if the formula is 1.5–2× thetargetHparameter. - Diagram engine selection — Graphviz for structural/flow diagrams (architecture, dependency, comparison, tree). Mermaid for behavioral/temporal diagrams (sequence, state, Gantt, ER). TikZ only for math-intensive or paper-faithful reproductions. Don't use Graphviz for sequence diagrams, don't use Mermaid for complex node layouts.
- Diagram theme consistency — all rendered diagrams must use the current theme's colors. Node fill =
cardFillequivalent, borders =ac.pos, text =tx.pri. Graphviz/Mermaid default colors (blue/black) must never appear in final output. Pass--themetorender_diagrams.py. - Text overflow prevention & padding — PptxGenJS text boxes do NOT clip overflow — text that exceeds the box renders outside, overlapping elements below. Three mandatory protections: (a)
shrinkText: trueon ALL text boxes (maps to<a:normAutofit/>). NEVER useautoFit: true— it maps to<a:spAutoFit/>which expands the shape. (b) Card text usesconst px = x + 0.25, pw = w - 0.4— giving 0.19" clear of accent bar and 0.15" from right edge. Title:(px, y+0.1, pw, 0.4), body:(px, y+0.48, pw, h-0.62)withmargin: [2, 0, 8, 0]. (c) Vertical gap discipline: every element placed below another must start ≥0.1" after the previous element's bottom. Usegap()helper to verify at script-generation time. StandaloneaddTextcalls between cards/formulas are the #1 source of overlap bugs — always compute y from the preceding element's known bottom, never approximate. Content limit: card body should have ≤4 short lines per inch of body height. If more text is needed, increase card height or split content. - Figure attribution — figures extracted from papers must include source attribution (
Source: Author et al., Year) viaaddFigure()caption. Width <800px requires warning to user about projection blur. Never extract tables — rebuild with PptxGenJSaddTable(). - Visual-first planning — audiences grasp structure through visual anchors, not bullet lists. During Phase 2, ask for each slide: "Can the audience understand this in 10 seconds from text alone?" If not, the slide needs a visual element (diagram, table, chart, or figure). Common signals: multi-step processes, component relationships, data comparisons, hierarchies, numerical trends — these almost always need visuals rather than prose. Phase 2 self-check: every section has ≥1 non-formula visual element; slides with zero visuals (no diagram, table, chart, or figure) must stay ≤30% of the deck.
- Table cell formulas — math notation inside table cells (
O(n),ε,∑_{i}, etc.) must use OMML placeholders ({{MATH:id}}), never Unicode approximations or plain text. Add each cell formula toformulas.jsonwith"render": "omml". OMML inherits the cell's font size (F.tblCell.size= 12pt) automatically. For complex constructs (fractions, large operators, stacked expressions) that would overflow cell height, use image rendering ("render": "image") withtargetH≤rowH - 0.08. Pass cell objects toaddTablefor OMML cells:{text: "{{MATH:f42}}", options: {}}. - Long table pagination — tables exceeding the per-slide row limit (8-10 data rows) must be split across slides. Each continuation slide repeats the header row and appends " (cont'd)" to the slide title via
addTableCont(). Split at logical row group boundaries (e.g., between algorithm families, metric categories, dataset groups) — never mid-group. The last page should have ≥3 data rows; if fewer, merge with the previous page. Each page gets its own caption/takeaway if the subset tells a different story. - Figure aspect-ratio-aware layout — when embedding extracted paper figures, choose layout based on the figure's width/height ratio (from manifest metadata or measured dimensions): ratio > 1.6 (wide) → full-width centered via
addFigure(). Ratio ≤ 1.6 (normal/tall) → figure-left + text-right viaaddFigureWithText(). Never stretch or crop figures to fit — always preserve original aspect ratio. ComputefigRatiofrom manifest:width_px / height_px(PNG) orwidth_pt / height_pt(SVG). Cap figure width at 60% of CW in side-by-side layout to leave room for explanation bullets. - Alignment consistency — elements of the same type on the same slide (e.g., multiple cards, multiple bullets, multiple formulas) should share identical x-coordinates and consistent widths. Tolerance: ≤0.05" deviation. The
check_overlaps.pyalignment check (run in Phase 5) flags misalignment. Common violations: card columns with slightly different x-offsets, formula images that aren't centered on the same axis, bullet lists at inconsistent left margins. When usingcols2()or manual column positioning, always derive x from the same constant — never approximate. - Speaker notes (optional) — if the user requests speaker notes or the presentation is for a talk where notes would help (e.g., journal club, defense), generate notes per slide via
addNotes(slide, text). Notes should be telegraphic talking points (3-5 per slide), not full scripts. Include: key message, transition to next slide, potential audience questions. Notes are embedded in the .pptx Notes pane — visible in Presenter View. This is opt-in: only generate when user explicitly requests or when asked during Phase 1.
What ships with it
11 files beside SKILL.md in the same directory: the scripts, references and assets a skill reads on demand. Not counted in the per-session cost; read them before you install if any of them is executable.
- diagram-rendering.md 8.6 KB
- formula-rendering.md 7.4 KB
- pptxgenjs-reference.md 20 KB
- references/powerpoint_skill_v1.1.zip 567 KB
- references/themes.md 20 KB
- scripts/check_overlaps.py 15 KB runs code
- scripts/inject_omml.py 10 KB runs code
- scripts/render_diagrams.py 13 KB runs code
- scripts/render_latex.py 8.2 KB runs code
- scripts/soffice.py 1.3 KB runs code
- scripts/thumbnail.py 2.6 KB runs code
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- 9d ago First seen · 827 lines · 203 tokens per session scan A ce0b22214141
powerpoint-slides is a skill published in the GitHub repository Shimonimposed141/powerpoint-skill (4 stars, last pushed 2d ago), licensed MIT. It adds 203 tokens to every session and 12,615 once invoked, about $0.0010 per session on Opus 5. A static security scan graded it A with 0 findings. It is 100% identical to powerpoint-slides, differing in 0 lines, and is treated as a copy.
Other skills, from other repositories
audio-transcribe
Transcribe speech from audio files (mp3, m4a, wav, ogg, flac, webm) to text using the local whisper CLI — no API key. Use whenever a task hinges on the spoken content of an audio attachment.
ffmpeg
Process audio and video with the ffmpeg / ffprobe CLIs — convert, trim, extract audio, resize, change format, make GIFs, inspect media. Use for any audio/video transformation.
imagemagick
Edit and convert images with the ImageMagick magick CLI — resize, crop, convert format, compress, rotate, montage, annotate. Use for any still-image transformation.
image-taste-frontend
Elite frontend image-direction skill for generating premium, artistic, implementation-friendly website design references. Uses combinatorial variation to avoid repetitive AI aesthetics, enforces cinematic hero minimalism, strong hierarchy, generous spacing, image-led composition, and anti-slop visual discipline. For…
heygen-cli
Create AI videos, manage avatars, translate videos, and download results via the HeyGen API. Use when an agent needs to generate videos from text prompts, create avatar-based videos, translate existing videos, or automate video production workflows.
genmedia
Run a fal.ai model end-to-end with the genmedia CLI. Use this when the user asks to generate an image, video, or audio; convert media; upscale or restyle; run any fal.ai model; or "use genmedia" for a task. Guides discovery, schema inspection, input preparation, execution, and result handling.