

# Section: x-cmd awsome skill - https://github.com/x-cmd/skill
___x_cmd_skill_lr___awsome(){
    ___x_cmd_skill_lr___awsome___raw "$@"
}

___x_cmd_skill_lr___awsome___raw(){
    ___x_cmd_skill___data_check || return $?
    ___x_cmd_cmds awk -F'\t' 'NR > 1 {print $1, "\t" , $NF}' "$___X_CMD_SKILL_FULL_INDEX_FILE"
}
# EndSection

# Section: github
___x_cmd_skill_lr___github(){
    ___x_cmd_skill_lr___github___raw "$@"
}

___x_cmd_skill_lr___github___raw(){
    local url="$1"

    local owner; local repo
    owner="${url#https://github.com/}"
    owner="${owner%.git}"
    repo="${owner#*/}"
    owner="${owner%/*}"
    [ -n "$owner" ] && [ -n "$repo" ] || {
        N=skill M="Invalid GitHub URL: $url" log:ret:64
    }

    local cache_dir="$___X_CMD_SKILL_DATA_DIR/github/${owner}/${repo}"
    if [ ! -d "$cache_dir" ]; then
        ___x_cmd_skill___data_fromgithub "$owner" "$repo" "$cache_dir" || return $?
    fi

    local all_skills_data; all_skills_data="$(___x_cmd_cmds find "$cache_dir" -mindepth 1 -type f -name 'SKILL.md' 2>/dev/null)"
    [ -n "$all_skills_data" ] || {
        N=skill M="No skills found in ${owner}/${repo}" log:ret:1
    }

    local skill_data
    while read -r skill_data; do
        local skill_dir="${skill_data%/SKILL.md}"
        local name="${skill_dir##*/}"

        local desc=""; local x_=""
        ___x_cmd_skill_util___preview_get_file_desc_ "$skill_data"
        desc="${x_:-"(No description)"}"

        local IFS="$___X_CMD_UNSEENCHAR_HT"
        printf "%s\t%s\n" "$name" "$desc"
    done <<A
$all_skills_data
A
}
# EndSection

# Section: x-cmd mod skill
___x_cmd_skill_lr___xcmd(){
    ___x_cmd_skill_lr___xcmd___raw
}

___x_cmd_skill_lr___xcmd___raw(){
    [ -n "$___X_CMD_ADVISE_MAN_CACHE_X_ADVISE_JSO" ] || {
        ___x_cmd advise gen_x_advise || return $?
    }
    local filepath="$___X_CMD_ADVISE_MAN_CACHE_X_ADVISE_JSO"
    [ -f "$filepath" ] || return $?
    ___X_CMD_ROOT_ADV="$___X_CMD_ROOT_ADV" \
    < "$filepath" ___x_cmd_cmds_awk \
        -f "$___X_CMD_ROOT_MOD/awk/lib/core.awk"        \
        -f "$___X_CMD_ROOT_MOD/awk/lib/j/json.awk"      \
        -f "$___X_CMD_ROOT_MOD/awk/lib/j/jiter.awk"     \
        -f "$___X_CMD_ROOT_MOD/awk/lib/j/jop.awk"       \
        -f "$___X_CMD_ROOT_MOD/awk/lib/j/jcp.awk"       \
        -f "$___X_CMD_ROOT_MOD/advise/lib/awk/advise.obj.awk"   \
        -f "$___X_CMD_ROOT_MOD/advise/lib/awk/advise.util.awk"  \
        -f "$___X_CMD_ROOT_MOD/advise/lib/awk/advise.share.awk" \
        -f "$___X_CMD_ROOT_MOD/advise/lib/awk/advise/advise.complete.awk" \
        -f "$___X_CMD_ROOT_MOD/skill/lib/awk/lr_xcmd_mod.awk"
}

___x_cmd_skill_lr___xcmd___generate_mod(){
    local name="$1"

    local desc; local tldr
    ___x_cmd advise simple --en --dfs --field 'desc|tldr' --json x "$name" | {
        ___x_cmd jo env . desc='.#desc.en' tldr='.#tldr'
        if [ -n "$desc" ] && [ -n "$tldr" ]; then
            local cmd; local en
            tldr="$(printf "%s" "$tldr" | ___x_cmd jo env .\* cmd=.cmd en=.en -- 'printf "[(TLDR)%s]=\`%s\` " "$en" "$cmd" ')"
            desc="$desc |$tldr"
            desc="$desc |Use 'x $name --help' for more examples and instruction."
            desc="$(printf "%s" "$desc" | ___x_cmd_cmds tr '\n' ' ')"
            printf "%s\t%s\n" "x-mod/$name" "$desc"
        fi
    }
}

___x_cmd_skill_lr___xcmd___generate_modskill(){
    local name="$1"

    printf "%s\n" "---"
    printf "name: %s\n" "$name"
    printf "description: "
    local desc; local tldr
    ___x_cmd advise simple --en --dfs --field 'desc|tldr' --json x "$name" | {
        ___x_cmd jo env . desc='.#desc.en' tldr='.#tldr'
        if [ -n "$desc" ] && [ -n "$tldr" ]; then
            local cmd; local en
            tldr="$(printf "%s" "$tldr" | ___x_cmd jo env .\* cmd=.cmd en=.en -- 'printf "[(TLDR)%s]=\`%s\` " "$en" "$cmd" ')"
            desc="$desc |$tldr"
            desc="$desc |Use 'x $name --help' for more examples and instruction."
            desc="$(printf "%s" "$desc" | ___x_cmd_cmds tr '\n' ' ')"
            printf "%s" "$desc"
        fi
    }
    printf "\n%s\n" "---"
    ___X_CMD_RUNMODE=0 ___x_cmd "$name" --help
}
# EndSection

