From 4f5316295e033bf79db1d80136df7235bce93572 Mon Sep 17 00:00:00 2001 From: Haoqing Wang <1506751656@qq.com> Date: Fri, 17 Apr 2026 04:03:28 +0000 Subject: [PATCH] fix(cli): include ~/.codex/skills in user skill discovery (#482) The skill listing only scanned ~/.agents/skills and ~/.claude/skills for user-level skills, ignoring ~/.codex/skills where Codex users commonly store their skills. Add ~/.codex/skills to getUserSkillsRoots() so these skills appear in the web UI $ autocomplete. Hidden directories (starting with .) inside the skills root are still skipped (e.g., .system/). via [HAPI](https://hapi.run) Co-Authored-By: HAPI --- cli/src/modules/common/skills.test.ts | 5 +++-- cli/src/modules/common/skills.ts | 1 + 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/cli/src/modules/common/skills.test.ts b/cli/src/modules/common/skills.test.ts index 2b6776b4d..b6d597e98 100644 --- a/cli/src/modules/common/skills.test.ts +++ b/cli/src/modules/common/skills.test.ts @@ -69,14 +69,15 @@ describe('listSkills', () => { expect(skills.find((s) => s.name === 'alpha')?.description).toBe('Alpha from agents') }) - it('ignores legacy ~/.codex skills', async () => { + it('lists user skills from ~/.codex/skills', async () => { await writeSkill(join(homeDir, '.agents', 'skills', 'amis'), 'amis', 'AMIS guide') await writeSkill(join(homeDir, '.codex', 'skills', 'hello-agents'), 'helloagents', 'Main skill') + // Hidden directories (starting with .) are skipped await writeSkill(join(homeDir, '.codex', 'skills', '.system', 'skill-creator'), 'skill-creator', 'Create skills') const skills = await listSkills() - expect(skills.map((skill) => skill.name)).toEqual(['amis']) + expect(skills.map((skill) => skill.name)).toEqual(['amis', 'helloagents']) }) it('falls back to directory name when frontmatter is missing', async () => { diff --git a/cli/src/modules/common/skills.ts b/cli/src/modules/common/skills.ts index b10b6c1ce..e63f84c38 100644 --- a/cli/src/modules/common/skills.ts +++ b/cli/src/modules/common/skills.ts @@ -26,6 +26,7 @@ function getUserSkillsRoots(): string[] { return [ join(home, '.agents', 'skills'), join(home, '.claude', 'skills'), + join(home, '.codex', 'skills'), ]; }