--- name: gitea-publish description: 将本地文件夹(如一个 WorkBuddy 技能)自动在自托管的 Gitea 实例上建仓并推送。当用户说"发布到 gitea"、"推到我的 gitea"、"把技能提交到 gitea"、"在 gitea 上建仓库"时使用。支持自定义 Gitea 地址、自动建仓、私有/公开仓库。 --- # Gitea 发布技能 把任意本地目录发布为 Gitea 仓库:自动建仓(若不存在)+ git 提交并推送。 典型用途:开发一个 WorkBuddy 技能后,直接把它发布到你自己的 Gitea。 ## 何时使用 - "把这个技能发布到我的 Gitea" - "推送到 gitea.apescale.com" - "在 gitea 上建一个仓库并把内容传上去" - "把生成内容提交到个人 gitea" ## 配置(凭据,务必通过变量/参数传入,切勿硬编码) 通过环境变量或命令行参数传入,避免把令牌写进任何文件或在聊天里回显: - `GITEA_URL` : Gitea 基地址,例如 `https://gitea.apescale.com` - `GITEA_USER` : 用户名 - `GITEA_TOKEN` : 个人访问令牌(PAT,推荐)或密码 生成 PAT:Gitea 网页 → 右上角头像 → 设置 → 应用 → 生成令牌。 ## 用法 运行本技能附带的脚本(路径相对于本 SKILL.md 所在目录): ```bash bash /publish.sh \ --repo <仓库名> \ --path <本地目录> \ --url "$GITEA_URL" \ --user "$GITEA_USER" \ --token "$GITEA_TOKEN" \ [--private] # 可选:创建私有仓库 [--branch <分支>] # 可选:指定默认分支,默认 main ``` 也可以用同名环境变量替代 `--url/--user/--token`。 ## 脚本流程 1. 调用 Gitea API `GET /api/v1/repos/{user}/{repo}` 检查仓库是否存在; 不存在则用 `POST /api/v1/user/repos` 创建(支持 `--private`)。 2. 在 `--path` 内执行 `git init`(若尚未初始化),提交全部文件。 3. 设置 remote 为 `https://:@//.git` 并推送默认分支。 4. 若远程已有内容,先 `pull --rebase` 再推送,降低冲突风险。 ## 注意事项 - 凭据仅用于本次建仓/推送,不要写入仓库或回显到聊天记录。 - 默认分支优先使用 `main`,回退到 `master`。 - 该技能可"自举":开发完成后,用它把自身(即本目录)发布到 Gitea。