Skip to content

[FEATURE]:desktop: slash command list does not show skills #50638

Open

Description

@cgyqu

Feature hasn't been suggested before.

  • I have verified this feature I'm about to request hasn't been suggested before.

Describe the enhancement you want to request

Summary

In OpenCode Desktop, typing / opens a slash command list that shows only
commands. Installed skills never appear in that list, even when a skill sets
slash: true in its frontmatter. Skills are loaded correctly (the model's
available-skills list contains all of them and the skill tool works), so
this is a Desktop UI gap rather than a loading/configuration issue.

Environment

Reproduction

  1. Install skills under ~/.config/opencode/skills/ (85 skills, all with a
    description frontmatter).
  2. Open OpenCode Desktop and start a session.
  3. Type / to open the slash command list.
  4. The list shows built-in commands (e.g. /new) and custom commands from
    commands/ directories, but no skills.
  5. A skill with slash: true in its SKILL.md frontmatter also does not appear.

Expected Behavior

Skills should appear in the / slash command list (at minimum those with
slash: true), consistent with the documented slash frontmatter field:
"Set to false to hide the skill from interactive command catalogs".

Actual Behavior

No skills appear in the Desktop / list. Inspecting the Desktop renderer
bundle (app.asar) shows only command-related UI code and no skill list
rendering logic. The terminal TUI and Desktop behave differently.

Additional Context

  • Skills are fully usable: all 85 skills are present in the model's
    available-skills list and can be loaded via the skill tool.
  • Workaround: wrapping each skill as a command file in
    ~/.config/opencode/commands/<skill-id>.md makes them appear in /, but
    that is a workaround, not native support. Requesting native skills list
    support in the Desktop / command palette.

Activity

  1. github-actions commented on Sep 22, 2026

    @github-actions
    Contributor

    This issue might be a duplicate of existing issues. Please check:

  2. Echo3clipse commented on Sep 25, 2026

    @Echo3clipse

    I do not consider this a duplicate of #48022, as that issue is about a difference in handling between the TUI and the desktop app, but both TUI and desktop app (v2.0.16) show the same slash-menu behavior for skills.

    I wouldn't consider this request here a feature, but a bug.
    The v2-documentation clearly states that the skills are only hidden from the slash-menu when the yaml front matter contains slash: false
    See: https://opencode.ai/v2/docs/skills/#frontmatter

    slash Set to false to hide the skill from interactive command catalogs

    I interpret this as: If slash: is not set at all or is set to true, then the skill should show up.

    Either way, even if the skill front matter is set to slash: true as @cgyqu described, then those skills do not show up in the slash-menu, neither for desktop nor TUI (v2.0.16). It was working fine for me in opencode v1.

  3. michaelmell commented on Sep 25, 2026

    @michaelmell

    I just ran into the same issue. (I am trying to migrate from claude-code.)

    Adding slash: true to skill frontmatter does not make the skill show up as slash command. As should be expected reading this.

    I worked around this by creating a command entry for each skill like so, but that seems hacky. E.g. in .opencode/command/commit.md:

    ---
    description: Create git commit(s) using Conventional Commits.
    ---
    
    Load the `commit` skill using the skill tool and follow its instructions exactly.
    
    $ARGUMENTS
  4. psamsoon commented on Oct 7, 2026

    @psamsoon

    Still reproducible in 2.0.24 (Desktop, macOS) — with service-level evidence

    Dug into this on 2.0.24 (Desktop sidecar CLI, latest channel), macOS 25.6.0 arm64 and confirmed it's a registry split, not a config/loading issue:

    • GET /api/skill?location[directory]=… → 16 skills registered, all with descriptions (better-ui, better-interface, break, …).
    • GET /api/command?location[directory]=… → only init, review, and 2 notion:* entries. Zero skill-sourced entries.
    • In the v2.0.24 source, packages/schema/src/skill.ts has no slash field, and packages/opencode/src/command/index.ts never merges skills into the command registry — so slash: true frontmatter (suggested in the comments above) cannot work in this version, and the / list — built exclusively from the command list — can never contain skills.
    • The TUI-only prompt.skills picker (/skills) isn't available in the Desktop chat either (see desktop: /skills skill picker missing — works only in CLI TUI #50664), so / ends up being the only discovery surface, and it shows nothing skill-related. Result: users conclude their skills failed to install.

    Suggested directions

    1. Surface registered skills in the / autocomplete, grouped/badged as skills, and/or
    2. Give /skills a real description in the default Desktop command list ("browse N installed skills") so the picker is discoverable.

    Workaround that works today: drop one thin command file per skill into ~/.config/opencode/commands/<skill-id>.md:

    ---
    description: "<skill description>"
    ---
    
    Load the `<skill-id>` skill with the skill tool and apply it to this request.
    
    $ARGUMENTS

    Commands are auto-discovered and appear in / immediately; running one makes the model load the exact skill by ID. All 13 of my skills are now reachable as /better-ui, /interface-review, etc. without touching the packaged app.

  5. opencodejr commented on Oct 28, 2026

    @opencodejr
    Contributor

    Thanks for the detailed request!

    In OpenCode v2, skills deliberately aren't / commands. You load one yourself by mentioning it as @skill-id in the prompt, and the Desktop composer suggests skills when you type @. The slash frontmatter field you saw in the docs was removed from v2 (see #52752), so slash: true has no effect.

    I've noted this as a feature request to also list skills in the / command list. Maintainers will consider it. Until then, you can use @skill-id, or keep the command-file wrappers you already set up.

    Related issues:

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions