Skills

ARES supports SKILL.md file discovery and loading via the skills feature flag, powered by thulp-skill-files.

Feature Flag

[dependencies]
ares-server = { version = "0.7", features = ["skills"] }

Configuration

Configure skill directories in your ares.toml:

[skills]
project_dir = "./.claude/skills/"
personal_dir = "~/.claude/skills/"
plugin_dirs = ["./plugins/my-plugin/skills"]

API

List Skills

GET /api/skills

Returns all discovered skills with scope-based priority (project > personal > enterprise > plugin).

Get Skill

GET /api/skills/{name}

Returns a single skill by qualified name, including full body content.

Library Usage

Skills are also available as a library API for direct Rust usage:

#![allow(unused)]
fn main() {
use ares::skills::{SkillsConfig, load_skills, list_skills, get_skill};

let config = SkillsConfig {
    project_dir: Some("./.claude/skills/".into()),
    personal_dir: Some("~/.claude/skills/".into()),
    ..Default::default()
};

// Load all skills
let skills = load_skills(&config);

// List summaries (name, description, scope)
let summaries = list_skills(&config);

// Get specific skill
let skill = get_skill(&config, "my-skill");
}

Skill File Format

Skills are SKILL.md files with YAML frontmatter:

---
name: my-skill
description: What this skill does
---

# My Skill

Instructions for the AI agent...

Scope Priority

When multiple skills share the same name, scope priority determines which wins:

  1. Project./.claude/skills/ (highest priority)
  2. Personal~/.claude/skills/
  3. Enterprise — organization-wide skills
  4. Plugin — from plugin directories (lowest priority)