` and style attributes without it, and most of the design system depends on inline divs for layout.
## Step 5: The slide-from-notes prompt pattern
The prompt I use, parameterized:
```
Read
and .
Build a status deck for the meeting following the /slides
design system.
Structure:
- Title slide (project name, date, my name + role, client name)
- One slide per active workstream: title is the workstream name;
body is three labeled sections, Opportunity, First Steps, Deliverable
- "How we work together" slide if cadence has changed
- Closing "what's first" slide with the decision I want from the meeting
Save as /YYYY-MM-DD-status.md. Use the frontmatter style block
from the skill. Don't invent facts. Every workstream's content should
trace back to a note I've already written.
```
The "don't invent facts" line matters. Without it, Claude will sometimes fill gaps with plausible-sounding content. With it, ambiguous workstreams come back marked `[needs your input]` instead of fabricated, which is the behavior I want.
## Step 6: Diagrams and screenshots
**Inline SVG (Claude-drawn).** Ask in the prompt: *"For the architecture slide, draw an inline SVG flowchart matching the skill's style: rounded rects, `#f8fafc` fill, `#cbd5e1` stroke, system-ui font, 13pt."* The SVG lands inline in the markdown. No external files.
**Excalidraw (your hand-drawn diagrams).** Draw the diagram in Obsidian's Excalidraw plugin. Export as SVG (`File → Export Image → SVG`) to the deck's `attachments/` folder. Reference from the slide:
```html
```
The Excalidraw source `.md` file stays in the vault so you can revise it later. Keep both the source and the SVG export.
**Web screenshots.** Wrap in the browser-chrome frame defined in the style block:
```html
```
Then put the takeaways on the next slide, not beside the image.
## Gotchas the agent should know about
These are the failure modes that survive every attempt to make the workflow smooth.
- **`--html` is mandatory.** Marp strips inline divs and style attributes without it. Easy to miss in PDF output where everything looks fine but the layout is gone.
- **Marp's default theme fights vertical centering.** Use `justify-content: flex-start` and `padding-top` on `section` to anchor content to the top, otherwise content floats.
- **No Mermaid.** Marp's SVG rendering has font-size detection bugs with Mermaid. Use inline SVG for diagrams instead.
- **No fragments.** Marp has no progressive reveal. If a slide needs to build up element by element, switch to Slides Extended for that deck.
- **Screenshots inside side-by-side layouts become unreadable.** Always give a screenshot its own slide. Takeaways on the next slide.
- **`` at the top of a slide aren't Marp directives.** They're just markdown comments. Marp directives use `` syntax.
## When to switch tools
Marp is the right answer for the recurring workload. It's the wrong answer for:
- One-off pitch decks with progressive reveal and animation
- Decks that need real presenter view, remote control, or polling
- Decks where the visual design is the product (a brand pitch, a launch reveal)
For any of those, use [Slides Extended](https://github.com/ebullient/obsidian-slides-extended) (reveal.js, still inside Obsidian) or break out of the vault entirely and use a designer's tool. The point isn't to make Marp do everything. It's to use the right tool for each workload while keeping as much as possible inside the vault.
## Related
- [Personal Finance in Obsidian with hledger and Claude Code](/obsidian/hledger-obsidian-personal-finance-with-claude-code/)
- [Your Obsidian Vault Is Already an Agent Memory System](/obsidian/your-obsidian-vault-is-already-an-agent-memory-system/)
- [Custom OG Images with Remotion](/obsidian/custom-og-images-remotion-obsidian-astro/)
- [Scrollytelling with Excalidraw](/obsidian/scrollytelling-with-excalidraw/)
- [Using Obsidian as a CMS with Astro.js](/obsidian/obsidian-with-astro-for-personal-site/)