subtree-publish
将 monorepo 中的子目录通过 git subtree 推送到独立 GitHub 仓库。支持注册清单、变更自动检测、增量推送。本技能应在用户提交涉及已注册子项目的变更后,或手动请求推送到独立仓库时使用。不要用于初次创建 monorepo 或管理 git submodule。
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
将 monorepo 中的子目录通过 git subtree 推送到独立 GitHub 仓库。支持注册清单、变更自动检测、增量推送。本技能应在用户提交涉及已注册子项目的变更后,或手动请求推送到独立仓库时使用。不要用于初次创建 monorepo 或管理 git submodule。
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
基于 SOC 职业分类
将本地开发的 Skills 批量同步到 ClawHub 与腾讯 SkillHub 两个平台。支持智能 .gitignore 过滤、白名单控制、增量同步、单个 skill 同步、双平台分流发布。本技能应在用户需要将本地 skills 发布到 ClawHub/SkillHub、批量同步技能、检查发布状态时使用。
跨平台 Agent 任务协调枢纽。本技能应在多个不同平台的 Agent 需要围绕项目任务源分配任务、标记归属、能力路由和交接上下文时使用。不要用于单一平台内的本地并行执行,或 Git 分支、提交、PR、merge 安全规则。
输入各类视频网站/播客平台链接后,自动下载对应媒体文件并交付给用户。优先使用 yt-dlp 覆盖抖音(Douyin)、B站(Bilibili)、YouTube 等常见视频网站,也可用于可直接暴露音频地址的播客平台(如小宇宙单集链接)。当遇到 403/登录/年龄或地区限制时,支持使用 cookies.txt 重试;对于可能存在 DRM/加密或条款限制的平台(例如部分 Spotify 内容),应提示用户仅下载其有权保存的内容,并在不可下载时建议改用官方离线/导出渠道或提供原始 RSS/直链。抖音视频在 yt-dlp 撞签名墙("Fresh cookies needed")时会自动 fallback 到无登录直连 aweme.snssdk.com/v1/play(仅需 video_id,不需要 cookie/a_bogus 签名);抖音图文笔记暂不支持自动下载,需手动处理。
元典法条与案例检索。本技能应在需要查询中国法律法规条文、检索相关案例、为法律分析提供数据支撑时使用。
PDF 处理工具,支持扫描件预处理、OCR 双层 PDF、页码添加、PDF 合并、解密、水印去除和压缩。本技能应在用户需要一键处理、优化或整理 PDF 文档时使用。不要用于:纯文本 PDF 内容编辑、PDF 阅读与批注、电子签名、非压缩目的的格式转换。
面向中国发明和实用新型专利的结构化初步分析工具。本技能应在用户需要拆解或解释权利要求、比较专利保护范围、进行产品侵权比对、等同分析、稳定性与无效风险分析、FTO、规避设计、专利价值评估或制作专利分析图表时使用。不要用于:代替专利律师或专利代理师出具正式意见、仅下载/OCR专利、撰写专利申请文件,或在未确认法域与有效权利要求时给出确定性结论;外观设计近似判断需另行采用专门方法并人工复核。
| name | subtree-publish |
| author | 杨卫薪律师(微信 ywxlaw) |
| version | 1.7.1 |
| license | MIT |
| description | 将 monorepo 中的子目录通过 git subtree 推送到独立 GitHub 仓库。支持注册清单、变更自动检测、增量推送。本技能应在用户提交涉及已注册子项目的变更后,或手动请求推送到独立仓库时使用。不要用于初次创建 monorepo 或管理 git submodule。 |
将 monorepo 中指定子目录通过 git subtree push 推送到独立 GitHub 仓库。
文件只存一份(在 monorepo 中),一条命令同步到独立仓库。
<prefix>/<name>/| 依赖 | 用途 | 安装方式 |
|---|---|---|
| git(含 subtree) | 子目录拆分与推送 | macOS: 已预装 |
| gh | GitHub CLI,创建仓库和认证 | macOS: brew install gh |
| jq | JSON 配置解析 | macOS: brew install jq |
当用户完成一次 git commit 后,如果本次提交涉及清单中的子项目:
bash scripts/subtree-push.sh --auto
脚本会检查最近一次 commit 涉及的文件,如果命中清单中的子目录,自动推送到对应独立仓库。
触发时机: 用户说"提交完了"、"帮我推到独立仓库"、"同步 subtree"时,先检查是否有清单中的子项目被修改。
当用户说"注册 subtree"、"新增独立仓库发布"时:
Step 1: 确认子目录存在
ls <prefix>/<name>/SKILL.md
Step 2: 前置校验 — 检查 README.md
在执行任何远程操作之前,必须先检查子目录中是否已存在 README.md:
ls <prefix>/<name>/README.md
references/readme-template.md 模板。README.md 是独立 GitHub 仓库的人类展示页,不是 skill runtime 文件。创建或重写时必须遵守:
SKILL.md frontmatter 和 LICENSE.txt 保持一致;CC BY-NC 类 skill 应提示商用授权联系方式以 LICENSE.txt 为准。如需统一作者信息、二维码、主仓库链接或相关项目推荐,先读取 config/readme-profile.json;该文件为本地个性化配置,默认不提交。没有本地配置时,参考 config/readme-profile.example.json 的字段结构,并用通用占位符生成 README。
写作前按复杂度选择 profile:
minimal:简单工具型 skill。保留“典型场景 / 能产出什么 / 安装方式 / 使用边界 / 许可证 / 作者 / 关联项目”。standard:大多数公开 skill。在 minimal 基础上增加“适合谁用 / 当前覆盖范围 / 常见用法”。showcase:重点推广、复杂法律或高风险 skill。在 standard 基础上增加“项目解决什么问题 / 核心设计 / 示例输出 / 质量支撑 / 关键文件”。发布前用以下检查清单复核 README:
Step 3: 创建独立 GitHub 仓库(如果需要首次设置)
gh repo create <org>/<repo-name> --public --description "<描述>"
Step 4: 添加 remote
git remote add <name>-standalone https://github.com/<org>/<repo-name>.git
Step 5: 首次推送
git subtree push --prefix=<prefix>/<name> <name>-standalone main
Step 6: 注册到清单
将子项目信息加入 config/subtree-skills.json,并更新上面的清单表格。
Step 7: 创建首个 Release
首次推送后,运行脚本创建 GitHub Release:
bash scripts/create-release.sh <name>
bash scripts/subtree-push.sh <name> [--setup] [--dry-run]
--setup: 同时创建 GitHub 仓库和添加 remote--dry-run: 只显示将要执行的操作,不实际推送独立仓库的 remote 名称统一为 <name>-standalone。
每次 subtree push 后,自动检查是否需要创建 GitHub Release。
<prefix>/<name>/SKILL.md 中的 version 字段,获取当前版本号gh release list --repo <org>/<repo-name> --limit 1 检查最新 Release 的 tagv<version> tag 尚不存在,则创建 Releasebash scripts/create-release.sh <name> [--dry-run]
脚本会自动完成:读取版本号 → 检查已有 Release → 提取 CHANGELOG → 打包(排除 README.md 和 .DS_Store)→ 创建 Release。
<prefix>/<name>/CHANGELOG.md 提取对应版本的变更记录"发布 v<version>"压缩包解压后得到 <name>/ 文件夹(如 code2patent/),用户直接放入 .claude/skills/ 即可使用。
排除规则(create-release.sh 中 zip -r 的 -x 参数):
| 排除模式 | 理由 |
|---|---|
*.DS_Store | macOS 系统文件 |
README.md | 面向独立仓库浏览者,不属于 skill 运行时文件 |
archive/、archive/** | 历史审核/处理记录,含用户真实数据 |
output/、output/** | 运行时输出产物 |
**/__pycache__、**/__pycache__/* | Python 编译缓存 |
**/*.pyc、**/*.log | Python 编译缓存、日志 |
**/*.tmp、**/*.bak | 临时/备份文件 |
**/.env、**/.env.* | 环境变量文件(含密钥风险) |
DECISIONS.md | 本地决策记录与工作日志,含内部细节,不对外发布 |
TASKS.md | 本地任务清单,不属于 skill 运行时文件 |
config/*.json | 本地个性化配置,仅保留 *.example.json |
排除规则的完整性通过比对 .gitignore 中 **/archive/*、**/output/*、**/__pycache__/、**/DECISIONS.md、**/TASKS.md 等规则保证。脚本不主动读 .gitignore,而是用显式 -x 模式覆盖常见场景。新增排除需求时同步更新此处表格。
支持非连续版本号(如 1.2.0 → 1.2.2,跳过 1.2.1)。每次只为当前推送的版本创建 Release,不会补建中间版本的 Release。
git subtree push 在大仓库上可能较慢,这是正常的.gitignore 控制.claude/skills/<name> 指向 skills/<name>(如 legal-skills),手动提交 skill 自身改动时 git add .claude/skills/<name>/... 会报“pathspec 位于符号链接中”;改用真实物理路径 git add skills/<name>/... 即可。本 skill 的推送和打包脚本内部已统一使用 skills/ 前缀,不受此 symlink 影响。实际配置文件位于 config/subtree-skills.json,用于 --auto 模式检测和仓库名映射。如需新建配置,可参考 config/subtree-skills.example.json。
字段说明:
prefix: 子目录前缀(相对于 monorepo 根目录)org: GitHub 组织/用户名skills: 子项目数组
name: 子目录名称(必填)repo: 独立仓库名(可选,默认为 <name>.skill)version: 当前 SKILL.md 中的版本号(可选,用于核查是否需要发布新 Release)last_release: 最新已发布的 Release tag(可选,如 v1.0.0)last_updated: 最近一次 subtree push 或 Release 更新时间(可选,格式 YYYY-MM-DDTHH:MM:SS)本地 README 个性化配置。用于统一生成独立仓库 README 的作者入口、二维码、上游项目导流和相关项目推荐。该文件通常包含个人或项目特定信息,应保留在本地;发布包和版本库只保留 config/readme-profile.example.json。
读取优先级:
config/readme-profile.json(本地固定配置)config/readme-profile.example.json(字段结构示例)references/readme-template.md 中的通用占位符常用环境变量:
SUBTREE_README_UPSTREAM_NAMESUBTREE_README_UPSTREAM_URLSUBTREE_README_AUTHOR_DISPLAYSUBTREE_README_WECHAT_IDSUBTREE_README_QR_IMAGE_URLSUBTREE_README_CONTACT_DEFAULTSUBTREE_README_CONTACT_LEGALSUBTREE_README_CONTACT_TOOL推荐字段:
upstream: 上游项目或技能集合信息author: 作者展示名、联系方式、二维码图片 URLcontact_messages: 默认、法律业务类、工具类联系文案related_projects: 可推荐的相关项目池skill_overrides: 按 skill 名定制推荐项目、联系文案或 profile发布规则:
readme-profile.json 写入公开发布包scripts/create-release.sh 会排除非 example 的 config/*.json,保留 *.example.json独立仓库名默认在子目录名后追加 .skill 后缀。例如:
opc-legal-counsel → opc-legal-counsel.skillcode2patent → code2patent.skill用户可以在 config/subtree-skills.json 中通过 repo 字段显式指定不同的仓库名,但如果不指定则自动使用 <name>.skill。
自动化 subtree 推送流程,支持 --auto 变更检测和仓庝名映射。
自动化 GitHub Release 创建流程。用法:bash scripts/create-release.sh <name> [--dry-run]
脚本自动完成:读取 SKILL.md 版本号 → 检查已有 Release → 提取 CHANGELOG 作为 Release Notes → 打包(排除 README.md 和 .DS_Store,解压后得到 <name>/ 文件夹)→ 创建 Release 并附上压缩包。