Install
$ agentstack add skill-chacosoldier-compabob-document-export ✓ scanned · ✓ verified, works with Claude Code, Cursor, and more.
Security review
✓ PassedNo issues found. Passed automated security review. · v0.1.0 How review works →
- ✓ Prompt-injection patterns
- ✓ Secret / credential exfiltration
- ✓ Dangerous shell & filesystem operations
- ✓ Untrusted network calls
- ✓ Known-malicious package signatures
What it can access
- ✓ Network access No
- ✓ Filesystem access No
- ✓ Shell / process execution No
- ✓ Environment & secrets No
- ✓ Dynamic code execution No
From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.
Verified badge
Passed review? Show it. Paste this badge into your README, it links to the public security report.
Reliability & compatibility
Declared compatibility
Compatibility is declared by the source manifest. End-to-end runtime verification is coming, see below.
We're building live execution health for every listing: tool-call success rate, median latency, uptime, and last-checked timestamps, measured, not self-reported. It isn't live yet, so we don't show numbers we can't stand behind.
How agent discovery & health will work →About
Document Export
Turn content into a real office file: a PDF, an Excel workbook, or a Word document. The skill ships three helper scripts that do the file writing deterministically; your job is to assemble the content and call the right one.
These scripts use the Python standard library only, so there is nothing to install for Excel and Word. PDF needs a browser or a PDF tool on the machine (the script finds it, or tells the user what to install).
Save every output to reports/ as YYYY-MM-DD-., then tell the user the path.
PDF is produced by rendering an HTML file. Two cases:
- Rich, visual page (architecture, dashboard, comparison): use the
visual-explainer skill to build the HTML, then convert it.
- Plain document (a letter, a report, a write-up): wrap the content in this
minimal template and save it as an .html file:
TITLE
@page { margin: 2cm; }
body { font: 11pt/1.55 -apple-system, "Segoe UI", Roboto, sans-serif;
color: #1a1a1a; max-width: 46em; margin: 0 auto; }
h1, h2, h3 { line-height: 1.25; }
h1 { font-size: 1.8em; } h2 { font-size: 1.35em; margin-top: 1.6em; }
table { border-collapse: collapse; width: 100%; }
th, td { border: 1px solid #ccc; padding: 6px 10px; text-align: left; }
code { background: #f4f4f4; padding: 1px 4px; border-radius: 3px; }
Then convert:
python3 .claude/skills/document-export/to_pdf.py reports/-.pdf
It tries headless Chrome first, then weasyprint, then wkhtmltopdf. If it reports that no engine is found, relay its install hint to the user; do not try to work around it.
Excel (.xlsx)
Build a JSON spec, write it to a temporary file, and run the writer.
Spec shape:
{
"sheets": [
{
"name": "Results",
"header": true,
"rows": [["Name", "Score"], ["Alice", 90], ["Bob", 85]],
"widths": [24, 10]
}
]
}
header: truebolds the first row.widths(column widths in characters) is
optional. Multiple sheets are allowed.
- Cell values may be strings, numbers, booleans, or
null(an empty cell).
Keep numbers as numbers in the JSON so Excel treats them as numeric.
Run it:
python3 .claude/skills/document-export/to_xlsx.py /tmp/export-spec.json reports/-.xlsx
You can also pipe the spec on stdin by passing - instead of a file path.
Word (.docx)
Build a JSON spec of blocks, then run the writer.
Spec shape:
{
"title": "Optional document title",
"blocks": [
{"type": "heading", "level": 2, "text": "A section"},
{"type": "paragraph", "text": "A plain paragraph."},
{"type": "paragraph", "runs": [
{"text": "mixed ", "bold": true},
{"text": "formatting", "italic": true}
]},
{"type": "bullets", "items": ["first point", "second point"]},
{"type": "numbered", "items": ["step one", "step two"]},
{"type": "table", "header": true, "rows": [["Col A", "Col B"], ["1", "2"]]}
]
}
headinglevels are 1 to 3. Aparagraphcarries plaintext(with optional
bold / italic for the whole paragraph) or a list of runs for mixed formatting. table rows are lists of cell strings; header: true bolds the first row.
Run it:
python3 .claude/skills/document-export/to_docx.py /tmp/export-spec.json reports/-.docx
After exporting
- Delete any temporary spec file you created.
- Give the user the exact path of the file.
- If the user wants to share the file, that is an outward action: hand it over,
do not send it anywhere yourself.
Scope
These writers cover the structure that carries content: values, headings, formatting, lists, simple tables, column widths. They do not do Excel formulas, charts, or merged cells, or Word images, footnotes, or page headers. If a request needs those, say so and either extend the script or, if the user has the openpyxl or python-docx library available, write a one-off script with it instead.
Source & license
This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.
- Author: chacosoldier
- Source: chacosoldier/compabob
- License: MIT
Install and usage instructions live in the source repository linked above.
Reviews
No reviews yet, be the first.
Write a review
Versions
- v0.1.0 Imported from the upstream source.