Docx review
Give an executive a team of AI digital employees, run as Claude Code skills — research analyst, strategic advisor, comms expert, ops powerhouse, chief of staff — all grounded in a living, interlinked context wiki that compounds what it learns about you.
npx -y skills add ggoosen/Digital-Workforce --skill docx-reviewAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
2 things to look at
- 19 days oldThe repository was created 19 days ago. New is not bad, but a brand new repository carrying a familiar-sounding name is the shape a typosquat arrives in, and there has been no time for anyone else to find a problem with it.
- 0 stars0 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
What its author says it does
Copied from the file, not written here
Review and mark up a Microsoft Word (.docx) document the way a human reviewer does, with real Word comments, threaded replies, and tracked changes. Use whenever you are asked to review / comment on / redline / mark up a .docx, or to reply to someone's comments in a Word doc. Stamps comments with the ACTUAL time, registers the author so replies thread, and always emits a markdown mirror. Voice triggers: "review this doc", "comment on", "redline", "mark up", "reply to the comments", "Word review".
SKILL.md
5.8 KB, ~1.4k tokens by cl100k_base, as published. Nobody here has run it
Word document review and commenting
Most professionals review and redline in Microsoft Word. When you mark up a doc, produce a
real Word file with native comments/tracked-changes, not a markdown summary. This skill is the
canonical procedure. The engine is integrations/docx/docx_comments.py (use it, do NOT
write a new per-doc build_*_review.py).
The non-negotiable rules
- Timestamp = the real time. Always. A Word comment's
w:datemust be a full ISO-8601 datetime in UTC, e.g.2026-06-24T11:41:00Z. NEVER a date-only string (Word renders a date with no time as 00:00 / midnight, which is the bug we are fixing) and NEVER a hardcoded placeholder likeT09:00:00Z. The helper defaultsw:datetodatetime.now(timezone.utc), so just let it stamp the real moment. Only pass--whento reproduce a known timestamp, and it must include aThh:mm:ss (the helper rejects date-only input). - Register the author in
word/people.xml. Word silently refuses to THREAD a reply whose author is not registered. The helper writes the<w15:person>entry with apresenceInfouserId automatically. - Author as the user, first person. Comments speak in the user's voice — match the tone
and phrasing captured in
context/writing-style.md. - Always emit a markdown mirror (
--record OUT.md). The user can transpose it by hand if they cannot open the Word file. The deliverable is BOTH the .docx and the .md record. - Reconcile against the latest meeting/transcript before finalising. The user's spoken decisions OVERRIDE anything you drafted. Pull the most recent relevant transcript and update the comments to their actual position.
When marking up a doc that already has comments
- Thread replies, do not dump standalone bubbles. If your point ANSWERS an existing comment (or a tag directed at the user), make it a threaded reply under that comment. Only genuinely new points (no existing comment) are standalone.
- The threading round-trip (this is the part that bites). Word regenerates any hand-injected
w14:paraIdon open/save, which orphans yourw15:paraIdParent, so a one-shot injected reply never threads. The reliable flow:- Inject the reply as a standalone comment (any paraId) with the helper.
- Have the user open the doc and Cmd+S once (Word stamps native paraIds).
- Re-read the saved file, find the reply's now-native paraId and the parent comment's
paraId, and set
w15:paraIdParentincommentsExtended.xmlto link them.
- Pre-existing parent comments keep their paraIds through saves; only injected ones get re-stamped. Standalone comments need no round-trip. Verify by reading the thread map (comment id -> paraIdParent -> parent author).
- Tracked changes (
w:ins/w:delwithw:author+ realw:date) survive saves fine.
How to run it
# comments.json: a list of {anchor, text} (+ optional tracked_insert)
python3 integrations/docx/docx_comments.py SRC.docx OUT.docx comments.json \
--author "Your Name" --initials YN --email [email protected] \
--record OUT.md
# --when is OMITTED on purpose: the helper stamps the real current UTC time.
comments.json schema:
[
{"anchor": "verbatim substring to attach the comment to", "text": "the comment body"},
{"anchor": "...", "text": "...", "tracked_insert": "inline tracked text to append to that para"},
{"anchor": "...", "insert_blocks": [
{"h": "Heading text", "level": 3},
{"p": "paragraph with **bold** spans"},
{"li": "bullet item"},
{"table": {"header": ["A", "B"], "rows": [["1", "2"]]}}
]}
]
insert_blocks inserts whole tracked paragraphs/headings/bullets/tables AFTER the anchor
paragraph. Use it to FILL OUT a request/response doc as tracked insertions. Table rows carry
w:trPr/w:ins (Word's tracked-row-insert) so accept-all keeps them and reject-all removes
the whole table. Items are processed in order, so a later comment can anchor on text inserted
by an earlier item. Caveat: pandoc's --track-changes=reject does not honour row-level marks
(leaves empty grids); trust Word, and verify content with --track-changes=accept.
Or call it as a library: from integrations.docx.docx_comments import add_comments.
Finalizing: integrations/docx/docx_finalize.py SRC.docx OUT.docx [--stamp-after "marker" --stamp " - FINAL"]
accepts every tracked insertion, strips all comments (anchors + parts) and optionally stamps a
version suffix — use it to produce the clean recipient copy from the tracked working doc.
The helper: creates the comment parts when missing AND normalises pandoc's empty self-closing
comments.xml (adds the w14 namespace); wires comments.xml + commentsExtended.xml +
commentsIds.xml + content-types + rels + people.xml; verifies the output re-opens and counts
the comments; reports any anchors it could not find (fix those, do not ship a silent miss).
Output location & packaging
- Working/source format is markdown; the deliverable is the .docx.
- Put review outputs under
outputs/by subject. When sending a set, bundle a single numbered zip (0 = the map/overview, then the docs). - Structural visuals must be images (Draw.IO / SVG->PNG), never ASCII trees or tables (they render badly in Word).
What ships with it
Read from the repository
Just SKILL.md. No reference files, no scripts.