doc-format-converter
Skill95 starsChanged 6 days agoMITView on GitHub
Use this skill whenever the user asks to convert a document or file from one format to another — Markdown, HTML, PDF, Word (.docx), PowerPoint (.pptx), Excel (.xlsx), CSV, or plain text (e.g. "turn this Word doc into a PDF", "make slides from this markdown", "save this page as markdown"). Only for producing a converted file as a deliverable. Do NOT use this skill to answer questions about a document's content — the analyzing-* skills handle that. Run the bundled scripts/convert.py instead of writing ad-hoc conversion code, BEFORE attempting any conversion yourself.
We split this skill into the rules it gives an agent
8 rules. About 0 are common, 4 are distinctive, and 4 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈4
Distinctive · estimate
This author's own choices. Worth a look.
4
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Very specific: line 30
If the user asks content questions *after* a conversion, hand off to the matching analyzing-* skill on the original file rather than …
- Very specific: line 33
Reuse their artifacts when present: If an analyzing-* preprocessor has already produced a converted.md for the source file, feed that to …
- Very specific: line 44
Run the converter by the script's path inside this skill's folder — typically /app/skills/doc-format-converter/ — so it works regardless of …
- Distinctive: line 61
If the script reports an unsupported conversion, relay its message — it prints the full support matrix.
- Distinctive: line 65
If the script warns that a file's extension doesn't match its content (content sniffing via magika), tell the user.
- Distinctive: line 91
Never fabricate or "fill in" content the source file does not contain.
- Very specific: line 93
Do not hand-write conversion code when convert.py supports the pair.
- Distinctive: line 95
Never claim a conversion succeeded without the script's success output.
≈ “Common” is an estimate: at least 1 in 5 of the 308,232 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Convert documents between formats using the bundled scripts/convert.py. It
works fully offline with libraries already present in the sandbox
(markitdown, mammoth, markdownify, reportlab, python-docx, python-pptx,
pdfplumber, beautifulsoup4, magika) and routes each conversion through the
highest-fidelity pipeline available.
Division of labor with the analyzing-* skills
This skill produces files; the built-in analyzing-* skills answer
questions. Route accordingly:
- "What does this PDF say?", "find X in this workbook", "summarize this
deck" → use
analyzing-pdf/analyzing-xlsx/analyzing-pptxetc., not this skill. In particular, never useconvert.pyas a substitute extraction path for PDF question-answering —analyzing-pdfowns that. - "Give me this as a PDF/Word doc/slides/markdown file" → this skill.
- If the user asks content questions after a conversion, hand off to the
matching
analyzing-*skill on the original file rather than answering from this skill's intermediate output. - Reuse their artifacts when present. If an
analyzing-*preprocessor has already produced aconverted.mdfor the source file, feed that toconvert.pyas Markdown input (convert.py converted.md --to pptx) instead of re-extracting the original — it is a high-quality extraction with page markers and pipe tables.
Instructions
- Identify the input file and the target format the user wants. Targets:
md,html,pdf,docx,pptx,txt. Inputs additionally includexlsxandcsv. Run the converter by the script's path inside this skill's folder — typically
/app/skills/doc-format-converter/— so it works regardless of the current working directory:python /app/skills/doc-format-converter/scripts/convert.py INPUT --to FORMAT [-o OUTPUT]It prints the output path on success. If
-ois omitted, the output lands next to the input with the new extension.For a folder of files, use batch mode and share the printed summary table with the user:
python /app/skills/doc-format-converter/scripts/convert.py --batch DIR --to FORMAT [--out-dir DIR]- If the script reports an unsupported conversion, relay its message — it prints the full support matrix. Offer the nearest supported route (e.g. PDF → slides is unsupported; offer PDF → Markdown, let the user edit, then Markdown → PPTX).
- If the script warns that a file's extension doesn't match its content (content sniffing via magika), tell the user; the converter proceeds using the detected content type.
- Return the converted file to the user and briefly state which pipeline was used (e.g. "docx → HTML via mammoth").
Conversion notes
- Markdown is the universal intermediate: Office/PDF inputs are extracted with markitdown, then re-rendered. Some layout (columns, images, footnotes) is simplified — say so when converting layout-heavy documents.
- For scanned/image PDFs, this skill's pdf → md route extracts little or
nothing. Run the
analyzing-pdfpreprocessor instead (its OCR pipeline is the better extractor) and feed its text artifact into this skill's renderers. - PDF output registers a CJK-capable font automatically (bundled Noto CJK fonts, falling back to reportlab's built-in CID fonts), so Chinese, Japanese, and Korean text renders correctly.
- PPTX output builds one slide per
#/##heading with body content as bullets, overflowing onto continuation slides — it is an outline deck, not finished design. pdf → pptxandpptx → pdf/docxare deliberately unsupported: the extraction is too lossy to present as a finished conversion.
Guardrails
- Never fabricate or "fill in" content the source file does not contain; if extraction returns nothing, report that instead of inventing text.
- Do not hand-write conversion code when
convert.pysupports the pair; only fall back to custom code if the script fails, and say that you did. - Never claim a conversion succeeded without the script's success output.
- Verification test cases live in
references/test-cases.mdwith fixtures inassets/samples/— use them when the user asks to validate the skill.
In this repository199 other files it gives its agents.
- .github/copilot-instructions.mdCopilot instructions
- accessibility-passSkill
- acroform-writerSkill
- action-items-todoSkill
- agent-evaluation-designerSkill
- agent-harness-explorerSkill
- agent-performance-triageSkill
- agent-red-teamSkill
- ai-demo-assistantSkill
- ai-first-process-redesignSkill
- ai-usecase-assessmentSkill
- anonymised-case-study-writerSkill
- evidence-gatherSkill
- gap-checkSkill
- readiness-packSkill
- scope-mapSkill
- b2b-outreach-suiteSkill
- blog-content-auditorSkill
- blog-post-structure-passSkill
- booth-loop-videoSkill
- brand-template-enforcerSkill
- brand-voice-passSkill
- breathing-roomSkill
- browser-uat-analystSkill
- business-osSkill
- call-for-speakers-digestSkill
- campaign-deck-builderSkill
- chart-builderSkill
- classic-text-adventureSkill
- clipchamp-videoSkill
- clt-hr-assistantSkill
- commenting-contentSkill
- competitive-battlecard-builderSkill
- conditional-chat-reminderSkill
- conference-session-abstract-packSkill
- contradiction-flagSkill
- insight-briefSkill
- provenance-checkSkill
- research-retrieveSkill
- trend-compareSkill
- content-quality-auditorSkill
- copilot-agent-advisorSkill
- copilot-studio-adaptive-card-builderSkill
- copilot-studio-agent-testSkill
- copilot-studio-harness-pickerSkill
- copilot-studio-knowledge-readinessSkill
- copilot-studio-mcp-readinessSkill
- copilot-studio-topic-blueprintSkill
- cowork-plugin-engineerSkill
- cowork-use-case-one-pagerSkill
- create-copilot-adoption-dashboardSkill
- context-assembleSkill
- handoff-packetSkill
- inquiry-intakeSkill
- knowledge-retrieveSkill
- resolution-draftSkill
- bom-impactSkill
- ecn-draftSkill
- ecr-ingestSkill
- standards-checkSkill
- The first 60 shown.
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

