config/claude/skills/marp-presentation/SKILL.md
A skill for converting long-form markdown content into effective MARP slide decks. This skill helps Claude Code understand presentation design principles and MARP-specific syntax to produce slides that support speaking rather than replace it.
npx skillsauth add pysan3/dotfiles MARP Presentation SkillInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Convert long-form markdown content into effective MARP slide decks. This skill helps Claude Code understand presentation design principles and MARP-specific syntax to produce slides that support speaking rather than replace it.
If a slide needs "and" in the title, it's two slides. Each slide should pass the "glance test"—the audience should grasp the point in 3 seconds.
The slide reminds the speaker what to say. The speaker provides the depth, stories, and nuance. Never put on a slide what should come from the speaker's mouth.
All the detail, stories, statistics, and elaboration go in speaker notes. The slide is the headline; the notes are the article.
Complex ideas build across multiple slides. Don't dump everything at once. Let the audience follow the logic step by step.
White space is a feature. Dense slides create cognitive overload. When in doubt, delete.
---
marp: true
theme: default
paginate: true
header: "Header Text"
footer: "Footer Text"
---
---
Three dashes create a new slide.
<!--
Speaker notes go here.
They don't appear on the slide.
Use for stories, details, transitions.
-->
<!-- _class: lead --> # Centered, large text
<!-- _paginate: false --> # Hide page number
<!-- _header: '' --> # Remove header for this slide
<!-- _footer: '' --> # Remove footer for this slide
<!-- _backgroundColor: #123 -->
<!-- _color: white -->
# <!-- fit --> This Title Scales to Fit
Background (full slide):

Background with opacity:

Background left/right split:

# Content on right
Background tiled:


Inline image:

<div style="display: flex;">
<div style="flex: 1;">
Left column content
</div>
<div style="flex: 1;">
Right column content
</div>
</div>
---
marp: true
theme: default
paginate: true
footer: "Author | Date"
---
# Presentation Title
## Subtitle or Tagline
**Author Name** | Event | Date
<!--
Welcome, introduce yourself, set context.
-->
---
---
<!-- _class: lead -->
<!-- _paginate: false -->
# <!-- fit --> Section Title
<!--
Transition statement: "Now let's talk about..."
-->
---
---
# The Core Idea
One sentence that captures it.
<!--
Elaborate here. Tell the story. Give the example.
This is where the real content lives.
-->
---
---
# Three Things to Remember
- First point (brief)
- Second point (brief)
- Third point (brief)
<!--
Expand on each:
1. First point - full explanation
2. Second point - full explanation
3. Third point - full explanation
-->
---
---
<!-- _class: lead -->
> "The quote goes here, kept reasonably short."
— Attribution
<!--
Context for the quote. Why it matters.
How it connects to your point.
-->
---
---
# True Story
**The setup in one line.**
<!--
Tell the full story here:
- What happened
- Why it matters
- The lesson learned
-->
---
---
# The Problem
- Pain point one
- Pain point two
<!--
Describe the problem state fully.
-->
---
# The Solution
- Resolution one
- Resolution two
<!--
Describe how this solves it.
-->
---
---
# Resources
| Resource | Why |
|----------|-----|
| [Link](url) | One-line description |
| [Link](url) | One-line description |
<!--
Mention which ones you personally recommend and why.
-->
---
---
<!-- _class: lead -->
# Thank You
**Contact Info**
- Link 1
- Link 2
<!--
Closing thought, call to action, invitation to connect.
-->
---
---
marp: true
header: '<script src="https://cdn.jsdelivr.net/npm/mermaid@10/dist/mermaid.min.js"></script>'
---
<div class="mermaid">
sequenceDiagram
participant Alice
participant Bob
Alice->>John: Hello John, how are you?
loop HealthCheck
John->>John: Fight against hypochondria
end
Note right of John: Rational thoughts <br/>prevail!
John-->>Alice: Great!
John->>Bob: How about you?
Bob-->>John: Jolly good!
</div>
file-name.drawio.file-name.svg.When converting long-form markdown to MARP slides:
Run this check on completed slide decks:
Before:
# Career Ownership
You need to take ownership of your career because no one else will do it for you. Your employer provides opportunities but you must drive your own development. This means investing time in learning, building your portfolio, and creating options for yourself. Don't wait for permission to grow.
After:
# Own Your Career
- Your employer provides opportunities
- You drive development
- Build your portfolio
- Create your options
<!--
Full explanation: No one else will do this for you...
[rest of paragraph goes here as notes]
-->
Before:
# Key Lessons
- Be the CEO of your career
- Learn out loud by building and sharing
- Get out of your own way—fear and ego block growth
- Find your community
- Use sandboxes to learn safely
- Bridge technologies intentionally
After: Split into 6 slides, one per point, with section dividers grouping related concepts.
Problem: Slide has bullets but no context for the speaker. Fix: Add notes with the full explanation, a story, or an example for each bullet.
Before:
- Main point
- Sub point A
- Detail 1
- Detail 2
- Sub point B
After: Flatten to one level or split across slides.
# Preview with live reload
npx @marp-team/marp-cli -p slides/presentation.marp.md
# Export to PDF
npx @marp-team/marp-cli slides/presentation.marp.md -o exports/presentation.pdf
# Export to PowerPoint
npx @marp-team/marp-cli slides/presentation.marp.md -o exports/presentation.pptx
# Export to HTML
npx @marp-team/marp-cli slides/presentation.marp.md -o exports/presentation.html
# Watch mode (auto-rebuild on save)
npx @marp-team/marp-cli -w slides/presentation.marp.md
Basic custom styling in front matter:
---
theme: gaia
pagination: true
lang: ja
style: |
h1, h2, h3, h4, h5, h6, p {
word-break: auto-phrase;
}
h1, h2, h3, h4, h5, h6 {
text-wrap: balance;
}
p {
text-wrap: pretty;
}
section {
justify-content: start;
font-size: 22px;
}
.columns {
display: grid;
grid-template-columns: repeat(2, minmax(0, 1fr));
gap: 1rem;
}
---
For full custom themes, create a CSS file and reference it:
---
marp: true
theme: ./themes/custom.css
---
documentation
Execute git commit with conventional commit message analysis, intelligent staging, and message generation. Use when user asks to commit changes, create a git commit, or mentions "/commit". Supports: (1) Auto-detecting type and scope from changes, (2) Generating conventional commit messages from diff, (3) Interactive commit with optional type/scope/description overrides, (4) Intelligent file staging for logical grouping
development
Maintainer-only workflow for handling GitHub Secret Scanning alerts on OpenClaw. Use when Codex needs to triage, redact, clean up, and resolve secret leakage found in issue comments, issue bodies, PR comments, or other GitHub content.
development
Maintainer workflow for OpenClaw releases, prereleases, changelog release notes, and publish validation. Use when Codex needs to prepare or verify stable or beta release steps, align version naming, assemble release notes, check release auth requirements, or validate publish-time commands and artifacts.
development
Run, watch, debug, and extend OpenClaw QA testing with qa-lab and qa-channel. Use when Codex needs to execute the repo-backed QA suite, inspect live QA artifacts, debug failing scenarios, add new QA scenarios, or explain the OpenClaw QA workflow. Prefer the live OpenAI lane with regular openai/gpt-5.4 in fast mode; do not use gpt-5.4-pro or gpt-5.4-mini unless the user explicitly overrides that policy.