Officecli PPTX
FerroxLabs/wayland
Use this skill any time a .pptx file is involved -- as input, output, or both.
Convert markdown into a self-contained HTML slide deck with layouts, speaker notes, keyboard navigation, and a content-density linter.
$ npx skills add majiayu000/claude-skill-registry --skill md-slides -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install majiayu000/claude-skill-registry md-slides --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ 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-srcUse ~/.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/
Install the "md-slides" agent skill from https://github.com/majiayu000/claude-skill-registry/tree/main/skills/bash/md-slides into .claude/skills/md-slides/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "md-slides", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/majiayu000/claude-skill-registry/tree/main/skills/bash/md-slidesType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add majiayu000/claude-skill-registry --skill md-slides -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install majiayu000/claude-skill-registry md-slides --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/majiayu000/claude-skill-registry.git skills-src && mkdir -p .agents/skills && cp -r skills-src/skills/bash/md-slides .agents/skills/md-slides && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "md-slides" agent skill from https://github.com/majiayu000/claude-skill-registry/tree/main/skills/bash/md-slides into .agents/skills/md-slides/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "md-slides", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add majiayu000/claude-skill-registry --skill md-slides -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install majiayu000/claude-skill-registry md-slides --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/majiayu000/claude-skill-registry.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/skills/bash/md-slides .cursor/skills/md-slides && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "md-slides" agent skill from https://github.com/majiayu000/claude-skill-registry/tree/main/skills/bash/md-slides into .cursor/skills/md-slides/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "md-slides", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/majiayu000/claude-skill-registry.git --path skills/bash/md-slides--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add majiayu000/claude-skill-registry --skill md-slides -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install majiayu000/claude-skill-registry md-slides --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/majiayu000/claude-skill-registry.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/skills/bash/md-slides .gemini/skills/md-slides && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "md-slides" agent skill from https://github.com/majiayu000/claude-skill-registry/tree/main/skills/bash/md-slides into .gemini/skills/md-slides/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "md-slides", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install majiayu000/claude-skill-registry md-slidesInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add majiayu000/claude-skill-registry --skill md-slides -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/majiayu000/claude-skill-registry.git skills-src && mkdir -p .github/skills && cp -r skills-src/skills/bash/md-slides .github/skills/md-slides && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "md-slides" agent skill from https://github.com/majiayu000/claude-skill-registry/tree/main/skills/bash/md-slides into .github/skills/md-slides/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "md-slides", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add majiayu000/claude-skill-registry --skill md-slides -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install majiayu000/claude-skill-registry md-slides --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/majiayu000/claude-skill-registry.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/skills/bash/md-slides .opencode/skills/md-slides && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "md-slides" agent skill from https://github.com/majiayu000/claude-skill-registry/tree/main/skills/bash/md-slides into .opencode/skills/md-slides/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "md-slides", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
md-slidesConvert 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. 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.
3 steps, taken from the first numbered list in SKILL.md.
Read from SKILL.md and the folder at commit 2d14a69. It shows what the files ask for, not the result of running them.
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.
Shell commands in SKILL.md call:
python3From the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md.
From URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
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.
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.
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.
The full file from majiayu000/claude-skill-registry at commit 2d14a69, republished under its MIT licence (© majiayu000). 1,540 words, ~2,946 tokens.
.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.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.
---??? marker on each content slideBefore building, confirm these inputs. If any is unknown or vague, ASK — do not assume:
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.
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* markers — those slides have no notes, so their duration is
guessed from on-slide content and is the least reliable number in the sheet.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## heading to get a first pass with the document's own
structure.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| Metric | present target | Warn | Error | read warn / error |
|---|---|---|---|---|
| Words per slide | <= 40 | 50 | 75 | 90 / 130 |
| Bullets per slide | <= 5 | 6 | 8 | 8 / 12 |
| Words per bullet | <= 8 | 12 | 20 | 18 / 28 |
| Heading characters | <= 50 | 60 | 90 | 70 / 100 |
| Table rows | <= 5 | 6 | 9 | 9 / 14 |
| Code lines | <= 10 | 12 | 20 | 18 / 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 | Use for | Limit |
|---|---|---|
title | Opening slide | One per deck; heading plus one subtitle line |
section | Divider between movements | One every 5-8 content slides |
default | Heading plus content | The workhorse; full density budget applies |
two-column | A comparison, or image beside explanation | [RECOMMENDED] Not a way to fit twice the content |
quote | One sentence worth sitting with | One per deck; a second dilutes the first |
image | Full-bleed visual | Alt text mandatory — the linter errors without it |
| Talk length | Content slides | Note |
|---|---|---|
| 5 min | 5-7 | ~45s per slide |
| 15 min | 12-18 | The common conference slot |
| 30 min | 20-30 | Plus 2-3 section dividers |
| 60 min | 30-45 | Needs 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.
| Content | Belongs |
|---|---|
| The claim | Slide heading |
| The evidence, compressed | Slide body, at label length |
| The sentences | Speaker notes [PROVEN] |
| The full table | Appendix slide |
| The caveat | Speaker notes, then Q&A |
| Context | Minimum |
|---|---|
| Monitor / screen share | 4.5:1 (WCAG AA) |
| Well-lit room | 7:1 |
| Bright room, weak projector | 10: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.
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.
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.
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.
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.
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.
| File | Purpose |
|---|---|
scripts/md_to_slides.py | CLI: build a self-contained HTML deck with inlined theme and navigation |
scripts/slide_render.py | Slide splitting, layouts, note extraction, escaping-first renderer — imported by md_to_slides.py, not a CLI |
scripts/slide_density_linter.py | Flag slides over the word, bullet, table, and code budgets; CI gate |
scripts/notes_runsheet.py | Timed runsheet from speaker notes; text, JSON, or markdown |
references/slide-density-and-layout.md | Thresholds and their rationale, layout patterns, deck length |
references/deck-accessibility-and-delivery.md | Focus management, keyboard interface, projection contrast, pre-flight |
assets/sample_deck.md | Working deck using every layout; passes the density gate |
assets/deck_theme.css | Bundled deck theme — this skill's own copy |
assets/deck_nav.js | Inlined navigation: keyboard, hash routing, notes, theme toggle |
assets/deck_outline_template.md | Starting 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
SKILL.md and 1 other file in skills/bash/md-slides of majiayu000/claude-skill-registry.
Open the folder on GitHubat commit 2d14a69
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.
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.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Md Slides this skillmajiayu000/claude-skill-registry | 666 | 1 repos | ~2.9k | Automated safety check: Pass | MIT | |
| Officecli PPTXFerroxLabs/wayland | 608 | 4 repos | ~11k | Automated safety check: Pass | AGPL-3.0 | |
| Image To Editable Pptningzimu/image-to-editable-ppt-skill | 2.8k | — | ~4.3k | Automated safety check: Pass | MIT | |
| Slidesfcakyon/claude-codex-settings | 1.2k | 1 repos | ~1.1k | Automated safety check: Pass | MIT | |
| Ppt Image FirstNyxTides/ppt-image-first | 1.2k | — | ~1.6k | Automated safety check: Pass | Apache-2.0 | |
| Gpt Image2 PptJuneYaooo/gpt-image2-ppt-skills | 1.3k | — | ~8.9k | Automated safety check: Notes | Apache-2.0 |
FerroxLabs/wayland
Use this skill any time a .pptx file is involved -- as input, output, or both.
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.
fcakyon/claude-codex-settings
Create and edit presentation slide decks (.pptx) with PptxGenJS, bundled layout helpers, and render/validation utilities.
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.
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.
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.
majiayu000/claude-skill-registry
Multi-source deep research using firecrawl and exa MCPs. An agent skill from majiayu000/claude-skill-registry.
majiayu000/claude-skill-registry
Neural search via Exa MCP for web, code, and company research.
majiayu000/claude-skill-registry
Unified media generation via fal.ai MCP — image, video, and audio.
majiayu000/claude-skill-registry
Interact with Zotero reference management libraries using the pyzotero Python client.
majiayu000/claude-skill-registry
Search scientific papers and retrieve structured experimental data extracted from full-text studies via the BGPT MCP server.
majiayu000/claude-skill-registry
Perform pairwise sequence alignment using Biopython Bio.Align.PairwiseAligner.
Works with
Categories
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.
Md Slides fits situations like: building a deck from markdown; cutting an overloaded deck.
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.
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.
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.
Going by SKILL.md and its folder, Md Slides needs the command-line tools its instructions call (python3). Our summary lists: Python 3.
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.
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.
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.
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.
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.
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.