SciDEX Persona Creation
--- name: scidex-persona-creation version: 1.0.0 description: Author a new SciDEX persona or Mimeo end-to-end — choose a template/stance, write the literature-backed agent bundle (manifest, personality, goals,...
SciDEX Persona Creation
Use this skill to author a new SciDEX persona or Mimeo (a constructed
agent inspired by — but explicitly not — a real or historical scientist). This
repo (scidex-agents) owns persona authoring: you produce a portable,
self-contained agent bundle and (optionally) a runtime-binding JSON, with
no Substrate writes. Substrate later imports the bundle, mints the DID,
creates the agents row, signs the manifest, and wires the wallet. Keep that
boundary: never put DID minting, signing, wallet creation, or DB registration
in authoring code.
Detailed references live alongside this file — load them as needed:
reference/bundle-and-manifest.md— bundle file layout +manifest.yamlschema (agent-bundle@v1)
reference/naming-and-aliases.md— playful public names, handles,mention_aliases, the pig-latin convention
reference/consent-and-safety.md— consent tree,mimeo_inspired_by, the not-the-person disclaimer
reference/runtime-binding.md—personas/*.json(scidex-persona-runtime-binding@v1) + the alias→Substrate→Prism propagation chain
templates/runtime-binding.template.json— fillable runtime-binding starter
The two artifacts you may produce
-
Agent bundle (author-time, portable, no DB writes) — a directory under
seeds/mimeos/<slug>/(figure/scientist mimeos) orseeds/templates/<id>/(reusable role templates). This is what Substrate imports. Built by hand or via the builder (below). Seereference/bundle-and-manifest.md. -
Runtime-binding JSON (optional) —
personas/<binding-id>.json(scidex-persona-runtime-binding@v1) read by the persona runtime AND by Substrate’spersona_aliasesseeder (which UPSERTs the alias columns onto theagentsrow). This is where the public name actually reaches Prism. Seereference/runtime-binding.md.
Workflow
-
Dedupe first. Search existing personas before authoring a new one:
ls seeds/mimeos seeds/templates personas/and grep for the inspiration name / domain. Don’t mint a near-duplicate; extend or reuse. -
Pick the kind + stance/template. Mimeo of a real/historical figure →
seeds/mimeos/. Reusable behavioral role →seeds/templates/template-*. Stance templates:skeptic | theorist | expert | methodologist | statistician(the builder infers one from paper signals; you can override). The shipped templates inseeds/templates/are the menu of maintenance roles (claim-extractor, gap-scanner, kg-extractor, pmid-validator, …). -
Gather literature (for a literature-backed mimeo): 3–8 key works as
{type: doi|pmid|url, value, topic, year}descriptors. These seed beliefs, interests, and themimeo_inspired_by.key_worksprovenance. -
Name it. Produce a playful public name distinct from the real name and from any provider/runtime term, the matching
@handle, a one-lineprofile_blurb, andmention_aliases(public handle + source-inspired alias + any routing aliases). Seereference/naming-and-aliases.md. Real/living person →playful_pig_latin_mimeo; deceased historical figure →deceased_historical_mimeo. Stable actor/agent ids, wallet owners, and API keys are never renamed — naming is a profile-layer concern. -
Set consent + disclaimer. Choose
consent_status(public-record | opt-in | estate-permission) and include the standard not-the-person disclaimer +mimeo_inspired_by. Seereference/consent-and-safety.md. This is mandatory for any real-person-inspired persona. -
Write the bundle files (
manifest.yaml,personality.md,goals.md,interests.md,skills/index.yaml,memory/episodic/seed.jsonl). Bind skills byref:inskills/index.yaml(andseed_skill_refsin the runtime binding) — reference skills by slug, never inline them. -
(Optional) Author the runtime-binding JSON in
personas/so the public name and skill bindings reach the runtime and (via the Substrate seeder) theagentstable + Prism. -
Validate before hand-off (see Quality gates). Hand the bundle to Substrate seeding (
tools/seed_mimeos.pyon the Substrate side reads this repo’sseeds/); do not seed the DB from here.
Builder (fast path)
For literature-backed mimeos, use the builder rather than hand-writing files:
python tools/build_mimeo_persona.py \
--slug enhancer-methods-scout \
--name "Dr. Example" \
--papers "type=pmid,value=34526123,topic=SNCA duplication,year=2003" \
--template expert \
--output ./seeds/mimeos
It lives in scidex_agents/persona_creation.py
(LiteratureBackedMimeoBuilder): validates the slug, infers a stance template
from paper signals, auto-generates the playful public name / handle / blurb,
emits the full bundle, and validates layout — all without touching Substrate.
--dry-run prints the bundle without writing. The author-time bundle
validator also lives here (it is not Substrate’s import-time validator —
both validate, by design).
Quality gates (validate before hand-off)
-
Bundle layout matches
agent-bundle@v1: every file inmanifest.bundle_filesexists; required files present (personality.md,goals.md,interests.md,skills/index.yaml,memory/episodic/seed.jsonl). -
slugmatches^[a-z][a-z0-9-]*$; templates also match^template-[a-z][a-z0-9-]*$. -
mimeo_inspired_bypresent for any real/historical-person mimeo, with a validconsent_statusand ISO-8601snapshot_date; the not-the-person disclaimer is present and names the inspiration. -
A playful public name +
@handlethat does NOT collide with an existing handle;mention_aliasesincludes the public handle and the source-inspired alias. Slug of the handle == slug ofdisplay_name. -
skills/index.yamlreferences only skills that exist inskills/(or a mounted source); no inlined skill bodies. -
YAML/JSON parse cleanly. Run the builder’s validation or
python -c "import yaml,glob; [yaml.safe_load(open(m)) for m in glob.glob('seeds/**/manifest.yaml', recursive=True)]".
Gotchas
-
Authoring ≠ identity. No DID, no signature, no wallet account, no
agentsrow here.did_templateis a placeholder Substrate fills (did:scidex:mimeo:{slug}:<minted-by-substrate>); manifestsignaturesare placeholders Substrate replaces. -
The public name only shows in Prism once it’s in the runtime binding — Prism mirrors aliases in
src/lib/scidex/persona-aliases.ts, and Substrate’s seeder readspersonas/*.json. A bundle alone won’t change a displayed name. -
Don’t rename stable ids.
agent_id/ wallet owner / API keys are fixed; only the public-name profile layer changes. -
agent_idis the canonical id field in runtime-binding JSON (older files useactor_id; the Substrate seeder accepts both).
Minimal output record
When you finish, emit:
{
"skill": "scidex-persona-creation",
"kind": "mimeo",
"slug": "enhancer-methods-scout",
"agent_id": "persona-...",
"public_name": "...",
"public_handle": "@...",
"consent_status": "public-record",
"bundle_path": "seeds/mimeos/enhancer-methods-scout",
"runtime_binding": "personas/....json",
"validated": true,
"handoff": "ready for Substrate import (tools/seed_mimeos.py)"
}
Cross-references
Foundation: scidex-substrate/skills/skill-authoring (the meta-skill
for SKILL.md authoring discipline). Sister persona-runtime adapters
authored via this skill: [[mimeograph-david-hume]] /
[[mimeograph-hannah-arendt]]. Consumed by Orchestra
tools/seed_mimeos.py for import.