# Office Ppt

> Office PPT

- Skill: `vikynofebriputra-creator/office-ppt` (Agent Skill, multi-file: 2 files)
- Install (CLI): `npx skillmds@latest add vikynofebriputra-creator/office-ppt`
- Raw SKILL.md: https://api.skillmd.com/api/skills/vikynofebriputra-creator/office-ppt/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: vikynofebriputra-creator (https://skillmd.com/u/vikynofebriputra-creator)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/vikynofebriputra-creator/office-ppt

---


# Office PPT

## When to Use

Use when the user provides or asks about an existing `.pptx` presentation and wants inspection, QA, text extraction, template residue detection, global wording changes, notes edits, or simple slide insertion.

Do not use as the main workflow for creating a complete new presentation from a topic. Use a presentation-making workflow for brief, research, outline, and planning first.

Do not use for HTML-to-PPTX conversion; that is a separate preset-driven conversion task.

## Script

Run:

```bash
python3 <skill_dir>/scripts/pptx_tool.py <subcommand> <path> [args...]
```

Subcommands:

| Subcommand | Arguments | Purpose |
|---|---|---|
| `inspect` | `<path>` | Full structural report: slides, layouts, shapes, text, placeholders, notes. |
| `check` | `<path>` | Detect template text, empty placeholders, and notes issues. |
| `list-layouts` | `<path>` | List available layouts and placeholders. |
| `set-text` | `<path> <slide_idx> <shape_name_substr> <text>` | Replace text in the first matching text-enabled shape. |
| `replace-text` | `<path> <old_text> <new_text>` | Replace exact text occurrences across the deck. |
| `add-slide` | `<path> <layout_name_substr>` | Add a blank slide using a matching existing layout. |
| `set-notes` | `<path> <slide_idx> <text>` | Replace speaker notes on a slide. |
| `export-text` | `<path>` | Extract slide text and notes as JSON. |

`slide_idx` is 1-based.

Write commands automatically create a sibling backup named `<file>.bak-<timestamp>` before saving and return `backup_path` in JSON. Still create a working copy first for important files.

## Workflow

1. Run `inspect` or `export-text` before edits to understand the deck structure.
2. For QA, run `check` and summarize issues by slide.
3. For write operations, prefer editing a copy of the deck. The script creates a backup, but a working copy keeps the user's original source clean.
4. After any edit, rerun `check` or `inspect` to verify the change landed on the intended slide/shape.
5. If layout, fonts, overflow, animation, media, or visual fidelity matter, open/render the deck in a presentation viewer before final delivery.

## Return Format

Every script invocation returns JSON.

Success:

```json
{"ok": true, "data": {"path": "/absolute/path/to/deck.pptx"}}
```

Write success includes:

```json
{"ok": true, "data": {"path": "/absolute/path/to/deck.pptx", "backup_path": "/absolute/path/to/deck.pptx.bak-20260604T123456"}}
```

Failure:

```json
{"ok": false, "error": "human-readable message"}
```

## External Dependencies

- Python 3.
- `python-pptx`.
- A valid source `.pptx` file.
- A presentation viewer is recommended for visual QA.

## Limits and Known Issues

- This is a structure/text tool. It does not deeply analyze z-order, animations, transitions, embedded media, charts, theme fonts, or exact visual overflow.
- Notes editing may fail if the deck lacks a notes slide in a shape that `python-pptx` can update.
- Shape matching uses case-insensitive substring matching, so inspect shape names before `set-text`.
- Global text replacement may change more places than intended. Use exact strings and inspect output.
- Chart data and embedded workbook data are not edited.

## Examples

```bash
python3 <skill_dir>/scripts/pptx_tool.py check /path/to/deck.pptx
python3 <skill_dir>/scripts/pptx_tool.py replace-text /path/to/deck.pptx "Old Company" "New Company"
python3 <skill_dir>/scripts/pptx_tool.py set-notes /path/to/deck.pptx 3 "Speaker notes for slide 3"
```

