gate与bootstrap

This commit is contained in:
ZxR 2026-07-03 09:52:55 +08:00
parent 693da43605
commit 3f9e70cf53
2 changed files with 200 additions and 0 deletions

View File

@ -0,0 +1,78 @@
---
name: gitlink-project-bootstrap
version: 3.0.0
description: "项目初始化编排:依次调度 gitlink-repo → gitlink-issue → gitlink-milestone 三个子 Skill。当用户需要快速初始化一个新项目时触发。"
metadata:
requires:
bins: ["gitlink-cli"]
cliHelp: "gitlink-cli repo --help"
---
# gitlink-project-bootstrap项目初始化 · 编排 Skill
> **你是编排者Orchestrator不是执行者。每一步都通过 Skill 工具调用对应的子 Skill 来完成。不要自己直接跑命令。**
---
## 编排架构
```
gitlink-project-bootstrap
├── Step 1 → Skill("gitlink-repo") 建仓库 + 生成标配文件
├── Step 2 → Skill("gitlink-issue") 创建初始 Issue
└── Step 3 → Skill("gitlink-milestone") 创建里程碑
```
## 子 Skill 依赖
| 子 Skill | 用途 | 写入 |
|----------|------|:----:|
| gitlink-repo | 创建仓库 + README/LICENSE/.gitignore/CI 配置 | 是 |
| gitlink-issue | 创建初始开发 Issue | 是 |
| gitlink-milestone | 设定版本里程碑 | 是 |
---
## 前置:收集参数
开始前确认以下信息(未提供则询问用户):
| 参数 | 说明 | 示例 |
|------|------|------|
| 项目名称 | kebab-case | `hello-demo` |
| 项目描述 | 一句话 | `Python 演示项目` |
| owner | 归属用户/组织 | `ZxR123-Z` |
| 项目类型 | 决定 .gitignore 和 CI 模板 | `Python` |
| 可见性 | 公开/私有 | 公开 |
---
## 工作流
### Step 1建仓库 + 生成文件
**→ 调用 Skill 工具:`Skill("gitlink-repo", args="在 <owner> 下创建仓库 <project-name>,描述:<描述>。然后生成 README.md、LICENSE(MIT)、.gitignore(<项目类型>)、.gitlink-ci.yml 文件。注意 create_file 需要 base64 编码 contentWindows 下需要 MSYS_NO_PATHCONV=1。")`**
调用后记录 owner/repo 名称,传递给后续步骤。
### Step 2创建初始 Issue
**→ 调用 Skill 工具:`Skill("gitlink-issue", args="在 <owner>/<repo> 下创建 3 个初始 Issue(1) 项目初始化:搭建基础架构,(2) feat: 实现核心功能 MVP(3) test: 补充单元测试和集成测试。每个 Issue 的 body 包含目标描述和任务清单。")`**
### Step 3创建里程碑
**→ 调用 Skill 工具:`Skill("gitlink-milestone", args="在 <owner>/<repo> 下创建两个里程碑v0.1.0 MVP截止 2 周后)和 v1.0.0 正式版(截止 2 个月后)。")`**
---
## 最终输出
三个子 Skill 执行完毕后,汇总输出:
```markdown
## 🚀 项目初始化报告 — <owner>/<repo>
- URL: https://www.gitlink.org.cn/<owner>/<repo>
- 生成文件README.md / LICENSE / .gitignore / .gitlink-ci.yml
- 初始 Issue#1 基础架构 / #2 MVP / #3 测试
- 里程碑v0.1.0 MVP / v1.0.0 正式版
```

View File

