#!/bin/sh # skillmarket CLI 安装脚本——托管于 https://skill.10x.sg/dl/install.sh # 用法:curl -fsSL https://skill.10x.sg/dl/install.sh | sh # 产物是自包含单文件 ESM bundle,唯一前置是 Node.js >= 20。 set -e BASE="${SKILLMARKET_BASE:-https://skill.10x.sg}" BIN_DIR="${SKILLMARKET_BIN_DIR:-$HOME/.local/bin}" # 安装内容:默认 CLI + MCP;--mcp-only 只装 MCP(接 Claude Code 用,登录用 # `skillmarket-mcp login`);--cli-only 只装 CLI。 # 管道用法:curl -fsSL .../install.sh | sh -s -- --mcp-only WANT_CLI=1 WANT_MCP=1 for arg in "$@"; do case "$arg" in --mcp-only) WANT_CLI=0 ;; --cli-only) WANT_MCP=0 ;; *) echo "unknown option: $arg(支持 --mcp-only / --cli-only)" >&2; exit 1 ;; esac done if ! command -v node >/dev/null 2>&1; then echo "✗ 需要 Node.js >= 20(https://nodejs.org 或 brew install node)" >&2 exit 1 fi NODE_MAJOR=$(node -e 'process.stdout.write(process.versions.node.split(".")[0])') if [ "$NODE_MAJOR" -lt 20 ]; then echo "✗ Node.js 版本过低(当前 $(node --version),需要 >= 20)" >&2 exit 1 fi mkdir -p "$BIN_DIR" if [ "$WANT_CLI" = 1 ]; then echo "→ 下载 skillmarket CLI…" curl -fsSL "$BASE/dl/skillmarket.mjs" -o "$BIN_DIR/skillmarket" chmod +x "$BIN_DIR/skillmarket" fi if [ "$WANT_MCP" = 1 ]; then echo "→ 下载 skillmarket MCP server…" curl -fsSL "$BASE/dl/skillmarket-mcp.mjs" -o "$BIN_DIR/skillmarket-mcp" chmod +x "$BIN_DIR/skillmarket-mcp" fi echo "" if [ "$WANT_CLI" = 1 ]; then echo "✓ 安装完成:$BIN_DIR/skillmarket($("$BIN_DIR/skillmarket" --version))" else echo "✓ 安装完成:$BIN_DIR/skillmarket-mcp(MCP-only)" fi case ":$PATH:" in *":$BIN_DIR:"*) ;; *) echo "" echo "⚠ $BIN_DIR 不在 PATH 里,加一行到 shell 配置:" echo " export PATH=\"$BIN_DIR:\$PATH\"" ;; esac echo "" echo "下一步:" if [ "$WANT_CLI" = 1 ]; then echo " skillmarket login # ① 先登录(浏览/安装都需要,用浏览器飞书登录)" echo " skillmarket search <关键词> # 搜索市场(需登录)" echo " skillmarket install # 安装 skill 到 ~/.claude/skills/" fi if [ "$WANT_MCP" = 1 ]; then echo " claude mcp add skillmarket -- $BIN_DIR/skillmarket-mcp # 接入 Claude Code" if [ "$WANT_CLI" = 0 ]; then echo " $BIN_DIR/skillmarket-mcp login --token --handle <你> # 先登录(浏览/安装/发布都需要,PAT 在网页\"我的\"页生成)" fi fi