Agent skills let MiMo Code discover reusable instructions from your repo or home directory.
Skills are loaded on-demand via the native skill tool—agents see available skills and can load the full content when needed.
Put a SKILL.md inside a folder. The skill's name comes from its frontmatter—not the folder name—and SKILL.md files are discovered recursively, so you can nest them however you like.
MiMo Code searches these locations:
.mimocode/skills/**/SKILL.md (the singular skill/ folder also works)~/.config/mimocode/skills/**/SKILL.md.claude, .agents, .codex, and .opencode—each scanned at skills/**/SKILL.md~/ (e.g. ~/.claude/skills/**/SKILL.md)Add more sources with the skills.paths and skills.urls config options.
For project-local paths, MiMo Code walks up from your current working directory until it reaches the workspace root.
Along the way it loads any matching skills/**/SKILL.md (or skill/**/SKILL.md) in .mimocode/, and skills/**/SKILL.md in the .claude, .agents, .codex, and .opencode directories.
Global definitions are also loaded from ~/.config/mimocode/ and from the same compatibility folders under your home directory (e.g. ~/.claude/skills/**/SKILL.md).
If two skills resolve to the same name, the last one loaded wins and a warning is logged.
Each SKILL.md must start with YAML frontmatter.
Only these fields are read:
name (required)description (required)hidden (optional boolean—when true, the skill is loaded but kept out of the available-skills list)Any other frontmatter fields are ignored.
MiMo Code does not enforce a format on name or a length on description, but the name is how an agent references the skill, so keep it short and predictable. We recommend lowercase alphanumerics with single hyphens, e.g. git-release.
Keep the description specific enough for the agent to choose the skill correctly—it is the only signal the agent sees before loading the full content.
Create .mimocode/skills/git-release/SKILL.md like this:
MiMo Code lists available skills in the skill tool description.
Each entry includes the skill name and description:
The agent loads a skill by calling the tool:
Control which skills agents can access using pattern-based permissions in mimocode.json:
| Permission | Behavior |
|---|---|
allow | Skill loads immediately |
deny | Skill hidden from agent, access rejected |
ask | User prompted for approval before loading |
Patterns support wildcards: internal-* matches internal-docs, internal-tools, etc.
Give specific agents different permissions than the global defaults.
For custom agents (in agent frontmatter):
For built-in agents (in mimocode.json):
Completely disable skills for agents that shouldn't use them:
For custom agents:
For built-in agents:
When disabled, the <available_skills> section is omitted entirely.
If a skill does not show up:
SKILL.md is spelled in all capsname and descriptionname is silently overridden (last one loaded wins)deny are hidden from agents