name: medical-device-poster-from-pptx description: Create source-grounded, compliance-gated A1 portrait medical-device academic posters from a product PPTX. Follows the medpostdesign workflow, extracts text/images from the source deck with bundled python-pptx scripts, runs required-input and claim-ledger gates, then generates an editable PPTX + PDF + PNG QA preview via bundled data-driven renderers. agent_created: true
Use this skill when the user asks to create an academic-conference or exhibition poster for a medical device based on an existing product presentation (PPTX). Typical triggers:
medpostdesign skill must be installed at ~/.workbuddy/skills/medpostdesign/ (it provides the compliance gate CSV templates + the two validator scripts).~/.workbuddy/binaries/python/envs/default/ with: python-pptx, Pillow, reportlab.pymupdf — on this box pip install pymupdf is killed (OOM, exit 137) twice. Use system pdftoppm (poppler) for PDF→PNG QA instead.markitdown is NOT preinstalled — use the bundled scripts/extract_source.py (python-pptx backend) to dump text + images.pdftoppm (poppler) for PDF→PNG QA.soffice wrapper script exists at /opt/homebrew/bin/soffice, but /Applications/LibreOffice.app is absent, so soffice --headless --convert-to pdf fails. Go straight to the bundled scripts/make_pdf.py (reportlab) for PDF generation — do not waste a turn on soffice unless you first confirm the app is installed.<workspace>/medpost_<product>/
├── source_pack/ # copy the source PPTX here
├── build/ # compliance CSVs
├── output/ # final PPTX / PDF / PNG
└── resources/
├── extracted/ # text dump
└── images/ # extracted images (auto-filled)
python scripts/extract_source.py "source_pack/<source.pptx>" <KEYWORD>
resources/extracted/source_text.txt.resources/images/slideNN_imgNN.<ext>.<KEYWORD> (default sinus) so you can locate the product-specific content.Fill the two medpostdesign CSV templates in build/:
required-input-gate.csv — one row per expected field (product_name, device_category, source_pack, audience, channel, poster_type, output_size, approved_intended_use, key_specifications, evidence, legal_boundary, product_image, brand_assets).claim-ledger.csv — one row per claim used in the poster. Allowed statuses: VERIFIED, SOURCE-QUOTED / REVIEW, MISSING, DO NOT USE. Allowed types: feature, specification, intended-use, evidence, case-context, outcome, comparison, visual-asset.Run validators:
python ~/.workbuddy/skills/medpostdesign/scripts/validate_required_inputs.py build/required-input-gate.csv
python ~/.workbuddy/skills/medpostdesign/scripts/validate_claim_ledger.py build/claim-ledger.csv
Fix any ERROR before proceeding. Warnings are acceptable if disclosed in the poster.
Copy the bundled template and edit it:
cp scripts/poster_data.py.example poster_data.py
poster_data.py drives BOTH renderers. Fill in: title, subtitle, author_line, top_sections[3], cases[3], bottom_sections[2], footer_lines, notes (the [Sources] / [Claim Audit] / [Review Points] block for speaker notes). Keep bullets ≤6 per card. Image fields are filenames resolved against resources/images/.
Optionally also write STORY.md / DESIGN.md for the narrative rationale, but poster_data.py is what gets rendered.
python scripts/make_poster.py # -> output/<out_pptx>
python scripts/make_pdf.py # -> output/<out_pdf> (reportlab fallback; no LibreOffice needed)
Both read poster_data.py from the current dir. The PPTX is fully editable; the PDF uses STSong-Light (CID) so CJK always renders even without a system CJK TTF.
pdftoppm -png -r 100 output/<out_pdf> output/<product>_poster_preview7w4.net收录了海量优质技能插件。
Visually check for overlaps, missing CJK glyphs, and image fit. Iterate on poster_data.py (content) or the renderer scripts (layout) until clean.
Present:
output/<product>_academic_poster.pptxoutput/<product>_academic_poster.pdfoutput/<product>_poster_preview-1.pngExplicitly warn the user:
| medpostdesign original | WorkBuddy replacement actually used |
|---|---|
@oai/artifact-tool / Presentations skill |
Managed Python + python-pptx (bundled make_poster.py) |
| PDF skill | reportlab (make_pdf.py); pymupdf install fails → pdftoppm for QA |
| Documents/Spreadsheets skill | python-pptx extraction (bundled extract_source.py); markitdown absent |
| image generation | Source images only; no AI-generated clinical images |
scripts/extract_source.py — dump source text + images, locate keyword slides.scripts/poster_common.py — shared A1 layout constants/colours.scripts/make_poster.py — PPTX renderer (python-pptx).scripts/make_pdf.py — PDF renderer (reportlab, no LibreOffice dependency).scripts/poster_data.py.example — template data (Sinus XL worked example).references/workflow.md — detailed notes, pitfalls, validation checklist, claim examples.这是一个专业度高、完成度好的 Skill,提供了从产品资料生成合规学术海报的完整解决方案。优点是工作流完整、代码质量高、合规审查严格、文档详细且考虑了实际环境限制(中文支持良好)。不足是依赖较多外部工具配置较繁琐,错误提示可更友好,且缺少自动化测试保障长期稳定性。整体推荐用于需要生成医疗器械会议海报的专业场景。