

0 / 2 embers
0 / 3000 xp
click for more info
Complete a lesson to start your streak
click for more info
Still calibrating
click for more info
Not enough gems
Cost: 6 gems
1: Skills
incomplete
2: Writing Skills
incomplete
3: Skills Are Tools
incomplete
4: Skill Permissions
incomplete
5: Composable Skills
incomplete
6: Skill, Tool, or Agent?
incomplete
7: Custom Commands
incomplete
8: Dynamic Prompts
incomplete
Back
ctrl+,
Next
ctrl+.
This lesson's interactive features are locked, please to keep using them
Just like tools, skill permissions can be controlled via opencode.jsonc:
{
"$schema": "https://opencode.ai/config.json",
"permissions": [
{ "action": "skill", "resource": "*", "effect": "allow" },
{ "action": "skill", "resource": "internal-*", "effect": "deny" },
{ "action": "skill", "resource": "experimental-*", "effect": "ask" },
],
}
The modes are the same, and wildcard rules work the same way:
allow: the skill loads immediatelyask: OpenCode asks before loading itdeny: the skill is hidden from the agent and inaccessible to itYou can also give one agent its own skill rules:
{
"$schema": "https://opencode.ai/config.json",
"agents": {
"plan": {
"permissions": [
{ "action": "skill", "resource": "*", "effect": "deny" },
{ "action": "skill", "resource": "internal-*", "effect": "allow" },
],
},
},
}
Rules are ordered, so the narrower internal-* allow wins because it comes after the wildcard deny.
Tell OpenCode to run and submit the CLI tests from the project root.