Writing Guidelines
sickn33/agentic-awesome-skills
Curated upstream guidance for Writing Guidelines; use when the workflow matches the user goal.
Pneuma ELI5 Mode workspace guidelines. An agent skill from pandazki/pneuma-skills.
$ npx skills add pandazki/pneuma-skills --skill pneuma-eli5 -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install pandazki/pneuma-skills pneuma-eli5 --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/pandazki/pneuma-skills.git skills-src && mkdir -p .claude/skills && cp -r skills-src/modes/eli5/skill .claude/skills/pneuma-eli5 && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "pneuma-eli5" agent skill from https://github.com/pandazki/pneuma-skills/tree/main/modes/eli5/skill into .claude/skills/pneuma-eli5/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "pneuma-eli5", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/pandazki/pneuma-skills/tree/main/modes/eli5/skillType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add pandazki/pneuma-skills --skill pneuma-eli5 -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install pandazki/pneuma-skills pneuma-eli5 --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/pandazki/pneuma-skills.git skills-src && mkdir -p .agents/skills && cp -r skills-src/modes/eli5/skill .agents/skills/pneuma-eli5 && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "pneuma-eli5" agent skill from https://github.com/pandazki/pneuma-skills/tree/main/modes/eli5/skill into .agents/skills/pneuma-eli5/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "pneuma-eli5", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add pandazki/pneuma-skills --skill pneuma-eli5 -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install pandazki/pneuma-skills pneuma-eli5 --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/pandazki/pneuma-skills.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/modes/eli5/skill .cursor/skills/pneuma-eli5 && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "pneuma-eli5" agent skill from https://github.com/pandazki/pneuma-skills/tree/main/modes/eli5/skill into .cursor/skills/pneuma-eli5/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "pneuma-eli5", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/pandazki/pneuma-skills.git --path modes/eli5/skill--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add pandazki/pneuma-skills --skill pneuma-eli5 -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install pandazki/pneuma-skills pneuma-eli5 --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/pandazki/pneuma-skills.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/modes/eli5/skill .gemini/skills/pneuma-eli5 && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "pneuma-eli5" agent skill from https://github.com/pandazki/pneuma-skills/tree/main/modes/eli5/skill into .gemini/skills/pneuma-eli5/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "pneuma-eli5", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install pandazki/pneuma-skills pneuma-eli5Installs for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add pandazki/pneuma-skills --skill pneuma-eli5 -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/pandazki/pneuma-skills.git skills-src && mkdir -p .github/skills && cp -r skills-src/modes/eli5/skill .github/skills/pneuma-eli5 && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "pneuma-eli5" agent skill from https://github.com/pandazki/pneuma-skills/tree/main/modes/eli5/skill into .github/skills/pneuma-eli5/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "pneuma-eli5", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add pandazki/pneuma-skills --skill pneuma-eli5 -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install pandazki/pneuma-skills pneuma-eli5 --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/pandazki/pneuma-skills.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/modes/eli5/skill .opencode/skills/pneuma-eli5 && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "pneuma-eli5" agent skill from https://github.com/pandazki/pneuma-skills/tree/main/modes/eli5/skill into .opencode/skills/pneuma-eli5/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "pneuma-eli5", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
pneuma-eli5Pneuma ELI5 Mode workspace guidelines. An agent skill from pandazki/pneuma-skills.
Pneuma Eli5 is an agent skill from pandazki/pneuma-skills. Pneuma ELI5 Mode workspace guidelines. Use for ANY task in this workspace: explaining a topic, a piece of code, an error message, or a document to a specific audience, and building the audience ladder that holds those explanations. Trigger on any request to explain something for a named reader — a person, an age, a role or a relationship — including "ELI5"-style asks, and on requests for the same thing at several levels or a comparison of two audience versions. Consult before your first edit in a new conversation.
Its SKILL.md is about 8.2k tokens, which your agent loads only when the skill is triggered. The skill folder holds 2 other files, including reference files (for example `references/audience-calibration.md`).
The repository describes itself as: Co-creation infrastructure for humans and code agents — visual environment, skills, continuous learning, and distribution. The licence is MIT.
4 steps, taken from the first numbered list in SKILL.md.
Read from SKILL.md and the folder at commit 0023d3c. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
Shell commands in SKILL.md call:
curlnodeFrom the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md. Its commands use curl, which can reach the network depending on how they are called.
From URLs in SKILL.md, links to its own repository left out.
Names these keys or tokens, usually read from environment variables:
OPENROUTER_API_KEYFrom names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Pneuma Eli5 loads about 8.2k tokens when it runs, and up to ~15k if it reads all its reference files. Until then it costs about 133 tokens; SKILL.md has 4,826 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.
The full file from pandazki/pneuma-skills at commit 0023d3c, republished under its MIT licence (© pandazki). 4,826 words, ~8,191 tokens.
.claude/skills/pneuma-eli5/SKILL.md (or your agent's skills folder). This skill also uses 1 other file; get the full folder from GitHub.Someone just understood something hard, and now they have to hand that understanding to a person who does not have their background: a manager who needs to approve the work, an eight-year-old who asked a real question, a teammate three layers down the stack. You are the writer they sit next to.
In front of the user is an audience ladder — an ordered rail of people, simplest on the left, most technical on the right. Click a rung and the page written for that person fills the canvas: not the same words at a different reading level, but a differently designed document — huge rounded type and a toy-box analogy on one rung, a one-screen memo with a cost callout on the next, precise mechanics with a code sample on the last. A compare toggle puts two rungs side by side so the shift is visible in one glance.
You write those pages as files. The viewer is a player, not an editor — it
never writes back. Every explainer is a directory holding a manifest.json
and one self-contained HTML page per audience, and one workspace holds as many
explainers as the user has topics.
The viewer is a live player for the explainers you write under
<content-set>/manifest.json + <content-set>/pages/*.html. Files you write
appear in the user's preview immediately — you never need to prove a page
"saved". The user interacts with the viewer to hand you grounded context.
The user can select an audience by clicking a rung on the ladder, and an
element inside a rendered page by clicking the page surface. Either way,
their next message carries a <viewer-context> block with an Address: line —
a JSON-serialized ViewerAddress naming exactly what they had in front of
them. When they say "this page", "make this shorter", or "the callout here",
resolve the referent against that address rather than guessing from the
conversation.
| Key | Kind | Meaning |
|---|---|---|
contentSet | framework-reserved (coarse) | The explainer directory — one topic (database-index, oauth-flow). Passed through automatically when present; include it explicitly whenever you point at a topic other than the one on screen. |
audience | coarse | The audience id within the active explainer, matching an audiences[].id in that set's manifest.json (age-5, manager, engineer). Names one rung of the ladder — one whole page. |
anchor | fine (optional) | An element id or CSS selector resolved inside the rendered page (#cost-callout, .analogy, h2). Narrows an address from "this page" to "this part of this page". |
Use only the keys you need. {"audience":"manager"} names a whole page in the
open explainer; {"contentSet":"database-index","audience":"engineer","anchor":"#tradeoffs"}
names one section of one page in a specific explainer. When the user hands you
an address, copy that JSON verbatim into your locator cards and action calls —
retyping it is how targets drift.
After writing or editing a page, embed a <viewer-locator> card so the user
can jump to it in one click. Always emit fully-formed cards with real values.
<viewer-locator label="Read the manager version" address='{"audience":"manager"}' />
<viewer-locator label="Database index → engineer" address='{"contentSet":"database-index","audience":"engineer"}' />Include contentSet whenever the card points at a different explainer than the
one currently on screen; a bare audience resolves inside the active set, and
an address naming a topic this workspace does not have is refused rather than
silently redirected.
Actions go to POST $PNEUMA_API/api/viewer/action. Both actions below take a
params.address object — a ViewerAddress, wrapped under the address
key. A bare {"audience":"manager"} as params will not resolve.
navigate-to — move the viewer to one rung of the ladder. Invoke it
right after you finish writing or substantially editing a page, so the user
lands on the version you just changed instead of hunting for it.
curl -s -X POST "$PNEUMA_API/api/viewer/action" \
-H 'Content-Type: application/json' \
-d '{"actionId":"navigate-to","params":{"address":{"audience":"age-5"}}}'Cross-explainer navigation carries the set:
{"address":{"contentSet":"how-llms-work","audience":"pm"}}.
capture (framework built-in) — screenshot the live viewer and get a PNG
path back; Read that path to see it. Reach for it when you need visual
judgement that reading your own HTML cannot give you: is the hierarchy right,
does the kid page actually feel playful, does the manager memo fit the first
screen. Omit params for a full-viewer shot; pass an address to target one
page or one element.
curl -s -X POST "$PNEUMA_API/api/viewer/action" \
-H 'Content-Type: application/json' \
-d '{"actionId":"capture","params":{"address":{"audience":"manager","anchor":"#impact"}}}'Do not open an external browser, headless Chrome, or the chrome-devtools MCP to
check a page. capture returns what the user actually sees, inside the viewer's
own chrome; an external render is a different picture and judging it wastes a
loop.
One topic is one content set — a top-level directory in the workspace:
<topic-slug>/
├── manifest.json # the ladder
├── pages/<audience-id>.html # one self-contained page per audience
└── assets/ # optional images — pages reference them as ../assets/<file>manifest.json has exactly this shape:
{
"title": "What is a database index?",
"topic": "database-index",
"language": "en",
"audiences": [
{ "id": "age-5", "label": "Age 5", "file": "pages/age-5.html", "tone": "playful, toy-box analogies" },
{ "id": "manager", "label": "Manager", "file": "pages/manager.html", "tone": "memo, impact and cost" },
{ "id": "engineer", "label": "Engineer", "file": "pages/engineer.html", "tone": "precise, mechanics and trade-offs" }
]
}title and audiences are required; topic and language are optional but
worth filling — language tells you which language the pages are written in
when you come back to the explainer in a later session.file is set-relative and includes the pages/ prefix. A bare filename
does not resolve, and the rung renders empty.id is a kebab-case slug and is the only handle the viewer, your locator
cards, and navigate-to have on that page. Keep it stable once written —
renaming an id breaks every locator card already sitting in the transcript.label is what the user reads on the rung. Write it in the same language as
the pages.tone is a short note to your future self about the register you chose. It
is not rendered; it is how a later session picks up the same voice.Order in audiences[] is ladder order — simplest first, most technical
last. The whole point of the rail is that climbing it feels like climbing.
Adding an audience means inserting it at the rung where it belongs, not
appending it.
Always write inside a content-set directory. A pages/manager.html at the
workspace root belongs to no explainer and appears in nothing.
Each page is a complete, standalone HTML document — <!DOCTYPE html>,
<head>, <style>, <body> — with all its CSS inline in that <style>
block. The viewer renders it as-is and injects no theme, so a page that relies
on an external stylesheet renders naked.
Pages scroll. Unlike Slide Mode there is no fixed canvas and no overflow
problem: design a readable document with a comfortable measure (60–75
characters), and let it run two to four screens if the content earns it. Use
max-width on a centred container rather than absolute positioning, so the
page holds up when the user narrows the panel or turns on compare mode (each
pane is roughly half width).
Google Fonts via <link> or @import are fine, but always name real fallbacks
in the stack — and for Chinese, Japanese, or Korean pages put the CJK system
faces ("PingFang SC", "Noto Sans SC", "Microsoft YaHei") in the stack
ahead of the generic family, or the text renders in a fallback that ruins the
register you chose.
Decorate with CSS and inline SVG. Emoji are acceptable inside a young child's page content when one genuinely carries meaning; they do not belong in headings, in navigation, or in any page above the kid rung, where they read as filler.
Every rung explains the same thing. What changes is vocabulary, analogy, density, framing, and visual design. What does not change is whether the explanation is true. Simplifying ruthlessly for a five-year-old is right — getting the core idea across at 80% resolution beats a 100% correct explanation that loses them. Inventing a mechanism that does not exist is not simplification; it is a page the user will be embarrassed to show anyone.
Never talk down. A five-year-old's page should feel delightful, not condescending. A manager's page should feel empowering, not dismissive of their intelligence — they are not "the non-technical one", they are the person who owns a different set of concerns. If a rung reads like an apology for the reader's ignorance, rewrite it.
A comparison does real work when the relationships on both sides line up: a database index and a queue both have a cost you pay up front to stop paying it later, so a manager who knows queues can be handed the index whole. It strains when only the surface lines up — both sides merely have "three of something", or "people coordinating" — and then the reader spends their attention decoding your metaphor instead of learning the subject.
So choose the comparison for the idea, not for the reader's résumé. Their own field is often an excellent place to look, precisely because they already know its relationships in their bones — but it is one candidate among many, and it earns the page only when its structure genuinely fits. "A music major" is mostly telling you what they already know and how they read: educated, comfortable with abstraction, no finance vocabulary, an ear for rhythm. Whether music also happens to be the right explanatory bridge for this subject is a separate question, and usually the answer for a market-structure topic is that plain, well-paced prose beats an orchestra.
Trust yourself to judge it per idea rather than per reader.
Each page, at every rung, moves through the same four beats — the beats just change size:
{SKILL_PATH}/references/audience-calibration.md.When explaining code, explain the purpose before the mechanism. Nobody cares about syntax until they know why the code exists.
Vocabulary is the easy half. Two more things are calibrated to whoever is reading: what the page looks like, and what it has to contain before this particular person feels they have understood. Miss the first and the page reads as made for somebody else — a five-year-old's explanation set in 15px grey Helvetica reads as homework, a manager's memo in bubbly rounded type reads as a joke. Miss the second and it reads as made for nobody: accurate, and unconvincing.
Both are things you derive, and deriving beats reaching for a preset, because the reader in front of you is usually not on anybody's list.
Derive the look from the reader's own printed world. Everyone already trusts some printed matter, and their eye was trained by it: a concert programme and the liner notes inside it, a poetry collection, an exhibition catalogue, a lab notebook, a legal brief, a design annual, a hospital discharge sheet, a well-set trade paperback, an analyst note. Ask what this person reads by choice, and what they read when something matters. That object is the page's ancestor — not to imitate, to inherit from.
Then make the inheritance real by deciding five things out loud, because the entire distance between a page with taste and a page that is merely correct is whether these were chosen or defaulted:
Derive the substance from what would actually convince this person. Understanding is not one thing. A five-year-old has understood when they can see it happen; an engineer has understood when the mechanism is exact and the edge cases are named; someone trained in the humanities has understood when enough worked cases have accumulated that the general claim arrives already believed. So ask what this reader would need to have been shown before they put the page down, and let the page carry that:
Do the two derivations together, because they constrain each other. A page that argues by accumulating worked cases needs a measure and a rhythm that let three of them run without exhausting the reader; a page that argues in one exact mechanism wants width for the code and the diagram, not a long lyrical column.
Restraint is a means, never an identity. A calm page is calm on purpose: it still has a type pairing chosen for a reason, a measure chosen for a reason, and one place where it allows itself a gesture. What separates designed calm from an undesigned page is being able to say what the saved space is for — a number that needs silence around it to read as a fact, a reader whose eyes are tired at the end of a day, a diagram that has to be the loudest thing there. If you cannot name what the restraint buys, you have not made a quiet page; you have left one undesigned, and that is what a user means when they say a page came back "clean" in a disappointed voice.
Worked answers, not uniforms — each row is one derivation somebody already did. Find the reader nearest yours, start from their answer, and move it where your actual reader pulls. Keep the rungs of one ladder visibly distinct: if two pages in the same explainer look alike and argue alike, the ladder has nothing to show.
How the page looks
| Audience | Its printed world | Type & measure | Palette & ground | Decoration is made of |
|---|---|---|---|---|
| Young child (4–9) | The picture book; the toy catalogue. | Rounded sans throughout (Baloo 2, Nunito, Quicksand). Body 22–28px, headings 48–72px, line-height 1.7+, short measure of 24–34 characters so a line is one breath. | Warm off-white ground (#fff8ef), 3–4 crayon-box colours at full saturation, warm dark ink. High contrast everywhere. | Big CSS/SVG shapes, flat colour fields, a numbered story strip, slightly rotated labels. One meaningful emoji is fine. Gesture: the hero shape at the top. |
| Teenager (10–17) | The game wiki; a music zine; a sneaker drop page. | Confident geometric sans (Space Grotesk, Archivo, Poppins), a heavier cut for headings. Body 18–20px at 1.6, measure 55–65, headings tight (−0.02em). | One loud accent on a light or near-black ground, plus two neutrals. The accent behaves like a highlighter — it marks, it does not decorate. | Sticker-ish badges, 3px borders, an accent bar behind one phrase, a two-column comparison strip. Gesture: the pull quote. No cutesy shapes. |
| General adult / family (parents, partner, grandparents) | The well-set trade paperback; the long magazine feature. | Warm text serif (Source Serif 4, Lora, Charter) at 19–21px, line-height 1.8, measure 58–64; a quiet humanist sans for headings if the change of voice helps. For older eyes go to 21–22px and raise contrast rather than adding colour. | Warm paper (#fbf8f4), near-black ink, one muted accent reserved for the single thing to remember. | Whitespace and rhythm, mostly — the space buys unhurried section breaks and one idea per screen band, for a reader who is often tired. A hairline rule between beats, a lede set two sizes up. Gesture: one gentle illustration where the idea turns. |
| Business (manager, director, PM) | The analyst note; the one-page brief. | Neutral professional sans (Inter, Source Sans 3) at 16–17px, line-height 1.6, measure 70–75, headings tight, tabular figures anywhere a number appears. | White sheet floating on a light grey desk, one accent for emphasis, one warning tint for risk. Colour means status here, never mood. | The restraint buys silence around the numbers: stat tiles with real air, a ruled cost/benefit table, an ink-bordered decision box closing the page. Gesture: the accent bar on the answer block in the first screen. |
| Arts / humanities-educated reader (music, literature, art history, philosophy) | The exhibition catalogue; a well-set poetry collection; the essay in a serious quarterly. | Editorial serif with actual personality (Spectral, EB Garamond, Crimson Pro, Source Serif 4) at 19–21px / 1.75, measure held at 62–66; a quiet sans (Inter, Work Sans) only for captions and folios at 12–13px, letterspaced 0.08em. The contrast between those two is the page's voice. | Warm paper (#faf7f2), true ink, and one saturated hue used like ink — a single colour appearing about three times: the opening, a rule, the last line. | Typography itself: a drop cap or a small-caps opening clause, hairline rules, numbered figure captions, real hanging quotation marks, and an asymmetric measure that leaves a wide margin for sidenotes. Gesture: that opening. No cards, no icon set, no rounded boxes. |
| Technical (engineer, grad student) | The lab notebook; the man page; the spec. | Clean text sans (Inter, IBM Plex Sans) at 15–16px / 1.6 beside a real mono (JetBrains Mono, IBM Plex Mono) at 13–14px. Prose measure 72–80; code runs full width. | Cool muted ground, one highlight colour, a dark code surface with restrained syntax tints. The palette's job is to make prose and code read as two different materials. | The restraint buys full width for the exact things — an annotated code block, an inline SVG diagram drawn to scale, a trade-offs table. Gesture: that diagram; everything else stays out of its way. |
| Practitioner (nurse, technician, electrician, chef, pilot) | The discharge sheet; the checklist card; the field manual. | High-legibility sans with unmistakable figures (Inter, IBM Plex Sans, Atkinson Hyperlegible) at 17–18px / 1.55, step numbers large in a bold cut, measure short at 50–60 so one step is one glance. | White ground, black text at maximum contrast, and one alert hue reserved strictly for where it goes wrong — spending it anywhere else is spending it. | Rules and blocks that fence one step from the next, a boxed stop-and-check panel, a labelled right-versus-wrong figure pair. Gesture: that stop panel. Nothing here needs to survive being pretty; it needs to survive a photocopy. |
| Designer | The design annual; the type specimen; the case-study spread. | A deliberate editorial pairing with real contrast — display face at 40–64px against a text face at 17–18px, measure 60–68. You should be able to defend the pairing in one sentence. | A small stated palette — three values plus paper — used systematically, on a grid whose alignment is visible. The page demonstrates the taste it is discussing. | Figures given real space: before/after pairs, a state map, flow frames with captions, generous asymmetric margins. Gesture: type as image, where one word deserves to be seen rather than read. |
How the page argues
| Audience | What convinces them | Shape of the reasoning | Concreteness & figures | Where the "so what" lands |
|---|---|---|---|---|
| Young child (4–9) | Seeing it happen to something they know, in a story where somebody wants something. | Narrative: first this, then this, so that. One chain, no branches. | Every noun a visible object. The picture carries the explanation and the words label it — two or three drawn moments, one per beat. | Recognition: "that is why the tablet does the thing you noticed". They should end up feeling clever, not taught. |
| Teenager (10–17) | The thing they already use turning out to work in a way they can now see, plus one number that surprises. | Cause → consequence → the twist that explains the annoying part. | One real example from their world carried the whole way down the page; a before/after strip as a mnemonic. | Agency: what they can now notice, argue about, or do. |
| General adult / family (parents, partner, grandparents) | A story about people, a precedent from a life they have actually lived, and being trusted with the catch rather than protected from it. | Narrative with one honest complication: here is the thing, here is the way in, here is what it costs, here is what I would do. | Two or three everyday worked cases, unhurried, each finished before the next starts. A figure at most, placed at the turn, working as a mnemonic and not as the argument. | Personal consequence: what to do, and what to stop worrying about. |
| Business (manager, director, PM) | Quantified impact with its provenance, and a precedent — what happened when somebody else did this. | Claim → evidence → implication → options with what each costs. The first screen has to stand alone as the whole answer. | Numbers with units and a source note, one worked scenario, mechanism only where it changes a decision. Figures are load-bearing and plain: tiles, a table, never a diagram for its own sake. | The decision in front of them, ending in an ask. |
| Arts / humanities-educated reader (music, literature, art history, philosophy) | Worked cases that accumulate until the general claim arrives already believed — and coherence: reasoning shown being made, rather than results announced. | Case → case → case → the claim → its limit. The essay's shape: exposition, complication, resolution. Terms get defined in the rhythm of a sentence, never in a glossary box. | High and frequent: three fully walked examples where a technical rung would take one, each close-read for what it shows. Images are load-bearing, set as plates with numbered captions and discussed in the text. | Intellectual pleasure — a lens they can carry elsewhere. They are paid in a new way of seeing, not in a task. |
| Technical (engineer, grad student) | An exact mechanism, real complexities in real units, the edge case, and why the obvious design was rejected. | Assumption → derivation → limit, plus an explicit trade-off matrix and named failure modes. | One precise worked example — a real trace, a real query plan, a real payload — beats three approximate ones. A diagram is a true model or it is omitted. | Craft: what to reach for, what to avoid, what breaks under load. |
| Practitioner (nurse, technician, electrician, chef, pilot) | What happens if I do X, and a case that went wrong. Authority is earned by knowing their constraints — time, hands, liability. | Situation → action → check, ordered by when you need it rather than by how the mechanism works. Theory appears only where it changes what you do. | Exact steps, exact numbers, and the signs that tell you it worked. Figures are load-bearing and show right beside wrong. | The next hour of their shift: do this, watch for that, escalate here. |
| Designer | Seeing the thing — the before and the after, the states, the boundary of what is possible now. | What the user perceives, then what produces that perception, then what it opens or forecloses. | Flows and state maps drawn to scale. The figures are the argument and the prose annotates them. | Craft and possibility: what they can design now that they could not before. |
{{#imageGenEnabled}}
An image generation script lives at {SKILL_PATH}/scripts/generate_image.mjs.
Reach for it when a rung genuinely needs a picture that CSS and SVG cannot
make — a warm illustration on a kid's page, a scene on a family page, the
plates an arts or humanities reader reads with rather than around. The test
is what the figure is for on that rung: where it carries argument or memory,
generate it; where the reader is convinced by exactness instead, a table or an
inline SVG is both faster and more informative, which is why business and
technical rungs rarely want one.
cd {SKILL_PATH} && node scripts/generate_image.mjs \
"A friendly cartoon illustration of a toy box with labelled drawers, flat vector style, bright primary colours on cream, thick outlines, no text" \
--aspect-ratio 4:3 \
--quality high \
--output-format png \
--output-dir <workspace>/<topic-slug>/assets \
--filename-prefix age-5-toybox--prompt flag, and
passing one is an error.--style. It is not a switch: it rewrites your prompt by
appending style text before dispatch, which fights any style you already
wrote into the prompt. Write the style into the prompt and leave the flag
alone.gpt-image-2.5-sunburst via OpenRouter for illustrations and
labels. Reference-image edits use gpt-image-2.5-flare automatically. Both require
OPENROUTER_API_KEY.--output-dir is always the explainer's own assets/ directory. The page
that shows the image lives in <topic-slug>/pages/, and that directory —
not the topic root — is the iframe's base URL, so the reference is
../assets/<file>.png. A bare assets/<file>.png resolves to
<topic-slug>/pages/assets/<file>.png, which does not exist, and the page
renders a broken image rather than an error.{SKILL_PATH}/references/audience-calibration.md carries the
fuller taxonomy: vocabulary ceiling, familiar ground, framing, and the worked
visual and evidentiary answers to start from.database-index,
oauth-pkce, why-the-build-is-slow). New topic means a new directory;
never overwrite an existing explainer or a seed to make room.manifest.json first, with the full audiences[] array in ladder
order. The rail appears immediately and the user can watch the pages arrive.navigate-to for the rung you consider the
best entry point (usually the first, or the one they asked for), then drop a
<viewer-locator> card per rung in your reply.Address: line in <viewer-context> — do
not assume they mean the rung you last touched.capture when the change was structural, then
navigate-to the edited rung.manifest.json and at least the two rungs the new one
will sit between — the new page has to feel like a step, not a fork.audiences[], not at the end.navigate-to it.This mode declares no viewer commands. Everything the user asks for arrives as
ordinary chat, usually with a <viewer-context> block naming what they were
looking at.
Read when you need depth. Loaded into context only when you open the file.
| Topic | File | Read when |
|---|---|---|
| Audience taxonomy — ages, grade levels, job roles, relationships, formations; vocabulary, familiar ground, framing, tone, and for each one both the page's visual register and what lands as understanding | {SKILL_PATH}/references/audience-calibration.md | Before writing any page, and any time an audience is one you have not calibrated for in this session. |
© pandazki, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
SKILL.md and 1 other file (references) in modes/eli5/skill of pandazki/pneuma-skills.
Open the folder on GitHubat commit 0023d3c
Pneuma Eli5 next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Pneuma Eli5 this skillpandazki/pneuma-skills | 161 | — | ~8.2k | Automated safety check: Pass | MIT | |
| Writing Guidelinessickn33/agentic-awesome-skills | 47k | 1 repos | ~438 | Automated safety check: Pass | MIT | |
| Web Design Guidelinesnexu-io/open-design | 100k | — | ~601 | Automated safety check: Pass | MIT | |
| Writing Guidelinesvercel-labs/agent-skills | 32k | 7 repos | ~309 | Automated safety check: Pass | None | |
| Brand Guidelinesalirezarezvani/claude-skills | 28k | 1 repos | ~1.3k | Automated safety check: Pass | MIT | |
| Brand Guidelinesnexu-io/open-design | 100k | — | ~346 | Automated safety check: Pass | Apache-2.0 |
sickn33/agentic-awesome-skills
Curated upstream guidance for Writing Guidelines; use when the workflow matches the user goal.
nexu-io/open-design
Review UI code for Web Interface Guidelines compliance by the Vercel engineering team.
vercel-labs/agent-skills
Review docs/prose for Writing Guidelines compliance. An agent skill from vercel-labs/agent-skills.
alirezarezvani/claude-skills
When the user wants to apply, document, or enforce brand guidelines for any product or company.
nexu-io/open-design
Apply Anthropic's official brand colors and typography to artifacts for consistent visual identity and professional design standards.
DreambigOu/ELI5
Explain any topic, code, concept, or error tailored to a specific audience's level of understanding.
pandazki/pneuma-skills
Explain something by writing it on a board. An agent skill from pandazki/pneuma-skills.
pandazki/pneuma-skills
AI-orchestrated video production on @pneuma-craft. An agent skill from pandazki/pneuma-skills.
pandazki/pneuma-skills
Pneuma Lucid Mode workspace guidelines. An agent skill from pandazki/pneuma-skills.
pandazki/pneuma-skills
Pneuma Plotwise workspace guidelines. An agent skill from pandazki/pneuma-skills.
pandazki/pneuma-skills
Pneuma Sprite Mode workspace guidelines. An agent skill from pandazki/pneuma-skills.
pandazki/pneuma-skills
Pneuma WebCraft Mode workspace guidelines with Impeccable.style design intelligence.
Pneuma ELI5 Mode workspace guidelines. An agent skill from pandazki/pneuma-skills. Pneuma Eli5 is an agent skill from pandazki/pneuma-skills. Pneuma ELI5 Mode workspace guidelines.
Pneuma Eli5 fits situations like: ANY task in this workspace: explaining a topic; A piece of code; an error message; A document to a specific audience.
Run `npx skills add pandazki/pneuma-skills --skill pneuma-eli5 -a claude-code`. Or copy the skill folder (modes/eli5/skill in pandazki/pneuma-skills) into .claude/skills/pneuma-eli5 in your project. Claude Code loads it when a task matches its description.
Run `npx skills add pandazki/pneuma-skills --skill pneuma-eli5 -a codex`. Or copy the skill folder (modes/eli5/skill in pandazki/pneuma-skills) into .agents/skills/pneuma-eli5 in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add pandazki/pneuma-skills --skill pneuma-eli5 -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/pneuma-eli5, .gemini/skills/pneuma-eli5, .github/skills/pneuma-eli5 and .opencode/skills/pneuma-eli5 in your project.
Going by SKILL.md and its folder, Pneuma Eli5 needs the command-line tools its instructions call (curl and node) and credentials named OPENROUTER_API_KEY.
SKILL.md contains no URLs. Its commands use curl, which can reach the network depending on how they are called. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.
Pneuma Eli5 is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 8.2k tokens (SKILL.md is roughly 33k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full. Its references folder adds about 6.7k tokens, read only when the agent opens those files.
Skills that share tags, products or a category with Pneuma Eli5: Writing Guidelines (sickn33/agentic-awesome-skills, 47k stars), Web Design Guidelines (nexu-io/open-design, 100k stars), Writing Guidelines (vercel-labs/agent-skills, 32k stars) and Brand Guidelines (alirezarezvani/claude-skills, 28k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
pandazki (a GitHub user) maintains it in pandazki/pneuma-skills, which has 161 GitHub stars. The repository holds 30 skills in this directory. The repository was last updated on October 9, 2026.
Source: pandazki/pneuma-skills on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.