mcpField
D
docx-processing-superdoc

docx-processing-superdoc

github.com/lawve-aiDocuments90786 installsUpdated 1w ago
Repository

About docx-processing-superdoc

A guide to using SuperDoc CLI v1 for reading and editing DOCX files. It describes stateful and one-off workflows, document inspection, formatting, comments, tracked changes, and safeguards such as dry runs.

Key features

  1. 01Inspect and search document content
  2. 02Replace, insert, and delete content
  3. 03Apply text formatting and manage lists
  4. 04Read and manage comments
  5. 05Review tracked changes and history
  6. 06Preview edits and check revisions

Use cases

  1. 01Find and revise specific contract text
  2. 02Make controlled edits to DOCX files
  3. 03Review comments and tracked changes
  4. 04Automate document updates with CLI commands

Install

Copy the command and run it in a terminal.

$npx skills add https://github.com/lawve-ai/awesome-legal-skills --skill docx-processing-superdoc

After installing, type/docx-processing-superdocin Claude Code to confirm it loaded.

Bundled filesLICENSE.txtREADME.md

Details

From the project README

SuperDoc CLI (v1)

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.

First Step: Discover Exact Params

For unknown commands or flags, inspect runtime metadata first:

superdoc describe
superdoc describe command find
superdoc describe command "comments add"

Use describe command for per-command args and constraints.

Preferred Workflows

1) Stateful multi-step edits (recommended)
superdoc open ./contract.docx
superdoc query match --select-json '{"type":"text","pattern":"termination"}' --require exactlyOne
superdoc replace --target-json '{"kind":"text","blockId":"p1","range":{"start":0,"end":11}}' --text "expiration"
superdoc save --in-place
superdoc close
  • Always use query match (not find) to discover mutation targets — it returns exact addresses with cardinality guarantees.
  • After open, commands run against the active/default session when <doc> is omitted.
  • Use superdoc session list|set-default|save|close for explicit session control.
  • close on dirty state requires --discard or a prior save.
2) Stateless one-off reads
superdoc get-text ./proposal.docx
superdoc get-markdown ./proposal.docx
superdoc info ./proposal.docx
3) Stateless one-off mutations
superdoc replace ./proposal.docx \
  --target-json '{"kind":"text","blockId":"p1","range":{"start":0,"end":5}}' \
  --text "Updated" \
  --out ./proposal.updated.docx
  • In stateless mode (<doc> provided), mutating commands require --out unless using --dry-run.
Safety: preview before apply
  • Use --dry-run to preview any mutation without applying it.
  • Use --expected-revision <n> with stateful mutations for optimistic concurrency checks.

Common v1 Commands

Query & inspect
  • Search/browse content: find --type text --pattern "..." or find --query-json '{...}'
  • Find mutation target: query match --select-json '{...}' --require exactlyOne
  • Inspect blocks: blocks list, get-node, get-node-by-id
  • Extract content: get-text, get-markdown, get-html
Mutate
  • Replace text: replace --target-json '{...}' --text "..."
  • Insert inline text: insert --block-id <id> --offset <n> --value "..."
  • Delete text/node: delete --target-json '{...}'
  • Delete blocks: blocks delete, blocks delete-range
  • Batch mutations: mutations apply --steps-json '[...]' --atomic true --change-mode direct
  • Create paragraph: create paragraph --text "..." (with optional --at-json)
  • Create heading: create heading --input-json '{"level":<n>,"text":"..."}'
Format
  • Apply formatting: format apply --block-id <id> --start <n> --end <n> --inline-json '{"bold":true}'
  • Shortcuts: format bold, format italic, format underline, format strikethrough
Lists
  • List items: lists list, lists get
  • Insert list item: lists insert --node-id <id> --position after --text "..."
  • Modify: lists indent, lists outdent, lists set-level, lists set-type, lists convert-to-text
Comments
  • Add/reply: comments add, comments reply
  • Read: comments get, comments list
  • Edit/resolve/move: comments edit, comments resolve, comments move, comments set-internal
  • Delete: comments delete (canonical) or comments remove (alias)
Track changes
  • List: track-changes list, track-changes get
  • Decide: track-changes accept, track-changes reject, track-changes accept-all, track-changes reject-all
History
  • history get, history undo, history redo
Low-level
  • Direct invoke: call <operationId> --input-json '{...}' (JSON output only — --pretty is not supported)

JSON/File Payload Flags

Not all --*-file variants are available on every command. Use describe command <name> to check.

Always supported alongside their -json counterpart (use one, not both):

Flag pairAvailable on
--query-json / --query-filefind, lists list
--address-json / --address-fileget-node, lists get
--input-json / --input-filecall, create paragraph
--at-json / --at-filecreate paragraph

--target-json is widely available on mutation commands but has no --target-file counterpart. Use flat flags (--block-id, --start, --end) as an alternative to --target-json.

Output and Global Flags

  • Default output is JSON envelope.
  • Use --pretty for human-readable output (not supported by call).
  • Global flags: --output <json|pretty>, --session <id>, --timeout-ms <n>.
  • <doc> can be - to read DOCX bytes from stdin.

Legacy Compatibility (Use Sparingly)

Legacy v0.x bridge commands still exist:

superdoc search <pattern> <files...>
superdoc replace-legacy <find> <to> <files...>
superdoc read <file>

Use these only when you specifically need v0-style behavior (especially multi-file glob search/replace). For new automations, prefer v1 operations.

Comments

Markdown supported