Skip to main content

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)

KindForm
instructionmarkdown / YAML guidance (start here)
toolwrappers around commands / APIs
workflowmulti-step procedures
verificationchecklists / 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.