
Powerpoint Ppt
- 1.3k installs
- 7 repo stars
- Updated August 2, 2026
- practicalswan/agent-skills
powerpoint-ppt is an agent skill at version 1.2 that creates, formats, and manipulates PowerPoint .pptx presentations for developers who need agent-driven slide composition from structured content.
About
powerpoint-ppt is a version 1.2 agent skill from practicalswan/agent-skills, last updated 2026-04-25, for creating, formatting, and manipulating PowerPoint .pptx presentations from structured content through MCP server workflows. The skill targets PowerPoint desktop or web releases plus python-pptx automation when MCP presentation tooling is available on the host. Developers reach for powerpoint-ppt when a .pptx deck is the required output—building slides, managing placeholders, applying templates, inserting images, or extracting text from existing presentations. Tags include slides, ppt, docs, writing, and quality. The skill notes that presentation MCP tooling is host-dependent and recommends parallel subagent dispatch with large context windows where supported. Workflows cover slide creation, placeholder management, template application, image insertion, and .pptx text extraction so agents produce presentation-ready artifacts instead of plain Markdown outlines.
- MCP server for .pptx manipulation
- Template-driven slide composition
- Supports text extraction and image insertion
- Works with python-pptx automation
Powerpoint Ppt by the numbers
- 1,349 all-time installs (skills.sh)
- +58 installs in the week ending Aug 4, 2026 (Skillselion tracking)
- Ranked #217 of 1,879 Documentation skills by installs in the Skillselion catalog
- Data as of Aug 4, 2026 (Skillselion catalog sync)
npx skills add https://github.com/practicalswan/agent-skills --skill powerpoint-pptAdd your badge
Show developers this skill is listed on Skillselion. Paste this into your README.
| Installs | 1.3k |
|---|---|
| repo stars | ★ 7 |
| Last updated | August 2, 2026 |
| Repository | practicalswan/agent-skills ↗ |
How do agents create PowerPoint presentations programmatically?
Install this skill to create, format, and manipulate PowerPoint presentations from structured content.
Who is it for?
Developers or agents that must produce .pptx slide decks with templates, placeholders, images, or text extraction from existing presentations.
Skip if: Google Slides-only workflows, PDF slide exports without .pptx editing, or environments lacking presentation MCP or python-pptx support.
When should I use this skill?
A developer needs to create slides, format a .pptx deck, apply templates, add images, or extract text from a PowerPoint file.
What you get
Formatted .pptx presentation files with slides, applied templates, managed placeholders, embedded images, and extracted text content.
- .pptx presentation file
- Extracted slide text
By the numbers
- Skill version 1.2 last updated 2026-04-25
- Tagged with slides, ppt, docs, writing, and quality
Files
PowerPoint Presentation Workflows
Tech Stack Target / Version: PowerPoint current desktop or web releases and python-pptx automation.Use this skill when a .pptx deck is the output and slide composition matters.
- Leverage native parallel subagent dispatch and 200k+ context windows where available.
Current MCP Reality
Presentation MCP tooling is host-dependent. Some clients expose Office presentation tools directly, while others do not. Do not assume stable public tool names. If the current client lacks those tools, use the included local automation script or generate the content structure first and import it into PowerPoint.
Activation Conditions
Use symptom -> action triggers: when one matches, apply this skill and verify with the protocol below.
- Creating a deck from structured content
- Applying templates, branding, and slide layouts
- Updating text, images, or charts inside an existing presentation
- Extracting slide text for review or translation
Practical Workflow
1. Confirm whether the client exposes presentation tools. 2. Prefer template-driven decks over manual one-off slide formatting. 3. Keep one idea per slide and treat text density as a defect. 4. Validate the final deck visually before calling it done.
MCP Fallback – Native Automation
When MCP is unavailable, use native automation: python-pptx for .pptx, image export or screenshot checks for visual validation, and manual review for animations or speaker notes. Preserve slide order, layouts, theme fonts, media, notes, and aspect ratio, then reopen or render the deck before claiming success.
Anti-Patterns
- Writing for the author instead of the reader: It bakes in unstated context and leaves the actual audience unsure what to do next.
- Skipping concrete examples or commands: Abstract guidance is easy to approve and hard to apply correctly.
- Letting links, screenshots, or versions drift: Polished formatting does not help if the instructions are no longer true.
Verification Protocol
Before claiming "skill applied successfully":
1. Pass/fail: The Powerpoint Ppt artifact type, target format, and required output fidelity are stated before editing. 2. Pass/fail: MCP availability is checked and the native automation fallback path is named when MCP is absent. 3. Pass/fail: The produced file or formula is opened, parsed, rendered, or otherwise validated locally. 4. Pressure-test scenario: Apply the workflow to a file with formatting, metadata, or conversion edge cases and verify nothing important is lost. 5. Success metric: Zero unverified document claims; the artifact itself is the evidence.
Deck Checklist
- [ ] Title slide is present
- [ ] Slide layouts are consistent
- [ ] Fonts and colors match the template
- [ ] Images are high-resolution and not stretched
- [ ] Final slides were reviewed in slideshow size, not just as raw XML or text
References & Resources
Documentation
- PowerPoint References - Supporting notes for formatting, structure, and automation expectations
Scripts
- PPT Automation Script - Local fallback for building or updating presentation content
Examples
- Presentation Examples - Example deck structures and content patterns
<!-- PORTABILITY:START -->
Cross-Client Portability
This skill is written to stay usable across GitHub Copilot, Claude Code, Codex, and Gemini CLI.
- GitHub Copilot: keep the folder in a Copilot-visible skill or plugin path, or wrap the workflow as project instructions if the host does not support portable skill folders directly.
- Claude Code: keep the folder in a local skills directory or a compatible plugin or marketplace source.
- Codex: install or sync the folder into
$CODEX_HOME/skills/<skill-name>and restart Codex after major changes. - Gemini CLI: this repository generates a project command named
/skills:powerpoint-pptfrom this skill. Rebuild commands withpython scripts/export-gemini-skill.py powerpoint-pptand then run/commands reloadinside Gemini CLI.
<!-- PORTABILITY:END -->
<!-- MCP:START -->
MCP Availability And Fallback
Preferred MCP Server: PowerPoint MCP
- Fallback prompt: "Use the PowerPoint Presentation Workflows skill without MCP. Rely on the local
SKILL.md, bundled references or scripts, and manual verification. Show the exact commands, evidence, and final checks you used before concluding." - Use
python-pptx, PowerPoint desktop, or a scriptable slide generator when the MCP surface is unavailable. - Render the final deck and manually verify layout, overflow, and speaker-facing notes before delivery.
<!-- MCP:END -->
Related Skills
- documentation-authoring: Use it when the workflow also needs drafting structured technical or product documents.
- documentation-patterns: Use it when the workflow also needs reusable documentation structures and templates.
- documentation-quality: Use it when the workflow also needs documentation review standards and quality gates.
- documentation-verification: Use it when the workflow also needs final documentation validation before publishing.
Changelog
[2026-04-25] - Version 1.2 Verification Protocol Refresh
Added
- Added a
Verification Protocolsection with skill-specific pass/fail checks, one pressure-test scenario, and a measurable success metric. - Added guidance to leverage native parallel subagent dispatch and 200k+ context windows where available.
- Added the shared
MCP Fallback ? Native Automationsection for Office-style workflows.
Changed
- Updated
SKILL.mdfrontmatter toversion: "1.2"andlast_updated: 2026-04-25. - Reframed activation guidance toward symptom -> action triggers and standardized two-stage review wording where applicable.
[2026-04-24] - Version 1.1 Refresh
Changed
- Updated the SKILL frontmatter version to
1.1for the 2026-04-24 catalog refresh.
All notable changes to this skill will be documented in this file.
[2026-04-24] - Skill Refresh
Changed
- Standardized the SKILL frontmatter with version metadata, last-updated date, tags, and a concise catalog description.
- Reformatted the portability and MCP guidance with a preferred server line, a copy-paste fallback prompt, and consistent bullet lists.
- Added a catalog-standard Anti-Patterns section and refreshed the Related Skills links at the end of the skill.
- Added a Tech Stack Target / Version note so deck-generation guidance is tied to the current slide tooling surface.
[2026-04-04] - Cross-Client Portability Refresh
Changed
- Added a standard portability note covering GitHub Copilot, Claude Code, Codex, and Gemini CLI.
- Documented the preferred MCP server surface for this skill and a local no-MCP fallback workflow.
Tested
- Validated
SKILL.mdfrontmatter, portability sections, and Gemini export readiness withpython scripts/validate-skills.py.
[2026-03-09] - Workspace Modernization
Changed
- Rewrote the skill to describe presentation MCP access as host-specific instead of assuming stable wrapper tool names
- Repositioned the local automation script as the fallback path when MCP presentation tools are unavailable
[2026-02-28] - Description Rewrite and Cross-References
Changed
- Rewrote the skill description to concise activation-focused wording
- Improved keyword specificity to reduce overlap with related skills
Added
- Added the related-skills cross-reference table
[2026-02-19] - PowerPoint MCP Extraction
Changed
- Split presentation workflow guidance out of the former shared office-documents skill into a PowerPoint-specific skill
- Replaced library-first guidance with MCP-oriented presentation workflows
- Updated activation triggers around presentations, slide decks,
.pptx, and PowerPoint MCP use cases
Added
- Added PowerPoint-specific references and local automation support
- Added coverage for slide management, text, templates, images, and presentation extraction workflows
Fixed
- Reduced ambiguity between generic office-document handling and PowerPoint-specific presentation tasks
PowerPoint Presentation Examples
Example 1: Creating a Business Presentation
// Step 1: Activate required tools
activate_presentation_creation_and_management();
activate_text_placeholder_management();
activate_content_management_tools();
// Step 2: Create presentation
mcp_ppt_create_presentation({
filename: "q3_business_review.pptx",
title: "Q3 2025 Business Review"
});
// Step 3: Create title slide
mcp_ppt_populate_placeholder({
slide_index: 0,
placeholder_index: 0,
text: "Q3 2025 Business Review"
});
mcp_ppt_populate_placeholder({
slide_index: 0,
placeholder_index: 1,
text: "Finance Division · October 2025"
});
// Step 4: Add agenda slide
mcp_ppt_add_slide({ filename: "q3_business_review.pptx", layout_index: 2 });
mcp_ppt_populate_placeholder({
slide_index: 1,
placeholder_index: 0,
text: "Agenda"
});
mcp_ppt_add_bullet_points_to_placeholder({
slide_index: 1,
placeholder_index: 1,
bullet_points: [
"Financial Performance Overview",
"Key Metrics and KPIs",
"Regional Analysis",
"Strategic Initiatives",
"Q4 Outlook"
]
});
// Step 5: Add content slide with metrics
mcp_ppt_add_slide({ filename: "q3_business_review.pptx", layout_index: 2 });
mcp_ppt_populate_placeholder({
slide_index: 2,
placeholder_index: 0,
text: "Key Financial Metrics"
});
mcp_ppt_add_bullet_points_to_placeholder({
slide_index: 2,
placeholder_index: 1,
bullet_points: [
"Revenue: $1.8M (+20% YoY)",
"Gross Margin: 45% (+3pp)",
"Operating Income: $540K",
"Net Income: $405K",
"EPS: $0.45"
]
});
// Step 6: Save presentation
mcp_ppt_save_presentation({ filename: "q3_business_review.pptx" });Example 2: Creating a Data-Heavy Presentation with Charts
// Create presentation with multiple chart slides
activate_presentation_creation_and_management();
activate_text_placeholder_management();
activate_content_management_tools();
mcp_ppt_create_presentation({
filename: "data_analysis.pptx",
title: "Q3 Data Analysis"
});
// Title slide
mcp_ppt_populate_placeholder({ slide_index: 0, placeholder_index: 0, text: "Q3 Data Analysis" });
mcp_ppt_populate_placeholder({ slide_index: 0, placeholder_index: 1, text: "Analytics Team" });
// Revenue chart slide
mcp_ppt_add_slide({ filename: "data_analysis.pptx", layout_index: 2 });
mcp_ppt_populate_placeholder({ slide_index: 1, placeholder_index: 0, text: "Revenue Trends" });
mcp_ppt_add_bullet_points_to_placeholder({
slide_index: 1,
placeholder_index: 1,
bullet_points: [
"Strong growth in APAC region",
"Americas showing steady improvement",
"EMEA exceeding targets"
]
});
mcp_ppt_manage_image({
slide_index: 1,
operation: "add",
image_path: "./charts/revenue_by_region.png",
left: 1.0,
top: 2.5,
width: 8.0,
height: 4.0
});
mcp_ppt_manage_text({
slide_index: 1,
operation: "add",
text: "Source: Internal BI System",
font_size: 9,
italic: true,
left: 7.0,
top: 6.8,
width: 2.0,
height: 0.3,
alignment: "right"
});
// Customer acquisition chart slide
mcp_ppt_add_slide({ filename: "data_analysis.pptx", layout_index: 2 });
mcp_ppt_populate_placeholder({ slide_index: 2, placeholder_index: 0, text: "Customer Acquisition" });
mcp_ppt_manage_image({
slide_index: 2,
operation: "add",
image_path: "./charts/customer_funnel.png",
left: 1.0,
top: 1.5,
width: 8.0,
height: 4.5
});
mcp_ppt_save_presentation({ filename: "data_analysis.pptx" });Example 3: Template-Based Presentation with Branding
// Create presentation from template
activate_presentation_creation_and_management();
activate_text_placeholder_management();
activate_template_application_tools();
activate_content_management_tools();
// Create from template
mcp_ppt_create_presentation({
filename: "monthly_update.pptx",
title: "Monthly Status Update"
});
// Apply brand template
mcp_ppt_apply_template({
filename: "monthly_update.pptx",
template_name: "BrandTemplate.pptx",
apply_to_all: true
});
// Title slide
mcp_ppt_populate_placeholder({
slide_index: 0,
placeholder_index: 0,
text: "November 2025 Status Update"
});
mcp_ppt_populate_placeholder({
slide_index: 0,
placeholder_index: 1,
text: "Engineering Department"
});
// Progress slide
mcp_ppt_add_slide({ filename: "monthly_update.pptx", layout_index: 2 });
mcp_ppt_populate_placeholder({ slide_index: 1, placeholder_index: 0, text: "Project Progress" });
mcp_ppt_add_bullet_points_to_placeholder({
slide_index: 1,
placeholder_index: 1,
bullet_points: [
"Platform Migration: 85% complete",
"API Gateway: Deployed to production",
"Dashboard Redesign: In QA",
"Mobile App Beta: Launched"
]
});
// Blockers slide
mcp_ppt_add_slide({ filename: "monthly_update.pptx", layout_index: 2 });
mcp_ppt_populate_placeholder({ slide_index: 2, placeholder_index: 0, text: "Key Blockers" });
mcp_ppt_add_bullet_points_to_placeholder({
slide_index: 2,
placeholder_index: 1,
bullet_points: [
"Database migration pending security review",
"API rate limiting needs performance testing",
"Third-party authentication provider delay"
]
});
// Next steps slide
mcp_ppt_add_slide({ filename: "monthly_update.pptx", layout_index: 2 });
mcp_ppt_populate_placeholder({ slide_index: 3, placeholder_index: 0, text: "Next Steps" });
mcp_ppt_add_bullet_points_to_placeholder({
slide_index: 3,
placeholder_index: 1,
bullet_points: [
"Complete platform migration by Nov 15",
"Performance testing on API Gateway",
"Finalize dashboard UI components",
"Prepare mobile app public beta"
]
});
mcp_ppt_save_presentation({ filename: "monthly_update.pptx" });Example 4: Presentation with Mixed Formatting
// Create presentation with mixed text formatting
activate_presentation_creation_and_management();
activate_text_placeholder_management();
mcp_ppt_create_presentation({
filename: "kpi_dashboard.pptx",
title: "KPI Dashboard"
});
// Title slide with styled subtitle
mcp_ppt_populate_placeholder({
slide_index: 0,
placeholder_index: 0,
text: "Q3 KPI Performance"
});
// Add free text box with mixed formatting
mcp_ppt_manage_text({
slide_index: 0,
operation: "add",
text_runs: [
{ text: "Prepared by: ", bold: false, font_size: 14 },
{ text: "Finance Team", bold: true, font_size: 14, color: [31, 78, 120] }
],
left: 2.0,
top: 4.0,
width: 6.0,
height: 0.5,
alignment: "center"
});
// KPI highlights slide
mcp_ppt_add_slide({ filename: "kpi_dashboard.pptx", layout_index: 2 });
mcp_ppt_populate_placeholder({ slide_index: 1, placeholder_index: 0, text: "KPI Highlights" });
// Add KPI callouts with mixed formatting
mcp_ppt_manage_text({
slide_index: 1,
operation: "add",
text_runs: [
{ text: "Revenue: ", bold: true, font_size: 18, color: [31, 78, 120] },
{ text: "$1.8M ", bold: true, font_size: 18 },
{ text: "(", font_size: 18 },
{ text: "+20%", bold: true, font_size: 18, color: [0, 128, 0] },
{ text: ")", font_size: 18 }
],
left: 1.0,
top: 2.0,
width: 3.0,
height: 0.5
});
mcp_ppt_manage_text({
slide_index: 1,
operation: "add",
text_runs: [
{ text: "Margin: ", bold: true, font_size: 18, color: [31, 78, 120] },
{ text: "45% ", bold: true, font_size: 18 },
{ text: "(", font_size: 18 },
{ text: "+3pp", bold: true, font_size: 18, color: [0, 128, 0] },
{ text: ")", font_size: 18 }
],
left: 1.0,
top: 2.8,
width: 3.0,
height: 0.5
});
mcp_ppt_save_presentation({ filename: "kpi_dashboard.pptx" });MIT License
Copyright (c) 2026 Sithu Win San
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
"""
PowerPoint Presentation Automation Script
This script automates common PowerPoint presentation tasks:
- Creating presentations from templates
- Populating slide content from data
- Generating slides from structured data
- Exporting presentation metadata
Usage: python scripts/ppt-automation.py
"""
from typing import Dict, List, Any, Optional
import json
class PresentationBuilder:
"""Builder for creating PowerPoint presentations programmatically."""
def __init__(self, filename: str):
self.filename = filename
self.slides = []
def add_title_slide(self, title: str, subtitle: str = "") -> Dict:
"""Add a title slide."""
return {
"type": "title",
"title": title,
"subtitle": subtitle
}
def add_content_slide(self, title: str, bullets: List[str]) -> Dict:
"""Add a content slide with bullet points."""
return {
"type": "content",
"title": title,
"bullets": bullets
}
def add_chart_slide(self, title: str, chart_path: str, bullets: List[str] = None) -> Dict:
"""Add a slide with a chart image."""
return {
"type": "chart",
"title": title,
"chart_path": chart_path,
"bullets": bullets or []
}
def add_two_column_slide(self, title: str, left_bullets: List[str], right_bullets: List[str]) -> Dict:
"""Add a two-column content slide."""
return {
"type": "two_column",
"title": title,
"left": left_bullets,
"right": right_bullets
}
def build_slides(self, data: List[Dict]) -> None:
"""Build slides from structured data."""
for item in data:
if item["type"] == "title":
self.slides.append(self.add_title_slide(item["title"], item.get("subtitle", "")))
elif item["type"] == "content":
self.slides.append(self.add_content_slide(item["title"], item["bullets"]))
elif item["type"] == "chart":
self.slides.append(self.add_chart_slide(item["title"], item["chart_path"], item.get("bullets")))
elif item["type"] == "two_column":
self.slides.append(self.add_two_column_slide(item["title"], item["left"], item["right"]))
def export_mcp_commands(self) -> str:
"""Export slides as MCP commands."""
commands = []
commands.append("// Activate required tools")
commands.append("activate_presentation_creation_and_management();")
commands.append("activate_text_placeholder_management();")
commands.append("activate_content_management_tools();")
commands.append("")
commands.append(f'// Create presentation: {self.filename}')
commands.append(f'mcp_ppt_create_presentation({{ filename: "{self.filename}", title: "Presentation" }});')
commands.append("")
slide_index = 0
for slide in self.slides:
if slide["type"] == "title":
commands.append(f"// Slide {slide_index}: Title slide")
commands.append(f'mcp_ppt_populate_placeholder({{ slide_index: {slide_index}, placeholder_index: 0, text: "{slide["title"]}" }});')
if slide.get("subtitle"):
commands.append(f'mcp_ppt_populate_placeholder({{ slide_index: {slide_index}, placeholder_index: 1, text: "{slide["subtitle"]}" }});')
commands.append("")
elif slide["type"] == "content":
commands.append(f"// Slide {slide_index}: {slide['title']}")
commands.append(f'mcp_ppt_add_slide({{ filename: "{self.filename}", layout_index: 2 }});')
commands.append(f'mcp_ppt_populate_placeholder({{ slide_index: {slide_index}, placeholder_index: 0, text: "{slide["title"]}" }});')
if slide["bullets"]:
bullets_json = json.dumps(slide["bullets"])
commands.append(f'mcp_ppt_add_bullet_points_to_placeholder({{ slide_index: {slide_index}, placeholder_index: 1, bullet_points: {bullets_json} }});')
commands.append("")
elif slide["type"] == "chart":
commands.append(f"// Slide {slide_index}: {slide['title']}")
commands.append(f'mcp_ppt_add_slide({{ filename: "{self.filename}", layout_index: 2 }});')
commands.append(f'mcp_ppt_populate_placeholder({{ slide_index: {slide_index}, placeholder_index: 0, text: "{slide["title"]}" }});')
commands.append(f'mcp_ppt_manage_image({{ slide_index: {slide_index}, operation: "add", image_path: "{slide["chart_path"]}", left: 1.0, top: 1.5, width: 8.0, height: 4.5 }});')
if slide.get("bullets"):
bullets_json = json.dumps(slide["bullets"])
commands.append(f'mcp_ppt_add_bullet_points_to_placeholder({{ slide_index: {slide_index}, placeholder_index: 1, bullet_points: {bullets_json} }});')
commands.append("")
slide_index += 1
commands.append(f"// Save presentation")
commands.append(f'mcp_ppt_save_presentation({{ filename: "{self.filename}" }});')
return "\n".join(commands)
def create_business_review_presentation() -> str:
"""Example: Create a quarterly business review presentation."""
builder = PresentationBuilder("q3_business_review.pptx")
data = [
{
"type": "title",
"title": "Q3 2025 Business Review",
"subtitle": "Finance Division · October 2025"
},
{
"type": "content",
"title": "Agenda",
"bullets": [
"Financial Performance Overview",
"Key Metrics and KPIs",
"Regional Analysis",
"Strategic Initiatives",
"Q4 Outlook"
]
},
{
"type": "chart",
"title": "Revenue by Region",
"chart_path": "./charts/revenue_by_region.png",
"bullets": [
"APAC led growth at +35%",
"Americas +15%",
"EMEA +12%"
]
},
{
"type": "two_column",
"title": "Operational Highlights",
"left": [
"Launched new product line",
"Expanded to 3 new markets",
"Hired 50 new employees"
],
"right": [
"Improved customer satisfaction",
"Reduced operational costs",
"Increased profit margins"
]
},
{
"type": "content",
"title": "Q4 Outlook",
"bullets": [
"Continue growth momentum",
"Focus on customer retention",
"Invest in product innovation",
"Expand market presence"
]
}
]
builder.build_slides(data)
return builder.export_mcp_commands()
def create_metrics_dashboard_presentation() -> str:
"""Example: Create a metrics dashboard presentation."""
builder = PresentationBuilder("kpi_dashboard.pptx")
data = [
{
"type": "title",
"title": "Monthly KPI Dashboard",
"subtitle": "Performance Overview"
},
{
"type": "chart",
"title": "Revenue Trend",
"chart_path": "./charts/revenue_trend.png"
},
{
"type": "chart",
"title": "Customer Acquisition",
"chart_path": "./charts/customer_acquisition.png"
},
{
"type": "content",
"title": "Key Metrics Summary",
"bullets": [
"Revenue: $1.8M (+20% YoY)",
"Gross Margin: 45% (+3pp)",
"Customer Count: 12,500 (+15%)",
"NPS Score: 72 (+5 points)"
]
}
]
builder.build_slides(data)
return builder.export_mcp_commands()
if __name__ == "__main__":
print("=" * 80)
print("PowerPoint Presentation Automation")
print("=" * 80)
print()
print("Example 1: Business Review Presentation")
print("-" * 80)
print(create_business_review_presentation())
print()
print("=" * 80)
print("Example 2: KPI Dashboard Presentation")
print("-" * 80)
print(create_metrics_dashboard_presentation())
Related skills
How it compares
Choose powerpoint-ppt when the deliverable must be a native .pptx deck; use Markdown or HTML slide tools when PowerPoint format is not required.
FAQ
What file format does powerpoint-ppt work with?
powerpoint-ppt works with PowerPoint .pptx files for creating slides, formatting presentations, managing placeholders, applying templates, adding images, and extracting text. Automation targets PowerPoint desktop or web plus python-pptx where MCP tooling is available.
What version is powerpoint-ppt?
powerpoint-ppt is version 1.2, last updated 2026-04-25, in the practicalswan/agent-skills repository. The skill tags include slides, ppt, docs, writing, and quality for presentation workflow tasks.