MoonshotAI / MoonshotAI/kimi-code

Plugin-qualified skill names are not resolved by the native Skill tool

Open
#2,224 1 comment 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
TypeScript
Stars
7.5k
Forks
1.2k
Avg merge
11h 53m
Merged PRs (30d)
350

Description

Environment

  • Kimi Code: 0.29.1
  • Superpowers: 6.1.1
  • Platform: MINGW64_NT-10.0-19045 3.5.7-463ebcdc.x86_64 x86_64 unknown
  • Provider/model: not relevant; the failure is deterministic in local skill catalog/tool resolution.

Problem

Plugin-qualified skill names such as superpowers:systematic-debugging cannot be invoked through the native Skill tool, even though the plugin skill is installed and can be invoked by its bare name.

Skill("superpowers:systematic-debugging")
→ Skill "superpowers:systematic-debugging" not found in the current skill listing.

Skill("systematic-debugging")
→ Skill "systematic-debugging" loaded inline. Follow its instructions.

This breaks Superpowers' normal bootstrap flow. Its using-superpowers skill uses cross-harness canonical names such as:

"Fix this bug" → superpowers:systematic-debugging
"Let's build X" → superpowers:brainstorming

The Kimi plugin adapter correctly tells the model to use Kimi Code's native Skill tool, but that tool only accepts the unqualified bare name.

This also leaves plugin-to-plugin collisions unresolved. If two plugins provide review or brainstorming, the global bare-name catalog keeps one registration-order winner, while normal user/model invocation has no way to select the other plugin's skill.

Reproduction

  1. Install and enable obra/superpowers.

  2. Start a new session so sessionStart.skill = "using-superpowers" loads.

  3. Invoke the native Skill tool with:

    {"skill":"superpowers:systematic-debugging"}
    
  4. Observe not found in the current skill listing.

  5. Invoke:

    {"skill":"systematic-debugging"}
    
  6. Observe that the same installed skill loads successfully.

Expected behavior

Support plugin-qualified identities for model and user invocation, retaining bare names as compatibility aliases when unambiguous:

Skill("superpowers:systematic-debugging")
→ catalog.getPluginSkill("superpowers", "systematic-debugging")

Skill("systematic-debugging")
→ load when exactly one candidate exists
→ return an ambiguity error listing qualified candidates when multiple plugins provide it

The model-facing listing should expose each plugin skill's exact invocable canonical ID, e.g. superpowers:systematic-debugging, so names round-trip through the Skill tool.

Source analysis

The catalog already contains most of the required machinery:

I searched open and closed issues for qualified skill names, plugin namespaces, getPluginSkill, Superpowers skill-not-found errors, and duplicate plugin skill names, and found no existing report covering this behavior.

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start with packages/agent-core-v2/src/agent/tools/skill/skillTool.ts and packages/agent-core-v2/src/agent/skill/skillService.ts, then trace registry.ts and the catalog merging services. Verify how getSkill and getPluginSkill resolve names and how canonical IDs are listed. Done means qualified plugin names resolve, unqualified names remain aliases only when unique, and collisions produce an ambiguity error listing qualified candidates.

Written by the indexing model from the issue text.

Assessment

Tech stack
typescript
Domain
cli, tooling
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Quiet
Clarity
Clearly specified
Newbie friendliness
52/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.