askill
powerpoint-builder

powerpoint-builderSafety 95Repository

PowerPoint, PPTX, presentation, slides, deck, python-pptx, create presentation, build deck

0 stars
1.2k downloads
Updated 2/5/2026

Package Files

Loading files...
SKILL.md

PowerPoint Builder

Build polished, human-looking PowerPoint decks with python-pptx. No PowerPoint installation required.

Quick Start

# Install dependency (if not present)
pip install python-pptx

# Build a deck from a plan
python build_deck.py --plan deck_plan.yaml --output presentation.pptx

# With custom template
python build_deck.py --plan deck_plan.yaml --template brand_template.pptx --output deck.pptx

When the User Says...

User SaysAction
"Create a presentation about X"1. Create deck_plan.yaml with outline, 2. Gather assets, 3. Run build_deck.py
"Make slides for my meeting"Ask for key points, create plan, build deck
"Turn this into a PowerPoint"Extract assertions from content, create plan, build
"I need a deck for [topic]"Create assertion-based outline first, then build
"Add a slide about X"Use layouts.py functions directly

Mission

Generate .pptx files that look like a thoughtful human made them:

  • Clear hierarchy and intentional layout
  • Consistent visual system (not default templates)
  • Zero "AI smell" (generic structure, filler icons, repetitive wording)
  • Deterministic, reproducible generation

Required Inputs

1. Deck Plan (deck_plan.yaml)

title: "Q1 Product Review"
subtitle: "January 2026"
author: "User"

slides:
  - type: title
    title: "Q1 Product Review"
    subtitle: "Performance & Roadmap"

  - type: section
    title: "Performance Metrics"

  - type: key_number
    title: "Revenue exceeded target by 23%"
    number: "$4.2M"
    qualifier: "vs $3.4M target"
    note: "Driven by enterprise expansion"

  - type: figure
    title: "Monthly revenue trend shows sustained growth"
    image: "assets/figures/revenue_chart.png"
    caption: "Source: Finance dashboard"

  - type: bullets
    title: "Three factors drove Q1 success"
    bullets:
      - "Enterprise deals closed 2 weeks faster"
      - "Churn reduced to 2.1% (from 3.4%)"
      - "New pricing increased ARPU 15%"
    note: "Speaker note: Emphasize the churn improvement"

  - type: comparison
    title: "New approach outperformed legacy system"
    left:
      header: "Legacy"
      points: ["Manual process", "3-day turnaround", "40% error rate"]
    right:
      header: "New System"
      points: ["Automated", "Real-time", "2% error rate"]
    verdict: "Migration complete by EOQ"

  - type: figure_with_text
    title: "Architecture scales horizontally"
    image: "assets/figures/architecture.png"
    bullets:
      - "Redis caching layer"
      - "Auto-scaling workers"
      - "Multi-region failover"
    side: "right"

2. Assets Directory

assets/
├── figures/           # Charts, diagrams (PNG preferred)
│   ├── revenue_chart.png
│   └── architecture.png
├── tables/            # CSV or pre-rendered images
│   └── metrics.csv
└── icons/             # Optional, curated style only
    └── logo.png

3. Optional: Template (template.pptx)

Using a real template is strongly preferred:

  • Consistent branding (fonts, colors, logo placement)
  • Pre-defined slide layouts with placeholders
  • Master slide handles footers/page numbers

Outputs

FilePurpose
deck.pptxFinal presentation
assets_manifest.jsonSlide# to assets mapping
build_log.txtWarnings: missing assets, overflow risks

Avoiding AI Smell

What Makes a Deck Look AI-Generated (Avoid These)

ProblemFix
Same layout every slideVary: figure-first, split, comparison, key-number
Default Office templateUse custom template or explicit theme tokens
Vague headers: "Introduction", "Benefits"Assertion titles: "X improves Y by Z"
Essay-like bulletsShort, parallel statements
Decorative icons with no info valueReal figures only, or nothing
Overcrowded slides, tiny fontsSplit slides, move detail to speaker notes

Good vs Bad Titles

Bad (Generic)Good (Assertion)
"Performance""Response time improved 40% after Redis migration"
"Problem""Current system fails under 1000+ concurrent users"
"Solution""Horizontal scaling eliminates single-point bottleneck"
"Next Steps""Three actions required before March launch"

Slide Types

The builder supports these layout types:

