docx-creator — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited docx-creator (Agent Skill) and scored it 91/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 1 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 1 flagged
The text {match} is the classic direct prompt-injection phrasing. Placed in a skill body that the agent reads as trusted instructions, it tries to make the agent abandon its prior rules and follow whatever comes next — a full system-prompt override.
ignore/disregard/forget … previous instructions sentence.Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
Create and edit Microsoft Word (.docx) documents programmatically using python-docx. Handles documents from simple letters to complex reports with tables, headers, footers, and styles.
pip install python-docxFor reading complex .docx files: python-docx handles most cases. For advanced conversion (docx → PDF, docx → HTML), add libreoffice (CLI) or pandoc.
Ask or infer:
from docx import Document
from docx.shared import Inches, Pt, RGBColor
from docx.enum.text import WD_ALIGN_PARAGRAPH
doc = Document()from docx.oxml.ns import qn
import docx
# Set margins
sections = doc.sections
for section in sections:
section.top_margin = Inches(1)
section.bottom_margin = Inches(1)
section.left_margin = Inches(1.25)
section.right_margin = Inches(1.25)doc.add_heading("Document Title", level=0) # Title style
doc.add_heading("Section 1", level=1) # Heading 1
doc.add_heading("Subsection 1.1", level=2) # Heading 2para = doc.add_paragraph("This is a paragraph with ")
run = para.add_run("bold text")
run.bold = True
para.add_run(" and normal text.")
# Alignment
para.alignment = WD_ALIGN_PARAGRAPH.JUSTIFY
# Custom font
run.font.name = "Calibri"
run.font.size = Pt(11)
run.font.color.rgb = RGBColor(0x00, 0x00, 0x00)table = doc.add_table(rows=1, cols=3)
table.style = "Table Grid"
# Header row
header_cells = table.rows[0].cells
header_cells[0].text = "Name"
header_cells[1].text = "Role"
header_cells[2].text = "Department"
# Data rows
data = [("Alice", "Engineer", "Platform"), ("Bob", "Designer", "Product")]
for name, role, dept in data:
row_cells = table.add_row().cells
row_cells[0].text = name
row_cells[1].text = role
row_cells[2].text = dept# Bullet list
doc.add_paragraph("First item", style="List Bullet")
doc.add_paragraph("Second item", style="List Bullet")
# Numbered list
doc.add_paragraph("Step one", style="List Number")
doc.add_paragraph("Step two", style="List Number")doc.add_picture("chart.png", width=Inches(5.0))
# Add caption
doc.add_paragraph("Figure 1: Quarterly Revenue", style="Caption")section = doc.sections[0]
header = section.header
header_para = header.paragraphs[0]
header_para.text = "Confidential - Company Name"
header_para.alignment = WD_ALIGN_PARAGRAPH.RIGHTdoc.save("output.docx")doc = Document("existing.docx")
# Extract all text
for para in doc.paragraphs:
print(para.style.name, ":", para.text)
# Extract tables
for table in doc.tables:
for row in table.rows:
print([cell.text for cell in row.cells])Document("template.docx") to inherit stylesdoc.add_page_break() between major sectionsdoc.styles to list available styles before applying custom onespython-docx does not support these - use LibreOffice CLI for conversion instead~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.