# shellcheck shell=dash disable=2016

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

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

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

___x_cmd_gemini_cli_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 gemini cli skill ll;   return 0 ;;
        --fzapp)        ___x_cmd_gemini_cli_skill_ll___fzapp        "$@" ;;
        *)              ___x_cmd skill ll "$op" "$@" ;;
    esac
}

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

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

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

___x_cmd_gemini_cli_skill_ls(){
    local X_help_cmd; X_help_cmd='___x_cmd help -m gemini cli skill ls' help:arg:parse
    ___x_cmd skill ls --agent gemini "$@"
}

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

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

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

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

___x_cmd_gemini_cli_skill_unuse(){
    local X_help_cmd; X_help_cmd='___x_cmd help -m gemini cli skill unuse' help:arg:parse
    ___x_cmd_gemini_cli_skill_rm --global "$@"
}

___x_cmd_gemini_cli_skill_use(){
    local X_help_cmd; X_help_cmd='___x_cmd help -m gemini cli skill use' help:arg:parse
    ___x_cmd_gemini_cli_skill_add --global "$@"
}

___x_cmd_gemini_cli_skill_suggest(){
    local X_help_cmd; X_help_cmd='___x_cmd help -m gemini cli skill suggest' help:arg:parse
    ___x_cmd skill suggest --agent gemini "$@"
}
