# shellcheck disable=SC2016

xrc:mod:lib     skill   dir/ls dir/sum

___x_cmd_skill_dir(){
    [ $# -gt 0 ]    ||  set -- --help

    local op="$1" ;     shift
    case "$op" in
        -h|--help)  ___x_cmd help -m skill dir "$@";    return 0 ;;
        sum|ls)
            ___x_cmd_skill_dir_"$op" "$@" ;;
    esac
}

___x_cmd_skill_dir___ls(){
    local folder="$1"
    [ -d "$folder" ]    ||  return 0
    local x_=""; ___x_cmd fsiter --dir_ "$folder"

    local name
    while read -r name; do
        [ "$name" = "${name#.}" ] || continue
        printf "%s\n" "$folder/$name"
    done <<A
$x_
A
}

___x_cmd_skill_dir___lsall(){
    local ws="$1"

    if [ -n "$ws" ]; then
        ___x_cmd_skill_dir___ls "$ws/.agents/skills"
        ___x_cmd_skill_dir___ls "$ws/.claude/skills"
        ___x_cmd_skill_dir___ls "$ws/.codex/skills"
    fi

    ___x_cmd_skill_dir___ls "$HOME/.openclaw/workspace/skills"
    ___x_cmd_skill_dir___ls "$HOME/.agents/skills"
    ___x_cmd_skill_dir___ls "$HOME/.claude/skills"
    ___x_cmd_skill_dir___ls "$HOME/.codex/skills"
}

___x_cmd_skill_dir___lsall_uniqname(){
    ___x_cmd_skill_dir___lsall "$@" | ___x_cmd_cmds awk '
    FS="/"{
        if (count[$NF] != 1) {
            print $0
            count[$NF] = 1
        }
    }
    '
}

___x_cmd_skill_dir_getws_(){
    x_="$PWD"

    # ___x_cmd_ws_locatefp_ . .agents/skills
    # [ "$x_" = "$HOME" ] || return 0
    # ___x_cmd_ws_locatefp_ . .claude/skills
    # [ "$x_" = "$HOME" ] || return 0
    # ___x_cmd_ws_locatefp_ . .codex/skills
    # [ "$x_" = "$HOME" ] || return 0
    # ___x_cmd_ws_locatefp_ . .gemini/skills
    # [ "$x_" = "$HOME" ] || return 0
}
