diff --git a/frontend/src/app/pages/Skills/Skills.tsx b/frontend/src/app/pages/Skills/Skills.tsx index 60583064..6e7578db 100644 --- a/frontend/src/app/pages/Skills/Skills.tsx +++ b/frontend/src/app/pages/Skills/Skills.tsx @@ -67,6 +67,9 @@ type Selection = const emptyForm: SkillForm = { name: '', description: '', content: '', command: '' }; +// One naming grammar everywhere: skills read as kebab slugs (the Directory grid's /slug style), whatever casing they were authored with. +const skillSlug = (name: string): string => name.trim().toLowerCase().replace(/\s+/g, '-'); + interface SkillsProps { /** Provided when hosted inside the Marketplace: Browse switches the view in place instead of opening a nested dialog. */ onBrowseDirectory?: () => void; @@ -424,7 +427,7 @@ const Skills: React.FC = ({ onBrowseDirectory, focusSkillId }) => { }} > - {sk.name} + {skillSlug(sk.name)} {sk.enabled === false && ( Disabled )} @@ -508,7 +511,7 @@ const Skills: React.FC = ({ onBrowseDirectory, focusSkillId }) => { - {selectedLocal.name} + {skillSlug(selectedLocal.name)} {selectedLocal.command && (