$npx -y skills add tuan3w/obsidian-vault-agent --skill slide-makerCreate slide presentations from topics, URLs, PDFs, git repos, or vault notes. Use this skill when the user asks to make slides, create a presentation, build a deck, or says "slides about X". Handles research, synthesis, outline, and creation. Default output is reveal.js HTML; pp
| 1 | <Purpose> |
| 2 | End-to-end slide creation: from raw sources or a topic to a polished |
| 3 | presentation. Handles research, synthesis, outlining, and slide generation. |
| 4 | Produces self-contained reveal.js HTML by default (easy to edit, preview in any |
| 5 | browser). Can delegate to pptx skill when PowerPoint output is requested. |
| 6 | </Purpose> |
| 7 | |
| 8 | <Use_When> |
| 9 | - User asks to create slides or a presentation about a topic |
| 10 | - User provides sources (URLs, PDFs, repos, vault notes) and wants slides |
| 11 | - User wants to edit an existing HTML or pptx slide deck |
| 12 | - User uses /slides or /slide-maker |
| 13 | </Use_When> |
| 14 | |
| 15 | <Do_Not_Use_When> |
| 16 | - User wants a research note, not slides (use /research) |
| 17 | - User just wants to read/extract text from a pptx (use pptx skill directly) |
| 18 | </Do_Not_Use_When> |
| 19 | |
| 20 | <Workspace> |
| 21 | All intermediate files go in `temp/slides/` (gitignored). Structure: |
| 22 | ``` |
| 23 | temp/slides/ |
| 24 | ├── research/ # Source research files (one per source) |
| 25 | ├── images/ # Downloaded images (diagrams, charts, screenshots) |
| 26 | ├── outline.md # Approved outline |
| 27 | └── output.html # Draft before copying to notes/slides/ |
| 28 | ``` |
| 29 | |
| 30 | Create workspace + output directories at the start of every session: |
| 31 | ```bash |
| 32 | mkdir -p temp/slides/research temp/slides/images notes/slides |
| 33 | ``` |
| 34 | |
| 35 | **Final output** always goes to `notes/slides/<presentation-name>.html` (or |
| 36 | `.pptx`). Images used by the presentation are copied to |
| 37 | `notes/slides/images/`. The `temp/slides/` workspace is for intermediate files |
| 38 | only. |
| 39 | </Workspace> |
| 40 | |
| 41 | <Steps> |
| 42 | |
| 43 | ## Stage 1: PARSE — Classify Inputs |
| 44 | |
| 45 | Parse $ARGUMENTS and any user context. Classify each input: |
| 46 | |
| 47 | | Input type | Detection | Strategy | |
| 48 | |------------|-----------|----------| |
| 49 | | URL | starts with http(s):// | WebFetch + download images | |
| 50 | | Git repo | github.com or git URL | clone to temp, read key files | |
| 51 | | PDF | .pdf extension | Read tool (for local) or download | |
| 52 | | Vault note | `(Type) Name` or [[wikilink]] | Read via MCP or Read tool | |
| 53 | | Existing slides (.html) | .html extension | Editing mode | |
| 54 | | Existing slides (.pptx) | .pptx extension | Delegate to pptx skill | |
| 55 | | Raw topic | none of the above | WebSearch + WebFetch | |
| 56 | |
| 57 | **Auto-detect research depth:** |
| 58 | - **Quick mode**: 1-2 simple sources or a short topic → inline research, no subagents |
| 59 | - **Thorough mode**: 3+ sources, complex topic, or broad request → parallel research agents |
| 60 | |
| 61 | Present what was detected: |
| 62 | ``` |
| 63 | Detected sources: |
| 64 | 1. [URL] blog post — will fetch + extract |
| 65 | 2. [URL] paper PDF — will download and read |
| 66 | 3. "transformer architecture" — will web search |
| 67 | |
| 68 | Mode: thorough (3 sources → parallel research) |
| 69 | Proceeding to research... |
| 70 | ``` |
| 71 | |
| 72 | Don't wait for confirmation unless something is ambiguous. |
| 73 | |
| 74 | ## Stage 2: DISCOVER — Understand the Goal |
| 75 | |
| 76 | Before researching, understand what the user actually needs. Ask **up to 5 |
| 77 | focused questions** in a single message. Adapt questions to what's already known |
| 78 | — skip anything the user already specified. |
| 79 | |
| 80 | **Questions to consider** (pick the ones that aren't already answered): |
| 81 | |
| 82 | 1. **Goal & context** — What's this presentation for? (class lecture, team |
| 83 | meeting, conference talk, pitch, self-study, sharing with a friend?) |
| 84 | 2. **Audience** — Who's watching? (technical experts, general audience, exec |
| 85 | stakeholders, students?) What do they already know? |
| 86 | 3. **Language** — What language should the slides be in? (Don't assume English — |
| 87 | the user may want slides in their native language or a mix) |
| 88 | 4. **Angle & emphasis** — What's the ONE thing the audience should walk away |
| 89 | with? Any specific aspects to emphasize or skip? |
| 90 | 5. **Vibe & format** — Formal or casual? Dense/technical or visual/storytelling? |
| 91 | Any color or style preferences? Dark or light theme? |
| 92 | |
| 93 | **How to ask** — be conversational, not interrogation-style: |
| 94 | |
| 95 | ``` |
| 96 | Before I start researching, a few quick questions so I build the right deck: |
| 97 | |
| 98 | 1. What's this for — conference talk, team meeting, class? |
| 99 | 2. Who's the audience? What do they already know about [topic]? |
| 100 | 3. What language should the slides be in? |
| 101 | 4. Any specific angle — what should the audience walk away remembering? |
| 102 | 5. Style preference — formal/minimal, bold/visual, dark/light theme? |
| 103 | |
| 104 | (Skip any that don't apply — I'll use sensible defaults) |
| 105 | ``` |
| 106 | |
| 107 | **After the user responds**, synthesize their answers into a **creative brief** |
| 108 | that guides all downstream stages. Save it to `temp/slides/brief.md`: |
| 109 | |
| 110 | ```markdown |
| 111 | # Creative Brief |
| 112 | |
| 113 | **Topic**: [topic] |