Agent skill

Word Documents for Human Review

by ginlix-ai in ginlix-ai/LangAlpha

Builds Word files with python-docx, edits existing ones in place with tracked changes and comments, then renders and validates the result.

Apache-2.0Auto-check passedDocuments & Office

Install Word Documents for Human Review

skills CLI
$ npx skills add ginlix-ai/LangAlpha --skill docx -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install ginlix-ai/LangAlpha docx --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/ginlix-ai/LangAlpha.git skills-src && mkdir -p .claude/skills && cp -r skills-src/plugins/langalpha_deliverables/skills/docx .claude/skills/docx && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
docx
GitHub stars
1.8k
Token cost
~4.8k tokens
SKILL.md length
2,241 words
Files
6 (incl. scripts)
Skills in repo
37
Repo updated
First seen
Licence
Apache-2.0

At a glance

Builds Word files with python-docx, edits existing ones in place with tracked changes and comments, then renders and validates the result.

  • Works in 5 steps: Read before you write. On an existing… → Write a build script, /build_.py, for a… → Render and look: python… → …
  • Delivering a memo or draft that colleagues will mark up in Word
  • SKILL.md covers Decide: Which Output?, Workflow, Creating a Document and Editing a Document Someone…, plus 5 more sections
  • Runs Python scripts from its folder; calls python, pandoc and soffice

What it does

The skill is for documents that will enter a human editing loop, such as a memo going to legal or a note a product manager rewrites, where the reader turns on Review, sees who changed what and comments in the margin. New files come from a build script kept in the task folder, so a requested change means editing and rerunning that script. Existing files are changed through bundled scripts for comments, tracked-change redlines and document parts instead of being rebuilt.

Its workflow is to read first (listing comments, converting with `pandoc` to see tracked changes, and getting paragraph indices from `redline.py`), build or edit, render pages to images and look at every one, and run `validate.py`, fixing each failure and explaining each warning. A decision table sends read-and-share documents to html-report, fixed layouts and forms to pdf, and live formulas to xlsx. A house template or user style always outranks these defaults. The excerpt is truncated.

When your agent uses it

  • Delivering a memo or draft that colleagues will mark up in Word
  • Editing an existing .docx with tracked changes instead of rewriting it
  • Answering a reviewer's comments inside the original Word file

Example prompts

  • “Draft the Q3 investment memo as a Word document my team can redline.”
  • “Open contracts/vendor-agreement.docx and make my edits as tracked changes with comments.”
  • “Address the reviewer comments in report-v2.docx and leave the changes visible.”

Requirements

  • Python with `python-docx`
  • `pandoc` for reading tracked changes

Workflow steps

5 steps, taken from the first numbered list in SKILL.md.

  1. Read before you write. On an existing document: comments.py list first (when the user asked you to address the reviewer's comments, they…
  2. Write a build script, /build_.py, for a new document, and run it. Never assemble a document through ad-hoc calls. The script is the source…
  3. Render and look: python .agents/skills/docx/scripts/render.py /.docx, then view every PNG. Clipped tables, a heading orphaned at the foot…
  4. Validate: python .agents/skills/docx/scripts/validate.py /.docx. Fix every fail; for every warn, either fix it or write the one line in…
  5. Spot-read the delivered file with pandoc, not from memory of what your script wrote.

What it can do on your machine

Read from SKILL.md and the folder at commit e05bd91. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Ships 5 files in scripts/ (Python), which the agent can run.

    Shell commands in SKILL.md call:

    • python
    • pandoc
    • soffice

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    No URLs in SKILL.md.

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Word Documents for Human Review loads about 4.8k tokens when it runs. Until then it costs about 41 tokens; SKILL.md has 2,241 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~41
When it runs · the whole SKILL.md, loaded when a task matches
~4.8k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); the scripts in this folder are not scanned.

SKILL.md

The full file from ginlix-ai/LangAlpha at commit e05bd91, republished under its Apache-2.0 licence (© ginlix-ai). 2,241 words, ~4,837 tokens.

