Skip to main content

PPT Template Creator Skill

What is a PPT Template Skill?

In financial services, every major firm has carefully designed PowerPoint templates that enforce brand consistency across all client-facing materials. Goldman Sachs presentations look different from Morgan Stanley presentations, which look different from Lazard presentations. These templates define the exact slide dimensions, font families, color palettes, logo placements, and layout structures that every deck must follow. A PPT template skill is a reusable package that captures everything Claude needs to know about your firm’s template: the exact coordinates of every placeholder, the available layouts, the content area boundaries, and the rules for placing content. Once created, this skill allows Claude to generate presentations that match your firm’s branding automatically — no manual formatting required. Think of it this way: without a template skill, Claude builds presentations using generic layouts. The content might be excellent, but it will not look like it came from your firm. With a template skill, every presentation Claude creates will have the exact fonts, colors, margins, and layout structure that your firm uses. Worked example: Your firm’s template has a content slide layout where the title sits at y=0.5”, the subtitle at y=1.1”, a decorative blue line at y=1.38”, and the content area begins at y=1.90”. If Claude places a table at y=1.40” (right after the subtitle), it overlaps the decorative line. The template skill documents that content must start at y=1.90” or below — preventing this overlap automatically.

Detailed Worked Example

Let us walk through creating a template skill for a fictional firm, Meridian Capital Partners.
1

Receive and Inspect the Template

Meridian provides their standard pitch deck template: meridian-template.pptxInitial inspection:
File: meridian-template.pptx
Size: 2.4 MB (includes embedded logo images)
Slide dimensions: 13.33" x 7.50" (widescreen 16:9)
Number of layouts: 8
Sample slides included: 3 (cover, content, closing)
The template includes the firm’s navy blue color scheme, Meridian logo in the bottom-left corner, and a thin gold accent line below the subtitle on content slides.
2

Analyze Template Structure

Run the analysis script to extract precise placeholder positions:
from pptx import Presentation

prs = Presentation("meridian-template.pptx")
print(f"Dimensions: {prs.slide_width/914400:.2f}\" x {prs.slide_height/914400:.2f}\"")
print(f"Layouts: {len(prs.slide_layouts)}")

for idx, layout in enumerate(prs.slide_layouts):
    print(f"\n[{idx}] {layout.name}:")
    for ph in layout.placeholders:
        try:
            ph_idx = ph.placeholder_format.idx
            ph_type = ph.placeholder_format.type
            left = ph.left / 914400
            top = ph.top / 914400
            width = ph.width / 914400
            height = ph.height / 914400
            print(f"    idx={ph_idx}, type={ph_type}")
            print(f"        x={left:.2f}\", y={top:.2f}\", w={width:.2f}\", h={height:.2f}\"")
        except:
            pass
Output:
Dimensions: 13.33" x 7.50"
Layouts: 8

[0] Cover Slide:
    idx=0, type=CENTER_TITLE
        x=1.50", y=2.80", w=10.33", h=1.20"
    idx=1, type=SUBTITLE
        x=1.50", y=4.20", w=10.33", h=0.60"

[1] Section Header:
    idx=0, type=TITLE
        x=0.75", y=2.50", w=11.83", h=1.00"
    idx=1, type=BODY
        x=0.75", y=3.70", w=11.83", h=0.50"

[2] Content with Bullets:
    idx=0, type=TITLE
        x=0.75", y=0.50", w=11.83", h=0.60"
    idx=1, type=BODY
        x=0.75", y=1.10", w=11.83", h=0.28"
    idx=10, type=BODY
        x=0.75", y=6.80", w=5.00", h=0.30"
    idx=11, type=BODY
        x=6.50", y=6.80", w=5.08", h=0.30"
    idx=12, type=OBJECT
        x=0.75", y=1.90", w=11.83", h=4.70"

[3] Two-Column:
    idx=0, type=TITLE
        x=0.75", y=0.50", w=11.83", h=0.60"
    idx=1, type=BODY
        x=0.75", y=1.10", w=11.83", h=0.28"
    idx=10, type=BODY
        x=0.75", y=6.80", w=5.00", h=0.30"
    idx=13, type=OBJECT
        x=0.75", y=1.90", w=5.54", h=4.70"
    idx=14, type=OBJECT
        x=6.54", y=1.90", w=5.54", h=4.70"

[4] Chart Slide:
    (similar structure to Content)

[5] Table Slide:
    (similar structure to Content)

[6] Closing Slide:
    idx=0, type=CENTER_TITLE
        x=1.50", y=3.00", w=10.33", h=1.00"

