Docx Creator logo

Docx Creator

CommunityPopular
daymade
docx-creator

Produce Word (.docx) and export existing Word/WPS manuscripts to PDF (Word 转 PDF / 试读版 / 排版修复), preserving revisions, tables and images. Especially for Chinese documents, drive minimax-skills:minimax-docx OpenXML correctly. Use whenever the deliverable is a .docx file: 生成 Word 文档 / 做一份 docx / 写合同 docx / 起草协议 / 正式文书 / 公文 / offer / 劳动合同 / 把 markdown 转成 Word / Word 排版 / 中文排版 / 签字栏 / 盖章版 / 甲方乙方, or any plain "give me a Word file" request. This skill adds the layer minimax-docx does not ship: a verified markdown-to-docx OpenXML generator, alignment rules for info and signature blocks, list numbering, CJK font dual-slot setup, and a mandatory LibreOffice-to-PDF-to-PNG visual verification chain (qlmanage thumbnails are banned — they hide exactly the bugs that matter). Engine belongs to minimax-docx; correct usage and field-tested workarounds belong here. For Markdown → PDF use daymade-docs:pdf-creator.

Overview

Publisherdaymade
Repositoryclaude-code-skills
Skill namedocx-creator
Stars
1.4K
Forks
219
Bundled files
6
LicenseMIT
Links
  • Markdown instructions

    A SKILL.md file the model loads on demand, so it only costs tokens when a request actually matches.

  • Works with any LLM

    AI skills are plain Markdown, not provider-specific code, so this works with GPT, Claude, Gemini, Grok, or a local model.

  • 6 bundled files

    Scripts, templates, and references the model can read while it works. Files are read-only and never executed.

  • Open source

    Published by daymade on GitHub. Read the source before you install it.

Installation

Install the Docx Creator AI skill in TypingMind to use it with any LLM, or drop it into another agent that reads SKILL.md.

1

Install in TypingMind

TypingMind installs a skill straight from its GitHub folder — it reads SKILL.md, bundles the resource files, and stores the result locally.

  1. Open the app and go to Plugins → Skills.
  2. Choose "Install from GitHub".
  3. Paste the skill folder URL below and confirm.
  4. Enable the skill in any chat where you want it available.
Plugins → Skills → Add skill → From GitHub URL, then paste the folder URL and press Continue.
2

Install in another agent

Any agent that reads the Agent Skills format can use this skill — copy the folder into that agent's skills directory.

Claude Code — .claude/skills
git clone --depth 1 https://github.com/daymade/claude-code-skills.git /tmp/claude-code-skills
mkdir -p .claude/skills
cp -r /tmp/claude-code-skills/daymade-docs/docx-creator .claude/skills/docx-creator
Restart Claude Code after copying so it picks up the new skill.

Use it in TypingMind

Enable Docx Creator in any TypingMind chat and the model takes it from there. Its name and description sit in the system prompt, and the moment a request matches, the model loads the full instructions itself — you never invoke it by hand, and it costs no tokens until it is actually used.

The model loads Docx Creator on its own as soon as a request matches it.

Works with any AI model

AI skills are plain Markdown instructions rather than provider-specific code, so Docx Creator is not tied to the model it was written for. Install it once in TypingMind and use it with GPT-5, Claude, Gemini, Grok, DeepSeek, Mistral, Llama, or a local model you run yourself — all on your own API keys.

  • Loaded only when it is needed

    The system prompt carries just the name and description. The instructions are fetched on the first matching request, so an idle skill costs nothing.

  • Switch models mid-chat

    Because the skill is instructions rather than code, changing model does not break it — the next model reads the same SKILL.md.

Skill instructions

This is the SKILL.md content the model loads. Read it before installing — a skill is instructions your model will follow.

DOCX Creator

Thin incremental layer over minimax-skills:minimax-docx. Not a document engine.

Read this first. The OpenXML SDK capability lives in minimax-docx. This skill contains zero engine code. What it contains is the part that took a full debugging session to learn: where that engine's CLI stops being usable, how to drive its SDK correctly for Chinese formal documents, and how to verify the output so you don't ship a file that looks fine to you and broken in Word.

Division of labor

