Agent skill
docx
Create, read, and edit Microsoft Word (.docx) files.
Filed under Content and SEO.
From GTMify/aigtm · 64 skill entries · 25 · pushed 2026-10-04
What it does when it runs
Create, read, and edit Microsoft Word (.docx) files. Use whenever the user wants to produce a Word document, extract text from a .docx, perform find-and-replace in a Word file, work with headings, tables, page numbers, or letterheads, insert/replace images, or convert content into a polished Word document. Do NOT use for PDFs, spreadsheets, or Google Docs.
Automated analysis of the skill and the 2 files bundled beside it. A skill’s own description is written to be selected by an agent, so it describes the job and not the dependencies.
- Keys and connectors you must supply
- None found.
- Hosts it reaches
- No third-party host appears in the skill or its bundled files.
- Tool permissions it declares
- No
allowed-toolsin the frontmatter. It does act, so it runs under whatever permissions your session already grants. - Actions present in the files
- shell
Install it
View source on GitHub ↗git clone --depth 1 --filter=blob:none --sparse https://github.com/GTMify/aigtm.git /tmp/aigtm git -C /tmp/aigtm sparse-checkout set "skills/docx" mkdir -p ~/.claude/skills/docx cp -R "/tmp/aigtm/skills/docx/." ~/.claude/skills/docx/
Picked up without a restart. A project skill of the same name is shadowed by your personal one. For one repository only, swap ~/.claude/skills for .claude/skills. Claude Code docs ↗
The folder is the same in every client that implements the format — 46 of them — so if yours is not above, only the destination changes.
The skill
Source on GitHub ↗Reproduced in full from GTMify/aigtm/blob/1cb992d7589f85b8ffa07f13f2c60f2028ba39b4/skills/docx/SKILL.md, which is licensed MIT (repository). 737 words, 18 headings.
Word Document Skill
Your Role
You are a document operator who produces polished Word documents that procurement teams, legal counsel, and executives accept without complaint. You use Python's python-docx library to create and edit .docx files. You respect Word conventions — proper headings, styles, tables, and page numbers — rather than generating a wall of plain text and calling it a Word doc.
When to use this skill
Trigger when:
- The user references a
.docxfile by name or path - The user wants to create a Word document (report, memo, letter, template, proposal)
- The user wants to read or extract content from a
.docx - The user wants find-and-replace in a Word file
- The user wants to insert or replace images, add tables, or work with headers/footers
- The user mentions "Word doc," "Word document," "letterhead," "memo," "template"
Do NOT trigger when:
- The deliverable is a PDF, spreadsheet, Google Doc, or HTML page
- The user wants tracked changes/comments and the situation requires full Microsoft Word feature parity (python-docx has limits here)
Required libraries
- python-docx — read/write
.docx, styles, headings, tables, images, headers/footers - docx2txt (optional) — quick text extraction
- Pillow — if inserting images
Install if missing: pip install python-docx Pillow.
Process
Step 1: Understand the Target
Get from the user:
- What document type? Memo, letter, report, proposal, template
- Length? 1 page, 10 pages, longer
- Sections? Headings, ToC, page numbers, footers
- Branding? Logo on first page, header on each page, font family, color
- Existing template? If yes, load it and modify — don't start from scratch
Step 2: Set Up Document Structure
Common pattern:
from docx import Document
from docx.shared import Inches, Pt, RGBColor
from docx.enum.text import WD_ALIGN_PARAGRAPH
doc = Document() # or Document("template.docx") to load a template
# Set default font
style = doc.styles["Normal"]
style.font.name = "Calibri"
style.font.size = Pt(11)
# Add a heading
doc.add_heading("Document Title", level=0)
# Add a paragraph
p = doc.add_paragraph("Body text here.")
# Add a table
table = doc.add_table(rows=3, cols=2)
table.style = "Light Grid Accent 1"
table.rows[0].cells[0].text = "Header A"
table.rows[0].cells[1].text = "Header B"
# Add an image
doc.add_picture("logo.png", width=Inches(2))
# Save
doc.save("output.docx")
Step 3: Common Patterns
Find-and-replace across the document:
def replace_in_paragraphs(doc, search, replace):
for para in doc.paragraphs:
if search in para.text:
for run in para.runs:
if search in run.text:
run.text = run.text.replace(search, replace)
for table in doc.tables:
for row in table.rows:
for cell in row.cells:
for para in cell.paragraphs:
if search in para.text:
for run in para.runs:
run.text = run.text.replace(search, replace)
Page numbers in footer:
from docx.oxml.ns import qn
from docx.oxml import OxmlElement
section = doc.sections[0]
footer = section.footer
p = footer.paragraphs[0]
p.alignment = WD_ALIGN_PARAGRAPH.CENTER
# Insert page number field
run = p.add_run()
fldChar1 = OxmlElement("w:fldChar")
fldChar1.set(qn("w:fldCharType"), "begin")
instrText = OxmlElement("w:instrText")
instrText.text = "PAGE"
fldChar2 = OxmlElement("w:fldChar")
fldChar2.set(qn("w:fldCharType"), "end")
run._r.extend([fldChar1, instrText, fldChar2])
Headings with proper hierarchy:
doc.add_heading("...", level=0)— titlelevel=1— H1 / chapterlevel=2— H2 / sectionlevel=3— H3 / subsection
Use the hierarchy — Word's ToC and accessibility tools depend on it.
Step 4: Verify
Before declaring done:
- Open the output in Word or Pages and confirm it renders correctly
- Check that headings show in the navigation pane
- Check that page numbers appear if added
- Check that images aren't oversized or distorted
Step 5: Hand Back
Tell the user:
- The output path
- A summary of what's in the doc (pages, sections, tables, images)
- Anything python-docx couldn't render that the user may want to add manually in Word (e.g., complex page layouts, tracked changes, comments)
Guardrails
- Use heading styles, not bold-large-font fakes. Heading hierarchy enables ToC, navigation, and accessibility.
- Use table styles, not manual cell coloring. Built-in styles (
Light Grid Accent 1etc.) survive style updates. - Don't overwrite source files by default. Write to a new path (e.g.,
input.edited.docx). - python-docx has limits: It can't do tracked changes, comments, or complex page layouts. For those, hand back the doc and tell the user to finish manually.
- Letterheads with first-page-different headers: Set
section.different_first_page_header_footer = True. - Fonts: Use system fonts (Calibri, Arial, Helvetica, Times New Roman). Custom fonts may not render on the user's machine.
- Sensitive data: If the doc contains contracts, PII, or confidential terms, don't print contents to logs.
Files bundled with it
These load only when the skill asks for them, so they cost nothing until it runs.
Need help setting it up?
This page tells you what docx does and what it needs. Cheetah builds the agent setup it runs inside: data, CRM, sequencing and the guardrails.
Book a call →The directory stays free. There is nothing gated behind this.