Skip to main content

pptx-generator

Generate and edit presentation slides as PPTX files. Also create LinkedIn carousels and manage reusable slide layouts. TRIGGERS - Use this skill when user says: - "create slides for [brand]" / "generate presentation for [brand]" / "make slides for [brand]" - "create a carousel for [brand]" / "linkedin carousel" / "make a carousel about [topic]" - "edit this pptx" / "update the slides" / "modify this presentation" - "create a new layout" / "add a layout to the cookbook" / "make a [type] layout template" - "edit the [name] layout" / "update the cookbook" / "improve the [name] template" - Any request mentioning slides, presentations, carousels, PPTX, or layouts with a brand name Creates .pptx files compatible with PowerPoint, Google Slides, and Keynote. Creates PDF carousels for LinkedIn (square 1:1 format).

ソース情報

リポジトリ
Wirasm/presentation-slides-skill
ソースの最終更新活動
2026年1月16日 07:57
検出された SKILL.md の言語
英語
スター
5
フォーク
1

インストール方法

デフォルトでは、最初にソースを確認する Prompt が選択されています。直接コマンドに切り替えるか、ローカルコピーをダウンロードすることもできます。

ソースファイルを確認

インストールを決める前に、SKILL.md と SkillsMP に表示されている付属ファイルをお読みください。

ファイルエクスプローラー
31 ファイル

SKILL.md を表示中