[7] Blank:
    (no placeholders)
3

Determine Content Area Boundaries

For Layout [2] (Content with Bullets), the key measurements are:
Title placeholder:    y=0.50" to y=1.10" (height 0.60")
Subtitle placeholder: y=1.10" to y=1.38" (height 0.28")
[GAP: decorative line at y=1.38" to y=1.90" -- DO NOT place content here]
OBJECT placeholder:   y=1.90" to y=6.60" (height 4.70")
Footer placeholders:  y=6.80" (height 0.30")

Content Area:
- Left margin:  0.75"
- Top:          1.90" (below decorative line)
- Width:        11.83"
- Bottom:       6.60" (above footer)
- Usable height: 4.70"
Critical finding: The content area does NOT start immediately after the subtitle (y=1.38”). There is a 0.52” gap for the decorative line. The OBJECT placeholder’s y position (1.90”) indicates where content should actually start. Placing content at y=1.40” would overlap the firm’s signature gold accent line.
4

Build the Layout Index Table

IndexLayout NameUse For
0Cover SlideTitle slide with firm name and presentation title
1Section HeaderSection dividers within the deck
2Content with BulletsStandard content slides, bullet points
3Two-ColumnSide-by-side comparisons, dual content
4Chart SlideFinancial charts, data visualization
5Table SlideComps tables, financial summaries
6Closing SlideFinal slide, contact information
7BlankCustom layouts, full-bleed images
5

Write the SKILL.md

Generate the complete, self-contained skill file with all measurements, placeholder mappings, and code examples:
---
name: meridian-ppt-template
description: Meridian Capital Partners PowerPoint template for creating
branded pitch decks, board materials, and client presentations.
---

# Meridian Capital Partners PPT Template

Template: `assets/template.pptx` (13.33" x 7.50", 8 layouts)

## Creating Presentations

[Full code examples for creating slides, filling placeholders,
adding content within boundaries...]

## Placeholder Mapping

### Layout 2: Content with Bullets
| idx | Type | Position | Use |
|-----|------|----------|-----|
| 0 | TITLE | y=0.50" | Slide title |
| 1 | BODY | y=1.10" | Subtitle/description |
| 10 | BODY | y=6.80" | Footer (left) |
| 11 | BODY | y=6.80" | Footer (right) |
| 12 | OBJECT | y=1.90" | Main content area |

### Content Area Boundaries
- Left: 0.75"
- Top: 1.90" (CRITICAL: not 1.38")
- Width: 11.83"
- Height: 4.70" (ends at y=6.60", before footer)
6

Validate with Example Presentation

Create a sample 5-slide presentation to verify:
from pptx import Presentation
from pptx.util import Inches, Pt

prs = Presentation("assets/template.pptx")

# Delete existing sample slides
while len(prs.slides) > 0:
    rId = prs.slides._sldIdLst[0].rId
    prs.part.drop_rel(rId)
    del prs.slides._sldIdLst[0]

# Slide 1: Cover
slide = prs.slides.add_slide(prs.slide_layouts[0])
for shape in slide.shapes:
    if hasattr(shape, 'placeholder_format'):
        if shape.placeholder_format.idx == 0:
            shape.text = "Meridian Capital Partners"
        elif shape.placeholder_format.idx == 1:
            shape.text = "Sample Presentation | March 2026"

# Slide 2: Content with table in safe zone
slide = prs.slides.add_slide(prs.slide_layouts[2])
for shape in slide.shapes:
    if hasattr(shape, 'placeholder_format'):
        if shape.placeholder_format.type == 1:
            shape.text = "Financial Overview"
        elif shape.placeholder_format.idx == 1:
            shape.text = "Key metrics for FY2025"

# Add table within content boundaries
from pptx.util import Inches
table = slide.shapes.add_table(
    rows=5, cols=4,
    left=Inches(0.75),
    top=Inches(1.90),      # Content area starts here
    width=Inches(11.83),
    height=Inches(2.50)
).table

# Verify: table top (1.90") is within content area
# Verify: table bottom (1.90" + 2.50" = 4.40") is above footer (6.80")
# Result: PASS -- no overlap with title, subtitle, decorative line, or footer

prs.save("validation_output.pptx")
Validation results:
  • Cover slide: Title and subtitle render correctly in center
  • Content slide: Table starts at y=1.90”, well below the decorative line
  • No overlap with footer placeholders
  • Firm logo visible in bottom-left corner on all slides
  • Color scheme (navy and gold) preserved throughout

