Skills › Scientific Agent Skills › pptx-posters › poster_quality_checklist.md
poster_quality_checklist.md
194 lines · skills/pptx-posters/assets/poster_quality_checklist.md at 5f2bc03
Most marks come from matching words in the file, so treat them as pointers.
1# PPTX poster release checklist
3Use this checklist for the final generated package and every exported/printed
4derivative. A script pass is necessary but not sufficient.
PPTX poster release checklist
Use this checklist for the final generated package and every exported/printed derivative. A script pass is necessary but not sufficient.
Raw lines 1 to 56## 1. Requirements and approval
8- [ ] The organizer's current poster rule is recorded with an exact source ID.
9- [ ] The printer's current trim, bleed, safe-margin, scaling, file-format, and
10 color requirements are recorded with an exact source ID.
11- [ ] The selected physical trim size and orientation comply with those records.
12- [ ] No generic "standard poster size" was substituted for organizer/printer rules.
13- [ ] Every claim, number, citation, author name, affiliation, logo, figure, and
14 asset license has an exact source ID.
15- [ ] Every source record is marked author-verified.
16- [ ] Every element and asset is marked author-approved.
17- [ ] No placeholder, sample claim, invented citation, or inferred result remains.
18- [ ] The approving author reviewed the canonical content hash after the final edit.
20Run:
22```bash
23python -B scripts/validate_manifest.py poster.json
24```
1. Requirements and approval
- [ ] The organizer's current poster rule is recorded with an exact source ID.
- [ ] The printer's current trim, bleed, safe-margin, scaling, file-format, and color requirements are recorded with an exact source ID.
- [ ] The selected physical trim size and orientation comply with those records.
- [ ] No generic "standard poster size" was substituted for organizer/printer rules.
- [ ] Every claim, number, citation, author name, affiliation, logo, figure, and asset license has an exact source ID.
- [ ] Every source record is marked author-verified.
- [ ] Every element and asset is marked author-approved.
- [ ] No placeholder, sample claim, invented citation, or inferred result remains.
- [ ] The approving author reviewed the canonical content hash after the final edit.
Run:
python -B scripts/validate_manifest.py poster.jsonRaw lines 6 to 25Runs code scripts/validate_manifest.py :23
26## 2. Safe local generation
28- [ ] Generation used the exact versions in `generation_dependencies.json`.
29- [ ] All optional image paths are manifest-relative local PNG/JPEG files.
30- [ ] Every asset hash matches.
31- [ ] Every asset has exact provenance and a license/permission statement.
32- [ ] No template file, remote image, URL download, API key, environment file,
33 image-generation service, or network service was used.
34- [ ] The output path was new; no existing file was replaced.
35- [ ] The generated file is `.pptx`, never `.pptm`.
37Run:
39```bash
40uv run --no-project --with "python-pptx==1.0.2" --with "Pillow==12.3.0" \
41 --with "lxml==6.1.3" \
42 python -B scripts/generate_poster.py poster.json --output poster.pptx
43```
2. Safe local generation
- [ ] Generation used the exact versions in
generation_dependencies.json. - [ ] All optional image paths are manifest-relative local PNG/JPEG files.
- [ ] Every asset hash matches.
- [ ] Every asset has exact provenance and a license/permission statement.
- [ ] No template file, remote image, URL download, API key, environment file, image-generation service, or network service was used.
- [ ] The output path was new; no existing file was replaced.
- [ ] The generated file is
.pptx, never.pptm.
Run:
uv run --no-project --with "python-pptx==1.0.2" --with "Pillow==12.3.0" \
--with "lxml==6.1.3" \
python -B scripts/generate_poster.py poster.json --output poster.pptxRaw lines 26 to 44Runs code scripts/generate_poster.py :42
45## 3. PPTX package security
47- [ ] ZIP member names have no traversal, absolute paths, symlinks, duplicates,
48 encryption, oversized entries, or excessive expansion ratios.
49- [ ] The package has the standard macro-free PresentationML content type.
50- [ ] The package matches the strict generated one-slide part profile.
51- [ ] No VBA, ActiveX, OLE, embedded package, executable/binary payload, external
52 link part, or custom UI is present.
53- [ ] No relationship has `TargetMode="External"`.
54- [ ] No remotely linked image is present.
55- [ ] Internal relationship targets resolve to existing package parts.
56- [ ] The presentation was inspected as ZIP/XML and was not opened or executed by
57 the inspection script.
59Run:
61```bash
62python -B scripts/inspect_pptx.py poster.pptx
63```
65Treat any package finding as a release blocker. Do not "fix" an untrusted package
66by opening it in PowerPoint.
3. PPTX package security
- [ ] ZIP member names have no traversal, absolute paths, symlinks, duplicates, encryption, oversized entries, or excessive expansion ratios.
- [ ] The package has the standard macro-free PresentationML content type.
- [ ] The package matches the strict generated one-slide part profile.
- [ ] No VBA, ActiveX, OLE, embedded package, executable/binary payload, external link part, or custom UI is present.
- [ ] No relationship has
TargetMode="External". - [ ] No remotely linked image is present.
- [ ] Internal relationship targets resolve to existing package parts.
- [ ] The presentation was inspected as ZIP/XML and was not opened or executed by the inspection script.
Run:
python -B scripts/inspect_pptx.py poster.pptxTreat any package finding as a release blocker. Do not "fix" an untrusted package by opening it in PowerPoint.
Raw lines 45 to 67Runs code scripts/inspect_pptx.py :62
68## 4. Dimensions, scale, bleed, and margins
70- [ ] PowerPoint canvas width and height are each in the current 1–56 inch range.
71- [ ] Final physical trim dimensions are recorded separately from canvas dimensions.
72- [ ] Final artboard dimensions include twice the confirmed bleed on each axis.
73- [ ] Canvas and final artboard have the same aspect ratio.
74- [ ] Uniform print scale is explicit; no nonuniform stretching is allowed.
75- [ ] Printer permission is recorded if final output is scaled from the PPTX canvas.
76- [ ] All non-bleed content stays inside the confirmed safe margin from the trim edge.
77- [ ] Full-bleed imagery reaches the artboard edge and does not move text into bleed.
78- [ ] A physical or contract proof confirms trim and bleed behavior.
80Run:
82```bash
83python -B scripts/plan_export.py poster.json
84```
4. Dimensions, scale, bleed, and margins
- [ ] PowerPoint canvas width and height are each in the current 1–56 inch range.
- [ ] Final physical trim dimensions are recorded separately from canvas dimensions.
- [ ] Final artboard dimensions include twice the confirmed bleed on each axis.
- [ ] Canvas and final artboard have the same aspect ratio.
- [ ] Uniform print scale is explicit; no nonuniform stretching is allowed.
- [ ] Printer permission is recorded if final output is scaled from the PPTX canvas.
- [ ] All non-bleed content stays inside the confirmed safe margin from the trim edge.
- [ ] Full-bleed imagery reaches the artboard edge and does not move text into bleed.
- [ ] A physical or contract proof confirms trim and bleed behavior.
Run:
python -B scripts/plan_export.py poster.jsonRaw lines 68 to 85Runs code scripts/plan_export.py :83
86## 5. Layout and typography
88- [ ] No shape is out of bounds.
89- [ ] Every reported bounding-box overlap is either removed or documented as
90 intentional after visual inspection.
91- [ ] No text box visibly overflows, clips, wraps unexpectedly, or uses silent
92 auto-shrink.
93- [ ] Font sizes were assessed at final physical output, not only on the PPTX canvas.
94- [ ] The manifest labels its minimum-font value as a project heuristic or ties it
95 to an exact organizer/printer/source requirement.
96- [ ] Required fonts are available on the export workstation and printer workflow.
97- [ ] Font embedding rights and the chosen embed/not-embed workflow were reviewed;
98 the generator itself did not embed fonts.
99- [ ] Font substitution, equations, symbols, and scientific glyphs were checked.
100- [ ] Visual hierarchy and reading path remain clear at reduced-scale proof size.
102Run:
104```bash
105python -B scripts/check_layout.py poster.pptx --manifest poster.json
106```
108The checker cannot determine rendered overflow or font substitution; inspect those
109in PowerPoint and in the exported PDF.
5. Layout and typography
- [ ] No shape is out of bounds.
- [ ] Every reported bounding-box overlap is either removed or documented as intentional after visual inspection.
- [ ] No text box visibly overflows, clips, wraps unexpectedly, or uses silent auto-shrink.
- [ ] Font sizes were assessed at final physical output, not only on the PPTX canvas.
- [ ] The manifest labels its minimum-font value as a project heuristic or ties it to an exact organizer/printer/source requirement.
- [ ] Required fonts are available on the export workstation and printer workflow.
- [ ] Font embedding rights and the chosen embed/not-embed workflow were reviewed; the generator itself did not embed fonts.
- [ ] Font substitution, equations, symbols, and scientific glyphs were checked.
- [ ] Visual hierarchy and reading path remain clear at reduced-scale proof size.
Run:
python -B scripts/check_layout.py poster.pptx --manifest poster.jsonThe checker cannot determine rendered overflow or font substitution; inspect those in PowerPoint and in the exported PDF.
Raw lines 86 to 110Runs code scripts/check_layout.py :105
111## 6. Raster images and assets
113- [ ] Effective DPI is calculated from pixel dimensions divided by final placed
114 inches, not from file metadata.
115- [ ] Every placement meets the manifest's source-labeled or heuristic DPI threshold.
116- [ ] No image is stretched out of aspect ratio.
117- [ ] The final PDF and printer proof show no resampling artifacts.
118- [ ] Asset IDs, hashes, source IDs, provenance, permissions/licenses, and alt text are
119 in the inventory.
120- [ ] EXIF, XMP, comments, and embedded text/application metadata were stripped in
121 an author-reviewed offline workflow before hashing and approval.
122- [ ] Logos and images are authorized for this use.
124Run:
126```bash
127python -B scripts/inventory_images.py poster.json \
128 --output poster.assets.json
129```
6. Raster images and assets
- [ ] Effective DPI is calculated from pixel dimensions divided by final placed inches, not from file metadata.
- [ ] Every placement meets the manifest's source-labeled or heuristic DPI threshold.
- [ ] No image is stretched out of aspect ratio.
- [ ] The final PDF and printer proof show no resampling artifacts.
- [ ] Asset IDs, hashes, source IDs, provenance, permissions/licenses, and alt text are in the inventory.
- [ ] EXIF, XMP, comments, and embedded text/application metadata were stripped in an author-reviewed offline workflow before hashing and approval.
- [ ] Logos and images are authorized for this use.
Run:
python -B scripts/inventory_images.py poster.json \
--output poster.assets.jsonRaw lines 111 to 130Runs code scripts/inventory_images.py :127
131## 7. Color and graphical accessibility
133- [ ] Normal text pairs meet WCAG 2.2 SC 1.4.3 at 4.5:1.
134- [ ] Large text pairs meet 3:1 only when final text is at least 18 pt, or at least
135 14 pt and bold.
136- [ ] Essential graphical objects meet the 3:1 non-text contrast screen where
137 WCAG 2.2 SC 1.4.11 is being used as the design target.
138- [ ] Information is never encoded by color alone.
139- [ ] Categories also use direct labels, shapes, markers, patterns, or line styles.
140- [ ] Palette selection is appropriate to data type: qualitative, sequential, or
141 diverging.
142- [ ] A grayscale/color-vision simulation is reviewed as a screen, not treated as
143 proof of accessibility.
144- [ ] A color proof confirms the printer's conversion and substrate behavior.
146Run:
148```bash
149python -B scripts/check_palette.py poster.json
150```
7. Color and graphical accessibility
- [ ] Normal text pairs meet WCAG 2.2 SC 1.4.3 at 4.5:1.
- [ ] Large text pairs meet 3:1 only when final text is at least 18 pt, or at least 14 pt and bold.
- [ ] Essential graphical objects meet the 3:1 non-text contrast screen where WCAG 2.2 SC 1.4.11 is being used as the design target.
- [ ] Information is never encoded by color alone.
- [ ] Categories also use direct labels, shapes, markers, patterns, or line styles.
- [ ] Palette selection is appropriate to data type: qualitative, sequential, or diverging.
- [ ] A grayscale/color-vision simulation is reviewed as a screen, not treated as proof of accessibility.
- [ ] A color proof confirms the printer's conversion and substrate behavior.
Run:
python -B scripts/check_palette.py poster.jsonRaw lines 131 to 151Runs code scripts/check_palette.py :149
152## 8. PowerPoint accessibility
154- [ ] Every picture has concise, accurate alt text that conveys purpose.
155- [ ] Complex figures have an approved source-bound native long description when alt
156 text and adjacent prose are insufficient.
157- [ ] Important text is native text, not only pixels inside an image.
158- [ ] The visible title is the native slide-title placeholder and text language is
159 correct.
160- [ ] The Reading Order pane matches the intended logical sequence.
161- [ ] The PowerPoint Accessibility Checker has no unresolved errors.
162- [ ] A keyboard and screen-reader pass confirms the actual reading order.
163- [ ] Text links have meaningful visible labels.
164- [ ] Every QR code has the exact destination URL in visible fallback text.
165- [ ] Each final printed QR code was tested with multiple devices.
166- [ ] Language, author names, acronyms, captions, and table alternatives are correct.
168Automated XML inspection cannot certify these manual checks.
8. PowerPoint accessibility
- [ ] Every picture has concise, accurate alt text that conveys purpose.
- [ ] Complex figures have an approved source-bound native long description when alt text and adjacent prose are insufficient.
- [ ] Important text is native text, not only pixels inside an image.
- [ ] The visible title is the native slide-title placeholder and text language is correct.
- [ ] The Reading Order pane matches the intended logical sequence.
- [ ] The PowerPoint Accessibility Checker has no unresolved errors.
- [ ] A keyboard and screen-reader pass confirms the actual reading order.
- [ ] Text links have meaningful visible labels.
- [ ] Every QR code has the exact destination URL in visible fallback text.
- [ ] Each final printed QR code was tested with multiple devices.
- [ ] Language, author names, acronyms, captions, and table alternatives are correct.
Automated XML inspection cannot certify these manual checks.
Raw lines 152 to 169170## 9. Export and print
172- [ ] Export uses PowerPoint's Standard/high print quality, not Minimum size.
173- [ ] No audio, video, linked media, OLE, ActiveX, embedded file, or external
174 relationship was introduced after generation.
175- [ ] Exporter/settings and any online conversion route are recorded and permitted.
176- [ ] Actual PDF page size is measured against canvas and final artboard separately;
177 printer scaling or a full-size PDF derivative is confirmed when they differ.
178- [ ] Exported PDF is checked independently for tags, reading order, alt text,
179 links, fonts, clipping, image quality, and page dimensions.
180- [ ] RGB is distinguished from any printer-required CMYK conversion.
181- [ ] If CMYK is required, the printer-approved conversion/profile and proof are
182 complete; the native PowerPoint export is not represented as CMYK-compliant.
183- [ ] Conference file format, naming, file-size, and submission rules are met.
184- [ ] Printer deadline, substrate, mounting, delivery, and backup requirements are met.
9. Export and print
- [ ] Export uses PowerPoint's Standard/high print quality, not Minimum size.
- [ ] No audio, video, linked media, OLE, ActiveX, embedded file, or external relationship was introduced after generation.
- [ ] Exporter/settings and any online conversion route are recorded and permitted.
- [ ] Actual PDF page size is measured against canvas and final artboard separately; printer scaling or a full-size PDF derivative is confirmed when they differ.
- [ ] Exported PDF is checked independently for tags, reading order, alt text, links, fonts, clipping, image quality, and page dimensions.
- [ ] RGB is distinguished from any printer-required CMYK conversion.
- [ ] If CMYK is required, the printer-approved conversion/profile and proof are complete; the native PowerPoint export is not represented as CMYK-compliant.
- [ ] Conference file format, naming, file-size, and submission rules are met.
- [ ] Printer deadline, substrate, mounting, delivery, and backup requirements are met.
186## 10. Final sign-off
188- [ ] Presenting/corresponding author approved all scientific content and citations.
189- [ ] Accessibility reviewer completed manual checks.
190- [ ] Printer or production contact approved dimensions, bleed, scale, and color.
191- [ ] The exact approved manifest, PPTX hash, asset inventory, audit reports, exported
192 PDF, and proof are retained together.
193- [ ] A final change triggers a new content hash, new author approval, regeneration,
194 re-export, and all checks again.
10. Final sign-off
- [ ] Presenting/corresponding author approved all scientific content and citations.
- [ ] Accessibility reviewer completed manual checks.
- [ ] Printer or production contact approved dimensions, bleed, scale, and color.
- [ ] The exact approved manifest, PPTX hash, asset inventory, audit reports, exported PDF, and proof are retained together.
- [ ] A final change triggers a new content hash, new author approval, regeneration, re-export, and all checks again.