# Ce101 Slides

> 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

- Skill: `majiayu000/ce101-slides` (Agent Skill, multi-file: 2 files)
- Install (CLI): `npx skillmds add majiayu000/ce101-slides`
- Raw SKILL.md: https://api.skillmd.com/api/skills/majiayu000/ce101-slides/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Docs & Writing
- Author: majiayu000 (https://skillmd.com/u/majiayu000)
- Updated: 2026-09-09
- Page: https://skillmd.com/skills/majiayu000/ce101-slides

---


# 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 <input.pptx> [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)

