Skills inject domain-specific knowledge into the agent’s context. A skill is aDocumentation Index
Fetch the complete documentation index at: https://docs.rkat.ai/llms.txt
Use this file to discover all available pages before exploring further.
SKILL.md document with YAML frontmatter, addressed at runtime by SkillKey { source_uuid, skill_name }, and included in the system prompt or per-turn context when its required capabilities are available.
This page is the task-first guide. For the low-level runtime vocabulary and identity model, see Skills reference.
What this guide is for
Use this guide when you want to:- create or configure skill sources
- preload or inject skills into sessions
- understand
SkillKeyidentity and source provenance - understand when to use
preload_skillsvsskill_refs
Skill sources
Skills are discovered from multiple source transports:- Embedded builtin skills from component crates
- Project/runtime root (
<context-root>/.rkat/skills/) when a context root is active - Configured filesystem sources
- Git repositories cloned to local cache and refreshed on TTL
- HTTP endpoints fetched from remote skill servers
- Stdio sources
The canonical identity is the pair of
source_uuid and skill_name. Two sources can both provide task-workflow without colliding because their source UUIDs differ. First-source-wins shadowing applies only when the same full SkillKey appears more than once.Git sources
Configured in skills settings (typically in realmconfig.toml). Uses the system git executable:
HTTP sources
Filesystem and stdio sources
SKILL.md format
Each skill is a markdown file with YAML frontmatter:Frontmatter fields
| Field | Type | Required | Description |
|---|---|---|---|
name | String | Yes | Canonical lowercase slug name for the skill. For filesystem skills, this must match the containing directory. |
description | String | Yes | One-line description |
requires_capabilities | Vec<String> | No (default []) | Lowercase capability IDs that must be available |
--- markers. The body (everything after the closing ---) is stored as the skill’s body field.
Capability gating
Skills are filtered by theirrequires_capabilities field before being shown or injected:
- A skill is included only if all its required capabilities are available in the current build/config.
- A skill with an empty
requires_capabilitieslist is always available.
Capability companion skills
Companion skills are the standard agent instruction-manual pattern for nontrivial Meerkat-owned tool families. They are:- embedded in the crate or tool family that owns the capability
- gated with
requires_capabilities - discoverable through the normal skills inventory
- loadable with
load_skill - not automatically preloaded
Skill identity and resolution
Every runtime skill reference resolves to:skill_refs. Some local CLI paths still accept a bare skill slug as a convenience, but API and tool surfaces should use structured keys.
Rendering
The renderer produces two output formats:- Inventory section
- Injection block
Generates an When there are more than 12 skills, collection mode is used instead:This section is injected into the system prompt via the
<available_skills> XML block listing all available skills for the system prompt:extra_sections parameter of assemble_system_prompt() in meerkat/src/prompt_assembly.rs.Size limits
MAX_INJECTION_BYTES is set to 32 KiB (32 * 1024 bytes). If an injection block exceeds this limit, it is truncated with a warning log.
Built-in skills
The following skills are embedded in component crates:| ID | Name | Crate | Required capabilities |
|---|---|---|---|
hook-authoring | Hook Authoring | meerkat-hooks | hooks |
shell-patterns | Shell Patterns | meerkat-tools | builtins, shell |
task-workflow | Task Workflow | meerkat-tools | builtins |
skill-discovery-workflow | Skill Discovery Workflow | meerkat-tools | skills |
builtin-utilities-workflow | Builtin Utilities Workflow | meerkat-tools | builtins |
mcp-server-setup | MCP Server Setup | meerkat-mcp | (none) |
memory-retrieval | Memory Retrieval | meerkat-memory | memory_store |
session-management | Session Management | meerkat-session | session_store |
schedule-workflow | Schedule Workflow | meerkat-schedule | schedule |
workgraph-workflow | WorkGraph Workflow | meerkat-workgraph | work_graph |
multi-agent-comms | Multi-Agent Comms | meerkat-comms | comms |
mob-communication | Mob Communication | meerkat | comms |
Configuration reference
| Setting | Default | Description |
|---|---|---|
skills.enabled | true | Enable skill loading |
skills.max_injection_bytes | 32768 (32 KiB) | Maximum size of injected skill content |
skills.inventory_threshold | 12 | Flat listing below, collection mode above |
Custom skills
- Project-level
- User-level
Create a subdirectory under Example
.rkat/skills/ with a SKILL.md file:.rkat/skills/my-deployment/SKILL.md:Discovery tools
When skills are active and builtins are enabled, these tools are registered:| Tool | Description |
|---|---|
browse_skills | List skill collections and search by name/description |
load_skill | Load a skill’s full instructions into the conversation |
skill_list_resources | List skill-owned resources/artifacts |
skill_read_resource | Read a specific skill-owned resource |
skill_invoke_function | Invoke a skill-defined function with structured arguments |
browse_skills to explore collections and load_skill to activate specific skills.
Invoking skills
Skills can be activated in three ways:1. CLI preload convenience
The CLI--skill option accepts local skill slugs and materializes builtin-source SkillKey values for preload:
2. Programmatic typed skill_refs (per-turn, recommended)
Pass tagged skill_refs in API requests to resolve and inject skills for a specific turn:
skill_references strings are retired and rejected; use structured skill_refs.
3. Preloading at session creation
Passpreload_skills to inject skills into the system prompt at session creation:
--skill is the preload-oriented path for runtime-local skill loading; it is not the same surface as typed per-turn skill_refs.
Skill introspection
Skill introspection lets you see all skills — including shadowed ones — with their provenance information. This is useful for debugging skill resolution, understanding which source provides which skills, and inspecting shadowed skills before overriding them.Surfaces
| Surface | Method | Description |
|---|---|---|
| CLI | rkat skill list [--json] | List all skills with provenance |
| CLI | rkat skill inspect <skill-name> --source-uuid <uuid> [--json] | Inspect a skill’s full body |
| RPC | skills/list | List skills with provenance |
| REST | GET /skills | List skills |
| MCP | meerkat_skills tool (action: "list" or "inspect") | List skills or inspect one by typed skill_key |
| Rust SDK | SkillRuntime::list_all_with_provenance() | Programmatic access |
| Rust SDK | SkillRuntime::load_from_source() | Load a typed key from a specific source UUID |
Shadowing
When multiple sources provide the same fullSkillKey, the first source in the runtime composite wins. Introspection shows both the active skill and the shadowed entries. The common case is that matching skill_name values from different sources remain separate active skills because their source_uuid values differ:
SkillKey (skill_name plus source_uuid) when inspecting or loading a specific source.
Rust SDK
Configuration
Skills are configured viaSkillsConfig (realm-scoped at runtime, with optional user/project layering when those files are present):
