# shellcheck shell=dash

___x_cmd_skill_rm(){
    local dir=""
    local agent=""
    local scope="project"
    while [ "$#" -gt 0 ]; do
        case "$1" in
            -h|--help)      ___x_cmd help -m skill rm;             return ;;
            --skill-dir)    dir="$2";           arg:2:shift ;;
            -a|--agent)     agent="$2";         arg:2:shift ;;
            -g|--global)    scope=global;       shift ;;
            -p|--project)   scope=project;      shift ;;
            *)              break ;;
        esac
    done

    [ -n "$dir" ] || {
        case "$agent" in
            claude)         dir=".claude/skills" ;;
            *)              dir=".agents/skills" ;;
        esac
        [ "$scope" = "project" ] || dir="$HOME/$dir"
    }

    local i=;
    for i in "$@"; do
        case "$i" in
            mcp/*)  ___x_cmd_skill_rm___mcp "$dir" "$scope" "$i"   || return $?           ;;
            *)      ___x_cmd_skill_rm___unit "$dir" "$i"  || return $?   ;;
        esac
    done
}

___x_cmd_skill_rm___mcp(){
    local dir="$1"
    local scope="$2"
    local mcpid="$3"

    [ "$scope" != "project" ] || scope="user"
    local name="${mcpid#mcp/*}"

    case "$dir" in
        *.claude/*)
                        ___x_cmd claude -- mcp remove --scope "$scope" "$name" || return $?
                        skill:info "Successfully removed MCP[$mcpid]"                   ;;
        *)              N=skill M="Temporarily not supported" log:ret:64  ;;
    esac
}

___x_cmd_skill_rm___unit(){
    local dir="$1";     [ -n "$dir" ]     || N=skill M="Please provide the dir" log:ret:64
    local skillid="$2"; [ -n "$skillid" ] || N=skill M="Please provide the skill id" log:ret:64

    local x_=""; ___x_cmd_skill___get_name_or_id --getname-with-id "$skillid" || x_="$skillid"
    local target="$dir/$x_"
    skill:debug "Remove skill[$skillid] from directory -> $target"
    ___x_cmd rmrf "$target" || return $?

    skill:info "Successfully removed skill[$skillid]"
}