Why It Matters

Presentation consistency matters in finance for several reasons:
  • Professionalism. When a client receives a pitch book, the visual quality signals the firm’s attention to detail. Mismatched fonts or off-brand colors suggest carelessness — even if the analysis is superb.
  • Efficiency. Without a template, someone has to manually format every presentation to match the firm’s style guide. This formatting work can take 30-60 minutes per deck and is pure overhead.
  • Compliance. Many firms require specific disclaimers, confidentiality notices, and regulatory language on specific slides. The template enforces these requirements automatically.
  • Team consistency. When multiple analysts contribute slides to the same deck, a shared template ensures all slides look like they belong together.

Key Concepts

TermDefinitionWhy It Matters
LayoutA pre-defined slide structure with specific placeholder positions (e.g., “Cover Slide”, “Content with Bullets”, “Two-Column”).Each layout serves a different purpose. The template skill maps which layout to use for each type of slide.
PlaceholderA reserved area on a slide layout with a specific position (x, y coordinates) and purpose (title, subtitle, body, footer).Content must go into the correct placeholder to match the template’s design.
Content AreaThe safe zone between the subtitle placeholder and the footer where custom content (tables, charts, text) can be placed without overlapping template elements.Placing content outside this area causes visual overlap with headers, footers, or logos.
Placeholder idxThe numerical index that identifies each placeholder in the template. Template-specific and must be extracted from the actual file.Code references placeholders by idx, not by name. Using the wrong idx puts content in the wrong place.
Slide MasterThe master slide that defines default formatting (fonts, colors, bullet styles) for all layouts in the template.Overriding slide master formatting creates inconsistency. Use paragraph.level for bullet hierarchy instead of manual formatting.
EMU (English Metric Units)PowerPoint’s internal measurement unit. 914,400 EMUs = 1 inch.python-pptx returns dimensions in EMUs. Divide by 914,400 to convert to inches for human-readable measurements.

How It Works

Triggers when: a user wants to turn their PowerPoint template into a reusable skill for generating presentations later.
This skill creates skills, not presentations. If you just want to create a presentation, describe what you want in natural language. Use this skill only when you want to teach Claude a new template.

Workflow

1

User Provides Template

Accept a .pptx or .potx file. Verify it is a valid PowerPoint template with at least 2-3 layouts.
2

Analyze the Template

Extract precise placeholder positions using python-pptx:
from pptx import Presentation

prs = Presentation(template_path)
print(f"Dimensions: {prs.slide_width/914400:.2f}\" x {prs.slide_height/914400:.2f}\"")

for idx, layout in enumerate(prs.slide_layouts):
    print(f"\n[{idx}] {layout.name}:")
    for ph in layout.placeholders:
        ph_idx = ph.placeholder_format.idx
        left = ph.left / 914400
        top = ph.top / 914400
        print(f"    idx={ph_idx}, x={left:.2f}\", y={top:.2f}\"")
Key measurements:
  • Title position
  • Subtitle/description position
  • Footer placeholder position
  • Content area (the space between subtitle and footer)
3

Find the True Content Start

Look for the OBJECT placeholder to determine where content should actually start:
for idx, layout in enumerate(prs.slide_layouts):
    for ph in layout.placeholders:
        if ph.placeholder_format.type == 7:  # OBJECT type
            top = ph.top / 914400
            print(f"Layout [{idx}]: OBJECT starts at y={top:.2f}\"")
The gap between the subtitle’s bottom and the OBJECT’s top is reserved for decorative elements (lines, borders). Content placed in this gap will overlap.
4

Initialize Skill Directory

[company]-ppt-template/
+-- SKILL.md          # Complete instructions with exact coordinates
+-- assets/
    +-- template.pptx # Template file bundled with the skill
5

Write SKILL.md

Generate complete, self-contained instructions with all layout indices, placeholder mappings, and content area boundaries. The SKILL.md must include everything needed to use the template — no external references required.
6

Validate with Example

Create a sample presentation to confirm content stays within boundaries and bullets render correctly. Test edge cases: long titles, many bullet points, wide tables.

PPT-Specific Rules

  1. Template in assets/ — always bundle the .pptx file
  2. Self-contained SKILL.md — all instructions embedded, no external references
  3. No manual bullets — use paragraph.level for hierarchy, not bullet characters
  4. Delete slides first — always clear existing slides before adding new ones
  5. Document placeholders by idx — template-specific values extracted from the actual file

Finding the True Content Start Position

