Getting it into your agent
One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.
npx skills add flonat/flonat-research --skill docxgit clone --depth 1 https://github.com/flonat/flonat-researchWrote this? Show the measurements
A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.
[](https://agentmods.dev/skills/flonat/flonat-research/docx)<a href="https://agentmods.dev/skills/flonat/flonat-research/docx"><img src="https://agentmods.dev/badge/skills/flonat/flonat-research/docx.svg" alt="Measured on agentmods" height="20"></a>- NVIDIA SkillSpector pass
What it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5.1 | $0.00068 | $0.01270 |
| Opus 5 | $0.00034 | $0.00635 |
| Sonnet 5 | $0.00014 | $0.00254 |
| Haiku 4.5 | $0.00007 | $0.00127 |
Grade A, and why
docx scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 4d ago.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Nothing flagged
None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.
How it starts
The opening of the file, as written. The whole thing — 135 lines — stays where its author put it; the contents beside it link to each section on GitHub.
DOCX creation, editing, and analysis
Overview
A .docx file is a ZIP archive containing XML files.
Quick Reference
| Task | Approach |
|---|---|
| Read/analyze content | pandoc or unpack for raw XML |
| Create new document | Use docx-js — see references/docx-js-patterns.md |
| Edit existing document | Unpack → edit XML → repack — see Editing below |
Converting .doc to .docx
uv run python scripts/office/soffice.py --headless --convert-to docx document.doc
Reading Content
# Text extraction with tracked changes
pandoc --track-changes=all document.docx -o output.md
# Raw XML access
uv run python scripts/office/unpack.py document.docx unpacked/
Converting to Images
uv run python scripts/office/soffice.py --headless --convert-to pdf document.docx
pdftoppm -jpeg -r 150 document.pdf page
Accepting Tracked Changes
uv run python scripts/accept_changes.py input.docx output.docx
Creating New Documents
Generate .docx files with JavaScript using docx-js. Install: npm install -g docx
Full code patterns (setup, page size, styles, lists, tables, images, hyperlinks, footnotes, tab stops, multi-column layouts, TOC, headers/footers): references/docx-js-patterns.md
Critical Rules for docx-js
- Set page size explicitly — defaults to A4; use US Letter (12240 x 15840 DXA) for US documents
- Landscape: pass portrait dimensions — docx-js swaps width/height internally
- Never use
\n— use separate Paragraph elements - Never use unicode bullets — use
LevelFormat.BULLETwith numbering config - PageBreak must be in Paragraph — standalone creates invalid XML
- ImageRun requires
type— always specify png/jpg/etc - Always set table
widthwith DXA — never useWidthType.PERCENTAGE(breaks in Google Docs) - Tables need dual widths —
columnWidthsarray AND cellwidth, both must match - Use
ShadingType.CLEAR— never SO[Project] for table shading - Never use tables as dividers — use border on Paragraph instead; for two-column footers, use tab stops
- TOC requires HeadingLevel only — no custom styles on heading paragraphs
- Override built-in styles — use exact IDs: "Heading1", "Heading2", etc.
- Include
outlineLevel— required for TOC (0 for H1, 1 for H2, etc.)
What ships with it
60 files beside SKILL.md in the same directory: the scripts, references and assets a skill reads on demand. Not counted in the per-session cost; read them before you install if any of them is executable.
- LICENSE.txt 1.4 KB
- references/docx-js-patterns.md 9.3 KB
- references/xml-reference.md 3.9 KB
- scripts/__init__.py 1 B runs code
- scripts/accept_changes.py 4.0 KB runs code
- scripts/comment.py 10 KB runs code
- scripts/office/helpers/__init__.py 0 B runs code
- scripts/office/helpers/merge_runs.py 5.4 KB runs code
- scripts/office/helpers/simplify_redlines.py 5.6 KB runs code
- scripts/office/pack.py 4.9 KB runs code
- scripts/office/schemas/ecma/fouth-edition/opc-contentTypes.xsd 1.9 KB
- scripts/office/schemas/ecma/fouth-edition/opc-coreProperties.xsd 2.5 KB
- scripts/office/schemas/ecma/fouth-edition/opc-digSig.xsd 2.8 KB
- scripts/office/schemas/ecma/fouth-edition/opc-relationships.xsd 1.3 KB
- scripts/office/schemas/ISO-IEC29500-4_2016/dml-chart.xsd 73 KB
- scripts/office/schemas/ISO-IEC29500-4_2016/dml-chartDrawing.xsd 6.8 KB
- scripts/office/schemas/ISO-IEC29500-4_2016/dml-diagram.xsd 50 KB
- scripts/office/schemas/ISO-IEC29500-4_2016/dml-lockedCanvas.xsd 624 B
- scripts/office/schemas/ISO-IEC29500-4_2016/dml-main.xsd 148 KB
- scripts/office/schemas/ISO-IEC29500-4_2016/dml-picture.xsd 1.2 KB
- scripts/office/schemas/ISO-IEC29500-4_2016/dml-spreadsheetDrawing.xsd 8.7 KB
- scripts/office/schemas/ISO-IEC29500-4_2016/dml-wordprocessingDrawing.xsd 14 KB
- scripts/office/schemas/ISO-IEC29500-4_2016/pml.xsd 82 KB
- scripts/office/schemas/ISO-IEC29500-4_2016/shared-additionalCharacteristics.xsd 1.2 KB
- scripts/office/schemas/ISO-IEC29500-4_2016/shared-bibliography.xsd 7.2 KB
- scripts/office/schemas/ISO-IEC29500-4_2016/shared-commonSimpleTypes.xsd 6.2 KB
- scripts/office/schemas/ISO-IEC29500-4_2016/shared-customXmlDataProperties.xsd 1.2 KB
- scripts/office/schemas/ISO-IEC29500-4_2016/shared-customXmlSchemaProperties.xsd 880 B
- scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesCustom.xsd 2.5 KB
- scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesExtended.xsd 3.4 KB
- scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesVariantTypes.xsd 7.3 KB
- scripts/office/schemas/ISO-IEC29500-4_2016/shared-math.xsd 23 KB
- scripts/office/schemas/ISO-IEC29500-4_2016/shared-relationshipReference.xsd 1.3 KB
- scripts/office/schemas/ISO-IEC29500-4_2016/sml.xsd 237 KB
- scripts/office/schemas/ISO-IEC29500-4_2016/vml-main.xsd 26 KB
- scripts/office/schemas/ISO-IEC29500-4_2016/vml-officeDrawing.xsd 25 KB
- scripts/office/schemas/ISO-IEC29500-4_2016/vml-presentationDrawing.xsd 535 B
- scripts/office/schemas/ISO-IEC29500-4_2016/vml-spreadsheetDrawing.xsd 5.6 KB
- scripts/office/schemas/ISO-IEC29500-4_2016/vml-wordprocessingDrawing.xsd 3.9 KB
- scripts/office/schemas/ISO-IEC29500-4_2016/wml.xsd 167 KB
- scripts/office/schemas/ISO-IEC29500-4_2016/xml.xsd 4.5 KB
- scripts/office/schemas/mce/mc.xsd 3.1 KB
- scripts/office/schemas/microsoft/wml-2010.xsd 26 KB
- scripts/office/schemas/microsoft/wml-2012.xsd 3.7 KB
- scripts/office/schemas/microsoft/wml-2018.xsd 901 B
- scripts/office/schemas/microsoft/wml-cex-2018.xsd 1.7 KB
- scripts/office/schemas/microsoft/wml-cid-2016.xsd 1002 B
- scripts/office/schemas/microsoft/wml-sdtdatahash-2020.xsd 600 B
- scripts/office/schemas/microsoft/wml-symex-2015.xsd 745 B
- scripts/office/soffice.py 5.2 KB runs code
- scripts/office/unpack.py 4.0 KB runs code
- scripts/office/validate.py 3.6 KB runs code
- scripts/office/validators/__init__.py 336 B runs code
- scripts/office/validators/base.py 32 KB runs code
- scripts/office/validators/docx.py 16 KB runs code
- scripts/office/validators/pptx.py 9.6 KB runs code
- scripts/office/validators/redlining.py 8.7 KB runs code
- scripts/templates/comments.xml 2.5 KB
- scripts/templates/commentsExtended.xml 2.5 KB
- scripts/templates/commentsExtensible.xml 2.6 KB
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- 4d ago First seen · 135 lines · 68 tokens per session scan A 7915d04498e8
docx is a skill published in the GitHub repository flonat/flonat-research (132 stars, last pushed 12d ago), licensed MIT. It adds 68 tokens to every session and 1,270 once invoked, about $0.0003 per session on Opus 5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-09-03.
Other skills, from other repositories
fin-paper-convert
Compile LaTeX to PDF and convert to target journal format.
doc-audit
Evaluate one project document in detail — a workbook section, big picture, strategy map, handoff message, paper, brief, or primer — without editing it. Runs the mechanical lint, builds a claim ledger, types every headline against the eight claim statuses in CLAUDE.md, traces cited evidence to the scripts and logs that…
latex-compile
Compile a LaTeX document and fix every error plus aesthetic issue (overfull/underfull boxes, widows, alignment, fonts) for a clean PDF and log. Use this instead of running pdflatex/latexmk manually — it avoids the latexmk stale-log trap and silent grep failures on binary log output, and it reformats rather than…
sync-brief
Propagate load-bearing changes from workbook.tex to brief.tex.
beamer-presentation
Create academic presentations in Beamer with professional themes.
latex-tables
Generate publication-ready regression tables in LaTeX.