# shellcheck shell=dash

___x_cmd_claude_skill(){
    [ "$#" -gt 0 ] ||   set -- ll

    local op="$1";      shift
    case "$op" in
        info|ll|ls|add|rm|use|unuse|suggest)
                            ___x_cmd_claude_skill_"$op"   "$@" ;;
        -h|--help)          ___x_cmd help -m claude skill "$@" ;       return 0 ;;
        *)                  N=claude M="skill not such [subcmd=$op]" log:ret:64 ;;
    esac
}

___x_cmd_claude_skill_ll(){
    [ "$#" -gt 0 ] || {
        if ___x_cmd_is_stdout2tty && ___x_cmd_runmode_allow_manual; then
            set - --fzapp
        else
            set - --tsv
        fi
    }

    local op="$1"; shift
    case "$op" in
        -h|--help)      ___x_cmd help -m claude skill ll;    return 0 ;;
        --fzapp)        ___x_cmd_claude_skill_ll___fzapp         "$@" ;;
        *)              ___x_cmd skill ll "$op" "$@" ;;
    esac
}

___x_cmd_claude_skill_ll___fzapp(){
    local x_=""; ___x_cmd skill ll --fzapp_ "$@" || return $?

    local id=
    ___x_cmd ui select id "Next:"                   \
        "x claude skill add $x_"                    \
        "x claude skill use $x_"                    \
        "Show detailed information --> $x_"         \
        "EXIT"     || return $?

    case "$id" in
        1)  ___x_cmd claude skill add "$x_"         ;;
        2)  ___x_cmd claude skill use "$x_"         ;;
        3)  ___x_cmd skill ll --fzpreview "$x_"     ;;
        *)  return 0;;
    esac
}

___x_cmd_claude_skill_ls(){
    case "$1" in
        -h|--help)          ___x_cmd help -m claude skill ls;       return 0 ;;
    esac

    ___x_cmd skill ls --agent claude "$@"
}

___x_cmd_claude_skill_add(){
    case "$1" in
        -h|--help)              ___x_cmd help -m claude skill add ; return 0 ;;
    esac

    ___x_cmd skill add --agent claude "$@"
}

___x_cmd_claude_skill_rm(){
    case "$1" in
        -h|--help)              ___x_cmd help -m claude skill rm ; return 0 ;;
    esac

    ___x_cmd skill rm --agent claude "$@"
}

___x_cmd_claude_skill_unuse(){
    case "$1" in
        -h|--help)              ___x_cmd help -m claude skill unuse ; return 0 ;;
    esac
    ___x_cmd_claude_skill_rm --global "$@"
}

___x_cmd_claude_skill_use(){
    case "$1" in
        -h|--help)              ___x_cmd help -m claude skill use ; return 0 ;;
    esac
    ___x_cmd_claude_skill_add --global "$@"
}

___x_cmd_claude_skill_info(){
    case "$1" in
        -h|--help)              ___x_cmd help -m claude skill info ; return 0 ;;
    esac
    local skillid="${1}"; [ -n "$skillid" ] || N=claude M="Please provide the skill id" log:ret:64
    ___x_cmd skill info "$skillid"
}

___x_cmd_claude_skill_suggest(){
    case "$1" in
        -h|--help)              ___x_cmd help -m claude skill suggest ; return 0 ;;
    esac

    ___x_cmd skill suggest --agent claude "$@"
}
