diff --git a/skills/gitlink-issue-triage/SKILL.md b/skills/gitlink-issue-triage/SKILL.md new file mode 100644 index 0000000..05bb621 --- /dev/null +++ b/skills/gitlink-issue-triage/SKILL.md @@ -0,0 +1,226 @@ +--- +name: gitlink-issue-triage +version: 1.0.0 +description: "Issue 智能分拣:自动分析仓库 Issue 列表,按类型、紧急度、复杂度分类,生成分拣报告和维护建议。当用户需要整理 Issue、分类 Issue、Issue 分拣、Issue 优先级排序时触发。" +metadata: + requires: + bins: ["gitlink-cli"] + cliHelp: "gitlink-cli issue --help" +--- + +# gitlink-issue-triage(Issue 智能分拣) + +**CRITICAL — 开始前必须先阅读 [`../gitlink-shared/SKILL.md`](../gitlink-shared/SKILL.md),其中包含认证、权限处理和 API 注意事项。** +**CRITICAL — 本 Skill 为只读操作,不会修改任何 Issue。无需用户额外确认即可执行。** +**CRITICAL — GitLink 操作只能用 `gitlink-cli`。禁止用 `gh`(GitHub CLI)操作 GitLink 资源。** + +> **前置条件:** 先阅读 [`../gitlink-shared/SKILL.md`](../gitlink-shared/SKILL.md) 了解认证和全局参数。 + +--- + +## 功能概述 + +对仓库的开放 Issue 进行全量扫描和智能分类,输出结构化的分拣报告: + +1. **类型分类** — 判断每个 Issue 是 Bug、功能请求、文档问题还是使用咨询 +2. **紧急度评估** — 根据关键词和优先级字段标注紧急程度 +3. **复杂度预估** — 根据描述详尽程度评估修复难度 +4. **行动建议** — 给出具体处理建议(立即修复/需讨论/可关闭/适合作入门任务) + +--- + +## 工作流:Issue 全量分拣 + +### Step 1:获取项目概览 + +```bash +gitlink-cli repo +info --owner --repo --format json +``` + +提取 `issues_count` 了解 Issue 池总量,`default_branch` 确认主分支。 + +### Step 2:获取全部开放 Issue + +```bash +gitlink-cli issue +list --owner --repo --state open --format json +``` + +> ⚠️ **已知问题**:`--state open` 过滤不准确,返回列表可能包含已关闭的 Issue。需在客户端按 `status_id` 二次过滤:保留 `status_id` = 1(新增)或 2(正在解决),排除 3(已解决)、5(关闭)。`status_id` = 0 纳入分析但标注"状态异常"。 + +如果返回数量 >20,追加分页参数获取全部: + +```bash +gitlink-cli issue +list --owner --repo --state open --format json --page 2 +``` + +### Step 3:逐条深入分析 + +对过滤后的每条 Issue,获取详情: + +```bash +gitlink-cli issue +view --owner --repo --number --format json +``` + +分析以下维度: + +| 维度 | 关注字段 | 分析要点 | +|------|----------|----------| +| 类型 | `subject`, `description` | 标题和描述中的关键词 | +| 紧急度 | `priority`, `subject` | 优先级字段 + 标题紧急信号 | +| 复杂度 | `description` 长度 | 描述的详细程度、是否有复现步骤 | +| 活跃度 | `comment_journals_count`, `updated_at` | 讨论热度和最后活跃时间 | +| 分配状态 | `assigners` | 是否已有人负责 | + +### Step 4:分类规则 + +#### 4.1 类型分类(type) + +| 类型 | 匹配规则 | +|------|----------| +| **bug** | 标题/描述含 `bug`、`错误`、`失败`、`崩溃`、`异常`、`修复`、`fix`、`修复`、`报错`、`不工作`、`问题`(上下文为故障时) | +| **feature** | 标题/描述含 `feature`、`新增`、`添加`、`希望`、`建议`、`需要`、`支持`、`实现`,且非故障描述 | +| **docs** | 标题/描述含 `文档`、`doc`、`README`、`说明`、`教程`、`注释` | +| **question** | 标题/描述含 `如何`、`怎么`、`是否`、`能不能`、`请问`、`为什么`,且以问号结尾或明显为咨询语气 | +| **refactor** | 标题/描述含 `重构`、`refactor`、`优化结构`、`代码清理`、`技术债` | +| **ci** | 标题/描述含 `CI`、`CD`、`构建`、`部署`、`pipeline`、`自动化`、`测试环境` | +| **meta** | 维护者创建的元讨论帖、反馈收集帖、公告,无具体技术任务指向 | +| **other** | 不匹配以上任何类型时的兜底分类 | + +#### 4.2 紧急度评估(urgency) + +| 级别 | 判定条件 | +|------|----------| +| **urgent** | 标题含 `紧急`、`urgent`、`hotfix`、`生产`、`线上`、`崩溃`;或 `priority.name` = "紧急" | +| **high** | `priority.name` = "高";或标题含 `严重`、`阻塞`、`关键` | +| **normal** | 默认级别;`priority.name` = "正常" 或无优先级 | +| **low** | `priority.name` = "低";或标题含 `优化`、`nice to have`、`小建议` | + +#### 4.3 复杂度预估(complexity) + +| 级别 | 判定条件 | +|------|----------| +| **easy** | 描述简洁明确,有清晰复现步骤或单一功能点;`description` < 300 字且范围明确 | +| **medium** | 涉及多个文件/模块,需要一定背景了解;`description` 300~800 字,或虽有描述但需推断 | +| **hard** | 涉及架构变更、新子系统、跨模块重构;`description` > 800 字或非常模糊 | + +> **特殊情况**:`description` 仅含图片附件链接而无可读文字 → 视为"描述缺失",复杂度标记为 hard(因无法评估),建议标记为 discuss。 + +#### 4.4 行动建议(action) + +| 建议 | 判定条件 | +|------|----------| +| **fix-now** | bug + urgent/high | +| **investigate** | bug + normal/low,需先确认复现 | +| **implement** | feature + 描述清晰 + 范围明确 | +| **discuss** | 描述模糊、需求不清、或 question 类型 | +| **close-candidate** | 超过 90 天无更新、无评论、无分配 | +| **good-first-issue** | complexity=easy + 无人分配 + 范围明确 | + +### Step 5:生成分拣报告 + +将所有分析结果组织输出。 + +--- + +## 输出模板 + +```markdown +# 📊 {{仓库名}} Issue 分拣报告 + +> 分析时间:{{当前时间}} +> Issue 总数:{{total}},开放:{{open_count}},本次分析:{{analyzed_count}} 条 + +--- + +## 总览 + +| 指标 | 数量 | +|------|------| +| Bug | {{bug_count}} | +| 功能请求 | {{feature_count}} | +| 文档 | {{docs_count}} | +| 咨询 | {{question_count}} | +| 元讨论 | {{meta_count}} | +| 其他 | {{other_count}} | +| **需立即处理** | {{urgent_count}} | +| **适合入门** | {{good_first_issue_count}} | + +--- + +## 🔴 需立即处理 + +> 如本段为空,输出:*当前无紧急 Issue,状态健康。* + +| # | 标题 | 类型 | 紧急度 | 复杂度 | 建议 | 备注 | +|---|------|------|--------|--------|------|------| +| {{number}} | {{subject}} | bug | urgent | medium | fix-now | | +| ... | ... | ... | ... | ... | ... | ... | + +## 🟡 建议近期处理 + +> 如本段为空,输出:*当前无高优先级 Issue。* + +| # | 标题 | 类型 | 紧急度 | 复杂度 | 建议 | 备注 | +|---|------|------|--------|--------|------|------| +| ... | ... | bug/feature | high/normal | easy/medium | investigate/implement | | + +## 🟢 可延迟 / 需讨论 + +> 如本段为空,输出:*所有 Issue 均已明确,无需额外讨论。* + +| # | 标题 | 类型 | 紧急度 | 复杂度 | 建议 | 备注 | +|---|------|------|--------|--------|------|------| +| ... | ... | question/feature | normal/low | medium/hard | discuss | | + +## ⭐ 适合入门(Good First Issue) + +> 如本段为空,输出:*暂无完全符合条件的入门 Issue。建议在后续工作中拆分出简单子任务。* + +| # | 标题 | 类型 | 复杂度 | 推荐理由 | +|---|------|------|--------|----------| +| {{number}} | {{subject}} | bug/docs | easy | 范围明确,单文件修改 | +| ... | ... | ... | ... | ... | + +## ⚠️ 候选关闭(90+ 天无活动) + +> 如本段为空,输出:*无长期不活跃的 Issue。* + +| # | 标题 | 最后更新 | 建议 | +|---|------|----------|------| +| {{number}} | {{subject}} | {{updated_at}} | 评论询问是否仍需要,如无回应可关闭 | + +--- + +## 📋 维护建议 + +1. **立即行动**:{{urgent_count}} 个紧急 Issue 需要优先处理 +2. **本周目标**:建议处理 {{suggested_this_week}} 个 Issue(suggested_this_week = 建议近期处理段中的 Issue 数量,即 bug+normal/high + feature+清晰描述 的总数) +3. **社区引导**:{{good_first_issue_count}} 个 Issue 适合标记为 good first issue,吸引新贡献者 +4. **清理计划**:{{close_candidate_count}} 个 Issue 长期无活动,建议批量确认后关闭 +5. {{#if no_tags}}本仓库未使用 Issue 标签系统,建议建立标签体系(bug/feature/docs/question/meta/help-wanted/good-first-issue)以提升管理效率{{/if}} +6. {{#if status_anomalies}}本批次有 {{status_anomaly_count}} 个 Issue 状态异常(status_id=0),建议在平台上手动确认{{/if}} +``` + +--- + +## 异常场景处理 + +| 场景 | 处理方式 | +|------|----------| +| 无开放 Issue | 输出 `repo +info` 概览后,恭喜维护者"Issue 池已清空" | +| Issue 数量 >50 | 优先分析最近 30 天更新的 Issue,其余标记为"待分批处理" | +| 全部 Issue 无标签/无优先级 | 分类完全依赖标题和描述关键词分析,并在报告末尾建议建立标签体系 | +| `description` 为空或仅含图片/附件链接 | 标注"描述缺失",类型仅根据标题判断,复杂度标为 hard,建议标记为 discuss | +| `status_id` = 0(未知) | 纳入分析但标注"状态异常" | + +--- + +## 注意事项 + +- ✅ **所有命令使用 `--format json`**,确保可解析 +- ✅ **`issue +view` 使用 `--number`(网页编号)**,非数据库 ID +- ✅ **本 Skill 为纯只读分析**,不会修改任何 Issue +- ✅ **Owner/repo 优先从 `git remote` 自动解析**,无 git 上下文时询问用户 +- ⚠️ **`issue +list --state open` 过滤不准确**,必须客户端按 `status_id` 二次过滤 +- ⚠️ **分类规则是启发式的**,AI 应根据实际内容做判断,不要机械匹配关键词 +- ⚠️ **Issue 数量多时分批处理**,超过 50 条建议先按更新时间排序,优先分析最近活跃的 diff --git a/skills/gitlink-issue-triage/examples/gitlink-cli-triage.md b/skills/gitlink-issue-triage/examples/gitlink-cli-triage.md new file mode 100644 index 0000000..379551a --- /dev/null +++ b/skills/gitlink-issue-triage/examples/gitlink-cli-triage.md @@ -0,0 +1,150 @@ +# gitlink-issue-triage 使用示例 + +> 触发方式:自然语言,Skill 自动匹配 +> 日期:2026-05-28 +> 验证状态:✅ 通过(自动触发 + 全部命令执行成功 + 分类规则正确应用) + +--- + +## 用户输入 + +``` +帮我把 Gitlink/gitlink-cli 的 Issue 整理分类一下,看看哪些需要优先处理 +``` + +## Skill 触发 + +Claude Code 自动匹配到 `gitlink-issue-triage` skill(关键词匹配:"Issue" + "分类" + "优先处理"),同时自动加载前置依赖 `gitlink-shared`。 + +--- + +## 执行过程摘要 + +### Step 1:项目概览 + +```bash +gitlink-cli repo +info --owner Gitlink --repo gitlink-cli --format json +``` + +获取到:17 个 Issue,12 位贡献者,master 分支。 + +### Step 2:扫描开放 Issue + +```bash +gitlink-cli issue +list --owner Gitlink --repo gitlink-cli --state open --format json +``` + +返回 17 条,按 `status_id` 过滤后保留 7 条开放(含 2 条 status_id=0 状态异常)。 + +### Step 3:逐条分析 + +对全部 7 条 Issue 执行了 `issue +view --number `,按 4 个维度分类: + +| # | 标题 | type | urgency | complexity | action | +|---|------|------|---------|------------|--------| +| 18 | issue +update后状态框变红色 | bug | high | medium | fix-now | +| 5 | skill认领任务时描述信息消失 | bug | high | medium | fix-now | +| 14 | pr +view 缺少PR关闭时间 | bug | normal | easy | investigate | +| 15 | issue +view 返回数据与网页不一致 | bug | normal | easy | investigate | +| 17 | API是否支持读取仓库内文件 | question | normal | medium | discuss | +| 6 | 创建Issue就让Agent开始干活 | feature | normal | hard | discuss | +| 2 | 使用讨论与反馈收集 | meta | low | easy | discuss | + +### 验证要点 + +| 修复项 | Agent 测试时的问题 | 本次表现 | +|--------|-------------------|----------| +| status_id=0 处理 | 规则矛盾 | ✅ 纳入分析 + 标注"状态异常" | +| #2 元讨论分类 | 无法归类 | ✅ 正确归为 meta | +| #6 纯图片描述 | 未覆盖 | ✅ 标注"描述缺失(仅含图片附件)",复杂度=hard,建议=discuss | +| 空段占位文本 | 缺失 | ✅ "无长期不活跃的 Issue" | +| 备注列 | 缺失 | ✅ #15 和 #2 正确标注了状态异常 | +| suggested_this_week | 无公式 | ✅ 4 = 建议近期处理段 Issue 数 | + +--- + +## 完整输出报告 + +```markdown +# 📊 Gitlink/gitlink-cli Issue 分拣报告 + +> 分析时间:2026-05-28 +> Issue 总数:17,开放:7,本次分析:7 条(含 2 条状态异常) + +## 总览 + +| 指标 | 数量 | +|------|------| +| Bug | 4 | +| 功能请求 | 1 | +| 咨询 | 1 | +| 元讨论 | 1 | +| **需立即处理** | 2 | +| **适合入门** | 2 | + +## 🔴 需立即处理 + +| # | 标题 | 类型 | 紧急度 | 复杂度 | 建议 | 备注 | +|---|------|------|--------|--------|------|------| +| #18 | issue +update后issue状态框变红色 | bug | high | medium | fix-now | +update 会重置 tracker、tags、priority 字段,导致界面异常红框。根因已明确 | +| #5 | skill认领任务时描述信息消失 | bug | high | medium | fix-now | Issue 更新流程中 description 丢失,数据完整性严重问题 | + +## 🟡 建议近期处理 + +| # | 标题 | 类型 | 紧急度 | 复杂度 | 建议 | 备注 | +|---|------|------|--------|--------|------|------| +| #14 | pr +view 的返回中缺少PR关闭时间 | bug | normal | easy | investigate | 描述详尽,含完整复现数据 | +| #15 | issue +view 返回的数据与网页显示不一致 | bug | normal | easy | investigate | --id 全局ID vs 序号混淆。status_id=0 状态异常 | + +## 🟢 可延迟 / 需讨论 + +| # | 标题 | 类型 | 紧急度 | 复杂度 | 建议 | 备注 | +|---|------|------|--------|--------|------|------| +| #17 | API是否支持自动读取仓库内文件? | question | normal | medium | discuss | 需确认是否新增文件读取能力 | +| #6 | 只要创建Iusse就让Agent开始干活 | feature | normal | hard | discuss | 描述缺失(仅含图片附件),需补充文字说明 | + +## ⭐ 适合入门(Good First Issue) + +| # | 标题 | 类型 | 复杂度 | 推荐理由 | +|---|------|------|--------|----------| +| #14 | pr +view 的返回中缺少PR关闭时间 | bug | easy | 描述完整、范围明确、单点问题 | +| #15 | issue +view 返回的数据与网页显示不一致 | bug | easy | 根因已分析完成,涉及参数UX改进和文档 | + +## ⚠️ 候选关闭(90+ 天无活动) + +无长期不活跃的 Issue。 + +## 📋 维护建议 + +1. 立即行动:2 个 bug 涉及数据丢失/字段重置(#18、#5),应最高优先级修复 +2. 本周目标:建议处理 4 个 Issue(2 urgent + 2 easy) +3. 社区引导:#14 和 #15 适合标记为 good first issue +4. 标签体系缺失:建议建立标签体系(bug/feature/docs/question/good-first-issue/help-wanted) +5. 状态异常:2 个 Issue(#2、#15)status_id=0,需手动确认 + +## 优先级排序总结 + +| 优先级 | Issue | 核心问题 | +|--------|-------|----------| +| P0 | #18, #5 | 数据丢失/字段重置 — 涉及用户数据完整性 | +| P1 | #14, #15 | API 返回字段缺失 / UX 混淆 — 影响数据分析场景 | +| P2 | #17, #6 | 功能咨询 / 需求不明 — 需先澄清再决定 | +| 长期 | #2 | 反馈收集帖 — 作为长期讨论入口保留 | +``` + +--- + +## 验证结论 + +| 检查项 | 状态 | +|------|------| +| Skill 自动触发(无需指定路径) | ✅ | +| 自动加载 gitlink-shared 前置依赖 | ✅ | +| 状态过滤:排除 closed,保留 status_id=0 并标注异常 | ✅ | +| 4 维分类(type/urgency/complexity/action)正确应用 | ✅ | +| #2 元讨论帖正确归为 meta | ✅ | +| #6 纯图片描述正确标注"描述缺失" | ✅ | +| 空段输出占位文本 | ✅ | +| 备注列标注状态异常 | ✅ | +| P0/P1/P2 优先级排序 | ✅ | +| 标签体系缺失建议 | ✅ | diff --git a/skills/gitlink-onboarding/SKILL.md b/skills/gitlink-onboarding/SKILL.md new file mode 100644 index 0000000..667f612 --- /dev/null +++ b/skills/gitlink-onboarding/SKILL.md @@ -0,0 +1,232 @@ +--- +name: gitlink-onboarding +version: 1.0.0 +description: "新人入门引导:帮助新贡献者发现适合入门的 Issue、了解项目贡献流程。当用户想参与项目贡献但不知从何入手、寻找入门任务、或询问如何开始贡献代码时触发。" +metadata: + requires: + bins: ["gitlink-cli"] + cliHelp: "gitlink-cli issue --help" +--- + +# gitlink-onboarding(新人引导) + +**CRITICAL — 开始前必须先阅读 [`../gitlink-shared/SKILL.md`](../gitlink-shared/SKILL.md),其中包含认证、权限处理和 API 注意事项。** +**CRITICAL — 本 Skill 为只读操作,不会修改仓库任何内容。无需用户额外确认即可执行。** +**CRITICAL — GitLink 操作只能用 `gitlink-cli`。禁止用 `gh`(GitHub CLI)操作 GitLink 资源。** + +> **前置条件:** 先阅读 [`../gitlink-shared/SKILL.md`](../gitlink-shared/SKILL.md) 了解认证和全局参数。 + +--- + +## 功能概述 + +帮助新贡献者快速了解项目并找到适合入门的任务: + +1. **项目总览** — 获取仓库基本信息(语言、分支、贡献者规模) +2. **入门 Issue 发现** — 从开放 Issue 中筛选适合新手的任务 +3. **贡献指南** — 生成 Fork → Branch → PR 的完整操作步骤 + +--- + +## 工作流:新人任务发现与引导 + +### Step 1:获取项目概览 + +```bash +gitlink-cli repo +info --owner --repo --format json +``` + +从返回数据中提取: + +| 字段 | 用途 | +|------|------| +| `full_name` | 确认仓库正确 | +| `default_branch` | 后续分支操作的目标分支(GitLink 通常是 `master`) | +| `contributor_users_count` | 判断社区活跃度 | +| `issues_count` | 了解任务池大小 | +| `size` | 判断项目规模 | +| `description` | 了解项目用途 | + +### Step 2:扫描开放 Issue + +```bash +gitlink-cli issue +list --owner --repo --state open --format json +``` + +返回的 Issue 数组中,关注以下字段: +- `subject` — Issue 标题 +- `project_issues_index` — Issue 编号(用于 `+view` 的 `--number` 参数) +- `status_id` — 状态(1=新增, 2=正在解决, 3=已解决, 5=关闭) +- `tags` — 标签数组,每个元素含 `name` 字段 +- `assigners` — 已分配人(空数组 = 无人认领) +- `priority` — 优先级(null 或 `{"name": "正常"/"紧急"/...}`) +- `created_at` / `updated_at` — 时间信息 + +> ⚠️ **已知问题**:`--state open` 过滤不准确,返回列表可能包含已关闭的 Issue。需要在客户端按 `status_id` 过滤:仅保留 `status_id` 为 1(新增)或 2(正在解决)。 + +### Step 3:预过滤 + 筛选入门级 Issue + +**第一步:客户端状态过滤** + +忽略 `--state` 参数的实际效果,从返回结果中手动过滤: +- 保留:`status_id` = 1(新增)或 2(正在解决) +- 排除:`status_id` = 3(已解决)、5(关闭) +- `status_id` = 0(未知状态):可纳入候选但需特别标注"状态未知,建议先评论确认" + +**第二步:根据标签/标题筛选入门级 Issue** + +标签匹配(优先级从高到低): +1. 标签名含 `good first issue`、`good-first-issue` → 官方标记的入门任务 +2. 标签名含 `help wanted`、`help-wanted` → 维护者明确求帮助 +3. 标签名含 `easy`、`beginner`、`新手`、`入门`、`低难度` → 社区约定的简单任务 +4. 标签名含 `bug`、`fix` 且标题含 `修复`、`fix` → 修复类任务通常范围明确 +5. 标签名含 `documentation`、`docs`、`文档` → 文档类任务对新手友好 + +辅助判断(无标签时): +- `assigners` 为空 → 无人认领 +- `priority` 为 null 或 `name` = "正常" → 不紧急 +- 标题含 `优化`、`改进`、`添加`、`新增` → 可能是功能增强,范围弹性大 + +过滤规则: +- 已分配(`assigners` 非空)→ 排除(除非标签明确是 `help wanted`) +- 标题含 `紧急`、`hotfix`、`安全` → 排除(不适合新手) + +### Step 4:深入查看候选 Issue + +对筛选出的每个候选 Issue(建议 3~5 个),获取详情: + +```bash +gitlink-cli issue +view --owner --repo --number --format json +``` + +从返回数据中确认: +- `description` — 任务描述是否清晰、有可执行的步骤 +- `comment_journals_count` — 是否有讨论历史(有讨论 = 需求更明确) +- `start_date` / `due_date` — 是否有时间限制 + +### Step 5:生成新人引导报告 + +将所有信息组织为以下格式输出。 + +--- + +## 输出模板 + +```markdown +# 🚀 {{仓库名}} 新人引导报告 + +## 项目概览 + +| 项目 | 信息 | +|------|------| +| 仓库 | {{full_name}} | +| 描述 | {{description}} | +| 主分支 | {{default_branch}} | +| 贡献者数 | {{contributor_users_count}} | +| 开放 Issue | {{issues_count 或实际列表长度}} | +| 项目规模 | {{size}} | + +--- + +## 📋 推荐的入门 Issue + +> 以下 Issue 适合新贡献者,按推荐度排序。 + +### ⭐ 最推荐(官方标记/明确入门级) + +| # | 标题 | 标签 | 推荐理由 | +|---|------|------|----------| +| {{number}} | {{subject}} | {{tags}} | good first issue 官方标记 | +| ... | ... | ... | ... | + +### 👍 推荐(文档/简单修复) + +| # | 标题 | 标签 | 推荐理由 | +|---|------|------|----------| +| {{number}} | {{subject}} | {{tags}} | 文档类任务,无需深入代码 | +| ... | ... | ... | ... | + +### 🤔 可尝试(功能增强,范围需确认) + +| # | 标题 | 标签 | 推荐理由 | +|---|------|------|----------| +| {{number}} | {{subject}} | {{tags}} | 功能明确,建议先评论确认范围 | +| ... | ... | ... | ... | + +--- + +## 📖 贡献流程 + +### 第 1 步:Fork 仓库 + +在 GitLink 网页打开 https://www.gitlink.org.cn/{{owner}}/{{repo}} ,点击右上角 **Fork** 按钮。 + +### 第 2 步:Clone 到本地 + +```bash +git clone https://www.gitlink.org.cn/<你的用户名>/{{repo}}.git +cd {{repo}} +git remote add upstream https://www.gitlink.org.cn/{{owner}}/{{repo}}.git +``` + +### 第 3 步:创建分支 + +```bash +git checkout -b fix/issue-{{number}}-简要描述 +``` + +### 第 4 步:修改 + 提交 + +```bash +git add -A +git commit -m "fix: 简要描述修改内容 (#{{number}})" +``` + +### 第 5 步:Push 并提 PR + +```bash +git push origin fix/issue-{{number}}-简要描述 +gitlink-cli pr +create \ + --owner {{owner}} \ + --repo {{repo}} \ + --head <你的用户名>:fix/issue-{{number}}-简要描述 \ + --base {{default_branch}} \ + --title "fix: 简要描述 (#{{number}})" +``` + +### 第 6 步:在 Issue 下留言 + +在 Issue 页面评论说明你正在处理,避免与他人重复劳动。如果 Issue 已有讨论,先阅读并确认无人认领。 + +--- + +## ⚠️ 注意事项 + +1. **先评论再动手** — 在 Issue 下留言「我来处理这个」,避免重复劳动 +2. **保持 PR 小** — 一个 PR 只解决一个问题,方便维护者 Review +3. **阅读贡献指南** — 如果仓库有 `CONTRIBUTING.md`,先阅读 +4. **不确定就问** — 对需求有疑问,在 Issue 下直接提问 +``` + +--- + +## 异常场景处理 + +| 场景 | 处理方式 | +|------|----------| +| 无开放 Issue | 输出项目概览后,建议用户关注 `watch` 仓库等待新 Issue,或查看已有 PR 了解贡献模式 | +| 所有 Issue 已分配 | 列出已分配 Issue,建议用户在感兴趣的 Issue 下评论询问是否需要帮助 | +| 无入门级标签 | 列出所有未分配的开放 Issue,标注「无明确入门标记,建议根据兴趣自行选择」,优先推荐标题含 `fix`/`doc`/`优化` 的 | +| `repo +info` 返回空 | 检查 owner/repo 是否正确,提示用户确认仓库名 | + +--- + +## 注意事项 + +- ✅ **所有命令使用 `--format json`**,确保可解析 +- ✅ **`issue +view` 使用 `--number`(网页编号)**,非数据库 ID +- ✅ **本 Skill 为纯只读**,不会修改仓库 +- ✅ **Owner/repo 优先从 `git remote` 自动解析**,无 git 上下文时询问用户 +- ⚠️ **Issue 列表可能分页**,如果总数 >20,需要追加 `--page 2` 等参数获取全部 +- ⚠️ **`issue +list --state open` 过滤不准确**,返回列表可能含已关闭 Issue。必须客户端按 `status_id` 二次过滤(保留 1、2,排除 3、5、0) +- ⚠️ **此仓库未使用 Issue 标签系统**,筛选主要依赖标题关键词和 `assigners` 状态。如目标仓库有标签,优先使用标签匹配 diff --git a/skills/gitlink-onboarding/examples/gitlink-cli-onboarding.md b/skills/gitlink-onboarding/examples/gitlink-cli-onboarding.md new file mode 100644 index 0000000..9ef4258 --- /dev/null +++ b/skills/gitlink-onboarding/examples/gitlink-cli-onboarding.md @@ -0,0 +1,159 @@ +# gitlink-onboarding 使用示例 + +> 触发方式:自然语言,无需指定 SKILL.md 路径 +> 日期:2026-05-28 +> 验证状态:✅ 通过(自动触发 + 全部命令执行成功) + +--- + +## 用户输入 + +``` +我是新手,想给 gitlink-cli 贡献代码,调用相关skill指导我 +``` + +## Skill 触发 + +Claude Code 自动匹配到 `gitlink-onboarding` skill(关键词匹配:"新手" + "贡献代码"),同时自动加载前置依赖 `gitlink-shared`。 + +--- + +## 执行过程摘要 + +### Step 1:定位仓库 + +当前目录不是 git 仓库,Agent 自动尝试了 `gitlink-cli/gitlink-cli`(404)后切换到 `Gitlink/gitlink-cli`(成功)。 + +```bash +gitlink-cli repo +info --owner Gitlink --repo gitlink-cli --format json +``` + +获取到:Go 项目,12 位贡献者,master 分支,17 个 Issue,83 个 PR。 + +### Step 2:扫描开放 Issue + +```bash +gitlink-cli issue +list --owner Gitlink --repo gitlink-cli --state open --format json +``` + +返回 17 条,Agent 识别到 `--state open` 过滤不准确,客户端按 `status_id` 二次过滤,保留 7 条真正开放的。 + +### Step 3:深入查看候选 + +对 5 个高潜力候选执行了 `issue +view --number `: + +| Issue | 标题 | 判断 | +|---|---|---| +| #18 | `issue +update` 后状态框变红色 | ⭐ 最推荐 — Bug 已定位 | +| #14 | `pr +view` 缺少 PR 关闭时间 | ⭐ 最推荐 — 需求清晰 | +| #5 | skill 认领任务时描述信息消失 | ⭐ 最推荐 — 有复现步骤 | +| #15 | `issue +view` 返回数据与网页不一致 | 推荐 — status_id=0 需确认 | +| #17 | API 是否支持读取仓库内文件 | 可尝试 — 偏向咨询 | + +### Step 4:生成报告 + +按模板输出完整引导报告(项目概览 + 分级推荐 + 贡献流程 6 步 + 注意事项)。 + +--- + +## 完整输出报告 + +```markdown +# Gitlink/gitlink-cli 新人引导报告 + +## 项目概览 + +| 项目 | 信息 | +|------|------| +| 仓库 | Gitlink/gitlink-cli | +| 描述 | GitLink CLI - GitLink 平台命令行工具 | +| 语言 | Go | +| 主分支 | master | +| 贡献者数 | 12 | +| Issue 总数 | 17(7 个开放) | +| PR 总数 | 83 | +| 项目规模 | 2.5 MB | + +## 筛选说明 + +仓库未使用 Issue 标签系统(所有 Issue 均无标签),筛选主要依赖标题关键词、状态和分配情况。 +从 17 个 Issue 中,按 status_id 过滤掉已关闭的(status_id=3/5),保留 7 个候选, +再根据可操作性排序。 + +## 推荐的入门 Issue + +### 最推荐(Bug 修复,范围明确) + +| # | 标题 | 优先级 | 推荐理由 | +|---|------|--------|----------| +| #18 | gitlink-cli issue +update后issue状态框变红色 | 正常 | Bug 修复,根因已定位:+update 会重置 tracker/issue_tags/priority 字段。修复范围明确,适合入门 | +| #14 | pr +view 的返回中缺少PR关闭时间 | 正常 | 功能增强,需求清晰:在 PR 返回中补充 merged_at/closed_at 字段。有完整的 API 响应示例和文档引用 | +| #5 | skill认领任务时描述信息消失 | 正常 | Bug 修复,有明确复现步骤。可能与 #18 同源(Issue 更新导致字段丢失) | + +### 推荐(适合新手,建议先评论确认) + +| # | 标题 | 优先级 | 推荐理由 | +|---|------|--------|----------| +| #15 | issue +view 返回的数据与网页显示不一致 | 正常 | 状态未知(status_id=0),根因已分析:--id 是全局 ID 而非项目内序号。建议评论确认后再动手 | + +### 可尝试(范围需要先讨论) + +| # | 标题 | 优先级 | 推荐理由 | +|---|------|--------|----------| +| #6 | 只要创建Issue就让Agent开始干活 | 正常 | 功能需求,标题比较概括。建议先在 Issue 下评论讨论具体实现方案 | +| #17 | API是否支持自动读取仓库内文件? | 正常 | 目前更偏向使用咨询,可能转为功能需求。可以先参与讨论 | + +## 贡献流程 + +### 第 1 步:Fork 仓库 +打开 https://www.gitlink.org.cn/Gitlink/gitlink-cli ,点击右上角 Fork 按钮。 + +### 第 2 步:Clone 到本地 +git clone https://www.gitlink.org.cn/<你的用户名>/gitlink-cli.git +cd gitlink-cli +git remote add upstream https://www.gitlink.org.cn/Gitlink/gitlink-cli.git + +### 第 3 步:创建分支 +git checkout -b fix/issue-18-update-reset-fields + +### 第 4 步:修改 + 提交 +go build ./... +go test ./... +git add -A +git commit -m "fix: 修复 issue +update 重置 tracker/tags/priority 字段 (#18)" + +### 第 5 步:Push 并提 PR +git push origin fix/issue-18-update-reset-fields +gitlink-cli pr +create \ + --owner Gitlink \ + --repo gitlink-cli \ + --head <你的用户名>:fix/issue-18-update-reset-fields \ + --base master \ + --title "fix: 修复 issue +update 重置字段问题 (#18)" + +### 第 6 步:在 Issue 下留言 +在目标 Issue 页面评论 "我来处理这个",避免与他人重复劳动。 + +## 注意事项 + +- 先评论再动手 — 在 Issue 下留言认领,避免重复劳动 +- 保持 PR 小 — 一个 PR 只解决一个问题 +- 不确定就问 — 对需求有疑问,在 Issue 下直接评论提问 +- Fork 流程 — 没有主仓库写权限,必须走 Fork → 分支 → PR +- 该仓库无标签系统 — 筛选主要靠标题和描述判断 +``` + +--- + +## 验证结论 + +| 检查项 | 状态 | +|---|---| +| Skill 自动触发(无需指定路径) | ✅ | +| 自动加载 gitlink-shared 前置依赖 | ✅ | +| 仓库未自动检测时主动尝试多个 owner | ✅ | +| `repo +info` 正确提取项目信息 | ✅ | +| `issue +list` 识别到状态过滤 bug 并手动过滤 | ✅ | +| `issue +view` 使用 `--number`(正确参数) | ✅ | +| 输出报告含分级推荐 + 贡献流程 + 注意事项 | ✅ | +| 对 status_id=0 异常状态做了标注 | ✅ | diff --git a/skills/gitlink-research-tracker/SKILL.md b/skills/gitlink-research-tracker/SKILL.md new file mode 100644 index 0000000..ae4e222 --- /dev/null +++ b/skills/gitlink-research-tracker/SKILL.md @@ -0,0 +1,256 @@ +--- +name: gitlink-research-tracker +version: 1.0.0 +description: "技术评估与调研报告:对技术项目进行多维度评估(社区活跃度、成熟度评分、技术趋势),生成含选型建议的结构化调研报告。当用户需要做技术评估、生成调研报告、科研选题分析、竞品对比研究时触发。" +metadata: + requires: + bins: ["gitlink-cli"] + cliHelp: "gitlink-cli search --help" +--- + +# gitlink-research-tracker(科研热点追踪) + +**CRITICAL — 开始前必须先阅读 [`../gitlink-shared/SKILL.md`](../gitlink-shared/SKILL.md),其中包含认证、权限处理和 API 注意事项。** +**CRITICAL — 本 Skill 为只读操作,不会修改任何仓库。无需用户额外确认即可执行。** +**CRITICAL — GitLink 操作只能用 `gitlink-cli`。禁止用 `gh`(GitHub CLI)操作 GitLink 资源。** + +> **前置条件:** 先阅读 [`../gitlink-shared/SKILL.md`](../gitlink-shared/SKILL.md) 了解认证和全局参数。 + +--- + +## 功能概述 + +面向科研场景的技术调研工具,帮助研究者快速了解 GitLink 平台上的技术格局: + +1. **多关键词搜索** — 将研究主题拆解为多个关键词,全面覆盖相关项目 +2. **项目深度评估** — 从活跃度、社区规模、代码产出等维度评估项目健康度 +3. **横向对比** — 对比同类项目的核心指标,识别领先者和潜力项目 +4. **趋势洞察** — 基于更新时间、贡献者增长、版本发布频率等推断技术趋势 +5. **调研报告** — 生成结构化的技术调研简报 + +--- + +## 工作流:技术调研全流程 + +### Step 1:理解研究主题,拆解搜索关键词 + +根据用户的研究主题,拆解 3~5 个搜索关键词: + +| 研究主题示例 | 拆解关键词 | +|-------------|-----------| +| "AI Agent 工具" | `agent`, `AI`, `LLM`, `智能体`, `copilot` | +| "DevOps 流水线" | `devops`, `pipeline`, `CI/CD`, `自动化部署`, `容器` | +| "开源合规" | `license`, `compliance`, `合规`, `sbom`, `供应链安全` | +| "微服务框架" | `microservice`, `微服务`, `rpc`, `服务网格`, `cloud native` | + +> **原则**:关键词应覆盖中英文、缩写全称、技术术语和行业叫法。每个关键词独立搜索。 + +### Step 2:多关键词搜索 + +对每个关键词执行搜索: + +```bash +gitlink-cli search +repos -k <关键词> --format json +``` + +对每个搜索结果,提取: + +| SKILL 中用到的概念 | 实际字段来源 | 说明 | +|-------------------|-------------|------| +| owner/repo 标识 | `author.login` + `/` + `identifier` | 搜索结果**没有** `full_name`,需手动拼接。`identifier` 是仓库的唯一标识符 | +| 项目描述 | `description` | 直接可用 | +| 关注度 | `praises_count` | 搜索结果中叫 `praises_count`,**不是** `stars`。`watchers_count` 仅在 `repo +info` 中返回 | +| Fork 数 | `forked_count` | 搜索结果中叫 `forked_count`,**不是** `forks_count` | +| 编程语言 | `language.name` | `language` 是嵌套对象 `{id, name}`,需取 `.name`。可能为 `null` | +| 更新时间 | `last_update_time`(Unix 时间戳)或 `full_last_update_time`(ISO 8601 字符串) | 搜索结果中**没有** `updated_at` | +| 是否镜像 | `mirror` | 仅在 `repo +info` 返回。GitLink 上大量仓库是 GitHub 镜像,需特别标注 | + +**去重规则**:用 `author.login/identifier` 作为唯一标识。同一仓库出现在多个关键词结果中时,只保留一次,标注匹配了哪些关键词。 + +**数量控制**:每个关键词保留前 8 个结果。合并去重后总数控制在 20 个以内。超出时优先保留匹配多关键词的和 `last_update_time` 最近的。 + +### Step 3:重点项目深度评估 + +对合并去重后的每个项目,获取详细指标: + +```bash +gitlink-cli repo +info --owner --repo --format json +``` + +从返回数据中提取核心评估维度: + +| 维度 | 字段 | 评估标准 | +|------|------|----------| +| **社区活跃度** | `contributor_users_count` | >20 大社区,5~20 中等,<5 小团队 | +| **关注度** | `watchers_count`, `praises_count` | 反映项目知名度 | +| **研发节奏** | `version_releases_count` | >20 快速迭代,5~20 正常,<5 慢速 | +| **代码规模** | `size` | 粗略判断项目复杂度 | +| **开放性** | `forked_count` | fork 数反映二次开发热度 | +| **PR 活跃度** | `pull_requests_count` | 反映代码贡献频率 | + +可选补充(如有需要): + +```bash +# 查看最近 Issue 活跃度 +gitlink-cli issue +list --owner --repo --state open --format json + +# 查看最近 Release 情况 +gitlink-cli release +list --owner --repo --format json +``` + +> ⚠️ **控制分析数量**:深度评估仅对最有价值的 5~8 个项目执行(优先匹配多关键词、watchers 多、updated_at 最近的项目),避免过多 API 调用。 + +### Step 4:横向对比与趋势分析 + +#### 4.1 项目分类与镜像识别 + +在评分之前,先通过 `repo +info` 的 `mirror` 字段区分项目类型: + +| 类型 | 判定 | 处理 | +|------|------|------| +| **镜像仓库** | `mirror: true` | 标注 `[镜像]`。GitLink 上的 `contributor_users_count`/`watchers_count` 等指标均为 0,不代表真实社区活跃度。评分仅作参考 | +| **原创仓库** | `mirror: false` 且 `forked_from_project_id: null` | 正常评分 | +| **Fork 仓库** | `forked_from_project_id` 非 null | 标注 `[Fork]`,评分反映的是 Fork 后的独立开发情况 | + +#### 4.2 项目成熟度评分 + +对每个深度评估的项目,按以下标准打分(满分 25): + +| 维度 | 权重 | 评分标准 | +|------|------|----------| +| 社区规模 | 5 | contributor_users_count: >20=5, >10=4, >5=3, >2=2, ≤2=1 | +| 关注度 | 5 | repo +info 的 watchers_count: >30=5, >15=4, >8=3, >3=2, ≤3=1 | +| 研发节奏 | 5 | version_releases_count: >10=5, >5=4, >1=3, 0=2。**镜像仓库此项固定给 1**(镜像通常不通过 GitLink 发版)。注意 GitLink 平台 Release 功能使用率低,即使原创仓库 release=0 也建议给 2 而非 1 | +| 开发活跃 | 5 | 最近 30 天有更新=5, 60 天=4, 90 天=3, 180 天=2, >180 天=1。(基于 `repo +info` 的更新时间或搜索结果中的 `last_update_time`) | +| 开放性 | 5 | forked_count: >30=5, >15=4, >8=3, >3=2, ≤3=1 | + +> **镜像修正**:镜像仓库的社区规模、关注度、开放性三项在 GitLink 上均为 0,应标注"数据为 GitLink 平台内数据,不代表项目在原始平台(GitHub)的真实影响力",不参与排名比较。 + +#### 4.3 技术趋势推断 + +- **增长信号**:近期频繁 Release + contributor 增长 + fork 增长 → 技术热点上升期 +- **成熟信号**:大量 watcher + 稳定 Release 节奏 + 大社区 → 技术趋于成熟 +- **衰退信号**:超过 180 天无更新 + 少量 contributor + 无新 Release → 可能已不活跃 +- **新兴信号**:小社区 + 快速迭代 + 最新更新时间近 → 可能是新兴项目 + +### Step 5:生成技术调研报告 + +--- + +## 输出模板 + +```markdown +# 🔬 技术调研报告:{{研究主题}} + +> 调研时间:{{当前时间}} +> 搜索关键词:{{keyword_list}} +> 搜索命中:{{total_hits}} 个仓库,去重后 {{unique_count}} 个,深度分析 {{deep_analysis_count}} 个 + +--- + +## 一、技术格局概览 + +| 指标 | 数值 | +|------|------| +| 相关项目总数 | {{unique_count}} | +| 主要编程语言 | {{top_languages}} | +| 平均社区规模 | {{avg_contributors}} 人 | +| 近 30 天活跃项目 | {{active_30d_count}}({{active_30d_pct}}%) | +| 高成熟度项目(≥20分) | {{high_maturity_count}} | + +--- + +## 二、项目成熟度排行榜 + +| 排名 | 项目 | 类型 | 评分 | 语言 | Watch | 贡献者 | Release | Fork | 关键词匹配 | +|------|------|------|------|------|-------|--------|---------|------|------------| +| 1 | {{full_name}} {{#if mirror}}[镜像]{{/if}} | {{原创/镜像/Fork}} | {{score}}/25 | {{language}} | {{watchers}} | {{contributors}} | {{releases}} | {{forks}} | {{matched_keywords}} | +| ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | + +--- + +## 三、重点项 + +> 仅展示评分 ≥15 或匹配 3+ 关键词的高潜力项目。 + +### 🥇 {{项目名}}({{score}}/25) + +| 维度 | 评分 | 说明 | +|------|------|------| +| 社区规模 | {{community_score}}/5 | {{contributor_users_count}} 位贡献者 | +| 关注度 | {{popularity_score}}/5 | {{watchers_count}} watch, {{praises_count}} star | +| 研发节奏 | {{release_score}}/5 | {{version_releases_count}} 个版本发布 | +| 开发活跃 | {{activity_score}}/5 | 最后更新于 {{last_update}} | +| 开放性 | {{openness_score}}/5 | {{forked_count}} 次 fork | + +**亮点**:{{一句话总结项目最大优势}} +**关注点**:{{一句话指出需要关注的风险或不足}} + +--- + +### 🥈 {{项目名}}({{score}}/25) + +(同上格式) + +--- + +## 四、技术趋势洞察 + +1. **热点方向**:{{当前最热的技术方向,基于项目分布推断}} +2. **新兴项目**:{{列出 1~3 个"新兴信号"明显的项目}} +3. **成熟生态**:{{列出 1~2 个"成熟信号"明显的项目,适合作为技术选型参考}} +4. **风险提示**:{{列出 1~2 个"衰退信号"项目或值得关注的生态空白}} + +--- + +## 五、调研建议 + +### 技术选型推荐 + +| 场景 | 推荐项目 | 理由 | +|------|----------|------| +| 生产环境使用 | {{最成熟的项目}} | 社区大、更新稳定、文档完善 | +| 学习入门 | {{最简单的项目}} | 代码量小、贡献门槛低 | +| 前沿探索 | {{最新兴的项目}} | 技术新颖、迭代快速 | + +### 研究选题建议 + +- {{基于当前生态,建议 2~3 个可深入研究的选题}} +- {{指出 1~2 个生态空白,可能是创新机会}} + +--- + +## 六、数据来源 + +所有数据通过 `gitlink-cli` 从 GitLink 平台实时获取,每个项目均已通过 `repo +info` 验证。 +``` + +--- + +## 异常场景处理 + +| 场景 | 处理方式 | +|------|----------| +| 关键词无搜索结果 | 尝试近义词或更宽泛的关键词重试,仍无结果则标注"该方向暂无相关项目" | +| 搜索返回大量结果(>50) | `search +repos` 无分页参数,实际返回约 20 条/关键词。合并后按 `praises_count` 降序取前 20 | +| 某项目 `repo +info` 返回 404 | 该项目可能为私有或已删除,从列表中移除 | +| `repo +info` 网络超时/TLS 错误 | 等待 5 秒后重试一次。仍失败则标注"网络请求失败",跳过该项目继续分析其余 | +| 大量搜索结果来自镜像仓库 | 优先分析 `mirror: false` 的原创项目。镜像项目保留但标注,评分仅作参考 | +| 所有项目评分均 <15 | 说明该领域尚未形成成熟生态,调整报告语气为"早期探索阶段" | +| 用户未提供具体关键词 | 引导用户明确研究主题,提供几个示例关键词供选择 | +| `language` 字段为 `null` | 标注为"未知" | + +--- + +## 注意事项 + +- ✅ **所有命令使用 `--format json`**,确保可解析 +- ✅ **本 Skill 为纯只读分析**,不会修改任何仓库 +- ✅ **搜索关键词建议中英文各覆盖**,提高命中率 +- ✅ **深度评估控制在 5~8 个项目**,避免调用过多 API +- ⚠️ **`search +repos` 和 `repo +info` 字段名不同**:搜索结果用 `praises_count`/`forked_count`/`author.login+identifier`,`repo +info` 才有 `watchers_count`/`full_name`/`mirror`。详见 Step 2 字段映射表 +- ⚠️ **`repo +info` 并发请求可能触发 TLS 超时**,失败时等 5 秒重试一次,不要放弃 +- ⚠️ **GitLink 平台镜像仓库比例高**,镜像仓库的社区数据为 0,不代表项目真实影响力。在报告中标注 `[镜像]` 并单独说明 +- ⚠️ **GitLink Release 功能使用率低**,大部分项目 `version_releases_count`=0。评分时 Release 维度降低权重预期,0 个 Release 给 2 分(而非 1 分) +- ⚠️ **搜索结果无分页参数**,每次返回约 20 条。关键词超过 5 个时需手动截断合并结果 +- ⚠️ **本 Skill 场景适配 GitLink 平台**,GitLink 以国内开发者和企业项目为主,搜索结果可能偏向中文技术生态,且镜像项目较多 diff --git a/skills/gitlink-research-tracker/examples/gitlink-research-tracker-agent.md b/skills/gitlink-research-tracker/examples/gitlink-research-tracker-agent.md new file mode 100644 index 0000000..d825c2a --- /dev/null +++ b/skills/gitlink-research-tracker/examples/gitlink-research-tracker-agent.md @@ -0,0 +1,101 @@ +# gitlink-research-tracker 使用示例 + +> 触发方式:显式 `/` 命令调用(自然语言触发冲突已知问题) +> 日期:2026-05-28 +> 验证状态:✅ 通过(显式调用 + 全部命令执行成功 + 报告按模板输出) + +--- + +## 用户输入 + +``` +/gitlink-research-tracker 帮我调研一下 GitLink 上 AI Agent 相关的项目,做个技术分析 +``` + +## Skill 触发 + +显式斜杠命令调用,100% 命中,同时自动加载前置依赖 `gitlink-shared`。 + +> **已知限制**:自然语言调用时 `gitlink-search` 的语义覆盖过宽("在 GitLink 上搜索资源"),会抢走 research-tracker 的触发。显式 `/` 命令不受影响。 + +--- + +## 执行过程摘要 + +### Step 1:关键词拆解 + +6 个搜索关键词:`agent`、`智能体`、`LLM`、`LangChain`、`AutoGPT`、`copilot` + +### Step 2:多关键词并行搜索 + +```bash +gitlink-cli search +repos -k "agent" --format json +gitlink-cli search +repos -k "智能体" --format json +gitlink-cli search +repos -k "LLM" --format json +gitlink-cli search +repos -k "LangChain" --format json +gitlink-cli search +repos -k "AutoGPT" --format json +gitlink-cli search +repos -k "copilot" --format json +``` + +命中 347 个仓库,去重后筛选 12 个核心项目。 + +### Step 3:深度评估 + +对全部 12 个项目执行 `repo +info`,提取贡献者数/watch/fork/Release/镜像状态。 + +### Step 4:评分与分类 + +- 镜像项目正确标注 `[镜像]`,评分加 `*` 并单独说明 +- 原创项目按 5 维度评分(满分 25) +- 镜像占比 58%,原创项目平均评分 9.8/25 + +### 验证要点 + +| 检查项 | 状态 | +|--------|------| +| 镜像仓库正确标注 `[镜像]` 和 `*` 评分 | ✅ | +| 镜像修正声明"不参与排名比较" | ✅ | +| 5 维度评分符合 SKILL.md 标准 | ✅ | +| 报告六段式模板完整 | ✅ | +| 趋势洞察有数据支撑 | ✅ | +| 生态空白分析有实际价值 | ✅ | +| 项目去重(author.login/identifier) | ✅ | +| `language` 为 null 时标注正确 | ✅ | + +--- + +## 最终报告摘要 + +``` +# 技术调研报告:GitLink 平台 AI Agent 项目 + +## 核心发现: +- GitLink 上 AI Agent 项目以镜像仓库为主(58%) +- 原创项目平均评分仅 9.8/25,处于早期探索阶段 +- 原创 Top 1:datawhalechina/动手学Agent应用开发(12/25) +- 镜像 Top 1:Gitconomy/Git4GenThinking(22/25*) + +## 生态空白: +- 无原创可嵌入 Agent SDK +- 缺少中文 Agent 评测基准 +- Agent 运维工具链完全空白 +``` + +--- + +## 验证结论 + +| 检查项 | 状态 | +|--------|------| +| 显式 `/` 命令正确触发 | ✅ | +| 自动加载 gitlink-shared 前置依赖 | ✅ | +| 6 关键词并行搜索 | ✅ | +| `repo +info` 深度评估 | ✅ | +| 镜像/原创/Fork 分类正确 | ✅ | +| 5 维度评分正确应用 | ✅ | +| 六段式报告模板完整 | ✅ | +| 镜像修正逻辑正确 | ✅ | +| `language` null → "未知" | ✅ | +| Release=0 → 2 分(非镜像) | ✅ | +| 生态空白分析 | ✅ | +| 自然语言触发被 gitlink-search 拦截 | ⚠️ 已知限制 | diff --git a/skills/gitlink-search/SKILL.md b/skills/gitlink-search/SKILL.md index da2397b..a683e99 100644 --- a/skills/gitlink-search/SKILL.md +++ b/skills/gitlink-search/SKILL.md @@ -1,7 +1,7 @@ --- name: gitlink-search version: 1.0.0 -description: "搜索:搜索仓库和用户。当用户需要在 GitLink 上搜索资源时触发。" +description: "搜索:按关键词搜索仓库和用户。当用户需要在 GitLink 上查找特定仓库、搜索某个具体项目或用户名时触发。" metadata: requires: bins: ["gitlink-cli"]