Using Skills
IMPORTANT
Skills are only available on HTTP adapters. On ACP adapters, use the agent's own skills through the \ trigger, as covered in ACP Adapters
A skill is a folder with a SKILL.md file of instructions for a specific task. CodeCompanion shares each skill's name and description with the LLM, which reads the full file only when the skill applies.
To set up skill directories and groups, see Configuring Skills.
What Your LLM Sees
Adding a skill shares the name and description from the YAML frontmatter in its SKILL.md:
The `lua-developer` skill is available: The Lua conventions for this project. Use when writing or reviewing Lua.
Read `/Users/Oli/.config/codecompanion/skills/lua-developer/SKILL.md` when the skill applies and follow its instructions.Sharing only the frontmatter keeps the chat buffer's context small.
To read the full skill, CodeCompanion adds the read_file tool to the chat, and run_command if it's enabled. The model must support function calling.
NOTE
If the read_file tool is disabled in your config, the skill isn't added and a warning is logged
Adding Skills
The /skills slash command lists every skill in your skill directories. The /skills-group slash command lists your groups and adds all of a group's skills. It's hidden until you configure a group.
To add skills to every new chat, see Autoload.
Pickers
CodeCompanion uses Telescope, fzf-lua, mini.pick or Snacks, in that order, depending on which is installed. Without any of them, it falls back to vim.ui.select, which only selects one skill at a time.
Each slash command sets its picker separately:
require("codecompanion").setup({
interactions = {
chat = {
slash_commands = {
["skills"] = {
opts = {
provider = "snacks", -- Can be "default", "telescope", "fzf_lua", "mini_pick" or "snacks"
},
},
["skills-group"] = {
opts = {
provider = "snacks",
},
},
},
},
},
})ACP Adapters
On an ACP adapter such as Claude Code, the agent runs its own skills, so /skills and /skills-group are hidden.
Use the \ trigger instead. It lists the ACP commands the agent has found for itself. A skill in ~/.claude/skills is available either way: through /skills on an HTTP adapter, and through \ when Claude Code is the agent.
Removing a Skill
Delete the skill's line from the Context blockquote in the chat buffer.