Skill: welliu/skills-finder (version 1.6.0)

--- name: skills-finder version: 1.6.0 description: Intelligent skill matcher that searches multiple skill marketplaces (ClawHub & Skills.sh) in real-time. Supports ANY language for user input, multi-step skill chaining, and one-click installation. --- # Skills Finder 🔍 **Intelligent skill discovery engine that searches multiple skill marketplaces and recommends the best skills for your task.** --- ## 🎯 When to Use **Automatically triggers when user wants to find or install skills:** | User Intent | Examples | |-------------|----------| | Find skills | "帮我找个...", "find a skill", "buscar herramienta", "スキルを探して" | | Search for capability | "有什么skill能做...", "what can you do", "有什么工具" | | Install skill | "安装...", "install", "instalar", "インストール" | | Get recommendations | "推荐...", "recommend", "recomendar", "おすすめ" | --- ## 🌍 Universal Language Support **This skill supports ANY language for user input!** ### Supported Languages (Truly Universal) This skill supports **ALL languages and scripts** including but not limited to: | Language Family | Examples | |-----------------|----------| | **European** | English, Spanish, French, German, Italian, Portuguese, Russian | | **Asian** | Chinese (中文), Japanese (日本語), Korean (한국어), Vietnamese, Thai | | **Middle Eastern** | Arabic, Hebrew, Persian, Turkish | | **South Asian** | Hindi, Bengali, Tamil, Urdu | | **African** | Swahili, Zulu, Amharic | | **Special** | Emoji queries 📱💻🔍 | --- ## 🌐 Supported Skill Marketplaces ### 1. ClawHub (clawhub.ai) ```bash npx clawhub@latest search "<query>" npx clawhub@latest install <name> ``` - **5,400+** skills available - Open-source AI assistant skills - Rating-based recommendations ### 2. Skills CLI (skills.sh) ```bash npx skills find "<query>" npx skills add <package> ``` - **Skills.sh** - The package manager for open agent skills - Modular packages that extend agent capabilities - Specialized knowledge, workflows, and tools --- ## ⚡ Quick Commands ```bash # Search skills (supports ANY language) ~/.openclaw/workspace/skills/skills-finder/scripts/skill-finder.sh search "your query" # Search specific marketplace ~/.openclaw/workspace/skills/skills-finder/scripts/skill-finder.sh search "query" --source clawhub ~/.openclaw/workspace/skills/skills-finder/scripts/skill-finder.sh search "query" --source skills # Search both (default) ~/.openclaw/workspace/skills/skills-finder/scripts/skill-finder.sh search "query" --source all # Install from specific source ~/.openclaw/workspace/skills/skills-finder/scripts/skill-finder.sh install <name> --source clawhub ~/.openclaw/workspace/skills/skills-finder/scripts/skill-finder.sh install <package> --source skills # List installed skills ~/.openclaw/workspace/skills/skills-finder/scripts/skill-finder.sh list ``` --- ## 🔗 Multi-Step Skill Chaining **For complex tasks requiring multiple skills, the search automatically detects and suggests a skill chain.** ### Chain Detection | Task Type | Example | Result | |-----------|---------|--------| | Single skill | "天气skill" | Direct recommendation | | Multi-step | "搜索新闻发送到微信" | Skill chain + composite suggestion | --- ## 📋 Usage Examples ### Example 1: Search Both Sources ``` User: 找个天气skill → ClawHub: weather (3.898⭐) → Skills: @skills/weather Results from both marketplaces shown! ``` ### Example 2: Search Specific Source ``` User: find a skill for GitHub → Searching ClawHub only: - github (3.636⭐) - github-cli (3.538⭐) ``` ### Example 3: Multi-language ``` User: 天気を調べて → ClawHub: weather → Skills: @skills/weather ``` --- ## 🔧 Implementation ### Dual Source Search ```bash # Search ClawHub npx clawhub@latest search "<query>" # Search Skills.sh npx skills find "<query>" # Both results merged and ranked ``` ### Source Priority | Source | Priority | Use Case | |--------|----------|----------| | ClawHub | Default | General AI assistant skills | | Skills.sh | Alternative | Specialized workflows | --- ## ⚠️ Important Notes ### Why Two Sources? 1. **ClawHub** - Large collection of AI assistant skills (5,400+) 2. **Skills.sh** - Specialized workflows and tools for agents Both are searched by default for comprehensive results. ### Rate Limits - **ClawHub**: 60 requests/hour (logged in: higher) - **Skills.sh**: Check with `npx skills --help` --- ## 📦 Dependencies - Node.js + npx - curl - jq --- ## 🦞 Summary **One line: User writes in ANY language → Search both ClawHub & Skills.sh → Respond in user's language → Suggest chain for complex tasks** ---

