Repository navigation
Description
Summary
The V2 skills docs document a slash frontmatter field (and metadata.opencode/slash) that controls whether a skill appears in interactive command catalogs. In the latest release (v2.0.18) neither field is parsed or exposed, so skills cannot be invoked as /skill-id and the setting has no observable effect.
Environment
- opencode version: v2.0.18 (latest V2 tag)
- OS: macOS (Darwin 25.5.0, arm64)
- Terminal: Ghostty + tmux (
TERM=xterm-256color,TERM_PROGRAM=tmux,COLORTERM=truecolor) - Shell:
/bin/zsh - Install/channel: Homebrew tap
anomalyco/tap, formulaopencode-v2 - Active plugins: none
Reproduction
-
Add a skill with
slash: truein frontmatter, e.g..opencode/skills/foo/SKILL.md:--- name: Foo description: Test skill slash: true --- Body.
-
Open the TUI and type
/— no/foo(or/skill-id) entry appears in the command catalog. -
Query the API:
opencode api get /api/skill— the returned skill has noslashfield.opencode api get /api/command— returns only commands; no skills.
-
Set
slash: falseinstead — same result; the field is ignored either way.
Expected Behavior
Per https://opencode.ai/v2/docs/skills/ (docs source services/www/src/docs/content/skills.mdx at v2.0.18):
| Field | Behavior |
|---|---|
slash |
Set to false to hide the skill from interactive command catalogs |
metadata.opencode/slash |
Boolean or "true"/"false"; overrides slash |
Skills should be present in the interactive command catalog by default, with slash / metadata.opencode/slash controlling that.
Actual Behavior
slash and metadata.opencode/slash are dropped during skill parsing at v2.0.18:
packages/core/src/config/plugin/skill-file.tsreads onlyname,description, andmetadata["opencode/autoinvoke"]when buildingSkill.Info.packages/schema/src/skill.tsdefinesSkill.Infoas{ id, name, description, autoinvoke, path, content }; there is noslashfield.- No other code path consumes the field.
The only user-facing skill invocation in v2.0.18 is the @ mention picker (packages/tui/src/component/prompt/autocomplete.tsx builds skill mentions with prefix = "@"), plus the /skills selector (packages/tui/src/component/dialog-skill.tsx) which inserts @skill-id. Automatic model loading via the skill tool is unaffected.
Additional Context
- Docs: https://opencode.ai/v2/docs/skills/
- Observed consistently on v2.0.18, the latest V2 release tag.
- Workaround: use
@skill-idmentions or/skills. - Possible resolution: either implement
slash/metadata.opencode/slash(parse intoSkill.Info, include skills in the command catalog) or remove the field from the docs until it is supported.
Activity
github-actions commentedon Sep 26, 2026
This issue does not fully meet our contributing guidelines.
What needs to be fixed:
Please edit this issue to address the above within 2 hours, or it will be automatically closed.
This issue might be a duplicate of existing issues. Please check:
slash: true.slashdefaults.If you believe this was flagged incorrectly, please let a maintainer know.
github-actions commentedon Sep 26, 2026
This issue has been automatically closed because it was not updated to meet our contributing guidelines within the 2-hour window.
Feel free to open a new issue that follows our issue templates.
sreich commentedon Sep 28, 2026
@gsevla Is this related to being able to disable the built-in 'report bug to opencode' via the TUI selector?
I tried adding a rule set to disabled and that didn't help, I don't think there's a way around it and I vaguely think it is because of this gap
Don't know how others are okay with having information shown in the UI that you can't turn off, just adds noise for something we use every day. Then again, I wish the TUI skill selector were smarter, just a couple of features like grouping would be nice, and doesn't seem like those would be too hard to implement, but I have not read the codebase yet
gsevla commentedon Sep 29, 2026
Hey, @sreich, it isn't.
This is about not being able to call skills as slash(/some-skill) commands, only as at(@some-skill) references.