@@ -796,23 +796,31 @@ func GlobalSkillsDirs() []string {
796796 return []string{crushSkills}
797797 }
798798
799− // Determine the base config directory.
800− var configBase string
801− if xdgConfigHome := os.Getenv("XDG_CONFIG_HOME"); xdgConfigHome != "" {
802− configBase = xdgConfigHome
803− } else if runtime.GOOS == "windows" {
804− configBase = cmp.Or(
799+ configHome := cmp.Or(
800+ os.Getenv("XDG_CONFIG_HOME"),
801+ filepath.Join(home.Dir(), ".config"),
802+ )
803+
804+ paths := []string{
805+ filepath.Join(configHome, appName, "skills"),
806+ filepath.Join(configHome, "agents", "skills"),
807+ }
808+
809+ // On Windows, also load from app data on top of `$HOME/.config/crush`.
810+ // This is here mostly for backwards compatibility.
811+ if runtime.GOOS == "windows" {
812+ appData := cmp.Or(
805813 os.Getenv("LOCALAPPDATA"),
806814 filepath.Join(os.Getenv("USERPROFILE"), "AppData", "Local"),
807815 )
808− } else {
809− configBase = filepath.Join(home.Dir(), ".config")
816+ paths = append(
817+ paths,
818+ filepath.Join(appData, appName, "skills"),
819+ filepath.Join(appData, "agents", "skills"),
820+ )
810821 }
811822
812− return []string{
813− filepath.Join(configBase, appName, "skills"),
814− filepath.Join(configBase, "agents", "skills"),
815− }
823+ return paths
816824}
817825
818826func isAppleTerminal() bool { return os.Getenv("TERM_PROGRAM") == "Apple_Terminal" }