path: _meta.json
content: {
  "name": "skills-finder",
  "version": "1.6.0",
  "description": "Intelligent skill matcher - searches ClawHub & Skills.sh in real-time. Supports ANY language input, multi-step skill chaining, and one-click installation.",
  "author": "wenew",
  "tags": ["skill", "finder", "matcher", "discovery", "clawhub", "skills.sh", "search", "install", "chain", "automation", "global", "multilingual", "universal"],
  "homepage": "https://github.com/wenew/skills-finder",
  "license": "MIT",
  "metadata": {
    "openclaw": {
      "emoji": "🔗",
      "requires": {
        "bins": ["npx", "jq"]
      },
      "install": [
        {
          "id": "node",
          "kind": "node",
          "package": "clawhub",
          "bins": ["clawhub"],
          "label": "Install ClawHub CLI (npm)"
        },
        {
          "id": "node-skills",
          "kind": "node", 
          "package": "skills",
          "bins": ["skills"],
          "label": "Install Skills CLI (npm)"
        }
      ]
    }
  }
}


path: scripts/skill-finder.sh
content: #!/bin/bash

# Skills Finder - Multi-Source Skill Discovery Engine
# Supports: ClawHub (clawhub.ai) + Skills.sh
# Supports ANY language for user input

set -e

SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
SKILLS_FINDER_DIR="$(dirname "$SCRIPT_DIR")"

# Colors
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
BLUE='\033[0;34m'
CYAN='\033[0;36m'
NC='\033[0m'

print_status() {
    echo -e "${BLUE}[skills-finder]${NC} $1"
}

print_success() {
    echo -e "${GREEN}[✓]${NC} $1"
}

print_warning() {
    echo -e "${YELLOW}[!]${NC} $1"
}

print_error() {
    echo -e "${RED}[✗]${NC} $1"
}

print_source() {
    echo -e "${CYAN}[$1]${NC}"
}

# Universal language detection using Unicode ranges
detect_language() {
    local query="$1"
    
    # Chinese
    if echo "$query" | grep -qE '[\x{4E00}-\x{9FFF}]'; then
        echo "zh"
        return
    fi
    
    # Japanese
    if echo "$query" | grep -qE '[\x{3040}-\x{30FF}\x{4E00}-\x{9FFF}]'; then
        echo "ja"
        return
    fi
    
    # Korean
    if echo "$query" | grep -qE '[\x{AC00}-\x{D7AF}\x{1100}-\x{11FF}]'; then
        echo "ko"
        return
    fi
    
    # Arabic
    if echo "$query" | grep -qE '[\x{0600}-\x{06FF}\x{0750}-\x{077F}]'; then
        echo "ar"
        return
    fi
    
    # Hebrew
    if echo "$query" | grep -qE '[\x{0590}-\x{05FF}]'; then
        echo "he"
        return
    fi
    
    # Cyrillic
    if echo "$query" | grep -qE '[\x{0400}-\x{04FF}]'; then
        echo "ru"
        return
    fi
    
    # Thai
    if echo "$query" | grep -qE '[\x{0E00}-\x{0E7F}]'; then
        echo "th"
        return
    fi
    
    # Devanagari
    if echo "$query" | grep -qE '[\x{0900}-\x{097F}]'; then
        echo "hi"
        return
    fi
    
    # Latin-based
    if echo "$query" | grep -qE '[a-zA-Z]'; then
        if echo "$query" | grep -qiE 'buscar|skill|herramienta|instalar|el|la|un|una'; then
            echo "es"
            return
        fi
        if echo "$query" | grep -qiE 'trouver|chercher|outil|installer|le|la|un|une'; then
            echo "fr"
            return
        fi
        echo "en"
        return
    fi
    
    echo "en"
}

