paper-sculpture-portrait

Community@sumino/paper-sculpture-portrait
Community skill — not reviewed. It was shared by Jagulus and has not been checked by Neta. Read SKILL.md below before letting an agent use it.
Use it in Cohub

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

Use the skill: paper-sculpture-portrait. Run `npx -y @neta-art/neta-search-cli@latest skills use @sumino/paper-sculpture-portrait --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.
Install from a terminal
npx -y @neta-art/neta-search-cli@latest skills use @sumino/paper-sculpture-portrait
Summary

Turn your character into a handmade layered-paper sculpture, photographed like a real object on a warm orange desk.

  • You get one tall picture of your character as a full-body figure built from dozens of stacked, cut and torn printed paper sheets.
  • Printed text shows through the paper, and torn edges have fuzzy fibres, so it feels like a figure born from books.
  • Scraps of torn paper swirl past and merge into the figure, with two or more paper-cut props that belong only to your character.
  • Choose a pale cream look (default), a warm kraft-paper look, or a dark ink look; you can describe the pose you want.
  • Works best for a character with a clear silhouette and signature objects, caught in a dramatic action as if hit by a gust of wind.
SKILL.md
# Paper Sculpture Portrait

A character rebuilt as a physical object: dozens of printed pages cut, torn and stacked into a full-body figure, standing on a warm orange desk under a soft yellow lamp. You see the print inside the paper, the fibre on every torn edge, the shadow each sheet drops on the one behind it. The camera sees a sculpture, not a render.

**Demo:** `assets/demo-plate.webp` — a finished plate in the default pale tone.

## What the user gets

- One vertical plate (default 1024×1536) of the character as a layered paper sculpture.
- A swirl of torn printed-paper debris streaming past the body, merging at the silhouette.
- Two or more paper-cut props that belong to the character, placed to build depth.
- Warm side light, warm orange desk, soft shadows — a "world born from books".

## When to use

- "paper sculpture of my character", "paper diorama", "layered paper art", "handmade paper figure";
- 纸雕、纸雕人物、纸艺立体、纸片堆叠人物、纸雕摆件;
- a character who should read as a crafted object rather than an illustration.

Do not use for:

- a pop-up book with pages and flaps — that is a different mechanism;
- a flat paper collage on a wall — this one is a photographed 3D object;
- a normal painted or rendered character portrait — plain `generate`.

Out of scope: do not change world settings for this plate, and do not delete or overwrite existing files — every run writes a new Work.

## Hard rules

0. **Sandbox CLI path.** Every `neta` command is `node /mods/neta/neta …`.
1. **It must read as paper.** Named materials: stacked printed sheets, torn edges, fibre fringes, hollow cuts, contact shadows. Explicitly forbid wood, bark, clay, plastic sheen and smooth 3D-render surfaces.
2. **The print has to be visible.** The text inside the paper is what makes it a book-world object, not just a texture.
3. **Pale by default.** Unbleached white and nude-cream; the character's signature colour survives only as a few small paper accents. A plate that drifts ochre reads as carved wood.
4. **One side light, one desk.** Warm yellow light from one side, warm orange paper desktop, background sinking into soft warm shadow. No studio white, no dramatic rim light.
5. **Dynamic pose.** A specific action with the body twisted and cloth or hair pulled by a gust — a resting figure wastes the debris.
6. **Debris merges.** The torn-paper swirl must cross the silhouette so figure and paper read as one object.
7. **Props prove the character.** Two or more paper-cut objects that only this character would own, arranged in front of and behind the body.
8. **Deliver it.** Board card plus a handover link card pointing at the Work.

## Inputs and when to ask

| Input | Counts as given when |
|---|---|
| the character | a name with a cover image, or an attached character card |
| the pose | the user describes one; otherwise pick the character's most characteristic action and say so |
| the tone | the user names one; otherwise `pale` |

Character and pose known → build straight through. Character unknown → ask once, then stop.

## Pipeline

### 0. Read the character

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

Take 4+ identifying features (silhouette, head shape, costume, signature objects) and one prop set from the character's own setting — chains, tools, symbols, companions.

### 1. Write the brief

Copy `templates/brief.example.json` and fill `subject`, `pose`, `debris`, `props` (2+), `tone` (`pale` | `warm` | `ink`).

```bash
node scripts/build-prompt.mjs /tmp/<slug>.json > /tmp/<slug>-paper.txt
```

The script refuses a thin subject, a vague pose, missing debris, or fewer than two props. `--tone` overrides the brief, so one skill covers pale, warm-kraft and cold-ink plates without a second skill.

### 2. Generate

```bash
NETA_DEFAULT_IMAGE_MODEL=gpt-image-2 node /mods/neta/neta generate image \
  --param size=1024x1536 --param quality=high \
  --image "world/media/studio/characters/<Name>.png" \
  --work-title "<Name> · Paper Sculpture" \
  --prompt "$(cat /tmp/<slug>-paper.txt)"
