Skip to content
Back to skills

Powerpoint

ASecurity

Create, edit, and manipulate PowerPoint presentations from the command line. Add slides, text, images, tables, charts, shapes, and apply professional designs. Use when the user wants to create or modify .pptx files.

  • 57 stars
  • 0 votes
  • 0 copies
  • 0 views
  • Added October 17, 2026
businessgobash

Works with

  • cli

Security analysis

A100/100

Scanned October 17, 2026

npx -y skills add diegosouzapw/awesome-omni-skill --skill powerpoint --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Powerpoint?

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

Security grade badge for Powerpoint
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/diegosouzapw-powerpoint/badge)](https://www.skillsdirectory.com/skills/diegosouzapw-powerpoint)

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: powerpoint
description: Create, edit, and manipulate PowerPoint presentations from the command line. Add slides, text, images, tables, charts, shapes, and apply professional designs. Use when the user wants to create or modify .pptx files.
---

# PowerPoint CLI

For installation and requirements, see [README.md](README.md).

## Batch Mode (recommended)

The server is **stateful** — create a presentation, then build it up, then save. Use the batch runner to execute multiple commands in a single session:

```bash
echo '<json>' | bun ~/.pi/agent/skills/powerpoint/powerpoint-batch.ts
bun ~/.pi/agent/skills/powerpoint/powerpoint-batch.ts recipe.json
bun ~/.pi/agent/skills/powerpoint/powerpoint-batch.ts --recipe '<json>'
```

Input format — a JSON object with a `commands` array:

```json
{
  "commands": [
    { "tool": "create_presentation" },
    { "tool": "add_slide", "args": { "title": "Hello World" } },
    { "tool": "manage_text", "args": { "slide_index": 0, "operation": "add", "left": 1, "top": 2, "width": 8, "height": 1, "text": "Body text", "font_size": 18 } },
    { "tool": "save_presentation", "args": { "file_path": "./output.pptx" } }
  ]
}
```

Output: JSON array of `{ tool, result }` objects (or `{ tool, error }` on failure).

The batch runner auto-injects `presentation_id` into all commands after `create_presentation`/`open_presentation`, so you don't need to track it yourself.

## Single-Command Mode

For one-off read operations, use the single-command CLI:

```bash
bun ~/.pi/agent/skills/powerpoint/powerpoint-cli.js <command> [flags]
bun ~/.pi/agent/skills/powerpoint/powerpoint-cli.js --help
```

Useful for inspection commands that don't need state:

```bash
bun <cli> list-slide-templates
bun <cli> get-template-info --template-id title_slide
bun <cli> get-server-info
```

## Available Tools

### Lifecycle
- `create_presentation` — create empty presentation
- `create_presentation_from_template` — create from .pptx template: `{ "template_path": "./template.pptx" }`
- `open_presentation` — open existing file: `{ "file_path": "./deck.pptx" }`
- `save_presentation` — save to file: `{ "file_path": "./output.pptx" }`
- `get_presentation_info` — slide count, dimensions, properties
- `set_core_properties` — set title, author, keywords, etc.

### Slides
- `add_slide` — add a slide: `{ "layout_index": 1, "title": "Slide Title" }`
  - layout_index: 0=Title, 1=Title+Content, 2=Section, 5=Blank, etc.
  - Optional: `background_type` ("solid"/"gradient"), `background_colors`, `color_scheme`
- `get_slide_info` — shapes, layout info: `{ "slide_index": 0 }`
- `extract_slide_text` — all text from a slide: `{ "slide_index": 0 }`
- `extract_presentation_text` — all text from all slides

### Text Content
- `populate_placeholder` — fill a layout placeholder: `{ "slide_index": 0, "placeholder_idx": 1, "text": "Hello" }`
- `add_bullet_points` — bullets in a placeholder: `{ "slide_index": 0, "placeholder_idx": 1, "bullet_points": ["A", "B", "C"] }`
- `manage_text` — add/format text boxes:
  ```json
  { "slide_index": 0, "operation": "add", "left": 1, "top": 2, "width": 8, "height": 1, "text": "Hello", "font_size": 24, "bold": true, "color": [0, 0, 0] }
  ```
  Operations: `add`, `format`, `validate`, `format_runs`

### Images
- `manage_image` — add/enhance images:
  ```json
  { "slide_index": 0, "operation": "add", "image_source": "./photo.png", "left": 1, "top": 2, "width": 4, "height": 3 }
  ```
  `source_type`: "file" (default), "url", "base64"

### Tables
- `add_table` — add a data table:
  ```json
  { "slide_index": 0, "rows": 3, "cols": 4, "left": 1, "top": 2, "width": 8, "height": 3, "data": [["H1","H2","H3","H4"],["a","b","c","d"],["e","f","g","h"]] }
  ```
- `format_table_cell` — style a cell: `{ "slide_index": 0, "shape_index": 0, "row": 0, "col": 0, "bold": true, "bg_color": [68, 114, 196] }`

### Charts
- `add_chart`:
  ```json
  { "slide_index": 0, "chart_type": "bar", "left": 1, "top": 2, "width": 8, "height": 4, "categories": ["Q1","Q2","Q3"], "series_names": ["Revenue"], "series_values": [[100, 200, 300]] }
  ```
  Note: `series_values` is an array of arrays (one inner array per series).
  Chart types: `bar`, `column`, `line`, `pie`, `scatter`, `area`, `doughnut`
- `update_chart_data` — replace data on existing chart

### Shapes & Connectors
- `add_shape`:
  ```json
  { "slide_index": 0, "shape_type": "rectangle", "left": 1, "top": 1, "width": 3, "height": 2, "fill_color": "4472C4", "text": "Box" }
  ```
  Types: `rectangle`, `rounded_rectangle`, `oval`, `triangle`, `diamond`, `arrow_right`, etc.
- `add_connector` — lines/arrows between points:
  ```json
  { "slide_index": 0, "connector_type": "straight", "start_x": 2, "start_y": 3, "end_x": 6, "end_y": 3 }
  ```

### Design & Styling
- `apply_professional_design` — apply themes: `{ "operation": "apply_theme", "color_scheme": "modern_blue" }`
  - Operations: `apply_theme`, `design_slide`, `enhance_slide`
- `apply_picture_effects` — shadow, reflection, etc.
- `optimize_slide_text` — auto-resize fonts: `{ "slide_index": 0 }`
- `manage_fonts` — analyze/optimize: `{ "operation": "analyze", "font_path": "./deck.pptx" }`

### Templates
- `list_slide_templates` — list available layout templates
- `get_template_info` — details about a template: `{ "template_id": "title_slide" }`
- `apply_slide_template` — apply template to existing slide
- `create_slide_from_template` — new slide from template
- `create_presentation_from_templates` — full deck from template sequence
- `auto_generate_presentation` — auto-generate from topic:
  ```json
  { "topic": "Q4 Results", "slide_count": 8, "presentation_type": "business", "color_scheme": "modern_blue" }
  ```

### Other
- `manage_hyperlinks` — add/remove/list links
- `manage_slide_transitions` — set/remove transitions
- `manage_slide_masters` — inspect master layouts

## Reference

- Positions (`left`, `top`) and sizes (`width`, `height`) are in **inches**. Standard slide is 10×7.5.
- Slide indices are **0-based**.
- Colors: hex RGB without `#` for shape fills (e.g., `"4472C4"`), RGB arrays `[r, g, b]` for text/cell colors.
- Color schemes: `modern_blue`, `corporate_gray`, `elegant_green`, `warm_red`.
- Tool names accept both `snake_case` and `kebab-case`.

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.