2026-03-25 09:54:41 -06:00
---
title: "Skills"
description: "Specialized instruction sets that provide domain-specific guidance to the LLM."
---
2026-04-15 14:54:20 +02:00
Skills are specialized instruction sets that SF loads when the task matches. They provide domain-specific guidance — coding patterns, framework idioms, testing strategies, and tool usage.
2026-03-25 09:54:41 -06:00
## Bundled skills
2026-04-15 18:33:47 +02:00
SF ships with these skills, installed to `~/.sf/agent/skills/`:
2026-03-25 09:54:41 -06:00
| Skill | Trigger | Description |
|-------|---------|-------------|
| `frontend-design` | Web UI work | Production-grade frontend with high design quality |
| `swiftui` | macOS/iOS apps | Full lifecycle from creation to shipping |
| `debug-like-expert` | Complex debugging | Methodical investigation with evidence gathering |
| `rust-core` | Rust code | Idiomatic, safe, performant Rust patterns |
| `axum-web-framework` | Axum web apps | Complete Axum development guide |
| `tauri` | Tauri v2 desktop apps | Cross-platform desktop development |
| `github-workflows` | GitHub Actions | CI/CD, workflow debugging |
| `security-audit` | Security auditing | Dependency scanning, OWASP |
| `review` | Code review | Diff-aware quality analysis |
| `test` | Test generation | Auto-detects frameworks |
| `lint` | Linting and formatting | ESLint, Biome, Prettier |
## Skill discovery
2026-04-15 14:54:20 +02:00
The `skill_discovery` preference controls how SF finds skills:
2026-03-25 09:54:41 -06:00
| Mode | Behavior |
|------|----------|
| `auto` | Skills found and applied automatically |
| `suggest` | Skills identified but require confirmation (default) |
| `off` | No skill discovery |
## Skill preferences
```yaml
always_use_skills:
- debug-like-expert
prefer_skills:
- frontend-design
avoid_skills:
- security-docker
skill_rules:
- when: task involves Clerk authentication
use: [clerk]
- when: frontend styling work
prefer: [frontend-design]
```
### Resolution order
2026-04-15 18:33:47 +02:00
1. **Bare name** — e.g., `frontend-design` → scans `~/.sf/agent/skills/` and project skills
2. **Absolute path** — e.g., `/Users/you/.sf/agent/skills/my-skill/SKILL.md`
2026-03-25 09:54:41 -06:00
3. **Directory path** — looks for `SKILL.md` inside
User skills take precedence over project skills.
## Custom skills
Create a directory with a `SKILL.md` file:
```
2026-04-15 18:33:47 +02:00
~/.sf/agent/skills/my-skill/
2026-03-25 09:54:41 -06:00
SKILL.md — instructions for the LLM
references/ — optional reference files
```
### Project-local skills
```
2026-04-15 18:33:47 +02:00
.sf/agent/skills/my-project-skill/
2026-03-25 09:54:41 -06:00
SKILL.md
```
## Skill health dashboard
```
2026-04-15 18:33:47 +02:00
/sf skill-health # overview table
/sf skill-health rust-core # detailed view
/sf skill-health --stale 30 # unused for 30+ days
/sf skill-health --declining # falling success rates
2026-03-25 09:54:41 -06:00
```
The dashboard flags:
- Success rate below 70% over the last 10 uses
- Token usage rising 20%+
- Skills unused beyond the staleness threshold
### Staleness detection
```yaml
skill_staleness_days: 60 # default: 60, set 0 to disable
```
Stale skills are excluded from automatic matching but remain invokable explicitly.