ppt-generator

ppt-generator is a skill for Claude Code from Dannykkh/skill-olympus. It costs 49 tokens per session (1,769 once invoked), scanned A, original, MIT.

A Python-based tool for creating PowerPoint presentations from templates or the default PowerPoint theme. It can create slides containing text, charts, tables, and images.

In plain words
What is it for?
Use it to generate presentation decks, apply a supplied template, and add charts, tables, or images to slides.
Why use it?
It reduces the manual effort needed to turn written content or data into a .pptx presentation.

Skill for Claude Code

Written for Claude Code: shipped in a Claude Code plugin.

Part of the skill-olympus plugin — 98 skills, 7 commands, 42 agents, 5 MCP servers shipped together

Good fit Use it to generate presentation decks, apply a supplied template, and add charts, tables, or images to slides.

Compare 6 skills from other repositories ↓
Install with agentmods
npx agentmods add skills/dannykkh/skill-olympus/ppt-generator
Install

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.

Any agent
npx skills add Dannykkh/skill-olympus --skill ppt-generator
Clone the repo
git clone --depth 1 https://github.com/Dannykkh/skill-olympus

Made for: Claude Code.

Or install skill-olympus, the plugin that ships this one along with the rest of its 98 skills, 7 commands, 42 agents, 5 MCP servers.

Wrote 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.

agentmods badge for ppt-generator

