Back to skills
SKILL.md
Powerpoint
ASecurityCreate, 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
Works with
Security analysis
100/100npx -y skills add diegosouzapw/awesome-omni-skill --skill powerpoint --agent claude-codeAre you the author of Powerpoint?
Add the live security badge to your README. It updates with every re-scan.
[](https://www.skillsdirectory.com/skills/diegosouzapw-powerpoint)---
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
Comments
Loading comments…
Newsletter
Get the weekly list of safe new skills, and the ones we pulled.