MoonshotAI / MoonshotAI/kimi-code
Plugin-qualified skill names are not resolved by the native Skill tool
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
-
Install and enable
obra/superpowers. -
Start a new session so
sessionStart.skill = "using-superpowers"loads. -
Invoke the native Skill tool with:
{"skill":"superpowers:systematic-debugging"} -
Observe
not found in the current skill listing. -
Invoke:
{"skill":"systematic-debugging"} -
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:
InMemorySkillCatalogmaintainsbyName,byPluginAndName, andgetPluginSkill(pluginId, name):
https://github.com/MoonshotAI/kimi-code/blob/main/packages/agent-core-v2/src/app/skillCatalog/registry.ts- Plugin
sessionStartcorrectly callsgetPluginSkill(pluginId, skillName):
https://github.com/MoonshotAI/kimi-code/blob/main/packages/agent-core-v2/src/agent/plugin/agentPluginService.ts - The native model Skill tool only calls
getSkill(args.skill):
https://github.com/MoonshotAI/kimi-code/blob/main/packages/agent-core-v2/src/agent/tools/skill/skillTool.ts - User slash activation also only calls
getSkill(input.name):
https://github.com/MoonshotAI/kimi-code/blob/main/packages/agent-core-v2/src/agent/skill/skillService.ts - Source-priority merging handles workspace/user/extra/plugin/builtin collisions, but does not provide explicit selection between same-priority plugins:
https://github.com/MoonshotAI/kimi-code/blob/main/packages/agent-core-v2/src/app/skillCatalog/skillSource.ts
https://github.com/MoonshotAI/kimi-code/blob/main/packages/agent-core-v2/src/session/sessionSkillCatalog/skillCatalogService.ts
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
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- 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