# Check if task requires chaining
detect_chain_needed() {
    local query="$1"
    local chain_keywords="and|和|と|그리고|y enviar|send to|发送到|送信|+|→"
    
    if echo "$query" | grep -qiE "$chain_keywords"; then
        echo "true"
    else
        echo "false"
    fi
}

# Search ClawHub
search_clawhub() {
    local query="$1"
    local limit="$2"
    
    print_source "ClawHub"
    echo "Searching: '$query'"
    
    npx clawhub@latest search "$query" --limit "$limit" 2>&1 || {
        print_warning "ClawHub search failed or rate limited"
    fi
}

# Search Skills.sh
search_skills() {
    local query="$1"
    
    print_source "Skills.sh"
    echo "Searching: '$query'"
    
    npx skills find "$query" 2>&1 || {
        print_warning "Skills.sh search failed"
    fi
}

# Show usage
usage() {
    cat << EOF
Skills Finder - Multi-Source Skill Discovery (v1.6.0)

Supported Sources: ClawHub (clawhub.ai) + Skills.sh (skills.sh)
Supported Languages: ALL

Usage: skills-finder <command> [options]

Commands:
    search <query>     Search skills (default: both sources)
    install <name>     Install a skill
    list               List installed skills
    sources            Show available skill sources

Options:
    --source <name>   Source: clawhub, skills, or all (default: all)
    --limit N         Limit results (default: 10)
    --exact           Exact name match
    --verbose         Detailed output

Examples:
    # Search both sources
    skills-finder search "weather"
    skills-finder search "github integration"
    
    # Search specific source
    skills-finder search "weather" --source clawhub
    skills-finder search "weather" --source skills
    
    # Install
    skills-finder install weather --source clawhub
    skills-finder install @skills/weather --source skills

EOF
    exit 1
}

# Search command
cmd_search() {
    local query=""
    local limit=10
    local source="all"
    local exact=false
    local verbose=false

    while [[ $# -gt 0 ]]; do
        case $1 in
            --source)
                source="$2"
                shift 2
                ;;
            --limit)
                limit="$2"
                shift 2
                ;;
            --exact)
                exact=true
                shift
                ;;
            --verbose)
                verbose=true
                shift
                ;;
            -*)
                echo "Unknown: $1"
                usage
                ;;
            *)
                query="$1"
                shift
                ;;
        esac
    done

    if [[ -z "$query" ]]; then
        print_error "Query required"
        usage
    fi

    local lang=$(detect_language "$query")
    local needs_chain=$(detect_chain_needed "$query")

    print_status "Searching for: '$query' (lang: $lang, source: $source)"
    echo ""

    case "$source" in
        clawhub)
            search_clawhub "$query" "$limit"
            ;;
        skills)
            search_skills "$query"
            ;;
        all)
            search_clawhub "$query" "$limit"
            echo ""
            search_skills "$query"
            ;;
        *)
            print_error "Unknown source: $source"
            usage
            ;;
    esac

    echo ""
    if [[ "$needs_chain" == "true" ]]; then
        print_status "Multi-step task detected"
    fi
}

# Install command
cmd_install() {
    local name="$1"
    local source="all"

    while [[ $# -gt 0 ]]; do
        case $1 in
            --source)
                source="$2"
                shift 2
                ;;
            *)
                name="$1"
                shift
                ;;
        esac
    done

    if [[ -z "$name" ]]; then
        print_error "Skill name required"
        usage
    fi

    print_status "Installing: $name from $source"
    echo ""

    case "$source" in
        clawhub)
            npx clawhub@latest install "$name" 2>&1
            ;;
        skills)
            npx skills add "$name" 2>&1
            ;;
        all)
            print_status "Trying ClawHub first..."
            npx clawhub@latest install "$name" 2>&1 || {
                print_status "Trying Skills.sh..."
                npx skills add "$name" 2>&1
            }
            ;;
    esac
}

# List command
cmd_list() {
    print_status "Installed skills:"
    echo ""
    print_source "ClawHub"
    npx clawhub@latest list 2>&1 || echo "(none)"
    echo ""
    print_source "Skills.sh"
    npx skills list 2>&1 || echo "(none)"
}

