# Skills
ARES supports SKILL.md file discovery and loading via the `skills` feature flag, powered by [thulp-skill-files](https://crates.io/crates/thulp-skill-files).
## Feature Flag
```toml
[dependencies]
ares-server = { version = "0.7", features = ["skills"] }
```
## Configuration
Configure skill directories in your `ares.toml`:
```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:
```rust
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:
```markdown
---
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)