mirror of
https://github.com/magnus919/agent-skills.git
synced 2026-09-11 19:47:12 +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>
1.7 KiB
1.7 KiB
PowerPoint (.pptx) Generation Template
Fill every [fill: ...] marker with content from the slide outline, then
generate the .pptx (python-pptx, or raw OPC for tiny decks). Delete this
instruction block after filling.
Deck metadata
- Deck title: [fill: presentation title]
- Presenter / owner: [fill: presenter or team]
- Audience: [fill: who sees this and the setting]
- Date: [fill: YYYY-MM-DD]
- Version: [fill: 1.0]
Scope contract
- Purpose: [fill: what the talk decides or informs]
- Slide budget: [fill: expected slide count]
- Aspect ratio: [fill: 16:9 or 4:3]
- Layout family: [fill: which layout to reuse across slides]
- Source of truth: [fill: path to the outline content model]
Slide outline
Slide 1 — Title
- Title: [fill: deck title]
- Subtitle: [fill: presenter, date]
Slide 2 — [fill: section title]
- Title: [fill: slide title]
- Bullets: [fill: one bullet per line; keep short enough to fit]
- Notes: [fill: speaker notes]
Slide N — [fill: section title]
- Title: [fill: slide title]
- Bullets: [fill: one bullet per line; keep short enough to fit]
- Notes: [fill: speaker notes]
Assets
- Images: [fill: image paths; confirm they will be embedded in ppt/media]
- Charts/tables: [fill: any data visuals and their source data]
Validation gate
python3 scripts/validate-documents.py --render-check --json output.pptx
- Structure passed: [fill: script exit code and status]
- Render check: [fill: ok or unavailable, with renderer used]
- Slide count observed: [fill: matches scope?]
- Overflow check: [fill: longest bullet verified to fit, or flagged]