Skip to content
cccskills
FreePublished on GitHub

pptx-extract-template

Extract reusable templates from PowerPoint presentations into the template library

The English summary is being prepared. Showing the original description.

Works withPowerPoint
See how to install

Files included (1)

  • SKILL.md4.6 KB

SKILL.md (original)

Review the instructions the agent will receive before you install.

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

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:

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

ElementDescriptionStored As
Slide MastersBase design with backgrounds, logostemplate.json
Slide LayoutsNamed layouts with placeholder positionslayouts/*.json
Colour ThemeBrand colours (dk1, lt1, accent1-6, etc.)theme/colours.json
Font ThemeHeading and body font familiestheme/fonts.json
PlaceholdersType, position, size, default formatting per layoutlayouts/*.json
Source PPTXOriginal file for use as creation templatesource.pptx

Error Handling

ErrorSolution
File not foundAsk user for correct path
Not a PPTX fileInform user, suggest conversion
python-pptx import errorpip3 install python-pptx
Corrupted PPTXSuggest opening in PowerPoint first
Permission deniedCheck 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

Reviews

No reviews yet. Tell others what you thought.

Comments

No login needed. Share how it worked for you, ask a question, or note where it did not run.

No comments yet. Be the first to write one.

Comments are published right away. Do not include personal information such as email addresses or phone numbers. Up to 2 URLs.

0 / 1,000 characters

This form is protected by reCAPTCHA, and the Google Privacy Policy and Terms of Service apply.

More skills from this repository

Batch populate summary fields using content analysis

The English summary is being prepared. Showing the original description.

DavidROliverBA/ArchitectKB53Updated Mar 2, 2026

Batch auto-tag untagged notes using content analysis

The English summary is being prepared. Showing the original description.

DavidROliverBA/ArchitectKB53Updated Mar 2, 2026

Generate C4 architecture diagrams from system notes

The English summary is being prepared. Showing the original description.

DavidROliverBA/ArchitectKB53Updated Mar 2, 2026

canvas

Free

Create and edit Obsidian Canvas files for architecture visualization

The English summary is being prepared. Showing the original description.

DavidROliverBA/ArchitectKB53Updated Mar 2, 2026

Check Outlook inbox and update daily note with message summary

The English summary is being prepared. Showing the original description.

DavidROliverBA/ArchitectKB53Updated Mar 2, 2026

commit

Free

Stage and commit vault changes with UK English conventional commit messages

The English summary is being prepared. Showing the original description.

DavidROliverBA/ArchitectKB53Updated Mar 2, 2026

See all skills by DavidROliverBA

Report a problem with this skill