Skip to content

presentation.yaml

Defines the authored slide content and deck structure.

For a complete example, see the reference presentation.yaml.

Each slide owns its own content block. If two slides need the same copy or labels, repeat them on those slides rather than relying on shared presentation-level data.

Top level

FieldRequiredTypeDescription
presentation.idyesstringPresentation identifier used by the catalog entry
presentation.titleyesstringDeck title
presentation.subtitleyesstringDeck subtitle
presentation.yearnumberOptional year
presentation.slidesyesarrayOrdered list of slides

Progress timeline slide content

The progress-timeline template is self-contained. The slide owns its stage strip, active-stage detail, and footer labels.

FieldRequiredType
content.stageyesstring
content.deliverables_headingstring
content.focus_areas_headingstring
content.footer_link_labelstring
content.stagesyesobject
content.itemsyesstring[]
content.themesyesarray of { category, target }

content.stages

Must contain exactly four keys:

KeyRequired
completedyes
in-progressyes
plannedyes
futureyes

Each stage strip entry:

FieldRequiredType
labelyesstring
summaryyesstring

The active stage's items and themes live on the slide itself. Each themes[] entry has category (string, required) and target (string, required).

Slides

Each slide in the slides array:

FieldRequiredTypeDescription
templateyesstringOne of the nine template ids
enabledyesbooleanDisabled slides are skipped
titlevariesstringRequired by most templates
subtitlestringOptional on all templates
contentvariesobjectShape depends on template. Required for all except agenda

Template content validation

Each template enforces specific rules on title and content. Full authoring details are on each template page. The tables below summarize what the validator requires.

hero

FieldRequiredNotes
content.title_primaryAt least one of title_primary or title_accent required
content.title_accent
content.subtitle_prefix
content.quote

Slide-level title is not required.

agenda

FieldRequiredNotes
titleyes
contentOmit entirely or pass {}. Row text comes from other slides

section-list-grid

FieldRequired
titleyes
content.sectionsyes

Each sections[] entry: { title: string, bullets: string[] }.

timeline

FieldRequiredNotes
titleyes
content.featured_release_idsyesArray of release id strings (can be empty)
content.latest_badge_label
content.footer_link_label
content.empty_state_title
content.empty_state_message

progress-timeline

FieldRequiredNotes
titleyes
content.stageyescompleted, in-progress, planned, or future
content.deliverables_heading
content.focus_areas_heading
content.footer_link_label
content.stagesyesFour stage strip entries
content.itemsyesActive stage items
content.themesyesActive stage themes

people

FieldRequired
titleyes
content.spotlightyes
content.banner_prefix
content.contributors_link_label
content.banner_suffix

Each spotlight[] entry: { login: string, summary: string }.

FieldRequired
titleyes
content.stat_keysyes
content.mentionsyes
content.section_heading
content.stats_heading
content.show_deltas
content.trend_suffix

Each mentions[] entry: { type: string, title: string } with optional paired url + url_label.

action-cards

FieldRequired
titleyes
content.cardsyes
content.footer_text

Each cards[] entry: { title, description, url_label, url } (all required strings).

closing

FieldRequiredNotes
content.headingyes
content.messageyes
content.quote

Slide-level title is not required.