Edit, query, and transform Word documents (.docx) with the SuperDoc CLI. Use when the user asks to read, search, modify, format, comment, track changes, or review changes in .docx files. Triggers on any task involving Word documents — text replacement, redlining, contract markup, template filling, bulk edits, content extraction, or document review.
npx skills add https://github.com/lawve-ai/awesome-legal-skills --skill Word Editor
Use SuperDoc CLI for DOCX work. Use v1 commands (canonical operations and their helper wrappers).
Do not default to legacy commands unless explicitly needed for v0-style bulk workflows.
Use superdoc if installed, or npx @superdoc-dev/cli@latest as a fallback.
Before starting any edit workflow, check if running inside VS Code by testing VSCODE_PID. If set, open the target document so the user sees changes live:
if [ -n "$VSCODE_PID" ]; then
for cmd in code code-insiders cursor; do
if command -v "$cmd" > /dev/null 2>&1; then "$cmd" "$DOC_PATH"; break; fi
done
fi
VSCODE_PID is set by VS Code itself — works for any agent extension (Claude Code, Codex, Cline, etc.) and the integrated terminal.Before opening a document for editing, ask the user under which name tracked changes should be attributed:
Use the chosen name in --user-name on open. Convention for email: <name>@lawvable.com.
Always use --tracked on every mutating command unless the user explicitly asks for direct edits.
--tracked is shorthand for --change-mode tracked.TRACK_CHANGE_COMMAND_UNAVAILABLE, fall back to direct edit for that command only.The CLI and the VS Code SuperDoc extension run separate engines — the only sync point is the file on disk.
Call superdoc save after every mutation so changes appear live.
save immediately.save once after the group.save to end of session.Read references/index.md first — it lists all reference files by topic. Then read only the relevant file for your task (e.g., references/track-changes.md for accepting/rejecting changes, references/mutations-apply.md for batch find-and-replace).
Do NOT read all reference files at once — pick only what you need.
For commands not covered in any reference file, use superdoc describe command "<name>" as fallback.
Use mutations apply with text.rewrite + require: "all". Do NOT manually find → parse → build steps.
superdoc open ./contract.docx --user-name "Claude" --user-email "[email protected]"
superdoc mutations apply --atomic true --change-mode tracked --steps-json '[
{"id":"s1","op":"text.rewrite",
"where":{"by":"select","select":{"type":"text","pattern":"Lawvable"},"require":"all"},
"args":{"replacement":{"text":"Google"}}}
]'
superdoc save
superdoc close
require: "all" → every match. "first" → first only. "exactlyOne" → fails if != 1.steps array (see references/commands.md).Use query match (not find) to locate a target, then replace:
superdoc open ./contract.docx --user-name "Claude" --user-email "[email protected]"
superdoc query match --select-json '{"type":"text","pattern":"termination"}' --require exactlyOne
superdoc replace --tracked --target-json '{"kind":"text","blockId":"p1","range":{"start":0,"end":11}}' --text "expiration"
superdoc save
superdoc close
query match returns exact addresses with cardinality guarantees. find does not — use it only for exploration.open, commands run against the active session when <doc> is omitted.superdoc open ./contract.docx --user-name "Claude" --user-email "[email protected]"
superdoc query match --select-json '{"type":"text","pattern":"ACME Corp"}' --require exactlyOne
superdoc replace --tracked --target-json '{"kind":"text","blockId":"p2","range":{"start":0,"end":9}}' --text "NewCo Inc."
superdoc format bold --tracked --block-id p2 --start 0 --end 10
superdoc save
superdoc close
superdoc get-text ./proposal.docx
superdoc get-markdown ./proposal.docx
superdoc info ./proposal.docx
superdoc replace --tracked ./proposal.docx \
--target-json '{"kind":"text","blockId":"p1","range":{"start":0,"end":5}}' \
--text "Updated" --out ./proposal.updated.docx
Stateless mutating commands require --out unless using --dry-run.
--dry-run to preview any mutation without applying.--expected-revision <n> for optimistic concurrency checks.[super-editor] Telemetry: enabled. Use 2>/dev/null when piping JSON. Prefer declarative selectors (mutations apply) over find | parse pipelines.search, replace-legacy, read) exist for v0 compatibility. Use only for multi-file glob workflows.close on dirty state requires --discard or a prior save.Comprehensive document creation, editing, and analysis with support for tracked changes, comments, formatting preservation, and text extraction. When Claude needs to work with professional documents (.docx files) for: (1) Creating new documents, (2) Modifying or editing content, (3) Working with tracked changes, (4) Adding comments, or any other document tasks
Comprehensive PDF manipulation toolkit for extracting text and tables, creating new PDFs, merging/splitting documents, and handling forms. When Claude needs to fill in a PDF form or programmatically process, generate, or analyze PDF documents at scale.
Presentation creation, editing, and analysis. When Claude needs to work with presentations (.pptx files) for: (1) Creating new presentations, (2) Modifying or editing content, (3) Working with layouts, (4) Adding comments or speaker notes, or any other presentation tasks
Create beautiful visual art in .png and .pdf documents using design philosophy. You should use this skill when the user asks to create a poster, piece of art, design, or other static piece. Create original visual designs, never copying existing artists' work to avoid copyright violations.
Use this skill whenever the user wants to do anything with PDF files. This includes reading or extracting text/tables from PDFs, combining or merging multiple PDFs into one, splitting PDFs apart, rotating pages, adding watermarks, creating new PDFs, filling PDF forms, encrypting/decrypting PDFs, extracting images, and OCR on scanned PDFs to make them searchable. If the user mentions a .pdf file or asks to produce one, use this skill.
Use this skill whenever the user wants to create, read, edit, or manipulate Word documents (.docx files). Triggers include: any mention of 'Word doc', 'word document', '.docx', or requests to produce professional documents with formatting like tables of contents, headings, page numbers, or letterheads. Also use when extracting or reorganizing content from .docx files, inserting or replacing images in documents, performing find-and-replace in Word files, working with tracked changes or comments, or converting content into a polished Word document. If the user asks for a 'report', 'memo', 'letter', 'template', or similar deliverable as a Word or .docx file, use this skill. Do NOT use for PDFs, spreadsheets, Google Docs, or general coding tasks unrelated to document generation.
Use this skill any time a .pptx file is involved in any way — as input, output, or both. This includes: creating slide decks, pitch decks, or presentations; reading, parsing, or extracting text from any .pptx file (even if the extracted content will be used elsewhere, like in an email or summary); editing, modifying, or updating existing presentations; combining or splitting slide files; working with templates, layouts, speaker notes, or comments. Trigger whenever the user mentions \"deck,\" \"slides,\" \"presentation,\" or references a .pptx filename, regardless of what they plan to do with the content afterward. If a .pptx file needs to be opened, created, or touched, use this skill.
Create and edit Obsidian Flavored Markdown with wikilinks, embeds, callouts, properties, and other Obsidian-specific syntax. Use when working with .md files in Obsidian, or when the user mentions wikilinks, callouts, frontmatter, tags, embeds, or Obsidian notes.
Take lawve-ai/word editor from the repository into ~/.claude/skills for personal
use, or into .claude/skills inside a project.
The agent identifies a skill by the name field in its header. Two skills with the
same name cannot sit side by side — one of them will be ignored.
The instructions reference npx.
Without those the skill loads but fails at the first command.