Back to Discover

presentation-kit

skill

dro42

Skill for AI assisted presentation creation

View on GitHub
2 starsMITSynced Aug 2, 2026

Install to Claude Code

/plugin marketplace add dro42/presentation-kit

README

presentation-kit

A Claude Code plugin for authoring and building presentation decks across five formats: Marp (Markdown), LaTeX Beamer, Slidev (Vue/Markdown), PowerPoint (via python-pptx), and asciinema terminal demos.

Slash-command driven, theme-extensible, with a builder subagent that keeps long renders out of your main conversation. The same skills run unchanged under Claude Code, Codex CLI, and Gemini CLI — install the whole plugin in Claude Code, or just the per-skill .skill bundles elsewhere.

Useful for school, university, conferences, sprint reviews, tech talks, kickoffs, and thesis defenses.

Install

Claude Code (full plugin)

/plugin marketplace add dro42/presentation-kit
/plugin install presentation-kit

To develop or test locally:

/plugin marketplace add /path/to/presentation-kit
/plugin install presentation-kit

Codex CLI (per-skill bundles)

Codex reads skills from ~/.codex/skills/ (also .agents/skills/ in a project root). Install one skill, or all five:

mkdir -p ~/.codex/skills
for s in marp beamer asciinema slidev pptx; do
  curl -L -o /tmp/$s.skill \
    https://github.com/dro42/presentation-kit/releases/latest/download/$s.skill
  unzip -q /tmp/$s.skill -d ~/.codex/skills/
done

Gemini CLI (per-skill bundles)

Gemini reads skills from ~/.gemini/skills/ (also .agents/skills/ in a project root):

mkdir -p ~/.gemini/skills
for s in marp beamer asciinema slidev pptx; do
  curl -L -o /tmp/$s.skill \
    https://github.com/dro42/presentation-kit/releases/latest/download/$s.skill
  unzip -q /tmp/$s.skill -d ~/.gemini/skills/
done

Cross-tool project-local (.agents/skills/)

Both Codex and Gemini also discover skills from a project-local .agents/skills/ directory. Drop the unzipped skills there once and they work for both runtimes:

mkdir -p .agents/skills
for s in marp beamer asciinema slidev pptx; do
  curl -L -o /tmp/$s.skill \
    https://github.com/dro42/presentation-kit/releases/latest/download/$s.skill
  unzip -q /tmp/$s.skill -d .agents/skills/
done

Codex and Gemini ignore commands/, agents/, hooks/, and .claude-plugin/. The portable surface is the per-skill .skill zip (SKILL.md + references/ + assets/ + scripts/).

What you get

Slash commandSkillOutput
/marpmarp — Markdown decks via marp-cliPDF, PPTX, HTML, PNG
/beamerbeamer — LaTeX Beamer decks via latexmkPDF
/slidevslidev — Vue/Markdown decks with interactive codeHTML SPA, PDF, PPTX
/pptxpptx — YAML → .pptx via python-pptxPowerPoint .pptx
/asciinemaasciinema — Terminal demos (record, narrate, embed).cast, GIF, SVG

