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 Dannykkh/skill-olympus --skill ppt-generatorgit clone --depth 1 https://github.com/Dannykkh/skill-olympusWrote 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/dannykkh/skill-olympus/ppt-generator)<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.
<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>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.00049 | $0.01769 |
| Opus 5 | $0.00024 | $0.00885 |
| Sonnet 5 | $0.00010 | $0.00354 |
| Haiku 4.5 | $0.00005 | $0.00177 |
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.
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.
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}")
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.
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.
- 7d ago First seen · 195 lines · 49 tokens per session scan A ef0b7d029f90
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.
Other skills, from other repositories
capture-pdf
Website-to-PDF capture (all pages + interactive states). Use when: "capture", "pdf", "print", "screenshot", "capture pages".
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…
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…
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].
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…
audit
Systematic website audit (stack detection, 9 phases). Use when: "audit", "website audit", "site audit", "check website".