oracle-pptx
Oracle PPTX
Oracle-compliant deck generation with a staged authoring pipeline and deterministic rendering. Use this skill when slides must remain strictly on Oracle template background, typography, color system, and footer conventions.
Non-negotiables (must always hold)
- Use Oracle templates only:
resources/templates/dark-template.pptx/light-template.pptx. - Do not alter Oracle background art, logo treatment, color system, or master/footer design.
- Font face is fixed to
Oracle Sans Tab(measurement + rendering behavior depend on it). - Footer text is injected automatically; do not hand-author footer placeholders.
- If a request conflicts with brand rules, preserve brand rules and adapt layout/content instead.
Always consult:
reference/brand-guidelines.mdreference/brand-compliance.md
Execution model
brief -> research -> storyline -> layout-plan -> deckspec -> image-prep -> render -> validate
Use the pipeline by default:
node scripts/authoring/pipeline.mjs --deck <id> [--theme dark|light]
Use direct render only when a DeckSpec already exists:
node scripts/generate-from-deckspec.mjs <deckspec.json> [output.pptx]
Authoring artifacts
Pipeline workspace: temp/<deck-id>/
0-brief.md- audience, objective, constraints, density1-research.md+1-research.requests.md- evidence + retrieval requests2-storyline.md- SCQA + arc + per-slide intent3-layout-plan.md- layout + focal strategy + image plan4-deckspec.json+4-deckspec.report.md- renderable spec + warningsgenerated-images/manifest.json- agent image contractfinal.pptx+validation/- output + quality checkspipeline-state.json- content-hash cache for incremental reruns
Layout vocabulary (supported)
Shell layouts:
cover,section,section-alt,quote,impact,impact-alt,thank-you
Content layouts:
title-body,2-column,3-column,title-3-pointsicon-row,icon-gridtable,chart,stats,hero-statbold-statement,takahashi-emphasis,focal-image,split-asymmetricstory
Use reference/layout-system.md for per-layout examples and intent.
Content density and fit
Renderer is measurement-driven (not fixed char clipping). It autofits against real placeholder geometry using Oracle Sans Tab metrics.
Density limits:
| Density | Bullets | Chart series | Table rows | Min body pt |
|---|---|---|---|---|
spare |
3 | 2 | 4 | 16 |
balanced |
5 | 4 | 6 | 14 |
rich |
7 | 6 | 8 | 12 |
Set deck-wide via settings.density; override per slide with slides[].density.
Single-line slot guidance (validator-backed):
- Title soft/hard warn:
>80/>100chars - Subtitle soft/hard warn:
>70/>85chars
Use reference/typography-engine.md for details.
Chart storytelling rules
Use insight-first chart titles (what it means, not chart type).
Schemes:
highlight- one focal series/category in Oracle Redsequential- ordered rampdiverging- opposing tones around midpoint
Key defaults:
- Gridlines ON by default (quiet style); disable with
chart.gridlines: false - Legend
auto(often hidden for single-series highlight charts) - Decorative chart junk suppressed
See reference/chart-storytelling.md.
Image generation contract (agent-fulfilled)
This skill does not call an image API directly.
- DeckSpec declares
content.image.generate. - Renderer writes a deterministic manifest with target paths.
- Host agent (Cursor/Claude/OpenAI/Gemini multimodal) writes PNGs.
- Renderer consumes those PNGs as normal images.
Relevant flags:
--prepare-images--regenerate-images--image-dir <path>--image-manifest <path>
See reference/image-generation.md.
Validation model
Pre-render checks (generate-from-deckspec.mjs):
- density limits
- generic chart titles
- focal-balance and hierarchy heuristics
- image readiness/content checks
Post-render checks (scripts/validate.mjs):
- overlap and bounds
- font substitution compliance
Optional pixel-level harness:
scripts/validate/slides_test.py(LibreOffice + poppler/Pillow)
CLI quick reference
Authoring pipeline:
node scripts/authoring/pipeline.mjs --deck <id> [--theme dark|light]
node scripts/authoring/pipeline.mjs --deck <id> --start-from <stage>
node scripts/authoring/pipeline.mjs --deck <id> --force <stage>
node scripts/authoring/pipeline.mjs --deck <id> --skip <stage>
Direct render:
node scripts/generate-from-deckspec.mjs <deckspec.json> [output.pptx] [--strict] [--validate|--no-validate] [--quiet] [--skip-density-check] [--skip-content-check] [--skip-image-check] [--engine=revamp|legacy] [--legacy-charts] [--legacy-placeholders] [--legacy-fpo] [--prepare-images] [--regenerate-images] [--image-dir <path>] [--image-manifest <path>] [--render-validate] [--render-validate-dir <path>] [--render-validate-dpi 110] [--profile]
Migration:
node scripts/migrate-deckspec.mjs <in.json> [out.json] [--report <path>] [--dry-run] [--verbose]
Smoke tests:
npm run smoke
Legacy/rollback controls
For compatibility with pre-revamp behavior:
--legacy-charts--legacy-placeholders--legacy-fpo--engine=legacy(enables all three)
References
Core:
reference/authoring-method.mdreference/layout-system.mdreference/chart-storytelling.mdreference/image-generation.mdreference/typography-engine.mdreference/validation.md
Compliance:
reference/brand-guidelines.mdreference/brand-compliance.md
Additional:
reference/setup-reference.mdreference/charts-reference.mdreference/themes-reference.mdreference/icon-library.mdreference/text-formatting-reference.mdreference/tables-reference.mdreference/images-shapes-reference.mdreference/code-examples.mdreference/layout-reference.md
Examples
examples/japanese-inspired-showcase.jsonexamples/healthcare-genai-pitch.jsonexamples/pipeline-walkthrough/examples/cloud-native-modernization.jsonexamples/enterprise-ai-adoption.jsonexamples/sample-deck-dark.jsonexamples/sample-deck-light.json
Quick run:
node scripts/generate-from-deckspec.mjs examples/japanese-inspired-showcase.json temp/showcase.pptx