SKILL.md
ソースの指示 · 読み取り専用プレビュー
name
pptx-generator
description
Generate and edit presentation slides as PPTX files. Also create LinkedIn carousels and manage reusable slide layouts. TRIGGERS - Use this skill when user says: - "create slides for [brand]" / "generate presentation for [brand]" / "make slides for [brand]" - "create a carousel for [brand]" / "linkedin carousel" / "make a carousel about [topic]" - "edit this pptx" / "update the slides" / "modify this presentation" - "create a new layout" / "add a layout to the cookbook" / "make a [type] layout template" - "edit the [name] layout" / "update the cookbook" / "improve the [name] template" - Any request mentioning slides, presentations, carousels, PPTX, or layouts with a brand name Creates .pptx files compatible with PowerPoint, Google Slides, and Keynote. Creates PDF carousels for LinkedIn (square 1:1 format).
# PPTX Slide Generator Generate professional, on-brand presentation slides using python-pptx. This skill supports: - **Slide Generation** - Create presentations for any brand in `brands/` - **Carousel Generation** - Create LinkedIn carousels (square format, exports to PDF) - **Slide Editing** - Modify existing PPTX files - **Layout Management** - Create, edit, update cookbook layouts **IMPORTANT:** All skill resources are in `.claude/skills/pptx-generator/`. Always use Glob patterns starting with `.claude/skills/pptx-generator/` to find files. --- ## ⚠️ CRITICAL: Batch Generation Rules **NEVER generate more than 5 slides at once.** | Rule | Details | |------|---------| | Max slides per batch | **5** (can be 1, 2, 3, 4, or 5) | | After each batch | **STOP and validate output** | | Validation required | Check: no duplicate titles, proper spacing, correct colors | | Continue when | Validation passes | This prevents token limit errors and catches quality issues early. --- ## ⚠️ PREREQUISITE: Brand Check **Before generating slides, check if any brands exist.** ``` Glob: .claude/skills/pptx-generator/brands/*/brand.json ``` **If NO brands found (only `template/` exists):** 1. **STOP** - Do not proceed with slide generation 2. **Ask the user:** > "No brands are configured yet. Would you like me to help you create a brand first? > I'll need your brand colors, fonts, and style guidelines to set this up." 3. **If user wants to create a brand**, follow the **Creating a New Brand** section below. 4. **If user declines**, explain that slides require a brand configuration and offer to use generic styling as a fallback. --- ## Creating a New Brand When no brands exist or user requests a new brand: ### Step 1: Read the Template ``` Read: .claude/skills/pptx-generator/brands/template/README.md Read: .claude/skills/pptx-generator/brands/template/brand.json Read: .claude/skills/pptx-generator/brands/template/config.json ``` ### Step 2: Gather Brand Information Ask the user for (or extract from provided materials): | Required | Description | |----------|-------------| | **Brand name** | Folder name (lowercase, no spaces) | | **Colors** | Background, text, accent colors (hex codes) | | **Fonts** | Heading font, body font, code font | | Optional | Description | |----------|-------------| | Output directory | Where to save generated files (default: `output/{brand}`) | | Logo | Path to logo file (PNG/SVG) | | Brand guidelines | Existing style guide or website to reference | | Tone of voice | Writing style, vocabulary preferences | ### Step 3: Create Brand Files 1. **Create the brand folder:** ```bash mkdir -p .claude/skills/pptx-generator/brands/{brand-name} ``` 2. **Create brand.json** with the gathered values: ```json { "name": "Brand Name", "description": "One-line description", "colors": { "background": "hex-without-hash", "background_alt": "hex-without-hash", "text": "hex-without-hash", "text_secondary": "hex-without-hash", "accent": "hex-without-hash", "accent_secondary": "hex-without-hash", "accent_tertiary": "hex-without-hash", "code_bg": "hex-without-hash", "card_bg": "hex-without-hash", "card_bg_alt": "hex-without-hash" }, "fonts": { "heading": "Font Name", "body": "Font Name", "code": "Monospace Font" }, "assets": { "logo": "assets/logo.png", "logo_dark": null, "icon": null } } ``` 3. **Create config.json** with output settings: ```json { "output": { "directory": "output/{brand}", "naming": "{name}-{date}", "keep_parts": false }, "generation": { "slides_per_batch": 5, "auto_combine": true, "open_after_generate": false }, "defaults": { "slide_width_inches": 13.333, "slide_height_inches": 7.5 } } ``` 4. **Create brand-system.md** - Copy from template and fill in brand guidelines 5. **Create tone-of-voice.md** - Copy from template and fill in voice guidelines 6. **Add assets** - Copy logo/images to `brands/{brand-name}/assets/` ### Step 4: Verify After creating the brand, verify with: ``` Glob: .claude/skills/pptx-generator/brands/{brand-name}/* ``` Then proceed to slide generation. --- ## Skill Modes This skill operates in three modes: ### Mode 1: Generate Presentation Slides User wants presentation slides (16:9) created using a brand's styling. → Follow: Brand Discovery → Layout Selection → Content Adaptation → Execute → Layouts in: `cookbook/*.py` ### Mode 2: Generate LinkedIn Carousels User wants a LinkedIn carousel (square 1:1 format) for social media. → Follow: Brand Discovery → Carousel Planning → Generate → Export PDF → Layouts in: `cookbook/carousels/*.py` ### Mode 3: Manage Cookbook Layouts User wants to create, edit, or improve layout templates. → Follow: Layout CRUD Operations section --- ## Mode 1: Generate Presentation Slides ### Step 1: Brand Discovery 1. **List available brands:** ``` Glob: .claude/skills/pptx-generator/brands/*/brand.json ``` Extract unique brand names from paths (e.g., `brands/rasmus/...` → "rasmus") 2. **Read the brand configuration files:** ``` Read: .claude/skills/pptx-generator/brands/{brand-name}/brand.json Read: .claude/skills/pptx-generator/brands/{brand-name}/config.json ``` - `brand.json` - Colors, fonts, assets - `config.json` - Output directory, generation settings 3. **Read supporting markdown files for context:** ``` Glob: .claude/skills/pptx-generator/brands/{brand-name}/*.md ``` These provide voice, tone, and design philosophy. 4. **Extract from brand files:** - **From brand.json:** Colors (hex without #), fonts, asset paths - **From config.json:** Output directory, slides per batch, naming convention - **From markdown:** Voice, tone, vocabulary, visual principles If brand not found, list available brands and ask user to choose. ### Step 2: Layout Discovery (READ ALL FRONTMATTERS) **⚠️ MANDATORY: Read ALL layout frontmatters before selecting any layout.** This step is critical for making informed layout decisions. You must understand what ALL layouts offer before choosing. **Step 2a: Discover all layouts:** ``` Glob: .claude/skills/pptx-generator/cookbook/*.py ``` **Step 2b: Read EVERY layout file** (not just one or two): For each `.py` file found, read the first 40 lines to extract the `# /// layout` frontmatter block. Build a mental map of: - What each layout is for (`purpose`, `best_for`) - What each layout should NOT be used for (`avoid_when`) - Limits and constraints (`max_*`, `min_*`, `*_max_chars`) **The frontmatter block** looks like this: ```python # /// layout # name = "floating-cards-slide" # purpose = "Feature highlights, process steps, multiple equal items with depth" # best_for = [ # "Exactly 3 related features or concepts", # "Process with 3 steps", # ] # avoid_when = [ # "More than 3 items - use multi-card-slide instead", # "Long card titles (over 15 characters)", # ] # max_cards = 3 # card_title_max_chars = 15 # instructions = [ # "EXACTLY 3 cards required - no more, no less", # "Card titles must be SHORT: 1-2 words, max 15 characters", # ] # /// ``` **Key frontmatter fields:** | Field | Description | |-------|-------------| | `name` | Layout identifier | | `purpose` | What this layout is for | | `best_for` | Ideal use cases (array) | | `avoid_when` | When NOT to use this layout (array) | | `max_*` / `min_*` | Item limits (cards, bullets, stats) | | `instructions` | Specific tips for using this layout | **Step 2c: Select layouts** (only AFTER reading all frontmatters): Now that you know all available layouts and their constraints: 1. User specifies layout → Use that layout (but verify it fits the content) 2. User describes content → Match to best-fitting `best_for` criteria 3. **Check `avoid_when`** → Don't use a layout in situations it warns against 4. **Respect limits** → If content exceeds `max_*`, use a different layout 5. Multiple slides needed → Select appropriate layout for each 6. No good fit → Create a custom layout (see Mode 2) **Example selection process:** - User wants "5 pillars of AI infrastructure" - You've read all frontmatters and know: - `floating-cards-slide`: `max_cards = 3` → Won't work - `multi-card-slide`: `max_cards = 5` → Perfect fit - Select `multi-card-slide` **Why read ALL frontmatters?** - Layouts reference each other in `avoid_when` (e.g., "use multi-card-slide instead") - You can't make the right choice without knowing all options - Prevents backtracking when a layout doesn't fit ### Step 3: Slide Planning (ALWAYS DO THIS) **Before generating ANY slides, create a written plan.** This applies to single slides, batches, and full presentations. Planning prevents: - Duplicate content across slides - Wrong layout choices - Missing key information - Poor flow and structure **Create a slide plan table:** ```markdown | # | Layout | Title | Key Content | Notes | |---|--------|-------|-------------|-------| | 1 | title-slide | [Title] | [Subtitle, author] | Opening slide | | 2 | content-slide | [Title] | [3-4 bullet points] | Main concepts | | 3 | stats-slide | [Title] | [2-3 metrics] | Impact data | | ... | ... | ... | ... | ... | ``` **For each slide, specify:** - **Slide number** - Position in presentation - **Layout** - Which cookbook layout to use - **Title** - Exact title text (check for duplicates!) - **Key content** - Bullet points, stats, quotes, etc. - **Notes** - Any special considerations **Planning checklist:** - [ ] No duplicate titles across slides - [ ] Logical flow from slide to slide - [ ] Appropriate layout for each content type - [ ] Content fits the chosen layout - [ ] Batches are logically grouped (5 slides max each) **After planning, briefly present the plan before generating.** ### Step 4: Content Adaptation **For each slide in your plan:** #### Presentation Text Formatting Rules **IMPORTANT: Follow these rules for ALL slide text.** | Element | Rule | Example | |---------|------|---------| | Titles | No trailing periods or commas | "Why AI Matters" not "Why AI Matters." | | Subtitles | No trailing punctuation | "The future of coding" not "The future of coding." | | Bullet points | No trailing periods (unless full sentences) | "Faster development" not "Faster development." | | Headlines | Minimal punctuation, no ellipsis | "What's Next" not "What's Next..." | | Stats/Numbers | Clean format, no trailing punctuation | "50%" not "50%." | | CTAs | No trailing punctuation | "Get Started" not "Get Started." | | Labels | Short, no punctuation | "Step 1" not "Step 1:" | **Avoid:** - Trailing periods on titles, bullets, labels - Ellipsis (...) in headlines - Excessive commas in short phrases - Colons at end of labels/headers - Semicolons in bullet points **Exception:** Full sentence descriptions or quotes may use appropriate punctuation. #### Brand Value Mapping 1. **Map brand.json values to layout placeholders:** | Layout Placeholder | brand.json Path |
GitHubで見る
この SKILL.md は非常に大きいため、SkillsMP では最初のセクションだけを表示しています。 GitHubで見る