{"id":"2da207a9-cf96-4c33-8cac-fb7750cbe8b6","shortId":"VSR8sz","kind":"skill","title":"lovstudio:any2deck","tagline":"Generate professional slide deck images from content (Markdown, text, URLs). Creates outlines with style instructions, then generates individual slide images. Supports 16 visual styles, CJK/Latin mixed text, branding overlays, and PPTX/PDF export. Use when the user asks to \"creat","description":"# Slide Deck Generator\n\nTransform content into professional slide deck images.\n\n## Usage\n\n```bash\n/lovstudio:any2deck path/to/content.md\n/lovstudio:any2deck path/to/content.md --style sketch-notes\n/lovstudio:any2deck path/to/content.md --audience executives\n/lovstudio:any2deck path/to/content.md --lang zh\n/lovstudio:any2deck path/to/content.md --slides 10\n/lovstudio:any2deck path/to/content.md --outline-only\n/lovstudio:any2deck  # Then paste content\n```\n\n## Script Directory\n\n**Agent Execution Instructions**:\n1. Determine this SKILL.md file's directory path as `SKILL_DIR`\n2. Script path = `${SKILL_DIR}/scripts/<script-name>`\n\n| Script | Purpose |\n|--------|---------|\n| `scripts/merge-to-pptx.ts` | Merge slides into PowerPoint |\n| `scripts/merge-to-pdf.ts` | Merge slides into PDF |\n| `scripts/apply-branding.py` | Composite logo(s)/QR onto slides — dual logo, tight-crop, JPG white→alpha (opt-in) |\n\n## Options\n\n| Option | Description |\n|--------|-------------|\n| `--style <name>` | Visual style: preset name, `custom`, or custom style name |\n| `--audience <type>` | Target: beginners, intermediate, experts, executives, general |\n| `--lang <code>` | Output language (en, zh, ja, etc.) |\n| `--slides <number>` | Target slide count (8-25 recommended, max 30) |\n| `--outline-only` | Generate outline only, skip image generation |\n| `--prompts-only` | Generate outline + prompts, skip images |\n| `--images-only` | Generate images from existing prompts directory |\n| `--regenerate <N>` | Regenerate specific slide(s): `--regenerate 3` or `--regenerate 2,5,8` |\n| `--logo <path>` | Primary brand logo (top-right, skips cover/back-cover) |\n| `--logo2 <path>` | Secondary logo (placed left of primary, optically aligned) |\n| `--presentation` | Presentation mode: strips narration text, keeps only visual anchors |\n\n**Slide Count by Content Length**:\n| Content | Slides |\n|---------|--------|\n| < 1000 words | 5-10 |\n| 1000-3000 words | 10-18 |\n| 3000-5000 words | 15-25 |\n| > 5000 words | 20-30 (consider splitting) |\n\n## Style System\n\n### Presets\n\n| Preset | Dimensions | Best For |\n|--------|------------|----------|\n| `blueprint` (Default) | grid + cool + technical + balanced | Architecture, system design |\n| `chalkboard` | organic + warm + handwritten + balanced | Education, tutorials |\n| `corporate` | clean + professional + geometric + balanced | Investor decks, proposals |\n| `minimal` | clean + neutral + geometric + minimal | Executive briefings |\n| `sketch-notes` | organic + warm + handwritten + balanced | Educational, tutorials |\n| `watercolor` | organic + warm + humanist + minimal | Lifestyle, wellness |\n| `dark-atmospheric` | clean + dark + editorial + balanced | Entertainment, gaming |\n| `notion` | clean + neutral + geometric + dense | Product demos, SaaS |\n| `bold-editorial` | clean + vibrant + editorial + balanced | Product launches, keynotes |\n| `editorial-infographic` | clean + cool + editorial + dense | Tech explainers, research |\n| `fantasy-animation` | organic + vibrant + handwritten + minimal | Educational storytelling |\n| `intuition-machine` | clean + cool + technical + dense | Technical docs, academic |\n| `pixel-art` | pixel + vibrant + technical + balanced | Gaming, developer talks |\n| `scientific` | clean + cool + technical + dense | Biology, chemistry, medical |\n| `vector-illustration` | clean + vibrant + humanist + balanced | Creative, children's content |\n| `vintage` | paper + warm + editorial + balanced | Historical, heritage |\n\n### Style Dimensions\n\n| Dimension | Options | Description |\n|-----------|---------|-------------|\n| **Texture** | clean, grid, organic, pixel, paper | Visual texture and background treatment |\n| **Mood** | professional, warm, cool, vibrant, dark, neutral | Color temperature and palette style |\n| **Typography** | geometric, humanist, handwritten, editorial, technical | Headline and body text styling |\n| **Density** | minimal, balanced, dense | Information density per slide |\n\nFull specs: `references/dimensions/*.md`\n\n### Auto Style Selection\n\n| Content Signals | Preset |\n|-----------------|--------|\n| tutorial, learn, education, guide, beginner | `sketch-notes` |\n| classroom, teaching, school, chalkboard | `chalkboard` |\n| architecture, system, data, analysis, technical | `blueprint` |\n| creative, children, kids, cute | `vector-illustration` |\n| briefing, academic, research, bilingual | `intuition-machine` |\n| executive, minimal, clean, simple | `minimal` |\n| saas, product, dashboard, metrics | `notion` |\n| investor, quarterly, business, corporate | `corporate` |\n| launch, marketing, keynote, magazine | `bold-editorial` |\n| entertainment, music, gaming, atmospheric | `dark-atmospheric` |\n| explainer, journalism, science communication | `editorial-infographic` |\n| story, fantasy, animation, magical | `fantasy-animation` |\n| gaming, retro, pixel, developer | `pixel-art` |\n| biology, chemistry, medical, scientific | `scientific` |\n| history, heritage, vintage, expedition | `vintage` |\n| lifestyle, wellness, travel, artistic | `watercolor` |\n| Default | `blueprint` |\n\n## Design Philosophy\n\nDecks designed for **reading and sharing**, not live presentation:\n- Each slide self-explanatory without verbal commentary\n- Logical flow when scrolling\n- All necessary context within each slide\n- Optimized for social media sharing\n\nSee `references/design-guidelines.md` for:\n- Audience-specific principles\n- Visual hierarchy\n- Content density guidelines\n- Color and typography selection\n- Font recommendations\n\nSee `references/layouts.md` for layout options.\n\n## File Management\n\n### Output Directory\n\n```\nslide-deck/{topic-slug}/\n├── source-{slug}.{ext}\n├── outline.md\n├── prompts/\n│   └── 01-slide-cover.md, 02-slide-{slug}.md, ...\n├── 01-slide-cover.png, 02-slide-{slug}.png, ...\n├── {topic-slug}.pptx\n└── {topic-slug}.pdf\n```\n\n**Slug**: Extract topic (2-4 words, kebab-case). Example: \"Introduction to Machine Learning\" → `intro-machine-learning`\n\n**Conflict Handling**: See Step 1.3 for existing content detection and user options.\n\n## Language Handling\n\n**Detection Priority**:\n1. `--lang` flag (explicit)\n2. EXTEND.md `language` setting\n3. User's conversation language (input language)\n4. Source content language\n\n**Rule**: ALL responses use user's preferred language:\n- Questions and confirmations\n- Progress reports\n- Error messages\n- Completion summaries\n\nTechnical terms (style names, file paths, code) remain in English.\n\n## Workflow\n\nCopy this checklist and check off items as you complete them:\n\n```\nSlide Deck Progress:\n- [ ] Step 1: Setup & Analyze\n  - [ ] 1.1 Load preferences\n  - [ ] 1.2 Analyze content\n  - [ ] 1.3 Check existing ⚠️ REQUIRED\n- [ ] Step 2: Confirmation ⚠️ REQUIRED (Round 1, optional Round 2)\n- [ ] Step 3: Generate outline\n- [ ] Step 4: Review outline (conditional)\n- [ ] Step 5: Generate prompts\n- [ ] Step 6: Review prompts (conditional)\n- [ ] Step 7: Generate images\n- [ ] Step 7.5: Apply branding (if configured)\n- [ ] Step 8: Merge to PPTX/PDF\n- [ ] Step 9: Output summary\n```\n\n### Flow\n\n```\nInput → Preferences → Analyze → [Check Existing?] → Confirm (1-2 rounds) → Outline → [Review Outline?] → Prompts → [Review Prompts?] → Images → [Branding?] → Merge → Complete\n```\n\n### Step 1: Setup & Analyze\n\n**1.1 Load Preferences (EXTEND.md)**\n\nUse Bash to check EXTEND.md existence (priority order):\n\n```bash\n# Check project-level first\ntest -f .lovstudio-skills/lovstudio-any2deck/EXTEND.md && echo \"project\"\n\n# Then user-level (cross-platform: $HOME works on macOS/Linux/WSL)\ntest -f \"$HOME/.lovstudio-skills/lovstudio-any2deck/EXTEND.md\" && echo \"user\"\n```\n\n┌──────────────────────────────────────────────────┬───────────────────┐\n│                       Path                       │     Location      │\n├──────────────────────────────────────────────────┼───────────────────┤\n│ .lovstudio-skills/lovstudio-any2deck/EXTEND.md         │ Project directory │\n├──────────────────────────────────────────────────┼───────────────────┤\n│ $HOME/.lovstudio-skills/lovstudio-any2deck/EXTEND.md   │ User home         │\n└──────────────────────────────────────────────────┴───────────────────┘\n\n**When EXTEND.md Found** → Read, parse, **output summary to user**:\n\n```\n📋 Loaded preferences from [full path]\n├─ Style: [preset/custom name]\n├─ Audience: [audience or \"auto-detect\"]\n├─ Language: [language or \"auto-detect\"]\n└─ Review: [enabled/disabled]\n```\n\n**When EXTEND.md Not Found** → First-time setup using AskUserQuestion or proceed with defaults.\n\n**EXTEND.md Supports**: Preferred style | Custom dimensions | Default audience | Language preference | Review preference\n\nSchema: `references/config/preferences-schema.md`\n\n**1.2 Analyze Content**\n\n1. Save source content (if pasted, save as `source.md`)\n   - **Backup rule**: If `source.md` exists, rename to `source-backup-YYYYMMDD-HHMMSS.md`\n2. Follow `references/analysis-framework.md` for content analysis\n3. Analyze content signals for style recommendations\n4. Detect source language\n5. Determine recommended slide count\n6. Generate topic slug from content\n\n**1.3 Check Existing Content** ⚠️ REQUIRED\n\n**MUST execute before proceeding to Step 2.**\n\nUse Bash to check if output directory exists:\n\n```bash\ntest -d \"slide-deck/{topic-slug}\" && echo \"exists\"\n```\n\n**If directory exists**, use AskUserQuestion:\n\n```\nheader: \"Existing\"\nquestion: \"Existing content found. How to proceed?\"\noptions:\n  - label: \"Regenerate outline\"\n    description: \"Keep images, regenerate outline only\"\n  - label: \"Regenerate images\"\n    description: \"Keep outline, regenerate images only\"\n  - label: \"Backup and regenerate\"\n    description: \"Backup to {slug}-backup-{timestamp}, then regenerate all\"\n  - label: \"Exit\"\n    description: \"Cancel, keep existing content unchanged\"\n```\n\n**Save to `analysis.md`** with:\n- Topic, audience, content signals\n- Recommended style (based on Auto Style Selection)\n- Recommended slide count\n- Language detection\n\n### Step 2: Confirmation ⚠️ REQUIRED\n\n**Two-round confirmation**: Round 1 always, Round 2 only if \"Custom dimensions\" selected.\n\n**Language**: Use user's input language or saved language preference.\n\n**Display summary**:\n- Content type + topic identified\n- Language: [from EXTEND.md or detected]\n- **Recommended style**: [preset] (based on content signals)\n- **Recommended slides**: [N] (based on content length)\n\n#### Round 1 (Always)\n\n**Use AskUserQuestion** for all 5 questions:\n\n**Question 1: Style**\n```\nheader: \"Style\"\nquestion: \"Which visual style for this deck?\"\noptions:\n  - label: \"{recommended_preset} (Recommended)\"\n    description: \"Best match based on content analysis\"\n  - label: \"{alternative_preset}\"\n    description: \"[alternative style description]\"\n  - label: \"Custom dimensions\"\n    description: \"Choose texture, mood, typography, density separately\"\n```\n\n**Question 2: Audience**\n```\nheader: \"Audience\"\nquestion: \"Who is the primary reader?\"\noptions:\n  - label: \"General readers (Recommended)\"\n    description: \"Broad appeal, accessible content\"\n  - label: \"Beginners/learners\"\n    description: \"Educational focus, clear explanations\"\n  - label: \"Experts/professionals\"\n    description: \"Technical depth, domain knowledge\"\n  - label: \"Executives\"\n    description: \"High-level insights, minimal detail\"\n```\n\n**Question 3: Slide Count**\n```\nheader: \"Slides\"\nquestion: \"How many slides?\"\noptions:\n  - label: \"{N} slides (Recommended)\"\n    description: \"Based on content length\"\n  - label: \"Fewer ({N-3} slides)\"\n    description: \"More condensed, less detail\"\n  - label: \"More ({N+3} slides)\"\n    description: \"More detailed breakdown\"\n```\n\n**Question 4: Review Outline**\n```\nheader: \"Outline\"\nquestion: \"Review outline before generating prompts?\"\noptions:\n  - label: \"Yes, review outline (Recommended)\"\n    description: \"Review slide titles and structure\"\n  - label: \"No, skip outline review\"\n    description: \"Proceed directly to prompt generation\"\n```\n\n**Question 5: Review Prompts**\n```\nheader: \"Prompts\"\nquestion: \"Review prompts before generating images?\"\noptions:\n  - label: \"Yes, review prompts (Recommended)\"\n    description: \"Review image generation prompts\"\n  - label: \"No, skip prompt review\"\n    description: \"Proceed directly to image generation\"\n```\n\n#### Round 2 (Only if \"Custom dimensions\" selected)\n\n**Use AskUserQuestion** for all 4 dimensions:\n\n**Question 1: Texture**\n```\nheader: \"Texture\"\nquestion: \"Which visual texture?\"\noptions:\n  - label: \"clean\"\n    description: \"Pure solid color, no texture\"\n  - label: \"grid\"\n    description: \"Subtle grid overlay, technical\"\n  - label: \"organic\"\n    description: \"Soft textures, hand-drawn feel\"\n  - label: \"pixel\"\n    description: \"Chunky pixels, 8-bit aesthetic\"\n```\n(Note: \"paper\" available via Other)\n\n**Question 2: Mood**\n```\nheader: \"Mood\"\nquestion: \"Which color mood?\"\noptions:\n  - label: \"professional\"\n    description: \"Cool-neutral, navy/gold\"\n  - label: \"warm\"\n    description: \"Earth tones, friendly\"\n  - label: \"cool\"\n    description: \"Blues, grays, analytical\"\n  - label: \"vibrant\"\n    description: \"High saturation, bold\"\n```\n(Note: \"dark\", \"neutral\" available via Other)\n\n**Question 3: Typography**\n```\nheader: \"Typography\"\nquestion: \"Which typography style?\"\noptions:\n  - label: \"geometric\"\n    description: \"Modern sans-serif, clean\"\n  - label: \"humanist\"\n    description: \"Friendly, readable\"\n  - label: \"handwritten\"\n    description: \"Marker/brush, organic\"\n  - label: \"editorial\"\n    description: \"Magazine style, dramatic\"\n```\n(Note: \"technical\" available via Other)\n\n**Question 4: Density**\n```\nheader: \"Density\"\nquestion: \"Information density?\"\noptions:\n  - label: \"balanced (Recommended)\"\n    description: \"2-3 key points per slide\"\n  - label: \"minimal\"\n    description: \"One focus point, maximum whitespace\"\n  - label: \"dense\"\n    description: \"Multiple data points, compact\"\n```\n\n**After Round 2**: Store custom dimensions as the style configuration.\n\n**After Confirmation**:\n1. Update `analysis.md` with confirmed preferences\n2. Store `skip_outline_review` flag from Question 4\n3. Store `skip_prompt_review` flag from Question 5\n4. → Step 3\n\n### Step 3: Generate Outline\n\nCreate outline using the confirmed style from Step 2.\n\n**Style Resolution**:\n- If preset selected → Read `references/styles/{preset}.md`\n- If custom dimensions → Read dimension files from `references/dimensions/` and combine\n\n**Generate**:\n1. Follow `references/outline-template.md` for structure\n2. Build STYLE_INSTRUCTIONS from style or dimensions\n3. Apply confirmed audience, language, slide count\n4. Save as `outline.md`\n\n**After generation**:\n- If `--outline-only`, stop here\n- If `skip_outline_review` is true → Skip Step 4, go to Step 5\n- If `skip_outline_review` is false → Continue to Step 4\n\n### Step 4: Review Outline (Conditional)\n\n**Skip this step** if user selected \"No, skip outline review\" in Step 2.\n\n**Purpose**: Review outline structure before prompt generation.\n\n**Language**: Use user's input language or saved language preference.\n\n**Display**:\n- Total slides: N\n- Style: [preset name or \"custom: texture+mood+typography+density\"]\n- Slide-by-slide summary table:\n\n```\n| # | Title | Type | Layout |\n|---|-------|------|--------|\n| 1 | [title] | Cover | title-hero |\n| 2 | [title] | Content | [layout] |\n| 3 | [title] | Content | [layout] |\n| ... | ... | ... | ... |\n```\n\n**Use AskUserQuestion**:\n```\nheader: \"Confirm\"\nquestion: \"Ready to generate prompts?\"\noptions:\n  - label: \"Yes, proceed (Recommended)\"\n    description: \"Generate image prompts\"\n  - label: \"Edit outline first\"\n    description: \"I'll modify outline.md before continuing\"\n  - label: \"Regenerate outline\"\n    description: \"Create new outline with different approach\"\n```\n\n**After response**:\n1. If \"Edit outline first\" → Inform user to edit `outline.md`, ask again when ready\n2. If \"Regenerate outline\" → Back to Step 3\n3. If \"Yes, proceed\" → Continue to Step 5\n\n### Step 5: Generate Prompts\n\n1. Read `references/base-prompt.md`\n2. For each slide in outline:\n   - Extract STYLE_INSTRUCTIONS from outline (not from style file again)\n   - Add slide-specific content\n   - If `Layout:` specified, include layout guidance from `references/layouts.md`\n3. Save to `prompts/` directory\n   - **Backup rule**: If prompt file exists, rename to `prompts/NN-slide-{slug}-backup-YYYYMMDD-HHMMSS.md`\n\n**After generation**:\n- If `--prompts-only`, stop here and output prompt summary\n- If `skip_prompt_review` is true → Skip Step 6, go to Step 7\n- If `skip_prompt_review` is false → Continue to Step 6\n\n### Step 6: Review Prompts (Conditional)\n\n**Skip this step** if user selected \"No, skip prompt review\" in Step 2.\n\n**Purpose**: Review prompts before image generation.\n\n**Language**: Use user's input language or saved language preference.\n\n**Display**:\n- Total prompts: N\n- Style: [preset name or custom dimensions]\n- Prompt list:\n\n```\n| # | Filename | Slide Title |\n|---|----------|-------------|\n| 1 | 01-slide-cover.md | [title] |\n| 2 | 02-slide-xxx.md | [title] |\n| ... | ... | ... |\n```\n\n- Path to prompts directory: `prompts/`\n\n**Use AskUserQuestion**:\n```\nheader: \"Confirm\"\nquestion: \"Ready to generate slide images?\"\noptions:\n  - label: \"Yes, proceed (Recommended)\"\n    description: \"Generate all slide images\"\n  - label: \"Edit prompts first\"\n    description: \"I'll modify prompts before continuing\"\n  - label: \"Regenerate prompts\"\n    description: \"Create new prompts with different approach\"\n```\n\n**After response**:\n1. If \"Edit prompts first\" → Inform user to edit prompts, ask again when ready\n2. If \"Regenerate prompts\" → Back to Step 5\n3. If \"Yes, proceed\" → Continue to Step 7\n\n### Step 7: Generate Images\n\n**For `--images-only`**: Start here with existing prompts.\n\n**For `--regenerate N`**: Only regenerate specified slide(s).\n\n**Standard flow**:\n1. Select available image generation skill\n2. Generate session ID: `slides-{topic-slug}-{timestamp}`\n3. For each slide:\n   - **Backup rule**: If image file exists, rename to `NN-slide-{slug}-backup-YYYYMMDD-HHMMSS.png`\n   - Generate image sequentially with same session ID\n4. Report progress: \"Generated X/N\" (in user's language)\n5. Auto-retry once on failure before reporting error\n\n### Step 7.5: Apply Branding (opt-in)\n\n**Trigger**: Only run if `branding.logo` is set in EXTEND.md OR user passed `--logo <path>`.\n\nComposites brand logo(s) (top-right) and optional QR code onto generated slides.\nSupports dual logos (e.g. brand + partner), tight-crops logos via `getbbox()`,\nand converts JPG white backgrounds to alpha automatically.\n\n**Defaults** (if EXTEND.md branding not configured):\n- Logo: skip this step entirely\n- Skip slides: `[1, <last slide>]` (cover + back-cover get no logo)\n\n```bash\npython3 ${SKILL_DIR}/scripts/apply-branding.py <slide-deck-dir> \\\n  --logo <logo_path> \\\n  [--logo2 <secondary_logo_path> --logo2-gap 32] \\\n  --skip 1,<last_slide> \\\n  [--logo-h 46 --pad-top 20 --pad-right 26] \\\n  [--patch-slides N,M]      # slides whose AI-drawn frames clash with logo\n  [--frame-slides N,M]      # slides needing full edge frame-stripping\n  [--qr <qr_path> --qr-slide N --qr-box X1,Y1,X2,Y2]\n```\n\n**Quality check after running**: Read 2-3 slides and visually verify:\n1. Logo is crisp, not clipped by canvas edge\n2. No visible frame lines / card edges touching or crossing the logo\n3. Backdrop blends seamlessly with paper texture\n\nIf any slide shows frame/card conflict, add it to `--patch-slides` and re-run.\nIf edges still leak through, add it to `--frame-slides` (more aggressive strip).\nIf problems persist (content-integrated card), regenerate that slide with\nexplicit \"NO card containing all content, NO tilted paper\" in the prompt.\n\nThe script is idempotent: originals are backed up to `_original/` and reused\non every run.\n\n### Step 8: Merge to PPTX and PDF\n\n```bash\nnpx -y bun ${SKILL_DIR}/scripts/merge-to-pptx.ts <slide-deck-dir>\nnpx -y bun ${SKILL_DIR}/scripts/merge-to-pdf.ts <slide-deck-dir>\n```\n\n### Step 9: Output Summary\n\n**Language**: Use user's input language or saved language preference.\n\n```\nSlide Deck Complete!\n\nTopic: [topic]\nStyle: [preset name or custom dimensions]\nLocation: [directory path]\nSlides: N total\n\n- 01-slide-cover.png - Cover\n- 02-slide-intro.png - Content\n- ...\n- {NN}-slide-back-cover.png - Back Cover\n\nOutline: outline.md\nPPTX: {topic-slug}.pptx\nPDF: {topic-slug}.pdf\n```\n\n## Partial Workflows\n\n| Option | Workflow |\n|--------|----------|\n| `--outline-only` | Steps 1-3 only (stop after outline) |\n| `--prompts-only` | Steps 1-5 (generate prompts, skip images) |\n| `--images-only` | Skip to Step 7 (requires existing prompts/) |\n| `--regenerate N` | Regenerate specific slide(s) only |\n\n### Using `--prompts-only`\n\nGenerate outline and prompts without images:\n\n```bash\n/lovstudio:any2deck content.md --prompts-only\n```\n\nOutput: `outline.md` + `prompts/*.md` ready for review/editing.\n\n### Using `--images-only`\n\nGenerate images from existing prompts (starts at Step 7):\n\n```bash\n/lovstudio:any2deck slide-deck/topic-slug/ --images-only\n```\n\nPrerequisites:\n- `prompts/` directory with slide prompt files\n- `outline.md` with style information\n\n### Using `--regenerate`\n\nRegenerate specific slides:\n\n```bash\n# Single slide\n/lovstudio:any2deck slide-deck/topic-slug/ --regenerate 3\n\n# Multiple slides\n/lovstudio:any2deck slide-deck/topic-slug/ --regenerate 2,5,8\n```\n\nFlow:\n1. Read existing prompts for specified slides\n2. Regenerate images only for those slides\n3. Regenerate PPTX/PDF\n\n## Slide Modification\n\n### Quick Reference\n\n| Action | Command | Manual Steps |\n|--------|---------|--------------|\n| **Edit** | `--regenerate N` | **Update prompt file FIRST** → Regenerate image → Regenerate PDF |\n| **Add** | Manual | Create prompt → Generate image → Renumber subsequent → Update outline → Regenerate PDF |\n| **Delete** | Manual | Remove files → Renumber subsequent → Update outline → Regenerate PDF |\n\n### Edit Single Slide\n\n1. **Update prompt file FIRST** in `prompts/NN-slide-{slug}.md`\n2. Run: `/lovstudio:any2deck <dir> --regenerate N`\n3. Or manually regenerate image + PDF\n\n**IMPORTANT**: When updating slides, ALWAYS update the prompt file (`prompts/NN-slide-{slug}.md`) FIRST before regenerating. This ensures changes are documented and reproducible.\n\n### Add New Slide\n\n1. Create prompt at position: `prompts/NN-slide-{new-slug}.md`\n2. Generate image using same session ID\n3. **Renumber**: Subsequent files NN+1 (slugs unchanged)\n4. Update `outline.md`\n5. Regenerate PPTX/PDF\n\n### Delete Slide\n\n1. Remove `NN-slide-{slug}.png` and `prompts/NN-slide-{slug}.md`\n2. **Renumber**: Subsequent files NN-1 (slugs unchanged)\n3. Update `outline.md`\n4. Regenerate PPTX/PDF\n\n### File Naming\n\nFormat: `NN-slide-[slug].png`\n- `NN`: Two-digit sequence (01, 02, ...)\n- `slug`: Kebab-case from content (2-5 words, unique)\n\n**Renumbering Rule**: Only NN changes, slugs remain unchanged.\n\nSee `references/modification-guide.md` for complete details.\n\n## References\n\n| File | Content |\n|------|---------|\n| `references/analysis-framework.md` | Content analysis for presentations |\n| `references/outline-template.md` | Outline structure and format |\n| `references/modification-guide.md` | Edit, add, delete slide workflows |\n| `references/content-rules.md` | Content and style guidelines |\n| `references/design-guidelines.md` | Audience, typography, colors, visual elements |\n| `references/layouts.md` | Layout options and selection tips |\n| `references/base-prompt.md` | Base prompt for image generation |\n| `references/dimensions/*.md` | Dimension specifications (texture, mood, typography, density) |\n| `references/dimensions/presets.md` | Preset → dimension mapping |\n| `references/styles/<style>.md` | Full style specifications (legacy) |\n| `references/config/preferences-schema.md` | EXTEND.md structure |\n\n## Notes\n\n- Image generation: 10-30 seconds per slide\n- Auto-retry once on generation failure\n- Use stylized alternatives for sensitive public figures\n- Maintain style consistency via session ID\n- **Step 2 confirmation required** - do not skip (style, audience, slides, outline review, prompt review)\n- **Step 4 conditional** - only if user requested outline review in Step 2\n- **Step 6 conditional** - only if user requested prompt review in Step 2\n\n## Extension Support\n\nCustom configurations via EXTEND.md. See **Step 1.1** for paths and supported options.","tags":["any2deck","skills","lovstudio","agent-skills","ai-coding-assistant","cjk","claude-code","cursor","gemini-cli","markdown-to-docx","markdown-to-pdf"],"capabilities":["skill","source-lovstudio","skill-any2deck","topic-agent-skills","topic-ai-coding-assistant","topic-cjk","topic-claude-code","topic-cursor","topic-gemini-cli","topic-markdown-to-docx","topic-markdown-to-pdf"],"categories":["skills"],"synonyms":[],"warnings":[],"endpointUrl":"https://skills.sh/lovstudio/skills/any2deck","protocol":"skill","transport":"skills-sh","auth":{"type":"none","details":{"cli":"npx skills add lovstudio/skills","source_repo":"https://github.com/lovstudio/skills","install_from":"skills.sh"}},"qualityScore":"0.470","qualityRationale":"deterministic score 0.47 from registry signals: · indexed on github topic:agent-skills · 40 github stars · SKILL.md body (24,250 chars)","verified":false,"liveness":"unknown","lastLivenessCheck":null,"agentReviews":{"count":0,"score_avg":null,"cost_usd_avg":null,"success_rate":null,"latency_p50_ms":null,"narrative_summary":null,"summary_updated_at":null},"enrichmentModel":"deterministic:skill-github:v1","enrichmentVersion":1,"enrichedAt":"2026-04-22T00:56:33.805Z","embedding":null,"createdAt":"2026-04-18T22:18:50.522Z","updatedAt":"2026-04-22T00:56:33.805Z","lastSeenAt":"2026-04-22T00:56:33.805Z","tsv":"'+1':2680 '+3':1288 '-1':2707 '-10':254 '-18':259 '-2':827 '-25':174,264 '-3':1278,1517,2251,2432 '-30':268 '-3000':256 '-4':668 '-5':2442,2738 '-5000':261 '/lovstudio':54,57,64,69,74,79,85,2475,2502,2530,2540,2623 '/lovstudio-any2deck/extend.md':866,890 '/qr':128 '/scripts':111 '/scripts/apply-branding.py':2186 '/scripts/merge-to-pdf.ts':2371 '/scripts/merge-to-pptx.ts':2365 '/topic-slug':2507,2535,2545 '01':2729 '01-slide-cover.md':646,1943 '01-slide-cover.png':651,2403 '02':647,652,2730 '02-slide-intro.png':2405 '02-slide-xxx.md':1946 '1':95,698,760,778,826,840,958,1117,1162,1171,1377,1549,1609,1721,1776,1810,1942,1996,2049,2174,2194,2256,2431,2441,2551,2612,2658,2691 '1.1':763,843 '1.2':766,955 '1.3':686,769,1003 '10':78,258 '1000':251,255 '15':263 '16':24 '2':106,213,667,702,774,781,975,1014,1109,1120,1212,1364,1424,1516,1539,1555,1588,1614,1681,1727,1790,1813,1910,1945,2010,2055,2250,2265,2547,2558,2621,2668,2702,2737 '20':267,2202 '26':2206 '3':210,706,783,981,1256,1465,1564,1575,1577,1622,1731,1797,1798,1842,2018,2064,2277,2537,2565,2627,2675,2710 '30':177 '3000':260 '32':2192 '4':713,787,988,1295,1374,1504,1563,1573,1629,1649,1663,1665,2088,2683,2713 '46':2198 '5':214,253,792,992,1168,1330,1572,1653,1805,1807,2017,2097,2548,2686 '5000':265 '6':796,997,1878,1892,1894 '7':801,1882,2025,2027,2453,2500 '7.5':805,2108 '8':173,215,811,1415,2353,2549 '9':816,2373 'academ':380,501 'access':1230 'action':2572 'add':1829,2290,2305,2587,2655,2769 'aesthet':1417 'agent':92 'aggress':2312 'ai':2215 'ai-drawn':2214 'align':233 'alpha':138,2159 'altern':1195,1198 'alway':1118,1163,2637 'analysi':490,980,1193,2759 'analysis.md':1090,1551 'analyt':1451 'analyz':762,767,822,842,956,982 'anchor':243 'anim':364,545,549 'any2deck':2,55,58,65,70,75,80,86,2476,2503,2531,2541,2624 'appeal':1229 'appli':806,1623,2109 'approach':1773,1993 'architectur':284,487 'art':383,556 'artist':570 'ask':39,1786,2006 'askuserquest':936,1038,1165,1371,1736,1954 'atmospher':327,532,535 'audienc':67,155,612,913,914,948,1093,1213,1215,1625,2779 'audience-specif':611 'auto':468,917,923,1100,2099 'auto-detect':916,922 'auto-retri':2098 'automat':2160 'avail':1420,1461,1500,2051 'back':1794,2014,2177,2343,2409 'back-cov':2176 'backdrop':2278 'background':431,2157 'backup':967,1068,1072,1075,1847,2068 'backup-yyyymmdd-hhmmss.md':1857 'backup-yyyymmdd-hhmmss.png':2080 'balanc':283,291,298,315,331,348,387,405,414,458,1513 'base':1098,1150,1157,1190,1271,2791 'bash':53,848,855,1016,1023,2182,2359,2474,2501,2527 'beginn':157,478 'beginners/learners':1233 'best':276,1188 'bilingu':503 'biolog':396,557 'bit':1416 'blend':2279 'blue':1449 'blueprint':278,492,573 'bodi':453 'bold':343,527,1457 'bold-editori':342,526 'box':2240 'brand':30,218,807,836,2110,2128,2145,2164 'branding.logo':2118 'breakdown':1293 'brief':308,500 'broad':1228 'build':1615 'bun':2362,2368 'busi':519 'cancel':1083 'canva':2263 'card':2270,2320,2327 'case':672,2734 'chalkboard':287,485,486 'chang':2650,2745 'check':749,770,823,850,856,1004,1018,2246 'checklist':747 'chemistri':397,558 'children':407,494 'choos':1205 'chunki':1413 'cjk/latin':27 'clash':2218 'classroom':482 'clean':295,303,328,335,345,355,374,392,402,423,509,1387,1481 'clear':1237 'clip':2261 'code':740,2137 'color':440,620,1391,1430,2781 'combin':1607 'command':2573 'commentari':592 'communic':539 'compact':1536 'complet':732,754,838,2388,2752 'composit':125,2127 'condens':1282 'condit':790,799,1668,1897 'configur':809,1546,2166 'confirm':727,775,825,1110,1115,1548,1553,1584,1624,1738,1956 'conflict':682,2289 'consid':269 'contain':2328 'content':9,46,89,247,249,409,471,617,689,715,768,957,961,979,983,1002,1006,1043,1086,1094,1138,1152,1159,1192,1231,1273,1729,1733,1833,2318,2330,2406,2736,2756,2758,2774 'content-integr':2317 'content.md':2477 'context':599 'continu':1660,1763,1802,1889,1983,2022 'convers':709 'convert':2154 'cool':281,356,375,393,436,1437,1447 'cool-neutr':1436 'copi':745 'corpor':294,520,521 'count':172,245,996,1105,1258,1628 'cover':1723,2175,2178,2404,2410 'cover/back-cover':224 'creat':13,41,1580,1768,1988,2589,2659 'creativ':406,493 'crisp':2259 'crop':135,2149 'cross':874,2274 'cross-platform':873 'custom':150,152,945,1123,1202,1367,1541,1599,1707,1935,2395 'cute':496 'd':1025 'dark':326,329,438,534,1459 'dark-atmospher':325,533 'dashboard':514 'data':489,1534 'deck':6,43,50,300,576,637,757,1028,1181,2387,2506,2534,2544 'default':279,572,940,947,2161 'delet':2599,2689,2770 'demo':340 'dens':338,358,377,395,459,1531 'densiti':456,461,618,1209,1505,1507,1510,1711,2803 'depth':1243 'descript':144,421,1052,1061,1071,1082,1187,1197,1200,1204,1227,1234,1241,1248,1270,1280,1290,1312,1323,1347,1357,1388,1396,1403,1412,1435,1442,1448,1454,1476,1484,1489,1494,1515,1524,1532,1749,1757,1767,1968,1977,1987 'design':286,574,577 'detail':1254,1284,1292,2753 'detect':690,696,918,924,989,1107,1146 'determin':96,993 'develop':389,553 'differ':1772,1992 'digit':2727 'dimens':275,418,419,946,1124,1203,1368,1375,1542,1600,1602,1621,1936,2396,2798,2806 'dir':105,110,2185,2364,2370 'direct':1325,1359 'directori':91,101,203,634,892,1021,1035,1846,1951,2398,2513 'display':1136,1699,1927 'doc':379 'document':2652 'domain':1244 'dramat':1497 'drawn':1408,2216 'dual':131,2142 'e.g':2144 'earth':1443 'echo':867,883,1032 'edg':2229,2264,2271,2301 'edit':1754,1778,1784,1974,1998,2004,2576,2609,2768 'editori':330,344,347,353,357,413,449,528,541,1493 'editorial-infograph':352,540 'educ':292,316,369,476,1235 'element':2783 'en':165 'enabled/disabled':926 'english':743 'ensur':2649 'entertain':332,529 'entir':2171 'error':730,2106 'etc':168 'everi':2350 'exampl':673 'execut':68,93,160,307,507,1009,1247 'exist':201,688,771,824,852,971,1005,1022,1033,1036,1040,1042,1085,1852,2037,2073,2455,2495,2553 'exit':1081 'expedit':565 'expert':159 'experts/professionals':1240 'explain':360,536 'explan':1238 'explanatori':589 'explicit':701,2325 'export':34 'ext':643 'extend.md':703,846,851,897,928,941,1144,2122,2163 'extract':665,1819 'f':862,881 'failur':2103 'fals':1659,1888 'fantasi':363,544,548 'fantasy-anim':362,547 'feel':1409 'fewer':1276 'file':99,631,738,1603,1827,1851,2072,2517,2581,2602,2615,2641,2678,2705,2716,2755 'filenam':1939 'first':860,932,1756,1780,1976,2000,2582,2616,2645 'first-tim':931 'flag':700,1560,1569 'flow':594,819,2048,2550 'focus':1236,1526 'follow':976,1610 'font':624 'format':2718,2766 'found':898,930,1044 'frame':2217,2222,2231,2268,2309 'frame-slid':2221,2308 'frame-strip':2230 'frame/card':2288 'friend':1445,1485 'full':464,908,2228 'game':333,388,531,550 'gap':2191 'general':161,1224 'generat':3,19,44,181,186,190,198,784,793,802,998,1304,1328,1339,1350,1362,1578,1608,1634,1688,1742,1750,1808,1859,1916,1960,1969,2028,2053,2056,2081,2091,2139,2443,2468,2492,2591,2669,2795 'geometr':297,305,337,446,1475 'get':2179 'getbbox':2152 'go':1650,1879 'gray':1450 'grid':280,424,1395,1398 'guid':477 'guidanc':1839 'guidelin':619,2777 'h':2197 'hand':1407 'hand-drawn':1406 'handl':683,695 'handwritten':290,314,367,448,1488 'header':1039,1173,1214,1259,1298,1333,1379,1426,1467,1506,1737,1955 'headlin':451 'heritag':416,563 'hero':1726 'hierarchi':616 'high':1250,1455 'high-level':1249 'histor':415 'histori':562 'home':876,895 'home/.lovstudio-skills/lovstudio-any2deck/extend.md':882,893 'humanist':321,404,447,1483 'id':2058,2087,2674 'idempot':2340 'identifi':1141 'illustr':401,499 'imag':7,22,51,185,194,196,199,803,835,1054,1060,1065,1340,1349,1361,1751,1915,1962,1972,2029,2032,2052,2071,2082,2446,2448,2473,2490,2493,2509,2560,2584,2592,2631,2670,2794 'images-on':195,2031,2447,2489,2508 'import':2633 'includ':1837 'individu':20 'infograph':354,542 'inform':460,1509,1781,2001,2521 'input':711,820,1130,1693,1921,2380 'insight':1252 'instruct':17,94,1617,1821 'integr':2319 'intermedi':158 'intro':679 'intro-machine-learn':678 'introduct':674 'intuit':372,505 'intuition-machin':371,504 'investor':299,517 'item':751 'ja':167 'journal':537 'jpg':136,2155 'kebab':671,2733 'kebab-cas':670,2732 'keep':240,1053,1062,1084 'key':1518 'keynot':351,524 'kid':495 'knowledg':1245 'label':1049,1058,1067,1080,1183,1194,1201,1223,1232,1239,1246,1266,1275,1285,1307,1318,1342,1352,1386,1394,1401,1410,1433,1440,1446,1452,1474,1482,1487,1492,1512,1522,1530,1745,1753,1764,1964,1973,1984 'lang':72,162,699 'languag':164,694,704,710,712,716,724,919,920,949,991,1106,1126,1131,1134,1142,1626,1689,1694,1697,1917,1922,1925,2096,2376,2381,2384 'launch':350,522 'layout':629,1720,1730,1734,1835,1838,2785 'leak':2303 'learn':475,677,681 'left':229 'length':248,1160,1274 'less':1283 'level':859,872,1251 'lifestyl':323,567 'line':2269 'list':1938 'live':583 'll':1759,1979 'load':764,844,905 'locat':886,2397 'logic':593 'logo':126,132,216,219,227,2126,2129,2143,2150,2167,2181,2187,2196,2220,2257,2276 'logo-h':2195 'logo2':225,2188,2190 'logo2-gap':2189 'lovstudio':1,864,888 'lovstudio-skil':863,887 'm':2211,2225 'machin':373,506,676,680 'macos/linux/wsl':879 'magazin':525,1495 'magic':546 'manag':632 'mani':1263 'manual':2574,2588,2600,2629 'map':2807 'markdown':10 'marker/brush':1490 'market':523 'match':1189 'max':176 'maximum':1528 'md':467,650,1597,2484,2620,2644,2667,2701,2797 'media':606 'medic':398,559 'merg':115,120,812,837,2354 'messag':731 'metric':515 'minim':302,306,322,368,457,508,511,1253,1523 'mix':28 'mode':236 'modern':1477 'modif':2569 'modifi':1760,1980 'mood':433,1207,1425,1427,1431,1709,2801 'multipl':1533,2538 'music':530 'must':1008 'n':1156,1267,1277,1287,1702,1930,2041,2210,2224,2237,2401,2458,2578,2626 'name':149,154,737,912,1705,1933,2393,2717 'narrat':238 'navy/gold':1439 'necessari':598 'need':2227 'neutral':304,336,439,1438,1460 'new':1769,1989,2656,2665 'new-slug':2664 'nn':2077,2407,2679,2694,2706,2720,2724,2744 'nn-slide':2076,2693,2719 'note':63,311,481,1418,1458,1498 'notion':334,516 'npx':2360,2366 'one':1525 'onto':129,2138 'opt':140,2112 'opt-in':139,2111 'optic':232 'optim':603 'option':142,143,420,630,693,779,1048,1182,1222,1265,1306,1341,1385,1432,1473,1511,1744,1963,2135,2425,2786 'order':854 'organ':288,312,319,365,425,1402,1491 'origin':2341,2346 'outlin':14,83,179,182,191,785,789,829,831,1051,1056,1063,1297,1299,1302,1310,1321,1558,1579,1581,1637,1643,1656,1667,1677,1684,1755,1766,1770,1779,1793,1818,1823,2411,2428,2436,2469,2596,2606,2763 'outline-on':82,178,1636,2427 'outline.md':644,1632,1761,1785,2412,2482,2518,2685,2712 'output':163,633,817,901,1020,1867,2374,2481 'overlay':31,1399 'pad':2200,2204 'pad-right':2203 'pad-top':2199 'palett':443 'paper':411,427,1419,2282,2333 'pars':900 'partial':2423 'partner':2146 'pass':2125 'past':88,963 'patch':2208,2294 'patch-slid':2207,2293 'path':102,108,739,885,909,1948,2399 'path/to/content.md':56,59,66,71,76,81 'pdf':123,663,2358,2418,2422,2586,2598,2608,2632 'per':462,1520 'persist':2316 'philosophi':575 'pixel':382,384,426,552,555,1411,1414 'pixel-art':381,554 'place':228 'platform':875 'png':655,2697,2723 'point':1519,1527,1535 'posit':2662 'powerpoint':118 'pptx':659,2356,2413,2417 'pptx/pdf':33,814,2567,2688,2715 'prefer':723,765,821,845,906,943,950,952,1135,1554,1698,1926,2385 'prerequisit':2511 'present':234,235,584,2761 'preset':148,273,274,473,1149,1185,1196,1592,1596,1704,1932,2392,2805 'preset/custom':911 'primari':217,231,1220 'principl':614 'prioriti':697,853 'problem':2315 'proceed':938,1011,1047,1324,1358,1747,1801,1966,2021 'product':339,349,513 'profession':4,48,296,434,1434 'progress':728,758,2090 'project':858,868,891 'project-level':857 'prompt':188,192,202,645,794,798,832,834,1305,1327,1332,1334,1337,1345,1351,1355,1567,1687,1743,1752,1809,1845,1850,1862,1868,1872,1885,1896,1906,1913,1929,1937,1950,1952,1975,1981,1986,1990,1999,2005,2013,2038,2336,2438,2444,2456,2466,2471,2479,2483,2496,2512,2516,2554,2580,2590,2614,2640,2660,2792 'prompts-on':187,1861,2437,2465,2478 'prompts/nn-slide-':1855,2618,2642,2663,2699 'propos':301 'pure':1389 'purpos':113,1682,1911 'python3':2183 'qr':2136,2233,2235,2239 'qr-box':2238 'qr-slide':2234 'qualiti':2245 'quarter':518 'question':725,1041,1169,1170,1175,1211,1216,1255,1261,1294,1300,1329,1335,1376,1381,1423,1428,1464,1469,1503,1508,1562,1571,1739,1957 'quick':2570 're':2298 're-run':2297 'read':579,899,1594,1601,1811,2249,2552 'readabl':1486 'reader':1221,1225 'readi':1740,1789,1958,2009,2485 'recommend':175,625,987,994,1096,1103,1147,1154,1184,1186,1226,1269,1311,1346,1514,1748,1967 'refer':2571,2754 'references/analysis-framework.md':977,2757 'references/base-prompt.md':1812,2790 'references/config/preferences-schema.md':954 'references/content-rules.md':2773 'references/design-guidelines.md':609,2778 'references/dimensions':466,1605,2796 'references/dimensions/presets.md':2804 'references/layouts.md':627,1841,2784 'references/modification-guide.md':2750,2767 'references/outline-template.md':1611,2762 'references/styles':1595,2808 'regener':204,205,209,212,1050,1055,1059,1064,1070,1078,1765,1792,1985,2012,2040,2043,2321,2457,2459,2523,2524,2536,2546,2559,2566,2577,2583,2585,2597,2607,2625,2630,2647,2687,2714 'remain':741,2747 'remov':2601,2692 'renam':972,1853,2074 'renumb':2593,2603,2676,2703,2741 'report':729,2089,2105 'reproduc':2654 'requir':772,776,1007,1111,2454 'research':361,502 'resolut':1590 'respons':719,1775,1995 'retri':2100 'retro':551 'reus':2348 'review':788,797,830,833,925,951,1296,1301,1309,1313,1322,1331,1336,1344,1348,1356,1559,1568,1644,1657,1666,1678,1683,1873,1886,1895,1907,1912 'review/editing':2487 'right':222,2133,2205 'round':777,780,828,1114,1116,1119,1161,1363,1538 'rule':717,968,1848,2069,2742 'run':2116,2248,2299,2351,2622 'saa':341,512 'san':1479 'sans-serif':1478 'satur':1456 'save':959,964,1088,1133,1630,1696,1843,1924,2383 'schema':953 'school':484 'scienc':538 'scientif':391,560,561 'script':90,107,112,2338 'scripts/apply-branding.py':124 'scripts/merge-to-pdf.ts':119 'scripts/merge-to-pptx.ts':114 'scroll':596 'seamless':2280 'secondari':226 'see':608,626,684,2749 'select':470,623,1102,1125,1369,1593,1674,1903,2050,2788 'self':588 'self-explanatori':587 'separ':1210 'sequenc':2728 'sequenti':2083 'serif':1480 'session':2057,2086,2673 'set':705,2120 'setup':761,841,934 'share':581,607 'show':2287 'signal':472,984,1095,1153 'simpl':510 'singl':2528,2610 'sketch':62,310,480 'sketch-not':61,309,479 'skill':104,109,865,889,2054,2184,2363,2369 'skill-any2deck' 'skill.md':98 'skip':184,193,223,1320,1354,1557,1566,1642,1647,1655,1669,1676,1871,1876,1884,1898,1905,2168,2172,2193,2445,2450 'slide':5,21,42,49,77,116,121,130,169,171,207,244,250,463,586,602,636,648,653,756,995,1027,1104,1155,1257,1260,1264,1268,1279,1289,1314,1521,1627,1701,1713,1715,1816,1831,1940,1961,1971,2045,2059,2067,2078,2140,2173,2209,2212,2223,2226,2236,2252,2286,2295,2310,2323,2386,2400,2461,2505,2515,2526,2529,2533,2539,2543,2557,2564,2568,2611,2636,2657,2690,2695,2721,2771 'slide-back-cover.png':2408 'slide-by-slid':1712 'slide-deck':635,1026,2504,2532,2542 'slide-specif':1830 'slug':640,642,649,654,658,662,664,1000,1031,1074,1856,2062,2079,2416,2421,2619,2643,2666,2681,2696,2700,2708,2722,2731,2746 'social':605 'soft':1404 'solid':1390 'sourc':641,714,960,990 'source-backup-yyyymmdd-hhmmss.md':974 'source-lovstudio' 'source.md':966,970 'spec':465 'specif':206,613,1832,2460,2525,2799 'specifi':1836,2044,2556 'split':270 'standard':2047 'start':2034,2497 'step':685,759,773,782,786,791,795,800,804,810,815,839,1013,1108,1574,1576,1587,1648,1652,1662,1664,1671,1680,1796,1804,1806,1877,1881,1891,1893,1900,1909,2016,2024,2026,2107,2170,2352,2372,2430,2440,2452,2499,2575 'still':2302 'stop':1639,1864,2434 'store':1540,1556,1565 'stori':543 'storytel':370 'strip':237,2232,2313 'structur':1317,1613,1685,2764 'style':16,26,60,145,147,153,271,417,444,455,469,736,910,944,986,1097,1101,1148,1172,1174,1178,1199,1472,1496,1545,1585,1589,1616,1619,1703,1820,1826,1931,2391,2520,2776 'subsequ':2594,2604,2677,2704 'subtl':1397 'summari':733,818,902,1137,1716,1869,2375 'support':23,942,2141 'system':272,285,488 'tabl':1717 'talk':390 'target':156,170 'teach':483 'tech':359 'technic':282,376,378,386,394,450,491,734,1242,1400,1499 'temperatur':441 'term':735 'test':861,880,1024 'text':11,29,239,454 'textur':422,429,1206,1378,1380,1384,1393,1405,1708,2283,2800 'tight':134,2148 'tight-crop':133,2147 'tilt':2332 'time':933 'timestamp':1076,2063 'tip':2789 'titl':1315,1718,1722,1725,1728,1732,1941,1944,1947 'title-hero':1724 'tone':1444 'top':221,2132,2201 'top-right':220,2131 'topic':639,657,661,666,999,1030,1092,1140,2061,2389,2390,2415,2420 'topic-agent-skills' 'topic-ai-coding-assistant' 'topic-cjk' 'topic-claude-code' 'topic-cursor' 'topic-gemini-cli' 'topic-markdown-to-docx' 'topic-markdown-to-pdf' 'topic-slug':638,656,660,1029,2060,2414,2419 'total':1700,1928,2402 'touch':2272 'transform':45 'travel':569 'treatment':432 'trigger':2114 'true':1646,1875 'tutori':293,317,474 'two':1113,2726 'two-digit':2725 'two-round':1112 'type':1139,1719 'typographi':445,622,1208,1466,1468,1471,1710,2780,2802 'unchang':1087,2682,2709,2748 'uniqu':2740 'updat':1550,2579,2595,2605,2613,2635,2638,2684,2711 'url':12 'usag':52 'use':35,720,847,935,1015,1037,1127,1164,1370,1582,1690,1735,1918,1953,2377,2464,2488,2522,2671 'user':38,692,707,721,871,884,894,904,1128,1673,1691,1782,1902,1919,2002,2094,2124,2378 'user-level':870 'vector':400,498 'vector-illustr':399,497 'verbal':591 'verifi':2255 'via':1421,1462,1501,2151 'vibrant':346,366,385,403,437,1453 'vintag':410,564,566 'visibl':2267 'visual':25,146,242,428,615,1177,1383,2254,2782 'warm':289,313,320,412,435,1441 'watercolor':318,571 'well':324,568 'white':137,2156 'whitespac':1529 'whose':2213 'within':600 'without':590,2472 'word':252,257,262,266,669,2739 'work':877 'workflow':744,2424,2426,2772 'x/n':2092 'x1':2241 'x2':2243 'y':2361,2367 'y1':2242 'y2':2244 'yes':1308,1343,1746,1800,1965,2020 'zh':73,166","prices":[{"id":"8429b7a2-d530-4d61-9509-ec1d977cc59e","listingId":"2da207a9-cf96-4c33-8cac-fb7750cbe8b6","amountUsd":"0","unit":"free","nativeCurrency":null,"nativeAmount":null,"chain":null,"payTo":null,"paymentMethod":"skill-free","isPrimary":true,"details":{"org":"lovstudio","category":"skills","install_from":"skills.sh"},"createdAt":"2026-04-18T22:18:50.522Z"}],"sources":[{"listingId":"2da207a9-cf96-4c33-8cac-fb7750cbe8b6","source":"github","sourceId":"lovstudio/skills/any2deck","sourceUrl":"https://github.com/lovstudio/skills/tree/main/skills/any2deck","isPrimary":false,"firstSeenAt":"2026-04-18T22:18:50.522Z","lastSeenAt":"2026-04-22T00:56:33.805Z"}],"details":{"listingId":"2da207a9-cf96-4c33-8cac-fb7750cbe8b6","quickStartSnippet":null,"exampleRequest":null,"exampleResponse":null,"schema":null,"openapiUrl":null,"agentsTxtUrl":null,"citations":[],"useCases":[],"bestFor":[],"notFor":[],"kindDetails":{"org":"lovstudio","slug":"any2deck","github":{"repo":"lovstudio/skills","stars":40,"topics":["agent-skills","ai-coding-assistant","cjk","claude-code","cursor","gemini-cli","markdown-to-docx","markdown-to-pdf"],"license":"mit","html_url":"https://github.com/lovstudio/skills","pushed_at":"2026-04-21T15:57:51Z","description":"Agent skills for AI coding assistants — Markdown to PDF/DOCX with 14 themes, CJK support","skill_md_sha":"f30b169d917f596b840af4ed3aff76da58092305","skill_md_path":"skills/any2deck/SKILL.md","default_branch":"main","skill_tree_url":"https://github.com/lovstudio/skills/tree/main/skills/any2deck"},"layout":"multi","source":"github","category":"skills","frontmatter":{"name":"lovstudio:any2deck","license":"MIT","description":"Generate professional slide deck images from content (Markdown, text, URLs). Creates outlines with style instructions, then generates individual slide images. Supports 16 visual styles, CJK/Latin mixed text, branding overlays, and PPTX/PDF export. Use when the user asks to \"create slides\", \"make a presentation\", \"generate deck\", \"slide deck\", \"PPT\", \"做PPT\", \"生成幻灯片\", \"制作演示文稿\", or wants to turn content into a visual slide deck.","compatibility":"Requires an image generation skill (e.g. image-gen) and Node.js for PPTX/PDF merge. Python 3.8+ for branding overlay. Cross-platform: macOS, Windows, Linux."},"skills_sh_url":"https://skills.sh/lovstudio/skills/any2deck"},"updatedAt":"2026-04-22T00:56:33.805Z"}}