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-room-box
Community@xinsong854/oc-room-box
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: oc-room-box. Run `npx -y @neta-art/neta-search-cli@latest skills use @xinsong854/oc-room-box --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 @xinsong854/oc-room-box
Summary
Turn your character's home into a room you can walk into, explore, and read piece by piece.
Pick one of six room styles, such as a loft with stairs, a two-floor home, a suite with a bath, or a compact suitcase house.
The room is furnished with your character's own belongings, drawn from their job, habits, and treasures, or from a list you give.
Click any piece of furniture to read a short story about what it means to the character, marked as quoted or imagined.
View the room from outside like a dollhouse, or walk inside in first person. Drag furniture to rearrange it.
A slider and presets switch between day and night, and the room's lighting changes with them. Works best with a character who has a clear job, habits, and keepsakes.
SKILL.md
# OC Room Box
One character, one home: a fixed room shell (open-front dollhouse) with a furniture catalog placed for that character, orbit view + first-person walking, drag-to-rearrange furniture, click any item to read what it means to them, and a day/night cycle that relights the room. Delivered as a published web Work.
Read this file fully before generating anything or writing files. Resolve relative paths from this skill's directory.
## Language
Reply in the user's language, whatever language this file is in. This holds for every message of the run, above all the final handover; translate what the scripts print, don't paste it. Text the user sees in the deliverable — Work title, page title, buttons, labels, item names — follows the user's language; text the user typed stays as they wrote it.
## When to use / when not
Use when the user wants a character's own room/home made as an explorable page — "her bedroom", "his guest room", "their suitcase house", "a room for this OC".
Not for a full house exterior or town (build a scene Work instead), not for a pixel-art isometric room from one line of text (that is pixel-room), not for a touch toy (character-touch-lab), not for a phone interface (character-phone). Say what this skill makes and stop.
## Inputs
| Item | Required | Counts as given when |
|---|---|---|
| Character | yes | the user names a character of this world; "a room for everyone" does not count |
| Room type | no — default `loft` | one of six fixed shells (see references/room-types.md); infer from the character's station in life if unsaid |
| Personal items | no — default derived from the character material | an explicit list of belongings the user wants placed; otherwise derive from the material (occupation, habits, treasures) |
If the character is missing: ask once, in one message, before building — then stop. Otherwise build through to delivery without asking.
## How it works (what the agent must keep)
- **Room shell and furniture stay separate groups.** The shell (floor, walls, roof, loft, stairs, windows, balcony) never moves; every furniture item is a top-level group with `userData.furniture = true` and a stable grid footprint, so rearranging never corrupts the shell.
- **Six fixed room types** (single open-front box, loft with stairs, two-floor, long apartment, suite with bath, compact suitcase-house) — full dimensions and openings in `references/room-types.md`. Do not invent a seventh layout: a fixed shell is what keeps the build a day's work and the proportions believable.
- **Furniture catalog** (`references/furniture.md`): each item is built from box/cylinder primitives with the shared material palette, one group per item, placed on a 0.5-unit grid. Personal items for the character get a spotlight position; generic filler fills the rest.
- **Item stories**: clicking a furniture group opens a story card — 2–4 sentences per item, in the character's voice/world, fact from the character material (job, habits, keepsakes), labeled quoted vs imagined. Every clickable item must have a story; an item with no story is filler and must not be clickable.
- **Day/night**: a slider + presets relight the scene — sun color/intensity, hemisphere light, warm interior point light at night, background sky lerp. First-person at night keeps a bedside lamp on.
- **Two view modes**: orbit (default) and first-person walk (WASD + pointer lock on desktop, on-screen d-pad on touch; walls fade to 0.16 opacity so the walker is never boxed in; movement clamped to the room bounds).
## Steps
1. Read the character: `node /mods/neta/neta atom list` → `atom get <id>`; extract occupation, habits, treasures, era. → `$RUN/brief.md`
2. Pick the room type and item list; write `$RUN/room.json` (type, items[{id, gridPos, story}]). Run `node scripts/plan-check.mjs $RUN/room.json` — validates grid bounds, no overlapping footprints, every clickable item has a story. Exit non-zero with the offending items.
3. Build the page from `templates/` into `$RUN/site/`: shell by type, catalog items at planned positions, click → story card, day/night, walk mode.
4. Check: `node scripts/check.mjs $RUN/site` — parses, story cards wired to items, locale present; writes `$RUN/qa.json`.
5. Register and publish: see Deliver.
`$RUN` = `_runs/oc-room-box/<timestamp>/`. Never move the run folder afterwards.
## Deliver
A **web Work**.
- `node /mods/neta/neta work init web works/webs/<slug> --title "<title in the user's language>"` → build into that folder → `node /mods/neta/neta work publish web works/webs/<slug> --title "<same title>"`.
- Core content to verify before handover: every planned personal item exists and opens its story; day/night toggle relights; walk mode cannot leave the room.
Then, as the last step:
6. **Hand over with a card.** One `interaction-components` link card on its own line, target `{ "type": "work", "workId": "<id>" }`, the id from the publish output (fallback: `cohubWorkId` in `works/webs/<slug>/meta.json`). Then one or two lines on what it is.
## 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 asked for.
- No exterior architecture, no other rooms, no terrain. One room, one shell.
## When to stop
- Missing character: ask once, then stop.
- The character material is too thin to furnish a room (no occupation, no habits, nothing they own anywhere): say what is missing and stop — do not invent a full biography.
## Gotchas
- Furniture groups must be *top-level* children of the furniture group; nesting them under the shell makes the shell-walk fade click break.
- The walk-mode fade must target shell meshes only (`userData.shell`), never furniture — players expect the bed to stay solid while walls ghost.
- Grid snapping on drag (`round(p*2)/2`) is what makes rearranging feel calm; free drag feels broken.
- Pointer lock needs a click to re-engage after Esc; keep the orbit/walk toggle visible at all times.
- Shadows: one directional light with a 1024 shadow map is enough; two shadow-casting lights on mobile tanks the frame rate.
- Every story card must close on outside click and Esc; a modal that traps the walker fails the run.