A skill is a model-loadable procedure that the agent pulls into context on demand rather than carrying on every turn. eve advertises each skill’s description alongside the built-inDocumentation Index
Fetch the complete documentation index at: https://mintlify.com/vercel/eve/llms.txt
Use this file to discover all available pages before exploring further.
load_skill tool. When a request matches a skill’s description — or the user names the skill outright — the model calls load_skill and eve appends that skill’s markdown to the active turn’s context. The full body never enters context until it is needed, which keeps the baseline prompt lean.
How loading works
eve scansagent/skills/ and exposes each skill’s description to the model. The description is a routing hint, not a label. Write it as the task that should trigger activation:
load_skill, eve appends the skill’s markdown to the active turn’s context. Loading a skill adds instructions only — it never creates a new execution surface. Tools remain visible whether or not a skill is loaded. If you need typed runtime behavior, use a tool instead.
Flat markdown skill
The smallest skill is a single markdown file. The name comes from the filename (without the extension):agent/skills/forecast.md
description frontmatter. When it does, eve advertises the first non-empty, non-code-fence line of the body with any leading #, >, *, or - marker stripped. If no such line exists, eve falls back to Instructions for the <name> skill. — a weak routing hint, so add explicit description frontmatter when you want reliable intent-based routing.
Packaged skill (directory with SKILL.md)
A packaged skill is a directory with aSKILL.md plus sibling files such as references/, assets/, and scripts/. The SKILL.md must carry description frontmatter — there is no filename slug to fall back on:
agent/skills/research/SKILL.md
TypeScript skill with defineSkill
When markdown alone cannot express what you need — typed values, generated content, or inline sibling files — author the skill in TypeScript withdefineSkill from eve/skills:
agent/skills/research.ts
SKILL.md from markdown, and each files entry becomes a package-relative sibling. Start with plain markdown and move to defineSkill only when you hit its limits.
Skills are scoped per agent
Skills are scoped to the agent that declares them. A subagent’sskills/ are invisible to the root agent, and the reverse holds too. There is no shared-skill mechanism — put shared executable helpers in lib/ instead.
Reading skill files at runtime
Loading a skill appends itsSKILL.md to context. To reach a packaged skill’s sibling files (references, assets, scripts) from inside a tool or hook, use ctx.getSkill(id):
agent/tools/use_checklist.ts
name and file(relativePath). File content is read lazily from the active sandbox.
Dynamic skills
To serve a different skill per principal, tenant, or channel — for example, each team’s own playbook — wrapdefineSkill in a defineDynamic resolver keyed on ctx.session.auth:
agent/skills/playbook.ts
Skills vs instructions
| Loaded | Use for | |
|---|---|---|
instructions.md | Always on, every turn | Permanent identity and standing rules |
agent/skills/* | On demand, when the model calls load_skill | Optional procedures that should not bloat every turn |