# Customizing the base PPTX skill for your own brand

The skill below is Anthropic's **general-purpose `pptx` skill** — it handles the mechanics of building, editing, reading, and QA-ing PowerPoint files. It has no opinion about how your decks should *look*.

To make every deck come out on-brand, you add a thin **brand layer** on top: a short set of rules the skill reads before it builds. You keep the base skill as-is and wrap it. Here's the pattern.

## 1. Write your brand standards down in one place

Collect the specifics the skill needs:

- **Colors** — every brand color as a hex value, with its role (primary, accent, headline, body text, background).
- **Typography** — heading font and body font, and where each is used.
- **Logos** — the actual logo files (SVG or high-res PNG), which version to use on light vs. dark backgrounds, and minimum sizes.
- **Layout rules** — margins, title placement, footer contents, whether a logo appears on every slide.

## 2. Feed the brand into `pptxgenjs`

When creating a new deck, the base skill writes a `pptxgenjs` script. Set your brand defaults once at the top so every slide inherits them:

```js
const pptxgen = require("pptxgenjs");
const pptx = new pptxgen();

// Brand palette
const BRAND = {
  primary:  "00549F",
  accent:   "00A9E0",
  navy:     "101F36",
  body:     "4C5768",
  bg:       "FFFFFF",
};

// Default fonts (install or embed the real fonts — see step 4)
pptx.theme = { headFontFace: "Oswald", bodyFontFace: "Montserrat" };

// A reusable master with your colors + logo in a fixed spot
pptx.defineSlideMaster({
  title: "BRAND_MASTER",
  background: { color: BRAND.bg },
  objects: [
    { image: { path: "assets/logo.png", x: 8.4, y: 0.3, w: 1.2, h: 0.5 } },
  ],
});
```

Then build slides against `masterName: "BRAND_MASTER"` and pull colors from `BRAND` instead of hard-coding hex values slide by slide.

## 3. Logos

Drop your logo files into an `assets/` folder next to the skill and reference them at a consistent size and position. Keep a light-background and a dark-background version, and pick based on the slide's background. Prefer the vector/high-res file so it stays crisp when the deck is projected.

## 4. Fonts

`pptxgenjs` names fonts; it doesn't embed them. Two things make brand fonts render correctly:

1. **Install the fonts** on the machine building the deck, so the rendered thumbnails and any PDF export use them.
2. **Embed the fonts in the .pptx** (PowerPoint → Save Options → *Embed fonts in the file*) so the deck looks right on a machine that doesn't have them.

Map exactly one heading font and one body font, and use them everywhere.

## 5. Add a brand-QA checklist

The base skill already QAs slides visually. Add a short brand pass on top of it:

- [ ] Every color traces to the brand palette — no stray hex values
- [ ] Correct logo version for each background, above the minimum size
- [ ] Heading and body fonts are the brand fonts, nothing substituted
- [ ] Margins and footer match the layout rules
- [ ] No decorative shapes the brand doesn't call for

## 6. (Optional) Wrap it as your own skill

Once the rules are stable, save them as their own skill so you can invoke it by name:

```
~/.claude/skills/<yourbrand>-pptx/
  SKILL.md      ← "Use the base pptx skill for mechanics. Apply these brand rules:"
  assets/       ← logos
  fonts/        ← brand fonts
```

Your `SKILL.md` stays short — it points at the base skill for all the build/edit/QA mechanics and only adds the brand layer. That separation is the whole trick: the base skill handles *how to build a deck*, your layer handles *how your decks look*, and you never have to re-solve the mechanics when the base skill updates.
