
codex-ppt-skill
Generate image-based PowerPoint presentations using gpt-image-2, converting articles, papers, and reports into visual slide decks
- Installs
- 244
- Last 24h
- —
- Trending rank
- —
- Security
- Not audited
Install
Works with every agent the skills CLI supports.
npx skills add https://github.com/reason-machines/codex-skills --skill codex-ppt-skill- 01
Install
Run the command in your project. The CLI asks which agents to install for.
- 02
Describe the task
Ask your agent for something this skill covers. It loads codex-ppt-skill automatically when relevant.
- 03
Review the result
The agent follows the SKILL.md steps, scripts and references bundled with the skill.
SKILL.md
The instructions your agent reads when the skill is triggered.
codex-ppt-skill
Skill by ara.so — Codex Skills collection.
A skill for generating image-based PowerPoint presentations where each slide is a complete 16:9 image generated by gpt-image-2. Converts articles, papers, reports, and notes into visually cohesive presentation decks with unified styling.
What This Skill Does
- Image-based slides: Each slide is a full 16:9 image, perfect for strong visual storytelling
- Multi-agent support: Works in Codex, Claude Code, OpenClaw, Hermes Agent
- Style library: Built-in visual styles (clean professional, scientific defense, e-ink magazine, hand-drawn technical, dashboard, etc.)
- Unified visual language: Maintains consistent styling while varying layouts per content
- Custom images: Insert specific figures, diagrams, or screenshots on designated slides
- Local assembly: Python script packages generated images into
.pptxwith speaker notes
Installation
For Codex
npx -y skills@latest add ningzimu/codex-ppt-skill \
--skill codex-ppt \
--agent codex \
--global
Restart Codex after installation.
For Claude Code
npx -y skills@latest add ningzimu/codex-ppt-skill \
--skill codex-ppt \
--agent claude-code \
--global
For OpenClaw
openclaw skills install codex-ppt
For Hermes Agent
npx -y skills@latest add ningzimu/codex-ppt-skill \
--skill codex-ppt \
--agent hermes-agent \
--global
Manual Installation
Clone and symlink to your agent's skills directory:
git clone https://github.com/ningzimu/codex-ppt-skill.git
mkdir -p ~/.codex/skills
ln -s $(pwd)/codex-ppt-skill/skills/codex-ppt ~/.codex/skills/codex-ppt
Image Generation Configuration
Important: Only configure if you need API/CLI fallback. If using Codex with GPT subscription and built-in image generation works, skip this section.
Configure only when:
- Using third-party OpenAI-compatible APIs
- Using Claude Code, OpenClaw, or Hermes Agent
- Codex built-in image generation is unavailable
Configuration Command
python3 ~/.codex/skills/codex-ppt/scripts/codex_ppt_runtime.py config \
--api-key "$OPENAI_API_KEY" \
--model gpt-image-2
With custom base URL (for third-party providers):
python3 ~/.codex/skills/codex-ppt/scripts/codex_ppt_runtime.py config \
--api-key "$OPENAI_API_KEY" \
--base-url "https://api.example.com/v1" \
--model openai/gpt-image-2
Configuration is stored in ~/.codex-ppt-skill/.env and shared across all agents.
Environment Variables
If configured, the .env file contains:
OPENAI_API_KEY=your-api-key-here
OPENAI_BASE_URL=https://api.example.com/v1 # optional
OPENAI_IMAGE_MODEL=gpt-image-2
Key Commands and API
Generate Image via CLI
python3 ~/.codex/skills/codex-ppt/scripts/codex_ppt_runtime.py generate \
--prompt "Clean professional slide: Introduction to AI, blue gradient background, large title, 3 bullet points" \
--output /path/to/slide_01.png \
--size 2048x1152
Assemble PPT from Images
python3 ~/.codex/skills/codex-ppt/scripts/assemble_ppt.py \
--project-dir /path/to/ppt-project \
--title "My Presentation" \
--speech-file /path/to/ppt-project/speech.md
Check Configuration
python3 ~/.codex/skills/codex-ppt/scripts/codex_ppt_runtime.py check-config
Output:
✓ Configuration file exists
✓ API key configured
✓ Model: gpt-image-2
✓ Base URL: https://api.openai.com/v1
Workflow and Usage Patterns
Basic Usage
# In agent conversation:
# "Use codex-ppt skill to create a 10-slide presentation from article.md"
The skill follows this workflow:
- Read content and create outline
- Generate
outline.mdwith slide titles and key points - Request confirmation on page count and structure
- Propose visual styles (2-3 options with recommendation)
- Confirm image generation backend before first generation
- Generate sample slide for style approval
- Create project directory structure
- Generate all slides with unified styling
- Quality check (text clarity, style consistency)
- Generate
speech.mdwith speaker notes - Assemble
.pptxusing local script
Project Directory Structure
{base_dir}/{ppt_name}/
├── origin_image/
│ ├── slide_01.png # Title slide
│ ├── slide_02.png # Content slides
│ ├── slide_03.png
│ └── ...
├── outline.md # Slide structure
├── speech.md # Speaker notes (## Slide 1: Title format)
└── {ppt_name}.pptx # Final presentation
Example: Article to Presentation
# Input: technical_article.md containing AI research summary
# Agent command: "Use codex-ppt skill to make this into slides"
# Step 1: Outline generation
outline = """
# AI Research Presentation Outline
## Slide 1: Title
- "Recent Advances in Large Language Models"
- Speaker name, date
## Slide 2: Background
- Evolution of NLP
- Pre-transformer era vs transformer era
- Key milestones timeline
## Slide 3: Architecture
- Transformer architecture diagram
- Attention mechanism
- Scaling laws
# ... (continues)
"""
# Step 2: Style selection
styles = [
"clean-professional", # Recommended for tech talks
"scientific-defense", # For academic presentations
"handdrawn-technical" # For approachable tech explanation
]
# Step 3: Sample slide generation (2K resolution)
sample_prompt = """
16:9 slide, clean professional style, blue gradient background
Title: "Recent Advances in Large Language Models"
Subtitle: "Dr. Jane Smith | May 2024"
Minimalist design, large readable font, subtle geometric accents
"""
# Step 4: Bulk generation (all remaining slides)
# Agent generates each slide with consistent style but varied layouts
Example: Inserting Custom Images
# Outline with custom figure specification
outline_with_figures = """
## Slide 5: Model Architecture
- Insert: /path/to/architecture_diagram.png
- Transformer architecture
- Multi-head attention
- Feed-forward layers
## Slide 8: Experimental Results
- Insert: /path/to/results_chart.png
- Benchmark comparison
- Performance metrics
"""
# The skill will:
# 1. Use provided image as background/focal element
# 2. Add consistent styling (borders, background, text overlays)
# 3. Maintain visual coherence with other slides
Example: Python Assembly Script Usage
#!/usr/bin/env python3
from pptx import Presentation
from pptx.util import Inches
import os
def assemble_presentation(project_dir: str, title: str, speech_file: str):
"""
Assemble PPT from images in origin_image/ directory.
Args:
project_dir: Path to PPT project directory
title: Presentation title
speech_file: Path to speech.md with speaker notes
"""
prs = Presentation()
prs.slide_width = Inches(10) # 16:9 aspect ratio
prs.slide_height = Inches(5.625)
image_dir = os.path.join(project_dir, "origin_image")
images = sorted([f for f in os.listdir(image_dir) if f.startswith("slide_")])
# Parse speaker notes
notes_map = parse_speaker_notes(speech_file)
for idx, img_file in enumerate(images, 1):
slide_layout = prs.slide_layouts[6] # Blank layout
slide = prs.slides.add_slide(slide_layout)
# Add image filling entire slide
img_path = os.path.join(image_dir, img_file)
slide.shapes.add_picture(
img_path,
Inches(0), Inches(0),
width=Inches(10), height=Inches(5.625)
)
# Add speaker notes
if idx in notes_map:
slide.notes_slide.notes_text_frame.text = notes_map[idx]
output_path = os.path.join(project_dir, f"{title}.pptx")
prs.save(output_path)
return output_path
def parse_speaker_notes(speech_file: str) -> dict:
"""Extract speaker notes by slide number from markdown."""
notes = {}
current_slide = None
current_text = []
with open(speech_file, 'r', encoding='utf-8') as f:
for line in f:
if line.startswith("## Slide "):
if current_slide:
notes[current_slide] = "\n".join(current_text).strip()
# Extract slide number
current_slide = int(line.split("Slide ")[1].split(":")[0])
current_text = []
elif current_slide:
current_text.append(line.rstrip())
if current_slide:
notes[current_slide] = "\n".join(current_text).strip()
return notes
Visual Styles Reference
Built-in styles in skills/codex-ppt/references/styles.md:
clean-professional
- Blue/gray gradients, sans-serif fonts
- Minimalist design, ample white space
- Subtle geometric accents
- Best for: corporate, tech talks
scientific-defense
- Academic journal aesthetic
- Structured layouts with clear sections
- Chart-friendly, equation-compatible
- Best for: research presentations, thesis defense
e-ink-magazine
- Black and white high contrast
- Editorial typography
- Grid-based layouts
- Best for: content-heavy, text-focused presentations
handdrawn-technical
- Hand-drawn diagrams and annotations
- Whiteboard aesthetic with digital polish
- Friendly, approachable
- Best for: tutorials, educational content
data-dashboard
- Dark background with bright data visualizations
- KPI-focused layouts
- Chart and metric emphasis
- Best for: business reviews, analytics presentations
retro-flat-illustration
- Flat design with vintage color palettes
- Illustrative icons and graphics
- Playful yet professional
- Best for: creative presentations, marketing
warm-handmade
- Textured backgrounds, craft-paper feel
- Handwritten fonts, natural colors
- Organic, human-centered
- Best for: storytelling, personal projects
Common Patterns
Pattern 1: Conference Talk from Paper
# Input: research_paper.pdf (converted to markdown)
# Command: "Create a 15-slide conference talk using scientific-defense style"
# Agent workflow:
# 1. Extract key sections (abstract, methodology, results, conclusions)
# 2. Create outline with 1 title + 2-3 intro + 6-8 technical + 2-3 conclusion slides
# 3. Insert paper figures on relevant slides
# 4. Generate slides with consistent academic styling
# 5. Add detailed speaker notes from paper content
Pattern 2: Business Quarterly Review
# Input: Q4_2024_metrics.md with KPIs and charts
# Command: "Make data-dashboard style slides, insert my 3 chart images"
# Outline example:
"""
## Slide 1: Q4 2024 Review
## Slide 2: Revenue Overview
- Insert: revenue_chart.png
## Slide 3: User Growth
- Insert: growth_chart.png
## Slide 4: Regional Performance
- Insert: regional_map.png
## Slide 5: Key Initiatives
## Slide 6: Q1 2025 Goals
"""
Pattern 3: Course Lecture Slides
# Input: lecture_notes.md (markdown with headings and bullets)
# Command: "Create handdrawn-technical style slides, about 20 pages"
# Agent approach:
# - 1 slide per major concept
# - Visual metaphors for abstract ideas
# - Step-by-step diagrams for processes
# - Summary slide every 5-6 slides
# - Consistent whiteboard aesthetic throughout
Resolution and Quality
Standard Resolution (2K)
# 2048x1152 (16:9, sufficient for most presentations)
python3 codex_ppt_runtime.py generate \
--prompt "..." \
--output slide.png \
--size 2048x1152
High Resolution (4K)
# 3840x2160 (16:9, for text-heavy slides or printing)
python3 codex_ppt_runtime.py generate \
--prompt "..." \
--output slide.png \
--size 3840x2160
When to use 4K:
- Slides with extensive text (>100 words)
- Complex diagrams or code snippets
- Presentations for large screens or printing
- Fine typography matters
Troubleshooting
Issue: Blurry text on slides
Solution: Increase resolution to 4K
# In agent: "Regenerate slides 3-5 at 4K resolution for better text clarity"
Issue: Style inconsistency between slides
Cause: Vague or varying style prompts
Solution:
- Lock style reference in first sample slide
- Reuse exact style description for all slides
- Only vary content/layout, keep color/font/theme identical
# Good: Consistent base prompt
base_style = "Clean professional, blue gradient (#1e3a8a to #3b82f6), Inter font, minimalist"
slide_2_prompt = f"{base_style}\nTitle: Introduction\n3 bullet points..."
slide_3_prompt = f"{base_style}\nTitle: Methods\nDiagram with 4 boxes..."
# Bad: Different styles per slide
slide_2_prompt = "Blue background, title and bullets"
slide_3_prompt = "Professional slide with diagram" # Too vague
Issue: Missing speaker notes in assembled PPT
Cause: speech.md format doesn't match parser
Solution: Use strict heading format
## Slide 1: Title Slide
This is the opening slide. Introduce yourself and the topic.
## Slide 2: Background
Explain the context. Mention key historical developments.
## Slide 3: Problem Statement
...
Parser expects ## Slide N: Title format exactly.
Issue: Image generation fails with API error
Check configuration:
python3 codex_ppt_runtime.py check-config
Common fixes:
- Verify API key in
~/.codex-ppt-skill/.env - Check base URL (must end with
/v1) - Confirm model name matches provider's requirements
- Test with direct curl:
curl https://api.openai.com/v1/images/generations \
-H "Authorization: Bearer $OPENAI_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "gpt-image-2",
"prompt": "Test slide",
"size": "2048x1152"
}'
Issue: Agent not using codex-ppt skill
Solution: Explicitly mention the skill
# Weak: "Make slides from this article"
# Strong: "Use codex-ppt skill to generate slides from this article"
Issue: Custom image not properly integrated
Correct outline format:
## Slide 5: Architecture
- Insert: /absolute/path/to/diagram.png
- Model architecture overview
- Key components
Agent should:
- Place custom image as slide background or main element
- Add styling overlay consistent with other slides
- Optionally add title/annotations matching theme
Advanced Usage
Modify Existing Slide
# Don't regenerate entire deck
# Command: "Regenerate slide 7 with darker background and larger font"
# Agent should:
# 1. Load slide_07 prompt from history or reconstruct from outline
# 2. Modify only specified parameters
# 3. Overwrite origin_image/slide_07.png
# 4. Re-run assembly script
Custom Style Reference
# Upload reference image
# Command: "Use this slide style for the entire presentation"
# Agent approach:
# 1. Analyze uploaded image (colors, fonts, layout, visual elements)
# 2. Create detailed style description
# 3. Apply to all slide prompts
# 4. Generate sample for confirmation
Batch Export Multiple Formats
from pptx import Presentation
import subprocess
def export_formats(pptx_path: str):
"""Export to PDF and images."""
base = os.path.splitext(pptx_path)[0]
# PDF (requires LibreOffice)
subprocess.run([
"libreoffice", "--headless", "--convert-to", "pdf",
"--outdir", os.path.dirname(pptx_path),
pptx_path
])
# Individual PNGs already in origin_image/
print(f"Exported: {base}.pdf")
print(f"Images: {os.path.dirname(pptx_path)}/origin_image/")
Best Practices
- Start with outline confirmation: Always review structure before generating images
- Generate sample first: Confirm style with 1-2 slides before bulk generation
- Use 4K for text-heavy slides: Don't compromise readability
- Keep style locked: Identical base prompt for all slides in a deck
- Semantic layout variation: Change layout to match content type (intro vs data vs summary)
- Speaker notes: Write detailed notes during generation, not after
- Custom images: Pre-prepare figures at high resolution (min 1920px width)
- Iterative refinement: Fix individual slides, don't regenerate entire decks
Environment Variables Reference
# Required only for API/CLI fallback
OPENAI_API_KEY=sk-... # Your OpenAI API key
OPENAI_BASE_URL=https://api.openai.com/v1 # Optional, for third-party providers
OPENAI_IMAGE_MODEL=gpt-image-2 # Model name
Never commit these to version control. Store in ~/.codex-ppt-skill/.env.
FAQ
What does the codex-ppt-skill skill do?
Generate image-based PowerPoint presentations using gpt-image-2, converting articles, papers, and reports into visual slide decks
How do I install codex-ppt-skill?
Run npx skills add https://github.com/reason-machines/codex-skills --skill codex-ppt-skill in your project. The skills CLI detects the agents you use and copies the skill into the right folder. For Claude Code you can also place the skill folder at ~/.claude/skills/codex-ppt-skill/ (personal) or .claude/skills/codex-ppt-skill/ (project).
Which AI agents can use codex-ppt-skill?
Any agent that supports the open Agent Skills format (a folder with a SKILL.md file), including Claude Code, Codex, Cursor, GitHub Copilot, Gemini CLI, Windsurf, Cline, OpenCode and more.
Is codex-ppt-skill safe to install?
No partner security audit is available yet. Skills can run commands and scripts, so read the SKILL.md and any bundled files before installing.
Who maintains codex-ppt-skill?
It is published by reason-machines in reason-machines/codex-skills. It has 244 recorded installs.
More from reason-machines/codex-skills
academic-research-skills-codex
reason-machines/codex-skills
AI-assisted academic research workflows for literature review, paper writing, peer review, and research pipelines
codexplusplus-launcher
reason-machines/codex-skills
Enhanced launcher for Codex App that unlocks plugins, enables session deletion, exports conversations, and syncs provider sessions via CDP injection
codex-plugin-claude-code
reason-machines/codex-skills
Use OpenAI Codex from inside Claude Code for code reviews, adversarial reviews, and delegating tasks to Codex as a subagent.
codex-plusplus-tweak-system
reason-machines/codex-skills
Expert in developing, installing, and managing tweaks for the Codex++ desktop app extension system
awesome-codex-skills-curator
reason-machines/codex-skills
Curate, install, and manage Codex skills from the awesome-codex-skills collection for AI coding agents.
awesome-codex-subagents
reason-machines/codex-skills
A curated collection of 136+ specialized Codex subagents for development tasks across 10 categories
Popular media & creative skills
hyperframes
heygen-com/hyperframes
Read first to make, edit, animate or render any video with HyperFrames (HTML rendered to video), including launch films, explainers, music videos, charts, maps, vertical clips, title cards, captions and overlays. Holds the render contract, the work loop and what each kind of video needs.
media-use
heygen-com/hyperframes
Get or make any media for a HyperFrames video - music, sound effects, images, icons, logos, voiceover, avatar and generated video, transcripts, cutouts, colour grades and looks - with HeyGen or free local tools, and mix placed audio. Also for footage that looks dark, flat or dull, or should be stylized or hidden.
hyperframes-registry
heygen-com/hyperframes
About 450 ready-made HyperFrames blocks and components installed as editable source - transitions, overlays, titles, kinetic type, captions, charts, map overlays, 3D, camera moves. Use it before hand-building any named visual (CRT scanlines, glitch, film grain, a chart); also for hyperframes add and catalog.
hyperframes-creative
heygen-com/hyperframes
Non-animation creative direction for HyperFrames videos. Use for design spec (frame.md / design.md) handling, palettes, typography, narration, beat planning, audio-reactive visuals, composition patterns, and brand / style decisions. For atomic motion patterns and scene blueprints, use hyperframes-animation.
ai-video-generation
101-skills/superpowers
Generate AI videos with Google Veo, Seedance 2.0, HappyHorse, Wan, Grok and 40+ models via inference.sh CLI. Models: Veo 3.1, Veo 3, Seedance 2.0, HappyHorse 1.0, Wan 2.5, Grok Imagine Video, OmniHuman, Fabric, HunyuanVideo. Capabilities: text-to-video, image-to-video, reference-to-video, video editing, lipsync, avatar animation, video upscaling, foley sound. Use for: social media videos, marketing content, explainer videos, product demos, AI avatars. Triggers: video generation, ai video, text to video, image to video, veo, animate image, video from image, ai animation, video generator, generate video, t2v, i2v, ai video maker, create video with ai, runway alternative, pika alternative, sora alternative, kling alternative, seedance, happyhorse
ai-image-generation
101-skills/superpowers
Generate AI images with GPT-Image-2, FLUX, Gemini, Grok, Seedream, Reve and 50+ models via inference.sh CLI. Models: GPT-Image-2, FLUX Dev LoRA, FLUX.2 Klein LoRA, Gemini 3 Pro Image, Grok Imagine, Seedream 4.5, Reve, ImagineArt. Capabilities: text-to-image, image-to-image, inpainting, LoRA, image editing, upscaling, text rendering. Use for: AI art, product mockups, concept art, social media graphics, marketing visuals, illustrations. Triggers: flux, image generation, ai image, text to image, stable diffusion, generate image, ai art, midjourney alternative, dall-e alternative, text2img, t2i, image generator, ai picture, create image with ai, generative ai, ai illustration, grok image, gemini image, gpt image, openai image, chatgpt image