miyazawai/dsh-melody-launcher-overture/officecli-pptx
Claude Code and agent skill by miyazawai/dsh-melody-launcher-overture
- community
Checking that the SKILL.md file is still in the repository.
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.
Install
npx vskill@latest install miyazawai/dsh-melody-launcher-overture/officecli-pptxSKILL.md
The same SKILL.md was published earlier as iofficeai/officecli/officecli-pptx.
OfficeCLI PPTX Skill
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 what good slides look like, not every command flag. When a property name, enum value, or alias is uncertain, consult help BEFORE guessing.
Help reflects the installed CLI version. When skill and help disagree, help is authoritative. Triggers to run help immediately: UNSUPPORTED props: warning, unknown animation preset, connector.shape= enum drifts, prop-vs-alias (lineWidth vs line.width, color vs font.color).
Shell & Execution Discipline
Shell quoting (zsh / bash). ALWAYS quote element paths ("/slide[1]/...") — zsh globs unquoted [1] to no matches found. Escaping happens at three layers — keep them separate (the CLI handles the second for you):
- Shell.
$in a value still belongs to the shell — single-quote the whole value:--prop text='$15M'. Double-quoted"$15M"gets expanded toM. The CLI does NOT unescape\$for you. - CLI (`text=`). The two-char escapes
\nand\tARE interpreted, consistently across pptx / docx / xlsx —\nis a line / paragraph break,\tis a tab. To produce a literal backslash-n in text, double it (\\n); this is rarely what you want. - JSON (batch heredoc). The recipes below pipe
cat <<EOF | officecli batchunquoted so$SLIDE/$FILEexpand inside the body. That same unquoted heredoc also expands a literal$in a value:"$1.42"silently becomes.42and"$2.4B"becomes.4B($1/$2are empty shell params). Escape currency as `\$` —"text":"\$1.42"— which still lets$SLIDEexpand.\n/\tinside the JSON work either way. A fully-quoted<<'EOF'protects every$but then$SLIDEwon't expand, so only use it when the body has no shell variables. After writing money values,view textand confirm the$survived.
If in doubt, view text after writing and compare character-for-character.
Incremental execution. One command → check exit code → continue. A 50-command script that fails at command 3 cascades silently. After any structural op (new slide, chart, animation, connector) run get before stacking more.
Requirements for Outputs
These are the deliverable standards every deck MUST meet. Violating any one = not done, regardless of content quality.
All decks
One idea per slide. If a slide needs a second title to explain what it covers, split it. Dense "everything about X" slides lose the audience inside 3 seconds. Use a section divider to group related one-idea slides, not a mega-slide.
Explicit type hierarchy — do NOT rely on theme defaults. Theme defaults drift between masters. Set sizes explicitly on every text shape.
| Element | Minimum | Typical | Min shape height | |
|---|---|---|---|---|
| Slide title | ≥ 36pt bold | 36–44pt | ≥ 2cm | |
| Section / subtitle | ≥ 20pt | 20–24pt | ≥ 1.2cm | |
| Body text | ≥ 18pt | 18–22pt | ≥ 1cm | |
| Caption / axis label | ≥ 10pt muted | 10–12pt | ≥ 0.6cm |
Rule of thumb: min shape height ≈ font_pt × 0.05cm. An 18pt sublabel in a 0.8cm-tall box will overflow — view annotated catches this.
Title must be ≥ 2× body size (36pt over 20pt works; 28pt over 20pt looks timid). Four legit exceptions to body ≥ 18pt: chart axis labels, legends, footer / page number, and ≤ 5-word KPI sublabels (e.g. "Active users"). Descriptive sentences must be ≥ 18pt. Left-align body; center only titles and hero numbers. If "the cards won't fit", drop cards instead of shrinking font.
Two fonts max, one palette. One heading font + one body font (e.g. Georgia + Calibri) — a third display face is fine only for big numerals or the cover title, as long as that heading+body pair stays intact. One dominant brand color (60–70% weight) + one supporting + one accent. Never mix 4+ colors in body content. The palettes and font pairings in Design Principles are a floor, not a menu: if the user gave brand colors/fonts or an existing template, match those first; otherwise the named sets are calibrated seeds — blend or diverge freely, as long as the result isn't worse than them and still clears the contrast floor.
Every slide carries a non-text visual — one that informs. Shape, chart, icon, gradient band that carries meaning, not decoration. A bullet-only deck is interchangeable with a Word doc. Exceptions: literal quote slides, code blocks, a single summary-table slide.
Less is more — every element earns its place. The visual rule above guards against bullet-walls; it is not licence to clutter. Don't pad with decorative stats, icons, or filler sections that don't inform ("data slop"). If a slide feels empty, fix it with layout and whitespace, not invented content — cut scope rather than bulk it up, and flag a larger addition instead of making it unprompted.
Speaker notes on every content slide. --type notes --prop text="...". The speaker needs a script; the audience shouldn't read the slide verbatim.
Copy reads human, not AI. Titles orient on content, not punchline. No "It's not X. It's Y.", no manufactured tension, no faux-insight ("The magic moment"), no one-word drama ("Momentum."). Cut hype adjectives (seamless, robust, game-changing) — let the number carry it.
Preserve existing templates. When a file already has a theme and masters, match them. Existing conventions override these guidelines.
Visual delivery floor (applies to EVERY deck)
Before declaring done, the per-slide render (see QA) MUST satisfy:
- No placeholder tokens rendered as content.
{{name}},$fy$24,<TODO>,lorem,xxxx, empty()/[]in chart titles never appear. - No overflow off-edge, no clipped text in shapes.
view issuesflags both (shape_off_slide+ a text-fit hint). To fix a clip: grow the box or shorten the value — never trim content to fit. - Cover carries its orienting elements. Title + subtitle + presenter/client + date + a brand band or key-takeaway strap — a title-only cover reads as a stub. Generous whitespace around them is still right; rich ≠ crowded.
- Contrast.
view issuesauto-flags the common case — opaque dark text on a shape's own dark fill (low_contrast). It can't see the rest: icon / chart-series fills, scheme/inherited colors, or text over a separate background shape. So on any fill with brightness < 30% (1E2761,36454F, deep forest / berry / cherry), still confirm every body run, card body, chart series, and icon isFFFFFFor brightness > 80% — mid-gray (6B7B8D≈ 44%) reads on a laptop and vanishes on projection. Spot-check viaview htmlafter the dark-fill pass.
If any fails, STOP and fix before declaring done.
Design Principles
A deck is not a document. The audience has 3 seconds to get each slide. Before adding anything, ask: "If the audience reads only the biggest element and glances once, do they get the point?" If they have to read the bullets, the biggest element is wrong.
Grid, margins, negative space
Standard widescreen is 33.87 × 19.05cm. Treat it as a 12-column grid internally:
- Edge margin ≥ 1.27cm (0.5") on all sides.
- Inter-block gap ≥ 0.76cm (0.3") between cards / columns / rows — pick one value (0.76 or 1.27cm) and use it everywhere; mixed gaps look unfinished.
- ≥ 20% negative space per slide. Filling every pixel reads as amateur.
- Compose, don't web-center. Whitespace is structural: a slide top-weighted with open space in the lower third is correct composition, not an empty defect. Intentional asymmetry (content left, breathing room right) reads more designed than centering everything — don't fill a gap just because it's there.
- For card grids:
usable = 33.87 − 2·margin − (N−1)·gap, thencol_width = usable / N. Don't hand-pick x coordinates.
Font pairings
Pair by document register, not by novelty. "Best For" is a prompt, not a decree; a pairing outside this table is fine if it fits — these 8 are seeds, not the set.
| Header | Body | Best For | |
|---|---|---|---|
| Georgia | Calibri | Formal business, finance, executive reports | |
| Arial Black | Arial | Bold marketing, product launches | |
| Calibri | Calibri Light | Clean corporate, minimal design | |
| Cambria | Calibri | Traditional professional, legal, academic | |
| Trebuchet MS | Calibri | Friendly tech, startups, SaaS | |
| Impact | Arial | Bold headlines, event decks, keynotes | |
| Palatino | Garamond | Elegant editorial, luxury, nonprofit | |
| Consolas | Calibri | Developer tools, technical / engineering |
Set both fonts explicitly on every shape (--prop font=Georgia on titles, --prop font=Calibri on body), not via theme inheritance.
Color and contrast
The columns: Primary (dominant — 60–70% of weight, the color you see first), Secondary (supporting tone), Accent (sparing, one-hit emphasis), Text (body on light fills), Muted (captions / axis labels / footer).
| Theme | Primary | Secondary | Accent | Text | Muted | |
|---|---|---|---|---|---|---|
| Coral Energy | F96167 | F9E795 | 2F3C7E | 333333 | 8B7E6A | |
| Midnight Executive | 1E2761 | CADCFC | FFFFFF | 333333 | 8899BB | |
| Forest & Moss | 2C5F2D | 97BC62 | F5F5F5 | 2D2D2D | 6B8E6B | |
| Charcoal Minimal | 36454F | F2F2F2 | 212121 | 333333 | 7A8A94 | |
| Warm Terracotta | B85042 | E7E8D1 | A7BEAE | 3D2B2B | 8C7B75 | |
| Berry & Cream | 6D2E46 | A26769 | ECE2D0 | 3D2233 | 8C6B7A | |
| Ocean Gradient | 065A82 | 1C7293 | 21295C | 2B3A4E | 6B8FAA | |
| Teal Trust | 028090 | 00A896 | 02C39A | 2D3B3B | 5E8C8C | |
| Sage Calm | 84B59F | 69A297 | 50808E | 2D3D35 | 7A9488 | |
| Cherry Bold | 990011 | FCF6F5 | 2F3C7E | 333333 | 8B6B6B |
Pick by topic, not by default — finance reads Midnight Executive, a product launch reads Coral Energy, safety / LOTO reads Cherry Bold. If the closest named theme is not quite right, blend (e.g. Forest primary + gold D4A843 accent). Use Text on light fills, Muted for captions / axis / footer, FFFFFF or Secondary for body on dark fills.
On dark backgrounds, text and chart series follow the Hard rules contrast floor above.
Chart-choice decision table
Wrong chart type kills the 3-second test:
| Data shape | Use | Avoid | |
|---|---|---|---|
| Category comparison (A vs B vs C) | column (vertical) / bar (≥ 6 categories, horizontal) | pie (slices merge), line (no time axis) | |
| Time series, 1–3 series | line | area (occlusion), bar (implies discrete) | |
| Part-of-whole, 2–5 slices | pie / doughnut | pie with 8+ slices (unreadable) | |
| Correlation / distribution | scatter | line (implies ordering) | |
| Multiple categories × metrics, dense | stacked column or heatmap | one chart per metric — consolidate | |
| KPI snapshot (single big number) | Large-text shape (60–72pt + ≤ 5-word sublabel), NOT a chart | gauge chart, tiny bar |
Rule of thumb: if > 3 series and > 8 categories, split into two charts or switch to a table.
Animation
Use as much or as little as the brand and content call for — a formal finance deck trends to near-zero, a product launch can be more expressive. Animation is a tool, not décor. Three floors keep it from hurting the deck (none caps how much you use):
This is the start of the file. Read the full SKILL.md on GitHub.
Security
- Security scanPassed, 100 of 100Pattern checks on the skill's files.
- Model reviewNot runA model review is scheduled for the next rescan.
Quality evaluation
- Task evaluationNot runNo evaluation yet. Run one in Skill Studio.
Source
- SKILL.md in the repositoryCheckingofficial-pack/skills/officecli-pptx/SKILL.md
Popularity
- Repository stars
- 64
- Repository forks
- 1
- 7-day trend score
- 26
Stars and forks are for the whole GitHub repository, not this skill alone. Not refreshed yet.
Works with
Any agent vskill installs to: 56 targets in all. These 39 have a page on this site.
- Claude Code
- Cursor
- GitHub Copilot
- Windsurf
- Codex
- Gemini CLI
- Cline
- Amp
- Roo Code
- Goose
- Continue
- Kilo Code
- Junie
- Trae
- OpenHands
- Qwen Code
- AI Agent
- Tabnine Chat
- Sourcegraph Cody
- Amazon Q
- Firebase Genkit
- Sweep
- Devin
- Phind
- Mentat
- Claude Desktop
- Aider
- GPT Pilot
- Plandex
- bolt.new
- v0
- Replit Agent
- Anse
- TypingMind
- BetterChatGPT
- LibreChat
- Warp AI
- Pieces
- Fig AI
Embed badge
[](https://verified-skill.com/skills/miyazawai/dsh-melody-launcher-overture/officecli-pptx)