Choose exactly which OpenCode skills a session can use—without losing the
ability to see or restore anything you turned off. The plugin preserves
OpenCode's native skills experience and adds /manage-skills, a keyboard-first
picker with durable, enforced selection state.
The short version: select the skills you want in context; disabled skills remain visible, recoverable, and blocked from model use.
- Selective skill access — enable or disable individual skills per persisted selection state.
- Recoverable choices — disabled skills remain visible in the management dialog for one-step restoration.
- Native integration — preserves the normal skills list and uses OpenCode's existing command interface.
- Enforced availability — removes disabled skills from model context and denies direct skill-tool calls.
- Durable local state — atomically stores the selection with owner-only permissions where supported.
Install directly from GitHub:
opencode plugin github:ReyJ94/Opencode-Skill-PickerFor local development, generate and install a tarball:
npm pack
opencode plugin ./opencode-skill-picker-0.1.0.tgzThe plugin has server and TUI entrypoints. If configuring it manually, add both exports to their corresponding OpenCode config targets:
opencode.json:
{ "plugin": ["opencode-skill-picker/server"] }tui.json:
{ "plugin": ["opencode-skill-picker/tui"] }Set the same option on both plugin entries when you use a custom path:
{
"plugin": [["opencode-skill-picker/server", { "selectionPath": "/path/to/selection.json" }]]
}Use the corresponding /tui entry in tui.json when configuring both targets.
The selected state path is resolved in this order:
- Plugin
selectionPathoption. OPENCODE_SKILL_SELECTION_PATH.$XDG_DATA_HOME/opencode-skill-picker/selection.json.~/.local/share/opencode-skill-picker/selection.json.
The file is created as needed and atomically written with owner-only permissions where the filesystem supports them. Missing, malformed, or unsupported state is treated as no disabled skills. Its versioned format is:
{
"version": 1,
"disabled": ["skill-name"]
}- Run
/manage-skills. - Select a skill and press Space, or select it, to toggle access.
- Start the next model request with the updated skill set.
Disabled skills are removed from <available_skills> before a model request,
denied if a model still calls the skill tool, and removed from the native
skills list. The management dialog always retains them so they can be re-enabled.
npm test
npm run check
npm run pack:dry-runRepository: https://github.com/ReyJ94/Opencode-Skill-Picker
