agentsclimarketplace

Claude code skill keynote deck

Skill markshust/claude-code-skill-keynote-deck

Generate native Keynote (.key) presentations from markdown, using the user's branded Keynote template. Use when asked to create Keynote slides, a slide deck, or a presentation from markdown or an outline. Renders via md2key + AppleScript for zero-loss native Keynote output — no PowerPoint conversion step.From its SKILL.md

Install
npx -y skills add markshust/claude-code-skill-keynote-deck

Assembled from the repository path, not quoted from the project. Check it against their README if it does not work.

One thing to look at

  • 1 stars1 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.

SKILL.md

5.5 KB, ~1.3k tokens by cl100k_base, as published. Nobody here has run it

Keynote Deck Generator

Turns markdown into a native .key file by pouring content into a branded Keynote template. The model's job is CONTENT ONLY — structure, wording, speaker notes. All visual design lives in the Keynote template's master slides, so never attempt layout, colors, or fonts here.

Pipeline

deck.md ──▶ scripts/generate.sh ──▶ Keynote (AppleScript/md2key) ──▶ deck.key + preview PNGs

Run: ~/.claude/skills/keynote-deck/scripts/generate.sh <markdown-file> [output.key]

The script pins the Homebrew Ruby and md2key paths, launches Keynote by bundle id (com.apple.Keynote), opens a copy of the user's template, converts, saves, and exports preview PNGs next to the output.

Workflow

  1. Locate or author the markdown. If given a file, use it. If given a topic/outline, author the deck markdown first (see Authoring rules) and show it to the user before generating.
  2. Generate: run generate.sh deck.md output.key.
  3. Verify — never skip. Read 2–3 of the exported preview PNGs (cover, a code slide, the densest bullet slide). Check for: text overflowing its box, code wider than its panel, tables too tall, orphaned single-word bullet wraps. If found, tighten the markdown (shorter bullets, split slide, trim code) and regenerate. One regeneration pass is normal.
  4. Report the .key path. The document is left open in Keynote for hand-tweaks.

Authoring rules

Structure:

  • # Title — first heading becomes the cover slide; the line(s) after it become the cover body (subtitle).
  • One heading per slide. One idea per slide.
  • ^ note text — presenter note. Every content slide gets one: 2–4 conversational sentences the presenter can speak. For course/video decks this doubles as the narration script.
  • --- separators are optional; headings define slides.

Heading level → master slide (the template names its masters cover, h1h5):

MarkdownMasterSuggested role
# (first)covercover slide
# (mid-deck)h1section divider
##h2content — light
###h3code — dark
####h4content — dark
#####h5code — light

The light/dark pairing is the recommended convention (decks can run all-light, all-dark, or alternating) — but the template owner decides what each master looks like; follow whatever their template does.

Density limits (Keynote boxes don't auto-shrink — overflow is the #1 failure):

  • ≤ 5 bullets per slide, ≤ 8 words per bullet, ≤ 1 nesting level.
  • Code blocks: ≤ 12 lines, ≤ 60 columns. Longer code → split across slides ("part 1 / part 2") or trim to the teaching-relevant lines with # ....
  • Tables: ≤ 4 columns, ≤ 5 rows.
  • No inline bold/italic/links — md2key pastes plain text; styling comes from masters. Write so emphasis isn't needed.

Supported content per slide (title + ONE of these works best):

  • Bullet list (with one nesting level)
  • Fenced code block — syntax-highlighted via highlight (dark panel)
  • Markdown table
  • Image: ![](absolute/or/relative/path.png)
  • ```mermaid block — rendered to a diagram (requires mmdc; if missing, pre-render to PNG and use an image instead)

Deck conventions:

  • Open with a cover (# Deck Title + subtitle line).
  • Second slide: agenda or "What you'll learn" — 3–5 bullets.
  • Close with a recap/summary slide.
  • Prefer many light slides over few dense ones — slides are glanceable signposts, not documents.

Template

Template resolution order (generate.sh handles this):

  1. $KEYNOTE_DECK_TEMPLATE env var
  2. ./keynote-template.key in the current project
  3. ~/.claude/skills/keynote-deck/templates/default.key
  4. Fallback: stock "White" theme (warn the user output is unbranded)

The template is a normal .key file whose master slides are named cover, h1h5 (lowercase, exact). If the user has no template yet, offer to help them build one — the full method (designing background art with Claude, rendering it, assembling masters) is in TEMPLATE-GUIDE.md in this skill's directory. Design changes belong in the template's masters, never compensate for design issues in markdown.

Requirements & troubleshooting

  • Deps: Homebrew Ruby, md2key gem, highlight (brew). generate.sh checks and prints install commands if missing.
  • Keynote must be allowed Automation permission for the shell (macOS prompts on first run — user must click Allow).
  • md2key drives the front document; tell the user not to click around Keynote mid-generation.
  • Code slides: generate.sh auto-patches md2key (idempotently) to use this skill's 1740×800 code panel at position {90, 170}, and snaps pasted code text to {154, 226}. Only text items below y200 are moved — Keynote counts the title placeholder among "text items" and it must never be repositioned.
  • Masters used for code slides should have no body placeholder — an unfilled placeholder exports its prompt text onto the slide.
  • If AppleScript errors after a macOS/Keynote update, offer the official pptx skill route (.pptx opens in Keynote with minor fidelity loss) as a fallback.

What ships with it: 10 files

46.4 KB alongside SKILL.md, 1 of them executable

examples/

scripts/

Gives 0 of the 12 instructions most slides presentations skills give in ~1.3k tokens

Counted across 568 of the 571 authors here whose files we hold, read 2026-08-07

  • Include a visual element on every slidein 52 of 568, across 21 files
  • Put one idea per slidein 50 of 568, across 43 files
  • State the design approach before writing codein 38 of 568, across 8 files
  • Validate XML immediately after each editin 37 of 568, across 7 files
  • Rasterize gradients and icons as PNG images before referencing themin 37 of 568, across 7 files
  • Generate and inspect thumbnails to validate layoutin 37 of 568, across 7 files
  • Commit to a single visual motif across every slidein 37 of 568, across 12 files
  • Use web-safe fonts onlyin 35 of 568, across 6 files
  • Keep 0.5 inch minimum marginsin 35 of 568, across 9 files
  • Use two-column layout for slides with charts or tablesin 34 of 568, across 5 files
  • Save a template inventory analysis to a filein 33 of 568, across 4 files
  • Use subagents to visually inspect rendered slidesin 33 of 568, across 9 files

Said here and by no other author read

  • author deck markdown before generating
  • show markdown to user before generating
  • run generate.sh with markdown and output path
  • read exported preview pngs to verify
  • add presenter notes to every content slide
  • limit code blocks to twelve lines and sixty columns

Grouped from the skills themselves: near-identical wordings counted once, and counted by distinct author, so one author publishing three of these counts once. Length counted with cl100k_base; the agent that loads this file may tokenize it differently.

Keep looking

Skills are one crate of 326,764. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.