Marketplace skywork-ppt
Generate PPTs from topics or templates, edit existing presentations via natural language, or perform local file operations (delete/reorder/merge slides). Trigger on requests to create, modify, or manipulate .pptx files. Built on Nano Banana 2. Requires Python 3.8+.
git clone https://github.com/aiskillstore/marketplace
T=$(mktemp -d) && git clone --depth=1 https://github.com/aiskillstore/marketplace "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/skyworkai/skywork-ppt" ~/.claude/skills/aiskillstore-marketplace-skywork-ppt && rm -rf "$T"
skills/skyworkai/skywork-ppt/SKILL.mdPPT Write Skill
Four capabilities: generate, template imitation, edit existing PPT, and local file operations.
Authentication (Required First)
Before using this skill, authentication must be completed. Run the auth script first:
# Authenticate: checks env token / cached token / browser login python3 <skill-dir>/scripts/skywork_auth.py || exit 1
Token priority:
- Environment variable
→ if set, use directlySKYBOT_TOKEN - Cached token file
→ validate via API, if valid, use it~/.skywork_token - No valid token → opens browser for login, polls until complete, saves token
IMPORTANT - Login URL handling: If script output contains a line starting with
[LOGIN_URL], you MUST immediately send that URL to the user in a clickable message (e.g. "Please open this link to log in: <url>"). The user may be in an environment where the browser cannot open automatically, so always surface the login URL.
Routing — Identify the user's intent first
| User intent | Which path |
|---|---|
| Generate a new PPT from a topic, set of requirements or reference files | Layer 1 — Generate |
| Use an existing .pptx as a layout/style template to create a new presentation | Layer 2 — Imitate |
| Edit an existing PPT: modify slides, add slides, change style, split/merge | Layer 4 — Edit |
| Delete / reorder / extract / merge slides in a local file (no backend) | Layer 3 — Local ops |
Environment check (always run this first)
This skill requires Python 3 (>=3.8). Run the following before any script to locate a valid Python binary and install dependencies.
PYTHON_CMD="" for cmd in python3 python python3.13 python3.12 python3.11 python3.10 python3.9 python3.8; do if command -v "$cmd" &>/dev/null && "$cmd" -c "import sys; exit(0 if sys.version_info >= (3,8) else 1)" 2>/dev/null; then PYTHON_CMD="$cmd" break fi done if [ -z "$PYTHON_CMD" ]; then echo "ERROR: Python 3.8+ not found." echo "Install on macOS: brew install python3 or visit https://www.python.org/downloads/" exit 1 fi echo "Found Python: $PYTHON_CMD ($($PYTHON_CMD --version))" $PYTHON_CMD -m pip install -q --break-system-packages python-pptx echo "Dependencies ready."
After this check, replace
with the discoveredpython(e.g.$PYTHON_CMD) in all subsequent commands.python3
Layer 1 — Generate PPT
Steps
- REQUIRED FIRST STEP — Read workflow_generate.md NOW, before taking any other action. After reading, output exactly:
— then proceed.✅ workflow_generate.md loaded. - Environment check — run the check above to get
.$PYTHON_CMD - Upload reference files (if the user provides local files as content source) — parse the file using tool in script/parse_file.py and pass the result to
. See the--files
note below.--files - Web search (required if no relevant content is already in the conversation) — call web_search tool in script to search the topic and distill results into a
file of ≤ 2000 words.reference-file - Run the script:
Important: set exec tool
toyieldMs
(10 minutes).600000 - Deliver — provide the absolute
path and the download URL..pptx
Layer 2 — Imitate PPT (template-based generation)
Steps
- REQUIRED FIRST STEP - Read workflow_imitate.md immidiately before any action you do!!!
- Environment check — run the check above to get
.$PYTHON_CMD - Locate the template — extract the absolute path of the local
from the user's message; ask the user if it's unclear..pptx - Upload the template — upload it and extract
from the output.TEMPLATE_URL - Upload reference files (if the user provides additional local files as content source) — parse the file using tool in script/parse_file.py and pass the result to
. See the--files--files - Web search (required if no relevant content is already in the conversation) — call web_search tool in script to search the new topic and distill results into a
file of ≤ 2000 words.reference-file - Run the script:
Important: set exec tool
toyieldMs
(10 minutes).600000 - Deliver — provide the absolute
path, the download URL, and the template filename used..pptx
Layer 4 — Edit PPT (AI-powered modification)
Use this layer when the user wants to modify an existing PPT using natural language. Requires an OSS/CDN URL of the PPTX (from a previous generation or upload).
Steps
- Detailed workflow - Read workflow_edit.md immediately before any action you do!!!
- Environment check — run the check above to get
.$PYTHON_CMD - Get PPTX URL — from the user's message or upload a local file first.
- Run the script with
:--pptx-url$PYTHON_CMD scripts/run_ppt_write.py "edit instruction" \ --language Chinese \ --pptx-url "https://cdn.example.com/file.pptx" \ -o /absolute/path/output.pptxImportant: set exec tool
toyieldMs
(10 minutes).600000 - Deliver — provide download link, local path, and summary of changes.
Layer 3 — Local file operations
# Inspect slide count and titles $PYTHON_CMD scripts/local_pptx_ops.py info --file my.pptx # Delete slides (1-based index; supports ranges like 3,5,7-9; omit -o to overwrite in place) $PYTHON_CMD scripts/local_pptx_ops.py delete --file my.pptx --slides 3,5,7-9 -o trimmed.pptx # Reorder slides (must list every slide, no omissions) $PYTHON_CMD scripts/local_pptx_ops.py reorder --file my.pptx --order 2,1,4,3,5 # Extract a subset of slides into a new file $PYTHON_CMD scripts/local_pptx_ops.py extract --file my.pptx --slides 1-3 -o subset.pptx # Merge multiple files $PYTHON_CMD scripts/local_pptx_ops.py merge --files a.pptx b.pptx -o merged.pptx
Read workflow_local.md immidiately before any action you do!!!
Error Handling
- Insufficient benefit: When calling scripts (generate, imitate, or edit), the script or log may show a message like
, meaning the user's benefit level does not meet the requirement for this skill.Insufficient benefit. Please upgrade your account at {url}
How to reply when benefit is insufficient
When you detect the above, reply in the user's current language — do not echo the English message. Use this pattern:
- Convey: "Sorry, PPT generation failed. This skill requires upgrading your Skywork membership to use." then a single call-to-action link.
- Format: One short sentence in the user's language + a link like
or the equivalent in their language .[Upgrade now →](url) - URL: Extract the upgrade URL from the log/script output (e.g. the
part).at https://...
Dependencies
- Python 3.8+ (required) —
/python3
must be on PATHpython - Layer 3 local ops:
pip install python-pptx --break-system-packages
(The environment check step installs all required dependencies automatically.)
Which layer to trigger?
| Scenario | Use |
|---|---|
| Generate a PPT from a topic or existing reference files | Layer 1 |
| Imitate the layout/style of an existing .pptx | Layer 2 |
| Edit/modify an existing PPT via natural language | Layer 4 |
| Delete / reorder / extract / merge local .pptx files (no backend) | Layer 3 |