Ky Markdown Rebuilder
KyrieCheungYep/ky-markdown-rebuilder
Rebuild visual documents into reliable Markdown by combining text extraction with page or screenshot alignment.
Convert a PPTX slide deck into per-slide markdown that preserves both the verbatim text and the meaning of embedded screenshots, diagrams and charts in their original layout positions.
$ npx skills add sammcj/agentic-coding --skill pptx-to-md -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install sammcj/agentic-coding pptx-to-md --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/sammcj/agentic-coding.git skills-src && mkdir -p .claude/skills && cp -r skills-src/Skills/pptx-to-md .claude/skills/pptx-to-md && 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 "pptx-to-md" agent skill from https://github.com/sammcj/agentic-coding/tree/main/Skills/pptx-to-md into .claude/skills/pptx-to-md/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "pptx-to-md", 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/sammcj/agentic-coding/tree/main/Skills/pptx-to-mdType 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 sammcj/agentic-coding --skill pptx-to-md -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install sammcj/agentic-coding pptx-to-md --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/sammcj/agentic-coding.git skills-src && mkdir -p .agents/skills && cp -r skills-src/Skills/pptx-to-md .agents/skills/pptx-to-md && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "pptx-to-md" agent skill from https://github.com/sammcj/agentic-coding/tree/main/Skills/pptx-to-md into .agents/skills/pptx-to-md/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "pptx-to-md", 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 sammcj/agentic-coding --skill pptx-to-md -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install sammcj/agentic-coding pptx-to-md --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/sammcj/agentic-coding.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/Skills/pptx-to-md .cursor/skills/pptx-to-md && 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 "pptx-to-md" agent skill from https://github.com/sammcj/agentic-coding/tree/main/Skills/pptx-to-md into .cursor/skills/pptx-to-md/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "pptx-to-md", 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/sammcj/agentic-coding.git --path Skills/pptx-to-md--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 sammcj/agentic-coding --skill pptx-to-md -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install sammcj/agentic-coding pptx-to-md --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/sammcj/agentic-coding.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/Skills/pptx-to-md .gemini/skills/pptx-to-md && 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 "pptx-to-md" agent skill from https://github.com/sammcj/agentic-coding/tree/main/Skills/pptx-to-md into .gemini/skills/pptx-to-md/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "pptx-to-md", 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 sammcj/agentic-coding pptx-to-mdInstalls 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 sammcj/agentic-coding --skill pptx-to-md -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/sammcj/agentic-coding.git skills-src && mkdir -p .github/skills && cp -r skills-src/Skills/pptx-to-md .github/skills/pptx-to-md && 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 "pptx-to-md" agent skill from https://github.com/sammcj/agentic-coding/tree/main/Skills/pptx-to-md into .github/skills/pptx-to-md/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "pptx-to-md", 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 sammcj/agentic-coding --skill pptx-to-md -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install sammcj/agentic-coding pptx-to-md --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/sammcj/agentic-coding.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/Skills/pptx-to-md .opencode/skills/pptx-to-md && 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 "pptx-to-md" agent skill from https://github.com/sammcj/agentic-coding/tree/main/Skills/pptx-to-md into .opencode/skills/pptx-to-md/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "pptx-to-md", 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.
pptx-to-mdConvert a PPTX slide deck into per-slide markdown that preserves both the verbatim text and the meaning of embedded screenshots, diagrams and charts in their original layout positions.
PPTX To Md is an agent skill from sammcj/agentic-coding. Convert a PPTX slide deck into per-slide markdown that preserves both the verbatim text and the meaning of embedded screenshots, diagrams and charts in their original layout positions. Use this skill (over pptx or liteparse) whenever the deliverable is markdown of a deck's content including interpreted visuals.
Its SKILL.md is about 1.8k tokens, which your agent loads only when the skill is triggered. The skill folder holds 7 other files, including scripts and reference files (for example `references/example_slide.md`, `references/sub_agent_prompt.md` and `scripts/concatenate.py`).
It sits in Documents & Office, covering PowerPoint presentations, Slides and decks and Document parsing. It works with Microsoft PowerPoint and LibreOffice. The repository describes itself as: Agentic Coding Rules, Templates etc... The licence is Apache-2.0.
4 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit 2f25ced. 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.
Ships 3 files in scripts/ (Python), which the agent can run.
Shell commands in SKILL.md call:
pythonuvxFrom the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md. Its commands use uvx, which can reach the network depending on how they are called.
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.
PPTX To Md loads about 1.8k tokens when it runs, and up to ~3.7k if it reads all its reference files. Until then it costs about 81 tokens; SKILL.md has 903 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); the scripts in this folder are not scanned.
The full file from sammcj/agentic-coding at commit 2f25ced, republished under its Apache-2.0 licence (© sammcj). 903 words, ~1,830 tokens.
.claude/skills/pptx-to-md/SKILL.md (or your agent's skills folder). This skill also uses 5 other files; get the full folder from GitHub.This skill turns a .pptx file into one markdown file per slide, preserving layout context and image meaning. It does not paraphrase the text or describe images out of context. The output is suitable as input to a content uplift pass, a markdown-to-HTML build, or any other downstream transform.
The deck mixes text with embedded screenshots, diagrams, charts, or code samples in a layout that matters (columns, side-by-side panels, callouts). Plain text extraction would lose either the layout or the meaning of the images.
IMPORTANT: If the deck is: a PDF, text-only or if it has no images that are meaningful to the content, uvx 'markitdown[all]' <path-to-file> -o output.md is faster and usually sufficient without going through this skill's more complex pipeline as described below. You can try this and ask the user to review the output letting them know that if it's not sufficient you will continue with the more complex slide extraction pipeline.
PPTX -> prepare.py -> manifests + rendered JPGs + embedded PNGs
-> dispatch one sub-agent per slide
-> per-slide markdown files
-> concatenate.py -> deck.mdThe orchestrator (you, in the calling session) does two things: run the prepare and concatenate scripts, and dispatch one sub-agent per visible slide. Each sub-agent does the actual vision-and-text composition for one slide and writes one markdown file. Sub-agents are independent so they parallelise cleanly.
python <skill>/scripts/prepare.py <pptx-path> <workspace-dir>This unzips the PPTX, renders every visible slide to a JPG via LibreOffice and pdftoppm, then writes one manifest JSON per visible slide. After rendering, the script checks the JPG count matches the slide count and warns to stderr if they diverge - LibreOffice has been known to silently drop slides, so always read that warning before dispatching sub-agents.
Run this step OUTSIDE any command sandbox. LibreOffice headless needs to write its per-user profile and set OS/task policies that a sandbox blocks, so under sandboxing soffice fails silently: no PDF, empty output, and no deck_index.json. Under Claude Code specifically, run prepare.py with the Bash tool's dangerouslyDisableSandbox: true. Symptom to recognise: rendered/ stays empty and no deck_index.json is written while the soffice process sits at near-zero CPU.
The workspace looks like:
workspace/
unpacked/ raw OOXML
rendered/ PDF + ordered slide JPGs
manifests/slideNN.json per-slide manifest
slide_images/slideNN.jpg rendered whole-slide JPG (stable name)
embedded_images/slideNN/ embedded PNGs grouped per slide
slides/ empty - sub-agents write slideNN.md here
deck_index.json {visible, hidden, src_to_render}Pick 2-4 slides that span the deck's variety: one dense, one with screenshots, one with a custom diagram, one with sparse text. Dispatch sub-agents for those first using the prompt template at references/sub_agent_prompt.md, and compare the output against the exemplar in references/example_slide.md. Adjust the deck-specific notes in the prompt if needed (terminology to keep verbatim, terms to flag, conventions to enforce). Only then fan out to the rest of the deck.
The pilot is not optional. Per-deck variation in image style, layout density, and terminology means a prompt that works perfectly for one deck may produce bland or duplicated output on another.
For each visible slide, dispatch one fresh sub-agent (named subagent type, not a fork - the agent only needs its manifest, so a fresh context is cheaper than inheriting the orchestrator's history). Each agent reads its manifest, the rendered slide JPG, and the embedded PNGs, then writes one slideNN.md.
To get the dispatch list, run:
python <skill>/scripts/dispatch_list.py <workspace-dir>This emits one tab-separated row per slide that still needs a sub-agent (slide_number, manifest_path, output_path), skipping slides whose markdown already exists. That makes reruns after a partial failure trivial - no slide is re-extracted unnecessarily.
Suggested batching: 6 sub-agents per wave. Larger waves work but produce more interleaved completion notifications, which is noisier without being faster. Each sub-agent typically takes 20-50 seconds.
The exact prompt to send each agent is in references/sub_agent_prompt.md. Substitute the placeholders before sending using str.replace() (not str.format() - the template contains literal braces). The prompt's rules - length-tuned image descriptions, external-links de-duplication, single-line reply - are not stylistic; they were each added after a real failure mode in earlier runs. See the prompt template for the rationale.
python <skill>/scripts/concatenate.py <workspace-dir> [--out deck.md] [--title "Deck title"]This stitches the per-slide markdown into a single deck.md in source-slide order with a header noting any hidden slides that were excluded. It refuses to run if any expected slide markdown is missing, which is the right behaviour - a partial deck is rarely what's wanted.
LibreOffice's PDF export skips hidden slides by default. This means the rendered JPG index drifts from the source slide number. prepare.py builds a src_to_render map and copies each rendered JPG to a stable slide_images/slideNN.jpg path keyed by source slide number, so manifests reference a stable name. If you regenerate the renders later, rerun prepare.py so the mapping stays fresh.
Speaker notes mapping is not always 1:1. This skill reads the slide-to-notesSlide relationship from the slide's _rels file rather than assuming slideN.xml maps to notesSlideN.xml. Most decks happen to be 1:1 but it isn't guaranteed.
Source XML can have typos. The pipeline preserves them verbatim. Correct them in a later content-uplift pass, not during extraction - this keeps extraction deterministic.
Hidden slides are excluded by default. Most decks contain hidden slides for a reason (work-in-progress, deprecated content, internal-only notes). Pass --include-hidden only when you want them in the output - the script then renders them properly via LibreOffice's ExportHiddenSlides filter, so they get real JPGs in the manifests.
Dense screenshots benefit from higher DPI. The default is 150 DPI. For decks where text inside screenshots needs to be readable in the rendered JPG, pass --dpi 200 or --dpi 250 to prepare.py.
soffice) on PATHpdftoppm) on PATHThe prepare script checks for both binaries and exits early with a clear error if either is missing.
© sammcj, Apache-2.0. 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 5 other files (scripts, references) in Skills/pptx-to-md of sammcj/agentic-coding.
Open the folder on GitHubat commit 2f25ced
PPTX To Md 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 |
|---|---|---|---|---|---|---|
| PPTX To Md this skillsammcj/agentic-coding | 162 | — | ~1.8k | Automated safety check: Pass | Apache-2.0 | |
| Ky Markdown RebuilderKyrieCheungYep/ky-markdown-rebuilder | 117 | — | ~5.7k | Automated safety check: Pass | None | |
| PowerPoint PPTX ToolkitXiaomiMiMo/MiMo-Code | 14k | — | ~6.8k | Automated safety check: Notes | Apache-2.0 | |
| Document ConverterBlackBeltTechnology/pi-agent-dashboard | 315 | — | ~999 | Automated safety check: Pass | MIT | |
| MarkitdownImCa0/just-laws | 781 | 14 repos | ~3.2k | Automated safety check: Notes | MIT | |
| Xiaobei Skill Image To Vbaxiao24bei/xiaobei-skill | 586 | — | ~6.9k | Automated safety check: Pass | Apache-2.0 |
KyrieCheungYep/ky-markdown-rebuilder
Rebuild visual documents into reliable Markdown by combining text extraction with page or screenshot alignment.
XiaomiMiMo/MiMo-Code
Creates, edits and reads PowerPoint .pptx files with python-pptx or PptxGenJS, with scripts for XML edits, text dumps, PDF and image rendering, and thumbnails.
BlackBeltTechnology/pi-agent-dashboard
Convert documents bidirectionally via the pi-doc-engine facade: ingest PDF/DOCX/PPTX/XLSX to provenance-stamped Markdown (with OCR), and produce templated DOCX/PDF from Markdown with diagrams, TOC…
ImCa0/just-laws
Convert files and office documents to Markdown. An agent skill from ImCa0/just-laws.
xiao24bei/xiaobei-skill
A skill your agent uses when users want XiaoBei skill / xiaobei-skill / 小北在读研 style academic image-to-VBA reconstruction: convert academic figures, scientific diagrams, slides, screenshots, or other…
iamlukethedev/Herald-OS
Make and change presentations in Herald Slides, the presentation editor in Herald OS - a deck from a topic (an outline first, a title slide, one idea a slide, short bullets, speaker notes, a closing…
sammcj/agentic-coding
A skill your agent uses when generating songs with YuE2, covering a recording via SheetSage2 audio-to-ABC, editing a score or lyrics with melody preservation, or building a reproducible listening…
sammcj/agentic-coding
A skill your agent uses when creating or editing Bento (.bento.html) slide decks, including any request for a single-file HTML slide deck.
sammcj/agentic-coding
A skill your agent uses whenever the user wants you to manage, discuss or diagnose iDrive Backup configuration on macOS
sammcj/agentic-coding
Train custom TTS voices for Piper (ONNX format) using fine-tuning or from-scratch approaches.
sammcj/agentic-coding
You MUST load this skill before the skill-creator skill AND before making ANY change to, or conducting a review of ANY Agent Skill.
sammcj/agentic-coding
Delays execution of a task until a specified time or after a duration.
Works with
Categories
Convert a PPTX slide deck into per-slide markdown that preserves both the verbatim text and the meaning of embedded screenshots, diagrams and charts in their original layout positions. PPTX To Md is an agent skill from sammcj/agentic-coding. Convert a PPTX slide deck into per-slide markdown that preserves both the verbatim text and the meaning of embedded screenshots, diagrams and charts in their original layout positions.
PPTX To Md fits situations like: tasks that involve PowerPoint presentations; tasks that involve Slides and decks; tasks that involve Document parsing.
Run `npx skills add sammcj/agentic-coding --skill pptx-to-md -a claude-code`. Or copy the skill folder (Skills/pptx-to-md in sammcj/agentic-coding) into .claude/skills/pptx-to-md in your project. Claude Code loads it when a task matches its description.
Run `npx skills add sammcj/agentic-coding --skill pptx-to-md -a codex`. Or copy the skill folder (Skills/pptx-to-md in sammcj/agentic-coding) into .agents/skills/pptx-to-md 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 sammcj/agentic-coding --skill pptx-to-md -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/pptx-to-md, .gemini/skills/pptx-to-md, .github/skills/pptx-to-md and .opencode/skills/pptx-to-md in your project.
Going by SKILL.md and its folder, PPTX To Md needs Python for the scripts in its folder and the command-line tools its instructions call (python and uvx). Our summary lists: Python 3.
SKILL.md contains no URLs. Its commands use uvx, which can reach the network depending on how they are called. 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. The check reads SKILL.md only: the scripts in the folder are not scanned, so read them before running anything.
PPTX To Md is published under the Apache-2.0 licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 1.8k tokens (SKILL.md is roughly 7.3k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full. Its references folder adds about 1.9k tokens, read only when the agent opens those files.
Skills that share tags, products or a category with PPTX To Md: Ky Markdown Rebuilder (KyrieCheungYep/ky-markdown-rebuilder, 117 stars), PowerPoint PPTX Toolkit (XiaomiMiMo/MiMo-Code, 14k stars), Document Converter (BlackBeltTechnology/pi-agent-dashboard, 315 stars) and Markitdown (ImCa0/just-laws, 781 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
sammcj (a GitHub user) maintains it in sammcj/agentic-coding, which has 162 GitHub stars. The repository holds 64 skills in this directory. The repository was last updated on October 9, 2026.
Source: sammcj/agentic-coding on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.