--- name: explainer-kit description: Use when building or assembling an explainer page with `explain-visually` or any `explain-with-*` skill, to get the shared themes, components and assembly script so every explainer looks the same. --- # Explainer Kit The shared look and plumbing for all explainer pages. The `explain-with-*` skills say *what* to show; this kit decides *how it looks* and *how the parts fit together*, so every explainer is consistent and no agent has to invent CSS, colours or players. ## Use this skill when - Building a chapter with any `explain-with-*` skill (storytelling, code walkthrough, preview, section clips, slides, video). - Assembling several chapters into one page for `explain-visually`. - Changing the explainer themes or adding a shared component. ## Files All in `assets/` next to this file: | File | What it is | |---|---| | `FRAGMENT-CONTRACT.md` | The rules every fragment follows and the component cheat sheet. **Read it before writing a fragment; it is the whole API.** | | `SCRIPTS-AND-TABS.md` | Only for fragments with their own script (clips, slides, video, code walkthrough) and tabbed pages | | `assemble.py` | Builds the final page from an overview and fragments, and validates the contract | | `preview.py` | Generates a decision (options) or before/after chapter from JSON | | `check.py` | Opens the assembled page on a desktop and a phone and lists only what to fix | | `kit.css`, `kit.js`, `shell.html` | The styles, behaviour and page template the assembler inlines. Don't read them to write a page | ## Themes - Four themes: **Violet** (default; dark-first, near-black with one violet accent, Geist type), **Ocean**, **Amber** and **Aurora**, each with a light and/or dark variant. The viewer can switch; the choice is remembered. - Choose a first-load theme with `assemble.py --theme`. Don't add per-page palettes or fonts. - Colours, fonts and radii come only from `var(--ev-…)` tokens, never literal values, because the page must work in every theme and in light and dark. - Semantic colours have fixed meanings and always come with a glyph: new `+`, removed `−`, risk `!`, decision `◆`, ok `✓`. The accent marks "this is the point", not status. ## How a page is built 1. Each chapter is one **fragment**: a single `
` with its own scoped `