{"id":"ac47c7be-11f3-404b-876f-4ce83fca04f1","entityType":"agent","slug":"clawhub-ivangdavila-powerpoint-pptx-2","name":"Powerpoint / PPTX","canonicalUrl":"https://www.xpersona.co/agent/clawhub-ivangdavila-powerpoint-pptx-2","canonicalPath":"/agent/clawhub-ivangdavila-powerpoint-pptx-2","generatedAt":"2026-10-09T21:55:50.743Z","source":"CLAWHUB","claimStatus":"UNCLAIMED","verificationTier":"NONE","summary":{"evidence":{"source":"editorial-content","verified":true,"confidence":"high","updatedAt":"2026-05-19T07:01:11.689Z","emptyReason":null},"description":"Create, inspect, and edit Microsoft PowerPoint presentations and PPTX decks with reliable layouts, templates, placeholders, notes, charts, and visual QA. Use... Skill: Powerpoint / PPTX Owner: ivangdavila Summary: Create, inspect, and edit Microsoft PowerPoint presentations and PPTX decks with reliable layouts, templates, placeholders, notes, charts, and visual QA. Use... Tags: latest:1.0.1 Version history: v1.0.1 | 2026-03-11T15:33:25.254Z | user Rebalanced the skill toward template inventory, layout mapping, and higher-signal QA after a stricter external audit. v1.0.0 | 20","descriptionLabel":"Technical summary","evidenceSummary":"Capability contract not published. No trust telemetry is available yet. 42.9K downloads reported by the source. Last updated 5/19/2026.","installCommand":"clawhub skill install s178jdk12x4qj3gs2se3etxf3h83h7ft:powerpoint-pptx","sourceUrl":"https://clawhub.ai/ivangdavila/powerpoint-pptx","homepage":"https://clawhub.ai/ivangdavila/powerpoint-pptx","primaryLinks":[{"label":"View on ClawHub","url":"https://clawhub.ai/ivangdavila/powerpoint-pptx","kind":"source"}],"safetyScore":84,"overallRank":62,"popularityScore":92,"trustScore":null,"claimedByName":null,"isOwner":false,"seoDescription":"Create, inspect, and edit Microsoft PowerPoint presentations and PPTX decks with reliable layouts, templates, placeholders, notes, charts, and visual QA. Use..."},"coverage":{"evidence":{"source":"public-profile","verified":false,"confidence":"medium","updatedAt":"2026-05-19T07:01:11.689Z","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-05-19T07:01:11.689Z","emptyReason":null},"stars":null,"forks":null,"downloads":42936,"packageName":null,"latestVersion":"1.0.1","tractionLabel":"42.9K downloads"},"release":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"medium","updatedAt":"2026-05-19T07:01:11.667Z","emptyReason":null},"lastUpdatedAt":"2026-05-19T07:01:11.689Z","lastCrawledAt":"2026-05-19T07:01:11.667Z","lastIndexedAt":null,"nextCrawlAt":"2026-05-20T07:01:11.667Z","lastVerifiedAt":null,"highlights":[{"version":"1.0.1","createdAt":"2026-03-11T15:33:25.254Z","changelog":"Rebalanced the skill toward template inventory, layout mapping, and higher-signal QA after a stricter external audit.","fileCount":2,"zipByteSize":3315},{"version":"1.0.0","createdAt":"2026-02-20T10:32:38.519Z","changelog":"Initial release","fileCount":5,"zipByteSize":6197}]},"execution":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No published capability contract is available yet."},"installCommand":"clawhub skill install s178jdk12x4qj3gs2se3etxf3h83h7ft:powerpoint-pptx","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-ivangdavila-powerpoint-pptx-2/snapshot","contractUrl":"https://www.xpersona.co/api/v1/agents/clawhub-ivangdavila-powerpoint-pptx-2/contract","trustUrl":"https://www.xpersona.co/api/v1/agents/clawhub-ivangdavila-powerpoint-pptx-2/trust"},"curlExamples":["curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-ivangdavila-powerpoint-pptx-2/snapshot\"","curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-ivangdavila-powerpoint-pptx-2/contract\"","curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-ivangdavila-powerpoint-pptx-2/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-09T21:55:50.742Z"}},"retryPolicy":{"maxAttempts":3,"backoffMs":[500,1500,3500],"retryableConditions":["HTTP_429","HTTP_503","NETWORK_TIMEOUT"]}},"endpoints":{"dossierUrl":"https://www.xpersona.co/api/v1/agents/clawhub-ivangdavila-powerpoint-pptx-2/dossier","snapshotUrl":"https://www.xpersona.co/api/v1/agents/clawhub-ivangdavila-powerpoint-pptx-2/snapshot","contractUrl":"https://www.xpersona.co/api/v1/agents/clawhub-ivangdavila-powerpoint-pptx-2/contract","trustUrl":"https://www.xpersona.co/api/v1/agents/clawhub-ivangdavila-powerpoint-pptx-2/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-05-19T07:01:11.689Z","emptyReason":null},"readme":"Skill: Powerpoint / PPTX\n\nOwner: ivangdavila\n\nSummary: Create, inspect, and edit Microsoft PowerPoint presentations and PPTX decks with reliable layouts, templates, placeholders, notes, charts, and visual QA. Use...\n\nTags: latest:1.0.1\n\nVersion history:\n\nv1.0.1 | 2026-03-11T15:33:25.254Z | user\n\nRebalanced the skill toward template inventory, layout mapping, and higher-signal QA after a stricter external audit.\n\nv1.0.0 | 2026-02-20T10:32:38.519Z | user\n\nInitial release\n\nArchive index:\n\nArchive v1.0.1: 2 files, 3315 bytes\n\nFiles: SKILL.md (7058b), _meta.json (134b)\n\nFile v1.0.1:SKILL.md\n\n---\nname: Powerpoint / PPTX\nslug: powerpoint-pptx\nversion: 1.0.1\nhomepage: https://clawic.com/skills/powerpoint-pptx\ndescription: \"Create, inspect, and edit Microsoft PowerPoint presentations and PPTX decks with reliable layouts, templates, placeholders, notes, charts, and visual QA. Use when (1) the task is about PowerPoint or `.pptx`; (2) layouts, placeholders, notes, charts, comments, or template fidelity matter; (3) the deck must render cleanly after edits.\"\nchangelog: Rebalanced the skill toward template inventory, layout mapping, and higher-signal QA after a stricter external audit.\nmetadata: {\"clawdbot\":{\"emoji\":\"📊\",\"requires\":{\"bins\":[]},\"os\":[\"linux\",\"darwin\",\"win32\"]}}\n---\n\n## When to Use\n\nUse when the main artifact is a Microsoft PowerPoint presentation or `.pptx` deck, especially when layouts, templates, placeholders, notes, comments, charts, extraction, editing, or final visual quality matter.\n\n## Core Rules\n\n### 1. Choose the workflow before touching the deck\n\n- Reading text, editing an existing deck, rebuilding from a template, and creating from scratch are different jobs with different failure modes.\n- For text extraction or inspection, read the deck before editing it.\n- Text extraction plus thumbnail-style visual inspection is safer than editing from shape assumptions alone.\n- For template-driven work, inventory the deck before replacing content.\n- For deep edits, remember a `.pptx` file is OOXML with separate parts for slides, layouts, masters, media, notes, and comments.\n- If a template exists, template fidelity beats generic slide-design instincts.\n- Reusing or duplicating a good existing slide is often safer than rebuilding it and hoping the theme still matches.\n\n### 2. Inventory the deck before replacing content\n\n- Count the reusable layouts, real placeholders, notes, comments, media, and recurring typography or color patterns first.\n- Placeholder indexes and layout indexes are not portable assumptions.\n- Inspect the actual slide or template before targeting title, body, chart, or image shapes.\n- Speaker notes, comments, and linked assets can live outside the visible slide surface.\n- A missing or wrong placeholder target can silently land content in the wrong box or wrong layer.\n- Master and layout settings can override local slide edits, so the visible problem is not always on the slide you are editing.\n\n### 3. Match content to the actual placeholders\n\n- Count the actual content pieces before choosing a layout.\n- Pick layouts based on the real number of ideas, columns, images, or charts the slide needs.\n- Do not force two ideas into a three-column slide or cram dense text under a chart.\n- Category counts and data series lengths must match or charts will break in ugly ways.\n- Explicit sizing beats wishful thinking: text boxes, images, and charts need real space, not \"it should fit\".\n- Do not choose a layout with more placeholders than the content can meaningfully fill.\n- Quote layouts are for real quotes, and image-led layouts are for slides that actually have images.\n- For chart-, table-, or image-heavy slides, full-slide or two-column layouts are usually safer than stacking dense text above the visual.\n\n### 4. Preserve the deck's visual language\n\n- Theme, master, and layout files usually decide fonts, colors, and hierarchy more than any one slide does.\n- Start from the deck's actual theme, fonts, spacing, and aspect ratio instead of improvising a new style.\n- Reuse the deck's own alignment and spacing system instead of inventing a second visual language.\n- Use common fonts for portability and strong contrast for readability.\n- Preserve the template's visual logic first; originality matters less than not breaking the deck's existing language.\n- Combining slides from multiple sources requires normalizing themes, masters, and alignment afterward.\n\n### 5. Run content QA and visual QA separately\n\n- Text overflow, bad alignment, clipped shapes, weak contrast, and placeholder leftovers are normal first-pass failures.\n- Run both content QA and visual QA; missing text and broken layout are different failure classes.\n- Render or inspect the actual deck output before delivery when layout matters.\n- Search for leftover template junk, sample labels, and placeholder text before calling the deck finished.\n- Check notes, comments, labels, legends, and chart/table semantics separately from the visual pass.\n- A deck can pass text extraction and still fail on overlap, clipping, wrong theme inheritance, or broken notes.\n- Thumbnail grids and rendered slides usually reveal layout bugs faster than code or text inspection.\n- Assume the first render is wrong and do at least one fix-and-verify cycle before calling the deck finished.\n- Re-check affected slides after each fix because one spacing change often creates another issue.\n\n### 6. Keep decks portable and review-safe\n\n- Template masters can override direct edits in surprising ways.\n- Complex effects may degrade across PowerPoint, LibreOffice, and conversion pipelines, so keep important content robust without them.\n- Image sizing, font substitution, and placeholder mismatch are common reasons a deck looks good in code and bad on screen.\n- Notes, comments, linked media, and merged decks can stay broken even when the visible slide looks fine.\n\n## Common Traps\n\n- Placeholder text and sample charts often survive template reuse if not explicitly replaced.\n- Directly editing one slide can fail if the real issue lives in the master or layout.\n- Charts, icons, and text boxes need enough space; near-collisions are usually visible only after rendering.\n- Layout indexes vary by template, so built-in assumptions from one deck often break in another.\n- A missing placeholder or wrong shape target can silently put content in the wrong place.\n- Counting the text ideas after choosing the layout usually leads to empty placeholders, weak hierarchy, or leftover template junk.\n- Font substitution can move line breaks and wreck careful spacing.\n- Speaker notes, comments, and linked media can stay broken even when the visible slide looks fine.\n- A deck can pass text inspection and still fail visually because of overlap, contrast, or edge clipping.\n- Editing from one slide alone can miss the real source of truth in the theme, master, or layout definitions.\n- Choosing a quote, comparison, or multi-column layout without matching content usually makes the deck look templated rather than intentional.\n- Combining or duplicating slides without checking masters and themes can create subtle inconsistency slide by slide.\n- Aspect-ratio mismatches like `16:9` versus `4:3` can shift every placement decision even when each slide looks locally reasonable.\n\n## Related Skills\nInstall with `clawhub install <slug>` if user confirms:\n- `documents` — Document workflows that often feed presentation content.\n- `design` — Visual direction and layout decisions.\n- `brief` — Concise business messaging for slide narratives.\n\n## Feedback\n\n- If useful: `clawhub star powerpoint-pptx`\n- Stay updated: `clawhub sync`\n\nFile v1.0.1:_meta.json\n\n{\n  \"ownerId\": \"kn73vp5rarc3b14rc7wjcw8f8580t5d1\",\n  \"slug\": \"powerpoint-pptx\",\n  \"version\": \"1.0.1\",\n  \"publishedAt\": 1773243205254\n}\n\nArchive v1.0.0: 5 files, 6197 bytes\n\nFiles: charts.md (3538b), design.md (3368b), SKILL.md (3552b), slides.md (2631b), _meta.json (134b)\n\nFile v1.0.0:SKILL.md\n\n---\nname: PowerPoint PPTX\nslug: powerpoint-pptx\nversion: 1.0.0\nhomepage: https://clawic.com/skills/powerpoint-pptx\ndescription: Create, edit, and automate PowerPoint presentations with python-pptx for slides, layouts, charts, and batch processing.\nmetadata: {\"clawdbot\":{\"emoji\":\"📊\",\"requires\":{\"bins\":[\"python3\"]},\"os\":[\"linux\",\"darwin\",\"win32\"]}}\n---\n\n## When to Use\n\nUser needs to create or modify PowerPoint (.pptx) files programmatically. Agent handles slide creation, content population, chart generation, and template automation.\n\n## Quick Reference\n\n| Topic | File |\n|-------|------|\n| Slide patterns | `slides.md` |\n| Charts and tables | `charts.md` |\n| Design guidelines | `design.md` |\n\n## Core Rules\n\n### 1. Use python-pptx Library\n```python\nfrom pptx import Presentation\nfrom pptx.util import Inches, Pt\nfrom pptx.enum.text import PP_ALIGN\nfrom pptx.dml.color import RgbColor\n```\n\nInstall: `pip install python-pptx`\n\n### 2. Presentation Structure\n```python\n# Create new presentation\nprs = Presentation()\n\n# Or load existing template\nprs = Presentation('template.pptx')\n\n# Add slide with layout\nslide_layout = prs.slide_layouts[1]  # Title and Content\nslide = prs.slides.add_slide(slide_layout)\n\n# Save\nprs.save('output.pptx')\n```\n\n### 3. Slide Layouts (Built-in)\n| Index | Layout Name | Use Case |\n|-------|-------------|----------|\n| 0 | Title Slide | Opening slide |\n| 1 | Title and Content | Standard content |\n| 2 | Section Header | Chapter dividers |\n| 3 | Two Content | Side-by-side |\n| 4 | Comparison | Before/after |\n| 5 | Title Only | Custom content |\n| 6 | Blank | Full control |\n\n### 4. Text Handling\n```python\n# Access title\ntitle = slide.shapes.title\ntitle.text = \"Slide Title\"\n\n# Access body placeholder\nbody = slide.placeholders[1]\ntf = body.text_frame\ntf.text = \"First paragraph\"\n\n# Add more paragraphs\np = tf.add_paragraph()\np.text = \"Second paragraph\"\np.level = 1  # Indent level\n```\n\n### 5. Always Verify Output\nAfter creating presentation:\n1. Check slide count matches expectation\n2. Verify text populated correctly\n3. Test charts render properly\n4. Save to user-specified path\n\n## Common Traps\n\n- **Layout index assumption**: Layout indices vary by template. Always check `prs.slide_layouts` first.\n- **Missing placeholders**: Not all layouts have body placeholders. Use `slide.shapes` iteration to find shapes.\n- **Font not embedding**: python-pptx uses system fonts. Stick to common fonts (Arial, Calibri) for portability.\n- **Image sizing**: Always specify dimensions with `Inches()` or `Pt()`. Default sizing can be unpredictable.\n- **Chart data mismatch**: Category count must match data series length exactly.\n\n## Scope\n\nThis skill ONLY:\n- Creates and modifies local .pptx files\n- Uses python-pptx library for manipulation\n- Reads templates from local filesystem\n\nThis skill NEVER:\n- Uploads presentations to cloud services\n- Makes network requests\n- Accesses files outside the working directory without user permission\n\n## Security & Privacy\n\n**Data that stays local:**\n- All presentations created/modified on local filesystem\n- No telemetry or external calls\n\n**This skill does NOT:**\n- Send presentation content externally\n- Access cloud storage APIs\n- Store user data persistently\n\n## Related Skills\nInstall with `clawhub install <slug>` if user confirms:\n- `excel-xlsx` — spreadsheet automation\n- `word-docx` — document generation\n- `report` — structured report creation\n- `documents` — document management\n\n## Feedback\n\n- If useful: `clawhub star powerpoint-pptx`\n- Stay updated: `clawhub sync`\n\nFile v1.0.0:_meta.json\n\n{\n  \"ownerId\": \"kn73vp5rarc3b14rc7wjcw8f8580t5d1\",\n  \"slug\": \"powerpoint-pptx\",\n  \"version\": \"1.0.0\",\n  \"publishedAt\": 1771583558519\n}\n\nFile v1.0.0:charts.md\n\n# Charts and Tables — PowerPoint PPTX\n\n> **Reference patterns only.** Code examples are templates for developers to adapt.\n\n## Bar Chart\n\n```python\nfrom pptx.chart.data import CategoryChartData\nfrom pptx.enum.chart import XL_CHART_TYPE\nfrom pptx.util import Inches\n\n# Prepare data\nchart_data = CategoryChartData()\nchart_data.categories = ['Q1', 'Q2', 'Q3', 'Q4']\nchart_data.add_series('Sales', (19.2, 21.4, 16.7, 28.0))\nchart_data.add_series('Costs', (12.1, 14.3, 11.2, 18.5))\n\n# Add chart to slide\nx, y, cx, cy = Inches(1), Inches(2), Inches(8), Inches(4.5)\nchart = slide.shapes.add_chart(\n    XL_CHART_TYPE.COLUMN_CLUSTERED, x, y, cx, cy, chart_data\n).chart\n\n# Optional: add title\nchart.has_title = True\nchart.chart_title.text_frame.text = \"Quarterly Performance\"\n```\n\n## Line Chart\n\n```python\nchart_data = CategoryChartData()\nchart_data.categories = ['Jan', 'Feb', 'Mar', 'Apr', 'May']\nchart_data.add_series('Trend', (4.3, 2.5, 3.5, 4.5, 5.2))\n\nchart = slide.shapes.add_chart(\n    XL_CHART_TYPE.LINE, Inches(1), Inches(2), Inches(8), Inches(4), chart_data\n).chart\n```\n\n## Pie Chart\n\n```python\nfrom pptx.chart.data import CategoryChartData\nfrom pptx.enum.chart import XL_CHART_TYPE\n\nchart_data = CategoryChartData()\nchart_data.categories = ['Product A', 'Product B', 'Product C']\nchart_data.add_series('Market Share', (35, 45, 20))\n\nchart = slide.shapes.add_chart(\n    XL_CHART_TYPE.PIE, Inches(2), Inches(2), Inches(6), Inches(4), chart_data\n).chart\n\n# Show percentages\nplot = chart.plots[0]\nplot.has_data_labels = True\ndata_labels = plot.data_labels\ndata_labels.show_percentage = True\ndata_labels.show_value = False\n```\n\n## Table Creation\n\n```python\nfrom pptx.util import Inches, Pt\n\nrows, cols = 4, 3\nleft, top = Inches(1), Inches(2)\nwidth, height = Inches(8), Inches(2)\n\ntable = slide.shapes.add_table(rows, cols, left, top, width, height).table\n\n# Set column widths\ntable.columns[0].width = Inches(2)\ntable.columns[1].width = Inches(3)\ntable.columns[2].width = Inches(3)\n\n# Header row\nheaders = ['Name', 'Department', 'Revenue']\nfor i, header in enumerate(headers):\n    cell = table.cell(0, i)\n    cell.text = header\n    cell.text_frame.paragraphs[0].font.bold = True\n\n# Data rows\ndata = [\n    ['Alice', 'Sales', '125000'],\n    ['Bob', 'Marketing', '98000'],\n    ['Carol', 'Engineering', '156000'],\n]\n\nfor row_idx, row_data in enumerate(data, start=1):\n    for col_idx, value in enumerate(row_data):\n        table.cell(row_idx, col_idx).text = value\n```\n\n## Table Styling\n\n```python\nfrom pptx.dml.color import RgbColor\nfrom pptx.enum.text import PP_ALIGN\n\n# Style header row\nfor cell in table.rows[0].cells:\n    cell.fill.solid()\n    cell.fill.fore_color.rgb = RgbColor(0x1F, 0x77, 0xB4)\n    para = cell.text_frame.paragraphs[0]\n    para.font.color.rgb = RgbColor(0xFF, 0xFF, 0xFF)\n    para.alignment = PP_ALIGN.CENTER\n\n# Alternate row colors\nfor i, row in enumerate(table.rows[1:], start=1):\n    for cell in row.cells:\n        if i % 2 == 0:\n            cell.fill.solid()\n            cell.fill.fore_color.rgb = RgbColor(0xF0, 0xF0, 0xF0)\n```\n\n## Chart Types Reference\n\n| Type | Constant | Use Case |\n|------|----------|----------|\n| Column | `XL_CHART_TYPE.COLUMN_CLUSTERED` | Compare categories |\n| Bar | `XL_CHART_TYPE.BAR_CLUSTERED` | Horizontal comparison |\n| Line | `XL_CHART_TYPE.LINE` | Trends over time |\n| Pie | `XL_CHART_TYPE.PIE` | Part of whole |\n| Area | `XL_CHART_TYPE.AREA` | Volume over time |\n| Scatter | `XL_CHART_TYPE.XY_SCATTER` | Correlation |\n| Doughnut | `XL_CHART_TYPE.DOUGHNUT` | Pie with center hole |\n\nFile v1.0.0:design.md\n\n# Design Guidelines — PowerPoint PPTX\n\n> **Reference patterns only.** Guidelines for creating professional presentations.\n\n## Slide Dimensions\n\n```python\nfrom pptx.util import Inches\n\n# Standard 16:9 (default)\nprs.slide_width = Inches(13.333)\nprs.slide_height = Inches(7.5)\n\n# Standard 4:3\nprs.slide_width = Inches(10)\nprs.slide_height = Inches(7.5)\n```\n\n## Font Sizing Guidelines\n\n| Element | Size Range | Recommended |\n|---------|------------|-------------|\n| Title | 36-44 pt | 40 pt |\n| Subtitle | 24-32 pt | 28 pt |\n| Body text | 18-24 pt | 20 pt |\n| Bullets | 16-20 pt | 18 pt |\n| Captions | 12-14 pt | 12 pt |\n\n```python\nfrom pptx.util import Pt\n\nparagraph.font.size = Pt(20)\n```\n\n## Color Palettes\n\n### Professional Blue\n```python\nprimary = RgbColor(0x1F, 0x77, 0xB4)    # Main blue\nsecondary = RgbColor(0xAE, 0xC7, 0xE8)  # Light blue\naccent = RgbColor(0xFF, 0x7F, 0x0E)     # Orange accent\ntext = RgbColor(0x33, 0x33, 0x33)       # Dark gray\n```\n\n### Corporate Gray\n```python\nprimary = RgbColor(0x4A, 0x4A, 0x4A)    # Charcoal\nsecondary = RgbColor(0x9B, 0x9B, 0x9B)  # Medium gray\naccent = RgbColor(0x00, 0x7A, 0xCC)     # Blue accent\nbackground = RgbColor(0xF5, 0xF5, 0xF5) # Light gray\n```\n\n## Margin and Spacing\n\n```python\n# Safe margins from slide edges\nMARGIN_LEFT = Inches(0.5)\nMARGIN_TOP = Inches(0.5)\nMARGIN_RIGHT = Inches(0.5)\nMARGIN_BOTTOM = Inches(0.5)\n\n# Content area\ncontent_width = prs.slide_width - Inches(1)\ncontent_height = prs.slide_height - Inches(1.5)  # Account for title\n```\n\n## Text Frame Settings\n\n```python\nfrom pptx.enum.text import MSO_ANCHOR\n\ntf = shape.text_frame\n\n# Remove auto-fit (keeps font size consistent)\ntf.auto_size = None\n\n# Margins inside text frame\ntf.margin_left = Inches(0.1)\ntf.margin_right = Inches(0.1)\ntf.margin_top = Inches(0.05)\ntf.margin_bottom = Inches(0.05)\n\n# Vertical alignment\ntf.anchor = MSO_ANCHOR.MIDDLE\n```\n\n## Bullet Formatting\n\n```python\nfrom pptx.enum.text import PP_ALIGN\nfrom pptx.util import Pt\n\nfor level in range(3):\n    p = tf.add_paragraph()\n    p.level = level\n    p.text = f\"Level {level} bullet\"\n    \n    # Indent increases with level\n    p.font.size = Pt(18 - level * 2)\n```\n\n## Image Best Practices\n\n```python\n# Maintain aspect ratio\npic = slide.shapes.add_picture(\n    'image.png',\n    left=Inches(1),\n    top=Inches(2),\n    width=Inches(4)  # Height auto-calculated\n)\n\n# Center image horizontally\nslide_width = prs.slide_width\nimg_width = Inches(4)\nleft = (slide_width - img_width) / 2\n```\n\n## Consistency Patterns\n\n### Reusable Title Function\n```python\ndef add_titled_slide(prs, title_text, layout_idx=1):\n    slide = prs.slides.add_slide(prs.slide_layouts[layout_idx])\n    slide.shapes.title.text = title_text\n    return slide\n```\n\n### Consistent Styling\n```python\ndef style_title(title_shape):\n    title_shape.text_frame.paragraphs[0].font.size = Pt(40)\n    title_shape.text_frame.paragraphs[0].font.bold = True\n    title_shape.text_frame.paragraphs[0].font.color.rgb = RgbColor(0x1F, 0x77, 0xB4)\n```\n\n## Common Presentation Structures\n\n### Business Presentation\n1. Title slide\n2. Agenda/Overview\n3. Problem statement\n4. Solution\n5. Benefits/Features (2-3 slides)\n6. Implementation/Timeline\n7. Call to action\n8. Q&A/Contact\n\n### Technical Presentation\n1. Title slide\n2. Context/Background\n3. Architecture overview\n4. Deep dive sections\n5. Demo/Examples\n6. Summary\n7. Questions\n\nFile v1.0.0:slides.md\n\n# Slide Patterns — PowerPoint PPTX\n\n> **Reference patterns only.** Code examples are templates for developers to adapt.\n\n## Title Slide\n\n```python\nslide_layout = prs.slide_layouts[0]\nslide = prs.slides.add_slide(slide_layout)\n\ntitle = slide.shapes.title\ntitle.text = \"Presentation Title\"\n\nsubtitle = slide.placeholders[1]\nsubtitle.text = \"Subtitle or Author\"\n```\n\n## Content Slide with Bullets\n\n```python\nslide_layout = prs.slide_layouts[1]\nslide = prs.slides.add_slide(slide_layout)\n\ntitle = slide.shapes.title\ntitle.text = \"Key Points\"\n\nbody = slide.placeholders[1]\ntf = body.text_frame\ntf.text = \"First point\"\n\nfor point in [\"Second point\", \"Third point\"]:\n    p = tf.add_paragraph()\n    p.text = point\n    p.level = 0\n```\n\n## Slide with Image\n\n```python\nfrom pptx.util import Inches\n\nslide_layout = prs.slide_layouts[5]  # Title Only\nslide = prs.slides.add_slide(slide_layout)\n\n# Position image\nleft = Inches(1)\ntop = Inches(2)\nwidth = Inches(4)\n\nslide.shapes.add_picture('image.png', left, top, width=width)\n```\n\n## Two-Column Layout\n\n```python\nslide_layout = prs.slide_layouts[3]  # Two Content\nslide = prs.slides.add_slide(slide_layout)\n\ntitle = slide.shapes.title\ntitle.text = \"Comparison\"\n\nleft_content = slide.placeholders[1]\nleft_content.text_frame.text = \"Left column content\"\n\nright_content = slide.placeholders[2]\nright_content.text_frame.text = \"Right column content\"\n```\n\n## Custom Shape Positioning\n\n```python\nfrom pptx.util import Inches, Pt\nfrom pptx.enum.shapes import MSO_SHAPE\n\n# Add rectangle\nshape = slide.shapes.add_shape(\n    MSO_SHAPE.RECTANGLE,\n    Inches(1), Inches(1),  # left, top\n    Inches(3), Inches(1)   # width, height\n)\n\n# Style the shape\nshape.fill.solid()\nshape.fill.fore_color.rgb = RgbColor(0x1F, 0x77, 0xB4)\nshape.line.color.rgb = RgbColor(0x00, 0x00, 0x00)\n```\n\n## Text Box with Formatting\n\n```python\nfrom pptx.util import Inches, Pt\nfrom pptx.enum.text import PP_ALIGN\n\n# Add text box\ntxBox = slide.shapes.add_textbox(\n    Inches(1), Inches(1),\n    Inches(5), Inches(1)\n)\n\ntf = txBox.text_frame\np = tf.paragraphs[0]\np.text = \"Formatted text\"\np.font.size = Pt(24)\np.font.bold = True\np.alignment = PP_ALIGN.CENTER\n```\n\n## Batch Slide Creation\n\n```python\ndata = [\n    {\"title\": \"Slide 1\", \"content\": [\"Point A\", \"Point B\"]},\n    {\"title\": \"Slide 2\", \"content\": [\"Point C\", \"Point D\"]},\n]\n\nfor item in data:\n    slide = prs.slides.add_slide(prs.slide_layouts[1])\n    slide.shapes.title.text = item[\"title\"]\n    \n    body = slide.placeholders[1].text_frame\n    body.text = item[\"content\"][0]\n    for point in item[\"content\"][1:]:\n        p = body.add_paragraph()\n        p.text = point\n```","readmeExcerpt":"Skill: Powerpoint / PPTX Owner: ivangdavila Summary: Create, inspect, and edit Microsoft PowerPoint presentations and PPTX decks with reliable layouts, templates, placeholders, notes, charts, and visual QA. Use... Tags: latest:1.0.1 Version history: v1.0.1 | 2026-03-11T15:33:25.254Z | user Rebalanced the skill toward template inventory, layout mapping, and higher-signal QA after a stricter external audit. v1.0.0 | 20","codeSnippets":[],"executableExamples":[{"language":"python","snippet":"from pptx import Presentation\nfrom pptx.util import Inches, Pt\nfrom pptx.enum.text import PP_ALIGN\nfrom pptx.dml.color import RgbColor"},{"language":"python","snippet":"# Create new presentation\nprs = Presentation()\n\n# Or load existing template\nprs = Presentation('template.pptx')\n\n# Add slide with layout\nslide_layout = prs.slide_layouts[1]  # Title and Content\nslide = prs.slides.add_slide(slide_layout)\n\n# Save\nprs.save('output.pptx')"},{"language":"python","snippet":"# Access title\ntitle = slide.shapes.title\ntitle.text = \"Slide Title\"\n\n# Access body placeholder\nbody = slide.placeholders[1]\ntf = body.text_frame\ntf.text = \"First paragraph\"\n\n# Add more paragraphs\np = tf.add_paragraph()\np.text = \"Second paragraph\"\np.level = 1  # Indent level"},{"language":"python","snippet":"from pptx.chart.data import CategoryChartData\nfrom pptx.enum.chart import XL_CHART_TYPE\nfrom pptx.util import Inches\n\n# Prepare data\nchart_data = CategoryChartData()\nchart_data.categories = ['Q1', 'Q2', 'Q3', 'Q4']\nchart_data.add_series('Sales', (19.2, 21.4, 16.7, 28.0))\nchart_data.add_series('Costs', (12.1, 14.3, 11.2, 18.5))\n\n# Add chart to slide\nx, y, cx, cy = Inches(1), Inches(2), Inches(8), Inches(4.5)\nchart = slide.shapes.add_chart(\n    XL_CHART_TYPE.COLUMN_CLUSTERED, x, y, cx, cy, chart_data\n).chart\n\n# Optional: add title\nchart.has_title = True\nchart.chart_title.text_frame.text = \"Quarterly Performance\""},{"language":"python","snippet":"chart_data = CategoryChartData()\nchart_data.categories = ['Jan', 'Feb', 'Mar', 'Apr', 'May']\nchart_data.add_series('Trend', (4.3, 2.5, 3.5, 4.5, 5.2))\n\nchart = slide.shapes.add_chart(\n    XL_CHART_TYPE.LINE, Inches(1), Inches(2), Inches(8), Inches(4), chart_data\n).chart"},{"language":"python","snippet":"from pptx.chart.data import CategoryChartData\nfrom pptx.enum.chart import XL_CHART_TYPE\n\nchart_data = CategoryChartData()\nchart_data.categories = ['Product A', 'Product B', 'Product C']\nchart_data.add_series('Market Share', (35, 45, 20))\n\nchart = slide.shapes.add_chart(\n    XL_CHART_TYPE.PIE, Inches(2), Inches(2), Inches(6), Inches(4), chart_data\n).chart\n\n# Show percentages\nplot = chart.plots[0]\nplot.has_data_labels = True\ndata_labels = plot.data_labels\ndata_labels.show_percentage = True\ndata_labels.show_value = False"}],"parameters":null,"dependencies":[],"permissions":[],"extractedFiles":[{"path":"SKILL.md","content":"---\nname: Powerpoint / PPTX\nslug: powerpoint-pptx\nversion: 1.0.1\nhomepage: https://clawic.com/skills/powerpoint-pptx\ndescription: \"Create, inspect, and edit Microsoft PowerPoint presentations and PPTX decks with reliable layouts, templates, placeholders, notes, charts, and visual QA. Use when (1) the task is about PowerPoint or `.pptx`; (2) layouts, placeholders, notes, charts, comments, or template fidelity matter; (3) the deck must render cleanly after edits.\"\nchangelog: Rebalanced the skill toward template inventory, layout mapping, and higher-signal QA after a stricter external audit.\nmetadata: {\"clawdbot\":{\"emoji\":\"📊\",\"requires\":{\"bins\":[]},\"os\":[\"linux\",\"darwin\",\"win32\"]}}\n---\n\n## When to Use\n\nUse when the main artifact is a Microsoft PowerPoint presentation or `.pptx` deck, especially when layouts, templates, placeholders, notes, comments, charts, extraction, editing, or final visual quality matter.\n\n## Core Rules\n\n### 1. Choose the workflow before touching the deck\n\n- Reading text, editing an existing deck, rebuilding from a template, and creating from scratch are different jobs with different failure modes.\n- For text extraction or inspection, read the deck before editing it.\n- Text extraction plus thumbnail-style visual inspection is safer than editing from shape assumptions alone.\n- For template-driven work, inventory the deck before replacing content.\n- For deep edits, remember a `.pptx` file is OOXML with separate parts for slides, layouts, masters, media, notes, and comments.\n- If a template exists, template fidelity beats generic slide-design instincts.\n- Reusing or duplicating a good existing slide is often safer than rebuilding it and hoping the theme still matches.\n\n### 2. Inventory the deck before replacing content\n\n- Count the reusable layouts, real placeholders, notes, comments, media, and recurring typography or color patterns first.\n- Placeholder indexes and layout indexes are not portable assumptions.\n- Inspect the actual slide or template before targeting title, body, chart, or image shapes.\n- Speaker notes, comments, and linked assets can live outside the visible slide surface.\n- A missing or wrong placeholder target can silently land content in the wrong box or wrong layer.\n- Master and layout settings can override local slide edits, so the visible problem is not always on the slide you are editing.\n\n### 3. Match content to the actual placeholders\n\n- Count the actual content pieces before choosing a layout.\n- Pick layouts based on the real number of ideas, columns, images, or charts the slide needs.\n- Do not force two ideas into a three-column slide or cram dense text under a chart.\n- Category counts and data series lengths must match or charts will break in ugly ways.\n- Explicit sizing beats wishful thinking: text boxes, images, and charts need real space, not \"it should fit\".\n- Do not choose a layout with more placeholders than the content can meaningfully fill.\n- Quote layouts are for real quotes, and image-led layo"},{"path":"_meta.json","content":"{\n  \"ownerId\": \"kn73vp5rarc3b14rc7wjcw8f8580t5d1\",\n  \"slug\": \"powerpoint-pptx\",\n  \"version\": \"1.0.1\",\n  \"publishedAt\": 1773243205254\n}"}],"languages":[],"docsSourceLabel":"CLAWHUB","editorialOverview":"Create, inspect, and edit Microsoft PowerPoint presentations and PPTX decks with reliable layouts, templates, placeholders, notes, charts, and visual QA. Use... Skill: Powerpoint / PPTX Owner: ivangdavila Summary: Create, inspect, and edit Microsoft PowerPoint presentations and PPTX decks with reliable layouts, templates, placeholders, notes, charts, and visual QA. Use... Tags: latest:1.0.1 Version history: v1.0.1 | 2026-03-11T15:33:25.254Z | user Rebalanced the skill toward template inventory, layout mapping, and higher-signal QA after a stricter external audit. v1.0.0 | 20","editorialQuality":{"score":100,"threshold":65,"status":"ready","wordCount":832,"uniquenessScore":55,"reasons":[]}},"media":{"evidence":{"source":"no-media","verified":false,"confidence":"low","updatedAt":"2026-05-19T07:01:11.689Z","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-05-19T07:01:11.689Z","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-09T21:55:50.743Z","emptyReason":null},"items":[{"id":"8ebccd8e-3863-4187-8355-c3f14e1f9edf","entityType":"agent","canonicalPath":"/agent/iofficeai-aionui","slug":"iofficeai-aionui","name":"AionUi","description":"Free, local, open-source 24/7 Cowork app and OpenClaw for Gemini CLI, Claude Code, Codex, OpenCode, Qwen Code, Goose CLI, Auggie, and more | 🌟 Star if you like it!","url":"https://github.com/iOfficeAI/AionUi","homepage":"https://www.aionui.com","source":"GITHUB_REPOS","protocols":["MCP","OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-10-09T19:11:12.944Z","createdAt":"2026-02-25T03:38:16.584Z","downloads":null},{"id":"b917f68a-ebff-438e-84f8-3f4b2494c0bc","entityType":"agent","canonicalPath":"/agent/activepieces-activepieces","slug":"activepieces-activepieces","name":"activepieces","description":"AI Agents & MCPs & AI Workflow Automation • (~400 MCP servers for AI agents) • AI Automation / AI Agent with MCPs • AI Workflows & AI Agents • MCPs for AI Agents","url":"https://github.com/activepieces/activepieces","homepage":"https://www.activepieces.com","source":"GITHUB_REPOS","protocols":["OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-04-15T02:22:12.426Z","createdAt":"2026-02-25T03:38:12.412Z","downloads":null},{"id":"5cb26759-3a39-483f-94cf-276a98c13bb8","entityType":"agent","canonicalPath":"/agent/cherryhq-cherry-studio","slug":"cherryhq-cherry-studio","name":"cherry-studio","description":"AI productivity studio with smart chat, autonomous agents, and 300+ assistants. Unified access to frontier LLMs","url":"https://github.com/CherryHQ/cherry-studio","homepage":"https://cherry-ai.com","source":"GITHUB_REPOS","protocols":["MCP","OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-04-11T14:38:40.986Z","createdAt":"2026-02-25T03:38:19.379Z","downloads":null},{"id":"6f6582d0-5d76-4f0f-b81d-86520247950b","entityType":"agent","canonicalPath":"/agent/copilotkit-copilotkit","slug":"copilotkit-copilotkit","name":"CopilotKit","description":"The Frontend for Agents & Generative UI. React + Angular","url":"https://github.com/CopilotKit/CopilotKit","homepage":"https://docs.copilotkit.ai","source":"GITHUB_REPOS","protocols":["OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-03-25T09:50:57.846Z","createdAt":"2026-02-25T03:39:14.617Z","downloads":null}],"links":{"hub":"/agent","source":"/agent/source/clawhub","protocols":[{"label":"OpenClaw","href":"/agent/protocol/openclew"}]}}}