Back to skills
SKILL.md
003 Name Skill Ceb17281
ASecurityCreate Aldea-branded technical slide decks with Blueprint (Next.js 14, PDF export, dark/light themes) or Overwatch (Vite+React 19, live SPA, WebGPU shaders, Framer Motion). Supports 4 domains, 30+ components, 16 reference files, visual QA via agent-browser.
- 9 stars
- 0 votes
- 0 copies
- 0 views
- Added October 11, 2026
Works with
Security analysis
96/100- Installs packages at runtime which could introduce malicious dependencies
npx -y skills add tools-only/X-Skills --skill 003-name-skill_ceb17281 --agent claude-codeAre you the author of 003 Name Skill Ceb17281?
Add the live security badge to your README. It updates with every re-scan.
[](https://www.skillsdirectory.com/skills/tools-only-003-name-skill-ceb17281)---
name: aldea-slidedeck
description: Create Aldea-branded technical slide decks with Blueprint (Next.js 14, PDF export, dark/light themes) or Overwatch (Vite+React 19, live SPA, WebGPU shaders, Framer Motion). Supports 4 domains, 30+ components, 16 reference files, visual QA via agent-browser.
---
# Aldea Slide Deck Designer
Create professional technical slide decks with two modes:
1. **Blueprint Mode** (original) — Next.js 14, 1280x720, PDF-first, cyan blueprint grid, static slides
2. **Overwatch Mode** (new) — Vite + React 19, 1920x1080, live SPA, WebGPU shaders, Framer Motion orchestration, interactive hover states, collapsible sidebar navigation
## Mode Selection Guide
| Factor | Blueprint Mode | Overwatch Mode |
|--------|---------------|----------------|
| **Distribution** | PDF, email, print | Live URL, screen presentations |
| **Audience** | Non-technical, board, clients | Technical, investors, demos |
| **Interactivity** | Static (lightbox clicks) | Hover effects, content swaps, tooltips, shaders |
| **Dimensions** | 1280x720 | 1920x1080 |
| **Framework** | Next.js 14 | Vite + React 19 + TanStack Router |
| **Animation** | Basic motion enter/exit | Deep Framer Motion orchestration |
| **Graphics** | Static SVG, Recharts | WebGPU shaders, particle fields, network graphs |
| **Auth** | None | Optional password gate |
| **Deploy** | Static HTML + PDF | Cloudflare Workers, Vercel, Netlify |
## When to Use This Skill
- Creating new presentation decks for Aldea projects
- Building technical journey/progress presentations
- Scaffolding a Next.js slide deck with Aldea design system
- Exporting decks to PDF or static HTML for sharing
- Visualizing data, metrics, training results, or architecture
## Domains Supported
| Domain | Use Cases |
|--------|-----------|
| **Business & Finance** | KPI dashboards, revenue charts, growth trends, pricing |
| **Healthcare** | Patient metrics, clinical outcomes, treatment timelines |
| **Wellness & Coaching** | Transformation journeys, milestone celebrations, quotes |
| **AI/ML Research** | Model architecture, training metrics, STT/TTS pipelines |
---
## Design Philosophy
**Theme Selection:** Choose based on audience and distribution format.
- **Dark mode** (default): Tech/AI audiences, on-screen presentations. Deep canvas (`#0a0f1a`) with vivid cyan accents (`#00d4ff`).
- **Light mode**: PDF distribution, non-technical audiences. Off-white canvas (`#FAFBFC`) with darkened accents. See `references/design-system.md` > Light Mode.
**Blueprint Aesthetic:**
- Dual-layer grid overlay (40px coarse + 10px fine)
- Corner marks with dynamic chapter coloring via `--corner-color` CSS variable
- Clean typographic hierarchy (Major Third 1.25x ratio)
**Typography Stack:**
- Display: Playfair Display (titles, headers)
- Body: DM Sans (content, descriptions) — minimum 16px (`text-base`) for body text
- Mono: JetBrains Mono (code, labels, technical text)
**Dimensions:**
- 1280px × 720px (16:9 aspect ratio)
- Print-safe color preservation
- PDF-optimized page breaks
---
## Quick Start Workflow
### 1. Audit Reference Decks (REQUIRED)
**Before designing, audit the existing example decks for inspiration and consistency.**
```bash
# Open reference decks for audit
open ~/.claude/skills/aldea-slidedeck/assets/examples/
# Reference decks available:
# - Aldea - AI Advisor Journey - Jan 2026.pdf (dark mode, original blueprint)
# - parenting-app-user-flows-2026-01-09.pdf (dark mode, 22-slide technical)
# - subq-media-thought-leaders-2026-02.pdf (LIGHT MODE, 18-slide media deck)
```
**Audit checklist - extract from reference decks:**
| Element | What to Note |
|---------|--------------|
| **TOC Structure** | Chapter naming convention, numbering format (00, 01, 02...) |
| **Logo Placement** | Top-right Aldea logo, brightness/contrast filters |
| **Content Centering** | Horizontal centering patterns, vertical alignment |
| **Color Usage** | Accent colors per section, card border colors |
| **Typography** | Title sizes, label casing (uppercase mono for badges) |
| **Slide Chrome** | Chapter badges, slide numbers, decorative lines |
| **Image Treatment** | Opacity levels, gradient overlays, positioning |
### 2. Scaffold New Project
```bash
# Create project directory
mkdir my-slidedeck && cd my-slidedeck
# Copy scaffold files from this skill's assets
cp -r ~/.claude/skills/aldea-slidedeck/assets/scaffold/* .
# Install dependencies
npm install
# Start dev server
npm run dev # Opens at http://localhost:3200
```
### 3. Review Iconography Options
**Before building, review available icons for your domain.**
See `references/icon-reference.md` for full library with domain-specific recommendations.
| Domain | Key Icons |
|--------|-----------|
| **AI/ML** | Brain, Cpu, Database, Layers, Network, Waveform |
| **Business** | TrendingUp, DollarSign, PieChart, Target, Users |
| **Healthcare** | Heart, Activity, Stethoscope, ShieldCheck |
| **Parenting** | Baby, Users, HandHeart, Shield, Brain, Puzzle |
| **Spirituality** | Compass, Flame, Mountain, Sunrise, Lightbulb |
**Icon libraries available:**
- **Lucide** (1,500+): `lucide-react` - General purpose, clean
- **Tabler** (5,900+): `@tabler/icons-react` - Largest collection
- **Phosphor** (7,000+): `@phosphor-icons/react` - Multiple weights (thin/bold/fill)
**Finding icons:**
- Lucide: https://lucide.dev/icons
- Tabler: https://tabler.io/icons
- Phosphor: https://phosphoricons.com
### 4. Plan Content Structure
Before building slides:
1. **Define chapters** - Group content into 4-8 logical chapters (follow `XX — CHAPTER NAME` format)
2. **Outline slides** - 3-5 slides per chapter
3. **Identify slide types** - Title, TOC, metrics, workflow, comparison, etc.
4. **Gather assets** - Screenshots, diagrams, logos, expert photos
5. **Select icons** - Map icons to chapters/concepts using icon reference
### 5. Brand Color Extraction
**Before building slides, extract and map brand colors from the client/company site.**
```bash
# Scrape the client/company site for brand identity (colors, fonts, typography)
python3 ~/.claude/skills/firecrawl/scripts/firecrawl_api.py scrape "https://client-site.com" --formats branding
# Or take a screenshot for visual reference
agent-browser open https://client-site.com
agent-browser screenshot /tmp/brand-reference.png
```
**Map extracted brand colors to chapter accents** in `slides/constants.ts`:
```tsx
// Brand alignment: [source] → [deck color]
// Example: aldea.ai primary gradient amber-to-indigo
// → Chapter accents darkened for light-mode readability
export const CH: Record<string, { color: string; icon: any; label: string }> = {
'01': { color: '#1E3A8A', icon: Globe, label: 'Chapter One' },
// ...
};
```
**Anti-patterns:**
- Never use bright reds (`#DC2626`, `#E11D48`) — they read as error/danger
- Never use saturated yellows (`#fbbf24`) on light backgrounds — they disappear
- Darken to amber-800/900 range (`#92400E`, `#B45309`) for readability
### 6. Research & Content Gathering
**Available research tools (separate skills/CLIs):**
| Tool | Skill/CLI | Purpose |
|------|-----------|---------|
| **Firecrawl** | `firecrawl` CLI or Firecrawl skill | Web scraping, convert URLs to markdown |
| **Exa Search** | `exa-search` skill | AI-powered neural search, code examples |
| **Reddit JSON** | Native curl (no auth) | User feedback, pain points, discussions |
| **Perplexity** | Perplexity MCP | Research synthesis, fact-checking |
**Tools for domain research:**
```bash
# Reddit JSON API (no auth required) - user feedback, pain points
curl "https://www.reddit.com/r/{SUBREDDIT}/search.json?q={QUERY}&limit=25&sort=relevance"
curl "https://www.reddit.com/r/{SUBREDDIT}/top.json?t=month&limit=50"
# Exa Search (AI-powered) - expert content, articles
exa-search "{domain} best practices" --type article
# Firecrawl - competitor decks, methodology pages
firecrawl scrape https://example.com/methodology
```
**Reddit JSON trick:** Append `.json` to any Reddit URL for structured data:
- `reddit.com/r/{sub}/top.json?t=year` - Top posts
- `reddit.com/r/{sub}/search.json?q=query` - Search results
- `reddit.com/r/{sub}/comments/POST_ID.json` - Post + comments
**Domain-specific subreddits:**
| Domain | Subreddits |
|--------|------------|
| **Parenting** | r/Parenting, r/NewParents, r/Mommit, r/Daddit, r/toddlers |
| **AI/ML** | r/MachineLearning, r/LocalLLaMA, r/artificial |
| **Healthcare** | r/medicine, r/nursing, r/healthIT |
| **Business** | r/startups, r/Entrepreneur, r/smallbusiness |
### 7. Build Slides
Each slide uses the `SlideLayout` wrapper with optional `chapterColor` and `chapterIcon` for dynamic styling:
```tsx
import { CH, TOTAL } from './constants';
import { SectionHeader, GradientCard } from './helpers';
<SlideLayout
chapter="01 — CHAPTER NAME"
slideNumber={3}
totalSlides={TOTAL}
chapterColor={CH['01'].color}
chapterIcon={CH['01'].icon}
>
<div className="h-full flex flex-col px-16 pt-16 pb-10">
<SectionHeader icon={Globe} color={CH['01'].color}>
Section Title Here
</SectionHeader>
<div className="grid grid-cols-3 gap-5 flex-1">
{/* Use distinct colors per card — see Card Color Strategy */}
<GradientCard color="#1E3A8A" icon={Globe}>...</GradientCard>
<GradientCard color="#059669" icon={Leaf}>...</GradientCard>
<GradientCard color="#B45309" icon={Star}>...</GradientCard>
</div>
</div>
</SlideLayout>
```
### 8. Design QA Checklist (REQUIRED)
**Before exporting, compare your deck against reference decks.**
See `references/visual-qa-checklist.md` for the full bug catalog and `references/2026-best-practices.md` for typography/density rules.
| Check | Requirement |
|-------|-------------|
| ✅ **TOC Slide** | Matches chapter structure, clickable cards with `scrollIntoView` navigation |
| ✅ **Logo** | Aldea logo top-right on every slide (black for light mode, white for dark) |
| ✅ **Centering** | Content horizontally centered (`items-center`, `text-center`) |
| ✅ **Chapter Badges** | Format: `XX — CHAPTER NAME`, uppercase, top-left, chapter-colored |
| ✅ **Slide Numbers** | Format: `01 / NN`, mono font, below logo |
| ✅ **Card Colors** | Distinct accent colors per card in grids of 3+ (see Card Color Strategy) |
| ✅ **Body Text** | Minimum 16px (`text-base`) — never `text-sm` for body content |
| ✅ **Content Density** | ≤ 40 words per content slide, one main idea per slide |
| ✅ **GlowBadge Size** | `size="sm"` for inline badges, `size="md"` for standalone |
| ✅ **StatsBar Position** | In-flow (`mt-auto`), never absolute positioned |
| ✅ **Color Readability** | No bright reds or saturated yellows on light backgrounds |
| ✅ **Grid Spacing** | Consistent `gap-4` or `gap-6` between elements |
#### Visual Verification with agent-browser
```bash
# Start dev server
npm run dev &
# Screenshot each slide for visual inspection
agent-browser open http://localhost:3200
agent-browser screenshot /tmp/slide-01.png # Title
agent-browser scroll down 720
agent-browser screenshot /tmp/slide-02.png # TOC
# ... repeat for each slide
# Read each screenshot and check for:
# - Text overlapping other elements
# - Colors unreadable against background
# - Cards/bars extending beyond parent containers
# - GlowBadge text disproportionate to surrounding text
# - StatsBar colors matching corresponding GradientCards
```
### 9. Export & Share
```bash
# Build static HTML (shareable folder)
npm run export
# Output: out/
# Generate PDF (requires dev server running)
npm run dev &
npm run pdf
# Output: output/[name]-YYYY-MM-DD.pdf
# Verify page count matches slide count
mdls -name kMDItemNumberOfPages output/*.pdf
# Zip for distribution
zip -rq deck.zip out/
```
---
## Component Library
### Core Components
| Component | Purpose |
|-----------|---------|
| `SlideLayout` | Universal wrapper with branding, grid, chrome. Props: `chapterColor`, `chapterIcon` |
| `SectionHeader` | Centered icon + gradient lines + heading. Props: `icon`, `color`, `children` |
| `GradientCard` | Rounded card with gradient bg + left accent bar. Props: `color`, `icon?`, `children` |
| `StatsBar` | In-flow stats footer (NOT absolute). Props: `stats: { value, label, color }[]` |
| `GlowBadge` | Inline metric callout with glow shadow. Props: `color`, `children`, `size: 'sm'\|'md'` |
| `MetricCard` | Numbered key points with descriptions |
| `FlowDiagram` | Sequential workflow visualization |
| `ComparisonTable` | Feature comparison matrices |
| `CodeBlock` | Syntax-highlighted code snippets |
| `ImageLightbox` | Zoomable image with modal overlay |
| `ImageGallery` | Grid of lightbox-enabled images |
### Chart Components (Recharts)
| Component | Purpose |
|-----------|---------|
| `ChartCard` | Wrapper with blueprint styling |
| `MetricsChart` | Line/area charts for time series |
| `ComparisonChart` | Bar charts for comparisons |
| `RadarChart` | Multi-dimensional analysis |
### Animation Components (Motion)
| Component | Purpose |
|-----------|---------|
| `AnimatedSlide` | Entrance animations (fade, slideUp, scale, blur) |
| `AnimatedList` | Staggered list item reveals |
| `AnimatedNumber` | Counter animation for metrics |
### Diagram Components
| Component | Purpose |
|-----------|---------|
| `ArchitectureDiagram` | Node-based system diagrams (React Flow) |
| `MermaidDiagram` | Markdown-based flowcharts (Mermaid) |
### ML Visualization Components
| Component | Purpose |
|-----------|---------|
| `AttentionHeatmap` | Transformer attention weight visualization |
| `AudioWaveform` | STT/TTS audio signal display |
| `TrainingMetrics` | Loss/accuracy training curves |
---
## Slide Type Templates
| Type | Use Case | Key Elements |
|------|----------|--------------|
| **Title** | Opening slide | Large logo, title, subtitle, decorative lines |
| **TOC** | Chapter overview | Expandable cards, color-coded chapters, icons |
| **Metrics Grid** | KPIs, evaluation criteria | 3-column MetricCard grid |
| **Workflow** | Process flows | FlowDiagram + info boxes |
| **Technical** | Architecture, code | CodeBlock + description sidebar |
| **Comparison** | Feature matrices | ComparisonTable or side-by-side columns |
| **Image** | Screenshots, diagrams | Full-width image with lightbox |
| **Timeline** | Chronological events | Horizontal timeline with markers |
| **Chart** | Data visualization | MetricsChart/ComparisonChart in ChartCard |
| **Architecture** | System diagrams | ArchitectureDiagram with custom nodes |
| **Training** | ML results | TrainingMetrics with loss/accuracy curves |
See `references/slide-templates.md` for detailed templates.
---
## Icon Libraries
Included icon packs:
| Library | Import | Icons |
|---------|--------|-------|
| **Lucide** | `lucide-react` | 1,500+ |
| **Tabler** | `@tabler/icons-react` | 5,900+ |
| **Phosphor** | `@phosphor-icons/react` | 7,000+ |
See `references/icon-reference.md` for domain-specific recommendations.
---
## Domain Templates
Pre-built templates for common use cases:
```
domain-templates/
├── business/ # KPI dashboards, revenue charts, pricing
├── healthcare/ # Patient metrics, clinical outcomes
├── wellness/ # Transformation journeys, quotes
└── ml-research/ # Model architecture, training, STT/TTS
```
Import and customize:
```tsx
// Example: ML training slide
import { TrainingProgressSlide } from '../domain-templates/ml-research/templates';
<TrainingProgressSlide slideNumber={15} />
```
---
## Color Palette
### Dark Mode
```css
--canvas-900: #0a0f1a; --canvas-800: #0f1729; --canvas-700: #141e35;
--text-primary: #e2e8f0; --text-secondary: #94a3b8; --text-muted: #64748b;
--blueprint-cyan: #00d4ff; --blueprint-grid: rgba(30,58,95,0.25);
```
### Light Mode (recommended for PDF)
```css
--canvas-900: #FAFBFC; --canvas-800: #F1F3F5; --canvas-700: #E8ECF0;
--text-primary: #1A1D23; --text-secondary: #4A5568; --text-muted: #8896A6;
--blueprint-cyan: #0891B2; --blueprint-grid: rgba(100,130,170,0.08);
```
### Chart Colors (both themes)
```css
#00d4ff / #0891B2 /* Cyan - primary data */
#60a5fa /* Blue - secondary */
#a78bfa /* Purple - tertiary */
#34d399 / #059669 /* Green - positive */
#f97316 / #B45309 /* Orange - warning */
```
See `references/design-system.md` for full token tables and card color strategy.
---
## Reference Documentation
| File | Purpose |
|------|---------|
| `references/design-system.md` | Colors (dark + light), typography, spacing, grid, card color strategy |
| `references/component-patterns.md` | Component props, examples, TOC navigation pattern |
| `references/visual-qa-checklist.md` | Agent-browser screenshot workflow, 10 common visual bugs + fixes |
| `references/2026-best-practices.md` | Typography scale, content density, color rules, structural patterns |
| `references/slide-templates.md` | 8+ slide type templates |
| `references/export-workflow.md` | PDF and static export guide |
| `references/data-visualization.md` | Chart components and best practices |
| `references/icon-reference.md` | Icon libraries by domain |
| `references/animation-patterns.md` | Motion components and timing |
| `references/ml-visualization.md` | ML-specific components |
| `references/custom-asset-generation.md` | Custom icon/graphic generation pipeline |
---
## Custom Asset Generation
Generate custom icons and graphics matching the blueprint aesthetic:
**Pipeline:** Nano Banana Pro → ImageMagick → Potrace → SVG Cleanup
```bash
# Generate blueprint-styled icon
nano-banana-pro "Minimalist neural network icon, flat design,
3 solid colors, cyan #00d4ff on dark #0a0f1a, geometric"
# Vectorize
magick output.png -posterize 4 -colors 4 processed.png
potrace processed.pbm -s -o icon.svg
# Optimize
svgo icon.svg -o icon-optimized.svg
```
**Alternative:** Use SVGMaker MCP for direct text-to-SVG generation.
**Required Tools:**
- `nano-banana-pro` skill (Gemini 3 Pro image generation)
- ImageMagick (`brew install imagemagick`)
- Potrace (`brew install potrace`)
- SVGO (`npm install -g svgo`)
See `references/custom-asset-generation.md` for full workflow and domain-specific prompts
---
## Overwatch Mode
### When to Use Overwatch Mode
- Live presentations (investor pitches, product demos, conference talks)
- Interaction-rich decks with hover states, content swaps, tooltips
- WebGPU shader backgrounds for dramatic cover slides
- Decks that need password protection
- Keyboard-navigated presentations with sidebar navigation
### Quick Start (Overwatch Mode)
```bash
# Create project from Overwatch scaffold
cp -r ~/.claude/skills/aldea-slidedeck/assets/scaffold-overwatch/ ./my-deck
cd my-deck
# Install dependencies
npm install
# Start dev server
npm run dev # Opens at http://localhost:5173
# Navigate to /deck/1
```
### Adding Slides
1. Create a new file in `src/slides/` (e.g., `02-problem.tsx`):
```tsx
import { SlideWrapper } from "../components/layout/SlideWrapper";
import { SplitLayout } from "../components/layout/SplitLayout";
import { Headline } from "../components/layout/Headline";
import { BodyText } from "../components/layout/BodyText";
export default function ProblemSlide() {
return (
<SlideWrapper mode="dark">
<Headline>The Problem</Headline>
<BodyText className="mt-8">Your content here</BodyText>
</SlideWrapper>
);
}
```
2. Register in `src/config.ts`:
```typescript
export const slides: SlideEntry[] = [
{ id: "cover", fileKey: "01-cover", title: "Cover", shortTitle: "Cover" },
{ id: "problem", fileKey: "02-problem", title: "The Problem", shortTitle: "Problem" },
];
const slideModules = {
"01-cover": () => import("./slides/01-cover"),
"02-problem": () => import("./slides/02-problem"),
};
```
### Component Library (Overwatch)
#### Layout Components
| Component | Import | Purpose |
|-----------|--------|---------|
| `SlideWrapper` | `layout/SlideWrapper` | Full-slide container with `mode` prop (dark/white/orange) |
| `Headline` | `layout/Headline` | 140px display title |
| `SubHeadline` | `layout/SubHeadline` | 72px secondary title |
| `Eyebrow` | `layout/Eyebrow` | Small caps category label |
| `BodyText` | `layout/BodyText` | Body copy (sm/md/lg) |
| `MonoLabel` | `layout/MonoLabel` | Monospace label (sm/md/lg) |
| `Divider` | `layout/Divider` | Configurable hr (thin/medium/thick) |
| `SplitLayout` | `layout/SplitLayout` | Two-column with ratio (1:1, 2:1, 1:2, 3:2, 2:3) |
| `CenterLayout` | `layout/CenterLayout` | Centered flex container |
| `GridLayout` | `layout/GridLayout` | 2/3/4 column grid |
#### Interaction Components
| Component | Import | Purpose |
|-----------|--------|---------|
| `AnimatedItem` | `interactions/AnimatedItem` | Entrance variants: fade/slideUp/slideLeft/scale |
| `StaggeredAnimation` | `interactions/StaggeredAnimation` | Parent container with stagger timing |
| `HoverLift` | `interactions/HoverLift` | Hover elevation (sm/md/lg) |
| `GlowBorder` | `interactions/GlowBorder` | Mouse-tracking gradient border |
| `ExpandableCard` | `interactions/ExpandableCard` | Click-to-expand with layout animation |
| `Accordion` | `interactions/Accordion` | Collapsible sections |
| `TabGroup` | `interactions/TabGroup` | Tabbed content panels |
| `QuoteRotator` | `interactions/QuoteRotator` | Auto-cycling quotes with dot indicators |
| `ContentRotator` | `interactions/ContentRotator` | Auto-cycling arbitrary ReactNode children with dots |
| `SocialProofCard` | `interactions/SocialProofCard` | Platform-styled testimonial (twitter/linkedin/testimonial) |
| `TerminalTyper` | `interactions/TerminalTyper` | Typewriter CLI demo with macOS terminal chrome |
| `TimelineConnector` | `interactions/TimelineConnector` | Horizontal roadmap with animated SVG connectors |
| `InfiniteScrollTicker` | `interactions/InfiniteScrollTicker` | Vertical marquee with gradient masks |
| `ProgressBar` | `interactions/ProgressBar` | Animated horizontal fill bar with label |
| `RevealCaption` | `interactions/RevealCaption` | Hover caption overlay |
| `Tooltip` | `interactions/Tooltip` | Position-aware tooltip |
| `PulseIndicator` | `interactions/PulseIndicator` | Pulsing dot + expanding ring |
| `Skeleton` | `interactions/Skeleton` | Loading placeholder |
#### Graphics Components
| Component | Import | Purpose |
|-----------|--------|---------|
| `WebGPUCanvas` | `graphics/WebGPUCanvas` | WebGPU shader host + CSS gradient fallback |
| `ParticleField` | `graphics/ParticleField` | Floating particle animation |
| `NetworkGraph` | `graphics/NetworkGraph` | Pulsing node-ring visualization |
| `SVGRadarChart` | `graphics/SVGRadarChart` | Zero-dependency SVG radar chart with pathLength animation |
#### Utility Hooks
| Hook | Import | Purpose |
|------|--------|---------|
| `useAutoCycle` | `hooks/useAutoCycle` | Generic auto-advancing timer: `[currentItem, index, setIndex]` |
| `useTypewriter` | `hooks/useTypewriter` | Character-by-character text reveal: `{ displayText, isComplete }` |
### Navigation
- **Sidebar:** Auto-collapses after 3s, hover to expand, spring-animated
- **Keyboard:** ArrowRight/Space (next), ArrowLeft (prev), Home/End
- **URL-based:** `/deck/1`, `/deck/2`, etc. via TanStack Router
- **Preloading:** Adjacent slides are preloaded for instant navigation
### Password Protection
Set `config.auth.password` in `src/config.ts`:
```typescript
auth: { password: "your-password" } // Empty string = no auth
```
Supports `?pw=your-password` URL param for direct access.
### Data-Driven Authoring
For faster deck creation, provide a YAML spec file that describes each slide's type, content, and mode. The spec serves as Claude's brief—not template codegen.
```bash
# Initialize a new deck from a YAML spec
node ~/.claude/skills/aldea-slidedeck/scripts/init-deck-from-spec.mjs deck-spec.yaml ./my-deck
```
The script copies the scaffold, generates `config.ts`, and creates empty slide files. Claude then fills in each slide using the spec + `references/overwatch-slide-templates.md`.
See `references/overwatch-deck-schema.md` for the full YAML schema covering all 14 slide types.
### Deployment
```bash
# Build static SPA
npm run build
# Output: dist/
# Deploy to Cloudflare Workers
npx wrangler deploy
# Deploy to Vercel
npx vercel
# Deploy to Netlify
npx netlify deploy --prod
```
**No PDF export** — Overwatch Mode is for live presentations. For static output, use agent-browser screenshots.
### Overwatch Reference Documentation
| File | Purpose |
|------|---------|
| `references/overwatch-design-system.md` | Color tokens, typography, dimensions, slide modes |
| `references/overwatch-interactions.md` | Animation patterns, timing, 19 interaction components + hooks |
| `references/overwatch-shaders.md` | WebGPU setup, WGSL syntax, custom shaders, fallback |
| `references/overwatch-slide-templates.md` | 14 slide type templates with component composition |
| `references/overwatch-advanced-patterns.md` | Reference-only patterns: waterfall, carousel, strikethrough, dual-layer shader |
| `references/overwatch-deck-schema.md` | YAML schema for data-driven deck authoring |
---
## Blueprint Mode (Original)
The sections below document the original Blueprint Mode.
## Scaffold Assets
- `assets/scaffold/` - Blueprint Mode starter template
- package.json with all dependencies
- Component library (20+ components): SlideLayout, SectionHeader, GradientCard, StatsBar, GlowBadge, MetricCard, FlowDiagram, etc.
- CSS design tokens (globals.css) with both dark and light mode themes
- Export script (export-pdf.js)
- `slides/` - Modular file structure template
- `public/images/aldea-logo.png` — White logo (dark mode)
- `public/images/aldea-logo-black.png` — Black logo (light mode)
- `assets/scaffold-overwatch/` - Overwatch Mode starter template
- Vite + React 19 + TanStack Router + Framer Motion + Tailwind 4
- 10 layout components: SlideWrapper, Headline, SubHeadline, Eyebrow, BodyText, MonoLabel, Divider, SplitLayout, CenterLayout, GridLayout
- 12 interaction components: AnimatedItem, StaggeredAnimation, HoverLift, GlowBorder, ExpandableCard, Accordion, TabGroup, QuoteRotator, RevealCaption, Tooltip, PulseIndicator, Skeleton
- 3 graphics components: WebGPUCanvas (with CSS gradient fallback), ParticleField, NetworkGraph
- 1 WGSL shader: lava-nebula.wgsl (raymarching nebula effect)
- Chrome: DeckShell, PasswordGate, MobileBlock, SlideCounter
- Navigation: Sidebar (collapsible), SlideScaler (ResizeObserver), KeyboardNav (arrow/space/home/end)
- Example cover slide with shader background
- CSS design tokens with 3 slide modes (dark/white/orange)
- `assets/examples/` - **Reference decks for audit workflow**
- `Aldea - AI Advisor Journey - Jan 2026.pdf` - Dark mode, original blueprint aesthetic
- `parenting-app-user-flows-2026-01-09.pdf` - Dark mode, 22-slide technical deck
- `subq-media-thought-leaders-2026-02.pdf` - **LIGHT MODE**, 18-slide media deck — brand-aligned colors, distinct card colors, GradientCard/GlowBadge components
- `static-export/` - HTML export example with all assets
---
## Dependencies
```json
{
"recharts": "^2.12.0",
"lucide-react": "^0.468.0",
"@tabler/icons-react": "^3.24.0",
"@phosphor-icons/react": "^2.1.0",
"motion": "^11.15.0",
"@xyflow/react": "^12.3.0",
"mermaid": "^11.4.0"
}
```
---
## Example Usage
```bash
# User request:
"Create a slide deck for the parenting app user flows"
# Workflow (follows 9-step process):
1. AUDIT: Open assets/examples/, review existing decks for TOC, logos, centering
2. SCAFFOLD: Copy assets/scaffold/* to new project, npm install, npm run dev
3. ICONS: Review references/icon-reference.md, select Parenting domain icons
4. PLAN: Define chapters (00-Pre-Session, 01-First Launch, etc.), outline slides
5. BRAND: Extract brand colors with Firecrawl, map to chapter accents in constants.ts
6. RESEARCH: Use Reddit JSON API for user pain points, Exa for expert content
7. BUILD: Create slides with SlideLayout + chapterColor/chapterIcon, use distinct card colors
8. QA: Visual verification with agent-browser screenshots, check against 2026-best-practices.md
9. EXPORT: npm run pdf, verify page count with mdls
```
## Tips
- **Keep slides focused** - One main idea per slide, ≤ 40 words per content slide
- **Use consistent spacing** - px-16 horizontal, pt-16/pb-10 vertical
- **Leverage new components** - SectionHeader for headings, GradientCard for content, StatsBar for metrics
- **Distinct card colors** - Never use the same accent for all cards in a grid of 3+
- **Body text minimum 16px** - Use `text-base`, never `text-sm` for body content
- **GlowBadge sizing** - `size="sm"` for inline, `size="md"` for standalone
- **StatsBar in-flow** - Always `mt-auto`, never absolute positioned
- **Visual verify** - Screenshot every slide with agent-browser before export
- **Test exports early** - PDF rendering may differ from browser
- **Update slide count** - TOTAL in constants.ts, SlideLayout shows "/ N"
Attribution
Comments
Loading comments…
Newsletter
Get the weekly list of safe new skills, and the ones we pulled.