Cold water first: the four document skills you enjoy on claude.ai cannot be installed in Claude Code. The docs say so in plain text. What you can install is an open-source namesake that is not quite the same thing.
Everything in the first twelve issues pays off days later. Office deliverables do not: they hand you a file, and whether it opens is objective, immediate, and requires trusting nobody. That is exactly why this is the easiest class in the whole skill ecosystem to cash in — an oracle exists, so the model can correct itself. All ten entries below open in a browser and every install command is copied from its own official page. Section 02 explains why these ten are really three different kinds of thing; section 04 lays out the bill. This table is not ranked by stars — the office category has only a handful of serious entries, and a star ranking would just tell you the loudest one goes first.
# 1-4 in Claude Code: one command for all four (marketplace is anthropic-agent-skills)
/plugin marketplace add anthropics/skills
/plugin install document-skills@anthropic-agent-skills
# 6-9 ship in the other plugin, together (plus skill-creator, mcp-builder and more)
/plugin install example-skills@anthropic-agent-skills
# 5 on the Claude API: not "installed" but named in the container, with code execution on
container: { skills: [ { type: "anthropic", skill_id: "pptx" } ] }
# Only four skill_ids exist: pptx / xlsx / docx / pdf
# 10 markitdown: the reading half, installed with pip
pip install 'markitdown[all]'
# Only need three formats? Do not pull the lot:
pip install 'markitdown[pdf, docx, pptx]'
# There is an MCP build too, exposing exactly one tool: convert_to_markdown(uri)
pip install markitdown-mcp
# Two things to do right after installing
/skills # see the list, switch off what today does not need
/skill-doctor # per-skill token cost and invocation frequency (v2.1.252+)
SKILL.md is a decision tree — create means a Node script using the docx package, edit means unzip, change word/document.xml, rezip, read means one line of pandoc -t markdown. The real value is scripts/merge_runs.py: Word shreds a sentence into a chain of runs, and without merging them first, nine find-and-replace attempts out of ten silently miss. It also ships accept_changes.py for tracked changes and comment.py for comments, which touch six cross-linked files at once.pptxgenjs, edit by unzipping XML, read via markitdown or a thumbnail grid from scripts/thumbnail.py. Its gotcha list is unusually honest: set the layout before adding slides (the default is 10 x 5.625 inches, not 13.3), hex colors carry no #, and shadow option objects must never be reused across calls. Always finish with scripts/office/validate.py, which checks schema, relationships and charts.openpyxl writes formulas, pandas loads bulk data, markitdown gives a quick look — and the step that matters is running scripts/recalc.py afterwards, because openpyxl writes formulas but never computes them. Skip it and you ship a sheet full of = signs and no numbers. Its stated limits are worth copying down: no spilling array functions (XLOOKUP, FILTER, UNIQUE, SEQUENCE; use INDEX+MATCH), post-2007 functions need the _xlfn. prefix to survive recalculation, data_only=True loads cached values and destroys formulas on save, and external links are stripped on re-save.pypdf or qpdf for merge, split and rotate, pdfplumber for text and tables, reportlab for new files, pytesseract plus pdf2image for OCR on scans, and a separate FORMS.md for filling forms. It is the only one of the four that never unzips OOXML, which also makes it the only one that does not depend on LibreOffice.skill_id. Two hard constraints: the code execution tool is required (skills run inside its container) and that container has no network access and no runtime package installation. The docs state plainly that Claude Code does not offer the pre-built document skills. So the answer to "it works in the browser, why not in my terminal" is right here: what you want is entries 1-4.3p-updates.md (progress, plans, problems), company-newsletter.md, faq-answers.md, general-comms.md — and you load the one that matches. Its description is strikingly personal: help me write internal communications in the formats my company likes to use. That phrasing is a signal: the right move with this class is to fork it and drop in your own house style, not to install it as is.theme-showcase.pdf so you can look before choosing, plus on-the-fly generation of new ones. It is a clean specimen of separating style from content: a theme is just hex values paired with fonts, applicable to slides, docs or landing pages alike.#141413, Poppins for headings, Lora for body, with background-aware color choice and fallbacks to Arial and Georgia. Installing it unchanged hangs someone else's sign over your shop; the right use is as a template with your palette swapped in. Skill 15 of this series digs into that class on its own.SKILL.md, deterministic operations in scripts/, and a validation script closing the feedback loop. The criterion here is "which specific trap do its scripts catch for me", not "how well is it written". The price is environment dependencies: entry 2's validation chain needs LibreOffice, entry 4's OCR needs tesseract.license: Proprietary (full terms in each LICENSE.txt), in a repo whose README states they are "provided for demonstration and educational purposes only". Uploading the open-source copy on claude.ai means two descriptions competing for one job, and you pay that trigger conflict for nothing."Template skill" sounds like a category of tool. It is really a structure: one decision tree, a set of reference files read on demand, and a checking step that can tell right from wrong. Entries 1-4 are that structure applied to file formats; entries 7 and 9 are the same structure applied to prose. Once you see it, your own contract templates and quote sheets are built exactly the same way.
validate.py, entry 3's recalc.py and entry 1's soffice conversion check are the positive samples. A document skill with no validation step is asking a model to write a binary format blind — and the most expensive bug in this class is "the file was produced, but it will not open".scripts/ has handed the model work it should never have been given.data_only=True destroys formulas" in the body, and that half page buys more trust than anything else on this list. A skill that lists only what it can do leaves you to discover the rest by stepping on it.skill_id, plugin install), and they do not interoperate — the docs devote a section to custom skills not syncing across surfaces. Ask "where will I use this" before you install anything./plugin install, /skills and /skill-doctor)The docs are specific: only name and description stay resident, roughly 100 tokens per skill; the body is read when triggered, usually under 5k tokens; bundled files cost nothing until read (per the platform.claude.com Agent Skills documentation, 2026-09). Claude Code adds a sharper number: the combined skill descriptions are truncated at 1,536 characters — which means that once you install enough of them, descriptions past the cut are simply gone and those skills stop triggering at all. That is far worse than a few hundred tokens. Use /skill-doctor for real per-skill token cost and invocation frequency, and switch off via /plugin anything whose purpose you cannot recall.
soffice); seeing entry 2's output also wants pdftoppm; entry 4's OCR wants tesseract. On a clean CI box, half of this suite is mute.license: Proprietary in frontmatter, and the repo README adds "for demonstration and educational purposes only". Read LICENSE.txt before adapting any of it into a commercial product — this series will meet that question again.XLOOKUP leaves you puzzling over a sheet full of #NAME?. The learning cost in this class is not in installation; it is in the half page of limits the author was honest enough to write down.0 or blank, because openpyxl does not compute and nobody ran recalc.py. The nastiest part is the shape of the bug: the file opens, the formatting is right, only the numbers are wrong, and they are wrong very quietly.Install these three first (Claude Code): document-skills@anthropic-agent-skills (one command for docx, pptx, xlsx, pdf) + markitdown (pip install 'markitdown[all]', the reading half) + theme-factory (inside the example-skills plugin; browse theme-showcase.pdf before picking). Install LibreOffice first, or the validation chain in entries 2 and 3 stays mute.
Add when needed: doc-coauthoring (long documents whose difficulty is thinking, not formatting) · internal-comms (fork it and drop in your own house style) · brand-guidelines (read it as a template and replace #141413 with your own primary) · markitdown-mcp (only if another agent needs to convert files remotely).
Explicitly do not install: a second, hand-uploaded copy of the open-source four on claude.ai or the API (entry 5 is already live; a duplicate description only steals triggers) · entry 2's validate.py on a machine without LibreOffice · brand-guidelines untouched (that palette is Anthropic's, not yours).
Three things after installing: /skills for the list · /skill-doctor for token cost and invocation frequency · and remember that merged descriptions are truncated at 1,536 characters, so when triggering gets sluggish, suspect that before you suspect the model.
pptx, xlsx, docx, pdf — and all require the code execution tool./plugin marketplace add anthropics/skills, the two plugin names, and the "demonstration and educational purposes only" disclaimermerge_runs.py, accept_changes.py, comment.pythumbnail.py, validate.pyrecalc.py, and the original wording of the spilling-array, _xlfn. and data_only=True limitsFORMS.mdtheme-showcase.pdf#141413, Poppins and Lora, and the fallback behaviour; Skill 15 digs inpip install 'markitdown[all]'; markitdown-mcp exposes exactly one tool, convert_to_markdown(uri)skill_ids, "Claude Code does not offer pre-built document skills", the no-network no-install container, and the three-level token cost table (2026-09)/skills, /skill-doctor, and the 1,536-character truncation of merged descriptions (2026-09)