Skills DirectorySearch all skills ↗

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.

Related skills