Getting it into your agent
One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.
npx agentmods add skills/iofficeai/officecli/morph-pptnpx skills add iOfficeAI/OfficeCLI --skill morph-pptgit clone --depth 1 https://github.com/iOfficeAI/OfficeCLIWhat it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5 | $0.00169 | $0.13220 |
| Opus 5 | $0.00084 | $0.06610 |
| Sonnet 5 | $0.00034 | $0.02644 |
| Haiku 4.5 | $0.00017 | $0.01322 |
Grade C, and why
morph-ppt scanned grade C with 3 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 2d ago.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Downloads and executes remote codehighSupply chain
curl | sh runs whatever the server returns today, which is not necessarily what it returned when this was reviewed.
- **macOS / Linux**: `curl -fsSL https://d.officecli.ai/install.sh | bash` Makes network callslowCapability
Not a fault in itself. Listed so you know the mod talks to something, and to what.
- **macOS / Linux**: `curl -fsSL https://d.officecli.ai/install.sh | bash` Runs shell commandslowCapability
Expected in a hook, worth knowing in a rule or an instructions file.
- **`!!` in shell values — single-quote.** Bash / zsh history expansion eats unquoted `!!foo`. Always use `--prop 'name=!!scene-ring'` (single quotes). In Python `subprocess.run([...])` lists, no quoting needed — pass `" How it starts
The opening of the file, as written. The whole thing — 540 lines — stays where its author put it; the contents beside it link to each section on GitHub.
OfficeCLI Morph-PPT Skill
This skill is a scene layer on top of officecli-pptx. Every pptx hard rule — visual delivery floor (title ≥ 36pt / body ≥ 18pt / title ≥ 2× body), 12-column grid on 33.87×19.05cm, canonical palettes, chart-choice decision table, connector canon, shell escape, resident + batch, Delivery Gate 1–5a — is inherited, not re-taught. This file adds only what Morph needs on top: cross-slide shape-name binding, Scene Actors vs content prefixing, ghost discipline, transition=morph CLI quirks, 52-style visual library lookup, and a morph-specific fresh-eyes Gate 5b extension.
When the pptx base rules cover it, the text here says → see pptx v2 §X. Read skills/officecli-pptx/SKILL.md first if you have not.
Setup
If officecli is missing:
- macOS / Linux:
curl -fsSL https://d.officecli.ai/install.sh | bash - Windows (PowerShell):
irm https://d.officecli.ai/install.ps1 | iex
Verify with officecli --version (open a new terminal if PATH hasn't picked up). If install fails, download a binary from https://github.com/iOfficeAI/OfficeCLI/releases.
⚠️ Help-First Rule
This skill teaches the Morph workflow — when shape names must match, when to ghost, when the CLI auto-prefixes — not every command flag. When a prop name, enum, or preset is uncertain, consult help BEFORE guessing.
officecli help pptx slide # authoritative for: transition, advanceTime, advanceClick, background
officecli help pptx transition # transition / transitionDuration / transitionSpeed (Parent: slide)
officecli help pptx shape # name, preset, x/y/width/height, fill, rotation, opacity, animation
officecli help pptx animation # preset + trigger + duration values
officecli help pptx <element> --json # machine-readable schema
Help reflects the installed CLI version. When skill and help disagree, help wins. Every --prop X= in this file is grep-verified against officecli help pptx <element>. Specific confirmations: transition=morph is a listed value on slide; advanceTime / advanceClick are valid. transition is a real element (officecli help pptx transition, Parent: slide, set/get) — it exposes transition, transitionDuration, and transitionSpeed. Set the transition with the high-level path set <slide> --prop transition=morph; tune speed/duration with the combined shorthand transition=morph-slow (or -fast, or transition=morph-<DUR_MS>). Speed/duration are set only via that shorthand on the transition prop, not as independent sub-props. Both round-trip on readback: transition=morph-slow/-fast reads back as transitionSpeed=slow/fast, and transition=morph-<DUR_MS> (e.g. morph-1500) reads back as transitionDuration=1500.
What ships with it
60 files beside SKILL.md in the same directory: the scripts, references and assets a skill reads on demand. Not counted in the per-session cost; read them before you install if any of them is executable.
- reference/decision-rules.md 6.0 KB
- reference/morph-helpers.py 16 KB runs code
- reference/morph-helpers.sh 12 KB runs code
- reference/pptx-design.md 14 KB
- reference/styles/bw--brutalist-raw/build.sh 12 KB runs code
- reference/styles/bw--brutalist-raw/bw__brutalist_raw.pptx 13 KB
- reference/styles/bw--brutalist-raw/style.md 2.1 KB
- reference/styles/bw--mono-line/build.sh 15 KB runs code
- reference/styles/bw--mono-line/bw__mono_line.pptx 15 KB
- reference/styles/bw--mono-line/style.md 3.9 KB
- reference/styles/bw--swiss-bauhaus/build.sh 12 KB runs code
- reference/styles/bw--swiss-bauhaus/bw__swiss_bauhaus.pptx 13 KB
- reference/styles/bw--swiss-bauhaus/style.md 2.2 KB
- reference/styles/bw--swiss-system/style.md 1.3 KB
- reference/styles/dark--architectural-plan/build.sh 25 KB runs code
- reference/styles/dark--architectural-plan/dark__architectural_plan.pptx 20 KB
- reference/styles/dark--architectural-plan/style.md 1.8 KB
- reference/styles/dark--aurora-softedge/style.md 625 B
- reference/styles/dark--blueprint-grid/build.sh 27 KB runs code
- reference/styles/dark--blueprint-grid/dark__blueprint_grid.pptx 15 KB
- reference/styles/dark--blueprint-grid/style.md 1.4 KB
- reference/styles/dark--circle-digital/build.sh 24 KB runs code
- reference/styles/dark--circle-digital/dark__circle_digital.pptx 18 KB
- reference/styles/dark--circle-digital/style.md 1.8 KB
- reference/styles/dark--cosmic-neon/build.sh 15 KB runs code
- reference/styles/dark--cosmic-neon/dark__cosmic_neon.pptx 20 KB
- reference/styles/dark--cosmic-neon/style.md 2.6 KB
- reference/styles/dark--cyber-future/build.sh 15 KB runs code
- reference/styles/dark--cyber-future/dark__cyber_future.pptx 19 KB
- reference/styles/dark--cyber-future/style.md 2.4 KB
- reference/styles/dark--diagonal-cut/build.sh 19 KB runs code
- reference/styles/dark--diagonal-cut/dark__diagonal_cut.pptx 17 KB
- reference/styles/dark--diagonal-cut/style.md 4.3 KB
- reference/styles/dark--editorial-story/build.sh 22 KB runs code
- reference/styles/dark--editorial-story/dark__editorial_story.pptx 24 KB
- reference/styles/dark--editorial-story/style.md 2.4 KB
- reference/styles/dark--investor-pitch/build.sh 42 KB runs code
- reference/styles/dark--investor-pitch/style.md 2.3 KB
- reference/styles/dark--investor-pitch/template.pptx 22 KB
- reference/styles/dark--liquid-flow/build.sh 21 KB runs code
- reference/styles/dark--liquid-flow/dark__liquid_flow.pptx 16 KB
- reference/styles/dark--liquid-flow/style.md 1.8 KB
- reference/styles/dark--luxury-minimal/build.sh 12 KB runs code
- reference/styles/dark--luxury-minimal/dark__luxury_minimal.pptx 19 KB
- reference/styles/dark--luxury-minimal/style.md 2.3 KB
- reference/styles/dark--midnight-blueprint/style.md 2.6 KB
- reference/styles/dark--neon-productivity/build.sh 33 KB runs code
- reference/styles/dark--neon-productivity/dark__neon_productivity.pptx 35 KB
- reference/styles/dark--neon-productivity/style.md 2.6 KB
- reference/styles/dark--obsidian-amber/style.md 615 B
- reference/styles/dark--premium-navy/build.sh 14 KB runs code
- reference/styles/dark--premium-navy/dark__premium_navy.pptx 15 KB
- reference/styles/dark--premium-navy/style.md 4.8 KB
- reference/styles/dark--sage-grain/style.md 1.8 KB
- reference/styles/dark--space-odyssey/build.sh 31 KB runs code
- reference/styles/dark--space-odyssey/dark__space_odyssey.pptx 20 KB
- reference/styles/dark--space-odyssey/style.md 2.8 KB
- reference/styles/dark--spotlight-stage/build.sh 16 KB runs code
- reference/styles/dark--spotlight-stage/dark__spotlight_stage.pptx 14 KB
- reference/styles/dark--spotlight-stage/style.md 1.5 KB
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- 2d ago First seen · 540 lines · 169 tokens per session scan C 0d7e196f3006
morph-ppt is a skill published in the GitHub repository iOfficeAI/OfficeCLI (29,674 stars, last pushed yesterday), licensed Apache-2.0. It adds 169 tokens to every session and 13,220 once invoked, about $0.0008 per session on Opus 5. A static security scan graded it C with 3 findings (downloads and executes remote code, makes network calls, runs shell commands). No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-30.
Other skills, from other repositories
youtube-bilingual-subtitle-delivery
Download a YouTube video, convert to MP4 if needed, build bilingual English/Chinese subtitles, audit completeness, and export softsub + hardcode MP4 deliverables. Includes fallback paths when YouTube auto-captions are partial or Chinese caption download is rate-limited, and notes a hardcode duration drift fix.
precise-bilingual-subtitle
Produce bilingual (EN+ZH) hardcoded-subtitle videos with Whisper word-level timing accuracy, customizable font/color/size, and the full pipeline from raw YouTube video to yellow-subtitle MP4. Use when YouTube auto-captions drift, when the user wants specific subtitle styling (color, size, font), or when subtitle…
whisper-video-transcribe-workaround
When Whisper (CLI or Python) gets stuck on video files during transcription — output dir stays empty, process runs at low CPU/memory with no progress — the workaround is to extract audio first with ffmpeg, then transcribe the WAV. Use this when Whisper hangs or times out on a video file.
openai-image-gen
Batch-generate images via OpenAI Images API. Random prompt sampler + index.html gallery.
openai-whisper-api
Transcribe audio via OpenAI Audio Transcriptions API (Whisper).
nano-banana-pro
Generate/edit images with Nano Banana Pro (Gemini 3 Pro Image). Use for image create/modify requests incl. edits. Supports text-to-image + image-to-image; 1K/2K/4K; use --input-image.