The content area does NOT always start immediately after the subtitle placeholder. Many templates have a visual border or reserved space between the subtitle and content area. Look at the OBJECT placeholder’s y position to determine where content should actually start.

Common Mistakes

The mistake: Setting the content top position to the subtitle’s bottom edge (e.g., y=1.38”) instead of the OBJECT placeholder’s top (e.g., y=1.90”).Why it happens: It seems logical that content should start right after the subtitle.The fix: Always use the OBJECT placeholder’s y position as the content start. The gap between subtitle bottom and OBJECT top is reserved for decorative elements (lines, borders, accent bars). Placing content in this gap causes visual overlap.
The mistake: Adding ”- ” or ”* ” prefixes to bullet text instead of using the paragraph.level property.Why it happens: Manual bullets are the most intuitive approach.The fix: The slide master defines bullet formatting (style, indentation, size) for each hierarchy level. Using paragraph.level = 0 for headers and paragraph.level = 1 for bullets automatically applies the correct formatting. Manual bullet characters bypass this and produce inconsistent appearance.
The mistake: Adding slides to the template without first removing the sample slides that came with it. The output has 3 sample slides followed by the actual content.Why it happens: Forgetting that the template file may contain example slides.The fix: Always delete all existing slides before adding new content:
while len(prs.slides) > 0:
    rId = prs.slides._sldIdLst[0].rId
    prs.part.drop_rel(rId)
    del prs.slides._sldIdLst[0]
The mistake: Assuming idx=0 is always the title and idx=1 is always the subtitle.Why it happens: These indices are common, so they seem universal.The fix: Always extract placeholder indices from the actual template file. Some templates use non-standard idx values (e.g., idx=10 for a footer, idx=13 for a second body placeholder). Using the wrong idx puts content in the wrong place or triggers an error.
The mistake: The template skill works with 3-bullet slides but breaks when a slide has 15 bullets or a table with 10 columns.Why it happens: Testing only with typical content.The fix: Test with: (1) very long titles (2+ lines), (2) many bullet points (10-15), (3) wide tables that approach the right margin, (4) tall content that approaches the footer. These edge cases reveal boundary violations that normal content does not trigger.
The mistake: Calling .merge() on a range and then setting .values on the merged range, which throws an InvalidArgument error.Why it happens: The merged range still reports its pre-merge dimensions, so a 1-cell value does not match the 8-cell range.The fix: Write the value to the top-left cell alone, THEN merge and format the full range:
ws.getRange("A1").values = [["Header Text"]];
const hdr = ws.getRange("A1:H1");
hdr.merge();
hdr.format.fill.color = "#1F4E79";
The mistake: The SKILL.md lists placeholder positions but does not document the firm’s exact color values.Why it happens: Colors seem obvious from looking at the template.The fix: Extract and document all colors used in the template: primary color (usually navy), secondary color (usually gray), accent color (varies by firm), text colors for different elements. Include the exact hex values so Claude can apply them consistently. Example: “Primary: #1A3A5C, Accent: #C4961A, Body text: #333333.”
The mistake: Writing a SKILL.md that says “use a professional layout” instead of “use Layout [2] with title at idx=0, subtitle at idx=1, content starting at y=1.90”.”Why it happens: It is easier to write general instructions than specific ones.The fix: The SKILL.md must contain exact, template-specific values: layout indices, placeholder idx values, x/y coordinates in inches, content area boundaries. A generic skill produces generic output. The value of this skill is precision — every presentation matches the firm’s exact template.

Daily Workflow

A new client engagement requires all presentations to use the client’s corporate template. The deal team asks you to set up the template so Claude can generate decks in the client’s format.Workflow:
  1. Receive the client’s .pptx template from the client relations team
  2. Run the analysis script to extract all layout and placeholder information
  3. Identify the key layouts: cover, content, chart, table, closing
  4. Determine content area boundaries for each layout (find the OBJECT placeholder’s y position)
  5. Create the skill directory with the template file and SKILL.md
  6. Generate a sample 5-slide presentation and compare visually against a real client presentation
  7. Fix any boundary issues (content overlapping headers/footers)
  8. Share the skill with the deal team
Your firm updated its brand identity: new logo, new color palette (from navy to dark teal), and new font family (from Times New Roman to Calibri). All existing template skills need to be regenerated.Workflow:
  1. Receive the updated .pptx template from the design team
  2. Re-run the analysis script — placeholder positions may have changed with the new design
  3. Compare old and new measurements: did the content area boundaries change?
  4. Update the SKILL.md with new layout indices, placeholder positions, and color values
  5. Replace the template file in assets/
  6. Generate a validation presentation and compare against the design team’s sample
  7. Distribute the updated skill to all team members
  8. Archive the old skill version for historical reference
