agentsclimarketplace

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

Install
npx -y skills add cxcscmu/SkillLearnBench --skill python-docx

Assembled 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.

Keep looking

Skills are one crate of 325,949. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.