@ -0,0 +1,122 @@
---
name: gitlink-quality-gate
version: 3.0.0
description: "质量看门编排:依次调度 gitlink-pr → gitlink-code-review → gitlink-ci → gitlink-pr 四个子 Skill。当用户需要对 PR 做质量门禁检查时触发。"
metadata:
requires:
bins: ["gitlink-cli"]
cliHelp: "gitlink-cli pr --help"
---
# gitlink-quality-gate质量看门 · 编排 Skill
> **你是编排者Orchestrator不是执行者。每一步都通过 Skill 工具调用对应的子 Skill 来完成。不要自己直接跑命令。**
---
## 编排架构
```
gitlink-quality-gate
├── Step 1 → Skill("gitlink-pr") 列出 PR确定审查目标
├── Step 2 → Skill("gitlink-code-review") 代码审查,生成分级报告
├── Step 3 → Skill("gitlink-ci") 检查 CI 构建状态
└── Step 4 → Skill("gitlink-pr") 汇总判定:合并 or 驳回
```
## 子 Skill 依赖
| 顺序 | 子 Skill | 用途 | 写入 |
|:----:|----------|------|:----:|
| 1 | gitlink-pr | 列出开放 PR获取 PR 详情 | 否 |
| 2 | gitlink-code-review | 获取变更 → 逐文件分析 → 分级报告 → 提交 Review | 是 |
| 3 | gitlink-ci | 查看构建列表和日志,判定 CI 状态 | 否 |
| 4 | gitlink-pr | 门禁判定:达标合并,不达标评论驳回 | 是 |
---
## 前置:收集参数
| 参数 | 说明 | 示例 |
|------|------|------|
| owner | 仓库所有者 | `ylly` |
| repo | 仓库名称 | `gitlink-cli` |
| PR 编号(可选) | 指定审查哪个 PR | 如果不提供,自动列出开放 PR |
---
## 工作流
### Step 1找 PR
**→ 调用 Skill 工具:`Skill("gitlink-pr", args="列出 <owner>/<repo> 的所有开放 PRstate=open确认待审查的 PR 编号。如果没有开放 PR按 Fork 流程自己提一个测试 PR。")`**
调用后记录 PR 编号、标题、分支信息,传递给 Step 2。
### Step 2代码审查
**→ 调用 Skill 工具:`Skill("gitlink-code-review", args="对 <owner>/<repo> 的 PR #<id> 执行完整代码审查:获取变更文件 → 逐文件分析(按语言检查清单)→ 按 Critical/Warning/Suggestion/Positive 分级 → 生成审查报告。")`**
调用后记录审查结果Critical/Warning/Suggestion 数量),传递给 Step 4。
**⚠️ 审查报告的提交方式(关键)**
审查结束后,必须用以下方式**各提交一次**,确保报告同时出现在审查记录和 PR 讨论流中:
**提交 1审查记录必须用 common禁止用 approved**
```bash
gitlink-cli pr +review --owner <owner> --repo <repo> --id <pr_id> \
--status common \
--content "<审查报告 Markdown>"
```
> `--status common` = API 的 `event: "COMMENT"`,报告会出现在 PR 的 Review 记录中。
> **绝对不要用 `--status approved`**,那只是点了个「通过」按钮,审查报告正文不显眼。
**提交 2PR 评论(可选,让报告更显眼)**
```bash
gitlink-cli pr +comment --owner <owner> --repo <repo> --id <pr_id> \
--body "<审查报告 Markdown>"
```
**⚠️ Windows 避免 emoji 乱码**:审查报告中的 🔴🟡🔵✅⚠️ 等 emoji 在 Windows Git Bash 下会变成 `?`。审查报告中使用纯文本标记替代:
- `[Critical]` 替代 🔴
- `[Warning]` 替代 🟡
- `[Suggestion]` 替代 🔵
- `[Positive]` 替代 ✅
- `[Skip]` 替代 ⚠️
### Step 3CI 检查
**→ 调用 Skill 工具:`Skill("gitlink-ci", args="查看 <owner>/<repo> 的 CI 构建列表和日志,判定构建状态(通过/失败/运行中/无配置)。")`**
调用后记录 CI 状态(通过/失败/无配置),传递给 Step 4。
### Step 4门禁判定
**→ 调用 Skill 工具:`Skill("gitlink-pr", args="汇总 PR #<id> 的审查结果Critical=N, Warning=N和 CI 状态(<状态>。判定规则Critical=0 且 CI 通过 → 合并pr +merge否则 → 评论驳回pr +comment。合并前确认用户意图。")`**
---
## 门禁判定矩阵
| Critical | CI 状态 | 判定 | 动作 |
|:--------:|:------:|:----:|------|
| 0 | ✅ 通过 | ✅ 合并 | `pr +merge` |
| 0 | ⚠️ 无 CI | ✅ 合并(弱) | 标注"无 CI"后合并 |
| > 0 | 任意 | ❌ 驳回 | 评论修改建议 |
| 任意 | ❌ 失败 | ❌ 驳回 | 评论 + CI 日志 |
---
## 最终输出
四个子 Skill 执行完毕后,汇总输出:
```markdown
## 📋 质量门禁报告 — PR #<id>
| 门禁项 | 状态 | 详情 |
|--------|:----:|------|
| 🔍 代码审查 | ✅/❌ | Critical: N, Warning: N |
| 🔧 CI 构建 | ✅/❌/⚠️ | <摘要> |
| 📋 最终判定 | 通过/驳回 | <理由> |
```