side-sprite-creatures

Officialneta-search/side-sprite-creatures
Use it in Cohub

Paste this into your agent's chat — it fetches the skill and follows it.

Use the skill: side-sprite-creatures. Run `npx -y @neta-art/neta-search-cli@latest skills use neta-search/side-sprite-creatures --via site` and follow what it prints. Read its complete output, redirecting it to a temporary file first if necessary, and resolve relative paths from the skill directory it prints.
Use in Neta Studio Open it in Neta Studio and see what people made with it.
Install from a terminal
npx -y @neta-art/neta-search-cli@latest skills use neta-search/side-sprite-creatures
Summary

Turn one creature into a playable, animated sprite set from a single generated image.

  • Works for four-legged creatures, flying creatures, and fish or water creatures, each with five matching actions.
  • You get a playable page: walkers run and jump, flyers and swimmers roam freely, and it idles as a desk pet when untouched.
  • You also get a ready-to-use sprite pack with transparent strips, single frames, and GIFs for dropping into a game.
  • Works best with a creature that already has a clear look: body shape, coat or feather or scale details, and colouring.
  • Comes with ground, sky, or water backdrops (grass, sand, snow, dusk, night, sea, pond) to match the page's mood.
SKILL.md
# Side sprite creatures

One creature, five matching actions from **one** generated sheet (≈30–60 s, one image), 8 frames each, one
shared scale. The body decides the actions and how the page plays:

| `--body` | for | actions (rows) | page `--mode` | `--ground` |
|---|---|---|---|---|
| `quadruped` | dog, cat, fox, wolf, horse, deer, lion, hippogriff, a walking dragon | idle walk run jump hit | `ground` — walks a side-view ground | `grass` (default) `stone` `sand` `snow` `wood` `night` |
| `flying` | bird, owl, phoenix, flying dragon, bat, moth / butterfly-like | hover fly glide takeoff landing | `fly` — roams a sky | `sky` (default) `dusk` `night` |
| `aquatic` | fish, koi, goldfish, shark, dolphin, eel-like | swim dive idle dash rise | `swim` — roams a water tank | `sea` (default) `pond` `night` |

1. **A playable page (web Work)** — the hand-over card. Walkers: ← → (Shift runs), ↑ jumps. Flyers / swimmers
   move freely with the arrow keys (Shift = glide / dash) and pick the right action from the motion (rising,
   diving, dashing); left alone they wander like a desk pet; tapping them startles them, tapping elsewhere
   sends them there. The action bar / number keys play any action.
2. **The sprite pack** (`assets.zip`, also on the page): `spritesheet.png` (one row per action) + `actions.json`,
   `<action>.png` strips, single frames, GIFs, `README.txt`. Flyers / swimmers animate in place (the game moves them).

## 0. Settle the creature (no generation before this)

- **Which creature** — one named or described creature. One in this world counts: `node /mods/neta/neta atom
  list --query <name>` (creatures may be `creature`, `character` or `object` atoms; try the user's wording and
  the original name), then `atom get <id>`. Cover = first `media` entry, relative to the atom file:
  `world/creature/X.md` + `../media/studio/creature/X.jpeg` → `world/media/studio/creature/X.jpeg`.
  Not named → **stop and ask** in one short round (a few of this world's creatures + a write-in). Never pick it.
- **Which body** — from the creature: four legs on the ground → `quadruped`; lives in the air → `flying` (a winged
  horse or griffin people ride → `quadruped`, unless the user wants it flying); lives in water → `aquatic`.
  Not one of these (a person or other two-legged character → `side-sprite-actions`; a snake, jellyfish, octopus,
  insect swarm) — say this skill draws four-legged, winged and fish-like creatures; don't force it.
- **Defaults, no question** — side view facing right; the user's style, else the world's `visualStyle`
  (`neta config get`); all five actions. "Pixel art / 像素" → `--pixel`. "桌宠 / desk pet / 鱼缸" just means the
  page; nothing extra to do.

## 1. Three commands

```bash
SK=<skill-dir>          # the folder this SKILL.md is in (what `skills use` printed) — never /mods/… or .agents/skills/…
cd /workspace
node /mods/neta/neta work init web works/web/<creature-slug>-actions --title "<creature> · 动作图鉴"
REF=<data.workDir it printed>   # may be normalized to works/webs/…
bash "$SK/scripts/creature.sh" "$REF" --body <quadruped|flying|aquatic> \
  --who "<one concrete sentence: species, build, head, coat / feathers / scales, markings, colours>" \
  --style "<one sentence>" [--cover <workspace path from step 0>] [--pixel]
bash "$SK/scripts/make-page.sh" "$REF" --title "<creature> · 动作图鉴" \
  --subtitle "<style · side view · 5 actions>" --lang zh --mode <ground|fly|swim> --ground <see table> [--pixel]
node /mods/neta/neta work publish web "$REF" --thumbnail-wait 4000
```

- `creature.sh` must end with `[creature] ok`: it generates the sheet (retries once if the model returns
  nothing), slices it and writes `$REF/actions/<5 ids>/`. **Don't open frames or sheets to check them.** Only if
  it printed a `note: … touched the panel edge` line, look once at the strip it names and run `creature.sh` again
  (same arguments) only if the creature is visibly cut off. Never more than one regeneration.
- Pink / magenta creature → add `--isnet` (slower: the first use in a world installs a model, 4–9 min).
- `make-page.sh`: title / subtitle in the user's language; `--lang` = that language (zh en ja es pt ru);
  `--mode` from the table (quadruped → `ground`, flying → `fly`, aquatic → `swim`); `--ground` where it lives.
  Must print `[page] ok`. Don't edit `index.html`; leave `meta.json` to the CLI.
- `world_slug_required` on publish → follow the printed hint (slug from the world's name), retry once.

## 2. Hand over

Reply in the user's language via the `interaction-components` skill, each card a full `<interaction-json>` link
block on its own line:
1. The page: `{"type": "work", "workId": "<preview.workId from $REF/meta.json>"}` — never a made-up id, never a
   `studio-route` with a world id from `.neta/runtime.json`.
2. The pack: `{"type": "world-file", "path": "$REF/assets.zip"}`.

In two or three lines: the creature, the five actions (8 frames each), how to play with the page, transparent
PNGs, `spritesheet.png` = one row per action (`actions.json` / `README.txt`). The generated sheet also stays in
the world as an image Work (source material).

## Don't

- Pick the creature, or generate before it is settled.
- Generate per action — one sheet holds all five.
- Write your own prompt, slicing, scaling or packing script — `creature.sh` and `make-page.sh` are the pipeline.
- Use another image model, or run generation from inside `/tmp` or a sub-folder.