From 1bb8624160afd97374f9f4f7d6eeb0408201baaa Mon Sep 17 00:00:00 2001 From: xintaofei Date: Sat, 11 Apr 2026 09:49:33 +0800 Subject: [PATCH] fix(chat): restore ~/.agents/skills/ as additional Codex skill dir Codex CLI also reads skills from ~/.agents/skills/, so include it alongside ~/.codex/skills/ in the skill storage spec. The Codex dir stays first so it remains the preferred write target for new links, while lookup and unlink scan both locations. Co-Authored-By: Claude Opus 4.6 (1M context) --- src-tauri/src/commands/acp.rs | 7 +++++-- src-tauri/src/commands/experts.rs | 3 ++- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/src-tauri/src/commands/acp.rs b/src-tauri/src/commands/acp.rs index 6e4e4f0..32a7b55 100644 --- a/src-tauri/src/commands/acp.rs +++ b/src-tauri/src/commands/acp.rs @@ -1213,8 +1213,11 @@ pub(crate) fn skill_storage_spec(agent_type: AgentType) -> Option Some(SkillStorageSpec { kind: SkillStorageKind::SkillDirectoryOrMarkdownFile, - global_dirs: vec![codex_home_dir().join("skills")], - project_rel_dirs: vec![".codex/skills"], + global_dirs: vec![ + codex_home_dir().join("skills"), + home_dir_or_default().join(".agents").join("skills"), + ], + project_rel_dirs: vec![".codex/skills", ".agents/skills"], }), AgentType::OpenCode => Some(SkillStorageSpec { kind: SkillStorageKind::SkillDirectoryOnly, diff --git a/src-tauri/src/commands/experts.rs b/src-tauri/src/commands/experts.rs index f2afb49..50f7457 100644 --- a/src-tauri/src/commands/experts.rs +++ b/src-tauri/src/commands/experts.rs @@ -851,7 +851,8 @@ pub async fn experts_unlink_from_agent( let _guard = mutation_lock().lock().await; - // Scan ALL global dirs for this agent to handle shared-dir agents. + // Scan ALL global dirs for this agent to handle shared-dir agents + // (Codex, Gemini and Cline all also point at `~/.agents/skills/`). // Remove the link wherever it is found. let dirs = scoped_skill_dirs(agent_type, AgentSkillScope::Global, None) .map_err(|_| ExpertsError::UnsupportedAgent(agent_type))?;