$npx -y skills add iOfficeAI/OfficeCLI --skill morph-pptUse this skill when the user wants a .pptx with smooth cross-slide animation — PowerPoint Morph transitions, Keynote-style continuous motion, shapes that grow / move / rotate as the slide advances. Trigger on: 'morph', 'morph transition', 'smooth transition', 'continuous animatio
| 1 | # OfficeCLI Morph-PPT Skill |
| 2 | |
| 3 | **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. |
| 4 | |
| 5 | 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. |
| 6 | |
| 7 | ## Setup |
| 8 | |
| 9 | If `officecli` is missing: |
| 10 | |
| 11 | - **macOS / Linux**: `curl -fsSL https://d.officecli.ai/install.sh | bash` |
| 12 | - **Windows (PowerShell)**: `irm https://d.officecli.ai/install.ps1 | iex` |
| 13 | |
| 14 | 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. |
| 15 | |
| 16 | ## ⚠️ Help-First Rule |
| 17 | |
| 18 | **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. |
| 19 | |
| 20 | ```bash |
| 21 | officecli help pptx slide # authoritative for: transition, advanceTime, advanceClick, background |
| 22 | officecli help pptx transition # transition / transitionDuration / transitionSpeed (Parent: slide) |
| 23 | officecli help pptx shape # name, preset, x/y/width/height, fill, rotation, opacity, animation |
| 24 | officecli help pptx animation # preset + trigger + duration values |
| 25 | officecli help pptx <element> --json # machine-readable schema |
| 26 | ``` |
| 27 | |
| 28 | 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`. |
| 29 | |
| 30 | ## Mental Model & Inheritance |
| 31 | |
| 32 | **Inherits pptx v2.** You should have read `skills/officecli-pptx/SKILL.md` first. This skill assumes you know how to: add slides + shapes + charts + connectors; address by `@name=` / `@id=`; quote paths; use `batch` heredocs; use `tailEnd=triangle` on flow connectors; run the Delivery Gate 1–5a; attribute `[AGENT-ERROR]` vs `[RENDERER-BUG]` vs `[SKILL gap]`. If any of those are unfamiliar, read pptx v2 first. |
| 33 | |
| 34 | **Inherited from pptx v2 (do NOT re-teach):** |
| 35 | |
| 36 | - Visual delivery floor — title ≥ 36pt / body ≥ 18pt / title ≥ 2× body, cover-richness, contrast floor, no `\$\t\n` literals, ≤ 1 animation per slide / ≤ 600ms. |
| 37 | - Grid math — 33.87 × 19.05cm, edge margin ≥ 1.27cm, inter-block gap ≥ 0.76cm, ≥ 20% negative space. For N-card grids: `col = (33.87 − 2·margin − (N−1)·gap) / N`. |
| 38 | - Four canonical palettes (Executive navy / Forest & moss / Warm terracotta / Charcoal minimal) — morph decks may pick a different mood from `reference/styles/`, but contrast rules still apply. |
| 39 | - Chart-choice table — column vs bar vs line vs pie vs scatter vs large-text KPI; `> 3 series + > 8 categories` = split. |
| 40 | - Connector canon — `shape=straight|elbow|curve`, `@id=` for from/to (C-P-6), `tailEnd=triangle` on every flow. |
| 41 | - Shell escape 3-layer — `$` single-quoted, heredocs for batch, `<a:br/>` for real newlines. |
| 42 | - Resident mode + batch ≤ 12 ops, `<<'EOF'` single-quoted delimiter. |
| 43 | - Delivery Gate 1-5a (schema, token grep, hyperlink rPr, slide- |