| name | presentation-factory-design-layout |
| description | Layout decisions for a deck. Picks templates from the 25-template catalog per slide, sets visual hierarchy, enforces density discipline (informational vs presentational), and runs the four checks (swap, squint, signature, token) before slide composition. Called by Draft after content is authored, before Compose renders HTML. The skill that turns "here's what the slide says" into "here's how the slide looks."
|
| type | skill |
| plugin | presentation-factory |
| tags | ["type/skill","plugin/presentation-factory","scope/specialty","topic/design"] |
| status | active |
Goal
Take authored content and decide how each slide is laid out. Pick the right template. Set the visual hierarchy. Enforce density per style. Run the four checks before composition.
When to invoke
- End of Draft stage, after
presentation-factory-content-author finishes 10_Content.md
- Before
presentation-factory-slide-composer renders HTML
- When the user says "this slide feels wrong" or "swap the layout" mid-Compose
Required context
references/presentation-factory-foundations.md (the 25-template catalog plus the two-styles guidance) and references/presentation-factory-templates.md (full per-template specs).
The 25-template catalog (cite from foundations)
| Family | Templates |
|---|
| Openers & closers | title, section-divider, agenda, thank-you, contact |
| Content layouts | one-col-text, two-col-text-image, three-col, image-led, pull-quote, big-stat, eyebrow-headline-body, list-with-icons, two-col-text-text |
| Data & diagrams | chart, table, framework-2x2, process-3-stage, comparison, timeline |
| Specialty | team-bios, case-study, pricing, roadmap, before-after |
Template selection logic
For each slide, the content's intent maps to a template family:
| Slide intent | First-choice template | Fallback |
|---|
| Opening / title | title | (no fallback; titles are titles) |
| Section change | section-divider | eyebrow-headline-body if quieter feel needed |
| Audience hook (narrative open) | eyebrow-headline-body | image-led |
| Three numbers / market context | three-col | big-stat (single hero stat) |
| Single headline number with context | big-stat | eyebrow-headline-body |
| Architecture or framework | image-led (with overlay diagram) | framework-2x2 |
| Before/after comparison | comparison | two-col-text-text |
| Process or workflow over time | timeline or process-3-stage | comparison |
| Customer story | case-study | pull-quote |
| Quote alone | pull-quote | eyebrow-headline-body |
| 2 to 4 ideas, structured | three-col (if 3) or list-with-icons | two-col-text-text (if 2) |
| 5 to 6 ideas | list-with-icons | Consider splitting to 2 slides |
| 7+ ideas | Split into multiple slides. Refuse to render. | |
| Data with numbers | chart (with inline SVG via the composer) | table |
| Live tabular data | table | chart |
| Approach + CTA close | contact | eyebrow-headline-body with CTA |
| Thank-you / Q&A | thank-you | contact |
Visual hierarchy decisions
For each slide, define:
- Focal point — the one element your eye should land on first. Usually the title, sometimes a stat or image. Mark it in the template's
data-focal="primary" slot.
- Reading order — the sequence your eye follows after the focal point. Top-to-bottom, left-to-right by default. Override only when the visual demands it (case studies often go image → stat → quote).
- Negative space — minimum 20% of the slide stays empty (presentational) or 12% (informational). Density above the limit fails the squint check.
- Color hits — at most 2 brand-primary color uses per slide. More than that and the eye doesn't know where to land.
Density discipline
Per style, slide density limits:
| Style | Words per slide (max) | Bullets (max) | Stats per slide (max) | Images per slide (max) |
|---|
| Presentational | 50 | 5 | 3 | 2 |
| Informational | 120 | 7 | 4 | 3 |
If a slide exceeds the limit, the skill flags it and proposes a split.
The four checks
Run these before sending content to the composer. Each check produces pass/fail with a specific finding.
1. The swap check
"If I swapped this slide's brand for a competitor's brand, would the slide still look distinctively Slalom (or the chosen brand)?"
- Pass: Lora italic titles, gradient strip, Slalom Sans body, branded color hits
- Fail: Generic sans-serif headline, no italic emphasis, default Tailwind feel
2. The squint check
"Squint at the slide. Is the focal hierarchy clear within 1 second?"
- Pass: One element dominates; secondary elements support; no visual ties
- Fail: Multiple equal-weight elements competing; eye doesn't land
3. The signature check
"Does this slide carry the deck's signature move?"
- Pass: At least one
<em> italic emphasis in the title; consistent eyebrow color; consistent footer chrome
- Fail: Plain title, mismatched eyebrow, inconsistent footer
4. The token check
"Are all colors, fonts, and spacing drawn from tokens.css?"
- Pass: No hex values in slide HTML other than via
var(--token-name); no font-family: Inter unless DXP brand; no inline padding values outside the spacing scale
- Fail: Hardcoded hex; off-brand font; one-off spacing values
Workflow
- Read
10_Content.md. For each slide:
- Identify the slide intent (the speaker's purpose for the slide)
- Apply the template selection logic
- Record the template choice in
10_Content.md under each slide as template: [name]
- Set the visual hierarchy:
- Identify the focal point per slide
- Confirm density is within style limits
- Flag any slide that exceeds and propose a split
- Run the four checks against the content + chosen template (pre-composition)
- Surface findings to the user before Compose proceeds
- Save the layout plan to
WIP/[deck]/15_Layout_Plan.md
Output
10_Content.md updated with template: field per slide
WIP/[deck]/15_Layout_Plan.md with per-slide template choice, focal point, density rating, and the four-checks result
- A list of any slides that need to be split (density over limit)
Anti-patterns
- Don't default to
three-col for everything. The AI default is feature-card grids; refuse the temptation.
- Don't pick
list-with-icons for fewer than 3 items. Use two-col-text-text instead.
- Don't pick
chart if the data is conceptual (no real numbers). Use framework-2x2 or process-3-stage.
- Don't override the focal-point rule. One focal point per slide. Multiple focals = no focal.
- Don't allow informational layouts in a presentational deck (or vice versa). Style was locked at Frame.