diff --git a/gitlink-cli.exe b/gitlink-cli.exe index e08a72c..5cfe99c 100644 Binary files a/gitlink-cli.exe and b/gitlink-cli.exe differ diff --git a/shortcuts/register.go b/shortcuts/register.go index ae29f1d..32f91d1 100644 --- a/shortcuts/register.go +++ b/shortcuts/register.go @@ -19,6 +19,7 @@ import ( "github.com/gitlink-org/gitlink-cli/shortcuts/milestone" "github.com/gitlink-org/gitlink-cli/shortcuts/org" "github.com/gitlink-org/gitlink-cli/shortcuts/pipeline" + "github.com/gitlink-org/gitlink-cli/shortcuts/pm" "github.com/gitlink-org/gitlink-cli/shortcuts/pr" "github.com/gitlink-org/gitlink-cli/shortcuts/profile" "github.com/gitlink-org/gitlink-cli/shortcuts/release" @@ -60,6 +61,7 @@ func RegisterAll(root *cobra.Command, translators ...*i18n.Translator) { "ignore": ignore.Shortcuts(), "license": license.Shortcuts(), "pipeline": pipeline.Shortcuts(), + "pm": pm.Shortcuts(), "profile": profile.Shortcuts(tr), "workflow": workflow.Shortcuts(), } @@ -87,6 +89,7 @@ func RegisterAll(root *cobra.Command, translators ...*i18n.Translator) { "ignore": "Gitignore template operations", "license": "License operations", "pipeline": "Pipeline operations", + "pm": "Project management operations", "profile": tr.T("cmd.profile.short"), "workflow": "AI agent workflow analysis", } diff --git a/skills/README.md b/skills/README.md index e1f26bf..f8d0748 100644 --- a/skills/README.md +++ b/skills/README.md @@ -157,6 +157,18 @@ skills/ | **gitlink-pm** | 项目管理 | 通过 Raw API 访问 | | **gitlink-workflow** | AI 工作流 | Issue 分类、PR Review、Release Notes | | **gitlink-health** | 开源项目健康度 | 详情见SKILL.md | +| **gitlink-snippet** | 本地代码片段管理 | `snippet +create`, `snippet +search`, `snippet +list` | + +### 智能化与工作流 Skills(AI 编排,串联多步) + +| Skill | 说明 | 常用命令 / 能力 | +|-------|------|----------| +| **gitlink-onboarding** | 新人引导 | 搜 good-first-issue、5 维度友好度评估、生成引导评论 | +| **gitlink-digest** | 项目简报 | 跨源聚合 Issue/PR/CI/通知成日报 | +| **gitlink-todo** | 我的待办 | 汇总 @我 / 分配我 / 待 review,按紧急度排序 | +| **gitlink-pr-guard** | 代码质量看门人 | PR→Review→CI→质量判定→合并(端到端门禁) | + +> 以上 5 个为本次新增的 AI 工作流 Skill,均兼容 Claude Code 等 Agent,详见各 `SKILL.md`。 --- diff --git a/skills/gitlink-pr-guard/SKILL.md b/skills/gitlink-pr-guard/SKILL.md new file mode 100644 index 0000000..e5a10f2 --- /dev/null +++ b/skills/gitlink-pr-guard/SKILL.md @@ -0,0 +1,173 @@ +--- +name: gitlink-pr-guard +version: 1.0.0 +description: "代码质量看门人:PR 提交后自动跑完「采集→AI Review→CI 检查→汇总评论→质量判定/合并」端到端流水线。当用户需要 PR 质量门禁、自动化代码审查流水线、PR 自动合并看门人、code quality gate 时触发。" +metadata: + requires: + bins: ["gitlink-cli"] + cliHelp: "gitlink-cli pr --help" +--- + +# gitlink-pr-guard(代码质量看门人) + +**CRITICAL — 开始前必须先阅读 [`../gitlink-shared/SKILL.md`](../gitlink-shared/SKILL.md),其中包含认证、权限处理和 API 注意事项。** +**CRITICAL — 合并 PR(`pr +merge`)是写操作,执行前必须确认用户意图;默认只「建议合并」,由人确认后再执行。** +**CRITICAL — GitLink 操作只能用 `gitlink-cli`。禁止用 `gh`。** + +> **前置条件:** 先读 [`../gitlink-shared/SKILL.md`](../gitlink-shared/SKILL.md)(认证与全局参数)、[`../gitlink-code-review/SKILL.md`](../gitlink-code-review/SKILL.md)(Review 分析逻辑)。 + +## 定位:与 gitlink-code-review 的分工 + +| Skill | 职责边界 | +|-------|---------| +| `gitlink-code-review` | **只做 Review**:分析 PR diff,输出结构化审查意见(Critical/Warning/Suggestion) | +| `gitlink-pr-guard`(本 Skill) | **完整看门人**:Review + CI 检查 + 汇总评论 + **质量判定 + 合并决策**,一条流水线 | + +> 本 Skill 是**端到端工作流**(子任务三),串联 `pr` + `code-review` + `ci` + `merge` 多个能力,交付完整质量门禁方案。 + +--- + +## 工作流概览(5 步流水线) + +| 阶段 | 操作 | 命令 | AI Agent 角色 | +|------|------|------|--------------| +| ① 采集变更 | 拉 PR 详情、文件、Diff | `pr +view` / `+files` / `+diff` | 数据采集 | +| ② AI Review | 分析 diff,分级找问题 | (复用 code-review 逻辑) | 逐文件审查 | +| ③ CI 检查 | 查最新构建状态 | `ci +builds` / `+log` | 状态判定 | +| ④ 汇总评论 | 发布结构化审查报告 | `api POST .../reviews` | 生成报告并发布 | +| ⑤ 质量判定 | 按门禁规则判通过/拒绝 | `pr +merge`(达标且确认后) | 决策 + 执行 | + +--- + +## 详细工作流 + +### Step 1:采集 PR 变更 + +```bash +gitlink-cli pr +view --id --format json +gitlink-cli pr +files --id --format json +gitlink-cli pr +diff --id --format json # 完整 diff +gitlink-cli pr +diff --id --stat # 仅统计摘要 +``` + +### Step 2:AI Review(复用 code-review 分析逻辑) + +对每个变更文件按 [`../gitlink-code-review/SKILL.md`](../gitlink-code-review/SKILL.md) 的检查项审查,输出分级意见: +- 🔴 **Critical**:硬编码密钥、SQL/命令注入、路径遍历等安全红线 +- 🟡 **Warning**:错误处理缺失、边界条件、密码明文等 +- 🔵 **Suggestion**:命名、性能、可配置化等优化 +- ✅ **Positive**:值得肯定的设计 + +### Step 3:CI 检查 + +```bash +# 查最新构建 +gitlink-cli ci +builds --owner --repo --format json +# 从返回找 PR 对应分支的最新构建,取 status(success/failure/pending) +# 失败时取日志定位原因 +gitlink-cli ci +log --build +``` + +### Step 4:发布汇总评论(审查报告) + +```bash +gitlink-cli api POST /:owner/:repo/pulls/:id/reviews --body '{ + "body": "<质量看门人报告,见输出模板>", + "event": "COMMENT" +}' +``` + +### Step 5:质量判定(门禁核心) + +按下方「质量门禁规则」判定,达标且**用户确认后**执行合并: + +```bash +# 达标 + 用户确认 → 合并(默认建议,不自动执行) +gitlink-cli pr +merge --id --method squash +``` + +--- + +## 质量门禁规则(决策表) + +本 Skill 的灵魂:把「能否合并」从主观判断变成可量化门禁。 + +| 条件 | 判定 | 动作 | +|------|:----:|------| +| 0 Critical **且** CI = success | ✅ **通过** | 建议合并(确认后 `pr +merge`) | +| 有 Critical(任一) | 🔴 **拒绝** | 请求修改,逐条列 Critical + 文件:行号 | +| CI = failure | 🔴 **拒绝** | 请求修改,附 CI 失败日志摘要 | +| CI = pending | ⏳ **等待** | 等构建完成再判定 | +| 0 Critical + CI success + 有 Warning | 🟡 **通过(带建议)** | 合并 + 评论里列出 Warning 供后续优化 | +| 仅 Suggestion | ✅ **通过** | 合并 + 评论附优化建议 | + +**安全红线**(必须 Critical,不得合并): +- 硬编码 Token / 密钥 / 密码 +- SQL / NoSQL / 命令注入 +- 路径遍历、不安全反序列化、XSS + +--- + +## 输出模板:质量看门人报告 + +```markdown +## 🚪 质量看门人报告 — PR # + +### 📊 质量判定:<✅ 通过 / 🔴 拒绝 / ⏳ 等待 CI> + +| 维度 | 结果 | +|------|------| +| 变更规模 | <n> 文件,+<add> / -<del> | +| 🔴 Critical | <n> | +| 🟡 Warning | <n> | +| 🔵 Suggestion | <n> | +| CI 构建 | <success/failure/pending>(build #<n>) | + +### 🔴 Critical(必须修改) +- <问题> — `<file>:<line>` + > <修改建议> + +### 🟡 Warning(建议修改) +- <问题> — `<file>:<line>` + +### ✅ CI 状态 +- 构建 #<n>:<success/failure>,耗时 <duration> +- 失败原因(如有):<日志摘要> + +### 📋 处置建议 +<根据门禁规则:合并 / 请求修改 / 等 CI> + +--- +*由 gitlink-pr-guard 质量看门人自动生成* +``` + +--- + +## 工作流决策规则 + +| 场景 | 处理 | +|------|------| +| 用户说"帮我把关这个 PR" | 跑完整 5 步,输出报告 + 判定 | +| 用户只要 Review 不要合并 | 跑 Step 1-4,跳过 Step 5(指向 code-review) | +| PR 是 draft 草稿 | 提示先标记 Ready for Review | +| CI 还在跑 | Step 3 返回 pending,报告标 ⏳,建议稍后再判 | +| Critical 数 ≥1 | 报告标 🔴 拒绝,**不合并**,列清 Critical | +| 用户要求自动合并 | 警告风险,仅在 0 Critical + CI success 时执行,且二次确认 | + +--- + +## 注意事项 + +- **合并是写操作**:默认只「建议合并」,`pr +merge` 必须用户确认后执行 +- **CI 对应分支**:`ci +builds` 返回多条,需按 PR 的 source_branch 匹配最新构建 +- **Review 评论量控制**:最多列 3-5 个最严重问题,避免信息过载 +- **草稿 PR**:先提示标记 Ready for Review +- **与 code-review 复用**:Step 2 的审查逻辑直接引用 code-review SKILL.md,不重复定义 +- **可复现**:配套 `pr-guard-workflow.sh` 脚本可端到端复现整个流水线 + +## References + +- [gitlink-shared](../gitlink-shared/SKILL.md) — 认证与全局参数 +- [gitlink-code-review](../gitlink-code-review/SKILL.md) — Review 分析逻辑(Step 2 复用) +- [gitlink-pr](../gitlink-pr/SKILL.md) — PR 命令 +- [gitlink-ci](../gitlink-ci/SKILL.md) — CI 命令 diff --git a/skills/gitlink-research-insight/SKILL.md b/skills/gitlink-research-insight/SKILL.md new file mode 100644 index 0000000..639f87e --- /dev/null +++ b/skills/gitlink-research-insight/SKILL.md @@ -0,0 +1,191 @@ +--- +name: gitlink-research-insight +version: 1.0.0 +description: "科研仓库画像:采集 GitLink 科研项目数据,从可复现性、活跃度、引用价值、协作健康四个维度评估,输出科研评估报告与协作知识图谱。当用户提到「科研分析」「科研项目评估」「仓库画像」「可复现性」「引用价值」「科研洞悉」「research insight」时触发。" +metadata: + requires: + bins: ["gitlink-cli"] + cliHelp: "gitlink-cli repo --help" +--- + +# gitlink-research-insight(科研仓库画像) + +**CRITICAL — 开始前必须先阅读 [`../gitlink-shared/SKILL.md`](../gitlink-shared/SKILL.md),其中包含认证、权限处理和 API 注意事项。** +**CRITICAL — 本 Skill 为只读分析,不修改任何仓库数据。** +**CRITICAL — GitLink 操作只能用 `gitlink-cli`。禁止用 `gh`。** + +> **前置条件:** 先读 [`../gitlink-shared/SKILL.md`](../gitlink-shared/SKILL.md)、[`../gitlink-health/SKILL.md`](../gitlink-health/SKILL.md)(工程健康度指标,本 Skill 在其基础上加科研视角)。 + +## 定位:科研辅助,与 gitlink-health 的分工 + +| Skill | 视角 | 核心问题 | +|-------|------|---------| +| `gitlink-health` | **工程健康度** | 这个项目维护得好不好?(Issue 响应、PR 效率、贡献者活跃) | +| `gitlink-research-insight`(本 Skill) | **科研价值** | 这个开源科研项目**值不值得引用/复现/参与**?(可复现性、引用价值、协作网络) | + +> 本 Skill 服务科研工作者:快速评估一个 GitLink 上的开源科研项目,辅助论文引用、实验复现、合作选择。 + +--- + +## 工作流概览(4 步) + +| 阶段 | 操作 | 命令 | 产出 | +|------|------|------|------| +| ① 数据采集 | 拉仓库全貌数据 | `repo +info/+languages/+contributors`、`issue/pr +list`、`repo +commits` | 原始数据 | +| ② 多维分析 | 按 4 维科研指标评分 | AI 计算(见指标体系) | 各维度得分 | +| ③ 协作图谱 | 构建贡献者协作网络 | AI 从贡献者/PR 数据生成 mermaid | 知识图谱 | +| ④ 生成报告 | 输出科研画像报告 | Markdown 模板 | 评估报告 | + +--- + +## 详细工作流 + +### Step 1:采集科研仓库数据 + +```bash +# 基础画像 +gitlink-cli repo +info --owner <owner> --repo <repo> --format json +gitlink-cli repo +languages --owner <owner> --repo <repo> --format json +gitlink-cli repo +contributors --owner <owner> --repo <repo> --format json +gitlink-cli repo +readme --owner <owner> --repo <repo> + +# 活跃度数据 +gitlink-cli repo +commits --owner <owner> --repo <repo> --limit 50 --format json +gitlink-cli issue +list --owner <owner> --repo <repo> --format json +gitlink-cli pr +list --owner <owner> --repo <repo> --format json + +# 合规/复现性数据 +gitlink-cli repo +raw --owner <owner> --repo <repo> --path LICENSE +gitlink-cli repo +raw --owner <owner> --repo <repo> --path .gitea/workflows/ci.yml # 或 .github/workflows +gitlink-cli repo +tags --owner <owner> --repo <repo> --format json # 版本归档 +``` + +### Step 2:四维科研评分(AI 分析) + +#### 维度 1:可复现性(Reproducibility)—— 科研最核心,满分 10 +| 检查项 | 分值 | 判定 | +|--------|:---:|------| +| 有 CI 配置 | +2 | `.gitea/workflows` 或 `.github/workflows` 存在 | +| 依赖锁定文件 | +2 | `go.sum` / `package-lock.json` / `requirements.txt` 等存在 | +| 数据/数据获取说明 | +2 | README 提及数据集,或有 `data/` 目录 | +| 运行/环境文档 | +2 | README 有安装、运行、环境要求说明 | +| 版本归档 | +2 | 有 release 或 tag(可引用特定版本) | + +#### 维度 2:活跃度(Activity) +- 近 3 个月提交频率(从 `repo +commits` 时间分布) +- Issue/PR 近期活跃数 +- 贡献者增长趋势 + +#### 维度 3:引用价值(Citation-worthiness) +- 有 LICENSE(开源协议清晰) +- 有版本归档(可引用固定版本,科研刚需) +- 文档完整(README/Wiki) +- 星标/关注量 + +#### 维度 4:协作健康(Collaboration) +- Issue 平均响应时长 +- PR 合并率 +- **巴士因子**:核心贡献者提交占比(越分散越健康,集中度高=高风险) +- 贡献者协作网络(见 Step 3) + +### Step 3:协作知识图谱 + +AI 从贡献者列表 + PR 协作数据,生成 mermaid 协作网络图: + +```mermaid +graph LR + subgraph 核心["核心贡献者"] + A[alice] + B[bob] + end + C[carol] + D[dave] + P((<repo>)) + A -->|主提交| P + B -->|主提交| P + C -->|偶发贡献| P + D -->|偶发贡献| P + A -.评审.-> C + B -.评审.-> D +``` + +> 协作密集度 + 核心圈识别 = 科研合作潜力评估。 + +### Step 4:科研画像报告(见输出模板) + +--- + +## 输出模板:科研仓库画像报告 + +```markdown +# 🔬 科研仓库画像 — <owner>/<repo> + +> 一句话定性:<这是一个 [活跃维护/停滞/新兴] 的 [领域] 科研项目,[适合/谨慎/不建议] 引用与复现。> + +## 📊 综合评分:<⭐ x/10> + +| 维度 | 得分 | 评价 | +|------|:---:|------| +| 🔁 可复现性 | <x>/10 | <能否复现实验结果> | +| 📈 活跃度 | <x>/10 | <近期维护状态> | +| 📑 引用价值 | <x>/10 | <是否适合论文引用> | +| 🤝 协作健康 | <x>/10 | <社区协作质量> | + +## 📋 基础信息 +| 项 | 值 | +|----|-----| +| 描述 | <description> | +| 主要语言 | <language> | +| 许可证 | <license> | +| 贡献者数 | <n> | +| 版本归档 | <有/无,最新 tag> | + +## 🔁 可复现性详情(科研核心) +- CI 配置:<✅ 有 / ❌ 无> +- 依赖锁定:<✅ go.sum / ❌ 无> +- 数据说明:<✅ 有 / ❌ 无> +- 运行文档:<✅ 完整 / ⚠️ 部分 / ❌ 无> +- 版本归档:<✅ v1.x / ❌ 无> +> 可复现性结论:<他人能否独立跑出同样结果> + +## 🤝 协作网络图 +<mermaid 协作图谱> +- 巴士因子:<核心贡献者提交占比 X%,<健康/集中风险>> + +## 💡 给科研工作者的建议 +1. **引用**:<建议引用最新 tag vX.Y,协议 XXX / 谨慎:无明确版本> +2. **复现**:<按 README + CI 可复现 / 需补充环境说明> +3. **合作**:<协作网络健康,可联系 @核心贡献者 / 核心圈封闭,贡献门槛高> + +--- +*由 gitlink-research-insight 科研画像自动生成* +``` + +--- + +## 决策规则 + +| 场景 | 处理 | +|------|------| +| 用户说"分析这个科研项目值不值得用" | 跑完整 4 步,重点出可复现性 + 引用价值 | +| 用户只关心能否复现 | 聚焦维度 1(可复现性),输出 5 项检查清单 | +| 用户要做领域综述 | 建议对多个仓库重复本流程,汇总对比(衔接方向 B 热点追踪) | +| 仓库无 LICENSE / 无 README | 可复现性和引用价值直接扣分,报告标注风险 | +| 巴士因子 < 0.5(核心贡献者 >50% 提交) | 协作健康标 ⚠️ 单点风险 | + +--- + +## 注意事项 + +- **纯只读**:本 Skill 只采集和分析,不改任何数据 +- **科研视角**:区别于 health 的工程视角,重点在可复现性/引用价值/协作网络 +- **协作图谱**:mermaid 图基于贡献者 + PR 协作关系,AI 从数据推断 +- **评分主观性**:评分体系透明可调,AI 给分需附判定依据(哪项 +分) +- **真实仓库验证**:选 GitLink 上一个科研类仓库(有 LICENSE/CI/数据的项目最佳)演示 +- **可复现**:配套 `research-insight-workflow.sh` 脚本可端到端复现 + +## References + +- [gitlink-shared](../gitlink-shared/SKILL.md) — 认证与全局参数 +- [gitlink-health](../gitlink-health/SKILL.md) — 工程健康度(本 Skill 复用其指标并加科研视角) +- [gitlink-repo](../gitlink-repo/SKILL.md) / [gitlink-issue](../gitlink-issue/SKILL.md) / [gitlink-pr](../gitlink-pr/SKILL.md) — 数据采集命令