Skip to content

Documents and Writing: Office Skills, doc-coauthoring and writing-guidelines

Document and writing skills let a coding agent produce the files and prose around your code. Anthropic’s docx, pdf, pptx and xlsx create real Office files and PDFs, doc-coauthoring runs a three-stage RFC workflow, Vercel’s writing-guidelines reviews prose, and humanizer strips AI tells. None ships with Claude Code, and the Office skills’ licence is proprietary.

You ship a release on Friday. Product wants an all-hands deck, the platform team wants a migration RFC, and both come out of your repository’s changelog, tickets and design notes. Asking the agent to “make a PowerPoint” without a skill gets you a Python script that half-works, or Markdown with a .pptx extension. This page is for developers who want documents from the agent as reliably as code, and tech leads who want one reviewable writing pipeline.

What a document and writing skill setup gives you

Section titled “What a document and writing skill setup gives you”
  • Which of five skills to reach for, with install commands for Claude Code, Codex and Cursor (tested 2026-09-26, skills CLI 1.7.0)
  • A PPTX release deck built from CHANGELOG.md, and a workflow from RFC draft through reader testing to a published document
  • Copy-paste prompts, a verification checklist, and the traps that make these skills fail quietly

Which document or writing skill should you use?

Section titled “Which document or writing skill should you use?”

The five skills do different jobs. Two of them produce files, one runs a process, and two edit prose.

SkillPublisherWhat it doesOutputLicence
pptx, docx, xlsx, pdfAnthropic (anthropics/skills)Create, read and edit PowerPoint, Word, Excel and PDF files with scripts (pptxgenjs, Python libraries, LibreOffice), then validate themReal .pptx, .docx, .xlsx, .pdf filesProprietary, source-available (“LICENSE.txt has complete terms”)
doc-coauthoringAnthropic (anthropics/skills)A three-stage workflow for RFCs, specs, PRDs and decision docs: context gathering, section-by-section refinement, reader testing with a fresh modelA Markdown file (or an artifact on claude.ai)No licence file in its folder; the repository README says “many” of its skills are Apache 2.0
writing-guidelinesVercel Labs (vercel-labs/agent-skills)Reviews docs against Vercel’s writing handbook, which it fetches from GitHub on every runTerse file:line findings, no editsRules repository vercel-labs/writing-guidelines: MIT; agent-skills had no root licence file on 2026-09-26
humanizerblader (blader/humanizer), v3.1.0Detects 26 numbered patterns of AI-sounding prose, based on Wikipedia’s “Signs of AI writing”, and rewrites them without changing the claimsRewritten text, or an edited file in file modeMIT

Popularity, as of 2026-09-26. GitHub stars: anthropics/skills 178.4k (the whole repository) and blader/humanizer 52k. All-time skills.sh installs from the third-party LinklyAI/best-skills snapshot of 2026-09-26, a secondary source (re-read skills.sh before you quote them): doc-coauthoring 86,463, writing-guidelines 75,985.

If you need to…UseWhy this one
hand a stakeholder a deck, a Word document or a spreadsheetpptx, docx or xlsxThey produce valid files and check them with a validator and a render, which a bare prompt does not
extract tables from a PDF, fill a form, merge or splitpdfIt scripts the job with PDF libraries instead of guessing at text
write an RFC, design doc or decision recorddoc-coauthoringIt interviews you before drafting and tests the result on a model that has not seen your conversation
check docs against a written style guidewriting-guidelines, or your own guide (see traps)It reports findings by line and changes nothing
strip “reads like ChatGPT” patterns from release notes or a READMEhumanizerIt keeps facts, code, commands and YAML unchanged and checks its own rewrite for added or dropped claims

For deeper anti-slop tooling with deterministic scanners and a published eval, see anti-slop writing skills. For product, marketing and knowledge-work skills, see skills for product, marketing and knowledge work.

How do you install the document and writing skills?

