SlideStage Lite · stage-manifest-reference
`.stage` Manifest Reference
Mirrored docs keep the language used by their source repo. Site chrome stays in your selected language.
A .stage file is a zip archive with a root manifest.json. The manifest describes the deck, slide files, dimensions, capabilities, and optional producer metadata.
The authoritative schema lives in @slidestage/spec.
Minimal manifest
{
"schema": "slidestage@1.0",
"id": "my-deck",
"version": "1.0.0",
"title": "My Deck",
"subtitle": null,
"author": null,
"description": null,
"createdAt": "2026-01-01T00:00:00.000Z",
"updatedAt": "2026-01-01T00:00:00.000Z",
"architecture": "multi-file",
"dimensions": { "width": 1920, "height": 1080 },
"totalSlides": 1,
"slides": [
{
"index": 1,
"id": "cover",
"label": "Cover",
"file": "slides/01-cover.html",
"thumbnail": null,
"notes": null
}
]
}
Required fields
schema: must beslidestage@1.0.id: 1-128 chars; no/,\,.., NUL, or control chars.version: deck content version.title: human-readable title.createdAt/updatedAt: timestamps, preferably ISO 8601.architecture: one of the supported architecture values.dimensions: logical slide width and height.totalSlides: slide count.slides[]: non-empty slide list.
Slide fields
Each slide needs:
indexidlabelfilethumbnailnotes
file and thumbnail must be safe package-relative paths.
Architecture values
multi-filemulti-file-flatsingle-file-deckstagesingle-file-html
The original source framework belongs in provenance.sourceKind, not architecture.
Capabilities
compat.requires can request:
same-origin-storagebroadcast-channelwindow-open
Lite and Pro use these values to show trust prompts and adjust the iframe sandbox.
Fingerprint
Deck identity is the SHA-256 of the .stage zip bytes, not manifest.id.
Packers should use deterministic zip mtimes and stable entry ordering to keep fingerprints repeatable.