use_vala_skillhub.vala/SKILL.md
2026-03-31 15:47:53 +08:00

3.5 KiB
Raw Permalink Blame History

use_vala_skillhub

管理 Vala SkillHub 上的技能:推送(上传)和安装。

SkillHub 基于 Gitea每个技能对应一个 Git 仓库。

命名规则

仓库名格式:{skill_name}.{source_name}

  • skill_name:技能目录名(如 cron_jobweb_scraper
  • source_name:来源名称,即当前数字员工的 namexiaoxi
  • 如果 source_namevala,表示公司级别的官方技能

示例:

  • 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用于组合仓库名

如果配置文件不存在,请询问用户获取以上信息后创建:

cat > ~/.vala_skillhub_config <<EOF
GITEA_URL=https://git.valavala.com
GITEA_TOKEN=<token>
GITEA_OWNER=skillhub
SOURCE_NAME=<name>
EOF

后续操作前先加载配置:

source ~/.vala_skillhub_config

操作一:推送技能到 SkillHub

将本地 ./skills 下的技能目录推送到 SkillHub。

流程

  1. 确定仓库名repo_name = {skill_dir_name}.{SOURCE_NAME}

  2. 检查远程仓库是否存在

    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. 创建远程仓库

    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 并推送

    cd ./skills/<skill_dir_name>
    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(安全起见):

    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
    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 上的技能

curl -s "${GITEA_URL}/api/v1/users/${GITEA_OWNER}/repos?page=1&limit=50&sort=updated" \
  -H "Authorization: token ${GITEA_TOKEN}"

返回 JSON 数组,每个元素包含 namedescriptionupdated_at 等字段。如结果满 50 条,继续翻页 page=2