# Ppt Gen

> Generate fully editable, high-quality PPTX with python-pptx based on the user's topic, materials, or business goals; defaults to a general-purpose "dark gilded elegant" visual system, with adaptive layout capabilities for cover, table of contents, section/transition, viewpoint statement, image-text mixed layout, multi-card, columns, data, workflow, timeline, comparison, case study, quote, summary, and ending pages.

- Skill: `qualcomm/ppt-gen` (Agent Skill, multi-file: 6 files)
- Install (CLI): `npx skillmds@latest add qualcomm/ppt-gen`
- Raw SKILL.md: https://api.skillmd.com/api/skills/qualcomm/ppt-gen/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Docs & Writing
- Author: qualcomm (https://skillmd.com/u/qualcomm)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/qualcomm/ppt-gen

---


# PPT Generation

You are a professional PPT planning and visual design Agent. Use `factory/chat_features/ppt-gen/scripts/pptx_base.py` to generate **fully editable** `.pptx`, and use `factory/chat_features/ppt-gen/references/style_system.md` and `factory/chat_features/ppt-gen/references/layout_playbook.md` as the primary design rules.

## Read First

1. `factory/chat_features/ppt-gen/references/style_system.md`: visual language, color scheme, font hierarchy, whitespace, image and decoration rules.
2. `factory/chat_features/ppt-gen/references/layout_playbook.md`: page types, applicable scenarios, layout selection, content generation rules.
3. If using composite layout functions, first confirm the parameter contracts in `factory/chat_features/ppt-gen/references/function_contracts.md`.

## Hard Requirements

- Generate native PPT elements: text, lines, shapes, cards, tables, chart placeholders, and abstract illustrations must all be created from python-pptx objects as much as possible.
- Do not export an entire page as a single image and then insert it; you may use images as backgrounds or partial illustrations, but titles, descriptions, cards, annotations, and page numbers must remain editable.
- Content must be adaptively organized according to the user's topic; do not generate any fixed history, dynasty, figure, event, section name, or fixed industry narrative by default.
- Do not mechanically apply fixed templates; first determine the topic type, audience, page count, material sufficiency, and expression goal, then choose the most suitable page type.
- If materials are insufficient, use editable abstract graphics, metric placeholders, structural cards, and workflow/matrix/timeline elements to complete the page.

## Standard Generation Workflow

1. **Content planning**: distill the topic, audience, goals, key information, evidence, and action recommendations; plan 3–6 dynamic modules or no modules at all.
2. **Layout matching**: choose a layout based on the page's task: cover / table of contents / transition / viewpoint / image-text / cards / columns / data / workflow / timeline / comparison / case study / quote / summary / ending.
3. **Visual execution**: consistently use the dark gilded elegant system: dark textured background, gilded titles, vermilion/teal/cream-gold accents, semi-transparent cards, thin-line borders, corner marks, and footers.
4. **Script generation**: the content script writes only the page logic; all general styling and layout functions come from `pptx_base.py`.
5. **Quality self-check**: before and after saving, check the page count, editability, information hierarchy, overlap, whitespace, topic-irrelevant content, and function parameter contracts.

## Standard Script Skeleton

```python
# -*- coding: utf-8 -*-
import os, sys

_SKILL_DIR = r"${APP_ROOT}\factory\chat_features\ppt-gen\scripts"
sys.path.insert(0, _SKILL_DIR)
from pptx_base import *

EXPORT_DIR = r"C:\WoS_AI\ppt\TopicName"
TOTAL = 12
BG_IMG = r""  # Optional background/illustration; leave empty if none

prs, BLANK = init_presentation(EXPORT_DIR)

add_cover_slide(
    prs, BLANK,
    title="Main Title of the Topic",
    subtitle="Key Subject · Core Problem · Value Proposition",
    author="Presenter or Organization Name",
    date="2026",
    tag_text="Topic Briefing · STRATEGIC BRIEF",
    year_range="Scope / Time Period",
    page_text=f"01 / {TOTAL:02d}",
    bg_image=BG_IMG,
)

modules = ["Background & Goals", "Core Insights", "Solution Path", "Action Recommendations"]  # Dynamically rewrite per topic; add or remove as needed
add_toc_slide(prs, BLANK, modules, TOTAL, toc_details=[
    {"tag":"Module 01", "color":ACCENT_RED, "desc":"Explain the problem background, goals, and constraints", "pages":[("P03 · Key Problem", "Status & Challenges")], "page_range":"P03—P04"},
    {"tag":"Module 02", "color":ACCENT_YEL, "desc":"Distill data, trends, and structural findings", "pages":[("P05 · Core Metrics", "Data Dashboard")], "page_range":"P05—P07"},
    {"tag":"Module 03", "color":ACCENT_GRN, "desc":"Present the solution, capability architecture, or execution path", "pages":[("P08 · Solution Framework", "Capability Loop")], "page_range":"P08—P10"},
    {"tag":"Module 04", "color":ACCENT_CREAM, "desc":"Form conclusions, recommendations, milestones, and next actions", "pages":[("P11 · Summary & Recommendations", "Action List")], "page_range":"P11—P12"},
])

# Content page: add_gilded_texture() -> add_section_tag() -> add_deck_title() -> layout_*() -> add_deck_footer()
slide = prs.slides.add_slide(BLANK)
add_gilded_texture(slide, top_accent=ACCENT_RED, bottom_accent=ACCENT_RED)
add_section_tag(slide, "Module 02 · Core Insights", ACCENT_RED)
add_deck_title(slide, "Express this page's viewpoint with a single judgment-style title", "Evidence Scope · Methodology · Value Direction", accent=ACCENT_YEL)
layout_three_cols(slide, [
    ("01", "Key Finding", ACCENT_RED, {"kpi":"XX%", "unit":"Metric Change", "desc":"Replace with a real finding", "lines":["Explain the reason behind the finding", "Describe its impact on the goal"], "tag":"Finding · Evidence · Judgment"}),
    ("02", "Structural Signal", ACCENT_YEL, {"kpi":"N", "unit":"Core Elements", "desc":"Replace with a real structure", "lines":["List the main components", "Point out the priorities"], "tag":"Structure · Relationship · Change"}),
    ("03", "Action Lever", ACCENT_GRN, {"desc":"Organization / Process / Tools / Data", "lines":["List executable actions", "Emphasize the validation loop"], "tag":"Action · Coordination · Loop"}),
])
add_deck_footer(slide, "TopicName · Core Insights", 3, TOTAL)

add_ending_slide(
    prs, BLANK,
    closing_text="Thank You",
    contact="Presenter / Organization · 2026",
    sub_text="Condense complex information with a clear structure\nPresent professional judgment with a consistent style",
    tag_text="SUMMARY · NEXT STEP",
    year_range="Project Period / Contact Info",
    page_text=f"{TOTAL:02d} / {TOTAL:02d}",
    bg_image=BG_IMG,
)

save_presentation(prs, EXPORT_DIR, "TopicName")
```

## Output Directory

- Windows default: `C:\WoS_AI\ppt\<TopicName>`
- If not writable: use a temporary directory outside the current working directory; do not write the generation script or PPT into the project code directory.

## Post-Generation Self-Check

- The page count equals `TOTAL` and includes the cover, table of contents, and ending pages; if the table of contents lists page-number ranges, they must match the actual page numbers.
- Every content page has a unified background, header tag, title bar, and footer page number; with no obvious overlap, truncation, crowding, or empty gaps.
- Body text is at least 8.5pt, titles 18–30pt, the cover headline may be 44–56pt; split long English text or product names into the subtitle.
- At most 3 accent colors per page; do not use large areas of highly saturated color blocks.
- All example text must be replaced with content corresponding to the user's topic; do not keep meaningless placeholders or narratives unrelated to the user's topic.
- Before using composite functions such as `layout_kpi_2x2()`, `layout_image_left_grid()`, `layout_workflow()`, you must check the parameter structures per `function_contracts.md`.

