Core identity model
SourceUuidis the stable source identity. Builtins use00000000-0000-4b11-8111-000000000001; conventional project-local.rkat/skillsuses00000000-0000-4b11-8111-000000000002.SkillNameis a lowercase dash-separated slug ([a-z0-9-], no leading/trailing dash, no--).SkillKey { source_uuid, skill_name }is the canonical skill identity across runtime, RPC, REST, SDK, CLI, and tool surfaces.SkillRefis the wire wrapper for per-turn refs. It currently has one tagged form:
preload_skills carries plain SkillKey objects; skill_refs carries tagged SkillRef objects. Legacy string refs are rejected.
Source Identity
Each source has aSourceIdentityRecord:
source_uuiddisplay_nametransport_kind:embedded,filesystem,git,http, orstdiofingerprintstatus:active,disabled, orretired
SkillKeyRemap entries where the event needs per-skill coverage.
Shadowing is keyed by the full SkillKey, not by skill_name alone. Two sources can both contain email-extractor; they are distinct skills unless their source_uuid is also the same.
Source Transports
Companion Skill Convention
Meerkat-owned nontrivial agent-facing tool families use embedded companion skills as their operating manuals. A companion skill is a normal skill:- source: embedded builtin source
- identity: normal
SkillKey { source_uuid, skill_name } - gating:
requires_capabilities - activation:
preload_skills,skill_refs, or an explicitly policy-enabledload_skilltool
Activation paths
- Preload at session creation:
preload_skills: SkillKey[]; content is resolved into the system prompt before the first turn. - First-turn or per-turn injection:
skill_refs: SkillRef[]; content is injected for that turn. - CLI preload convenience:
rkat run --skill <skill-name>materializes a builtin-source key from a bare slug. It does not currently address a local filesystem source discovered from a path.
Discovery tools
Agent-facing discovery tools use typed key fields:
These five tools are default-disabled in
SkillToolSet. A custom
BuiltinToolConfig must explicitly enable them. Current factory-built CLI,
REST, and JSON-RPC sessions do not do so, and a later ToolScope allow-list
cannot make an uncomposed tool callable.
Rendering
Flat inventory renders full key IDs:source_uuid and currently instructs the agent to
use browse_skills and load_skill. Those names are usable only when the
embedding explicitly enables the tool implementations; otherwise use public
introspection and typed activation. The default injection limit is 32 KiB and
is configurable. Injection blocks render the same two typed attributes:
Public Introspection
Current public introspection surfaces:
List responses include
key, source, is_active, and optional shadowed_by provenance.
Inspect responses include the same typed identity and provenance plus body.
