Create editable PowerPoint PPTX decks from pptz YAML sources with Milky2018/pptz. Use when Codex needs to design a new slide deck, write deck/page sources, compile them to .pptx, and deliver both sources and output. Do not use for editing an existing PPTX or for PowerPoint features outside the pptz schema.
| Task | Read |
|---|---|
| Full schema, diagnostics, CLI contract | REFERENCE.md |
| Known-good compiling source deck | examples/minimal |
| Technical/API/architecture deck | references/technical-deck.md |
| Metrics/reporting deck | references/data-report.md |
| Product launch/demo deck | references/product-demo.md |
| Course/tutorial/workshop deck | references/course-lecture.md |
deck-topic/
|-- deck.pptz.yaml
|-- pages/
| |-- cover.page.yaml
| `-- agenda.page.yaml
|-- images/
`-- dist/
`-- deck.pptxmoon runwasm Milky2018/pptz@0.5.0 deck.pptz.yaml --out dist/deck.pptxWhen working inside this repository, use the local package instead:moon runwasm . examples/minimal/deck.pptz.yaml --out examples/minimal/dist/deck.pptxtheme:
text_styles:
body:
font_size: 22
font_family: "Aptos"
color: "$text"
caption:
extends: "$body"
font_size: 12
color: "$muted"
table_styles:
base:
font_size: 14
font_family: "Aptos"
border: { style: "solid", width: 1, color: "$line" }
compact:
extends: "$base"
header_fill: "$surface_alt"
header_text_color: "$text"
body_text_color: "$text"layouts:
content:
slots:
eyebrow:
bounds: [72, 38, 500, 24]
style: "$caption"
heading:
bounds: [72, 72, 900, 72]
style: "$title"
elements:
- id: "accent"
type: "shape"
bounds: [48, 40, 6, 96]
content:
shape: "rect"
fill: { type: "solid", color: "$primary" }layout: "$content"
slots:
eyebrow: "Risk model"
heading: "风险分析"components:
stat_card:
bounds: [0, 0, 180, 90]
elements:
- id: "label"
type: "text"
bounds: [16, 14, 148, 24]
content:
style: "$caption"
text: "$label"components:
- id: "npm_card"
use: "$stat_card"
bounds: [72, 160, 180, 90]
props:
label: "npm packages"content:
style: "$body"
align: ["left", "top"]
wrap: true
body:
inset: { left: 8, right: 8, top: 4, bottom: 4 }
paragraphs:
- text: "Agenda item"
space_after: 6
margin_left: 18
indent: -9
bullet: { kind: "char", char: "-" }
- runs:
- text: "Read "
- text: "docs"
style: "$link"
hyperlink: "https://example.com"
tooltip: "Documentation"theme:
table_styles:
compact:
font_size: 14
font_family: "Aptos"
header_fill: "$surface_alt"
header_text_color: "$text"
body_text_color: "$text"
border: { style: "solid", width: 1, color: "$muted" }
content:
style: "$compact"
data:
- ["Metric", "Q1", "Q2"]
- ["Revenue", "100", "150"]theme:
chart_styles:
report_bar:
kind: "bar"
legend: "bottom"
style: 4
data_labels: "outside_end"
content:
chart_style: "$report_bar"
title: "Revenue"
data:
- ["", "Q1", "Q2", "Q3"]
- ["Revenue", 100.0, 150.0, 125.0]content:
kind: "bar"
title: "Revenue"
legend: "bottom"
data:
- ["", "Q1", "Q2", "Q3"]
- ["Revenue", 100.0, 150.0, 125.0]content:
path: "images/hero.png"
fit: "cover"
crop:
left: 0.05
right: 0.05
top: 0.0
bottom: 0.0