---
description: 'Per-slide content YAML schema template with supported element types, fields, and usage instructions'
---
# Content YAML Template
Use this template when creating or updating a slide's `content.yaml` file. Each slide folder (`content/slide-NNN/`) contains one `content.yaml` that defines the slide's layout, text, shapes, and optional style overrides.
## Instructions
* All position and size values (`left`, `top`, `width`, `height`) are in inches.
* Color values use `#RRGGBB` hex format or `@theme_name` references. Named color references (`$color_name`) are not supported.
* Font names are specified as literal font family names (e.g., `Segoe UI`, `Cascadia Code`).
* Elements render in the order listed — later elements draw on top of earlier ones.
* Speaker notes are required on all content slides when `speaker_notes_required: true` is set in the global style.
* The `layout` field is informational and helps describe the slide structure; it does not auto-apply a PowerPoint layout.
* The `background` block sets a per-slide background fill. When omitted, no background fill is applied.
* The `rotation` field (degrees, 0–360) is supported on `shape`, `textbox`, and `image` elements. Omit or set to 0 for no rotation.
## Template
```yaml
# Slide metadata
slide: 1
title: "Production-Grade AI-Assisted Software Engineering"
section: "Introduction"
layout: "title" # title | content | divider | two-column | blank
# Optional per-slide background
background:
fill: "#1B1B1F" # solid color fill; use #RRGGBB or @theme_name
# Elements placed on the slide, rendered in order
elements:
- type: shape
shape: rectangle
left: 0
top: 0
width: 13.333
height: 0.12
fill: "#0078D4"
- type: textbox
left: 0.8
top: 1.5
width: 11.0
height: 1.8
text: "Production-Grade AI-Assisted\nSoftware Engineering"
font: "Segoe UI"
font_size: 36
font_color: "#F8F8FC"
font_bold: true
alignment: left # left | center | right | justify
- type: textbox
left: 0.8
top: 4.4
width: 10.0
height: 0.8
text: "Beyond Vibe Coding: Engineering with AI for Real-World Software"
font: "Segoe UI"
font_size: 20
font_color: "#9CA3AF"
- type: shape
shape: rounded_rectangle
left: 0.8
top: 1.5
width: 2.8
height: 0.55
fill: "#0078D4"
corner_radius: 0.1
rotation: 270 # degrees; vertical text bottom-to-top
text: "HYPER-VELOCITY ENGINEERING"
text_font: "Segoe UI"
text_size: 11
text_color: "#F8F8FC"
text_bold: true
- type: image
path: "images/background.png"
left: 0
top: 0
width: 13.333
height: 7.5
rotation: 0 # optional; degrees 0-360
- type: rich_text
left: 0.8
top: 5.8
width: 10.0
height: 0.6
segments:
- text: "GitHub Copilot | "
font: "Segoe UI"
size: 14
color: "#9CA3AF"
- text: "context engineering"
font: "Cascadia Code"
size: 14
color: "#FFD700"
- text: " | RPI Workflow"
font: "Segoe UI"
size: 14
color: "#9CA3AF"
- type: card
left: 0.8
top: 1.4
width: 5.5
height: 2.8
title: "WHAT MOST TEAMS DO"
title_color: "#F8F8FC"
title_size: 16
title_bold: true
accent_bar: true
accent_color: "#00B4D8"
content:
- bullet: "Open Copilot Chat, type a prompt, paste the result"
color: "#F8F8FC"
- bullet: "No structure, no verification, no persistence"
color: "#9CA3AF"
- type: arrow_flow
left: 1.0
top: 3.0
width: 11.0
height: 1.5
items:
- label: "Research"
color: "#0078D4"
- label: "Plan"
color: "#00B4D8"
- label: "Implement"
color: "#10B981"
- type: numbered_step
left: 1.0
top: 2.0
width: 5.0
height: 0.8
number: 1
label: "Configure VS Code Extensions"
description: "Install the HVE extension pack."
accent_color: "#0078D4"
- type: table
left: 1.0
top: 2.0
width: 11.0
height: 3.0
columns:
- width: 3.0
- width: 4.0
- width: 4.0
rows:
- cells:
- text: "Feature"
font_bold: true
fill: "#0078D4"
font_color: "#F8F8FC"
- text: "Status"
font_bold: true
fill: "#0078D4"
font_color: "#F8F8FC"
- text: "Notes"
font_bold: true
fill: "#0078D4"
font_color: "#F8F8FC"
- cells:
- text: "Authentication"
- text: "Complete"
font_color: "#10B981"
- text: "OAuth 2.0 with PKCE"
- cells:
- text: "Merge status"
merge_right: 2 # merge this cell across 2 additional columns
- text: ""
- text: ""
first_row: true # style first row as header
horz_banding: true # alternate row shading
- type: chart
left: 1.0
top: 2.0
width: 10.0
height: 5.0
chart_type: column_clustered # see Supported Chart Types table
categories:
- "Q1"
- "Q2"
- "Q3"
- "Q4"
series:
- name: "Revenue"
values: [100, 150, 130, 180]
- name: "Costs"
values: [80, 90, 85, 95]
title: "Quarterly Results"
has_legend: true
- type: connector
connector_type: elbow # straight | elbow | curve
begin_x: 2.0
begin_y: 3.0
end_x: 8.0
end_y: 5.0
line_color: "#0078D4"
line_width: 2
dash_style: solid # see Line Dash Styles table
head_end: none # none | arrow | triangle | stealth | diamond | oval
tail_end: arrow
- type: group
left: 1.0
top: 2.0
width: 5.0
height: 3.0
elements:
- type: shape
shape: rectangle
left: 1.0
top: 2.0
width: 2.0
height: 1.0
fill: "#0078D4"
- type: textbox
left: 1.2
top: 2.2
width: 1.6
height: 0.6
text: "Group Title"
font_color: "#F8F8FC"
# Speaker notes (required for all content slides)
speaker_notes: |
Welcome to the HVE workshop. This presentation covers how to use AI
as a reliable engineering partner rather than a copy-paste tool.
Key points: structured workflows, context engineering, verification.
```
## Supported Element Types
| Type | Description | Required Fields |
|---|---|---|
| `shape` | Rectangle, rounded rectangle, arrow, etc. | `shape`, `left`, `top`, `width`, `height` |
| `textbox` | Plain text box | `left`, `top`, `width`, `height`, `text` |
| `rich_text` | Mixed font/color text segments | `left`, `top`, `width`, `height`, `segments` |
| `image` | PNG image placement | `path`, `left`, `top`, `width`, `height` |
| `card` | Styled panel with optional title and bullets | `left`, `top`, `width`, `height` |
| `arrow_flow` | Horizontal arrow flow diagram | `left`, `top`, `width`, `height`, `items` |
| `numbered_step` | Numbered step with label and description | `left`, `top`, `width`, `height`, `number`, `label` |
| `table` | Data table with headers, merging, and styling | `left`, `top`, `width`, `height`, `columns`, `rows` |
| `chart` | Data chart (bar, line, pie, scatter, etc.) | `left`, `top`, `width`, `height`, `chart_type`, `categories`, `series` |
| `connector` | Line connecting two points with optional arrows | `connector_type`, `begin_x`, `begin_y`, `end_x`, `end_y` |
| `group` | Container grouping nested child elements | `left`, `top`, `width`, `height`, `elements` |
## Supported Shape Types
| Shape | python-pptx Constant |
|---|---|
| `rectangle` | `MSO_SHAPE.RECTANGLE` |
| `rounded_rectangle` | `MSO_SHAPE.ROUNDED_RECTANGLE` |
| `oval` | `MSO_SHAPE.OVAL` |
| `circle` | `MSO_SHAPE.OVAL` (alias) |
| `diamond` | `MSO_SHAPE.DIAMOND` |
| `pentagon` | `MSO_SHAPE.PENTAGON` |
| `hexagon` | `MSO_SHAPE.HEXAGON` |
| `right_triangle` | `MSO_SHAPE.RIGHT_TRIANGLE` |
| `trapezoid` | `MSO_SHAPE.TRAPEZOID` |
| `parallelogram` | `MSO_SHAPE.PARALLELOGRAM` |
| `cross` | `MSO_SHAPE.CROSS` |
| `donut` | `MSO_SHAPE.DONUT` |
| `cloud` | `MSO_SHAPE.CLOUD` |
| `star_5_point` | `MSO_SHAPE.STAR_5_POINT` |
| `right_arrow` | `MSO_SHAPE.RIGHT_ARROW` |
| `left_arrow` | `MSO_SHAPE.LEFT_ARROW` |
| `up_arrow` | `MSO_SHAPE.UP_ARROW` |
| `down_arrow` | `MSO_SHAPE.DOWN_ARROW` |
| `left_right_arrow` | `MSO_SHAPE.LEFT_RIGHT_ARROW` |
| `notched_right_arrow` | `MSO_SHAPE.NOTCHED_RIGHT_ARROW` |
| `chevron` | `MSO_SHAPE.CHEVRON` |
| `flowchart_process` | `MSO_SHAPE.FLOWCHART_PROCESS` |
| `flowchart_decision` | `MSO_SHAPE.FLOWCHART_DECISION` |
| `flowchart_terminator` | `MSO_SHAPE.FLOWCHART_TERMINATOR` |
| `flowchart_data` | `MSO_SHAPE.FLOWCHART_DATA` |
| `left_brace` | `MSO_SHAPE.LEFT_BRACE` |
| `right_brace` | `MSO_SHAPE.RIGHT_BRACE` |
| `callout_rectangle` | `MSO_SHAPE.RECTANGULAR_CALLOUT` |
| `callout_rounded_rectangle` | `MSO_SHAPE.ROUNDED_RECTANGULAR_CALLOUT` |
## Supported Chart Types
| Chart Type | python-pptx Constant |
|---|---|
| `column_clustered` | `XL_CHART_TYPE.COLUMN_CLUSTERED` |
| `column_stacked` | `XL_CHART_TYPE.COLUMN_STACKED` |
| `bar_clustered` | `XL_CHART_TYPE.BAR_CLUSTERED` |
| `bar_stacked` | `XL_CHART_TYPE.BAR_STACKED` |
| `line` | `XL_CHART_TYPE.LINE` |
| `line_markers` | `XL_CHART_TYPE.LINE_MARKERS` |
| `pie` | `XL_CHART_TYPE.PIE` |
| `doughnut` | `XL_CHART_TYPE.DOUGHNUT` |
| `area` | `XL_CHART_TYPE.AREA` |
| `radar` | `XL_CHART_TYPE.RADAR` |
| `scatter` | `XL_CHART_TYPE.XY_SCATTER` |
| `bubble` | `XL_CHART_TYPE.BUBBLE` |
## Line Dash Styles
| Style | python-pptx Constant |
|---|---|
| `solid` | `MSO_LINE_DASH_STYLE.SOLID` |
| `dash` | `MSO_LINE_DASH_STYLE.DASH` |
| `dash_dot` | `MSO_LINE_DASH_STYLE.DASH_DOT` |
| `dash_dot_dot` | `MSO_LINE_DASH_STYLE.DASH_DOT_DOT` |
| `long_dash` | `MSO_LINE_DASH_STYLE.LONG_DASH` |
| `long_dash_dot` | `MSO_LINE_DASH_STYLE.LONG_DASH_DOT` |
| `round_dot` | `MSO_LINE_DASH_STYLE.ROUND_DOT` |
| `square_dot` | `MSO_LINE_DASH_STYLE.SQUARE_DOT` |
## Slide-Level Fields
| Field | Type | Description |
|---|---|---|
| `slide` | `int` | 1-based slide number |
| `title` | `string` | Slide title (informational) |
| `section` | `string` | Optional section grouping |
| `layout` | `string` | Informational layout hint: `title`, `content`, `divider`, `two-column`, `blank` |
| `background` | `object` | Per-slide background; contains `fill` with a color value (`#RRGGBB` or `@theme_name`) |
| `speaker_notes` | `string` | Speaker notes text; required when `speaker_notes_required` is true |
## Common Element Fields
These optional fields apply to `shape`, `textbox`, and `image` element types:
| Field | Type | Default | Description |
|---|---|---|---|
| `left` | `float` | — | Horizontal position in inches |
| `top` | `float` | — | Vertical position in inches |
| `width` | `float` | — | Element width in inches |
| `height` | `float` | — | Element height in inches |
| `name` | `string` | auto | Shape name for identification |
| `rotation` | `float` | `0` | Rotation in degrees (0–360); 90 = clockwise quarter turn, 270 = counter-clockwise |
## Textbox Fields
| Field | Type | Default | Description |
|---|---|---|---|
| `text` | `string` | — | Text content; use `\n` for line breaks |
| `font` | `string` | `Segoe UI` | Font family name |
| `font_size` | `int` | `16` | Font size in points |
| `font_color` | `string` | — | Text color as `#RRGGBB` or `@theme_name` |
| `font_bold` | `bool` | `false` | Bold text weight. `bold` is accepted as an alias |
| `italic` | `bool` | `false` | Italic text style |
| `underline` | `bool` | `false` | Underline text decoration |
| `alignment` | `string` | inherited | Paragraph alignment: `left`, `center`, `right`, `justify` |
| `hyperlink` | `string` | — | URL applied to the text run |
| `space_before` | `float` | — | Space before paragraph in points |
| `space_after` | `float` | — | Space after paragraph in points |
| `line_spacing` | `float` | — | Line spacing in points |
| `level` | `int` | `0` | Paragraph indentation level (0–8) |
| `margin_left` | `float` | — | Text frame left margin in inches |
| `margin_right` | `float` | — | Text frame right margin in inches |
| `margin_top` | `float` | — | Text frame top margin in inches |
| `margin_bottom` | `float` | — | Text frame bottom margin in inches |
| `auto_size` | `string` | — | Auto-size behavior: `none`, `fit` (shape to fit text), `shrink` (text to fit shape) |
| `vertical_anchor` | `string` | — | Vertical text alignment within frame: `top`, `middle`, `bottom` |
## Shape Text Fields
When a shape contains inline text, use these prefixed fields:
| Field | Type | Default | Description |
|---|---|---|---|
| `text` | `string` | — | Text displayed inside the shape |
| `text_font` | `string` | `Segoe UI` | Font family for shape text |
| `text_size` | `int` | `16` | Font size in points for shape text |
| `text_color` | `string` | — | Text color as `#RRGGBB` or `@theme_name` |
| `text_bold` | `bool` | `false` | Bold text weight for shape text |
## Color Syntax
Color values in content YAML accept three formats:
| Syntax | Example | Description |
|---|---|---|
| Hex value | `"#0078D4"` | Direct RGB hex color |
| Theme reference | `"@accent_1"` | Maps to the presentation theme's `MSO_THEME_COLOR` enum |
| Theme with brightness | `{theme: "accent_1", brightness: 0.4}` | Theme color with brightness adjustment (-1.0 to 1.0) |
Available theme color names: `accent_1` through `accent_6`, `dark_1`, `dark_2`, `light_1`, `light_2`, `text_1`, `text_2`, `background_1`, `background_2`, `hyperlink`, `followed_hyperlink`.
## Fill Syntax
The `fill` field on shapes and backgrounds accepts three formats:
### Solid fill
```yaml
fill: "#0078D4" # hex value
fill: "@accent_1" # theme color
```
### Gradient fill
```yaml
fill:
type: "gradient"
angle: 90 # gradient direction in degrees
stops:
- position: 0
color: "#0078D4"
- position: 50
color: "#00B4D8"
- position: 100
color: "#10B981"
```
### Pattern fill
```yaml
fill:
type: "pattern"
pattern: "cross" # MSO_PATTERN_TYPE name (e.g., cross, diagonal_stripe)
foreground: "#000000"
background: "#FFFFFF"
```
## Line Properties
Line/border properties apply to shapes and connectors:
| Field | Type | Description |
|---|---|---|
| `line_color` | `string` | Line color (any color syntax) |
| `line_width` | `float` | Line width in points |
| `dash_style` | `string` | Dash style (see Line Dash Styles table) |
## Connector Fields
| Field | Type | Default | Description |
|---|---|---|---|
| `connector_type` | `string` | `straight` | Connector routing: `straight`, `elbow`, `curve` |
| `begin_x` | `float` | — | Start X position in inches |
| `begin_y` | `float` | — | Start Y position in inches |
| `end_x` | `float` | — | End X position in inches |
| `end_y` | `float` | — | End Y position in inches |
| `head_end` | `string` | `none` | Start arrowhead: `none`, `arrow`, `triangle`, `stealth`, `diamond`, `oval` |
| `tail_end` | `string` | `none` | End arrowhead: `none`, `arrow`, `triangle`, `stealth`, `diamond`, `oval` |
## Table Fields
| Field | Type | Default | Description |
|---|---|---|---|
| `columns` | `list` | — | Column definitions with `width` in inches |
| `rows` | `list` | — | Row definitions with `cells` list |
| `first_row` | `bool` | `false` | Apply first-row (header) banding |
| `last_row` | `bool` | `false` | Apply last-row banding |
| `first_col` | `bool` | `false` | Apply first-column banding |
| `last_col` | `bool` | `false` | Apply last-column banding |
| `horz_banding` | `bool` | `false` | Apply horizontal row banding |
| `vert_banding` | `bool` | `false` | Apply vertical column banding |
### Cell Fields
| Field | Type | Description |
|---|---|---|
| `text` | `string` | Cell text content |
| `fill` | `string` | Cell background color |
| `font_color` | `string` | Cell text color |
| `font_bold` | `bool` | Bold text in cell |
| `font_size` | `int` | Font size in points |
| `font` | `string` | Font family |
| `vertical_anchor` | `string` | Vertical alignment: `top`, `middle`, `bottom` |
| `merge_right` | `int` | Merge across N additional columns |
| `merge_down` | `int` | Merge across N additional rows |
## Chart Fields
| Field | Type | Default | Description |
|---|---|---|---|
| `chart_type` | `string` | `column_clustered` | Chart type (see Supported Chart Types table) |
| `categories` | `list` | — | Category labels for x-axis |
| `series` | `list` | — | Data series; each has `name` and `values` |
| `title` | `string` | — | Chart title |
| `has_legend` | `bool` | `true` | Display chart legend |
Scatter and bubble charts use `data_points` instead of `categories`/`values`:
```yaml
series:
- name: "Scatter Data"
data_points:
- x: 1.0
y: 2.5
- x: 3.0
y: 4.1
```
## Placeholder Content
When using a template PPTX with themed layouts, populate layout placeholders with the `placeholders` section:
```yaml
slide: 1
layout: "Title Slide"
placeholders:
0: "Presentation Title" # placeholder index 0 (typically title)
1: "Subtitle text here" # placeholder index 1 (typically subtitle)
elements: []
speaker_notes: |
Opening slide with template placeholders populated.
```
Placeholder indices correspond to the layout's placeholder positions. Use the `--template` argument with `build_deck.py` to load layouts from the template file, and define layout name mappings in `style.yaml` under the `layouts` section.
*🤖 Crafted with precision by ✨Copilot following brilliant human instruction, then carefully refined by our team of discerning human reviewers.*microsoft/hve-core
Publicmirrored fromhttps://github.com/microsoft/hve-coreAvailable
.github/skills/experimental/powerpoint/content-yaml-template.md
518lines · modepreview