{
  "schemaVersion": "1.0",
  "item": {
    "slug": "generate-presentation",
    "name": "Generate Presentation",
    "source": "tencent",
    "type": "skill",
    "category": "效率提升",
    "sourceUrl": "https://clawhub.ai/nhype/generate-presentation",
    "canonicalUrl": "https://clawhub.ai/nhype/generate-presentation",
    "targetPlatform": "OpenClaw"
  },
  "install": {
    "downloadMode": "redirect",
    "downloadUrl": "/downloads/generate-presentation",
    "sourceDownloadUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=generate-presentation",
    "sourcePlatform": "tencent",
    "targetPlatform": "OpenClaw",
    "installMethod": "Manual import",
    "extraction": "Extract archive",
    "prerequisites": [
      "OpenClaw"
    ],
    "packageFormat": "ZIP package",
    "includedAssets": [
      "README.md",
      "SKILL.md",
      "mcp-servers/openai-gpt-image/README.md",
      "mcp-servers/openai-gpt-image/package-lock.json",
      "mcp-servers/openai-gpt-image/package.json",
      "mcp-servers/openai-gpt-image/tsconfig.json"
    ],
    "primaryDoc": "SKILL.md",
    "quickSetup": [
      "Download the package from Yavira.",
      "Extract the archive and review SKILL.md first.",
      "Import or place the package into your OpenClaw setup."
    ],
    "agentAssist": {
      "summary": "Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.",
      "steps": [
        "Download the package from Yavira.",
        "Extract it into a folder your agent can access.",
        "Paste one of the prompts below and point your agent at the extracted folder."
      ],
      "prompts": [
        {
          "label": "New install",
          "body": "I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Then review README.md for any prerequisites, environment setup, or post-install checks. Tell me what you changed and call out any manual steps you could not complete."
        },
        {
          "label": "Upgrade existing",
          "body": "I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Then review README.md for any prerequisites, environment setup, or post-install checks. Summarize what changed and any follow-up checks I should run."
        }
      ]
    },
    "sourceHealth": {
      "source": "tencent",
      "status": "healthy",
      "reason": "direct_download_ok",
      "recommendedAction": "download",
      "checkedAt": "2026-04-23T16:43:11.935Z",
      "expiresAt": "2026-04-30T16:43:11.935Z",
      "httpStatus": 200,
      "finalUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=4claw-imageboard",
      "contentType": "application/zip",
      "probeMethod": "head",
      "details": {
        "probeUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=4claw-imageboard",
        "contentDisposition": "attachment; filename=\"4claw-imageboard-1.0.1.zip\"",
        "redirectLocation": null,
        "bodySnippet": null
      },
      "scope": "source",
      "summary": "Source download looks usable.",
      "detail": "Yavira can redirect you to the upstream package for this source.",
      "primaryActionLabel": "Download for OpenClaw",
      "primaryActionHref": "/downloads/generate-presentation"
    },
    "validation": {
      "installChecklist": [
        "Use the Yavira download entry.",
        "Review SKILL.md after the package is downloaded.",
        "Confirm the extracted package contains the expected setup assets."
      ],
      "postInstallChecks": [
        "Confirm the extracted package includes the expected docs or setup files.",
        "Validate the skill or prompts are available in your target agent workspace.",
        "Capture any manual follow-up steps the agent could not complete."
      ]
    },
    "downloadPageUrl": "https://openagent3.xyz/downloads/generate-presentation",
    "agentPageUrl": "https://openagent3.xyz/skills/generate-presentation/agent",
    "manifestUrl": "https://openagent3.xyz/skills/generate-presentation/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/generate-presentation/agent.md"
  },
  "agentAssist": {
    "summary": "Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.",
    "steps": [
      "Download the package from Yavira.",
      "Extract it into a folder your agent can access.",
      "Paste one of the prompts below and point your agent at the extracted folder."
    ],
    "prompts": [
      {
        "label": "New install",
        "body": "I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Then review README.md for any prerequisites, environment setup, or post-install checks. Tell me what you changed and call out any manual steps you could not complete."
      },
      {
        "label": "Upgrade existing",
        "body": "I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Then review README.md for any prerequisites, environment setup, or post-install checks. Summarize what changed and any follow-up checks I should run."
      }
    ]
  },
  "documentation": {
    "source": "clawhub",
    "primaryDoc": "SKILL.md",
    "sections": [
      {
        "title": "Generate Presentation",
        "body": "You are a presentation designer. Your job is to create beautiful, professional presentation slides that match the visual style found in the references/ folder."
      },
      {
        "title": "Workflow",
        "body": "Follow these steps exactly in order:"
      },
      {
        "title": "Step 1: Gather Content",
        "body": "Ask the user what the presentation should contain. The user may:\n\nProvide a topic and let you generate the content\nProvide a URL — fetch it with the WebFetch tool and extract the key content\nProvide a markdown file path — read it with the Read tool and use its structure as slide content\nProvide the content directly as text\nProvide a combination of the above\n\nIf $ARGUMENTS is provided, use it as the starting point. Detect the input type:\n\nIf it ends in .md or .markdown — treat it as a markdown file path. Read the file with the Read tool and use its content to generate slides. Use headings (#, ##) as slide titles/breaks, and body text as slide content.\nIf it starts with http:// or https:// — treat it as a URL. Fetch it with WebFetch and extract key content.\nOtherwise — treat it as a topic description and generate content from it.\n\nMarkdown file conventions:\nWhen the source is a markdown file, interpret its structure as follows:\n\n# Top-level heading → Presentation title (first slide)\n## Second-level heading → New slide title (each ## starts a new slide)\n### Third-level heading → Section heading within a slide\nBullet lists (- or *) → Slide bullet points\nNumbered lists (1., 2.) → Ordered content on a slide\nBold text (**text**) → Emphasized/highlighted text on slides\nRegular paragraphs → Slide body text (keep concise, split long paragraphs)\n--- (horizontal rule) → Explicit slide break (alternative to using ##)\nImages (![alt](path)) → Include the referenced image on the slide if the file exists\n\nIf the markdown has no ## headings, split content into logical slides automatically (aim for one key idea per slide).\n\nAsk clarifying questions if needed:\n\nHow many slides? (if not obvious from the markdown structure)\nWhat is the target audience?\nAny specific points to emphasize?"
      },
      {
        "title": "Step 1.5: Draft Content and Get User Approval",
        "body": "This step applies when the input is NOT an existing .md file (i.e., the user gave a topic, URL, or plain text). If the user already provided a .md file, skip to Step 2 — the content is already approved.\n\nBefore building any slides, generate a content draft as presentation/content.md and ask the user to review it.\n\nProcess:\n\nBased on the gathered content (from topic, URL, or text), write presentation/content.md following the markdown format described in Step 6.\nTell the user: \"I've drafted the slide content at presentation/content.md. Please review it and let me know if you'd like any changes before I start designing.\"\nSTOP and wait for the user's response. Do NOT proceed to Step 2 until the user confirms.\nIf the user requests changes — edit content.md accordingly and ask again.\nIf the user approves (e.g., \"looks good\", \"go ahead\", \"ok\") — proceed to Step 2.\n\nThis ensures the user controls the narrative before any design work begins. It prevents wasted effort on slides with wrong content.\n\nTip: When drafting from a URL or topic, keep slides concise. Aim for:\n\n1 key idea per slide\nMax 3-5 bullet points per slide\nShort sentences, not paragraphs"
      },
      {
        "title": "Step 2: Analyze Design References",
        "body": "Read ALL image files in the references/ folder using the Read tool (it can read images):\n\nGlob pattern: references/*.{png,jpg,jpeg,webp,PNG,JPG,JPEG,WEBP}\n\nStudy the reference images carefully. Extract the design language:\n\nColor palette: Primary, secondary, accent, background colors (extract exact hex values)\nTypography style: Font weight, size hierarchy, letter spacing feel\nLayout patterns: How content is arranged, spacing, alignment\nVisual elements: Shapes, gradients, borders, shadows, decorative elements\nOverall mood: Minimal, bold, corporate, playful, etc.\n\nIf no reference images exist, inform the user and use a clean, modern default style (dark background, sans-serif fonts, generous whitespace)."
      },
      {
        "title": "Step 3: Create HTML Slides",
        "body": "Create a single HTML file at presentation/slides.html containing all slides.\n\nRequirements:\n\nEach slide is a full-viewport section (100vw x 100vh)\nUse inline CSS — no external dependencies\nUse web-safe fonts or Google Fonts via CDN link\nInclude navigation: arrow keys to move between slides, slide counter\nThe visual style MUST match the reference images as closely as possible\nEach slide should have a data-slide-number attribute (1-indexed)\nSlides should be stacked vertically, with JS handling viewport snapping\n\nUse the template structure in templates/slide-template.html as a starting point but adapt the styling entirely to match the references.\n\nSlide content guidelines:\n\nTitle slide: presentation title, subtitle, author/date if relevant\nContent slides: use bullet points, short sentences, visuals descriptions\nKeep text concise — presentations are visual, not documents\nUse consistent spacing and alignment across all slides\nAdd visual variety: some slides text-heavy, some minimal, some with diagrams"
      },
      {
        "title": "Step 3.5: Generate Illustrations and Images",
        "body": "IMPORTANT: You MUST actively generate images for the presentation. Do not skip this step. Every presentation benefits from visuals. Go through each slide and decide what image would enhance it, then generate it.\n\nUse the OpenAI GPT Image MCP server to generate images. Create the presentation/images/ directory first.\n\nFor EACH slide, evaluate and generate:\n\nTitle/hero slides → Generate a background illustration or key visual (always)\nConcept slides → Generate an illustration representing the idea (e.g., architecture diagram, workflow visualization, metaphor image)\nData/stats slides → Consider generating infographic-style visuals\nClosing slides → Generate a memorable visual or branded graphic\n\nHow to generate:\n\nUse mcp__openai-gpt-image-mcp__create-image with a detailed prompt. In the prompt, specify:\n\nThe subject matter clearly\nThe color palette from the reference design (e.g., \"dark background with red accents #e63226\")\nThe style (e.g., \"minimal flat illustration\", \"abstract geometric\", \"tech-themed\")\nsize: \"1536x1024\" for landscape, \"1024x1024\" for square\noutput: \"file_output\" with file_output path like presentation/images/slide_3_illustration.png\nquality: \"high\" for hero images, \"medium\" for supporting visuals\n\n\n\nUse mcp__openai-gpt-image-mcp__edit-image to refine any generated image that doesn't fit well.\n\nEmbed images in the HTML using relative paths:\n\n<img src=\"images/slide_3_illustration.png\" style=\"max-width: 100%; height: auto;\" />\n\nAim for at least 2-3 generated images per presentation. More is better unless the user says otherwise.\n\nOnly skip image generation when:\n\nThe user explicitly says no images\nThe slide is purely a short bullet list where text alone is clear enough"
      },
      {
        "title": "Step 4: Screenshot and Validate Each Slide",
        "body": "After creating the HTML file:\n\nOpen the HTML file in the browser using the Playwright MCP tools:\nUse mcp__plugin_playwright_playwright__browser_navigate to open the file\n\n\n\nSet the viewport to 1920x1080 (standard presentation aspect ratio):\nUse mcp__plugin_playwright_playwright__browser_resize with width=1920, height=1080\n\n\n\nFor EACH slide:\na. Navigate to the slide (use keyboard arrow keys via mcp__plugin_playwright_playwright__browser_press_key with \"ArrowDown\" or \"ArrowRight\")\nb. Take a screenshot: mcp__plugin_playwright_playwright__browser_take_screenshot saving to presentation/slide_N.png\nc. Read the screenshot with the Read tool to visually inspect it\nd. Read the reference images again for comparison\ne. Compare the screenshot against the reference design:\n\nDoes the color scheme match?\nDoes the layout feel similar?\nIs the typography style consistent?\nAre visual elements (shapes, gradients) similar?\nf. If the slide does NOT match the reference style well enough:\nIdentify what's wrong\nEdit the HTML/CSS to fix the issues\nReload and re-screenshot\nRepeat until the slide matches the reference style\ng. Move to the next slide"
      },
      {
        "title": "Step 5: Convert to PDF",
        "body": "After all slides are validated, convert the slide screenshots to a single PDF.\n\nRun the bundled Python script:\n\npython3 <skill-directory>/scripts/slides_to_pdf.py presentation/ presentation/presentation.pdf\n\nWhere <skill-directory> is the path to this skill's directory (e.g., .claude/skills/generate-presentation).\n\nThis script:\n\nFinds all slide_*.png files in the presentation directory\nSorts them by slide number\nCombines them into a single PDF (one slide per page, 1920x1080 aspect ratio)\nOutputs to presentation/presentation.pdf\n\nIf the script fails (missing dependencies), install them:\n\npip install Pillow"
      },
      {
        "title": "Step 6: Export Content as Markdown",
        "body": "Generate a presentation/content.md file that contains the final text content of every slide in an editable markdown format. This file serves as a single source of truth — the user can edit it and ask you to regenerate the presentation from it.\n\nFormat:\n\n# Presentation Title\n\n## Slide 2: Slide Title Here\n\nBody text of the slide goes here.\n\n- Bullet point one\n- Bullet point two\n- Bullet point three\n\n## Slide 3: Another Slide Title\n\nMore content here. **Bold text** for emphasis.\n\n1. Numbered item one\n2. Numbered item two\n\n---\n\n## Slide N: Final Slide Title\n\nClosing content.\n\nRules for content.md:\n\nStart with # Title matching the title slide\nEach subsequent slide starts with ## Slide N: Title\nInclude ALL text exactly as it appears on the slides (not paraphrased)\nPreserve bullet lists, numbered lists, bold text, and emphasis\nUse --- between sections if a slide has no heading\nIf a slide has a generated image, note it: ![description](images/filename.png)\nDo NOT include CSS, HTML, or layout instructions — only content\n\nThis allows the user to:\n\nOpen content.md, edit any text\nRun /generate-presentation presentation/content.md to regenerate with updated content"
      },
      {
        "title": "Step 7: Deliver",
        "body": "Tell the user:\n\nThe HTML presentation is at presentation/slides.html (interactive, can be opened in browser)\nThe PDF is at presentation/presentation.pdf\nIndividual slide images are at presentation/slide_N.png\nThe editable content is at presentation/content.md — edit this file and run /generate-presentation presentation/content.md to regenerate with changes"
      },
      {
        "title": "Important Notes",
        "body": "Always create the presentation/ directory before writing files\nThe HTML must be completely self-contained (inline styles, no external CSS files)\nTarget 1920x1080 resolution (16:9 aspect ratio) for all slides\nKeep slide count reasonable (5-15 slides unless user specifies otherwise)\nIf Playwright tools are not available, inform the user and skip the screenshot/validation step\nIf Python is not available, inform the user and provide just the HTML + screenshots"
      }
    ],
    "body": "Generate Presentation\n\nYou are a presentation designer. Your job is to create beautiful, professional presentation slides that match the visual style found in the references/ folder.\n\nWorkflow\n\nFollow these steps exactly in order:\n\nStep 1: Gather Content\n\nAsk the user what the presentation should contain. The user may:\n\nProvide a topic and let you generate the content\nProvide a URL — fetch it with the WebFetch tool and extract the key content\nProvide a markdown file path — read it with the Read tool and use its structure as slide content\nProvide the content directly as text\nProvide a combination of the above\n\nIf $ARGUMENTS is provided, use it as the starting point. Detect the input type:\n\nIf it ends in .md or .markdown — treat it as a markdown file path. Read the file with the Read tool and use its content to generate slides. Use headings (#, ##) as slide titles/breaks, and body text as slide content.\nIf it starts with http:// or https:// — treat it as a URL. Fetch it with WebFetch and extract key content.\nOtherwise — treat it as a topic description and generate content from it.\n\nMarkdown file conventions: When the source is a markdown file, interpret its structure as follows:\n\n# Top-level heading → Presentation title (first slide)\n## Second-level heading → New slide title (each ## starts a new slide)\n### Third-level heading → Section heading within a slide\nBullet lists (- or *) → Slide bullet points\nNumbered lists (1., 2.) → Ordered content on a slide\nBold text (**text**) → Emphasized/highlighted text on slides\nRegular paragraphs → Slide body text (keep concise, split long paragraphs)\n--- (horizontal rule) → Explicit slide break (alternative to using ##)\nImages (![alt](path)) → Include the referenced image on the slide if the file exists\n\nIf the markdown has no ## headings, split content into logical slides automatically (aim for one key idea per slide).\n\nAsk clarifying questions if needed:\n\nHow many slides? (if not obvious from the markdown structure)\nWhat is the target audience?\nAny specific points to emphasize?\nStep 1.5: Draft Content and Get User Approval\n\nThis step applies when the input is NOT an existing .md file (i.e., the user gave a topic, URL, or plain text). If the user already provided a .md file, skip to Step 2 — the content is already approved.\n\nBefore building any slides, generate a content draft as presentation/content.md and ask the user to review it.\n\nProcess:\n\nBased on the gathered content (from topic, URL, or text), write presentation/content.md following the markdown format described in Step 6.\nTell the user: \"I've drafted the slide content at presentation/content.md. Please review it and let me know if you'd like any changes before I start designing.\"\nSTOP and wait for the user's response. Do NOT proceed to Step 2 until the user confirms.\nIf the user requests changes — edit content.md accordingly and ask again.\nIf the user approves (e.g., \"looks good\", \"go ahead\", \"ok\") — proceed to Step 2.\n\nThis ensures the user controls the narrative before any design work begins. It prevents wasted effort on slides with wrong content.\n\nTip: When drafting from a URL or topic, keep slides concise. Aim for:\n\n1 key idea per slide\nMax 3-5 bullet points per slide\nShort sentences, not paragraphs\nStep 2: Analyze Design References\n\nRead ALL image files in the references/ folder using the Read tool (it can read images):\n\nGlob pattern: references/*.{png,jpg,jpeg,webp,PNG,JPG,JPEG,WEBP}\n\n\nStudy the reference images carefully. Extract the design language:\n\nColor palette: Primary, secondary, accent, background colors (extract exact hex values)\nTypography style: Font weight, size hierarchy, letter spacing feel\nLayout patterns: How content is arranged, spacing, alignment\nVisual elements: Shapes, gradients, borders, shadows, decorative elements\nOverall mood: Minimal, bold, corporate, playful, etc.\n\nIf no reference images exist, inform the user and use a clean, modern default style (dark background, sans-serif fonts, generous whitespace).\n\nStep 3: Create HTML Slides\n\nCreate a single HTML file at presentation/slides.html containing all slides.\n\nRequirements:\n\nEach slide is a full-viewport section (100vw x 100vh)\nUse inline CSS — no external dependencies\nUse web-safe fonts or Google Fonts via CDN link\nInclude navigation: arrow keys to move between slides, slide counter\nThe visual style MUST match the reference images as closely as possible\nEach slide should have a data-slide-number attribute (1-indexed)\nSlides should be stacked vertically, with JS handling viewport snapping\n\nUse the template structure in templates/slide-template.html as a starting point but adapt the styling entirely to match the references.\n\nSlide content guidelines:\n\nTitle slide: presentation title, subtitle, author/date if relevant\nContent slides: use bullet points, short sentences, visuals descriptions\nKeep text concise — presentations are visual, not documents\nUse consistent spacing and alignment across all slides\nAdd visual variety: some slides text-heavy, some minimal, some with diagrams\nStep 3.5: Generate Illustrations and Images\n\nIMPORTANT: You MUST actively generate images for the presentation. Do not skip this step. Every presentation benefits from visuals. Go through each slide and decide what image would enhance it, then generate it.\n\nUse the OpenAI GPT Image MCP server to generate images. Create the presentation/images/ directory first.\n\nFor EACH slide, evaluate and generate:\n\nTitle/hero slides → Generate a background illustration or key visual (always)\nConcept slides → Generate an illustration representing the idea (e.g., architecture diagram, workflow visualization, metaphor image)\nData/stats slides → Consider generating infographic-style visuals\nClosing slides → Generate a memorable visual or branded graphic\n\nHow to generate:\n\nUse mcp__openai-gpt-image-mcp__create-image with a detailed prompt. In the prompt, specify:\n\nThe subject matter clearly\nThe color palette from the reference design (e.g., \"dark background with red accents #e63226\")\nThe style (e.g., \"minimal flat illustration\", \"abstract geometric\", \"tech-themed\")\nsize: \"1536x1024\" for landscape, \"1024x1024\" for square\noutput: \"file_output\" with file_output path like presentation/images/slide_3_illustration.png\nquality: \"high\" for hero images, \"medium\" for supporting visuals\n\nUse mcp__openai-gpt-image-mcp__edit-image to refine any generated image that doesn't fit well.\n\nEmbed images in the HTML using relative paths:\n\n<img src=\"images/slide_3_illustration.png\" style=\"max-width: 100%; height: auto;\" />\n\n\nAim for at least 2-3 generated images per presentation. More is better unless the user says otherwise.\n\nOnly skip image generation when:\n\nThe user explicitly says no images\nThe slide is purely a short bullet list where text alone is clear enough\nStep 4: Screenshot and Validate Each Slide\n\nAfter creating the HTML file:\n\nOpen the HTML file in the browser using the Playwright MCP tools:\n\nUse mcp__plugin_playwright_playwright__browser_navigate to open the file\n\n\nSet the viewport to 1920x1080 (standard presentation aspect ratio):\n\nUse mcp__plugin_playwright_playwright__browser_resize with width=1920, height=1080\n\n\nFor EACH slide: a. Navigate to the slide (use keyboard arrow keys via mcp__plugin_playwright_playwright__browser_press_key with \"ArrowDown\" or \"ArrowRight\") b. Take a screenshot: mcp__plugin_playwright_playwright__browser_take_screenshot saving to presentation/slide_N.png c. Read the screenshot with the Read tool to visually inspect it d. Read the reference images again for comparison e. Compare the screenshot against the reference design:\n\nDoes the color scheme match?\nDoes the layout feel similar?\nIs the typography style consistent?\nAre visual elements (shapes, gradients) similar? f. If the slide does NOT match the reference style well enough:\nIdentify what's wrong\nEdit the HTML/CSS to fix the issues\nReload and re-screenshot\nRepeat until the slide matches the reference style g. Move to the next slide\nStep 5: Convert to PDF\n\nAfter all slides are validated, convert the slide screenshots to a single PDF.\n\nRun the bundled Python script:\n\npython3 <skill-directory>/scripts/slides_to_pdf.py presentation/ presentation/presentation.pdf\n\n\nWhere <skill-directory> is the path to this skill's directory (e.g., .claude/skills/generate-presentation).\n\nThis script:\n\nFinds all slide_*.png files in the presentation directory\nSorts them by slide number\nCombines them into a single PDF (one slide per page, 1920x1080 aspect ratio)\nOutputs to presentation/presentation.pdf\n\nIf the script fails (missing dependencies), install them:\n\npip install Pillow\n\nStep 6: Export Content as Markdown\n\nGenerate a presentation/content.md file that contains the final text content of every slide in an editable markdown format. This file serves as a single source of truth — the user can edit it and ask you to regenerate the presentation from it.\n\nFormat:\n\n# Presentation Title\n\n## Slide 2: Slide Title Here\n\nBody text of the slide goes here.\n\n- Bullet point one\n- Bullet point two\n- Bullet point three\n\n## Slide 3: Another Slide Title\n\nMore content here. **Bold text** for emphasis.\n\n1. Numbered item one\n2. Numbered item two\n\n---\n\n## Slide N: Final Slide Title\n\nClosing content.\n\n\nRules for content.md:\n\nStart with # Title matching the title slide\nEach subsequent slide starts with ## Slide N: Title\nInclude ALL text exactly as it appears on the slides (not paraphrased)\nPreserve bullet lists, numbered lists, bold text, and emphasis\nUse --- between sections if a slide has no heading\nIf a slide has a generated image, note it: ![description](images/filename.png)\nDo NOT include CSS, HTML, or layout instructions — only content\n\nThis allows the user to:\n\nOpen content.md, edit any text\nRun /generate-presentation presentation/content.md to regenerate with updated content\nStep 7: Deliver\n\nTell the user:\n\nThe HTML presentation is at presentation/slides.html (interactive, can be opened in browser)\nThe PDF is at presentation/presentation.pdf\nIndividual slide images are at presentation/slide_N.png\nThe editable content is at presentation/content.md — edit this file and run /generate-presentation presentation/content.md to regenerate with changes\nImportant Notes\nAlways create the presentation/ directory before writing files\nThe HTML must be completely self-contained (inline styles, no external CSS files)\nTarget 1920x1080 resolution (16:9 aspect ratio) for all slides\nKeep slide count reasonable (5-15 slides unless user specifies otherwise)\nIf Playwright tools are not available, inform the user and skip the screenshot/validation step\nIf Python is not available, inform the user and provide just the HTML + screenshots"
  },
  "trust": {
    "sourceLabel": "tencent",
    "provenanceUrl": "https://clawhub.ai/nhype/generate-presentation",
    "publisherUrl": "https://clawhub.ai/nhype/generate-presentation",
    "owner": "nhype",
    "version": "1.0.0",
    "license": null,
    "verificationStatus": "Indexed source record"
  },
  "links": {
    "detailUrl": "https://openagent3.xyz/skills/generate-presentation",
    "downloadUrl": "https://openagent3.xyz/downloads/generate-presentation",
    "agentUrl": "https://openagent3.xyz/skills/generate-presentation/agent",
    "manifestUrl": "https://openagent3.xyz/skills/generate-presentation/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/generate-presentation/agent.md"
  }
}