Skills lovstudio:any2docx

install
source · Clone the upstream repo
git clone https://github.com/lovstudio/skills
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/lovstudio/skills "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/any2docx" ~/.claude/skills/lovstudio-skills-lovstudio-any2docx && rm -rf "$T"
manifest: skills/any2docx/SKILL.md
source content

any2docx — Markdown to Professional DOCX

This skill converts any Markdown file into a professionally styled Word document using Python's python-docx library. It shares the same theme palette as any2pdf and handles all CJK/Latin edge cases correctly.

When to Use

  • User wants to convert
    .md
    .docx
    (Word)
  • User needs an editable document (not PDF)
  • Document contains CJK characters mixed with Latin text
  • Document has fenced code blocks, markdown tables, or lists
  • User wants a cover page, table of contents, or watermark in their DOCX

Quick Start

python lovstudio-any2docx/scripts/md2docx.py \
  --input report.md \
  --output report.docx \
  --title "My Report" \
  --author "Author Name" \
  --theme warm-academic

All parameters except

--input
are optional — sensible defaults are applied.

Pre-Conversion Options (MANDATORY)

IMPORTANT: You MUST use the

AskUserQuestion
tool to ask these questions BEFORE running the conversion. Do NOT list options as plain text — use the tool so the user gets a proper interactive prompt. Ask all options in a SINGLE
AskUserQuestion
call.

Use

AskUserQuestion
with the following template:

开始转 Word!先帮你确认几个选项 👇

━━━ 📐 设计风格 ━━━
 a) 暖学术    — 陶土色调,温润典雅,适合人文/社科报告
 b) 经典论文  — 棕色调,灵感源自 LaTeX classicthesis,适合学术论文
 c) Tufte     — 极简留白,深红点缀,适合数据叙事/技术写作
 d) 期刊蓝    — 藏蓝严谨,灵感源自 IEEE,适合正式发表风格
 e) 精装书    — 咖啡色调,书卷气,适合长篇专著/技术书
 f) 中国红    — 朱红配暖纸,适合中文正式报告/白皮书
 g) 水墨      — 纯灰黑,素雅克制,适合文学/设计类内容
 h) GitHub    — 蓝白极简,程序员熟悉的风格
 i) Nord 冰霜 — 蓝灰北欧风,清爽现代
 j) 海洋      — 青绿色调,清新自然
 k) 投资报告  — 楷体+深红,专业严谨,适合投资/尽调报告

━━━ 💧 水印 ━━━
 1) 不加
 2) 自定义文字(如 "DRAFT"、"内部资料")

示例回复:"a, 水印:仅供内部参考"
直接说人话就行,不用记编号 😄

Mapping User Choices to CLI Args

ChoiceCLI arg
Design style a-k
--theme
with value from table below
Watermark text
--watermark "文字"

Theme Name Mapping

Choice
--theme
value
a) 暖学术
warm-academic
b) 经典论文
classic-thesis
c) Tufte
tufte
d) 期刊蓝
ieee-journal
e) 精装书
elegant-book
f) 中国红
chinese-red
g) 水墨
ink-wash
h) GitHub
github-light
i) Nord
nord-frost
j) 海洋
ocean-breeze
k) 投资报告
invest-report

Architecture

Markdown → Strip frontmatter → Preprocess (split merged headings) → Parse (code-fence-aware) → python-docx Document → .docx

Key components:

  1. CJK font switching:
    _split_mixed()
    detects CJK runs and assigns Songti SC / SimSun / Noto CJK
  2. Inline markdown:
    _parse_inline()
    handles bold, italic,
    code
    , links
  3. Images: Local paths (relative to .md) and remote URLs — auto-downloaded and embedded via
    add_picture()
  4. Code blocks: Shaded paragraph with monospace font and border
  5. Tables: Header row with accent background, alternating row shading
  6. Watermark: VML-based diagonal watermark in header (Word-native)
  7. TOC: Field code with static fallback entries;
    updateFields=true
    triggers auto-refresh on open
  8. YAML frontmatter: Automatically stripped (won't leak
    status: draft
    etc. into output)
  9. Adaptive cover title: Font size scales down for long titles (36pt → 22pt)

Configuration Reference

ArgumentDefaultDescription
--input
(required)Path to markdown file
--output
output.docx
Output DOCX path
--title
From first H1Document title for cover page
--subtitle
""
Subtitle text
--author
""
Author name
--date
TodayDate string
--version
""
Version string for cover
--watermark
""
Watermark text (empty = none)
--theme
warm-academic
Color theme name
--cover
true
Generate cover page
--toc
true
Generate table of contents
--header-title
""
Report title in page header
--footer-left
authorBrand/author in footer
--stats-line
""
Stats on cover
--stats-line2
""
Second stats line
--edition-line
""
Edition line on cover
--code-max-lines
30
Max lines per code block

Dependencies

pip install python-docx --break-system-packages