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

PathPurpose
SKILL.mdThe skill itself — style system, component contracts, usage rules
references/docx-template.jsThe component implementations the generated scripts import
examples/example-prd.jsA 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