Convert Word (.doc/.docx/.docm), PowerPoint (.ppt/.pps/.pot/.pptx/.pptm/.ppsx/.ppsm), Excel (.xls/.xlsx/.xlsm/.xlsb), OpenDocument (.odt/.ods/.odp), RTF, EPUB, CSV, and PDF documents to clean…
Install the "anydoc" agent skill from https://github.com/magnus919/agent-skills/tree/main/anydoc into .claude/skills/anydoc/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "anydoc", 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.
Type 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.
skills CLI
$ npx skills add magnus919/agent-skills --skill anydoc -a codex
Project install goes to .agents/skills/; add -g for ~/.codex/skills/.
Install the "anydoc" agent skill from https://github.com/magnus919/agent-skills/tree/main/anydoc into .agents/skills/anydoc/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "anydoc", 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.
skills CLI
$ npx skills add magnus919/agent-skills --skill anydoc -a cursor
Project install goes to .agents/skills/; add -g for ~/.cursor/skills/.
Install the "anydoc" agent skill from https://github.com/magnus919/agent-skills/tree/main/anydoc into .cursor/skills/anydoc/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "anydoc", 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.
--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
skills CLI
$ npx skills add magnus919/agent-skills --skill anydoc -a gemini-cli
Project install goes to .agents/skills/; add -g for ~/.gemini/skills/.
Install the "anydoc" agent skill from https://github.com/magnus919/agent-skills/tree/main/anydoc into .gemini/skills/anydoc/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "anydoc", 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.
GitHub CLI
$ gh skill install magnus919/agent-skills anydoc
Installs 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).
skills CLI
$ npx skills add magnus919/agent-skills --skill anydoc -a github-copilot
Project install goes to .agents/skills/; add -g for ~/.copilot/skills/.
Install the "anydoc" agent skill from https://github.com/magnus919/agent-skills/tree/main/anydoc into .github/skills/anydoc/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "anydoc", 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.
skills CLI
$ npx skills add magnus919/agent-skills --skill anydoc -a opencode
OpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
Install the "anydoc" agent skill from https://github.com/magnus919/agent-skills/tree/main/anydoc into .opencode/skills/anydoc/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "anydoc", 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.
Facts
Skill name
anydoc
GitHub stars
116
Token cost
~3.8k tokens
SKILL.md length
1,747 words
Files
39 (incl. scripts, references)
Skills in repo
130
Repo updated
First seen
Licence
MIT
At a glance
Convert Word (.doc/.docx/.docm), PowerPoint (.ppt/.pps/.pot/.pptx/.pptm/.ppsx/.ppsm), Excel (.xls/.xlsx/.xlsm/.xlsb), OpenDocument (.odt/.ods/.odp), RTF, EPUB, CSV, and PDF documents to clean…
Works in 4 steps: Check the exit code. 0 means the CLI… → Check the output shape. The markdown… → Write large outputs to a file with -o.… → …
A task needs the contents of an office document
SKILL.md covers Overview, First-use decision gate, When to use and Format coverage (summary), plus 4 more sections
Calls npx; needs FIRECRAWL_API_KEY
What it does
Anydoc is an agent skill from magnus919/agent-skills. Convert Word (.doc/.docx/.docm), PowerPoint (.ppt/.pps/.pot/.pptx/.pptm/.ppsx/.ppsm), Excel (.xls/.xlsx/.xlsm/.xlsb), OpenDocument (.odt/.ods/.odp), RTF, EPUB, CSV, and PDF documents to clean GitHub-Flavored Markdown locally with the Any Doc CLI (npx -y @firecrawl/anydoc@0.2.4): headings, GFM tables, slide structure, and footnotes in one pass. Use when a task needs the contents of an office document, spreadsheet, presentation, ebook, or PDF you cannot read directly. Do not use for generating, editing, or…
Its SKILL.md is about 3.8k tokens, which your agent loads only when the skill is triggered. The skill folder holds 40 other files, including scripts and reference files (for example `README.md` and `evals/evals.json`). Compatibility notes: Node.js = 20 and npx. The pinned CLI is @firecrawl/anydoc@0.2.4; the native binary ships via npm optionalDependencies (no install step, no postinstall, no…
It sits in Documents & Office, covering Excel spreadsheets, PowerPoint presentations and Word documents. It works with Microsoft Excel, Microsoft PowerPoint, GitHub and Firecrawl. The repository describes itself as: Curated collection of AI agent skills for Hermes and other agent frameworks. The licence is MIT.
When your agent uses it
A task needs the contents of an office document
PDF you cannot read directly
Validating documents (use documents)
For ebook packaging (use epub)
Example prompts
“/anydoc”
Requirements
Python 3
Node.js
A credential in FIRECRAWL_API_KEY
Compatibility (from SKILL.md): Node.js >= 20 and npx. The pinned CLI is @firecrawl/anydoc@0.2.4; the native binary ships via npm optionalDependencies (no install step, no postinstall, no compilation). Local conversion needs no service or API key. Hosted OCR sends the whole PDF to Firecrawl Parse and may use FIRECRAWL_API_KEY. The first npx run downloads the package once (network required); later runs use the npm cache.
Pre-approved tools (allowed-tools): Bash, Read
Workflow steps
4 steps, taken from the first numbered list in SKILL.md.
1Check the exit code. 0 means the CLI produced markdown. 1 means the
2Check the output shape. The markdown must contain the structural markers
3Write large outputs to a file with -o. -o out.md keeps stdout silent
4Verify tables survived. If the source had tables and the output has no
What it can do on your machine
Read from SKILL.md and the folder at commit c545c2b. It shows what the files ask for, not the result of running them.
Tool permissions
Pre-approves these tools, so the agent can use them without asking each time:
Bash
Read
From allowed-tools in the SKILL.md frontmatter.
Runs code
Ships 1 file in scripts/, which the agent can run.
Shell commands in SKILL.md call:
npx
From the folder's file list and the shell code blocks in SKILL.md.
Network
No URLs in SKILL.md. Its commands use npx, which can reach the network depending on how they are called.
From URLs in SKILL.md, links to its own repository left out.
Credentials
Names these keys or tokens, usually read from environment variables:
FIRECRAWL_API_KEY
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Compatibility
Node.js >= 20 and npx. The pinned CLI is @firecrawl/anydoc@0.2.4; the native binary ships via npm optionalDependencies (no install step, no postinstall, no compilation). Local conversion needs no service or API key. Hosted OCR sends the whole PDF to Firecrawl Parse and may use FIRECRAWL_API_KEY. The first npx run downloads the package once (network required); later runs use the npm cache.
From compatibility in the SKILL.md frontmatter.
Context cost
Anydoc loads about 3.8k tokens when it runs, and up to ~16k if it reads all its reference files. Until then it costs about 184 tokens; SKILL.md has 1,747 words of instructions outside code blocks.
Always· name and description, kept in context so the agent knows when to use it
~184
When it runs· the whole SKILL.md, loaded when a task matches
~3.8k
With references· SKILL.md plus every file in references/, read only if the agent opens them
~16k
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: notes
The automated check noted patterns worth knowing about, such as sudo or a known installer.
NotePre-approves every shell command (allowed-tools: Bash)SKILL.md
allowed-tools: Bash, Read
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.
Download SKILL.mdSave it as .claude/skills/anydoc/SKILL.md (or your agent's skills folder). This skill also uses 38 other files; get the full folder from GitHub.
name
anydoc
description
Convert Word (.doc/.docx/.docm), PowerPoint (.ppt/.pps/.pot/.pptx/.pptm/.ppsx/.ppsm), Excel (.xls/.xlsx/.xlsm/.xlsb), OpenDocument (.odt/.ods/.odp), RTF, EPUB, CSV, and PDF documents to clean GitHub-Flavored Markdown locally with the Any Doc CLI (npx -y @firecrawl/anydoc@0.2.4): headings, GFM tables, slide structure, and footnotes in one pass. Use when a task needs the contents of an office document, spreadsheet, presentation, ebook, or PDF you cannot read directly. Do not use for generating, editing, or validating documents (use documents), for ebook packaging (use epub). For scanned or image-only PDFs, use hosted OCR only when the user explicitly authorizes whole-document upload; otherwise route to local OCR tooling.
allowed-tools
Bash, Read
compatibility
Node.js >= 20 and npx. The pinned CLI is @firecrawl/anydoc@0.2.4; the native binary ships via npm optionalDependencies (no install step, no postinstall, no compilation). Local conversion needs no service or API key. Hosted OCR sends the whole PDF to Firecrawl Parse and may use FIRECRAWL_API_KEY. The first npx run downloads the package once (network required); later runs use the npm cache.
Any Doc — office documents to GitHub-Flavored Markdown
The anydoc skill converts office documents, spreadsheets, presentations,
ebooks, CSV, and text-based PDFs into GitHub-Flavored Markdown using the pinned
Any Doc CLI (@firecrawl/anydoc v0.2.4). One shared document model and one GFM
serializer produce the same logical output across formats. Local conversion runs
without a service, API key, or file upload; hosted OCR is a separate explicit route.
Overview
Load this skill when a task needs the contents of a document the agent cannot
read directly: a Word report to summarize, a spreadsheet to turn into a table,
a slide deck to extract, a CSV to analyze, or an ebook or PDF to quote from.
The skill ships a small Python helper (scripts/anydoc) that wraps the pinned
CLI and adds input pre-validation, friendly error hints, batch conversion, and
--dry-run/--json output. Every recipe in references/workflows.md
also shows the raw npx invocation, so the skill works with or without the
helper.
Load the matching row in Reference Routing before choosing a command.
A conversion result
Choose stdout, -o, or batch; run it; then follow Verification.
Hard boundary: local anydoc conversion reads existing supported documents to Markdown without uploading them. Hosted OCR is opt-in only: it sends the whole OCR-required PDF to the configured Parse service. AnyDoc does not create, edit, validate, package, decrypt, or scrape documents.
When to use
Convert a document to markdown — Word, PowerPoint, Excel, OpenDocument,
RTF, EPUB, CSV, or text-based PDF.
Feed documents to an LLM — one-pass conversion to clean markdown for
summarization, extraction, or retrieval ingestion.
Batch a folder — convert a directory of mixed office files for a vault
or knowledge base.
Read a document from stdin — pipe bytes into anydoc -.
Format coverage (summary)
anydoc covers 8 format families / 21 extensions through 12 canonical
parsers. The canonical formats are doc, docx, odt, pdf, ppt, pptx, rtf, epub, xlsx, ods, odp, csv; extension aliases map through them (.docm→docx,
.xls→xlsx, .pptm→pptx, and so on).
Family
Extensions
Expected GFM output
Decision cue
Word
.doc.docx.docm
#–###### headings, GFM tables, [^n] footnotes
Use when content extraction is enough; use documents when rendered layout matters.
PowerPoint
.ppt.pps.pot.pptx.pptm.ppsx.ppsm
slide titles as plain paragraphs, bullet lists, speaker notes as > blockquotes, GFM tables (PPTX/ODP; legacy .ppt flattens tables to text lines)
Need table fidelity? Prefer PPTX or ODP; legacy .ppt preserves cell text but not table structure.
Excel
.xls.xlsx.xlsm.xlsb
## <sheet name> heading + one GFM table per worksheet; number formats dropped (raw cell values)
Need displayed percentages, currency, or number formats? Prefer ODS; XLS/XLSX output is raw values.
OpenDocument
.odt.ods.odp
same document/slide shapes as DOCX/PPTX; ODS keeps formatted display values
Prefer ODS when spreadsheet display formatting is part of the meaning.
Use to read an existing EPUB; use epub to author or package one.
CSV
.csv
one GFM table; label-like first row promoted to header; delimiter sniffing; UTF-16 with BOM
Use for delimited tabular content; inspect delimiter and encoding when output looks wrong.
PDF
.pdf
headings + inline emphasis, but a lower-fidelity pipeline: tables flatten to text, footnotes and links degrade. Text-based PDFs stay local; scanned/image-only PDFs require explicit hosted OCR or another OCR tool
Use local mode by default; hosted mode uploads the whole PDF and has no page selection.
See references/formats.md for the full per-format
expectations and fidelity caveats, and references/errors.md
for the exact failure messages (including the no-OCR error).
Command Map
Commands are shown relative to the repository root. <file> is any document
path (for example anydoc/fixtures/fixture-handmade-outline.docx); - reads
the document from stdin.
Need
Command
Choose it when
Convert one file to small markdown on stdout
anydoc/scripts/anydoc convert <file>
The caller needs immediate content and does not need a saved artifact.
Convert one file to a markdown file
anydoc/scripts/anydoc convert <file> -o out.md
The output is large, must be reviewed later, or should be preserved as an artifact.
If the user explicitly authorizes sending the complete PDF to Firecrawl Parse,
use the wrapper acknowledgement and a trusted FIRECRAWL_API_KEY environment
variable when needed:
The wrapper never places the key on the command line. Hosted OCR has no page
selection, and a hosted failure is not permission to silently switch endpoints.
Notes:
scripts/anydoc is an executable Python 3 script (shebang #!/usr/bin/env python3); python3 anydoc/scripts/anydoc ... is equivalent when the
executable bit is unavailable.
The raw npx -y @firecrawl/anydoc@0.2.4 rows are the ground truth for
conversion behavior; the wrapper delegates to exactly that command.
Always pin @0.2.4 for reproducible conversions. -y answers npx's
"Ok to proceed?" prompt non-interactively — the CLI itself never prompts.
Both forms share the same contract: one document per invocation, exit code
0 success / 1 conversion or IO failure / 2 usage error, diagnostics as
exactly one anydoc: <message> line on stderr, and no prompts.
Hosted OCR is supported by the 0.2.4 library and CLI, but the wrapper requires
both --ocr hosted and --allow-hosted-upload so an upload cannot be selected
implicitly. The hosted route sends the complete PDF to Firecrawl Parse because
page selection is unavailable. Do not place API keys on the command line.
Show full SKILL.md (710 more words)Show less
Reference Routing
Load only the row that answers the immediate question; the command examples and verification contract remain in this file.
Complete success, expected-failure, and fidelity-boundary reports to imitate after following Verification.
When not to use
Use this routing table before reaching for a conversion command:
User's request
Reach for
Why
Generate, edit, inspect rendered layout, or validate a PDF/Word/Excel/PowerPoint artifact
documents skill
anydoc extracts existing document contents to Markdown; it does not author, preserve rendered layout, or validate artifacts.
Package or author an EPUB
epub skill
anydoc reads an existing EPUB to Markdown but never writes or validates an EPUB container.
OCR a scanned or image-only PDF
Local OCR tooling, or AnyDoc hosted OCR after explicit authorization
Local mode reports the OCR-required error without uploading; hosted mode sends the whole PDF to Firecrawl Parse.
Scrape HTML or other web content
A web-scraping skill
HTML is not a supported anydoc input.
Transcribe binary media such as images, video, or audio
A media or transcription tool
Embedded images become alt text; anydoc cannot transcribe media.
Preserve pagination, fonts, templates, or rendered layout
A document/layout tool
The only output contract is GitHub-Flavored Markdown.
Convert a password-protected file
An unencrypted copy from the document owner
anydoc has no password or decryption option.
Verification
Report evidence, not just success. For every attempted conversion, return the input, exact command or wrapper path, observed exit code, output destination (stdout or file), structural markers checked, and any documented caveat or next route.
Compact report shape:
text
Input: <path or stdin source>
Command: <exact wrapper or pinned CLI path>
Exit: <observed code>
Output: <stdout or destination file>
Checks: <markers or fidelity facts observed>
Caveat/route: <documented limitation or next action>
Common stop conditions
Condition
Do not
Next
Scanned or image-only PDF / OCR-required error
Retry unchanged or upload implicitly
Use local OCR, or explicitly authorize and run --ocr hosted --allow-hosted-upload; page selection is unavailable.
Encrypted or password-protected document
Guess a password or retry unchanged
Request an unencrypted copy or owner-authorized re-export.
Inspect the output shape and source fidelity before reporting completion.
Confirm a conversion before reporting it as done:
Check the exit code.0 means the CLI produced markdown. 1 means the
document could not be read or converted — read the single anydoc: <message>
stderr line and match it against references/errors.md.
2 means the command itself was a usage error (bad flag, missing input,
invalid --format).
Check the output shape. The markdown must contain the structural markers
your format actually produces:
Word / ODT / RTF / text-based PDF: #/## headings. For PDF, do not
expect GFM tables or [^1]: footnote definitions — that pipeline
flattens them.
Spreadsheets (xlsx/xls/ods) and CSV: |-delimited GFM tables. xlsx/xls
show raw cell values (0.155, 1234.5); ODS shows formatted display
values (15.5%, $1,234.50).
Presentations (pptx/odp): slide titles as plain paragraphs, >
blockquote speaker notes, GFM tables. Legacy .ppt flattens tables to
bare text lines.
EPUB: # chapter headings and internal anchor links.
Write large outputs to a file with -o.-o out.md keeps stdout silent
and gives a reviewable file instead of streaming the whole document into
context.
Verify tables survived. If the source had tables and the output has no
| rows, consult the format caveats — PDF and legacy .ppt flatten tables
by design, not by error.
Stop when the conversion exits 0 and the structural markers match the
source format. Do not re-run or retry on a documented failure mode (encrypted,
malformed, scanned/image-only, unsupported) without changing the input; report
the documented message and route as references/errors.md
instructs.
Anydoc 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.
Generate real DOCX, PPTX, XLSX, PDF, CSV files using python-docx / python-pptx / openpyxl / reportlab by writing them into the dispatch artifacts dir, then explicitly deliver each one with cloud…
A skill your agent uses for PhD-level expertise in data science, statistics, and machine learning: rigorous statistical analysis, experimental design, causal inference, advanced modeling, research…
Convert Word (.doc/.docx/.docm), PowerPoint (.ppt/.pps/.pot/.pptx/.pptm/.ppsx/.ppsm), Excel (.xls/.xlsx/.xlsm/.xlsb), OpenDocument (.odt/.ods/.odp), RTF, EPUB, CSV, and PDF documents to clean…. Anydoc is an agent skill from magnus919/agent-skills.4): headings, GFM tables, slide structure, and footnotes in one pass.
When should I use Anydoc?
Anydoc fits situations like: A task needs the contents of an office document; PDF you cannot read directly; validating documents (use documents); for ebook packaging (use epub).
How do I install Anydoc in Claude Code?
Run `npx skills add magnus919/agent-skills --skill anydoc -a claude-code`. Or copy the skill folder (anydoc in magnus919/agent-skills) into .claude/skills/anydoc in your project. Claude Code loads it when a task matches its description.
How do I install Anydoc in Codex?
Run `npx skills add magnus919/agent-skills --skill anydoc -a codex`. Or copy the skill folder (anydoc in magnus919/agent-skills) into .agents/skills/anydoc in your project. Codex loads it when a task matches its description.
Can I use Anydoc 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 magnus919/agent-skills --skill anydoc -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/anydoc, .gemini/skills/anydoc, .github/skills/anydoc and .opencode/skills/anydoc in your project.
What does Anydoc need to run?
Going by SKILL.md and its folder, Anydoc needs the command-line tools its instructions call (npx) and credentials named FIRECRAWL_API_KEY. Our summary lists: Python 3; Node.js; A credential in FIRECRAWL_API_KEY. Its frontmatter pre-approves these tools: Bash, Read. Compatibility (from SKILL.md): Node.js >= 20 and npx. The pinned CLI is @firecrawl/anydoc@0.2.4; the native binary ships via npm optionalDependencies (no install step, no postinstall, no compilation). Local conversion needs no service or API key. Hosted OCR sends the whole PDF to Firecrawl Parse and may use FIRECRAWL_API_KEY. The first npx run downloads the package once (network required); later runs use the npm cache..
Does Anydoc access the network?
SKILL.md contains no URLs. Its commands use npx, which can reach the network depending on how they are called. This is read from the text; nothing was executed.
Is Anydoc safe to install?
Our automated static check of SKILL.md found notes only (pre-approves every shell command (allowed-tools: bash)), nothing it rates as a warning. 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.
What licence does Anydoc use?
Anydoc 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 Anydoc use?
About 3.8k tokens (SKILL.md is roughly 15k 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 13k tokens, read only when the agent opens those files.
What are the alternatives to Anydoc?
Skills that share tags, products or a category with Anydoc: Sn Da Non Spreadsheet Analysis (OpenSenseNova/SenseNova-Skills, 5.7k stars), Documents (zhongkaifu/TensorSharp, 559 stars), Office Artifacts (Prismer-AI/PrismerCloud, 1.6k stars) and Markitdown (ImCa0/just-laws, 782 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
Who maintains Anydoc?
magnus919 (a GitHub user) maintains it in magnus919/agent-skills, which has 116 GitHub stars. The repository holds 130 skills in this directory. The repository was last updated on October 8, 2026.
Source: magnus919/agent-skills on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.