Your firm has three distinct templates: a pitch book template (formal, for clients), a board materials template (executive-focused), and an internal presentation template (simplified, for internal meetings). You need to create a skill for each.Workflow:
  1. Analyze each template separately — they may have different dimensions, layouts, and placeholder positions
  2. Create three separate skill directories: firm-pitch-template, firm-board-template, firm-internal-template
  3. For each, extract measurements, determine content areas, and write SKILL.md
  4. Document which template to use for which purpose (pitch = client meetings, board = board presentations, internal = team meetings)
  5. Generate validation presentations for all three
  6. Have the design team review the validation outputs for brand compliance

Practice Exercise

Scenario: You receive a template file from Apex Partners with the following analysis output:
Dimensions: 13.33" x 7.50" (widescreen)
Layouts: 6

[0] Title Slide:
    idx=0, type=CENTER_TITLE, x=2.00", y=2.50", w=9.33", h=1.50"
    idx=1, type=SUBTITLE, x=2.00", y=4.20", w=9.33", h=0.80"

[1] Content:
    idx=0, type=TITLE, x=0.50", y=0.40", w=12.33", h=0.55"
    idx=1, type=BODY, x=0.50", y=0.95", w=12.33", h=0.25"
    idx=10, type=BODY, x=0.50", y=7.00", w=4.00", h=0.25"
    idx=11, type=BODY, x=8.83", y=7.00", w=4.00", h=0.25"
    idx=12, type=OBJECT, x=0.50", y=1.75", w=12.33", h=5.05"

[2] Two-Column:
    idx=0, type=TITLE, x=0.50", y=0.40", w=12.33", h=0.55"
    idx=13, type=OBJECT, x=0.50", y=1.20", w=5.92", h=5.60"
    idx=14, type=OBJECT, x=6.67", y=1.20", w=5.92", h=5.60"
Your tasks:
  1. Determine the content area boundaries for Layout [1] (left, top, width, height, bottom)
  2. Identify the gap between the subtitle (idx=1) and the content area (idx=12). What is likely in this gap?
  3. For Layout [2] (Two-Column), calculate the gap between the left and right columns
  4. Write the python-pptx code to create a cover slide with title “Q4 2025 Strategic Review” and subtitle “Apex Partners | Confidential”
  5. Write the python-pptx code to add a table to Layout [1] that fits within the content area boundaries
  6. Identify any potential issues with Layout [2] — note that there is no subtitle placeholder
The content area for Layout [1] starts at y=1.75” (the OBJECT placeholder), not y=1.20” (subtitle bottom at y=0.95” + height 0.25”). The gap from y=1.20” to y=1.75” (0.55”) likely contains a decorative element. For Layout [2], the OBJECT placeholders start at y=1.20”, which is right after the title ends (y=0.40” + 0.55” = 0.95”). There is a smaller gap here (0.25”) suggesting a simpler design without a decorative line. The column gap is 6.67” - (0.50” + 5.92”) = 0.25” — a narrow gutter between the two columns.

How to Add to Your Local Context

1

Install the Plugin

claude plugin install financial-analysis@financial-services-plugins
2

Create Your Template Skill

Run the command with your firm’s template:
/ppt-template path/to/your-firm-template.pptx
3

Customize the Generated Skill

After generation, edit the SKILL.md to add firm-specific guidelines:
## Firm Presentation Rules
- Always include confidentiality notice on cover slide
- Required disclaimer text on last slide
- Source citations in 14pt gray on bottom-left of data slides
- Maximum 5 bullet points per slide
- Never use fonts smaller than 14pt
4

Share with Your Team

The generated skill directory can be committed to your firm’s repository so all team members use the same template.

Best Practices

These habits ensure high-quality template skills:
  • Create one skill per template. Most firms have 2-3 templates (pitch, board materials, internal). Create a separate skill for each.
  • Test with edge cases. Create slides with long titles, many bullet points, and wide tables to verify content stays within boundaries.
  • Update when templates change. If your firm updates its template (new logo, new colors), regenerate the skill.
  • Include usage notes. Add notes in the SKILL.md about when to use each layout (e.g., “Use Layout 2 for financial data slides, Layout 5 for charts”).
  • Always extract measurements from the file. Never guess or approximate placeholder positions. A difference of 0.1” can mean the difference between clean alignment and visual overlap.
  • Document the color palette. Include exact hex values for every color used in the template.