# Sources command
cmd_sources() {
    echo "Available Skill Sources:"
    echo ""
    echo "1. ClawHub (clawhub.ai)"
    echo "   - 5,400+ AI assistant skills"
    echo "   - npx clawhub@latest search <query>"
    echo ""
    echo "2. Skills.sh (skills.sh)"
    echo "   - Modular agent skill packages"
    echo "   - npx skills find <query>"
    echo ""
    echo "Default: Search both sources"
}

# Main
main() {
    if [[ $# -eq 0 ]]; then
        usage
    fi

    local cmd="$1"
    shift

    case "$cmd" in
        search)
            cmd_search "$@"
            ;;
        install)
            cmd_install "$@"
            ;;
        list)
            cmd_list
            ;;
        sources)
            cmd_sources
            ;;
        help|--help|-h)
            usage
            ;;
        *)
            print_error "Unknown: $cmd"
            usage
            ;;
    esac
}

main "$@"


path: evals/evals.json
content: {
  "tests": [
    {
      "id": 1,
      "prompt": "找个天气相关的skill",
      "language": "zh",
      "expected": "Should find weather skill in Chinese"
    },
    {
      "id": 2,
      "prompt": "検索スキルを探して",
      "language": "ja",
      "expected": "Should find skills in Japanese"
    },
    {
      "id": 3,
      "prompt": "날씨 스킬 찾아줘",
      "language": "ko",
      "expected": "Should find weather skill in Korean"
    },
    {
      "id": 4,
      "prompt": "buscar skill para el clima",
      "language": "es",
      "expected": "Should find weather skill in Spanish"
    },
    {
      "id": 5,
      "prompt": "搜索AI新闻并发送到微信",
      "language": "zh",
      "expected": "Should detect chain: news + messaging"
    },
    {
      "id": 6,
      "prompt": "天気を調べてLINEに送る",
      "language": "ja",
      "expected": "Should detect chain: weather + messaging"
    },
    {
      "id": 7,
      "prompt": "날씨 검색해서 카톡으로 보내기",
      "language": "ko",
      "expected": "Should detect chain: weather + messaging"
    },
    {
      "id": 8,
      "prompt": "buscar noticias y enviar a WhatsApp",
      "language": "es",
      "expected": "Should detect chain: news + messaging"
    },
    {
      "id": 9,
      "prompt": "找个任务管理的技能",
      "language": "zh",
      "expected": "Should find task management skill"
    },
    {
      "id": 10,
      "prompt": "タスク管理のスキルを教えて",
      "language": "ja",
      "expected": "Should find task management skill"
    },
    {
      "id": 11,
      "prompt": "스킬을 찾고 싶어",
      "language": "ko",
      "expected": "Should find skills in Korean"
    },
    {
      "id": 12,
      "prompt": "quiero encontrar un skill para música",
      "language": "es",
      "expected": "Should find music-related skill"
    },
    {
      "id": 13,
      "prompt": "帮我找股票相关的skill",
      "language": "zh",
      "expected": "Should find stock market skill"
    },
    {
      "id": 14,
      "prompt": " 주식 관련 스킬 찾아줘",
      "language": "ko",
      "expected": "Should find stock skill in Korean"
    },
    {
      "id": 15,
      "prompt": "查询股票并保存到笔记",
      "language": "zh",
      "expected": "Should detect chain: stock + notes"
    },
    {
      "id": 16,
      "prompt": "YouTubeから動画を取得してSlackに送信",
      "language": "ja",
      "expected": "Should detect chain: video + messaging"
    },
    {
      "id": 17,
      "prompt": "天气预报发送到邮件",
      "language": "zh",
      "expected": "Should detect chain: weather + email"
    },
    {
      "id": 18,
      "prompt": "获取GitHub趋势并发送到Telegram",
      "language": "zh",
      "expected": "Should detect chain: github + messaging"
    },
    {
      "id": 19,
      "prompt": "帮我找个发短信的技能",
      "language": "zh",
      "expected": "Should find messaging skill"
    },
    {
      "id": 20,
      "prompt": "Find a skill to control smart home devices",
      "language": "en",
      "expected": "Should find smart home skill"
    }
  ]
}


Security scan verdicts — ClawScan: suspicious | static analysis: clean | VirusTotal: clean | SkillSpector: suspicious (MEDIUM)