# SophHub CLI

SophHub CLI 是一个命令行工具，用于浏览和下载 AI Agent Skill。

## 安装

```bash
npm install -g sophhub
```

或者用 `npx` 免安装直接运行：

```bash
npx sophhub list
```

要求 Node.js >= 18。

## 使用

### 查看所有 Skill

```bash
sophhub list
```

按类型筛选：

```bash
sophhub list --type builtin
sophhub list --type store
```

以 JSON 格式输出（方便脚本和管道消费）：

```bash
sophhub list --json
sophhub list --type store --json
```

### 下载 Skill

下载单个 Skill 到当前目录：

```bash
sophhub download weather
```

指定输出目录：

```bash
sophhub download didi-ride -o ./my-skills
```

批量下载某个类型的所有 Skill：

```bash
sophhub download --type builtin -o ./skills
sophhub download --type store -o ./skills
```

### 查看 Skill 详细信息

查看某个 Skill 的完整元数据（版本、类型、描述、changelog 等）：

```bash
sophhub info flight-booking
```

输出示例：

```
  Skill:        flight-booking
  Version:      1.1.0
  Types:        builtin
  Created:      2026-04-09
  Updated:      2026-04-09

  Changelog:
    v1.1.0 (2026-04-09)
      - 初次提交
```

以 JSON 格式输出完整 `skill.json` 内容：

```bash
sophhub info aippt --json
```

### 管理 Agent

列出所有可用 Agent：

```bash
sophhub agent list
```

以 JSON 输出：

```bash
sophhub agent list --json
```

下载某个 Agent 到当前目录（会生成 `./<agent_id>/`）：

```bash
sophhub agent download ai-cs-admin
```

指定目标目录（生成 `<dir>/<agent_id>/`）：

```bash
sophhub agent download ai-cs-admin --path /home/node/.openclaw/workspace
```

### 查看版本

```bash
sophhub --version
```

### 查看帮助

```bash
sophhub --help
sophhub list --help
sophhub download --help
sophhub info --help
sophhub agent --help
sophhub agent list --help
sophhub agent download --help
```

## 配置

可通过 `~/.sophhubrc.json` 配置默认行为：

```json
{
  "defaultOutput": "."
}
```

| 字段 | 说明 | 默认值 |
| --- | --- | --- |
| `defaultOutput` | download 默认输出目录 | `.`（当前目录） |

命令行参数 `-o` 优先级高于配置文件。

## 开发

```bash
# 克隆仓库
git clone git@gitlab.sophgo.vip:llm-open-platform/sophclaw-skills.git
cd sophclaw-skills/cli

# 安装依赖
npm install

# 准备内置 skill（从仓库根目录拷贝到 cli/skills/）
bash scripts/prepublish.sh

# 全局注册命令（符号链接，修改代码即时生效）
npm link

# 调试
sophhub list
sophhub download weather -o /tmp/test

# 调试完毕后卸载
npm unlink -g sophhub
```

## 发版

合入 main 后由 GitLab CI 自动完成版本号 bump 与 npm publish。版本类型由最近一次 commit message 决定：

- 含 `[major]` → major
- 含 `[minor]` → minor
- 否则 → patch（默认）

在 MR 标题里加上 `[minor]` 或 `[major]` 即可。

### 应急：手动发版

CI 不可用时可以本地发：

```bash
cd cli

# 升版本（patch / minor / major）
npm version patch

# 发布（自动触发 prepublish 打包 skills）
npm publish

# 推送 tag
git push && git push --tags
```
