Awesome-omni-skill powerpoint
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.
install
source · Clone the upstream repo
git clone https://github.com/diegosouzapw/awesome-omni-skill
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/diegosouzapw/awesome-omni-skill "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/tools/powerpoint" ~/.claude/skills/diegosouzapw-awesome-omni-skill-powerpoint && rm -rf "$T"
manifest:
skills/tools/powerpoint/SKILL.mdsource content
PowerPoint CLI
For installation and requirements, see 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:
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:
{ "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:
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:
bun <cli> list-slide-templates bun <cli> get-template-info --template-id title_slide bun <cli> get-server-info
Available Tools
Lifecycle
— create empty presentationcreate_presentation
— create from .pptx template:create_presentation_from_template{ "template_path": "./template.pptx" }
— open existing file:open_presentation{ "file_path": "./deck.pptx" }
— save to file:save_presentation{ "file_path": "./output.pptx" }
— slide count, dimensions, propertiesget_presentation_info
— set title, author, keywords, etc.set_core_properties
Slides
— add a slide:add_slide{ "layout_index": 1, "title": "Slide Title" }- layout_index: 0=Title, 1=Title+Content, 2=Section, 5=Blank, etc.
- Optional:
("solid"/"gradient"),background_type
,background_colorscolor_scheme
— shapes, layout info:get_slide_info{ "slide_index": 0 }
— all text from a slide:extract_slide_text{ "slide_index": 0 }
— all text from all slidesextract_presentation_text
Text Content
— fill a layout placeholder:populate_placeholder{ "slide_index": 0, "placeholder_idx": 1, "text": "Hello" }
— bullets in a placeholder:add_bullet_points{ "slide_index": 0, "placeholder_idx": 1, "bullet_points": ["A", "B", "C"] }
— add/format text boxes:manage_text
Operations:{ "slide_index": 0, "operation": "add", "left": 1, "top": 2, "width": 8, "height": 1, "text": "Hello", "font_size": 24, "bold": true, "color": [0, 0, 0] }
,add
,format
,validateformat_runs
Images
— add/enhance images:manage_image{ "slide_index": 0, "operation": "add", "image_source": "./photo.png", "left": 1, "top": 2, "width": 4, "height": 3 }
: "file" (default), "url", "base64"source_type
Tables
— add a data table:add_table{ "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"]] }
— style a cell:format_table_cell{ "slide_index": 0, "shape_index": 0, "row": 0, "col": 0, "bold": true, "bg_color": [68, 114, 196] }
Charts
:add_chart
Note:{ "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]] }
is an array of arrays (one inner array per series). Chart types:series_values
,bar
,column
,line
,pie
,scatter
,areadoughnut
— replace data on existing chartupdate_chart_data
Shapes & Connectors
:add_shape
Types:{ "slide_index": 0, "shape_type": "rectangle", "left": 1, "top": 1, "width": 3, "height": 2, "fill_color": "4472C4", "text": "Box" }
,rectangle
,rounded_rectangle
,oval
,triangle
,diamond
, etc.arrow_right
— lines/arrows between points:add_connector{ "slide_index": 0, "connector_type": "straight", "start_x": 2, "start_y": 3, "end_x": 6, "end_y": 3 }
Design & Styling
— apply themes:apply_professional_design{ "operation": "apply_theme", "color_scheme": "modern_blue" }- Operations:
,apply_theme
,design_slideenhance_slide
- Operations:
— shadow, reflection, etc.apply_picture_effects
— auto-resize fonts:optimize_slide_text{ "slide_index": 0 }
— analyze/optimize:manage_fonts{ "operation": "analyze", "font_path": "./deck.pptx" }
Templates
— list available layout templateslist_slide_templates
— details about a template:get_template_info{ "template_id": "title_slide" }
— apply template to existing slideapply_slide_template
— new slide from templatecreate_slide_from_template
— full deck from template sequencecreate_presentation_from_templates
— auto-generate from topic:auto_generate_presentation{ "topic": "Q4 Results", "slide_count": 8, "presentation_type": "business", "color_scheme": "modern_blue" }
Other
— add/remove/list linksmanage_hyperlinks
— set/remove transitionsmanage_slide_transitions
— inspect master layoutsmanage_slide_masters
Reference
- Positions (
,left
) and sizes (top
,width
) are in inches. Standard slide is 10×7.5.height - Slide indices are 0-based.
- Colors: hex RGB without
for shape fills (e.g.,#
), RGB arrays"4472C4"
for text/cell colors.[r, g, b] - Color schemes:
,modern_blue
,corporate_gray
,elegant_green
.warm_red - Tool names accept both
andsnake_case
.kebab-case