{"id":"d1c0858e-e888-4d38-9ae0-0d40c2d26101","entityType":"agent","slug":"clawhub-taoj2025-course-ppt-generator","name":"基于课程内容说明生成图文并茂的的PPT","canonicalUrl":"https://www.xpersona.co/agent/clawhub-taoj2025-course-ppt-generator","canonicalPath":"/agent/clawhub-taoj2025-course-ppt-generator","generatedAt":"2026-10-10T08:45:34.477Z","source":"CLAWHUB","claimStatus":"UNCLAIMED","verificationTier":"NONE","summary":{"evidence":{"source":"editorial-content","verified":true,"confidence":"high","updatedAt":"2026-10-10T03:30:45.210Z","emptyReason":null},"description":"PPT制作完整技能套件。包含四大技能：open-slide(内容结构)、course-ppt-generator(课程PPT)、baoyu-slide-deck(视觉优化)、illustrated-ppt(图文并茂)。支持商用、教学、技术等多场景，图片与文字精准对齐。 Skill: 基于课程内容说明生成图文并茂的的PPT Owner: taoj2025 Summary: PPT制作完整技能套件。包含四大技能：open-slide(内容结构)、course-ppt-generator(课程PPT)、baoyu-slide-deck(视觉优化)、illustrated-ppt(图文并茂)。支持商用、教学、技术等多场景，图片与文字精准对齐。 Tags: latest:1.0.2 Version history: v1.0.2 | 2026-05-11T05:59:59.017Z | user - Migrated all files from the previous skills/ directory root to a new baoyu-slide-deck/ directory structure. - Added and reorganized reference files under","descriptionLabel":"Technical summary","evidenceSummary":"Capability contract not published. No trust telemetry is available yet. 1.7K downloads reported by the source. Last updated 10/10/2026.","installCommand":"clawhub skill install s178fbcjp1yr7xha6kxht6nh2s86f40a:course-ppt-generator","sourceUrl":"https://clawhub.ai/taoj2025/course-ppt-generator","homepage":"https://clawhub.ai/taoj2025/skills/course-ppt-generator","primaryLinks":[{"label":"View on ClawHub","url":"https://clawhub.ai/taoj2025/course-ppt-generator","kind":"source"},{"label":"Homepage","url":"https://clawhub.ai/taoj2025/skills/course-ppt-generator","kind":"homepage"}],"safetyScore":84,"overallRank":62,"popularityScore":65,"trustScore":null,"claimedByName":null,"isOwner":false,"seoDescription":"PPT制作完整技能套件。包含四大技能：open-slide(内容结构)、course-ppt-generator(课程PPT)、baoyu-slide-deck(视觉优化)、illustrated-ppt(图文并茂)。支持商用、教学、技术等多场景，图片与文字精准对齐。 Skill: 基于课程内容说明生成图文并茂的的PP"},"coverage":{"evidence":{"source":"public-profile","verified":false,"confidence":"medium","updatedAt":"2026-10-10T03:30:45.210Z","emptyReason":null},"protocols":[{"protocol":"OPENCLEW","label":"OpenClaw","status":"self-declared","notes":"Declared in the public agent profile."}],"capabilities":[],"verifiedCount":0,"selfDeclaredCount":1,"capabilityMatrix":{"rows":[{"key":"OPENCLEW","type":"protocol","support":"unknown","confidenceSource":"profile","notes":"Listed on profile"}],"flattenedTokens":"protocol:OPENCLEW|unknown|profile"}},"adoption":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"medium","updatedAt":"2026-10-10T03:30:45.210Z","emptyReason":null},"stars":null,"forks":null,"downloads":1733,"packageName":null,"latestVersion":"1.0.2","tractionLabel":"1.7K downloads"},"release":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"medium","updatedAt":"2026-10-10T03:30:45.210Z","emptyReason":null},"lastUpdatedAt":"2026-10-10T03:30:45.210Z","lastCrawledAt":"2026-10-10T03:30:45.210Z","lastIndexedAt":null,"nextCrawlAt":"2026-10-11T03:30:45.210Z","lastVerifiedAt":null,"highlights":[{"version":"1.0.2","createdAt":"2026-05-11T05:59:59.017Z","changelog":"- Migrated all files from the previous skills/ directory root to a new baoyu-slide-deck/ directory structure. - Added and reorganized reference files under baoyu-slide-deck/, including multiple style, layout, and dimension references. - Updated metadata and documentation to reflect new directory layout. - No changes to core code functionality—this update mainly restructures and relocates reference and documentation files.","fileCount":53,"zipByteSize":96147},{"version":"1.0.1","createdAt":"2026-05-11T02:31:50.511Z","changelog":"**This version introduces a major update, integrating advanced slide design features and multi-stage PPT workflow.** - Added baoyu-slide-deck module with detailed visual style references and configuration guides. - Significantly expanded internal documentation and modular references for structured PPT design, including layout, style, mood, typography, and various preset options. - Removed older standalone Python script and outdated usage documentation to reflect the new pipeline approach. - Prepared the foundation for three-stage PPT workflow (structure, content, visual optimization) with enhanced customization and professional slide output.","fileCount":45,"zipByteSize":83437},{"version":"1.0.0","createdAt":"2026-05-10T12:46:31.588Z","changelog":"Initial release of course-ppt-generator skill. - Enables automatic generation of university-level course PPTs for a variety of subjects, including data science, Python, deep learning, and more. - Supports multiple teaching scenarios: lecture slides, lab guides, review materials, and academic presentations. - Produces structured, visually appealing PPTs with standardized sections and blue professional theme. - Provides flexible input options: course topic, field, type, audience, slide count, and style preferences. - Ensures every PPT includes AI-generated content identification. - Actively retrieves up-to-date examples and data to enrich teaching content when user input is limited.","fileCount":4,"zipByteSize":7467}]},"execution":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No published capability contract is available yet."},"installCommand":"clawhub skill install s178fbcjp1yr7xha6kxht6nh2s86f40a:course-ppt-generator","setupComplexity":"low","setupSteps":["Setup complexity is LOW. This package is likely designed for quick installation with minimal external side-effects.","Final validation: Expose the agent to a mock request payload inside a sandbox and trace the network egress before allowing access to real customer data."],"contract":{"contractStatus":"missing","authModes":[],"requires":[],"forbidden":[],"supportsMcp":false,"supportsA2a":false,"supportsStreaming":false,"inputSchemaRef":null,"outputSchemaRef":null,"dataRegion":null,"contractUpdatedAt":null,"sourceUpdatedAt":null,"freshnessSeconds":null},"invocationGuide":{"preferredApi":{"snapshotUrl":"https://www.xpersona.co/api/v1/agents/clawhub-taoj2025-course-ppt-generator/snapshot","contractUrl":"https://www.xpersona.co/api/v1/agents/clawhub-taoj2025-course-ppt-generator/contract","trustUrl":"https://www.xpersona.co/api/v1/agents/clawhub-taoj2025-course-ppt-generator/trust"},"curlExamples":["curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-taoj2025-course-ppt-generator/snapshot\"","curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-taoj2025-course-ppt-generator/contract\"","curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-taoj2025-course-ppt-generator/trust\""],"jsonRequestTemplate":{"query":"summarize this repo","constraints":{"maxLatencyMs":2000,"protocolPreference":["OPENCLEW"]}},"jsonResponseTemplate":{"ok":true,"result":{"summary":"...","confidence":0.9},"meta":{"source":"CLAWHUB","generatedAt":"2026-10-10T08:45:34.474Z"}},"retryPolicy":{"maxAttempts":3,"backoffMs":[500,1500,3500],"retryableConditions":["HTTP_429","HTTP_503","NETWORK_TIMEOUT"]}},"endpoints":{"dossierUrl":"https://www.xpersona.co/api/v1/agents/clawhub-taoj2025-course-ppt-generator/dossier","snapshotUrl":"https://www.xpersona.co/api/v1/agents/clawhub-taoj2025-course-ppt-generator/snapshot","contractUrl":"https://www.xpersona.co/api/v1/agents/clawhub-taoj2025-course-ppt-generator/contract","trustUrl":"https://www.xpersona.co/api/v1/agents/clawhub-taoj2025-course-ppt-generator/trust"}},"reliability":{"evidence":{"source":"runtime-metrics","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No trust, reliability, or runtime telemetry is available."},"trust":{"status":"unavailable","handshakeStatus":"UNKNOWN","verificationFreshnessHours":null,"reputationScore":null,"p95LatencyMs":null,"successRate30d":null,"fallbackRate":null,"attempts30d":null,"trustUpdatedAt":null,"trustConfidence":"unknown","sourceUpdatedAt":null,"freshnessSeconds":null},"decisionGuardrails":{"doNotUseIf":["Contract metadata is missing or unavailable for deterministic execution."],"safeUseWhen":[],"riskFlags":["missing_or_unavailable_contract","trust_data_unavailable","schema_references_missing"],"operationalConfidence":"low"},"executionMetrics":{"observedLatencyMsP50":null,"observedLatencyMsP95":null,"estimatedCostUsd":null,"uptime30d":null,"rateLimitRpm":null,"rateLimitBurst":null,"lastVerifiedAt":null,"verificationSource":null},"runtimeMetrics":{"successRate":null,"avgLatencyMs":null,"avgCostUsd":null,"hallucinationRate":null,"retryRate":null,"disputeRate":null,"p50Latency":null,"p95Latency":null,"lastUpdated":null}},"benchmarks":{"evidence":{"source":"no-benchmark-data","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No benchmark suites or observed failure patterns are available."},"suites":[],"failurePatterns":[]},"artifacts":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"high","updatedAt":"2026-10-10T03:30:45.210Z","emptyReason":null},"readme":"Skill: 基于课程内容说明生成图文并茂的的PPT\n\nOwner: taoj2025\n\nSummary: PPT制作完整技能套件。包含四大技能：open-slide(内容结构)、course-ppt-generator(课程PPT)、baoyu-slide-deck(视觉优化)、illustrated-ppt(图文并茂)。支持商用、教学、技术等多场景，图片与文字精准对齐。\n\nTags: latest:1.0.2\n\nVersion history:\n\nv1.0.2 | 2026-05-11T05:59:59.017Z | user\n\n- Migrated all files from the previous skills/ directory root to a new baoyu-slide-deck/ directory structure.\n- Added and reorganized reference files under baoyu-slide-deck/, including multiple style, layout, and dimension references.\n- Updated metadata and documentation to reflect new directory layout.\n- No changes to core code functionality—this update mainly restructures and relocates reference and documentation files.\n\nv1.0.1 | 2026-05-11T02:31:50.511Z | user\n\n**This version introduces a major update, integrating advanced slide design features and multi-stage PPT workflow.**\n\n- Added baoyu-slide-deck module with detailed visual style references and configuration guides.\n- Significantly expanded internal documentation and modular references for structured PPT design, including layout, style, mood, typography, and various preset options.\n- Removed older standalone Python script and outdated usage documentation to reflect the new pipeline approach.\n- Prepared the foundation for three-stage PPT workflow (structure, content, visual optimization) with enhanced customization and professional slide output.\n\nv1.0.0 | 2026-05-10T12:46:31.588Z | user\n\nInitial release of course-ppt-generator skill.\n\n- Enables automatic generation of university-level course PPTs for a variety of subjects, including data science, Python, deep learning, and more.\n- Supports multiple teaching scenarios: lecture slides, lab guides, review materials, and academic presentations.\n- Produces structured, visually appealing PPTs with standardized sections and blue professional theme.\n- Provides flexible input options: course topic, field, type, audience, slide count, and style preferences.\n- Ensures every PPT includes AI-generated content identification.\n- Actively retrieves up-to-date examples and data to enrich teaching content when user input is limited.\n\nArchive index:\n\nArchive v1.0.2: 53 files, 96147 bytes\n\nFiles: baoyu-slide-deck/_meta.json (137b), baoyu-slide-deck/.clawhub/origin.json (150b), baoyu-slide-deck/references/analysis-framework.md (5241b), baoyu-slide-deck/references/base-prompt.md (2844b), baoyu-slide-deck/references/config/preferences-schema.md (3607b), baoyu-slide-deck/references/confirmation.md (4854b), baoyu-slide-deck/references/content-rules.md (2986b), baoyu-slide-deck/references/design-guidelines.md (7581b), baoyu-slide-deck/references/dimensions/density.md (3126b), baoyu-slide-deck/references/dimensions/mood.md (4106b), baoyu-slide-deck/references/dimensions/presets.md (5133b), baoyu-slide-deck/references/dimensions/texture.md (1938b), baoyu-slide-deck/references/dimensions/typography.md (4062b), baoyu-slide-deck/references/layouts.md (3086b), baoyu-slide-deck/references/modification-guide.md (2467b), baoyu-slide-deck/references/outline-template.md (7599b), baoyu-slide-deck/references/styles/blueprint.md (2277b), baoyu-slide-deck/references/styles/bold-editorial.md (2409b), baoyu-slide-deck/references/styles/chalkboard.md (2512b), baoyu-slide-deck/references/styles/corporate.md (2346b), baoyu-slide-deck/references/styles/dark-atmospheric.md (2435b), baoyu-slide-deck/references/styles/editorial-infographic.md (2450b), baoyu-slide-deck/references/styles/fantasy-animation.md (2474b), baoyu-slide-deck/references/styles/hand-drawn-edu.md (2905b), baoyu-slide-deck/references/styles/intuition-machine.md (2870b), baoyu-slide-deck/references/styles/minimal.md (2036b), baoyu-slide-deck/references/styles/notion.md (2133b), baoyu-slide-deck/references/styles/pixel-art.md (2446b), baoyu-slide-deck/references/styles/scientific.md (2448b), baoyu-slide-deck/references/styles/sketch-notes.md (2463b), baoyu-slide-deck/references/styles/vector-illustration.md (2646b), baoyu-slide-deck/references/styles/vintage.md (2499b), baoyu-slide-deck/references/styles/watercolor.md (2349b), baoyu-slide-deck/scripts/merge-to-pdf.ts (3222b), baoyu-slide-deck/scripts/merge-to-pptx.ts (3918b), baoyu-slide-deck/SKILL.md (18204b), course-ppt-generator/references/使用指南.md (1813b), course-ppt-generator/scripts/generate_course_ppt.py (7319b), course-ppt-generator/SKILL.md (6089b), illustrated-ppt/README.md (3318b), illustrated-ppt/references/config.ini (1152b), illustrated-ppt/scripts/illustrated_ppt.py (20421b), illustrated-ppt/SKILL.md (3797b), illustrated-ppt/templates/examples.py (7574b), open-slide/_meta.json (129b), open-slide/.clawhub/origin.json (142b), open-slide/references/authoring.md (8492b), open-slide/requirements.txt (30b), open-slide/scripts/export_pdf.py (6077b), open-slide/SKILL.md (11184b), skill-card.md (2381b), SKILL.md (1533b), _meta.json (139b)\n\nFile v1.0.2:baoyu-slide-deck/SKILL.md\n\n---\nname: baoyu-slide-deck\ndescription: 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\".\nversion: 1.56.2\nmetadata:\n  openclaw:\n    homepage: https://github.com/JimLiu/baoyu-skills#baoyu-slide-deck\n    requires:\n      anyBins:\n        - bun\n        - npx\n---\n\n# Slide Deck Generator\n\nTransform content into professional slide deck images. The deck is designed for **reading and sharing** (self-explanatory slides, logical scroll flow, social-media-friendly) rather than live presentation — that assumption drives every layout and density decision below.\n\n## User Input Tools\n\nWhen this skill prompts the user, follow this tool-selection rule (priority order):\n\n1. **Prefer built-in user-input tools** exposed by the current agent runtime — e.g., `AskUserQuestion`, `request_user_input`, `clarify`, `ask_user`, or any equivalent.\n2. **Fallback**: if no such tool exists, emit a numbered plain-text message and ask the user to reply with the chosen number/answer for each question.\n3. **Batching**: if the tool supports multiple questions per call, combine all applicable questions into a single call; if only single-question, ask them one at a time in priority order.\n\nConcrete `AskUserQuestion` references below are examples — substitute the local equivalent in other runtimes.\n\n## Image Generation Tools\n\nWhen this skill needs to render an image, resolve the backend in this order:\n\n1. **Current-request override** — if the user names a specific backend in the current message, use it.\n2. **Saved preference** — if `EXTEND.md` sets `preferred_image_backend` to a backend available right now, use it.\n3. **Auto-select** (when the preference is `auto`, unset, or the pinned backend isn't available):\n   - If the current runtime exposes a native image tool (e.g., Codex `imagegen`, Hermes `image_generate`), use it. Runtime-native tools are preferred by default — agents that know their own tool inventory should surface the native one here.\n   - Otherwise, if exactly one non-native backend is installed (e.g., `baoyu-imagine`), use it.\n   - Otherwise (multiple non-native backends with no runtime-native tool), ask the user once — batch with any other initial questions.\n4. **If none are available**, tell the user and ask how to proceed.\n\nSetting `preferred_image_backend: ask` forces the step-3 prompt every run regardless of available backends. Users change the pinned backend via the `## Changing Preferences` section below.\n\n**Prompt file requirement (hard)**: write each image's full, final prompt to a standalone file under `prompts/` (naming: `NN-slide-[slug].md`) BEFORE invoking any backend. The file is the reproducibility record and lets you switch backends without regenerating prompts.\n\nConcrete tool names (`imagegen`, `image_generate`, `baoyu-imagine`) above are examples — substitute the local equivalents under the same rule.\n\n## Confirmation Policy\n\nDefault behavior: **confirm before generation**.\n\n- Treat explicit skill invocation, a file path, matched signals/presets, and `EXTEND.md` defaults as **recommendation inputs only**. None of them authorizes skipping confirmation.\n- Do **not** start Step 3 or later until the user completes Step 2.\n- Skip confirmation only when the current request explicitly says to do so, for example: \"直接生成\", \"不用确认\", \"跳过确认\", \"按默认出幻灯片\", or equivalent wording.\n- If confirmation is skipped explicitly, state the assumed style / audience / slide-count / language / backend in the next user-facing update before generating.\n\n## Language\n\nRespond in the user's language across questions, progress reports, error messages, and the completion summary. Keep technical tokens (style names, file paths, code) in English.\n\n## Script Directory\n\n`{baseDir}` = this SKILL.md's directory. Resolve `${BUN_X}`: prefer `bun`; else `npx -y bun`; else suggest `brew install oven-sh/bun/bun`.\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\n## Options\n\n| Option | Description |\n|--------|-------------|\n| `--style <name>` | Preset (see Presets below), `custom`, or custom style name |\n| `--audience <type>` | beginners / intermediate / experts / executives / general |\n| `--lang <code>` | Output language (en, zh, ja, ...) |\n| `--slides <N>` | Target slide count (8-25 recommended, max 30) |\n| `--ref <files...>` | Reference images applied per slide (style / palette / composition / subject) |\n| `--outline-only` | Stop after outline |\n| `--prompts-only` | Stop after prompts (skip image generation) |\n| `--images-only` | Skip to Step 7; requires existing `prompts/` |\n| `--regenerate <N>` | Regenerate specific slide(s): `3` or `2,5,8` |\n\n## Style System\n\n17 presets covering technical / educational / lifestyle / editorial use cases. Every preset is a combination of four dimensions (texture / mood / typography / density). If the user picks \"Custom dimensions\" in Round 1, Round 2 of the confirmation asks one question per dimension — options and verbatim copy live in `references/confirmation.md`.\n\n### Presets (17)\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| `hand-drawn-edu` | organic + macaron + handwritten + balanced | Educational diagrams, process explainers |\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\nPer-preset specs: `references/styles/<preset>.md`. Preset → dimension mapping: `references/dimensions/presets.md`.\n\n### Dimensions (when \"Custom dimensions\" picked)\n\n| Dimension | Options | Purpose |\n|-----------|---------|---------|\n| **Texture** | clean, grid, organic, pixel, paper | Background treatment |\n| **Mood** | professional, warm, cool, vibrant, dark, neutral, macaron | Color temperature |\n| **Typography** | geometric, humanist, handwritten, editorial, technical | Headline/body styling |\n| **Density** | minimal, balanced, dense | Information per slide |\n\nFull per-dimension specs: `references/dimensions/*.md`.\n\n### Auto-Selection\n\nMatch content signals to a preset. Pick the first row whose signal keywords appear in the source; fall back to `blueprint` if nothing matches.\n\n| Signals in source | Preset |\n|-------------------|--------|\n| tutorial, learn, education, guide, beginner | `sketch-notes` |\n| hand-drawn, infographic, diagram, process, onboarding | `hand-drawn-edu` |\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\n### Slide Count Heuristic\n\n| Source length | Recommended 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## Reference Images\n\nUsers may supply reference images to guide style, palette, layout, or subject.\n\n**Intake**: Accept via `--ref <files...>` or when the user provides file paths / pastes images in conversation.\n- File path → copy to `{slide-deck-dir}/refs/NN-ref-{slug}.{ext}`\n- Pasted image with no path → ask for the path, or extract style traits verbally as a text fallback\n\n**Usage modes** (per reference):\n\n| Usage | Effect |\n|-------|--------|\n| `direct` | Pass the file to the backend as a reference image for each slide |\n| `style` | Extract style traits (line treatment, texture, mood) and append to every slide's prompt body |\n| `palette` | Extract hex colors and append to every slide's prompt body |\n\nRecord refs in each slide's prompt frontmatter:\n\n```yaml\nreferences:\n  - ref_id: 01\n    filename: 01-ref-brand.png\n    usage: direct\n```\n\nAt generation time, verify files exist. If `usage: direct` and the backend accepts refs (e.g., `baoyu-imagine --ref`), pass the file on every slide. Otherwise embed extracted `style`/`palette` traits in the prompt text.\n\n## File Layout\n\n```\nslide-deck/{topic-slug}/\n├── source-{slug}.{ext}\n├── outline.md\n├── prompts/NN-slide-{slug}.md\n├── NN-slide-{slug}.png\n├── {topic-slug}.pptx\n└── {topic-slug}.pdf\n```\n\n**Slug**: 2-4 words, kebab-case, extracted from topic. \"Introduction to Machine Learning\" → `intro-machine-learning`.\n\n**Backup rule** (applies across steps): if a file about to be written already exists, rename it to `<name>-backup-YYYYMMDD-HHMMSS.<ext>` before writing the new one. This protects user edits and enables rollback.\n\n## Workflow\n\nCopy this checklist and check off items as you complete them:\n\n```\n- [ ] Step 1: Setup & analyze\n- [ ] Step 2: Confirmation ⚠️ REQUIRED (Round 1; Round 2 only if \"Custom dimensions\")\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 8: Merge to PPTX/PDF\n- [ ] Step 9: Output summary\n```\n\n### Step 1: Setup & Analyze\n\n**1.1 Load EXTEND.md** — check these paths in order; first hit wins:\n\n| Path | Scope |\n|------|-------|\n| `.baoyu-skills/baoyu-slide-deck/EXTEND.md` | Project |\n| `${XDG_CONFIG_HOME:-$HOME/.config}/baoyu-skills/baoyu-slide-deck/EXTEND.md` | XDG |\n| `$HOME/.baoyu-skills/baoyu-slide-deck/EXTEND.md` | User home |\n\nIf found, read, parse, and print a summary (style / audience / language / review). If not, proceed with defaults — first-time setup is not blocking for this skill. Schema: `references/config/preferences-schema.md`.\n\n**1.2 Analyze content** — follow `references/analysis-framework.md`: classify content, detect language, note signals for style selection, estimate slide count from length (see the **Slide Count Heuristic** in Style System above), generate topic slug. Save source as `source.md` (honor backup rule if one exists).\n\n**1.3 Check existing output** ⚠️ REQUIRED before Step 2. If `slide-deck/{topic-slug}/` exists, ask how to proceed — four options (regenerate outline / regenerate images / backup and regenerate / exit), verbatim copy in `references/confirmation.md`.\n\nSave findings to `analysis.md`: topic, audience, signals, recommended style and slide count, language detection.\n\n### Step 2: Confirmation ⚠️ REQUIRED\n\n**Hard gate**: this step is mandatory per the [Confirmation Policy](#confirmation-policy) — Steps 3+ cannot start until the user confirms here (or explicitly opts out with \"直接生成\" / equivalent wording in the current request).\n\n**Round 1 (always)** — batch five questions in one `AskUserQuestion` call: style, audience, slide count, review-outline?, review-prompts?. Verbatim options in `references/confirmation.md`.\n\nSummary displayed before the questions:\n- Content type + topic\n- Detected language\n- Recommended style (based on signals)\n- Recommended slide count (based on length)\n\n**Round 2 (only if \"Custom dimensions\" in Round 1)** — batch four questions: texture, mood, typography, density. Verbatim options in `references/confirmation.md`. The four answers replace the preset.\n\n**After confirmation**: update `analysis.md` with final choices and store `skip_outline_review` / `skip_prompt_review` flags from Q4/Q5.\n\n### Step 3: Generate Outline\n\nResolve style: preset → `references/styles/{preset}.md`; custom dimensions → combine files in `references/dimensions/`. Build `STYLE_INSTRUCTIONS` from the resolved style, apply confirmed audience + language + slide count, follow `references/outline-template.md`, and save as `outline.md`.\n\nStop here if `--outline-only`. Skip Step 4 if `skip_outline_review`.\n\n### Step 4: Review Outline (Conditional)\n\nDisplay a slide-by-slide table (`# | Title | Type | Layout`) along with total count and resolved style. Ask: proceed / edit outline first / regenerate — verbatim in `references/confirmation.md`.\n\nOn \"Edit outline first\", tell the user to edit `outline.md` and ask again when ready. On \"Regenerate outline\", return to Step 3.\n\n### Step 5: Generate Prompts\n\nFor each slide in outline:\n1. Read `references/base-prompt.md`\n2. Extract `STYLE_INSTRUCTIONS` from the outline (don't re-read the style file)\n3. Add the slide's content\n4. If a `Layout:` is specified, include guidance from `references/layouts.md`\n5. Save to `prompts/NN-slide-{slug}.md` (backup rule applies)\n\nStop here if `--prompts-only`. Skip Step 6 if `skip_prompt_review`.\n\n### Step 6: Review Prompts (Conditional)\n\nDisplay the prompts index (`# | Filename | Slide Title`) and ask: proceed / edit prompts first / regenerate — verbatim in `references/confirmation.md`. Branches mirror Step 4.\n\n### Step 7: Generate Images\n\n1. Resolve the image backend via the Image Generation Tools rule at the top — ask once if multiple are installed.\n2. Confirm every `prompts/NN-slide-{slug}.md` exists (hard requirement; prompt files are the reproducibility record regardless of backend).\n3. Session ID: `slides-{topic-slug}-{timestamp}` — pass to the backend only if it supports sessions.\n4. For each slide: generate sequentially, reusing the session ID. Backup rule applies to PNG files. Report progress as `Generated X/N`. Auto-retry once on failure before reporting an error.\n\n`--regenerate N` jumps to this step for the named slides only. `--images-only` starts here with existing prompts.\n\n### Step 8: Merge\n\n```bash\n${BUN_X} {baseDir}/scripts/merge-to-pptx.ts <slide-deck-dir>\n${BUN_X} {baseDir}/scripts/merge-to-pdf.ts <slide-deck-dir>\n```\n\n### Step 9: Summary\n\n```\nSlide Deck Complete!\nTopic: [topic]\nStyle: [preset or \"custom: texture+mood+typography+density\"]\nLocation: [directory]\nSlides: N\n\n- 01-slide-cover.png\n- ...\n- NN-slide-back-cover.png\n\nOutline: outline.md\nPPTX: {topic-slug}.pptx\nPDF: {topic-slug}.pdf\n```\n\n## Slide Modification\n\n| Action | How |\n|--------|-----|\n| Edit | Update `prompts/NN-slide-{slug}.md` **first**, then `--regenerate N` |\n| Add | Create new prompt at position, generate image, renumber subsequent `NN` (slugs unchanged), update `outline.md`, re-merge |\n| Delete | Remove PNG + prompt, renumber subsequent, update `outline.md`, re-merge |\n\nAlways update the prompt file before regenerating the image — this keeps the prompts directory as the source of truth and makes changes reproducible. Only `NN` changes on renumber; slugs stay stable so references remain valid.\n\nSee `references/modification-guide.md` for full details.\n\n## References\n\n| File | Content |\n|------|---------|\n| `references/confirmation.md` | Verbatim AskUserQuestion option copy for every confirmation |\n| `references/analysis-framework.md` | Content analysis framework |\n| `references/outline-template.md` | Outline structure |\n| `references/base-prompt.md` | Base prompt body for image generation |\n| `references/layouts.md` | Layout options |\n| `references/design-guidelines.md` | Audience, typography, color selection |\n| `references/content-rules.md` | Content guidelines |\n| `references/modification-guide.md` | Edit/add/delete workflows |\n| `references/styles/<preset>.md` | Per-preset specifications |\n| `references/dimensions/*.md` | Per-dimension specifications |\n| `references/config/preferences-schema.md` | EXTEND.md schema |\n\n## Notes\n\n- Image generation takes ~10-30s per slide; report progress between them.\n- For sensitive public figures, prefer stylized alternatives to avoid likeness issues.\n- Maintain visual consistency via the session ID when the backend supports it.\n\n## Changing Preferences\n\nEXTEND.md lives at the first matching path listed in Step 1.1. Two ways to change it:\n\n- **Edit directly** — open EXTEND.md and change fields. Full schema: `references/config/preferences-schema.md`.\n- **Common one-line edits**:\n  - `preferred_image_backend: auto` — default; runtime-native tool wins, falls back to the only installed backend, asks only if multiple non-native are present.\n  - `preferred_image_backend: codex-imagegen` — pin to Codex's built-in.\n  - `preferred_image_backend: baoyu-imagine` — pin to the baoyu-imagine skill.\n  - `preferred_image_backend: ask` — confirm backend every run.\n  - `preferred_style: blueprint`, `preferred_audience: experts`, `language: zh`.\n\nFile v1.0.2:course-ppt-generator/SKILL.md\n\n---\nname: course-ppt-generator\ndescription: 高校教师课程PPT生成技能。当老师需要制作教学内容课件、备课PPT、教学演示文稿、实验指导手册时触发。支持数据科学、大数据技术、Python编程、深度学习、机器学习、数据可视化等多个学科领域。触发词：课程PPT、制作课件、备课PPT、教学演示、实验指导。\nversion: 1.0.0\nauthor: TJMtaotao\ntags: [教育, PPT, 课件, 教学, 高校, 课程]\n---\n\n# 课程PPT生成技能\n\n## 角色定义\n\n你是一位专业的高校课程PPT设计师，深谙教学内容表达和视觉设计。能够根据老师的需求，生成符合教学规范、结构清晰、视觉美观的课程演示文稿。\n\n## 适用场景\n\n- 制作课程教学课件\n- 备课PPT准备\n- 实验指导手册制作\n- 学期汇报演示\n- 学科竞赛展示\n- 学术报告演讲\n\n## 输入要求\n\n用户提供以下信息（如未提供使用默认值）：\n\n| 信息 | 说明 | 默认值 |\n|------|------|--------|\n| **课程主题** | 课程名称或内容主题 | 必填 |\n| **学科领域** | 数据科学/深度学习/Python/大数据等 | 自动判断 |\n| **课程类型** | 理论课/实验课/复习课/新课 | 理论课 |\n| **授课对象** | 本科生/研究生/培训学员 | 本科生 |\n| **页数要求** | 课件页数 | 15页 |\n| **特殊要求** | 代码演示/图文并茂/案例分析 | 无 |\n\n## 输出规范\n\n### PPT结构标准\n\n```\n封面 → 目录 → 内容章节 → 总结 → 作业/思考题 → AI标识\n```\n\n- **封面页**：课程名称 + 教师信息（广州华商学院/TJMtaotao）+ 日期\n- **目录页**：章节导航（3-5章）\n- **内容页**：每章3-5页，含详细要点\n- **总结页**：核心要点回顾\n- **作业页**：练习题目或思考题\n- **AI标识页**：本文由AI辅助创作\n\n### 样式标准\n\n| 元素 | 规范 |\n|------|------|\n| **主配色** | 蓝色科技风（#1E3A5F + #FFFFFF） |\n| **字体** | 思源黑体/微软雅黑 |\n| **封面风格** | 风格2（简洁专业） |\n| **代码高亮** | 等宽字体，语法高亮 |\n| **图片** | 3-5张无版权配图 |\n\n### AI生成标识（必须添加）\n\n每个PPT末尾添加统一的AI标识：\n\n```\n---\n本文由AI辅助创作 / 作者：TJMtaotao / 发表于：MEITUSTYLE\n```\n\n## 支持的学科领域\n\n### 核心理工科\n\n- **数据科学**：数据预处理、统计分析、数据可视化\n- **大数据技术**：Hadoop、Spark、Flink、数据湖\n- **Python编程**：基础语法、数据结构、算法\n- **深度学习**：神经网络、CNN、RNN、Transformer\n- **机器学习**：监督学习、无监督学习、集成学习\n- **数据可视化**：Echarts、Tableau、Python可视化\n\n### 课程模板库\n\n| 课程类型 | 模板结构 |\n|----------|----------|\n| **理论课** | 概念讲解 → 原理分析 → 实例演示 → 实践应用 |\n| **实验课** | 实验目的 → 环境搭建 → 代码实现 → 结果分析 |\n| **复习课** | 知识框架 → 要点回顾 → 例题精讲 → 练习巩固 |\n| **新课** | 导入案例 → 新知讲解 → 互动练习 → 总结作业 |\n\n## 内容检索要求\n\n当用户输入内容较少时，必须主动联网检索补充：\n\n1. 检索课程相关的最新行业应用案例\n2. 补充权威数据统计和研究发现\n3. 添加时效性内容（2025-2026年最新）\n4. 每个要点提供2-3句详细说明\n\n## 使用流程\n\n### 标准流程\n\n```\n用户：制作一份深度学习课程PPT\nAI：\n  📋 需求确认\n  - 课程：深度学习\n  - 类型：理论课\n  - 对象：本科生\n  - 页数：15页\n  \n  📚 正在检索相关资料...\n  🎨 正在设计PPT结构...\n  ✨ 正在生成PPT文件...\n  \n  ✅ 已生成：深度学习课程PPT.pptx\n```\n\n### 方法调用说明\n\n本Skill内部使用 `AdvancedPPTGeneratorV2` 类生成PPT，调用方法如下：\n\n| 方法 | 说明 | 参数 |\n|------|------|------|\n| `addCoverPage(subtitle)` | 封面页 | 副标题 |\n| `addCatalogPage(items)` | 目录页 | 章节列表数组 |\n| `addStepDetailPage(title, steps)` | 内容详情页 | 标题+步骤数组 |\n| `addCodePage(title, code)` | 代码示例页 | 标题+代码内容 |\n| `addChartAnalysisPage(title, chartCode, points)` | 图表分析页 | 标题+图表代码+分析要点 |\n| `addEndPage(text)` | 结尾页 | 结束语 |\n\n### 代码示例\n\n```javascript\nconst AdvancedPPTGeneratorV2 = require(\"./advanced-ppt-generator-v2\");\n\nconst generator = new AdvancedPPTGeneratorV2(\"课程主题\", \"education\");\n\ngenerator.addCoverPage(\"广州华商学院\");\ngenerator.addCatalogPage([\"第1章\", \"第2章\", \"第3章\"]);\ngenerator.addStepDetailPage(\"章节标题\", [\n  { title: \"知识点1\", content: \"详细说明...\" },\n  { title: \"知识点2\", content: \"详细说明...\" }\n]);\ngenerator.addCodePage(\"代码示例\", \"print('Hello')\");\ngenerator.addEndPage(\"感谢观看\");\n\ngenerator.save(\"/path/to/output.pptx\");\n```\n\n### 快速调用\n\n| 命令 | 说明 |\n|------|------|\n| `课程PPT [主题]` | 开始生成课程PPT |\n| `实验指导 [内容]` | 生成实验指导手册PPT |\n| `复习课件 [章节]` | 生成复习课PPT |\n| `修改封面` | 修改PPT封面信息 |\n\n## 设计规范\n\n### 排版规则\n\n| 元素 | 大小 | 说明 |\n|------|------|------|\n| 页面标题 | 36-44pt 粗体 | 课程名称 |\n| 章节标题 | 24-28pt 粗体 | 章节名 |\n| 正文要点 | 14-16pt | 主要内容 |\n| 代码块 | 13pt 等宽 | 代码示例 |\n| 注释 | 10-12pt 灰色 | 补充说明 |\n\n### 布局模式\n\n| 布局 | 适合内容 |\n|------|---------|\n| 左文右图 | 概念讲解 + 配图 |\n| 图标行列 | 多个知识点并列 |\n| 时间轴 | 发展历程/流程 |\n| 对比列 | 两种方案/技术对比 |\n| 代码演示 | 编程教学/实验 |\n| 图表展示 | 数据分析/统计 |\n\n### 禁止事项\n\n- ❌ 纯文字无视觉元素\n- ❌ 内容空洞不充实\n- ❌ 缺少代码演示（编程类课程）\n- ❌ 未添加AI生成标识\n- ❌ 布局呆板重复\n\n## 依赖工具\n\n```bash\n# PPT生成\nnpm install -g pptxgenjs\n\n# 格式转换\npip install \"markitdown[pptx]\" Pillow\n```\n\nFile v1.0.2:illustrated-ppt/SKILL.md\n\n---\nname: illustrated-ppt-generator\ndescription: 图文并茂PPT生成技能。使用MiniMax API生成匹配图片，将图片嵌入PPT实现图文并茂效果。支持商用、教学、演讲等多场景，自动保持图文对应关系。\nversion: 1.0.0\nauthor: TJMtaotao\ntags: [PPT, 图文并茂, 课程课件, 商业演示, MiniMax, AI生成]\n---\n\n# 图文并茂PPT生成技能\n\n## 功能概述\n\n将文字内容与AI生成的配图自动结合，生成图文并茂的专业PPT。适用于：\n- 课程课件制作（教育场景）\n- 商业演示PPT（商务场景）\n- 技术分享演讲（技术场景）\n- 产品介绍展示（营销场景）\n\n## 核心特性\n\n- **图文匹配**：根据文字内容生成对应的配图描述\n- **多场景适配**：教育/商务/技术/创意等多种风格\n- **批量生成**：一次生成多张配图，自动嵌入PPT\n- **蓝色科技风**：默认蓝色科技风格，统一视觉\n\n## 前置要求\n\n### 1. 安装依赖\n\n```bash\npip install python-pptx requests Pillow\n```\n\n### 2. 配置API Key\n\n```bash\nexport MINIMAX_API_KEY=\"your-api-key\"\n```\n\n获取地址：https://platform.minimaxi.com/\n\n## 使用方法\n\n### 命令行方式\n\n```bash\n# 基本用法\npython3 scripts/generate_illustrated_ppt.py \"课程主题\" --slides 10\n\n# 指定输出路径\npython3 scripts/generate_illustrated_ppt.py \"深度学习\" --output /path/to/output.pptx\n\n# 指定场景风格\npython3 scripts/generate_illustrated_ppt.py \"产品介绍\" --scene business\n\n# 批量生成\npython3 scripts/generate_illustrated_ppt.py \"课程名称\" --batch\n```\n\n### Python API\n\n```python\nfrom illustrated_ppt import IllustratedPPTGenerator\n\n# 初始化\ngenerator = IllustratedPPTGenerator(api_key=\"your-key\")\n\n# 生成PPT\nslides_content = [\n    {\"title\": \"封面\", \"type\": \"cover\", \"content\": \"课程标题\"},\n    {\"title\": \"目录\", \"type\": \"toc\", \"chapters\": [\"第1章\", \"第2章\"]},\n    {\"title\": \"内容页\", \"type\": \"content\", \"bullets\": [\"要点1\", \"要点2\"]},\n]\n\nresult = generator.generate(\n    topic=\"课程主题\",\n    slides=slides_content,\n    scene=\"education\",  # education/business/tech/creative\n    style=\"blue_tech\"   # blue_tech/clean/minimal\n)\n\nprint(f\"PPT已生成: {result['output_path']}\")\n```\n\n## 场景类型\n\n| 场景 | 风格 | 适用场景 |\n|------|------|----------|\n| education | 蓝色科技风 | 课程课件、培训教程 |\n| business | 专业商务风 | 商业演示、汇报汇报 |\n| tech | 技术简约风 | 技术分享、架构说明 |\n| creative | 创意活力风 | 产品介绍、营销推广 |\n\n## 输出格式\n\n生成的PPT包含：\n- 封面页（标题+副标题+机构信息）\n- 目录页（章节导航）\n- 内容页（左文右图布局）\n- 代码页（如需代码演示）\n- 总结页（要点回顾）\n- 结束页（AI标识）\n\n## 图文对应原则\n\n1. **标题匹配**：每页配图与页面标题主题一致\n2. **内容呼应**：图片内容反映页面要点\n3. **风格统一**：全篇保持一致的视觉风格\n4. **布局合理**：图片与文字比例适当\n\n## 示例\n\n### 深度学习课程PPT\n\n```python\nslides = [\n    {\"title\": \"深度学习基础课程\", \"type\": \"cover\"},\n    {\"title\": \"目录\", \"type\": \"toc\", \"chapters\": [\"神经网络\", \"CNN\", \"RNN\", \"Transformer\"]},\n    {\"title\": \"神经网络基础\", \"type\": \"content\", \"bullets\": [\"神经元模型\", \"激活函数\", \"损失函数\"]},\n    {\"title\": \"卷积神经网络 CNN\", \"type\": \"content\", \"bullets\": [\"卷积层\", \"池化层\", \"经典架构\"]},\n]\ngenerator.generate(topic=\"深度学习\", slides=slides, scene=\"education\")\n```\n\n## 故障排除\n\n| 问题 | 解决方案 |\n|------|----------|\n| API Key无效 | 检查MINIMAX_API_KEY环境变量 |\n| 图片生成失败 | 检查网络连接和API额度 |\n| PPT生成慢 | 减少slides数量或分批生成 |\n\nFile v1.0.2:open-slide/SKILL.md\n\n---\nname: open-slide\ndescription: Create, edit, preview, and export web-native slide decks with the open-slide React framework.\nmetadata: {\"openclaw\":{\"requires\":{\"bins\":[\"node\",\"python3\"],\"anyBins\":[\"pnpm\",\"npm\"]}}}\n---\n\n# open-slide - Slides as React Code\n\nopen-slide is a slide framework built for agents. You write React components on a fixed 1920×1080 canvas; the framework handles scaling, navigation, hot reload, present mode, and export. Every slide is a file — versioned, reviewable, yours.\n\nThis OpenClaw skill is an independent companion for the upstream open-slide framework at https://github.com/1weiho/open-slide. It does not vendor or replace open-slide; it guides agents to use the upstream framework and CLI.\n\n## When to Use This Skill\n\n- User wants to **create a new presentation/deck** (web-native output)\n- User mentions \"open-slide\" or \"slides as code\"\n- User wants to **edit or iterate** on an existing open-slide deck\n- User wants to **preview** slides or **export** to HTML/PDF\n- User wants to **scaffold** a new open-slide workspace\n- User wants to **apply inspector comments** to slides\n- User asks for \"slides as code\", \"React slides\", or a web-native presentation\n\nIf the user explicitly needs a `.pptx` file for PowerPoint compatibility, use a PowerPoint/PPTX workflow instead of open-slide.\n\n## Prerequisites\n\n- **Node.js** 18+ must be available.\n- **pnpm** or **npm** must be available.\n- **Python 3** must be available for PDF export.\n- **Python dependencies:** install from `{baseDir}/requirements.txt` when exporting.\n- **Browser binaries:** Playwright requires Chromium to be installed once.\n\nCheck availability before exporting:\n```bash\npython3 -m pip install -r {baseDir}/requirements.txt\npython3 -m playwright install chromium\n```\n\nCheck Node.js availability before starting:\n```bash\nnode --version\npnpm --version  # or: npm --version\n```\n\nIf Node.js, Python 3, and at least one package manager are not available, tell the user what is missing before continuing.\n\n---\n\n## Workflow 1: Init — Scaffold a Deck (First Time)\n\n```bash\n# Prefer pnpm when available; otherwise use npm/npx.\npnpm dlx @open-slide/cli init <deck-name>\n# or:\nnpx @open-slide/cli init <deck-name>\n\ncd <deck-name>\npnpm install  # or npm install\n```\n\nThis creates:\n```\n<deck-name>/\n├── slides/\n│   └── getting-started/\n│       └── index.tsx       # starter slide\n├── themes/                  # optional shared themes\n├── open-slide.config.ts     # framework config\n├── AGENTS.md                # agent rules\n└── package.json\n```\n\nKeep track of the deck path — all subsequent commands run from there.\n\n---\n\n## Workflow 2: Create — Author a New Deck\n\nBefore writing any code, **read the authoring reference** at `{baseDir}/references/authoring.md` for the file contract, canvas rules, vertical budget math, type scale, design system, and anti-patterns.\n\n### Step 1 — Pick a theme (if available)\n\nList files under `themes/` in the deck root. If theme markdown files exist, ask the user which theme to use (or \"no theme — design from scratch\"). Read the chosen theme file end-to-end — its palette, typography, and layout are now authoritative.\n\n### Step 2 — Clarify requirements\n\nBefore writing any code, lock in these decisions if not already provided. Ask users:\n\n1. **Aesthetic direction** — propose 3 visual directions tailored to the topic. Each should combine a vibe word + concrete visual cue (palette, typography, motif). Mark the best fit as \"(Recommended)\".\n2. **Page count** — 3–5 (short), 6–10 (standard), 11–20 (deep dive), or custom.\n3. **Text density** — minimal (one line / big number), light (heading + 2–3 bullets), standard (heading + 4–5 bullets), dense (multi-column).\n4. **Motion** — static (no motion), subtle (fades/entrance only), rich (keyframes, staggered reveals).\n\nOnly skip a question when the user's original request already gave an unambiguous answer — and restate your assumption so they can correct it.\n\n### Step 3 — Pick a slide id\n\nKebab-case, short, descriptive. Examples: `rust-intro`, `q2-roadmap`, `team-offsite-2026`. Check `slides/` to avoid collisions.\n\n### Step 4 — Plan the structure\n\nSketch the slide as a list of page roles:\n\n| Role | Purpose |\n|------|---------|\n| Cover | Title + subtitle, strong visual |\n| Agenda | What's coming (3–5 items) |\n| Section divider | Big label between chapters |\n| Content | Heading + 2–5 bullets OR heading + one visual |\n| Big number | One statistic the size of the canvas |\n| Quote | Pull-quote with attribution |\n| Comparison | Two-column before/after or A vs B |\n| Closing | CTA, thanks, contact |\n\n**One idea per page.** If you're tempted to put two, split them.\n\nShare the outline with the user for quick confirmation before writing code.\n\n### Step 5 — Write `slides/<id>/index.tsx`\n\nFollow the authoring reference in `{baseDir}/references/authoring.md`. Key points:\n\n- **Declare `export const design: DesignSystem = { … }`** at the top — this makes the slide tweakable from the Design panel.\n- **Use `var(--osd-X)` CSS variables** for visual properties (bg, text, accent, fonts, sizes).\n- **Do the vertical budget math** for every page before writing — sum element heights + gaps + 2×padding ≤ 1080px.\n- **One concept per page**, max ~40 words of body text.\n- **Use `<ImagePlaceholder>`** from `@open-slide/core` only when a real image the user must supply is genuinely needed (product screenshots, team photos, data charts) — not for decoration.\n- **Only use `react` and standard web APIs.** No extra npm packages.\n\n### Step 6 — Self-review\n\nRun the checklist in `{baseDir}/references/authoring.md` before finishing.\n\n### Step 7 — Hand off\n\nWhen the environment can run a browser, automatically create a visual artifact:\n1. Run the PDF export script at `{baseDir}/scripts/export_pdf.py`.\n2. Report the final `.pdf` absolute path to the user.\n3. Ask whether they want the source code or the static HTML build (`dist/`) zipped for hosting.\n---\n\n## Workflow 3: Edit — Iterate on Slides\n\n### Direct Code Edits\n\nOpen `slides/<id>/index.tsx` and modify the React code. This is the most common workflow — you're just editing code. Always re-verify the vertical budget after changes.\n\n### Apply Inspector Comments\n\nWhen the user has used the inspector in the browser and has `@slide-comment` markers in the source:\n\n1. Scan all files under `slides/` for `@slide-comment` markers\n2. For each marker, read the surrounding code and the comment text\n3. Edit the code to satisfy the comment\n4. Remove the `@slide-comment` marker after applying\n5. If a comment is ambiguous, leave the marker in place and explain why\n\n---\n\n## Workflow 4: Dev — Preview with Hot Reload\n\n```bash\ncd <deck-path>\npnpm dev  # starts on http://localhost:5173\n```\n\nThe dev server gives you:\n- **Live preview** — changes hot-reload instantly\n- **Inspector** — press `i` to toggle; click any element to see/edit properties\n- **Assets panel** — drag-drop images, search svgl logos\n- **Present mode** — fullscreen with keyboard navigation\n- **Design panel** — tweak palette, fonts, type scale, radius live\n\nTo visually verify a slide, use an appropriate browser tool to open `http://localhost:5173` and take a screenshot.\n\n---\n\n## Workflow 5: Export — Build & Share\n\n```bash\ncd <deck-path>\npnpm build       # static build to dist/\n```\n\n### PDF Export (headless)\n\nopen-slide currently has no built-in CLI PDF command. Use the bundled export script, which enters **Present mode** before capturing to get clean slides without editor chrome:\n\n```bash\n# Start dev server first\ncd <deck-path>\npnpm dev\n\n# In another shell, export to PDF\npython3 {baseDir}/scripts/export_pdf.py \\\n  --url http://localhost:5173/s/<slide-id> \\\n  --pages <page-count> \\\n  --out /tmp/deck.pdf\n```\n\n**⚠️ Critical: always use Present mode.** The editor view (`/s/<id>`) includes navbars and sidebars. The export script presses `F` to enter Present mode and hides remaining controls via CSS before screenshotting. Never screenshot the editor view directly for PDF output.\n\n### Share with the user\n\n- Once the PDF or ZIP file is generated, send a message to the user and attach the file using the appropriate tool or attachment mechanism for your current communication channel. Ensure you provide the absolute file path so the system can locate and upload it.\n- For **Static HTML:** The `dist/` folder can be zipped and sent, or deployed to any static host (Vercel, Cloudflare Pages, Netlify, etc.)\n\n---\n\n## Workflow 6: Theme — Create Reusable Themes\n\nIf the user plans multiple decks with a consistent look:\n\n1. Create `themes/<id>.md` with palette, typography, voice, and layout vocabulary\n2. Reference the theme name when creating future decks\n3. See the Themes section in `{baseDir}/references/authoring.md` for the template\n\n---\n\n## Quick Reference: Page Patterns\n\n### Cover Slide\n```tsx\nconst Cover: Page = () => (\n  <div style={{\n    ...fill, background: 'var(--osd-bg)', color: 'var(--osd-text)',\n    display: 'flex', flexDirection: 'column',\n    justifyContent: 'center', padding: '0 160px',\n  }}>\n    <h1 style={{\n      fontFamily: 'var(--osd-font-display)',\n      fontSize: 'var(--osd-size-hero)',\n      fontWeight: 900, lineHeight: 1.05,\n    }}>\n      Title\n    </h1>\n    <p style={{ fontSize: 'var(--osd-size-body)', color: muted }}>\n      Subtitle\n    </p>\n  </div>\n);\n```\n\n### Content Slide\n```tsx\nconst Content: Page = () => (\n  <div style={{\n    ...fill, background: 'var(--osd-bg)', color: 'var(--osd-text)', padding: 120,\n  }}>\n    <h2 style={{\n      fontFamily: 'var(--osd-font-display)', fontSize: 80, fontWeight: 800, margin: 0,\n    }}>\n      Section Title\n    </h2>\n    <ul style={{\n      fontSize: 'var(--osd-size-body)', lineHeight: 1.6, marginTop: 64, paddingLeft: 48,\n    }}>\n      <li>One clear point per line</li>\n      <li>Keep to 3–5 bullets</li>\n      <li>Let the space breathe</li>\n    </ul>\n  </div>\n);\n```\n\n## Error Recovery\n\n- **Build errors:** Read the error output — it usually points to the exact line. Fix the TSX and the dev server hot-reloads.\n- **Missing `@open-slide/core` types:** Make sure `pnpm install` ran successfully.\n- **Port 5173 in use:** The dev server auto-increments to the next free port. Always check the actual port printed in the dev server output.\n- **Blank slide:** Verify the component fills `width: '100%'` and `height: '100%'` on its root div.\n- **Git identity error on init:** Set `git config --global user.email` and `git config --global user.name`, then init the git repo manually.\n- **Blank PDFs from Playwright:** `page.pdf()` does not render CSS backgrounds by default, so dark-themed slides appear blank. Use the screenshot-based export script (`scripts/export_pdf.py`) instead — it takes PNG screenshots and converts them to PDF via Pillow, which preserves backgrounds correctly.\n- **PDFs include editor navbars:** Never screenshot the editor view (`/s/<id>`) directly for PDF output — it includes sidebars, thumbnail rails, and toolbar. Always enter **Present mode** first (press `F`), then hide remaining controls with CSS injection before capturing.\n\nFile v1.0.2:SKILL.md\n\n---\nname: ppt-production-suite\ndescription: PPT制作完整技能套件。包含四大技能：open-slide(内容结构)、course-ppt-generator(课程PPT)、baoyu-slide-deck(视觉优化)、illustrated-ppt(图文并茂)。支持商用、教学、技术等多场景，图片与文字精准对齐。\nversion: 1.0.0\nauthor: TJMtaotao\ntags: [PPT, 演示文稿, 图文并茂, 课程课件, 商用演示, AI生成]\n---\n\n# PPT制作完整技能套件\n\n## 包含技能\n\n| 技能 | 用途 | 输入 |\n|------|------|------|\n| open-slide | 打磨内容结构和逻辑 | 主题描述 |\n| course-ppt-generator | 生成.pptx课程课件 | 内容结构 |\n| baoyu-slide-deck | 视觉增强优化 | .pptx文件 |\n| illustrated-ppt | 图文并茂AI配图 | 文字内容 |\n\n## 三阶段流水线\n\n```\nopen-slide → course-ppt-generator → baoyu-slide-deck/illustrated-ppt\n   内容结构          课程PPT              视觉增强\n```\n\n## 使用场景\n\n| 场景 | 推荐技能组合 |\n|------|--------------|\n| 课程课件 | open-slide + course-ppt-generator |\n| 商用演示 | course-ppt-generator + illustrated-ppt |\n| 技术分享 | open-slide + course-ppt-generator + baoyu-slide-deck |\n| 图文并茂 | course-ppt-generator + illustrated-ppt |\n\n## 场景类型\n\n- **education**: 蓝色科技风，适合课程课件\n- **business**: 专业商务风，适合商业演示\n- **tech**: 技术简约风，适合技术分享\n- **creative**: 创意活力风，适合产品介绍\n\n## 安装\n\n将skills目录解压到 `/root/.openclaw/workspace/skills/`\n\nFile v1.0.2:illustrated-ppt/README.md\n\n# 图文并茂PPT生成技能\n\n## 快速开始\n\n### 1. 环境准备\n\n```bash\n# 安装依赖\npip install python-pptx requests Pillow\n\n# 配置API Key\nexport MINIMAX_API_KEY=\"your-api-key\"\n```\n\n### 2. 基本使用\n\n```bash\n# 使用示例生成深度学习课程PPT\ncd illustrated-ppt/templates\npython examples.py dl\n```\n\n### 3. 自定义PPT\n\n```python\nfrom scripts.illustrated_ppt import IllustratedPPTGenerator\n\n# 初始化\ngenerator = IllustratedPPTGenerator(api_key=\"your-key\")\n\n# 定义内容\nslides = [\n    {\"type\": \"cover\", \"title\": \"我的PPT\", \"content\": \"副标题\"},\n    {\"type\": \"toc\", \"title\": \"目录\", \"chapters\": [\"第1章\", \"第2章\"]},\n    {\"type\": \"content\", \"title\": \"内容页\", \"bullets\": [\"要点1\", \"要点2\"]},\n    {\"type\": \"closing\", \"title\": \"谢谢观看\", \"content\": \"作者信息\"},\n]\n\n# 生成\nresult = generator.generate(topic=\"我的PPT\", slides=slides, scene=\"education\")\n```\n\n## 场景类型\n\n| 场景 | 说明 | 适用场景 |\n|------|------|----------|\n| education | 蓝色科技风 | 课程课件、培训教程 |\n| business | 专业商务风 | 商业演示、汇报汇报 |\n| tech | 技术简约风 | 技术分享、架构说明 |\n| creative | 创意活力风 | 产品介绍、营销推广 |\n\n## 幻灯片类型\n\n| 类型 | 说明 | 必需字段 |\n|------|------|----------|\n| cover | 封面页 | title, content |\n| toc | 目录页 | title, chapters[] |\n| content | 内容页 | title, bullets[] |\n| code | 代码页 | title, content |\n| summary | 总结页 | title, bullets[] |\n| homework | 作业页 | title, bullets[] |\n| closing | 结束页 | title, content |\n\n## 多场景适用示例\n\n### 教育场景 - 课程课件\n\n```python\nslides = [\n    {\"type\": \"cover\", \"title\": \"Python程序设计\", \"content\": \"本科课程\"},\n    {\"type\": \"toc\", \"title\": \"目录\", \"chapters\": [\"基础语法\", \"数据结构\", \"函数\", \"面向对象\"]},\n    {\"type\": \"content\", \"title\": \"基础语法\", \"bullets\": [\"变量与类型\", \"运算符\", \"控制流程\"]},\n    {\"type\": \"code\", \"title\": \"代码示例\", \"content\": \"print('Hello World')\"},\n    {\"type\": \"summary\", \"title\": \"小结\", \"bullets\": [\"掌握基础语法\", \"理解数据类型\"]},\n]\n```\n\n### 商业场景 - 产品发布\n\n```python\nslides = [\n    {\"type\": \"cover\", \"title\": \"产品发布会\", \"content\": \"2026新品发布\"},\n    {\"type\": \"toc\", \"title\": \"议程\", \"chapters\": [\"产品介绍\", \"核心优势\", \"市场分析\"]},\n    {\"type\": \"content\", \"title\": \"产品介绍\", \"bullets\": [\"产品背景\", \"核心功能\"]},\n    {\"type\": \"summary\", \"title\": \"核心要点\", \"bullets\": [\"技术创新\", \"市场领先\"]},\n]\n```\n\n### 技术场景 - 架构分享\n\n```python\nslides = [\n    {\"type\": \"cover\", \"title\": \"微服务架构\", \"content\": \"云原生技术分享\"},\n    {\"type\": \"toc\", \"title\": \"大纲\", \"chapters\": [\"架构设计\", \"服务治理\", \"实战案例\"]},\n    {\"type\": \"code\", \"title\": \"Dockerfile示例\", \"content\": \"FROM python:3.9...\"},\n    {\"type\": \"content\", \"title\": \"服务治理\", \"bullets\": [\"负载均衡\", \"熔断机制\", \"限流策略\"]},\n]\n```\n\n## 图文对应原则\n\n1. **标题匹配**：配图主题与页面标题一致\n2. **内容呼应**：图片内容反映页面核心要点\n3. **风格统一**：全篇保持一致的视觉风格\n4. **布局合理**：图片与文字比例适当（通常各占50%）\n\nFile v1.0.2:baoyu-slide-deck/_meta.json\n\n{\n  \"ownerId\": \"kn7csrrndw79hpke5d0gsnx93d82k67r\",\n  \"slug\": \"baoyu-slide-deck\",\n  \"version\": \"1.103.2\",\n  \"publishedAt\": 1776809036455\n}\n\nFile v1.0.2:open-slide/_meta.json\n\n{\n  \"ownerId\": \"kn71fkq6xsxfkkjef9ttvs6xbx8658dh\",\n  \"slug\": \"open-slide\",\n  \"version\": \"1.0.1\",\n  \"publishedAt\": 1777964485896\n}\n\nFile v1.0.2:_meta.json\n\n{\n  \"ownerId\": \"kn74enp95c2yjf245vch1e6fxn86eb1v\",\n  \"slug\": \"course-ppt-generator\",\n  \"version\": \"1.0.2\",\n  \"publishedAt\": 1778479199017\n}\n\nFile v1.0.2:baoyu-slide-deck/references/analysis-framework.md\n\n# Presentation Analysis Framework\n\nDeep content analysis for effective slide deck creation.\n\n## 1. Message Hierarchy\n\nIdentify the core message structure before designing slides.\n\n### Core Message (One Sentence)\n- What is the single most important takeaway?\n- If the audience remembers only one thing, what should it be?\n- Can you state it in ≤15 words?\n\n### Supporting Points (3-5 Maximum)\n- What evidence supports the core message?\n- What sub-topics must be covered?\n- Prioritize by audience relevance, not source order\n\n### Call-to-Action\n- What should the audience DO after viewing?\n- Is it clear, specific, and achievable?\n- Where does it appear (slide position)?\n\n## 2. Audience Decision Matrix\n\n| Question | Analysis |\n|----------|----------|\n| Who is the primary audience? | [Role, expertise level, relationship to topic] |\n| What do they currently believe? | [Existing knowledge, assumptions, biases] |\n| What decision do we want them to make? | [Specific action or conclusion] |\n| What barriers exist? | [Objections, concerns, missing information] |\n| What evidence will convince them? | [Data types, credibility sources, emotional hooks] |\n\n### Audience Adaptation\n\n| Audience Type | Content Focus | Visual Treatment |\n|---------------|---------------|------------------|\n| Executives | Outcomes, ROI, strategic impact | High-level, clean, data highlights |\n| Technical | Architecture, implementation, specs | Detailed diagrams, code, schematics |\n| General | Benefits, stories, relatability | Visual metaphors, simple charts |\n| Investors | Market size, traction, team | Growth charts, milestones, comparisons |\n| Learners | Step-by-step, examples, practice | Progressive reveals, exercises |\n\n## 3. Visual Opportunity Map\n\nIdentify which content benefits from visualization.\n\n### Content-to-Visual Mapping\n\n| Content Type | Visual Treatment | Example |\n|--------------|------------------|---------|\n| Comparisons | Side-by-side, before/after | Feature comparison table |\n| Processes | Flow diagrams, numbered steps | Workflow illustration |\n| Hierarchies | Org charts, pyramids, trees | Organizational structure |\n| Timelines | Horizontal/vertical timelines | Project milestones |\n| Statistics | Charts, highlighted numbers | Key metrics with context |\n| Concepts | Icons, metaphors, illustrations | Abstract idea visualization |\n| Relationships | Venn diagrams, networks | Ecosystem or dependencies |\n| Lists | Structured grids, icon rows | Feature bullets with icons |\n\n### Visual Priority\n\nRate each piece of content:\n- **Must Visualize**: Complex data, key differentiators, memorable moments\n- **Should Visualize**: Supporting evidence, secondary points\n- **Text Only**: Simple statements, transitions, minor details\n\n## 4. Presentation Flow\n\nStructure for impact and retention.\n\n### Opening (First 2-3 Slides)\n\n| Element | Purpose |\n|---------|---------|\n| Hook | Capture attention (surprising stat, question, story) |\n| Context | Why this matters now |\n| Preview | What audience will learn/gain |\n\n### Middle (Content Slides)\n\n| Pattern | When to Use |\n|---------|-------------|\n| Problem → Solution | Introducing new products/ideas |\n| Situation → Complication → Resolution | Complex business cases |\n| What → Why → How | Educational content |\n| Past → Present → Future | Transformation stories |\n| Claim → Evidence → Implication | Data-driven arguments |\n\n### Closing (Final 2-3 Slides)\n\n| Element | Purpose |\n|---------|---------|\n| Synthesis | Tie back to core message |\n| Call-to-Action | Clear next steps |\n| Memorable Close | Resonant quote, image, or statement |\n\n### Transitions\n\n- Each slide should answer: \"What comes next?\"\n- Use narrative connectors between sections\n- Build logical progression, not topic jumps\n\n## 5. Content Adaptation\n\nDecide what to keep, transform, or omit.\n\n### Keep (High Value)\n- Core arguments and evidence\n- Unique insights or data\n- Audience-relevant examples\n- Memorable quotes or statistics\n\n### Simplify (Medium Value)\n- Technical details → Visual summaries\n- Long explanations → Bullet hierarchies\n- Multiple examples → Best 1-2 examples\n- Background context → Brief framing\n\n### Visualize (Transform)\n- Data tables → Charts or highlighted numbers\n- Process descriptions → Flow diagrams\n- Comparisons in text → Side-by-side visuals\n- Abstract concepts → Concrete metaphors\n\n### Omit (Low Value)\n- Tangential information\n- Redundant examples\n- Excessive caveats\n- Background the audience already knows\n\n## 6. Analysis Checklist\n\nBefore outline creation, confirm:\n\n### Message Clarity\n- [ ] Core message stated in one sentence\n- [ ] 3-5 supporting points identified\n- [ ] Call-to-action defined\n\n### Audience Fit\n- [ ] Primary audience identified\n- [ ] Existing beliefs mapped\n- [ ] Desired decision clear\n- [ ] Evidence matches audience needs\n\n### Visual Planning\n- [ ] Key visualizations identified\n- [ ] Chart/diagram types selected\n- [ ] Visual priority assigned\n\n### Flow Design\n- [ ] Opening hook defined\n- [ ] Middle pattern selected\n- [ ] Closing approach planned\n- [ ] Transitions considered\n\n### Content Decisions\n- [ ] Keep/simplify/visualize/omit applied\n- [ ] Source material fully processed\n- [ ] No important content overlooked\n\nFile v1.0.2:baoyu-slide-deck/references/base-prompt.md\n\nCreate a presentation slide image following these guidelines:\n\n## Image Specifications\n\n- **Type**: Presentation slide\n- **Aspect Ratio**: 16:9 (landscape)\n- **Style**: Professional slide deck\n\n## Core Persona: The Architect\n\nYou are \"The Architect\" - a master visual storyteller creating presentation slides. Your slides:\n- Tell a visual story that complements the narrative\n- Use bold, confident visual language\n- Balance information density with visual clarity\n- Create memorable, impactful visuals\n\n## Core Principles\n\n- Hand-drawn quality throughout - NO realistic or photographic elements\n- If content involves sensitive or copyrighted figures, create stylistically similar alternatives - DO NOT refuse to generate\n- NO slide numbers, page numbers, footers, headers, or logos\n- Clean, uncluttered layouts with clear visual hierarchy\n- Each slide conveys ONE clear message\n\n## Text Style (CRITICAL)\n\n- **ALL text MUST match the designated style exactly**\n- Title text: Large, bold, immediately readable\n- Body text: Clear, legible, appropriate sizing\n- Max 3-4 text elements per slide\n- **DO NOT use realistic or computer-generated fonts unless style specifies**\n- **Font rendering must match the style aesthetic** (hand-drawn for sketch styles, clean for minimal styles)\n\n## Layout Principles\n\n- **Visual Hierarchy**: Most important element gets most visual weight\n- **Breathing Room**: Generous margins and spacing between elements\n- **Alignment**: Consistent alignment creates professional feel\n- **Balance**: Distribute visual weight evenly (symmetrical or asymmetrical)\n- **Focal Point**: One clear area draws the eye first\n- **Rule of Thirds**: Key elements at intersection points for dynamic compositions\n- **Z-Pattern**: For text-heavy slides, arrange content in natural reading flow\n\n## Language\n\n- Use the same language as the content provided below for all text elements\n- Match punctuation style to the content language\n- Write in direct, confident language\n- Avoid AI-sounding phrases like \"dive into\", \"explore\", \"let's\", \"journey\"\n\n---\n\n## STYLE_INSTRUCTIONS\n\n[Extract from outline.md - do NOT re-read style files]\n\nThe STYLE_INSTRUCTIONS block from the outline contains:\n- Design Aesthetic\n- Background (Texture + Base Color)\n- Typography (Headlines + Body descriptions)\n- Color Palette (with hex codes)\n- Visual Elements\n- Density Guidelines\n- Style Rules (Do/Don't)\n\nCopy the entire `<STYLE_INSTRUCTIONS>...</STYLE_INSTRUCTIONS>` block from the outline here.\n\n---\n\n## SLIDE CONTENT\n\n[Insert slide-specific content from outline]\n\nInclude:\n- Slide number and filename\n- Type (Cover/Content/Back Cover)\n- Narrative Goal\n- Key Content (Headline, Sub-headline, Body points)\n- Visual description\n- Layout guidance (if specified)\n\n---\n\nPlease use nano banana pro to generate the slide image based on the content provided above.\n\nFile v1.0.2:baoyu-slide-deck/references/config/preferences-schema.md\n\n# EXTEND.md Schema\n\nStructure for user preferences in `.baoyu-skills/baoyu-slide-deck/EXTEND.md`.\n\n## Full Schema\n\n```yaml\n# Slide Deck Preferences\n\n## Defaults\nstyle: blueprint              # Preset name OR \"custom\"\naudience: general             # beginners | intermediate | experts | executives | general\nlanguage: auto                # auto | en | zh | ja | etc.\nreview: true                  # true = review outline before generation\npreferred_image_backend: auto # auto | ask | <backend-id>\n\n## Custom Dimensions (only when style: custom)\ndimensions:\n  texture: clean              # clean | grid | organic | pixel | paper\n  mood: professional          # professional | warm | cool | vibrant | dark | neutral\n  typography: geometric       # geometric | humanist | handwritten | editorial | technical\n  density: balanced           # minimal | balanced | dense\n\n## Custom Styles (optional)\ncustom_styles:\n  my-style:\n    texture: organic\n    mood: warm\n    typography: humanist\n    density: minimal\n    description: \"My custom warm and friendly style\"\n```\n\n## Field Descriptions\n\n### Defaults\n\n| Field | Type | Default | Description |\n|-------|------|---------|-------------|\n| `style` | string | `blueprint` | Preset name, `custom`, or custom style name |\n| `audience` | string | `general` | Default target audience |\n| `language` | string | `auto` | Output language (auto = detect from input) |\n| `review` | boolean | `true` | Show outline review before generation |\n| `preferred_image_backend` | string | `auto` | Image backend selection. `auto` = prefer runtime-native tool, fall back to the only installed backend, ask if multiple non-native are present. `ask` = always confirm on every run. `<backend-id>` (e.g., `codex-imagegen`, `baoyu-imagine`, `image_generate`) = pin this backend when available; fall back to `auto` when it isn't. Absent = `auto`. Resolution logic is documented in `SKILL.md`'s `## Image Generation Tools` section. |\n\n### Custom Dimensions\n\nOnly used when `style: custom`. Defines dimension values directly.\n\n| Field | Options | Default |\n|-------|---------|---------|\n| `texture` | clean, grid, organic, pixel, paper | clean |\n| `mood` | professional, warm, cool, vibrant, dark, neutral | professional |\n| `typography` | geometric, humanist, handwritten, editorial, technical | geometric |\n| `density` | minimal, balanced, dense | balanced |\n\n### Custom Styles\n\nDefine reusable custom dimension combinations.\n\n```yaml\ncustom_styles:\n  style-name:\n    texture: <texture>\n    mood: <mood>\n    typography: <typography>\n    density: <density>\n    description: \"Optional description\"\n```\n\nThen use with: `/baoyu-slide-deck content.md --style style-name`\n\n## Minimal Examples\n\n### Just change default style\n\n```yaml\nstyle: sketch-notes\n```\n\n### Prefer no reviews\n\n```yaml\nreview: false\n```\n\n### Custom default dimensions\n\n```yaml\nstyle: custom\ndimensions:\n  texture: organic\n  mood: professional\n  typography: humanist\n  density: minimal\n```\n\n### Define reusable custom style\n\n```yaml\ncustom_styles:\n  brand-style:\n    texture: clean\n    mood: vibrant\n    typography: editorial\n    density: balanced\n    description: \"Company brand style\"\n```\n\n## File Locations\n\nPriority order (first found wins):\n\n1. `.baoyu-skills/baoyu-slide-deck/EXTEND.md` (project)\n2. `$HOME/.baoyu-skills/baoyu-slide-deck/EXTEND.md` (user)\n\n## First-Time Setup\n\nWhen no EXTEND.md exists, the skill prompts for initial preferences:\n\n1. Preferred style (preset or custom)\n2. Default audience\n3. Language preference\n4. Review preference\n5. Save location (project or user)\n\nCreates EXTEND.md at chosen location.\n\nArchive v1.0.1: 45 files, 83437 bytes\n\nFiles: SKILL.md (3624b), skills/baoyu-slide-deck/_meta.json (137b), skills/baoyu-slide-deck/references/analysis-framework.md (5241b), skills/baoyu-slide-deck/references/base-prompt.md (2844b), skills/baoyu-slide-deck/references/config/preferences-schema.md (3607b), skills/baoyu-slide-deck/references/confirmation.md (4854b), skills/baoyu-slide-deck/references/content-rules.md (2986b), skills/baoyu-slide-deck/references/design-guidelines.md (7581b), skills/baoyu-slide-deck/references/dimensions/density.md (3126b), skills/baoyu-slide-deck/references/dimensions/mood.md (4106b), skills/baoyu-slide-deck/references/dimensions/presets.md (5133b), skills/baoyu-slide-deck/references/dimensions/texture.md (1938b), skills/baoyu-slide-deck/references/dimensions/typography.md (4062b), skills/baoyu-slide-deck/references/layouts.md (3086b), skills/baoyu-slide-deck/references/modification-guide.md (2467b), skills/baoyu-slide-deck/references/outline-template.md (7599b), skills/baoyu-slide-deck/references/styles/blueprint.md (2277b), skills/baoyu-slide-deck/references/styles/bold-editorial.md (2409b), skills/baoyu-slide-deck/references/styles/chalkboard.md (2512b), skills/baoyu-slide-deck/references/styles/corporate.md (2346b), skills/baoyu-slide-deck/references/styles/dark-atmospheric.md (2435b), skills/baoyu-slide-deck/references/styles/editorial-infographic.md (2450b), skills/baoyu-slide-deck/references/styles/fantasy-animation.md (2474b), skills/baoyu-slide-deck/references/styles/hand-drawn-edu.md (2905b), skills/baoyu-slide-deck/references/styles/intuition-machine.md (2870b), skills/baoyu-slide-deck/references/styles/minimal.md (2036b), skills/baoyu-slide-deck/references/styles/notion.md (2133b), skills/baoyu-slide-deck/references/styles/pixel-art.md (2446b), skills/baoyu-slide-deck/references/styles/scientific.md (2448b), skills/baoyu-slide-deck/references/styles/sketch-notes.md (2463b), skills/baoyu-slide-deck/references/styles/vector-illustration.md (2646b), skills/baoyu-slide-deck/references/styles/vintage.md (2499b), skills/baoyu-slide-deck/references/styles/watercolor.md (2349b), skills/baoyu-slide-deck/scripts/merge-to-pdf.ts (3222b), skills/baoyu-slide-deck/scripts/merge-to-pptx.ts (3918b), skills/baoyu-slide-deck/SKILL.md (18204b), skills/course-ppt-generator/references/使用指南.md (1813b), skills/course-ppt-generator/scripts/generate_course_ppt.py (7319b), skills/course-ppt-generator/SKILL.md (6089b), skills/open-slide/_meta.json (129b), skills/open-slide/references/authoring.md (8492b), skills/open-slide/requirements.txt (30b), skills/open-slide/scripts/export_pdf.py (6077b), skills/open-slide/SKILL.md (11184b), _meta.json (139b)\n\nFile v1.0.1:SKILL.md\n\n---\nname: three-stage-ppt-pipeline\ndescription: 三阶段PPT制作流水线技能。先用open-slide打磨内容结构和逻辑，再用course-ppt-generator生成课程PPT，最后用baoyu-slide-deck做视觉优化。支持商用、教学等多种场景的PPT制作。\nversion: 1.0.0\nauthor: TJMtaotao\ntags: [PPT, 演示文稿, 课件, 教学, 商业演示, 三阶段]\n---\n\n# 三阶段PPT制作流水线\n\n## 技能概述\n\n本技能整合三个专业工具，形成完整的PPT制作链路：\n\n```\n内容结构打磨 (open-slide)\n    ↓\n课程PPT生成 (course-ppt-generator)\n    ↓\n视觉优化增强 (baoyu-slide-deck)\n```\n\n## 适用场景\n\n| 场景 | 工具组合 |\n|------|----------|\n| 课程课件制作 | open-slide → course-ppt-generator |\n| 商业演示PPT | open-slide → course-ppt-generator → baoyu-slide-deck |\n| 教学演示 | open-slide → course-ppt-generator |\n| 专业技术分享 | open-slide → course-ppt-generator → baoyu-slide-deck |\n\n## 三阶段说明\n\n### 阶段1：open-slide（内容与结构打磨）\n\n使用React组件方式创建幻灯片，专注于内容逻辑和页面结构。\n\n**命令：**\n```bash\ncd <deck-path>\npnpm dev   # 启动预览\npnpm build # 构建静态文件\n```\n\n**输出：** React代码格式的幻灯片（.tsx文件）\n\n### 阶段2：course-ppt-generator（生成.pptx课程课件）\n\n基于阶段1的内容结构，生成标准.pptx格式的课程课件。\n\n**使用方式：** Node.js脚本调用 `course-ppt-generator/scripts/generate_course_ppt.py`\n\n**Python API：**\n```python\nfrom generate_course_ppt import generate_course_ppt\nresult = generate_course_ppt(\"深度学习\", \"人工智能\", \"理论课\", 15)\n```\n\n**输出：** .pptx 课程课件（含封面/目录/正文/总结/AI标识）\n\n### 阶段3：baoyu-slide-deck（视觉优化）\n\n将阶段2生成的PPT进行视觉风格增强，输出专业级幻灯片图像。\n\n**命令：**\n```bash\nbun scripts/merge-to-pptx.ts <slide-deck-dir>\nbun scripts/merge-to-pdf.ts <slide-deck-dir>\n```\n\n**支持17种视觉风格：**\n- 教育类：`sketch-notes` `chalkboard` `hand-drawn-edu`\n- 商业类：`corporate` `minimal` `bold-editorial`\n- 技术类：`blueprint` `intuition-machine` `scientific`\n- 创意类：`vector-illustration` `fantasy-animation`\n\n## 技能结构\n\n```\nthree-stage-ppt-pipeline/\n├── SKILL.md              ← 本文件\n├── open-slide/           ← 阶段1：内容结构打磨\n│   ├── SKILL.md\n│   ├── scripts/\n│   └── references/\n├── course-ppt-generator/  ← 阶段2：PPT生成\n│   ├── SKILL.md\n│   ├── scripts/\n│   └── references/\n└── baoyu-slide-deck/      ← 阶段3：视觉优化\n    ├── SKILL.md\n    ├── scripts/\n    └── references/\n```\n\n## 使用方法\n\n### 完整流程示例\n\n```javascript\n// 阶段1完成后，生成课程PPT\nnode course-ppt-generator/scripts/gen.js \"深度学习\"\n\n// 阶段2完成后，使用baoyu-slide-deck优化\nbun baoyu-slide-deck/scripts/merge-to-pptx.ts ./output\n```\n\n### 快速调用\n\n| 命令 | 说明 |\n|------|------|\n| `PPT三阶段 [主题]` | 启动完整三阶段流程 |\n| `课程PPT [主题]` | 仅生成课程PPT |\n| `视觉优化 [文件]` | 仅做视觉优化 |\n\n## 样式规范\n\n- **主配色：** 蓝色科技风（#1E3A5F + #FFFFFF）\n- **字体：** 思源黑体/微软雅黑\n- **代码高亮：** 等宽字体，语法高亮\n- **AI标识：** 末尾添加\"本文由AI辅助创作 / 作者：TJMtaotao / 发表于：MEITUSTYLE\"\n\n## 依赖工具\n\n- Node.js 18+\n- Python 3\n- pptxgenjs（课程PPT生成）\n- bun 或 npx（视觉优化）\n\nFile v1.0.1:skills/baoyu-slide-deck/SKILL.md\n\n---\nname: baoyu-slide-deck\ndescription: 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\".\nversion: 1.56.2\nmetadata:\n  openclaw:\n    homepage: https://github.com/JimLiu/baoyu-skills#baoyu-slide-deck\n    requires:\n      anyBins:\n        - bun\n        - npx\n---\n\n# Slide Deck Generator\n\nTransform content into professional slide deck images. The deck is designed for **reading and sharing** (self-explanatory slides, logical scroll flow, social-media-friendly) rather than live presentation — that assumption drives every layout and density decision below.\n\n## User Input Tools\n\nWhen this skill prompts the user, follow this tool-selection rule (priority order):\n\n1. **Prefer built-in user-input tools** exposed by the current agent runtime — e.g., `AskUserQuestion`, `request_user_input`, `clarify`, `ask_user`, or any equivalent.\n2. **Fallback**: if no such tool exists, emit a numbered plain-text message and ask the user to reply with the chosen number/answer for each question.\n3. **Batching**: if the tool supports multiple questions per call, combine all applicable questions into a single call; if only single-question, ask them one at a time in priority order.\n\nConcrete `AskUserQuestion` references below are examples — substitute the local equivalent in other runtimes.\n\n## Image Generation Tools\n\nWhen this skill needs to render an image, resolve the backend in this order:\n\n1. **Current-request override** — if the user names a specific backend in the current message, use it.\n2. **Saved preference** — if `EXTEND.md` sets `preferred_image_backend` to a backend available right now, use it.\n3. **Auto-select** (when the preference is `auto`, unset, or the pinned backend isn't available):\n   - If the current runtime exposes a native image tool (e.g., Codex `imagegen`, Hermes `image_generate`), use it. Runtime-native tools are preferred by default — agents that know their own tool inventory should surface the native one here.\n   - Otherwise, if exactly one non-native backend is installed (e.g., `baoyu-imagine`), use it.\n   - Otherwise (multiple non-native backends with no runtime-native tool), ask the user once — batch with any other initial questions.\n4. **If none are available**, tell the user and ask how to proceed.\n\nSetting `preferred_image_backend: ask` forces the step-3 prompt every run regardless of available backends. Users change the pinned backend via the `## Changing Preferences` section below.\n\n**Prompt file requirement (hard)**: write each image's full, final prompt to a standalone file under `prompts/` (naming: `NN-slide-[slug].md`) BEFORE invoking any backend. The file is the reproducibility record and lets you switch backends without regenerating prompts.\n\nConcrete tool names (`imagegen`, `image_generate`, `baoyu-imagine`) above are examples — substitute the local equivalents under the same rule.\n\n## Confirmation Policy\n\nDefault behavior: **confirm before generation**.\n\n- Treat explicit skill invocation, a file path, matched signals/presets, and `EXTEND.md` defaults as **recommendation inputs only**. None of them authorizes skipping confirmation.\n- Do **not** start Step 3 or later until the user completes Step 2.\n- Skip confirmation only when the current request explicitly says to do so, for example: \"直接生成\", \"不用确认\", \"跳过确认\", \"按默认出幻灯片\", or equivalent wording.\n- If confirmation is skipped explicitly, state the assumed style / audience / slide-count / language / backend in the next user-facing update before generating.\n\n## Language\n\nRespond in the user's language across questions, progress reports, error messages, and the completion summary. Keep technical tokens (style names, file paths, code) in English.\n\n## Script Directory\n\n`{baseDir}` = this SKILL.md's directory. Resolve `${BUN_X}`: prefer `bun`; else `npx -y bun`; else suggest `brew install oven-sh/bun/bun`.\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\n## Options\n\n| Option | Description |\n|--------|-------------|\n| `--style <name>` | Preset (see Presets below), `custom`, or custom style name |\n| `--audience <type>` | beginners / intermediate / experts / executives / general |\n| `--lang <code>` | Output language (en, zh, ja, ...) |\n| `--slides <N>` | Target slide count (8-25 recommended, max 30) |\n| `--ref <files...>` | Reference images applied per slide (style / palette / composition / subject) |\n| `--outline-only` | Stop after outline |\n| `--prompts-only` | Stop after prompts (skip image generation) |\n| `--images-only` | Skip to Step 7; requires existing `prompts/` |\n| `--regenerate <N>` | Regenerate specific slide(s): `3` or `2,5,8` |\n\n## Style System\n\n17 presets covering technical / educational / lifestyle / editorial use cases. Every preset is a combination of four dimensions (texture / mood / typography / density). If the user picks \"Custom dimensions\" in Round 1, Round 2 of the confirmation asks one question per dimension — options and verbatim copy live in `references/confirmation.md`.\n\n### Presets (17)\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| `hand-drawn-edu` | organic + macaron + handwritten + balanced | Educational diagrams, process explainers |\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\nPer-preset specs: `references/styles/<preset>.md`. Preset → dimension mapping: `references/dimensions/presets.md`.\n\n### Dimensions (when \"Custom dimensions\" picked)\n\n| Dimension | Options | Purpose |\n|-----------|---------|---------|\n| **Texture** | clean, grid, organic, pixel, paper | Background treatment |\n| **Mood** | professional, warm, cool, vibrant, dark, neutral, macaron | Color temperature |\n| **Typography** | geometric, humanist, handwritten, editorial, technical | Headline/body styling |\n| **Density** | minimal, balanced, dense | Information per slide |\n\nFull per-dimension specs: `references/dimensions/*.md`.\n\n### Auto-Selection\n\nMatch content signals to a preset. Pick the first row whose signal keywords appear in the source; fall back to `blueprint` if nothing matches.\n\n| Signals in source | Preset |\n|-------------------|--------|\n| tutorial, learn, education, guide, beginner | `sketch-notes` |\n| hand-drawn, infographic, diagram, process, onboarding | `hand-drawn-edu` |\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\n### Slide Count Heuristic\n\n| Source length | Recommended 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## Reference Images\n\nUsers may supply reference images to guide style, palette, layout, or subject.\n\n**Intake**: Accept via `--ref <files...>` or when the user provides file paths / pastes images in conversation.\n- File path → copy to `{slide-deck-dir}/refs/NN-ref-{slug}.{ext}`\n- Pasted image with no path → ask for the path, or extract style traits verbally as a text fallback\n\n**Usage modes** (per reference):\n\n| Usage | Effect |\n|-------|--------|\n| `direct` | Pass the file to the backend as a reference image for each slide |\n| `style` | Extract style traits (line treatment, texture, mood) and append to every slide's prompt body |\n| `palette` | Extract hex colors and append to every slide's prompt body |\n\nRecord refs in each slide's prompt frontmatter:\n\n```yaml\nreferences:\n  - ref_id: 01\n    filename: 01-ref-brand.png\n    usage: direct\n```\n\nAt generation time, verify files exist. If `usage: direct` and the backend accepts refs (e.g., `baoyu-imagine --ref`), pass the file on every slide. Otherwise embed extracted `style`/`palette` traits in the prompt text.\n\n## File Layout\n\n```\nslide-deck/{topic-slug}/\n├── source-{slug}.{ext}\n├── outline.md\n├── prompts/NN-slide-{slug}.md\n├── NN-slide-{slug}.png\n├── {topic-slug}.pptx\n└── {topic-slug}.pdf\n```\n\n**Slug**: 2-4 words, kebab-case, extracted from topic. \"Introduction to Machine Learning\" → `intro-machine-learning`.\n\n**Backup rule** (applies across steps): if a file about to be written already exists, rename it to `<name>-backup-YYYYMMDD-HHMMSS.<ext>` before writing the new one. This protects user edits and enables rollback.\n\n## Workflow\n\nCopy this checklist and check off items as you complete them:\n\n```\n- [ ] Step 1: Setup & analyze\n- [ ] Step 2: Confirmation ⚠️ REQUIRED (Round 1; Round 2 only if \"Custom dimensions\")\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 8: Merge to PPTX/PDF\n- [ ] Step 9: Output summary\n```\n\n### Step 1: Setup & Analyze\n\n**1.1 Load EXTEND.md** — check these paths in order; first hit wins:\n\n| Path | Scope |\n|------|-------|\n| `.baoyu-skills/baoyu-slide-deck/EXTEND.md` | Project |\n| `${XDG_CONFIG_HOME:-$HOME/.config}/baoyu-skills/baoyu-slide-deck/EXTEND.md` | XDG |\n| `$HOME/.baoyu-skills/baoyu-slide-deck/EXTEND.md` | User home |\n\nIf found, read, parse, and print a summary (style / audience / language / review). If not, proceed with defaults — first-time setup is not blocking for this skill. Schema: `references/config/preferences-schema.md`.\n\n**1.2 Analyze content** — follow `references/analysis-framework.md`: classify content, detect language, note signals for style selection, estimate slide count from length (see the **Slide Count Heuristic** in Style System above), generate topic slug. Save source as `source.md` (honor backup rule if one exists).\n\n**1.3 Check existing output** ⚠️ REQUIRED before Step 2. If `slide-deck/{topic-slug}/` exists, ask how to proceed — four options (regenerate outline / regenerate images / backup and regenerate / exit), verbatim copy in `references/confirmation.md`.\n\nSave findings to `analysis.md`: topic, audience, signals, recommended style and slide count, language detection.\n\n### Step 2: Confirmation ⚠️ REQUIRED\n\n**Hard gate**: this step is mandatory per the [Confirmation Policy](#confirmation-policy) — Steps 3+ cannot start until the user confirms here (or explicitly opts out with \"直接生成\" / equivalent wording in the current request).\n\n**Round 1 (always)** — batch five questions in one `AskUserQuestion` call: style, audience, slide count, review-outline?, review-prompts?. Verbatim options in `references/confirmation.md`.\n\nSummary displayed before the questions:\n- Content type + topic\n- Detected language\n- Recommended style (based on signals)\n- Recommended slide count (based on length)\n\n**Round 2 (only if \"Custom dimensions\" in Round 1)** — batch four questions: texture, mood, typography, density. Verbatim options in `references/confirmation.md`. The four answers replace the preset.\n\n**After confirmation**: update `analysis.md` with final choices and store `skip_outline_review` / `skip_prompt_review` flags from Q4/Q5.\n\n### Step 3: Generate Outline\n\nResolve style: preset → `references/styles/{preset}.md`; custom dimensions → combine files in `references/dimensions/`. Build `STYLE_INSTRUCTIONS` from the resolved style, apply confirmed audience + language + slide count, follow `references/outline-template.md`, and save as `outline.md`.\n\nStop here if `--outline-only`. Skip Step 4 if `skip_outline_review`.\n\n### Step 4: Review Outline (Conditional)\n\nDisplay a slide-by-slide table (`# | Title | Type | Layout`) along with total count and resolved style. Ask: proceed / edit outline first / regenerate — verbatim in `references/confirmation.md`.\n\nOn \"Edit outline first\", tell the user to edit `outline.md` and ask again when ready. On \"Regenerate outline\", return to Step 3.\n\n### Step 5: Generate Prompts\n\nFor each slide in outline:\n1. Read `references/base-prompt.md`\n2. Extract `STYLE_INSTRUCTIONS` from the outline (don't re-read the style file)\n3. Add the slide's content\n4. If a `Layout:` is specified, include guidance from `references/layouts.md`\n5. Save to `prompts/NN-slide-{slug}.md` (backup rule applies)\n\nStop here if `--prompts-only`. Skip Step 6 if `skip_prompt_review`.\n\n### Step 6: Review Prompts (Conditional)\n\nDisplay the prompts index (`# | Filename | Slide Title`) and ask: proceed / edit prompts first / regenerate — verbatim in `references/confirmation.md`. Branches mirror Step 4.\n\n### Step 7: Generate Images\n\n1. Resolve the image backend via the Image Generation Tools rule at the top — ask once if multiple are installed.\n2. Confirm every `prompts/NN-slide-{slug}.md` exists (hard requirement; prompt files are the reproducibility record regardless of backend).\n3. Session ID: `slides-{topic-slug}-{timestamp}` — pass to the backend only if it supports sessions.\n4. For each slide: generate sequentially, reusing the session ID. Backup rule applies to PNG files. Report progress as `Generated X/N`. Auto-retry once on failure before reporting an error.\n\n`--regenerate N` jumps to this step for the named slides only. `--images-only` starts here with existing prompts.\n\n### Step 8: Merge\n\n```bash\n${BUN_X} {baseDir}/scripts/merge-to-pptx.ts <slide-deck-dir>\n${BUN_X} {baseDir}/scripts/merge-to-pdf.ts <slide-deck-dir>\n```\n\n### Step 9: Summary\n\n```\nSlide Deck Complete!\nTopic: [topic]\nStyle: [preset or \"custom: texture+mood+typography+density\"]\nLocation: [directory]\nSlides: N\n\n- 01-slide-cover.png\n- ...\n- NN-slide-back-cover.png\n\nOutline: outline.md\nPPTX: {topic-slug}.pptx\nPDF: {topic-slug}.pdf\n```\n\n## Slide Modification\n\n| Action | How |\n|--------|-----|\n| Edit | Update `prompts/NN-slide-{slug}.md` **first**, then `--regenerate N` |\n| Add | Create new prompt at position, generate image, renumber subsequent `NN` (slugs unchanged), update `outline.md`, re-merge |\n| Delete | Remove PNG + prompt, renumber subsequent, update `outline.md`, re-merge |\n\nAlways update the prompt file before regenerating the image — this keeps the prompts directory as the source of truth and makes changes reproducible. Only `NN` changes on renumber; slugs stay stable so references remain valid.\n\nSee `references/modification-guide.md` for full details.\n\n## References\n\n| File | Content |\n|------|---------|\n| `references/confirmation.md` | Verbatim AskUserQuestion option copy for every confirmation |\n| `references/analysis-framework.md` | Content analysis framework |\n| `references/outline-template.md` | Outline structure |\n| `references/base-prompt.md` | Base prompt body for image generation |\n| `references/layouts.md` | Layout options |\n| `references/design-guidelines.md` | Audience, typography, color selection |\n| `references/content-rules.md` | Content guidelines |\n| `references/modification-guide.md` | Edit/add/delete workflows |\n| `references/styles/<preset>.md` | Per-preset specifications |\n| `references/dimensions/*.md` | Per-dimension specifications |\n| `references/config/preferences-schema.md` | EXTEND.md schema |\n\n## Notes\n\n- Image generation takes ~10-30s per slide; report progress between them.\n- For sensitive public figures, prefer stylized alternatives to avoid likeness issues.\n- Maintain visual consistency via the session ID when the backend supports it.\n\n## Changing Preferences\n\nEXTEND.md lives at the first matching path listed in Step 1.1. Two ways to change it:\n\n- **Edit directly** — open EXTEND.md and change fields. Full schema: `references/config/preferences-schema.md`.\n- **Common one-line edits**:\n  - `preferred_image_backend: auto` — default; runtime-native tool wins, falls back to the only installed backend, asks only if multiple non-native are present.\n  - `preferred_image_backend: codex-imagegen` — pin to Codex's built-in.\n  - `preferred_image_backend: baoyu-imagine` — pin to the baoyu-imagine skill.\n  - `preferred_image_backend: ask` — confirm backend every run.\n  - `preferred_style: blueprint`, `preferred_audience: experts`, `language: zh`.\n\nFile v1.0.1:skills/course-ppt-generator/SKILL.md\n\n---\nname: course-ppt-generator\ndescription: 高校教师课程PPT生成技能。当老师需要制作教学内容课件、备课PPT、教学演示文稿、实验指导手册时触发。支持数据科学、大数据技术、Python编程、深度学习、机器学习、数据可视化等多个学科领域。触发词：课程PPT、制作课件、备课PPT、教学演示、实验指导。\nversion: 1.0.0\nauthor: TJMtaotao\ntags: [教育, PPT, 课件, 教学, 高校, 课程]\n---\n\n# 课程PPT生成技能\n\n## 角色定义\n\n你是一位专业的高校课程PPT设计师，深谙教学内容表达和视觉设计。能够根据老师的需求，生成符合教学规范、结构清晰、视觉美观的课程演示文稿。\n\n## 适用场景\n\n- 制作课程教学课件\n- 备课PPT准备\n- 实验指导手册制作\n- 学期汇报演示\n- 学科竞赛展示\n- 学术报告演讲\n\n## 输入要求\n\n用户提供以下信息（如未提供使用默认值）：\n\n| 信息 | 说明 | 默认值 |\n|------|------|--------|\n| **课程主题** | 课程名称或内容主题 | 必填 |\n| **学科领域** | 数据科学/深度学习/Python/大数据等 | 自动判断 |\n| **课程类型** | 理论课/实验课/复习课/新课 | 理论课 |\n| **授课对象** | 本科生/研究生/培训学员 | 本科生 |\n| **页数要求** | 课件页数 | 15页 |\n| **特殊要求** | 代码演示/图文并茂/案例分析 | 无 |\n\n## 输出规范\n\n### PPT结构标准\n\n```\n封面 → 目录 → 内容章节 → 总结 → 作业/思考题 → AI标识\n```\n\n- **封面页**：课程名称 + 教师信息（广州华商学院/TJMtaotao）+ 日期\n- **目录页**：章节导航（3-5章）\n- **内容页**：每章3-5页，含详细要点\n- **总结页**：核心要点回顾\n- **作业页**：练习题目或思考题\n- **AI标识页**：本文由AI辅助创作\n\n### 样式标准\n\n| 元素 | 规范 |\n|------|------|\n| **主配色** | 蓝色科技风（#1E3A5F + #FFFFFF） |\n| **字体** | 思源黑体/微软雅黑 |\n| **封面风格** | 风格2（简洁专业） |\n| **代码高亮** | 等宽字体，语法高亮 |\n| **图片** | 3-5张无版权配图 |\n\n### AI生成标识（必须添加）\n\n每个PPT末尾添加统一的AI标识：\n\n```\n---\n本文由AI辅助创作 / 作者：TJMtaotao / 发表于：MEITUSTYLE\n```\n\n## 支持的学科领域\n\n### 核心理工科\n\n- **数据科学**：数据预处理、统计分析、数据可视化\n- **大数据技术**：Hadoop、Spark、Flink、数据湖\n- **Python编程**：基础语法、数据结构、算法\n- **深度学习**：神经网络、CNN、RNN、Transformer\n- **机器学习**：监督学习、无监督学习、集成学习\n- **数据可视化**：Echarts、Tableau、Python可视化\n\n### 课程模板库\n\n| 课程类型 | 模板结构 |\n|----------|----------|\n| **理论课** | 概念讲解 → 原理分析 → 实例演示 → 实践应用 |\n| **实验课** | 实验目的 → 环境搭建 → 代码实现 → 结果分析 |\n| **复习课** | 知识框架 → 要点回顾 → 例题精讲 → 练习巩固 |\n| **新课** | 导入案例 → 新知讲解 → 互动练习 → 总结作业 |\n\n## 内容检索要求\n\n当用户输入内容较少时，必须主动联网检索补充：\n\n1. 检索课程相关的最新行业应用案例\n2. 补充权威数据统计和研究发现\n3. 添加时效性内容（2025-2026年最新）\n4. 每个要点提供2-3句详细说明\n\n## 使用流程\n\n### 标准流程\n\n```\n用户：制作一份深度学习课程PPT\nAI：\n  📋 需求确认\n  - 课程：深度学习\n  - 类型：理论课\n  - 对象：本科生\n  - 页数：15页\n  \n  📚 正在检索相关资料...\n  🎨 正在设计PPT结构...\n  ✨ 正在生成PPT文件...\n  \n  ✅ 已生成：深度学习课程PPT.pptx\n```\n\n### 方法调用说明\n\n本Skill内部使用 `AdvancedPPTGeneratorV2` 类生成PPT，调用方法如下：\n\n| 方法 | 说明 | 参数 |\n|------|------|------|\n| `addCoverPage(subtitle)` | 封面页 | 副标题 |\n| `addCatalogPage(items)` | 目录页 | 章节列表数组 |\n| `addStepDetailPage(title, steps)` | 内容详情页 | 标题+步骤数组 |\n| `addCodePage(title, code)` | 代码示例页 | 标题+代码内容 |\n| `addChartAnalysisPage(title, chartCode, points)` | 图表分析页 | 标题+图表代码+分析要点 |\n| `addEndPage(text)` | 结尾页 | 结束语 |\n\n### 代码示例\n\n```javascript\nconst AdvancedPPTGeneratorV2 = require(\"./advanced-ppt-generator-v2\");\n\nconst generator = new AdvancedPPTGeneratorV2(\"课程主题\", \"education\");\n\ngenerator.addCoverPage(\"广州华商学院\");\ngenerator.addCatalogPage([\"第1章\", \"第2章\", \"第3章\"]);\ngenerator.addStepDetailPage(\"章节标题\", [\n  { title: \"知识点1\", content: \"详细说明...\" },\n  { title: \"知识点2\", content: \"详细说明...\" }\n]);\ngenerator.addCodePage(\"代码示例\", \"print('Hello')\");\ngenerator.addEndPage(\"感谢观看\");\n\ngenerator.save(\"/path/to/output.pptx\");\n```\n\n### 快速调用\n\n| 命令 | 说明 |\n|------|------|\n| `课程PPT [主题]` | 开始生成课程PPT |\n| `实验指导 [内容]` | 生成实验指导手册PPT |\n| `复习课件 [章节]` | 生成复习课PPT |\n| `修改封面` | 修改PPT封面信息 |\n\n## 设计规范\n\n### 排版规则\n\n| 元素 | 大小 | 说明 |\n|------|------|------|\n| 页面标题 | 36-44pt 粗体 | 课程名称 |\n| 章节标题 | 24-28pt 粗体 | 章节名 |\n| 正文要点 | 14-16pt | 主要内容 |\n| 代码块 | 13pt 等宽 | 代码示例 |\n| 注释 | 10-12pt 灰色 | 补充说明 |\n\n### 布局模式\n\n| 布局 | 适合内容 |\n|------|---------|\n| 左文右图 | 概念讲解 + 配图 |\n| 图标行列 | 多个知识点并列 |\n| 时间轴 | 发展历程/流程 |\n| 对比列 | 两种方案/技术对比 |\n| 代码演示 | 编程教学/实验 |\n| 图表展示 | 数据分析/统计 |\n\n### 禁止事项\n\n- ❌ 纯文字无视觉元素\n- ❌ 内容空洞不充实\n- ❌ 缺少代码演示（编程类课程）\n- ❌ 未添加AI生成标识\n- ❌ 布局呆板重复\n\n## 依赖工具\n\n```bash\n# PPT生成\nnpm install -g pptxgenjs\n\n# 格式转换\npip install \"markitdown[pptx]\" Pillow\n```\n\nFile v1.0.1:skills/open-slide/SKILL.md\n\n---\nname: open-slide\ndescription: Create, edit, preview, and export web-native slide decks with the open-slide React framework.\nmetadata: {\"openclaw\":{\"requires\":{\"bins\":[\"node\",\"python3\"],\"anyBins\":[\"pnpm\",\"npm\"]}}}\n---\n\n# open-slide - Slides as React Code\n\nopen-slide is a slide framework built for agents. You write React components on a fixed 1920×1080 canvas; the framework handles scaling, navigation, hot reload, present mode, and export. Every slide is a file — versioned, reviewable, yours.\n\nThis OpenClaw skill is an independent companion for the upstream open-slide framework at https://github.com/1weiho/open-slide. It does not vendor or replace open-slide; it guides agents to use the upstream framework and CLI.\n\n## When to Use This Skill\n\n- User wants to **create a new presentation/deck** (web-native output)\n- User mentions \"open-slide\" or \"slides as code\"\n- User wants to **edit or iterate** on an existing open-slide deck\n- User wants to **preview** slides or **export** to HTML/PDF\n- User wants to **scaffold** a new open-slide workspace\n- User wants to **apply inspector comments** to slides\n- User asks for \"slides as code\", \"React slides\", or a web-native presentation\n\nIf the user explicitly needs a `.pptx` file for PowerPoint compatibility, use a PowerPoint/PPTX workflow instead of open-slide.\n\n## Prerequisites\n\n- **Node.js** 18+ must be available.\n- **pnpm** or **npm** must be available.\n- **Python 3** must be available for PDF export.\n- **Python dependencies:** install from `{baseDir}/requirements.txt` when exporting.\n- **Browser binaries:** Playwright requires Chromium to be installed once.\n\nCheck availability before exporting:\n```bash\npython3 -m pip install -r {baseDir}/requirements.txt\npython3 -m playwright install chromium\n```\n\nCheck Node.js availability before starting:\n```bash\nnode --version\npnpm --version  # or: npm --version\n```\n\nIf Node.js, Python 3, and at least one package manager are not available, tell the user what is missing before continuing.\n\n---\n\n## Workflow 1: Init — Scaffold a Deck (First Time)\n\n```bash\n# Prefer pnpm when available; otherwise use npm/npx.\npnpm dlx @open-slide/cli init <deck-name>\n# or:\nnpx @open-slide/cli init <deck-name>\n\ncd <deck-name>\npnpm install  # or npm install\n```\n\nThis creates:\n```\n<deck-name>/\n├── slides/\n│   └── getting-started/\n│       └── index.tsx       # starter slide\n├── themes/                  # optional shared themes\n├── open-slide.config.ts     # framework config\n├── AGENTS.md                # agent rules\n└── package.json\n```\n\nKeep track of the deck path — all subsequent commands run from there.\n\n---\n\n## Workflow 2: Create — Author a New Deck\n\nBefore writing any code, **read the authoring reference** at `{baseDir}/references/authoring.md` for the file contract, canvas rules, vertical budget math, type scale, design system, and anti-patterns.\n\n### Step 1 — Pick a theme (if available)\n\nList files under `themes/` in the deck root. If theme markdown files exist, ask the user which theme to use (or \"no theme — design from scratch\"). Read the chosen theme file end-to-end — its palette, typography, and layout are now authoritative.\n\n### Step 2 — Clarify requirements\n\nBefore writing any code, lock in these decisions if not already provided. Ask users:\n\n1. **Aesthetic direction** — propose 3 visual directions tailored to the topic. Each should combine a vibe word + concrete visual cue (palette, typography, motif). Mark the best fit as \"(Recommended)\".\n2. **Page count** — 3–5 (short), 6–10 (standard), 11–20 (deep dive), or custom.\n3. **Text density** — minimal (one line / big number), light (heading + 2–3 bullets), standard (heading + 4–5 bullets), dense (multi-column).\n4. **Motion** — static (no motion), subtle (fades/entrance only), rich (keyframes, staggered reveals).\n\nOnly skip a question when the user's original request already gave an unambiguous answer — and restate your assumption so they can correct it.\n\n### Step 3 — Pick a slide id\n\nKebab-case, short, descriptive. Examples: `rust-intro`, `q2-roadmap`, `team-offsite-2026`. Check `slides/` to avoid collisions.\n\n### Step 4 — Plan the structure\n\nSketch the slide as a list of page roles:\n\n| Role | Purpose |\n|------|---------|\n| Cover | Title + subtitle, strong visual |\n| Agenda | What's coming (3–5 items) |\n| Section divider | Big label between chapters |\n| Content | Heading + 2–5 bullets OR heading + one visual |\n| Big number | One statistic the size of the canvas |\n| Quote | Pull-quote with attribution |\n| Comparison | Two-column before/after or A vs B |\n| Closing | CTA, thanks, contact |\n\n**One idea per page.** If you're tempted to put two, split them.\n\nShare the outline with the user for quick confirmation before writing code.\n\n### Step 5 — Write `slides/<id>/index.tsx`\n\nFollow the authoring reference in `{baseDir}/references/authoring.md`. Key points:\n\n- **Declare `export const design: DesignSystem = { … }`** at the top — this makes the slide tweakable from the Design panel.\n- **Use `var(--osd-X)` CSS variables** for visual properties (bg, text, accent, fonts, sizes).\n- **Do the vertical budget math** for every page before writing — sum element heights + gaps + 2×padding ≤ 1080px.\n- **One concept per page**, max ~40 words of body text.\n- **Use `<ImagePlaceholder>`** from `@open-slide/core` only when a real image the user must supply is genuinely needed (product screenshots, team photos, data charts) — not for decoration.\n- **Only use `react` and standard web APIs.** No extra npm packages.\n\n### Step 6 — Self-review\n\nRun the checklist in `{baseDir}/references/authoring.md` before finishing.\n\n### Step 7 — Hand off\n\nWhen the environment can run a browser, automatically create a visual artifact:\n1. Run the PDF export script at `{baseDir}/scripts/export_pdf.py`.\n2. Report the final `.pdf` absolute path to the user.\n3. Ask whether they want the source code or the static HTML build (`dist/`) zipped for hosting.\n---\n\n## Workflow 3: Edit — Iterate on Slides\n\n### Direct Code Edits\n\nOpen `slides/<id>/index.tsx` and modify the React code. This is the most common workflow — you're just editing code. Always re-verify the vertical budget after changes.\n\n### Apply Inspector Comments\n\nWhen the user has used the inspector in the browser and has `@slide-comment` markers in the source:\n\n1. Scan all files under `slides/` for `@slide-comment` markers\n2. For each marker, read the surrounding code and the comment text\n3. Edit the code to satisfy the comment\n4. Remove the `@slide-comment` marker after applying\n5. If a comment is ambiguous, leave the marker in place and explain why\n\n---\n\n## Workflow 4: Dev — Preview with Hot Reload\n\n```bash\ncd <deck-path>\npnpm dev  # starts on http://localhost:5173\n```\n\nThe dev server gives you:\n- **Live preview** — changes hot-reload instantly\n- **Inspector** — press `i` to toggle; click any element to see/edit properties\n- **Assets panel** — drag-drop images, search svgl logos\n- **Present mode** — fullscreen with keyboard navigation\n- **Design panel** — tweak palette, fonts, type scale, radius live\n\nTo visually verify a slide, use an appropriate browser tool to open `http://localhost:5173` and take a screenshot.\n\n---\n\n## Workflow 5: Export — Build & Share\n\n```bash\ncd <deck-path>\npnpm build       # static build to dist/\n```\n\n### PDF Export (headless)\n\nopen-slide currently has no built-in CLI PDF command. Use the bundled export script, which enters **Present mode** before capturing to get clean slides without editor chrome:\n\n```bash\n# Start dev server first\ncd <deck-path>\npnpm dev\n\n# In another shell, export to PDF\npython3 {baseDir}/scripts/export_pdf.py \\\n  --url http://localhost:5173/s/<slide-id> \\\n  --pages <page-count> \\\n  --out /tmp/deck.pdf\n```\n\n**⚠️ Critical: always use Present mode.** The editor view (`/s/<id>`) includes navbars and sidebars. The export script presses `F` to enter Present mode and hides remaining controls via CSS before screenshotting. Never screenshot the editor view directly for PDF output.\n\n### Share with the user\n\n- Once the PDF or ZIP file is generated, send a message to the user and attach the file using the appropriate tool or attachment mechanism for your current communication channel. Ensure you provide the absolute file path so the system can locate and upload it.\n- For **Static HTML:** The `dist/` folder can be zipped and sent, or deployed to any static host (Vercel, Cloudflare Pages, Netlify, etc.)\n\n---\n\n## Workflow 6: Theme — Create Reusable Themes\n\nIf the user plans multiple decks with a consistent look:\n\n1. Create `themes/<id>.md` with palette, typography, voice, and layout vocabulary\n2. Reference the theme name when creating future decks\n3. See the Themes section in `{baseDir}/references/authoring.md` for the template\n\n---\n\n## Quick Reference: Page Patterns\n\n### Cover Slide\n```tsx\nconst Cover: Page = () => (\n  <div style={{\n    ...fill, background: 'var(--osd-bg)', color: 'var(--osd-text)',\n    display: 'flex', flexDirection: 'column',\n    justifyContent: 'center', padding: '0 160px',\n  }}>\n    <h1 style={{\n      fontFamily: 'var(--osd-font-display)',\n      fontSize: 'var(--osd-size-hero)',\n      fontWeight: 900, lineHeight: 1.05,\n    }}>\n      Title\n    </h1>\n    <p style={{ fontSize: 'var(--osd-size-body)', color: muted }}>\n      Subtitle\n    </p>\n  </div>\n);\n```\n\n### Content Slide\n```tsx\nconst Content: Page = () => (\n  <div style={{\n    ...fill, background: 'var(--osd-bg)', color: 'var(--osd-text)', padding: 120,\n  }}>\n    <h2 style={{\n      fontFamily: 'var(--osd-font-display)', fontSize: 80, fontWeight: 800, margin: 0,\n    }}>\n      Section Title\n    </h2>\n    <ul style={{\n      fontSize: 'var(--osd-size-body)', lineHeight: 1.6, marginTop: 64, paddingLeft: 48,\n    }}>\n      <li>One clear point per line</li>\n      <li>Keep to 3–5 bullets</li>\n      <li>Let the space breathe</li>\n    </ul>\n  </div>\n);\n```\n\n## Error Recovery\n\n- **Build errors:** Read the error output — it usually points to the exact line. Fix the TSX and the dev server hot-reloads.\n- **Missing `@open-slide/core` types:** Make sure `pnpm install` ran successfully.\n- **Port 5173 in use:** The dev server auto-increments to the next free port. Always check the actual port printed in the dev server output.\n- **Blank slide:** Verify the component fills `width: '100%'` and `height: '100%'` on its root div.\n- **Git identity error on init:** Set `git config --global user.email` and `git config --global user.name`, then init the git repo manually.\n- **Blank PDFs from Playwright:** `page.pdf()` does not render CSS backgrounds by default, so dark-themed slides appear blank. Use the screenshot-based export script (`scripts/export_pdf.py`) instead — it takes PNG screenshots and converts them to PDF via Pillow, which preserves backgrounds correctly.\n- **PDFs include editor navbars:** Never screenshot the editor view (`/s/<id>`) directly for PDF output — it includes sidebars, thumbnail rails, and toolbar. Always enter **Present mode** first (press `F`), then hide remaining controls with CSS injection before capturing.\n\nFile v1.0.1:skills/baoyu-slide-deck/_meta.json\n\n{\n  \"ownerId\": \"kn7csrrndw79hpke5d0gsnx93d82k67r\",\n  \"slug\": \"baoyu-slide-deck\",\n  \"version\": \"1.103.2\",\n  \"publishedAt\": 1776809036455\n}\n\nFile v1.0.1:skills/open-slide/_meta.json\n\n{\n  \"ownerId\": \"kn71fkq6xsxfkkjef9ttvs6xbx8658dh\",\n  \"slug\": \"open-slide\",\n  \"version\": \"1.0.1\",\n  \"publishedAt\": 1777964485896\n}\n\nFile v1.0.1:_meta.json\n\n{\n  \"ownerId\": \"kn74enp95c2yjf245vch1e6fxn86eb1v\",\n  \"slug\": \"course-ppt-generator\",\n  \"version\": \"1.0.1\",\n  \"publishedAt\": 1778466710511\n}\n\nFile v1.0.1:skills/baoyu-slide-deck/references/analysis-framework.md\n\n# Presentation Analysis Framework\n\nDeep content analysis for effective slide deck creation.\n\n## 1. Message Hierarchy\n\nIdentify the core message structure before designing slides.\n\n### Core Message (One Sentence)\n- What is the single most important takeaway?\n- If the audience remembers only one thing, what should it be?\n- Can you state it in ≤15 words?\n\n### Supporting Points (3-5 Maximum)\n- What evidence supports the core message?\n- What sub-topics must be covered?\n- Prioritize by audience relevance, not source order\n\n### Call-to-Action\n- What should the audience DO after viewing?\n- Is it clear, specific, and achievable?\n- Where does it appear (slide position)?\n\n## 2. Audience Decision Matrix\n\n| Question | Analysis |\n|----------|----------|\n| Who is the primary audience? | [Role, expertise level, relationship to topic] |\n| What do they currently believe? | [Existing knowledge, assumptions, biases] |\n| What decision do we want them to make? | [Specific action or conclusion] |\n| What barriers exist? | [Objections, concerns, missing information] |\n| What evidence will convince them? | [Data types, credibility sources, emotional hooks] |\n\n### Audience Adaptation\n\n| Audience Type | Content Focus | Visual Treatment |\n|---------------|---------------|------------------|\n| Executives | Outcomes, ROI, strategic impact | High-level, clean, data highlights |\n| Technical | Architecture, implementation, specs | Detailed diagrams, code, schematics |\n| General | Benefits, stories, relatability | Visual metaphors, simple charts |\n| Investors | Market size, traction, team | Growth charts, milestones, comparisons |\n| Learners | Step-by-step, examples, practice | Progressive reveals, exercises |\n\n## 3. Visual Opportunity Map\n\nIdentify which content benefits from visualization.\n\n### Content-to-Visual Mapping\n\n| Content Type | Visual Treatment | Example |\n|--------------|------------------|---------|\n| Comparisons | Side-by-side, before/after | Feature comparison table |\n| Processes | Flow diagrams, numbered steps | Workflow illustration |\n| Hierarchies | Org charts, pyramids, trees | Organizational structure |\n| Timelines | Horizontal/vertical timelines | Project milestones |\n| Statistics | Charts, highlighted numbers | Key metrics with context |\n| Concepts | Icons, metaphors, illustrations | Abstract idea visualization |\n| Relationships | Venn diagrams, networks | Ecosystem or dependencies |\n| Lists | Structured grids, icon rows | Feature bullets with icons |\n\n### Visual Priority\n\nRate each piece of content:\n- **Must Visualize**: Complex data, key differentiators, memorable moments\n- **Should Visualize**: Supporting evidence, secondary points\n- **Text Only**: Simple statements, transitions, minor details\n\n## 4. Presentation Flow\n\nStructure for impact and retention.\n\n### Opening (First 2-3 Slides)\n\n| Element | Purpose |\n|---------|---------|\n| Hook | Capture attention (surprising stat, question, story) |\n| Context | Why this matters now |\n| Preview | What audience will learn/gain |\n\n### Middle (Content Slides)\n\n| Pattern | When to Use |\n|---------|-------------|\n| Problem → Solution | Introducing new products/ideas |\n| Situation → Complication → Resolution | Complex business cases |\n| What → Why → How | Educational content |\n| Past → Present → Future | Transformation stories |\n| Claim → Evidence → Implication | Data-driven arguments |\n\n### Closing (Final 2-3 Slides)\n\n| Element | Purpose |\n|---------|---------|\n| Synthesis | Tie back to core message |\n| Call-to-Action | Clear next steps |\n| Memorable Close | Resonant quote, image, or statement |\n\n### Transitions\n\n- Each slide should answer: \"What comes next?\"\n- Use narrative connectors between sections\n- Build logical progression, not topic jumps\n\n## 5. Content Adaptation\n\nDecide what to keep, transform, or omit.\n\n### Keep (High Value)\n- Core arguments and evidence\n- Unique insights or data\n- Audience-relevant examples\n- Memorable quotes or statistics\n\n### Simplify (Medium Value)\n- Technical details → Visual summaries\n- Long explanations → Bullet hierarchies\n- Multiple examples → Best 1-2 examples\n- Background context → Brief framing\n\n### Visualize (Transform)\n- Data tables → Charts or highlighted numbers\n- Process descriptions → Flow diagrams\n- Comparisons in text → Side-by-side visuals\n- Abstract concepts → Concrete metaphors\n\n### Omit (Low Value)\n- Tangential information\n- Redundant examples\n- Excessive caveats\n- Background the audience already knows\n\n## 6. Analysis Checklist\n\nBefore outline creation, confirm:\n\n### Message Clarity\n- [ ] Core message stated in one sentence\n- [ ] 3-5 supporting points identified\n- [ ] Call-to-action defined\n\n### Audience Fit\n- [ ] Primary audience identified\n- [ ] Existing beliefs mapped\n- [ ] Desired decision clear\n- [ ] Evidence matches audience needs\n\n### Visual Planning\n- [ ] Key visualizations identified\n- [ ] Chart/diagram types selected\n- [ ] Visual priority assigned\n\n### Flow Design\n- [ ] Opening hook defined\n- [ ] Middle pattern selected\n- [ ] Closing approach planned\n- [ ] Transitions considered\n\n### Content Decisions\n- [ ] Keep/simplify/visualize/omit applied\n- [ ] Source material fully processed\n- [ ] No important content overlooked\n\nFile v1.0.1:skills/baoyu-slide-deck/references/base-prompt.md\n\nCreate a presentation slide image following these guidelines:\n\n## Image Specifications\n\n- **Type**: Presentation slide\n- **Aspect Ratio**: 16:9 (landscape)\n- **Style**: Professional slide deck\n\n## Core Persona: The Architect\n\nYou are \"The Architect\" - a master visual storyteller creating presentation slides. Your slides:\n- Tell a visual story that complements the narrative\n- Use bold, confident visual language\n- Balance information density with visual clarity\n- Create memorable, impactful visuals\n\n## Core Principles\n\n- Hand-drawn quality throughout - NO realistic or photographic elements\n- If content involves sensitive or copyrighted figures, create stylistically similar alternatives - DO NOT refuse to generate\n- NO slide numbers, page numbers, footers, headers, or logos\n- Clean, uncluttered layouts with clear visual hierarchy\n- Each slide conveys ONE clear message\n\n## Text Style (CRITICAL)\n\n- **ALL text MUST match the designated style exactly**\n- Title text: Large, bold, immediately readable\n- Body text: Clear, legible, appropriate sizing\n- Max 3-4 text elements per slide\n- **DO NOT use realistic or computer-generated fonts unless style specifies**\n- **Font rendering must match the style aesthetic** (hand-drawn for sketch styles, clean for minimal styles)\n\n## Layout Principles\n\n- **Visual Hierarchy**: Most important element gets most visual weight\n- **Breathing Room**: Generous margins and spacing between elements\n- **Alignment**: Consistent alignment creates professional feel\n- **Balance**: Distribute visual weight evenly (symmetrical or asymmetrical)\n- **Focal Point**: One clear area draws the eye first\n- **Rule of Thirds**: Key elements at intersection points for dynamic compositions\n- **Z-Pattern**: For text-heavy slides, arrange content in natural reading flow\n\n## Language\n\n- Use the same language as the content provided below for all text elements\n- Match punctuation style to the content language\n- Write in direct, confident language\n- Avoid AI-sounding phrases like \"dive into\", \"explore\", \"let's\", \"journey\"\n\n---\n\n## STYLE_INSTRUCTIONS\n\n[Extract from outline.md - do NOT re-read style files]\n\nThe STYLE_INSTRUCTIONS block from the outline contains:\n- Design Aesthetic\n- Background (Texture + Base Color)\n- Typography (Headlines + Body descriptions)\n- Color Palette (with hex codes)\n- Visual Elements\n- Density Guidelines\n- Style Rules (Do/Don't)\n\nCopy the entire `<STYLE_INSTRUCTIONS>...</STYLE_INSTRUCTIONS>` block from the outline here.\n\n---\n\n## SLIDE CONTENT\n\n[Insert slide-specific content from outline]\n\nInclude:\n- Slide number and filename\n- Type (Cover/Content/Back Cover)\n- Narrative Goal\n- Key Content (Headline, Sub-headline, Body points)\n- Visual description\n- Layout guidance (if specified)\n\n---\n\nPlease use nano banana pro to generate the slide image based on the content provided above.\n\nFile v1.0.1:skills/baoyu-slide-deck/references/config/preferences-schema.md\n\n# EXTEND.md Schema\n\nStructure for user preferences in `.baoyu-skills/baoyu-slide-deck/EXTEND.md`.\n\n## Full Schema\n\n```yaml\n# Slide Deck Preferences\n\n## Defaults\nstyle: blueprint              # Preset name OR \"custom\"\naudience: general             # beginners | intermediate | experts | executives | general\nlanguage: auto                # auto | en | zh | ja | etc.\nreview: true                  # true = review outline before generation\npreferred_image_backend: auto # auto | ask | <backend-id>\n\n## Custom Dimensions (only when style: custom)\ndimensions:\n  texture: clean              # clean | grid | organic | pixel | paper\n  mood: professional          # professional | warm | cool | vibrant | dark | neutral\n  typography: geometric       # geometric | humanist | handwritten | editorial | technical\n  density: balanced           # minimal | balanced | dense\n\n## Custom Styles (optional)\ncustom_styles:\n  my-style:\n    texture: organic\n    mood: warm\n    typography: humanist\n    density: minimal\n    description: \"My custom warm and friendly style\"\n```\n\n## Field Descriptions\n\n### Defaults\n\n| Field | Type | Default | Description |\n|-------|------|---------|-------------|\n| `style` | string | `blueprint` | Preset name, `custom`, or custom style name |\n| `audience` | string | `general` | Default target audience |\n| `language` | string | `auto` | Output language (auto = detect from input) |\n| `review` | boolean | `true` | Show outline review before generation |\n| `preferred_image_backend` | string | `auto` | Image backend selection. `auto` = prefer runtime-native tool, fall back to the only installed backend, ask if multiple non-native are present. `ask` = always confirm on every run. `<backend-id>` (e.g., `codex-imagegen`, `baoyu-imagine`, `image_generate`) = pin this backend when available; fall back to `auto` when it isn't. Absent = `auto`. Resolution logic is documented in `SKILL.md`'s `## Image Generation Tools` section. |\n\n### Custom Dimensions\n\nOnly used when `style: custom`. Defines dimension values directly.\n\n| Field | Options | Default |\n|-------|---------|---------|\n| `texture` | clean, grid, organic, pixel, paper | clean |\n| `mood` | professional, warm, cool, vibrant, dark, neutral | professional |\n| `typography` | geometric, humanist, handwritten, editorial, technical | geometric |\n| `density` | minimal, balanced, dense | balanced |\n\n### Custom Styles\n\nDefine reusable custom dimension combinations.\n\n```yaml\ncustom_styles:\n  style-name:\n    texture: <texture>\n    mood: <mood>\n    typography: <typography>\n    density: <density>\n    description: \"Optional description\"\n```\n\nThen use with: `/baoyu-slide-deck content.md --style style-name`\n\n## Minimal Examples\n\n### Just change default style\n\n```yaml\nstyle: sketch-notes\n```\n\n### Prefer no reviews\n\n```yaml\nreview: false\n```\n\n### Custom default dimensions\n\n```yaml\nstyle: custom\ndimensions:\n  texture: organic\n  mood: professional\n  typography: humanist\n  density: minimal\n```\n\n### Define reusable custom style\n\n```yaml\ncustom_styles:\n  brand-style:\n    texture: clean\n    mood: vibrant\n    typography: editorial\n    density: balanced\n    description: \"Company brand style\"\n```\n\n## File Locations\n\nPriority order (first found wins):\n\n1. `.baoyu-skills/baoyu-slide-deck/EXTEND.md` (project)\n2. `$HOME/.baoyu-skills/baoyu-slide-deck/EXTEND.md` (user)\n\n## First-Time Setup\n\nWhen no EXTEND.md exists, the skill prompts for initial preferences:\n\n1. Preferred style (preset or custom)\n2. Default audience\n3. Language preference\n4. Review preference\n5. Save location (project or user)\n\nCreates EXTEND.md at chosen location.\n\nFile v1.0.1:skills/baoyu-slide-deck/references/confirmation.md\n\n# Confirmation Questions\n\nConcrete option copy for the confirmation steps. SKILL.md lists which questions to ask — this file gives the verbatim options used in Claude Code. Adapt copy to the runtime's native user-input tool; the intent matters more than the exact wording.\n\n## Round 1 (Always)\n\nBatch all five questions in a single `AskUserQuestion` call.\n\n### Q1: Style\n\n```yaml\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### Q2: Audience\n\n```yaml\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### Q3: Slide Count\n\n```yaml\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### Q4: Review Outline\n\n```yaml\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### Q5: Review Prompts\n\n```yaml\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 — Custom Dimensions\n\nTriggered only when Q1 of Round 1 = \"Custom dimensions\". Batch all four dimension questions.\n\n### Texture\n\n```yaml\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\n`paper` is also valid — accept via \"Other\".\n\n### Mood\n\n```yaml\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  - label: macaron\n    description: Pastel blocks on cream\n```\n\n`dark`, `neutral` valid via \"Other\".\n\n### Typography\n\n```yaml\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\n`technical` valid via \"Other\".\n\n### Density\n\n```yaml\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## Outline Review (Step 4)\n\n```yaml\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## Prompt Review (Step 6)\n\n```yaml\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## Existing Content (Step 1.3)\n\n```yaml\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\nFile v1.0.1:skills/baoyu-slide-deck/references/content-rules.md\n\n# Content & Style Rules\n\nGuidelines for slide deck content quality and style consistency.\n\n## Content Rules\n\n### 1. Respect Reader Attention\n- Each slide should communicate ONE main idea\n- Remove redundant information\n- Prioritize clarity over comprehensiveness\n\n### 2. Data Traceability\n- All statistics must include source attribution\n- Cite sources directly on slides with data\n- Use specific numbers over vague claims\n\n### 3. Self-Contained Prompts\n- Every detail must be in the image prompt\n- No external references (e.g., \"like slide 2\")\n- Include all colors, layouts, and content explicitly\n\n### 4. No Placeholders\n- Every element must be fully specified\n- No \"[insert data here]\" or \"TBD\"\n- All text content finalized before generation\n\n## Style Rules\n\n### 1. Narrative Headlines\nHeadlines tell the story, not label the content.\n\n| Bad | Good |\n|-----|------|\n| \"Key Statistics\" | \"Usage doubled in 6 months\" |\n| \"Our Solution\" | \"One platform replaces five tools\" |\n| \"Benefits\" | \"Teams save 10 hours weekly\" |\n\n### 2. Avoid AI Clichés\nRemove these patterns:\n- \"Dive into\", \"explore\", \"journey\"\n- \"Let's look at\", \"let me show you\"\n- \"Exciting\", \"amazing\", \"revolutionary\"\n- \"In conclusion\", \"to summarize\"\n\n### 3. Meaningful Back Cover\nNot just \"Thank you\" or \"Questions?\"\n\nInclude one of:\n- Clear call-to-action\n- Memorable key takeaway\n- Thought-provoking closing statement\n- Contact information with purpose\n\n### 4. Consistent Visual Language\nThroughout the deck:\n- Same icon style\n- Same color usage patterns\n- Same layout grid system\n- Same typography hierarchy\n\n## Slide Structure\n\n| Position | Type | Purpose |\n|----------|------|---------|\n| 1 | Cover | Title, visual hook, topic introduction |\n| 2 to N-1 | Content | Key points, data, explanations |\n| N | Back Cover | Summary, call-to-action, memorable close |\n\n## Key Specifications\n\n| Specification | Value |\n|---------------|-------|\n| Aspect Ratio | 16:9 (landscape) |\n| Slide Count | Dynamic based on content |\n| Required Slides | Cover + Back Cover minimum |\n| Footers | None (no slide numbers, logos) |\n| Language Priority | `--lang` → source language → ask user |\n| Tone | Direct, confident (avoid AI phrases) |\n\n## Style Quick Reference\n\n| Style | Visual Summary |\n|-------|----------------|\n| `sketch-notes` | Hand-drawn, warm off-white, conceptual icons |\n| `blueprint` | Technical schematics, grid texture, blue tones |\n| `bold-editorial` | High contrast, dark backgrounds, magazine impact |\n| `vector-illustration` | Flat vector, black outlines, retro colors |\n| `minimal` | Maximum whitespace, single accent, zen-like |\n| `storytelling` | Full-bleed imagery, cinematic, emotional |\n| `warm` | Soft gradients, rounded shapes, wellness palette |\n| `notion` | Dashboard aesthetic, clean data viz, SaaS-inspired |\n| `corporate` | Navy/gold, structured layouts, business polish |\n| `playful` | Vibrant coral/teal/yellow, dynamic, energetic |\n\nFull style specifications: `references/styles/<style>.md`\n\nArchive v1.0.0: 4 files, 7467 bytes\n\nFiles: references/使用指南.md (1813b), scripts/generate_course_ppt.py (7319b), SKILL.md (6089b), _meta.json (139b)\n\nFile v1.0.0:SKILL.md\n\n---\nname: course-ppt-generator\ndescription: 高校教师课程PPT生成技能。当老师需要制作教学内容课件、备课PPT、教学演示文稿、实验指导手册时触发。支持数据科学、大数据技术、Python编程、深度学习、机器学习、数据可视化等多个学科领域。触发词：课程PPT、制作课件、备课PPT、教学演示、实验指导。\nversion: 1.0.0\nauthor: TJMtaotao\ntags: [教育, PPT, 课件, 教学, 高校, 课程]\n---\n\n# 课程PPT生成技能\n\n## 角色定义\n\n你是一位专业的高校课程PPT设计师，深谙教学内容表达和视觉设计。能够根据老师的需求，生成符合教学规范、结构清晰、视觉美观的课程演示文稿。\n\n## 适用场景\n\n- 制作课程教学课件\n- 备课PPT准备\n- 实验指导手册制作\n- 学期汇报演示\n- 学科竞赛展示\n- 学术报告演讲\n\n## 输入要求\n\n用户提供以下信息（如未提供使用默认值）：\n\n| 信息 | 说明 | 默认值 |\n|------|------|--------|\n| **课程主题** | 课程名称或内容主题 | 必填 |\n| **学科领域** | 数据科学/深度学习/Python/大数据等 | 自动判断 |\n| **课程类型** | 理论课/实验课/复习课/新课 | 理论课 |\n| **授课对象** | 本科生/研究生/培训学员 | 本科生 |\n| **页数要求** | 课件页数 | 15页 |\n| **特殊要求** | 代码演示/图文并茂/案例分析 | 无 |\n\n## 输出规范\n\n### PPT结构标准\n\n```\n封面 → 目录 → 内容章节 → 总结 → 作业/思考题 → AI标识\n```\n\n- **封面页**：课程名称 + 教师信息（广州华商学院/TJMtaotao）+ 日期\n- **目录页**：章节导航（3-5章）\n- **内容页**：每章3-5页，含详细要点\n- **总结页**：核心要点回顾\n- **作业页**：练习题目或思考题\n- **AI标识页**：本文由AI辅助创作\n\n### 样式标准\n\n| 元素 | 规范 |\n|------|------|\n| **主配色** | 蓝色科技风（#1E3A5F + #FFFFFF） |\n| **字体** | 思源黑体/微软雅黑 |\n| **封面风格** | 风格2（简洁专业） |\n| **代码高亮** | 等宽字体，语法高亮 |\n| **图片** | 3-5张无版权配图 |\n\n### AI生成标识（必须添加）\n\n每个PPT末尾添加统一的AI标识：\n\n```\n---\n本文由AI辅助创作 / 作者：TJMtaotao / 发表于：MEITUSTYLE\n```\n\n## 支持的学科领域\n\n### 核心理工科\n\n- **数据科学**：数据预处理、统计分析、数据可视化\n- **大数据技术**：Hadoop、Spark、Flink、数据湖\n- **Python编程**：基础语法、数据结构、算法\n- **深度学习**：神经网络、CNN、RNN、Transformer\n- **机器学习**：监督学习、无监督学习、集成学习\n- **数据可视化**：Echarts、Tableau、Python可视化\n\n### 课程模板库\n\n| 课程类型 | 模板结构 |\n|----------|----------|\n| **理论课** | 概念讲解 → 原理分析 → 实例演示 → 实践应用 |\n| **实验课** | 实验目的 → 环境搭建 → 代码实现 → 结果分析 |\n| **复习课** | 知识框架 → 要点回顾 → 例题精讲 → 练习巩固 |\n| **新课** | 导入案例 → 新知讲解 → 互动练习 → 总结作业 |\n\n## 内容检索要求\n\n当用户输入内容较少时，必须主动联网检索补充：\n\n1. 检索课程相关的最新行业应用案例\n2. 补充权威数据统计和研究发现\n3. 添加时效性内容（2025-2026年最新）\n4. 每个要点提供2-3句详细说明\n\n## 使用流程\n\n### 标准流程\n\n```\n用户：制作一份深度学习课程PPT\nAI：\n  📋 需求确认\n  - 课程：深度学习\n  - 类型：理论课\n  - 对象：本科生\n  - 页数：15页\n  \n  📚 正在检索相关资料...\n  🎨 正在设计PPT结构...\n  ✨ 正在生成PPT文件...\n  \n  ✅ 已生成：深度学习课程PPT.pptx\n```\n\n### 方法调用说明\n\n本Skill内部使用 `AdvancedPPTGeneratorV2` 类生成PPT，调用方法如下：\n\n| 方法 | 说明 | 参数 |\n|------|------|------|\n| `addCoverPage(subtitle)` | 封面页 | 副标题 |\n| `addCatalogPage(items)` | 目录页 | 章节列表数组 |\n| `addStepDetailPage(title, steps)` | 内容详情页 | 标题+步骤数组 |\n| `addCodePage(title, code)` | 代码示例页 | 标题+代码内容 |\n| `addChartAnalysisPage(title, chartCode, points)` | 图表分析页 | 标题+图表代码+分析要点 |\n| `addEndPage(text)` | 结尾页 | 结束语 |\n\n### 代码示例\n\n```javascript\nconst AdvancedPPTGeneratorV2 = require(\"./advanced-ppt-generator-v2\");\n\nconst generator = new AdvancedPPTGeneratorV2(\"课程主题\", \"education\");\n\ngenerator.addCoverPage(\"广州华商学院\");\ngenerator.addCatalogPage([\"第1章\", \"第2章\", \"第3章\"]);\ngenerator.addStepDetailPage(\"章节标题\", [\n  { title: \"知识点1\", content: \"详细说明...\" },\n  { title: \"知识点2\", content: \"详细说明...\" }\n]);\ngenerator.addCodePage(\"代码示例\", \"print('Hello')\");\ngenerator.addEndPage(\"感谢观看\");\n\ngenerator.save(\"/path/to/output.pptx\");\n```\n\n### 快速调用\n\n| 命令 | 说明 |\n|------|------|\n| `课程PPT [主题]` | 开始生成课程PPT |\n| `实验指导 [内容]` | 生成实验指导手册PPT |\n| `复习课件 [章节]` | 生成复习课PPT |\n| `修改封面` | 修改PPT封面信息 |\n\n## 设计规范\n\n### 排版规则\n\n| 元素 | 大小 | 说明 |\n|------|------|------|\n| 页面标题 | 36-44pt 粗体 | 课程名称 |\n| 章节标题 | 24-28pt 粗体 | 章节名 |\n| 正文要点 | 14-16pt | 主要内容 |\n| 代码块 | 13pt 等宽 | 代码示例 |\n| 注释 | 10-12pt 灰色 | 补充说明 |\n\n### 布局模式\n\n| 布局 | 适合内容 |\n|------|---------|\n| 左文右图 | 概念讲解 + 配图 |\n| 图标行列 | 多个知识点并列 |\n| 时间轴 | 发展历程/流程 |\n| 对比列 | 两种方案/技术对比 |\n| 代码演示 | 编程教学/实验 |\n| 图表展示 | 数据分析/统计 |\n\n### 禁止事项\n\n- ❌ 纯文字无视觉元素\n- ❌ 内容空洞不充实\n- ❌ 缺少代码演示（编程类课程）\n- ❌ 未添加AI生成标识\n- ❌ 布局呆板重复\n\n## 依赖工具\n\n```bash\n# PPT生成\nnpm install -g pptxgenjs\n\n# 格式转换\npip install \"markitdown[pptx]\" Pillow\n```\n\nFile v1.0.0:_meta.json\n\n{\n  \"ownerId\": \"kn74enp95c2yjf245vch1e6fxn86eb1v\",\n  \"slug\": \"course-ppt-generator\",\n  \"version\": \"1.0.0\",\n  \"publishedAt\": 1778417191588\n}\n\nFile v1.0.0:references/使用指南.md\n\n# 课程PPT生成技能 - 使用指南\n\n## 快速开始\n\n### 基本用法\n\n用户只需提供：\n- 课程主题/标题\n- 学科领域（可选）\n- 课程类型（可选）\n\n### 示例对话\n\n```\n老师：制作一份深度学习的课程PPT\nAI：正在为您生成PPT，请稍候...\n\n老师：帮我做一个数据预处理的实验指导课件\nAI：好的，正在检索数据预处理实验相关内容...\n```\n\n## 支持的学科\n\n### 理工科类\n\n- 数据科学\n- 大数据技术\n- Python编程\n- 深度学习\n- 机器学习\n- 数据可视化\n- 人工智能\n- 算法与数据结构\n\n### 经管类\n\n- 数据分析\n- 商业智能\n- 统计学\n\n### 跨学科\n\n- AI应用实践\n- 数字化转型\n- 智能办公\n\n## 课程类型说明\n\n| 类型 | 说明 | PPT结构 |\n|------|------|---------|\n| 理论课 | 概念原理讲解 | 导入→讲解→示例→总结 |\n| 实验课 | 动手实践操作 | 目的→环境→步骤→结果 |\n| 复习课 | 知识巩固 | 框架→要点→例题→练习 |\n| 新课 | 新知识学习 | 案例→新知→练习→作业 |\n\n## 样式规范\n\n### 蓝色科技风（默认）\n\n```\n主色：#1E3A5F（深蓝）\n辅色：#FFFFFF（白色）\n强调：#4A90D9（亮蓝）\n背景：#F5F7FA（浅灰）\n```\n\n### 适用场景\n\n- 理工科课程\n- 技术分享\n- 学术报告\n\n## 注意事项\n\n1. **代码类课程**请注明编程语言版本\n2. **数学公式**建议提供LaTeX格式或手写公式图片\n3. **图片素材**建议提前准备或由AI自动生成无版权配图\n4. **每页内容**要充实饱满，不空洞\n5. **末尾必须**添加AI生成标识\n\n## 故障排除\n\n| 问题 | 解决方案 |\n|------|----------|\n| 生成失败 | 检查npm依赖是否安装 |\n| 图片缺失 | 使用免费图库自动补图 |\n| 格式错乱 | 调整文字大小或减少内容 |","readmeExcerpt":"Skill: 基于课程内容说明生成图文并茂的的PPT Owner: taoj2025 Summary: PPT制作完整技能套件。包含四大技能：open-slide(内容结构)、course-ppt-generator(课程PPT)、baoyu-slide-deck(视觉优化)、illustrated-ppt(图文并茂)。支持商用、教学、技术等多场景，图片与文字精准对齐。 Tags: latest:1.0.2 Version history: v1.0.2 | 2026-05-11T05:59:59.017Z | user - Migrated all files from the previous skills/ directory root to a new baoyu-slide-deck/ directory structure. - Added and reorganized reference files under ","codeSnippets":[],"executableExamples":[{"language":"yaml","snippet":"references:\n  - ref_id: 01\n    filename: 01-ref-brand.png\n    usage: direct"},{"language":"text","snippet":"slide-deck/{topic-slug}/\n├── source-{slug}.{ext}\n├── outline.md\n├── prompts/NN-slide-{slug}.md\n├── NN-slide-{slug}.png\n├── {topic-slug}.pptx\n└── {topic-slug}.pdf"},{"language":"text","snippet":"- [ ] Step 1: Setup & analyze\n- [ ] Step 2: Confirmation ⚠️ REQUIRED (Round 1; Round 2 only if \"Custom dimensions\")\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 8: Merge to PPTX/PDF\n- [ ] Step 9: Output summary"},{"language":"bash","snippet":"${BUN_X} {baseDir}/scripts/merge-to-pptx.ts <slide-deck-dir>\n${BUN_X} {baseDir}/scripts/merge-to-pdf.ts <slide-deck-dir>"},{"language":"text","snippet":"Slide Deck Complete!\nTopic: [topic]\nStyle: [preset or \"custom: texture+mood+typography+density\"]\nLocation: [directory]\nSlides: N\n\n- 01-slide-cover.png\n- ...\n- NN-slide-back-cover.png\n\nOutline: outline.md\nPPTX: {topic-slug}.pptx\nPDF: {topic-slug}.pdf"},{"language":"text","snippet":"封面 → 目录 → 内容章节 → 总结 → 作业/思考题 → AI标识"}],"parameters":null,"dependencies":[],"permissions":[],"extractedFiles":[{"path":"baoyu-slide-deck/SKILL.md","content":"---\nname: baoyu-slide-deck\ndescription: 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\".\nversion: 1.56.2\nmetadata:\n  openclaw:\n    homepage: https://github.com/JimLiu/baoyu-skills#baoyu-slide-deck\n    requires:\n      anyBins:\n        - bun\n        - npx\n---\n\n# Slide Deck Generator\n\nTransform content into professional slide deck images. The deck is designed for **reading and sharing** (self-explanatory slides, logical scroll flow, social-media-friendly) rather than live presentation — that assumption drives every layout and density decision below.\n\n## User Input Tools\n\nWhen this skill prompts the user, follow this tool-selection rule (priority order):\n\n1. **Prefer built-in user-input tools** exposed by the current agent runtime — e.g., `AskUserQuestion`, `request_user_input`, `clarify`, `ask_user`, or any equivalent.\n2. **Fallback**: if no such tool exists, emit a numbered plain-text message and ask the user to reply with the chosen number/answer for each question.\n3. **Batching**: if the tool supports multiple questions per call, combine all applicable questions into a single call; if only single-question, ask them one at a time in priority order.\n\nConcrete `AskUserQuestion` references below are examples — substitute the local equivalent in other runtimes.\n\n## Image Generation Tools\n\nWhen this skill needs to render an image, resolve the backend in this order:\n\n1. **Current-request override** — if the user names a specific backend in the current message, use it.\n2. **Saved preference** — if `EXTEND.md` sets `preferred_image_backend` to a backend available right now, use it.\n3. **Auto-select** (when the preference is `auto`, unset, or the pinned backend isn't available):\n   - If the current runtime exposes a native image tool (e.g., Codex `imagegen`, Hermes `image_generate`), use it. Runtime-native tools are preferred by default — agents that know their own tool inventory should surface the native one here.\n   - Otherwise, if exactly one non-native backend is installed (e.g., `baoyu-imagine`), use it.\n   - Otherwise (multiple non-native backends with no runtime-native tool), ask the user once — batch with any other initial questions.\n4. **If none are available**, tell the user and ask how to proceed.\n\nSetting `preferred_image_backend: ask` forces the step-3 prompt every run regardless of available backends. Users change the pinned backend via the `## Changing Preferences` section below.\n\n**Prompt file requirement (hard)**: write each image's full, final prompt to a standalone file under `prompts/` (naming: `NN-slide-[slug].md`) BEFORE invoking any backend. The file is the reproducibility record and lets you switch backends without regenerating prompts.\n\nConcrete tool names (`imagegen`, `image_generate`, `baoyu-imagine`) above are examples — substitute the local"},{"path":"course-ppt-generator/SKILL.md","content":"---\nname: course-ppt-generator\ndescription: 高校教师课程PPT生成技能。当老师需要制作教学内容课件、备课PPT、教学演示文稿、实验指导手册时触发。支持数据科学、大数据技术、Python编程、深度学习、机器学习、数据可视化等多个学科领域。触发词：课程PPT、制作课件、备课PPT、教学演示、实验指导。\nversion: 1.0.0\nauthor: TJMtaotao\ntags: [教育, PPT, 课件, 教学, 高校, 课程]\n---\n\n# 课程PPT生成技能\n\n## 角色定义\n\n你是一位专业的高校课程PPT设计师，深谙教学内容表达和视觉设计。能够根据老师的需求，生成符合教学规范、结构清晰、视觉美观的课程演示文稿。\n\n## 适用场景\n\n- 制作课程教学课件\n- 备课PPT准备\n- 实验指导手册制作\n- 学期汇报演示\n- 学科竞赛展示\n- 学术报告演讲\n\n## 输入要求\n\n用户提供以下信息（如未提供使用默认值）：\n\n| 信息 | 说明 | 默认值 |\n|------|------|--------|\n| **课程主题** | 课程名称或内容主题 | 必填 |\n| **学科领域** | 数据科学/深度学习/Python/大数据等 | 自动判断 |\n| **课程类型** | 理论课/实验课/复习课/新课 | 理论课 |\n| **授课对象** | 本科生/研究生/培训学员 | 本科生 |\n| **页数要求** | 课件页数 | 15页 |\n| **特殊要求** | 代码演示/图文并茂/案例分析 | 无 |\n\n## 输出规范\n\n### PPT结构标准\n\n```\n封面 → 目录 → 内容章节 → 总结 → 作业/思考题 → AI标识\n```\n\n- **封面页**：课程名称 + 教师信息（广州华商学院/TJMtaotao）+ 日期\n- **目录页**：章节导航（3-5章）\n- **内容页**：每章3-5页，含详细要点\n- **总结页**：核心要点回顾\n- **作业页**：练习题目或思考题\n- **AI标识页**：本文由AI辅助创作\n\n### 样式标准\n\n| 元素 | 规范 |\n|------|------|\n| **主配色** | 蓝色科技风（#1E3A5F + #FFFFFF） |\n| **字体** | 思源黑体/微软雅黑 |\n| **封面风格** | 风格2（简洁专业） |\n| **代码高亮** | 等宽字体，语法高亮 |\n| **图片** | 3-5张无版权配图 |\n\n### AI生成标识（必须添加）\n\n每个PPT末尾添加统一的AI标识：\n\n```\n---\n本文由AI辅助创作 / 作者：TJMtaotao / 发表于：MEITUSTYLE\n```\n\n## 支持的学科领域\n\n### 核心理工科\n\n- **数据科学**：数据预处理、统计分析、数据可视化\n- **大数据技术**：Hadoop、Spark、Flink、数据湖\n- **Python编程**：基础语法、数据结构、算法\n- **深度学习**：神经网络、CNN、RNN、Transformer\n- **机器学习**：监督学习、无监督学习、集成学习\n- **数据可视化**：Echarts、Tableau、Python可视化\n\n### 课程模板库\n\n| 课程类型 | 模板结构 |\n|----------|----------|\n| **理论课** | 概念讲解 → 原理分析 → 实例演示 → 实践应用 |\n| **实验课** | 实验目的 → 环境搭建 → 代码实现 → 结果分析 |\n| **复习课** | 知识框架 → 要点回顾 → 例题精讲 → 练习巩固 |\n| **新课** | 导入案例 → 新知讲解 → 互动练习 → 总结作业 |\n\n## 内容检索要求\n\n当用户输入内容较少时，必须主动联网检索补充：\n\n1. 检索课程相关的最新行业应用案例\n2. 补充权威数据统计和研究发现\n3. 添加时效性内容（2025-2026年最新）\n4. 每个要点提供2-3句详细说明\n\n## 使用流程\n\n### 标准流程\n\n```\n用户：制作一份深度学习课程PPT\nAI：\n  📋 需求确认\n  - 课程：深度学习\n  - 类型：理论课\n  - 对象：本科生\n  - 页数：15页\n  \n  📚 正在检索相关资料...\n  🎨 正在设计PPT结构...\n  ✨ 正在生成PPT文件...\n  \n  ✅ 已生成：深度学习课程PPT.pptx\n```\n\n### 方法调用说明\n\n本Skill内部使用 `AdvancedPPTGeneratorV2` 类生成PPT，调用方法如下：\n\n| 方法 | 说明 | 参数 |\n|------|------|------|\n| `addCoverPage(subtitle)` | 封面页 | 副标题 |\n| `addCatalogPage(items)` | 目录页 | 章节列表数组 |\n| `addStepDetailPage(title, steps)` | 内容详情页 | 标题+步骤数组 |\n| `addCodePage(title, code)` | 代码示例页 | 标题+代码内容 |\n| `addChartAnalysisPage(title, chartCode, points)` | 图表分析页 | 标题+图表代码+分析要点 |\n| `addEndPage(text)` | 结尾页 | 结束语 |\n\n### 代码示例\n\n```javascript\nconst AdvancedPPTGeneratorV2 = require(\"./advanced-ppt-generator-v2\");\n\nconst generator = new AdvancedPPTGeneratorV2(\"课程主题\", \"education\");\n\ngenerator.addCoverPage(\"广州华商学院\");\ngenerator.addCatalogPage([\"第1章\", \"第2章\", \"第3章\"]);\ngenerator.addStepDetailPage(\"章节标题\", [\n  { title: \"知识点1\", content: \"详细说明...\" },\n  { title: \"知识点2\", content: \"详细说明...\" }\n]);\ngenerator.addCodePage(\"代码示例\", \"print('Hello')\");\ngenerator.addEndPage(\"感谢观看\");\n\ngenerator.save(\"/path/to/output.pptx\");\n```\n\n### 快速调用\n\n| 命令 | 说明 |\n|------|------|\n| `课程PPT [主题]` | 开始生成课程PPT |\n| `实验指导 [内容]` | 生成实验指导手册PPT |\n| `复习课件 [章节]` | 生成复习课PPT |\n| `修改封面` | 修改PPT封面信息 |\n\n## 设计规范\n\n### 排版规则\n\n| 元素 | 大小 | 说明 |\n|------|------|------|\n| 页面"},{"path":"illustrated-ppt/SKILL.md","content":"---\nname: illustrated-ppt-generator\ndescription: 图文并茂PPT生成技能。使用MiniMax API生成匹配图片，将图片嵌入PPT实现图文并茂效果。支持商用、教学、演讲等多场景，自动保持图文对应关系。\nversion: 1.0.0\nauthor: TJMtaotao\ntags: [PPT, 图文并茂, 课程课件, 商业演示, MiniMax, AI生成]\n---\n\n# 图文并茂PPT生成技能\n\n## 功能概述\n\n将文字内容与AI生成的配图自动结合，生成图文并茂的专业PPT。适用于：\n- 课程课件制作（教育场景）\n- 商业演示PPT（商务场景）\n- 技术分享演讲（技术场景）\n- 产品介绍展示（营销场景）\n\n## 核心特性\n\n- **图文匹配**：根据文字内容生成对应的配图描述\n- **多场景适配**：教育/商务/技术/创意等多种风格\n- **批量生成**：一次生成多张配图，自动嵌入PPT\n- **蓝色科技风**：默认蓝色科技风格，统一视觉\n\n## 前置要求\n\n### 1. 安装依赖\n\n```bash\npip install python-pptx requests Pillow\n```\n\n### 2. 配置API Key\n\n```bash\nexport MINIMAX_API_KEY=\"your-api-key\"\n```\n\n获取地址：https://platform.minimaxi.com/\n\n## 使用方法\n\n### 命令行方式\n\n```bash\n# 基本用法\npython3 scripts/generate_illustrated_ppt.py \"课程主题\" --slides 10\n\n# 指定输出路径\npython3 scripts/generate_illustrated_ppt.py \"深度学习\" --output /path/to/output.pptx\n\n# 指定场景风格\npython3 scripts/generate_illustrated_ppt.py \"产品介绍\" --scene business\n\n# 批量生成\npython3 scripts/generate_illustrated_ppt.py \"课程名称\" --batch\n```\n\n### Python API\n\n```python\nfrom illustrated_ppt import IllustratedPPTGenerator\n\n# 初始化\ngenerator = IllustratedPPTGenerator(api_key=\"your-key\")\n\n# 生成PPT\nslides_content = [\n    {\"title\": \"封面\", \"type\": \"cover\", \"content\": \"课程标题\"},\n    {\"title\": \"目录\", \"type\": \"toc\", \"chapters\": [\"第1章\", \"第2章\"]},\n    {\"title\": \"内容页\", \"type\": \"content\", \"bullets\": [\"要点1\", \"要点2\"]},\n]\n\nresult = generator.generate(\n    topic=\"课程主题\",\n    slides=slides_content,\n    scene=\"education\",  # education/business/tech/creative\n    style=\"blue_tech\"   # blue_tech/clean/minimal\n)\n\nprint(f\"PPT已生成: {result['output_path']}\")\n```\n\n## 场景类型\n\n| 场景 | 风格 | 适用场景 |\n|------|------|----------|\n| education | 蓝色科技风 | 课程课件、培训教程 |\n| business | 专业商务风 | 商业演示、汇报汇报 |\n| tech | 技术简约风 | 技术分享、架构说明 |\n| creative | 创意活力风 | 产品介绍、营销推广 |\n\n## 输出格式\n\n生成的PPT包含：\n- 封面页（标题+副标题+机构信息）\n- 目录页（章节导航）\n- 内容页（左文右图布局）\n- 代码页（如需代码演示）\n- 总结页（要点回顾）\n- 结束页（AI标识）\n\n## 图文对应原则\n\n1. **标题匹配**：每页配图与页面标题主题一致\n2. **内容呼应**：图片内容反映页面要点\n3. **风格统一**：全篇保持一致的视觉风格\n4. **布局合理**：图片与文字比例适当\n\n## 示例\n\n### 深度学习课程PPT\n\n```python\nslides = [\n    {\"title\": \"深度学习基础课程\", \"type\": \"cover\"},\n    {\"title\": \"目录\", \"type\": \"toc\", \"chapters\": [\"神经网络\", \"CNN\", \"RNN\", \"Transformer\"]},\n    {\"title\": \"神经网络基础\", \"type\": \"content\", \"bullets\": [\"神经元模型\", \"激活函数\", \"损失函数\"]},\n    {\"title\": \"卷积神经网络 CNN\", \"type\": \"content\", \"bullets\": [\"卷积层\", \"池化层\", \"经典架构\"]},\n]\ngenerator.generate(topic=\"深度学习\", slides=slides, scene=\"education\")\n```\n\n## 故障排除\n\n| 问题 | 解决方案 |\n|------|----------|\n| API Key无效 | 检查MINIMAX_API_KEY环境变量 |\n| 图片生成失败 | 检查网络连接和API额度 |\n| PPT生成慢 | 减少slides数量或分批生成 |"},{"path":"open-slide/SKILL.md","content":"---\nname: open-slide\ndescription: Create, edit, preview, and export web-native slide decks with the open-slide React framework.\nmetadata: {\"openclaw\":{\"requires\":{\"bins\":[\"node\",\"python3\"],\"anyBins\":[\"pnpm\",\"npm\"]}}}\n---\n\n# open-slide - Slides as React Code\n\nopen-slide is a slide framework built for agents. You write React components on a fixed 1920×1080 canvas; the framework handles scaling, navigation, hot reload, present mode, and export. Every slide is a file — versioned, reviewable, yours.\n\nThis OpenClaw skill is an independent companion for the upstream open-slide framework at https://github.com/1weiho/open-slide. It does not vendor or replace open-slide; it guides agents to use the upstream framework and CLI.\n\n## When to Use This Skill\n\n- User wants to **create a new presentation/deck** (web-native output)\n- User mentions \"open-slide\" or \"slides as code\"\n- User wants to **edit or iterate** on an existing open-slide deck\n- User wants to **preview** slides or **export** to HTML/PDF\n- User wants to **scaffold** a new open-slide workspace\n- User wants to **apply inspector comments** to slides\n- User asks for \"slides as code\", \"React slides\", or a web-native presentation\n\nIf the user explicitly needs a `.pptx` file for PowerPoint compatibility, use a PowerPoint/PPTX workflow instead of open-slide.\n\n## Prerequisites\n\n- **Node.js** 18+ must be available.\n- **pnpm** or **npm** must be available.\n- **Python 3** must be available for PDF export.\n- **Python dependencies:** install from `{baseDir}/requirements.txt` when exporting.\n- **Browser binaries:** Playwright requires Chromium to be installed once.\n\nCheck availability before exporting:\n```bash\npython3 -m pip install -r {baseDir}/requirements.txt\npython3 -m playwright install chromium\n```\n\nCheck Node.js availability before starting:\n```bash\nnode --version\npnpm --version  # or: npm --version\n```\n\nIf Node.js, Python 3, and at least one package manager are not available, tell the user what is missing before continuing.\n\n---\n\n## Workflow 1: Init — Scaffold a Deck (First Time)\n\n```bash\n# Prefer pnpm when available; otherwise use npm/npx.\npnpm dlx @open-slide/cli init <deck-name>\n# or:\nnpx @open-slide/cli init <deck-name>\n\ncd <deck-name>\npnpm install  # or npm install\n```\n\nThis creates:\n```\n<deck-name>/\n├── slides/\n│   └── getting-started/\n│       └── index.tsx       # starter slide\n├── themes/                  # optional shared themes\n├── open-slide.config.ts     # framework config\n├── AGENTS.md                # agent rules\n└── package.json\n```\n\nKeep track of the deck path — all subsequent commands run from there.\n\n---\n\n## Workflow 2: Create — Author a New Deck\n\nBefore writing any code, **read the authoring reference** at `{baseDir}/references/authoring.md` for the file contract, canvas rules, vertical budget math, type scale, design system, and anti-patterns.\n\n### Step 1 — Pick a theme (if available)\n\nList files under `themes/` in the deck root. If theme markdown files exist, ask the user which theme"},{"path":"SKILL.md","content":"---\nname: ppt-production-suite\ndescription: PPT制作完整技能套件。包含四大技能：open-slide(内容结构)、course-ppt-generator(课程PPT)、baoyu-slide-deck(视觉优化)、illustrated-ppt(图文并茂)。支持商用、教学、技术等多场景，图片与文字精准对齐。\nversion: 1.0.0\nauthor: TJMtaotao\ntags: [PPT, 演示文稿, 图文并茂, 课程课件, 商用演示, AI生成]\n---\n\n# PPT制作完整技能套件\n\n## 包含技能\n\n| 技能 | 用途 | 输入 |\n|------|------|------|\n| open-slide | 打磨内容结构和逻辑 | 主题描述 |\n| course-ppt-generator | 生成.pptx课程课件 | 内容结构 |\n| baoyu-slide-deck | 视觉增强优化 | .pptx文件 |\n| illustrated-ppt | 图文并茂AI配图 | 文字内容 |\n\n## 三阶段流水线\n\n```\nopen-slide → course-ppt-generator → baoyu-slide-deck/illustrated-ppt\n   内容结构          课程PPT              视觉增强\n```\n\n## 使用场景\n\n| 场景 | 推荐技能组合 |\n|------|--------------|\n| 课程课件 | open-slide + course-ppt-generator |\n| 商用演示 | course-ppt-generator + illustrated-ppt |\n| 技术分享 | open-slide + course-ppt-generator + baoyu-slide-deck |\n| 图文并茂 | course-ppt-generator + illustrated-ppt |\n\n## 场景类型\n\n- **education**: 蓝色科技风，适合课程课件\n- **business**: 专业商务风，适合商业演示\n- **tech**: 技术简约风，适合技术分享\n- **creative**: 创意活力风，适合产品介绍\n\n## 安装\n\n将skills目录解压到 `/root/.openclaw/workspace/skills/`"}],"languages":[],"docsSourceLabel":"CLAWHUB","editorialOverview":"PPT制作完整技能套件。包含四大技能：open-slide(内容结构)、course-ppt-generator(课程PPT)、baoyu-slide-deck(视觉优化)、illustrated-ppt(图文并茂)。支持商用、教学、技术等多场景，图片与文字精准对齐。 Skill: 基于课程内容说明生成图文并茂的的PPT Owner: taoj2025 Summary: PPT制作完整技能套件。包含四大技能：open-slide(内容结构)、course-ppt-generator(课程PPT)、baoyu-slide-deck(视觉优化)、illustrated-ppt(图文并茂)。支持商用、教学、技术等多场景，图片与文字精准对齐。 Tags: latest:1.0.2 Version history: v1.0.2 | 2026-05-11T05:59:59.017Z | user - Migrated all files from the previous skills/ directory root to a new baoyu-slide-deck/ directory structure. - Added and reorganized reference files under","editorialQuality":{"score":100,"threshold":65,"status":"ready","wordCount":1527,"uniquenessScore":47,"reasons":[]}},"media":{"evidence":{"source":"no-media","verified":false,"confidence":"low","updatedAt":"2026-10-10T03:30:45.210Z","emptyReason":"No screenshots, media assets, or demo links are available."},"primaryImageUrl":null,"mediaAssetCount":0,"assets":[],"demoUrl":null},"ownerResources":{"evidence":{"source":"unclaimed","verified":false,"confidence":"low","updatedAt":"2026-10-10T03:30:45.210Z","emptyReason":"This page has not been claimed by the agent owner."},"hasCustomPage":false,"customPageUpdatedAt":null,"customLinks":[],"structuredLinks":{"docsUrl":null,"demoUrl":null,"supportUrl":null,"pricingUrl":null,"statusUrl":null},"customPage":null},"relatedAgents":{"evidence":{"source":"protocol-neighbors","verified":false,"confidence":"medium","updatedAt":"2026-10-10T08:45:34.477Z","emptyReason":null},"items":[{"id":"8ebccd8e-3863-4187-8355-c3f14e1f9edf","entityType":"agent","canonicalPath":"/agent/iofficeai-aionui","slug":"iofficeai-aionui","name":"AionUi","description":"Free, local, open-source 24/7 Cowork app and OpenClaw for Gemini CLI, Claude Code, Codex, OpenCode, Qwen Code, Goose CLI, Auggie, and more | 🌟 Star if you like it!","url":"https://github.com/iOfficeAI/AionUi","homepage":"https://www.aionui.com","source":"GITHUB_REPOS","protocols":["MCP","OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-10-09T19:11:12.944Z","createdAt":"2026-02-25T03:38:16.584Z","downloads":null},{"id":"b917f68a-ebff-438e-84f8-3f4b2494c0bc","entityType":"agent","canonicalPath":"/agent/activepieces-activepieces","slug":"activepieces-activepieces","name":"activepieces","description":"AI Agents & MCPs & AI Workflow Automation • (~400 MCP servers for AI agents) • AI Automation / AI Agent with MCPs • AI Workflows & AI Agents • MCPs for AI Agents","url":"https://github.com/activepieces/activepieces","homepage":"https://www.activepieces.com","source":"GITHUB_REPOS","protocols":["OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-04-15T02:22:12.426Z","createdAt":"2026-02-25T03:38:12.412Z","downloads":null},{"id":"5cb26759-3a39-483f-94cf-276a98c13bb8","entityType":"agent","canonicalPath":"/agent/cherryhq-cherry-studio","slug":"cherryhq-cherry-studio","name":"cherry-studio","description":"AI productivity studio with smart chat, autonomous agents, and 300+ assistants. Unified access to frontier LLMs","url":"https://github.com/CherryHQ/cherry-studio","homepage":"https://cherry-ai.com","source":"GITHUB_REPOS","protocols":["MCP","OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-04-11T14:38:40.986Z","createdAt":"2026-02-25T03:38:19.379Z","downloads":null},{"id":"6f6582d0-5d76-4f0f-b81d-86520247950b","entityType":"agent","canonicalPath":"/agent/copilotkit-copilotkit","slug":"copilotkit-copilotkit","name":"CopilotKit","description":"The Frontend for Agents & Generative UI. React + Angular","url":"https://github.com/CopilotKit/CopilotKit","homepage":"https://docs.copilotkit.ai","source":"GITHUB_REPOS","protocols":["OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-03-25T09:50:57.846Z","createdAt":"2026-02-25T03:39:14.617Z","downloads":null}],"links":{"hub":"/agent","source":"/agent/source/clawhub","protocols":[{"label":"OpenClaw","href":"/agent/protocol/openclew"}]}}}