mirror of
https://github.com/magnus919/agent-skills.git
synced 2026-09-20 16:16:25 +03:00
c49666e29a
* feat(skill): add documents family skill (PDF / Word / Excel / PowerPoint) One family skill for PDF, Word (.docx), Excel (.xlsx), and PowerPoint (.pptx) per the family-skill rule (epub precedent): shared workflow in SKILL.md (scope, content model, template, render, validate, deliver) with per-format load-on-demand references, generation templates per format, a stdlib validation script (--json, structural sanity + render check with graceful degradation), one fixture per format, a unittest suite, six output-quality eval cases spanning all four formats, a human README, the README.md index entry, and regenerated catalogs. Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com> * fix(skill): dispatch PDF renderer args per binary in documents validation The render check passed pdftoppm-only flags (-png/-r/-f/-l) to mutool and ghostscript, which reject them, so a machine with only mutool or gs would false-FAIL valid PDFs. Dispatch per-renderer argument sets (pdftoppm -png; mutool draw -o; gs -sDEVICE=png16m) and cover the dispatch with a unit test. Also: count PDF pages via the /Count page-tree fallback (page objects can hide in compressed ObjStm streams), drop the stale "unsupported input" exit-2 claim from the docstring, and stop labeling skipped files with a FAIL check. Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com> * style(skill): drop redundant local tempfile import in renderer dispatch test Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com> --------- Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
51 lines
1.6 KiB
Markdown
51 lines
1.6 KiB
Markdown
# Excel (.xlsx) Generation Template
|
|
|
|
Fill every `[fill: ...]` marker with content from the data model, then
|
|
generate the .xlsx (openpyxl, or raw OPC for tiny workbooks). Delete this
|
|
instruction block after filling.
|
|
|
|
## Workbook metadata
|
|
|
|
- **Workbook title:** _[fill: workbook name]_
|
|
- **Owner / source:** _[fill: team and data source]_
|
|
- **Date generated:** _[fill: YYYY-MM-DD]_
|
|
- **Version:** _[fill: 1.0]_
|
|
|
|
## Scope contract
|
|
|
|
- **Purpose:** _[fill: what decisions this workbook supports]_
|
|
- **Sheet list:** _[fill: one line per sheet: name and content]_
|
|
- **Source of truth:** _[fill: path to the source data (CSV/JSON/etc.)]_
|
|
|
|
## Sheet layout — _[fill: sheet name]_
|
|
|
|
### Columns
|
|
|
|
| Column | Header text | Type (number/date/text/currency) | Notes |
|
|
|--------|-------------|----------------------------------|-------|
|
|
| A | _[fill: header]_ | _[fill: type]_ | _[fill: notes]_ |
|
|
| B | _[fill: header]_ | _[fill: type]_ | _[fill: notes]_ |
|
|
|
|
### Rows
|
|
|
|
- **Row 1 header row:** _[fill: yes]_
|
|
- **Data rows:** _[fill: source path or inline rows]_
|
|
- **Formulas:** _[fill: which cells hold formulas and what they compute; every
|
|
formula cell must carry a cached value]_
|
|
|
|
### Styling
|
|
|
|
- **Number formats:** _[fill: currency/date formats per column]_
|
|
- **Column widths:** _[fill: widths so data is not clipped]_
|
|
- **Freeze panes:** _[fill: header row frozen?]_
|
|
|
|
## Validation gate
|
|
|
|
```bash
|
|
python3 scripts/validate-documents.py --render-check --json output.xlsx
|
|
```
|
|
|
|
- **Structure passed:** _[fill: script exit code and status]_
|
|
- **Render check:** _[fill: ok or unavailable, with renderer used]_
|
|
- **Spot check:** _[fill: 2-3 cells compared against source data, confirmed]_
|