/skill-name syntax) or by the agent itself (via the use_skill tool).
Fabro implements the open Agent Skills format. Each skill is a directory containing a SKILL.md file with YAML frontmatter and Markdown instructions. See the Agent Skills specification for the full file format, and What are skills? for an introduction.
Discovery
Fabro discovers skills from three convention directories, searched in order:
Within each directory, Fabro looks for
*/SKILL.md files (one level of nesting).
When the same skill name appears in multiple directories, later directories override earlier ones. This means project-level skills take precedence over global skills, letting you customize behavior per-repo.
You can override the default directories by setting
skill_dirs in the session configuration. When set, only the specified directories are searched.Invocation
Skills can be invoked in two ways.Slash syntax (user input)
Users can reference a skill with a/ prefix in their input:
/commit token, finds the matching skill, and expands the input by replacing the skill reference with the full template. The remaining text (fix the off-by-one error in pagination) is substituted into the {{user_input}} placeholder.
Rules for slash syntax:
- The
/must be preceded by whitespace or be at the start of the input - The skill name must be followed by whitespace or end of input
- Only one skill reference per input is allowed
- File paths like
/usr/bin/bashare not matched (the character after/must be a lowercase letter, and the name cannot contain/)
use_skill tool (agent-initiated)
When skills are available, Fabro adds ause_skill tool to the agent’s toolset and lists the available skills in the system prompt:
use_skill with a skill name to load the template, then follow the instructions:
Returns the skill’s template text.
Lifecycle
- Discovery — On session startup, Fabro scans the skill directories and parses all valid
SKILL.mdfiles - Registration — If any skills are found, the
use_skilltool is registered and the skill list is added to the system prompt - Expansion — When user input contains a
/skill-namereference, Fabro expands it before sending to the LLM - Tool use — The agent can also call
use_skillat any time to load a skill’s template mid-conversation