oc-fruit-micro-landscape

Verified@sumino/oc-fruit-micro-landscape
Use it in Cohub

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

Use the skill: oc-fruit-micro-landscape. Run `npx -y @neta-art/neta-search-cli@latest skills use @sumino/oc-fruit-micro-landscape --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 @sumino/oc-fruit-micro-landscape
Summary

Turn your character into a thick-paint oil painting of their own fruit, cut open to show their world inside.

  • Picks one fruit that clearly belongs to your character, based on their canon, and explains the choice on the page.
  • The painting shows a whole fruit and a cut-open one, with your character's landmark, props and sky growing out of the flesh.
  • The look is thick oil paint with visible knife ridges on rough white paper. No people, faces or text appear in the picture.
  • It comes as a quiet gallery page: the painting, a short caption, four facts, and a click-to-enlarge view.
  • Works best for a character with a clear look, a signature place, a companion and a few distinctive objects.
SKILL.md
# OC Fruit Micro-Landscape

One character, one fruit that is unmistakably *theirs*, cut open so that their world grows out of the flesh — painted as thick impasto oil on rough white paper, then set on a quiet gallery plate that says the fruit's name and nothing else.

**Live plate:** https://neta.art/w/sumino/sweet-nightmare-park/ciely-pomegranate-plate
**Package:** `templates/` is the full working page; `references/art-direction.md` carries the fruit-choice table and the prompt recipe; `assets/demo-plate.webp` is the finished plate.

## What the builder gets

- A generated 3:4 illustration: a whole, cut-open fruit centred on white paper, its interior opening into the OC's landmark, props and sky, all built from visible paint ridges.
- A gallery plate page: warm paper room, hairline rules, the artwork with a caption and four facts (fruit, what is inside, pigment, medium), click-to-zoom lightbox.
- A published web Work and a Board card.

## When to use

- "fruit micro-landscape", "a world inside a fruit", "oil painting fruit for my OC";
- "厚涂水果微缩景观", "果壳里的世界观", "给角色选专属水果";
- a single-illustration gallery plate, quiet and print-like.

Not for: a character poster with panels or shards (use a storyboard skill); a book cover; a page with story text; anything with characters visible in the artwork.

## Hard rules

0. **Sandbox CLI.** `node /mods/neta/neta …` — `neta` is not on PATH.
1. **Read the OC first.** `atom get` the character, read `## 形象参考`, look at the cover. The fruit and every object inside come from *that* atom, never from the demo.
2. **No characters in the image.** No person, no humanoid, no anthropomorphic figure, no face. A companion (doll, cat, bird) appears only as an object — seated, faceless, still. Regenerate if a face appears.
3. **No text in the image.** No letters, number, signature, watermark or border. All words are HTML.
4. **Thick paint, visible.** The paper grain must survive in the margins; the fruit must have palette-knife ridges. A smooth digital render is a failure.
5. **3:4, complete, centred.** Nothing cropped; generous blank paper around it.
6. **The fruit is a decision, not a garnish.** It is chosen by canon (a container → pomegranate, a garden → fig) and the reasoning goes in the page's facts.
7. **One plate, no clutter.** Caption, four facts, one lightbox. Do not add a language switcher, a timeline or a second image.
8. **Ship it.** Published Work plus Board card, or it is not finished.

## Pipeline

### 0. Read the world and the OC

```bash
node /mods/neta/neta atom list --type character
node /mods/neta/neta atom get "world/characters/<Name>.md"
node /mods/neta/neta find images "<Name>"
```

Record: name, world, palette (two colours + one cool contrast), signature costume and joints/marks, one companion, one landmark, three to five props, one sky detail, and one fact that suggests a fruit.

### 1. Choose the fruit

Use [`references/art-direction.md`](references/art-direction.md) §1. Write one sentence of reasoning — it becomes the `facts` row `["Inside", …]`.

### 2. Create the page work

```bash
SLUG="<oc>-<fruit>-plate"
WORK="works/web/$SLUG"
node /mods/neta/neta work init web "$WORK" --title "<OC> · <Fruit>"
# the CLI may normalize works/web → works/webs; use the printed workDir

cp templates/index.html templates/style.css templates/app.js "$WORK"/
cp templates/content.example.js "$WORK/content.js"
mkdir -p "$WORK/assets"
```

### 3. Generate the artwork

```bash
NETA_DEFAULT_IMAGE_MODEL=gpt-image-2 node /mods/neta/neta generate image \
  --work-title "<OC> · <Fruit>" \
  --param size=1728x2304 --param quality=high --param output_format=png \
  --image "world/media/studio/characters/<Name>.png" \
  --prompt "$(cat /tmp/<slug>.txt)"

curl -sL "<mediaUrl>" -o /tmp/<slug>.png
convert /tmp/<slug>.png -resize 1200x -quality 87 "$WORK/assets/fruit.webp"
convert /tmp/<slug>.png -crop 700x700+<x>+<y> +repage -resize 900x -quality 82 "$WORK/assets/detail.webp"
```

The illustration is an ingredient. Place the **page**, never the raw image.

### 4. Fill `content.js`

Replace every `«…»` token: world, oc, title, subtitle, number, note, accent, art, detail, facts. Keep the subtitle to one clause — it is a caption, not a synopsis.

### 5. QA

Follow [`references/qa.md`](references/qa.md): 1440×950 and 390×844, no image taller than the fold, no horizontal scroll, lightbox opens and closes.

### 6. Publish and place

```bash
node /mods/neta/neta work publish web "$WORK"
node /mods/neta/.agents/skills/board-ops/scripts/place.mjs \
  --title "<OC> · <Fruit>" --work "$WORK"
```

`slug already exists` means a share card owns that slug — rename the directory to `<oc>-<fruit>-plate` and publish again; remove the stale board card afterwards. See [`references/publishing.md`](references/publishing.md).

## Files

```
<work>/
  index.html   # room, plate, caption, facts rail, lightbox
  style.css    # paper room, plate shadow, facts, RTL-free one-language copy
  app.js       # fills the plate from content.js, lightbox, entrance
  content.js   # the only per-OC file
  assets/fruit.webp   assets/detail.webp
```

## Pitfalls

- **A smooth illustration** — repeat "thick impasto, palette-knife ridges, bare paper grain" at the end of the prompt.
- **A collage** — if the interior looks pasted on, add "grows out of the flesh and merges with the terrain shaped by the paint strokes".
- **Generic gothic** — pumpkins, bats or castles that are not in the atom. Name only canon props.
- **A figure in the scene** — a companion doll with a face reads as a second character. Ask for "faceless rag doll, an object on the chair".
- **Plate taller than the screen** — the CSS image rule is `height: min(70vh, 58vw)`; a `width:100%` image will push everything below the fold.
- **Slug collision** — the image's own share card may already own `<oc>-<fruit>`; a plate slug needs its own suffix.

## Demo

`Ciely` from *Sweet Nightmare Park*: a ball-jointed doll who keeps her soul in the blonde doll she carries. Her fruit is a **pomegranate** — sealed chambers of seeds, a crown calyx — cut open onto her Stitched Hospital: crooked tower, tea table with a faceless doll, spiral stair, violet doorway, crescent moon, syringe flowers and red roses; rose, lilac and cold blue swept across textured white paper. The plate is `NO. 01` of an OC Fruit Atlas.