Section titled “How do you install the document and writing skills?”

On claude.ai and the Claude API the four document skills are pre-built. Anthropic’s docs say they “are not available in Claude Code”, so every coding agent needs an explicit install. Install the skills for the documents you produce, not the whole catalogue.

Terminal window
# Office and PDF skills: the document-skills plugin holds exactly docx, pdf, pptx, xlsx
claude plugin marketplace add anthropics/skills
claude plugin install document-skills@anthropic-agent-skills
# doc-coauthoring alone (the example-skills plugin would add 11 more skills)
npx skills add anthropics/skills --skill doc-coauthoring --agent claude-code -y
# Writing review and de-slopping
npx skills add vercel-labs/agent-skills --skill writing-guidelines --agent claude-code -y
claude plugin marketplace add blader/humanizer
claude plugin install humanizer@humanizer

Plugin skills are namespaced: /document-skills:pptx, /humanizer:humanizer. You rarely need the command, because the skill fires when you mention a deck, slides or a .pptx file. The humanizer plugin needs Claude Code 2.1.142 or later. If anthropic-agent-skills already appears in claude plugin marketplace list, skip the marketplace add line.

One command can target all three agents: --agent claude-code codex cursor writes the skill to .agents/skills/ and adds a symlink under .claude/skills/ for Claude Code (skills CLI 1.7.0, tested 2026-09-26). Commit skills-lock.json and the MIT-licensed humanizer folder so the team runs the same versions, but add .agents/skills/{docx,pdf,pptx,xlsx}/ to .gitignore: those four are proprietary, and committing them copies Anthropic’s files into your repository. Treat doc-coauthoring like the Office skills (gitignore it and restore it from the lock file) until Anthropic adds a licence file to it. Teammates restore everything from the lock file with npx skills experimental_install (“restore from skills-lock.json”, skills CLI 1.7.0). The CLI ends every install with “Review skills before use; they run with full agent permissions”; skill supply-chain security has the checklist, and installing and managing skills covers updates and removal.

How do you generate a PPTX release deck from a changelog?

Section titled “How do you generate a PPTX release deck from a changelog?”

The pptx skill builds a new deck by writing a pptxgenjs script, then checks the file three ways: a schema and structure validator, a text dump, and rendered slide images. The example turns the latest release in CHANGELOG.md into an eight-slide deck.

  1. Install the local dependencies. Anthropic’s sandbox has them preinstalled; your machine does not. In the terminal:

    Terminal window
    npm install --save-dev pptxgenjs # 4.0.1 on 2026-09-26
    python3 -m venv .venv && . .venv/bin/activate # keeps pip off the system Python
    pip install "markitdown[pptx]" defusedxml lxml Pillow
    # plus LibreOffice (soffice) and Poppler (pdftoppm) from your OS package manager

    Without LibreOffice and Poppler the deck still builds, but the agent cannot render slides to images, so visual QA is skipped.

  2. Give the agent a source of truth and a slide budget. Paste the prompt below into Claude Code, Codex or Cursor. It names the changelog section, the audience, the output path and the checks, so the agent cannot fill slides with invented features.

  3. Let the skill write and run the generator. Expect a script such as scripts/release-deck.js that sets pres.layout first, writes colours as six-digit hex without #, and puts speaker notes in slide.addNotes(). Those are three of the pptxgenjs traps the skill lists. The first two silently corrupt the file or push shapes off the slide; the third keeps notes out of the visible slide.

  4. Check the validator result. The skill runs its validator after every build. A clean run ends with:

    All validations PASSED!

    A failure names the part and the fix, for example a stacked chart with dataLabelPosition: 'outEnd', which PowerPoint refuses to open.

  5. Check the text against the changelog. markitdown docs/release/release-4.2.pptx prints one block per slide under a <!-- Slide number: N --> marker, with speaker notes under ### Notes:. Diff that text against the changelog section yourself or with the trace prompt below.

  6. Look at the rendered slides. The skill converts the deck to PDF with LibreOffice, then to one JPEG per slide with pdftoppm, and inspects each image for overflow, overlap and low contrast. Open two or three of the images yourself before the deck goes out.

