# HTML Deck Framework Detection
`slidestage-pack` detects the source deck before choosing a packaging mode. Detection order matters: the first matching rule wins.
## Detection order
1. `slidestage@1.0`
2. `webcomponent-deck`
3. `router-html`
4. `reveal`
5. `impress`
6. `inline-deck`
7. `plain-html`
## `slidestage@1.0`
Matches a root `manifest.json` with `schema === "slidestage@1.0"`.
Recommended mode: `passthrough`.
## `webcomponent-deck`
Matches ``.
Recommended mode: `split`.
Common source: huashu-design Web Component decks.
## `router-html`
Matches `window.DECK_MANIFEST = [...]`.
Recommended mode: `split`.
Every manifest entry points to a slide HTML file inside the package root.
## `reveal`
Matches a `.reveal > .slides` container or a reveal.js script.
Recommended mode: `wrap`.
Use `split` only when you accept losing reveal runtime features.
## `impress`
Matches `#impress` or an impress.js script.
Recommended mode: `wrap`.
`split` loses 3D camera behavior and step transforms.
## `inline-deck`
Matches a `.deck` container with `.slide` sections, or common slide runtime scripts.
Recommended mode: `split`.
Each top-level slide section becomes one output slide.
## `plain-html`
Matches a single HTML entry that does not fit any other framework.
Recommended mode: `single`.
If scripts are present, the manifest should declare required capabilities.
## Root HTML lookup
When multiple top-level HTML files exist, the detector prefers names such as `index.html`, `deck.html`, `slides.html`, and `presentation.html`.
If no root can be chosen, the source is `ambiguous` and needs user input.