feat: invoke skills as slash commands#9577
Open
kilo-code-bot[bot] wants to merge 2 commits intomainfrom
Open
Conversation
Skills are now first-class slash commands in both the CLI TUI and the VS Code webview. Each skill is registered under its bare name when free (e.g. /kilo-config) and always under a /skill:<name> alias so shadowed skills remain reachable. The VS Code dropdown renders a 'skill' badge to distinguish skill-sourced commands from custom commands and MCP prompts.
| if (names.has(c.name)) return false | ||
| if (c.source === "skill" && c.name.startsWith("skill:")) { | ||
| const bare = c.name.slice("skill:".length) | ||
| if (bareSkills.has(bare)) return false |
Contributor
Author
There was a problem hiding this comment.
WARNING: Client-command collisions hide the skill alias
bareSkills is built before client commands are filtered out, so if a skill name matches a client-side slash command like settings or help, the bare skill is removed by names.has(c.name) and this branch also removes /skill:<name>. That makes the skill unreachable in VS Code despite the alias guarantee. Consider only hiding the alias when the bare skill will actually be returned.
Suggested change
| if (bareSkills.has(bare)) return false | |
| if (bareSkills.has(bare) && !names.has(bare)) return false |
Contributor
Author
Code Review SummaryStatus: No Issues Found | Recommendation: Merge Files Reviewed (1 file)
Reviewed by gpt-5.5-2026-04-23 · 393,086 tokens |
If a skill's bare name collides with a hardcoded client-side slash command in the VS Code webview (e.g. settings, help, models), we still need the /skill:<name> alias to be reachable. Only hide the alias when the bare skill will actually appear in the dropdown.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Skills are now first-class slash commands. Previously they could only be invoked from the skill picker dialog (TUI) or the
skilltool the agent calls on its own; typing/kilo-configdid not work in the TUI and in the VS Code webview skill-sourced commands were indistinguishable from regular ones.What changed
command/index.ts: every skill is registered under/skill:<name>unconditionally and under the bare/<name>when no other command owns that name, so shadowed skills stay reachable.:skillalias when the bare form is already shown) and tags them with a:skillsuffix.skill/mcpbadge next to the command name using the existing (but previously unused) i18n keys, and de-duplicates skill entries the same way.