The generator script is the real deliverable. Once it exists, the next release needs one command, node scripts/release-deck.js, and the agent only has to update the script when the changelog format changes. Review the script like any other code in the pull request.

How do you co-author an RFC with an agent, review it and publish it?

Section titled “How do you co-author an RFC with an agent, review it and publish it?”

A useful RFC depends on context that lives in your head, your tickets and old threads. doc-coauthoring makes the agent collect that context before it writes, and tests the draft on a reader who has none of it. The workflow below adds a style gate, a de-slop pass and a human sign-off, then publishes the document where your readers are.

  1. Start the co-authoring session with the prompt below. The skill offers its three-stage workflow and asks five meta questions: document type, primary audience, desired impact, template, constraints. Answer in shorthand. Then dump everything you know: the incident that triggered the RFC, rejected alternatives, deadlines, the people who will object. If the agent has a Slack, Google Drive or Linear MCP server, point it at the threads instead of pasting them.

  2. Answer the clarifying questions. The skill asks five to ten numbered questions about gaps, and you can reply with lines such as 3: no, backwards compat. It moves on when it can ask about trade-offs without needing the basics explained.

  3. Build the RFC section by section. The skill creates docs/rfcs/0042-sessions-kv-to-d1.md with a placeholder for every section, then works through the section with the most unknowns first. For each one it asks questions, brainstorms 5–20 candidate points, and lets you keep, remove or combine them by number before it drafts. Tell it what to change instead of editing the file yourself; it learns your preferences for the next section.

  4. Run reader testing. The skill predicts 5–10 questions a reader would ask, then answers them from the document alone. In Claude Code it does this with subagents that see only the document. In Codex and Cursor, or whenever the skill says it cannot spawn a subagent, run the test yourself in a fresh session with the reader-test prompt below. The exit condition is that the fresh reader answers correctly and surfaces no new ambiguities.

  5. Lint the prose. Ask for a writing-guidelines review of the RFC. It returns findings such as docs/rfcs/0042-sessions-kv-to-d1.md:31 - passive voice and edits nothing. Apply the findings your own style guide agrees with and discard the Vercel-specific ones (see traps).

  6. De-slop, then diff. Run humanizer on the file. In file mode it writes only the final text and leaves code blocks, inline code, commands, paths, YAML and link targets unchanged. Then run git diff --word-diff docs/rfcs/ and check that no number, name, date or claim changed. Humanizer checks for added or dropped claims itself, but the diff is your evidence.

  7. Open a pull request and get sign-off. The RFC goes through review like code: the author owns the content, named approvers (the tech lead and one owner of each affected system) approve, and objections are resolved in the PR thread. Record the decision in an architecture decision record once the RFC is accepted.

  8. Publish in the format your readers use. The Markdown file stays the source of truth. For readers outside the repository, ask the docx skill for a Word version with a table of contents, or the pdf skill for a PDF, and link the PR in the document so readers can see how it was developed.

To run the reader test from the terminal in a clean context, pass that prompt to claude -p --no-session-persistence or codex exec --ephemeral, so the test run is not saved as a session. Both start without your drafting conversation, though they still load the repository’s CLAUDE.md or AGENTS.md.

How do you verify a document the agent produced?

Section titled “How do you verify a document the agent produced?”

A generated document goes to people who make decisions from it, so treat it like a release artifact: it passes checks before a human reads it, and the human reads the evidence, not every line.

