skills/ containing a SKILL.md file. It bundles structured agent instructions, an allowed_tools policy, optional resource and reference files, static assets, and executable scripts. The format follows the agentskills.io specification.
Use veryfront/skill for parser,
registry, tool, and policy helpers in framework code.
Prerequisites
- A Veryfront project with at least one agent (see Agents).
- The
skills/directory exists at the project root, orai.skills.discovery.pathsis set in Configuration.
Quick start
Create a skill directory with aSKILL.md file:
SKILL.md file uses YAML frontmatter for metadata and Markdown for instructions:
Skill structure
Each skill lives in its own directory underskills/:
Frontmatter fields
Discovery
Skills are discovered automatically from theskills/ directory at server startup and on HMR file changes. No registration is needed.
Agent tools
Every agent getsload_skill. Local and project runtimes also expose the two
supporting skill tools:
Hosted chat providers use nested
load_skill input. After loading a skill,
hosted chat can read only a reference listed by that skill through
load_skill({ load: { skillId, file } }). It does not execute skill scripts
directly.
When a hosted chat prompt provides a discovery cursor, call
load_skill({ inventory: { cursor: <CURSOR> } }). Otherwise, call
load_skill({ inventory: {} }) when the prompt does not show the complete
authorized skill inventory. The result contains a bounded skillIds page. If
it also contains nextCursor, call
load_skill({ inventory: { cursor: nextCursor } }) until the response omits
nextCursor. Then call load_skill({ load: { skillId } }) with a listed ID.
Direct local tool consumers use flat load input. Call
load_skill({ skillId: "<SKILL_ID>" }) to load a skill. After loading it, call
load_skill_reference({ skillId: "<SKILL_ID>", reference: "<PATH>" }) to read
a listed reference, resource, or asset.
Standalone project runtime consumers can page the authorized inventory with
flat input. Call load_skill({}) for the first page, then call
load_skill({ cursor: <CURSOR> }) when the response includes nextCursor.
Load a listed skill with load_skill({ skillId: "<SKILL_ID>" }).
Discovered skills visible to the agent are advertised by default:
skills: ["code-review"] to advertise only that skill. Use skills: []
to advertise none. This changes the prompt catalog only. load_skill remains
available and can load any visible skill by ID.
Expose the agent through an AG-UI route, then ask it to use the skill:
load_skill before applying the skill instructions.
Tool restrictions
Theallowed_tools field restricts which tools an agent can use while a skill is active. Use exact IDs or prefix wildcards:
CLI commands
Verify it worked
- Run
veryfront skills validate skills/my-skill. A passing skill prints no errors and exits with status0. - Restart
veryfront dev. The dev log should list each registered skill under its directory name. - Send a message that should trigger the skill (for example, a code-review
skill should engage when the message asks to “review this diff”). The
AG-UI response should reference the skill’s instructions or call only
the tools listed in
allowed_tools.