LayerOwnerWhat lives there
OpenXML SDK (DocumentFormat.OpenXml), WordprocessingDocument API, XSD validator, style templates, OpenXML encyclopediaminimax-skills:minimax-docxEngine + reference docs. Never duplicated here.
Where the CLI's expressiveness ceiling is, and when to abandon it for C#this skillISSUE-001, ISSUE-002
A verified markdown-to-docx generator for Chinese formal documentsthis skillscripts/Program.cs
Chinese formal-document typography rules that OpenXML lets you get wrongthis skillHard rules below + ISSUE-004…007
Real end-to-end visual verification chainthis skillreferences/verification_protocol.md

Locate the engine at the marketplace install path, typically ~/.claude/plugins/marketplaces/minimax-skills/skills/minimax-docx/.

Go read minimax-docx directly for anything structural this skill does not cover — images, track changes, comments, TOC, multi-section layouts, template application. Its minimax-docx/references/ folder (cjk_typography.md, openxml_element_order.md, openxml_units.md, troubleshooting.md) and its Samples/*.cs are the authority for SDK patterns. Do not reinvent them here.

Routing: which path for this document?

SituationPath
Chinese contract / agreement / 公文 / any doc with 甲乙方 info blocks, numbered clauses, signature block, tablesC# OpenXML via scripts/Program.cs (this skill)
Plain prose, headings and paragraphs only, no bold / lists / tablesminimax-docx CLI create --content-json is enough
Fill or edit an existing .docxminimax-docx pipeline B (edit-content), plus this skill's layout and verification guidance
Match an existing .docx's formattingminimax-docx pipeline C (apply-template)
Existing Word/WPS → repaired layout / selected excerpt → PDFKeep the Word source; follow references/word-to-pdf.md and references/verification_protocol.md
Markdown → PDFdaymade-docs:pdf-creator

Rule of thumb: the CLI's --content-json understands exactly three block types (heading, paragraph, pagebreak). Bold, lists, tables, borders, footers, fonts, alignment — none of it is expressible. A Chinese contract needs all of them. See ISSUE-001.

Quick start

The generator reads markdown and writes a formatted .docx. Copy it next to your document so build artifacts stay out of the skill directory:

bash
# 1. Stage the generator beside your markdown
mkdir -p _docxgen && cp <skill-dir>/scripts/Program.cs <skill-dir>/scripts/mmdocx-gen.csproj \
   <skill-dir>/scripts/.gitignore _docxgen/

# 2. Generate (first run restores DocumentFormat.OpenXml + Markdig, ~20s)
dotnet run --project _docxgen -- your-doc.md your-doc.docx

# 3. Structural validation via the engine's XSD validator (note the roll-forward env — ISSUE-003)
DOTNET_ROLL_FORWARD=Major dotnet run \
  --project ~/.claude/plugins/marketplaces/minimax-skills/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Cli \
  -- validate --input your-doc.docx

# 4. MANDATORY visual verification — never skip, never substitute qlmanage
soffice --headless --convert-to pdf --outdir /tmp/docxcheck your-doc.docx
pdftoppm -png -r 100 /tmp/docxcheck/your-doc.pdf /tmp/docxcheck/page
# then Read every /tmp/docxcheck/page-NN.png

# 5. MANDATORY if Microsoft Word.app is installed — LibreOffice cannot see ISSUE-012
open -a "Microsoft Word" your-doc.docx   # check the title bar for "兼容性模式", check every page

Full command details and troubleshooting: scripts/README.md. Full verification steps and pass/fail criteria: references/verification_protocol.md.

Hard rules (violating these means rework)

1. Alignment is layered — this is the expensive one

Never justify the whole document. Three layers, three alignments:

ContentAlignmentWhy
Document title (H1)CenterConvention
Clause headings (H2+)LeftConvention
Info blocks and signature blocks — 甲方/乙方/统一社会信用代码/法定代表人/日期, i.e. any paragraph whose lines are joined by markdown soft or hard line breaksLeftJustification stretches every line except the paragraph's last. A multi-line info block is one paragraph, so all but its final line get blown out into huge inter-character gaps.
Ordinary body proseJustified (Both)Clean right edge

The rule is machine-checkable, so do not eyeball it: if the markdown paragraph's inline tree contains a LineBreakInline, left-align that paragraph; otherwise justify it. Implemented in the case ParagraphBlock p: arm of Main's block-dispatch switch, with the break detection in InlineRuns. (Line numbers are deliberately not given here — they drift every time the file grows; see scripts/README.md's function-name lookup table instead.) Full write-up: ISSUE-004.

2. Independent lists restart; continuations retain numbering

Each independent markdown list must get its own NumId plus a LevelOverride carrying StartOverrideNumberingValue = 1. Reuse one NumId across clauses and clause 3's list silently continues from 4. Implemented across the case ListBlock lb: arm and the NumberingDefinitionsPart setup — see scripts/README.md's lookup table for both. Two SDK traps come with it (wrong class name, wrong element order) — ISSUE-005, ISSUE-006. For existing Word lists, preserve intentional continuations. Resolve numId and its level before changing geometry; numId=0 disables numbering. Typed ordinals are text, not an automatic list. See ISSUE-016.

3. CJK fonts need both slots

A run must set RunFonts { Ascii, HighAnsi, EastAsia }. Setting only the Latin slots leaves Chinese characters to Word's fallback, and the document renders in whatever the reader's machine picks. Shipped defaults: Latin Times New Roman; East Asian 宋体 for body, 黑体 for headings. Chinese bold runs switch family to 黑体 — 宋体 has no true bold weight and renderer-synthesized bold smears multi-stroke characters (ISSUE-014). Sizes are OpenXML half-points — body 21 (10.5pt, the common Chinese manuscript size), H1 36 (18pt), clause heading 28 (14pt). Body paragraphs also get a 2-character first-line indent (420 twips at 10.5pt — change it in lockstep with the body size). ISSUE-007.

4. Page and table basics

A4 is 11906 × 16838 twips with 1440 twip margins; page number goes in a centered footer PAGE field. Tables need all six borders (top/bottom/left/right/insideH/insideV, in that ECMA-376 order — ISSUE-013) and a tblGrid (ISSUE-012) — set fewer borders and cells look unruled in print; omit tblGrid and the file fails strict validation even though LibreOffice hides it. Implemented in BuildTable and the SectionProperties/FooterPart setup in Main — see scripts/README.md's lookup table.

Verification is not optional

Banned: qlmanage thumbnails as visual proof. macOS Quick Look renders with a different engine than Word and will happily show a clean-looking page for a document whose info blocks are stretched apart. A document was declared "verified perfect" on qlmanage evidence and opened broken in Word — that is the origin of this rule. ISSUE-008.

Required chain: generate → XSD validate → soffice --headless --convert-to pdfpdftoppm -pngRead every page image → check the five failure modes (info blocks not stretched / each list restarting at 1 / table borders present / signature block intact / no orphaned pagination) → if Microsoft Word.app is installed, open the actual file in it and check the title bar for "兼容性模式" plus every page. Details, prerequisites and the "what counts as failure" list: references/verification_protocol.md.

LibreOffice rendering clean is not the same claim as "Word renders this correctly." ISSUE-012 is a real, reproduced case where a file passed every LibreOffice-based check in this chain — clean info blocks, correct numbering, intact tables — and still opened in real Word with "兼容性模式" in the title bar and phantom bullet markers on paragraphs that were never given any numbering. LibreOffice has no equivalent fallback path and is structurally unable to surface that class of defect. This is ISSUE-008's own lesson (a lenient renderer hides what Word does) recurring one layer up; treat LibreOffice-only verification as incomplete whenever Word is available to check against directly.

Before overwriting a delivered .docx, check for a sibling ~$<name>.docx — that is Word's owner lock, meaning the recipient has the old version open. Overwriting works, but they will keep seeing the stale document until they close and reopen it. Tell them. ISSUE-011.

Customizing

scripts/Program.cs is ~260 lines of straightforward OpenXML. Edit it directly for fonts, sizes, spacing, borders, or new block types — that is the intended workflow. Before adding a structural feature (images, TOC, headers, track changes), read the corresponding Samples/*.cs in minimax-docx first; those patterns are SDK-version-verified and will save you a compile-error loop.

If you append a new property to RunProperties, ParagraphProperties, TableProperties, TableCellProperties, or TableBorders: it must go in ECMA-376's child-element order for that parent, not wherever .Append() reads naturally in the C#. This is not a style preference — get it wrong and you reproduce ISSUE-012/ISSUE-013: minimax-docx validate still reports PASSED, LibreOffice still renders the file cleanly, and real Word still opens it in Compatibility Mode with unrequested formatting scattered across the document. The current code already carries a schema-order comment at each construction site (RunProps, Para, BuildTable) — extend the existing property list in place rather than appending after it, and if you add a genuinely new element, look up its position in openxml_element_order.md (minimax-docx) before deciding where the .Append() call goes. Re-run Step 3a of the verification protocol (real Word, not just LibreOffice) after any such change — that is the only check in the whole chain that would have caught this class of bug.

References

  • references/word-to-pdf.md — existing Word source, excerpt selection, accepted revisions, layout repair and PDF delivery; no Markdown round-trip.
  • references/known_issues.md — symptom / root cause / fix / verification for every trap hit while building this pipeline. Read before debugging anything.
  • references/verification_protocol.md — the full end-to-end verification chain, its prerequisites, its pass criteria, and the substitutions that are forbidden.
  • scripts/README.md — how to run the generator, what markdown it supports, environment requirements.

Bundled files

The model reads these on demand while the skill is loaded. They are exposed as readable files and are never executed.

Frequently asked questions

What does the Docx Creator AI skill do?

Produce Word (.docx) and export existing Word/WPS manuscripts to PDF (Word 转 PDF / 试读版 / 排版修复), preserving revisions, tables and images. Especially for Chinese documents, drive minimax-skills:minimax-docx OpenXML correctly. Use whenever the deliverable is a .docx file: 生成 Word 文档 / 做一份 docx / 写合同 docx / 起草协议 / 正式文书 / 公文 / offer / 劳动合同 / 把 markdown 转成 Word / Word 排版 / 中文排版 / 签字栏 / 盖章版 / 甲方乙方, or any plain "give me a Word file" request. This skill adds the layer minimax-docx does not ship: a verified markdown-to-docx OpenXML generator, alignment rules for info and signature blocks, list numbe...

Why use Docx Creator on TypingMind?

Because you install it once and use it with any model. Docx Creator is plain Markdown rather than provider-specific code, so the same skill runs on GPT-5, Claude, Gemini, Grok, or a local model — and you can switch model mid-chat without it breaking. TypingMind runs on your own API keys, so you pay providers directly instead of a per-seat subscription, and your skills and chats stay in your own storage.

How do I install Docx Creator in TypingMind?

Open Plugins → Skills → Install from GitHub in TypingMind and paste https://github.com/daymade/claude-code-skills/tree/main/daymade-docs/docx-creator. TypingMind reads its SKILL.md and bundles its files and installs it as a skill you can enable per chat.

Which AI models can use Docx Creator?

Any model you connect in TypingMind. AI skills are plain Markdown instructions rather than provider-specific code, so GPT, Claude, Gemini, Grok, and local models can all load this skill when a request matches it.

How many AI models can I use with Docx Creator?

As many as you like. As long as a model supports skills, you can use Docx Creator with it — GPT, Claude, Gemini, Grok, DeepSeek, Mistral, Llama and more — all on TypingMind with your own API keys.

Is the Docx Creator AI skill free?

Yes. It is published on GitHub by daymade under the MIT license. You only pay your own AI provider for the tokens you use.

What are AI skills?

An AI skill is a reusable instruction bundle that teaches an AI model how to do one specific task. It follows the open Agent Skills format: a SKILL.md file with a name and description, plus any scripts, templates or reference files the model may need. The model reads the instructions only when your request matches the skill, so an installed skill costs nothing until it is used.

How are AI skills different from plugins or MCP servers?

A plugin or MCP server gives a model new tools to call — code that runs somewhere and returns a result. An AI skill gives the model knowledge and process instead: how to approach a task, which steps to follow, what good output looks like. Skills are plain Markdown, so they need no server, no API key and no runtime, and they work with any model.

View all

Set up your own AI workspace now

Get notified about new features and future giveaways by subscribing to our newsletter 👇