--- name: ce101-slides description: "Context Engineering 101 curriculum slide generation. Use this skill when working on CE101 curriculum to: (1) Generate styled PowerPoint presentations from markdown, (2) Create PNG previews of slides, (3) Update master presentation from curriculum modules" --- # CE101 Slide Generation Skill ## Overview This skill automates the generation of professionally styled PowerPoint presentations from CE101 curriculum content. It handles the complete workflow: markdown → styled PowerPoint → PNG previews. **When to use this skill:** - Updating CE101 curriculum and need to regenerate slides - Creating new presentation slides from curriculum content - Previewing slides as PNG images - Converting markdown presentations to PowerPoint ## Quick Start ### Generate Complete Slide Deck ```bash # One-command generation (markdown → PowerPoint → PNGs) ./scripts/generate-slides.sh # View slides in browser ./scripts/view-slides.sh ``` **Output:** - `CE101-Master-Presentation-Styled.pptx` - Styled PowerPoint - `workspace/thumbnails/slide-*.png` - Individual slide images - `workspace/thumbnails/index.html` - Browsable slide index ## File Structure ``` ce101/ ├── 01-core-concepts.md ← Curriculum modules (source of truth) ├── 02-filesystem-organization.md ├── ... ├── 08-mcp-servers.md │ ├── CE101-Master-Presentation.md ← Master slide deck (manually curated) │ ├── workspace/ │ ├── generate-presentation.js ← Slide generator script │ ├── thumbnails/ ← Generated PNG previews │ └── slides-html/ ← Intermediate HTML files │ └── scripts/ ├── generate-slides.sh ← Main automation ├── pptx-to-png.sh ← PowerPoint → PNG converter └── view-slides.sh ← Browser launcher ``` ## Core Workflows ### 1. Update Curriculum → Generate Slides **Workflow:** 1. Edit curriculum modules (01-08.md) 2. Work with Claude to update `CE101-Master-Presentation.md`: - Extract key concepts from updated modules - Format as slide-friendly content (max 6-7 bullets per slide) 3. Generate slides: ```bash ./scripts/generate-slides.sh ``` 4. Review: ```bash ./scripts/view-slides.sh ``` **Example prompt for Claude:** ``` I updated Module 3 (03-multi-tab-orchestration.md) with new content about agent coordination. Help me extract the key concepts and update the relevant section in CE101-Master-Presentation.md. ``` ### 2. View Generated Slides ```bash # Open in browser ./scripts/view-slides.sh # Or directly: open workspace/thumbnails/index.html # macOS xdg-open workspace/thumbnails/index.html # Linux ``` ### 3. Convert Any PowerPoint to PNGs ```bash ./scripts/pptx-to-png.sh [output-dir] # Example: ./scripts/pptx-to-png.sh CE101-Master-Presentation-Styled.pptx workspace/preview ``` ## Slide Format Guidelines ### Master Markdown Format The master presentation uses marp-style markdown with `---` slide separators: ```markdown --- marp: true theme: default paginate: true --- # Slide Title ## Optional Subtitle Intro text here - Bullet point 1 - Bullet point 2 - Maximum 6-7 bullets recommended --- # Next Slide ... ``` ### Slide Types **1. Title Slide** (first slide): ```markdown # Context Engineering 101 ## Stop Writing Prompts, Start Engineering Context A practical guide for SREs and DevOps engineers ``` - Dark charcoal background with orange accent bar - Large title text **2. Module Divider** (contains "Module" in title): ```markdown # Module 1: Core Concepts ``` - Full orange background (#F96D00) - Centered white text - Larger font sizes **3. Content Slide** (regular slides): ```markdown # Slide Title ## Optional Subtitle Text content here - Bullet 1 - Bullet 2 ``` - White background with orange accent bar on left - Left-aligned content - Auto-adjusting font sizes ### Design Constraints - **Dimensions**: 720pt × 405pt (16:9 aspect ratio) - **Margins**: Minimum 0.5" (36pt) from all edges - **Bullets**: Maximum 6-7 per slide for readability - **Font**: Arial (web-safe) - **Auto-sizing**: Font reduces from 12pt to 11pt when >10 content lines - **Line spacing**: Adjusts from 1.2 to 1.15 for dense content ### Color Theme (Little Caesars Orange) ```javascript { primaryOrange: 'F96D00', // Main orange deepOrange: 'E85D04', // Darker accent charcoal: '222831', // Dark backgrounds/text coolGray: '546E7A', // Subtitles lightBg: 'F5F5F5', // Light backgrounds white: 'FFFFFF' // Text on orange } ``` ## Troubleshooting ### Error: "Text box ends too close to bottom edge" **Cause**: Too much content on one slide **Fix**: In `CE101-Master-Presentation.md`, reduce bullets or split into two slides **Example:** ```markdown # Before (10 bullets - TOO MANY) - Bullet 1 - Bullet 2 ... - Bullet 10 --- # After (split into two slides) # Part 1 - Bullet 1 ... - Bullet 5 --- # Part 2 - Bullet 6 ... - Bullet 10 ``` ### Error: "HTML content overflows body horizontally" **Cause**: Title or text too long **Fix**: Shorten title or text content ### Slides look cut off in PNG previews **Cause**: May be rendering issue **Fix**: Check actual PowerPoint file - PNGs are for preview only ### Generated PowerPoint won't open **Cause**: Malformed markdown or generation error **Fix**: 1. Check `workspace/slides-html/` for problematic HTML 2. Verify slide separators are `---` on their own line 3. Look for unbalanced markdown formatting ## Dependencies ### Node.js Packages (Global) - `pptxgenjs` - PowerPoint generation - Located at: `/home/becker/.nvm/versions/node/v20.19.3/lib/node_modules` ### System Packages - `libreoffice` / `soffice` - PowerPoint → PDF conversion - `pdftoppm` (poppler-utils) - PDF → PNG conversion ### Check Dependencies ```bash # Node.js and packages which node ls /home/becker/.nvm/versions/node/v20.19.3/lib/node_modules/pptxgenjs # System tools which soffice which pdftoppm ``` ## Advanced Usage ### Modify Slide Styling Edit `workspace/generate-presentation.js`: ```javascript // Line 8-17: Color scheme const colors = { primaryOrange: 'F96D00', // Change these deepOrange: 'E85D04', // ... }; // Line 143-182: Slide layout and spacing ``` After modifying, regenerate: ```bash ./scripts/generate-slides.sh ``` ### Change Theme Colors **Example: Switch to blue theme** 1. Edit `workspace/generate-presentation.js` lines 10-11: ```javascript primaryOrange: '0066CC', // Blue deepOrange: '004C99', // Darker blue ``` 2. Regenerate: ```bash ./scripts/generate-slides.sh ``` ## File Ownership ### Source Files (Edit and Commit to Git) - `01-core-concepts.md` through `08-mcp-servers.md` - `CE101-Master-Presentation.md` - `workspace/generate-presentation.js` - `scripts/*.sh` ### Generated Files (Don't Edit, In .gitignore) - `CE101-Master-Presentation-Styled.pptx` - `workspace/thumbnails/` - `workspace/slides-html/` ## Quick Reference Commands ```bash # Generate everything (PowerPoint + PNGs) ./scripts/generate-slides.sh # View slides in browser ./scripts/view-slides.sh # Convert PowerPoint to PNGs only ./scripts/pptx-to-png.sh CE101-Master-Presentation-Styled.pptx # Check slide count grep -c "^---$" CE101-Master-Presentation.md # Clean generated files rm -rf workspace/thumbnails workspace/slides-html CE101-Master-Presentation-Styled.pptx ``` ## Common Tasks ### Add New Module to Slides 1. Create/edit curriculum: `09-new-topic.md` 2. Ask Claude: ``` Extract key concepts from 09-new-topic.md and add a module section to CE101-Master-Presentation.md with: - Module divider slide - 3-5 content slides with main concepts - Max 6 bullets per slide ``` 3. Generate: `./scripts/generate-slides.sh` 4. Review: `./scripts/view-slides.sh` ### Fix Overcrowded Slide **Problem**: Slide generation fails with "text too close to bottom edge" **Solution**: 1. Find the problematic slide number in error message 2. Open `CE101-Master-Presentation.md` 3. Count `---` separators to find the slide 4. Reduce content: - Remove less important bullets - Split into two slides - Shorten text 5. Regenerate: `./scripts/generate-slides.sh` ### Update Slides After Curriculum Changes **Scenario**: You improved Module 2 and want slides to reflect changes **Workflow**: 1. Edit `02-filesystem-organization.md` (curriculum) 2. Ask Claude: ``` I updated Module 2 with better examples. Please review the changes and update the Module 2 section in CE101-Master-Presentation.md to match. Keep it to 5-7 slides maximum. ``` 3. Claude updates master presentation 4. Generate: `./scripts/generate-slides.sh` 5. Review: `./scripts/view-slides.sh` ## Performance Notes - Markdown → PowerPoint: ~5 seconds for 56 slides - PowerPoint → PNG: ~10-15 seconds for 56 slides - Total workflow: ~20 seconds end-to-end - PNG files: ~150KB each, ~8.5MB for 56 slides ## Best Practices 1. **Keep curriculum detailed, slides concise** - Curriculum has full explanations - Slides have key points only 2. **6-7 bullets maximum per slide** - More than this and font sizes shrink - Content gets cramped 3. **Use module dividers** - Break up sections with full-orange slides - Any slide with "Module" in title becomes a divider 4. **Test after edits** - Run `./scripts/generate-slides.sh` frequently - Catch formatting issues early 5. **Review visually** - Always check PNG previews - PowerPoint might render slightly differently ## Documentation - **README.md** - Project overview and workflow - **SLIDE_WORKFLOW.md** - Detailed slide generation guide - **CLAUDE.md** - Project-specific guidance for Claude Code ## License Part of Context Engineering 101 curriculum (MIT License)