fix(newcomer-skill): 修复 label 命令 Bug,加入状态过滤与幂等去重

This commit is contained in:
刘焱 2026-06-15 20:57:11 +08:00
parent bb0ef89450
commit c2eb3c8f1a
1 changed files with 35 additions and 18 deletions

View File

@ -12,6 +12,7 @@ metadata:
**CRITICAL — 开始前必须先阅读 [`../gitlink-shared/SKILL.md`](../gitlink-shared/SKILL.md),其中包含认证、权限处理和 API 注意事项。**
**CRITICAL — 所有 Shortcuts 在执行写入/删除操作前,务必先确认用户意图。**
**CRITICAL — `issue +comment` 是写操作,执行前必须确认用户意图;重复运行通过标记串幂等去重,不会刷屏。**
## 说明
@ -19,23 +20,29 @@ metadata:
## 依赖的 Shortcuts
| Shortcut | 用途 |
| Shortcut / 命令 | 用途 |
|----------|------|
| `issue +list` | 获取标记了 good-first-issue 的 Issue |
| `issue +list` | 列出 Issue用返回的 `tags[].name` 检测 good-first-issue |
| `issue +view` | 查看 Issue 详细内容 |
| `issue +comment` | 添加引导评论 |
| `label +list` | 查看可用标签 |
| `issue +comment` | 添加引导评论(写操作,先确认) |
| `api GET .../issues/:number/journals` | 读取已有评论,做幂等去重 |
| `repo +info` | 获取仓库基本信息 |
> 说明:`gitlink-cli` 没有 `label` 子命令(实测 `unknown command "label"`。good-first-issue 直接从 `issue +list``tags[].name` 字段判断,无需单独列标签。
## 工作流程
```
1. issue +list → 获取所有打开的 Issue
2. 筛选含 good-first-issue 标签的 Issue
3. issue +view --number {id} → 查看 Issue 详情
4. 分析 Issue 内容 → 判断适合的引导信息
5. issue +comment --body "..." → 添加引导评论
6. 可选issue +update → 分配 mentor
1. repo +info → 确认 owner/repo、默认分支
2. issue +list --state open --format json必要时 --page 2.. 翻页)
3. 客户端按 status_id 过滤:保留 1新增、2正在解决排除 3已解决、5关闭
—— 抵消 --state open 过滤不准确的已知问题
4. 按 tags[].name 匹配入门标签(/good.?first.?issue|新手|入门|help.?wanted|easy|beginner|低难度/i
5. 排除已分配assigners 非空)的 Issue除非标签是 help wanted
6. issue +view --number <index> → 取 description / comment_journals_count 判断 Issue 类型
7. 【去重】api GET /v1/:owner/:repo/issues/<index>/journals --format json
→ 扫描已有评论是否含标记串 `gitlink-newcomer-guide:v1`,命中则跳过
8. issue +comment --number <index> --body "<模板 + 标记串>" → 写操作,先确认用户意图
```
## 引导评论模板
@ -62,6 +69,8 @@ metadata:
- 在开发过程中遇到任何问题,也欢迎随时提问
祝你编码愉快!
<!-- gitlink-newcomer-guide:v1 -->
```
### 功能需求类 Issue
@ -85,6 +94,8 @@ metadata:
4. 提交 Pull Request描述你的改动
如有任何问题,随时留言!
<!-- gitlink-newcomer-guide:v1 -->
```
### 文档类 Issue
@ -108,25 +119,29 @@ metadata:
- 代码块请标注语言类型
期待你的贡献!
<!-- gitlink-newcomer-guide:v1 -->
```
## 使用示例
```bash
# 1. 查找所有标记了 good-first-issue 的 Issue
# 1. 列出开放 Issue用返回的 tags[].name 检测 good-first-issue
gitlink-cli issue +list --owner myuser --repo myrepo --state open --format json
# 2. 查看某个 Issue 的详细内容(判断类型)
# 2. 客户端过滤status_id ∈ {1,2} 且 tags[].name 匹配 good-first-issue且 assigners 为空
# 3. 查看 Issue 详情,判断类型
gitlink-cli issue +view --owner myuser --repo myrepo --number 10 --format json
# 3. 查看仓库可用标签
gitlink-cli label +list --owner myuser --repo myrepo
# 4. 【去重】读取已有评论,检查是否含标记串
gitlink-cli api GET /v1/myuser/myrepo/issues/10/journals --format json
# 4. 添加引导评论
gitlink-cli issue +comment --owner myuser --repo myrepo --number 10 --body "你好!欢迎参与贡献..."
# 5. 添加引导评论(写操作,先确认;评论末尾含 <!-- gitlink-newcomer-guide:v1 -->
gitlink-cli issue +comment --owner myuser --repo myrepo --number 10 --body "你好!欢迎参与贡献 🎉
...(正文)...
# 5. 可选:将 Issue 标记为已分配
gitlink-cli issue +update --owner myuser --repo myrepo --number 10
<!-- gitlink-newcomer-guide:v1 -->"
```
## 注意事项
@ -135,3 +150,5 @@ gitlink-cli issue +update --owner myuser --repo myrepo --number 10
- 如果 Issue 已经被 Assignee 认领,不需要再添加引导评论。
- 不要修改 good-first-issue 标签,由项目维护者管理。
- 引导评论建议使用温和、鼓励的语气。
- good-first-issue 检测依赖 `issue +list` 返回的 `tags[].name``gitlink-cli` 无 `label` 子命令,不要尝试调用任何形如 `gitlink-cli` + `label` 的写法
- `--state open` 过滤不准确,必须客户端按 `status_id`(保留 1、2二次过滤