{
    "name": "pptx",
    "version": "1.0.0",
    "description": "Professional PowerPoint presentation creation, editing, and automation with support for layouts, templates, charts, images, and formatting. Use when working with .pptx files for: (1) Creating presentations from scratch, (2) Editing existing presentations, (3) Applying templates and themes, (4) Adding charts and visualizations, (5) Bulk slide generation, (6) Presentation automation",
    "system_prompt": "name pptx description Professional PowerPoint presentation creation, editing, and automation with support for layouts, templates, charts, images, and formatting. Use when working with .pptx files for: (1) Creating presentations from scratch, (2) Editing existing presentations, (3) Applying templates and themes, (4) Adding charts and visualizations, (5) Bulk slide generation, (6) Presentation automation PowerPoint (PPTX) Skill Overview This skill provides comprehensive PowerPoint presentation creation, editing, and automation capabilities using Python's python-pptx library. Create professional presentations programmatically with full control over layouts, themes, content, charts, and visualizations. Core Capabilities Presentation Creation : New presentations, templates, metadata, page configuration Slide Management : Add, duplicate, delete, reorder slides with predefined layouts Content Types : Text, shapes, images, tables, charts, SmartArt, hyperlinks Design & Formatting : Themes, color schemes, fonts, fills, borders, effects Advanced Features : Transitions, animations, embedded objects, video/audio, comments Installation Install the required library: pip install python-pptx # or with uv uv pip install python-pptx Basic imports: from pptx import Presentation from pptx.util import Inches, Pt, Cm from pptx.dml.color import RGBColor from pptx.enum.text import PP_ALIGN, MSO_ANCHOR from pptx.chart.data import CategoryChartData from pptx.enum.chart import XL_CHART_TYPE For complete library setup and supporting packages (Pillow, pandas, matplotlib), see references/library-setup.md . Core Workflows Workflow 1: Creating a Business Presentation Goal: Create a professional presentation with title slide, content slides, and conclusion. Steps: Initialize Presentation Create new presentation object Set slide dimensions (standard 16:9 or 4:3) Configure metadata (title, author, subject, keywords) Add Title Slide Use title slide layout (typically prs.slide_layouts[0] ) Set title and subtitle text Apply formatting (font size, color, bold) Add Content Slides Use appropriate layouts (bullet, two-column, title-only, blank) Populate placeholders or add text boxes Format text with proper hierarchy Add Visual Elements Insert images with proper sizing and positioning Add charts with formatted data Create tables with cell styling Save Presentation Save to .pptx format Verify file creation Quick Example: from pptx import Presentation from pptx.util import Inches, Pt prs = Presentation() prs.slide_width = Inches( 10 ) prs.slide_height = Inches( 7.5 ) # Title slide slide = prs.slides.add_slide(prs.slide_layouts[ 0 ]) slide.shapes.title.text = \"Q4 Business Review\" slide.placeholders[ 1 ].text = \"Prepared by: Jane Doe\\nDate: October 25, 2025\" prs.save( 'presentation.pptx' ) See examples/business-presentation.md for complete implementation. Workflow 2: Adding Charts Goal: Create data visualizations with bar, line, and pie charts. Steps: Prepare chart data using CategoryChartData Define categories and series Add chart to slide with positioning Format chart (legend, gridlines, labels) Quick Example: from pptx.chart.data import CategoryChartData from pptx.enum.chart import XL_CHART_TYPE chart_data = CategoryChartData() chart_data.categories = [ 'Q1' , 'Q2' , 'Q3' , 'Q4' ] chart_data.add_series( '2025' , ( 9.5 , 10.8 , 11.2 , 13.1 )) chart = slide.shapes.add_chart( XL_CHART_TYPE.COLUMN_CLUSTERED, Inches( 1 ), Inches( 2 ), Inches( 8 ), Inches( 4.5 ), chart_data ).chart See examples/chart-examples.md for all chart types. Workflow 3: Working with Images Goal: Add, position, and format images in presentations. Steps: Add image with slide.shapes.add_picture() Specify position (left, top) and size (width, height) Calculate centered positioning if needed Optimize images before adding (use Pillow for preprocessing) Quick Example: # Add image with auto-scaled aspect ratio pic = slide.shapes.add_picture( 'logo.png' , Inches( 1 ), Inches( 1 ), height=Inches( 2 )) # Center image on slide pic.left = int ((prs.slide_width - pic.width) / 2 ) pic.top = int ((prs.slide_height - pic.height) / 2 ) See examples/image-handling.md for advanced techniques. Workflow 4: Creating Tables Goal: Add structured data tables with formatting. Steps: Define table dimensions (rows, cols) Add table with positioning Set column widths Populate headers with bold formatting and background color Fill data cells with proper alignment Quick Example: table = slide.shapes.add_table( 4 , 3 , Inches( 1.5 ), Inches( 2 ), Inches( 7 ), Inches( 3 )).table # Header formatting cell = table.cell( 0 , 0 ) cell.text = \"Product\" cell.text_frame.paragraphs[ 0 ].font.bold = True cell.fill.solid() cell.fill.fore_color.rgb = RGBColor( 0 , 51 , 102 ) See examples/table-examples.md for advanced formatting. Workflow 5: Editing Existing Presentations Goal: Modify existing PowerPoint files. Steps: Open presentation with Presentation('file.pptx') Iterate through slides to find content Modify text, shapes, or add new elements Save with same or different filename Quick Example: prs = Presentation( 'existing.pptx' ) # Find and update text for slide in prs.slides: for shape in slide.shapes: if hasattr (shape, \"text\" ) and \"Old Name\" in shape.text: shape.text = shape.text.replace( \"Old Name\" , \"New Name\" ) prs.save( 'updated.pptx' ) See examples/editing-presentations.md for slide copying and advanced editing. Workflow 6: Using Templates Goal: Apply consistent branding with master slides and templates. Steps: Start with template file: Presentation('template.pptx') Examine available layouts Add slides using template layouts Apply brand colors consistently Quick Example: prs = Presentation( 'corporate_template.pptx' ) # Use template layouts title_slide = prs.slides.add_slide(prs.slide_layouts[ 0 ]) content_slide = prs.slides.add_slide(prs.slide_layouts[ 1 ]) # Layouts inherit master formatting prs.save( 'branded_presentation.pptx' ) See references/templates-and-themes.md for master slide customization. Workflow 7: Bulk Slide Generation Goal: Generate multiple slides automatically from data. Steps: Load data from CSV, JSON, or database Create presentation object Iterate through data records Generate one slide per record Populate slide with record data Quick Example: import pandas as pd df = pd.read_csv( 'employee_data.csv' ) prs = Presentation() for _, row in df.iterrows(): slide = prs.slides.add_slide(prs.slide_layouts[ 1 ]) slide.shapes.title.text = row[ 'Name' ] # Add employee details to slide body prs.save( 'employee_directory.pptx' ) See examples/bulk-generation.md for complete implementations. Design Principles Color & Typography Use 60-30-10 color rule (60% primary, 30% secondary, 10% accent) Ensure WCAG AA contrast ratios (4.5:1 minimum) Limit to 2 font families maximum Minimum body text: 18pt for readability Layout & Composition Follow rule of thirds for element placement Maintain minimum 0.5\" margins on all sides Limit to 5-7 elements per slide Use consistent alignment (snap to grid) Visual Hierarchy Size indicates importance (larger = more important) Use color contrast for emphasis Follow Z-pattern for content flow Chart Best Practices Choose appropriate chart type (bar for comparison, line for trends, pie for parts-of-whole) Limit to 3-5 colors maximum Always label axes and include data labels Use gridlines sparingly For complete design guidelines, see references/design-best-practices.md . Common Patterns Brand Color Application BRAND_COLORS = { 'primary' : RGBColor( 0 , 51 , 102 ), 'secondary' : RGBColor( 0 , 153 , 204 ), 'accent' : RGBColor( 255 , 102 , 0 ) } # Apply to text shape.text_frame.paragraphs[ 0 ].font.color.rgb = BRAND_COLORS[ 'primary' ] # Apply to fill shape.fill.solid() shape.fill.fore_color.rgb = BRAND_COLORS[ 'secondary' ] Centered Element def center_shape ( shape, prs ): \"\"\"Center shape on slide.\"\"\" shape.left = int ((prs.slide_width - shape.width) / 2 ) shape.top = int ((prs.slide_height - shape.height) / 2 ) Text Auto-Fit from pptx.enum.text import MSO_AUTO_SIZE text_frame = shape.text_frame text_frame.auto_size = MSO_AUTO_SIZE.TEXT_TO_FIT_SHAPE # Shrink text # or text_frame.auto_size = MSO_AUTO_SIZE.SHAPE_TO_FIT_TEXT # Expand shape Troubleshooting Quick Reference \"ModuleNotFoundError: No module named 'pptx'\" pip install python-pptx \"AttributeError: 'NoneType' object has no attribute...\" Check placeholder indices: [p.placeholder_format.idx for p in slide.placeholders] Verify layout has expected placeholders Images not found Use absolute paths: os.path.abspath('image.png') Verify file exists: os.path.exists(img_path) Text doesn't fit Enable auto-fit: text_frame.auto_size = MSO_AUTO_SIZE.TEXT_TO_FIT_SHAPE Truncate long text with ellipsis File size too large Compress images before adding (use Pillow) Resize images to presentation dimensions (1920x1080 max) For complete troubleshooting, see references/troubleshooting.md . Helper Scripts The scripts/pptx_helper.py module provides utility functions: create_presentation() : Initialize with defaults add_title_slide() : Add formatted title slide add_bullet_slide() : Add slide with bullet points add_image_slide() : Add slide with centered image add_chart_slide() : Add slide with chart add_table_slide() : Add formatted table apply_brand_colors() : Apply consistent color scheme optimize_images() : Batch optimize images Usage: from scripts.pptx_helper import create_presentation, add_title_slide, add_chart_slide prs = create_presentation(title= \"My Presentation\" ) add_title_slide(prs, \"Main Title\" , \"Subtitle\" ) add_chart_slide(prs, \"Sales Data\" , chart_type= 'bar' , categories=[ 'Q1' , 'Q2' , 'Q3' , 'Q4' ], values=[ 10 , 20 , 15 , 25 ]) prs.save( 'output.pptx' ) Additional Resources Documentation python-pptx: https://python-pptx.readthedocs.io/ API Reference: https://python-pptx.readthedocs.io/en/latest/api/ GitHub: https://github.com/scanny/python-pptx Detailed References Library Setup & Installation Design Best Practices Templates & Themes Advanced Techniques Common Pitfalls Examples Complete Business Presentation Chart Examples (Bar, Line, Pie) Image Handling Table Examples Editing Existing Presentations Bulk Generation from Data Design Resources Microsoft Design Templates: https://templates.office.com/powerpoint Color Palette Tools: Coolors.co, Adobe Color Free Stock Images: Unsplash, Pexels Best Practices Summary Always use templates for consistent branding Optimize images before adding to presentation Limit text on each slide (5-7 bullet points max) Use high contrast for readability Test on target device before presenting Keep file size manageable (<20MB for email) Use speaker notes for detailed talking points Follow 6x6 rule: Max 6 bullets, max 6 words per bullet Validate data before creating charts Use consistent spacing and alignment When to Use This Skill: Creating business presentations from data Automating report generation Bulk slide creation from databases Template-based presentations Educational content with charts/images Converting documents to slides",
    "model_config": {
        "provider": "deepseek",
        "model": "deepseek-chat",
        "temperature": 0.7,
        "max_tokens": 4096,
        "top_p": 0.9
    },
    "trigger_words": [],
    "source": "DeepseekModel",
    "source_url": "https://deepseekmodel.com/skill?id=autumnsgrove-claudeskills-pptx-skill-md"
}