pub struct Skill {
pub name: String,
pub description: String,
pub triggers: Vec<String>,
pub tools: Option<Vec<String>>,
pub body: String,
pub dir: PathBuf,
}Expand description
One skill, as read off the disk.
Fields§
§name: String§description: StringWhat it does and when to use it — this carries the entire discovery burden, because it is all the model sees until it loads the body.
The same sentence crate::subagent::SubagentProfile already carries:
say when to use it, not just what it is. Two independent designs
arriving at the same instruction is a good sign it is load-bearing.
triggers: Vec<String>Optional keywords, a cheap deterministic complement to the model inferring relevance from prose. Costs nothing at level 1 because they ride in the same line the description already needed.
tools: Option<Vec<String>>If present, the tool surface this skill narrows to while loaded.
Narrow only, never widen — the capability-override rule in a second
setting. Enforcement is not here: it is
crate::tool::Tool::narrows_surface_to, so the loop learns that
some tool may restrict the surface and never that skills exist.
body: StringThe procedure. Reproduced verbatim when loaded — a paraphrased procedure is a different procedure.
dir: PathBufWhere it lives, so a body may point at a file beside it.