Skip to content

feat(kilocode): implement skill management and marketplace#11527

Draft
idreesmuhammadqazi-create wants to merge 6 commits into
Kilo-Org:mainfrom
idreesmuhammadqazi-create:session/agent_2615ee8a-ed32-440d-bc13-3ab6d9a68814
Draft

feat(kilocode): implement skill management and marketplace#11527
idreesmuhammadqazi-create wants to merge 6 commits into
Kilo-Org:mainfrom
idreesmuhammadqazi-create:session/agent_2615ee8a-ed32-440d-bc13-3ab6d9a68814

Conversation

@idreesmuhammadqazi-create

Copy link
Copy Markdown
Contributor

Add functionality to browse, install, and uninstall skills via the CLI. This includes support for installing skills from tarball URLs, registering local skill folders, and managing a skill marketplace.

  • Implement installSkill, removeInstalledSkill, and installSkillFolder API endpoints in the kilocode server.
  • Add TUI components for skill selection and marketplace browsing.
  • Update the SDK with new kilocode service methods and types.
  • Add new keybindings for skill management actions in the CLI.

Issue

Fixes #

Context

Implementation

Screenshots / Video

before after

How to Test

Manual/local verification

Reviewer test steps

Blocked checks and substitute verification

Checklist

  • Issue linked above, or exception explained
  • Tests/verification described
  • Screenshots/video included for visual changes, or marked N/A
  • Changeset considered for user-facing changes
  • I personally reviewed the diff and can explain the changes, including any AI-assisted work.

Get in Touch

Add functionality to browse, install, and uninstall skills via the CLI.
This includes support for installing skills from tarball URLs,
registering local skill folders, and managing a skill marketplace.

- Implement `installSkill`, `removeInstalledSkill`, and
  `installSkillFolder` API endpoints in the kilocode server.
- Add TUI components for skill selection and marketplace browsing.
- Update the SDK with new kilocode service methods and types.
- Add new keybindings for skill management actions in the CLI.

Co-authored-by: kiloconnect[bot] <240665456+kiloconnect[bot]@users.noreply.github.com>
…kill

The earlier commit merged createSignal into the existing solid-js import and
added the DialogPrompt import inline. Both are Kilo-specific additions in
a shared upstream file. Move them into a kilocode_change start/end block
and restore the original dialog.setSize position so the upstream diff
stays minimal.

Co-authored-by: kiloconnect[bot] <240665456+kiloconnect[bot]@users.noreply.github.com>
The 4 new skill management actions (browse, install url, install folder,
uninstall) were registered with keybind("none", ...) in a4631bc, which
caused DialogSelect to hide them from the footer (it filters out actions
without a bound key). Bind them to F1-F4 by default so the footer renders
all 4 actions out of the box. Users can rebind via kilo.json.

Co-authored-by: kiloconnect[bot] <240665456+kiloconnect[bot]@users.noreply.github.com>
F1 is hijacked by VS Code's command palette in the integrated terminal
and F2-F4 are unreliable across terminal emulators. Switch the 4 skill
management action keybinds to leader-letter combos (ctrl+x k/i/f/d)
matching the existing TUI convention (e.g. ctrl+x b for sidebar,
ctrl+x e for editor, ctrl+x m for model list). These are guaranteed
to reach the TUI in any terminal, including VS Code's integrated
terminal and Codespaces.

Co-authored-by: kiloconnect[bot] <240665456+kiloconnect[bot]@users.noreply.github.com>
Two issues with the skill management dialog actions:

1. Footer actions were only triggerable via keybind. Add onMouseUp
   handlers to each action label so users can click them with the
   mouse. The handler uses actions().find(a => a.title === item.title)
   to look up the original action with proper typing (visibleActions
   widens the discriminated union and drops variant-only fields).
   Mirrors the requiresSelection logic from the useBindings run()
   handler at lines 319-330.

2. Previous keybind attempt used <leader>k/i/f/d (ctrl+x + letter).
   The leader mechanism requires two keypresses within the leader
   timeout (default 2s) and is fragile in terminal emulators and
   Codespaces. Switch to direct ctrl+shift+letter combos that are
   captured by neither the TUI nor VS Code's integrated terminal:
     browse       = ctrl+shift+b
     install url  = ctrl+shift+i
     install folder = ctrl+shift+f
     uninstall    = ctrl+shift+u

Co-authored-by: kiloconnect[bot] <240665456+kiloconnect[bot]@users.noreply.github.com>
…face errors

Three real bugs in the marketplace browse dialog, all silent:

1. The marketplace API at https://api.kilo.ai/api/marketplace/skills
   returns application/x-yaml (~28 KB, 40 items, top-level
   { items: [...] } mapping). The client only tried JSON.parse which
   threw, falling back to { items: [] }. The dialog saw an empty list
   and the user had no idea why.

2. The schema declared name/displayName/displayCategory fields that
   the API never returns (it returns id, description, category,
   githubUrl, rawUrl, content). Both the Zod schema in marketplace.ts
   and the HTTP route schema in groups/kilocode.ts were wrong.

3. The dialog had no error/loading/empty UI. Any failure
   (network, parse, schema) was invisible.

Fixes:
- Add yaml to packages/opencode/package.json (already a Kilo dep
  in kilo-vscode and kilo-console).
- parseResponse() now tries parseYaml first, then JSON, then empty.
- SkillItem/RawSkill schemas match the real 6-field API response.
- Server route schema (MarketplaceSkillItem) updated to match.
- Dialog title-cases item.id / item.category on the client for display.
- Dialog surfaces data.error in the footer (loading/error/empty).
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant