Back to catalog
SkillDesign & MediaOfficial Verified

Amini One-Shot

Compile one paste-ready brand prompt for tools that cannot read your files, sized to fit their box.

#prompt#brand#notebooklm#powerpoint#pitch#gamma#canva#slides#voice

Install

With the Zana CLI
$ zana add amini-oneshot

Stdlib-only Python 3.9+, nothing to install: `python3 scripts/build_prompt.py --list-targets`. Use `--strict` for CI. Pairs with the amini-illustrations, humanizer-voice, and amini-decks skills, which own the checks that run on whatever the external tool gives back.

Sample work

What this skill actually produced. Not mockups.

One brief, three tools

examples/ministry-briefing

A ministry briefing compiled to three targets from one `brief.json`. Same rules, three sizes, because the boxes are three sizes.

brief.json470 B
{
  "task": "Sovereign AI infrastructure: what a trust layer with local data control actually gives a ministry",
  "audience": "Ministry of Digital Transformation, permanent secretary and CISO in the room",
  "sources": "Barbados deployment notes, Benin ingestion debrief, SIDSense paper on arXiv",
  "slides": "11",
  "length": "25 minutes with questions",
  "notes": "Open on agency, not technology. Name the Benin document-quality gap in the deck, not in the Q&A."
}
lint.txt409 B
wrote examples/ministry-briefing/pitch-L.txt (5732 chars)

[pitch · tier L · dark · 5732/8000 chars]
  clean
wrote examples/ministry-briefing/powerpoint-M.txt (2804 chars)

[powerpoint · tier M · dark · 2804/4000 chars]
  clean
wrote examples/ministry-briefing/notebooklm-audio-XS.txt (454 chars)

[notebooklm-audio · tier XS · dark · 454/500 chars]
  - 454 characters, within 10% of the 500 budget.
notebooklm-audio-XS.txt454 B
Focus the conversation on: what local data control gives a ministry, and where Benin fell short
Listeners: policy leads
Length: 18 minutes

Write like a person. Vary sentence length and openings. No em dashes. Never say leverage, unlock, empower, seamless, robust, moreover, additionally, in conclusion. Give the number, not the adjective. Never end by restating.

Stay inside the sources. If something is not in them, say so instead of filling the gap.
pitch-L.txt5.6 KB
Build a deck of 11 slides for Amini, an infra-tech company closing the data, connectivity, and compute gaps for Africa and the Global South.

Subject: Sovereign AI infrastructure: what a trust layer with local data control actually gives a ministry
Room: Ministry of Digital Transformation, permanent secretary and CISO in the room
Source material: Barbados deployment notes, Benin ingestion debrief, SIDSense paper on arXiv
Open on agency, not technology. Name the Benin document-quality gap in the deck, not in the Q&A.

BRAND, NON-NEGOTIABLE
Dark: #121212 ground, #FFFFFF text, one #FFC83C accent per slide, never a fill. No other colour.

Nothing outside this palette. No blue, no green, no teal, no purple, no red that is not #861D2C, which appears on light grounds only.

Leave space. At least a third of any layout stays empty. Do not add an element because a slide looks bare.

Neutrals: #1A1A1A secondary ground, #202020 raised surface or card, #ECECEC lines and light surfaces, #E1E1E1 dividers and muted rules.
Headings in Helvetica Now Display. If that font is unavailable use Geist, then Aspekta, then the closest geometric sans. Eyebrows and labels in Geist Mono, ALL-CAPS, wide letter-spacing.
Order on every surface: eyebrow, heading, body, caption. Nothing skips a level.
No gradients, glows, drop shadows, bevels, 3D, glassmorphism, or neon.
powerpoint-M.txt2.7 KB
Build a presentation of 11 slides for Amini, an infra-tech company closing the data, connectivity, and compute gaps for Africa and the Global South.

Subject: Sovereign AI infrastructure: what a trust layer with local data control actually gives a ministry
Room: Ministry of Digital Transformation, permanent secretary and CISO in the room
Source material: Barbados deployment notes, Benin ingestion debrief, SIDSense paper on arXiv
Open on agency, not technology. Name the Benin document-quality gap in the deck, not in the Q&A.

BRAND, NON-NEGOTIABLE
Dark: #121212 ground, #FFFFFF text, one #FFC83C accent per slide, never a fill. No other colour.

Nothing outside this palette. No blue, no green, no teal, no purple, no red that is not #861D2C, which appears on light grounds only.

Leave space. At least a third of any layout stays empty. Do not add an element because a slide looks bare.

Neutrals: #1A1A1A secondary ground, #202020 raised surface or card, #ECECEC lines and light surfaces, #E1E1E1 dividers and muted rules.
Headings in Helvetica Now Display. If that font is unavailable use Geist, then Aspekta, then the closest geometric sans. Eyebrows and labels in Geist Mono, ALL-CAPS, wide letter-spacing.
Order on every surface: eyebrow, heading, body, caption. Nothing skips a level.
No gradients, glows, drop shadows, bevels, 3D, glassmorphism, or neon.

17 files. Read them here, or pull the folder without the CLI.

Copy the folder into your skills directory
$ npx degit aminitech/amini-zana/catalog/skills/amini-oneshot ~/.claude/skills/amini-oneshot

No clone, no history. Just this folder.

Sparse checkout (private repos, uses your git auth)
$ git clone --depth 1 --filter=blob:none --sparse https://github.com/aminitech/amini-zana.git && cd amini-zana && git sparse-checkout set catalog/skills/amini-oneshot
Single file (SKILL.md)
$ curl -sL https://raw.githubusercontent.com/aminitech/amini-zana/main/catalog/skills/amini-oneshot/SKILL.md
SKILL.md
---
name: Amini One-Shot
description: >-
  Compile one paste-ready Amini brand prompt for a tool that cannot read your files.
  Use for "NotebookLM prompt", "Copilot prompt for PowerPoint", "Pitch prompt", "Gamma
  prompt", "Canva prompt", "Google Slides / Gemini prompt", "make an on-brand deck in
  <external tool>", "one prompt with our brand rules", or "single-shot prompt". Merges
  the Amini brand kit (palette, type, layout), the humanizer voice rules, and the
  illustration direction into one block sized to the target tool's instruction box.
  Ships a compiler with a brand linter.
license: MIT
metadata:
  author: Amini
  version: "1.0.0"
---

# Amini One-Shot

NotebookLM, PowerPoint Copilot, Pitch, Gamma, and Canva all have the same shape: one box,
one shot, no filesystem. They cannot read `brandkit/DESIGN.md`, cannot run the palette
auditor, and will not ask a follow-up question. Whatever the box does not say, the tool
invents, and what it invents is a purple gradient with the word "seamless" on it.

This skill compiles that box. It merges three sources into one block:

| Source | What it contributes |
| --- | --- |
| `brandkit/DESIGN.md` | Palette hex, type, hierarchy, layout, the hard don'ts |
| `humanizer-voice` | Sentence rhythm, banned vocabulary, no summary endings |
| `amini-illustrations` | Flat vector direction, one Sunglow accent, the Ami figure |

Inside Claude Code, use the three skills directly. They read files, run checkers, and
iterate. This one exists for the moment the work leaves the terminal.

## Read these as needed

- `references/targets.md` — what each tool profile assumes and where each tool fights back.
- `references/assembly.md` — how the blocks compress, what to cut first, editing the source blocks.
- `references/aftercare.md` — what to check when the output comes back, and how to bring it home.
- `assets/blocks/` — the three block files. Edit these, not the compiled prompt.
- `assets/targets.json` — the tool profiles: blocks, tier, character budget, header, footer.
- `examples/ministry-briefing/` — one brief compiled to three targets at three sizes.

## Workflow

### 1. Get the brief

Four things, and the first is the only one that is required:

- **task** — the subject, in a sentence
- **audience** — who is in the room
- **sources** — what the tool has been given, by name
- **length** — slide count, minutes, or word count

If the user has an article, deck spec, or research paper open, pull these from it rather
than asking. Ask only for what you genuinely cannot infer.

