Convert markdown into a self-contained HTML slide deck with layouts, speaker notes, keyboard navigation, and a content-density linter.

MITAuto-check passedDocuments & Office

Install Md Slides

skills CLI
$ npx skills add majiayu000/claude-skill-registry --skill md-slides -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install majiayu000/claude-skill-registry md-slides --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/majiayu000/claude-skill-registry.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/bash/md-slides .claude/skills/md-slides && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
md-slides
GitHub stars
666
Used in
1 other repo
Token cost
~2.9k tokens
SKILL.md length
1,540 words
Files
2
Skills in repo
1,273
Repo updated
First seen
Licence
MIT

At a glance

Convert markdown into a self-contained HTML slide deck with layouts, speaker notes, keyboard navigation, and a content-density linter.

  • Works in 3 steps: Lint first. Building an overloaded deck… → Fix what the linter flags — usually by… → Build. The theme and navigation script…
  • Building a deck from markdown
  • SKILL.md covers When to use this skill, Inputs the skill expects, Clarify First and Workflows, plus 3 more sections
  • Calls python3

What it does

Md Slides is an agent skill from majiayu000/claude-skill-registry. Convert markdown into a self-contained HTML slide deck with layouts, speaker notes, keyboard navigation, and a content-density linter. Use when building a deck from markdown, cutting an overloaded deck, or timing a talk.

Its SKILL.md is about 2.9k tokens, which your agent loads only when the skill is triggered. The skill folder holds 1 other file (for example `metadata.json`).

It sits in Documents & Office, covering Slides and decks and PowerPoint presentations. It works with Bash. The repository describes itself as: Searchable Claude Code skills catalog with source-linked guides and generated registry artifacts. The licence is MIT.

When your agent uses it

  • Building a deck from markdown
  • Cutting an overloaded deck

Example prompts

  • “/md-slides”

Requirements

  • Python 3

Workflow steps

3 steps, taken from the first numbered list in SKILL.md.

  1. Lint first. Building an overloaded deck and reading it on screen is a slower
  2. Fix what the linter flags — usually by moving sentences into speaker notes.
  3. Build. The theme and navigation script are inlined automatically.

What it can do on your machine

Read from SKILL.md and the folder at commit 2d14a69. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Shell commands in SKILL.md call:

    • python3

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    No URLs in SKILL.md.

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Md Slides loads about 2.9k tokens when it runs. Until then it costs about 58 tokens; SKILL.md has 1,540 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~58
When it runs · the whole SKILL.md, loaded when a task matches
~2.9k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from majiayu000/claude-skill-registry at commit 2d14a69, republished under its MIT licence (© majiayu000). 1,540 words, ~2,946 tokens.

