Haikei
Haikei (haikei.app) is a browser-based design tool, not a library. There is
no npm package, no API, no CLI, and the generator algorithms are closed source.
A human opens the app, tweaks parameters, rolls the dice until a composition
looks right, and downloads an SVG or PNG. Free, no signup.
That shapes what this skill does. It cannot generate the asset. It owns the two
things around that step:
- Selection — which generator, what parameters, what canvas size, and a
pre-configured URL to hand the human.
- Integration — everything after the download. This is where the real
engineering is, and where most people get it wrong.
Workflow
When a task needs a generated background:
- Check whether Haikei is the right tool at all (see "When not to use"
below). A CSS gradient or a Tailwind class is often the correct answer and
costs nothing.
- Pick the generator from the table in
references/generators.md, along
with recommended parameters and canvas size for the target surface.
- Hand the human a direct URL. Every generator is addressable:
https://app.haikei.app?generator=<slug> — e.g.
https://app.haikei.app?generator=layered-waves. State the brand hex codes
to paste in and the canvas size to set, so the trip to the browser is a
30-second parameter entry rather than an exploration.
- Stop and wait. Don't scaffold code that imports an asset that doesn't
exist yet. Say plainly what file you expect back and where to put it
(e.g.
public/backgrounds/hero-waves.svg).
- On receipt, integrate properly — read
references/integration.md and
apply it. Never drop a raw Haikei export straight into a repo; every export
needs at minimum optimization and a responsive fix.
Generator quick reference
Full parameters and use-case mapping in references/generators.md.
| Need |
Generator slug |
| Section divider, hero bottom edge |
wave, layered-waves |
| Full-canvas soft background |
stacked-waves, stacked-steps |
| Organic single shape (behind a card, avatar mask) |
blob |
| Corner-anchored scene background |
blob-scene |
| Modern soft gradient wash |
blurry-gradient |
| Crumpled-paper / faceted texture |
low-poly-grid |
| Angular divider (sharper than waves) |
layered-peaks, stacked-peaks |
| Stepped / stylized banding |
layered-steps |
| Pattern or confetti field |
circle-scatter, blob-scatter, polygon-scatter, symbol-scatter |
When not to use Haikei
Reach for something cheaper when:
- A CSS gradient does the job.
bg-gradient-to-br from-blue-600 to-indigo-900
is 0 bytes of asset, themeable, and animatable. Haikei's blurry-gradient
earns its place only when you need the organic multi-blob wash that CSS can't
express.
- The shape must respond to data or state. Haikei output is static. Anything
that animates, morphs, or reflects live values should be authored in code.
- You need many variants programmatically. Each export is a manual browser
trip. Ten covers means ten trips.
- It's a dense work surface. Dashboards, tables, and review queues do not
need decorative backgrounds; they compete with the data.
- Brand consistency matters more than novelty. The dice button produces a
different composition each roll. If the same visual must appear across many
surfaces, export once and reuse the file — don't re-roll per page.
Good habitats: marketing pages, App Store listings, blog covers, social cards,
slide decks, login/auth screens, empty states, 404s.
Non-negotiables on integration
These are the failures that show up every time. Details and code in
references/integration.md.
- Haikei exports a fixed
width/height plus a viewBox. Dropped into a
responsive container it will letterbox or crop wrongly. Strip the fixed
dimensions and set preserveAspectRatio deliberately — none to stretch
full-bleed, xMidYMid slice to cover-crop.
- Always run SVGO. Raw exports carry editor metadata and over-precise path
coordinates.
low-poly-grid and the scatter generators in particular produce
large files — hundreds of paths is normal, and unoptimized they can exceed
100KB.
- Colors are hardcoded fills and gradient stops, not
currentColor. Dark
mode needs either a second export or a scripted color swap — decide which
before shipping.
- Decorative backgrounds need
aria-hidden="true" and
pointer-events-none. They are decoration, not content.
- Choose the delivery method deliberately — CSS
background-image, <img>,
or inlined component. They differ in caching, themeability, and bundle cost;
the tradeoff table is in the integration reference.
- Never claim a Haikei asset exists until the human confirms the download.
This skill cannot create the file.
1---2name: haikei3description: Generate and integrate SVG background assets using Haikei (haikei.app) — waves, blobs, blurry gradients, low-poly grids, peaks, steps, and scatter patterns for hero sections, section dividers, slide decks, blog covers, social cards, and empty states. Use this whenever a design needs a generated background, an organic shape, a section divider, a wave/blob/gradient visual, a blog or social cover image, or when a page or slide looks flat and needs a background asset. Also use it whenever a Haikei SVG has already been downloaded and needs to be optimized, made responsive, wired into React/Next.js, or adapted for dark mode — the integration gotchas are non-obvious and documented in references/integration.md.4---56# Haikei78Haikei (haikei.app) is a **browser-based design tool**, not a library. There is9no npm package, no API, no CLI, and the generator algorithms are closed source.10A human opens the app, tweaks parameters, rolls the dice until a composition11looks right, and downloads an SVG or PNG. Free, no signup.1213That shapes what this skill does. It cannot generate the asset. It owns the two14things around that step:15161. **Selection** — which generator, what parameters, what canvas size, and a17 pre-configured URL to hand the human.182. **Integration** — everything after the download. This is where the real19 engineering is, and where most people get it wrong.2021## Workflow2223When a task needs a generated background:24251. **Check whether Haikei is the right tool at all** (see "When not to use"26 below). A CSS gradient or a Tailwind class is often the correct answer and27 costs nothing.282. **Pick the generator** from the table in `references/generators.md`, along29 with recommended parameters and canvas size for the target surface.303. **Hand the human a direct URL.** Every generator is addressable:31 `https://app.haikei.app?generator=<slug>` — e.g.32 `https://app.haikei.app?generator=layered-waves`. State the brand hex codes33 to paste in and the canvas size to set, so the trip to the browser is a34 30-second parameter entry rather than an exploration.354. **Stop and wait.** Don't scaffold code that imports an asset that doesn't36 exist yet. Say plainly what file you expect back and where to put it37 (e.g. `public/backgrounds/hero-waves.svg`).385. **On receipt, integrate properly** — read `references/integration.md` and39 apply it. Never drop a raw Haikei export straight into a repo; every export40 needs at minimum optimization and a responsive fix.4142## Generator quick reference4344Full parameters and use-case mapping in `references/generators.md`.4546| Need | Generator slug |47|---|---|48| Section divider, hero bottom edge | `wave`, `layered-waves` |49| Full-canvas soft background | `stacked-waves`, `stacked-steps` |50| Organic single shape (behind a card, avatar mask) | `blob` |51| Corner-anchored scene background | `blob-scene` |52| Modern soft gradient wash | `blurry-gradient` |53| Crumpled-paper / faceted texture | `low-poly-grid` |54| Angular divider (sharper than waves) | `layered-peaks`, `stacked-peaks` |55| Stepped / stylized banding | `layered-steps` |56| Pattern or confetti field | `circle-scatter`, `blob-scatter`, `polygon-scatter`, `symbol-scatter` |5758## When not to use Haikei5960Reach for something cheaper when:6162- **A CSS gradient does the job.** `bg-gradient-to-br from-blue-600 to-indigo-900`63 is 0 bytes of asset, themeable, and animatable. Haikei's `blurry-gradient`64 earns its place only when you need the organic multi-blob wash that CSS can't65 express.66- **The shape must respond to data or state.** Haikei output is static. Anything67 that animates, morphs, or reflects live values should be authored in code.68- **You need many variants programmatically.** Each export is a manual browser69 trip. Ten covers means ten trips.70- **It's a dense work surface.** Dashboards, tables, and review queues do not71 need decorative backgrounds; they compete with the data.72- **Brand consistency matters more than novelty.** The dice button produces a73 *different* composition each roll. If the same visual must appear across many74 surfaces, export once and reuse the file — don't re-roll per page.7576Good habitats: marketing pages, App Store listings, blog covers, social cards,77slide decks, login/auth screens, empty states, 404s.7879## Non-negotiables on integration8081These are the failures that show up every time. Details and code in82`references/integration.md`.8384- **Haikei exports a fixed `width`/`height` plus a `viewBox`.** Dropped into a85 responsive container it will letterbox or crop wrongly. Strip the fixed86 dimensions and set `preserveAspectRatio` deliberately — `none` to stretch87 full-bleed, `xMidYMid slice` to cover-crop.88- **Always run SVGO.** Raw exports carry editor metadata and over-precise path89 coordinates. `low-poly-grid` and the scatter generators in particular produce90 large files — hundreds of paths is normal, and unoptimized they can exceed91 100KB.92- **Colors are hardcoded fills and gradient stops**, not `currentColor`. Dark93 mode needs either a second export or a scripted color swap — decide which94 before shipping.95- **Decorative backgrounds need `aria-hidden="true"`** and96 `pointer-events-none`. They are decoration, not content.97- **Choose the delivery method deliberately** — CSS `background-image`, `<img>`,98 or inlined component. They differ in caching, themeability, and bundle cost;99 the tradeoff table is in the integration reference.100- **Never claim a Haikei asset exists until the human confirms the download.**101 This skill cannot create the file.