git-sync:把 Skill 与 Agent 一次发布到多平台

前言

维护 Skill 或 Agent 时,常见做法是分别往 Gitee、GitHub 推代码,再手动跑 ClawHub、SkillHub、PyPI 的发布命令,并在发布前自己筛掉不该上传的文件、检查 token 和本地路径是否泄露。平台越多,步骤越碎,版本号也容易在 _meta.json、SKILL.md 和 changelog 之间对不齐。

下面介绍 SkillHub 上的 git-sync(@user_800d68d6/git-sync,当前页面版本 2.48.0)。它把多仓库同步、市场发布和 Release 创建收进一条 Agent Skill 工作流,并用 LLM 参与文件过滤与脱敏决策。

这是什么

git-sync 在 SkillHub 上的定位是:全平台统一发布工具,支持 skills 和 agents 在 Gitee / GitHub / ClawHub / SkillHub / PyPI 的同步与 Release 创建,并提供 LLM 驱动的文件过滤与脱敏。

  • 坐标:@user_800d68d6/git-sync
  • 来源:community(社区发布)
  • 分类:dev-programming
  • 发布者:user_800d68d6
  • 标签:requires_api_key=true(涉及各平台 API 与凭证时需自行配置)
  • 官方入口:SkillHub 技能页、API 坐标页

