$npx -y skills add neuromechanist/research-skills --skill presentation-builderThis skill should be used when the user asks to "create a presentation", "make slides", "build a slide deck", "create a talk", "make a keynote", "create a Reveal.js presentation", "generate presentation slides", "make a conference talk", "create a lecture", "build a poster presen
| 1 | # Presentation Builder |
| 2 | |
| 3 | Create interactive Reveal.js presentations from JSON using the [Agentic Presentation Builder](https://github.com/neuromechanist/agentic-presentation-builder). The builder transforms structured JSON definitions into professional, interactive web-based presentations with Mermaid diagrams, LaTeX math, syntax-highlighted code, and animated progressive reveals. |
| 4 | |
| 5 | ## Pipeline Overview |
| 6 | |
| 7 | ``` |
| 8 | 1. Plan structure --> 2. Author JSON --> 3. Validate --> 4. Serve & present |
| 9 | (outline, theme) (schema-driven) (CLI validator) (Vite dev server) |
| 10 | ``` |
| 11 | |
| 12 | ## Prerequisites: get the builder CLI |
| 13 | |
| 14 | The engine ships an `apb` command (subcommands `validate`, `present`, `export`, `shoot`). Two ways to |
| 15 | run it; pick per situation. Pin the tag (`#v0.1.8`) for reproducibility. |
| 16 | |
| 17 | **Zero-setup (default, no clone).** Run straight from the repo with bunx (or npx): |
| 18 | |
| 19 | ```bash |
| 20 | bunx github:neuromechanist/agentic-presentation-builder#v0.1.8 validate deck.json --json |
| 21 | ``` |
| 22 | |
| 23 | **Iterative authoring / offline (recommended when validating repeatedly).** Use a managed |
| 24 | cache clone so each call does not re-resolve the git package. Resolve a builder home, cloning |
| 25 | once if needed, then run the `bun run` scripts from it: |
| 26 | |
| 27 | ```bash |
| 28 | APB_HOME="${APB_HOME:-$HOME/.cache/agentic-presentation-builder}" |
| 29 | if [ ! -d "$APB_HOME/.git" ]; then |
| 30 | git clone --branch v0.1.8 https://github.com/neuromechanist/agentic-presentation-builder.git "$APB_HOME" |
| 31 | (cd "$APB_HOME" && bun install) |
| 32 | fi |
| 33 | # then, e.g.: |
| 34 | (cd "$APB_HOME" && bun run validate -- "$(pwd)/deck.json" --json) |
| 35 | ``` |
| 36 | |
| 37 | In the steps below, "`apb <command>`" means either the bunx form or `bun run <command> --` |
| 38 | from `$APB_HOME`. Both share one code path, so flags are identical. |
| 39 | |
| 40 | ## Step 1: Plan the Presentation |
| 41 | |
| 42 | Before writing JSON, determine: |
| 43 | |
| 44 | - **Topic and audience**: Shapes content depth and vocabulary |
| 45 | - **Slide count**: 8-12 for a short talk, 15-25 for a full session |
| 46 | - **Theme**: `academic` for research talks, `default` for general, `dark` for tech demos |
| 47 | - **Key visuals**: Which slides need Mermaid diagrams, images, code blocks, or tables |
| 48 | - **Speaker notes**: Include delivery guidance for each slide |
| 49 | |
| 50 | ## Step 2: Author the Presentation JSON |
| 51 | |
| 52 | Write a `presentation.json` following the schema. See `references/schema-reference.md` for the complete field reference and `references/authoring-guide.md` for best practices. |
| 53 | |
| 54 | ### Minimal structure |
| 55 | |
| 56 | ```json |
| 57 | { |
| 58 | "presentation": { |
| 59 | "metadata": { |
| 60 | "title": "My Presentation", |
| 61 | "author": "Author Name", |
| 62 | "theme": "academic", |
| 63 | "aspectRatio": "16:9", |
| 64 | "controls": { |
| 65 | "slideNumbers": true, |
| 66 | "progress": true |
| 67 | } |
| 68 | }, |
| 69 | "slides": [ |
| 70 | { |
| 71 | "id": "title", |
| 72 | "layout": "title", |
| 73 | "elements": [ |
| 74 | { |
| 75 | "type": "text", |
| 76 | "content": "# Presentation Title", |
| 77 | "style": { "fontSize": "xxl", "alignment": "center" }, |
| 78 | "position": { "area": "center" } |
| 79 | }, |
| 80 | { |
| 81 | "type": "text", |
| 82 | "content": "Author Name -- Conference 2026", |
| 83 | "style": { "fontSize": "large", "alignment": "center", "color": "#64748B" }, |
| 84 | "position": { "area": "center", "order": 1 } |
| 85 | } |
| 86 | ] |
| 87 | } |
| 88 | ] |
| 89 | } |
| 90 | } |
| 91 | ``` |
| 92 | |
| 93 | ### Slide patterns |
| 94 | |
| 95 | **Content slide (single-column):** |
| 96 | ```json |
| 97 | { |
| 98 | "id": "key-findings", |
| 99 | "layout": "single-column", |
| 100 | "speakerNotes": "Emphasize the 3x improvement in latency.", |
| 101 | "elements": [ |
| 102 | { |
| 103 | "type": "text", |
| 104 | "content": "## Key Findings", |
| 105 | "style": { "fontSize": "xl" }, |
| 106 | "position": { "area": "header" } |
| 107 | }, |
| 108 | { |
| 109 | "type": "bullets", |
| 110 | "items": [ |
| 111 | "**3x reduction** in processing latency", |
| 112 | "95% accuracy on held-out test set", |
| 113 | "Compatible with existing EEG pipelines" |
| 114 | ], |
| 115 | "position": { "area": "content" } |
| 116 | } |
| 117 | ] |
| 118 | } |
| 119 | ``` |
| 120 | |
| 121 | **Comparison slide (two-column):** |
| 122 | ```json |
| 123 | { |
| 124 | "id": "comparison", |
| 125 | "layout": "two-column", |
| 126 | "elements": [ |
| 127 | { |
| 128 | "type": "text", |
| 129 | "content": "## Before vs After", |
| 130 | "style": { "fontSize": "xl" }, |
| 131 | "position": { "area": "header" } |
| 132 | }, |
| 133 | { |
| 134 | "type": "bullets", |
| 135 | "items": ["Manual annotation", "Hours per session", "Inconsistent labels"], |
| 136 | "position": { "area": "left" } |
| 137 | }, |
| 138 | { |
| 139 | "type": "bullets", |
| 140 | "items": ["Automated pipeline", "Minutes per session", "Standardized HED tags"], |
| 141 | "position": { "area": "right" } |
| 142 | } |
| 143 | ] |
| 144 | } |
| 145 | ``` |
| 146 | |
| 147 | **Diagram slide (Mermaid):** |
| 148 | ```json |
| 149 | { |
| 150 | "id": "architec |