一键导入
sunday-slides
// Generate Slidev presentation decks in the Sunday Slides visual style with customisable background colour, logo icon, and image style. Creates Slidev projects with AI-generated graphics and PDF, SPA, and PPTX export.
// Generate Slidev presentation decks in the Sunday Slides visual style with customisable background colour, logo icon, and image style. Creates Slidev projects with AI-generated graphics and PDF, SPA, and PPTX export.
| name | sunday-slides |
| description | Generate Slidev presentation decks in the Sunday Slides visual style with customisable background colour, logo icon, and image style. Creates Slidev projects with AI-generated graphics and PDF, SPA, and PPTX export. |
Generate Slidev presentations with customisable visuals — background colour, logo icon, and illustration style — plus AI-generated graphics and PDF, SPA, and PPTX export.
| Parameter | Default | Options |
|---|---|---|
| Background colour | #2BD3EC (cyan) | Any hex colour |
| Logo icon | Cute monkey SVG (bundled) | Any SVG file path |
| Image style | Artistic pencil sketch | Preset choices or free text (see below) |
| Preset | Description |
|---|---|
| Artistic pencil sketch (default) | Soft graphite pencil on textured paper, expressive hand-drawn lines with light shading and cross-hatching |
| Retro pixel art | Chunky pixel art in a limited palette, 16-bit retro game aesthetic with clean pixel edges |
| Colour crayons sketch | Vibrant waxy crayon strokes on paper, childlike and playful with bold colours and visible texture |
| Modern technical drawing | Precise CAD-style line art, clean geometric construction with thin uniform strokes |
| Free text | User can type any style description they wish |
| Element | Value |
|---|---|
| Background | #2BD3EC (cyan, customisable) |
| Font Family | Geist (sans-serif) |
| Text Colour | Black (#000000) |
| Graphics | Artistic pencil sketch (customisable): black lines on white (converted to background colour), vertical aspect ratio, ABSOLUTELY NO TEXT/LETTERS/NUMBERS, must directly illustrate the specific slide content |
| Layout | Two-column: text left, graphic right |
| Logo | Custom icon (default: monkey) in top-left of every slide |
Use the AskUserQuestion tool (if available) to collect customisation preferences before starting. If AskUserQuestion is not available, ask the user in plain chat.
Ask all three questions in a single AskUserQuestion call:
Background colour: "What background colour should the slides use?"
Image style: "What illustration style should the slide images use?"
Logo icon: "What logo/icon should appear on the slides?"
Store the chosen values for use throughout the workflow:
SLIDE_BG — hex colour string (default: #2BD3EC)IMAGE_STYLE — style description string (default: Artistic pencil sketch)LOGO_SOURCE — path to SVG file (default: skill bundled monkey SVG)Before starting, determine whether to regenerate images:
Default behaviour: Keep existing images (skip Step 4) unless explicitly instructed otherwise.
mkdir -p {project}_preso
cd {project}_preso
# Initialise with bun
bun init -y
bun add @slidev/cli @slidev/theme-default
# Create directory structure
mkdir -p public/images styles
# Copy the logo from skill assets (or custom path)
# If using default monkey logo:
cp {SKILL_DIR}/assets/logo.svg public/logo.svg
# If user specified a custom SVG:
cp {LOGO_SOURCE} public/logo.svg
Where {SKILL_DIR} is the path to this skill directory (the directory containing this SKILL.md file).
Copy assets/uno.config.ts from the skill directory to the presentation directory.
Copy assets/styles/index.css from the skill directory to styles/index.css.
cp {SKILL_DIR}/assets/uno.config.ts .
cp {SKILL_DIR}/assets/styles/index.css styles/
Then apply the chosen background colour by replacing the default #2BD3EC in both files:
uno.config.ts: update background: '#2BD3EC' to background: '{SLIDE_BG}' and bg-[var(--slide-bg)] shortcutstyles/index.css: update var(--slide-bg, #2BD3EC) to var(--slide-bg, {SLIDE_BG})If the user chose the default colour, no changes are needed.
Read the source content and convert each slide section to Slidev markdown.
CRITICAL: The title slide content MUST follow immediately after the frontmatter to avoid an empty first page.
---
theme: none
fonts:
sans: Geist
mono: Geist Mono
title: '[PRESENTATION TITLE]'
background: '{SLIDE_BG}'
layout: center
class: text-center
---
<img src="/logo.svg" class="slide-logo" />
# [MAIN TITLE]
## [SUBTITLE]
[PRESENTER NAME(S)]
Note: The title slide uses layout: center and class: text-center in the frontmatter itself.
---
layout: default
---
<img src="/logo.svg" class="slide-logo" />
<h2 class="slide-title">[SLIDE TITLE]</h2>
<div class="slide-grid">
<div class="slide-text-col">
- **First main point**
- Supporting detail here
- Another supporting detail
- **Second main point**
- Supporting detail
- **Third main point**
</div>
<div class="slide-image-col">
<img src="/images/slide-NN.png" />
</div>
</div>
---
CRITICAL Layout Rules:
<h2 class="slide-title"> for titles - MUST be ABOVE the grid (outside and before the slide-grid div) so it spans the full slide widthslide-grid class (CSS-based grid: 1fr + auto columns, 2rem gap). Image column auto-sizes based on available height.slide-text-col classslide-image-col class (right-aligns the image)<div> tags<h2 class="slide-title">Title</h2> for slide titles (HTML tag, not markdown)- and 2-space indentation for nesting (one or two levels)1., 2., etc.) where order matters<div> tags--- on its own lineCRITICAL: Always use the Task tool to spawn a subagent for image generation. Each subagent handles one slide's image generation AND immediate post-processing. This ensures proper isolation and prevents context overflow.
For each slide, spawn a subagent with:
The subagent should execute both commands sequentially for each slide before returning.
Final images must be 480x720 pixels (2:3 vertical ratio). The post-processing script resizes to this size automatically.
For each slide, follow this process:
Step 4a: Gather Content
Step 4b: Deliberate on Illustration Ideas
Before writing the image prompt, think through 3-4 concrete illustration options that directly reflect the slide content:
Step 4c: Construct the Prompt
Include in the prompt:
uv run ~/.claude/skills/nano-banana-pro/scripts/generate_image.py \
--prompt "[PROMPT]" \
--filename "{project}_preso/public/images/slide-{NN}.png" \
--resolution 1K
CRITICAL: Run this script IMMEDIATELY after each image is generated - do not wait until all images are done.
uv run {SKILL_DIR}/scripts/white_to_background.py \
"{project}_preso/public/images/slide-{NN}.png" \
--colour '{SLIDE_BG}'
This script:
The script must run right after each image generation, before moving to the next slide.
Adapt the style block below based on the chosen IMAGE_STYLE:
STYLE: Artistic pencil sketch. Soft graphite pencil on textured paper. Expressive hand-drawn lines with light shading, cross-hatching, and visible pencil strokes. Like a sketchbook illustration by an artist — organic, slightly loose, with tonal variation from light to dark graphite. NOT digital, NOT vector art.
COLOUR: Primarily BLACK GRAPHITE PENCIL LINES on white paper background. Light gray shading and cross-hatching permitted for depth. No colour. No fills other than pencil shading.
STYLE: Retro pixel art. Chunky pixel art in a limited colour palette, 16-bit retro game aesthetic. Clean pixel edges with no anti-aliasing. Think SNES or Mega Drive era sprite art. Visible grid of pixels. NOT smooth, NOT high-resolution.
COLOUR: Limited palette of bold flat colours with BLACK OUTLINES. Pixel-perfect edges. No gradients, no blending, no smooth transitions. Each pixel should be clearly visible.
STYLE: Colour crayons sketch. Vibrant waxy crayon strokes on paper. Childlike and playful with bold primary and secondary colours. Visible crayon texture and paper grain showing through. Like a skilled illustration done in wax crayons — expressive, textured, warm. NOT digital, NOT clean.
COLOUR: Bold COLOURED CRAYON STROKES with BLACK crayon outlines. Rich waxy texture. Colours should be vivid but with natural crayon unevenness. White paper showing through in places.
STYLE: Modern technical drawing. Precise CAD-style line art with clean geometric construction. Thin uniform strokes, perfect circles and straight lines. Like an engineering diagram or architectural blueprint rendered digitally. Clean, precise, mathematical.
COLOUR: PURE BLACK LINES ONLY on white background. No gray. No shading. No fills. No gradients. Only crisp uniform-weight linework as if plotted by a technical pen or CAD plotter.
Use the user's description directly as the STYLE block. Still enforce the same structural rules (no text, vertical format, etc.).
VERTICAL PORTRAIT FORMAT illustration.
IMPORTANT: This is a TALL, NARROW vertical image (2:3 ratio, portrait orientation). Compose the illustration to fill the vertical space from top to bottom. Stack elements vertically. Use the full height of the canvas.
{STYLE BLOCK FROM ABOVE — varies by IMAGE_STYLE}
COMPOSITION: NO FRAMES OR BORDERS. The illustration must fill the available space edge-to-edge. Do NOT draw:
- Decorative borders around the image
- Rectangular frames enclosing the content
- Boxes or containers around the main illustration
- Margins or padding between illustration and edges
The drawing should extend to the edges of the canvas. The main subject should occupy most of the image area.
###################################
### CRITICAL: ILLUSTRATION ONLY ###
###################################
This image must contain ZERO TEXT.
- NO letters (not A, B, C, not even single characters)
- NO numbers (not 1, 2, 3, not even single digits)
- NO words of any kind in any language
- NO labels or annotations
- NO captions or titles
- NO arrows with text
- NOTHING that can be read as language
ONLY pure visual elements: geometric shapes, icons, symbols, arrows, lines, boxes, circles, human silhouettes, abstract representations.
If the image contains ANY readable text, it has FAILED.
###################################
---
WHAT TO ILLUSTRATE:
[INSERT THE SELECTED ILLUSTRATION IDEA - describe the specific scene, diagram, or visual that was chosen during deliberation]
---
SLIDE CONTENT (for context):
[INSERT THE ACTUAL BULLET POINTS FOR THIS SLIDE]
---
BACKGROUND CONTEXT (to help you understand the concepts - DO NOT render any of this as text):
[INSERT RELEVANT BACKGROUND MATERIAL - 500-800 WORDS IF AVAILABLE]
---
CRITICAL: Always generate ALL THREE outputs.
cd {project}_preso
# Export PDF
bun slidev export --output {project}_slides.pdf
# Export PPTX
bun slidev export --format pptx --output {project}_slides.pptx
# Build SPA with relative base path
bun slidev build --out spa --base ./
The SPA output will be in {project}_preso/spa/ directory.
Create a shell script preview.sh to launch vite preview:
#!/bin/bash
cd "$(dirname "$0")"
bunx vite preview --outDir spa --port 8080
Make it executable:
chmod +x preview.sh
git add {project}_preso/
git commit -m "[AI] Generate {project} presentation"
git pull --rebase && git push
{SLIDE_BG} (default #2BD3EC)<h2 class="slide-title"> above the grid (outside and before slide-grid div) so it spans full widthslide-grid class (CSS-based grid: 1fr + auto columns). Image column auto-sizes to fit available height.slide-text-col classslide-image-col class (right-aligned, height-constrained)white_to_background.py - Converts white backgrounds to the chosen background colour and resizes to 480x720 pixels. Accepts --colour flag for any hex colour.Run this script IMMEDIATELY after each generated image, before generating the next slide.
logo.svg - Default cute monkey icon (copy to presentation's public/logo.svg, or use user's custom SVG)uno.config.ts - UnoCSS configuration templatestyles/index.css - CSS styling templateCopy these files to each new presentation directory during setup.