CheckWhat it catchesHow it runs
File validationA deck or document PowerPoint or Word refuses to openThe skill’s validator after every build; a failure blocks delivery
Source traceInvented features, numbers or datesA table mapping each slide bullet or RFC claim to a changelog line, ticket or file
Placeholder scanTODO, lorem, [insert…], template text left behindThe grep below, from the skill’s own QA section
Reader testGaps only the author can fillA fresh session answers reader questions from the document alone
Style lintHouse-style violationswriting-guidelines findings, or the same check against your own guide
Rewrite diffFacts changed during de-sloppinggit diff --word-diff after humanizer
Human sign-offA wrong decision, a missed stakeholderNamed approvers on the pull request

Run the placeholder scan on the text dump:

Terminal window
markitdown docs/release/release-4.2.pptx | grep -iE "\bx{3,}\b|lorem|ipsum|\bTODO|\[insert"

An empty result is the pass.

Who signs off. The author owns accuracy and the source trace, whoever typed the words; Vercel’s own writing guidelines say the same (“You are accountable for the content you produce, however it is created”). The tech lead approves RFCs that change architecture. For decks, the release owner approves after reading the trace table and opening the rendered slides. Attach both to the pull request as part of the evidence bundle.

What does each writing skill cost in context?

Section titled “What does each writing skill cost in context?”

Skills cost their name and description in every session and their body only when they fire. Measured on 2026-09-26. The first three rows come from claude plugin details document-skills@anthropic-agent-skills in Claude Code 2.1.283. The last three are the byte size of each file (wc -c), converted at roughly four bytes per token:

What loadsWhenSize
document-skills plugin (four skills)Every sessionabout 1,028 tokens
pptxWhen it firesabout 7.9k tokens
xlsx, pdf, docxWhen each firesabout 3k, 3k and 2.4k tokens
doc-coauthoring SKILL.mdWhen it firesabout 4k tokens (15,815 bytes)
humanizer SKILL.mdWhen it firesabout 8.1k tokens (32,348 bytes, v3.1.0)
writing-guidelines SKILL.md + the rules it fetchesWhen it firesabout 3.9k tokens (1,233 + 14,228 bytes)

Run claude plugin details document-skills@anthropic-agent-skills after the install to see your own numbers, and compare /context before and after adding portable skills.

The deck opens in LibreOffice but PowerPoint calls it corrupt. The pptx skill lists generator inputs that produce such files: a # or an alpha channel in a hex colour, a negative shadow offset, outEnd labels on a stacked chart, a secondary axis without both valAxes and catAxes. The validator reports the two chart faults; the colour and shadow rules are only in the skill’s instructions. Recovery: run the validator, fix the generator (not the packed XML), rebuild, and open the file in PowerPoint once before the first release.

Text overflows on the real deck but looked fine in QA. The skill’s visual check renders with LibreOffice, which substitutes fonts it does not have; Georgia, Trebuchet MS and Garamond render at different widths. Recovery: use the skill’s QA-safe fonts (Arial, Calibri, Cambria and a few others) for body text, and leave about 10% slack elsewhere.

The deck contains features that are not in the release. The model filled a thin changelog with plausible items. Recovery: require the trace table from the release-deck prompt, reject any bullet without a changelog line, and fix the changelog if the item is real.

The RFC reads well but answers nobody’s question. You skipped context gathering, so the agent wrote a generic proposal. Recovery: restart at stage one, answer the five meta questions, and run the reader test before anyone else reads it.

Humanizer changed a number. De-slopping merged two sentences and dropped a qualifier. Recovery: git diff --word-diff, restore the lost claim, and keep humanizer out of reference tables and changelogs, where the wording is the data.

writing-guidelines returns 60 findings on a short page. Most are Vercel house rules your docs never followed. Recovery: filter to the categories your style guide shares (voice, headings, links, banned words), or write your own review skill with building custom skills.

For the interview skill that pairs well with doc-coauthoring before a spec, see Matt Pocock’s skills, from grill-me to implement. For how plugins bundle and distribute skills like these, see plugins and marketplaces.