Scaffold a whole new deck for this reveal.js presentation framework. Use when the user says "scaffold a deck from this outline", "turn this wireframe/outline into slides", "build the slide skeleton for ...", "new deck from <file>.md", or hands over a presentation-plan.md from presentation-planner. Reads an outline or a plan and writes slides/ - a numbered stub per section, vertical stacks where it nests, a title slide, an overview jump menu, a closing takeaways slide. Emits stubs only; never writes slide prose or components.
Resources
1Install
npx skillscat add gregshallardau/ai-training-101/deck-builder Install via the SkillsCat registry.
deck-builder
Before anything: read docs/framework-conventions.md, slides/README.md,docs/cheatsheet.md, and docs/plan-format.md.
Inputs
- path to the input file - either a plain outline (
wireframe.md) or apresentation-plan.mdfrompresentation-planner - deck title (taken from the plan's
title:in plan mode) - optional theme name (an existing
[data-theme]insrc/styles/vars/semantic.css;
the plan'stheme:key in plan mode) - may it overwrite a non-empty
slides/? default no - the committed000-title.htmlis expected and will be regenerated.
Read (detect state)
docs/framework-conventions.md,slides/README.md,docs/cheatsheet.md,docs/plan-format.md.- The input file.
slides/current contents.src/components/registry.js- which<deck-*>already exist.index.html-<!-- @slides -->present.
Mode
Plan mode iff the input file opens with a --- frontmatter block (thedocs/plan-format.md schema). Otherwise outline mode (headings + bullets).
Procedure
- Parse the input.
- Outline mode - be tolerant: first
#(or the given title) = deck title;##and lone numbered lines (5. Context) = horizontal sections;###/
nested list items = vertical children or stub bullets (nest only when it
clearly nests); free text under a heading =TODO:stub bullets. - Plan mode - read the frontmatter; each
## Section= a horizontal section,###under it = a vertical child. Per section, note itsintent:line, its-bullets, and anyartefact:line (seedocs/plan-format.md).
- Outline mode - be tolerant: first
- Allocate numbers:
000-title,010-overview, sections from020
(zero-padded, step 10 - seeslides/README.md), vertical childrenNN.1,NN.2, ...; in plan mode a finalNN-key-takeawaysafter the last section. - Slug = kebab-case of the section title.
- Per section: pick
.md/.htmlwith theslide-builderheuristic - or.htmlwhenever aartefact:line is present. Render a stub: heading,TODO:bullets from the talking points,id/data-slugset. In plan mode,
put theintent:text in as<!-- intent: ... -->at the top of the body. - Title slide
slides/000-title.html- title + optional subtitle. In plan
mode add<!-- audience / goal / tone / duration -->from the frontmatter as
an HTML comment for the author's reference. - Overview
slides/010-overview.html- one<a href="#/<slug>">per
top-level section, with a comment that it is deck-specific and not portable. - Takeaways (plan mode)
slides/NN-key-takeaways.md-## Key takeaways
then one-bullet pertakeawaysentry. - Write all files. Print the deck map: number -> slug -> format.
- Flag every section whose
artefact:(or, in outline mode, whose wording)
implies a<deck-*>not inregistry.js: leave<!-- TODO: run artefact-builder for deck-<slug> — <description> -->in that
slide. Do not create components.
Consistency
Use slide-builder's numbering / slug / portability rules verbatim. Never inline
a component definition, never write a section's real prose - stubs only. Say "CSS
custom property" / "CSS variable", never "token" - but stub content may keep
"token" where the input uses it (in these talks it means a chunk of text).