Skills
Skills are markdown files that teach agents how to handle specific outcomes. They're modular, sharable, and version-controllable. OpenVesper implements the AgentSkills format, the same standard used in agent runtimes that use markdown-based skill definitions.
Anatomy of a skill
skills/morning-brief/
โโโ SKILL.mdThe SKILL.md file has frontmatter + body:
---
name: morning-brief
description: |
Use when the user asks for a daily morning briefing, a summary of overnight
events, or a general "what should I know today" question. Combines crypto,
calendar, weather, and macro news into a single 5-bullet summary.
---
# Morning Brief
When the user asks for a brief, do these steps in order:
1. **Crypto snapshot**
- Get BTC, ETH, SOL prices and 24h change
- Note any token with > 10% move
2. **Calendar**
- Pull today's calendar via plugin-calendar
- List meetings with time + attendees
3. **Weather**
- Use plugin-weather for the user's stored location
4. **Macro**
- One bullet if there's a major release today (CPI, FOMC, jobs)
5. **Synthesis**
- Output as 5 markdown bullets, no preamble
- Use plain language, no jargon
## Style notes
- No "Good morning!" greeting; the user knows they're getting a brief.
- Use 24-hour time format unless the user has set a preference.
- Numbers: round prices to nearest dollar over $100, two decimals otherwise.The frontmatter
| Field | Required | Purpose |
|---|---|---|
name | yes | Unique skill name (kebab-case) |
description | yes | When to use this skill. Read by the LLM during retrieval. |
The description is critical โ it's how the runtime decides whether to pull this skill into the context. Write it as "when should this skill be used?", not "what does it do?".
The 5-tier skill precedence
Skills can live in 5 places. When two skills have the same name, the higher tier wins. From highest to lowest:
- Workspace โ
skills/in the current working directory. Used for project-specific overrides. - Project agent โ
.agents/<agent>/skills/in the project root. Agent-specific skills for this project. - Personal agent โ
~/.openvesper/agents/<agent>/skills/. Your personal overrides that follow you across projects. - Managed โ skills installed via package managers (npm). Curated by trusted authors.
- Bundled โ skills shipped inside plugin packages. The framework's defaults.
This precedence chain lets you share skills across all three.
The 36 shipped skills
All skills are bound to a specific agent. They live under .agents/<mode>/skills/<skill-name>/SKILL.md. When an agent runs, the runtime loads its skills based on the user's prompt and the skill's description field.
Skill count per agent
| Agent | Skills |
|---|---|
code-reviewer | 6 โ bug-triage, code-explanation, debug-prod-issue, pr-description, refactor-plan, pr-review-checklist |
productivity-coach | 5 โ daily-standup, weekly-retro, morning-briefing, meeting-prep, time-blocking |
investment-researcher | 4 โ deep-research, investment-thesis, airdrop-eligibility, market-news-digest |
defi-strategist | 3 โ defi-position-review, pre-trade-checklist, yield-comparison |
bags-hunter | 3 โ scan-and-score, rug-check-deep, portfolio-review |
security-reviewer | 2 โ secret-scan, dependency-audit |
content-writer | 2 โ content-calendar, draft-from-notes |
sales-coach | 2 โ customer-discovery, follow-up-email |
| Other 9 agents | 1 skill each |
Example structure
.agents/code-reviewer/skills/
โโโ bug-triage/
โ โโโ SKILL.md
โโโ pr-description/
โ โโโ SKILL.md
โโโ refactor-plan/
โ โโโ SKILL.md
โโโ ... (3 more)You can add your own by creating a new directory under any agent's skills/ folder with a SKILL.md inside.
How retrieval works
At the start of every conversation, the runtime:
- Loads all skills available to the current agent
- Reads each skill's
descriptionfield - Asks the LLM (or a smaller, cheaper model) to pick which skills are relevant to the user's message
- Injects the body of selected skills into the system prompt
This means skills should have clear, specific descriptions and focused content. A vague "general writing tips" skill will be picked too often. A specific "drafting bug reports" skill will be picked at the right moment.
Writing your own skill
1. Create the directory
mkdir -p skills/my-skill
cd skills/my-skill2. Write SKILL.md
---
name: my-skill
description: Use when the user asks me to do X. Specifically, this skill applies when Y or Z happens.
---
# My Skill
Here is what I should do step by step:
1. First action
2. Second action
3. Third action
## Important notes
- Don't do A
- Always prefer B over C3. Test the skill
# List discovered skills
node apps/cli/dist/index.js skill list
# Verify your skill appears
node apps/cli/dist/index.js skill info my-skillBest practices
Write descriptions like triggers
โ
"Use when the user asks for code review feedback on a pull request."
โ "A skill that helps with code review."
Keep skills focused
If your skill body is over 1000 words, it's probably two skills. Smaller skills retrieve more accurately.
Reference tools by name
Inside the skill body, name the specific tools the agent should use: crypto_price, github_open_pr, etc. This anchors the skill to actual capabilities.
Version skills via git
Skills are plain markdown. Commit them, branch them, share them. Skills from workspace tier come with your project's git history.
What's next?
- Agents โ agents reference skills
- Plugins โ skills reference plugin tools
- Architecture โ how all three fit together