Download SKILL.mdSave it as .claude/skills/md-slides/SKILL.md (or your agent's skills folder). This skill also uses 1 other file; get the full folder from GitHub.
name
md-slides
description
Convert markdown into a self-contained HTML slide deck with layouts, speaker notes, keyboard navigation, and a content-density linter. Use when building a deck from markdown, cutting an overloaded deck, or timing a talk.
license
MIT + Commons Clause
metadata.version
1.0.0
metadata.author
borghei
metadata.category
markdown-html
metadata.domain
presentation-authoring
metadata.updated
2026-07-21
metadata.tags
slides, presentation, markdown, html, speaker-notes, accessibility

Markdown Slide Decks

Turn a markdown file into a slide deck that is one HTML file: six layouts, speaker notes, keyboard and remote navigation, light/dark theming, and handout printing. The density linter is the part that matters most — it catches the slides an audience cannot absorb before you are standing in front of them.

When to use this skill

  • Building a deck from markdown you want to keep in version control
  • Presenting from a laptop without a presentation app or a cloud account
  • Cutting an overloaded deck where every slide is a wall of text
  • Timing a talk against a fixed slot before rehearsing it
  • Converting a document into a deck as a starting point, then editing down
  • Producing a handout that includes speaker notes alongside each slide

Inputs the skill expects

  • A markdown deck source, slides separated by ---
  • The talk length and format — presented live, or circulated to be read
  • Layout intent per slide: title, section divider, bullets, two-column, quote, image
  • Speaker notes after a ??? marker on each content slide
  • Images as relative paths, or as data URIs for a genuinely single-file deck
  • The presentation environment: room lighting and display size

Clarify First

Before building, confirm these inputs. If any is unknown or vague, ASK — do not assume:

  • Presented live or circulated to read — why it changes the output: it selects the density profile, and the two budgets differ by roughly 2x; the wrong one produces a deck that fails at the job it actually has
  • Talk length and slot — why it changes the output: it sets the slide count and drives the runsheet; a 60-slide deck for a 15-minute slot is an unfinished edit, not a pacing choice
  • Whether images must be embedded — why it changes the output: relative paths mean the deck is a folder, not a file, and it breaks when emailed
  • Room lighting, if presenting — why it changes the output: dark themes wash out under ambient light; this decides the default theme and the contrast floor

Stop rule: ask only the 2-3 that most change the output. If the user says "just draft it," proceed and list your assumptions at the top of the artifact.

Workflows

Workflow 1 — Build a deck and check its density
  1. Lint first. Building an overloaded deck and reading it on screen is a slower way to learn the same thing.
  2. Fix what the linter flags — usually by moving sentences into speaker notes.
  3. Build. The theme and navigation script are inlined automatically.
bash
python3 markdown-html/md-slides/scripts/slide_density_linter.py \
  --input markdown-html/md-slides/assets/sample_deck.md --profile present

python3 markdown-html/md-slides/scripts/md_to_slides.py \
  --input markdown-html/md-slides/assets/sample_deck.md \
  --out build/deck.html --format text
Workflow 2 — Time a talk against its slot
  1. Generate the runsheet at your actual speaking rate, not the default.
  2. Read the * markers — those slides have no notes, so their duration is guessed from on-slide content and is the least reliable number in the sheet.
  3. If the total is over, cut slides. Speaking faster does not create time.
bash
python3 markdown-html/md-slides/scripts/notes_runsheet.py \
  --input markdown-html/md-slides/assets/sample_deck.md \
  --wpm 130 --target-minutes 15 --format text

python3 markdown-html/md-slides/scripts/notes_runsheet.py \
  --input markdown-html/md-slides/assets/sample_deck.md \
  --format markdown > build/runsheet.md
Workflow 3 — Convert a document into a deck
  1. Split on every ## heading to get a first pass with the document's own structure.
  2. Lint immediately. The result will fail — a document section carries far more than a slide's budget. That failure list is the edit plan.
  3. Rewrite headings as claims, demote sentences to notes, then rebuild.
bash
python3 markdown-html/md-slides/scripts/md_to_slides.py \
  --input markdown-html/md-slides/assets/sample_deck.md --split-on h2 --out build/draft.html

python3 markdown-html/md-slides/scripts/slide_density_linter.py \
  --input markdown-html/md-slides/assets/sample_deck.md --profile present --format json

Decision frameworks

Density budget
Metricpresent targetWarnErrorread warn / error
Words per slide<= 40507590 / 130
Bullets per slide<= 5688 / 12
Words per bullet<= 8122018 / 28
Heading characters<= 50609070 / 100
Table rows<= 5699 / 14
Code lines<= 10122018 / 30

Every threshold is a proxy for one rule: a slide must be readable in under 5 seconds, or it competes with the presenter. An audience cannot read and listen simultaneously — when a slide carries prose, the room reads it faster than you can say it and then disengages.

title, section, quote, and image layouts are exempt from the body rules.

Layout selection
LayoutUse forLimit
titleOpening slideOne per deck; heading plus one subtitle line
sectionDivider between movementsOne every 5-8 content slides
defaultHeading plus contentThe workhorse; full density budget applies
two-columnA comparison, or image beside explanation[RECOMMENDED] Not a way to fit twice the content
quoteOne sentence worth sitting withOne per deck; a second dilutes the first
imageFull-bleed visualAlt text mandatory — the linter errors without it
Deck length by slot
Talk lengthContent slidesNote
5 min5-7~45s per slide
15 min12-18The common conference slot
30 min20-30Plus 2-3 section dividers
60 min30-45Needs interaction, not more slides

The runsheet adds a 4-second transition allowance per slide — real, and routinely forgotten. Thirty slides carry two minutes of dead air before anyone speaks.

Where content goes when a slide is too dense
ContentBelongs
The claimSlide heading
The evidence, compressedSlide body, at label length
The sentencesSpeaker notes [PROVEN]
The full tableAppendix slide
The caveatSpeaker notes, then Q&A
Contrast at projection
ContextMinimum
Monitor / screen share4.5:1 (WCAG AA)
Well-lit room7:1
Bright room, weak projector10:1

[PROVEN] Present light in a bright room, dark in a dark one. The T key toggles theme so this is decided in the room, not an hour before.

Anti-Patterns

Show full SKILL.md (666 more words)Show less
The document in slide clothing

Mistake: Full paragraphs on every slide, because the deck must also work as a leave-behind for people who were not there. Why it happens: It is one artifact instead of two, and the request to "make sure it stands alone" is reasonable on its face. Instead: Pick one job. A presented deck uses the present budget with the sentences in speaker notes; a circulated deck uses --profile read. Trying to serve both produces something too dense to present and too fragmentary to read. If it will mostly be read, write a document and build a thin deck that points at it.

Bullets as sentences

Mistake: Writing each bullet as a complete sentence, so the slide reads correctly on its own. Why it happens: Fragments feel unfinished while drafting, and complete sentences feel more rigorous. Instead: A bullet is a label the presenter expands, not a sentence the audience reads. Past roughly 12 words it is prose and the room stops listening. Move the sentence into the speaker notes, where it is genuinely useful — that is what notes are for, and it is why the linter flags a dense slide with empty notes.

Topic headings

Mistake: Heading a slide with its subject — "Options", "Results", "Storage costs". Why it happens: It matches how the deck was outlined, and outlines are built from topics. Instead: Write the heading as the sentence you want remembered: "Cold data is paying hot prices", "Latency held; spend fell 31%". Someone who reads only the headings should still receive the argument. This single change improves a deck more than any layout decision.

Speaking faster to fit the slot

Mistake: Discovering the deck runs long and planning to talk quickly rather than cutting slides. Why it happens: Cutting means giving up content you already built and believe in. Instead: Cut. Speaking faster converts an over-long talk into an over-long talk nobody follows, and it eliminates the pauses that let a point land. The runsheet says "cut content, do not speak faster" for this reason.

Skipping the full-screen proof

Mistake: Authoring in a windowed browser and presenting full screen without checking. Why it happens: The deck looks finished on the laptop, and full screen feels like the same thing but bigger. Instead: Open it full screen on the actual display and walk every slide with the actual remote. Type scales with viewport width, so every size decision changes — tables and code blocks are set smaller than body text and are the first things to become unreadable from the back row. Presenter remotes send PageUp/PageDown, which is also worth confirming before you are on stage.

Files

FilePurpose
scripts/md_to_slides.pyCLI: build a self-contained HTML deck with inlined theme and navigation
scripts/slide_render.pySlide splitting, layouts, note extraction, escaping-first renderer — imported by md_to_slides.py, not a CLI
scripts/slide_density_linter.pyFlag slides over the word, bullet, table, and code budgets; CI gate
scripts/notes_runsheet.pyTimed runsheet from speaker notes; text, JSON, or markdown
references/slide-density-and-layout.mdThresholds and their rationale, layout patterns, deck length
references/deck-accessibility-and-delivery.mdFocus management, keyboard interface, projection contrast, pre-flight
assets/sample_deck.mdWorking deck using every layout; passes the density gate
assets/deck_theme.cssBundled deck theme — this skill's own copy
assets/deck_nav.jsInlined navigation: keyboard, hash routing, notes, theme toggle
assets/deck_outline_template.mdStarting structure for a new deck

All scripts share one exit-code contract: 0 clean, 2 gate failed (findings at or above the threshold), 1 the tool itself errored. A CI job can therefore tell a real defect from a broken invocation.

Three CLI tools, one module. slide_render.py is a library, not a fourth command — it holds the parser and renderer that md_to_slides.py imports. A single-file converter came to 324 lines, over the 300-line ceiling, and the only ways to fit were deleting docstrings or dropping features. Splitting CLI from parser is the remedy the tool-design standard prescribes for an oversized script, and same-directory imports keep the package self-contained: nothing here imports from another skill, and md-document carries its own separate copy of the equivalent renderer rather than sharing this one.

© majiayu000, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

SKILL.md and 1 other file in skills/bash/md-slides of majiayu000/claude-skill-registry.

  • SKILL.md
  • metadata.json

Open the folder on GitHubat commit 2d14a69

Used in 1 other repository

We found 1 copy of this SKILL.md (exact, near-identical or edited) in other folders, from 1 other GitHub owner. This page covers the copy in majiayu000/claude-skill-registry, which our catalogue first saw on October 8, 2026.

Compare with similar skills

Md Slides next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Md Slides compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Md Slides this skillmajiayu000/claude-skill-registry6661 repos~2.9kAutomated safety check: PassMIT
Officecli PPTXFerroxLabs/wayland6084 repos~11kAutomated safety check: PassAGPL-3.0
Image To Editable Pptningzimu/image-to-editable-ppt-skill2.8k—~4.3kAutomated safety check: PassMIT
Slidesfcakyon/claude-codex-settings1.2k1 repos~1.1kAutomated safety check: PassMIT
Ppt Image FirstNyxTides/ppt-image-first1.2k—~1.6kAutomated safety check: PassApache-2.0
Gpt Image2 PptJuneYaooo/gpt-image2-ppt-skills1.3k—~8.9kAutomated safety check: NotesApache-2.0

Similar skills

  • Officecli PPTX

    FerroxLabs/wayland

    Use this skill any time a .pptx file is involved -- as input, output, or both.

    608 GitHub starsUsed in 4 repos~11k tokens
    Documents & OfficeAuto-check passed
  • Image To Editable Ppt

    ningzimu/image-to-editable-ppt-skill

    Rebuild slide images, scanned or image-based PPT/PPTX files, and PDF decks into object-level editable PowerPoint (.pptx), preserving speaker notes when supplied.

    2.8k GitHub stars~4.3k tokensUpdated 22 days ago
    Documents & OfficeAuto-check passed
  • Slides

    fcakyon/claude-codex-settings

    Create and edit presentation slide decks (.pptx) with PptxGenJS, bundled layout helpers, and render/validation utilities.

    1.2k GitHub starsUsed in 1 repo~1.1k tokens
    Documents & OfficeAuto-check passed
  • Ppt Image First

    NyxTides/ppt-image-first

    Build presentation plans for PPT / slides / decks through a conversation-first workflow, then propose multiple visual directions with preview images before writing deck specs.

    1.2k GitHub stars~1.6k tokensUpdated 5 mo ago
    Documents & OfficeAuto-check passed
  • Gpt Image2 Ppt

    JuneYaooo/gpt-image2-ppt-skills

    Generate visually striking PPT slides via OpenAI's gpt-image-2 -- use any style in styles/<collection/STYLEID.md or mimic a user-supplied .pptx template; outputs high-res slide PNGs and a 16:9 .pptx.

    1.3k GitHub stars~8.9k tokensUpdated 1 mo ago
    Documents & OfficeAuto-check: notes
  • HTML Slide To PPTX

    mucsbr/ppt-agent-workflow-san

    Convert structured single-slide or small deck HTML files into editable PPTX slides with native text boxes, shapes, chips, arrows, and panels.

    643 GitHub stars~1.1k tokensUpdated 1 mo ago
    Documents & OfficeAuto-check passed

More from majiayu000/claude-skill-registry

All 1,273 skills in this repo
  • Deep Research

    majiayu000/claude-skill-registry

    Multi-source deep research using firecrawl and exa MCPs. An agent skill from majiayu000/claude-skill-registry.

    666 GitHub starsUsed in 6 repos~1.1k tokens
    Auto-check passed
  • Exa Search

    majiayu000/claude-skill-registry

    Neural search via Exa MCP for web, code, and company research.

    666 GitHub starsUsed in 5 repos~856 tokens
    Auto-check passed
  • Fal AI Media

    majiayu000/claude-skill-registry

    Unified media generation via fal.ai MCP — image, video, and audio.

    666 GitHub starsUsed in 5 repos~1.7k tokens
    Auto-check passed
  • Pyzotero

    majiayu000/claude-skill-registry

    Interact with Zotero reference management libraries using the pyzotero Python client.

    666 GitHub starsUsed in 5 repos~1.6k tokens
    Auto-check: notes
  • Bgpt Paper Search

    majiayu000/claude-skill-registry

    Search scientific papers and retrieve structured experimental data extracted from full-text studies via the BGPT MCP server.

    666 GitHub starsUsed in 4 repos~619 tokens
    Auto-check: notes
  • Bio Alignment Pairwise

    majiayu000/claude-skill-registry

    Perform pairwise sequence alignment using Biopython Bio.Align.PairwiseAligner.

    666 GitHub starsUsed in 4 repos~1.7k tokens
    Auto-check passed

Works with

Questions about Md Slides

What does Md Slides do?

Convert markdown into a self-contained HTML slide deck with layouts, speaker notes, keyboard navigation, and a content-density linter. Md Slides is an agent skill from majiayu000/claude-skill-registry. Convert markdown into a self-contained HTML slide deck with layouts, speaker notes, keyboard navigation, and a content-density linter.

When should I use Md Slides?

Md Slides fits situations like: building a deck from markdown; cutting an overloaded deck.

How do I install Md Slides in Claude Code?

Run `npx skills add majiayu000/claude-skill-registry --skill md-slides -a claude-code`. Or copy the skill folder (skills/bash/md-slides in majiayu000/claude-skill-registry) into .claude/skills/md-slides in your project. Claude Code loads it when a task matches its description.

How do I install Md Slides in Codex?

Run `npx skills add majiayu000/claude-skill-registry --skill md-slides -a codex`. Or copy the skill folder (skills/bash/md-slides in majiayu000/claude-skill-registry) into .agents/skills/md-slides in your project. Codex loads it when a task matches its description.

Can I use Md Slides in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add majiayu000/claude-skill-registry --skill md-slides -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/md-slides, .gemini/skills/md-slides, .github/skills/md-slides and .opencode/skills/md-slides in your project.

What does Md Slides need to run?

Going by SKILL.md and its folder, Md Slides needs the command-line tools its instructions call (python3). Our summary lists: Python 3.

Does Md Slides access the network?

SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.

Is Md Slides safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.

What licence does Md Slides use?

Md Slides is published under the MIT licence (declared in SKILL.md). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Md Slides use?

About 2.9k tokens (SKILL.md is roughly 12k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to Md Slides?

Skills that share tags, products or a category with Md Slides: Officecli PPTX (FerroxLabs/wayland, 608 stars), Image To Editable Ppt (ningzimu/image-to-editable-ppt-skill, 2.8k stars), Slides (fcakyon/claude-codex-settings, 1.2k stars) and Ppt Image First (NyxTides/ppt-image-first, 1.2k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Md Slides?

majiayu000 (a GitHub user) maintains it in majiayu000/claude-skill-registry, which has 666 GitHub stars. The repository holds 1,273 skills in this directory. The repository was last updated on October 7, 2026.

Source: majiayu000/claude-skill-registry on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.