Convert Markdown files to professionally formatted Word (.docx) documents with embedded PNG images — pure JavaScript, no external tools required
Convert Markdown (.md) files into professionally formatted Word (.docx) documents with embedded PNG images. Uses pure JavaScript via the docx and marked npm packages — no Pandoc, LibreOffice, or any native binary required.
# Install dependencies (one-time, from the scripts folder)
cd skills/md-to-docx/scripts && npm install
# Convert (run from workspace root)
node skills/md-to-docx/scripts/md-to-docx.mjs <input.md> [output.docx]
If output.docx is omitted, it defaults to <input-basename>.docx in the current directory.
| File | Purpose |
|------|---------|
| SKILL.md | This instruction file |
| scripts/md-to-docx.mjs | Node.js Markdown-to-Word converter |
| scripts/package.json | Dependencies (docx, marked) |
| Requirement | Version | Notes |
|-------------|---------|-------|
| Node.js | 18+ | Required runtime |
| docx | 9+ | Pure JS Word document generator |
| marked | 15+ | Markdown parser |
No native binaries. No system-level installs. Works on Windows, macOS, and Linux.
The converter:
title, date, version, audience for the title page references relative to the input .md file, reads the PNG, and embeds it inline in the Word document#1F3864), styled tables with alternating row colors, code blocks in ConsolasThe converter automatically embeds PNG images referenced in the Markdown:

The image path is resolved relative to the input Markdown file. The PNG is read, dimensions are extracted from the PNG header, and the image is scaled to fit within 6 inches width while preserving aspect ratio.
If an image file is not found, a placeholder [Image not found: <path>] is inserted.
---
title: Project Name — Project Summary
date: 2025-01-15
version: 1.0
audience: Engineering Team, Architects, Stakeholders
---
The title is split on — or – into main title and subtitle for the title page.
Copy a source-pinned command for your client. You run it yourself.
Destination: .claude/skills/md-to-docx · pinned to the source commit
# Run from your project root
git clone https://github.com/github/awesome-copilot.git .skillboard-tmp
git -C .skillboard-tmp checkout f11a4e441c5ff061b4f8ae37952be8c602e4034e
mkdir -p ".claude/skills"
cp -r ".skillboard-tmp/skills/md-to-docx" ".claude/skills/"
rm -rf .skillboard-tmpReview the source before running. This copies files into your project; it is not a one-click install and does not verify runtime safety.
sudo apt update && sudo apt install -y gitnpm install -g @anthropic-ai/claude-code# Run from your project root
git clone https://github.com/github/awesome-copilot.git .skillboard-tmp
git -C .skillboard-tmp checkout f11a4e441c5ff061b4f8ae37952be8c602e4034e
mkdir -p ".claude/skills"
cp -r ".skillboard-tmp/skills/md-to-docx" ".claude/skills/"
rm -rf .skillboard-tmpDestination: .claude/skills/md-to-docx
Scanner static-checks@0.1.0 · commit f11a4e441c5f. Static checks cannot prove runtime safety – review the source and the exact diff before installing. How checks work.
Instructs shell/process/package operations that run commands on the host.
Evidence: npm install· fingerprint 3a2dc0ae21eb56d7