Basic Cohub abilities. Most agents already have these mounted; listed here for reference.
Platform Published by the Neta team.
Official Made by the Neta team.
Verified Reviewed by the Neta team.
Community Shared by a Cohub user. Not reviewed — read SKILL.md before you use it.
oc-pumpkin-witch-showcase
Community@sumino/oc-pumpkin-witch-showcase
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: oc-pumpkin-witch-showcase. Run `npx -y @neta-art/neta-search-cli@latest skills use @sumino/oc-pumpkin-witch-showcase --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/oc-pumpkin-witch-showcase
Summary
Turn your character into a dreamy pumpkin witch, shown on a starry page that speaks your visitor's language.
Your character keeps their hair, face, eyes and other defining features, dressed in an oversized witch hat, a giant carved pumpkin skirt and little bat wings
Comes as a tall portrait plus a shareable single page with a title, a quote in the character's voice, and a caption
Tap the page anywhere and glowing starlight candy scatters across a twinkling night sky
The page greets each visitor in their own language, 13 languages covered, with a switcher if they want to change it
Works best with a character who already has a clear look and a world or personality detail to quote
SKILL.md
# OC Pumpkin Witch Showcase
One OC, one night. The character keeps every identity feature — hair, face, eyes, species traits — and puts on a sweet Halloween costume: an oversized black vintage witch hat, a huge three-dimensional pumpkin puffy skirt carved with a jack-o'-lantern grin, black ruffles, little bat wings. She reaches both open hands toward the camera from a slightly low angle, under a gradient sky of deep purple, cobalt and pale pink.
The illustration is then framed in a live web page: twinkling canvas stars, a tap-to-scatter "starlight candy" burst, and a title plate (world, name, role, a quote in the character's voice, a caption) that renders in the visitor's **system language** — 13 locales, English as the fallback, plus a manual language selector.
**Live demo:** https://neta.art/w/sumino/sweet-nightmare-park/ciely-pumpkin-witch
**Starter:** `templates/` is the working page with the Ciely demo data. `assets/demo-cover.webp` is the gallery preview; `assets/demo-art.webp` is a small copy of the demo illustration.
## What the user gets
- A vertical 2:3 Japanese anime illustration of their OC in the Pumpkin Witch costume, no text baked in.
- A single-page web Work: framed portrait + title plate on desktop, full-bleed art with the plate over the skirt hem on mobile. No scrollbars.
- 13 complete locales (en, zh-Hans, zh-Hant, ja, ko, es, fr, de, pt, it, ru, id, th), auto-detected from `navigator.languages`, `?lang=` override, remembered manual choice, English fallback for everything else.
- Both the illustration Work and the page Work on the Board, in one group.
## When to use
- "make my OC a pumpkin witch", "Halloween witch outfit", "南瓜女巫", "南瓜蓬蓬裙", "万圣节女巫帽";
- a Halloween character portrait that should also be a shareable, multi-language page;
- the user describes this costume and also asks for i18n / "根据系统语言显示".
Do not use for:
- a branching story or game — `create-avg` / `game-maker`;
- a chat roleplay — `create-roleplay`;
- a Halloween ticket, blind box or pixel room — those have their own skills;
- an illustration only, with no page — just run `generate` with `references/art-direction.md`.
## Hard rules
0. **Sandbox CLI path.** Every `neta` command is `node /mods/neta/neta …`.
1. **Read the OC first.** Use the world's real character atom, its cover and any appearance section. Never ship the Ciely demo strings for another character.
2. **Identity is sacred, costume is fixed.** Keep hairstyle, hair colour, face, eye colour and species traits (doll joints, horns, ears, tails…) exactly; replace the outfit with the Pumpkin Witch costume in `references/art-direction.md`. The user's own wording about the costume always wins.
3. **Reference image is mandatory.** Generate with a reference-capable model and pass the OC cover with `--image`. Text-only models lose the character.
4. **No text in the image.** All words are HTML so the page can switch language.
5. **At least 10 complete locales, English fallback.** The starter ships 13. The OC name (`title`) is never translated. No half-translated locale — run the validator.
6. **No page scrollbars, title never clipped.** Check desktop and phone sizes with real-time screenshots.
7. **Publish, then place both cards.** A page that is not published, or not on the Board, is not shipped.
## Pipeline
### 0. Read the OC and the world
```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>"
sed -n 1,40p world/WORLD.md
```
Record: 4–8 identity features (hair, eyes, species traits, a signature accessory such as roses), the world name, the character's role/place in the world, and one or two personality hooks for the quote (Ciely: tea parties, "a seat for one more").
### 1. Generate the illustration
Write the prompt from `references/art-direction.md` into `/tmp/<slug>-prompt.txt`, filling the identity block. Then:
```bash
node /mods/neta/neta generate image params # check the default model accepts reference images
node /mods/neta/neta generate image \
--image "world/media/studio/characters/<Name>.png" \
--param aspect_ratio=2:3 \
--work-title "<Name> · Pumpkin Witch" \
--prompt "$(cat /tmp/<slug>-prompt.txt)"
```
- Use the size/ratio key the model declares (`aspect_ratio=2:3`, or `size=1024x1536`). Never pass params the declaration does not list.
- **HTTP 429 / "upstream load is saturated"** — the task ended `GENERATION_FAILED`, so nothing was charged. Wait ~20 s and retry **once** into the same card with `--target-work <workId>`. If it fails again, switch to another reference-capable model for that one call, e.g. `NETA_DEFAULT_IMAGE_MODEL=gpt-image-2.5 … --param size=1024x1536 --param quality=high --target-work <workId>`.
- Open the returned `mediaPath` and look at it: identity features right, hat + pumpkin skirt + bat wings present, both hands reaching forward, no text. Allow one rework with `--target-work`; then tell the user honestly what is still off (e.g. "gloves came out white").
### 2. Create the page work
```bash
SLUG="<name>-pumpkin-witch"
node /mods/neta/neta work init web "works/web/$SLUG" --title "<Name> · Pumpkin Witch"
# The CLI normalizes works/web → works/webs. Use the printed workDir from now on.
WORK="works/webs/$SLUG"
SKILL=<this skill dir>
cp $SKILL/templates/index.html $SKILL/templates/style.css $SKILL/templates/app.js "$WORK"/
cp $SKILL/templates/content.example.js "$WORK/content.js"
magick "world/media/studio/works/<Name> · Pumpkin Witch.png" -resize 1024x1536 -quality 86 "$WORK/art.webp"
```
### 3. Fill `content.js`
The only per-OC file. See `references/i18n.md` for the locale list, the key table and translation rules.
```js
export const CONTENT = {
art: "art.webp", width: 1024, height: 1536, fallback: "en",
langs: {
en: { name: "English", world: "<World> · Halloween Night", title: "<Name>", role: "The Pumpkin Witch",
quote: "“…”", caption: "…", hint: "Tap anywhere to scatter starlight candy", lang: "Language", alt: "…" },
// … 12 more locales, every key filled
},
};
```
Then validate:
```bash
node $SKILL/scripts/validate-i18n.mjs "$WORK"
```
### 4. QA
Follow `references/qa.md`. At minimum serve the folder and run the real-time screenshot script:
```bash
(cd "$WORK" && python3 -m http.server 8765 >/dev/null 2>&1 &)
mkdir -p /tmp/pp && (cd /tmp/pp && npm i puppeteer-core@23 --silent)
NODE_PATH=/tmp/pp/node_modules node $SKILL/scripts/screenshot.mjs http://localhost:8765/ /tmp/qa
```
Look at the desktop and two phone screenshots yourself. Every line must print `✓`; `pl-PL` must resolve to `lang=en`.
### 5. Publish and place
```bash
node /mods/neta/neta work publish web "$WORK"
node /mods/neta/.agents/skills/board-ops/scripts/place.mjs \
--title "<Name> · Pumpkin Witch" \
--work <illustration work.path from step 1> \
--work "$WORK"
```
- `world_slug_required` → set a readable world slug once (`neta world slug set <slug>`) and re-run.
- `slug already exists` → the page address is taken (often by an earlier attempt). Init a fresh ref such as `works/web/<slug>-night`, copy the files over, publish that, and settle the abandoned stub with `neta work fail web <old-ref> --error "superseded"` so no card spins forever.
The reply hands over both Works (illustration and page), lists the locales, and says plainly what in the costume did not match the brief, if anything.
## Content model
```
$WORK/
index.html # generic shell, data-i18n slots
style.css # sky gradient, framed portrait, title plate, mobile overlay
app.js # language detection, selector, reveal, starfield + candy burst
content.js # per-OC: art path + all locale strings
art.webp # the generated illustration, 2:3, no text
```
`index.html`, `style.css` and `app.js` stay generic. Language resolution order: `?lang=` → saved manual choice → `navigator.languages` (zh-TW/HK/MO/Hant → zh-Hant, other zh → zh-Hans, `in` → `id`) → `en`.
## Pitfalls
- **Text-only model** (e.g. one whose `referenceImageInput.supported` is false) — the OC turns into a generic witch. Always use a reference-capable model.
- **Hands** — "both hands reaching toward the camera, palms open" sometimes gives one hand; check, and rework once if it matters to the user.
- **Gloves / headband** drift easily (white gloves, headband hidden by the hat brim). Say so rather than claiming a perfect match.
- **Chrome `--headless --screenshot`** freezes the fade-in halfway and makes the page look broken. Use `scripts/screenshot.mjs`.
- **Descenders** — a serif name like "Ciely" clips its `y` with `line-height: 1`; the template uses `1.12` plus a small bottom padding. Keep it.
- **Long names** — the title is `clamp(56px, 7vw, 96px)`; for names longer than ~10 characters, lower the clamp max in `style.css` and re-check.
## Publishing this skill
Maintainer note, not part of the build. See `references/publishing.md`.