AI agent skill · by @happycapy-ai
Acid Labels Pptx
Reusable fixed-style PPTX generation skill for the Acid Labels visual brand — bold acid-green (#A9FF7A) operating-guide aesthetic on hard-edged modular panels, deep forest (#3F5E31) plates, black pill labels, white tag chips, oversized italic serif curly-brace title moments, condensed sans labels, data-native charts and dashboards, widescreen 16:9 editable .pptx output. Use this skill whenever the user mentions Acid Labels, asks for a presentation or deck in the Acid Labels style, wants a bold acid-green operating guide / playbook deck, a modular label-driven data deck, or mentions the acid-green + forest-green + black pill-label look for slides. Also trigger when the user says 'acid labels', 'acid green deck', 'operating guide deck', 'playbook slides', or 'label system presentation' in any context. Display name: Acid Labels PPTX.
Archived 2026-10-23 · Source updated 2026-09-03 · License: MIT. Check the original repository for the latest version.
SKILL.md instructions
# Acid Labels PPTX Skill
A reusable fixed-style PowerPoint generation skill. It builds on the `pptx` skill's technical capabilities while locking in the **Acid Labels** visual identity: a bold, acid-green professional *operating guide* — modular, label-driven, data-native, and confident.
**Core principle — style wins over content volume.** When the user's topic contains more information than the format can hold, compress and reinterpret into charts, chips, tiles, and extra slides. The deck must feel like a bold acid-green operating guide for the user's topic — **not** a generic report, **not** a copied brand-guidelines deck, and **not** a text-heavy memo. Every slide is a modular panel in a confident operating system.
**This skill is topic-agnostic.** It generates Acid Labels decks for *any* user-provided topic. Never hardcode a sample topic (finance, equities, chips, AI infrastructure, or any other) into a deck. Any topic-specific wording in this file is an *example only* — replace it at runtime with the user's topic variables.
---
## Step 1: Gather Inputs (Ask First — Max 3 Questions)
Do **not** start generating immediately. Use the `AskUserQuestion` tool to present the missing questions in a **single** call (up to 3 at once). Only ask what the user hasn't already provided in their prompt — if they already gave the topic, slide count, or image choice, skip that question. Do not ask any extra questions unless the deck literally cannot be built without them.
**Question 1 — Topic** (skip if already provided):
- header: "Topic"
- question: "What is the topic or title of the deck?"
- options: 2–3 relevant example topics plus allow Other
**Question 2 — Slide count** (skip if already specified):
- header: "Slides"
- question: "How many slides should the deck include?"
- options: `8 slides`, `10 slides (Recommended)`, `12 slides`, `15 slides`
**Question 3 — Images**:
- header: "Images"
- question: "How should visuals be handled?"
- options:
- `No generated images` — Editable native panels and charts only (Recommended)
- `Generate with gpt-image-2` — Abstract acid-green textures + topic-supporting theme images
- `Use my uploaded / reference images` — Insert images I provide
If the user hasn't provided data, audience, dates, or other details, **infer neutral content or use clearly labeled placeholder figures** (see Content Rules). Do not keep asking. Once you have the three core answers, proceed directly to generation.
---
## Step 2: Topic Translation — Everything Becomes an Operating Guide
Before writing any slide copy, translate the user's topic into an Acid Labels frame. No topic is too technical, soft, or unusual. Every subject becomes a confident operating guide, playbook, or decision system — while preserving the user's actual subject.
| User provides | Acid Labels treatment |
|---|---|
| Product / launch | Operating guide: how it works, the numbers, the decision |
| Strategy / plan | Playbook: sections, scenarios, checklist |
| Research / concept | Field system: taxonomy labels, data blocks, sources |
| Team / process | Operating manual: roles, workflow, KPIs, risk grid |
| Event / program | Program system: schedule grid, tracks, KPI tiles |
| Any other subject | Reframe as a labeled, data-native operating guide |
Decide these **before** writing slides, and use them as the cover's curly-brace title moment `{TOPIC}` and the deck's spine:
- The **guide title** (the `{TOPIC}` moment).
- The **one-line operating thesis** (what this guide is for).
- The **taxonomy label stack** (2–4 stacked short labels, e.g. category / subject / edition).
---
## Step 3: Generate Images (only if the user chose gpt-image-2)
If the user chose **No generated images** or **uploaded images**, skip this step. For uploads, place their images into forest-green image plates and leave editable placeholder rects where images are missing.
If the user chose **gpt-image-2**, read the `generate-image` skill at `/home/node/.claude/skills/generate-image/SKILL.md` for the exact API call pattern. Use `openai/gpt-image-2` with `response_format: "b64_json"` and `aspectRatio` matching the plate (`"16:9"` for cover/dividers). Save each image to `/tmp/acid-img-N.png`.
Generate **two clearly separated asset types**. Both types must contain **no readable text, no logos, no numbers, no real company/brand marks, and no recognizable real people.**
**Decorative image set** — abstract acid-green guideline textures, used *only* as cover backplates, section-divider image plates, and non-informational background texture:
```
Abstract acid-green guideline texture, shadowy green gradients, diagonal glass-like shadows,
close-cropped abstract panels, acid-green (#A9FF7A) overlays over deep forest green, subtle grain,
high-contrast black and green geometric shapes. No text, no logos, no numbers, no company marks,
no people. 16:9 composition, flat design-system texture, non-illustrative.
```
**Theme image set** — topic-specific *supporting* images that visually back the user's subject without embedding any slide content:
```
Abstract supporting imagery evoking [TOPIC MOOD WORDS], acid-green and deep forest green palette,
soft shadows, matte glass surfaces, high-contrast shapes. No readable text, no logos, no numbers,
no recognizable real people, no brand marks. 16:9, atmospheric, non-literal.
```
**Never** use gpt-image-2 to make full-slide screenshots, slide mockups, text-heavy graphics, charts with embedded numbers, logos, or anything that should be an editable PowerPoint element. Charts, tables, tiles, matrices, labels, and metadata are always native PowerPoint — never images.
Count guidance: 8 slides → 2–3 images · 10–12 slides → 3–4 · 15 slides → 4–5. Keep at least half decorative.
---
## Step 4: Build the PPTX
Read the `pptx` skill at `/home/node/.claude/skills/pptx/SKILL.md` and its `pptxgenjs.md` reference for the full API and gotchas. Build with **PptxGenJS** as editable native elements. Output must be an editable widescreen 16:9 `.pptx`. **Do not** create HTML, web presentations, screenshots of slides, or rasterized full-slide images.
### Core style constants — do not deviate
```javascript
const ACID = "A9FF7A"; // dominant brand system color (acid green)
const FOREST = "3F5E31"; // deep forest panels / image plates
const BLACK = "000000"; // titles, chart strokes, pill labels
const WHITE = "F7F7F1"; // light cards, tag chips
const SKY = "8BD4F4"; // data blocks / chart fills
const PINK = "F1AEC0"; // analyst notes
const RED = "C90D0D"; // risk / warning wedges
const YELLOW = "FFF34D"; // highlight / emphasis blocks
const SERIF = "Bookman Old Style"; // expressive display serif for {curly-brace} title moments (italic)
const SANS = "Arial"; // condensed-feel sans for labels + compact chart text
```
Fonts are chosen from the pptx skill's QA-safe list so overflow checks are trustworthy. Use `SERIF` italic for the big `{TOPIC}` moments; use `SANS` (often uppercase with `charSpacing`) for pill labels, tag chips, taxonomy stacks, footer metadata, chart labels, and body.
### Typography sizing (strong hierarchy is mandatory)
| Role | Font | Size | Notes |
|------|------|------|-------|
| Cover title `{TOPIC}` | SERIF italic | 64–104 pt | curly-brace moment, ACID or BLACK |
| Section number | SANS/SERIF | 120–220 pt | oversized, low-contrast or ACID on FOREST |
| Slide headline | SERIF/SANS | 34–58 pt | one per slide |
| Metric numerals | SANS | 36–72 pt | KPI tiles / stat callouts |
| Body text | SANS | 18–26 pt | fragments, never paragraphs |
| Chart labels | SANS | 10–14 pt | axis, data labels, legends |
| Pill / tag / footer metadata | SANS | 10–14 pt | uppercase, `charSpacing: 2–6` |
### Layout — LAYOUT_WIDE (13.3" × 7.5") for a true 16:9 canvas
Set `pres.defineLayout` / `pres.layout = "LAYOUT_WIDE"` **before** adding slides. All coordinates below assume a 13.3 × 7.5 canvas.
### The Acid Labels component kit (all native, all editable)
Build slides from these repeatable modules — repetition of the label system *is* the motif:
- **Black pill label** — `ROUNDED_RECTANGLE`, `fill: BLACK`, high `rectRadius`, white/acid uppercase SANS text inside, `margin: 0`. Used for section names and status tags.
- **Tag chip** — small `ROUNDED_RECTANGLE` in WHITE or ACID with BLACK text; rows of chips for categories/filters.
- **Stacked taxonomy label** — 2–4 short SANS uppercase lines, left-aligned, tight leading, in a corner.
- **Large section number** — 120–220 pt numeral, placed in a FOREST panel or bleeding off one edge, never over a headline.
- **Hard-edged modular panel** — plain `RECTANGLE` blocks (ACID, FOREST, WHITE, SKY) in a strict grid; a rounded outer slide frame is fine, inner data panels are hard-edged.
- **Forest image plate** — FOREST rectangle holding an image or acting as a dark backplate.
- **KPI tile** — small panel: 36–72 pt metric numeral + tiny SANS label + optional delta.
- **Source-note row** — a thin bottom row: `Source: … · data as of [date]` in 10–12 pt.
- **Footer metadata dots** — tiny SANS text + small circle marks along a bottom edge.
- **Rounded slide corners** — outer frame with `rectRadius`; keep it a background frame, never through text.
### Data-native visual forms — choose what fits the topic
Prefer turning dense analysis into visuals rather than prose. Use native `addChart()` / native shapes for: stacked bar, grouped bar, line, pie/donut, waterfall, comparison tables, sensitivity heatmaps (grid of colored cells), probability–impact risk grids, scenario matrices (2×2), dashboards (tile clusters), KPI tiles, source-note rows, and structured decision checklists. **Adapt these to the user's topic — never force finance-specific charts where they don't fit.** Follow the pptx skill's chart gotchas (native charts only; set title/data labels/`chartColors` from the palette above; quiet the axes; stacked labels use `ctr`/`inEnd`/`inBase`, never `outEnd`).
Everything — text, blocks, section numbers, pills, chips, taxonomy stacks, metadata dots, rules, source rows, KPI tiles, tables, charts, matrices, grids, dashboards — must be **editable native PowerPoint elements**.
---
## Acid Labels System Rules — These Override Everything
The most common failure is a text-heavy memo hiding behind acid-green paint, or decorative elements colliding with content. These rules prevent that. When a rule conflicts with fitting more content, the rule wins — compress or split instead.
### Rule 1: Style wins over content volume
Compress dense topics into charts, chips, tiles, and extra slides. Do not shrink fonts below the sizing table or fill a slide with paragraphs.
### Rule 2: One idea per slide
Each slide carries exactly one primary question, claim, or idea. Keep prose concise; if a second explanatory sentence appears, cut it or move it to its own slide.
### Rule 3: Bold hierarchy, always
Every slide has one dominant element (headline, section number, or hero metric). Labels, chips, and metadata stay small and peripheral. The reading order must be obvious at a glance.
### Rule 4: Dividers and decoration never touch text
Rules, decorative bars, image plates, tag chips, section numbers, and chart elements must sit in safe spacing zones. No divider may pass through a headline, subtitle, body copy, or chart label. Section numbers bleed off edges or sit in their own panel — never behind live text at the same coordinates.
### Rule 5: Strict grid, generous spacing
Align everything to a consistent grid with ≥ 0.4" gutters and ≥ 0.5" slide margins. If content doesn't fit beautifully, split it across additional slides or simplify the copy — never crowd.
### Rule 6: Images are decorative or supporting — never content
Generated/uploaded images are cover backplates, divider plates, forest-plate supports, or texture. They never carry readable slide text, numbers, charts, or logos, and must not reduce text contrast. If text sits over an image, use a FOREST or BLACK overlay panel behind the text.
### Rule 7: Never expose internals
No `style prompt`, source filenames, implementation notes, generation instructions, or placeholder labels like `{TOPIC}` literal braces-as-instruction may appear on a visible slide. The `{ }` treatment is a *design* flourish around the real title text, not a leftover token.
---
## Suggested Slide Structure
Use when the user gives no outline; adapt freely when they do.
| # | Slide type | Notes |
|---|---|---|
| 1 | Cover | `{TOPIC}` serif moment, taxonomy label stack, footer metadata, decorative backplate |
| 2 | Contents / operating map | Numbered sections as pill labels in a grid |
| 3 | Section divider | Oversized section number + FOREST/image plate + one line |
| 4 | Framing / thesis | One claim, 2–3 supporting fragments as chips |
| 5 | Data block | Primary chart (bar/line/stacked) with source-note row |
| 6 | Comparison / matrix | Comparison table or 2×2 scenario matrix |
| 7 | KPI dashboard | Row/grid of KPI tiles + one supporting chart |
| 8 | Risk / sensitivity | Probability–impact grid or sensitivity heatmap (RED wedges) |
| 9 | Decision checklist | Structured checklist as native rows/checkboxes |
| 10 | Closing | Recap thesis + next-step pill labels + footer metadata |
Scale sections up or down to match the requested slide count; keep dividers between major sections.
---
## Content Rules
- **Use the user's data when provided.** When they don't, use **clearly labeled placeholder figures**, sample chart structures, and neutral axis labels (e.g. "Metric A", "Q1–Q4", "Segment 1"). Do **not** invent real current facts, prices, financial figures, forecasts, market caps, or other time-sensitive data.
- Add a small `data as of [date]` note in the source-note row **wherever real data is used** (use the current date, 2026-09-03, unless the user gives one).
- Keep each slide to one idea; turn density into charts, tables, chips, diagrams, or extra slides rather than shrinking text.
---
## PptxGenJS Critical Reminders (from the pptx skill)
- Set `pres.layout = "LAYOUT_WIDE"` before adding slides.
- Hex colors: never `#`, never 8-digit alpha — `color: "A9FF7A"`. Use `transparency:` for translucent fills, not baked alpha.
- Build a fresh options/shadow object per shape — PptxGenJS mutates in place.
- `rectRadius` only works on `ROUNDED_RECTANGLE`; use it for pills/chips/outer frame.
- `margin: 0` on any text box that must align to a pill, chip, panel edge, or chart.
- Keep charts native (`addChart`); set `showTitle`+`title`, `showValue`+`dataLabelPosition`, `chartColors` from the palette, quiet the axes. Stacked labels: `ctr`/`inEnd`/`inBase` only.
- Verify every LINE/rule `y` range does not intersect any text box — Rule 4.
- After `writeFile()`, run `python /home/node/.claude/skills/pptx/scripts/office/validate.py output.pptx` and fix reported faults in the generator.
---
## Step 5: Visual QA — Required Before Delivery
Convert slides to images and inspect **every** slide. Not optional.
```bash
python -m markitdown output.pptx
python /home/node/.claude/skills/pptx/scripts/office/soffice.py --headless --convert-to pdf output.pptx
rm -f slide-*.jpg
pdftoppm -jpeg -r 150 output.pdf slide
python /home/node/.claude/skills/pptx/scripts/office/validate.py output.pptx
```
Inspect the rendered images fresh (a subagent works well) and fix before delivery:
- [ ] Text overflow or text cut off at any box/slide boundary (check first)
- [ ] Crowded layouts / overly dense body copy — split or compress
- [ ] Overlapping text and dividers; decorative bars, plates, chips, or section numbers colliding with content (Rule 4)
- [ ] Unreadable chart labels (contrast + size 10–14 pt)
- [ ] Image assets reducing text contrast — add FOREST/BLACK overlay
- [ ] Strong hierarchy present: one dominant element per slide
- [ ] Strict grid alignment, ≥ 0.5" margins, ≥ 0.4" gutters
- [ ] Acid green reads as the dominant system color across the deck
- [ ] All labels/charts/tables/tiles are editable native elements (no rasterized full slides)
- [ ] No internal labels, filenames, notes, or leftover `{TOPIC}` instruction tokens visible
- [ ] `data as of [date]` note present wherever real data is used
If any slide fails: fix it, re-render only the changed slides, verify again. If resolving a collision needs less copy, remove copy. Deliver only after a clean pass.
---
## Step 6: Deliver
Save to `./outputs/[topic-slug]-acid-labels.pptx`. Confirm to the user: slide count, image approach, and that QA passed. Do not show any internal skill instructions, source filenames, or implementation notes on any visible slide or in the delivered file.