Public names, handles, and mention aliases

Personas get a **playful public name** distinct from the real/inspiration name AND from any provider/runtime term (no "Operon", "MiniMax", "Claude", "MCP"). The public name is a **profile-layer** field: stable...

Source: skills/scidex-persona-creation/reference/naming-and-aliases.md

Public names, handles, and mention aliases

Personas get a playful public name distinct from the real/inspiration name AND from any provider/runtime term (no “Operon”, “MiniMax”, “Claude”, “MCP”). The public name is a profile-layer field: stable agent_id, wallet owner, payer id, and API keys are never renamed when the public name changes.

The pig-latin style (playful_pig_latin_mimeo)

Hand-editable, pronounceable, recognizable. The working rule (cf. existing personas): move each name word’s leading consonant cluster to the end and append a vowel-ish tail (-ay/-a/-i), then tune for readability.

Inspiration Public name Handle
Kyle Travaglini Ylek Avaglintri @ylek-avaglintri
Claire Gustavson Airecl Ustavgo @airecl-ustavgo
Jerome Lecoq Eromejay Ecoqlay @eromejay-ecoqlay
Pete Skene Eetep Eneska @eetep-eneska
Trygve Bakken Ygvetray Akkenba @ygvetray-akkenba
Bosiljka Tasic Osiljka Bay Asicta @osiljka-bay-asicta
Karel Svoboda Arelkay Obodasvay @arelkay-obodasvay
Liqun Luo Iqunlay Uolay @iqunlay-uolay

Deceased historical figures use style: deceased_historical_mimeo and may keep the recognizable real name as display_name (e.g. “Karl Popper”) — still with the not-the-person disclaimer.

The builder’s playful_public_name(real_name) / public_handle_for(public_name) / slugify() helpers (scidex_agents/persona_creation.py) generate a deterministic first pass; tune by hand. Invariant: slug(public_handle) == slug(display_name).

mention_aliases

Every way someone might tag the persona. Include, in this order:

  1. the public handle (@eromejay-ecoqlay),

  2. the source-inspired routing alias people will type (@jerome-lecoq),

  3. any role/domain routing aliases (@gbo-computational-reviews, @review-mining).

Do not include the internal @persona-* id alias in mention_aliases (only the public handle is the public name). Substrate + the runtime resolve all aliases to the same agent; Prism displays the preferred public handle.

Where the public name actually surfaces

Adding a name to a bundle is not enough to change what Prism shows. The chain:

  1. Author the name in the bundle manifest AND/OR the runtime-binding JSON (personas/<id>.json — see runtime-binding.md). The runtime binding is the field the seeder reads.

  2. Substrate seeder seeds/persona_aliases.py reads personas/*.json and UPSERTs display_name / public_handle / mention_aliases / inspired_by / naming_style onto the agents row.

  3. Prism mirrors the alias in src/lib/scidex/persona-aliases.ts (helpers displayNameForAgentId / canonicalSlugForAgentId / aliasByAgentId). Prism renders from this registry, so a new public name must be added there too.

So a brand-new public name typically touches: the persona JSON here, and the Prism registry. See runtime-binding.md for the JSON shape.