Skills
A skill is a reusable, versioned, testable unit of capability that you assign to agents. Think of it as procedural memory — editable from an admin UI, not buried in code.
Skill document
{
"_id": "skill_rust_backend_development",
"name": "Rust Backend Development",
"slug": "rust-backend-development",
"version": 3,
"description": "Guidelines for implementing backend services in Rust.",
"content_markdown": "# Rust Backend Development\n\nUse axum, tokio, tracing...",
"tags": ["rust", "backend", "api"],
"required_tools": ["cargo", "shell", "git"],
"created_by": "admin",
"status": "active"
}
Skill format (authoring)
Do not make skills executable code at first. Make them structured instructions:
name: Rust API Implementation
version: 1
description: How to implement backend API tasks in Rust.
applies_to:
- backend
- rust
required_tools:
- cargo
- git
content: |
When implementing Rust APIs:
- use axum
- use serde DTOs
- add tracing instrumentation
- write integration tests
- never commit secrets
Skill kinds (over time)
| Kind | Form |
|---|---|
| instruction | markdown / YAML guidance (start here) |
| tool | wrappers around commands / APIs |
| workflow | multi-step procedures |
| verification | checklists / tests |
Skill editor (UI)
The skill editor should feel like editing a reusable prompt/toolbook:
- Skill name · Description · Markdown instructions · Examples
- Required tools · Allowed agent types
- Version history
- Test skill against a sample task
- Approve / publish
How skills enter a run
When Core assembles a run config, each attached skill is rendered into the
runtime context (system prompt + tool requirements). The nexus-skills crate
validates the skill YAML, renders markdown, and enforces semver versioning.