README.md
[![agentmods](https://agentmods.dev/badge/skills/dannykkh/skill-olympus/ppt-generator/github.svg)](https://agentmods.dev/skills/dannykkh/skill-olympus/ppt-generator)
Your own site
<a href="https://agentmods.dev/skills/dannykkh/skill-olympus/ppt-generator"><img src="https://agentmods.dev/badge/skills/dannykkh/skill-olympus/ppt-generator/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.

agentmods 80×15 button for ppt-generator

Your own site · 80×15
<a href="https://agentmods.dev/skills/dannykkh/skill-olympus/ppt-generator"><img src="https://agentmods.dev/badge/skills/dannykkh/skill-olympus/ppt-generator.svg" alt="Reviewed on agentmods" width="80" height="20"></a>
Per session 49 Skills are progressive disclosure: only the name and description are preloaded; the body loads when the skill is used.
When invoked 1,769 The whole file, excluding the scripts and references it only reads on demand.
Security scan A 0 findings. A grade says what 26 rules found in the file — not that it is safe.
Origin original No closer match found in the catalogue.
Token cost

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.

ModelPer sessionOnce invoked
Fable 5.1 $0.00049 $0.01769
Opus 5 $0.00024 $0.00885
Sonnet 5 $0.00010 $0.00354
Haiku 4.5 $0.00005 $0.00177

Measured 7d ago against content hash ef0b7d029f90, method: parsed. Prices are Anthropic first-party input rates as of 2026-09-10, from the pricing page.

Security

Grade A, and why

ppt-generator 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 7d ago.

The scan reads SKILL.md. This mod also ships 1 executable file (scripts/pptx_helpers.py), listed below but not scanned — reading those needs a real analyzer, not pattern matching.

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.

skills/ppt-generator/SKILL.md · 195 lines

How it starts

The opening of the file, as written. The whole thing — 195 lines — stays where its author put it; the contents beside it link to each section on GitHub.

PPT Generator

python-pptx를 활용하여 템플릿 기반의 전문적인 PowerPoint 프레젠테이션을 생성합니다.

사용법

/ppt-generator 분기별 실적 보고서 PPT 만들어줘
/ppt-generator --template company.pptx 신제품 소개 자료
/ppt-generator 이 마크다운 내용으로 PPT 생성해줘

요구사항

pip install python-pptx Pillow

템플릿

번들 템플릿 파일은 제공하지 않습니다. python-pptx의 기본 테마로 생성하거나, 직접 만든 .pptx를 템플릿으로 전달할 수 있습니다.

PPTGenerator()                       # 기본 테마
PPTGenerator("my-template.pptx")     # 사용자 제공 템플릿

template_path가 없거나 파일이 존재하지 않으면 기본 테마로 폴백합니다(scripts/pptx_helpers.py:42-45).

핵심 코드

기본 PPT 생성

from pptx import Presentation
from pptx.util import Inches, Pt, Emu
from pptx.dml.color import RGBColor
from pptx.enum.text import PP_ALIGN, MSO_ANCHOR
from pptx.enum.shapes import MSO_SHAPE
from pathlib import Path

class PPTGenerator:
    """템플릿 기반 PPT 생성기"""

    def __init__(self, template_path: str | None = None):
        if template_path and Path(template_path).exists():
            self.prs = Presentation(template_path)
        else:
            self.prs = Presentation()
        self._setup_slide_layouts()

    def _setup_slide_layouts(self):
        """슬라이드 레이아웃 매핑"""
        self.layouts = {
            'title': 0,           # 제목 슬라이드
            'title_content': 1,   # 제목 + 내용
            'section': 2,         # 섹션 헤더
            'two_content': 3,     # 2단 레이아웃
            'comparison': 4,      # 비교
            'title_only': 5,      # 제목만
            'blank': 6,           # 빈 슬라이드
            'content_caption': 7, # 내용 + 캡션
            'picture_caption': 8, # 그림 + 캡션
        }

    def add_title_slide(self, title: str, subtitle: str = ""):
        layout = self.prs.slide_layouts[self.layouts['title']]
        slide = self.prs.slides.add_slide(layout)
        slide.shapes.title.text = title
        if subtitle and len(slide.placeholders) > 1:
            slide.placeholders[1].text = subtitle
        return slide

    def add_content_slide(self, title: str, bullets: list[str]):
        layout = self.prs.slide_layouts[self.layouts['title_content']]
        slide = self.prs.slides.add_slide(layout)
        slide.shapes.title.text = title
        body = slide.placeholders[1]
        tf = body.text_frame
        tf.clear()
        for i, bullet in enumerate(bullets):
            if i == 0:
                tf.paragraphs[0].text = bullet
            else:
                p = tf.add_paragraph()
                p.text = bullet
                p.level = 0
        return slide

    def add_two_column_slide(self, title: str, left: list[str], right: list[str]):
        layout = self.prs.slide_layouts[self.layouts['two_content']]
        slide = self.prs.slides.add_slide(layout)
        slide.shapes.title.text = title
        for placeholder_idx, items in [(1, left), (2, right)]:
            tf = slide.placeholders[placeholder_idx].text_frame
            tf.clear()
            for i, text in enumerate(items):
                if i == 0:
                    tf.paragraphs[0].text = text
                else:
                    p = tf.add_paragraph()
                    p.text = text
        return slide

    def add_image_slide(self, title: str, image_path: str, caption: str = ""):
        layout = self.prs.slide_layouts[self.layouts['title_only']]
        slide = self.prs.slides.add_slide(layout)
        slide.shapes.title.text = title
        slide.shapes.add_picture(image_path, Inches(1.5), Inches(2), width=Inches(7))
        if caption:
            txBox = slide.shapes.add_textbox(Inches(1), Inches(6.5), Inches(8), Inches(0.5))
            txBox.text_frame.paragraphs[0].text = caption
            txBox.text_frame.paragraphs[0].alignment = PP_ALIGN.CENTER
        return slide

    def save(self, output_path: str):
        self.prs.save(output_path)
        print(f"PPT 저장 완료: {output_path}")

Read the full file on GitHub · 195 lines

Files

What ships with it

2 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.

Changes

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.

  1. 7d ago First seen · 195 lines · 49 tokens per session scan A ef0b7d029f90

Subscribe to this mod's changes

ppt-generator is a skill published in the GitHub repository Dannykkh/skill-olympus (5 stars, last pushed today), licensed MIT. It adds 49 tokens to every session and 1,769 once invoked, about $0.0002 per session on Opus 5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-09-03.

Related

Other skills, from other repositories

capture-pdf

Website-to-PDF capture (all pages + interactive states). Use when: "capture", "pdf", "print", "screenshot", "capture pages".

claude-hangar/claude-hangar · 36 tokens

presentations

Use when building, theming, or exporting a presentation deck — pitch, sales, keynote, board/QBR, leave-behind one-pager — from slide structure to a token-based theme to PDF or editable PPTX (Marp, Slidev, python-pptx). NOT the words (that is marketing), NOT the visual tokens (that is design), NOT the investor story…

ericrisco/rsc-harness · 93 tokens

powerpoint-mcp

PowerPoint MCP Server skill for Windows presentation automation via a live PowerPoint desktop instance (COM/PIA). Use when an assistant needs rich MCP tools to create, open, build, format, and export PowerPoint (.pptx/.pptm) presentations — slides, shapes, text boxes, tables, native charts, images, audio, video…

sbroenne/mcp-server-powerpoint · 112 tokens

presentation

Generate PowerPoint (PPTX) presentations from a topic, outline, or content file. Creates professional slides using python-pptx with consistent theming and typography. Modes: [topic] (from scratch), from [file] (from markdown), --slides N, --theme dark|light|corporate, --outline-only, --out [path], --lang [code].

greglas75/zuvo · 80 tokens

audit-orchestrator

Universal Pre-Scan → Analysis → Optimization → Report orchestrator for ANY project type — web apps (Astro/SvelteKit/Next), infrastructure/homelab repos, CLI tools, libraries, backend services, monorepos, data/ML projects, docs. Self-detects project type and runs the matching analysis track. Session state lives in…

claude-hangar/claude-hangar · 187 tokens

audit

Systematic website audit (stack detection, 9 phases). Use when: "audit", "website audit", "site audit", "check website".

claude-hangar/claude-hangar · 32 tokens