commit 35cf9e004b251182a1e1c2e9ec69da402dbaa775 Author: crislee Date: Tue Mar 31 15:47:53 2026 +0800 v0.1 diff --git a/README.md b/README.md new file mode 100644 index 0000000..ae322e1 --- /dev/null +++ b/README.md @@ -0,0 +1,33 @@ +# use_vala_skillhub + +Vala SkillHub 技能管理 —— 让数字员工推送和安装技能。 + +## 功能 + +- **推送技能**:将本地 `./skills` 下的技能上传到 SkillHub(Gitea 仓库) +- **安装技能**:从 SkillHub 克隆技能到本地 `./skills` 目录 +- **查看技能**:列出 SkillHub 上的所有技能 + +## 命名规则 + +仓库名 = `技能名` + `.` + `来源名` + +| 示例 | 含义 | +|------|------| +| `cron_job.xiaoxi` | xiaoxi 的定时任务技能 | +| `web_scraper.vala` | 公司官方的爬虫技能 | + +来源为 `vala` 的属于公司级别官方技能。 + +## 配置 + +首次使用需提供配置,保存在 `~/.vala_skillhub_config`: + +- `GITEA_URL` — Gitea 服务地址(默认 `https://git.valavala.com`) +- `GITEA_TOKEN` — API Token +- `GITEA_OWNER` — SkillHub 账号(默认 `skillhub`) +- `SOURCE_NAME` — 当前数字员工的 name + +## 使用方式 + +本技能面向 AI 数字员工使用。请参阅 `SKILL.md` 了解完整操作流程和关键命令。 diff --git a/SKILL.md b/SKILL.md new file mode 100644 index 0000000..9473888 --- /dev/null +++ b/SKILL.md @@ -0,0 +1,127 @@ +# use_vala_skillhub + +管理 Vala SkillHub 上的技能:推送(上传)和安装。 + +SkillHub 基于 Gitea,每个技能对应一个 Git 仓库。 + +## 命名规则 + +仓库名格式:`{skill_name}.{source_name}` + +- `skill_name`:技能目录名(如 `cron_job`、`web_scraper`) +- `source_name`:来源名称,即当前数字员工的 name(如 `xiaoxi`) +- 如果 `source_name` 为 `vala`,表示公司级别的官方技能 + +示例: +- `cron_job.xiaoxi` — xiaoxi 的定时任务技能 +- `web_scraper.vala` — 公司官方的爬虫技能 + +## 配置 + +操作前需要确认以下配置(保存到 `~/.vala_skillhub_config`): + +| 配置项 | 说明 | 默认值 | +|--------|------|--------| +| `GITEA_URL` | Gitea 服务地址 | `https://git.valavala.com` | +| `GITEA_TOKEN` | Gitea API Token(需有创建仓库和推送权限) | — | +| `GITEA_OWNER` | SkillHub 统一账号 | `skillhub` | +| `SOURCE_NAME` | 当前数字员工的 name,用于组合仓库名 | — | + +如果配置文件不存在,请询问用户获取以上信息后创建: + +```bash +cat > ~/.vala_skillhub_config < +GITEA_OWNER=skillhub +SOURCE_NAME= +EOF +``` + +后续操作前先加载配置: +```bash +source ~/.vala_skillhub_config +``` + +--- + +## 操作一:推送技能到 SkillHub + +将本地 `./skills` 下的技能目录推送到 SkillHub。 + +### 流程 + +1. **确定仓库名**:`repo_name = {skill_dir_name}.{SOURCE_NAME}` + +2. **检查远程仓库是否存在**: + ```bash + curl -s -o /dev/null -w "%{http_code}" \ + "${GITEA_URL}/api/v1/repos/${GITEA_OWNER}/${repo_name}" \ + -H "Authorization: token ${GITEA_TOKEN}" + ``` + - 返回 200 → 仓库已存在,跳到步骤 4 + - 返回 404 → 需要创建,执行步骤 3 + +3. **创建远程仓库**: + ```bash + curl -s -X POST "${GITEA_URL}/api/v1/user/repos" \ + -H "Authorization: token ${GITEA_TOKEN}" \ + -H "Content-Type: application/json" \ + -d '{"name": "'${repo_name}'", "private": false, "description": "技能描述", "auto_init": false}' + ``` + +4. **在技能目录中初始化 Git 并推送**: + ```bash + cd ./skills/ + git init + git checkout -b main + git add -A + git commit -m "update: sync skill" + git remote add origin https://oauth2:${GITEA_TOKEN}@${GITEA_URL#https://}/${GITEA_OWNER}/${repo_name}.git + git push -u origin main --force + ``` + +5. **推送后清理 token**(安全起见): + ```bash + git remote set-url origin ${GITEA_URL}/${GITEA_OWNER}/${repo_name}.git + ``` + +### 批量推送 + +遍历 `./skills/` 下所有子目录,对每个目录重复以上流程。注意跳过 `use_vala_skillhub` 目录本身。 + +--- + +## 操作二:从 SkillHub 安装技能 + +将 SkillHub 上的技能克隆到本地 `./skills` 目录。 + +### 流程 + +1. **确定要安装的仓库名**(完整名,如 `cron_job.xiaoxi`) + +2. **检查本地是否已存在**: + - 已存在 → `git pull` 更新 + - 不存在 → `git clone` + + ```bash + repo_name="cron_job.xiaoxi" + target_dir="./skills/${repo_name}" + + if [ -d "$target_dir" ]; then + cd "$target_dir" && git pull + else + git clone "${GITEA_URL}/${GITEA_OWNER}/${repo_name}.git" "$target_dir" + fi + ``` + +--- + +## 操作三:列出 SkillHub 上的技能 + +```bash +curl -s "${GITEA_URL}/api/v1/users/${GITEA_OWNER}/repos?page=1&limit=50&sort=updated" \ + -H "Authorization: token ${GITEA_TOKEN}" +``` + +返回 JSON 数组,每个元素包含 `name`、`description`、`updated_at` 等字段。如结果满 50 条,继续翻页 `page=2`。 diff --git a/skill.json b/skill.json new file mode 100644 index 0000000..c486a69 --- /dev/null +++ b/skill.json @@ -0,0 +1,8 @@ +{ + "name": "use_vala_skillhub", + "version": "2.0.0", + "description": "管理 Vala SkillHub 上的技能:推送和安装", + "author": "vala", + "tags": ["skillhub", "git", "管理"], + "config_file": "~/.vala_skillhub_config" +}