Plus:

  • presentation-builder subagent — watch-mode and long renders run in an isolated context so the main conversation stays clean.
  • SessionStart hook — when you open a directory containing slides.md, a Beamer .tex file, .pptx, deck.yaml, or .cast, the matching slash command surfaces. Marp vs Slidev slides.md disambiguated by frontmatter signal.
  • Eight bundled templates per formatbasic, academic, thesis-defense, research-update, sprint-review, tech-talk, lightning-talk, kickoff. Same content shape across all four slide-producing skills, so the same outline serves any venue.
  • Asciinema integration — record terminal demos with the bundled wrapper, write timestamped narration scripts, embed as a live player (Marp HTML, Slidev, reveal.js) or convert to GIF via agg for Beamer and pptx.
  • AI-agnostic skill bodies — SKILL.md files use relative paths only, so the same skill works under Claude Code, Codex CLI, and Gemini CLI. Claude-specific ${CLAUDE_PLUGIN_ROOT} paths live only in the commands/*.md slash-command files.

External prerequisites

These tools must be installed for the corresponding skill to build artifacts:

SkillToolInstall
/marpmarp-clinpm install -g @marp-team/marp-cli
/beamerlatexmk + pdflatexmacOS: BasicTeX / MacTeX. Linux: TeX Live.
/slidevNode.js ≥ 18brew install node or nvm/fnm. PDF export: npx playwright install chromium.
/pptxpython-pptxpip install python-pptx pyyaml Pillow
/asciinemaasciinemabrew install asciinema (macOS) or pip install asciinema. For GIF: brew install agg.

The plugin detects missing tools and surfaces the install command before attempting a build; nothing is installed silently.

User themes (XDG-compliant)

Plugin-bundled themes live inside the plugin and get overwritten when the plugin updates. Your themes live separately:

${XDG_DATA_HOME:-$HOME/.local/share}/presentation-kit/themes/
├── marp/        # *.css files, used via marp --theme-set
├── beamer/      # beamertheme*.sty files, copied next to your .tex
├── slidev/      # slidev-theme-<name>/ directories (local-dir themes)
├── pptx/        # *.pptx master templates
└── asciinema/   # *.json terminal color presets

Saving a theme you've iterated on:

# File-based formats
bash "${CLAUDE_PLUGIN_ROOT}/scripts/save-theme.sh" marp <name> ./theme.css
bash "${CLAUDE_PLUGIN_ROOT}/scripts/save-theme.sh" beamer <name> ./beamerthemeFoo.sty
bash "${CLAUDE_PLUGIN_ROOT}/scripts/save-theme.sh" pptx <name> ./brand-master.pptx
bash "${CLAUDE_PLUGIN_ROOT}/scripts/save-theme.sh" asciinema <name> ./theme.json

# Directory-based: Slidev local themes
bash "${CLAUDE_PLUGIN_ROOT}/scripts/save-theme.sh" slidev <name> ./slidev-theme-<name>/

# Overwrite an existing user theme
bash "${CLAUDE_PLUGIN_ROOT}/scripts/save-theme.sh" --force marp dynatrace-dark ./theme.css

(Outside Claude Code, run the bundled scripts/save-theme.sh inside each .skill package — bash scripts/save-theme.sh ... from the skill directory.)

User themes shadow bundled themes when their basenames match. The skills tag each theme as (user) or (bundled) when listing them so the active source is unambiguous.

How the subagent works

The scenarios that delegate to presentation-builder:

  • Watch modemarp --watch, latexmk -pvc, slidev dev server.
  • Multi-format batch — one source → PDF + PPTX + HTML in one shot.
  • Long single build — large decks, biblatex, Playwright PDF export.
  • Anything expected to take > ~30 s.

The subagent returns a single Markdown report listing each artifact's path, size, build duration, and any compiler warnings. It has a narrow Bash allowlist (no rm); cleanup is the caller's responsibility.

How the hook works

The SessionStart hook runs hooks/detect-presentation.sh against your current working directory. It surfaces a context line for each detected format:

  • slides.md with marp: true/marp
  • slides.md with layout/transition/mdc/colorSchema or theme: @slidev/*|seriph|apple-basic/slidev
  • slides.md with theme: default alone → ambiguous (surface both)
  • *.tex with \documentclass{beamer}/beamer
  • package.json with @slidev/cli/slidev
  • *.pptx or deck.yaml with slides:/meta:/layout:/pptx
  • *.cast/asciinema

Silent in directories without presentation files. Always exits 0. The detected-file message is JSON-encoded via jq -Rs (with a sed fallback when jq isn't installed) to ensure the injection can't break the hook contract.

Repository layout

presentation-kit/
├── .claude-plugin/
│   ├── plugin.json
│   └── marketplace.json
├── commands/
│   ├── marp.md   beamer.md   slidev.md   pptx.md   asciinema.md
├── skills/
│   ├── marp/       SKILL.md + references/ + assets/{templates,themes}/
│   ├── beamer/     SKILL.md + references/ + assets/{templates,themes,preamble}/
│   ├── slidev/     SKILL.md + references/ + assets/{templates,themes/slidev-theme-minimal}/
│   ├── pptx/       SKILL.md + references/ + scripts/{generate.py,layouts.py} + assets/templates/
│   └── asciinema/  SKILL.md + references/ + scripts/record-demo.sh + assets/{themes,embed-snippets,narration-template.md}
├── agents/
│   └── presentation-builder.md
├── hooks/
│   ├── hooks.json
│   └── detect-presentation.sh
└── scripts/
    ├── save-theme.sh           single source of truth
    └── build-skill-bundles.sh  produces dist/*.skill for Codex / Gemini

Build output (gitignored): dist/{marp,beamer,asciinema,slidev,pptx}.skill

  • dist/manifest.json. Built on demand via bash scripts/build-skill-bundles.sh; attached to GitHub Releases.

Roadmap (v0.3+)

  • reveal.js skill — HTML/JS framework with the chalkboard/notes/pdf plugin ecosystem
  • quarto skill — Pandoc-based reproducible slides with R/Python/Julia code execution
  • Slidev theme as a proper npm package (slidev-theme-presentation-kit-minimal)
  • Asciinema → MP4 via agg | ffmpeg for venues that require video uploads
  • Optional listing in claude-plugins-official/external_plugins/ via upstream PR

Contributing

Issues and PRs welcome at https://github.com/dro42/presentation-kit. The bundled themes use <NAME> / <TITLE> / <INSTITUTE> placeholders throughout — PRs against documentation, additional templates, or new output formats are the easiest way to start.

License

MIT. See LICENSE.

Rendered live from dro42/presentation-kit's GitHub README — not stored, always reflects the source repo.

1 Plugin

NameDescriptionCategorySource
presentation-kitSlash-command driven toolkit for authoring and building decks across Marp, LaTeX Beamer, Slidev, PowerPoint (via python-pptx), and asciinema terminal demos. Includes a builder subagent for long renders, a SessionStart hook that detects presentation files, and a user-extensible theme system. AI-agnostic skills also installable into Codex CLI and Gemini CLI.productivity./

0 Comments

Login required
Log in to post a comment or update on this repo.

No comments yet — be the first to share an update.