fix: adopt plural config dirs for agents, commands, and skills (#198)

This commit is contained in:
Bohdan Triapitsyn
2026-01-23 00:27:01 +02:00
committed by GitHub
parent 7c36418e23
commit 95e41940f8
7 changed files with 356 additions and 59 deletions
@@ -1312,6 +1312,14 @@ pub struct SkillsInstallRequest {
}
fn user_skill_dir() -> Result<PathBuf> {
Ok(dirs::home_dir()
.ok_or_else(|| anyhow!("Could not find home directory"))?
.join(".config")
.join("opencode")
.join("skills"))
}
fn legacy_user_skill_dir() -> Result<PathBuf> {
Ok(dirs::home_dir()
.ok_or_else(|| anyhow!("Could not find home directory"))?
.join(".config")
@@ -1321,14 +1329,27 @@ fn user_skill_dir() -> Result<PathBuf> {
fn target_skill_dir(scope: &str, working_directory: &Path, skill_name: &str) -> Result<PathBuf> {
if scope == "user" {
return Ok(user_skill_dir()?.join(skill_name));
let preferred = user_skill_dir()?.join(skill_name);
let legacy = legacy_user_skill_dir()?.join(skill_name);
if legacy.exists() && !preferred.exists() {
return Ok(legacy);
}
return Ok(preferred);
}
if scope == "project" {
return Ok(working_directory
let preferred = working_directory
.join(".opencode")
.join("skills")
.join(skill_name);
let legacy = working_directory
.join(".opencode")
.join("skill")
.join(skill_name));
.join(skill_name);
if legacy.exists() && !preferred.exists() {
return Ok(legacy);
}
return Ok(preferred);
}
Err(anyhow!("Invalid scope"))