docx-processing-superdoc
GitHub用于通过SuperDoc CLI v1处理Word文档。支持读取、搜索、修改、添加评论及审查更改。提供状态化多步编辑和无状态一次性操作,强调使用query match定位目标及dry-run预览以确保安全。
Trigger Scenarios
Install
npx skills add lawve-ai/awesome-legal-skills --skill docx-processing-superdoc -g -y
SKILL.md
Frontmatter
{
"name": "docx-processing-superdoc",
"metadata": {
"author": "Superdoc",
"license": "AGPL-3.0",
"version": "2026.03.18"
},
"description": "Edit, query, and transform Word documents with the SuperDoc CLI v1 operation surface. Use when the user asks to read, search, modify, comment, or review changes in .docx files."
}
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(notfind) 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|closefor explicit session control. closeon dirty state requires--discardor a priorsave.
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--outunless using--dry-run.
Safety: preview before apply
- Use
--dry-runto 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 "..."orfind --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) orcomments 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 —--prettyis 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 pair | Available on |
|---|---|
--query-json / --query-file |
find, lists list |
--address-json / --address-file |
get-node, lists get |
--input-json / --input-file |
call, create paragraph |
--at-json / --at-file |
create 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
--prettyfor human-readable output (not supported bycall). - 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.
Version History
- 7f58aaf Current 2026-07-05 11:49


