agentCLAWHUBUnverified

git-sync

全平台统一发布工具。支持 skills 和 agents 的 Gitee/GitHub/ClawHub/SkillHub/PyPI 同步与 Release 创建,LLM 驱动的文件过滤与脱敏。 Skill: git-sync Owner: ldxs001 Summary: 全平台统一发布工具。支持 skills 和 agents 的 Gitee/GitHub/ClawHub/SkillHub/PyPI 同步与 Release 创建,LLM 驱动的文件过滤与脱敏。 Tags: deploy:2.48.0, git:2.48.0, gitee:2.48.0, github:2.48.0, latest:2.48.0, publish:2.42.0, skill:2.42.0, sync:2.48.0, workflow:2.24.0 Version history: v2.48.0 | 2026-10-03T14:45:27.391Z | user v2.48.0 v2.47.0 | 2026-10-02T16:11:01.941Z | user v2.47.0 v2.45.8 | 2026-08-26T05:12:46.

OpenClaw

Rank

62

Safety

84

Downloads

4.7k

Updated

Oct 9, 2026

Version

2.48.0

Source

CLAWHUB

About

What it does, and when to use it.

Capability contract not published. No trust telemetry is available yet. 4.7K downloads reported by the source. Last updated 10/9/2026.

Avoid when

  • Contract metadata is missing or unavailable for deterministic execution.

Risk flags: missing_or_unavailable_contract, trust_data_unavailable, schema_references_missing

Public facts

Every fact links back to the source it came from.

Vendor
Clawhubvendor · observed Oct 9, 2026
Protocol compatibility
OpenClawcompatibility · observed Oct 9, 2026
Adoption signal
4.7K downloadsadoption · observed Oct 9, 2026
Latest release
2.48.0release · observed Oct 3, 2026
Handshake status
UNKNOWNsecurity

Install and run

Setup complexity: low.

clawhub skill install s1794v2r46s8y5d1r4jdd7ec5h84rw70:git-sync
  1. Setup complexity is classified as HIGH. You must provision dedicated cloud infrastructure or an isolated VM. Do not run this directly on your local workstation.
  2. Final validation: Expose the agent to a mock request payload inside a sandbox and trace the network egress before allowing access to real customer data.

Contract: missing

curl -s "https://www.xpersona.co/api/v1/agents/clawhub-ldxs001-git-sync/snapshot"

Documentation

CLAWHUB

159,828 characters of source documentation, loaded on request.

Extracted files

5 files captured from the source.

SKILL.md

---
name: git-sync
slug: git-sync
displayName: git-sync
version: 2.48.0
author: wUwproject
license: MIT
description: 全平台统一发布工具。支持 skills 和 agents 的 Gitee/GitHub/ClawHub/SkillHub/PyPI 同步与 Release 创建,LLM 驱动的文件过滤与脱敏。
sensitive_access: true
critical_write: false
permission_weight: CRITICAL
data_dir: ../.standardization/git-sync/data
tags: ['sync', 'git', 'gitee', 'github', 'deploy']
external_data_dir: true
trigger: 同步/推送/发布/上传/打包/更新 READ ME
trigger_negative: 只是看文件/通用 git 提交/文件同步到云端
h1_version: true
meta_field_sync: true
create_permissions_md: true
h1_position: true
data_dir_compliance: true
---
# git-sync — 全平台发布工具

将 skill/agent 代码规范化推送到**码云(Gitee)**、**GitHub**,并支持 **ClawHub**、**SkillHub**、**PyPI** 发布与 **Release 创建**。

## 约束

