Skills

Skills are reusable instruction sets that extend Vibe Code with new workflows and custom slash commands. Vibe follows the Agent Skills specification, so skills you write here are portable to other agents that adopt the same spec.

Skill format

Skill format

A skill is a directory containing a SKILL.md file. The file starts with YAML frontmatter and continues with the skill instructions in Markdown.

---
name: code-review
description: Perform automated code reviews.
license: MIT
compatibility: Requires git
user-invocable: true
allowed-tools:
  - read_file
  - ask_user_question
---

# Code review skill

This skill helps analyze code quality and suggest improvements.

Common frontmatter fields:

  • name: used to invoke the skill.
  • description: shown in the skill list. Up to 1,024 characters.
  • user-invocable: defaults to true, which exposes the skill as a slash command in the CLI and the VS Code extension. Set to false to hide it from the slash picker. The agent can still load it.
  • disable-model-invocation: set to true to stop the agent from loading the skill on its own. You can still run it with /skill-name.
  • allowed-tools: lists the tools the skill expects to use. Vibe reads this field but doesn't enforce it: a skill can call any tool the active agent allows.
Skill locations

Skill locations

The CLI discovers skills from several locations, in order:

  1. Custom paths defined in config.toml → skill_paths = ["/path/to/custom/skills"]
  2. Project-level skills in ./.vibe/skills/ or ./.agents/skills/ when the working directory is trusted.
  3. User-level skills in ~/.vibe/skills/ or ~/.agents/skills/.

A running session picks up skills you add or edit in these locations. If a change doesn't show up, run /reload.

Enable, disable, or filter skills

Enable, disable, or filter skills

Use patterns to control which skills load:

enabled_skills = ["code-review", "test-*"]
disabled_skills = ["experimental-*"]

Skill filters support exact names, glob patterns, and regex with the re: prefix, just like tool filters. If enabled_skills is non-empty, it acts as an allow-list; otherwise every discovered skill is available minus those matched by disabled_skills.

Custom slash commands

Custom slash commands

Skills are the recommended way to add your own slash commands. user-invocable defaults to true, so the skill name becomes available with /skill-name autocompletion in the CLI prompt, and in the VS Code extension slash picker too.

In the / menu, each skill's description starts with its scope: project, user, or vibe. A skill named like a built-in command isn't listed.

Type /skill-name followed by your request, for example /code-review focus on error handling. Vibe adds the skill's instructions to your message.

Plugins

Plugins

Plugins are packages that bundle skills with other extensions, such as MCP servers, hooks, and subagents. Vibe loads them from ~/.vibe/plugins/ and, in trusted folders, from ./.vibe/plugins/. Vibe prefixes plugin skills with the plugin's namespace, for example /vibe:skill-creator. Run /plugins to list the plugins in your session, and /reload-plugins to pick up changes.

Stay in control

Stay in control

  • Review a skill before enabling it if it can call write-capable tools.
  • To limit what a skill can do, restrict the agent's tools and permissions. allowed-tools doesn't restrict anything.
  • Keep project-specific skills in ./.vibe/skills/ so collaborators can review them in code review.