diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..5b36a4b --- /dev/null +++ b/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2026 Andrei Wong + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/README.md b/README.md index 292bd7b..ab867ac 100644 --- a/README.md +++ b/README.md @@ -1,58 +1,62 @@ -# Academic Presentations Skill for Claude +# Academic Presentations Skill for Gemini CLI -A Claude Skill for creating high-quality academic presentations: conference talks, seminar slides, thesis defenses, and grant briefings. +A Gemini skill for creating high-quality academic presentations: conference talks, seminar slides, thesis defenses, and grant briefings. -## What It Does +## Quick Install -This skill overrides Claude's default design-forward presentation style and replaces it with communication-first standards appropriate for academic and analytical contexts. When active, Claude will: +To install this skill for Gemini CLI: -- Write every slide title as a **complete sentence stating the takeaway** ("action title"), not a topic label -- Structure the deck as a **logical argument** (situation → complication → resolution), not a collection of independent slides -- Apply the **ghost deck test**: the action titles alone, read in sequence, should tell the full story -- Place **one exhibit per results slide** and annotate the key finding directly on the chart -- Apply **citation standards**: in-text citations on every borrowed figure, a References slide at the end -- End on a **Conclusions slide** that stays on screen during Q&A — never on "Thank You" or a blank -- Apply minimal, communication-first design: white backgrounds, single sans-serif font, three colours maximum, no decorative icons +```bash +gemini skills install https://github.com/Andrei-WongE/academic-pptx-skill +``` + +## Features + +This skill overrides default design-forward presentation styles and replaces them with communication-first standards appropriate for academic and analytical contexts: + +- **Action Titles**: Every slide title is a complete sentence stating the takeaway. +- **Logical Argument**: Deck structure follows a proven narrative spine (Situation → Complication → Resolution). +- **Ghost Deck Test**: The argument must hold together when reading only the slide titles. +- **Exhibit Discipline**: One exhibit per results slide with "so what" annotations. +- **Academic Citations**: In-slide citations and a full References slide at the end. +- **Strategic Conclusions**: The deck ends on a Conclusions slide that stays visible during Q&A. -## Installation +## Platform Compatibility -1. Download this repository as a zip file (click **Code → Download ZIP** above) -2. In [claude.ai](https://claude.ai), go to **Customize → Skills** -3. Upload the zip file -4. Confirm the skill appears in your skills list and is toggled on +This repository is optimized for dual-platform use: -> **Requirement:** Code execution and file creation must be enabled in **Settings → Capabilities**. +### Gemini CLI (Recommended) +Follow the installation command above. The `gemini/SKILL.md` and `gemini/references/` folder provide immediate, native compatibility with Gemini CLI's skill system. + +### Claude Code +The original structure is preserved in the `claude/` directory (flat structure with `SKILL.md` and supporting files) for users who prefer the legacy layout. ## Usage -Just ask naturally: +Once installed, the skill is automatically discovered. You can trigger it naturally: - *"Make slides for my conference paper on X"* - *"Build a deck for my thesis defense"* - *"Create a seminar presentation about my research on Y"* -Claude will detect the academic context, load this skill automatically, and apply all guidelines before generating any slides. You do not need to give any special instructions. - -This skill works alongside Anthropic's built-in PPTX skill, which handles the technical file generation. This skill handles content, argument structure, and design standards. +Gemini will detect the academic context, load this skill, and apply all guidelines. -## File Structure +## Development & Structure ``` academic-pptx-skill/ -├── SKILL.md # Entry point: routing logic and design standards -├── content_guidelines.md # Argument structure, action titles, citations, deck architecture -├── slide_patterns.md # Per-slide-type implementation patterns with PptxGenJS code -└── README.md # This file +├── README.md +├── gemini/ +│ ├── SKILL.md # Core methodology + metadata +│ └── references/ # Supporting guidelines and patterns +│ ├── content_guidelines.md +│ └── slide_patterns.md +└── claude/ # Original Claude Code version (flat) + ├── SKILL.md + ├── content_guidelines.md + └── slide_patterns.md ``` -## Background - -The guidelines in this skill draw on: -- Barbara Minto's *Pyramid Principle* (structured argument, action titles) -- Naegle (2021), "Ten simple rules for effective presentation slides," *PLOS Computational Biology* -- Standard consulting and academic presentation practice (McKinsey, conference norms) -- Community feedback on Claude's default presentation behaviour in professional contexts - ## License MIT — free to use, adapt, and share. diff --git a/SKILL.md b/claude/SKILL.md similarity index 99% rename from SKILL.md rename to claude/SKILL.md index 0963891..64773f0 100644 --- a/SKILL.md +++ b/claude/SKILL.md @@ -1,7 +1,7 @@ --- name: academic-pptx description: "Use this skill whenever the user wants to create or improve a presentation for an academic context — conference papers, seminar talks, thesis defenses, grant briefings, lab meetings, invited lectures, or any presentation where the audience will evaluate reasoning and evidence. Triggers include: 'conference talk', 'seminar slides', 'thesis defense', 'research presentation', 'academic deck', 'academic presentation'. Also triggers when the user asks to 'make slides' in combination with academic content (e.g., 'make slides for my paper on X', 'create a presentation for my dissertation defense', 'build a deck for my grant proposal'). This skill governs CONTENT and STRUCTURE decisions. For the technical work of creating or editing the .pptx file itself, also read the pptx SKILL.md." -license: Proprietary. LICENSE.txt has complete terms +license: MIT --- # Academic Presentations Skill diff --git a/content_guidelines.md b/claude/content_guidelines.md similarity index 100% rename from content_guidelines.md rename to claude/content_guidelines.md diff --git a/slide_patterns.md b/claude/slide_patterns.md similarity index 100% rename from slide_patterns.md rename to claude/slide_patterns.md diff --git a/gemini/SKILL.md b/gemini/SKILL.md new file mode 100644 index 0000000..9a45185 --- /dev/null +++ b/gemini/SKILL.md @@ -0,0 +1,152 @@ +--- +name: academic-pptx +description: "Use this skill whenever the user wants to create or improve a presentation for an academic context — conference papers, seminar talks, thesis defenses, grant briefings, lab meetings, invited lectures, or any presentation where the audience will evaluate reasoning and evidence. Triggers include: 'conference talk', 'seminar slides', 'thesis defense', 'research presentation', 'academic deck', 'academic presentation'. Also triggers when the user asks to 'make slides' in combination with academic content (e.g., 'make slides for my paper on X', 'create a presentation for my dissertation defense', 'build a deck for my grant proposal'). This skill governs CONTENT and STRUCTURE decisions. For the technical work of creating or editing the .pptx file itself, also read the pptx SKILL.md." +license: MIT +--- + +# Academic Presentations Skill + +## How This Skill Works + +This skill has two layers: + +1. **This file** — governs content, argument structure, and design standards for academic presentations. Read it fully before planning any slides. +2. **PPTX skill** — governs the technical implementation (creating, editing, and QA-ing the .pptx file). Read it too. + +**Always read both before writing any code or creating any files.** + +--- + +## Quick Reference + +| Task | Guide | +|------|-------| +| Content planning, argument structure, slide-by-slide rules | [references/content_guidelines.md](references/content_guidelines.md) | +| Per-slide-type patterns (title, methods, results, etc.) | [references/slide_patterns.md](references/slide_patterns.md) | +| Technical creation from scratch | PPTX skill → `pptxgenjs.md` | +| Technical editing of an existing file | PPTX skill → `editing.md` | + +--- + +## Step 1: Identify Presentation Type + +Before planning a single slide, determine which mode applies. + +### Structured Argument (default for academic work) + +Use for: conference papers, seminar talks, thesis defenses, dissertation chapters, grant briefings, internal lab presentations, policy briefings, consulting-style research deliverables. + +**Priority order: argument structure → data → layout → aesthetics.** + +Follow [references/content_guidelines.md](references/content_guidelines.md) in full. + +### Visual / Narrative + +Use for: public engagement talks, science communication to non-specialist audiences, funding pitches to lay panels, event keynotes. + +Follow the PPTX skill's design-forward guidelines. Argument structure still matters, but visual storytelling and emotional engagement take priority. + +### When in doubt + +Default to **Structured Argument**. If the user mentions a paper, a study, a dataset, a thesis, a grant, or a conference, they almost certainly want structured argument mode. + +--- + +## Step 2: Plan the Deck Before Creating Any Slides + +Produce a slide-by-slide outline (title, action title, exhibit type) and confirm with the user if the deck is more than 10 slides or if the content is complex. Do not start building until the outline is agreed. + +Use the ghost deck test during planning: read only the proposed action titles in sequence. They must tell the complete argument. If they don't, fix the outline before building. + +--- + +## Step 3: Apply Design Standards + +Academic presentations use **communication-first design**. These rules override the PPTX skill's design-forward defaults. + +### Color + +- White background for all content slides. +- One sans-serif font throughout (Arial, Calibri, or Helvetica — confirm with user or match their institution's template if provided). +- Maximum three colors: one primary, one accent, one for emphasis or alerts. Default: dark navy primary (`1F4E79`), mid-blue accent (`2E75B6`), white or off-white background. +- No decorative color gradients, no themed color palettes unless the user explicitly requests them. +- Use color to **direct attention** — highlight the key finding on a chart, mark a callout box — not for decoration. + +### Typography + +| Element | Size | Weight | +|---------|------|--------| +| Action title | 24–28 pt | Bold | +| Section header | 20–22 pt | Bold | +| Body bullets | 20 pt | Regular | +| Chart labels / annotations | 16–18 pt | Regular | +| Source citations on slides | 12–14 pt | Regular, muted color | + +Single font face. Use size and weight for hierarchy — never multiple typefaces. + +### Layout + +- Left-align all body text. Center only slide titles and axis labels. +- Consistent grid: all text boxes and figures align to the same margins (minimum 0.5" from slide edges). +- For result slides: figure on the left, interpretive bullets on the right. This matches natural left-to-right reading. +- White space is a signal of analytical clarity — do not fill every inch. +- 16:9 widescreen is the default. Confirm with the user if they know the venue's aspect ratio. + +### Avoid (Academic-Specific) + +- **No decorative icons** — icons in colored circles, stock images, clip art are inappropriate for analytical academic presentations. +- **No accent lines under titles** — use whitespace instead. +- **No color palettes chosen for aesthetic interest** — use institution colors or the minimal defaults above. +- **No full-bleed background images on content slides** — reserve for title/section dividers only if desired. +- **No text-heavy slides** — if the audience is reading, they are not listening. Maximum ~40 words of body text per content slide. + +--- + +## Step 4: Build and QA + +Follow the PPTX skill's QA procedure in full, including: +- Content QA via `markitdown` +- Visual QA via slide images (subagents if available) +- Fix-and-verify loop until a full pass reveals no new issues + +**Additionally, run the academic-specific checks:** + +``` +Academic QA checklist: +□ Every content slide has an action title (complete sentence stating the takeaway) +□ Ghost deck test passes (action titles alone tell the full argument) +□ One exhibit per results slide; each exhibit has a "so what" annotation +□ Every borrowed figure or data point has an in-slide citation +□ A References slide exists at the end +□ Conclusions slide is the last non-appendix slide (not "Thank You" or a blank) +□ Contact information and/or QR code/link on the final slide +□ Font sizes are readable from the back of a room (≥ 20 pt body text) +□ No decorative elements that don't carry content +□ Section dividers or breadcrumb bar present for decks > 15 slides +``` + +--- + +## Key Principles (Summary) + +**Action titles, not topic labels.** Every slide title is a complete sentence stating the takeaway. Reading titles alone should tell the whole argument (ghost deck test). + +**One argument, made well.** Don't present your whole paper. Pick the claim that can be made convincingly in the allotted time. Everything else goes in the appendix. + +**One insight per slide.** One exhibit per results slide. Highlight the key finding directly on the chart — don't make the audience hunt for it. + +**Slides support speech; they don't replace it.** Body text is for orientation, not information transfer. The presenter carries the argument; the slide carries the evidence. + +**Cite everything borrowed.** Academic integrity applies to slides. In-text citations on the slide, full references on the References slide. + +**End on conclusions.** The conclusions slide stays on screen during Q&A. Never end on "Thank You" or a blank slide. + +--- + +## Dependencies + +Same as PPTX skill: +- `pip install "markitdown[pptx]"` — text extraction +- `npm install -g pptxgenjs` — creating from scratch +- LibreOffice (`soffice`) — PDF conversion +- Poppler (`pdftoppm`) — PDF to images diff --git a/gemini/references/content_guidelines.md b/gemini/references/content_guidelines.md new file mode 100644 index 0000000..b81a8de --- /dev/null +++ b/gemini/references/content_guidelines.md @@ -0,0 +1,245 @@ +# Academic Presentation Content Guidelines + +## 1. Argument Structure + +### Lead with the research question +State the central question or claim explicitly — in slides 2 or 3 at the latest. The audience needs it to evaluate everything that follows. Do not bury it. + +### Use a proven narrative spine +Choose one and apply it consistently: + +**Option A — Situation / Complication / Resolution (SCR)** +- Situation: what was known or established +- Complication: what was missing, broken, contested, or unexplained +- Resolution: what your work contributes + +**Option B — Funnel + Answer** +- Broad context → specific gap → your approach → key findings → implications + +**Option C — Answer First (for senior/time-pressured audiences)** +- Lead with the conclusion, then support it +- Useful for grant panels, advisory boards, and short talks where the audience may not stay for the full argument + +### One argument per presentation +Researchers frequently try to present the whole paper. Resist this. Choose the claim that can be made convincingly in the available time. Everything else belongs in the appendix. + +### Each slide has one job +Every slide should have a single, clearly defined role in the argument. If a slide is doing two things, split it. + +### Flow test +After outlining, read slide titles in order. Each should make the next one feel like a natural consequence. If a slide feels disconnected or could appear anywhere in the sequence without loss, it is either misplaced or dispensable. + +--- + +## 2. Action Titles + +The most important formatting rule. Every content slide title must be a complete sentence stating the takeaway — the "so what" — not a topic label. + +| Instead of (topic label) | Use (action title) | +|--------------------------|-------------------| +| Results | Treatment effect is significant across all three cohorts | +| Literature Review | Prior work leaves the causal mechanism unexplained | +| Data | Dataset covers 40 years of county-level panel data | +| Methodology | Regression discontinuity exploits a sharp funding threshold | +| Discussion | Effect persists after controlling for selection and attrition | + +**Ghost deck test:** Read only the action titles in sequence. They should tell the complete argument. If they don't, the deck's logic needs repair — fix the titles and/or restructure before building. + +**Title length:** One to two lines. If more is needed, the point is not sharp enough yet. + +**Title font:** 24–28 pt, bold. Action titles must be immediately readable, including from the back of the room. + +--- + +## 3. Exhibit Discipline + +### One exhibit per slide +One chart, table, diagram, equation block, or map per slide. If you need two charts to make a point, consider whether they are really one comparison (which can be combined) or two separate points (which need two slides). + +### Every exhibit must earn its place +The exhibit must directly support the action title. Test: cover the exhibit and read the title — does the title still make sense without it? If yes, the exhibit isn't necessary. Cover the title and look at the exhibit — is the takeaway obvious? If not, you need a stronger annotation or a clearer action title. + +### Annotate the key finding on the chart +Do not make the audience search. Mark the key data point, bar, line, or cell with: +- A call-out arrow or label +- A highlighted/shaded region +- A text annotation box ("↑ 23% above baseline") +- A different colour for the focal series + +This is especially important for large rooms where the screen may be far away. + +### Self-sufficient slide test +Ask: could someone understand the key point from this slide without hearing the narration? If no, add an annotation. The slide will also be read as a handout or shared as a PDF; it should communicate without a presenter attached. + +### Figure placement +Place figures on the **left side** of the slide. Interpretive bullets or discussion text go on the **right**. This matches natural left-to-right reading order: evidence first, interpretation second. + +### Prefer graphs over tables for results +Tables require more cognitive load to parse quickly under time pressure. Use a graph when showing a trend, comparison, or distribution. Reserve tables for precise numerical comparisons where the exact values matter. + +### Rebuild figures from your paper +Do not copy figures directly from a PDF. Paper figures are typically too small, use print-resolution fonts, and have captions that will not render well on screen. Rebuild them at presentation resolution with larger fonts (≥ 16 pt for axis labels). + +### Don't include exhibits you won't discuss +If you include it, discuss it. If you won't have time to discuss it, move it to the appendix. + +--- + +## 4. Text Discipline + +### Maximum body text: ~40 words per slide +If you find yourself writing more, either (a) the slide is doing too much and should be split, or (b) the material belongs in an appendix or handout. + +### Bullets are orientation cues, not information transfer +Each bullet should contain one idea. Three to five bullets per slide is typical. More than five is a warning sign. + +### Telegraphic language is acceptable +Omit articles and filler phrases where meaning is preserved. +- Instead of: "Our study found that the intervention reduced costs significantly." +- Use: "Intervention reduced costs by 23% (p < 0.01)" + +### Body font: 20 pt minimum +This is a floor, not a target. If text must be smaller than 20 pt to fit on the slide, remove content until it fits at 20 pt. + +### Use bold and italics sparingly +Bold for key terms on first introduction, for inline labels ("Note:", "Limitation:"), and for the focal finding. Italics for statistical notation, species names, book titles. Not for decoration. + +--- + +## 5. Citations and Attribution + +### Cite on the slide +Every claim, figure, or dataset that is not your own original work must be cited on the slide where it appears. Place the citation at the bottom of the slide in a smaller muted font (12–14 pt). + +Use your field's standard format: +- Sciences / social sciences: (Author, Year) parenthetical +- Humanities: footnote-style or superscript number +- Be consistent throughout the deck + +### Oral attribution +Introduce sources verbally before the citation appears: "Smith and colleagues found in 2022 that…" — don't silently flash a parenthetical. + +### Figures from published sources +- Attribution caption directly beneath the figure (e.g., "Source: Jones et al., 2021, Fig. 3") +- Full reference on the References slide +- Note: reproducing a figure from a published paper may require publisher permission. For conference presentation, this is typically covered by fair use; check if in doubt. + +### References slide +The last slide before the appendix must be a References slide listing complete citations for every source cited in the deck. Format consistently with your field's conventions. + +--- + +## 6. Deck Architecture + +Required slides for a complete academic presentation, in order: + +### Title slide +- Full presentation title (framed as a statement or question — not just a topic) +- Author name(s) and affiliations +- Conference / venue / event name +- Date + +### Motivation / Context (1–2 slides) +- Why does this problem matter? +- Connect to a real gap, unresolved question, or consequential puzzle in the literature +- This is the "Situation" and "Complication" in the SCR framework + +### Research Question or Hypothesis (1 slide) +- State it explicitly and precisely +- This slide must exist. Do not embed the research question in a motivation slide; give it its own slide so the audience can orient + +### Methods (1–2 slides) +- Cover only what the audience needs to evaluate your findings +- Procedural detail that doesn't affect interpretability belongs in the appendix +- For quantitative work: identification strategy, sample, key variables +- For qualitative work: data sources, analytical approach, evidence standards + +### Results (as many slides as needed, one finding per slide) +- One exhibit per slide +- Action title states the finding +- Key result annotated directly on the chart/table + +### Discussion / Implications (1–2 slides) +- Interpret the findings +- Connect back to the research question from the opening +- Address the main limitation(s) directly — pre-empt the audience's objection + +### Conclusions (1 slide) +- 2–4 bullet points restating the key takeaways +- **This slide stays on screen during Q&A. It is the last slide the audience sees.** +- Do NOT follow it with "Thank You" or a blank slide + +### Contact / Next Steps (on conclusions slide or a final standalone slide) +- Email address or affiliation URL +- QR code or shortened URL linking to slides, preprint, or working paper +- "Work in progress — feedback welcome" if appropriate + +### References +- Complete citations for all sources cited in the deck + +### Appendix (clearly labeled) +- Pre-built Q&A slides anticipating likely audience questions +- Methodological robustness checks and sensitivity analyses +- Additional data, figures, or tables that didn't fit the main narrative +- Detailed derivations or proofs +- Label each appendix slide clearly (e.g., "Appendix A: Robustness Checks") + +--- + +## 7. Timing and Slot Management + +### Slide budget +Maximum one slide per minute. Typical budgets: +- 10-minute talk: 8–10 content slides (title + references excluded) +- 15-minute talk: 12–14 content slides +- 20-minute talk: 15–18 content slides +- 45-minute seminar: 30–40 slides (with more time per slide for discussion) + +### Practice rule +Rehearse out loud and to time. Target finishing **1–2 minutes under** the allotted time. Nerves and audience interactions reliably add time on the day. Exceeding the time limit at an academic conference is a significant professional misstep — sessions run to a strict schedule. + +### Know what to cut +Identify in advance which slides to skip if time is running short. Mark them with a small indicator in the corner. Prioritise the research question, key result, and conclusions; methods and context are typically the first to compress. + +### Q&A preparation +- Anticipate the 3–5 most likely questions +- Pre-build appendix slides for each +- Common questions: "Why not use X method?", "How does this compare to Y?", "What about the endogeneity concern?", "Is the sample representative?" + +### End on the conclusions slide +When you say "I'll stop there," the conclusions slide should already be on screen. Invite questions: "Are there questions or feedback?" (not just "Any questions?" — the broader framing invites more substantive engagement). + +--- + +## 8. International and Accessibility Considerations + +### For international audiences +- Avoid idioms, colloquialisms, and culturally specific humour +- Define acronyms and abbreviations on first use, even obvious ones +- Speak more slowly than feels natural +- Use plain, direct sentence structures + +### Accessibility basics +- Minimum 20 pt body text; 24 pt+ titles +- High contrast between text and background (dark text on white, or white on dark) +- Do not rely on colour alone to convey meaning (use labels, patterns, or shapes as well) +- Provide alt text on figures if the slides will be circulated as a PDF + +--- + +## 9. Common Mistakes + +| Mistake | Fix | +|---------|-----| +| Topic labels as titles | Write action titles (complete sentence, states the takeaway) | +| Presenting the whole paper | Choose one argument; move the rest to the appendix | +| Reading the slides aloud | Slides carry evidence; the presenter carries the argument | +| Evidence without a "so what" | Annotate the key finding directly on the chart | +| Uncited borrowed figures | Cite on the slide; full reference on References slide | +| Body text < 20 pt | Remove content until it fits at 20 pt | +| Inconsistent formatting | One font, one citation style, consistent grid alignment | +| Slides you won't discuss | Move to appendix if you won't have time | +| Going over time | Rehearse under time; know what to cut | +| Ending on "Thank You" | End on conclusions slide; it stays up during Q&A | +| Burying the research question | State it explicitly, on its own slide, in slides 2–3 | +| No references slide | Always include one | diff --git a/gemini/references/slide_patterns.md b/gemini/references/slide_patterns.md new file mode 100644 index 0000000..61622ad --- /dev/null +++ b/gemini/references/slide_patterns.md @@ -0,0 +1,553 @@ +# Slide Patterns for Academic Presentations + +Implementation patterns for each required slide type. Use with `pptxgenjs.md` for the technical API. + +All coordinates assume `LAYOUT_16x9` (10" × 5.625"). Adjust proportionally for other layouts. + +--- + +## Global Defaults + +Apply these to every slide in an academic deck: + +```javascript +const COLORS = { + bg: "FFFFFF", // White background + primary: "1F4E79", // Dark navy — titles + accent: "2E75B6", // Mid-blue — headers, highlights + body: "2D2D2D", // Near-black — body text + muted: "777777", // Gray — citations, captions + rule: "CCCCCC", // Light gray — divider lines + highlight:"FFF2CC", // Yellow — callout boxes (use sparingly) +}; + +const FONTS = { + face: "Arial", // Single typeface throughout + title: 26, // Action title: 24–28 pt + sectionHeader: 22, // Within-slide section headers + body: 20, // Body bullets: 20 pt minimum + label: 16, // Chart annotations, inline labels + cite: 13, // In-slide citations, footnotes +}; + +const MARGIN = 0.5; // Minimum margin from slide edge (inches) +``` + +--- + +## 1. Title Slide + +**Purpose:** Establish the presentation; give the audience complete attribution. + +```javascript +// Dark background treatment — one of the few places for it +slide.background = { color: COLORS.primary }; + +// Main title — framed as a statement or question +slide.addText("Treatment effect of early childhood interventions\npersists into adulthood across all income quartiles", { + x: 0.7, y: 1.4, w: 8.6, h: 1.8, + fontSize: 32, fontFace: FONTS.face, color: "FFFFFF", + bold: true, align: "left", valign: "top" +}); + +// Subtitle / conference context +slide.addText("Annual Conference of the Society for Labor Economics · May 2025", { + x: 0.7, y: 3.2, w: 8.6, h: 0.4, + fontSize: 16, fontFace: FONTS.face, color: "A0BBDD", + align: "left" +}); + +// Author and affiliation +slide.addText("Jane Smith¹ · John Doe²\n¹ University of X ²aboratory for Y", { + x: 0.7, y: 3.7, w: 8.6, h: 0.6, + fontSize: 15, fontFace: FONTS.face, color: "CADCFC", + align: "left" +}); + +// Thin accent rule above author block +slide.addShape(pres.shapes.RECTANGLE, { + x: 0.7, y: 3.6, w: 2.0, h: 0.04, + fill: { color: COLORS.accent }, line: { color: COLORS.accent } +}); +``` + +**Do not include:** Decorative images, animated logos, institution crests (unless explicitly requested), clip art. + +--- + +## 2. Motivation / Context Slide + +**Purpose:** Establish the situation and complication — why this question matters and what's missing. + +Layout: Two-column (context left, gap/problem right) or single-column narrative. Use single-column for most conference talks. + +```javascript +// Action title +slide.addText("Existing interventions show strong short-run effects but evidence on persistence is sparse", { + x: MARGIN, y: 0.2, w: 9.0, h: 0.8, + fontSize: FONTS.title, fontFace: FONTS.face, color: COLORS.primary, bold: true, valign: "top" +}); + +// Thin divider under title +slide.addShape(pres.shapes.RECTANGLE, { + x: MARGIN, y: 1.0, w: 9.0, h: 0.025, + fill: { color: COLORS.rule } +}); + +// Body bullets +slide.addText([ + { text: "Short-run gains well established: ", options: { bold: true, breakLine: false } }, + { text: "meta-analyses confirm positive effects at ages 5–8 (Heckman et al. 2013).", options: { breakLine: true } }, + { text: "Long-run evidence is scarce: ", options: { bold: true, breakLine: false } }, + { text: "only 3 RCTs track outcomes past age 25; none cover lower-income countries.", options: { breakLine: true } }, + { text: "Mechanism is unresolved: ", options: { bold: true, breakLine: false } }, + { text: "cognitive vs. non-cognitive channels remain debated (see Appendix A).", options: { breakLine: true } }, +], { + x: MARGIN, y: 1.1, w: 9.0, h: 3.2, + fontSize: FONTS.body, fontFace: FONTS.face, color: COLORS.body, + bullet: true, paraSpaceAfter: 12 +}); + +// In-slide citation +slide.addText("Heckman et al. (2013), Science; Cunha & Heckman (2007), AER", { + x: MARGIN, y: 5.1, w: 9.0, h: 0.35, + fontSize: FONTS.cite, fontFace: FONTS.face, color: COLORS.muted, align: "left" +}); +``` + +--- + +## 3. Research Question Slide + +**Purpose:** Give the audience the anchor they need to evaluate everything that follows. This slide must exist on its own. + +```javascript +// Action title +slide.addText("This paper asks: do early childhood effects persist to age 35,\nand through which channels?", { + x: MARGIN, y: 0.2, w: 9.0, h: 0.9, + fontSize: FONTS.title, fontFace: FONTS.face, color: COLORS.primary, bold: true +}); + +// Divider +slide.addShape(pres.shapes.RECTANGLE, { + x: MARGIN, y: 1.1, w: 9.0, h: 0.025, fill: { color: COLORS.rule } +}); + +// Research question in a prominent callout box +slide.addShape(pres.shapes.ROUNDED_RECTANGLE, { + x: 1.5, y: 1.4, w: 7.0, h: 1.6, + fill: { color: "EBF3FA" }, line: { color: COLORS.accent, pt: 1.5 }, rectRadius: 0.1 +}); + +slide.addText("Do effects of the X program on cognitive and socio-emotional skills\nat age 8 persist to age 35 outcomes (earnings, health, crime),\nand does the pathway run through skills or through schooling attainment?", { + x: 1.7, y: 1.55, w: 6.6, h: 1.3, + fontSize: 19, fontFace: FONTS.face, color: COLORS.primary, + bold: false, align: "center", valign: "middle" +}); + +// Optional: brief note on what makes this paper's approach novel +slide.addText([ + { text: "Contribution: ", options: { bold: true, breakLine: false } }, + { text: "First study to follow a randomized cohort from ages 3–5 to 35; administrative earnings and health records linked to original experimental data.", options: {} } +], { + x: MARGIN, y: 3.2, w: 9.0, h: 1.0, + fontSize: FONTS.body, fontFace: FONTS.face, color: COLORS.body +}); +``` + +--- + +## 4. Methods Slide + +**Purpose:** Give the audience what they need to evaluate the findings — not procedural completeness. + +Target: 1–2 slides. Move all detail the audience doesn't need to Appendix. + +```javascript +// Action title +slide.addText("Regression discontinuity exploits a sharp household income threshold\nfor program eligibility — treatment is as-good-as-random near the cutoff", { + x: MARGIN, y: 0.2, w: 9.0, h: 0.9, + fontSize: FONTS.title, fontFace: FONTS.face, color: COLORS.primary, bold: true +}); + +// Divider +slide.addShape(pres.shapes.RECTANGLE, { + x: MARGIN, y: 1.1, w: 9.0, h: 0.025, fill: { color: COLORS.rule } +}); + +// Two-column: design on left, key variables on right +// Left column header +slide.addText("Design", { + x: MARGIN, y: 1.25, w: 4.2, h: 0.35, + fontSize: FONTS.sectionHeader, fontFace: FONTS.face, color: COLORS.accent, bold: true +}); + +slide.addText([ + { text: "Cohort: ", options: { bold: true, breakLine: false } }, + { text: "2,400 children born 1985–90 in three counties", options: { breakLine: true } }, + { text: "Assignment: ", options: { bold: true, breakLine: false } }, + { text: "income < 185% FPL at age 3 → eligible (N = 1,150)", options: { breakLine: true } }, + { text: "Follow-up: ", options: { bold: true, breakLine: false } }, + { text: "ages 5, 8, 18, 25, 35 — admin records linked", options: { breakLine: true } }, +], { + x: MARGIN, y: 1.65, w: 4.2, h: 2.4, + fontSize: FONTS.body, fontFace: FONTS.face, color: COLORS.body, + bullet: true, paraSpaceAfter: 10 +}); + +// Right column header +slide.addText("Key outcomes", { + x: 5.3, y: 1.25, w: 4.2, h: 0.35, + fontSize: FONTS.sectionHeader, fontFace: FONTS.face, color: COLORS.accent, bold: true +}); + +slide.addText([ + { text: "Primary: ", options: { bold: true, breakLine: false } }, + { text: "age-35 earnings (log), employment", options: { breakLine: true } }, + { text: "Secondary: ", options: { bold: true, breakLine: false } }, + { text: "health index, criminal record indicator", options: { breakLine: true } }, + { text: "Mechanism: ", options: { bold: true, breakLine: false } }, + { text: "cognitive score age 8, years of schooling", options: { breakLine: true } }, +], { + x: 5.3, y: 1.65, w: 4.2, h: 2.4, + fontSize: FONTS.body, fontFace: FONTS.face, color: COLORS.body, + bullet: true, paraSpaceAfter: 10 +}); + +// Appendix pointer +slide.addText("Full identification assumptions and robustness checks → Appendix B", { + x: MARGIN, y: 5.1, w: 9.0, h: 0.35, + fontSize: FONTS.cite, fontFace: FONTS.face, color: COLORS.muted, align: "left" +}); +``` + +--- + +## 5. Results Slide + +**Purpose:** Present one finding, make it impossible to miss. + +Layout: Figure left (~5.5"), interpretive text right (~3.5"). Action title states the result. + +```javascript +// Action title — MUST state the finding, not just the topic +slide.addText("Treated children earn 18% more at age 35 — effect is largest in the bottom income quartile", { + x: MARGIN, y: 0.2, w: 9.0, h: 0.85, + fontSize: FONTS.title, fontFace: FONTS.face, color: COLORS.primary, bold: true +}); + +// Divider +slide.addShape(pres.shapes.RECTANGLE, { + x: MARGIN, y: 1.05, w: 9.0, h: 0.025, fill: { color: COLORS.rule } +}); + +// FIGURE (left side) — rebuilt from paper, not copy-pasted +// Replace with actual chart or image +slide.addChart(pres.charts.BAR, [{ + name: "Treatment effect (%)", + labels: ["Q1 (lowest)", "Q2", "Q3", "Q4 (highest)"], + values: [28, 22, 15, 8] +}], { + x: MARGIN, y: 1.15, w: 5.4, h: 3.8, + barDir: "col", + chartColors: [COLORS.accent], + chartArea: { fill: { color: COLORS.bg } }, + catAxisLabelColor: COLORS.muted, + valAxisLabelColor: COLORS.muted, + valGridLine: { color: "E2E8F0", size: 0.5 }, + catGridLine: { style: "none" }, + showValue: true, + dataLabelColor: "1E293B", + showLegend: false, + valAxisTitle: "Log earnings effect (%)", + showValAxisTitle: true, + valAxisTitleColor: COLORS.muted, + valAxisTitleFontSize: 12, +}); + +// KEY FINDING ANNOTATION — tell the audience exactly what to see +// (In practice, add a call-out arrow/box over the chart image or use addText overlay) +slide.addShape(pres.shapes.ROUNDED_RECTANGLE, { + x: 0.55, y: 1.2, w: 1.8, h: 0.5, + fill: { color: COLORS.highlight }, line: { color: "E6C800", pt: 1 }, rectRadius: 0.06 +}); +slide.addText("↑ 28% for Q1", { + x: 0.55, y: 1.2, w: 1.8, h: 0.5, + fontSize: 14, fontFace: FONTS.face, color: "7A5200", bold: true, align: "center", valign: "middle" +}); + +// INTERPRETIVE TEXT (right side) +slide.addText("What to take away", { + x: 6.2, y: 1.15, w: 3.3, h: 0.35, + fontSize: FONTS.sectionHeader, fontFace: FONTS.face, color: COLORS.accent, bold: true +}); + +slide.addText([ + { text: "Average effect: 18% earnings gain (p < 0.001)", options: { breakLine: true } }, + { text: "Heterogeneity: effects are 3.5× larger for Q1 vs Q4", options: { breakLine: true } }, + { text: "Precision: 95% CI = [14%, 22%] for pooled estimate", options: { breakLine: true } }, +], { + x: 6.2, y: 1.55, w: 3.3, h: 2.5, + fontSize: FONTS.body - 1, fontFace: FONTS.face, color: COLORS.body, + bullet: true, paraSpaceAfter: 12 +}); + +// In-slide citation +slide.addText("Administrative earnings records, Social Security Administration (accessed 2024)", { + x: MARGIN, y: 5.15, w: 9.0, h: 0.3, + fontSize: FONTS.cite, fontFace: FONTS.face, color: COLORS.muted +}); +``` + +**Critical checks for results slides:** +- Action title states the finding, not the topic +- Key result is annotated directly on the chart (arrow, box, highlight, or call-out label) +- Source cited at the bottom +- No second chart or second finding on the same slide + +--- + +## 6. Discussion / Implications Slide + +**Purpose:** Interpret the findings; connect back to the opening question; address the main limitation. + +```javascript +// Action title +slide.addText("Results support a skill-formation pathway: the earnings effect is fully mediated\nby cognitive scores at age 8, not by schooling attainment", { + x: MARGIN, y: 0.2, w: 9.0, h: 0.9, + fontSize: FONTS.title, fontFace: FONTS.face, color: COLORS.primary, bold: true +}); + +// Divider +slide.addShape(pres.shapes.RECTANGLE, { + x: MARGIN, y: 1.1, w: 9.0, h: 0.025, fill: { color: COLORS.rule } +}); + +// Interpretation +slide.addText("Interpretation", { + x: MARGIN, y: 1.2, w: 9.0, h: 0.35, + fontSize: FONTS.sectionHeader, fontFace: FONTS.face, color: COLORS.accent, bold: true +}); + +slide.addText([ + { text: "Consistent with Cunha-Heckman (2007) skill complementarity: early investment compounds through the schooling years.", options: { breakLine: true } }, + { text: "Schooling channel: coefficient falls to zero when conditioning on age-8 cognitive score (mediation analysis, Appendix C).", options: { breakLine: true } }, +], { + x: MARGIN, y: 1.6, w: 9.0, h: 1.3, + fontSize: FONTS.body, fontFace: FONTS.face, color: COLORS.body, + bullet: true, paraSpaceAfter: 10 +}); + +// Main limitation — address it directly +slide.addText("Main limitation", { + x: MARGIN, y: 3.0, w: 9.0, h: 0.35, + fontSize: FONTS.sectionHeader, fontFace: FONTS.face, color: COLORS.accent, bold: true +}); + +slide.addText([ + { text: "External validity: ", options: { bold: true, breakLine: false } }, + { text: "program was implemented in three U.S. counties; generalizability to other settings requires caution.", options: { breakLine: true } }, + { text: "Partial identification: ", options: { bold: true, breakLine: false } }, + { text: "earnings records unavailable for 11% of cohort (attrition analysis → Appendix D).", options: { breakLine: true } }, +], { + x: MARGIN, y: 3.4, w: 9.0, h: 1.3, + fontSize: FONTS.body, fontFace: FONTS.face, color: COLORS.body, + bullet: true, paraSpaceAfter: 10 +}); +``` + +--- + +## 7. Conclusions Slide + +**Purpose:** Restate the 2–4 key takeaways. **This slide stays on screen for the entire Q&A.** + +Do not follow it with "Thank You," a blank slide, or a transition to appendix slides during Q&A. + +```javascript +// Dark background treatment — mirrors the title slide (sandwich structure) +slide.background = { color: COLORS.primary }; + +// "Conclusions" label +slide.addText("Conclusions", { + x: MARGIN, y: 0.25, w: 9.0, h: 0.45, + fontSize: 20, fontFace: FONTS.face, color: "A0BBDD", bold: false, align: "left" +}); + +// Accent rule +slide.addShape(pres.shapes.RECTANGLE, { + x: MARGIN, y: 0.7, w: 9.0, h: 0.04, fill: { color: COLORS.accent } +}); + +// Key takeaways — numbered for easy reference during Q&A +slide.addText([ + { text: "1. Early childhood effects are persistent: ", options: { bold: true, breakLine: false } }, + { text: "a significant earnings premium is detectable at age 35, 30 years after treatment.", options: { breakLine: true, breakLine: true } }, + { text: "2. Effects are largest for the most disadvantaged: ", options: { bold: true, breakLine: false } }, + { text: "the Q1 earnings premium (28%) is 3.5× the Q4 effect (8%).", options: { breakLine: true, breakLine: true } }, + { text: "3. The pathway is cognitive, not schooling-mediated: ", options: { bold: true, breakLine: false } }, + { text: "consistent with skill complementarity models.", options: { breakLine: true } }, +], { + x: MARGIN, y: 0.85, w: 9.0, h: 3.5, + fontSize: FONTS.body + 1, fontFace: FONTS.face, color: "FFFFFF", + paraSpaceAfter: 20 +}); + +// Contact + link +slide.addText("jane.smith@university.edu | Working paper: bit.ly/smith2025", { + x: MARGIN, y: 4.8, w: 7.0, h: 0.4, + fontSize: 14, fontFace: FONTS.face, color: "A0BBDD", align: "left" +}); + +// Optional QR code (add as image) +// slide.addImage({ path: "qr_preprint.png", x: 8.5, y: 4.5, w: 0.9, h: 0.9 }); +``` + +--- + +## 8. Section Divider (for decks > 15 slides) + +**Purpose:** Orient the audience at the start of each major section. + +```javascript +// Use same dark treatment as title/conclusions +slide.background = { color: "1A3A5C" }; // Slightly lighter navy for variety + +// Section number / label +slide.addText("Part 2", { + x: MARGIN, y: 1.8, w: 9.0, h: 0.4, + fontSize: 16, fontFace: FONTS.face, color: "7BAFD4", bold: false, align: "left" +}); + +// Section title +slide.addText("Empirical Strategy", { + x: MARGIN, y: 2.2, w: 9.0, h: 1.0, + fontSize: 36, fontFace: FONTS.face, color: "FFFFFF", bold: true, align: "left" +}); + +// Accent rule +slide.addShape(pres.shapes.RECTANGLE, { + x: MARGIN, y: 3.3, w: 2.5, h: 0.06, fill: { color: COLORS.accent } +}); +``` + +--- + +## 9. Breadcrumb Bar (optional, for long talks) + +A persistent header strip showing the current section. Add to every content slide for talks > 15 minutes. + +```javascript +// Add to each slide after the title/divider set +const sections = ["Motivation", "Data", "Strategy", "Results", "Discussion"]; +const currentSection = "Results"; // Changes per slide + +const barY = 0.0; +const barH = 0.28; + +// Background bar +slide.addShape(pres.shapes.RECTANGLE, { + x: 0, y: barY, w: 10, h: barH, + fill: { color: "F0F4F8" }, line: { color: "F0F4F8" } +}); + +// Section labels +const sectionW = 10 / sections.length; +sections.forEach((section, i) => { + const isActive = section === currentSection; + slide.addText(section, { + x: i * sectionW, y: barY, w: sectionW, h: barH, + fontSize: 10, fontFace: FONTS.face, + color: isActive ? COLORS.accent : COLORS.muted, + bold: isActive, + align: "center", valign: "middle" + }); + // Active section underline + if (isActive) { + slide.addShape(pres.shapes.RECTANGLE, { + x: i * sectionW + sectionW * 0.1, y: barY + barH - 0.04, w: sectionW * 0.8, h: 0.04, + fill: { color: COLORS.accent } + }); + } +}); + +// Shift all other content down by barH to avoid collision +// (adjust y coordinates in the rest of the slide by +barH) +``` + +--- + +## 10. References Slide + +**Purpose:** Complete citations for all sources cited in the deck. Required. + +```javascript +slide.background = { color: COLORS.bg }; + +slide.addText("References", { + x: MARGIN, y: 0.2, w: 9.0, h: 0.5, + fontSize: 24, fontFace: FONTS.face, color: COLORS.primary, bold: true +}); + +slide.addShape(pres.shapes.RECTANGLE, { + x: MARGIN, y: 0.72, w: 9.0, h: 0.025, fill: { color: COLORS.rule } +}); + +const refs = [ + "Cunha, F. & Heckman, J.J. (2007). The Technology of Skill Formation. American Economic Review, 97(2), 31–47.", + "Heckman, J.J., Moon, S.H., Pinto, R., Savelyev, P.A., & Yavitz, A. (2013). The Rate of Return to the HighScope Perry Preschool Program. Journal of Public Economics, 94(1), 114–128.", + "Smith, J. & Doe, J. (2025). Long-Run Returns to Early Childhood Intervention: Evidence from a Randomized Trial. Working paper.", +]; + +const refItems = refs.flatMap((r, i) => [ + { text: r, options: { breakLine: true } }, + ...(i < refs.length - 1 ? [{ text: "", options: { breakLine: true } }] : []) +]); + +slide.addText(refItems, { + x: MARGIN, y: 0.85, w: 9.0, h: 4.5, + fontSize: 13, fontFace: FONTS.face, color: COLORS.body, + paraSpaceAfter: 8 +}); +``` + +--- + +## 11. Appendix Slide + +**Purpose:** Pre-built answer slides. Label clearly so they can be navigated to quickly during Q&A. + +```javascript +// Appendix label — muted to distinguish from main deck +slide.addText("Appendix B — Robustness Checks", { + x: MARGIN, y: 0.15, w: 9.0, h: 0.4, + fontSize: 14, fontFace: FONTS.face, color: COLORS.muted, bold: false, italics: true +}); + +// Action title (still required — appendix slides also use action titles) +slide.addText("Earnings effect is stable across bandwidth choices and polynomial specifications", { + x: MARGIN, y: 0.6, w: 9.0, h: 0.75, + fontSize: FONTS.title - 2, fontFace: FONTS.face, color: COLORS.primary, bold: true +}); + +// Content follows normal slide patterns +``` + +--- + +## Quick Checks Before Delivery + +``` +□ Title slide: full title as statement/question, author, affiliation, venue, date +□ Every content slide: action title (complete sentence, states takeaway) +□ Ghost deck test: titles alone tell the complete argument +□ Results slides: one exhibit each, key finding annotated on the chart +□ Every borrowed figure/data point: in-slide citation +□ References slide: complete, consistently formatted +□ Conclusions slide: last main slide, stays on screen during Q&A +□ Contact info / QR code on conclusions or final slide +□ Body text ≥ 20 pt throughout +□ No slide has > ~40 words of body text +□ Appendix slides labeled, with pre-built Q&A answers +□ Deck runs 1–2 minutes under the time limit when practiced aloud +```