Now liveThe Skillselion MCP - thousands of ranked skills, loaded into your agent mid-task. No install.Get it →
jwynia avatar

Docx Generator

  • 719 installs
  • 133 repo stars
  • Updated February 24, 2026
  • jwynia/agent-skills

docx-generator is a document automation skill that analyzes DOCX templates and generates or populates Word documents with structured content for developers who need programmatic DOCX extraction and AI-driven document fil

About

docx-generator is an agent skill from jwynia/agent-skills backed by a Deno analyze-template.ts script that reads DOCX files with JSZip (npm:jszip@3.10.1) and JSR std libraries. It extracts paragraphs, tables, headers, footers, and placeholders from Word templates, emitting JSON structure for replacement planning before generating or populating new documents. The workflow uses deno run --allow-read scripts/analyze-template.ts with options for verbose and pretty JSON output. Developers reach for it when building report generators, mail-merge style tools, or agent pipelines that must inspect .docx layout programmatically rather than manually editing Word. It suits Deno-based automation where filesystem read access to template files is available.

  • Extracts paragraphs, tables, headers, footers and styled text runs from DOCX files
  • Identifies and maps placeholders for automated content replacement
  • Outputs structured JSON for analysis and template planning
  • Supports verbose and pretty-print modes for debugging
  • Deno-based CLI compatible with agent-driven document workflows

Docx Generator by the numbers

  • 719 all-time installs (skills.sh)
  • +2 installs in the week ending Aug 2, 2026 (Skillselion tracking)
  • Ranked #329 of 1,879 Documentation skills by installs in the Skillselion catalog
  • Security screen: MEDIUM risk (skills.sh audit)
  • Data as of Aug 5, 2026 (Skillselion catalog sync)
npx skills add https://github.com/jwynia/agent-skills --skill docx-generator

Add your badge

Show developers this skill is listed on Skillselion. Paste this into your README.

Listed on Skillselion
Installs719
repo stars133
Security audit2 / 3 scanners passed
Last updatedFebruary 24, 2026
Repositoryjwynia/agent-skills

How do you extract structure from DOCX templates programmatically?

Analyze DOCX templates, extract structured content like paragraphs, tables, headers and placeholders, then generate or populate new Word documents with AI-driven conten

Who is it for?

Developers building Deno or TypeScript pipelines that analyze .docx templates and auto-fill reports or contracts.

Skip if: Teams needing PDF generation, Google Docs APIs, or rich WYSIWYG Word editing without programmatic template parsing.

When should I use this skill?

A developer needs to parse DOCX structure, list placeholders, or generate Word documents from templates in code.

What you get

JSON template analysis, identified placeholders, and generated or populated Word documents from structured content.

  • Template JSON analysis
  • Populated DOCX output

By the numbers

  • Uses JSZip npm:jszip@3.10.1 for DOCX unpacking
  • Deno entry script: analyze-template.ts with --allow-read permission

Files

SKILL.mdMarkdownGitHub ↗

DOCX Generator

When to Use This Skill

Use this skill when:

  • Creating Word documents programmatically from data or specifications
  • Populating branded templates with dynamic content while preserving corporate styling
  • Extracting text, tables, and structure from existing DOCX files for analysis
  • Finding and replacing placeholder text like {{TITLE}} or ${author}
  • Automating document generation workflows (reports, contracts, letters)

Do NOT use this skill when:

  • User wants to open/view documents (use native Word or viewer)
  • Complex mail merge with data sources (use native Word mail merge)
  • Working with older .doc format (DOCX only)
  • PDF output is needed (use pdf-generator skill instead)

