SuperAPI AI Directory

elizaos-character-builder

Agents & models

View repository

Updated 10-19 04:41

About this skill

elizaOS Character Builder

Turn a role description or existing character into a small, version-correct configuration. Personality text does not grant permissions; parsing does not prove an agent is operational.

1. Identify the contract

Read the project's AGENTS.md, manifest, lockfile, entry point, and installed @elizaos/core exports/types. Identify the destination: a core Character, a host configuration's narrower character subsection, or a published 1.x project with its own CLI and loader. Read contracts.

The researched source is a 2.x develop snapshot, not npm's latest release. Public tutorials still show older APIs. Prefer the target's installed types, schema and loader. Do not install a global CLI, upgrade packages or rewrite a loader merely to match this skill. Preserve existing IDs and unrelated work.

2. Design the persona

Infer role, audience, voice and boundaries from the request and code. Ask only about a missing decision that changes implementation. Read persona and evaluation. Start with the matching asset: core character or host subsection.

Use a short bio, useful topics, consistent style and examples for normal help, uncertainty, out-of-scope requests and actions requiring authorization. Examples illustrate behavior; they are not training runs or permission grants. Never invent real qualifications, customer facts, integrations or capabilities.

For current core TypeScript, use import type { Character } from '@elizaos/core' and satisfies Character against the installed package. Prefer the canonical bio: string[] and messageExamples: [{ examples: [...] }] form. Do not put plugins, settings or documents into a host character subsection just because those fields are valid in a core character.

3. Wire capabilities separately

Read capabilities and secrets. Reuse the host's existing, explicit composition of compatible storage, model and feature plugins. A package name in JSON does not install a dependency, register a model, ingest documents or grant connector access. Do not assume bootstrap/sql/model plugins are always implicit, or a generic settings.model selects a provider.

Keep credentials in approved host secret storage. Use names, not live values, in examples. Review document paths and sharing: current input normalization treats document strings as paths, not biography facts. Do not enable public connectors, scheduling, wallets, device access or autonomy as a side effect of persona authoring. Prompt rules are not a runtime authorization mechanism.

4. Validate in layers

Run from the installed skill directory, or use an absolute script path:

python3 scripts/check_character.py --input /path/to/character.json --target core
python3 scripts/check_character.py --input /path/to/host-character-subsection.json --target host

The helper reads JSON only, with no project-code imports, network or writes. It checks a conservative authoring subset and common credential field names. Exit 0 is preflight passed, 1 is authoring issues, 2 is unreadable/invalid JSON. It is not the elizaOS schema, a secret scanner, plugin resolution or a runtime test. Advanced content/templates/settings still need the installed authoritative schema. Review warnings even when exit 0 is returned.

Then run the project's typecheck and exact loader/schema validation. Current core validateCharacter(input) returns { success, data?, error? }, not .valid or .errors. parseCharacter(object) additionally normalizes; it does not load a filename. Do not print entire inputs or secret-bearing validation payloads. Importing arbitrary character.ts executes code; review it before execution.

5. Verify behavior and hand off

Use an isolated local agent and approved model/backend, with finite call/token budgets and no real outbound messages or wallet operations. Evaluate actual replies against the persona scenarios and authorization boundaries. A static fixture or desired answer is not live evidence. Report unavailable credentials, models and storage as untested, not passed.

Report target version/commit, character location, identity changes, plugin and environment names only, document sharing decisions, exact checks/outcomes, live versus static evidence and remaining prerequisites. Do not deploy or publish unless asked.

References