pr-ruancat-repo
Installation
SKILL.md
PR ruan-cat Repo
批量对多个固定仓库发起统一内容 PR 的技能。
核心策略:SKILL.md 只保留流程,仓库清单与模板全部拆到 references/,便于长期维护。
首要原则(CRITICAL)
在本技能中,统一 PR 内容必须先调用 git-commit 技能协助生成 commitMessage,再基于该 commitMessage 派生 prTitle 与 prBody。
不要跳过 git-commit 技能直接手写提交文案。
快速入口
- 目标仓库清单:
[references/target-repos.md](references/target-repos.md) - 执行规范与输出模板:
[references/workflow-and-template.md](references/workflow-and-template.md)
工作流程
阶段 1:任务归一化(主 Agent)
- 读取用户目标,拆成“本次统一改动意图”的一句话描述。
- 读取
references/target-repos.md,获得默认仓库集合。 - 合并用户输入约束:
- 若用户指定仓库白名单:取交集。
- 若用户指定排除仓库:从集合中剔除。
- 若用户未指定:使用全部启用仓库。
- 输出“本次执行清单”(仓库列表 + 来源分支候选名),作为后续调度输入。
阶段 2:统一内容生成(协调者 Agent)
由协调者一次性产出并冻结以下 4 项,避免仓库间语义漂移:
prTitle:PR 标题prBody:PR 正文(Markdown)commitMessage:commit 信息(必须遵循git-commit规范)sourceBranch:来源分支(所有仓库一致)
约束:
commitMessage与prTitle必须语义一致(标题可由 commit 摘要派生)。- 未明确要求时,正文聚焦“做了什么 + 为什么做 + 如何验证”,避免仓库特化内容。
git-commit 使用规范(必须执行)
pr-ruancat-repo 在生成统一内容时,必须显式复用 git-commit 技能来生成 commitMessage,禁止凭经验手写。
调用时机
- 在阶段 2 开始时先读取
git-commit技能规则。 - 先产出
commitMessage,再派生prTitle与prBody,确保三者语义一致。
生成要求
- 提交信息必须是中文。
- 必须使用 Conventional Commits + Emoji:
- 普通:
<emoji> type(scope): summary - 破坏性:
<emoji> type(scope)!: summary
- 普通:
emoji与type必须以commit-types.ts为准,不得自造类型。- 若为破坏性变更,正文必须追加:
BREAKING CHANGE: <迁移说明>
语义一致性规则
prTitle默认从commitMessage的标题行派生(可去掉 emoji)。prBody必须覆盖 commit 的“改动内容 + 原因 + 验证方式”。- 不允许出现 PR 标题与 commit 含义相冲突的情况。
批量仓库场景约束
- 一次批量任务只生成一份统一
commitMessage,由所有子代理复用。 - 不允许子代理私自改写 commit 文案;若仓库差异导致不适配,子代理应返回失败原因,由主 Agent 决策是否拆分任务。
阶段 3:并发调度(主 Agent -> 多子 Agent)
对每个仓库启动一个子 Agent,并发执行。每个子 Agent 严格执行同一协议:
- 接收统一输入:
prTitle、prBody、commitMessage、sourceBranch。 - 校验仓库可访问(存在性 + 权限)。
- 目标分支决策(分支探测):
若存在 dev -> target = dev
否则若存在 main -> target = main
否则若存在 master -> target = master
否则 -> 标记失败并返回(无法确定目标分支)
- 发起 PR(GitHub MCP)。
- 返回标准结果对象:
repotargetBranchstatus(success|failed)prUrl(成功时)reason(失败时)
阶段 4:结果汇总(主 Agent)
- 聚合所有子 Agent 结果,不因单仓库失败中断全局流程。
- 按“成功在前,失败在后”输出报告。
- 汇总模板使用
references/workflow-and-template.md。 - 额外输出:
- 成功数 / 失败数
- 失败仓库重试建议(权限问题、分支不存在、仓库不可达)
阶段 5:收尾与可追溯性
- 回显本次统一输入(标题、来源分支、commit 摘要)供用户复核。
- 若用户要求二次执行(重试失败仓库),只对失败仓库重跑阶段 3。
- 若用户要求扩容/缩容默认仓库,提示修改
references/target-repos.md。
子代理调度规范(必须遵守)
调度粒度
- 一仓库一子代理,避免多仓库状态互相污染。
- 子代理之间不得共享可变状态;统一内容由主 Agent 只读广播。
并发策略
- 默认“全并发”。
- 若遇到平台限流或权限风控,降级为“小批并发”(例如每批 2-3 个仓库)。
幂等与重复执行
- 若仓库已存在同源分支到同目标分支的未合并 PR:
- 默认返回“已存在”并附现有 PR 链接;
- 不重复创建新的 PR(除非用户明确要求新建)。
数据契约(主 Agent 与子 Agent 之间)
输入契约
{
"repo": "owner/name",
"prTitle": "string",
"prBody": "string",
"commitMessage": "string",
"sourceBranch": "string"
}
输出契约
{
"repo": "owner/name",
"targetBranch": "dev|main|master|unknown",
"status": "success|failed",
"prUrl": "string | null",
"reason": "string | null"
}
强制要求
- 必须通过 GitHub MCP 工具执行,不用
ghCLI 作为唯一手段。 - 来源分支名在所有仓库保持一致。
- 单仓库失败不影响整体任务,继续处理剩余仓库。
- 若用户要求“增删目标仓库”,只更新
references/target-repos.md,不在SKILL.md内硬编码。 - 每次执行前必须先读取
references/target-repos.md与references/workflow-and-template.md。 - 每次执行前必须先读取
git-commit技能与commit-types.ts,再生成commitMessage。
维护规则
- 新增/移除仓库:改
references/target-repos.md - 调整执行规范或报告结构:改
references/workflow-and-template.md - 本文件仅保留入口与流程,不重复维护仓库明细