Skip to content
Back to skills

Pptx Extract Template

ASecurity

Extract reusable templates from PowerPoint presentations into the template library

  • 52 stars
  • 0 votes
  • 0 copies
  • 3 views
  • Added September 9, 2026
designpythongobash

Security analysis

A92/100
  • mediumInstalls packages at runtime which could introduce malicious dependencies

Pro shows the line behind each finding and how to fix it

Scanned September 9, 2026

npx -y skills add DavidROliverBA/ArchitectKB --skill pptx-extract-template --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Pptx Extract Template?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Pptx Extract Template
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/davidroliverba-pptx-extract-template/badge)](https://www.skillsdirectory.com/skills/davidroliverba-pptx-extract-template)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: pptx-extract-template
context: fork
description: Extract reusable templates from PowerPoint presentations into the template library
model: opus
---

# /pptx-extract-template

Extract the design system (slide masters, layouts, colour themes, font themes, placeholder configurations) from a PowerPoint presentation and save it as a reusable template.

## Usage

```
/pptx-extract-template <path-to-pptx>
/pptx-extract-template <path-to-pptx> --name "Template Name"
/pptx-extract-template <path-to-pptx> --previews
```

## Examples

```
/pptx-extract-template ~/Downloads/BAAE Community Day Feb2026.pptx
/pptx-extract-template Attachments/SAP Architecture.pptx --name "SAP Branded" --previews
/pptx-extract-template quarterly-review.pptx --name "BA Quarterly Review"
```

## Instructions

### Phase 1: Locate the PowerPoint File

1. Parse the argument for a file path
2. If partial or just a filename, search in this order:
   - `~/Downloads/`
   - Vault `Attachments/` folder
   - Current directory
3. Verify the file exists and has a `.pptx` extension
4. If not found, ask user for the correct path

### Phase 2: Dry-Run Analysis

Run the extraction script in dry-run mode to show what will be extracted:

```bash
python3 .claude/scripts/pptx_extract_template.py "<pptx-path>" --dry-run --verbose
```

Review the output and present a summary to the user:
- Number of slide masters and layouts
- Theme colours and fonts
- Notable layout names

### Phase 3: Confirm Name and Tags

Use **AskUserQuestion** to confirm:

```
Question: "What should this template be called?"
Header: "Template"
Options:
  1. "<inferred name from filename>" (Recommended)
  2. "Custom name"
```

Then ask for tags:

```
Question: "Which tags apply to this template?"
Header: "Tags"
Options:
  1. "ba, corporate" (Recommended for BA presentations)
  2. "ba, engineering"
  3. "ba, community-day"
  4. "Custom tags"
multiSelect: true
```

### Phase 4: Extract and Save

Run the full extraction:

```bash
python3 .claude/scripts/pptx_extract_template.py "<pptx-path>" --name "<name>" --tags <tag1> <tag2>
```

Add `--previews` if the user requested layout preview thumbnails (requires LibreOffice).

### Phase 5: Verify

After extraction, verify the output:

1. Check `.claude/templates/pptx/<slug>/template.json` exists and is valid JSON
2. Check `_catalogue.json` has been updated
3. Confirm the source PPTX was copied

### Phase 6: Report

```
Template extracted successfully!

  Name:     <name>
  Slug:     <slug>
  Layouts:  <count> unique layouts
  Theme:    <colour scheme name> (<major font> / <minor font>)
  Saved to: .claude/templates/pptx/<slug>/

Use this template with:
  /pptx-create "Title" --template <slug>

View all templates with:
  /pptx-templates
```

## What Gets Extracted

| Element | Description | Stored As |
|---------|-------------|-----------|
| Slide Masters | Base design with backgrounds, logos | `template.json` |
| Slide Layouts | Named layouts with placeholder positions | `layouts/*.json` |
| Colour Theme | Brand colours (dk1, lt1, accent1-6, etc.) | `theme/colours.json` |
| Font Theme | Heading and body font families | `theme/fonts.json` |
| Placeholders | Type, position, size, default formatting per layout | `layouts/*.json` |
| Source PPTX | Original file for use as creation template | `source.pptx` |

## Error Handling

| Error | Solution |
|-------|----------|
| File not found | Ask user for correct path |
| Not a PPTX file | Inform user, suggest conversion |
| python-pptx import error | `pip3 install python-pptx` |
| Corrupted PPTX | Suggest opening in PowerPoint first |
| Permission denied | Check file permissions |

## Template Storage

Templates are stored in `.claude/templates/pptx/`:

```
.claude/templates/pptx/
├── _catalogue.json           # Master index
├── <template-slug>/
│   ├── template.json         # Full metadata
│   ├── source.pptx           # Original PPTX (used for creation)
│   ├── layouts/              # Per-layout JSON files
│   │   ├── title-slide.json
│   │   ├── section-header.json
│   │   └── ...
│   ├── theme/
│   │   ├── colours.json
│   │   └── fonts.json
│   └── previews/             # Optional layout thumbnails
│       └── *.png
```

## Integration with Other Skills

- **`/pptx-create`** — Use extracted templates to create new presentations
- **`/pptx-templates`** — Browse and manage the template library
- **`/pptx-to-page`** — Extract content (not design) from presentations

## Dependencies

- `python-pptx` — PPTX parsing and introspection
- `lxml` — Theme XML extraction
- LibreOffice (optional) — Layout preview generation

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.