Agent skills
On-demand instruction folders (SKILL.md) discovered on your machine. Distinct from team routing tags. Load full bodies only when the task needs them.
What skills are
An agent skill is a folder of instructions the daemon discovers on your
machine and exposes over MCP. Each skill is a directory containing at least a
SKILL.md file (YAML frontmatter + markdown body), plus optional resource files.
Agents use them on demand: they see names and short descriptions first, then
call skill_load only when a task needs the full instructions. That keeps the
context window small and works the same in Cursor, Claude, ChatGPT, Codex, and
Flexx Agent.
Not the same as team skill tags
Profiles and teams also have skill tags used for task routing
(for example code.backend). Those are labels on agents, not SKILL.md folders.
This page is only about the SKILL.md system.
Requirements
Skills run on the machine, not in the cloud:
- Install or update the CLI (v0.14.9+ includes skills).
- Keep the daemon connected (
flexx service installorflexx connect). - The remote must advertise the
skillscapability (visible under Machines and the Skills page).
curl -fsSL https://cli.flexx.dev/install.sh | sh
flexx service restart # required so the new binary is what runs
flexx version # expect 0.14.9 or newerIf you only replace the binary and do not restart the service, the old process keeps running the previous code until restart.
Discovery roots
The daemon scans these folders (project roots only when a git workspace is set):
Project (nearest git root)
| Path | Label |
|---|---|
.flexx/skills | .flexx |
.agents/skills | .agents |
.claude/skills | .claude |
.cursor/skills | .cursor |
Global ($HOME)
| Path | Label |
|---|---|
~/.flexx/skills | .flexx (writable) |
~/.agents/skills | .agents |
~/.claude/skills | .claude |
~/.cursor/skills | .cursor |
~/.codex/skills | .codex |
~/.gemini/antigravity/skills | .gemini |
~/.copilot/skills | .copilot |
Precedence: project roots win over global; within a tier, order is as in the
tables above. Symlinked trees (for example .claude/skills → .agents/skills)
are deduped by real path so the same folder is not listed twice.
An in-memory index is kept fresh with a filesystem watcher (plus a cheap rescan on list/load).
SKILL.md format
---
name: web-perf
description: Audit page performance and suggest concrete fixes
---
# Web performance
1. Capture a Lighthouse-style checklist for the target URL.
2. ...name— stable id used byskill_load(letters, digits,.,-,_).description— one-line summary shown in catalogs and system prompts.- Body — full instructions; optional sibling files can be loaded by relative path.
MCP tools
| Tool | Kind | What it does |
|---|---|---|
skill_list | Read | Catalog entries: name, description, scope, source, status, shadowing |
skill_load | Read | Full SKILL.md body, or one bundled file via path |
skill_save | Write | Create/update under ~/.flexx/skills only |
skill_delete | Write | Remove a skill from ~/.flexx/skills only |
skill_import | Write | Copy a discovered skill, a local folder, or fetch from GitHub into ~/.flexx/skills |
Writes never modify project folders or third-party global roots. Clients that prompt on mutating tools (Cursor, Claude, ChatGPT, etc.) treat save/delete/import like any other write tool — there is no separate Flexx-only approval channel.
Examples
List everything matching a query:
{ "name": "skill_list", "arguments": { "query": "perf" } }Load full instructions:
{ "name": "skill_load", "arguments": { "name": "web-perf" } }Load one resource file inside the skill folder:
{ "name": "skill_load", "arguments": { "name": "web-perf", "path": "checklist.md" } }Import from GitHub into ~/.flexx/skills:
{
"name": "skill_import",
"arguments": {
"source": "github:owner/repo/path/to/skill",
"name": "optional-local-name"
}
}Flexx Agent
When the bound machine exposes skill_list, Flex Agent injects winning skill
names and short descriptions into the system prompt (bodies stay out of the
prompt until skill_load). The Skills page in
the dashboard shows discovery roots, tools, and which machines advertise the
skills capability.
Best practices
- Keep descriptions specific so the model picks the right skill without loading every body.
- Prefer one skill per workflow; split huge guides into resources loaded by path.
- Put shared team skills in the repo under
.flexx/skillsor.agents/skills. - Put personal preferences under
~/.flexx/skillsso they survive across clones.
Memory
A graph-backed memory layer that gives AI agents durable context across sessions, clients, and machines. Works with a free account and any MCP client — no install required.
Bring Your Own Models (Router)
Add your own model providers — Anthropic, OpenAI, OpenRouter, Groq, or any OpenAI-compatible endpoint — and use them in Flexx Agent or from your own code through one router.