Install agent skills in OpenCode
Add a skill to OpenCode with npx or a premium ZIP, load it with @skill-id, and control who may use it. Covers every folder OpenCode reads and which copy wins.

OpenCode reads skills from .opencode/skills, .claude/skills and .agents/skills in your project, and from ~/.config/opencode/skills, ~/.claude/skills and ~/.agents/skills for all your projects.
Short answer: run the skill's npx line with -a opencode, start OpenCode in the project, then mention the skill as @skill-id or just ask for the job.
What you need
Step 1: Choose a project or global skill
1 minOpenCode searches several folders, and the folder decides the skill's ID.
- Project:
.opencode/skills/,.claude/skills/or.agents/skills/. OpenCode checks every level from your current folder up to the project root. - Global:
~/.config/opencode/skills/,~/.claude/skills/or~/.agents/skills/. - The skill's ID comes from its path and is case-sensitive. Use lowercase words joined by hyphens, 1 to 64 characters, matching the folder name.
Same ID in two places? The source OpenCode reads later wins, in this order: built-in,
.claude/skills/,.agents/skills/,~/.config/opencode/skills/, then the project's.opencode/skills/. Skills listed in your config come last of all.- Project:
Step 2: Install a free skill with one line
1 minThe skills CLI copies the skill from its maker's GitHub repo into
.agents/skills/.- Open a terminal in your project folder.
- Paste the line from the skill's Recaply page. It ends in
-a opencode. - To install it for all your projects instead, add
-g. It then goes to~/.agents/skills/.
The install linenpx skills add <owner>/<repo> --skill <skill-name> -a opencode
You should see a new
.agents/skills/<skill-name>/folder withSKILL.mdinside.The CLI asks which agents to install to?
The line is missing its
-avalue. Pick your agent in the list, or run the line again with it. Add-yto skip the questions.Step 3: Or install a premium skill from its ZIP
2 minA premium skill comes as one ZIP that holds a single folder named after the skill.
- On the skill's Recaply page, sign in, buy it (or use the plan), then click Download ZIP.
- Move the ZIP into your project folder and open a terminal there.
- Run the line below. It unzips the folder, then installs it for your agent.
- When it's done, you can delete the ZIP and the unzipped folder: the CLI made its own copy.
Your lineunzip <slug>.zip && npx skills add ./<slug> -a opencode
You should see
.agents/skills/<slug>/SKILL.md, with the skill's other files beside it.On Windows, there's no
unzip?Right-click the ZIP, choose Extract All, and move the extracted folder into
.agents/skills/in your project.Unzipping straight into a skills folder works too:
unzip <slug>.zip -d .opencode/skills/.Step 4: Check that OpenCode sees it
1 minOpenCode's docs give no command that lists skills. At each step, it shows the model the skills it may load.
- Start OpenCode in your project folder. If it was open, restart it.
- Type
@and the skill's ID in a prompt, such as@skill-name, to load it yourself. - Or ask which skills it can load: the model sees each allowed skill's ID, name and description.
You should see OpenCode load the skill when you mention it.
The skill is missing?
A skill needs a
descriptionfor the model to see it, and its file must be named exactlySKILL.md.Step 5: Run the skill
1 minOpenCode loads a skill with its
skilltool when your task fits, or when you mention it.- Describe the job in words from the skill's description.
- Or mention it as
@skill-idin your prompt.
Your prompt@<skill-id> <what you want it to do>You should see OpenCode follow the skill's steps for your task.
It loads only when you mention it?
Check its
SKILL.mdforopencode/autoinvoke: false. That hides it from the model's list, but@skill-idstill loads it.Step 6: Not working? Check these
2 minOpenCode's own checklist covers the usual causes.
- The file is a nested file named exactly
SKILL.md(or a.mdfile at the top of a skills folder). - You used the ID from the path, not the
namein the file. Thenameis only a label. - The skill has a
description. - Your agent's permissions allow it. Rules in
opencode.jsoncuse theskillaction with the skill's ID, and the last rule that matches wins:allowloads it,askasks you first,denyhides it. - No source that OpenCode reads later defines the same ID.
- The file is a nested file named exactly
You get
A skill OpenCode can load on its own or with @skill-id
Try next
Did this guide work for you?
Thanks. It helps us fix the steps.


