Skip to main content

Manifest Schema

The manifest.json file is an auto-generated index of a built deck. It is located at .slide-builder/deck/{deck-name}/output/{deck-id}/manifest.json and is created or updated each time slides are built using /pitchsmith:build-one or /pitchsmith:build-all.

The manifest is consumed by the slide viewer, presenter mode, and export functions. You typically do not edit this file directly.


Manifest Structure

{
"deckId": "product-launch",
"deckName": "Product Launch",
"slideCount": 8,
"plannedSlideCount": 10,
"slides": [
{
"number": 1,
"fileName": "slide-1.html",
"title": "Title Slide",
"template": "title",
"slideId": "a1b2c3d4",
"animations": {
"groups": [["el-1", "el-2"], ["el-3"]],
"transition": "fade"
},
"skipped": false,
"notes": "Welcome the audience and set expectations."
}
],
"generatedAt": "2026-03-01T10:30:00Z"
}

Manifest Fields

FieldTypeRequiredDescription
deckIdstringYesUnique deck identifier (kebab-case)
deckNamestringYesHuman-readable deck name
slideCountnumberYesNumber of built slides in the deck
plannedSlideCountnumberNoTotal slides defined in plan.yaml (used for build progress badges)
slidesarrayYesArray of slide entries
generatedAtstringYesISO 8601 timestamp of last generation

Slide Entry Fields

Each entry in the slides array describes one built slide.

FieldTypeRequiredDescription
numbernumberYesSlide position (1-indexed)
fileNamestringYesHTML filename for the slide (e.g., "slide-1.html")
titlestringYesSlide title or description
templatestringNoTemplate ID used to generate this slide
slideIdstringNoUnique slide identifier
animationsobjectNoAnimation build group configuration
skippedbooleanNoWhen true, slide is excluded from presenter mode and PDF export
notesstringNoSpeaker notes for the slide

Animations Object

The animations field controls progressive reveal behavior in presentation mode.

FieldTypeDescription
animations.groupsstring[][]Array of element ID arrays — each group is revealed on a click / keypress
animations.transitionstringTransition style between groups

Deprecated Fields

FieldReplacementNotes
buildGroupsanimations.groupsLegacy format for animation groups. Use animations.groups instead.

Example Manifest

{
"deckId": "q1-sales-review",
"deckName": "Q1 Sales Review",
"slideCount": 5,
"plannedSlideCount": 8,
"slides": [
{
"number": 1,
"fileName": "slide-1.html",
"title": "Q1 Sales Review",
"template": "title",
"slideId": "f7e8d9c0",
"skipped": false
},
{
"number": 2,
"fileName": "slide-2.html",
"title": "Revenue Overview",
"template": "data",
"slideId": "a1b2c3d4",
"animations": {
"groups": [["chart-container"], ["callout-1", "callout-2"]],
"transition": "fade"
},
"notes": "Highlight the 23% growth figure before showing breakdowns."
},
{
"number": 3,
"fileName": "slide-3.html",
"title": "Regional Breakdown",
"template": "split",
"slideId": "e5f6a7b8"
},
{
"number": 4,
"fileName": "slide-4.html",
"title": "Competitive Wins",
"template": "content",
"slideId": "c9d0e1f2",
"skipped": true,
"notes": "Skip this slide for the short version of the presentation."
},
{
"number": 5,
"fileName": "slide-5.html",
"title": "Next Steps",
"template": "cta",
"slideId": "b3c4d5e6"
}
],
"generatedAt": "2026-03-01T14:22:00Z"
}

How the Manifest Is Used

ConsumerUsage
Slide viewerReads slides array to display the deck, respecting skipped status
Presenter modeUses animations.groups for progressive reveal; filters out skipped slides
PDF exportIterates slides in order, excluding entries where skipped is true
Build progressCompares slideCount vs. plannedSlideCount to show build completion
Slide navigationUses number and title for thumbnail strips and jump-to-slide menus

The manifest is regenerated automatically when you build slides or run /pitchsmith:refresh.