- **让位式 LLM 交互(v2.43.0)** — git-sync 包含两处 LLM 决策点(文件筛除、敏感脱敏),采用**让位式握手**:遇到决策点时写 resume 状态文件 + `exit 3` 退出,把控制权交还调用方(AI 助手)。调用方写入决策文件后**重跑同一命令**,git-sync 检测 resume 从当前环节续跑,不从头开始。**不再进程内轮询等待**(旧版 v2.42.0 的 120s 轮询会占用控制权导致卡死,已废弃)
- **断点续跑** — `resume_{name}.json` 记录让位环节(`file_filter` / `sensitive_scan`),重跑时跳过已完成步骤。决策消费成功后 resume 自动清除
- **⚠️ 决策文件必须用 `_paths.py` 路径函数写入 + 全流程一条命令(v2.45.6 实战教训,铁律)** — LLM 决策文件(`file_filter_{name}.decisions.json` / `sensitive_scan_{name}.decisions.json`)**必须**在 git-sync 脚本环境下通过 `from _paths import temp_filter_decisions_path / temp_scan_decisions_path` 写入并验证 `exists()`;**让位 → 写决策 → 重跑必须放在同一条 Bash 命令里一次跑完**(拆成多条命令时 temp 文件跨命令被重建/清理,必现"文件存在却读不到"→ 反复让位 exit 3 死循环,2026-08-09 git-sync 自推送重试 N 次证实)。**严禁用 Write 工具或跨进程硬编码路径写入**。完整写法见 `references/guide.md` 步骤 3.7 / 4.5 警示框
- **自动检测类型** — 自动识别 skill(`_meta.json`)或 agent(rglob 扫描含 `__version__` 的 `__init__.py`,任意包目录名均可,不硬编码),分别走不同发布流程
- **`all` 模式** — `git-sync all` 遍历配置的全部仓库项目(默认 skill 仓库 + agent 仓库,仓库名/路径由 `config.json` 的 `repos` 注册表决定)
- **网络依赖** — 推送 Gitee/GitHub/ClawHub/SkillHub/PyPI 需要可用网络连接,超时阈值 60 秒
- **冲突不自动合并** — git merge 冲突需人工介入
- **多仓库模型(v2.37.0)** — 按项目类型解析目标仓库:`get_repo_name(type)` 从 `config.json` 的 `repos` 注册表匹配(`type` 字段:skills/agents),未配置时用默认名(skill→`maby_skills`、agent→`maby_agent`)。仓库本地路径、双平台 remote、README 文案全在注册表条目中声明,**用户按需配置,技能本身通用**
- **参数约束** — 项目名不含路径分隔符,version 格式严格 x.y.z
- **仓库规模** — 支持 1-50 个项目,每个 ≤ 500MB
- **数据持久性** — manifest.json 记录同步状态,不备份远程仓库数据

## 触发条件

**正向触发:**
- 「同步/上传/推送/发布某个 skill 或 agent」
- 「全量同步/全部发布」
- 「发布到 ClawHub/SkillHub/PyPI」
- 「创建 Release」
- 「打包/更新 README.md」
- 「检查版本号」

**否定条件:**
- 用户只是说「帮我看看这个文件」——没有同步/打包意图
- 用户要求「用 git 提交代码」——这是通用 git 操作,不是本技能

## 核心能力

> 📚 **渐进式加载**:本技能采用渐进式 MD 体系,`SKILL.md` 为入口(≤230行),详细内容拆分到 `references/*.md` 按需加载。

- **全平台发布** —— Gitee + GitHub + ClawHub + SkillHub + PyPI,一次同步全自动
- **类型自动识别** —— skill(`_meta.json`)/ agent(`__init__.py`),版本号各自读取
- **路径统一管理(`_paths.py`)** —— 所有路径变量(技能目录、数据目录、仓库路径、临时目录等)在 `scripts/_paths.py` 统一定义,其他脚本一律 `from _paths import ...` 引用,不各自写死;仓库路径由 `config.json` 的 `repos` 注册表配置,`get_work_repo(type)` 动态解析
- **路径由 manifest 统一管理** —— 每个条目记录 `source_path`(源路径)+ `repo_path`(仓库内路径),skill 和 agent 统一走同一套逻辑
- **`all`

_meta.json

{
  "ownerId": "kn75zfd51df61ajdyqtgvrs1hx84s4q6",
  "slug": "git-sync",
  "version": "2.48.0",
  "publishedAt": 1791038727391
}

references/antipatterns.md

# git-sync 反模式

常见错误和注意事项,避免误用本技能。

## 反模式列表

### 1. 盲目全量同步

**错误做法:**用户只是提了一下某个 skill,就自动触发全量同步。

**正确做法:**除非用户明确说"全量维护"/"同步所有",否则只同步指定的 skill。

### 2. 忽略敏感信息扫描

**错误做法:**跳过敏感信息扫描,直接同步推送。

**正确做法:**同步前必须运行敏感信息扫描,防止 Token/邮箱/路径泄露。

### 3. 版本号不一致

**错误做法:**`_meta.json`、SKILL.md frontmatter、`references/changelog.md` 三端版本号不一致(漏改任何一端会导致 SkillHub 拒绝发布或版本混乱)。

**正确做法:**三端版本号必须一致(`_meta.json` 为唯一源,bump 顺序:先改 `_meta.json` → SKILL.md version 行 → changelog 加条目),每次更新时同步更新。

### 4. 跳过规范审查

**错误做法:**同步前不检查 R-01~R-26 合规性。

