← Docs home
illo
  1. Overview
  2. How it works
  3. Looks
  4. Gallery
  5. Engine
  6. Findings
  7. Build your own
  8. Sources
Skill explainer · tmchow/illo-skill

Illo

A recurring mascot performs the idea; the look and palette are just parameters.

An agent skill for editorial illustrations. One character pack carries one of 17 looks, a palette resolves on top, and a Python engine renders through a subscription CLI, OpenRouter or the agent’s own image tool. I read the skill, ran the 121-test suite and every engine subcommand. This is a configurable house style, not a generic image generator.

v0.37.0release
0b0abeecommit, 21 Sep 2026
17looks
57community packs
8engine subcommands
121tests pass

Who it is for

Writers who want a consistent illustrated voice across posts, decks and docs.

What you get

One image per idea: an editorial scene, an explainer diagram, a mini-comic or a transparent cutout.

How It Works

The Method Is Constant; The Pack Is The Parameter

Five registers share one workflow: preflight, read and clarify, resolve the character, resolve the palette, generate reference-locked.

1

One idea per image. One image explains one idea: a key judgment, a flow, a before/after, a trap, a loop.

2

The mascot is the subject. A recurring mascot is the one performing the idea in every scene — the subject, never decoration.

3

Look travels with the pack. a character pack carries its style with it.

4

Explainers are pack-solved. A named pipeline or recipe is labeled stages inside that register — named phases in order, one connected system, pack-solved for this body, never a new look.

5

Keys are the user’s. Entering an API key is something the user does.

The Looks

Seventeen Looks, Each One File

Pick a look. The tag is the file’s own opening; How it works lists its QA checks; quotes are its STYLE line and classic default palette, checked at build time.

The Engine

Eight Subcommands And Two Helpers, All Run

scripts/illo.py is the only renderer. I ran each subcommand with a throwaway HOME so nothing touched a real config.

What I Found Running It

Well Tested; Two Rough Edges

All runs used HOME=/tmp/illohome, nice and timeout, at commit 0b0abee.

RunResultNote
pytest tests/121 passed, 37 subtestsRun in a venv on the box.
doctorexit 0No backend ready; points Grok Bot at the native path.
packs list / show57 packsFetches the community repo over the network.
generate, no backendexit 1Clear setup message. A positional prompt is rejected; --prompt or --prompt-file is required.
generate --backend grok-botrefusedCorrect: native renders are agent-side.
keyout magenta testRGBA PNGWorks; the manifest record says muse-native.
diagram_route.pyroutes correctly5 phrasings matched composition.md.
repair-hermes-assets.shall OKNothing re-downloaded.
git status after runscleannewrun writes only to /tmp/illo.

Bug keyout hard-codes its backend

The record keyout writes always says "backend": "muse-native", so a Grok Bot cutout is mislabeled in the manifest and gallery.

Bug diagram_route.py has no --help

It treats every argument as a request, so --help prints “editorial editorial default”.

Gap Agent-side paths are prose, not code

The Grok Bot and Muse native flows live in SKILL.md; the engine only refuses them and records afterward.

Cost packs list needs the network

Listing community packs fetches the remote repo on every call.

Copy Paid fallback is opt-in

--allow-paid-fallback must be set before a subscription failure can spend OpenRouter credits.

Copy Executable routing oracle

diagram_route.py parses composition.md and is tested against it, so the prose and the code cannot drift.

Build Your Own

What To Steal

  1. Separate method from parameters. Character, look and palette are swappable files; the workflow never changes.

  2. Make identity a technique. Riso is grain, offset and flat fills, not a color, so any palette still reads as the house style.

  3. Anchor sets on the first good image. Every later render references the first one that passes the quality bar.

  4. Write a manifest line per render. Galleries, comparisons and audits come for free.

  5. Keep keys with the user. The agent runs init only for keyless native transports.

Sources

Everything Here Is Checked

Each quote on this page is compared with its source file at build time; the build fails on any mismatch.

  1. skills/illo/SKILL.md
  2. skills/illo/references/visual-style.md
  3. skills/illo/scripts/illo.py
  4. skills/illo/scripts/diagram_route.py
  5. skills/illo/references/composition.md
  6. github.com/tmchow/illo-skill