agentsclimarketplace

Run2 docx expert

Skill cxcscmu/SkillLearnBench/skills/b2-self-feedback-gemini-3-flash-preview/offer-letter-generator/run2_docx-expert

[COLM'26] SkillLearnBench is the first benchmark for evaluating continual learning methods that automatically generate agent skills.

Install
npx -y skills add cxcscmu/SkillLearnBench --skill run2_docx-expert

Assembled from the repository path, not quoted from the project. Check it against their README if it does not work.

What its author says it does

Copied from the file, not written here

Advanced techniques for Word document automation, including handling split runs, headers/footers, and complex conditionals.

SKILL.md

2.4 KB, as published. Nobody here has run it

Advanced Word Document Automation

Handling Split Runs

Placeholders like {{NAME}} are often split across multiple Run objects in python-docx. Replacing paragraph.text destroys formatting. To preserve formatting, use a function that merges runs or carefully replaces text while keeping properties.

Safe Replacement Strategy

def replace_text_in_paragraph(paragraph, key, value):
    if key not in paragraph.text:
        return
    
    # Simple strategy: If the placeholder is entirely within one run, replace it there.
    # Otherwise, use paragraph.text but be aware formatting is lost.
    # A better approach for preservation:
    full_text = "".join(run.text for run in paragraph.runs)
    if key in full_text:
        new_text = full_text.replace(key, value)
        # Clear runs and add a single run (loses specific bold/italic if mixed)
        # Or, if formatting is critical, use a more complex run-merging algorithm.
        for i in range(len(paragraph.runs)):
            paragraph.runs[i].text = ""
        paragraph.runs[0].text = new_text

Headers and Footers

Templates often have placeholders in headers/footers.

for section in doc.sections:
    for header_p in section.header.paragraphs:
        # process header_p
    for footer_p in section.footer.paragraphs:
        # process footer_p

Robust Conditionals

If {{IF_TAG}} is on its own line, removing the paragraph is correct. If it is inline, you must use string replacement to remove the tags and content.

def handle_conditional_block(doc, condition, start_tag, end_tag):
    # This implementation assumes tags are on their own paragraphs for simplicity,
    # which is common for "blocks" of text like relocation details.
    delete_mode = False
    paragraphs_to_remove = []
    for p in doc.paragraphs:
        if start_tag in p.text:
            delete_mode = not condition
            paragraphs_to_remove.append(p)
            continue
        if end_tag in p.text:
            delete_mode = False
            paragraphs_to_remove.append(p)
            continue
        if delete_mode:
            paragraphs_to_remove.append(p)
    
    for p in paragraphs_to_remove:
        p._element.getparent().remove(p._element)

Keep looking

Skills are one crate of 328,083. 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.