character-sense-transfer

Community@xinsong854/character-sense-transfer
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: character-sense-transfer. Run `npx -y @neta-art/neta-search-cli@latest skills use @xinsong854/character-sense-transfer --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/character-sense-transfer
Summary

Turn a character into their own perfume or signature drink, with a mixing game where the character judges your blend.

  • Pick a perfume, a signature drink, or both. Both come on one page with a switch between two separate layouts.
  • The perfume lists top, heart and base notes with exact amounts, plus three short lines on how it smells at first, two hours later, and by day's end.
  • The drink shows its glass, colored layers, garnish, serving temperature, and a punny name. Bottle and glass are drawn from the recipe's own colors.
  • Every ingredient comes with a reason tied to the character, like 'keeps a music box → cedar and cold metal', so you can argue with the choices.
  • Play the blending game: pick ingredients into a tray and get scored, with the character reacting in their own voice. Reveal the full recipe afterward.
SKILL.md
# Character Sense Transfer

One engine, two senses: read a character's material (traits, era, element, temperament, story), map each to scent/drink materials through an explicit transfer table, and deliver either a **perfume dossier** (families, top/heart/base pyramid, materials with proportions, a blending mini-interaction) or a **signature drink** (glass, layers, recipe steps, garnish) — or both. The output is an interactive web Work: read the dossier, and in blending mode actually mix the formula and get scored.

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, note/material 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 translated into a *formula of a sense* — perfume or drink — as a card, dossier or blending toy.

Not for a character song (character-theme-song), not for food photography or recipe illustration as images alone, not for a whole café/shop management game. Say what this skill makes and stop.

## Inputs

| Item | Required | Counts as given when |
|---|---|---|
| Character | yes | the user names a character; "the whole cast" counts only as an explicit archive request and is a long run — confirm count once |
| Output form | no — default `perfume` | `perfume` / `drink` / `both`; the user names one, or the run infers from wording ("闻起来像什么" → perfume; "喝什么" → drink) |
| Canon scents | no — default none | the character has an official scent/taste line (from material or research); it becomes the target formula the blending mode scores against |

If the character is missing: ask once, then stop. Otherwise build through to delivery.

## How it works (what the agent must keep)

- **The transfer table is the skill's core** (`references/transfer-table.md`): trait/element/era/temperament → materials, with *reasons*. Never invent a note without a line back to the material ("she keeps a music box" → music box → cedar + cold metal accord). The dossier shows each mapping as `trait → material (why)`, so the reader can argue with it — that honesty is the charm.
- **Perfume structure**: families (citrus/floral/woody/amber/fougère…), the pyramid (top: volatile first impression; heart: the character's core; base: what stays — their story weight), proportions in parts that sum to 100, plus wear notes (how it opens / 2 hours later / end of day as three short lines mirroring the character's arc).
- **Drink structure**: glass type, layers bottom-up with densities and colors, base/acid/sweet/bitter balance, garnish, serve temperature, and a name with a one-line pun on the character.
- **Blending mode** (both forms): the visitor picks materials from the organ into a tray; the engine scores the mix against the target formula (family match + note overlap + proportion error) and returns a verdict line in-character; a "reveal formula" button shows the full dossier. Scoring rules in `references/blending.md`.
- **No generation inside the run for the card art**: bottle/glass are drawn procedurally (canvas/SVG with fills for liquids and layered colors from the formula itself); portraits, if any, come from world media.

## Steps

1. Read the character: `node /mods/neta/neta atom list` → `atom get <id>`; extract traits, era, element, temperament, key story images, any canon scent/taste line. → `$RUN/brief.md`
2. Build the formula: `$RUN/formula.json` per `references/transfer-table.md` (families, pyramid or layers, materials with parts and reasons, wear/serve notes, name). Run `node scripts/formula-check.mjs $RUN/formula.json --form perfume|drink` — validates proportions sum, family names, reason coverage. Exit non-zero on failure.
3. Build the Work from `templates/` into `$RUN/site/`: dossier view + blending mode.
4. Check: `node scripts/check.mjs $RUN/site` — formula loads, scoring present, procedural art (no missing image deps), locale; writes `$RUN/qa.json`.
5. Register and publish: see Deliver.

`$RUN` = `_runs/character-sense-transfer/<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 → `node /mods/neta/neta work publish web works/webs/<slug> --title "<same>"`.
- Core content to verify before handover: the dossier reads with trait→material reasons; blending scores a correct mix high and a wrong one low; bottle/glass render from the formula colors.

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: the formula's name and its three keynote materials.

## 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.
- One character per run (a cast archive is an explicit, confirmed long run).
- No real brand names, no real commercial formulas, no health/medical claims; drink form is fictional mixing, not bartending advice.

## When to stop

- Missing character: ask once, then stop.
- The material is empty of traits: say what is missing and stop — a formula with no trail back to the character is just a random perfume.
- Canon scent exists but contradicts the material: prefer the canon line, note the tension in the dossier.

## Gotchas

- The pyramid's *base* is the character's story weight, not "whatever smells long-lasting" — a base note that ignores the character's history is the most common failure.
- Proportions in integer parts summing to 100; decimals read as fake precision.
- Layer colors in the drink come from the materials' own colors with alpha by density — do not hand-pick pretty gradients that ignore the formula.
- Blending verdicts must be in the character's voice, not "Great job!" — the character judges their own scent.
- If research is needed for a canon scent, use the world's own research notes only; do not scrape live sites inside the run.
- Both forms on one page: a form switcher, two distinct layouts — never one mushed card.