> ## Documentation Index
> Fetch the complete documentation index at: https://financecontext.com/llms.txt
> Use this file to discover all available pages before exploring further.

# PPT Template Creator Skill

> 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.

# 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**.

<Steps>
  <Step title="Receive and Inspect the Template">
    Meridian provides their standard pitch deck template: `meridian-template.pptx`

    Initial 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.
  </Step>

  <Step title="Analyze Template Structure">
    Run the analysis script to extract precise placeholder positions:

    ```python theme={null}
    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)
    ```
  </Step>

  <Step title="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.
  </Step>

  <Step title="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                 |
  </Step>

  <Step title="Write the SKILL.md">
    Generate the complete, self-contained skill file with all measurements, placeholder mappings, and code examples:

    ```markdown theme={null}
    ---
    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)
    ```
  </Step>

  <Step title="Validate with Example Presentation">
    Create a sample 5-slide presentation to verify:

    ```python theme={null}
    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
  </Step>
</Steps>

## 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

| Term                           | Definition                                                                                                                                                     | Why It Matters                                                                                                                   |
| ------------------------------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------- |
| **Layout**                     | 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.                  |

## How It Works

**Triggers when:** a user wants to turn their PowerPoint template into a reusable skill for generating presentations later.

<Note>
  **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.
</Note>

### Workflow

<Steps>
  <Step title="User Provides Template">
    Accept a .pptx or .potx file. Verify it is a valid PowerPoint template with at least 2-3 layouts.
  </Step>

  <Step title="Analyze the Template">
    Extract precise placeholder positions using python-pptx:

    ```python theme={null}
    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)
  </Step>

  <Step title="Find the True Content Start">
    Look for the OBJECT placeholder to determine where content should actually start:

    ```python theme={null}
    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.
  </Step>

  <Step title="Initialize Skill Directory">
    ```
    [company]-ppt-template/
    +-- SKILL.md          # Complete instructions with exact coordinates
    +-- assets/
        +-- template.pptx # Template file bundled with the skill
    ```
  </Step>

  <Step title="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.
  </Step>

  <Step title="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.
  </Step>
</Steps>

### 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

<Warning>
  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.
</Warning>

## Common Mistakes

<Accordion title="1. Placing content immediately after the subtitle">
  **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.
</Accordion>

<Accordion title="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.
</Accordion>

<Accordion title="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:

  ```python theme={null}
  while len(prs.slides) > 0:
      rId = prs.slides._sldIdLst[0].rId
      prs.part.drop_rel(rId)
      del prs.slides._sldIdLst[0]
  ```
</Accordion>

<Accordion title="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.
</Accordion>

<Accordion title="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.
</Accordion>

<Accordion title="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:

  ```js theme={null}
  ws.getRange("A1").values = [["Header Text"]];
  const hdr = ws.getRange("A1:H1");
  hdr.merge();
  hdr.format.fill.color = "#1F4E79";
  ```
</Accordion>

<Accordion title="7. Not documenting the color palette">
  **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."
</Accordion>

<Accordion title="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.
</Accordion>

## Daily Workflow

<Accordion title="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:**

  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
</Accordion>

<Accordion title="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:**

  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
</Accordion>

<Accordion title="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:**

  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
</Accordion>

## 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

<Tip>
  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.
</Tip>

## How to Add to Your Local Context

<Steps>
  <Step title="Install the Plugin">
    ```bash theme={null}
    claude plugin install financial-analysis@financial-services-plugins
    ```
  </Step>

  <Step title="Create Your Template Skill">
    Run the command with your firm's template:

    ```bash theme={null}
    /ppt-template path/to/your-firm-template.pptx
    ```
  </Step>

  <Step title="Customize the Generated Skill">
    After generation, edit the SKILL.md to add firm-specific guidelines:

    ```markdown theme={null}
    ## 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
    ```
  </Step>

  <Step title="Share with Your Team">
    The generated skill directory can be committed to your firm's repository so all team members use the same template.
  </Step>
</Steps>

## Best Practices

<Warning>
  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.
</Warning>