Prerequisites

  • Deno installed (https://deno.land/)
  • Input DOCX files for template-based operations
  • JSON specification for scratch generation

Quick Start

Two Modes of Operation

1. Template Mode: Modify existing branded templates

  • Analyze template to find placeholders
  • Replace {{PLACEHOLDERS}} with actual content

2. Scratch Mode: Create documents from nothing using JSON specifications

Instructions

Mode 1: Template-Based Generation

Step 1a: Analyze the Template

Extract text inventory to understand what can be replaced:

deno run --allow-read scripts/analyze-template.ts corporate-template.docx > inventory.json

Output (inventory.json):

{
  "filename": "corporate-template.docx",
  "paragraphCount": 25,
  "tableCount": 2,
  "imageCount": 1,
  "paragraphs": [
    {
      "index": 0,
      "style": "Title",
      "fullText": "{{DOCUMENT_TITLE}}",
      "runs": [
        { "text": "{{DOCUMENT_TITLE}}", "bold": true, "fontSize": 28 }
      ]
    }
  ],
  "placeholders": [
    { "tag": "{{DOCUMENT_TITLE}}", "location": "paragraph", "paragraphIndex": 0 },
    { "tag": "{{AUTHOR}}", "location": "footer-default", "paragraphIndex": 0 },
    { "tag": "${date}", "location": "table", "tableIndex": 0, "cellLocation": "R1C2" }
  ]
}
Step 1b: Create Replacement Specification

Create replacements.json:

{
  "textReplacements": [
    { "tag": "{{DOCUMENT_TITLE}}", "value": "Q4 2024 Financial Report" },
    { "tag": "{{AUTHOR}}", "value": "Finance Department" },
    { "tag": "${date}", "value": "December 15, 2024" },
    { "tag": "{{COMPANY}}", "value": "Acme Corporation" }
  ],
  "includeHeaders": true,
  "includeFooters": true
}
Step 1c: Generate Output
deno run --allow-read --allow-write scripts/generate-from-template.ts \
  corporate-template.docx replacements.json output.docx

Mode 2: From-Scratch Generation

Step 2a: Create Specification

Create spec.json:

{
  "title": "Quarterly Report",
  "creator": "Finance Team",
  "styles": {
    "defaultFont": "Calibri",
    "defaultFontSize": 11
  },
  "sections": [
    {
      "header": {
        "paragraphs": [
          { "text": "Acme Corporation", "alignment": "right" }
        ]
      },
      "footer": {
        "paragraphs": [
          { "text": "Confidential", "alignment": "center" }
        ]
      },
      "content": [
        {
          "text": "Q4 2024 Financial Report",
          "heading": 1,
          "alignment": "center"
        },
        {
          "runs": [
            { "text": "Executive Summary: ", "bold": true },
            { "text": "This report provides an overview of our financial performance for Q4 2024." }
          ]
        },
        { "pageBreak": true },
        {
          "text": "Revenue Breakdown",
          "heading": 2
        },
        {
          "rows": [
            {
              "cells": [
                { "content": [{ "text": "Category" }], "shading": "DDDDDD" },
                { "content": [{ "text": "Amount" }], "shading": "DDDDDD" },
                { "content": [{ "text": "Change" }], "shading": "DDDDDD" }
              ],
              "isHeader": true
            },
            {
              "cells": [
                { "content": [{ "text": "Product Sales" }] },
                { "content": [{ "text": "$1,250,000" }] },
                { "content": [{ "text": "+15%" }] }
              ]
            },
            {
              "cells": [
                { "content": [{ "text": "Services" }] },
                { "content": [{ "text": "$750,000" }] },
                { "content": [{ "text": "+8%" }] }
              ]
            }
          ],
          "width": 100,
          "borders": true
        }
      ]
    }
  ]
}
Step 2b: Generate Document
deno run --allow-read --allow-write scripts/generate-scratch.ts spec.json output.docx

Examples

Example 1: Contract Generation

Scenario: Generate contracts from a branded template.

Steps:

# 1. Analyze template for replaceable content
deno run --allow-read scripts/analyze-template.ts contract-template.docx --pretty

# 2. Create replacements.json with client data
# 3. Generate contract
deno run --allow-read --allow-write scripts/generate-from-template.ts \
  contract-template.docx replacements.json acme-contract.docx

Example 2: Report with Tables

Scenario: Generate a data report with tables and formatting.

spec.json:

{
  "title": "Sales Report",
  "sections": [{
    "content": [
      { "text": "Monthly Sales Report", "heading": 1 },
      { "text": "January 2025", "heading": 2 },
      {
        "runs": [
          { "text": "Total Sales: ", "bold": true },
          { "text": "$125,000", "color": "2E7D32" }
        ]
      }
    ]
  }]
}

Example 3: Letter with Headers/Footers

Scenario: Create a formal letter with letterhead.

spec.json:

{
  "sections": [{
    "header": {
      "paragraphs": [
        { "text": "ACME CORPORATION", "alignment": "center", "runs": [{"text": "ACME CORPORATION", "bold": true, "fontSize": 16}] },
        { "text": "123 Business Ave, City, ST 12345", "alignment": "center" }
      ]
    },
    "content": [
      { "text": "December 15, 2024", "alignment": "right" },
      { "text": "" },
      { "text": "Dear Valued Customer," },
      { "text": "" },
      { "text": "Thank you for your continued business..." },
      { "text": "" },
      { "text": "Sincerely," },
      { "text": "John Smith" },
      { "runs": [{ "text": "CEO", "italic": true }] }
    ],
    "footer": {
      "paragraphs": [
        { "text": "www.acme.com | contact@acme.com", "alignment": "center" }
      ]
    }
  }]
}

Script Reference

ScriptPurposePermissions
analyze-template.tsExtract text, tables, placeholders from DOCX--allow-read
generate-from-template.tsReplace placeholders in templates--allow-read --allow-write
generate-scratch.tsCreate DOCX from JSON specification--allow-read --allow-write

Specification Reference

Paragraph Options

PropertyTypeDescription
textstringSimple text content
runsarrayFormatted text runs (for mixed formatting)
heading1-6Heading level
alignmentstringleft, center, right, justify
bulletbooleanBulleted list item
numberingbooleanNumbered list item
spacingobjectbefore, after, line spacing
indentobjectleft, right, firstLine indentation
pageBreakBeforebooleanInsert page break before paragraph

Text Run Options

PropertyTypeDescription
textstringText content
boldbooleanBold formatting
italicbooleanItalic formatting
underlinebooleanUnderline formatting
strikebooleanStrikethrough
fontSizenumberFont size in points
fontstringFont family name
colorstringText color (hex, no #)
highlightstringHighlight color
superScriptbooleanSuperscript
subScriptbooleanSubscript

Table Options

PropertyTypeDescription
rowsarrayArray of row specifications
widthnumberTable width as percentage
bordersbooleanShow table borders

Hyperlink Options

PropertyTypeDescription
textstringLink text
urlstringTarget URL
boldbooleanBold formatting
italicbooleanItalic formatting

Common Issues and Solutions

Issue: Placeholders not being replaced

Symptoms: Output DOCX still contains {{PLACEHOLDER}} tags.

Solution: 1. Run analyze-template.ts to verify exact tag text 2. Tags may be split across XML runs - the script consolidates these automatically 3. Ensure includeHeaders and includeFooters are true if placeholders are there

Issue: Formatting lost after replacement

Symptoms: Replaced text doesn't match original formatting.

Solution:

  • Text replacement preserves the formatting of the original placeholder
  • Ensure placeholder is formatted the way you want the final text to appear

Issue: Images not appearing

Symptoms: Image elements are blank in output.

Solution: 1. Use paths relative to the spec.json file location 2. Verify image file exists and is readable 3. Check supported formats: PNG, JPEG, GIF

Issue: Table cell content incorrect

Symptoms: Table cells have wrong content or formatting.

Solution:

  • Each cell's content must be an array of paragraph specifications
  • Use shading for background color, verticalAlign for alignment

Limitations

  • DOCX only: Does not support legacy .doc format
  • No track changes: Cannot add or process track changes
  • No comments: Cannot add document comments
  • No macros: Cannot include VBA macros
  • Basic numbering: Limited support for complex numbering schemes
  • Text run splitting: Word may split text across XML elements; script handles common cases

Related Skills

  • pptx-generator: For creating PowerPoint presentations
  • xlsx-generator: For creating Excel spreadsheets
  • pdf-generator: For creating PDF documents

Related skills

How it compares

Use docx-generator for Deno-based DOCX template parsing; choose PDF or HTML report skills when deliverables are not Word documents.

FAQ

How does docx-generator analyze a Word template?

docx-generator runs Deno analyze-template.ts with --allow-read on an input .docx, using JSZip 3.10.1 to unpack the file and extract paragraphs, tables, headers, footers, and placeholders as JSON for replacement planning.

What runtime does docx-generator require?

docx-generator expects Deno with read permissions (deno run --allow-read). It depends on JSR @std/cli and @std/path plus npm:jszip for parsing Office Open XML inside .docx archives.

Is Docx Generator safe to install?

skills.sh reports 2 of 3 security scanners passed. Review the Security Audits panel on this page before installing in production.

Documentationdocsintegrations

This week in AI coding

Five minutes, every Monday - the tools, releases and tactics for developers.

unsubscribe anytime.