TypeFunctionUse For
titleadd_title_slide()Opening slide
sectionadd_section_divider()Section breaks
bulletsadd_bullets_slide()Key points (max 5 bullets)
figureadd_figure_slide()Full image with caption
figure_with_textadd_figure_with_text_slide()Image + bullets side by side
comparisonadd_comparison_slide()Before/after, A vs B
tableadd_table_slide()Data tables
key_numberadd_key_number_slide()Hero metric with context
processadd_process_slide()Step-by-step flow

Python API

Basic Usage

from build_deck import DeckBuilder

# Create deck from plan
builder = DeckBuilder(template="template.pptx")
builder.load_plan("deck_plan.yaml")
builder.build()
builder.save("output/deck.pptx")

Direct Slide Creation

from pptx import Presentation
from layouts import (
    add_title_slide,
    add_bullets_slide,
    add_figure_slide,
    add_key_number_slide
)
from theme import PCPTheme

prs = Presentation()
theme = PCPTheme()

add_title_slide(prs, theme, "Q1 Review", "January 2026")

add_key_number_slide(
    prs, theme,
    title="Revenue exceeded expectations",
    number="$4.2M",
    qualifier="23% above target"
)

add_bullets_slide(
    prs, theme,
    title="Three key drivers",
    bullets=[
        "Enterprise deals closed faster",
        "Churn reduced to 2.1%",
        "ARPU increased 15%"
    ]
)

add_figure_slide(
    prs, theme,
    title="Revenue trend shows sustained growth",
    image_path="assets/figures/revenue.png"
)

prs.save("deck.pptx")

CLI Commands

# Build from plan (recommended)
python build_deck.py --plan deck_plan.yaml --output deck.pptx

# With template
python build_deck.py --plan deck_plan.yaml --template brand.pptx --output deck.pptx

# Dry run (validate only)
python build_deck.py --plan deck_plan.yaml --dry-run

# List available layouts
python build_deck.py --list-layouts

# Validate plan file
python build_deck.py --validate deck_plan.yaml

Quality Checks (Automated)

The builder automatically checks:

CheckAction if Failed
Missing assetLog warning, leave placeholder
Text overflow riskLog warning with slide number
Font not availableFall back to system font, log
Image distortionRefuse to distort, fit with letterbox
Inconsistent title positionLog warning

Integration with PCP

From Vault Data

from vault_v2 import get_project_context
from build_deck import create_project_deck

# Generate deck from project context
context = get_project_context(project_id=1)
create_project_deck(
    context,
    output="project_review.pptx",
    slide_types=["status", "metrics", "timeline", "risks"]
)

From Brief Data

from brief import generate_brief
from build_deck import create_brief_deck

# Turn a weekly brief into slides
brief_data = generate_brief("weekly")
create_brief_deck(brief_data, output="weekly_review.pptx")

Workflow Summary

1. Define outline (deck_plan.yaml)
   - Assertion titles
   - Slide types
   - Asset paths

2. Gather assets
   - Charts as PNG
   - Tables as CSV or images
   - No decorative icons

3. Build deck
   python build_deck.py --plan deck_plan.yaml --output deck.pptx

4. Review build_log.txt
   - Fix any warnings
   - Rebuild if needed

5. Final manual check
   - Open in PowerPoint/Slides
   - Verify alignment, readability

Project Structure

project/
├── deck_plan.yaml          # Slide outline
├── template.pptx           # Brand template (optional)
├── assets/
│   ├── figures/
│   ├── tables/
│   └── icons/
└── output/
    ├── deck.pptx
    ├── assets_manifest.json
    └── build_log.txt

Dependencies

pip install python-pptx Pillow pyyaml
PackagePurpose
python-pptxPowerPoint generation
PillowImage handling
pyyamlPlan file parsing

Related Skills

  • task-delegation - Delegate deck creation to background worker
  • vault-operations - Pull project data for slides
  • brief-generation - Generate review decks from briefs

References

Install

Download ZIP
Requires askill CLI v1.0+

AI Quality Score

88/100Analyzed 2/23/2026

Comprehensive skill for building polished PowerPoint presentations using python-pptx. Provides complete documentation with CLI and Python API, deck plan YAML format, multiple slide types, quality checks, and integration examples. Some internal references (PCPTheme, vault_v2) but core content is general-purpose and highly actionable. Well-structured with good examples and clear guidance on avoiding 'AI smell' in generated decks.

95
90
85
88
92

Metadata

Licenseunknown
Version-
Updated2/5/2026
Publisherfl-sean03

Tags

apici-cdgithubgithub-actionsobservability