```

- `gpt-image-2` takes reference images and holds the layered-paper texture best.
- Working sizes: `1024x1536`, `1536x1024`, `1024x1024`. Wide or unusual sizes return HTTP 404 `Invalid URL` even though the declaration allows a 512–3840 range.

### 3. Judge it (no numeric gate — look)

Open the file. The full list is in `references/qa.md`; the four that decide a rework:

| Question | Fail looks like |
|---|---|
| Is it paper? | wood grain, bark ridges, clay smoothness, plastic specular |
| Is the print visible? | blank paper everywhere, texture without letters |
| Is it pale? | ochre, tan, amber-brown body; reads as carved wood |
| Does the debris merge? | paper sprinkled beside the figure, not crossing the silhouette |

One rework is allowed, into a **new** Work so both versions survive:

```bash
node /mods/neta/neta generate image … --work-title "<Name> · Paper Sculpture v2" --prompt "$(cat /tmp/<slug>-paper-v2.txt)"
```

Then deliver the better one and name what is still off.

### 4. Failures and fallbacks

| Symptom | Cause | Do this |
|---|---|---|
| HTTP 500 `unexpected EOF` | upstream hiccup | retry once into the same card: `--target-work <workId>` |
| HTTP 404 `Invalid URL` | unsupported size | use 1024×1536 and retry |
| HTTP 400 "copyright restrictions" | a licensed character | do not rephrase or retry — offer the composite route in `references/qa.md` |
| Tan / wooden plate | warm light plus warm paper | rework with `--tone pale` and the explicit "not wood, not bark, sheet edges readable" clause |
| Sculpture looks like a 3D render | "realistic" won the prompt | forbid smooth surfaces and specular again; add "matte, fibrous, visible layer thickness" |
| Identity lost | reference not passed, or too small in frame | pass `--image`, and state the silhouette features in the first line of the prompt |

### 5. Place and hand over

```bash
node /mods/neta/.agents/skills/board-ops/scripts/place.mjs \
  --title "<Name> · Paper Sculpture" --work <work.path> [--work <v2 work.path>]
```

## Deliver

One image Work (plus its alternate, if a rework happened) and a Board card.

1. Place the card so the plate is findable on the canvas.
2. Give each Work a handover line of its own with an interaction-components **link** card whose target is `{ "type": "work", "workId": <id from the generate output> }` — never a bare path, never only an inline image.
3. Say which version is the main one and why, name anything that drifted (pose, tone, a prop that vanished), then close with next-steps options.

Reply in the user's language; text the user sees in the deliverable follows the user's language, while the prompt stays English.

## Files

```
scripts/build-prompt.mjs      # brief JSON → prompt; tone parameter; refuses thin briefs
templates/brief.example.json  # generic example, all placeholders present
references/qa.md              # full checklist, calibration notes, licensed-character route
assets/demo-plate.webp        # finished plate in the default pale tone
```

## Pitfalls

- **Wood, not paper.** The single most common drift: warm light plus dense texture reads as bark. Say "flat cut sheets with crisp torn silhouettes" and forbid wood by name.
- **Blank paper.** Without "printed text visible in the fibres" the sculpture comes back clean and loses the book-world idea.
- **Colour creep.** A vivid character pulls the palette back to its own colours; confine the signature colour to "a few small paper accents" or the pale brief is gone.
- **A seated, static figure.** Order a gust: cloth and hair pulled sideways is what makes the debris believable.
- **Props floating.** Say "layered occlusion in front of and behind the body", or they land in the foreground like stickers.