11import { describe , expect , it } from "vite-plus/test" ;
22
33import {
4+ dedupeProviderSkillsByName ,
45 formatProviderSkillDisplayName ,
56 getProviderSlashCommandsForSlashMenu ,
67 getProviderSkillsForSlashMenu ,
@@ -26,6 +27,31 @@ describe("formatProviderSkillDisplayName", () => {
2627 } ) ;
2728} ) ;
2829
30+ describe ( "dedupeProviderSkillsByName" , ( ) => {
31+ it ( "keeps the first resolved skill and preserves unrelated skill order" , ( ) => {
32+ const firstSkill = {
33+ name : "branch-audit" ,
34+ path : "/Users/matt/.codex/skills/branch-audit/SKILL.md" ,
35+ enabled : true ,
36+ } ;
37+ const otherSkill = {
38+ name : "browser" ,
39+ path : "/Users/matt/.agents/skills/browser/SKILL.md" ,
40+ enabled : true ,
41+ } ;
42+ const duplicateSkill = {
43+ name : "Branch-Audit" ,
44+ path : "/Users/matt/.agents/skills/branch-audit/SKILL.md" ,
45+ enabled : true ,
46+ } ;
47+
48+ expect ( dedupeProviderSkillsByName ( [ firstSkill , otherSkill , duplicateSkill ] ) ) . toEqual ( [
49+ firstSkill ,
50+ otherSkill ,
51+ ] ) ;
52+ } ) ;
53+ } ) ;
54+
2955describe ( "getProviderSkillsForSlashMenu" , ( ) => {
3056 it ( "keeps the skill alias when the provider also exposes it as a slash command" , ( ) => {
3157 const askMatt = {
@@ -52,6 +78,49 @@ describe("getProviderSkillsForSlashMenu", () => {
5278 const skills = [ { name : "ask-matt" , path : "/skills/ask-matt/SKILL.md" , enabled : true } ] ;
5379 expect ( getProviderSkillsForSlashMenu ( skills , false ) ) . toEqual ( [ ] ) ;
5480 } ) ;
81+
82+ it ( "shows one row when enabled skills share a name" , ( ) => {
83+ const skills = [
84+ {
85+ name : "babysit-pr" ,
86+ path : "/Users/matt/.codex/skills/babysit-pr/SKILL.md" ,
87+ enabled : true ,
88+ } ,
89+ {
90+ name : "browser" ,
91+ path : "/Users/matt/.agents/skills/browser/SKILL.md" ,
92+ enabled : true ,
93+ } ,
94+ {
95+ name : "babysit-pr" ,
96+ path : "/Users/matt/.agents/skills/babysit-pr/SKILL.md" ,
97+ enabled : true ,
98+ } ,
99+ ] ;
100+
101+ expect ( getProviderSkillsForSlashMenu ( skills , true ) . map ( ( skill ) => skill . name ) ) . toEqual ( [
102+ "babysit-pr" ,
103+ "browser" ,
104+ ] ) ;
105+ } ) ;
106+
107+ it ( "keeps an enabled skill when a disabled duplicate appears first" , ( ) => {
108+ const enabledSkill = {
109+ name : "babysit-pr" ,
110+ path : "/Users/matt/.agents/skills/babysit-pr/SKILL.md" ,
111+ enabled : true ,
112+ } ;
113+ const skills = [
114+ {
115+ name : "babysit-pr" ,
116+ path : "/Users/matt/.codex/skills/babysit-pr/SKILL.md" ,
117+ enabled : false ,
118+ } ,
119+ enabledSkill ,
120+ ] ;
121+
122+ expect ( getProviderSkillsForSlashMenu ( skills , true ) ) . toEqual ( [ enabledSkill ] ) ;
123+ } ) ;
55124} ) ;
56125
57126describe ( "getProviderSlashCommandsForSlashMenu" , ( ) => {
0 commit comments