morph-ppt-3d
3D Morph PPT — extends morph-ppt with GLB model insertion, cinematographic camera, model-content layout, and enriched visual design system.
git clone --depth 1 https://github.com/iOfficeAI/OfficeCLI /tmp/morph-ppt-3d && cp -r /tmp/morph-ppt-3d/skills/morph-ppt-3d ~/.claude/skills/morph-ppt-3dSKILL.md
# Morph PPT — 3D Extension
This skill **extends** `morph-ppt`. All morph-ppt rules (naming, ghosting, design, verification) apply in full.
This file covers **3D-specific additions** and an **enriched design system** combining morph-ppt aesthetics with concrete color palettes, font pairings, and layout quality guardrails.
---
## 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.
## Use when
- User wants a `.pptx` with a `.glb` 3D model and Morph transitions.
---
## 3D Model Compatibility Gate (before generation)
1. Only `.glb` is supported. If user provides `.fbx` / `.obj` / `.blend` / `.usdz` / `.gltf`, ask them to convert to `.glb` first (e.g. via Blender export).
2. If user has no model, follow the **Model Discovery Flow** below.
3. All files (`.glb`, `.pptx`, build script) must be in the same working directory.
---
## Model Discovery Flow (when user has no model)
When the user gives a topic but no `.glb` file, **proactively help them find a matching model** instead of just listing websites.
### Step 1: Understand the topic and suggest model direction
Based on the user's topic, suggest what kind of 3D model would work:
| Topic type | Model suggestion | Example |
| ------------------ | ----------------------------------- | ----------------------------------------------------- |
| Product/brand | The actual product or a similar one | "coffee brand" → coffee cup, coffee machine, bean |
| Animal/character | The animal or mascot | "fox mascot" → fox 3D model |
| Architecture/space | Building, room, or structure | "new office" → office building, interior |
| Vehicle/transport | The vehicle itself | "EV launch" → car, motorcycle, bicycle |
| Food/cooking | The dish or ingredient | "Japanese food" → sushi platter, ramen bowl |
| Tech/gadget | The device | "phone launch" → phone, tablet, laptop |
| Nature/science | The subject | "solar system" → planet, sun, earth |
| Abstract concept | A symbolic object | "teamwork" → puzzle pieces, gears, bridge |
Tell the user: "Your topic is [X]. I suggest using a 3D model of [description]. Here are some free sources to find one:"
### Step 2: Search for models (agent-driven)
**Proactively search for models on behalf of the user.** Don't just list websites — actually find candidates.
**Search strategy (try in order):**
1. **Web search** for free GLB models matching the topic:
```
Search: "[topic keyword] 3d model glb free download"
Example: "fox 3d model glb free download"
```
2. **Sketchfab API** (no auth needed for search):
```bash
curl -s "https://api.sketchfab.com/v3/search?type=models&q=[keyword]&downloadable=true&archives_flavours=glb" \
| python3 -c "
import json, sys
data = json.load(sys.stdin)
for m in data.get('results', [])[:5]:
print(f\"Name: {m['name']}\")
print(f\"URL: https://sketchfab.com/3d-models/{m['slug']}-{m['uid']}\")
print(f\"Likes: {m.get('likeCount', 0)}, License: {m.get('license', {}).get('label', 'unknown')}\")
print()
"
```
3. **Poly Pizza** (direct GLB download, all free):
```bash
# Search results page — parse for download links
curl -s "https://poly.pizza/api/search/[keyword]" 2>/dev/null
```
4. **Khronos glTF-Sample-Assets** (guaranteed to work, always available):
```bash
# Direct download — no auth, no API, always works
curl -L -o model.glb "https://raw.githubusercontent.com/KhronosGroup/glTF-Sample-Assets/main/Models/[ModelName]/glTF-Binary/[ModelName].glb"
```
Available models: Duck, Fox, Avocado, BrainStem, CesiumMan, DamagedHelmet, FlightHelmet, Lantern, Suzanne, WaterBottle, etc.
### Step 3: Present candidates to user for confirmation
Show the user 2-3 model options with:
- Model name and source
- Preview link (Sketchfab URL or description)
- License info
- Why this model fits their topic
Example response:
```
Based on your topic "fox mascot", here are some models I found:
1. Fox (Khronos sample)
Direct download, guaranteed compatible
Why: clean fox model, good for mascot/character decks
2. Low Poly Fox (Poly Pizza)
URL: https://poly.pizza/m/xxx
License: CC0 (completely free)
Why: low-poly style, good fit for clean minimal design
3. Cartoon Fox (Sketchfab)
URL: https://sketchfab.com/3d-models/fox-xxx
License: CC BY 4.0 (free, commercial use ok)
Why: expressive face, high detail
Which one do you want? I'll download it and start building.
```
**Wait for user confirmation before downloading.** Do not download without asking.
### Step 4: Download the confirmed model
After user confirms, download directly:
```bash
# For Sketchfab (if user has the download URL)
curl -L -o model.glb "[download_url]"
# For Khronos samples (always works)
curl -L -o model.glb "https://raw.githubusercontent.com/KhronosGroup/glTF-Sample-Assets/main/Models/Fox/glTF-Binary/Fox.glb"
```
After download, verify:
- File exists and is not empty
- File extension is `.glb`
- File size is under 50MB
If Sketchfab requires login to download, tell the user:
> "This model requires a Sketchfab login to download. You can grab the .glb file from the page and share it with me. Or I can use a Khronos sample model for a demo version first?"
### Step 5: When user says "anything" / "you decide" / "just make a demo"
**Don't just grab a random model.** First guide the user to clarify theCreate, analyze, proofread, and modify Office documents (.docx, .xlsx, .pptx) using the officecli CLI tool. Use when the user wants to create, inspect, check formatting, find issues, add charts, or modify Office documents.
Use 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 animation across slides', 'Keynote-style transition', 'animated slide sequence', 'shape continuity across slides'. Output is a single .pptx. This skill is a scene layer on top of officecli-pptx — inherits every pptx v2 rule (visual floor, grid, palettes, connector canon, Delivery Gate 1–5a). DO NOT invoke for a generic deck, pitch deck, or board review without cross-slide motion — route those to officecli-pptx base or officecli-pitch-deck.
Use this skill to build academic-style .docx output: journal / conference / thesis chapters carrying formal citation style (APA, Chicago, IEEE, MLA), numbered equations, figure & table cross-references, footnotes/endnotes, bibliography, or multi-column journal layout. Trigger on: 'research paper', 'journal paper', 'conference paper', 'manuscript', 'thesis', 'APA', 'MLA', 'Chicago', 'IEEE two-column', 'bibliography', 'hanging indent', 'citation style', 'abstract + keywords', 'equation numbering', 'cross-reference', paper with footnotes/endnotes. Output is a single .docx.
Use this skill to build a multi-element Excel dashboard — Dashboard sheet on open, multiple formula-driven KPI cards, multiple charts, sparklines, and conditional formatting — from CSV or tabular input. Trigger on: 'dashboard', 'KPI dashboard', 'analytics dashboard', 'executive dashboard', 'metrics dashboard', 'CSV to dashboard', 'data visualization'. Output is a single .xlsx. Scene-layer on officecli-xlsx: inherits every xlsx hard rule. DO NOT invoke for: a single budget tracker / one-sheet CSV-with-formatting (use xlsx), a 3-statement / DCF / LBO financial model (use financial-model), a weekly report with ≤ 1 chart and < 10 rows (use xlsx).
Use this skill any time a .docx file is involved -- as input, output, or both. This includes: creating Word documents, reports, letters, memos, or proposals; reading, parsing, or extracting text from any .docx file; editing, modifying, or updating existing documents; working with templates, tracked changes, comments, headers/footers, or tables of contents. Trigger whenever the user mentions 'Word doc', 'document', 'report', 'letter', 'memo', or references a .docx filename.
Use this skill when the user wants to build a financial model — 3-statement model, DCF valuation, LBO, SaaS unit economics, sensitivity / scenario analysis, debt schedule, or fundraising projections — in Excel. Trigger on: 'financial model', '3-statement model', 'P&L + BS + CF', 'DCF', 'WACC', 'NPV', 'terminal value', 'LBO', 'debt schedule', 'cash sweep', 'MOIC', 'IRR / XIRR', 'sensitivity table', 'scenario analysis', 'ARR model', 'unit economics', 'CAC / LTV', 'cap table forecast'. Output is a single formula-driven .xlsx. This skill is a scene layer on top of officecli-xlsx — it inherits every xlsx v2 rule (4-color code, visual floor, number formats, cache-drift, Known Issues, Delivery Gate minimum cycle). DO NOT invoke for a simple budget tracker, CSV dump, or operational KPI sheet — route those to officecli-xlsx base.
Use this skill when the user is building a fundraising / investor pitch deck — seed, Series A / B / C, convertible note, SAFE round, strategic raise. Trigger on: 'pitch deck', 'investor deck', 'Series A deck', 'Series B deck', 'Series C deck', 'fundraising deck', 'seed pitch', 'VC deck', 'raising capital', 'term sheet presentation'. Output is a single .pptx. This skill is a scene layer on top of officecli-pptx — inherits every pptx v2 rule (visual floor, grid, palettes, connector canon, Delivery Gate). DO NOT invoke for a generic board review, sales deck, all-hands, or product launch — route those to officecli-pptx base.
Use this skill any time a .pptx file is involved -- as input, output, or both. This includes: creating slide decks, pitch decks, or presentations; reading, parsing, or extracting text from any .pptx file; editing, modifying, or updating existing presentations; combining or splitting slide files; working with templates, layouts, speaker notes, or comments. Trigger whenever the user mentions 'deck', 'slides', 'presentation', 'pitch', or references a .pptx filename.