docx-builder
August 13, 2026 · View on GitHub
English | 中文
A Word/.docx authoring skill: a styling system over the docx npm package that produces
structured documents with a professional palette, tables and heading hierarchy — PRDs, technical
designs, project reports, meeting notes.
One SKILL.md, two harnesses. The same file works in Claude Code and in
DeepSeek Harness without modification, because
both read the same skill format.
Install
DeepSeek Harness (dsh)
git clone https://github.com/casperkwok/dsh-skill-docx ~/.agents/skills/docx-builder
That is the whole install. ~/.agents/skills is one of the five roots dsh scans
($DSH_AGENTS_HOME/skills), discovery is unmemoized, so the skill is visible on the next
skill.list — no restart needed.
Verify it loaded:
curl -s -X POST http://127.0.0.1:3080/api/skill.list \
-H 'content-type: application/json' \
-d '{"type":"client-request","rpcId":"'"$(uuidgen)"'","method":"skill.list",
"payload":{"sessionId":"<session-id>"}}'
A discovered skill comes back with modelInvocable: true.
Claude Code
git clone https://github.com/casperkwok/dsh-skill-docx ~/.claude/skills/docx-builder
Requirements
Node.js and the docx package in whatever directory the generated script runs in:
npm i docx
Try it
npm i docx
node examples/example-prd.js # writes example-prd.docx
What is in here
| Path | Purpose |
|---|---|
SKILL.md | The skill itself — style system, component contracts, usage rules |
references/docx-template.js | The component implementations the generated scripts import |
examples/example-prd.js | A runnable end-to-end example |
Why the frontmatter has fields dsh does not use
version and the metadata.openclaw tree are ClawHub conventions. dsh parses frontmatter as an
open YAML object and interprets only name, description, whenToUse, metadata,
disable-model-invocation and user-invocable — everything else is ignored rather than rejected.
That is precisely what makes one file portable across both tools.
Careful with the two invocation keys. They must be kebab-case. A camel-case spelling (
disableModelInvocation) or a non-boolean value drops the entire skill from dsh discovery with only a warning — the policy fails closed rather than defaulting to permissive.
More on the format, the five discovery roots and how to debug a skill that silently vanishes: Port a Claude Code skill to DeepSeek Harness.
License
MIT