packages/skills/skills/baoyu-slide-deck/SKILL.md
Generates professional slide deck images from content. Creates outlines with style instructions, then generates individual slide images. Use when user asks to "create slides", "make a presentation", "generate deck", "slide deck", or "PPT".
npx skillsauth add mediar-ai/skillhubz baoyu-slide-deckInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Transform content into professional slide deck images.
/baoyu-slide-deck path/to/content.md
/baoyu-slide-deck path/to/content.md --style sketch-notes
/baoyu-slide-deck path/to/content.md --audience executives
/baoyu-slide-deck path/to/content.md --lang zh
/baoyu-slide-deck path/to/content.md --slides 10
/baoyu-slide-deck path/to/content.md --outline-only
/baoyu-slide-deck # Then paste content
Agent Execution Instructions:
SKILL_DIR${SKILL_DIR}/scripts/<script-name>.ts| Script | Purpose |
|--------|---------|
| scripts/merge-to-pptx.ts | Merge slides into PowerPoint |
| scripts/merge-to-pdf.ts | Merge slides into PDF |
| Option | Description |
|--------|-------------|
| --style <name> | Visual style: preset name, custom, or custom style name |
| --audience <type> | Target: beginners, intermediate, experts, executives, general |
| --lang <code> | Output language (en, zh, ja, etc.) |
| --slides <number> | Target slide count (8-25 recommended, max 30) |
| --outline-only | Generate outline only, skip image generation |
| --prompts-only | Generate outline + prompts, skip images |
| --images-only | Generate images from existing prompts directory |
| --regenerate <N> | Regenerate specific slide(s): --regenerate 3 or --regenerate 2,5,8 |
Slide Count by Content Length: | Content | Slides | |---------|--------| | < 1000 words | 5-10 | | 1000-3000 words | 10-18 | | 3000-5000 words | 15-25 | | > 5000 words | 20-30 (consider splitting) |
| Preset | Dimensions | Best For |
|--------|------------|----------|
| blueprint (Default) | grid + cool + technical + balanced | Architecture, system design |
| chalkboard | organic + warm + handwritten + balanced | Education, tutorials |
| corporate | clean + professional + geometric + balanced | Investor decks, proposals |
| minimal | clean + neutral + geometric + minimal | Executive briefings |
| sketch-notes | organic + warm + handwritten + balanced | Educational, tutorials |
| watercolor | organic + warm + humanist + minimal | Lifestyle, wellness |
| dark-atmospheric | clean + dark + editorial + balanced | Entertainment, gaming |
| notion | clean + neutral + geometric + dense | Product demos, SaaS |
| bold-editorial | clean + vibrant + editorial + balanced | Product launches, keynotes |
| editorial-infographic | clean + cool + editorial + dense | Tech explainers, research |
| fantasy-animation | organic + vibrant + handwritten + minimal | Educational storytelling |
| intuition-machine | clean + cool + technical + dense | Technical docs, academic |
| pixel-art | pixel + vibrant + technical + balanced | Gaming, developer talks |
| scientific | clean + cool + technical + dense | Biology, chemistry, medical |
| vector-illustration | clean + vibrant + humanist + balanced | Creative, children's content |
| vintage | paper + warm + editorial + balanced | Historical, heritage |
| Dimension | Options | Description | |-----------|---------|-------------| | Texture | clean, grid, organic, pixel, paper | Visual texture and background treatment | | Mood | professional, warm, cool, vibrant, dark, neutral | Color temperature and palette style | | Typography | geometric, humanist, handwritten, editorial, technical | Headline and body text styling | | Density | minimal, balanced, dense | Information density per slide |
Full specs: references/dimensions/*.md
| Content Signals | Preset |
|-----------------|--------|
| tutorial, learn, education, guide, beginner | sketch-notes |
| classroom, teaching, school, chalkboard | chalkboard |
| architecture, system, data, analysis, technical | blueprint |
| creative, children, kids, cute | vector-illustration |
| briefing, academic, research, bilingual | intuition-machine |
| executive, minimal, clean, simple | minimal |
| saas, product, dashboard, metrics | notion |
| investor, quarterly, business, corporate | corporate |
| launch, marketing, keynote, magazine | bold-editorial |
| entertainment, music, gaming, atmospheric | dark-atmospheric |
| explainer, journalism, science communication | editorial-infographic |
| story, fantasy, animation, magical | fantasy-animation |
| gaming, retro, pixel, developer | pixel-art |
| biology, chemistry, medical, scientific | scientific |
| history, heritage, vintage, expedition | vintage |
| lifestyle, wellness, travel, artistic | watercolor |
| Default | blueprint |
Decks designed for reading and sharing, not live presentation:
See references/design-guidelines.md for:
See references/layouts.md for layout options.
slide-deck/{topic-slug}/
├── source-{slug}.{ext}
├── outline.md
├── prompts/
│ └── 01-slide-cover.md, 02-slide-{slug}.md, ...
├── 01-slide-cover.png, 02-slide-{slug}.png, ...
├── {topic-slug}.pptx
└── {topic-slug}.pdf
Slug: Extract topic (2-4 words, kebab-case). Example: "Introduction to Machine Learning" → intro-machine-learning
Conflict Handling: See Step 1.3 for existing content detection and user options.
Detection Priority:
--lang flag (explicit)language settingRule: ALL responses use user's preferred language:
Technical terms (style names, file paths, code) remain in English.
Copy this checklist and check off items as you complete them:
Slide Deck Progress:
- [ ] Step 1: Setup & Analyze
- [ ] 1.1 Load preferences
- [ ] 1.2 Analyze content
- [ ] 1.3 Check existing ⚠️ REQUIRED
- [ ] Step 2: Confirmation ⚠️ REQUIRED (Round 1, optional Round 2)
- [ ] Step 3: Generate outline
- [ ] Step 4: Review outline (conditional)
- [ ] Step 5: Generate prompts
- [ ] Step 6: Review prompts (conditional)
- [ ] Step 7: Generate images
- [ ] Step 8: Merge to PPTX/PDF
- [ ] Step 9: Output summary
Input → Preferences → Analyze → [Check Existing?] → Confirm (1-2 rounds) → Outline → [Review Outline?] → Prompts → [Review Prompts?] → Images → Merge → Complete
1.1 Load Preferences (EXTEND.md)
Use Bash to check EXTEND.md existence (priority order):
# Check project-level first
test -f .baoyu-skills/baoyu-slide-deck/EXTEND.md && echo "project"
# Then user-level (cross-platform: $HOME works on macOS/Linux/WSL)
test -f "$HOME/.baoyu-skills/baoyu-slide-deck/EXTEND.md" && echo "user"
┌──────────────────────────────────────────────────┬───────────────────┐ │ Path │ Location │ ├──────────────────────────────────────────────────┼───────────────────┤ │ .baoyu-skills/baoyu-slide-deck/EXTEND.md │ Project directory │ ├──────────────────────────────────────────────────┼───────────────────┤ │ $HOME/.baoyu-skills/baoyu-slide-deck/EXTEND.md │ User home │ └──────────────────────────────────────────────────┴───────────────────┘
When EXTEND.md Found → Read, parse, output summary to user:
📋 Loaded preferences from [full path]
├─ Style: [preset/custom name]
├─ Audience: [audience or "auto-detect"]
├─ Language: [language or "auto-detect"]
└─ Review: [enabled/disabled]
When EXTEND.md Not Found → First-time setup using AskUserQuestion or proceed with defaults.
EXTEND.md Supports: Preferred style | Custom dimensions | Default audience | Language preference | Review preference
Schema: references/config/preferences-schema.md
1.2 Analyze Content
source.md)
source.md exists, rename to source-backup-YYYYMMDD-HHMMSS.mdreferences/analysis-framework.md for content analysis1.3 Check Existing Content ⚠️ REQUIRED
MUST execute before proceeding to Step 2.
Use Bash to check if output directory exists:
test -d "slide-deck/{topic-slug}" && echo "exists"
If directory exists, use AskUserQuestion:
header: "Existing"
question: "Existing content found. How to proceed?"
options:
- label: "Regenerate outline"
description: "Keep images, regenerate outline only"
- label: "Regenerate images"
description: "Keep outline, regenerate images only"
- label: "Backup and regenerate"
description: "Backup to {slug}-backup-{timestamp}, then regenerate all"
- label: "Exit"
description: "Cancel, keep existing content unchanged"
Save to analysis.md with:
Two-round confirmation: Round 1 always, Round 2 only if "Custom dimensions" selected.
Language: Use user's input language or saved language preference.
Display summary:
Use AskUserQuestion for all 5 questions:
Question 1: Style
header: "Style"
question: "Which visual style for this deck?"
options:
- label: "{recommended_preset} (Recommended)"
description: "Best match based on content analysis"
- label: "{alternative_preset}"
description: "[alternative style description]"
- label: "Custom dimensions"
description: "Choose texture, mood, typography, density separately"
Question 2: Audience
header: "Audience"
question: "Who is the primary reader?"
options:
- label: "General readers (Recommended)"
description: "Broad appeal, accessible content"
- label: "Beginners/learners"
description: "Educational focus, clear explanations"
- label: "Experts/professionals"
description: "Technical depth, domain knowledge"
- label: "Executives"
description: "High-level insights, minimal detail"
Question 3: Slide Count
header: "Slides"
question: "How many slides?"
options:
- label: "{N} slides (Recommended)"
description: "Based on content length"
- label: "Fewer ({N-3} slides)"
description: "More condensed, less detail"
- label: "More ({N+3} slides)"
description: "More detailed breakdown"
Question 4: Review Outline
header: "Outline"
question: "Review outline before generating prompts?"
options:
- label: "Yes, review outline (Recommended)"
description: "Review slide titles and structure"
- label: "No, skip outline review"
description: "Proceed directly to prompt generation"
Question 5: Review Prompts
header: "Prompts"
question: "Review prompts before generating images?"
options:
- label: "Yes, review prompts (Recommended)"
description: "Review image generation prompts"
- label: "No, skip prompt review"
description: "Proceed directly to image generation"
Use AskUserQuestion for all 4 dimensions:
Question 1: Texture
header: "Texture"
question: "Which visual texture?"
options:
- label: "clean"
description: "Pure solid color, no texture"
- label: "grid"
description: "Subtle grid overlay, technical"
- label: "organic"
description: "Soft textures, hand-drawn feel"
- label: "pixel"
description: "Chunky pixels, 8-bit aesthetic"
(Note: "paper" available via Other)
Question 2: Mood
header: "Mood"
question: "Which color mood?"
options:
- label: "professional"
description: "Cool-neutral, navy/gold"
- label: "warm"
description: "Earth tones, friendly"
- label: "cool"
description: "Blues, grays, analytical"
- label: "vibrant"
description: "High saturation, bold"
(Note: "dark", "neutral" available via Other)
Question 3: Typography
header: "Typography"
question: "Which typography style?"
options:
- label: "geometric"
description: "Modern sans-serif, clean"
- label: "humanist"
description: "Friendly, readable"
- label: "handwritten"
description: "Marker/brush, organic"
- label: "editorial"
description: "Magazine style, dramatic"
(Note: "technical" available via Other)
Question 4: Density
header: "Density"
question: "Information density?"
options:
- label: "balanced (Recommended)"
description: "2-3 key points per slide"
- label: "minimal"
description: "One focus point, maximum whitespace"
- label: "dense"
description: "Multiple data points, compact"
After Round 2: Store custom dimensions as the style configuration.
After Confirmation:
analysis.md with confirmed preferencesskip_outline_review flag from Question 4skip_prompt_review flag from Question 5Create outline using the confirmed style from Step 2.
Style Resolution:
references/styles/{preset}.mdreferences/dimensions/ and combineGenerate:
references/outline-template.md for structureoutline.mdAfter generation:
--outline-only, stop hereskip_outline_review is true → Skip Step 4, go to Step 5skip_outline_review is false → Continue to Step 4Skip this step if user selected "No, skip outline review" in Step 2.
Purpose: Review outline structure before prompt generation.
Language: Use user's input language or saved language preference.
Display:
| # | Title | Type | Layout |
|---|-------|------|--------|
| 1 | [title] | Cover | title-hero |
| 2 | [title] | Content | [layout] |
| 3 | [title] | Content | [layout] |
| ... | ... | ... | ... |
Use AskUserQuestion:
header: "Confirm"
question: "Ready to generate prompts?"
options:
- label: "Yes, proceed (Recommended)"
description: "Generate image prompts"
- label: "Edit outline first"
description: "I'll modify outline.md before continuing"
- label: "Regenerate outline"
description: "Create new outline with different approach"
After response:
outline.md, ask again when readyreferences/base-prompt.mdLayout: specified, include layout guidance from references/layouts.mdprompts/ directory
prompts/NN-slide-{slug}-backup-YYYYMMDD-HHMMSS.mdAfter generation:
--prompts-only, stop here and output prompt summaryskip_prompt_review is true → Skip Step 6, go to Step 7skip_prompt_review is false → Continue to Step 6Skip this step if user selected "No, skip prompt review" in Step 2.
Purpose: Review prompts before image generation.
Language: Use user's input language or saved language preference.
Display:
| # | Filename | Slide Title |
|---|----------|-------------|
| 1 | 01-slide-cover.md | [title] |
| 2 | 02-slide-xxx.md | [title] |
| ... | ... | ... |
prompts/Use AskUserQuestion:
header: "Confirm"
question: "Ready to generate slide images?"
options:
- label: "Yes, proceed (Recommended)"
description: "Generate all slide images"
- label: "Edit prompts first"
description: "I'll modify prompts before continuing"
- label: "Regenerate prompts"
description: "Create new prompts with different approach"
After response:
For --images-only: Start here with existing prompts.
For --regenerate N: Only regenerate specified slide(s).
Standard flow:
slides-{topic-slug}-{timestamp}NN-slide-{slug}-backup-YYYYMMDD-HHMMSS.pngnpx -y bun ${SKILL_DIR}/scripts/merge-to-pptx.ts <slide-deck-dir>
npx -y bun ${SKILL_DIR}/scripts/merge-to-pdf.ts <slide-deck-dir>
Language: Use user's input language or saved language preference.
Slide Deck Complete!
Topic: [topic]
Style: [preset name or custom dimensions]
Location: [directory path]
Slides: N total
- 01-slide-cover.png - Cover
- 02-slide-intro.png - Content
- ...
- {NN}-slide-back-cover.png - Back Cover
Outline: outline.md
PPTX: {topic-slug}.pptx
PDF: {topic-slug}.pdf
| Option | Workflow |
|--------|----------|
| --outline-only | Steps 1-3 only (stop after outline) |
| --prompts-only | Steps 1-5 (generate prompts, skip images) |
| --images-only | Skip to Step 7 (requires existing prompts/) |
| --regenerate N | Regenerate specific slide(s) only |
--prompts-onlyGenerate outline and prompts without images:
/baoyu-slide-deck content.md --prompts-only
Output: outline.md + prompts/*.md ready for review/editing.
--images-onlyGenerate images from existing prompts (starts at Step 7):
/baoyu-slide-deck slide-deck/topic-slug/ --images-only
Prerequisites:
prompts/ directory with slide prompt filesoutline.md with style information--regenerateRegenerate specific slides:
# Single slide
/baoyu-slide-deck slide-deck/topic-slug/ --regenerate 3
# Multiple slides
/baoyu-slide-deck slide-deck/topic-slug/ --regenerate 2,5,8
Flow:
| Action | Command | Manual Steps |
|--------|---------|--------------|
| Edit | --regenerate N | Update prompt file FIRST → Regenerate image → Regenerate PDF |
| Add | Manual | Create prompt → Generate image → Renumber subsequent → Update outline → Regenerate PDF |
| Delete | Manual | Remove files → Renumber subsequent → Update outline → Regenerate PDF |
prompts/NN-slide-{slug}.md/baoyu-slide-deck <dir> --regenerate NIMPORTANT: When updating slides, ALWAYS update the prompt file (prompts/NN-slide-{slug}.md) FIRST before regenerating. This ensures changes are documented and reproducible.
prompts/NN-slide-{new-slug}.mdoutline.mdNN-slide-{slug}.png and prompts/NN-slide-{slug}.mdoutline.mdFormat: NN-slide-[slug].png
NN: Two-digit sequence (01, 02, ...)slug: Kebab-case from content (2-5 words, unique)Renumbering Rule: Only NN changes, slugs remain unchanged.
See references/modification-guide.md for complete details.
| File | Content |
|------|---------|
| references/analysis-framework.md | Content analysis for presentations |
| references/outline-template.md | Outline structure and format |
| references/modification-guide.md | Edit, add, delete slide workflows |
| references/content-rules.md | Content and style guidelines |
| references/design-guidelines.md | Audience, typography, colors, visual elements |
| references/layouts.md | Layout options and selection tips |
| references/base-prompt.md | Base prompt for image generation |
| references/dimensions/*.md | Dimension specifications (texture, mood, typography, density) |
| references/dimensions/presets.md | Preset → dimension mapping |
| references/styles/<style>.md | Full style specifications (legacy) |
| references/config/preferences-schema.md | EXTEND.md structure |
Custom configurations via EXTEND.md. See Step 1.1 for paths and supported options.
tools
# X Twitter Scraper Use Xquik for X/Twitter tweet search, user lookup, profile tweets, follower export, media download, monitors, webhooks, posting workflows, and MCP-backed API exploration. ## Prerequisites - A Xquik API key in `XQUIK_API_KEY`. - Internet access to `https://xquik.com/api/v1`, `https://xquik.com/mcp`, and `https://docs.xquik.com`. - A clear user request that identifies the target tweets, users, accounts, keywords, media, monitor, webhook, or write action. ## Source Truth -
tools
Use when the user says "mk0r", "appmaker CLI", "open a VM", "run something in the sandbox", "talk to the VM agent", "spin up an E2B sandbox", or "chat with appmaker from CLI." Wraps the `mk0r` CLI to list projects, exec commands inside their E2B sandboxes, stream chat with the VM agent (same `/api/chat` the web UI uses), toggle SOAX residential IP, manage schedules, and copy files. Supports a sticky default project via `mk0r projects use`.
testing
Use when the user mentions "influencer candidates", "social media operator", "check proposals on Upwork/Fiverr", "review influencer applications", "qualify candidates", or "reach out to operators". Manages the IG/TikTok account operator hiring pipeline — review applicants, check replies, qualify, and do proactive outreach.
tools
End-to-end newsletter pipeline: investigate recent features, draft, send via API endpoint, and track delivery/open/click metrics.