:skill()
The :skill() pseudo-class picks
agent skills by name from the
packages its selector matched. It only works in --allow-skills and
vlt skills.
Syntax
<selector>:skill(<pattern>[, <pattern>…])Parameters
| Parameter | Description |
|---|---|
pattern | Name (find-skills), quoted name ("my skill") or glob (vercel*, *-x) |
How it works
- The selector picks packages as usual.
:skill()picks skills inside them and never filters packages. - A pattern matches the skill name or the
namein itsSKILL.md, ignoring case.*matches any run of characters. Quote names with spaces, with double quotes only. - A selector without
:skill()picks every skill of its packages, the same as:skill(*). :skill(x)alone is*:skill(x).#a :skill(x)picks skillxof every descendant ofa; use#a > :skill(x)for its direct dependencies only.- It must end a top-level selector:
#a:skill(x) > *,#a:skill(x):prodand:not(#a:skill(x))are errors. - Comma lists are a union.
:root > *, #skills:skill(find-skills)picks every skill of every direct dependency,skillsincluded. The narrow form is:root > *:not(#skills), #skills:skill(find-skills). - A pattern that matches no skill prints a warning; the install still succeeds.
- Anywhere else (
vlt query,vlt ls,--allow-scripts, …) it is an error. Preview a query withvlt skills list '<query>'. :skills(no()) matches packages that ship skills.:skills(x)is an error (did you mean:skill(x)?) on its own, and matches nothing inside a comma list.
Examples
Link the agent-browser skill of the agent-browser package:
$ vlt install --allow-skills='#agent-browser:skill(agent-browser)'List the matching skills of every direct dependency:
$ vlt skills list ':root > *:skill(vercel*, *-review)'Link skills by glob and by a quoted name:
$ vlt skills link '#agent-skills:skill(react*, "my skill")'See also
vlt skills— manage agent skills:not()— exclude packages:skills— packages that ship skills