clawhub-sync
$
npx mdskill add cat-xierluo/legal-skills/clawhub-syncSynchronize local skills to ClawHub with license and whitelist checks.
- Publishes locally developed skills to the ClawHub platform.
- Integrates with ClawHub API and reads .gitignore files.
- Validates MIT-0 license compliance and sync-allowlist rules.
- Executes dry-run or full sync via command-line arguments.
SKILL.md
.github/skills/clawhub-syncView on GitHub ↗
--- name: clawhub-sync homepage: https://github.com/cat-xierluo/legal-skills author: 杨卫薪律师(微信ywxlaw) version: "1.4.1" license: MIT description: 将本地开发的 Skills 批量同步到 ClawHub 平台。支持智能 .gitignore 过滤、白名单控制、增量同步、单个 skill 同步。本技能应在用户需要将本地 skills 发布到 ClawHub、批量同步技能、检查发布状态时使用。 --- # ClawHub 同步工具 将本地开发的 Skills 批量同步到 ClawHub 平台。支持读取 `.gitignore` 智能忽略敏感文件和临时文件。 ## ⚠️ ClawHub 许可证说明 > **ClawHub 平台强制使用 MIT-0 许可证**(无需署名,允许商业使用)。 > - MIT 许可证的 skill 可以同步 > - CC-BY-NC-SA-4.0 等限制性许可证与 MIT-0 冲突,不应同步 > > 详见 [ClawHub Skill Format](https://github.com/openclaw/clawhub/blob/main/docs/skill-format.md) --- ## 前置条件 SKILL.md frontmatter 需包含必要字段: ```yaml --- name: skill-name description: 技能描述 version: "1.0.0" # 推荐但不强制 homepage: https://github.com/cat-xierluo/legal-skills # 自动设置 --- ``` ## 使用方式 ### 1. 登录 ClawHub(首次使用) ```bash clawhub login ``` ### 2. 验证发布内容 执行 dry-run 检查配置是否正确,不实际发布: ```bash clawhub sync --dry-run ``` ### 3. 同步技能 **同步单个技能**: ```bash clawhub sync skills/<skill-name> ``` **同步所有技能**: ```bash clawhub sync --all ``` > 注意:`--all` 会受 `skills/clawhub-sync/config/sync-allowlist.yaml` 约束。如果存在白名单文件,只同步其中列出的 skill。 **交互式选择同步**: 用户可以指定要同步的技能列表,我会逐个执行同步命令。 --- ## 单个 Skill 同步工作流 当需要同步指定的 skill(而非全部)时,使用此工作流。 ### 前置检查 1. **检查登录状态** ```bash clawhub whoami ``` 2. **检查白名单** - 读取 `skills/clawhub-sync/config/sync-allowlist.yaml` - 确认目标 skill 在白名单中(未被 `#` 注释) 3. **检查许可证** - 读取目标 skill 的 SKILL.md frontmatter 中的 `license` 字段 - 只有 MIT 许可证的 skill 才能同步 - CC-BY-NC-SA-4.0 等限制性许可证不应同步 ### 版本检测 比较两个版本号: | 来源 | 位置 | 格式 | |------|------|------| | **新版本** | `skills/<skill-name>/SKILL.md` frontmatter 的 `version` | `"1.2.0"` | | **已记录版本** | `skills/clawhub-sync/config/sync-records.yaml` 中的 `version` | `"1.1.0"` | **版本比较逻辑**(语义化版本): ``` new_version > recorded_version → 需要同步 new_version == recorded_version → 跳过(无变化) new_version < recorded_version → 警告(版本回退?) recorded_version 为 null → 需要同步(首次发布) ``` ### 执行同步 **步骤 1:准备发布目录** ```bash bash skills/clawhub-sync/scripts/prepare-publish.sh skills/<skill-name> ``` **步骤 2:执行发布(使用 publish 命令)** ```bash clawhub publish /tmp/clawhub-publish-<skill-name> \ --slug <skill-name> \ --name "<Display Name>" \ --version "<新版本号>" \ --changelog "<变更说明>" ``` > **⚠️ 必须指定 --slug 和 --name** > - 临时目录名可能包含前缀(如 `clawhub-publish-`),导致发布时 slug 不正确 > - `--slug <skill-name>` 确保使用正确的 skill 标识符 > - `--name "<Display Name>"` 确保在 ClawHub 上显示正确的名称 > **为什么用 `publish` 而不是 `sync`?** > - `clawhub sync` 会扫描所有目录的 skills,可能遇到 slug 冲突 > - `clawhub publish <path>` 只发布指定路径的单个 skill,更精确 **步骤 3:更新同步记录** 更新 `skills/clawhub-sync/config/sync-records.yaml`: ```yaml <skill-name>: version: "<新版本号>" last_sync: "<ISO 8601 时间>" git_hash: "<当前 commit hash>" status: synced changelog_summary: "<变更说明>" url: "https://clawhub.ai/skills/<skill-name>" publish_id: "<从命令输出获取>" ``` ### 示例:同步 git-batch-commit ```bash # 1. 检查白名单 grep "git-batch-commit:" skills/clawhub-sync/config/sync-allowlist.yaml # 输出:git-batch-commit: # MIT # 2. 比较版本 # SKILL.md: version: "1.2.0" # sync-records.yaml: version: "1.1.0" # 结论:1.2.0 > 1.1.0,需要同步 # 3. 准备发布 bash skills/clawhub-sync/scripts/prepare-publish.sh skills/git-batch-commit # 4. 执行发布(使用 publish 命令) clawhub publish /tmp/clawhub-publish-git-batch-commit \ --version "1.2.0" \ --changelog "添加 ClawHub 同步工作流" # 5. 更新记录 # 编辑 sync-records.yaml,更新 git-batch-commit 条目 ``` ### 失败处理 - 同步失败时记录 `status: failed` - 不重试,让用户决定后续操作 - 记录失败原因到 `changelog_summary` --- ## 同步策略 ### 版本号处理 - 从技能的 `CHANGELOG.md` 第一行提取版本号 - 格式要求:`## [x.y.z] - YYYY-MM-DD` - 自动处理 `v` 前缀(`v1.0.0` → `1.0.0`) ### 自动字段 | 字段 | 处理方式 | | --------- | -------------------------------------------- | | `homepage` | 自动设置为 GitHub 仓库地址 | | `version` | 从 CHANGELOG.md 提取(如 SKILL.md 中未指定) | ### 同步范围控制(白名单机制) **配置文件:** `skills/clawhub-sync/config/sync-allowlist.yaml`(skill 自包含) **优先级:白名单 > 默认忽略规则** - 如果 `skills/clawhub-sync/config/sync-allowlist.yaml` **存在**:只同步文件中列出的 skill - 如果 `skills/clawhub-sync/config/sync-allowlist.yaml` **不存在**:使用默认忽略规则(忽略 test/、private-skills/、node_modules/) **配置格式:** ```yaml # legal-qa-extractor: # 带 # 表示不发布 legal-qa-extractor: # 无 # 表示发布 litigation-analysis: ``` **配置文件:** `skills/clawhub-sync/sync-allowlist.yaml`(skill 自包含) ### 文件过滤规则 发布时会自动应用 .gitignore 过滤规则,确保敏感文件和临时文件不会被上传。 **双重过滤机制**: 1. **项目根目录 .gitignore** - 自动检测 Git 仓库根目录的 `.gitignore` 2. **技能内部 .gitignore** - 如果技能目录有自己的 `.gitignore`,会额外应用 **默认排除**(始终生效): - `.git/` - Git 目录 - `node_modules/` - Node.js 依赖 - `__pycache__/` - Python 缓存 - `.DS_Store` - macOS 系统文件 ### 同步流程 每次同步前,会自动: 1. **创建临时目录** - 在 `/tmp/clawhub-publish-<skill-name>` 创建临时目录 2. **复制过滤后的文件** - 使用 rsync 遵循 .gitignore 规则复制文件 3. **发布到 ClawHub** - 从临时目录执行发布命令 4. **清理临时目录** - 发布完成后自动清理 ### 手动准备发布目录 如需手动检查将要发布的文件: ```bash # 准备发布目录(不实际发布) bash skills/clawhub-sync/scripts/prepare-publish.sh skills/trademark-assistant # 检查临时目录内容 ls -la /tmp/clawhub-publish-trademark-assistant/ ``` ## 安全最佳实践 ### 发布前检查清单 - [ ] 确认 `.gitignore` 包含所有敏感文件模式 - [ ] 使用 `prepare-publish.sh` 检查将要发布的文件 - [ ] 不要在技能中包含 API keys、密码等 - [ ] 使用 `.env.example` 代替 `.env` 文件 ### 常见敏感文件 - `.env` - 环境变量(使用 `.env.example` 作为模板) - `config.yaml` - 配置文件(使用 `config.example.yaml` 作为模板) - `*.db`, `*.sqlite` - 数据库文件 - `logs/` - 日志目录 - `downloads/`, `output/` - 输出目录 ### 修复已发布的技能 如果发现已发布的技能包含敏感信息: 1. **立即更新** - 从技能目录中删除敏感文件 2. **更新 .gitignore** - 确保未来不会再次包含 3. **重新发布** - 使用 `clawnet publish` 更新 ClawHub 上的技能 4. **联系 ClawHub 支持** - 如果需要删除旧版本 **重要提醒**: - **ClawHub 是公开平台**:发布的技能任何人都可以访问 - **不要包含客户信息**:案例文件、沟通记录等应排除 - **不要包含凭证**:API keys、tokens 等应使用环境变量 ## 常见问题 ### 版本号未更新? 检查 CHANGELOG.md 格式: ```markdown ## [1.0.0] - 2026-03-21 ### 新增 - 新功能描述 ``` ### 同步失败? 1. 运行 `clawhub sync --dry-run` 检查配置 2. 确认 SKILL.md frontmatter 格式正确 3. 检查登录状态:`clawhub whoami` ## 输入/输出 ### 输入 - 必需:本地开发的 skill 目录 - 可选:指定技能名称列表、白名单配置 ### 输出 - 同步结果报告(成功/失败列表) - 错误信息(如有) ## 同步记录 每次同步后,会更新 `config/sync-records.yaml` 记录文件,便于溯源和增量同步。 ### 记录字段 | 字段 | 说明 | |------|------| | `version` | 同步时的版本号 | | `last_sync` | 最后同步时间 (ISO 8601) | | `git_hash` | 同步时的 commit hash | | `status` | `synced` / `pending` / `failed` | | `changelog_summary` | 变更摘要 | | `url` | ClawHub 发布地址 | | `publish_id` | ClawHub 内部 ID | ### 记录示例 ```yaml trademark-assistant: version: "1.5.0" last_sync: "2026-03-24T16:42:00+08:00" git_hash: "f5f0726" status: synced changelog_summary: "新增商标说明撰写、图形商标分析、商品清单生成" url: "https://clawhub.ai/skills/trademark-assistant" publish_id: "k97fmhvcnrh1tn2msya98nbxxd83gspe" ``` ### 用途 1. **增量同步**:只同步 `status: pending` 或版本更新的 skill 2. **溯源**:通过 `git_hash` 追溯发布时的代码状态 3. **快速访问**:通过 `url` 直接访问 ClawHub 上的 skill 页面
More from cat-xierluo/legal-skills
- code2patent从已开发代码项目中提取技术实现证据,围绕候选专利方案生成技术交底书,并以“权利要求布局卡 → 发明专利初稿”两步法继续生成接近可申报版的中国发明专利起草材料。触发场景包括:读取代码仓库后撰写技术交底书、将人工总结的专利方案映射到具体实现、从代码中挖掘可专利技术方案、为专利代理师准备权利要求布局和发明专利初稿。
- course-generator从多个文献内容中系统化提取并生成结构化课程。支持 1-100+ 个文献文件,智能识别内容类型(转录/文献/混合),自动进行主题识别、课程大纲生成、总览与章节内容撰写。采用可选模块架构,适应不同类型内容(理论/实践/案例/历史等)。本技能应在用户需要将多个文献整理为系统化课程、生成学习材料、处理转录内容、或从复杂文稿中提取结构化内容时使用。
- court-sms本技能应在用户收到法院短信(文书送达、立案通知、开庭提醒等)时使用,自动提取案号、当事人、下载链接,下载文书并归档到对应案件目录。
- de-ai-polish检测并去除文章中的AI化表述模式,用于写作润色、文本优化、去AI腔。
- douyin-batch-download抖音视频批量下载工具 - 基于 F2 框架实现高效、增量的视频下载功能。支持单个/批量博主下载,自动 Cookie 管理,差量更新机制。本技能应在用户需要批量下载特定博主视频、服务器部署自动化下载、或定期更新视频库时使用。
- funasr-transcribe使用本地 FunASR 服务将音频或视频文件转录为带时间戳的 Markdown 文件,支持 mp4、mov、mp3、wav、m4a 等常见格式。本技能应在用户需要语音转文字、会议记录、视频字幕、播客转录时使用。
- git-batch-commit智能 Git 批量提交工具。当用户说 "git 提交"、"git commit"、"批量提交"、"拆分提交"、"整理提交" 时使用,或者当用户暂存了多个不同类型的文件需要分开提交时使用。自动将混合的文件修改按类型分类(依赖管理、文档更新、license 文件、配置、源代码等),并创建多个清晰聚焦的提交,使用标准化的提交信息格式。帮助保持清晰的 Git 历史,确保每个提交都有单一、明确的目的。使用英文前缀(docs:、feat:、fix: 等)加中文内容,支持 GitHub 彩色标签显示。
- github-star-managerGitHub Star 项目管理工具,支持从内容自动发现并 Star 项目,同步追踪更新,生成可视化 Dashboard
- legal-proposal-generator根据案件材料或沟通记录生成各类法律服务文档(诉讼方案、咨询报告、非诉方案、建议书、沟通报告、案件分析摘要等)。本技能应在用户需要将案件材料、咨询记录或沟通内容整理为专业法律文档时使用。
- legal-qa-extractor从律师与客户沟通记录中提取有价值的法律问答对,生成结构化知识库内容。本技能应在用户需要整理客户咨询记录、从对话中提取可复用法律知识、创建问答知识库、或准备内容营销素材时使用。支持严格客户信息脱敏处理。