Skill Tracer
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

Open on GitHub

Most marks come from matching words in the file, so treat them as pointers.

1# PPTX poster release checklist
2
3Use this checklist for the final generated package and every exported/printed
4derivative. A script pass is necessary but not sufficient.
5

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 5
6## 1. Requirements and approval
7
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.json
Raw lines 6 to 25
Runs 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.pptx
Raw lines 26 to 44
Runs 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.pptx

Treat any package finding as a release blocker. Do not "fix" an untrusted package by opening it in PowerPoint.

Raw lines 45 to 67
Runs 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.json
Raw lines 68 to 85
Runs 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.json

The checker cannot determine rendered overflow or font substitution; inspect those in PowerPoint and in the exported PDF.

Raw lines 86 to 110
Runs 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.json
Raw lines 111 to 130
Runs 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.json
Raw lines 131 to 151
Runs 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 169
170## 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.
Raw lines 170 to 185
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.
Raw lines 186 to 194