Learn why branded presentation templates matter in financial services, how template analysis works, and how to create reusable template skills that ensure every deck matches your firm’s style guide.
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.
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.pptxSize: 2.4 MB (includes embedded logo images)Slide dimensions: 13.33" x 7.50" (widescreen 16:9)Number of layouts: 8Sample 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 Presentationprs = 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
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
Index
Layout Name
Use For
0
Cover Slide
Title slide with firm name and presentation title
1
Section Header
Section dividers within the deck
2
Content with Bullets
Standard content slides, bullet points
3
Two-Column
Side-by-side comparisons, dual content
4
Chart Slide
Financial charts, data visualization
5
Table Slide
Comps tables, financial summaries
6
Closing Slide
Final slide, contact information
7
Blank
Custom 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-templatedescription: Meridian Capital Partners PowerPoint template for creatingbranded pitch decks, board materials, and client presentations.---# Meridian Capital Partners PPT TemplateTemplate: `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 Presentationfrom pptx.util import Inches, Ptprs = Presentation("assets/template.pptx")# Delete existing sample slideswhile len(prs.slides) > 0: rId = prs.slides._sldIdLst[0].rId prs.part.drop_rel(rId) del prs.slides._sldIdLst[0]# Slide 1: Coverslide = 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 zoneslide = 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 boundariesfrom pptx.util import Inchestable = 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 footerprs.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
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.
A 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.
Placeholder
A 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 Area
The 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 idx
The 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 Master
The 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.
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.
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 Presentationprs = 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.
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.
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.
2. Using manual bullet characters instead of paragraph.level
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.
3. Not deleting existing slides before adding new ones
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]
4. Hardcoding placeholder indices without extracting them
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.
5. Not testing with edge cases
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.
6. Setting values on merged ranges in Office JS
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:
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.”
8. Creating a generic skill instead of a template-specific one
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.
Scenario 1: Creating a Template Skill for a New Client Engagement
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:
Receive the client’s .pptx template from the client relations team
Run the analysis script to extract all layout and placeholder information
Identify the key layouts: cover, content, chart, table, closing
Determine content area boundaries for each layout (find the OBJECT placeholder’s y position)
Create the skill directory with the template file and SKILL.md
Generate a sample 5-slide presentation and compare visually against a real client presentation
Fix any boundary issues (content overlapping headers/footers)
Share the skill with the deal team
Scenario 2: Updating a Template Skill After a Firm Rebrand
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:
Receive the updated .pptx template from the design team
Re-run the analysis script — placeholder positions may have changed with the new design
Compare old and new measurements: did the content area boundaries change?
Update the SKILL.md with new layout indices, placeholder positions, and color values
Replace the template file in assets/
Generate a validation presentation and compare against the design team’s sample
Distribute the updated skill to all team members
Archive the old skill version for historical reference
Scenario 3: Creating Multiple Template Skills for Different Use Cases
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:
Analyze each template separately — they may have different dimensions, layouts, and placeholder positions
Create three separate skill directories: firm-pitch-template, firm-board-template, firm-internal-template
For each, extract measurements, determine content areas, and write SKILL.md
Document which template to use for which purpose (pitch = client meetings, board = board presentations, internal = team meetings)
Generate validation presentations for all three
Have the design team review the validation outputs for brand compliance
Determine the content area boundaries for Layout [1] (left, top, width, height, bottom)
Identify the gap between the subtitle (idx=1) and the content area (idx=12). What is likely in this gap?
For Layout [2] (Two-Column), calculate the gap between the left and right columns
Write the python-pptx code to create a cover slide with title “Q4 2025 Strategic Review” and subtitle “Apex Partners | Confidential”
Write the python-pptx code to add a table to Layout [1] that fits within the content area boundaries
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.
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.
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.