### 2. Compile

```bash
python3 scripts/build_prompt.py --list-targets

python3 scripts/build_prompt.py --target pitch \
  --task "Sovereign AI infrastructure: not a telco, not SaaS, not public cloud" \
  --audience "Ministry of Digital Transformation, permanent secretary and CISO" \
  --sources "Barbados pilot debrief, Benin ingestion report, SIDSense paper" \
  --slides 11

python3 scripts/build_prompt.py --brief brief.json --target gamma --mode light -o prompt.txt
```

Paths are relative to this skill's directory. Stdlib only, Python 3.9+.

The prompt goes to stdout and the lint report to stderr, so `> prompt.txt` gives you a
clean file with the report still on screen. `--strict` exits non-zero for CI.

Useful flags: `--tier XS|S|M|L` to override the profile's size, `--mode light`,
`--blocks ground,voice` to drop a block the tool has no use for, `--budget` when you know
the real limit of the box.

### 3. Read the lint report before you hand it over

It fails on unfilled slots, on an em dash in a prompt that bans them, on a brand token that
got trimmed away, and on going over the character budget. A budget finding is the common
one, and the fix is to drop a tier, not to delete lines by hand.

Budgets are conservative defaults, not published limits. NotebookLM's customisation box is
genuinely small; a deck tool's box usually is not. If you know the real number, pass it.

### 4. Hand it over, then say what it cannot do

Give the user the block and the three-line version of what it will not fix. A pasted prompt
carries rules, not fonts and not files:

- **Fonts do not travel.** No tool will install Helvetica Now Display. Expect a substitute
  and plan to reset type on export.
- **The logo is placed, never generated.** Drop the SVG in afterwards from
  `brandkit/assets/logo/`.
- **Nothing is audited.** No palette check runs inside Gamma. The output comes back to a
  session with the real skills for that.

Anything the tool produces that will be reused, bring home: run the copy through
`humanizer-voice`, the images through `amini-illustrations/scripts/palette_check.py`, and
rebuild a deck that matters with `amini-decks` rather than exporting theirs.

## What this skill will not do

Do not paste a compiled prompt into a Claude session and call it done. In a session with
files, `amini-decks` builds a real `.pptx` and `amini-illustrations` audits every image.
A one-shot prompt is what you use when that is not available, and it is strictly worse.

Do not invent brand rules to fill a block. Every line traces to `brandkit/DESIGN.md` or to
one of the two skills. New rule, new pull request, and it goes in the block file so every
prompt gets it.

## Output register

Give the compiled block, the character count against the budget, and the limits. Do not
explain the brand rules back to the user. The block carries them.

About

NotebookLM, PowerPoint Copilot, Pitch, Gamma, and Canva all have the same shape: one box, one shot, no filesystem. They cannot read a design system, cannot run a palette auditor, and will not ask a follow-up question. Whatever the box does not say, the tool invents. This skill compiles that box. It merges three sources into one block: the brand kit (palette hex, type, hierarchy, layout, the hard prohibitions), the humanizer voice rules (sentence rhythm, banned vocabulary, no summary endings, invent nothing), and the illustration direction (flat vector, 16:9, a single accent, the recurring deadpan operator figure). The compression is the point. Nine tool profiles fix which blocks go in, how much of each, and a character budget, because a NotebookLM customisation field and a Pitch prompt are two orders of magnitude apart. Four tiers rank every line by how much it changes the output per character, so trimming to fit is a flag rather than a judgement call. Dark and light are separate forks rather than a rule with an exception, since a tool given both will apply the exception. `scripts/build_prompt.py` assembles the prompt from a brief and lints what it produced: unfilled slots, an em dash in a prompt that bans them, a brand token lost to trimming, and the character budget. Stdlib only, non-zero exit under `--strict`. It is deliberately the weaker option. In a session that can read files, the three source skills build a real .pptx, audit every image, and iterate. This one is for when the work has to happen in somebody else's Canva, and it ships the aftercare checklist for bringing the result home.

docs
Author

Amini · Manila, Philippines

Related in Design & Media