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.
chibi-impression-room
Community@u252119f2fa58/chibi-impression-room
Community skill — not reviewed. It was shared by 秋雨微澜 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: chibi-impression-room. Run `npx -y @neta-art/neta-search-cli@latest skills use @u252119f2fa58/chibi-impression-room --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 @u252119f2fa58/chibi-impression-room
Summary
Turn a character, place or mood into a clickable 2.5D room page, researched and published as a web work.
Pick a character, or a place, era or mood. You get one room (living room, study or bedroom) in that subject's own colors, split into three zones.
8–10 objects in the room are clickable. Each opens a page with real facts, a line in the character's voice, and a note on why it sits there.
With a character, a small chibi stands in the room. Click it for a line in their voice, and switch between three distinct expressions.
Choose a room with no one in it and the room speaks instead, through short ambient lines and details about how the space is used.
Includes a background music toggle with a second track and volume. A blueprint view shows the zones, color shares and object list.
SKILL.md
# Chibi Impression Room
An impression room is a portrait of a character drawn as a place they would actually live in. The room is the biography: the furniture, the clutter, the light and the one object they would never throw away. A chibi of them stands in it, speaks a few lines in their own voice, and every important object opens a page that proves why it belongs to them.
This skill builds that page. The output is one static web work, ready to publish, not a mood board.
## Language
Reply in the user's language, whatever language this file is in — every message, the final handover included. Text the user sees in the page — Work title, labels, button names, quotes — follows the user's language; text the user typed stays as they wrote it.
## Two modes
Pick the mode before research, from what the user asked for:
| Mode | Pick it when | What changes |
|---|---|---|
| **character** (default) | The user names a character, IP or OC and wants "their room" | Needs a three-expression chibi, three bubble lines per expression and a standing spot in the room art |
| **pure room** | The user gives a place, era, theme or mood and no character — "a room with no one in it", "just the room" | No chibi, no expressions, no dialogue. The room carries the story through three `roomNotes` (ambient lines) and one narrated detail per zone. Hotspots, palette, blueprint and BGM stay |
If the user names a character but also asks for an empty room, use pure-room mode and keep the character out of the art; do not add a silent sprite. If the user says "pure room" but later wants a character, switch to character mode and add the sprite — never draw a person into the room key art.
In pure-room mode the research subject is the place, era or theme, not a person: collect 10–15 concrete facts (architecture, materials, daily use, sounds, smells, one contradiction), and write each hotspot as an object that proves how the room is used, not as an object that belongs to a named owner.
## What the user gets
One published web work containing:
1. A generated 2.5D room in the subject's palette, split into three readable zones.
2. 8–10 clickable objects, each opening an intro page with real facts, an in-voice quote and a design note.
3. A chibi sprite of the character with three switchable expressions (character mode only).
4. A dialogue bubble: click the chibi, get a line they could actually say (character mode), or a "listen to the room" line (pure-room mode).
5. A BGM toggle (plus a second track and a volume slider).
6. A blueprint mode that reveals the design logic — zones, palette percentages, object list.
## Inputs
| Item | Required | Counts as given when |
|---|---|---|
| Subject | yes | Character mode: a named character, IP or OC with a card or pasted profile. Pure-room mode: a named place, era, theme or mood. "A room" alone is not given. |
| Mode | no — default character when a character is named, room when no character is named | The user says "pure room", "no character", "just the room", or names only a place/theme |
| Language | no — default the user's language | The user writes in a language |
| Room type | no — default from research | The user names living room, study or bedroom |
If the subject is missing, ask once for the character or the place, then stop. If every required item is given, do not ask and do not wait: build through to delivery.
## Non-negotiables
- **Research before drawing.** A room built from vibes is a stock interior with a color swap. Find the facts first; at least 10 of them must end up on the page.
- **Every object carries a fact, a habit or a relationship.** Decoration with no story is cut.
- **Canon over fanon.** If a fact comes from fan consensus or your inference, say so in the design note or leave it out. Never invent a birthday, a hometown or a canonical line.
- **The character speaks like themselves.** In character mode, lines must survive the test "would they say this, in this phrasing?" Generic cheerful lines fail. In pure-room mode, the room notes are observations, not a narrator performing a personality.
- **The room must be identifiable at a glance**, with the title covered: palette, objects and light should identify the subject.
- **2.5D means layers, not a flat wallpaper.** Room base, hotspots, character and particles sit at different depths and react to the pointer.
- **No external dependencies.** No CDN fonts, no icon libraries, no remote images. The page must run from a folder.
## Workflow
### 1. Research the subject
Read `references/research.md` for the full protocol. Minimum output, written to `works/webs/<slug>/notes/research.md`:
| Field | What to collect |
|---|---|
| Identity | Character mode: name, age or era, role, world, species. Pure-room mode: place, era, function, who uses it and how |
| Canon facts | 10–15, each with a source and a confidence mark (canon / official-art detail / fan consensus / observed detail) |
| Habits | Character mode: 3 things they do without being asked. Pure-room mode: 3 routines the room is built around (where things are put down, what is never moved) |
| Motifs | 5 objects, colors or shapes that recur |
| Voice | Character mode: 3 verbal tics, 3 things they would never say. Pure-room mode: 3 sounds or overheard fragments, and what the room never says |
| Palette | 2–3 swatches taken from source art or the place's materials, with hex values |
| Contradiction | One flaw or tension that keeps it from being a mascot or a stock set |
Sources, in order: user-supplied text → official profile / official site → game or novel text → lyrics and interviews → wiki with citations → fan consensus (marked as such). If the character is an OC, ask the user for the sheet and treat it as canon.
### 2. Choose the room and the three zones
Pick one room — living room, study or bedroom — from what the research says about how the subject spends time. Do not default to a bedroom.
| Evidence | Room |
|---|---|
| Hosts people, feeds people, plays music, collects | Living room |
| Works, reads, repairs, experiments, keeps secrets | Study |
| Rests, hides, dreams, keeps private objects | Bedroom |
In pure-room mode, choose by the room's own function (a workshop, a waiting room, a kitchen at closing time) and keep it inhabited by use, not by a person: a coat on the chair is allowed, a figure is not.
Then divide the frame into three zones that tell a small story across the room: for example `rest / work / display`, or `public / craft / private`. Each zone gets a name, an English sub-label and a color. The zones drive lighting and furniture placement, and later appear in blueprint mode.
Write one sentence of rationale in `notes/research.md`: *"A study, because she teaches herself everything at night and the room had to hold her books before it held her bed."*
### 3. Art-direct the palette
Build a five-color palette from the character, not from a preset "cozy room" look. Read `references/art-direction.md` for the sampling method.
- 1 dominant character color (35–45%)
- 1 light neutral that keeps it breathable (25–30%)
- 1 material color for floor and wood (15–20%)
- 2 accents taken from small details of their design (5–10% and 3–6%)
Name each color in the character's vocabulary ("ink blue", "uniform cream", "brass fitting"), give its hex and its percentage, and write where it appears. The percentages must add up to 100. This table ships in blueprint mode.
### 4. Generate the room key art
Follow `references/art-direction.md`, section "Room key art". Core rules:
- 1280×714 or 2048×1143 (the template's reference frame is **1280×714**, aspect 1.7927). Generate large, ship webp under ~400 KB.
- One-point perspective or a gentle isometric-ish tilt, eye level 1.1–1.3 m, three walls maximum. No fisheye.
- **No people, no text, no logos, no watermark.** The chibi is a separate sprite.
- One warm key light and one character-colored accent light. Light motivates the palette.
- Furniture sits on the floor with correct contact shadows; nothing floats. Leave a clear standing spot for the chibi in the middle third, and leave wall space for at least four objects.
- Generate two candidates at most; then commit. Iterating on a weak composition wastes more than it fixes.
Check the result before building on it: count the legs, look for melted chair backs, text-like marks, duplicated windows, impossible perspective. A room with a broken chair cannot be rescued by CSS.
### 5. Generate the chibi sprite (character mode only)
Skip this step in pure-room mode. Follow `references/art-direction.md`, section "Chibi sprite". Core rules:
- One full-body chibi, front or three-quarter view, standing, arms visible, neutral weight on both feet.
- **Same pose, same canvas, same outfit, same light in all three.** Only the face and a small body cue change (eyes, brows, mouth, shoulder tilt).
- Expressions: pick three that the research supports — e.g. `bright / flustered / sleepy`, or `composed / amused / quietly hurt`. Not three shades of happy.
- Transparent background. Generate on flat white or green, then cut out with the `background-removal` skill; do not fake transparency with a colored box.
- Export all three at the same pixel size, feet touching the bottom edge, horizontal center at the same x. The template anchors at the feet; misaligned canvases make the character jump between expressions.
- Target ≤ 120 KB each; height at runtime is roughly one third of the room height.
### 6. Write the content data
Copy `template/` into `works/webs/<slug>/`, then rewrite `data.js`. The full schema is in `references/build-spec.md`. Content rules for each object:
- `name` — what a person would call it, not a category.
- `tag` — a short factual hook (a date, a measurement, a relationship).
- `body` — two short paragraphs. Paragraph one is the fact; paragraph two is why it is in this room.
- `facts` — exactly three scannable details.
- `quote` — one line in the character's voice, about this object. This is not the same as the bubble lines; it is the object talking through them.
- `design` — one sentence on placement and color logic, shown in blueprint mode.
- `box` and `focus` — [x, y, w, h] and [x, y] on the 1280×714 frame. Place boxes tightly on the object; the intro page uses the box to crop a close-up from the room image, so a loose box becomes a bad thumbnail.
Aim for 8–10 objects, spread across all three zones. At least three should be small, quiet details that reward looking closely.
### 7. Build the page
The template is complete and data-driven; you supply content, art and palette.
```
works/webs/<slug>/
├── index.html
├── style.css
├── app.js
├── data.js
├── img/room.webp
├── img/face-1.webp … face-3.webp
├── audio/bgm-1.m4a … (optional voice/)
├── check.mjs
└── notes/research.md
```
Rules while adapting:
- Set `meta.mode` to `"character"` or `"room"`. In pure-room mode leave `expressions` empty, set `character: null`, and write `roomNotes` (3–6 ambient lines).
- Set `meta.*`, `theme.*`, `zones`, `palette`, `hotspots`, `expressions`, `tracks`, `character` in `data.js`. Do not hardcode text in HTML.
- In character mode, set `character.foot` to the standing spot you left in the art, `height` to about 32–38% of 714, and `anchorX` to the sprite's horizontal center as a fraction of its width.
- In pure-room mode, the stage has no standing spot; keep the middle third readable and place the `roomNotes` control in the dock. `check.mjs` fails a room-mode build that still carries a character or has fewer than three room notes.
- BGM must not autoplay before a gesture: the splash button, or the music toggle, is the gesture. If the work has no music yet, generate two instrumental tracks that fit the room and the character (see `references/build-spec.md`).
- Keep the page inside the viewport: no page scrollbars, `100dvh`, safe-area padding.
### 8. Wire and verify interactions
The template already implements these; verify each one after your content lands. Details and edge cases are in `references/build-spec.md`.
| Interaction | Pass condition |
|---|---|
| Object click | Opens that object's intro page; deep-links to `#item-<id>`; Esc and arrows work |
| Intro page | Shows crop, tag, name, two paragraphs, three facts, quote, design note; prev/next wraps |
| Chibi click (character) | Bubble types out, stays ≤ 8 s, does not open the modal, does not repeat the previous line |
| Room voice (pure room) | Button in the dock types out one ambient line at a time, ≤ 8 s, no repeat until the set is exhausted |
| Expressions (character) | Three buttons switch sprite and line set; active state visible; thumbnail readable |
| BGM | One toggle, starts only after splash, track name shown, second track switchable, volume works, ducks while a voice line plays |
| Parallax | ≤ 5° tilt, disabled on touch and `prefers-reduced-motion` |
| Blueprint | Zones, palette bar with real percentages, object list; hovering a list row highlights the hotspot |
| Keyboard | All buttons reachable; focus visible; modal traps focus and returns it on close |
### 9. QA, then publish
Run `node check.mjs --strict` first: it fails on a palette that does not sum to 100, a missing fact triplet, fewer than three lines per expression, a hotspot outside the frame, missing assets, and leftover example content. Fix every error before you look at the page.
Then run the checklist in `references/qa.md`. At minimum:
- Screenshot at 1440×900 and 390×844; look for clipped HUD, overlapping bubble, modal overflow, unreadable labels.
- Read every quote aloud. If it sounds like marketing copy, rewrite it.
- Check every fact against `notes/research.md`; anything unmarked as fanon must be canon.
- Check the console: zero errors.
- Delete unused candidate images; compress the rest.
- Open `index.html#cover` and confirm the cover shot: no HUD, no hotspots, the character and the room only.
Publish with the web-work flow:
```bash
node /mods/neta/neta work init web works/webs/<slug> --title "<room's name>"
node /mods/neta/neta work publish web works/webs/<slug> --title "<room's name>"
```
The work title should read like the room's name, not the project name. Capture the cover from `index.html#cover` only after the page is final.
Then, as the last step — the run is not delivered until it is done — hand over with an `interaction-components` card on its own line, target `{ "type": "work", "workId": "<id>" }`, the id from the publish output (fallback: `cohubWorkId` in `works/webs/<slug>/meta.json`). Never a made-up id, a folder, or a `world-file` link to `index.html`.
## Out of scope
- Do not change world settings or delete files that existed before the run.
- Do not modify memory, character cards, installed scripts, existing Works or roleplays.
- Make only the room Work; no extra pages, maps or merchandise.
- Do not draw the character into the room key art; the chibi is a separate sprite.
- Do not use a real person's photo or a real interior brand as the room.
## Files
| Path | Use |
|---|---|
| `references/research.md` | Character research protocol, source hierarchy, canon/fanon marking |
| `references/art-direction.md` | Room and chibi prompt recipes, palette sampling, composition checks |
| `references/build-spec.md` | Data schema, coordinate system, interaction edge cases, audio, accessibility |
| `references/qa.md` | Pre-publish checklist with pass/fail criteria |
| `template/` | Working page: `index.html`, `style.css`, `app.js`, `data.js`, `check.mjs`, asset slots, research skeleton |
## Failure modes to avoid
- **Color-swapped stock room.** If the room could belong to anyone with the same accent color, go back to step 1.
- **Museum, not a home.** Perfectly arranged objects read as a product shot. Add evidence of use: a mug ring, a stacked book, a coat over a chair.
- **A wiki page with furniture.** Facts must be attached to objects, not dumped in the intro text.
- **Three happy faces.** In character mode, expressions must be emotionally distinct and defensible from canon.
- **A mute room.** No BGM, no lines, or lines that could belong to any character.
- **A character in a pure room.** If the user asked for no character, a sprite, a silhouette at the window or a pair of shoes with someone implied is still a character; cut it.
- **A flat image with hotspots.** If parallax, contact shadows and foreground particles are missing, it is not 2.5D.
- **A modal that is just a bigger caption.** The crop, the quote and the design note are what make it a page.