Skip to content

Claude plugin skills show doubled names in the /skill picker ("Frontend Design Frontend Design") #26295

Description

@EtanHey

What happens

Claude plugin skills are named <plugin>:<skill>. When the plugin and the skill share a name, the composer's skill picker shows the words twice:

Skill name Picker label
frontend-design:frontend-design Frontend Design Frontend Design
code-simplifier:code-simplifier Code Simplifier Code Simplifier
skill-creator:skill-creator Skill Creator Skill Creator
html-plan:html-plan Html Plan Html Plan

Why

formatProviderSkillDisplayName (packages/shared/src/inlineSkills.ts) uses the provider's displayName when there is one, else titleCaseWords(skill.name), which splits on [\s:_-]+. The Claude provider doesn't set displayName (Codex, Cursor and OpenCode do), so the : between namespace and skill becomes a plain space and the repeated name shows twice.

Suggested fix (either works)

  1. Collapse ns:ns to one name: when the part before the first : equals the part after it, title-case only one.
  2. More generally, title-case only the part after the first : and render the namespace as a muted prefix or suffix, so pstack:comment-sicko stays distinguishable from a local comment-sicko.

A unit test in inlineSkills.test.ts for frontend-design:frontend-design → "Frontend Design" would pin it.

Activity

  1. EtanHey commented on Oct 28, 2026

    @EtanHey
    ContributorAuthor

    Rechecked on 2026-10-28 through T3 Code's built-in triage playbook with Codex / GPT-6.1 Sol.

    Executed the actual pure source functions from both the installed tag v0.1.4-nightly.20261028.3814 and latest published tag v0.1.4-nightly.20261028.3824. In both:

    formatProviderSkillDisplayName({name: "frontend-design:frontend-design"})
    => "Frontend Design Frontend Design"
    

    Supplying displayName: "Frontend Design" produces the desired single name, but Claude's skill enumeration in provider/Drivers/ClaudeSkills.ts still creates the skill record without displayName. Both that producer and the formatter are unchanged between the two tags.

    Keeping this open. These are executed source-function checks, not a fresh visual test of the skill picker or a live .3824 app run.

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

Metadata

Metadata

Assignees

No one assigned

    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