**正确做法:**同步前自动检查 R-01~R-26 合规性,虽然不阻断同步,但应关注警告。

### 5. 忘记更新 manifest.json

**错误做法:**同步后不更新清单状态标记。

**正确做法:**同步后必须更新清单状态标记,保持三单一致。

references/blueprint_rules.md

# 蓝皮书判断规则

## 筛除原则

你需要从 blueprint.json 的 `files` 和 `tree` 中筛选出哪些内容**不应**进入公开仓库。

### 必须保留(核心功能)

技能的功能性文件:用户安装该技能后,SKILL.md 中引用的脚本、文档、配置文件、资源文件等直接参与功能实现的文件。

包括但不限于:
- `scripts/`、`references/`、`assets/` 等目录下的文件
- `SKILL.md`、`_meta.json` 等技能元数据文件
- 技能运行所依赖的配置文件(需脱敏后保留)

### 必须筛除(非核心)

任何**不直接影响技能核心功能运行**的内容都应筛除:

- **工作区临时文件**:AI 工作目录产生的缓存、日志、临时数据
- **编译/构建产物**:`__pycache__/`、`build/`、`dist/`、`*.pyc`、`*.pyo`
- **IDE/编辑器配置**:`.vscode/`、`.idea/` 等仅服务于开发环境的目录
- **系统元数据**:`.DS_Store`、`Thumbs.db`
- **非技能标准目录**:不属于技能规范定义的目录结构

注意:隐藏目录(以 `.` 开头)**不自动等于应筛除**。比如 `.github/` 如果是 CI 配置则应保留。判断依据是"是否为核心功能所需",而非"是否隐藏"。

### 判定流程

1. 读 blueprint.json 的 `tree`,标记每个目录为"保留"或"筛除"
2. 对"保留"目录下的 `files`,逐项复核:
   - 文件是否被 SKILL.md 直接或间接引用 → 保留
   - 文件是否为标准技能结构的一部分(scripts/、references/)→ 保留
   - 文件是否明显为临时/缓存/构建产物 → 筛除
3. 输出 `exclude_list.json`:{ "type": "dir" | "file", "path": "相对路径" }

---

## 脱敏原则

对于需要保留的文件,逐项判断 blueprint.json `samples` 中的内容是否需要脱敏。

### 必须脱敏

以下内容必须脱敏:

