视觉画布设计
canvas-design
基于设计原则创作静态视觉作品,用于海报与品牌图形。
document-pptx【文档与办公】Builds and edits PowerPoint (.pptx) slide decks and templates with PPTX-Automizer. Use when you make or build a slide deck or presentation, or repair one.
独立 GitHub 快照 · 自动分类 · 以原作者文档为准
Boundary: when the claude.ai Slides artifact type or the official Anthropic pptx skill is available, prefer it for plain create/edit, generic template fill and visual QA. Use this skill for its specialist lanes:
| Job | Default | Notes |
|---|---|---|
| Inspect a template before any fill | scripts/pptx_inventory.py --json | Layout names, placeholder idx and type, shape names |
| Inspect a damaged deck or its parts | scripts/pptx_ooxml_inspect.py | Broken relationships, missing targets, repair dialogs |
| Extract or back up speaker notes | scripts/pptx_extract_notes.py | Markdown or JSON |
| Fill a designer-owned template | PPTX-Automizer | Named-element replacement only (chart data, text, table, image) |
| Python reporting or extraction | python-pptx | Standard charts, notes, placeholders |
| JS/TS or browser export | PptxGenJS | Real combo charts; 16:9 default layout |
| Script | 0 | 1 | 2 |
|---|---|---|---|
pptx_ooxml_inspect.py | No broken relationship targets | Broken targets found (gate). --report-only exits 0 for well-formed packages with broken targets | File missing, invalid package or malformed relationship part |
pptx_inventory.py / pptx_extract_notes.py | Written | n/a | File missing, unreadable, or not a .pptx |
1 in slide.placeholders is always False; test against {ph.placeholder_format.idx for ph in slide.placeholders}. See references/pptx-template-branding.md.python-pptx has no animation API (no build or entrance effects) and no slide-transition API. Both need direct OOXML <p:timing>/<p:transition> edits; see references/pptx-animations-transitions.md before promising motion.
python-pptx cannot create a true combo chart (column plus line); it has no multi-plot chart constructor. Fill a template combo chart with replace_data, or use PptxGenJS.
python-pptx has no gradient-fill API and no supported way to edit theme colours (theme1.xml). Both need direct XML edits with a backup first.
The colour class is RGBColor (from pptx.dml.color), not RgbColor; the wrong case raises ImportError.
Default slide sizes differ: python-pptx's default template is 10 × 7.5 in (4:3), PptxGenJS's default is 10 × 5.625 in (16:9). Check every shape and chart against the target size (y + h <= slide height); positions copied from a 4:3 example run off a 16:9 slide.
PptxGenJS has no slide-transition or auto-advance option; slide.transition / advanceAfter are silently ignored. Write <p:transition> OOXML instead.
PPTX-Automizer's modifyElement(selector, callback) takes modification callbacks (ModifyTextHelper.setText(...), ModifyTableHelper.setTable(...), ModifyChartHelper.setChartData(...)), not an options object like { text: ... }.
Blind template edits can break timing, media or repairability. Keynote or Google Slides opening a file cleanly does not confirm PowerPoint compatibility, and the reverse is also true.
Library behaviour changes between releases. Re-test a claimed API gap or default against the installed version before relying on it, and mark it unverified when you cannot.
pptx_inventory.py --json, pptx_ooxml_inspect.py --json) before any automation change.After the final save, reopen the deck and inventory slide count, layout names, placeholders, media relationships, chart data, and speaker notes. Render every slide to images or PDF in the declared delivery target and inspect for clipped text, font substitution, objects outside the slide, broken chart labels, low-resolution images, and unintended blank placeholders. Require an actual PowerPoint pass when PowerPoint fidelity or accessibility is an acceptance criterion; otherwise use the available target renderer and mark PowerPoint fidelity unverified.
Compare charts and headline figures with the source data after rendering, not only in the generation code. For template edits, confirm that masters and theme relationships still resolve and that the declared target viewer opens the file without a repair dialog. Record any viewer-specific variance instead of treating one viewer as proof for another.
References
Scripts
Templates
When prior decisions or pitfalls are relevant, consult learnings.consolidated.md if present; use learnings.md only for needed history or as the available fallback. Otherwise skip both.
After applying it, if you encountered a pattern worth remembering, a mistake worth preventing, or a domain fact that surprised you, append one dated bullet to learnings.md via agents-skills-feedback-loop/scripts/append_learning.py. Do not modify SKILL.md itself.