You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Claude plugin skills show doubled names in the /skill picker ("Frontend Design Frontend Design") #26295
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)
Collapse ns:ns to one name: when the part before the first : equals the part after it, title-case only one.
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.
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:
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.
Activity
EtanHey commentedon Oct 28, 2026
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.3814and latest published tagv0.1.4-nightly.20261028.3824. In both:Supplying
displayName: "Frontend Design"produces the desired single name, but Claude's skill enumeration inprovider/Drivers/ClaudeSkills.tsstill creates the skill record withoutdisplayName. 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
.3824app run.