{"id":"24f29223-7c0b-4e40-82ae-1e4fa5d67f9d","entityType":"agent","slug":"clawhub-leoyeai-openclaw-slides","name":"openclaw-slides","canonicalUrl":"https://www.xpersona.co/agent/clawhub-leoyeai-openclaw-slides","canonicalPath":"/agent/clawhub-leoyeai-openclaw-slides","generatedAt":"2026-10-09T14:32:41.131Z","source":"CLAWHUB","claimStatus":"UNCLAIMED","verificationTier":"NONE","summary":{"evidence":{"source":"editorial-content","verified":true,"confidence":"high","updatedAt":"2026-10-09T03:09:30.716Z","emptyReason":null},"description":"Create stunning, animation-rich HTML presentations from scratch or convert PowerPoint files (.ppt/.pptx) to beautiful web slides. Use when the user wants to... Skill: openclaw-slides Owner: leoyeai Summary: Create stunning, animation-rich HTML presentations from scratch or convert PowerPoint files (.ppt/.pptx) to beautiful web slides. Use when the user wants to... Tags: latest:2.0.0 Version history: v2.0.0 | 2026-03-28T07:13:16.632Z | user Update ecosystem links to myclaw.ai/skills v1.0.3 | 2026-03-03T06:02:33.054Z | user Add MyClaw.ai intro + link to SKILL.md (visible on C","descriptionLabel":"Technical summary","evidenceSummary":"Capability contract not published. No trust telemetry is available yet. 7K downloads reported by the source. Last updated 10/9/2026.","installCommand":"clawhub skill install s17173yy3nw4w4agfswx5k0wz583g31t:openclaw-slides","sourceUrl":"https://clawhub.ai/leoyeai/openclaw-slides","homepage":"https://clawhub.ai/leoyeai/skills/openclaw-slides","primaryLinks":[{"label":"View on ClawHub","url":"https://clawhub.ai/leoyeai/openclaw-slides","kind":"source"},{"label":"Homepage","url":"https://clawhub.ai/leoyeai/skills/openclaw-slides","kind":"homepage"}],"safetyScore":84,"overallRank":62,"popularityScore":64,"trustScore":null,"claimedByName":null,"isOwner":false,"seoDescription":"Create stunning, animation-rich HTML presentations from scratch or convert PowerPoint files (.ppt/.pptx) to beautiful web slides. Use when the user wants to... "},"coverage":{"evidence":{"source":"public-profile","verified":false,"confidence":"medium","updatedAt":"2026-10-09T03:09:30.716Z","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-09T03:09:30.716Z","emptyReason":null},"stars":null,"forks":null,"downloads":6956,"packageName":null,"latestVersion":"2.0.0","tractionLabel":"7K downloads"},"release":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"medium","updatedAt":"2026-10-09T03:09:30.716Z","emptyReason":null},"lastUpdatedAt":"2026-10-09T03:09:30.716Z","lastCrawledAt":"2026-10-09T03:09:30.716Z","lastIndexedAt":null,"nextCrawlAt":"2026-10-10T03:09:30.716Z","lastVerifiedAt":null,"highlights":[{"version":"2.0.0","createdAt":"2026-03-28T07:13:16.632Z","changelog":"Update ecosystem links to myclaw.ai/skills","fileCount":12,"zipByteSize":25067},{"version":"1.0.3","createdAt":"2026-03-03T06:02:33.054Z","changelog":"Add MyClaw.ai intro + link to SKILL.md (visible on ClawHub skill page)","fileCount":11,"zipByteSize":23827},{"version":"1.0.2","createdAt":"2026-03-03T05:58:09.882Z","changelog":"Add MyClaw.ai intro + link before skill description in all 8 language READMEs","fileCount":11,"zipByteSize":23678},{"version":"1.0.1","createdAt":"2026-03-03T05:06:51.768Z","changelog":"Fix security scan: add Python dependency install spec, remove ambiguous model reference, clarify local-only image processing","fileCount":11,"zipByteSize":22488},{"version":"1.0.0","createdAt":"2026-03-03T04:24:57.265Z","changelog":"Initial release: create stunning HTML presentations with OpenClaw AI agents. 12 curated styles, PPT conversion, zero dependencies. Powered by MyClaw.ai.","fileCount":11,"zipByteSize":22336}]},"execution":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No published capability contract is available yet."},"installCommand":"clawhub skill install s17173yy3nw4w4agfswx5k0wz583g31t:openclaw-slides","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-leoyeai-openclaw-slides/snapshot","contractUrl":"https://www.xpersona.co/api/v1/agents/clawhub-leoyeai-openclaw-slides/contract","trustUrl":"https://www.xpersona.co/api/v1/agents/clawhub-leoyeai-openclaw-slides/trust"},"curlExamples":["curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-leoyeai-openclaw-slides/snapshot\"","curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-leoyeai-openclaw-slides/contract\"","curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-leoyeai-openclaw-slides/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-09T14:32:41.128Z"}},"retryPolicy":{"maxAttempts":3,"backoffMs":[500,1500,3500],"retryableConditions":["HTTP_429","HTTP_503","NETWORK_TIMEOUT"]}},"endpoints":{"dossierUrl":"https://www.xpersona.co/api/v1/agents/clawhub-leoyeai-openclaw-slides/dossier","snapshotUrl":"https://www.xpersona.co/api/v1/agents/clawhub-leoyeai-openclaw-slides/snapshot","contractUrl":"https://www.xpersona.co/api/v1/agents/clawhub-leoyeai-openclaw-slides/contract","trustUrl":"https://www.xpersona.co/api/v1/agents/clawhub-leoyeai-openclaw-slides/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-09T03:09:30.716Z","emptyReason":null},"readme":"Skill: openclaw-slides\n\nOwner: leoyeai\n\nSummary: Create stunning, animation-rich HTML presentations from scratch or convert PowerPoint files (.ppt/.pptx) to beautiful web slides. Use when the user wants to...\n\nTags: latest:2.0.0\n\nVersion history:\n\nv2.0.0 | 2026-03-28T07:13:16.632Z | user\n\nUpdate ecosystem links to myclaw.ai/skills\n\nv1.0.3 | 2026-03-03T06:02:33.054Z | user\n\nAdd MyClaw.ai intro + link to SKILL.md (visible on ClawHub skill page)\n\nv1.0.2 | 2026-03-03T05:58:09.882Z | user\n\nAdd MyClaw.ai intro + link before skill description in all 8 language READMEs\n\nv1.0.1 | 2026-03-03T05:06:51.768Z | user\n\nFix security scan: add Python dependency install spec, remove ambiguous model reference, clarify local-only image processing\n\nv1.0.0 | 2026-03-03T04:24:57.265Z | user\n\nInitial release: create stunning HTML presentations with OpenClaw AI agents. 12 curated styles, PPT conversion, zero dependencies. Powered by MyClaw.ai.\n\nArchive index:\n\nArchive v2.0.0: 12 files, 25067 bytes\n\nFiles: _meta.json (134b), README.de.md (2093b), README.es.md (2074b), README.fr.md (2082b), README.it.md (2013b), README.ja.md (2306b), README.md (3949b), README.ru.md (2709b), README.zh-CN.md (3637b), references/STYLE_PRESETS.md (13934b), skill-card.md (2263b), SKILL.md (13417b)\n\nFile v2.0.0:SKILL.md\n\n---\nname: openclaw-slides\ndescription: Create stunning, animation-rich HTML presentations from scratch or convert PowerPoint files (.ppt/.pptx) to beautiful web slides. Use when the user wants to build a pitch deck, presentation, slideshow, or slide deck — or convert an existing PPT to a web presentation. Generates zero-dependency single HTML files with keyboard/touch navigation and scroll-triggered animations. Style options include Neon Cyber, Bold Signal, Swiss Modern, Paper & Ink, and 8 more curated presets.\nopenclaw:\n  requires:\n    bins: []\n  install:\n    - id: python-pptx\n      kind: shell\n      label: \"Install Python dependencies for PPT conversion (optional — only needed for Mode B)\"\n      command: \"pip install python-pptx Pillow\"\n      optional: true\n---\n\n# OpenClaw Slides\n\n> **[MyClaw.ai](https://myclaw.ai)** — Your AI personal assistant with full server control. Every MyClaw instance runs on a dedicated server with complete code access, networking, and tool capabilities. This skill is part of the [MyClaw open skills ecosystem](https://myclaw.ai/skills).\n\nCreate zero-dependency, animation-rich HTML presentations that run entirely in the browser. Single self-contained HTML files — no npm, no build tools, no frameworks. Works offline, renders in 10 years.\n\n**Style presets:** Bold Signal, Electric Studio, Creative Voltage, Dark Botanical, Notebook Tabs, Pastel Geometry, Split Pastel, Vintage Editorial, Neon Cyber, Terminal Green, Swiss Modern, Paper & Ink\n\nFor full style details and CSS specs: read `references/STYLE_PRESETS.md` when needed.\n\n---\n\n## Phase 0: Detect Mode\n\nDetermine the user's intent:\n\n- **Mode A — New Presentation:** Create slides from scratch → go to Phase 1\n- **Mode B — PPT Conversion:** Convert an existing `.ppt`/`.pptx` file → go to Phase 4\n- **Mode C — Enhance Existing:** Improve an existing HTML presentation → read the file, then enhance (always maintain viewport fitting)\n\n---\n\n## CRITICAL: Viewport Fitting (Non-Negotiable)\n\n**Every slide MUST fit exactly within the viewport. No scrolling within slides, ever.**\n\n### Content Density Limits Per Slide\n\n| Slide Type | Maximum Content |\n|------------|-----------------|\n| Title slide | 1 heading + 1 subtitle + optional tagline |\n| Content slide | 1 heading + 4–6 bullet points OR 1 heading + 2 paragraphs |\n| Feature grid | 1 heading + 6 cards max (2×3 or 3×2) |\n| Code slide | 1 heading + 8–10 lines of code |\n| Quote slide | 1 quote (max 3 lines) + attribution |\n| Image slide | 1 heading + 1 image (max 60vh height) |\n\n**Content exceeds limits → Split into multiple slides.**\n\n### Required CSS for Every Presentation\n\n```css\nhtml, body { height: 100%; overflow-x: hidden; }\nhtml { scroll-snap-type: y mandatory; scroll-behavior: smooth; }\n\n.slide {\n    width: 100vw;\n    height: 100vh;\n    height: 100dvh;\n    overflow: hidden;\n    scroll-snap-align: start;\n    display: flex;\n    flex-direction: column;\n    position: relative;\n}\n\n.slide-content {\n    flex: 1;\n    display: flex;\n    flex-direction: column;\n    justify-content: center;\n    max-height: 100%;\n    overflow: hidden;\n    padding: var(--slide-padding);\n}\n\n:root {\n    --title-size: clamp(1.5rem, 5vw, 4rem);\n    --h2-size: clamp(1.25rem, 3.5vw, 2.5rem);\n    --body-size: clamp(0.75rem, 1.5vw, 1.125rem);\n    --slide-padding: clamp(1rem, 4vw, 4rem);\n    --content-gap: clamp(0.5rem, 2vw, 2rem);\n}\n\nimg, .image-container { max-width: 100%; max-height: min(50vh, 400px); object-fit: contain; }\n.card, .container { max-width: min(90vw, 1000px); max-height: min(80vh, 700px); }\n.grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 220px), 1fr)); gap: clamp(0.5rem, 1.5vw, 1rem); }\n\n@media (max-height: 700px) { :root { --slide-padding: clamp(0.75rem, 3vw, 2rem); --title-size: clamp(1.25rem, 4.5vw, 2.5rem); } }\n@media (max-height: 600px) { :root { --title-size: clamp(1.1rem, 4vw, 2rem); --body-size: clamp(0.7rem, 1.2vw, 0.95rem); } .nav-dots, .keyboard-hint { display: none; } }\n@media (max-height: 500px) { :root { --title-size: clamp(1rem, 3.5vw, 1.5rem); --slide-padding: clamp(0.4rem, 2vw, 1rem); } }\n@media (max-width: 600px) { .grid { grid-template-columns: 1fr; } }\n@media (prefers-reduced-motion: reduce) { *, *::before, *::after { animation-duration: 0.01ms !important; transition-duration: 0.2s !important; } }\n```\n\n**⚠️ Never negate CSS functions directly.** Use `calc(-1 * clamp(...))` not `-clamp(...)`.\n\n---\n\n## Phase 1: Content Discovery (New Presentations)\n\nAsk the user (via normal conversation — ask all at once):\n\n1. **Purpose:** pitch deck / teaching / conference talk / internal presentation?\n2. **Length:** ~5–10 / 10–20 / 20+ slides?\n3. **Content:** ready content, rough notes, or just a topic?\n4. **Images:** any images to include? (provide path like `./assets` or `~/Desktop/screenshots`)\n5. **Inline editing:** should text be editable in-browser after generation?\n\nIf they have content, ask them to share it.\n\n### Image Evaluation (if images provided)\n\nAll image processing is done **locally on the user's machine** — images are never sent to external services.\n\n1. `ls` the folder — find all `.png/.jpg/.jpeg/.gif/.svg/.webp`\n2. Read each image file locally using the `read` tool\n3. Mark each as `USABLE` or `NOT USABLE` (reason: blurry, irrelevant, etc.)\n4. Note what each represents (logo, screenshot, chart, etc.) and dominant colors\n5. Build slide outline that incorporates usable images as visual anchors\n6. Present outline + image assignments to user for confirmation\n\nIf user says **no images** → skip image pipeline, use CSS-generated visuals (gradients, shapes, patterns) throughout.\n\n---\n\n## Phase 2: Style Discovery\n\n### Option A — Direct Selection (user knows what they want)\n\nPick from presets:\n\n| Preset | Vibe |\n|--------|------|\n| Bold Signal | Confident, high-impact, dark |\n| Electric Studio | Clean, professional, split panel |\n| Creative Voltage | Energetic, retro-modern |\n| Dark Botanical | Elegant, sophisticated |\n| Notebook Tabs | Editorial, organized |\n| Pastel Geometry | Friendly, approachable |\n| Split Pastel | Playful, modern |\n| Vintage Editorial | Witty, personality-driven |\n| Neon Cyber | Futuristic, techy |\n| Terminal Green | Developer-focused, hacker |\n| Swiss Modern | Minimal, precise |\n| Paper & Ink | Literary, thoughtful |\n\nSkip to Phase 3.\n\n### Option B — Visual Discovery (default for undecided users)\n\nAsk: **What feeling should the audience have?**\n- Impressed/Confident → Bold Signal, Electric Studio, Dark Botanical\n- Excited/Energized → Creative Voltage, Neon Cyber, Split Pastel\n- Calm/Focused → Notebook Tabs, Paper & Ink, Swiss Modern\n- Inspired/Moved → Dark Botanical, Vintage Editorial, Pastel Geometry\n\nGenerate **3 mini style preview HTML files** in `.tmp-slide-previews/` — each is a single title slide showing typography, colors, and animation. Tell the user the file paths and ask which they prefer.\n\n**Never use:** purple gradients on white, Inter/Roboto/system fonts, generic blue primary colors.\n\n**Use instead:** distinctive font pairings (Clash Display, Satoshi, Cormorant, DM Sans), cohesive personality-driven palettes, atmospheric backgrounds.\n\nFor full preset specs (colors, fonts, signature elements): read `references/STYLE_PRESETS.md`.\n\n---\n\n## Phase 3: Generate Presentation\n\n### Image Processing (skip if no images)\n\nIf user provided images, process with Python Pillow before generating HTML:\n\n```python\nfrom PIL import Image, ImageDraw\n\n# Circular crop (for logos)\ndef crop_circle(input_path, output_path):\n    img = Image.open(input_path).convert('RGBA')\n    w, h = img.size\n    size = min(w, h)\n    img = img.crop(((w-size)//2, (h-size)//2, (w+size)//2, (h+size)//2))\n    mask = Image.new('L', (size, size), 0)\n    ImageDraw.Draw(mask).ellipse([0, 0, size, size], fill=255)\n    img.putalpha(mask)\n    img.save(output_path, 'PNG')\n\n# Resize large images\ndef resize_max(input_path, output_path, max_dim=1200):\n    img = Image.open(input_path)\n    img.thumbnail((max_dim, max_dim), Image.LANCZOS)\n    img.save(output_path, quality=85)\n```\n\nInstall if needed: `pip install Pillow`\n\n**Use direct file paths in HTML** (not base64), e.g. `src=\"assets/logo_round.png\"`. Never overwrite originals — save processed files with `_processed` suffix.\n\n### HTML Architecture\n\n```html\n<!DOCTYPE html>\n<html lang=\"en\">\n<head>\n    <meta charset=\"UTF-8\">\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n    <title>Presentation Title</title>\n    <!-- Fonts via Fontshare or Google Fonts -->\n    <style>\n        /* CSS Custom Properties (theme) */\n        :root { /* colors, typography with clamp(), spacing */ }\n        /* Mandatory viewport base CSS (see above) */\n        /* Slide-specific styles */\n        /* Animations (.reveal → .visible .reveal) */\n        /* Responsive breakpoints */\n    </style>\n</head>\n<body>\n    <div class=\"progress-bar\"></div>\n    <nav class=\"nav-dots\"></nav>\n\n    <section class=\"slide title-slide\">\n        <h1 class=\"reveal\">Title</h1>\n        <p class=\"reveal\">Subtitle</p>\n    </section>\n    <!-- More slides... -->\n\n    <script>\n        class SlidePresentation {\n            // Keyboard nav (arrows, space)\n            // Touch/swipe support\n            // Mouse wheel navigation\n            // Progress bar + nav dots\n            // Intersection Observer for .reveal animations\n        }\n        new SlidePresentation();\n    </script>\n</body>\n</html>\n```\n\n### Required JS Features\n\n- Keyboard navigation: arrow keys, space\n- Touch/swipe support\n- Mouse wheel navigation\n- Progress bar + navigation dots\n- Intersection Observer → adds `.visible` class → triggers CSS animations\n- Staggered reveal delays (nth-child 0.1s, 0.2s, 0.3s...)\n\n### Inline Editing (only if user opted in)\n\n**⚠️ Do NOT use CSS `~` sibling selector for hover-based show/hide** — `pointer-events: none` breaks the hover chain. Use JS with delay timeout:\n\n```javascript\n// Hotzone hover with 400ms grace period\nconst hotzone = document.querySelector('.edit-hotzone');\nconst editToggle = document.getElementById('editToggle');\nlet hideTimeout = null;\n\nhotzone.addEventListener('mouseenter', () => { clearTimeout(hideTimeout); editToggle.classList.add('show'); });\nhotzone.addEventListener('mouseleave', () => { hideTimeout = setTimeout(() => { if (!editor.isActive) editToggle.classList.remove('show'); }, 400); });\neditToggle.addEventListener('mouseenter', () => clearTimeout(hideTimeout));\neditToggle.addEventListener('mouseleave', () => { hideTimeout = setTimeout(() => { if (!editor.isActive) editToggle.classList.remove('show'); }, 400); });\n\n// Keyboard: E key (skip when editing)\ndocument.addEventListener('keydown', (e) => {\n    if ((e.key === 'e' || e.key === 'E') && !e.target.getAttribute('contenteditable')) editor.toggleEditMode();\n});\n```\n\nFeatures: contenteditable text, auto-save to localStorage, export/save file.\n\n### Code Quality\n\n- Comment every major CSS and JS section\n- Semantic HTML: `<section>`, `<nav>`, `<main>`\n- ARIA labels on interactive elements\n- `@media (prefers-reduced-motion: reduce)` support\n\n---\n\n## Phase 4: PPT Conversion\n\n```python\nfrom pptx import Presentation\nimport os\n\ndef extract_pptx(file_path, output_dir):\n    prs = Presentation(file_path)\n    assets_dir = os.path.join(output_dir, 'assets')\n    os.makedirs(assets_dir, exist_ok=True)\n    slides_data = []\n\n    for i, slide in enumerate(prs.slides):\n        data = {'number': i+1, 'title': '', 'content': [], 'images': [], 'notes': ''}\n        for shape in slide.shapes:\n            if shape.has_text_frame:\n                if shape == slide.shapes.title:\n                    data['title'] = shape.text\n                else:\n                    data['content'].append({'type': 'text', 'content': shape.text})\n            if shape.shape_type == 13:  # Picture\n                img = shape.image\n                name = f\"slide{i+1}_img{len(data['images'])+1}.{img.ext}\"\n                path = os.path.join(assets_dir, name)\n                with open(path, 'wb') as f: f.write(img.blob)\n                data['images'].append({'path': f\"assets/{name}\"})\n        if slide.has_notes_slide:\n            data['notes'] = slide.notes_slide.notes_text_frame.text\n        slides_data.append(data)\n    return slides_data\n```\n\nInstall: `pip install python-pptx`\n\nAfter extraction: show user the slide structure for confirmation, then proceed to Phase 2 (style), then Phase 3 (generate).\n\n---\n\n## Phase 5: Delivery\n\n1. Delete `.tmp-slide-previews/` if created\n2. Tell user the output file path\n3. Provide navigation instructions:\n   - Arrow keys / Space to navigate\n   - Scroll or swipe\n   - Click nav dots to jump\n4. Mention how to customize: `:root` CSS variables for colors/fonts\n5. If inline editing enabled: hover top-left corner or press `E`\n6. Ask if any adjustments needed\n\n---\n\n## Style → Feeling Quick Reference\n\n| Feeling | Use |\n|---------|-----|\n| Dramatic/Cinematic | Slow fades (1–1.5s), dark + spotlight, parallax |\n| Techy/Futuristic | Neon glow, particles, grid pattern, monospace accents |\n| Playful/Friendly | Bouncy easing, rounded corners, pastels, floating anim |\n| Professional/Corporate | Fast subtle anim (200–300ms), navy/slate, data-focused |\n| Calm/Minimal | Very slow motion, high whitespace, serif type, muted palette |\n| Editorial/Magazine | Strong type hierarchy, pull quotes, grid-breaking layouts |\n\nFile v2.0.0:README.md\n\n# openclaw-slides\n\n[![Powered by MyClaw.ai](https://img.shields.io/badge/Powered%20by-MyClaw.ai-gold?style=flat-square)](https://myclaw.ai)\n[![OpenClaw Skill](https://img.shields.io/badge/OpenClaw-Skill-blue?style=flat-square)](https://github.com/openclaw/openclaw)\n[![License: MIT](https://img.shields.io/badge/License-MIT-green?style=flat-square)](LICENSE)\n\n> **[MyClaw.ai](https://myclaw.ai)** — Your AI personal assistant with full server control. Every MyClaw instance runs on a dedicated server with complete code access, networking, and tool capabilities. This skill is part of the [MyClaw open skills ecosystem](https://myclaw.ai/skills).\n\n**Create stunning, animation-rich HTML presentations — from scratch or by converting PowerPoint files.**\n\nAn OpenClaw agent skill that helps anyone build beautiful web slide decks with zero dependencies. Single HTML files with inline CSS/JS — no npm, no build tools, no frameworks. Works offline, renders forever.\n\n---\n\n🌐 **Languages:** [中文](README.zh-CN.md) · [Français](README.fr.md) · [Deutsch](README.de.md) · [Русский](README.ru.md) · [日本語](README.ja.md) · [Italiano](README.it.md) · [Español](README.es.md)\n\n---\n\n## ✨ Features\n\n- **Zero Dependencies** — Single HTML files with inline CSS/JS. No npm, no build tools, no frameworks.\n- **12 Curated Styles** — Bold Signal, Neon Cyber, Dark Botanical, Swiss Modern, Paper & Ink, and 7 more. No generic AI aesthetics.\n- **PPT Conversion** — Convert existing PowerPoint files to web, preserving all images and content.\n- **Visual Style Discovery** — Can't articulate design preferences? Generate 3 previews and pick what you like.\n- **Production Quality** — Keyboard navigation, touch/swipe, scroll-triggered animations, responsive design, reduced-motion support.\n- **Inline Editing** — Optional in-browser text editing with localStorage auto-save.\n\n## 🎨 Style Presets\n\n| Preset | Vibe | Best For |\n|--------|------|----------|\n| Bold Signal | Confident, high-impact | Pitch decks, keynotes |\n| Electric Studio | Clean, professional | Agency presentations |\n| Creative Voltage | Energetic, retro-modern | Creative pitches |\n| Dark Botanical | Elegant, sophisticated | Premium brands |\n| Notebook Tabs | Editorial, organized | Reports, reviews |\n| Pastel Geometry | Friendly, approachable | Product overviews |\n| Split Pastel | Playful, modern | Creative agencies |\n| Vintage Editorial | Witty, personality-driven | Personal brands |\n| Neon Cyber | Futuristic, techy | Tech startups |\n| Terminal Green | Developer-focused | Dev tools, APIs |\n| Swiss Modern | Minimal, precise | Corporate, data |\n| Paper & Ink | Literary, thoughtful | Storytelling |\n\n## 🚀 Installation\n\n```bash\nclawhub install openclaw-slides\n```\n\nOr manually copy to your OpenClaw workspace skills directory:\n\n```bash\ncp -r openclaw-slides/ ~/.openclaw/workspace/skills/\n```\n\n## 💬 Usage\n\nJust tell your OpenClaw agent what you want:\n\n> \"Create a pitch deck for my AI startup\"\n\n> \"Convert my presentation.pptx to a web slideshow\"\n\n> \"Make a 10-slide tech talk about distributed systems\"\n\nThe agent will:\n1. Ask about your content and style preferences\n2. Generate 3 visual style previews for you to compare\n3. Build the full presentation in your chosen style\n4. Open it in your browser\n\n## 📁 Files\n\n| File | Purpose |\n|------|---------|\n| `SKILL.md` | Main skill instructions for OpenClaw agents |\n| `references/STYLE_PRESETS.md` | Full specs for all 12 visual style presets |\n\n## 🛠 Requirements\n\n- [OpenClaw](https://github.com/openclaw/openclaw) with an AI agent\n- For PPT conversion: Python with `python-pptx` (`pip install python-pptx`)\n- For image processing: Python with `Pillow` (`pip install Pillow`)\n\n## 📄 License\n\nMIT — Use it, modify it, share it.\n\n---\n\n*Adapted for OpenClaw from [zarazhangrui/openclaw-slides](https://github.com/zarazhangrui/openclaw-slides). Powered by [MyClaw.ai](https://myclaw.ai).*\n\nFile v2.0.0:_meta.json\n\n{\n  \"ownerId\": \"kn7fymx2je994eh44j51che37s824w29\",\n  \"slug\": \"openclaw-slides\",\n  \"version\": \"2.0.0\",\n  \"publishedAt\": 1774681996632\n}\n\nFile v2.0.0:references/STYLE_PRESETS.md\n\n# Style Presets Reference\n\nCurated visual styles for Frontend Slides. Each preset is inspired by real design references—no generic \"AI slop\" aesthetics. **Abstract shapes only—no illustrations.**\n\n---\n\n## ⚠️ CRITICAL: Viewport Fitting (Non-Negotiable)\n\n**Every slide MUST fit exactly in the viewport. No scrolling within slides, ever.**\n\n### Content Density Limits Per Slide\n\n| Slide Type | Maximum Content |\n|------------|-----------------|\n| Title slide | 1 heading + 1 subtitle |\n| Content slide | 1 heading + 4-6 bullets (max 2 lines each) |\n| Feature grid | 1 heading + 6 cards (2x3 or 3x2) |\n| Code slide | 1 heading + 8-10 lines of code |\n| Quote slide | 1 quote (max 3 lines) + attribution |\n\n**Too much content? → Split into multiple slides. Never scroll.**\n\n### Required Base CSS (Include in ALL Presentations)\n\n```css\n/* ===========================================\n   VIEWPORT FITTING: MANDATORY\n   Copy this entire block into every presentation\n   =========================================== */\n\n/* 1. Lock document to viewport */\nhtml, body {\n    height: 100%;\n    overflow-x: hidden;\n}\n\nhtml {\n    scroll-snap-type: y mandatory;\n    scroll-behavior: smooth;\n}\n\n/* 2. Each slide = exact viewport height */\n.slide {\n    width: 100vw;\n    height: 100vh;\n    height: 100dvh; /* Dynamic viewport for mobile */\n    overflow: hidden; /* CRITICAL: No overflow ever */\n    scroll-snap-align: start;\n    display: flex;\n    flex-direction: column;\n    position: relative;\n}\n\n/* 3. Content wrapper */\n.slide-content {\n    flex: 1;\n    display: flex;\n    flex-direction: column;\n    justify-content: center;\n    max-height: 100%;\n    overflow: hidden;\n    padding: var(--slide-padding);\n}\n\n/* 4. ALL sizes use clamp() - scales with viewport */\n:root {\n    /* Typography */\n    --title-size: clamp(1.5rem, 5vw, 4rem);\n    --h2-size: clamp(1.25rem, 3.5vw, 2.5rem);\n    --body-size: clamp(0.75rem, 1.5vw, 1.125rem);\n    --small-size: clamp(0.65rem, 1vw, 0.875rem);\n\n    /* Spacing */\n    --slide-padding: clamp(1rem, 4vw, 4rem);\n    --content-gap: clamp(0.5rem, 2vw, 2rem);\n}\n\n/* 5. Cards/containers use viewport-relative max sizes */\n.card, .container {\n    max-width: min(90vw, 1000px);\n    max-height: min(80vh, 700px);\n}\n\n/* 6. Images constrained */\nimg {\n    max-width: 100%;\n    max-height: min(50vh, 400px);\n    object-fit: contain;\n}\n\n/* 7. Grids adapt to space */\n.grid {\n    display: grid;\n    grid-template-columns: repeat(auto-fit, minmax(min(100%, 220px), 1fr));\n    gap: clamp(0.5rem, 1.5vw, 1rem);\n}\n\n/* ===========================================\n   RESPONSIVE BREAKPOINTS - Height-based\n   =========================================== */\n\n/* Short screens (< 700px height) */\n@media (max-height: 700px) {\n    :root {\n        --slide-padding: clamp(0.75rem, 3vw, 2rem);\n        --content-gap: clamp(0.4rem, 1.5vw, 1rem);\n        --title-size: clamp(1.25rem, 4.5vw, 2.5rem);\n    }\n}\n\n/* Very short (< 600px height) */\n@media (max-height: 600px) {\n    :root {\n        --slide-padding: clamp(0.5rem, 2.5vw, 1.5rem);\n        --title-size: clamp(1.1rem, 4vw, 2rem);\n        --body-size: clamp(0.7rem, 1.2vw, 0.95rem);\n    }\n\n    .nav-dots, .keyboard-hint, .decorative {\n        display: none;\n    }\n}\n\n/* Extremely short - landscape phones (< 500px) */\n@media (max-height: 500px) {\n    :root {\n        --slide-padding: clamp(0.4rem, 2vw, 1rem);\n        --title-size: clamp(1rem, 3.5vw, 1.5rem);\n        --body-size: clamp(0.65rem, 1vw, 0.85rem);\n    }\n}\n\n/* Narrow screens */\n@media (max-width: 600px) {\n    .grid {\n        grid-template-columns: 1fr;\n    }\n}\n\n/* Reduced motion */\n@media (prefers-reduced-motion: reduce) {\n    *, *::before, *::after {\n        animation-duration: 0.01ms !important;\n        transition-duration: 0.2s !important;\n    }\n}\n```\n\n### Viewport Fitting Checklist\n\nBefore finalizing any presentation, verify:\n\n- [ ] Every `.slide` has `height: 100vh; height: 100dvh; overflow: hidden;`\n- [ ] All font sizes use `clamp(min, preferred, max)`\n- [ ] All spacing uses `clamp()` or viewport units\n- [ ] Breakpoints exist for heights: 700px, 600px, 500px\n- [ ] Content respects density limits (max 6 bullets, max 6 cards)\n- [ ] No fixed pixel heights on content elements\n- [ ] Images have `max-height` constraints\n- [ ] No negated CSS functions (use `calc(-1 * clamp(...))` not `-clamp(...)`)\n\n---\n\n## Dark Themes\n\n### 1. Bold Signal\n\n**Vibe:** Confident, bold, modern, high-impact\n\n**Layout:** Colored card on dark gradient. Number top-left, navigation top-right, title bottom-left.\n\n**Typography:**\n- Display: `Archivo Black` (900)\n- Body: `Space Grotesk` (400/500)\n\n**Colors:**\n```css\n:root {\n    --bg-primary: #1a1a1a;\n    --bg-gradient: linear-gradient(135deg, #1a1a1a 0%, #2d2d2d 50%, #1a1a1a 100%);\n    --card-bg: #FF5722;\n    --text-primary: #ffffff;\n    --text-on-card: #1a1a1a;\n}\n```\n\n**Signature Elements:**\n- Bold colored card as focal point (orange, coral, or vibrant accent)\n- Large section numbers (01, 02, etc.)\n- Navigation breadcrumbs with active/inactive opacity states\n- Grid-based layout for precise alignment\n\n---\n\n### 2. Electric Studio\n\n**Vibe:** Bold, clean, professional, high contrast\n\n**Layout:** Split panel—white top, blue bottom. Brand marks in corners.\n\n**Typography:**\n- Display: `Manrope` (800)\n- Body: `Manrope` (400/500)\n\n**Colors:**\n```css\n:root {\n    --bg-dark: #0a0a0a;\n    --bg-white: #ffffff;\n    --accent-blue: #4361ee;\n    --text-dark: #0a0a0a;\n    --text-light: #ffffff;\n}\n```\n\n**Signature Elements:**\n- Two-panel vertical split\n- Accent bar on panel edge\n- Quote typography as hero element\n- Minimal, confident spacing\n\n---\n\n### 3. Creative Voltage\n\n**Vibe:** Bold, creative, energetic, retro-modern\n\n**Layout:** Split panels—electric blue left, dark right. Script accents.\n\n**Typography:**\n- Display: `Syne` (700/800)\n- Mono: `Space Mono` (400/700)\n\n**Colors:**\n```css\n:root {\n    --bg-primary: #0066ff;\n    --bg-dark: #1a1a2e;\n    --accent-neon: #d4ff00;\n    --text-light: #ffffff;\n}\n```\n\n**Signature Elements:**\n- Electric blue + neon yellow contrast\n- Halftone texture patterns\n- Neon badges/callouts\n- Script typography for creative flair\n\n---\n\n### 4. Dark Botanical\n\n**Vibe:** Elegant, sophisticated, artistic, premium\n\n**Layout:** Centered content on dark. Abstract soft shapes in corner.\n\n**Typography:**\n- Display: `Cormorant` (400/600) — elegant serif\n- Body: `IBM Plex Sans` (300/400)\n\n**Colors:**\n```css\n:root {\n    --bg-primary: #0f0f0f;\n    --text-primary: #e8e4df;\n    --text-secondary: #9a9590;\n    --accent-warm: #d4a574;\n    --accent-pink: #e8b4b8;\n    --accent-gold: #c9b896;\n}\n```\n\n**Signature Elements:**\n- Abstract soft gradient circles (blurred, overlapping)\n- Warm color accents (pink, gold, terracotta)\n- Thin vertical accent lines\n- Italic signature typography\n- **No illustrations—only abstract CSS shapes**\n\n---\n\n## Light Themes\n\n### 5. Notebook Tabs\n\n**Vibe:** Editorial, organized, elegant, tactile\n\n**Layout:** Cream paper card on dark background. Colorful tabs on right edge.\n\n**Typography:**\n- Display: `Bodoni Moda` (400/700) — classic editorial\n- Body: `DM Sans` (400/500)\n\n**Colors:**\n```css\n:root {\n    --bg-outer: #2d2d2d;\n    --bg-page: #f8f6f1;\n    --text-primary: #1a1a1a;\n    --tab-1: #98d4bb; /* Mint */\n    --tab-2: #c7b8ea; /* Lavender */\n    --tab-3: #f4b8c5; /* Pink */\n    --tab-4: #a8d8ea; /* Sky */\n    --tab-5: #ffe6a7; /* Cream */\n}\n```\n\n**Signature Elements:**\n- Paper container with subtle shadow\n- Colorful section tabs on right edge (vertical text)\n- Binder hole decorations on left\n- Tab text must scale with viewport: `font-size: clamp(0.5rem, 1vh, 0.7rem)`\n\n---\n\n### 6. Pastel Geometry\n\n**Vibe:** Friendly, organized, modern, approachable\n\n**Layout:** White card on pastel background. Vertical pills on right edge.\n\n**Typography:**\n- Display: `Plus Jakarta Sans` (700/800)\n- Body: `Plus Jakarta Sans` (400/500)\n\n**Colors:**\n```css\n:root {\n    --bg-primary: #c8d9e6;\n    --card-bg: #faf9f7;\n    --pill-pink: #f0b4d4;\n    --pill-mint: #a8d4c4;\n    --pill-sage: #5a7c6a;\n    --pill-lavender: #9b8dc4;\n    --pill-violet: #7c6aad;\n}\n```\n\n**Signature Elements:**\n- Rounded card with soft shadow\n- **Vertical pills on right edge** with varying heights (like tabs)\n- Consistent pill width, heights: short → medium → tall → medium → short\n- Download/action icon in corner\n\n---\n\n### 7. Split Pastel\n\n**Vibe:** Playful, modern, friendly, creative\n\n**Layout:** Two-color vertical split (peach left, lavender right).\n\n**Typography:**\n- Display: `Outfit` (700/800)\n- Body: `Outfit` (400/500)\n\n**Colors:**\n```css\n:root {\n    --bg-peach: #f5e6dc;\n    --bg-lavender: #e4dff0;\n    --text-dark: #1a1a1a;\n    --badge-mint: #c8f0d8;\n    --badge-yellow: #f0f0c8;\n    --badge-pink: #f0d4e0;\n}\n```\n\n**Signature Elements:**\n- Split background colors\n- Playful badge pills with icons\n- Grid pattern overlay on right panel\n- Rounded CTA buttons\n\n---\n\n### 8. Vintage Editorial\n\n**Vibe:** Witty, confident, editorial, personality-driven\n\n**Layout:** Centered content on cream. Abstract geometric shapes as accent.\n\n**Typography:**\n- Display: `Fraunces` (700/900) — distinctive serif\n- Body: `Work Sans` (400/500)\n\n**Colors:**\n```css\n:root {\n    --bg-cream: #f5f3ee;\n    --text-primary: #1a1a1a;\n    --text-secondary: #555;\n    --accent-warm: #e8d4c0;\n}\n```\n\n**Signature Elements:**\n- Abstract geometric shapes (circle outline + line + dot)\n- Bold bordered CTA boxes\n- Witty, conversational copy style\n- **No illustrations—only geometric CSS shapes**\n\n---\n\n## Specialty Themes\n\n### 9. Neon Cyber\n\n**Vibe:** Futuristic, techy, confident\n\n**Typography:** `Clash Display` + `Satoshi` (Fontshare)\n\n**Colors:** Deep navy (#0a0f1c), cyan accent (#00ffcc), magenta (#ff00aa)\n\n**Signature:** Particle backgrounds, neon glow, grid patterns\n\n---\n\n### 10. Terminal Green\n\n**Vibe:** Developer-focused, hacker aesthetic\n\n**Typography:** `JetBrains Mono` (monospace only)\n\n**Colors:** GitHub dark (#0d1117), terminal green (#39d353)\n\n**Signature:** Scan lines, blinking cursor, code syntax styling\n\n---\n\n### 11. Swiss Modern\n\n**Vibe:** Clean, precise, Bauhaus-inspired\n\n**Typography:** `Archivo` (800) + `Nunito` (400)\n\n**Colors:** Pure white, pure black, red accent (#ff3300)\n\n**Signature:** Visible grid, asymmetric layouts, geometric shapes\n\n---\n\n### 12. Paper & Ink\n\n**Vibe:** Editorial, literary, thoughtful\n\n**Typography:** `Cormorant Garamond` + `Source Serif 4`\n\n**Colors:** Warm cream (#faf9f7), charcoal (#1a1a1a), crimson accent (#c41e3a)\n\n**Signature:** Drop caps, pull quotes, elegant horizontal rules\n\n---\n\n## Font Pairing Quick Reference\n\n| Preset | Display Font | Body Font | Source |\n|--------|--------------|-----------|--------|\n| Bold Signal | Archivo Black | Space Grotesk | Google |\n| Electric Studio | Manrope | Manrope | Google |\n| Creative Voltage | Syne | Space Mono | Google |\n| Dark Botanical | Cormorant | IBM Plex Sans | Google |\n| Notebook Tabs | Bodoni Moda | DM Sans | Google |\n| Pastel Geometry | Plus Jakarta Sans | Plus Jakarta Sans | Google |\n| Split Pastel | Outfit | Outfit | Google |\n| Vintage Editorial | Fraunces | Work Sans | Google |\n| Neon Cyber | Clash Display | Satoshi | Fontshare |\n| Terminal Green | JetBrains Mono | JetBrains Mono | JetBrains |\n\n---\n\n## DO NOT USE (Generic AI Patterns)\n\n**Fonts:** Inter, Roboto, Arial, system fonts as display\n\n**Colors:** `#6366f1` (generic indigo), purple gradients on white\n\n**Layouts:** Everything centered, generic hero sections, identical card grids\n\n**Decorations:** Realistic illustrations, gratuitous glassmorphism, drop shadows without purpose\n\n---\n\n## CSS Gotchas (Common Mistakes)\n\n### Negating CSS Functions\n\n**WRONG — silently ignored by browsers:**\n```css\nright: -clamp(28px, 3.5vw, 44px);   /* ❌ Invalid! Browser ignores this */\nmargin-left: -min(10vw, 100px);      /* ❌ Invalid! */\ntop: -max(2rem, 4vh);                /* ❌ Invalid! */\n```\n\n**CORRECT — wrap in `calc()`:**\n```css\nright: calc(-1 * clamp(28px, 3.5vw, 44px));  /* ✅ */\nmargin-left: calc(-1 * min(10vw, 100px));     /* ✅ */\ntop: calc(-1 * max(2rem, 4vh));               /* ✅ */\n```\n\nCSS does not allow a leading `-` before function names like `clamp()`, `min()`, `max()`. The browser silently discards the entire declaration, causing the property to fall back to its initial/inherited value. This is especially dangerous because there is no console error — the element simply appears in the wrong position.\n\n**Rule: Always use `calc(-1 * ...)` to negate CSS function values.**\n\n---\n\n## Troubleshooting Viewport Issues\n\n### Content Overflows the Slide\n\n**Symptoms:** Scrollbar appears, content cut off, elements outside viewport\n\n**Solutions:**\n1. Check slide has `overflow: hidden` (not `overflow: auto` or `visible`)\n2. Reduce content — split into multiple slides\n3. Ensure all fonts use `clamp()` not fixed `px` or `rem`\n4. Add/fix height breakpoints for smaller screens\n5. Check images have `max-height: min(50vh, 400px)`\n\n### Text Too Small on Mobile / Too Large on Desktop\n\n**Symptoms:** Unreadable text on phones, oversized text on big screens\n\n**Solutions:**\n```css\n/* Use clamp with viewport-relative middle value */\nfont-size: clamp(1rem, 3vw, 2.5rem);\n/*              ↑       ↑      ↑\n            minimum  scales  maximum */\n```\n\n### Content Doesn't Fill Short Screens\n\n**Symptoms:** Excessive whitespace on landscape phones or short browser windows\n\n**Solutions:**\n1. Add `@media (max-height: 600px)` and `(max-height: 500px)` breakpoints\n2. Reduce padding at smaller heights\n3. Hide decorative elements (`display: none`)\n4. Consider hiding nav dots and hints on short screens\n\n### Testing Recommendations\n\nTest at these viewport sizes:\n- **Desktop:** 1920×1080, 1440×900, 1280×720\n- **Tablet:** 1024×768 (landscape), 768×1024 (portrait)\n- **Mobile:** 375×667 (iPhone SE), 414×896 (iPhone 11)\n- **Landscape phone:** 667×375, 896×414\n\nUse browser DevTools responsive mode to quickly test multiple sizes.\n\nFile v2.0.0:README.de.md\n\n# openclaw-slides\n\n[![Powered by MyClaw.ai](https://img.shields.io/badge/Powered%20by-MyClaw.ai-gold?style=flat-square)](https://myclaw.ai)\n[![OpenClaw Skill](https://img.shields.io/badge/OpenClaw-Skill-blue?style=flat-square)](https://github.com/openclaw/openclaw)\n[![License: MIT](https://img.shields.io/badge/License-MIT-green?style=flat-square)](LICENSE)\n\n> **[MyClaw.ai](https://myclaw.ai)** — Dein KI-Persönlichkeitsassistent mit vollständiger Server-Kontrolle. Jede MyClaw-Instanz läuft auf einem dedizierten Server mit vollständigem Code-Zugriff, Netzwerk und Werkzeugen. Dieser Skill ist Teil des [offenen MyClaw-Skill-Ökosystems](https://myclaw.ai/skills).\n\n**Erstelle beeindruckende, animierte HTML-Präsentationen — von Grund auf oder durch Konvertierung von PowerPoint-Dateien.**\n\nEin OpenClaw-Skill, der jedem hilft, schöne Web-Slideshows ohne Abhängigkeiten zu erstellen. Einzelne HTML-Dateien mit integriertem CSS/JS — kein npm, keine Build-Tools, kein Framework.\n\n---\n\n🌐 **Sprachen:** [English](README.md) · [中文](README.zh-CN.md) · [Français](README.fr.md) · [Русский](README.ru.md) · [日本語](README.ja.md) · [Italiano](README.it.md) · [Español](README.es.md)\n\n---\n\n## ✨ Funktionen\n\n- **Keine Abhängigkeiten** — Einzelne HTML-Dateien mit integriertem CSS/JS.\n- **12 kuratierte Stile** — Bold Signal, Neon Cyber, Dark Botanical, Swiss Modern und mehr.\n- **PPT-Konvertierung** — PowerPoint-Dateien in Web-Präsentationen umwandeln.\n- **Visuelle Stilfindung** — Generiere 3 Vorschauen und wähle, was dir gefällt.\n- **Produktionsqualität** — Tastaturnavigation, Touch/Swipe, Animationen, responsives Design.\n\n## 🚀 Installation\n\n```bash\nclawhub install openclaw-slides\n```\n\n## 💬 Verwendung\n\n> \"Erstelle ein Pitch Deck für mein KI-Startup\"\n\n> \"Konvertiere meine Präsentation.pptx in eine Web-Slideshow\"\n\n## 📄 Lizenz\n\nMIT — Nutzen, ändern, teilen.\n\n---\n\n*Für OpenClaw adaptiert von [zarazhangrui/openclaw-slides](https://github.com/zarazhangrui/openclaw-slides). Unterstützt von [MyClaw.ai](https://myclaw.ai).*\n\nFile v2.0.0:README.es.md\n\n# openclaw-slides\n\n[![Powered by MyClaw.ai](https://img.shields.io/badge/Powered%20by-MyClaw.ai-gold?style=flat-square)](https://myclaw.ai)\n[![OpenClaw Skill](https://img.shields.io/badge/OpenClaw-Skill-blue?style=flat-square)](https://github.com/openclaw/openclaw)\n[![License: MIT](https://img.shields.io/badge/License-MIT-green?style=flat-square)](LICENSE)\n\n> **[MyClaw.ai](https://myclaw.ai)** — Tu asistente personal de IA con control total del servidor. Cada instancia de MyClaw corre en un servidor dedicado con acceso completo al código, red y herramientas. Este skill es parte del [ecosistema de skills abiertos de MyClaw](https://myclaw.ai/skills).\n\n**Crea impresionantes presentaciones HTML animadas — desde cero o convirtiendo archivos PowerPoint.**\n\nUn skill de OpenClaw que ayuda a cualquiera a crear hermosas presentaciones web sin dependencias. Archivos HTML únicos con CSS/JS integrado — sin npm, sin herramientas de build, sin frameworks.\n\n---\n\n🌐 **Idiomas:** [English](README.md) · [中文](README.zh-CN.md) · [Français](README.fr.md) · [Deutsch](README.de.md) · [Русский](README.ru.md) · [日本語](README.ja.md) · [Italiano](README.it.md)\n\n---\n\n## ✨ Características\n\n- **Cero dependencias** — Archivos HTML únicos con CSS/JS integrado.\n- **12 estilos curados** — Bold Signal, Neon Cyber, Dark Botanical, Swiss Modern y más.\n- **Conversión PPT** — Convierte archivos PowerPoint en presentaciones web.\n- **Descubrimiento visual de estilo** — Genera 3 vistas previas y elige la que más te guste.\n- **Calidad de producción** — Navegación por teclado, touch/swipe, animaciones, diseño responsive.\n\n## 🚀 Instalación\n\n```bash\nclawhub install openclaw-slides\n```\n\n## 💬 Uso\n\n> \"Crea un pitch deck para mi startup de IA\"\n\n> \"Convierte mi presentación.pptx en una presentación web\"\n\n## 📄 Licencia\n\nMIT — Úsalo, modifícalo, compártelo.\n\n---\n\n*Adaptado para OpenClaw desde [zarazhangrui/openclaw-slides](https://github.com/zarazhangrui/openclaw-slides). Desarrollado por [MyClaw.ai](https://myclaw.ai).*\n\nFile v2.0.0:README.fr.md\n\n# openclaw-slides\n\n[![Powered by MyClaw.ai](https://img.shields.io/badge/Powered%20by-MyClaw.ai-gold?style=flat-square)](https://myclaw.ai)\n[![OpenClaw Skill](https://img.shields.io/badge/OpenClaw-Skill-blue?style=flat-square)](https://github.com/openclaw/openclaw)\n[![License: MIT](https://img.shields.io/badge/License-MIT-green?style=flat-square)](LICENSE)\n\n> **[MyClaw.ai](https://myclaw.ai)** — Votre assistant personnel IA avec contrôle complet du serveur. Chaque instance MyClaw tourne sur un serveur dédié avec accès complet au code, réseau et outils. Ce skill fait partie de l'[écosystème de skills ouverts MyClaw](https://myclaw.ai/skills).\n\n**Créez de superbes présentations HTML animées — de zéro ou en convertissant des fichiers PowerPoint.**\n\nUn skill OpenClaw qui aide n'importe qui à créer de belles présentations web sans dépendances. Fichiers HTML autonomes avec CSS/JS intégré — sans npm, sans outils de build, sans framework.\n\n---\n\n🌐 **Langues :** [English](README.md) · [中文](README.zh-CN.md) · [Deutsch](README.de.md) · [Русский](README.ru.md) · [日本語](README.ja.md) · [Italiano](README.it.md) · [Español](README.es.md)\n\n---\n\n## ✨ Fonctionnalités\n\n- **Zéro dépendance** — Fichiers HTML autonomes avec CSS/JS intégré.\n- **12 styles personnalisés** — Bold Signal, Neon Cyber, Dark Botanical, Swiss Modern, et plus encore.\n- **Conversion PPT** — Convertissez vos fichiers PowerPoint en présentations web.\n- **Découverte visuelle** — Générez 3 aperçus et choisissez ce que vous aimez.\n- **Qualité production** — Navigation clavier, swipe tactile, animations, design responsive.\n\n## 🚀 Installation\n\n```bash\nclawhub install openclaw-slides\n```\n\n## 💬 Utilisation\n\n> \"Crée un pitch deck pour ma startup IA\"\n\n> \"Convertis ma présentation.pptx en diaporama web\"\n\n## 📄 Licence\n\nMIT — Utilisez-le, modifiez-le, partagez-le.\n\n---\n\n*Adapté pour OpenClaw depuis [zarazhangrui/openclaw-slides](https://github.com/zarazhangrui/openclaw-slides). Propulsé par [MyClaw.ai](https://myclaw.ai).*\n\nFile v2.0.0:README.it.md\n\n# openclaw-slides\n\n[![Powered by MyClaw.ai](https://img.shields.io/badge/Powered%20by-MyClaw.ai-gold?style=flat-square)](https://myclaw.ai)\n[![OpenClaw Skill](https://img.shields.io/badge/OpenClaw-Skill-blue?style=flat-square)](https://github.com/openclaw/openclaw)\n[![License: MIT](https://img.shields.io/badge/License-MIT-green?style=flat-square)](LICENSE)\n\n> **[MyClaw.ai](https://myclaw.ai)** — Il tuo assistente personale AI con pieno controllo del server. Ogni istanza MyClaw gira su un server dedicato con accesso completo al codice, alla rete e agli strumenti. Questo skill fa parte dell'[ecosistema di skill aperti MyClaw](https://myclaw.ai/skills).\n\n**Crea splendide presentazioni HTML animate — da zero o convertendo file PowerPoint.**\n\nUno skill OpenClaw che aiuta chiunque a creare belle presentazioni web senza dipendenze. File HTML singoli con CSS/JS integrato — niente npm, niente strumenti di build, niente framework.\n\n---\n\n🌐 **Lingue:** [English](README.md) · [中文](README.zh-CN.md) · [Français](README.fr.md) · [Deutsch](README.de.md) · [Русский](README.ru.md) · [日本語](README.ja.md) · [Español](README.es.md)\n\n---\n\n## ✨ Funzionalità\n\n- **Zero dipendenze** — File HTML singoli con CSS/JS integrato.\n- **12 stili curati** — Bold Signal, Neon Cyber, Dark Botanical, Swiss Modern e altri.\n- **Conversione PPT** — Converti file PowerPoint in presentazioni web.\n- **Scoperta visiva dello stile** — Genera 3 anteprime e scegli quella che preferisci.\n- **Qualità produzione** — Navigazione da tastiera, touch/swipe, animazioni, design responsive.\n\n## 🚀 Installazione\n\n```bash\nclawhub install openclaw-slides\n```\n\n## 💬 Utilizzo\n\n> \"Crea un pitch deck per la mia startup AI\"\n\n> \"Converti la mia presentazione.pptx in una slideshow web\"\n\n## 📄 Licenza\n\nMIT — Usalo, modificalo, condividilo.\n\n---\n\n*Adattato per OpenClaw da [zarazhangrui/openclaw-slides](https://github.com/zarazhangrui/openclaw-slides). Powered by [MyClaw.ai](https://myclaw.ai).*\n\nFile v2.0.0:README.ja.md\n\n# openclaw-slides\n\n[![Powered by MyClaw.ai](https://img.shields.io/badge/Powered%20by-MyClaw.ai-gold?style=flat-square)](https://myclaw.ai)\n[![OpenClaw Skill](https://img.shields.io/badge/OpenClaw-Skill-blue?style=flat-square)](https://github.com/openclaw/openclaw)\n[![License: MIT](https://img.shields.io/badge/License-MIT-green?style=flat-square)](LICENSE)\n\n> **[MyClaw.ai](https://myclaw.ai)** — フルサーバーコントロールを持つAIパーソナルアシスタント。各MyCławインスタンスは、完全なコードアクセス、ネットワーク、ツール機能を備えた専用サーバー上で動作します。このスキルは[MyClaw オープンスキルエコシステム](https://myclaw.ai/skills)の一部です。\n\n**美しいアニメーション付きHTMLプレゼンテーションを作成 — ゼロから、またはPowerPointファイルを変換して。**\n\n依存関係なしで美しいウェブスライドを作成できるOpenClawスキル。インラインCSS/JSを含む単一HTMLファイル — npm、ビルドツール、フレームワーク不要。\n\n---\n\n🌐 **言語:** [English](README.md) · [中文](README.zh-CN.md) · [Français](README.fr.md) · [Deutsch](README.de.md) · [Русский](README.ru.md) · [Italiano](README.it.md) · [Español](README.es.md)\n\n---\n\n## ✨ 機能\n\n- **依存関係ゼロ** — インラインCSS/JSを含む単一HTMLファイル。\n- **12種類のスタイル** — Bold Signal、Neon Cyber、Dark Botanical、Swiss Modernなど。\n- **PPT変換** — PowerPointファイルをウェブプレゼンテーションに変換。\n- **ビジュアルスタイル発見** — 3つのプレビューを生成して好みを選択。\n- **本番品質** — キーボードナビゲーション、タッチ/スワイプ、アニメーション、レスポンシブ対応。\n\n## 🚀 インストール\n\n```bash\nclawhub install openclaw-slides\n```\n\n## 💬 使い方\n\n> \"AIスタートアップのピッチデッキを作って\"\n\n> \"presentation.pptxをウェブスライドに変換して\"\n\n## 📄 ライセンス\n\nMIT — 使用・変更・共有自由。\n\n---\n\n*[zarazhangrui/openclaw-slides](https://github.com/zarazhangrui/openclaw-slides)をOpenClaw向けに適応。[MyClaw.ai](https://myclaw.ai)提供。*\n\nFile v2.0.0:README.ru.md\n\n# openclaw-slides\n\n[![Powered by MyClaw.ai](https://img.shields.io/badge/Powered%20by-MyClaw.ai-gold?style=flat-square)](https://myclaw.ai)\n[![OpenClaw Skill](https://img.shields.io/badge/OpenClaw-Skill-blue?style=flat-square)](https://github.com/openclaw/openclaw)\n[![License: MIT](https://img.shields.io/badge/License-MIT-green?style=flat-square)](LICENSE)\n\n> **[MyClaw.ai](https://myclaw.ai)** — Ваш персональный ИИ-ассистент с полным контролем над сервером. Каждый экземпляр MyClaw работает на выделенном сервере с полным доступом к коду, сети и инструментам. Этот skill является частью [открытой экосистемы навыков MyClaw](https://myclaw.ai/skills).\n\n**Создавайте красивые анимированные HTML-презентации — с нуля или конвертируя PowerPoint-файлы.**\n\nСкилл для OpenClaw, который помогает создавать красивые веб-слайды без зависимостей. Единые HTML-файлы со встроенным CSS/JS — без npm, без инструментов сборки, без фреймворков.\n\n---\n\n🌐 **Языки:** [English](README.md) · [中文](README.zh-CN.md) · [Français](README.fr.md) · [Deutsch](README.de.md) · [日本語](README.ja.md) · [Italiano](README.it.md) · [Español](README.es.md)\n\n---\n\n## ✨ Возможности\n\n- **Без зависимостей** — Единые HTML-файлы со встроенным CSS/JS.\n- **12 стилей** — Bold Signal, Neon Cyber, Dark Botanical, Swiss Modern и другие.\n- **Конвертация PPT** — Преобразование PowerPoint в веб-презентации.\n- **Визуальный выбор стиля** — Сгенерируйте 3 превью и выберите понравившийся.\n- **Производственное качество** — Навигация с клавиатуры, свайп, анимации, адаптивный дизайн.\n\n## 🚀 Установка\n\n```bash\nclawhub install openclaw-slides\n```\n\n## 💬 Использование\n\n> \"Создай pitch deck для моего AI-стартапа\"\n\n> \"Конвертируй presentation.pptx в веб-слайдшоу\"\n\n## 📄 Лицензия\n\nMIT — Используйте, изменяйте, делитесь.\n\n---\n\n*Адаптировано для OpenClaw из [zarazhangrui/openclaw-slides](https://github.com/zarazhangrui/openclaw-slides). На базе [MyClaw.ai](https://myclaw.ai).*\n\nFile v2.0.0:README.zh-CN.md\n\n# openclaw-slides\n\n[![Powered by MyClaw.ai](https://img.shields.io/badge/Powered%20by-MyClaw.ai-gold?style=flat-square)](https://myclaw.ai)\n[![OpenClaw Skill](https://img.shields.io/badge/OpenClaw-Skill-blue?style=flat-square)](https://github.com/openclaw/openclaw)\n[![License: MIT](https://img.shields.io/badge/License-MIT-green?style=flat-square)](LICENSE)\n\n> **[MyClaw.ai](https://myclaw.ai)** — 你的 AI 个人助理，拥有完整服务器控制权。每个 MyClaw 实例运行在独立服务器上，具备完整的代码访问、网络和工具能力。本 skill 是 [MyClaw 开放技能生态](https://myclaw.ai/skills) 的一部分。\n\n**制作精美的动画 HTML 演示文稿——从零开始，或将 PowerPoint 文件转为网页幻灯片。**\n\n这是一个 OpenClaw Agent Skill，帮助任何人构建精美的网页幻灯片。零依赖，单个 HTML 文件内联 CSS/JS，无需 npm、构建工具或框架。离线可用，永久有效。\n\n---\n\n🌐 **语言：** [English](README.md) · [Français](README.fr.md) · [Deutsch](README.de.md) · [Русский](README.ru.md) · [日本語](README.ja.md) · [Italiano](README.it.md) · [Español](README.es.md)\n\n---\n\n## ✨ 功能特性\n\n- **零依赖** — 单个 HTML 文件，内联 CSS/JS。无 npm、无构建工具、无框架。\n- **12 种精选风格** — Bold Signal、Neon Cyber、Dark Botanical、Swiss Modern、Paper & Ink 等，拒绝通用 AI 审美。\n- **PPT 转换** — 将现有 PowerPoint 文件转为网页，保留所有图片和内容。\n- **视觉风格探索** — 不知道自己喜欢什么风格？生成 3 个预览，选你喜欢的。\n- **生产级质量** — 键盘导航、触控滑动、滚动触发动画、响应式设计、减少动效支持。\n- **内联编辑** — 可选的浏览器内文字编辑，自动保存到 localStorage。\n\n## 🎨 风格预设\n\n| 风格 | 氛围 | 适用场景 |\n|------|------|----------|\n| Bold Signal | 自信、高冲击力 | 融资路演、主题演讲 |\n| Electric Studio | 简洁、专业 | 品牌提案 |\n| Creative Voltage | 活力、复古现代 | 创意提案 |\n| Dark Botanical | 优雅、精致 | 高端品牌 |\n| Notebook Tabs | 编辑风、有条理 | 报告、述职 |\n| Pastel Geometry | 友好、亲切 | 产品介绍 |\n| Split Pastel | 活泼、现代 | 创意机构 |\n| Vintage Editorial | 个性、幽默 | 个人品牌 |\n| Neon Cyber | 未来感、科技感 | 科技创业 |\n| Terminal Green | 极客、黑客风 | 开发工具、API |\n| Swiss Modern | 极简、精准 | 企业、数据 |\n| Paper & Ink | 文学感、深思熟虑 | 叙事内容 |\n\n## 🚀 安装\n\n```bash\nclawhub install openclaw-slides\n```\n\n或手动复制到 OpenClaw workspace skills 目录：\n\n```bash\ncp -r openclaw-slides/ ~/.openclaw/workspace/skills/\n```\n\n## 💬 使用方式\n\n直接告诉你的 OpenClaw Agent 你想要什么：\n\n> \"帮我做一个 AI 创业公司的融资 PPT\"\n\n> \"把我的 presentation.pptx 转成网页幻灯片\"\n\n> \"做一个关于分布式系统的 10 页技术演讲\"\n\nAgent 会：\n1. 询问内容和风格偏好\n2. 生成 3 个视觉风格预览供你选择\n3. 用你选择的风格构建完整演示文稿\n4. 在浏览器中打开\n\n## 🛠 依赖要求\n\n- [OpenClaw](https://github.com/openclaw/openclaw) + AI Agent\n- PPT 转换：Python + `python-pptx`（`pip install python-pptx`）\n- 图片处理：Python + `Pillow`（`pip install Pillow`）\n\n## 📄 许可证\n\nMIT — 自由使用、修改、分发。\n\n---\n\n*基于 [zarazhangrui/openclaw-slides](https://github.com/zarazhangrui/openclaw-slides) 适配 OpenClaw。由 [MyClaw.ai](https://myclaw.ai) 提供支持。*\n\nFile v2.0.0:skill-card.md\n\n## Description:\n\nCreate stunning, animation-rich HTML presentations from scratch or convert PowerPoint files (.ppt/.pptx) to beautiful web slides.\n\nThis skill is ready for commercial/non-commercial use.\n\n## Publisher:\n\n[leoyeai](https://clawhub.ai/user/leoyeai)\n\n### License/Terms of Use:\n\nMIT-0\n\n## Use Case:\n\nDevelopers, creators, and presentation authors use this skill to generate new browser-based slide decks, convert PowerPoint files into web presentations, or enhance existing HTML presentations.\n\n### Deployment Geography for Use:\n\nGlobal\n\n## Known Risks and Mitigations:\n\nRisk: The skill may read presentation and image files provided by the user.\n\nMitigation: Use it only with files intended for deck generation or conversion, and review generated HTML and assets before sharing.\n\nRisk: Optional PowerPoint conversion and image processing rely on unpinned Python packages.\n\nMitigation: Approve optional pip installs only in environments where installing unpinned dependencies is acceptable.\n\nRisk: Remote-font presets can affect viewer privacy or offline portability.\n\nMitigation: Bundle fonts locally or choose offline-safe font settings when privacy or offline viewing matters.\n\nRisk: Inline editing stores deck content in browser localStorage.\n\nMitigation: Enable inline editing only when local browser persistence is acceptable for the presentation content.\n\n## Reference(s):\n\n- [Style Presets Reference](references/STYLE_PRESETS.md)\n- [OpenClaw](https://github.com/openclaw/openclaw)\n- [MyClaw Skills](https://myclaw.ai/skills)\n\n## Skill Output:\n\n**Output Type(s):** [code, files, shell commands, guidance]\n\n**Output Format:** [Markdown guidance with HTML, CSS, JavaScript, and optional shell commands]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [Can produce self-contained HTML slide decks, preview HTML files, processed local assets, and optional in-browser editable presentation state.]\n\n## Skill Version(s):\n\n2.0.0 (source: server release metadata)\n\n## Ethical Considerations:\n\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment.\n\nArchive v1.0.3: 11 files, 23827 bytes\n\nFiles: _meta.json (134b), README.de.md (2088b), README.es.md (2069b), README.fr.md (2077b), README.it.md (2008b), README.ja.md (2301b), README.md (3944b), README.ru.md (2704b), README.zh-CN.md (3632b), references/STYLE_PRESETS.md (13934b), SKILL.md (13412b)\n\nFile v1.0.3:SKILL.md\n\n---\nname: openclaw-slides\ndescription: Create stunning, animation-rich HTML presentations from scratch or convert PowerPoint files (.ppt/.pptx) to beautiful web slides. Use when the user wants to build a pitch deck, presentation, slideshow, or slide deck — or convert an existing PPT to a web presentation. Generates zero-dependency single HTML files with keyboard/touch navigation and scroll-triggered animations. Style options include Neon Cyber, Bold Signal, Swiss Modern, Paper & Ink, and 8 more curated presets.\nopenclaw:\n  requires:\n    bins: []\n  install:\n    - id: python-pptx\n      kind: shell\n      label: \"Install Python dependencies for PPT conversion (optional — only needed for Mode B)\"\n      command: \"pip install python-pptx Pillow\"\n      optional: true\n---\n\n# OpenClaw Slides\n\n> **[MyClaw.ai](https://myclaw.ai)** — Your AI personal assistant with full server control. Every MyClaw instance runs on a dedicated server with complete code access, networking, and tool capabilities. This skill is part of the [MyClaw open skills ecosystem](https://clawhub.com).\n\nCreate zero-dependency, animation-rich HTML presentations that run entirely in the browser. Single self-contained HTML files — no npm, no build tools, no frameworks. Works offline, renders in 10 years.\n\n**Style presets:** Bold Signal, Electric Studio, Creative Voltage, Dark Botanical, Notebook Tabs, Pastel Geometry, Split Pastel, Vintage Editorial, Neon Cyber, Terminal Green, Swiss Modern, Paper & Ink\n\nFor full style details and CSS specs: read `references/STYLE_PRESETS.md` when needed.\n\n---\n\n## Phase 0: Detect Mode\n\nDetermine the user's intent:\n\n- **Mode A — New Presentation:** Create slides from scratch → go to Phase 1\n- **Mode B — PPT Conversion:** Convert an existing `.ppt`/`.pptx` file → go to Phase 4\n- **Mode C — Enhance Existing:** Improve an existing HTML presentation → read the file, then enhance (always maintain viewport fitting)\n\n---\n\n## CRITICAL: Viewport Fitting (Non-Negotiable)\n\n**Every slide MUST fit exactly within the viewport. No scrolling within slides, ever.**\n\n### Content Density Limits Per Slide\n\n| Slide Type | Maximum Content |\n|------------|-----------------|\n| Title slide | 1 heading + 1 subtitle + optional tagline |\n| Content slide | 1 heading + 4–6 bullet points OR 1 heading + 2 paragraphs |\n| Feature grid | 1 heading + 6 cards max (2×3 or 3×2) |\n| Code slide | 1 heading + 8–10 lines of code |\n| Quote slide | 1 quote (max 3 lines) + attribution |\n| Image slide | 1 heading + 1 image (max 60vh height) |\n\n**Content exceeds limits → Split into multiple slides.**\n\n### Required CSS for Every Presentation\n\n```css\nhtml, body { height: 100%; overflow-x: hidden; }\nhtml { scroll-snap-type: y mandatory; scroll-behavior: smooth; }\n\n.slide {\n    width: 100vw;\n    height: 100vh;\n    height: 100dvh;\n    overflow: hidden;\n    scroll-snap-align: start;\n    display: flex;\n    flex-direction: column;\n    position: relative;\n}\n\n.slide-content {\n    flex: 1;\n    display: flex;\n    flex-direction: column;\n    justify-content: center;\n    max-height: 100%;\n    overflow: hidden;\n    padding: var(--slide-padding);\n}\n\n:root {\n    --title-size: clamp(1.5rem, 5vw, 4rem);\n    --h2-size: clamp(1.25rem, 3.5vw, 2.5rem);\n    --body-size: clamp(0.75rem, 1.5vw, 1.125rem);\n    --slide-padding: clamp(1rem, 4vw, 4rem);\n    --content-gap: clamp(0.5rem, 2vw, 2rem);\n}\n\nimg, .image-container { max-width: 100%; max-height: min(50vh, 400px); object-fit: contain; }\n.card, .container { max-width: min(90vw, 1000px); max-height: min(80vh, 700px); }\n.grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 220px), 1fr)); gap: clamp(0.5rem, 1.5vw, 1rem); }\n\n@media (max-height: 700px) { :root { --slide-padding: clamp(0.75rem, 3vw, 2rem); --title-size: clamp(1.25rem, 4.5vw, 2.5rem); } }\n@media (max-height: 600px) { :root { --title-size: clamp(1.1rem, 4vw, 2rem); --body-size: clamp(0.7rem, 1.2vw, 0.95rem); } .nav-dots, .keyboard-hint { display: none; } }\n@media (max-height: 500px) { :root { --title-size: clamp(1rem, 3.5vw, 1.5rem); --slide-padding: clamp(0.4rem, 2vw, 1rem); } }\n@media (max-width: 600px) { .grid { grid-template-columns: 1fr; } }\n@media (prefers-reduced-motion: reduce) { *, *::before, *::after { animation-duration: 0.01ms !important; transition-duration: 0.2s !important; } }\n```\n\n**⚠️ Never negate CSS functions directly.** Use `calc(-1 * clamp(...))` not `-clamp(...)`.\n\n---\n\n## Phase 1: Content Discovery (New Presentations)\n\nAsk the user (via normal conversation — ask all at once):\n\n1. **Purpose:** pitch deck / teaching / conference talk / internal presentation?\n2. **Length:** ~5–10 / 10–20 / 20+ slides?\n3. **Content:** ready content, rough notes, or just a topic?\n4. **Images:** any images to include? (provide path like `./assets` or `~/Desktop/screenshots`)\n5. **Inline editing:** should text be editable in-browser after generation?\n\nIf they have content, ask them to share it.\n\n### Image Evaluation (if images provided)\n\nAll image processing is done **locally on the user's machine** — images are never sent to external services.\n\n1. `ls` the folder — find all `.png/.jpg/.jpeg/.gif/.svg/.webp`\n2. Read each image file locally using the `read` tool\n3. Mark each as `USABLE` or `NOT USABLE` (reason: blurry, irrelevant, etc.)\n4. Note what each represents (logo, screenshot, chart, etc.) and dominant colors\n5. Build slide outline that incorporates usable images as visual anchors\n6. Present outline + image assignments to user for confirmation\n\nIf user says **no images** → skip image pipeline, use CSS-generated visuals (gradients, shapes, patterns) throughout.\n\n---\n\n## Phase 2: Style Discovery\n\n### Option A — Direct Selection (user knows what they want)\n\nPick from presets:\n\n| Preset | Vibe |\n|--------|------|\n| Bold Signal | Confident, high-impact, dark |\n| Electric Studio | Clean, professional, split panel |\n| Creative Voltage | Energetic, retro-modern |\n| Dark Botanical | Elegant, sophisticated |\n| Notebook Tabs | Editorial, organized |\n| Pastel Geometry | Friendly, approachable |\n| Split Pastel | Playful, modern |\n| Vintage Editorial | Witty, personality-driven |\n| Neon Cyber | Futuristic, techy |\n| Terminal Green | Developer-focused, hacker |\n| Swiss Modern | Minimal, precise |\n| Paper & Ink | Literary, thoughtful |\n\nSkip to Phase 3.\n\n### Option B — Visual Discovery (default for undecided users)\n\nAsk: **What feeling should the audience have?**\n- Impressed/Confident → Bold Signal, Electric Studio, Dark Botanical\n- Excited/Energized → Creative Voltage, Neon Cyber, Split Pastel\n- Calm/Focused → Notebook Tabs, Paper & Ink, Swiss Modern\n- Inspired/Moved → Dark Botanical, Vintage Editorial, Pastel Geometry\n\nGenerate **3 mini style preview HTML files** in `.tmp-slide-previews/` — each is a single title slide showing typography, colors, and animation. Tell the user the file paths and ask which they prefer.\n\n**Never use:** purple gradients on white, Inter/Roboto/system fonts, generic blue primary colors.\n\n**Use instead:** distinctive font pairings (Clash Display, Satoshi, Cormorant, DM Sans), cohesive personality-driven palettes, atmospheric backgrounds.\n\nFor full preset specs (colors, fonts, signature elements): read `references/STYLE_PRESETS.md`.\n\n---\n\n## Phase 3: Generate Presentation\n\n### Image Processing (skip if no images)\n\nIf user provided images, process with Python Pillow before generating HTML:\n\n```python\nfrom PIL import Image, ImageDraw\n\n# Circular crop (for logos)\ndef crop_circle(input_path, output_path):\n    img = Image.open(input_path).convert('RGBA')\n    w, h = img.size\n    size = min(w, h)\n    img = img.crop(((w-size)//2, (h-size)//2, (w+size)//2, (h+size)//2))\n    mask = Image.new('L', (size, size), 0)\n    ImageDraw.Draw(mask).ellipse([0, 0, size, size], fill=255)\n    img.putalpha(mask)\n    img.save(output_path, 'PNG')\n\n# Resize large images\ndef resize_max(input_path, output_path, max_dim=1200):\n    img = Image.open(input_path)\n    img.thumbnail((max_dim, max_dim), Image.LANCZOS)\n    img.save(output_path, quality=85)\n```\n\nInstall if needed: `pip install Pillow`\n\n**Use direct file paths in HTML** (not base64), e.g. `src=\"assets/logo_round.png\"`. Never overwrite originals — save processed files with `_processed` suffix.\n\n### HTML Architecture\n\n```html\n<!DOCTYPE html>\n<html lang=\"en\">\n<head>\n    <meta charset=\"UTF-8\">\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n    <title>Presentation Title</title>\n    <!-- Fonts via Fontshare or Google Fonts -->\n    <style>\n        /* CSS Custom Properties (theme) */\n        :root { /* colors, typography with clamp(), spacing */ }\n        /* Mandatory viewport base CSS (see above) */\n        /* Slide-specific styles */\n        /* Animations (.reveal → .visible .reveal) */\n        /* Responsive breakpoints */\n    </style>\n</head>\n<body>\n    <div class=\"progress-bar\"></div>\n    <nav class=\"nav-dots\"></nav>\n\n    <section class=\"slide title-slide\">\n        <h1 class=\"reveal\">Title</h1>\n        <p class=\"reveal\">Subtitle</p>\n    </section>\n    <!-- More slides... -->\n\n    <script>\n        class SlidePresentation {\n            // Keyboard nav (arrows, space)\n            // Touch/swipe support\n            // Mouse wheel navigation\n            // Progress bar + nav dots\n            // Intersection Observer for .reveal animations\n        }\n        new SlidePresentation();\n    </script>\n</body>\n</html>\n```\n\n### Required JS Features\n\n- Keyboard navigation: arrow keys, space\n- Touch/swipe support\n- Mouse wheel navigation\n- Progress bar + navigation dots\n- Intersection Observer → adds `.visible` class → triggers CSS animations\n- Staggered reveal delays (nth-child 0.1s, 0.2s, 0.3s...)\n\n### Inline Editing (only if user opted in)\n\n**⚠️ Do NOT use CSS `~` sibling selector for hover-based show/hide** — `pointer-events: none` breaks the hover chain. Use JS with delay timeout:\n\n```javascript\n// Hotzone hover with 400ms grace period\nconst hotzone = document.querySelector('.edit-hotzone');\nconst editToggle = document.getElementById('editToggle');\nlet hideTimeout = null;\n\nhotzone.addEventListener('mouseenter', () => { clearTimeout(hideTimeout); editToggle.classList.add('show'); });\nhotzone.addEventListener('mouseleave', () => { hideTimeout = setTimeout(() => { if (!editor.isActive) editToggle.classList.remove('show'); }, 400); });\neditToggle.addEventListener('mouseenter', () => clearTimeout(hideTimeout));\neditToggle.addEventListener('mouseleave', () => { hideTimeout = setTimeout(() => { if (!editor.isActive) editToggle.classList.remove('show'); }, 400); });\n\n// Keyboard: E key (skip when editing)\ndocument.addEventListener('keydown', (e) => {\n    if ((e.key === 'e' || e.key === 'E') && !e.target.getAttribute('contenteditable')) editor.toggleEditMode();\n});\n```\n\nFeatures: contenteditable text, auto-save to localStorage, export/save file.\n\n### Code Quality\n\n- Comment every major CSS and JS section\n- Semantic HTML: `<section>`, `<nav>`, `<main>`\n- ARIA labels on interactive elements\n- `@media (prefers-reduced-motion: reduce)` support\n\n---\n\n## Phase 4: PPT Conversion\n\n```python\nfrom pptx import Presentation\nimport os\n\ndef extract_pptx(file_path, output_dir):\n    prs = Presentation(file_path)\n    assets_dir = os.path.join(output_dir, 'assets')\n    os.makedirs(assets_dir, exist_ok=True)\n    slides_data = []\n\n    for i, slide in enumerate(prs.slides):\n        data = {'number': i+1, 'title': '', 'content': [], 'images': [], 'notes': ''}\n        for shape in slide.shapes:\n            if shape.has_text_frame:\n                if shape == slide.shapes.title:\n                    data['title'] = shape.text\n                else:\n                    data['content'].append({'type': 'text', 'content': shape.text})\n            if shape.shape_type == 13:  # Picture\n                img = shape.image\n                name = f\"slide{i+1}_img{len(data['images'])+1}.{img.ext}\"\n                path = os.path.join(assets_dir, name)\n                with open(path, 'wb') as f: f.write(img.blob)\n                data['images'].append({'path': f\"assets/{name}\"})\n        if slide.has_notes_slide:\n            data['notes'] = slide.notes_slide.notes_text_frame.text\n        slides_data.append(data)\n    return slides_data\n```\n\nInstall: `pip install python-pptx`\n\nAfter extraction: show user the slide structure for confirmation, then proceed to Phase 2 (style), then Phase 3 (generate).\n\n---\n\n## Phase 5: Delivery\n\n1. Delete `.tmp-slide-previews/` if created\n2. Tell user the output file path\n3. Provide navigation instructions:\n   - Arrow keys / Space to navigate\n   - Scroll or swipe\n   - Click nav dots to jump\n4. Mention how to customize: `:root` CSS variables for colors/fonts\n5. If inline editing enabled: hover top-left corner or press `E`\n6. Ask if any adjustments needed\n\n---\n\n## Style → Feeling Quick Reference\n\n| Feeling | Use |\n|---------|-----|\n| Dramatic/Cinematic | Slow fades (1–1.5s), dark + spotlight, parallax |\n| Techy/Futuristic | Neon glow, particles, grid pattern, monospace accents |\n| Playful/Friendly | Bouncy easing, rounded corners, pastels, floating anim |\n| Professional/Corporate | Fast subtle anim (200–300ms), navy/slate, data-focused |\n| Calm/Minimal | Very slow motion, high whitespace, serif type, muted palette |\n| Editorial/Magazine | Strong type hierarchy, pull quotes, grid-breaking layouts |\n\nFile v1.0.3:README.md\n\n# openclaw-slides\n\n[![Powered by MyClaw.ai](https://img.shields.io/badge/Powered%20by-MyClaw.ai-gold?style=flat-square)](https://myclaw.ai)\n[![OpenClaw Skill](https://img.shields.io/badge/OpenClaw-Skill-blue?style=flat-square)](https://github.com/openclaw/openclaw)\n[![License: MIT](https://img.shields.io/badge/License-MIT-green?style=flat-square)](LICENSE)\n\n> **[MyClaw.ai](https://myclaw.ai)** — Your AI personal assistant with full server control. Every MyClaw instance runs on a dedicated server with complete code access, networking, and tool capabilities. This skill is part of the [MyClaw open skills ecosystem](https://clawhub.com).\n\n**Create stunning, animation-rich HTML presentations — from scratch or by converting PowerPoint files.**\n\nAn OpenClaw agent skill that helps anyone build beautiful web slide decks with zero dependencies. Single HTML files with inline CSS/JS — no npm, no build tools, no frameworks. Works offline, renders forever.\n\n---\n\n🌐 **Languages:** [中文](README.zh-CN.md) · [Français](README.fr.md) · [Deutsch](README.de.md) · [Русский](README.ru.md) · [日本語](README.ja.md) · [Italiano](README.it.md) · [Español](README.es.md)\n\n---\n\n## ✨ Features\n\n- **Zero Dependencies** — Single HTML files with inline CSS/JS. No npm, no build tools, no frameworks.\n- **12 Curated Styles** — Bold Signal, Neon Cyber, Dark Botanical, Swiss Modern, Paper & Ink, and 7 more. No generic AI aesthetics.\n- **PPT Conversion** — Convert existing PowerPoint files to web, preserving all images and content.\n- **Visual Style Discovery** — Can't articulate design preferences? Generate 3 previews and pick what you like.\n- **Production Quality** — Keyboard navigation, touch/swipe, scroll-triggered animations, responsive design, reduced-motion support.\n- **Inline Editing** — Optional in-browser text editing with localStorage auto-save.\n\n## 🎨 Style Presets\n\n| Preset | Vibe | Best For |\n|--------|------|----------|\n| Bold Signal | Confident, high-impact | Pitch decks, keynotes |\n| Electric Studio | Clean, professional | Agency presentations |\n| Creative Voltage | Energetic, retro-modern | Creative pitches |\n| Dark Botanical | Elegant, sophisticated | Premium brands |\n| Notebook Tabs | Editorial, organized | Reports, reviews |\n| Pastel Geometry | Friendly, approachable | Product overviews |\n| Split Pastel | Playful, modern | Creative agencies |\n| Vintage Editorial | Witty, personality-driven | Personal brands |\n| Neon Cyber | Futuristic, techy | Tech startups |\n| Terminal Green | Developer-focused | Dev tools, APIs |\n| Swiss Modern | Minimal, precise | Corporate, data |\n| Paper & Ink | Literary, thoughtful | Storytelling |\n\n## 🚀 Installation\n\n```bash\nclawhub install openclaw-slides\n```\n\nOr manually copy to your OpenClaw workspace skills directory:\n\n```bash\ncp -r openclaw-slides/ ~/.openclaw/workspace/skills/\n```\n\n## 💬 Usage\n\nJust tell your OpenClaw agent what you want:\n\n> \"Create a pitch deck for my AI startup\"\n\n> \"Convert my presentation.pptx to a web slideshow\"\n\n> \"Make a 10-slide tech talk about distributed systems\"\n\nThe agent will:\n1. Ask about your content and style preferences\n2. Generate 3 visual style previews for you to compare\n3. Build the full presentation in your chosen style\n4. Open it in your browser\n\n## 📁 Files\n\n| File | Purpose |\n|------|---------|\n| `SKILL.md` | Main skill instructions for OpenClaw agents |\n| `references/STYLE_PRESETS.md` | Full specs for all 12 visual style presets |\n\n## 🛠 Requirements\n\n- [OpenClaw](https://github.com/openclaw/openclaw) with an AI agent\n- For PPT conversion: Python with `python-pptx` (`pip install python-pptx`)\n- For image processing: Python with `Pillow` (`pip install Pillow`)\n\n## 📄 License\n\nMIT — Use it, modify it, share it.\n\n---\n\n*Adapted for OpenClaw from [zarazhangrui/openclaw-slides](https://github.com/zarazhangrui/openclaw-slides). Powered by [MyClaw.ai](https://myclaw.ai).*\n\nFile v1.0.3:_meta.json\n\n{\n  \"ownerId\": \"kn7fymx2je994eh44j51che37s824w29\",\n  \"slug\": \"openclaw-slides\",\n  \"version\": \"1.0.3\",\n  \"publishedAt\": 1772517753054\n}\n\nFile v1.0.3:references/STYLE_PRESETS.md\n\n# Style Presets Reference\n\nCurated visual styles for Frontend Slides. Each preset is inspired by real design references—no generic \"AI slop\" aesthetics. **Abstract shapes only—no illustrations.**\n\n---\n\n## ⚠️ CRITICAL: Viewport Fitting (Non-Negotiable)\n\n**Every slide MUST fit exactly in the viewport. No scrolling within slides, ever.**\n\n### Content Density Limits Per Slide\n\n| Slide Type | Maximum Content |\n|------------|-----------------|\n| Title slide | 1 heading + 1 subtitle |\n| Content slide | 1 heading + 4-6 bullets (max 2 lines each) |\n| Feature grid | 1 heading + 6 cards (2x3 or 3x2) |\n| Code slide | 1 heading + 8-10 lines of code |\n| Quote slide | 1 quote (max 3 lines) + attribution |\n\n**Too much content? → Split into multiple slides. Never scroll.**\n\n### Required Base CSS (Include in ALL Presentations)\n\n```css\n/* ===========================================\n   VIEWPORT FITTING: MANDATORY\n   Copy this entire block into every presentation\n   =========================================== */\n\n/* 1. Lock document to viewport */\nhtml, body {\n    height: 100%;\n    overflow-x: hidden;\n}\n\nhtml {\n    scroll-snap-type: y mandatory;\n    scroll-behavior: smooth;\n}\n\n/* 2. Each slide = exact viewport height */\n.slide {\n    width: 100vw;\n    height: 100vh;\n    height: 100dvh; /* Dynamic viewport for mobile */\n    overflow: hidden; /* CRITICAL: No overflow ever */\n    scroll-snap-align: start;\n    display: flex;\n    flex-direction: column;\n    position: relative;\n}\n\n/* 3. Content wrapper */\n.slide-content {\n    flex: 1;\n    display: flex;\n    flex-direction: column;\n    justify-content: center;\n    max-height: 100%;\n    overflow: hidden;\n    padding: var(--slide-padding);\n}\n\n/* 4. ALL sizes use clamp() - scales with viewport */\n:root {\n    /* Typography */\n    --title-size: clamp(1.5rem, 5vw, 4rem);\n    --h2-size: clamp(1.25rem, 3.5vw, 2.5rem);\n    --body-size: clamp(0.75rem, 1.5vw, 1.125rem);\n    --small-size: clamp(0.65rem, 1vw, 0.875rem);\n\n    /* Spacing */\n    --slide-padding: clamp(1rem, 4vw, 4rem);\n    --content-gap: clamp(0.5rem, 2vw, 2rem);\n}\n\n/* 5. Cards/containers use viewport-relative max sizes */\n.card, .container {\n    max-width: min(90vw, 1000px);\n    max-height: min(80vh, 700px);\n}\n\n/* 6. Images constrained */\nimg {\n    max-width: 100%;\n    max-height: min(50vh, 400px);\n    object-fit: contain;\n}\n\n/* 7. Grids adapt to space */\n.grid {\n    display: grid;\n    grid-template-columns: repeat(auto-fit, minmax(min(100%, 220px), 1fr));\n    gap: clamp(0.5rem, 1.5vw, 1rem);\n}\n\n/* ===========================================\n   RESPONSIVE BREAKPOINTS - Height-based\n   =========================================== */\n\n/* Short screens (< 700px height) */\n@media (max-height: 700px) {\n    :root {\n        --slide-padding: clamp(0.75rem, 3vw, 2rem);\n        --content-gap: clamp(0.4rem, 1.5vw, 1rem);\n        --title-size: clamp(1.25rem, 4.5vw, 2.5rem);\n    }\n}\n\n/* Very short (< 600px height) */\n@media (max-height: 600px) {\n    :root {\n        --slide-padding: clamp(0.5rem, 2.5vw, 1.5rem);\n        --title-size: clamp(1.1rem, 4vw, 2rem);\n        --body-size: clamp(0.7rem, 1.2vw, 0.95rem);\n    }\n\n    .nav-dots, .keyboard-hint, .decorative {\n        display: none;\n    }\n}\n\n/* Extremely short - landscape phones (< 500px) */\n@media (max-height: 500px) {\n    :root {\n        --slide-padding: clamp(0.4rem, 2vw, 1rem);\n        --title-size: clamp(1rem, 3.5vw, 1.5rem);\n        --body-size: clamp(0.65rem, 1vw, 0.85rem);\n    }\n}\n\n/* Narrow screens */\n@media (max-width: 600px) {\n    .grid {\n        grid-template-columns: 1fr;\n    }\n}\n\n/* Reduced motion */\n@media (prefers-reduced-motion: reduce) {\n    *, *::before, *::after {\n        animation-duration: 0.01ms !important;\n        transition-duration: 0.2s !important;\n    }\n}\n```\n\n### Viewport Fitting Checklist\n\nBefore finalizing any presentation, verify:\n\n- [ ] Every `.slide` has `height: 100vh; height: 100dvh; overflow: hidden;`\n- [ ] All font sizes use `clamp(min, preferred, max)`\n- [ ] All spacing uses `clamp()` or viewport units\n- [ ] Breakpoints exist for heights: 700px, 600px, 500px\n- [ ] Content respects density limits (max 6 bullets, max 6 cards)\n- [ ] No fixed pixel heights on content elements\n- [ ] Images have `max-height` constraints\n- [ ] No negated CSS functions (use `calc(-1 * clamp(...))` not `-clamp(...)`)\n\n---\n\n## Dark Themes\n\n### 1. Bold Signal\n\n**Vibe:** Confident, bold, modern, high-impact\n\n**Layout:** Colored card on dark gradient. Number top-left, navigation top-right, title bottom-left.\n\n**Typography:**\n- Display: `Archivo Black` (900)\n- Body: `Space Grotesk` (400/500)\n\n**Colors:**\n```css\n:root {\n    --bg-primary: #1a1a1a;\n    --bg-gradient: linear-gradient(135deg, #1a1a1a 0%, #2d2d2d 50%, #1a1a1a 100%);\n    --card-bg: #FF5722;\n    --text-primary: #ffffff;\n    --text-on-card: #1a1a1a;\n}\n```\n\n**Signature Elements:**\n- Bold colored card as focal point (orange, coral, or vibrant accent)\n- Large section numbers (01, 02, etc.)\n- Navigation breadcrumbs with active/inactive opacity states\n- Grid-based layout for precise alignment\n\n---\n\n### 2. Electric Studio\n\n**Vibe:** Bold, clean, professional, high contrast\n\n**Layout:** Split panel—white top, blue bottom. Brand marks in corners.\n\n**Typography:**\n- Display: `Manrope` (800)\n- Body: `Manrope` (400/500)\n\n**Colors:**\n```css\n:root {\n    --bg-dark: #0a0a0a;\n    --bg-white: #ffffff;\n    --accent-blue: #4361ee;\n    --text-dark: #0a0a0a;\n    --text-light: #ffffff;\n}\n```\n\n**Signature Elements:**\n- Two-panel vertical split\n- Accent bar on panel edge\n- Quote typography as hero element\n- Minimal, confident spacing\n\n---\n\n### 3. Creative Voltage\n\n**Vibe:** Bold, creative, energetic, retro-modern\n\n**Layout:** Split panels—electric blue left, dark right. Script accents.\n\n**Typography:**\n- Display: `Syne` (700/800)\n- Mono: `Space Mono` (400/700)\n\n**Colors:**\n```css\n:root {\n    --bg-primary: #0066ff;\n    --bg-dark: #1a1a2e;\n    --accent-neon: #d4ff00;\n    --text-light: #ffffff;\n}\n```\n\n**Signature Elements:**\n- Electric blue + neon yellow contrast\n- Halftone texture patterns\n- Neon badges/callouts\n- Script typography for creative flair\n\n---\n\n### 4. Dark Botanical\n\n**Vibe:** Elegant, sophisticated, artistic, premium\n\n**Layout:** Centered content on dark. Abstract soft shapes in corner.\n\n**Typography:**\n- Display: `Cormorant` (400/600) — elegant serif\n- Body: `IBM Plex Sans` (300/400)\n\n**Colors:**\n```css\n:root {\n    --bg-primary: #0f0f0f;\n    --text-primary: #e8e4df;\n    --text-secondary: #9a9590;\n    --accent-warm: #d4a574;\n    --accent-pink: #e8b4b8;\n    --accent-gold: #c9b896;\n}\n```\n\n**Signature Elements:**\n- Abstract soft gradient circles (blurred, overlapping)\n- Warm color accents (pink, gold, terracotta)\n- Thin vertical accent lines\n- Italic signature typography\n- **No illustrations—only abstract CSS shapes**\n\n---\n\n## Light Themes\n\n### 5. Notebook Tabs\n\n**Vibe:** Editorial, organized, elegant, tactile\n\n**Layout:** Cream paper card on dark background. Colorful tabs on right edge.\n\n**Typography:**\n- Display: `Bodoni Moda` (400/700) — classic editorial\n- Body: `DM Sans` (400/500)\n\n**Colors:**\n```css\n:root {\n    --bg-outer: #2d2d2d;\n    --bg-page: #f8f6f1;\n    --text-primary: #1a1a1a;\n    --tab-1: #98d4bb; /* Mint */\n    --tab-2: #c7b8ea; /* Lavender */\n    --tab-3: #f4b8c5; /* Pink */\n    --tab-4: #a8d8ea; /* Sky */\n    --tab-5: #ffe6a7; /* Cream */\n}\n```\n\n**Signature Elements:**\n- Paper container with subtle shadow\n- Colorful section tabs on right edge (vertical text)\n- Binder hole decorations on left\n- Tab text must scale with viewport: `font-size: clamp(0.5rem, 1vh, 0.7rem)`\n\n---\n\n### 6. Pastel Geometry\n\n**Vibe:** Friendly, organized, modern, approachable\n\n**Layout:** White card on pastel background. Vertical pills on right edge.\n\n**Typography:**\n- Display: `Plus Jakarta Sans` (700/800)\n- Body: `Plus Jakarta Sans` (400/500)\n\n**Colors:**\n```css\n:root {\n    --bg-primary: #c8d9e6;\n    --card-bg: #faf9f7;\n    --pill-pink: #f0b4d4;\n    --pill-mint: #a8d4c4;\n    --pill-sage: #5a7c6a;\n    --pill-lavender: #9b8dc4;\n    --pill-violet: #7c6aad;\n}\n```\n\n**Signature Elements:**\n- Rounded card with soft shadow\n- **Vertical pills on right edge** with varying heights (like tabs)\n- Consistent pill width, heights: short → medium → tall → medium → short\n- Download/action icon in corner\n\n---\n\n### 7. Split Pastel\n\n**Vibe:** Playful, modern, friendly, creative\n\n**Layout:** Two-color vertical split (peach left, lavender right).\n\n**Typography:**\n- Display: `Outfit` (700/800)\n- Body: `Outfit` (400/500)\n\n**Colors:**\n```css\n:root {\n    --bg-peach: #f5e6dc;\n    --bg-lavender: #e4dff0;\n    --text-dark: #1a1a1a;\n    --badge-mint: #c8f0d8;\n    --badge-yellow: #f0f0c8;\n    --badge-pink: #f0d4e0;\n}\n```\n\n**Signature Elements:**\n- Split background colors\n- Playful badge pills with icons\n- Grid pattern overlay on right panel\n- Rounded CTA buttons\n\n---\n\n### 8. Vintage Editorial\n\n**Vibe:** Witty, confident, editorial, personality-driven\n\n**Layout:** Centered content on cream. Abstract geometric shapes as accent.\n\n**Typography:**\n- Display: `Fraunces` (700/900) — distinctive serif\n- Body: `Work Sans` (400/500)\n\n**Colors:**\n```css\n:root {\n    --bg-cream: #f5f3ee;\n    --text-primary: #1a1a1a;\n    --text-secondary: #555;\n    --accent-warm: #e8d4c0;\n}\n```\n\n**Signature Elements:**\n- Abstract geometric shapes (circle outline + line + dot)\n- Bold bordered CTA boxes\n- Witty, conversational copy style\n- **No illustrations—only geometric CSS shapes**\n\n---\n\n## Specialty Themes\n\n### 9. Neon Cyber\n\n**Vibe:** Futuristic, techy, confident\n\n**Typography:** `Clash Display` + `Satoshi` (Fontshare)\n\n**Colors:** Deep navy (#0a0f1c), cyan accent (#00ffcc), magenta (#ff00aa)\n\n**Signature:** Particle backgrounds, neon glow, grid patterns\n\n---\n\n### 10. Terminal Green\n\n**Vibe:** Developer-focused, hacker aesthetic\n\n**Typography:** `JetBrains Mono` (monospace only)\n\n**Colors:** GitHub dark (#0d1117), terminal green (#39d353)\n\n**Signature:** Scan lines, blinking cursor, code syntax styling\n\n---\n\n### 11. Swiss Modern\n\n**Vibe:** Clean, precise, Bauhaus-inspired\n\n**Typography:** `Archivo` (800) + `Nunito` (400)\n\n**Colors:** Pure white, pure black, red accent (#ff3300)\n\n**Signature:** Visible grid, asymmetric layouts, geometric shapes\n\n---\n\n### 12. Paper & Ink\n\n**Vibe:** Editorial, literary, thoughtful\n\n**Typography:** `Cormorant Garamond` + `Source Serif 4`\n\n**Colors:** Warm cream (#faf9f7), charcoal (#1a1a1a), crimson accent (#c41e3a)\n\n**Signature:** Drop caps, pull quotes, elegant horizontal rules\n\n---\n\n## Font Pairing Quick Reference\n\n| Preset | Display Font | Body Font | Source |\n|--------|--------------|-----------|--------|\n| Bold Signal | Archivo Black | Space Grotesk | Google |\n| Electric Studio | Manrope | Manrope | Google |\n| Creative Voltage | Syne | Space Mono | Google |\n| Dark Botanical | Cormorant | IBM Plex Sans | Google |\n| Notebook Tabs | Bodoni Moda | DM Sans | Google |\n| Pastel Geometry | Plus Jakarta Sans | Plus Jakarta Sans | Google |\n| Split Pastel | Outfit | Outfit | Google |\n| Vintage Editorial | Fraunces | Work Sans | Google |\n| Neon Cyber | Clash Display | Satoshi | Fontshare |\n| Terminal Green | JetBrains Mono | JetBrains Mono | JetBrains |\n\n---\n\n## DO NOT USE (Generic AI Patterns)\n\n**Fonts:** Inter, Roboto, Arial, system fonts as display\n\n**Colors:** `#6366f1` (generic indigo), purple gradients on white\n\n**Layouts:** Everything centered, generic hero sections, identical card grids\n\n**Decorations:** Realistic illustrations, gratuitous glassmorphism, drop shadows without purpose\n\n---\n\n## CSS Gotchas (Common Mistakes)\n\n### Negating CSS Functions\n\n**WRONG — silently ignored by browsers:**\n```css\nright: -clamp(28px, 3.5vw, 44px);   /* ❌ Invalid! Browser ignores this */\nmargin-left: -min(10vw, 100px);      /* ❌ Invalid! */\ntop: -max(2rem, 4vh);                /* ❌ Invalid! */\n```\n\n**CORRECT — wrap in `calc()`:**\n```css\nright: calc(-1 * clamp(28px, 3.5vw, 44px));  /* ✅ */\nmargin-left: calc(-1 * min(10vw, 100px));     /* ✅ */\ntop: calc(-1 * max(2rem, 4vh));               /* ✅ */\n```\n\nCSS does not allow a leading `-` before function names like `clamp()`, `min()`, `max()`. The browser silently discards the entire declaration, causing the property to fall back to its initial/inherited value. This is especially dangerous because there is no console error — the element simply appears in the wrong position.\n\n**Rule: Always use `calc(-1 * ...)` to negate CSS function values.**\n\n---\n\n## Troubleshooting Viewport Issues\n\n### Content Overflows the Slide\n\n**Symptoms:** Scrollbar appears, content cut off, elements outside viewport\n\n**Solutions:**\n1. Check slide has `overflow: hidden` (not `overflow: auto` or `visible`)\n2. Reduce content — split into multiple slides\n3. Ensure all fonts use `clamp()` not fixed `px` or `rem`\n4. Add/fix height breakpoints for smaller screens\n5. Check images have `max-height: min(50vh, 400px)`\n\n### Text Too Small on Mobile / Too Large on Desktop\n\n**Symptoms:** Unreadable text on phones, oversized text on big screens\n\n**Solutions:**\n```css\n/* Use clamp with viewport-relative middle value */\nfont-size: clamp(1rem, 3vw, 2.5rem);\n/*              ↑       ↑      ↑\n            minimum  scales  maximum */\n```\n\n### Content Doesn't Fill Short Screens\n\n**Symptoms:** Excessive whitespace on landscape phones or short browser windows\n\n**Solutions:**\n1. Add `@media (max-height: 600px)` and `(max-height: 500px)` breakpoints\n2. Reduce padding at smaller heights\n3. Hide decorative elements (`display: none`)\n4. Consider hiding nav dots and hints on short screens\n\n### Testing Recommendations\n\nTest at these viewport sizes:\n- **Desktop:** 1920×1080, 1440×900, 1280×720\n- **Tablet:** 1024×768 (landscape), 768×1024 (portrait)\n- **Mobile:** 375×667 (iPhone SE), 414×896 (iPhone 11)\n- **Landscape phone:** 667×375, 896×414\n\nUse browser DevTools responsive mode to quickly test multiple sizes.\n\nFile v1.0.3:README.de.md\n\n# openclaw-slides\n\n[![Powered by MyClaw.ai](https://img.shields.io/badge/Powered%20by-MyClaw.ai-gold?style=flat-square)](https://myclaw.ai)\n[![OpenClaw Skill](https://img.shields.io/badge/OpenClaw-Skill-blue?style=flat-square)](https://github.com/openclaw/openclaw)\n[![License: MIT](https://img.shields.io/badge/License-MIT-green?style=flat-square)](LICENSE)\n\n> **[MyClaw.ai](https://myclaw.ai)** — Dein KI-Persönlichkeitsassistent mit vollständiger Server-Kontrolle. Jede MyClaw-Instanz läuft auf einem dedizierten Server mit vollständigem Code-Zugriff, Netzwerk und Werkzeugen. Dieser Skill ist Teil des [offenen MyClaw-Skill-Ökosystems](https://clawhub.com).\n\n**Erstelle beeindruckende, animierte HTML-Präsentationen — von Grund auf oder durch Konvertierung von PowerPoint-Dateien.**\n\nEin OpenClaw-Skill, der jedem hilft, schöne Web-Slideshows ohne Abhängigkeiten zu erstellen. Einzelne HTML-Dateien mit integriertem CSS/JS — kein npm, keine Build-Tools, kein Framework.\n\n---\n\n🌐 **Sprachen:** [English](README.md) · [中文](README.zh-CN.md) · [Français](README.fr.md) · [Русский](README.ru.md) · [日本語](README.ja.md) · [Italiano](README.it.md) · [Español](README.es.md)\n\n---\n\n## ✨ Funktionen\n\n- **Keine Abhängigkeiten** — Einzelne HTML-Dateien mit integriertem CSS/JS.\n- **12 kuratierte Stile** — Bold Signal, Neon Cyber, Dark Botanical, Swiss Modern und mehr.\n- **PPT-Konvertierung** — PowerPoint-Dateien in Web-Präsentationen umwandeln.\n- **Visuelle Stilfindung** — Generiere 3 Vorschauen und wähle, was dir gefällt.\n- **Produktionsqualität** — Tastaturnavigation, Touch/Swipe, Animationen, responsives Design.\n\n## 🚀 Installation\n\n```bash\nclawhub install openclaw-slides\n```\n\n## 💬 Verwendung\n\n> \"Erstelle ein Pitch Deck für mein KI-Startup\"\n\n> \"Konvertiere meine Präsentation.pptx in eine Web-Slideshow\"\n\n## 📄 Lizenz\n\nMIT — Nutzen, ändern, teilen.\n\n---\n\n*Für OpenClaw adaptiert von [zarazhangrui/openclaw-slides](https://github.com/zarazhangrui/openclaw-slides). Unterstützt von [MyClaw.ai](https://myclaw.ai).*\n\nFile v1.0.3:README.es.md\n\n# openclaw-slides\n\n[![Powered by MyClaw.ai](https://img.shields.io/badge/Powered%20by-MyClaw.ai-gold?style=flat-square)](https://myclaw.ai)\n[![OpenClaw Skill](https://img.shields.io/badge/OpenClaw-Skill-blue?style=flat-square)](https://github.com/openclaw/openclaw)\n[![License: MIT](https://img.shields.io/badge/License-MIT-green?style=flat-square)](LICENSE)\n\n> **[MyClaw.ai](https://myclaw.ai)** — Tu asistente personal de IA con control total del servidor. Cada instancia de MyClaw corre en un servidor dedicado con acceso completo al código, red y herramientas. Este skill es parte del [ecosistema de skills abiertos de MyClaw](https://clawhub.com).\n\n**Crea impresionantes presentaciones HTML animadas — desde cero o convirtiendo archivos PowerPoint.**\n\nUn skill de OpenClaw que ayuda a cualquiera a crear hermosas presentaciones web sin dependencias. Archivos HTML únicos con CSS/JS integrado — sin npm, sin herramientas de build, sin frameworks.\n\n---\n\n🌐 **Idiomas:** [English](README.md) · [中文](README.zh-CN.md) · [Français](README.fr.md) · [Deutsch](README.de.md) · [Русский](README.ru.md) · [日本語](README.ja.md) · [Italiano](README.it.md)\n\n---\n\n## ✨ Características\n\n- **Cero dependencias** — Archivos HTML únicos con CSS/JS integrado.\n- **12 estilos curados** — Bold Signal, Neon Cyber, Dark Botanical, Swiss Modern y más.\n- **Conversión PPT** — Convierte archivos PowerPoint en presentaciones web.\n- **Descubrimiento visual de estilo** — Genera 3 vistas previas y elige la que más te guste.\n- **Calidad de producción** — Navegación por teclado, touch/swipe, animaciones, diseño responsive.\n\n## 🚀 Instalación\n\n```bash\nclawhub install openclaw-slides\n```\n\n## 💬 Uso\n\n> \"Crea un pitch deck para mi startup de IA\"\n\n> \"Convierte mi presentación.pptx en una presentación web\"\n\n## 📄 Licencia\n\nMIT — Úsalo, modifícalo, compártelo.\n\n---\n\n*Adaptado para OpenClaw desde [zarazhangrui/openclaw-slides](https://github.com/zarazhangrui/openclaw-slides). Desarrollado por [MyClaw.ai](https://myclaw.ai).*\n\nFile v1.0.3:README.fr.md\n\n# openclaw-slides\n\n[![Powered by MyClaw.ai](https://img.shields.io/badge/Powered%20by-MyClaw.ai-gold?style=flat-square)](https://myclaw.ai)\n[![OpenClaw Skill](https://img.shields.io/badge/OpenClaw-Skill-blue?style=flat-square)](https://github.com/openclaw/openclaw)\n[![License: MIT](https://img.shields.io/badge/License-MIT-green?style=flat-square)](LICENSE)\n\n> **[MyClaw.ai](https://myclaw.ai)** — Votre assistant personnel IA avec contrôle complet du serveur. Chaque instance MyClaw tourne sur un serveur dédié avec accès complet au code, réseau et outils. Ce skill fait partie de l'[écosystème de skills ouverts MyClaw](https://clawhub.com).\n\n**Créez de superbes présentations HTML animées — de zéro ou en convertissant des fichiers PowerPoint.**\n\nUn skill OpenClaw qui aide n'importe qui à créer de belles présentations web sans dépendances. Fichiers HTML autonomes avec CSS/JS intégré — sans npm, sans outils de build, sans framework.\n\n---\n\n🌐 **Langues :** [English](README.md) · [中文](README.zh-CN.md) · [Deutsch](README.de.md) · [Русский](README.ru.md) · [日本語](README.ja.md) · [Italiano](README.it.md) · [Español](README.es.md)\n\n---\n\n## ✨ Fonctionnalités\n\n- **Zéro dépendance** — Fichiers HTML autonomes avec CSS/JS intégré.\n- **12 styles personnalisés** — Bold Signal, Neon Cyber, Dark Botanical, Swiss Modern, et plus encore.\n- **Conversion PPT** — Convertissez vos fichiers PowerPoint en présentations web.\n- **Découverte visuelle** — Générez 3 aperçus et choisissez ce que vous aimez.\n- **Qualité production** — Navigation clavier, swipe tactile, animations, design responsive.\n\n## 🚀 Installation\n\n```bash\nclawhub install openclaw-slides\n```\n\n## 💬 Utilisation\n\n> \"Crée un pitch deck pour ma startup IA\"\n\n> \"Convertis ma présentation.pptx en diaporama web\"\n\n## 📄 Licence\n\nMIT — Utilisez-le, modifiez-le, partagez-le.\n\n---\n\n*Adapté pour OpenClaw depuis [zarazhangrui/openclaw-slides](https://github.com/zarazhangrui/openclaw-slides). Propulsé par [MyClaw.ai](https://myclaw.ai).*\n\nFile v1.0.3:README.it.md\n\n# openclaw-slides\n\n[![Powered by MyClaw.ai](https://img.shields.io/badge/Powered%20by-MyClaw.ai-gold?style=flat-square)](https://myclaw.ai)\n[![OpenClaw Skill](https://img.shields.io/badge/OpenClaw-Skill-blue?style=flat-square)](https://github.com/openclaw/openclaw)\n[![License: MIT](https://img.shields.io/badge/License-MIT-green?style=flat-square)](LICENSE)\n\n> **[MyClaw.ai](https://myclaw.ai)** — Il tuo assistente personale AI con pieno controllo del server. Ogni istanza MyClaw gira su un server dedicato con accesso completo al codice, alla rete e agli strumenti. Questo skill fa parte dell'[ecosistema di skill aperti MyClaw](https://clawhub.com).\n\n**Crea splendide presentazioni HTML animate — da zero o convertendo file PowerPoint.**\n\nUno skill OpenClaw che aiuta chiunque a creare belle presentazioni web senza dipendenze. File HTML singoli con CSS/JS integrato — niente npm, niente strumenti di build, niente framework.\n\n---\n\n🌐 **Lingue:** [English](README.md) · [中文](README.zh-CN.md) · [Français](README.fr.md) · [Deutsch](README.de.md) · [Русский](README.ru.md) · [日本語](README.ja.md) · [Español](README.es.md)\n\n---\n\n## ✨ Funzionalità\n\n- **Zero dipendenze** — File HTML singoli con CSS/JS integrato.\n- **12 stili curati** — Bold Signal, Neon Cyber, Dark Botanical, Swiss Modern e altri.\n- **Conversione PPT** — Converti file PowerPoint in presentazioni web.\n- **Scoperta visiva dello stile** — Genera 3 anteprime e scegli quella che preferisci.\n- **Qualità produzione** — Navigazione da tastiera, touch/swipe, animazioni, design responsive.\n\n## 🚀 Installazione\n\n```bash\nclawhub install openclaw-slides\n```\n\n## 💬 Utilizzo\n\n> \"Crea un pitch deck per la mia startup AI\"\n\n> \"Converti la mia presentazione.pptx in una slideshow web\"\n\n## 📄 Licenza\n\nMIT — Usalo, modificalo, condividilo.\n\n---\n\n*Adattato per OpenClaw da [zarazhangrui/openclaw-slides](https://github.com/zarazhangrui/openclaw-slides). Powered by [MyClaw.ai](https://myclaw.ai).*\n\nFile v1.0.3:README.ja.md\n\n# openclaw-slides\n\n[![Powered by MyClaw.ai](https://img.shields.io/badge/Powered%20by-MyClaw.ai-gold?style=flat-square)](https://myclaw.ai)\n[![OpenClaw Skill](https://img.shields.io/badge/OpenClaw-Skill-blue?style=flat-square)](https://github.com/openclaw/openclaw)\n[![License: MIT](https://img.shields.io/badge/License-MIT-green?style=flat-square)](LICENSE)\n\n> **[MyClaw.ai](https://myclaw.ai)** — フルサーバーコントロールを持つAIパーソナルアシスタント。各MyCławインスタンスは、完全なコードアクセス、ネットワーク、ツール機能を備えた専用サーバー上で動作します。このスキルは[MyClaw オープンスキルエコシステム](https://clawhub.com)の一部です。\n\n**美しいアニメーション付きHTMLプレゼンテーションを作成 — ゼロから、またはPowerPointファイルを変換して。**\n\n依存関係なしで美しいウェブスライドを作成できるOpenClawスキル。インラインCSS/JSを含む単一HTMLファイル — npm、ビルドツール、フレームワーク不要。\n\n---\n\n🌐 **言語:** [English](README.md) · [中文](README.zh-CN.md) · [Français](README.fr.md) · [Deutsch](README.de.md) · [Русский](README.ru.md) · [Italiano](README.it.md) · [Español](README.es.md)\n\n---\n\n## ✨ 機能\n\n- **依存関係ゼロ** — インラインCSS/JSを含む単一HTMLファイル。\n- **12種類のスタイル** — Bold Signal、Neon Cyber、Dark Botanical、Swiss Modernなど。\n- **PPT変換** — PowerPointファイルをウェブプレゼンテーションに変換。\n- **ビジュアルスタイル発見** — 3つのプレビューを生成して好みを選択。\n- **本番品質** — キーボードナビゲーション、タッチ/スワイプ、アニメーション、レスポンシブ対応。\n\n## 🚀 インストール\n\n```bash\nclawhub install openclaw-slides\n```\n\n## 💬 使い方\n\n> \"AIスタートアップのピッチデッキを作って\"\n\n> \"presentation.pptxをウェブスライドに変換して\"\n\n## 📄 ライセンス\n\nMIT — 使用・変更・共有自由。\n\n---\n\n*[zarazhangrui/openclaw-slides](https://github.com/zarazhangrui/openclaw-slides)をOpenClaw向けに適応。[MyClaw.ai](https://myclaw.ai)提供。*\n\nFile v1.0.3:README.ru.md\n\n# openclaw-slides\n\n[![Powered by MyClaw.ai](https://img.shields.io/badge/Powered%20by-MyClaw.ai-gold?style=flat-square)](https://myclaw.ai)\n[![OpenClaw Skill](https://img.shields.io/badge/OpenClaw-Skill-blue?style=flat-square)](https://github.com/openclaw/openclaw)\n[![License: MIT](https://img.shields.io/badge/License-MIT-green?style=flat-square)](LICENSE)\n\n> **[MyClaw.ai](https://myclaw.ai)** — Ваш персональный ИИ-ассистент с полным контролем над сервером. Каждый экземпляр MyClaw работает на выделенном сервере с полным доступом к коду, сети и инструментам. Этот skill является частью [открытой экосистемы навыков MyClaw](https://clawhub.com).\n\n**Создавайте красивые анимированные HTML-презентации — с нуля или конвертируя PowerPoint-файлы.**\n\nСкилл для OpenClaw, который помогает создавать красивые веб-слайды без зависимостей. Единые HTML-файлы со встроенным CSS/JS — без npm, без инструментов сборки, без фреймворков.\n\n---\n\n🌐 **Языки:** [English](README.md) · [中文](README.zh-CN.md) · [Français](README.fr.md) · [Deutsch](README.de.md) · [日本語](README.ja.md) · [Italiano](README.it.md) · [Español](README.es.md)\n\n---\n\n## ✨ Возможности\n\n- **Без зависимостей** — Единые HTML-файлы со встроенным CSS/JS.\n- **12 стилей** — Bold Signal, Neon Cyber, Dark Botanical, Swiss Modern и другие.\n- **Конвертация PPT** — Преобразование PowerPoint в веб-презентации.\n- **Визуальный выбор стиля** — Сгенерируйте 3 превью и выберите понравившийся.\n- **Производственное качество** — Навигация с клавиатуры, свайп, анимации, адаптивный дизайн.\n\n## 🚀 Установка\n\n```bash\nclawhub install openclaw-slides\n```\n\n## 💬 Использование\n\n> \"Создай pitch deck для моего AI-стартапа\"\n\n> \"Конвертируй presentation.pptx в веб-слайдшоу\"\n\n## 📄 Лицензия\n\nMIT — Используйте, изменяйте, делитесь.\n\n---\n\n*Адаптировано для OpenClaw из [zarazhangrui/openclaw-slides](https://github.com/zarazhangrui/openclaw-slides). На базе [MyClaw.ai](https://myclaw.ai).*\n\nFile v1.0.3:README.zh-CN.md\n\n# openclaw-slides\n\n[![Powered by MyClaw.ai](https://img.shields.io/badge/Powered%20by-MyClaw.ai-gold?style=flat-square)](https://myclaw.ai)\n[![OpenClaw Skill](https://img.shields.io/badge/OpenClaw-Skill-blue?style=flat-square)](https://github.com/openclaw/openclaw)\n[![License: MIT](https://img.shields.io/badge/License-MIT-green?style=flat-square)](LICENSE)\n\n> **[MyClaw.ai](https://myclaw.ai)** — 你的 AI 个人助理，拥有完整服务器控制权。每个 MyClaw 实例运行在独立服务器上，具备完整的代码访问、网络和工具能力。本 skill 是 [MyClaw 开放技能生态](https://clawhub.com) 的一部分。\n\n**制作精美的动画 HTML 演示文稿——从零开始，或将 PowerPoint 文件转为网页幻灯片。**\n\n这是一个 OpenClaw Agent Skill，帮助任何人构建精美的网页幻灯片。零依赖，单个 HTML 文件内联 CSS/JS，无需 npm、构建工具或框架。离线可用，永久有效。\n\n---\n\n🌐 **语言：** [English](README.md) · [Français](README.fr.md) · [Deutsch](README.de.md) · [Русский](README.ru.md) · [日本語](README.ja.md) · [Italiano](README.it.md) · [Español](README.es.md)\n\n---\n\n## ✨ 功能特性\n\n- **零依赖** — 单个 HTML 文件，内联 CSS/JS。无 npm、无构建工具、无框架。\n- **12 种精选风格** — Bold Signal、Neon Cyber、Dark Botanical、Swiss Modern、Paper & Ink 等，拒绝通用 AI 审美。\n- **PPT 转换** — 将现有 PowerPoint 文件转为网页，保留所有图片和内容。\n- **视觉风格探索** — 不知道自己喜欢什么风格？生成 3 个预览，选你喜欢的。\n- **生产级质量** — 键盘导航、触控滑动、滚动触发动画、响应式设计、减少动效支持。\n- **内联编辑** — 可选的浏览器内文字编辑，自动保存到 localStorage。\n\n## 🎨 风格预设\n\n| 风格 | 氛围 | 适用场景 |\n|------|------|----------|\n| Bold Signal | 自信、高冲击力 | 融资路演、主题演讲 |\n| Electric Studio | 简洁、专业 | 品牌提案 |\n| Creative Voltage | 活力、复古现代 | 创意提案 |\n| Dark Botanical | 优雅、精致 | 高端品牌 |\n| Notebook Tabs | 编辑风、有条理 | 报告、述职 |\n| Pastel Geometry | 友好、亲切 | 产品介绍 |\n| Split Pastel | 活泼、现代 | 创意机构 |\n| Vintage Editorial | 个性、幽默 | 个人品牌 |\n| Neon Cyber | 未来感、科技感 | 科技创业 |\n| Terminal Green | 极客、黑客风 | 开发工具、API |\n| Swiss Modern | 极简、精准 | 企业、数据 |\n| Paper & Ink | 文学感、深思熟虑 | 叙事内容 |\n\n## 🚀 安装\n\n```bash\nclawhub install openclaw-slides\n```\n\n或手动复制到 OpenClaw workspace skills 目录：\n\n```bash\ncp -r openclaw-slides/ ~/.openclaw/workspace/skills/\n```\n\n## 💬 使用方式\n\n直接告诉你的 OpenClaw Agent 你想要什么：\n\n> \"帮我做一个 AI 创业公司的融资 PPT\"\n\n> \"把我的 presentation.pptx 转成网页幻灯片\"\n\n> \"做一个关于分布式系统的 10 页技术演讲\"\n\nAgent 会：\n1. 询问内容和风格偏好\n2. 生成 3 个视觉风格预览供你选择\n3. 用你选择的风格构建完整演示文稿\n4. 在浏览器中打开\n\n## 🛠 依赖要求\n\n- [OpenClaw](https://github.com/openclaw/openclaw) + AI Agent\n- PPT 转换：Python + `python-pptx`（`pip install python-pptx`）\n- 图片处理：Python + `Pillow`（`pip install Pillow`）\n\n## 📄 许可证\n\nMIT — 自由使用、修改、分发。\n\n---\n\n*基于 [zarazhangrui/openclaw-slides](https://github.com/zarazhangrui/openclaw-slides) 适配 OpenClaw。由 [MyClaw.ai](https://myclaw.ai) 提供支持。*\n\nArchive v1.0.2: 11 files, 23678 bytes\n\nFiles: _meta.json (134b), README.de.md (2088b), README.es.md (2069b), README.fr.md (2077b), README.it.md (2008b), README.ja.md (2301b), README.md (3944b), README.ru.md (2704b), README.zh-CN.md (3632b), references/STYLE_PRESETS.md (13934b), SKILL.md (13127b)\n\nFile v1.0.2:SKILL.md\n\n---\nname: openclaw-slides\ndescription: Create stunning, animation-rich HTML presentations from scratch or convert PowerPoint files (.ppt/.pptx) to beautiful web slides. Use when the user wants to build a pitch deck, presentation, slideshow, or slide deck — or convert an existing PPT to a web presentation. Generates zero-dependency single HTML files with keyboard/touch navigation and scroll-triggered animations. Style options include Neon Cyber, Bold Signal, Swiss Modern, Paper & Ink, and 8 more curated presets.\nopenclaw:\n  requires:\n    bins: []\n  install:\n    - id: python-pptx\n      kind: shell\n      label: \"Install Python dependencies for PPT conversion (optional — only needed for Mode B)\"\n      command: \"pip install python-pptx Pillow\"\n      optional: true\n---\n\n# OpenClaw Slides\n\nCreate zero-dependency, animation-rich HTML presentations that run entirely in the browser. Single self-contained HTML files — no npm, no build tools, no frameworks. Works offline, renders in 10 years.\n\n**Style presets:** Bold Signal, Electric Studio, Creative Voltage, Dark Botanical, Notebook Tabs, Pastel Geometry, Split Pastel, Vintage Editorial, Neon Cyber, Terminal Green, Swiss Modern, Paper & Ink\n\nFor full style details and CSS specs: read `references/STYLE_PRESETS.md` when needed.\n\n---\n\n## Phase 0: Detect Mode\n\nDetermine the user's intent:\n\n- **Mode A — New Presentation:** Create slides from scratch → go to Phase 1\n- **Mode B — PPT Conversion:** Convert an existing `.ppt`/`.pptx` file → go to Phase 4\n- **Mode C — Enhance Existing:** Improve an existing HTML presentation → read the file, then enhance (always maintain viewport fitting)\n\n---\n\n## CRITICAL: Viewport Fitting (Non-Negotiable)\n\n**Every slide MUST fit exactly within the viewport. No scrolling within slides, ever.**\n\n### Content Density Limits Per Slide\n\n| Slide Type | Maximum Content |\n|------------|-----------------|\n| Title slide | 1 heading + 1 subtitle + optional tagline |\n| Content slide | 1 heading + 4–6 bullet points OR 1 heading + 2 paragraphs |\n| Feature grid | 1 heading + 6 cards max (2×3 or 3×2) |\n| Code slide | 1 heading + 8–10 lines of code |\n| Quote slide | 1 quote (max 3 lines) + attribution |\n| Image slide | 1 heading + 1 image (max 60vh height) |\n\n**Content exceeds limits → Split into multiple slides.**\n\n### Required CSS for Every Presentation\n\n```css\nhtml, body { height: 100%; overflow-x: hidden; }\nhtml { scroll-snap-type: y mandatory; scroll-behavior: smooth; }\n\n.slide {\n    width: 100vw;\n    height: 100vh;\n    height: 100dvh;\n    overflow: hidden;\n    scroll-snap-align: start;\n    display: flex;\n    flex-direction: column;\n    position: relative;\n}\n\n.slide-content {\n    flex: 1;\n    display: flex;\n    flex-direction: column;\n    justify-content: center;\n    max-height: 100%;\n    overflow: hidden;\n    padding: var(--slide-padding);\n}\n\n:root {\n    --title-size: clamp(1.5rem, 5vw, 4rem);\n    --h2-size: clamp(1.25rem, 3.5vw, 2.5rem);\n    --body-size: clamp(0.75rem, 1.5vw, 1.125rem);\n    --slide-padding: clamp(1rem, 4vw, 4rem);\n    --content-gap: clamp(0.5rem, 2vw, 2rem);\n}\n\nimg, .image-container { max-width: 100%; max-height: min(50vh, 400px); object-fit: contain; }\n.card, .container { max-width: min(90vw, 1000px); max-height: min(80vh, 700px); }\n.grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 220px), 1fr)); gap: clamp(0.5rem, 1.5vw, 1rem); }\n\n@media (max-height: 700px) { :root { --slide-padding: clamp(0.75rem, 3vw, 2rem); --title-size: clamp(1.25rem, 4.5vw, 2.5rem); } }\n@media (max-height: 600px) { :root { --title-size: clamp(1.1rem, 4vw, 2rem); --body-size: clamp(0.7rem, 1.2vw, 0.95rem); } .nav-dots, .keyboard-hint { display: none; } }\n@media (max-height: 500px) { :root { --title-size: clamp(1rem, 3.5vw, 1.5rem); --slide-padding: clamp(0.4rem, 2vw, 1rem); } }\n@media (max-width: 600px) { .grid { grid-template-columns: 1fr; } }\n@media (prefers-reduced-motion: reduce) { *, *::before, *::after { animation-duration: 0.01ms !important; transition-duration: 0.2s !important; } }\n```\n\n**⚠️ Never negate CSS functions directly.** Use `calc(-1 * clamp(...))` not `-clamp(...)`.\n\n---\n\n## Phase 1: Content Discovery (New Presentations)\n\nAsk the user (via normal conversation — ask all at once):\n\n1. **Purpose:** pitch deck / teaching / conference talk / internal presentation?\n2. **Length:** ~5–10 / 10–20 / 20+ slides?\n3. **Content:** ready content, rough notes, or just a topic?\n4. **Images:** any images to include? (provide path like `./assets` or `~/Desktop/screenshots`)\n5. **Inline editing:** should text be editable in-browser after generation?\n\nIf they have content, ask them to share it.\n\n### Image Evaluation (if images provided)\n\nAll image processing is done **locally on the user's machine** — images are never sent to external services.\n\n1. `ls` the folder — find all `.png/.jpg/.jpeg/.gif/.svg/.webp`\n2. Read each image file locally using the `read` tool\n3. Mark each as `USABLE` or `NOT USABLE` (reason: blurry, irrelevant, etc.)\n4. Note what each represents (logo, screenshot, chart, etc.) and dominant colors\n5. Build slide outline that incorporates usable images as visual anchors\n6. Present outline + image assignments to user for confirmation\n\nIf user says **no images** → skip image pipeline, use CSS-generated visuals (gradients, shapes, patterns) throughout.\n\n---\n\n## Phase 2: Style Discovery\n\n### Option A — Direct Selection (user knows what they want)\n\nPick from presets:\n\n| Preset | Vibe |\n|--------|------|\n| Bold Signal | Confident, high-impact, dark |\n| Electric Studio | Clean, professional, split panel |\n| Creative Voltage | Energetic, retro-modern |\n| Dark Botanical | Elegant, sophisticated |\n| Notebook Tabs | Editorial, organized |\n| Pastel Geometry | Friendly, approachable |\n| Split Pastel | Playful, modern |\n| Vintage Editorial | Witty, personality-driven |\n| Neon Cyber | Futuristic, techy |\n| Terminal Green | Developer-focused, hacker |\n| Swiss Modern | Minimal, precise |\n| Paper & Ink | Literary, thoughtful |\n\nSkip to Phase 3.\n\n### Option B — Visual Discovery (default for undecided users)\n\nAsk: **What feeling should the audience have?**\n- Impressed/Confident → Bold Signal, Electric Studio, Dark Botanical\n- Excited/Energized → Creative Voltage, Neon Cyber, Split Pastel\n- Calm/Focused → Notebook Tabs, Paper & Ink, Swiss Modern\n- Inspired/Moved → Dark Botanical, Vintage Editorial, Pastel Geometry\n\nGenerate **3 mini style preview HTML files** in `.tmp-slide-previews/` — each is a single title slide showing typography, colors, and animation. Tell the user the file paths and ask which they prefer.\n\n**Never use:** purple gradients on white, Inter/Roboto/system fonts, generic blue primary colors.\n\n**Use instead:** distinctive font pairings (Clash Display, Satoshi, Cormorant, DM Sans), cohesive personality-driven palettes, atmospheric backgrounds.\n\nFor full preset specs (colors, fonts, signature elements): read `references/STYLE_PRESETS.md`.\n\n---\n\n## Phase 3: Generate Presentation\n\n### Image Processing (skip if no images)\n\nIf user provided images, process with Python Pillow before generating HTML:\n\n```python\nfrom PIL import Image, ImageDraw\n\n# Circular crop (for logos)\ndef crop_circle(input_path, output_path):\n    img = Image.open(input_path).convert('RGBA')\n    w, h = img.size\n    size = min(w, h)\n    img = img.crop(((w-size)//2, (h-size)//2, (w+size)//2, (h+size)//2))\n    mask = Image.new('L', (size, size), 0)\n    ImageDraw.Draw(mask).ellipse([0, 0, size, size], fill=255)\n    img.putalpha(mask)\n    img.save(output_path, 'PNG')\n\n# Resize large images\ndef resize_max(input_path, output_path, max_dim=1200):\n    img = Image.open(input_path)\n    img.thumbnail((max_dim, max_dim), Image.LANCZOS)\n    img.save(output_path, quality=85)\n```\n\nInstall if needed: `pip install Pillow`\n\n**Use direct file paths in HTML** (not base64), e.g. `src=\"assets/logo_round.png\"`. Never overwrite originals — save processed files with `_processed` suffix.\n\n### HTML Architecture\n\n```html\n<!DOCTYPE html>\n<html lang=\"en\">\n<head>\n    <meta charset=\"UTF-8\">\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n    <title>Presentation Title</title>\n    <!-- Fonts via Fontshare or Google Fonts -->\n    <style>\n        /* CSS Custom Properties (theme) */\n        :root { /* colors, typography with clamp(), spacing */ }\n        /* Mandatory viewport base CSS (see above) */\n        /* Slide-specific styles */\n        /* Animations (.reveal → .visible .reveal) */\n        /* Responsive breakpoints */\n    </style>\n</head>\n<body>\n    <div class=\"progress-bar\"></div>\n    <nav class=\"nav-dots\"></nav>\n\n    <section class=\"slide title-slide\">\n        <h1 class=\"reveal\">Title</h1>\n        <p class=\"reveal\">Subtitle</p>\n    </section>\n    <!-- More slides... -->\n\n    <script>\n        class SlidePresentation {\n            // Keyboard nav (arrows, space)\n            // Touch/swipe support\n            // Mouse wheel navigation\n            // Progress bar + nav dots\n            // Intersection Observer for .reveal animations\n        }\n        new SlidePresentation();\n    </script>\n</body>\n</html>\n```\n\n### Required JS Features\n\n- Keyboard navigation: arrow keys, space\n- Touch/swipe support\n- Mouse wheel navigation\n- Progress bar + navigation dots\n- Intersection Observer → adds `.visible` class → triggers CSS animations\n- Staggered reveal delays (nth-child 0.1s, 0.2s, 0.3s...)\n\n### Inline Editing (only if user opted in)\n\n**⚠️ Do NOT use CSS `~` sibling selector for hover-based show/hide** — `pointer-events: none` breaks the hover chain. Use JS with delay timeout:\n\n```javascript\n// Hotzone hover with 400ms grace period\nconst hotzone = document.querySelector('.edit-hotzone');\nconst editToggle = document.getElementById('editToggle');\nlet hideTimeout = null;\n\nhotzone.addEventListener('mouseenter', () => { clearTimeout(hideTimeout); editToggle.classList.add('show'); });\nhotzone.addEventListener('mouseleave', () => { hideTimeout = setTimeout(() => { if (!editor.isActive) editToggle.classList.remove('show'); }, 400); });\neditToggle.addEventListener('mouseenter', () => clearTimeout(hideTimeout));\neditToggle.addEventListener('mouseleave', () => { hideTimeout = setTimeout(() => { if (!editor.isActive) editToggle.classList.remove('show'); }, 400); });\n\n// Keyboard: E key (skip when editing)\ndocument.addEventListener('keydown', (e) => {\n    if ((e.key === 'e' || e.key === 'E') && !e.target.getAttribute('contenteditable')) editor.toggleEditMode();\n});\n```\n\nFeatures: contenteditable text, auto-save to localStorage, export/save file.\n\n### Code Quality\n\n- Comment every major CSS and JS section\n- Semantic HTML: `<section>`, `<nav>`, `<main>`\n- ARIA labels on interactive elements\n- `@media (prefers-reduced-motion: reduce)` support\n\n---\n\n## Phase 4: PPT Conversion\n\n```python\nfrom pptx import Presentation\nimport os\n\ndef extract_pptx(file_path, output_dir):\n    prs = Presentation(file_path)\n    assets_dir = os.path.join(output_dir, 'assets')\n    os.makedirs(assets_dir, exist_ok=True)\n    slides_data = []\n\n    for i, slide in enumerate(prs.slides):\n        data = {'number': i+1, 'title': '', 'content': [], 'images': [], 'notes': ''}\n        for shape in slide.shapes:\n            if shape.has_text_frame:\n                if shape == slide.shapes.title:\n                    data['title'] = shape.text\n                else:\n                    data['content'].append({'type': 'text', 'content': shape.text})\n            if shape.shape_type == 13:  # Picture\n                img = shape.image\n                name = f\"slide{i+1}_img{len(data['images'])+1}.{img.ext}\"\n                path = os.path.join(assets_dir, name)\n                with open(path, 'wb') as f: f.write(img.blob)\n                data['images'].append({'path': f\"assets/{name}\"})\n        if slide.has_notes_slide:\n            data['notes'] = slide.notes_slide.notes_text_frame.text\n        slides_data.append(data)\n    return slides_data\n```\n\nInstall: `pip install python-pptx`\n\nAfter extraction: show user the slide structure for confirmation, then proceed to Phase 2 (style), then Phase 3 (generate).\n\n---\n\n## Phase 5: Delivery\n\n1. Delete `.tmp-slide-previews/` if created\n2. Tell user the output file path\n3. Provide navigation instructions:\n   - Arrow keys / Space to navigate\n   - Scroll or swipe\n   - Click nav dots to jump\n4. Mention how to customize: `:root` CSS variables for colors/fonts\n5. If inline editing enabled: hover top-left corner or press `E`\n6. Ask if any adjustments needed\n\n---\n\n## Style → Feeling Quick Reference\n\n| Feeling | Use |\n|---------|-----|\n| Dramatic/Cinematic | Slow fades (1–1.5s), dark + spotlight, parallax |\n| Techy/Futuristic | Neon glow, particles, grid pattern, monospace accents |\n| Playful/Friendly | Bouncy easing, rounded corners, pastels, floating anim |\n| Professional/Corporate | Fast subtle anim (200–300ms), navy/slate, data-focused |\n| Calm/Minimal | Very slow motion, high whitespace, serif type, muted palette |\n| Editorial/Magazine | Strong type hierarchy, pull quotes, grid-breaking layouts |\n\nFile v1.0.2:README.md\n\n# openclaw-slides\n\n[![Powered by MyClaw.ai](https://img.shields.io/badge/Powered%20by-MyClaw.ai-gold?style=flat-square)](https://myclaw.ai)\n[![OpenClaw Skill](https://img.shields.io/badge/OpenClaw-Skill-blue?style=flat-square)](https://github.com/openclaw/openclaw)\n[![License: MIT](https://img.shields.io/badge/License-MIT-green?style=flat-square)](LICENSE)\n\n> **[MyClaw.ai](https://myclaw.ai)** — Your AI personal assistant with full server control. Every MyClaw instance runs on a dedicated server with complete code access, networking, and tool capabilities. This skill is part of the [MyClaw open skills ecosystem](https://clawhub.com).\n\n**Create stunning, animation-rich HTML presentations — from scratch or by converting PowerPoint files.**\n\nAn OpenClaw agent skill that helps anyone build beautiful web slide decks with zero dependencies. Single HTML files with inline CSS/JS — no npm, no build tools, no frameworks. Works offline, renders forever.\n\n---\n\n🌐 **Languages:** [中文](README.zh-CN.md) · [Français](README.fr.md) · [Deutsch](README.de.md) · [Русский](README.ru.md) · [日本語](README.ja.md) · [Italiano](README.it.md) · [Español](README.es.md)\n\n---\n\n## ✨ Features\n\n- **Zero Dependencies** — Single HTML files with inline CSS/JS. No npm, no build tools, no frameworks.\n- **12 Curated Styles** — Bold Signal, Neon Cyber, Dark Botanical, Swiss Modern, Paper & Ink, and 7 more. No generic AI aesthetics.\n- **PPT Conversion** — Convert existing PowerPoint files to web, preserving all images and content.\n- **Visual Style Discovery** — Can't articulate design preferences? Generate 3 previews and pick what you like.\n- **Production Quality** — Keyboard navigation, touch/swipe, scroll-triggered animations, responsive design, reduced-motion support.\n- **Inline Editing** — Optional in-browser text editing with localStorage auto-save.\n\n## 🎨 Style Presets\n\n| Preset | Vibe | Best For |\n|--------|------|----------|\n| Bold Signal | Confident, high-impact | Pitch decks, keynotes |\n| Electric Studio | Clean, professional | Agency presentations |\n| Creative Voltage | Energetic, retro-modern | Creative pitches |\n| Dark Botanical | Elegant, sophisticated | Premium brands |\n| Notebook Tabs | Editorial, organized | Reports, reviews |\n| Pastel Geometry | Friendly, approachable | Product overviews |\n| Split Pastel | Playful, modern | Creative agencies |\n| Vintage Editorial | Witty, personality-driven | Personal brands |\n| Neon Cyber | Futuristic, techy | Tech startups |\n| Terminal Green | Developer-focused | Dev tools, APIs |\n| Swiss Modern | Minimal, precise | Corporate, data |\n| Paper & Ink | Literary, thoughtful | Storytelling |\n\n## 🚀 Installation\n\n```bash\nclawhub install openclaw-slides\n```\n\nOr manually copy to your OpenClaw workspace skills directory:\n\n```bash\ncp -r openclaw-slides/ ~/.openclaw/workspace/skills/\n```\n\n## 💬 Usage\n\nJust tell your OpenClaw agent what you want:\n\n> \"Create a pitch deck for my AI startup\"\n\n> \"Convert my presentation.pptx to a web slideshow\"\n\n> \"Make a 10-slide tech talk about distributed systems\"\n\nThe agent will:\n1. Ask about your content and style preferences\n2. Generate 3 visual style previews for you to compare\n3. Build the full presentation in your chosen style\n4. Open it in your browser\n\n## 📁 Files\n\n| File | Purpose |\n|------|---------|\n| `SKILL.md` | Main skill instructions for OpenClaw agents |\n| `references/STYLE_PRESETS.md` | Full specs for all 12 visual style presets |\n\n## 🛠 Requirements\n\n- [OpenClaw](https://github.com/openclaw/openclaw) with an AI agent\n- For PPT conversion: Python with `python-pptx` (`pip install python-pptx`)\n- For image processing: Python with `Pillow` (`pip install Pillow`)\n\n## 📄 License\n\nMIT — Use it, modify it, share it.\n\n---\n\n*Adapted for OpenClaw from [zarazhangrui/openclaw-slides](https://github.com/zarazhangrui/openclaw-slides). Powered by [MyClaw.ai](https://myclaw.ai).*\n\nFile v1.0.2:_meta.json\n\n{\n  \"ownerId\": \"kn7fymx2je994eh44j51che37s824w29\",\n  \"slug\": \"openclaw-slides\",\n  \"version\": \"1.0.2\",\n  \"publishedAt\": 1772517489882\n}\n\nFile v1.0.2:references/STYLE_PRESETS.md\n\n# Style Presets Reference\n\nCurated visual styles for Frontend Slides. Each preset is inspired by real design references—no generic \"AI slop\" aesthetics. **Abstract shapes only—no illustrations.**\n\n---\n\n## ⚠️ CRITICAL: Viewport Fitting (Non-Negotiable)\n\n**Every slide MUST fit exactly in the viewport. No scrolling within slides, ever.**\n\n### Content Density Limits Per Slide\n\n| Slide Type | Maximum Content |\n|------------|-----------------|\n| Title slide | 1 heading + 1 subtitle |\n| Content slide | 1 heading + 4-6 bullets (max 2 lines each) |\n| Feature grid | 1 heading + 6 cards (2x3 or 3x2) |\n| Code slide | 1 heading + 8-10 lines of code |\n| Quote slide | 1 quote (max 3 lines) + attribution |\n\n**Too much content? → Split into multiple slides. Never scroll.**\n\n### Required Base CSS (Include in ALL Presentations)\n\n```css\n/* ===========================================\n   VIEWPORT FITTING: MANDATORY\n   Copy this entire block into every presentation\n   =========================================== */\n\n/* 1. Lock document to viewport */\nhtml, body {\n    height: 100%;\n    overflow-x: hidden;\n}\n\nhtml {\n    scroll-snap-type: y mandatory;\n    scroll-behavior: smooth;\n}\n\n/* 2. Each slide = exact viewport height */\n.slide {\n    width: 100vw;\n    height: 100vh;\n    height: 100dvh; /* Dynamic viewport for mobile */\n    overflow: hidden; /* CRITICAL: No overflow ever */\n    scroll-snap-align: start;\n    display: flex;\n    flex-direction: column;\n    position: relative;\n}\n\n/* 3. Content wrapper */\n.slide-content {\n    flex: 1;\n    display: flex;\n    flex-direction: column;\n    justify-content: center;\n    max-height: 100%;\n    overflow: hidden;\n    padding: var(--slide-padding);\n}\n\n/* 4. ALL sizes use clamp() - scales with viewport */\n:root {\n    /* Typography */\n    --title-size: clamp(1.5rem, 5vw, 4rem);\n    --h2-size: clamp(1.25rem, 3.5vw, 2.5rem);\n    --body-size: clamp(0.75rem, 1.5vw, 1.125rem);\n    --small-size: clamp(0.65rem, 1vw, 0.875rem);\n\n    /* Spacing */\n    --slide-padding: clamp(1rem, 4vw, 4rem);\n    --content-gap: clamp(0.5rem, 2vw, 2rem);\n}\n\n/* 5. Cards/containers use viewport-relative max sizes */\n.card, .container {\n    max-width: min(90vw, 1000px);\n    max-height: min(80vh, 700px);\n}\n\n/* 6. Images constrained */\nimg {\n    max-width: 100%;\n    max-height: min(50vh, 400px);\n    object-fit: contain;\n}\n\n/* 7. Grids adapt to space */\n.grid {\n    display: grid;\n    grid-template-columns: repeat(auto-fit, minmax(min(100%, 220px), 1fr));\n    gap: clamp(0.5rem, 1.5vw, 1rem);\n}\n\n/* ===========================================\n   RESPONSIVE BREAKPOINTS - Height-based\n   =========================================== */\n\n/* Short screens (< 700px height) */\n@media (max-height: 700px) {\n    :root {\n        --slide-padding: clamp(0.75rem, 3vw, 2rem);\n        --content-gap: clamp(0.4rem, 1.5vw, 1rem);\n        --title-size: clamp(1.25rem, 4.5vw, 2.5rem);\n    }\n}\n\n/* Very short (< 600px height) */\n@media (max-height: 600px) {\n    :root {\n        --slide-padding: clamp(0.5rem, 2.5vw, 1.5rem);\n        --title-size: clamp(1.1rem, 4vw, 2rem);\n        --body-size: clamp(0.7rem, 1.2vw, 0.95rem);\n    }\n\n    .nav-dots, .keyboard-hint, .decorative {\n        display: none;\n    }\n}\n\n/* Extremely short - landscape phones (< 500px) */\n@media (max-height: 500px) {\n    :root {\n        --slide-padding: clamp(0.4rem, 2vw, 1rem);\n        --title-size: clamp(1rem, 3.5vw, 1.5rem);\n        --body-size: clamp(0.65rem, 1vw, 0.85rem);\n    }\n}\n\n/* Narrow screens */\n@media (max-width: 600px) {\n    .grid {\n        grid-template-columns: 1fr;\n    }\n}\n\n/* Reduced motion */\n@media (prefers-reduced-motion: reduce) {\n    *, *::before, *::after {\n        animation-duration: 0.01ms !important;\n        transition-duration: 0.2s !important;\n    }\n}\n```\n\n### Viewport Fitting Checklist\n\nBefore finalizing any presentation, verify:\n\n- [ ] Every `.slide` has `height: 100vh; height: 100dvh; overflow: hidden;`\n- [ ] All font sizes use `clamp(min, preferred, max)`\n- [ ] All spacing uses `clamp()` or viewport units\n- [ ] Breakpoints exist for heights: 700px, 600px, 500px\n- [ ] Content respects density limits (max 6 bullets, max 6 cards)\n- [ ] No fixed pixel heights on content elements\n- [ ] Images have `max-height` constraints\n- [ ] No negated CSS functions (use `calc(-1 * clamp(...))` not `-clamp(...)`)\n\n---\n\n## Dark Themes\n\n### 1. Bold Signal\n\n**Vibe:** Confident, bold, modern, high-impact\n\n**Layout:** Colored card on dark gradient. Number top-left, navigation top-right, title bottom-left.\n\n**Typography:**\n- Display: `Archivo Black` (900)\n- Body: `Space Grotesk` (400/500)\n\n**Colors:**\n```css\n:root {\n    --bg-primary: #1a1a1a;\n    --bg-gradient: linear-gradient(135deg, #1a1a1a 0%, #2d2d2d 50%, #1a1a1a 100%);\n    --card-bg: #FF5722;\n    --text-primary: #ffffff;\n    --text-on-card: #1a1a1a;\n}\n```\n\n**Signature Elements:**\n- Bold colored card as focal point (orange, coral, or vibrant accent)\n- Large section numbers (01, 02, etc.)\n- Navigation breadcrumbs with active/inactive opacity states\n- Grid-based layout for precise alignment\n\n---\n\n### 2. Electric Studio\n\n**Vibe:** Bold, clean, professional, high contrast\n\n**Layout:** Split panel—white top, blue bottom. Brand marks in corners.\n\n**Typography:**\n- Display: `Manrope` (800)\n- Body: `Manrope` (400/500)\n\n**Colors:**\n```css\n:root {\n    --bg-dark: #0a0a0a;\n    --bg-white: #ffffff;\n    --accent-blue: #4361ee;\n    --text-dark: #0a0a0a;\n    --text-light: #ffffff;\n}\n```\n\n**Signature Elements:**\n- Two-panel vertical split\n- Accent bar on panel edge\n- Quote typography as hero element\n- Minimal, confident spacing\n\n---\n\n### 3. Creative Voltage\n\n**Vibe:** Bold, creative, energetic, retro-modern\n\n**Layout:** Split panels—electric blue left, dark right. Script accents.\n\n**Typography:**\n- Display: `Syne` (700/800)\n- Mono: `Space Mono` (400/700)\n\n**Colors:**\n```css\n:root {\n    --bg-primary: #0066ff;\n    --bg-dark: #1a1a2e;\n    --accent-neon: #d4ff00;\n    --text-light: #ffffff;\n}\n```\n\n**Signature Elements:**\n- Electric blue + neon yellow contrast\n- Halftone texture patterns\n- Neon badges/callouts\n- Script typography for creative flair\n\n---\n\n### 4. Dark Botanical\n\n**Vibe:** Elegant, sophisticated, artistic, premium\n\n**Layout:** Centered content on dark. Abstract soft shapes in corner.\n\n**Typography:**\n- Display: `Cormorant` (400/600) — elegant serif\n- Body: `IBM Plex Sans` (300/400)\n\n**Colors:**\n```css\n:root {\n    --bg-primary: #0f0f0f;\n    --text-primary: #e8e4df;\n    --text-secondary: #9a9590;\n    --accent-warm: #d4a574;\n    --accent-pink: #e8b4b8;\n    --accent-gold: #c9b896;\n}\n```\n\n**Signature Elements:**\n- Abstract soft gradient circles (blurred, overlapping)\n- Warm color accents (pink, gold, terracotta)\n- Thin vertical accent lines\n- Italic signature typography\n- **No illustrations—only abstract CSS shapes**\n\n---\n\n## Light Themes\n\n### 5. Notebook Tabs\n\n**Vibe:** Editorial, organized, elegant, tactile\n\n**Layout:** Cream paper card on dark background. Colorful tabs on right edge.\n\n**Typography:**\n- Display: `Bodoni Moda` (400/700) — classic editorial\n- Body: `DM Sans` (400/500)\n\n**Colors:**\n```css\n:root {\n    --bg-outer: #2d2d2d;\n    --bg-page: #f8f6f1;\n    --text-primary: #1a1a1a;\n    --tab-1: #98d4bb; /* Mint */\n    --tab-2: #c7b8ea; /* Lavender */\n    --tab-3: #f4b8c5; /* Pink */\n    --tab-4: #a8d8ea; /* Sky */\n    --tab-5: #ffe6a7; /* Cream */\n}\n```\n\n**Signature Elements:**\n- Paper container with subtle shadow\n- Colorful section tabs on right edge (vertical text)\n- Binder hole decorations on left\n- Tab text must scale with viewport: `font-size: clamp(0.5rem, 1vh, 0.7rem)`\n\n---\n\n### 6. Pastel Geometry\n\n**Vibe:** Friendly, organized, modern, approachable\n\n**Layout:** White card on pastel background. Vertical pills on right edge.\n\n**Typography:**\n- Display: `Plus Jakarta Sans` (700/800)\n- Body: `Plus Jakarta Sans` (400/500)\n\n**Colors:**\n```css\n:root {\n    --bg-primary: #c8d9e6;\n    --card-bg: #faf9f7;\n    --pill-pink: #f0b4d4;\n    --pill-mint: #a8d4c4;\n    --pill-sage: #5a7c6a;\n    --pill-lavender: #9b8dc4;\n    --pill-violet: #7c6aad;\n}\n```\n\n**Signature Elements:**\n- Rounded card with soft shadow\n- **Vertical pills on right edge** with varying heights (like tabs)\n- Consistent pill width, heights: short → medium → tall → medium → short\n- Download/action icon in corner\n\n---\n\n### 7. Split Pastel\n\n**Vibe:** Playful, modern, friendly, creative\n\n**Layout:** Two-color vertical split (peach left, lavender right).\n\n**Typography:**\n- Display: `Outfit` (700/800)\n- Body: `Outfit` (400/500)\n\n**Colors:**\n```css\n:root {\n    --bg-peach: #f5e6dc;\n    --bg-lavender: #e4dff0;\n    --text-dark: #1a1a1a;\n    --badge-mint: #c8f0d8;\n    --badge-yellow: #f0f0c8;\n    --badge-pink: #f0d4e0;\n}\n```\n\n**Signature Elements:**\n- Split background colors\n- Playful badge pills with icons\n- Grid pattern overlay on right panel\n- Rounded CTA buttons\n\n---\n\n### 8. Vintage Editorial\n\n**Vibe:** Witty, confident, editorial, personality-driven\n\n**Layout:** Centered content on cream. Abstract geometric shapes as accent.\n\n**Typography:**\n- Display: `Fraunces` (700/900) — distinctive serif\n- Body: `Work Sans` (400/500)\n\n**Colors:**\n```css\n:root {\n    --bg-cream: #f5f3ee;\n    --text-primary: #1a1a1a;\n    --text-secondary: #555;\n    --accent-warm: #e8d4c0;\n}\n```\n\n**Signature Elements:**\n- Abstract geometric shapes (circle outline + line + dot)\n- Bold bordered CTA boxes\n- Witty, conversational copy style\n- **No illustrations—only geometric CSS shapes**\n\n---\n\n## Specialty Themes\n\n### 9. Neon Cyber\n\n**Vibe:** Futuristic, techy, confident\n\n**Typography:** `Clash Display` + `Satoshi` (Fontshare)\n\n**Colors:** Deep navy (#0a0f1c), cyan accent (#00ffcc), magenta (#ff00aa)\n\n**Signature:** Particle backgrounds, neon glow, grid patterns\n\n---\n\n### 10. Terminal Green\n\n**Vibe:** Developer-focused, hacker aesthetic\n\n**Typography:** `JetBrains Mono` (monospace only)\n\n**Colors:** GitHub dark (#0d1117), terminal green (#39d353)\n\n**Signature:** Scan lines, blinking cursor, code syntax styling\n\n---\n\n### 11. Swiss Modern\n\n**Vibe:** Clean, precise, Bauhaus-inspired\n\n**Typography:** `Archivo` (800) + `Nunito` (400)\n\n**Colors:** Pure white, pure black, red accent (#ff3300)\n\n**Signature:** Visible grid, asymmetric layouts, geometric shapes\n\n---\n\n### 12. Paper & Ink\n\n**Vibe:** Editorial, literary, thoughtful\n\n**Typography:** `Cormorant Garamond` + `Source Serif 4`\n\n**Colors:** Warm cream (#faf9f7), charcoal (#1a1a1a), crimson accent (#c41e3a)\n\n**Signature:** Drop caps, pull quotes, elegant horizontal rules\n\n---\n\n## Font Pairing Quick Reference\n\n| Preset | Display Font | Body Font | Source |\n|--------|--------------|-----------|--------|\n| Bold Signal | Archivo Black | Space Grotesk | Google |\n| Electric Studio | Manrope | Manrope | Google |\n| Creative Voltage | Syne | Space Mono | Google |\n| Dark Botanical | Cormorant | IBM Plex Sans | Google |\n| Notebook Tabs | Bodoni Moda | DM Sans | Google |\n| Pastel Geometry | Plus Jakarta Sans | Plus Jakarta Sans | Google |\n| Split Pastel | Outfit | Outfit | Google |\n| Vintage Editorial | Fraunces | Work Sans | Google |\n| Neon Cyber | Clash Display | Satoshi | Fontshare |\n| Terminal Green | JetBrains Mono | JetBrains Mono | JetBrains |\n\n---\n\n## DO NOT USE (Generic AI Patterns)\n\n**Fonts:** Inter, Roboto, Arial, system fonts as display\n\n**Colors:** `#6366f1` (generic indigo), purple gradients on white\n\n**Layouts:** Everything centered, generic hero sections, identical card grids\n\n**Decorations:** Realistic illustrations, gratuitous glassmorphism, drop shadows without purpose\n\n---\n\n## CSS Gotchas (Common Mistakes)\n\n### Negating CSS Functions\n\n**WRONG — silently ignored by browsers:**\n```css\nright: -clamp(28px, 3.5vw, 44px);   /* ❌ Invalid! Browser ignores this */\nmargin-left: -min(10vw, 100px);      /* ❌ Invalid! */\ntop: -max(2rem, 4vh);                /* ❌ Invalid! */\n```\n\n**CORRECT — wrap in `calc()`:**\n```css\nright: calc(-1 * clamp(28px, 3.5vw, 44px));  /* ✅ */\nmargin-left: calc(-1 * min(10vw, 100px));     /* ✅ */\ntop: calc(-1 * max(2rem, 4vh));               /* ✅ */\n```\n\nCSS does not allow a leading `-` before function names like `clamp()`, `min()`, `max()`. The browser silently discards the entire declaration, causing the property to fall back to its initial/inherited value. This is especially dangerous because there is no console error — the element simply appears in the wrong position.\n\n**Rule: Always use `calc(-1 * ...)` to negate CSS function values.**\n\n---\n\n## Troubleshooting Viewport Issues\n\n### Content Overflows the Slide\n\n**Symptoms:** Scrollbar appears, content cut off, elements outside viewport\n\n**Solutions:**\n1. Check slide has `overflow: hidden` (not `overflow: auto` or `visible`)\n2. Reduce content — split into multiple slides\n3. Ensure all fonts use `clamp()` not fixed `px` or `rem`\n4. Add/fix height breakpoints for smaller screens\n5. Check images have `max-height: min(50vh, 400px)`\n\n### Text Too Small on Mobile / Too Large on Desktop\n\n**Symptoms:** Unreadable text on phones, oversized text on big screens\n\n**Solutions:**\n```css\n/* Use clamp with viewport-relative middle value */\nfont-size: clamp(1rem, 3vw, 2.5rem);\n/*              ↑       ↑      ↑\n            minimum  scales  maximum */\n```\n\n### Content Doesn't Fill Short Screens\n\n**Symptoms:** Excessive whitespace on landscape phones or short browser windows\n\n**Solutions:**\n1. Add `@media (max-height: 600px)` and `(max-height: 500px)` breakpoints\n2. Reduce padding at smaller heights\n3. Hide decorative elements (`display: none`)\n4. Consider hiding nav dots and hints on short screens\n\n### Testing Recommendations\n\nTest at these viewport sizes:\n- **Desktop:** 1920×1080, 1440×900, 1280×720\n- **Tablet:** 1024×768 (landscape), 768×1024 (portrait)\n- **Mobile:** 375×667 (iPhone SE), 414×896 (iPhone 11)\n- **Landscape phone:** 667×375, 896×414\n\nUse browser DevTools responsive mode to quickly test multiple sizes.\n\nFile v1.0.2:README.de.md\n\n# openclaw-slides\n\n[![Powered by MyClaw.ai](https://img.shields.io/badge/Powered%20by-MyClaw.ai-gold?style=flat-square)](https://myclaw.ai)\n[![OpenClaw Skill](https://img.shields.io/badge/OpenClaw-Skill-blue?style=flat-square)](https://github.com/openclaw/openclaw)\n[![License: MIT](https://img.shields.io/badge/License-MIT-green?style=flat-square)](LICENSE)\n\n> **[MyClaw.ai](https://myclaw.ai)** — Dein KI-Persönlichkeitsassistent mit vollständiger Server-Kontrolle. Jede MyClaw-Instanz läuft auf einem dedizierten Server mit vollständigem Code-Zugriff, Netzwerk und Werkzeugen. Dieser Skill ist Teil des [offenen MyClaw-Skill-Ökosystems](https://clawhub.com).\n\n**Erstelle beeindruckende, animierte HTML-Präsentationen — von Grund auf oder durch Konvertierung von PowerPoint-Dateien.**\n\nEin OpenClaw-Skill, der jedem hilft, schöne Web-Slideshows ohne Abhängigkeiten zu erstellen. Einzelne HTML-Dateien mit integriertem CSS/JS — kein npm, keine Build-Tools, kein Framework.\n\n---\n\n🌐 **Sprachen:** [English](README.md) · [中文](README.zh-CN.md) · [Français](README.fr.md) · [Русский](README.ru.md) · [日本語](README.ja.md) · [Italiano](README.it.md) · [Español](README.es.md)\n\n---\n\n## ✨ Funktionen\n\n- **Keine Abhängigkeiten** — Einzelne HTML-Dateien mit integriertem CSS/JS.\n- **12 kuratierte Stile** — Bold Signal, Neon Cyber, Dark Botanical, Swiss Modern und mehr.\n- **PPT-Konvertierung** — PowerPoint-Dateien in Web-Präsentationen umwandeln.\n- **Visuelle Stilfindung** — Generiere 3 Vorschauen und wähle, was dir gefällt.\n- **Produktionsqualität** — Tastaturnavigation, Touch/Swipe, Animationen, responsives Design.\n\n## 🚀 Installation\n\n```bash\nclawhub install openclaw-slides\n```\n\n## 💬 Verwendung\n\n> \"Erstelle ein Pitch Deck für mein KI-Startup\"\n\n> \"Konvertiere meine Präsentation.pptx in eine Web-Slideshow\"\n\n## 📄 Lizenz\n\nMIT — Nutzen, ändern, teilen.\n\n---\n\n*Für OpenClaw adaptiert von [zarazhangrui/openclaw-slides](https://github.com/zarazhangrui/openclaw-slides). Unterstützt von [MyClaw.ai](https://myclaw.ai).*\n\nFile v1.0.2:README.es.md\n\n# openclaw-slides\n\n[![Powered by MyClaw.ai](https://img.shields.io/badge/Powered%20by-MyClaw.ai-gold?style=flat-square)](https://myclaw.ai)\n[![OpenClaw Skill](https://img.shields.io/badge/OpenClaw-Skill-blue?style=flat-square)](https://github.com/openclaw/openclaw)\n[![License: MIT](https://img.shields.io/badge/License-MIT-green?style=flat-square)](LICENSE)\n\n> **[MyClaw.ai](https://myclaw.ai)** — Tu asistente personal de IA con control total del servidor. Cada instancia de MyClaw corre en un servidor dedicado con acceso completo al código, red y herramientas. Este skill es parte del [ecosistema de skills abiertos de MyClaw](https://clawhub.com).\n\n**Crea impresionantes presentaciones HTML animadas — desde cero o convirtiendo archivos PowerPoint.**\n\nUn skill de OpenClaw que ayuda a cualquiera a crear hermosas presentaciones web sin dependencias. Archivos HTML únicos con CSS/JS integrado — sin npm, sin herramientas de build, sin frameworks.\n\n---\n\n🌐 **Idiomas:** [English](README.md) · [中文](README.zh-CN.md) · [Français](README.fr.md) · [Deutsch](README.de.md) · [Русский](README.ru.md) · [日本語](README.ja.md) · [Italiano](README.it.md)\n\n---\n\n## ✨ Características\n\n- **Cero dependencias** — Archivos HTML únicos con CSS/JS integrado.\n- **12 estilos curados** — Bold Signal, Neon Cyber, Dark Botanical, Swiss Modern y más.\n- **Conversión PPT** — Convierte archivos PowerPoint en presentaciones web.\n- **Descubrimiento visual de estilo** — Genera 3 vistas previas y elige la que más te guste.\n- **Calidad de producción** — Navegación por teclado, touch/swipe, animaciones, diseño responsive.\n\n## 🚀 Instalación\n\n```bash\nclawhub install openclaw-slides\n```\n\n## 💬 Uso\n\n> \"Crea un pitch deck para mi startup de IA\"\n\n> \"Convierte mi presentación.pptx en una presentación web\"\n\n## 📄 Licencia\n\nMIT — Úsalo, modifícalo, compártelo.\n\n---\n\n*Adaptado para OpenClaw desde [zarazhangrui/openclaw-slides](https://github.com/zarazhangrui/openclaw-slides). Desarrollado por [MyClaw.ai](https://myclaw.ai).*\n\nFile v1.0.2:README.fr.md\n\n# openclaw-slides\n\n[![Powered by MyClaw.ai](https://img.shields.io/badge/Powered%20by-MyClaw.ai-gold?style=flat-square)](https://myclaw.ai)\n[![OpenClaw Skill](https://img.shields.io/badge/OpenClaw-Skill-blue?style=flat-square)](https://github.com/openclaw/openclaw)\n[![License: MIT](https://img.shields.io/badge/License-MIT-green?style=flat-square)](LICENSE)\n\n> **[MyClaw.ai](https://myclaw.ai)** — Votre assistant personnel IA avec contrôle complet du serveur. Chaque instance MyClaw tourne sur un serveur dédié avec accès complet au code, réseau et outils. Ce skill fait partie de l'[écosystème de skills ouverts MyClaw](https://clawhub.com).\n\n**Créez de superbes présentations HTML animées — de zéro ou en convertissant des fichiers PowerPoint.**\n\nUn skill OpenClaw qui aide n'importe qui à créer de belles présentations web sans dépendances. Fichiers HTML autonomes avec CSS/JS intégré — sans npm, sans outils de build, sans framework.\n\n---\n\n🌐 **Langues :** [English](README.md) · [中文](README.zh-CN.md) · [Deutsch](README.de.md) · [Русский](README.ru.md) · [日本語](README.ja.md) · [Italiano](README.it.md) · [Español](README.es.md)\n\n---\n\n## ✨ Fonctionnalités\n\n- **Zéro dépendance** — Fichiers HTML autonomes avec CSS/JS intégré.\n- **12 styles personnalisés** — Bold Signal, Neon Cyber, Dark Botanical, Swiss Modern, et plus encore.\n- **Conversion PPT** — Convertissez vos fichiers PowerPoint en présentations web.\n- **Découverte visuelle** — Générez 3 aperçus et choisissez ce que vous aimez.\n- **Qualité production** — Navigation clavier, swipe tactile, animations, design responsive.\n\n## 🚀 Installation\n\n```bash\nclawhub install openclaw-slides\n```\n\n## 💬 Utilisation\n\n> \"Crée un pitch deck pour ma startup IA\"\n\n> \"Convertis ma présentation.pptx en diaporama web\"\n\n## 📄 Licence\n\nMIT — Utilisez-le, modifiez-le, partagez-le.\n\n---\n\n*Adapté pour OpenClaw depuis [zarazhangrui/openclaw-slides](https://github.com/zarazhangrui/openclaw-slides). Propulsé par [MyClaw.ai](https://myclaw.ai).*\n\nFile v1.0.2:README.it.md\n\n# openclaw-slides\n\n[![Powered by MyClaw.ai](https://img.shields.io/badge/Powered%20by-MyClaw.ai-gold?style=flat-square)](https://myclaw.ai)\n[![OpenClaw Skill](https://img.shields.io/badge/OpenClaw-Skill-blue?style=flat-square)](https://github.com/openclaw/openclaw)\n[![License: MIT](https://img.shields.io/badge/License-MIT-green?style=flat-square)](LICENSE)\n\n> **[MyClaw.ai](https://myclaw.ai)** — Il tuo assistente personale AI con pieno controllo del server. Ogni istanza MyClaw gira su un server dedicato con accesso completo al codice, alla rete e agli strumenti. Questo skill fa parte dell'[ecosistema di skill aperti MyClaw](https://clawhub.com).\n\n**Crea splendide presentazioni HTML animate — da zero o convertendo file PowerPoint.**\n\nUno skill OpenClaw che aiuta chiunque a creare belle presentazioni web senza dipendenze. File HTML singoli con CSS/JS integrato — niente npm, niente strumenti di build, niente framework.\n\n---\n\n🌐 **Lingue:** [English](README.md) · [中文](README.zh-CN.md) · [Français](README.fr.md) · [Deutsch](README.de.md) · [Русский](README.ru.md) · [日本語](README.ja.md) · [Español](README.es.md)\n\n---\n\n## ✨ Funzionalità\n\n- **Zero dipendenze** — File HTML singoli con CSS/JS integrato.\n- **12 stili curati** — Bold Signal, Neon Cyber, Dark Botanical, Swiss Modern e altri.\n- **Conversione PPT** — Converti file PowerPoint in presentazioni web.\n- **Scoperta visiva dello stile** — Genera 3 anteprime e scegli quella che preferisci.\n- **Qualità produzione** — Navigazione da tastiera, touch/swipe, animazioni, design responsive.\n\n## 🚀 Installazione\n\n```bash\nclawhub install openclaw-slides\n```\n\n## 💬 Utilizzo\n\n> \"Crea un pitch deck per la mia startup AI\"\n\n> \"Converti la mia presentazione.pptx in una slideshow web\"\n\n## 📄 Licenza\n\nMIT — Usalo, modificalo, condividilo.\n\n---\n\n*Adattato per OpenClaw da [zarazhangrui/openclaw-slides](https://github.com/zarazhangrui/openclaw-slides). Powered by [MyClaw.ai](https://myclaw.ai).*\n\nFile v1.0.2:README.ja.md\n\n# openclaw-slides\n\n[![Powered by MyClaw.ai](https://img.shields.io/badge/Powered%20by-MyClaw.ai-gold?style=flat-square)](https://myclaw.ai)\n[![OpenClaw Skill](https://img.shields.io/badge/OpenClaw-Skill-blue?style=flat-square)](https://github.com/openclaw/openclaw)\n[![License: MIT](https://img.shields.io/badge/License-MIT-green?style=flat-square)](LICENSE)\n\n> **[MyClaw.ai](https://myclaw.ai)** — フルサーバーコントロールを持つAIパーソナルアシスタント。各MyCławインスタンスは、完全なコードアクセス、ネットワーク、ツール機能を備えた専用サーバー上で動作します。このスキルは[MyClaw オープンスキルエコシステム](https://clawhub.com)の一部です。\n\n**美しいアニメーション付きHTMLプレゼンテーションを作成 — ゼロから、またはPowerPointファイルを変換して。**\n\n依存関係なしで美しいウェブスライドを作成できるOpenClawスキル。インラインCSS/JSを含む単一HTMLファイル — npm、ビルドツール、フレームワーク不要。\n\n---\n\n🌐 **言語:** [English](README.md) · [中文](README.zh-CN.md) · [Français](README.fr.md) · [Deutsch](README.de.md) · [Русский](README.ru.md) · [Italiano](README.it.md) · [Español](README.es.md)\n\n---\n\n## ✨ 機能\n\n- **依存関係ゼロ** — インラインCSS/JSを含む単一HTMLファイル。\n- **12種類のスタイル** — Bold Signal、Neon Cyber、Dark Botanical、Swiss Modernなど。\n- **PPT変換** — PowerPointファイルをウェブプレゼンテーションに変換。\n- **ビジュアルスタイル発見** — 3つのプレビューを生成して好みを選択。\n- **本番品質** — キーボードナビゲーション、タッチ/スワイプ、アニメーション、レスポンシブ対応。\n\n## 🚀 インストール\n\n```bash\nclawhub install openclaw-slides\n```\n\n## 💬 使い方\n\n> \"AIスタートアップのピッチデッキを作って\"\n\n> \"presentation.pptxをウェブスライドに変換して\"\n\n## 📄 ライセンス\n\nMIT — 使用・変更・共有自由。\n\n---\n\n*[zarazhangrui/openclaw-slides](https://github.com/zarazhangrui/openclaw-slides)をOpenClaw向けに適応。[MyClaw.ai](https://myclaw.ai)提供。*\n\nFile v1.0.2:README.ru.md\n\n# openclaw-slides\n\n[![Powered by MyClaw.ai](https://img.shields.io/badge/Powered%20by-MyClaw.ai-gold?style=flat-square)](https://myclaw.ai)\n[![OpenClaw Skill](https://img.shields.io/badge/OpenClaw-Skill-blue?style=flat-square)](https://github.com/openclaw/openclaw)\n[![License: MIT](https://img.shields.io/badge/License-MIT-green?style=flat-square)](LICENSE)\n\n> **[MyClaw.ai](https://myclaw.ai)** — Ваш персональный ИИ-ассистент с полным контролем над сервером. Каждый экземпляр MyClaw работает на выделенном сервере с полным доступом к коду, сети и инструментам. Этот skill является частью [открытой экосистемы навыков MyClaw](https://clawhub.com).\n\n**Создавайте красивые анимированные HTML-презентации — с нуля или конвертируя PowerPoint-файлы.**\n\nСкилл для OpenClaw, который помогает создавать красивые веб-слайды без зависимостей. Единые HTML-файлы со встроенным CSS/JS — без npm, без инструментов сборки, без фреймворков.\n\n---\n\n🌐 **Языки:** [English](README.md) · [中文](README.zh-CN.md) · [Français](README.fr.md) · [Deutsch](README.de.md) · [日本語](README.ja.md) · [Italiano](README.it.md) · [Español](README.es.md)\n\n---\n\n## ✨ Возможности\n\n- **Без зависимостей** — Единые HTML-файлы со встроенным CSS/JS.\n- **12 стилей** — Bold Signal, Neon Cyber, Dark Botanical, Swiss Modern и другие.\n- **Конвертация PPT** — Преобразование PowerPoint в веб-презентации.\n- **Визуальный выбор стиля** — Сгенерируйте 3 превью и выберите понравившийся.\n- **Производственное качество** — Навигация с клавиатуры, свайп, анимации, адаптивный дизайн.\n\n## 🚀 Установка\n\n```bash\nclawhub install openclaw-slides\n```\n\n## 💬 Использование\n\n> \"Создай pitch deck для моего AI-стартапа\"\n\n> \"Конвертируй presentation.pptx в веб-слайдшоу\"\n\n## 📄 Лицензия\n\nMIT — Используйте, изменяйте, делитесь.\n\n---\n\n*Адаптировано для OpenClaw из [zarazhangrui/openclaw-slides](https://github.com/zarazhangrui/openclaw-slides). На базе [MyClaw.ai](https://myclaw.ai).*\n\nFile v1.0.2:README.zh-CN.md\n\n# openclaw-slides\n\n[![Powered by MyClaw.ai](https://img.shields.io/badge/Powered%20by-MyClaw.ai-gold?style=flat-square)](https://myclaw.ai)\n[![OpenClaw Skill](https://img.shields.io/badge/OpenClaw-Skill-blue?style=flat-square)](https://github.com/openclaw/openclaw)\n[![License: MIT](https://img.shields.io/badge/License-MIT-green?style=flat-square)](LICENSE)\n\n> **[MyClaw.ai](https://myclaw.ai)** — 你的 AI 个人助理，拥有完整服务器控制权。每个 MyClaw 实例运行在独立服务器上，具备完整的代码访问、网络和工具能力。本 skill 是 [MyClaw 开放技能生态](https://clawhub.com) 的一部分。\n\n**制作精美的动画 HTML 演示文稿——从零开始，或将 PowerPoint 文件转为网页幻灯片。**\n\n这是一个 OpenClaw Agent Skill，帮助任何人构建精美的网页幻灯片。零依赖，单个 HTML 文件内联 CSS/JS，无需 npm、构建工具或框架。离线可用，永久有效。\n\n---\n\n🌐 **语言：** [English](README.md) · [Français](README.fr.md) · [Deutsch](README.de.md) · [Русский](README.ru.md) · [日本語](README.ja.md) · [Italiano](README.it.md) · [Español](README.es.md)\n\n---\n\n## ✨ 功能特性\n\n- **零依赖** — 单个 HTML 文件，内联 CSS/JS。无 npm、无构建工具、无框架。\n- **12 种精选风格** — Bold Signal、Neon Cyber、Dark Botanical、Swiss Modern、Paper & Ink 等，拒绝通用 AI 审美。\n- **PPT 转换** — 将现有 PowerPoint 文件转为网页，保留所有图片和内容。\n- **视觉风格探索** — 不知道自己喜欢什么风格？生成 3 个预览，选你喜欢的。\n- **生产级质量** — 键盘导航、触控滑动、滚动触发动画、响应式设计、减少动效支持。\n- **内联编辑** — 可选的浏览器内文字编辑，自动保存到 localStorage。\n\n## 🎨 风格预设\n\n| 风格 | 氛围 | 适用场景 |\n|------|------|----------|\n| Bold Signal | 自信、高冲击力 | 融资路演、主题演讲 |\n| Electric Studio | 简洁、专业 | 品牌提案 |\n| Creative Voltage | 活力、复古现代 | 创意提案 |\n| Dark Botanical | 优雅、精致 | 高端品牌 |\n| Notebook Tabs | 编辑风、有条理 | 报告、述职 |\n| Pastel Geometry | 友好、亲切 | 产品介绍 |\n| Split Pastel | 活泼、现代 | 创意机构 |\n| Vintage Editorial | 个性、幽默 | 个人品牌 |\n| Neon Cyber | 未来感、科技感 | 科技创业 |\n| Terminal Green | 极客、黑客风 | 开发工具、API |\n| Swiss Modern | 极简、精准 | 企业、数据 |\n| Paper & Ink | 文学感、深思熟虑 | 叙事内容 |\n\n## 🚀 安装\n\n```bash\nclawhub install openclaw-slides\n```\n\n或手动复制到 OpenClaw workspace skills 目录：\n\n```bash\ncp -r openclaw-slides/ ~/.openclaw/workspace/skills/\n```\n\n## 💬 使用方式\n\n直接告诉你的 OpenClaw Agent 你想要什么：\n\n> \"帮我做一个 AI 创业公司的融资 PPT\"\n\n> \"把我的 presentation.pptx 转成网页幻灯片\"\n\n> \"做一个关于分布式系统的 10 页技术演讲\"\n\nAgent 会：\n1. 询问内容和风格偏好\n2. 生成 3 个视觉风格预览供你选择\n3. 用你选择的风格构建完整演示文稿\n4. 在浏览器中打开\n\n## 🛠 依赖要求\n\n- [OpenClaw](https://github.com/openclaw/openclaw) + AI Agent\n- PPT 转换：Python + `python-pptx`（`pip install python-pptx`）\n- 图片处理：Python + `Pillow`（`pip install Pillow`）\n\n## 📄 许可证\n\nMIT — 自由使用、修改、分发。\n\n---\n\n*基于 [zarazhangrui/openclaw-slides](https://github.com/zarazhangrui/openclaw-slides) 适配 OpenClaw。由 [MyClaw.ai](https://myclaw.ai) 提供支持。*\n\nArchive v1.0.1: 11 files, 22488 bytes\n\nFiles: _meta.json (134b), README.de.md (1778b), README.es.md (1772b), README.fr.md (1782b), README.it.md (1711b), README.ja.md (1913b), README.md (3659b), README.ru.md (2236b), README.zh-CN.md (3349b), references/STYLE_PRESETS.md (13934b), SKILL.md (13127b)\n\nFile v1.0.1:SKILL.md\n\n---\nname: openclaw-slides\ndescription: Create stunning, animation-rich HTML presentations from scratch or convert PowerPoint files (.ppt/.pptx) to beautiful web slides. Use when the user wants to build a pitch deck, presentation, slideshow, or slide deck — or convert an existing PPT to a web presentation. Generates zero-dependency single HTML files with keyboard/touch navigation and scroll-triggered animations. Style options include Neon Cyber, Bold Signal, Swiss Modern, Paper & Ink, and 8 more curated presets.\nopenclaw:\n  requires:\n    bins: []\n  install:\n    - id: python-pptx\n      kind: shell\n      label: \"Install Python dependencies for PPT conversion (optional — only needed for Mode B)\"\n      command: \"pip install python-pptx Pillow\"\n      optional: true\n---\n\n# OpenClaw Slides\n\nCreate zero-dependency, animation-rich HTML presentations that run entirely in the browser. Single self-contained HTML files — no npm, no build tools, no frameworks. Works offline, renders in 10 years.\n\n**Style presets:** Bold Signal, Electric Studio, Creative Voltage, Dark Botanical, Notebook Tabs, Pastel Geometry, Split Pastel, Vintage Editorial, Neon Cyber, Terminal Green, Swiss Modern, Paper & Ink\n\nFor full style details and CSS specs: read `references/STYLE_PRESETS.md` when needed.\n\n---\n\n## Phase 0: Detect Mode\n\nDetermine the user's intent:\n\n- **Mode A — New Presentation:** Create slides from scratch → go to Phase 1\n- **Mode B — PPT Conversion:** Convert an existing `.ppt`/`.pptx` file → go to Phase 4\n- **Mode C — Enhance Existing:** Improve an existing HTML presentation → read the file, then enhance (always maintain viewport fitting)\n\n---\n\n## CRITICAL: Viewport Fitting (Non-Negotiable)\n\n**Every slide MUST fit exactly within the viewport. No scrolling within slides, ever.**\n\n### Content Density Limits Per Slide\n\n| Slide Type | Maximum Content |\n|------------|-----------------|\n| Title slide | 1 heading + 1 subtitle + optional tagline |\n| Content slide | 1 heading + 4–6 bullet points OR 1 heading + 2 paragraphs |\n| Feature grid | 1 heading + 6 cards max (2×3 or 3×2) |\n| Code slide | 1 heading + 8–10 lines of code |\n| Quote slide | 1 quote (max 3 lines) + attribution |\n| Image slide | 1 heading + 1 image (max 60vh height) |\n\n**Content exceeds limits → Split into multiple slides.**\n\n### Required CSS for Every Presentation\n\n```css\nhtml, body { height: 100%; overflow-x: hidden; }\nhtml { scroll-snap-type: y mandatory; scroll-behavior: smooth; }\n\n.slide {\n    width: 100vw;\n    height: 100vh;\n    height: 100dvh;\n    overflow: hidden;\n    scroll-snap-align: start;\n    display: flex;\n    flex-direction: column;\n    position: relative;\n}\n\n.slide-content {\n    flex: 1;\n    display: flex;\n    flex-direction: column;\n    justify-content: center;\n    max-height: 100%;\n    overflow: hidden;\n    padding: var(--slide-padding);\n}\n\n:root {\n    --title-size: clamp(1.5rem, 5vw, 4rem);\n    --h2-size: clamp(1.25rem, 3.5vw, 2.5rem);\n    --body-size: clamp(0.75rem, 1.5vw, 1.125rem);\n    --slide-padding: clamp(1rem, 4vw, 4rem);\n    --content-gap: clamp(0.5rem, 2vw, 2rem);\n}\n\nimg, .image-container { max-width: 100%; max-height: min(50vh, 400px); \n\nArchive v1.0.0: 11 files, 22336 bytes\n\nFiles: README.de.md (1778b), README.es.md (1772b), README.fr.md (1782b), README.it.md (1711b), README.ja.md (1913b), README.md (3659b), README.ru.md (2236b), README.zh-CN.md (3349b), references/STYLE_PRESETS.md (13934b), SKILL.md (12766b), _meta.json (134b)","readmeExcerpt":"Skill: openclaw-slides Owner: leoyeai Summary: Create stunning, animation-rich HTML presentations from scratch or convert PowerPoint files (.ppt/.pptx) to beautiful web slides. Use when the user wants to... Tags: latest:2.0.0 Version history: v2.0.0 | 2026-03-28T07:13:16.632Z | user Update ecosystem links to myclaw.ai/skills v1.0.3 | 2026-03-03T06:02:33.054Z | user Add MyClaw.ai intro + link to SKILL.md (visible on C","codeSnippets":[],"executableExamples":[{"language":"css","snippet":"html, body { height: 100%; overflow-x: hidden; }\nhtml { scroll-snap-type: y mandatory; scroll-behavior: smooth; }\n\n.slide {\n    width: 100vw;\n    height: 100vh;\n    height: 100dvh;\n    overflow: hidden;\n    scroll-snap-align: start;\n    display: flex;\n    flex-direction: column;\n    position: relative;\n}\n\n.slide-content {\n    flex: 1;\n    display: flex;\n    flex-direction: column;\n    justify-content: center;\n    max-height: 100%;\n    overflow: hidden;\n    padding: var(--slide-padding);\n}\n\n:root {\n    --title-size: clamp(1.5rem, 5vw, 4rem);\n    --h2-size: clamp(1.25rem, 3.5vw, 2.5rem);\n    --body-size: clamp(0.75rem, 1.5vw, 1.125rem);\n    --slide-padding: clamp(1rem, 4vw, 4rem);\n    --content-gap: clamp(0.5rem, 2vw, 2rem);\n}\n\nimg, .image-container { max-width: 100%; max-height: min(50vh, 400px); object-fit: contain; }\n.card, .container { max-width: min(90vw, 1000px); max-height: min(80vh, 700px); }\n.grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 220px), 1fr)); gap: clamp(0.5rem, 1.5vw, 1rem); }\n\n@media (max-height: 700px) { :root { --slide-padding: clamp(0.75rem, 3vw, 2rem); --title-size: clamp(1.25rem, 4.5vw, 2.5rem); } }\n@media (max-height: 600px) { :root { --title-size: clamp(1.1rem, 4vw, 2rem); --body-size: clamp(0.7rem, 1.2vw, 0.95rem); } .nav-dots, .keyboard-hint { display: none; } }\n@media (max-height: 500px) { :root { --title-size: clamp(1rem, 3.5vw, 1.5rem); --slide-padding: clamp(0.4rem, 2vw, 1rem); } }\n@media (max-width: 600px) { .grid { grid-template-columns: 1fr; } }\n@media (prefers-reduced-motion: reduce) { *, *::before, *::after { animation-duration: 0.01ms !important; transition-duration: 0.2s !important; } }"},{"language":"python","snippet":"from PIL import Image, ImageDraw\n\n# Circular crop (for logos)\ndef crop_circle(input_path, output_path):\n    img = Image.open(input_path).convert('RGBA')\n    w, h = img.size\n    size = min(w, h)\n    img = img.crop(((w-size)//2, (h-size)//2, (w+size)//2, (h+size)//2))\n    mask = Image.new('L', (size, size), 0)\n    ImageDraw.Draw(mask).ellipse([0, 0, size, size], fill=255)\n    img.putalpha(mask)\n    img.save(output_path, 'PNG')\n\n# Resize large images\ndef resize_max(input_path, output_path, max_dim=1200):\n    img = Image.open(input_path)\n    img.thumbnail((max_dim, max_dim), Image.LANCZOS)\n    img.save(output_path, quality=85)"},{"language":"html","snippet":"<!DOCTYPE html>\n<html lang=\"en\">\n<head>\n    <meta charset=\"UTF-8\">\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n    <title>Presentation Title</title>\n    <!-- Fonts via Fontshare or Google Fonts -->\n    <style>\n        /* CSS Custom Properties (theme) */\n        :root { /* colors, typography with clamp(), spacing */ }\n        /* Mandatory viewport base CSS (see above) */\n        /* Slide-specific styles */\n        /* Animations (.reveal → .visible .reveal) */\n        /* Responsive breakpoints */\n    </style>\n</head>\n<body>\n    <div class=\"progress-bar\"></div>\n    <nav class=\"nav-dots\"></nav>\n\n    <section class=\"slide title-slide\">\n        <h1 class=\"reveal\">Title</h1>\n        <p class=\"reveal\">Subtitle</p>\n    </section>\n    <!-- More slides... -->\n\n    <script>\n        class SlidePresentation {\n            // Keyboard nav (arrows, space)\n            // Touch/swipe support\n            // Mouse wheel navigation\n            // Progress bar + nav dots\n            // Intersection Observer for .reveal animations\n        }\n        new SlidePresentation();\n    </script>\n</body>\n</html>"},{"language":"javascript","snippet":"// Hotzone hover with 400ms grace period\nconst hotzone = document.querySelector('.edit-hotzone');\nconst editToggle = document.getElementById('editToggle');\nlet hideTimeout = null;\n\nhotzone.addEventListener('mouseenter', () => { clearTimeout(hideTimeout); editToggle.classList.add('show'); });\nhotzone.addEventListener('mouseleave', () => { hideTimeout = setTimeout(() => { if (!editor.isActive) editToggle.classList.remove('show'); }, 400); });\neditToggle.addEventListener('mouseenter', () => clearTimeout(hideTimeout));\neditToggle.addEventListener('mouseleave', () => { hideTimeout = setTimeout(() => { if (!editor.isActive) editToggle.classList.remove('show'); }, 400); });\n\n// Keyboard: E key (skip when editing)\ndocument.addEventListener('keydown', (e) => {\n    if ((e.key === 'e' || e.key === 'E') && !e.target.getAttribute('contenteditable')) editor.toggleEditMode();\n});"},{"language":"python","snippet":"from pptx import Presentation\nimport os\n\ndef extract_pptx(file_path, output_dir):\n    prs = Presentation(file_path)\n    assets_dir = os.path.join(output_dir, 'assets')\n    os.makedirs(assets_dir, exist_ok=True)\n    slides_data = []\n\n    for i, slide in enumerate(prs.slides):\n        data = {'number': i+1, 'title': '', 'content': [], 'images': [], 'notes': ''}\n        for shape in slide.shapes:\n            if shape.has_text_frame:\n                if shape == slide.shapes.title:\n                    data['title'] = shape.text\n                else:\n                    data['content'].append({'type': 'text', 'content': shape.text})\n            if shape.shape_type == 13:  # Picture\n                img = shape.image\n                name = f\"slide{i+1}_img{len(data['images'])+1}.{img.ext}\"\n                path = os.path.join(assets_dir, name)\n                with open(path, 'wb') as f: f.write(img.blob)\n                data['images'].append({'path': f\"assets/{name}\"})\n        if slide.has_notes_slide:\n            data['notes'] = slide.notes_slide.notes_text_frame.text\n        slides_data.append(data)\n    return slides_data"},{"language":"bash","snippet":"clawhub install openclaw-slides"}],"parameters":null,"dependencies":[],"permissions":[],"extractedFiles":[{"path":"SKILL.md","content":"---\nname: openclaw-slides\ndescription: Create stunning, animation-rich HTML presentations from scratch or convert PowerPoint files (.ppt/.pptx) to beautiful web slides. Use when the user wants to build a pitch deck, presentation, slideshow, or slide deck — or convert an existing PPT to a web presentation. Generates zero-dependency single HTML files with keyboard/touch navigation and scroll-triggered animations. Style options include Neon Cyber, Bold Signal, Swiss Modern, Paper & Ink, and 8 more curated presets.\nopenclaw:\n  requires:\n    bins: []\n  install:\n    - id: python-pptx\n      kind: shell\n      label: \"Install Python dependencies for PPT conversion (optional — only needed for Mode B)\"\n      command: \"pip install python-pptx Pillow\"\n      optional: true\n---\n\n# OpenClaw Slides\n\n> **[MyClaw.ai](https://myclaw.ai)** — Your AI personal assistant with full server control. Every MyClaw instance runs on a dedicated server with complete code access, networking, and tool capabilities. This skill is part of the [MyClaw open skills ecosystem](https://myclaw.ai/skills).\n\nCreate zero-dependency, animation-rich HTML presentations that run entirely in the browser. Single self-contained HTML files — no npm, no build tools, no frameworks. Works offline, renders in 10 years.\n\n**Style presets:** Bold Signal, Electric Studio, Creative Voltage, Dark Botanical, Notebook Tabs, Pastel Geometry, Split Pastel, Vintage Editorial, Neon Cyber, Terminal Green, Swiss Modern, Paper & Ink\n\nFor full style details and CSS specs: read `references/STYLE_PRESETS.md` when needed.\n\n---\n\n## Phase 0: Detect Mode\n\nDetermine the user's intent:\n\n- **Mode A — New Presentation:** Create slides from scratch → go to Phase 1\n- **Mode B — PPT Conversion:** Convert an existing `.ppt`/`.pptx` file → go to Phase 4\n- **Mode C — Enhance Existing:** Improve an existing HTML presentation → read the file, then enhance (always maintain viewport fitting)\n\n---\n\n## CRITICAL: Viewport Fitting (Non-Negotiable)\n\n**Every slide MUST fit exactly within the viewport. No scrolling within slides, ever.**\n\n### Content Density Limits Per Slide\n\n| Slide Type | Maximum Content |\n|------------|-----------------|\n| Title slide | 1 heading + 1 subtitle + optional tagline |\n| Content slide | 1 heading + 4–6 bullet points OR 1 heading + 2 paragraphs |\n| Feature grid | 1 heading + 6 cards max (2×3 or 3×2) |\n| Code slide | 1 heading + 8–10 lines of code |\n| Quote slide | 1 quote (max 3 lines) + attribution |\n| Image slide | 1 heading + 1 image (max 60vh height) |\n\n**Content exceeds limits → Split into multiple slides.**\n\n### Required CSS for Every Presentation\n\n```css\nhtml, body { height: 100%; overflow-x: hidden; }\nhtml { scroll-snap-type: y mandatory; scroll-behavior: smooth; }\n\n.slide {\n    width: 100vw;\n    height: 100vh;\n    height: 100dvh;\n    overflow: hidden;\n    scroll-snap-align: start;\n    display: flex;\n    flex-direction: column;\n    position: relative;\n}\n\n.slide-content {\n    flex: 1;\n    display: flex;\n    "},{"path":"README.md","content":"# openclaw-slides\n\n[![Powered by MyClaw.ai](https://img.shields.io/badge/Powered%20by-MyClaw.ai-gold?style=flat-square)](https://myclaw.ai)\n[![OpenClaw Skill](https://img.shields.io/badge/OpenClaw-Skill-blue?style=flat-square)](https://github.com/openclaw/openclaw)\n[![License: MIT](https://img.shields.io/badge/License-MIT-green?style=flat-square)](LICENSE)\n\n> **[MyClaw.ai](https://myclaw.ai)** — Your AI personal assistant with full server control. Every MyClaw instance runs on a dedicated server with complete code access, networking, and tool capabilities. This skill is part of the [MyClaw open skills ecosystem](https://myclaw.ai/skills).\n\n**Create stunning, animation-rich HTML presentations — from scratch or by converting PowerPoint files.**\n\nAn OpenClaw agent skill that helps anyone build beautiful web slide decks with zero dependencies. Single HTML files with inline CSS/JS — no npm, no build tools, no frameworks. Works offline, renders forever.\n\n---\n\n🌐 **Languages:** [中文](README.zh-CN.md) · [Français](README.fr.md) · [Deutsch](README.de.md) · [Русский](README.ru.md) · [日本語](README.ja.md) · [Italiano](README.it.md) · [Español](README.es.md)\n\n---\n\n## ✨ Features\n\n- **Zero Dependencies** — Single HTML files with inline CSS/JS. No npm, no build tools, no frameworks.\n- **12 Curated Styles** — Bold Signal, Neon Cyber, Dark Botanical, Swiss Modern, Paper & Ink, and 7 more. No generic AI aesthetics.\n- **PPT Conversion** — Convert existing PowerPoint files to web, preserving all images and content.\n- **Visual Style Discovery** — Can't articulate design preferences? Generate 3 previews and pick what you like.\n- **Production Quality** — Keyboard navigation, touch/swipe, scroll-triggered animations, responsive design, reduced-motion support.\n- **Inline Editing** — Optional in-browser text editing with localStorage auto-save.\n\n## 🎨 Style Presets\n\n| Preset | Vibe | Best For |\n|--------|------|----------|\n| Bold Signal | Confident, high-impact | Pitch decks, keynotes |\n| Electric Studio | Clean, professional | Agency presentations |\n| Creative Voltage | Energetic, retro-modern | Creative pitches |\n| Dark Botanical | Elegant, sophisticated | Premium brands |\n| Notebook Tabs | Editorial, organized | Reports, reviews |\n| Pastel Geometry | Friendly, approachable | Product overviews |\n| Split Pastel | Playful, modern | Creative agencies |\n| Vintage Editorial | Witty, personality-driven | Personal brands |\n| Neon Cyber | Futuristic, techy | Tech startups |\n| Terminal Green | Developer-focused | Dev tools, APIs |\n| Swiss Modern | Minimal, precise | Corporate, data |\n| Paper & Ink | Literary, thoughtful | Storytelling |\n\n## 🚀 Installation\n\n```bash\nclawhub install openclaw-slides\n```\n\nOr manually copy to your OpenClaw workspace skills directory:\n\n```bash\ncp -r openclaw-slides/ ~/.openclaw/workspace/skills/\n```\n\n## 💬 Usage\n\nJust tell your OpenClaw agent what you want:\n\n> \"Create a pitch deck for my AI startup\"\n\n> \"Convert my presentation.pptx to a web slideshow\"\n\n>"},{"path":"_meta.json","content":"{\n  \"ownerId\": \"kn7fymx2je994eh44j51che37s824w29\",\n  \"slug\": \"openclaw-slides\",\n  \"version\": \"2.0.0\",\n  \"publishedAt\": 1774681996632\n}"},{"path":"references/STYLE_PRESETS.md","content":"# Style Presets Reference\n\nCurated visual styles for Frontend Slides. Each preset is inspired by real design references—no generic \"AI slop\" aesthetics. **Abstract shapes only—no illustrations.**\n\n---\n\n## ⚠️ CRITICAL: Viewport Fitting (Non-Negotiable)\n\n**Every slide MUST fit exactly in the viewport. No scrolling within slides, ever.**\n\n### Content Density Limits Per Slide\n\n| Slide Type | Maximum Content |\n|------------|-----------------|\n| Title slide | 1 heading + 1 subtitle |\n| Content slide | 1 heading + 4-6 bullets (max 2 lines each) |\n| Feature grid | 1 heading + 6 cards (2x3 or 3x2) |\n| Code slide | 1 heading + 8-10 lines of code |\n| Quote slide | 1 quote (max 3 lines) + attribution |\n\n**Too much content? → Split into multiple slides. Never scroll.**\n\n### Required Base CSS (Include in ALL Presentations)\n\n```css\n/* ===========================================\n   VIEWPORT FITTING: MANDATORY\n   Copy this entire block into every presentation\n   =========================================== */\n\n/* 1. Lock document to viewport */\nhtml, body {\n    height: 100%;\n    overflow-x: hidden;\n}\n\nhtml {\n    scroll-snap-type: y mandatory;\n    scroll-behavior: smooth;\n}\n\n/* 2. Each slide = exact viewport height */\n.slide {\n    width: 100vw;\n    height: 100vh;\n    height: 100dvh; /* Dynamic viewport for mobile */\n    overflow: hidden; /* CRITICAL: No overflow ever */\n    scroll-snap-align: start;\n    display: flex;\n    flex-direction: column;\n    position: relative;\n}\n\n/* 3. Content wrapper */\n.slide-content {\n    flex: 1;\n    display: flex;\n    flex-direction: column;\n    justify-content: center;\n    max-height: 100%;\n    overflow: hidden;\n    padding: var(--slide-padding);\n}\n\n/* 4. ALL sizes use clamp() - scales with viewport */\n:root {\n    /* Typography */\n    --title-size: clamp(1.5rem, 5vw, 4rem);\n    --h2-size: clamp(1.25rem, 3.5vw, 2.5rem);\n    --body-size: clamp(0.75rem, 1.5vw, 1.125rem);\n    --small-size: clamp(0.65rem, 1vw, 0.875rem);\n\n    /* Spacing */\n    --slide-padding: clamp(1rem, 4vw, 4rem);\n    --content-gap: clamp(0.5rem, 2vw, 2rem);\n}\n\n/* 5. Cards/containers use viewport-relative max sizes */\n.card, .container {\n    max-width: min(90vw, 1000px);\n    max-height: min(80vh, 700px);\n}\n\n/* 6. Images constrained */\nimg {\n    max-width: 100%;\n    max-height: min(50vh, 400px);\n    object-fit: contain;\n}\n\n/* 7. Grids adapt to space */\n.grid {\n    display: grid;\n    grid-template-columns: repeat(auto-fit, minmax(min(100%, 220px), 1fr));\n    gap: clamp(0.5rem, 1.5vw, 1rem);\n}\n\n/* ===========================================\n   RESPONSIVE BREAKPOINTS - Height-based\n   =========================================== */\n\n/* Short screens (< 700px height) */\n@media (max-height: 700px) {\n    :root {\n        --slide-padding: clamp(0.75rem, 3vw, 2rem);\n        --content-gap: clamp(0.4rem, 1.5vw, 1rem);\n        --title-size: clamp(1.25rem, 4.5vw, 2.5rem);\n    }\n}\n\n/* Very short (< 600px height) */\n@media (max-height: 600px) {\n    :root {\n        --slide-padding: clam"},{"path":"README.de.md","content":"# openclaw-slides\n\n[![Powered by MyClaw.ai](https://img.shields.io/badge/Powered%20by-MyClaw.ai-gold?style=flat-square)](https://myclaw.ai)\n[![OpenClaw Skill](https://img.shields.io/badge/OpenClaw-Skill-blue?style=flat-square)](https://github.com/openclaw/openclaw)\n[![License: MIT](https://img.shields.io/badge/License-MIT-green?style=flat-square)](LICENSE)\n\n> **[MyClaw.ai](https://myclaw.ai)** — Dein KI-Persönlichkeitsassistent mit vollständiger Server-Kontrolle. Jede MyClaw-Instanz läuft auf einem dedizierten Server mit vollständigem Code-Zugriff, Netzwerk und Werkzeugen. Dieser Skill ist Teil des [offenen MyClaw-Skill-Ökosystems](https://myclaw.ai/skills).\n\n**Erstelle beeindruckende, animierte HTML-Präsentationen — von Grund auf oder durch Konvertierung von PowerPoint-Dateien.**\n\nEin OpenClaw-Skill, der jedem hilft, schöne Web-Slideshows ohne Abhängigkeiten zu erstellen. Einzelne HTML-Dateien mit integriertem CSS/JS — kein npm, keine Build-Tools, kein Framework.\n\n---\n\n🌐 **Sprachen:** [English](README.md) · [中文](README.zh-CN.md) · [Français](README.fr.md) · [Русский](README.ru.md) · [日本語](README.ja.md) · [Italiano](README.it.md) · [Español](README.es.md)\n\n---\n\n## ✨ Funktionen\n\n- **Keine Abhängigkeiten** — Einzelne HTML-Dateien mit integriertem CSS/JS.\n- **12 kuratierte Stile** — Bold Signal, Neon Cyber, Dark Botanical, Swiss Modern und mehr.\n- **PPT-Konvertierung** — PowerPoint-Dateien in Web-Präsentationen umwandeln.\n- **Visuelle Stilfindung** — Generiere 3 Vorschauen und wähle, was dir gefällt.\n- **Produktionsqualität** — Tastaturnavigation, Touch/Swipe, Animationen, responsives Design.\n\n## 🚀 Installation\n\n```bash\nclawhub install openclaw-slides\n```\n\n## 💬 Verwendung\n\n> \"Erstelle ein Pitch Deck für mein KI-Startup\"\n\n> \"Konvertiere meine Präsentation.pptx in eine Web-Slideshow\"\n\n## 📄 Lizenz\n\nMIT — Nutzen, ändern, teilen.\n\n---\n\n*Für OpenClaw adaptiert von [zarazhangrui/openclaw-slides](https://github.com/zarazhangrui/openclaw-slides). Unterstützt von [MyClaw.ai](https://myclaw.ai).*"}],"languages":[],"docsSourceLabel":"CLAWHUB","editorialOverview":"Create stunning, animation-rich HTML presentations from scratch or convert PowerPoint files (.ppt/.pptx) to beautiful web slides. Use when the user wants to... Skill: openclaw-slides Owner: leoyeai Summary: Create stunning, animation-rich HTML presentations from scratch or convert PowerPoint files (.ppt/.pptx) to beautiful web slides. Use when the user wants to... Tags: latest:2.0.0 Version history: v2.0.0 | 2026-03-28T07:13:16.632Z | user Update ecosystem links to myclaw.ai/skills v1.0.3 | 2026-03-03T06:02:33.054Z | user Add MyClaw.ai intro + link to SKILL.md (visible on C","editorialQuality":{"score":100,"threshold":65,"status":"ready","wordCount":1214,"uniquenessScore":58,"reasons":[]}},"media":{"evidence":{"source":"no-media","verified":false,"confidence":"low","updatedAt":"2026-10-09T03:09:30.716Z","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-09T03:09:30.716Z","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-09T14:32:41.131Z","emptyReason":null},"items":[{"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":"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-04-10T18:48:31.762Z","createdAt":"2026-02-25T03:38:16.584Z","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"}]}}}