Python docx
Skill cxcscmu/SkillLearnBench/skills/b1-one-shot-gemini-3-flash-preview/offer-letter-generator/python-docx
Manipulate Word documents (.docx) using Python, including placeholder replacement and conditional section handling.From its SKILL.md
npx -y skills add cxcscmu/SkillLearnBench --skill python-docxAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
SKILL.md
1.9 KB, 384 tokens by cl100k_base, as published. Nobody here has run it
python-docx Skill
python-docx is a Python library for creating and updating Microsoft Word (.docx) files.
Installation
pip install python-docx
Basic Usage
Loading and Saving
from docx import Document
doc = Document('template.docx')
# ... modify doc ...
doc.save('output.docx')
Placeholder Replacement
To replace placeholders like {{NAME}} while preserving formatting, iterate through paragraphs and their runs.
def replace_placeholders(doc, data):
for p in doc.paragraphs:
for run in p.runs:
for key, value in data.items():
placeholder = f'{{{{{key}}}}}'
if placeholder in run.text:
run.text = run.text.replace(placeholder, str(value))
Conditional Sections
For sections like {{IF_CONDITION}}...{{END_IF_CONDITION}}, you can identify the start and end points and remove the content or just the markers.
def handle_conditionals(doc, condition_key, keep_content):
start_marker = f'{{{{IF_{condition_key}}}}}'
end_marker = f'{{{{END_IF_{condition_key}}}}}'
# This is a simplified approach for text-based conditionals within paragraphs
for p in doc.paragraphs:
if start_marker in p.text and end_marker in p.text:
if keep_content:
p.text = p.text.replace(start_marker, "").replace(end_marker, "")
else:
# Remove content between markers (regex or string find)
import re
p.text = re.sub(f'{re.escape(start_marker)}.*?{re.escape(end_marker)}', '', p.text)
Note: Complex conditionals spanning multiple paragraphs require more advanced logic iterating through the document element tree.
What ships with it
Read from the repository
Just SKILL.md. No reference files, no scripts.