- **个人真实信息**:真实姓名(非笔名/代名)、身份证号、手机号、银行卡号
- **凭据**:API Token、密码、密钥、私钥
- **本地路径**:包含用户名或机器名的绝对路径(如 `C:\Users\实际用户名\`、`/home/实际用户名/`)
- **联系信息**:个人邮箱地址(非公开业务邮箱)
- **内网地址**:内网 IP、内网域名、私有仓库地址

### 不应脱敏

功能性内容:

- **代名/署名**:技能的公共作者名(如 `[username-redacted]`、`[username-redacted]`)
- **公开仓库地址**:GitHub/Gitee 等公开平台的仓库链接
- **配置模板示例**:`api_key = "your-api-key"` 这种明显是模板的
- **技术内容**:代码逻辑、函数调用、数据结构定义
- **版本号/依赖名**:pip 包名、npm 包名、版本号

### 脱敏方式

- **路径**:只替换"标识用户/机器身份的前缀",保留功能后缀
  - `C:\Users\USERNAME\skills\novel-weaver\...` → `[LOCAL_PATH]\skills\novel-weaver\...`
- **凭据**:替换为 `[REDACTED]`
  - `token = "abc123"` → `token = "[REDACTED]"`
- **邮箱**:替换为 `[EMAIL]`
  - `[email-redacted]` → `[EMAIL]`
- **真实姓名**:替换为 `[NAME]`
  - 仅替换非笔名的真实姓名

### 判定流程

1. 遍历 blueprint.json `files[].samples`
2. 逐条判断是否属于"必须脱敏"类别
3. 是 → 记录到 `sanitize_list.json`:{ "file": "相对路径", "line": N, "original": "原文", "replacement": "占位符" }
4. 否 → 跳过

references/changelog.md

## [2.48.0] - 2026-10-03

### 修复(GitHub Release 从未打上——token 来源只认 HTTPS URL 内嵌)

- **现象**:maby_agent 双平台 tag 全部到位,但 GitHub Releases 页只有 v1.0.0/v1.3.0 两条旧记录,structured-writer v3.1.10-3.1.14 全系没有 GitHub Release;每次发布日志仅一行 "tag 已推送" warn。
- **根因**:`step_release_create` 的 GitHub token 只从 `git remote get-url origin` 的 HTTPS 内嵌格式(`https://user:token@...`)解析;maby_agent 的 origin 为 SSH(`ssh://[email-redacted]:443`)→ token 恒空 → GitHub Release 分支静默跳过。Gitee 能打上仅因 gitee_token 独立存于 config。
- **修复①(token 三级 fallback)**:`config.github_token` → `git credential fill`(credential.helper,SSH 远端下唯一可用)→ origin HTTPS URL 内嵌;三级全空才跳过。
- **修复②(fail-loud)**:GitHub Release 创建失败打 `err` 并带 200 字符响应原文;`already_exists` 单独 info 分支;无 token 时 `err` 明确点名三级来源均未命中——不再一行 warn 静默带过。
- **验证**:importlib 直调 `step_release_create('structured-writer','agent','3.1.14')`(tag 已存在)→ LOG_BUFFER 输出「GitHub Release 已存在」= token 解析 + API 调用 + 分支判定全链路通;v3.1.10-3.1.14 五个 Release 补发成功。

## [2.47.0] - 2026-10-02

### 修复(9 处隐患审查落地,P0 全修)

- **同步保险丝(P0①,structured-writer 3.1.10 删库事故根因)**:`sync_files` 清空目标目录前先计算 allow 集合与源树的交集,零交集(allow 为空/格式错/路径全部无效)→ `SystemExit(2)` 拒绝 `rmtree`——工作仓不再可能被空同步整目录删除后推送到双平台。
- **陈旧决策守卫(P0②,静默漏脱敏洞)**:脱敏决策消费前校验——决策必须覆盖本次扫描发现的全部文件、值必须为 keep/sanitize/custom;不满足(陈旧/损坏/覆盖不全)→ 清除决策文件并重新让位,绝不静默应用。此前 `cmd_apply` 遍历 decisions 而非 findings,扫描新增的敏感文件会被静默放过直接上公共仓。实证:TEMP 中 svg-composer 决策文件滞留 61 天仍会被消费。
- **决策值非法 fail-closed(P0②配套)**:`cmd_apply` 遇到非 keep/sanitize/custom 的决策值 → 打印错误并 `sys.exit(2)`,不再静默跳过且不计入审计统计。
- **扫描详情显示命中原文(P0③,wUwproject 公开署名误脱敏根因)**:决策详情两处(消费分支与让位引导)均打印 `match` 实际命中文本(截断 40 字符)——决策者不再需要猜测"用户名"到底是本地账户(sm001,应脱敏)还是公开署名(wUwproject,应保留)。
- **上传错误信息修复(P0④)**:PyPI/ClawHub/SkillHub 失败信息改为 `(stdout+stderr)` 合并取尾部——twine 的报错走 stdout,此前 `stderr[:200]` 恒为空(structured-writer 3.1.10 的 400 file-name-reuse 错误只能手动 verbose 才能拿到)。
- **包目录检测 fail-closed(P0⑤)**:删除 `pkg_dir = pkg_dir or "rag_assistant"` 硬编码回退与候选列表中的 rag_assistant 首位——build 目录中找不到含 `__init__.py` 的包目录即报错终止,不再对非 rag-assistant 项目伪造错误包名。
- **无变更不再假失败(P2⑥)**:无变更可提交时返回 `(True, True)`,manifest 正确记为已上传,summary 不再显示"推送失败"假象。
- **agent 审计结论去误导(P2⑧)**:agent 无 SKILL.md 时审计结论显示"跳过(agent 无 SKILL.md,SKILL.md 审计不适用)",不再显示"未执行或执行失败"。

### 回归(真实目录/子进程实测)

- 保险丝:空 allow → SystemExit(2) 且目标目录完好 / 正常 allow 只复制允许文件 / 零交集拦截,3 用例 PASS。
- apply:非法决策值(123) → rc=2 报错 / 合法 sanitize → rc=0 内容替换,2 用例 PASS。
- scan:输出含 match 原文 PASS(example.com 空 result 为 RFC 2606 保留域名有意豁免,非漏报)。

### 架构修复:PyPI 作者元数据去硬编码(v2.47.0 折进)

- **根因**:setup.py 模板硬编码作者名与邮箱(工具作者的个人信息写死在源码里)——工具源码要上公共仓与源码含个人信息天生冲突(脱敏强制 vs 发布元数据),且对第三方用户而言发布的 wheel 里填的是别人的作者。
- **修复**:作者身份属于被发布项目而非发布工具。模板改占位符,构建时按优先级注入:被发布项目 pyproject.toml 的 `[project].authors`(PEP 621,项目权威源,读 src_dir——build_dir 的 pyproject 随后被覆盖为 build-system-only)→ config.json 的 author/email(本地用户配置,与 git commit 同一字段,单一来源)→ 空串(PyPI 合法)。
- 工具源码从此零个人信息:脱敏扫描不再命中 git-sync.py,自推送不再被硬约束拦截。

### 清理

- TEMP 陈旧决策/扫描残留:svg-composer 决策(61 天)、podcast-maker 决策 .bak(12 天)、manual_scan×2(63 天)、_preview_scan(12 天)。

## [2.46.2] - 2026-09-17

### 修复

- **a
Github ReposUpdated 2h agoRank 70

AionUi

Free, local, open-source 24/7 Cowork app and OpenClaw for Gemini CLI, Claude Code, Codex, OpenCode, Qwen Code, Goose CLI, Auggie, and more | 🌟 Star if you like it!

MCPOPENCLAW
Github ReposUpdated 6mo agoRank 70

activepieces

AI Agents & MCPs & AI Workflow Automation • (~400 MCP servers for AI agents) • AI Automation / AI Agent with MCPs • AI Workflows & AI Agents • MCPs for AI Agents

OPENCLAW
Github ReposUpdated 6mo agoRank 70

cherry-studio

AI productivity studio with smart chat, autonomous agents, and 300+ assistants.

MCPOPENCLAW
Github ReposUpdated 7mo agoRank 70

CopilotKit

The Frontend for Agents & Generative UI. React + Angular

OPENCLAW

Machine-readable data

The same record, as JSON, for agents and crawlers.

{
  "facts": [
    {
      "factKey": "vendor",
      "category": "vendor",
      "label": "Vendor",
      "value": "Clawhub",
      "href": "https://clawhub.ai/ldxs001/skills/git-sync",
      "sourceUrl": "https://clawhub.ai/ldxs001/skills/git-sync",
      "sourceType": "profile",
      "confidence": "medium",
      "observedAt": "2026-10-09T05:01:36.015Z",
      "isPublic": true
    },
    {
      "factKey": "protocols",
      "category": "compatibility",
      "label": "Protocol compatibility",
      "value": "OpenClaw",
      "href": "https://www.xpersona.co/api/v1/agents/clawhub-ldxs001-git-sync/contract",
      "sourceUrl": "https://www.xpersona.co/api/v1/agents/clawhub-ldxs001-git-sync/contract",
      "sourceType": "contract",
      "confidence": "medium",
      "observedAt": "2026-10-09T05:01:36.015Z",
      "isPublic": true
    },
    {
      "factKey": "traction",
      "category": "adoption",
      "label": "Adoption signal",
      "value": "4.7K downloads",
      "href": "https://clawhub.ai/ldxs001/git-sync",
      "sourceUrl": "https://clawhub.ai/ldxs001/git-sync",
      "sourceType": "profile",
      "confidence": "medium",
      "observedAt": "2026-10-09T05:01:36.015Z",
      "isPublic": true
    },
    {
      "factKey": "latest_release",
      "category": "release",
      "label": "Latest release",
      "value": "2.48.0",
      "href": "https://clawhub.ai/ldxs001/git-sync",
      "sourceUrl": "https://clawhub.ai/ldxs001/git-sync",
      "sourceType": "release",
      "confidence": "medium",
      "observedAt": "2026-10-03T14:45:27.391Z",
      "isPublic": true
    },
    {
      "factKey": "handshake_status",
      "category": "security",
      "label": "Handshake status",
      "value": "UNKNOWN",
      "href": "https://www.xpersona.co/api/v1/agents/clawhub-ldxs001-git-sync/trust",
      "sourceUrl": "https://www.xpersona.co/api/v1/agents/clawhub-ldxs001-git-sync/trust",
      "sourceType": "trust",
      "confidence": "medium",
      "observedAt": null,
      "isPublic": true
    }
  ],
  "events": [
    {
      "eventType": "release",
      "title": "Release 2.48.0",
      "description": "v2.48.0",
      "href": "https://clawhub.ai/ldxs001/git-sync",
      "sourceUrl": "https://clawhub.ai/ldxs001/git-sync",
      "sourceType": "release",
      "confidence": "medium",
      "observedAt": "2026-10-03T14:45:27.391Z",
      "isPublic": true
    }
  ]
}

Record generated Oct 9, 2026.

Sponsored

Ads related to git-sync and adjacent AI workflows.