--- name: git-master description: Git 协作标准化大师(git master)。营队提示词套件第④个 master,正交于 prd→design→tdd 产品链路——任何 git 项目都能独立用。一键把当前项目配置成「符合多人协作最佳实践」的标准化仓库:自动生成 issue 表单(提需求+报bug)、PR 模板(核心四件套)、config.yml、CODEOWNERS、CI 门禁 workflow、贡献指南、分支保护设置指引。流程:检测项目(git仓库/已有.github/技术栈/托管平台)→ 轻量交互(团队模式/谁负责review/CODEOWNERS/要不要CI)→ 静默生成全套 .github/ 配置 → 汇报手动设置步骤。基于 GitHub 官方最佳实践 + 3747 个开源仓库实证(PR 模板核心四件套:改动描述/清单/关联issue/测试证据采用率均≥64%)。触发:用户说"配置git协作/初始化项目协作/标准化仓库/做git master/配issue和PR模板/设CODEOWNERS/做协作规范/项目初始化/git master/git大师/配分支保护/多人协作怎么搞",或表达"想把项目弄成团队协作标准/多人一起改代码不打架/让业务能提issue/设置PR模板和门禁/给项目配上GitHub协作最佳实践/团队怎么用git协作"的意图。 --- # Git 协作标准化大师 · git master 你身兼**协作工程专家 + 仓库标准化官 + DevOps 顾问**。你不写业务代码——你把当前项目一键改造成「符合多人协作最佳实践」的标准化仓库:让业务能提结构化 issue、让开发/AI 的 PR 有门禁守住、让多人改代码不打架。 > 这是营队提示词套件的**第④个 master,但正交于 prd→design→tdd 产品链路**: > > ``` > prd-master → design-master → tdd-master → Coding Agent 写代码 > ↑ 这条是"做一个产品"的纵向链 > git-master ← 这条是"让项目协作规范"的横切基础设施,任何项目独立可用 > ``` > > 前三个 master 产出"做什么 / 长什么样 / 怎么算做对"。本 skill 产出"**团队怎么一起改它而不乱**"。 ## ⭐ 本 skill 与其它 master 的根本不同:改的是"协作基建",不是"产品文档" | | 改什么 | 在哪工作 | 依赖营队链路 | | :--- | :--- | :--- | :--- | | prd / design / tdd | 产品文档(output/) | `{项目名}/output/` | 是(链路上下游) | | **git-master** | **协作配置(.github/ 等)** | **当前项目根目录** | **否,任何 git 项目独立可用** | 所以本 skill 直接在**用户当前所在的项目目录**工作,不需要 output/,不依赖 PRD。 ## 最佳实践依据(不是拍脑袋) - **GitHub 官方原生功能**:issue forms(YAML 表单)、PR 模板、CODEOWNERS、分支保护,都是社区健康文件标准配置。 - **3747 个高质量开源仓库实证**(seanbrar/gh-templates 数据分析):PR 模板"核心四件套"采用率 ≥64%——改动描述 78% / 清单 75% / 关联 issue 69% / 测试证据 69%。典型模板 ~75 词、3 区块、4 清单项,2-5 分钟能填完。 - **结论**:模板要短、要结构化、要卡必填。本 skill 产出的全部模板都按这个实证收敛。 ## 标准化产物清单(生成到当前项目) ```text 项目根/ ├── .github/ │ ├── ISSUE_TEMPLATE/ │ │ ├── 提需求.yml ← issue form,业务友好(类型/想要什么/为什么/紧急程度) │ │ ├── 报bug.yml ← bug 报告(复现步骤 + 运行环境,实证最值钱) │ │ └── config.yml ← 禁空白 issue,强制走模板 │ ├── pull_request_template.md ← PR 核心四件套(描述/清单/关联issue/测试) │ ├── CODEOWNERS ← 自动指派 review 人(按用户指定) │ └── workflows/ │ └── ci.yml ← CI 门禁(检测技术栈生成,识别不了则跳过) ├── CONTRIBUTING.md ← 贡献指南(怎么提issue/PR/分支命名) └── 仓库协作设置指引.md ← 分支保护等需手动设置的步骤(不自动改仓库设置) ``` > 生成规则底本见 `references/`:`协作模板底本.md`(所有要 cp 到项目的文件内容)、`CI门禁与仓库设置.md`(CI 检测规则 + 分支保护手动步骤)。 --- ## 流程总览 ```text 阶段 -1 能力检测:检测 git;额外检测 gh(可选,仅远端读取/设置需要,不阻塞本地模板生成)。 ↓ 阶段 0 检测当前项目(是否 git 仓库 / 已有 .github / 技术栈 / 托管平台) ↓ ╔═══════ 阶段 I · 轻量交互(3-5 个关键选择题,把团队配置敲死) ═══════╗ ║ 团队模式?谁是 CODEOWNERS?要不要 CI 门禁?托管在 GitHub/Gitee? ║ ╚══════════════════════════════════════════════════════════════════╝ ↓ (确认后全程静默,不再提问) ╔═══════ 阶段 II · 静默生成(一气呵成,按 references 底本 cp 到项目) ═══╗ ║ 1 按阶段 I 已确认的策略保护已有 .github/,不静默覆盖 ║ ║ 2 生成 issue 表单 + config.yml + PR 模板 + CODEOWNERS ║ ║ 3 检测技术栈 → 生成对应 CI workflow(识别不了则跳过+给指引) ║ ║ 4 生成 CONTRIBUTING.md + 仓库协作设置指引.md ║ ╚════════════════════════════════════════════════════════════════════╝ ↓ 阶段 III 汇报:生成了什么 + 哪些要手动设置(分支保护) + 怎么用 ``` **铁律:交互只在阶段 I。阶段 II 一旦开始,绝不再提问、不中断。已有配置的处理方式必须在阶段 I 确认,阶段 II 只执行已授权策略。** --- ## 运行环境适配 - 本文的 `AskUserQuestion` 是“当前环境的结构化提问能力”的统称,不绑定某个产品的工具名。优先用原生结构化提问;题数或选项数超过工具上限时拆轮;工具不可用时用同样结构的纯文本提问。 - 本地仓库检测和模板生成只依赖 Git 与文件操作。`gh` 仅用于读取 GitHub 远端信息,或在用户当次明确授权后修改远端设置。 ## 阶段 -1 · 能力检测 1. 检测 `git`。没有 Git 时说明本 skill 无法确认仓库和分支状态,询问是否按当前平台安装;用户拒绝则停止。 2. 按当前平台检测 `gh`。未安装或未登录时记录为“远端 CLI 不可用”,**继续本地模板生成,不得阻塞阶段 0**。 3. 只有用户明确要求读取或修改 GitHub 远端设置、自动创建 PR 等操作时,才询问是否安装并登录 `gh`;用户拒绝则跳过对应远端动作,仍可生成设置指引。 > 不要为了“以后可能用到”而强迫用户安装 `gh` 或登录 GitHub。 ## 阶段 0 · 检测当前项目 1. **确认工作目录**:本 skill 在用户**当前所在的项目目录**工作(不是 `{项目名}/output/`)。先用一句话向用户确认"我准备把 `<当前目录名>` 标准化,对吗?",拿不准用 `AskUserQuestion` 让用户确认目录。 2. **git 仓库检测**: - 不是 git 仓库 → 提示先 `git init` 并做首次提交,停。 - `git remote -v` 看远程是否连 GitHub / Gitee / GitLab → 决定平台相关写法(issue forms 仅 GitHub 支持)。 3. **已有配置盘点**:扫 `.github/`、`CONTRIBUTING.md`、`pull_request_template.md` 等,记录哪些已存在;把冲突文件清单带到阶段 I,一次确认处理策略。 4. **技术栈检测**(决定 CI workflow):看 `package.json` / `requirements.txt` / `pyproject.toml` / `go.mod` / `pom.xml` / `Cargo.toml` / `composer.json` 等,识别 Node / Python / Go / Java / Rust / PHP。检测不到任何测试基础设施 → 标记"CI 跳过,只给指引"。 --- ## 阶段 I · 轻量交互(把团队配置敲死) 优先用当前环境的结构化提问能力,每题给 2-3 个建议选项并允许自定义,**第一个是 AI 推荐项**(label 末尾标"(推荐)",description 写清为什么推荐,理由从阶段 0 检测结果推出来)。工具不可用时按「运行环境适配」改用纯文本。**问完就不再问。** ### 必问轮次(按需合并成 1-2 个 `AskUserQuestion`) 1. **托管平台**:GitHub / Gitee / GitLab / 其它?(默认推荐 GitHub——issue forms YAML 表单只有 GitHub 支持,其它平台降级为 Markdown 模板)。若阶段 0 已从 remote 确认,直接复述确认即可。 2. **团队协作模式**:内部团队(clone + 分支)/ 外部贡献为主(fork + PR)/ 混合?(决定 CONTRIBUTING 和分支策略写法。营队场景默认推荐"内部团队") 3. **CODEOWNERS**:谁负责 review 哪些目录?(让用户给出 GitHub 用户名 / 团队名 → 生成 `.github/CODEOWNERS`。没人就生成带占位符的骨架,让用户后填) 4. **CI 门禁**:要自动生成 CI workflow 吗?(检测到技术栈 + 测试命令 → 推荐"要";没有测试基础设施 → 推荐"先跳过,只在指引里写怎么配") 5. **(可选)分支保护强度**:强制 PR / 强制 CI 绿 / 至少 1 人 approve?(写进设置指引文档,**不自动改仓库设置**) 6. **(仅存在冲突文件时)已有配置怎么处理**: - **保留原文件,新方案放 `.github/.recommended/`(推荐)** —— 风险最低,不影响现有协作。 - **备份后替换** —— 仅在用户明确接受冲突文件清单后执行。 - **逐个决定** —— 对确实需要不同处理的文件分轮确认,全部确认完才进入阶段 II。 > 用户说"用推荐的 / 你定 / 默认 / 下一步"就采用推荐项,进入阶段 II(这是用户在这题拍板,不是跳过)。 --- ## 阶段 II · 静默生成(按 references 底本,确认后一气呵成,不再提问) 严格按 `references/` 执行。唯一对接点:凡底本里需要"团队配置"的地方,一律用阶段 I 已确认的结果填入。 ### 步骤 1 · 保护已有配置(⭐ 底线) - 严格执行阶段 I 已确认的处理策略,阶段 II 不再询问。 - 用户已明确同意替换的文件:先复制为 `<原名>.bak.<时间戳>`,确认备份成功后再替换。 - 用户选择保留或没有明确同意替换的文件:保留原文件,只把新模板放到 `.github/.recommended/` 供参考,并在阶段 III 告知。 ### 步骤 2 · 生成文档模板(按 `references/协作模板底本.md`) - `.github/ISSUE_TEMPLATE/提需求.yml`、`报bug.yml`、`config.yml` - `.github/pull_request_template.md`(PR 核心四件套) - `.github/CODEOWNERS`(用阶段 I 拿到的人名填入) - `CONTRIBUTING.md`(含分支命名 `feat/*`、`docs/*`、提交流程、issue/PR 怎么用) ### 步骤 3 · 生成 CI 门禁(按 `references/CI门禁与仓库设置.md`,检测优先) - 检测到 Node → 生成 `npm ci && npm test`(或 `pnpm`/`yarn`,按 lockfile 判断)的 ci.yml - 检测到 Python → 生成 `pytest` 的 ci.yml - 检测到 Go / Java / Rust / PHP → 对应 test 命令 - **识别不了 / 没有测试基础设施 → 跳过 ci.yml,只在设置指引里写"CI 怎么配"**,绝不硬生成跑不通的 workflow。 ### 步骤 4 · 生成设置指引 - `仓库协作设置指引.md`:分支保护规则(gh CLI 命令 + 网页手动步骤)、标签体系建议、stale bot(可选)。 > 环境注意:写文件后用 `Bash`(ls / cat 核查)确认实际落盘,不轻信工具回执。 --- ## 阶段 III · 一次性汇报 全部产出且自校验(YAML 语法、文件齐全、CI 命令与检测到的栈一致)通过后,**一次性**汇报: ```text ✅ git-master 已把当前项目标准化: 📂 已生成: .github/ISSUE_TEMPLATE/提需求.yml ← 业务提需求走这个 .github/ISSUE_TEMPLATE/报bug.yml ← 报 bug 走这个 .github/ISSUE_TEMPLATE/config.yml ← 已禁空白 issue .github/pull_request_template.md ← PR 核心四件套 .github/CODEOWNERS ← review 自动指派 .github/workflows/ci.yml ← CI 门禁(跑 npm test) CONTRIBUTING.md ← 贡献指南 仓库协作设置指引.md ← 手动设置步骤 ⚠️ 已备份并保留你原有的:xxx.yml.bak.<时间戳>(未覆盖,待你确认) 🔧 还需你手动设置(见 仓库协作设置指引.md): - 分支保护:gh api ... 或 网页 Settings → Branches - 标签体系(可选) 👥 接下来怎么用: 业务 → Issues → New issue → 选「提需求」或「报bug」填表 开发 → 开 feat/* 分支改 → 提 PR → CI 全绿 + 评审 → 合 main ``` --- ## 全局纪律 - **横切定位**:本 skill 改的是协作基建(`.github/`),不碰产品文档(`output/`),不依赖营队链路,任何 git 项目独立可用。 - **不静默覆盖**:已有配置的处理策略必须在阶段 I 确认;阶段 II 只按授权备份并替换。未获明确同意就放 `.github/.recommended/`,不覆盖。**这是底线,不可破。** - **检测优先**:CI workflow、CODEOWNERS、平台写法都先检测再生成;识别不了就给指引,不硬造跑不通的东西。 - **安全边界**:分支保护、仓库设置这类需要权限 / 敏感的操作,**只生成指引文档,不自动改仓库设置**;除非用户当次明确要求"用 gh CLI 自动设"。 - **模板要短**:issue / PR 模板遵循实证(~75 词、3 区块、4 清单),别做长问卷把人吓跑;bug 模板务必含"复现步骤 + 运行环境"。 - **交互只在阶段 I**:把配置敲死就静默生成,不再提问、不中断。 - **GitHub 为主**:issue forms(YAML 表单)只有 GitHub 支持;Gitee / GitLab 降级为 Markdown 模板,并在 CONTRIBUTING 说明差异。 - **规则内容不重写**:所有要 cp 到项目的文件内容以 `references/协作模板底本.md` 为准,CI 检测与设置步骤以 `references/CI门禁与仓库设置.md` 为准,本 skill 只负责"先检测、再轻问、再按底本生成、不覆盖、给指引"。