Skill 本身遵循通用 SKILL.md 格式:SKILL.md 为入口,详细说明拆在 references/*.md 中按需加载。

核心功能

以下能力与 ClawHub 上同版本(2.48.0)、同简介的公开文档一致,可与 SkillHub 简介交叉核对。

全平台发布与类型识别

  • 将 skill 或 agent 规范化推送到 Gitee、GitHub,并可继续发布到 ClawHub、SkillHub、PyPI,支持创建 Release(git tag + 平台 API)。
  • 自动区分 skill(存在 _meta.json)与 agent(通过含 __version__ 的 __init__.py 等规则识别),版本分别从 _meta.json 或 __init__.py 读取。
  • git-sync all:按 config.json 里 repos 注册表遍历配置下的全部 skill/agent 项目(默认区分 skills 与 agents 两类仓库)。

LLM 让位式过滤与脱敏

  • 文件过滤:同步前扫描源目录,列出文件与规则后 exit 3 让位,由调用方(AI 助手)写入 file_filter_{name}.decisions.json,再重跑同一命令从断点续跑,只复制允许的文件。
  • 敏感脱敏(强制):同步后扫描邮箱、token、路径等;发现敏感项同样让位,写入 sensitive_scan_{name}.decisions.json 后续跑。决策文件须在 git-sync 脚本环境下通过 _paths.py 的路径函数写入,且 让位 → 写决策 → 重跑应在同一条命令中完成(拆成多条命令可能导致 temp 路径不一致、反复 exit 3)。

版本、规范与打包

  • 版本号三方对比:_meta.json、SKILL.md frontmatter、changelog(仅处理 x.y.z 格式)。
  • SKILL.md 规范审查:内联检查版本一致性与脚本引用等规则。
  • ZIP 打包 + HTML 索引:可为 skill 生成安装包与索引页;agent 侧打包行为按技能文档约定跳过 ZIP。

各平台发布差异(摘要)

平台 版本读取源 要点
Gitee / GitHub _meta.json(skill)或 __init__.py(agent) git push;凭证 SSH/HTTPS 解析;冲突不自动合并
ClawHub _meta.json 的 slug/version/tags npx clawhub publish <绝对路径>
SkillHub 需显式传 --version skills_store_cli.py publish;勿仅依赖 SKILL.md frontmatter 读版本
PyPI __init__.py 的 __version__ 隔离构建后 twine upload --disable-progress
Release 同步后当前版本 tag:skill 为 {name}-v{ver},agent 为 v{ver}

网络操作超时阈值一般为 60 秒;单仓库规模文档约定为 1–50 个项目、每个 ≤ 500MB。状态记录在数据目录下的 manifest.json。

安装与启用

1. 安装 SkillHub CLI(若尚未安装)

先检查是否已有 CLI:

command -v skillhub && skillhub --version

未安装时,可按 SkillHub 安装文档 执行完整安装:

curl -fsSL https://skillhub-1388575217.cos.ap-guangzhou.myqcloud.com/install/install.sh | bash

2. 安装 git-sync 到当前 Agent 的 skills 目录

安装时必须用 --dir 指向当前客户端识别的 skills 目录,否则默认装到 ./skills/ 可能不会被 Agent 加载。

Cursor 常用路径为 ~/.cursor/skills/:

skillhub install user_800d68d6/git-sync --dir ~/.cursor/skills/

也可让 AI 按官方提示安装(与 SkillHub 页面一致):

请根据 https://skillhub.cn/install/skillhub.md,安装 `@user_800d68d6/git-sync`。

Claude Code、Codex 等路径不同,安装文档中列出的示例包括 ~/.claude/skills/、~/.codex/skills/ 或项目下的 .agents/skills/;将 --dir 换成对应目录即可,命令形式相同。

3. 数据与配置目录

技能运行期数据(以安装后的 $SKILLS_DIR 为准)大致为:

$SKILLS_DIR/.standardization/git-sync/
├── data/
│   ├── config.json     # repos 注册表、平台用户名、gitee_token 等
│   └── manifest.json   # 同步状态清单
└── backup/

config.json 中配置目标仓库与平台凭证;SkillHub 标签标明需要 API Key 时,应在此或环境变量中准备好,勿把密钥提交进同步仓库。

典型用法

执行入口推荐 Python(与 git-sync.sh 等价;无 rsync 时脚本也会走 Python 流程)。路径中的 $SKILLS_DIR 为 git-sync 所在 skills 根目录。

推送单个 skill 到 Gitee / GitHub

python "$SKILLS_DIR/git-sync/scripts/git-sync.py" novel-weaver

流程上依次经过触发判断、安全校验、清单与版本检查、(可选)LLM 文件过滤与脱敏、README 更新、双平台 push、打包索引等步骤;若遇 exit 3,按技能内 references/guide.md 写入决策 JSON 后 在同一条 Bash 命令中 重跑。

仅打包、不推送

python "$SKILLS_DIR/git-sync/scripts/git-sync.py" git-sync --pack-only

仅推送、不打包

python "$SKILLS_DIR/git-sync/scripts/git-sync.py" workday-calendar --push-only

批量

python "$SKILLS_DIR/git-sync/scripts/git-sync.py" all

在对话中触发

适合向 Agent 明确表达发布意图,例如:「把某某 skill 同步到 GitHub 和 Gitee」「发布到 SkillHub / PyPI」「创建 Release」「全量同步」。仅「帮我看一下这个文件」或「用 git 提交代码」一类通用 git 操作,不应指望本 Skill 接管。

适用场景与注意

适合谁

  • 同时维护多个 Skill/Agent,需要在 Gitee + GitHub 双远程保持一致,并偶尔发 ClawHub、SkillHub、PyPI 或打 Release 的作者。
  • 希望发布前由工作流强制走 文件白名单 与 脱敏决策,而不是手工 copy 目录。

限制与坑

  • 不是 日常 feature 分支与 main 的 merge/rebase 同步工具;名称相近的其他 git-sync Skill 职责不同,安装时以坐标 @user_800d68d6/git-sync 为准。
  • git merge 冲突 不自动解决,需人工处理后再跑。
  • requires_api_key:各市场与 Git 托管凭证需自行配置且注意脱敏结果是否满足合规要求。
  • LLM 让位机制依赖前台会话;决策文件路径必须用 _paths.py,避免跨命令写入导致死循环式重复 exit 3。
  • SkillHub 页面统计(截至资料抓取):评分 100000,下载约 3189;以 技能页 实时数据为准。

结尾

git-sync 把「拷文件 → 查版本 → 脱敏 → 推 Git → 发市场 → 打 Release」串成可断点续跑的一条链路,减轻多平台重复劳动。完整命令与子命令以安装后的 references/reference.md 为准。

官方地址:https://www.skillhub.cn/skills/user_800d68d6/git-sync(API:https://api.skillhub.cn/user_800d68d6/git-sync)。

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