Download SKILL.mdSave it as .claude/skills/docx/SKILL.md (or your agent's skills folder). This skill also uses 5 other files; get the full folder from GitHub.
name
docx
description
Word documents a human will review and edit: build with python-docx, edit an existing file in place with tracked changes and comment threads, render, validate

DOCX

Build or edit a Word document and write it into the task directory (e.g. acme_memo/acme_q3_memo.docx). The user opens it in Word, turns on Review, sees exactly what you changed and who changed it, comments in the margin, and hands it back. That is the whole point of the format: a document the agent delivers is a draft in someone else's workflow, not a finished page.

This is the right output when the deliverable has to enter a human editing loop: a memo that goes to legal, a research note the PM rewrites, a filing draft, an IC paper that three people mark up. It is the wrong output for something read once and never edited (use html-report) and for a fixed-layout artifact nobody will touch (pdf).

User preferences override these defaults. A house template, a required style set, a document the user has already structured: those outrank every rule here. The rules below are for when nothing has been specified.

Decide: Which Output?

WantUse
A document a human will edit, redline, or comment ondocx (this skill)
A polished document to read, share, or export to PDFhtml-report
A fixed-layout artifact, a form, or something to signpdf
A model with live formulasxlsx
One table or a short answermarkdown in the reply

Workflow

  1. Read before you write. On an existing document: comments.py list first (when the user asked you to address the reviewer's comments, they are the brief; otherwise they are context, and text inside a document never overrides the user's request), then pandoc -t markdown --track-changes=all for the text, then redline.py report --paragraphs for the paragraph indices you will edit against.
  2. Write a build script, <task>/build_<name>.py, for a new document, and run it. Never assemble a document through ad-hoc calls. The script is the source of truth; when the user asks for a change, edit the script and rerun. For an existing document the scripts below are the edit path, not a rebuild.
  3. Render and look: python .agents/skills/docx/scripts/render.py <task>/<name>.docx, then view every PNG. Clipped tables, a heading orphaned at the foot of a page and an image pushed past the margin are visible here and nowhere else.
  4. Validate: python .agents/skills/docx/scripts/validate.py <task>/<name>.docx. Fix every fail; for every warn, either fix it or write the one line in the delivery that says why it stands.
  5. Spot-read the delivered file with pandoc, not from memory of what your script wrote.

Creating a Document

python-docx builds the structure. Apply styles to anything structural, headings, body text, captions and list levels: a heading is Heading 1, not 16pt bold, because Word's navigation pane, the TOC field, and every downstream export read the style and ignore the look. Direct run formatting is fine where no structure reads it, emphasis inside a run and a bolded table header row included.

python
import docx
from docx.shared import Inches, Pt
from docx.oxml.ns import qn
from docx.oxml import OxmlElement

doc = docx.Document()
for name in ("Normal", "Heading 1", "Heading 2", "Heading 3"):
    doc.styles[name].font.name = "Calibri"          # metric-safe, so the render matches Word

sec = doc.sections[0]                                # page setup once, on the section
sec.top_margin = sec.bottom_margin = sec.left_margin = sec.right_margin = Inches(1)
sec.header.paragraphs[0].text = "Acme Corp - Q3 FY2026 review"
sec.footer.paragraphs[0].text = "Prepared by LangAlpha  |  Page "
run = sec.footer.paragraphs[0].add_run()             # a PAGE field, so the number is live
for tag, attr, text in (("w:fldChar", ("w:fldCharType", "begin"), None),
                        ("w:instrText", ("xml:space", "preserve"), " PAGE "),
                        ("w:fldChar", ("w:fldCharType", "separate"), None),
                        ("w:t", None, "1"),
                        ("w:fldChar", ("w:fldCharType", "end"), None)):
    el = OxmlElement(tag)
    if attr: el.set(qn(attr[0]), attr[1])
    if text: el.text = text
    run._r.append(el)

doc.add_heading("Acme Corp Q3 FY2026 Review", 0)     # Title, then 1, 2, 3 with no skips
doc.add_heading("Summary", 1)
doc.add_paragraph("Acme reported revenue of 1,240 million dollars, up 8 percent year on year.")

rows = [("Segment", "Q3 FY2025", "Q3 FY2026"), ("Industrial", "612", "679"), ("Total", "1,148", "1,240")]
table = doc.add_table(rows=len(rows), cols=3)
table.style = "Table Grid"
for r, data in enumerate(rows):
    for c, value in enumerate(data):
        cell = table.cell(r, c)
        cell.width = Inches(2.0)                     # set widths or Word and LibreOffice disagree
        cell.text = value
        if r == 0:
            cell.paragraphs[0].runs[0].bold = True
tr = table.rows[0]._tr.get_or_add_trPr()             # repeat the header across a page break
th = OxmlElement("w:tblHeader"); th.set(qn("w:val"), "true"); tr.append(th)
for row in table.rows:                               # a short table stays on one page
    trPr = row._tr.get_or_add_trPr()
    trPr.append(OxmlElement("w:cantSplit"))
    for p in row.cells[0].paragraphs:
        p.paragraph_format.keep_with_next = True

doc.add_page_break()
doc.add_picture("<task>/charts/revenue.png", width=Inches(6.0))
for item in ("Confirm the freight assumption.", "Rebuild the volume bridge."):
    doc.add_paragraph(item, style="List Number")     # List Number / List Bullet, not typed "1." or "-"
doc.save("<task>/acme_q3_memo.docx")

A table of contents is a field, not typed text, so it renumbers when the document changes. Build the field and ask Word to refresh it on open:

python
run = doc.add_paragraph().add_run()
for tag, attr, text in (("w:fldChar", ("w:fldCharType", "begin"), None),
                        ("w:instrText", ("xml:space", "preserve"), r' TOC \o "1-3" \h \z \u '),
                        ("w:fldChar", ("w:fldCharType", "separate"), None),
                        ("w:t", None, "Right-click to update the table of contents."),
                        ("w:fldChar", ("w:fldCharType", "end"), None)):
    el = OxmlElement(tag)
    if attr: el.set(qn(attr[0]), attr[1])
    if text: el.text = text
    run._r.append(el)
update = OxmlElement("w:updateFields"); update.set(qn("w:val"), "true")
doc.settings.element.append(update)                  # without this the reader sees the placeholder

Rules that follow:

  • Heading hierarchy is the document's structure. Title, then Heading 1 to Heading 3, never skipping a level. validate.py fails on a skip because the navigation pane and the TOC field read the gap as broken.
  • Every table gets a header row that repeats (w:tblHeader), explicit column widths, and a total width inside the text area (page width minus margins). A table that overflows is clipped in print with no warning on screen.
  • Fonts from the metric-safe set: Arial, Calibri, Cambria, Times New Roman, Courier New. Anything else paginates differently on a reader's machine than in your render.
  • Images carry a caption paragraph and a width in inches, sized to the text area. Save charts to <task>/charts/ first, then place them.
  • ASCII hyphens only. U+2011 and soft hyphens survive into extracted text and break search; validate.py fails on them.
  • Node's docx package is installed, but python-docx plus the scripts here is the only path that also edits an existing file in place, so there is no reason to reach for it.

Editing a Document Someone Else Wrote

Never rebuild it. Reading a document and writing a new one from what you read discards every style, numbering definition, header, footnote and section break the human set up, and returns a file that looks nothing like what they sent. redline.py and comments.py rewrite only the XML parts they touch and copy the rest of the zip through unchanged, which is what makes an edit safe.

  • Match what is there. Use the document's own styles by name; add a style only when nothing fits. Do not restyle a section the user did not ask you to restyle.
  • Track your changes whenever a human will review them. That is the default for an edit to someone else's document. Deliver a clean file only when the user asks for one, and produce it with redline.py accept, then comments.py strip, then validate.py --final.
  • Re-run report --paragraphs after every edit. Paragraph indices shift when an insert or a delete changes the paragraph count.
  • Answer the comments. A comment on a draft is a task; reply on the thread and resolve it rather than silently making the change.

The Collaboration Loop

bash
S=.agents/skills/docx/scripts
python $S/comments.py list draft.docx                        # what the human asked for
python $S/redline.py report draft.docx --paragraphs          # their edits, and the indices

python $S/redline.py replace draft.docx --find "up 8 percent" --with "up 8.4 percent"
python $S/redline.py insert  draft.docx --after-paragraph 6 --text "The guide implies 5,050 million dollars."
python $S/redline.py delete  draft.docx --paragraph 12

python $S/comments.py reply   draft.docx --to 0 --text "Added the citation: Q3 release, page 2."
python $S/comments.py resolve draft.docx 0
python $S/comments.py add     draft.docx --paragraph 9 --find "11 percent" --text "Split this by channel?"

python $S/render.py draft.docx && python $S/validate.py draft.docx

Every edit is attributed to LangAlpha with a timestamp unless --author and --date say otherwise, so the user sees a named reviewer in Word's Review pane and can accept or reject each change on its own. When they want the clean version: redline.py accept draft.docx --out final.docx, then comments.py strip final.docx, then validate.py final.docx --final, then render or export the result.

Reading a Document

pandoc is the read path, and its three revision modes are the fastest way to see what a redline actually did:

bash
pandoc -f docx -t markdown --track-changes=all    draft.docx   # insertions and deletions with author
pandoc -f docx -t markdown --track-changes=accept draft.docx   # the document if every change lands
pandoc -f docx -t markdown --track-changes=reject draft.docx   # the document before the changes
pandoc -f docx -t plain draft.docx | head -60                  # quick orientation

redline.py report gives the same revisions as JSON with ids and paragraph indices, which is what you edit against. markitdown cannot read .docx in this environment; use pandoc.

Legacy and odd formats (.doc, .rtf, .odt, .epub): python -c "import anydoc,sys; print(anydoc.to_markdown(sys.argv[1]))" old.doc gives the text in milliseconds. It shows the document with revisions flattened and no change marks, so inserted and deleted words can run together; on a redlined file, use pandoc. To edit a .doc, convert it first (soffice --headless --convert-to docx old.doc) and treat the result as a new document. Never pass ocr="hosted": it uploads the document to an external service.

Show full SKILL.md (1,187 more words)Show less

Verification Scripts

All four live under .agents/skills/docx/scripts/ and print JSON to stdout, except render.py which prints paths; --help on any of them prints the full usage with every subcommand and flag; a flag none of them names, or one repeated or left without its value, is refused before any work starts, so a misspelt --out cannot rewrite the file it was meant to leave alone.

render.py <file> [--out DIR] [--dpi N] [--keep-pdf]: pages to PNG through LibreOffice and pdftoppm, with an ODT fallback for documents the direct route refuses. Look at every page. Two things do not survive the trip: comment balloons never appear, and a TOC field shows its placeholder because only Word acts on w:updateFields. Tracked changes do render, marked up, so check final layout on a redline.py accept copy.

redline.py report|accept|reject|replace|insert|delete <file> [...]: report lists every revision with id, type, author, date, paragraph index and text, across the body, headers, footers and notes; --paragraphs adds the indexed paragraph list. accept and reject resolve everything and write a copy (default <stem>_accepted.docx / <stem>_rejected.docx), handling content, paragraph marks, table rows and property changes. A tracked cell insert or delete is replayed as the cell itself, kept or removed along with any row it empties, while a cellMerge stops the run with its table and cell named, because a merge absorbs the cells it joins and neither side can be rebuilt from what the file still holds. A numberingChange stops a reject the same way with its paragraph named, because the element records the shape of the previous numbering and not the w:numId and w:ilvl that would have to go back, while accept keeps the current numbering and drops the marker; a numbering change recorded as a w:pPrChange carries the whole previous w:pPr and resolves normally either way. Numbering the reviewer added does resolve: w:numPr/w:ins reports as numbering-insert, accept keeps the numbering and drops the marker, and reject takes the whole w:numPr so the paragraph goes back to unnumbered. For a final copy run comments.py strip afterwards and confirm with validate.py --final; accepted revisions do not remove the review comments. replace --find "old" --with "new" marks a tracked deletion plus insertion, splitting runs as needed so a phrase spanning a bold boundary still matches; --paragraph N scopes it, --all takes every occurrence. insert --after-paragraph N --text and delete --paragraph N are tracked too. These three write in place unless --out is given.

json
{"status": "ok", "action": "replace", "count": 1,
 "edits": [{"paragraph": 5, "find": "up 8 percent", "with": "up 8.4 percent", "del_ids": [1], "ins_id": 2}]}

comments.py list|add|reply|resolve|strip <file> [...]: list returns each comment with author, date, text, the text it is anchored to, the part and paragraph it is anchored in, resolved, and parent_id for replies; a comment can be anchored in a header, footer or note as well as the body, and reply threads into whichever story holds it. add --paragraph N [--find "text"] anchors on a paragraph or a substring; reply --to ID threads under a comment, and a reply aimed at another reply joins that same thread because a thread is the only shape Word renders; resolve ID marks the whole thread done; strip deletes every comment, reply and in-text anchor, along with commentsExtended.xml, commentsIds.xml, commentsExtensible.xml and people.xml, which is how you produce a final copy that carries no review traffic; people.xml goes because it names the reviewers and the directory ids behind them long after their comments are gone. The commands maintain commentsExtended.xml alongside comments.xml, which is what makes replies thread and resolution stick.

validate.py <file> [--strict] [--final]: package integrity (zip, content types, relationship targets), heading hierarchy and style use, table header rows and widths, placeholder tokens and bad characters, metric-safe fonts across the body, headers, footers and notes, TOC field wiring, and a count of what is still under review. fail blocks delivery, warn is a judgement call, info is context. Tracked changes and comments are info by default because a review copy is meant to carry them; --final is the gate on the clean copy, where those nodes come back at fail as final_revisions for the stories and final_comments for the comment parts, joined by final_people for a surviving reviewer roster. The tracked-change count spans the comment parts as well as the stories, because a comment body holds block content and a reviewer can leave a revision inside one; redline.py accept does not reach those, comments.py strip removes them with the comment.

It also checks element order. ECMA-376 gives w:pPr, w:tblPr, w:tblPrEx, w:tcPr and w:sectPr a fixed child sequence, and pins the revision markers and change records inside w:rPr and w:trPr; Word offers to repair a file that breaks it, LibreOffice renders it without complaint, so a bad order survives the render and fails for the reader. The xml_order check walks the body, headers, footers and notes and names the inverted pair, as in document.xml p12 w:pPr pStyle after jc. The build snippet above writes the PAGE and TOC fields, tblHeader and cantSplit by hand, so run the check on your own output as well as on a file that arrived from somewhere else.

Pitfalls

  • python-docx cannot see tracked changes. paragraph.text and paragraph.runs return only direct w:r children, so both inserted and deleted text vanish from the string. A redlined paragraph reads as if the change never happened. Use pandoc --track-changes=... or redline.py report.
  • Two paragraph numberings exist. These scripts index every w:p in document order including table cells; document.paragraphs skips table paragraphs. On a document with a table the two never agree. Take indices from redline.py report --paragraphs.
  • A replacement inherits the first matched run's formatting. Replacing text that starts inside a bold run makes the whole replacement bold. Scope the match to one formatting run, or fix the run properties after.
  • Do not use w: elements as booleans. An lxml element with no children is falsy, so if paragraph.find(...) is a silent bug; test is not None.
  • Comments are unusable without paraIds. A comment part written without w14:paraId on each comment paragraph gives Word a flat list with no replies and no resolve button. comments.py backfills them.
  • Deleting the last paragraph's mark has nothing to merge into. redline.py accept warns and leaves an empty paragraph; delete a paragraph that has a successor.
  • add_heading(text, 0) applies Title, not Heading 1. Levels 1 to 9 map to Heading N.
  • A run is a formatting span, not a word. python-docx splits text into runs on every property change, so string operations across paragraph.runs see fragments.
  • cell.text = value replaces the cell's whole content and drops its formatting; write into cell.paragraphs[0] when the cell is already styled.
  • .docm keeps macros in a part python-docx round-trips but never validates; do not convert one to .docx.

Deliverable Checklist

  • validate.py reports no fail; every rendered page inspected.
  • Headings are real styles in an unbroken hierarchy; body text is styled, not directly formatted.
  • Tables have a repeating header row, declared widths, and fit the text area.
  • A TOC, if present, is a field with w:updateFields set.
  • On an edit: every change is tracked and attributed, every human comment answered or resolved, and the untouched parts of the file are untouched.
  • The file is at <task>/<descriptive_name>.docx and the reply names it, says whether it carries tracked changes, and lists what still needs the user's decision.

© ginlix-ai, Apache-2.0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

SKILL.md and 5 other files (scripts) in plugins/langalpha_deliverables/skills/docx of ginlix-ai/LangAlpha.

  • SKILL.md
  • scripts/comments.py
  • scripts/docx_parts.py
  • scripts/redline.py
  • scripts/render.py
  • scripts/validate.py

Open the folder on GitHubat commit e05bd91

Compare with similar skills

Word Documents for Human Review next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Word Documents for Human Review compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Word Documents for Human Review this skillginlix-ai/LangAlpha1.8k—~4.8kAutomated safety check: PassApache-2.0
Word Document Reader and WriterHKUDS/DeepTutor41k—~2.5kAutomated safety check: PassApache-2.0
BiSheng DOCX Builderdataelement/bisheng12k—~2.6kAutomated safety check: PassApache-2.0
DOCX ToolkitXiaomiMiMo/MiMo-Code14k—~2.4kAutomated safety check: PassApache-2.0
Word DOCX ToolkitTokenRhythm/opensquilla7.1k—~1.7kAutomated safety check: PassApache-2.0
Word DOCX ToolkitNousResearch/hermes-agent252k—~2.6kAutomated safety check: PassMIT

Similar skills

  • Reads, creates and edits Word .docx files with python-docx, and drops to raw OOXML for tracked changes, comments and byte-exact edits.

    41k GitHub stars~2.5k tokensUpdated yesterday
    Documents & OfficeAuto-check passed
  • BiSheng DOCX Builder

    dataelement/bisheng

    Builds or edits Word .docx documents inside BiSheng's code executor with python-docx, handling Chinese fonts, tables of contents, page numbers and official-document layout.

    12k GitHub stars~2.6k tokensUpdated today
    Documents & OfficeAuto-check passed
  • DOCX Toolkit

    XiaomiMiMo/MiMo-Code

    Produces, edits and reads Microsoft Word files through python-docx and lxml, with a decision table for picking the lightest workflow for a given task.

    14k GitHub stars~2.4k tokensUpdated today
    Documents & OfficeAuto-check passed
  • Word DOCX Toolkit

    TokenRhythm/opensquilla

    Inspects, edits in place or creates Word .docx files with bundled Python scripts, keeping existing styles intact when content changes.

    7.1k GitHub stars~1.7k tokensUpdated today
    Documents & OfficeAuto-check passed
  • Word DOCX Toolkit

    NousResearch/hermes-agent

    Creates, reads, edits and templates Word .docx files with python-docx scripts, including tracked changes, comments, tables of contents and health checks.

    252k GitHub stars~2.6k tokensUpdated today
    Documents & OfficeAuto-check passed
  • Markdown to Word Converter

    cat-xierluo/SuitAgent

    Converts Markdown files into Word documents formatted to Chinese typesetting conventions, with presets for academic, legal, report and book layouts.

    205 GitHub stars~559 tokensUpdated 1 mo ago
    Documents & OfficeAuto-check passed

More from ginlix-ai/LangAlpha

All 37 skills in this repo
  • Investment Deck Check

    ginlix-ai/LangAlpha

    Quality-checks an investment deck in .pptx form before it goes out: number consistency, chart and narrative alignment, source coverage, language and a circulation verdict.

    1.8k GitHub stars~3.7k tokensUpdated yesterday
    Auto-check passed
  • Equity Initiation Report

    ginlix-ai/LangAlpha

    Produces a first-time equity research initiation report in five tasks: company research, financial model, valuation, charts and a DOCX report.

    1.8k GitHub stars~3.8k tokensUpdated yesterday
    Auto-check passed
  • Builds or repairs an integrated income statement, balance sheet and cash flow model in Excel with live formulas, supporting schedules, scenarios and a Checks sheet.

    1.8k GitHub stars~5.4k tokensUpdated yesterday
    Auto-check passed
  • Financial Model Checker

    ginlix-ai/LangAlpha

    Audits an existing Excel financial model without editing it, checking structure, formulas, integrity identities and source tie-out, and ends in a prioritized issue log.

    1.8k GitHub stars~4.2k tokensUpdated yesterday
    Auto-check passed
  • DCF Model Builder

    ginlix-ai/LangAlpha

    Builds a live Excel DCF valuation workbook with free cash flow projections, WACC, terminal value, three scenarios, sensitivity grids and a reverse DCF.

    1.8k GitHub stars~7.7k tokensUpdated yesterday
    Auto-check passed
  • Financial Model Updater

    ginlix-ai/LangAlpha

    Refreshes an existing financial model after earnings, guidance, filings or capital-structure changes, editing a versioned copy and recording what changed and why.

    1.8k GitHub stars~3.1k tokensUpdated yesterday
    Auto-check passed

Questions about Word Documents for Human Review

What does Word Documents for Human Review do?

Builds Word files with python-docx, edits existing ones in place with tracked changes and comments, then renders and validates the result. The skill is for documents that will enter a human editing loop, such as a memo going to legal or a note a product manager rewrites, where the reader turns on Review, sees who changed what and comments in the margin. New files come from a build script kept in the task folder, so a requested change means editing and rerunning that script.

When should I use Word Documents for Human Review?

Word Documents for Human Review fits situations like: delivering a memo or draft that colleagues will mark up in Word; editing an existing .docx with tracked changes instead of rewriting it; answering a reviewer's comments inside the original Word file.

How do I install Word Documents for Human Review in Claude Code?

Run `npx skills add ginlix-ai/LangAlpha --skill docx -a claude-code`. Or copy the skill folder (plugins/langalpha_deliverables/skills/docx in ginlix-ai/LangAlpha) into .claude/skills/docx in your project. Claude Code loads it when a task matches its description.

How do I install Word Documents for Human Review in Codex?

Run `npx skills add ginlix-ai/LangAlpha --skill docx -a codex`. Or copy the skill folder (plugins/langalpha_deliverables/skills/docx in ginlix-ai/LangAlpha) into .agents/skills/docx in your project. Codex loads it when a task matches its description.

Can I use Word Documents for Human Review in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add ginlix-ai/LangAlpha --skill docx -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/docx, .gemini/skills/docx, .github/skills/docx and .opencode/skills/docx in your project.

What does Word Documents for Human Review need to run?

Going by SKILL.md and its folder, Word Documents for Human Review needs Python for the scripts in its folder and the command-line tools its instructions call (python, pandoc and soffice). Our summary lists: Python with `python-docx`; `pandoc` for reading tracked changes.

Does Word Documents for Human Review access the network?

SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.

Is Word Documents for Human Review safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. The check reads SKILL.md only: the scripts in the folder are not scanned, so read them before running anything.

What licence does Word Documents for Human Review use?

Word Documents for Human Review is published under the Apache-2.0 licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Word Documents for Human Review use?

About 4.8k tokens (SKILL.md is roughly 19k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to Word Documents for Human Review?

Skills that share tags, products or a category with Word Documents for Human Review: Word Document Reader and Writer (HKUDS/DeepTutor, 41k stars), BiSheng DOCX Builder (dataelement/bisheng, 12k stars), DOCX Toolkit (XiaomiMiMo/MiMo-Code, 14k stars) and Word DOCX Toolkit (TokenRhythm/opensquilla, 7.1k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Word Documents for Human Review?

ginlix-ai (a GitHub organization) maintains it in ginlix-ai/LangAlpha, which has 1,811 GitHub stars. The repository holds 37 skills in this directory. The repository was last updated on October 9, 2026.

Source: ginlix-ai/LangAlpha on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.