Awesome PPT
Overview
Build a PPTX by planning the deck, generating one complete slide image per page with imagegen, then assembling those rendered slide images into PowerPoint.
V1 is image-model-first: every visible title, subtitle, bullet, label, caption, and callout must be included verbatim in the image prompt and rendered by the image model. Do not create a blank/background image and add the main content later as PowerPoint text.
The first assembled PPTX is editable at the slide/image object level. Native editable text overlays are optional helper layers only; they are not the source of visible content in the default image-first workflow.
When the user wants a fully editable deck, prefer the $awesome-ppt-editable command. It runs the ppt-master optimization pass after the image-first PPTX is built. This is a reconstruction pass: ppt-master uses the gpt-image-2 slide images as visual references and uses rendered_text as the exact editable content source, then rebuilds the deck as native SVG/PowerPoint text, shapes, charts, and objects. Do not claim that raster screenshots are automatically or losslessly converted into editable objects.
Do not skip the image generation stage for an editable request. The correct full flow is: select the theme style prompt, write per-slide content/style/layout image prompts, generate slide images, build the image-first PPTX, then run the ppt-master editable reconstruction pass.
Command Shape
Accept free-form prompts after the skill name:
$awesome-ppt-std <deck prompt> [--pages N] [--ratio 16:9|4:3|1:1] [--lang zh|en|...] [--style "..."] [--out deck.pptx]
$awesome-ppt-editable <deck prompt> [--pages N] [--ratio 16:9|4:3|1:1] [--lang zh|en|...] [--style "..."] [--out deck.pptx]
$awesome-ppt <deck prompt> [--pages N] [--ratio 16:9|4:3|1:1] [--lang zh|en|...] [--style "..."] [--editable] [--out deck.pptx]
Command modes:
$awesome-ppt-std: stable standard mode. Generate images and assemble the image-first PPTX. Never run ppt-master.
$awesome-ppt-editable: experimental editable mode. Always complete standard mode first, then run the ppt-master native editable reconstruction pass.
$awesome-ppt: legacy compatibility mode. Default to standard mode; run editable mode only when the user supplies --editable, --native, "fully editable", or "ppt-master".
Parameters:
--pages N: requested slide count. If missing, infer from the narrative; default to 8 when the request is underspecified.
--ratio: slide aspect ratio. Default to 16:9.
--lang: deck language. Infer from the user prompt when missing.
--style: visual direction, brand mood, or reference style.
--editable / --native: legacy $awesome-ppt option. Prefer $awesome-ppt-editable for explicit editable runs.
--out: output PPTX path. Default to a descriptive slug in the working directory.
If --pages N is supplied, the final slide_count, number of generated images, and number of PPT slides must all equal N.
Workflow
- Parse the request and options. Identify audience, goal, language, slide count, ratio, visual tone, output path, and attached/source files.
- Inspect source files before planning. Extract only the content that supports the deck: thesis, evidence, quotes, data, images, brand assets, and constraints.
- Identify the closest theme style from the user's topic, audience, and requested mood. Read
references/theme-style-prompt-library.md, select the nearest style prompt, then adapt it to the user's specific request instead of copying it mechanically.
- Create a compact deck brief with
slide_count, narrative arc, selected theme style, adapted design system, content density, and image text-rendering policy.
- Create one slide spec per slide using
references/slide-spec-schema.md.
- For every slide, define
rendered_text: the complete visible text that must appear inside the generated image.
- For every slide, write an
imagegen prompt from references/image-prompting.md. The prompt must include every rendered_text item verbatim, plus layout instructions for where each text item appears and the adapted theme style.
- Generate slide images with the
imagegen skill/tool. Save each final slide image into a project-local folder such as awesome-ppt-output/<deck-slug>/images/.
- Inspect generated images for text fidelity. If title/body text is missing, misspelled, or replaced with gibberish, regenerate that slide with a tighter prompt before assembling the deck.
- Run
scripts/validate_deck.py against the deck spec before building.
- Run
scripts/build_deck.py to create the image-first PPTX.
- Open or render-check the result when the environment supports it; otherwise at least verify that the PPTX file exists and the package can be written.
- If mode is editable, or legacy
$awesome-ppt received --editable, --native, "fully editable", or "ppt-master": run scripts/export_ppt_master_handoff.py against deck.json, then invoke ppt-master with the generated ppt-master-request.md or ppt-master-brief.md. Treat this as a second-stage optimization after the pure image-first PPTX exists; never substitute a direct SVG-only build for the image-first deck.
- Run the
ppt-master reconstruction in a fresh rebuild folder. Do not reuse an old svg_output/, svg_final/, or previous exported PPTX when testing a new deck.
- After
ppt-master exports, run scripts/inspect_pptx_package.py on the native PPTX. For decks that should be fully native, verify the expected slide count, native text nodes, low or zero full-slide media usage, required text strings, and no unexpected black fallback colors.
Planning Rules
- Start from the story, not the image prompts. Each slide needs one job and one dominant read.
- Always identify the user's presentation theme before writing slide specs. Use
references/theme-style-prompt-library.md as a style baseline, but optimize it for the specific audience, topic, language, and constraints.
- If the user gives an explicit style, it wins over automatic theme matching. Use the library only to sharpen palette, layout, typography, and visual vocabulary.
- Use
--pages as a hard constraint. If the requested content cannot fit, ask before changing the page count.
- Keep slide text short enough for the image model to render accurately. Split crowded slides instead of shrinking text.
- Put all visible content text into
rendered_text and the image prompt.
- Keep
rendered_text exact and complete because it becomes the source text for the ppt-master editable reconstruction pass.
- Use
editable_text only when explicitly requested as an auxiliary mirror layer for later manual editing. Do not use it to supply missing visible content after image generation.
- For charts and tables, include the exact visible labels/values in
rendered_text and the image prompt. Avoid dense spreadsheet-like tables in v1 because rendered text fidelity becomes the bottleneck.
- If exact legal, financial, or compliance text must be perfectly editable and auditable, pause and explain that the image-first workflow is the wrong default for that slide.
File Outputs
Recommended run folder:
awesome-ppt-output/<deck-slug>/
deck.json
images/
slide-01.png
slide-02.png
<deck-slug>.pptx
ppt-master-handoff/
ppt-master-brief.md
ppt-master-request.md
images/
slide-01.png
ppt-master-rebuild/
<deck-slug>-editable.pptx
The deck.json file is the source of truth for assembly. Use relative image paths from the JSON file location when possible.
The ppt-master-handoff/, ppt-master-rebuild/, and editable PPTX output are created only when running $awesome-ppt-editable or legacy $awesome-ppt --editable. The handoff is the source package for ppt-master; it should preserve reference images and exact text so ppt-master can rebuild the deck as native editable elements.
Scripts
scripts/validate_deck.py: validate slide count, required fields, rendered_text, prompt coverage, image existence, and image aspect ratios.
scripts/build_deck.py: assemble a PPTX from a validated deck.json. The standard-library v1 builder writes one full-slide image per slide and can optionally add editable text boxes if editable_text is present.
scripts/export_ppt_master_handoff.py: export a ppt-master reconstruction brief from deck.json, copying generated slide images as visual references for the editable rebuild.
scripts/inspect_pptx_package.py: inspect a PPTX package for slide count, media count, native text nodes, required text, and suspicious black fallback colors.
scripts/requirements.txt: reserved for future optional Python dependencies. V1 scripts use only the Python standard library.
No dependency installation is required for v1. If future optional dependencies are added, install them with:
python -m pip install -r awesome-ppt/scripts/requirements.txt
Validate and build:
python awesome-ppt/scripts/validate_deck.py awesome-ppt-output/my-deck/deck.json
python awesome-ppt/scripts/build_deck.py awesome-ppt-output/my-deck/deck.json --out awesome-ppt-output/my-deck/my-deck.pptx
python awesome-ppt/scripts/export_ppt_master_handoff.py awesome-ppt-output/my-deck/deck.json
python awesome-ppt/scripts/inspect_pptx_package.py awesome-ppt-output/my-deck/my-deck-editable.pptx --expect-slides 5 --expect-native-text --require-text "Transformer"
References
- Read
references/slide-spec-schema.md before creating deck.json.
- Read
references/theme-style-prompt-library.md before creating the deck brief or image prompts.
- Read
references/image-prompting.md before generating slide images.
- Read
references/editability-policy.md when deciding whether any optional editable helper layer is appropriate.
- Read
references/ppt-master-integration.md before running the editable reconstruction optimization.
1---2name: awesome-ppt3description: Core Awesome PPT workflow for image-model-rendered PowerPoint decks. Use when the user invokes $awesome-ppt or asks to make a polished PPT/PPTX by designing full-slide image prompts where gpt-image/imagegen renders the complete slide including all titles, body text, labels, and visual design, assembling those rendered slide images into a PPTX, and, only in editable mode, using ppt-master to rebuild the image-rendered deck as native editable text, shapes, charts, and objects.4---5
6# Awesome PPT
7
8## Overview
9
10Build a PPTX by planning the deck, generating one complete slide image per page with `imagegen`, then assembling those rendered slide images into PowerPoint.
11
12V1 is image-model-first: every visible title, subtitle, bullet, label, caption, and callout must be included verbatim in the image prompt and rendered by the image model. Do not create a blank/background image and add the main content later as PowerPoint text.
13
14The first assembled PPTX is editable at the slide/image object level. Native editable text overlays are optional helper layers only; they are not the source of visible content in the default image-first workflow.
15
16When the user wants a fully editable deck, prefer the `$awesome-ppt-editable` command. It runs the `ppt-master` optimization pass after the image-first PPTX is built. This is a reconstruction pass: `ppt-master` uses the `gpt-image-2` slide images as visual references and uses `rendered_text` as the exact editable content source, then rebuilds the deck as native SVG/PowerPoint text, shapes, charts, and objects. Do not claim that raster screenshots are automatically or losslessly converted into editable objects.
17
18Do not skip the image generation stage for an editable request. The correct full flow is: select the theme style prompt, write per-slide content/style/layout image prompts, generate slide images, build the image-first PPTX, then run the `ppt-master` editable reconstruction pass.
19
20## Command Shape
21
22Accept free-form prompts after the skill name:
23
24```text
25$awesome-ppt-std <deck prompt> [--pages N] [--ratio 16:9|4:3|1:1] [--lang zh|en|...] [--style "..."] [--out deck.pptx]
26$awesome-ppt-editable <deck prompt> [--pages N] [--ratio 16:9|4:3|1:1] [--lang zh|en|...] [--style "..."] [--out deck.pptx]
27$awesome-ppt <deck prompt> [--pages N] [--ratio 16:9|4:3|1:1] [--lang zh|en|...] [--style "..."] [--editable] [--out deck.pptx]
28```
29
30Command modes:
31
32- `$awesome-ppt-std`: stable standard mode. Generate images and assemble the image-first PPTX. Never run `ppt-master`.
33- `$awesome-ppt-editable`: experimental editable mode. Always complete standard mode first, then run the `ppt-master` native editable reconstruction pass.
34- `$awesome-ppt`: legacy compatibility mode. Default to standard mode; run editable mode only when the user supplies `--editable`, `--native`, "fully editable", or "ppt-master".
35
36Parameters:
37
38- `--pages N`: requested slide count. If missing, infer from the narrative; default to 8 when the request is underspecified.
39- `--ratio`: slide aspect ratio. Default to `16:9`.
40- `--lang`: deck language. Infer from the user prompt when missing.
41- `--style`: visual direction, brand mood, or reference style.
42- `--editable` / `--native`: legacy `$awesome-ppt` option. Prefer `$awesome-ppt-editable` for explicit editable runs.
43- `--out`: output PPTX path. Default to a descriptive slug in the working directory.
44
45If `--pages N` is supplied, the final `slide_count`, number of generated images, and number of PPT slides must all equal `N`.
46
47## Workflow
48
491. Parse the request and options. Identify audience, goal, language, slide count, ratio, visual tone, output path, and attached/source files.
502. Inspect source files before planning. Extract only the content that supports the deck: thesis, evidence, quotes, data, images, brand assets, and constraints.
513. Identify the closest theme style from the user's topic, audience, and requested mood. Read `references/theme-style-prompt-library.md`, select the nearest style prompt, then adapt it to the user's specific request instead of copying it mechanically.
524. Create a compact deck brief with `slide_count`, narrative arc, selected theme style, adapted design system, content density, and image text-rendering policy.
535. Create one slide spec per slide using `references/slide-spec-schema.md`.
546. For every slide, define `rendered_text`: the complete visible text that must appear inside the generated image.
557. For every slide, write an `imagegen` prompt from `references/image-prompting.md`. The prompt must include every `rendered_text` item verbatim, plus layout instructions for where each text item appears and the adapted theme style.
568. Generate slide images with the `imagegen` skill/tool. Save each final slide image into a project-local folder such as `awesome-ppt-output/<deck-slug>/images/`.
579. Inspect generated images for text fidelity. If title/body text is missing, misspelled, or replaced with gibberish, regenerate that slide with a tighter prompt before assembling the deck.
5810. Run `scripts/validate_deck.py` against the deck spec before building.
5911. Run `scripts/build_deck.py` to create the image-first PPTX.
6012. Open or render-check the result when the environment supports it; otherwise at least verify that the PPTX file exists and the package can be written.
6113. If mode is editable, or legacy `$awesome-ppt` received `--editable`, `--native`, "fully editable", or "ppt-master": run `scripts/export_ppt_master_handoff.py` against `deck.json`, then invoke `ppt-master` with the generated `ppt-master-request.md` or `ppt-master-brief.md`. Treat this as a second-stage optimization after the pure image-first PPTX exists; never substitute a direct SVG-only build for the image-first deck.
6214. Run the `ppt-master` reconstruction in a fresh rebuild folder. Do not reuse an old `svg_output/`, `svg_final/`, or previous exported PPTX when testing a new deck.
6315. After `ppt-master` exports, run `scripts/inspect_pptx_package.py` on the native PPTX. For decks that should be fully native, verify the expected slide count, native text nodes, low or zero full-slide media usage, required text strings, and no unexpected black fallback colors.
64
65## Planning Rules
66
67- Start from the story, not the image prompts. Each slide needs one job and one dominant read.
68- Always identify the user's presentation theme before writing slide specs. Use `references/theme-style-prompt-library.md` as a style baseline, but optimize it for the specific audience, topic, language, and constraints.
69- If the user gives an explicit style, it wins over automatic theme matching. Use the library only to sharpen palette, layout, typography, and visual vocabulary.
70- Use `--pages` as a hard constraint. If the requested content cannot fit, ask before changing the page count.
71- Keep slide text short enough for the image model to render accurately. Split crowded slides instead of shrinking text.
72- Put all visible content text into `rendered_text` and the image prompt.
73- Keep `rendered_text` exact and complete because it becomes the source text for the `ppt-master` editable reconstruction pass.
74- Use `editable_text` only when explicitly requested as an auxiliary mirror layer for later manual editing. Do not use it to supply missing visible content after image generation.
75- For charts and tables, include the exact visible labels/values in `rendered_text` and the image prompt. Avoid dense spreadsheet-like tables in v1 because rendered text fidelity becomes the bottleneck.
76- If exact legal, financial, or compliance text must be perfectly editable and auditable, pause and explain that the image-first workflow is the wrong default for that slide.
77
78## File Outputs
79
80Recommended run folder:
81
82```text
83awesome-ppt-output/<deck-slug>/
84 deck.json
85 images/
86 slide-01.png
87 slide-02.png
88 <deck-slug>.pptx
89 ppt-master-handoff/
90 ppt-master-brief.md
91 ppt-master-request.md
92 images/
93 slide-01.png
94 ppt-master-rebuild/
95 <deck-slug>-editable.pptx
96```
97
98The `deck.json` file is the source of truth for assembly. Use relative image paths from the JSON file location when possible.
99
100The `ppt-master-handoff/`, `ppt-master-rebuild/`, and editable PPTX output are created only when running `$awesome-ppt-editable` or legacy `$awesome-ppt --editable`. The handoff is the source package for `ppt-master`; it should preserve reference images and exact text so `ppt-master` can rebuild the deck as native editable elements.
101
102## Scripts
103
104- `scripts/validate_deck.py`: validate slide count, required fields, `rendered_text`, prompt coverage, image existence, and image aspect ratios.
105- `scripts/build_deck.py`: assemble a PPTX from a validated `deck.json`. The standard-library v1 builder writes one full-slide image per slide and can optionally add editable text boxes if `editable_text` is present.
106- `scripts/export_ppt_master_handoff.py`: export a `ppt-master` reconstruction brief from `deck.json`, copying generated slide images as visual references for the editable rebuild.
107- `scripts/inspect_pptx_package.py`: inspect a PPTX package for slide count, media count, native text nodes, required text, and suspicious black fallback colors.
108- `scripts/requirements.txt`: reserved for future optional Python dependencies. V1 scripts use only the Python standard library.
109
110No dependency installation is required for v1. If future optional dependencies are added, install them with:
111
112```bash
113python -m pip install -r awesome-ppt/scripts/requirements.txt
114```
115
116Validate and build:
117
118```bash
119python awesome-ppt/scripts/validate_deck.py awesome-ppt-output/my-deck/deck.json
120python awesome-ppt/scripts/build_deck.py awesome-ppt-output/my-deck/deck.json --out awesome-ppt-output/my-deck/my-deck.pptx
121python awesome-ppt/scripts/export_ppt_master_handoff.py awesome-ppt-output/my-deck/deck.json
122python awesome-ppt/scripts/inspect_pptx_package.py awesome-ppt-output/my-deck/my-deck-editable.pptx --expect-slides 5 --expect-native-text --require-text "Transformer"
123```
124
125## References
126
127- Read `references/slide-spec-schema.md` before creating `deck.json`.
128- Read `references/theme-style-prompt-library.md` before creating the deck brief or image prompts.
129- Read `references/image-prompting.md` before generating slide images.
130- Read `references/editability-policy.md` when deciding whether any optional editable helper layer is appropriate.
131- Read `references/ppt-master-integration.md` before running the editable reconstruction optimization.