gh-issue-submitlisted
Install: claude install-skill Linearl/reasonix_skill_repo
# GitHub Issue 提交技能(gh-issue-submit)
用 `gh` CLI 把功能请求 / bug 报告 / 改进建议提交到任意 GitHub 仓库 issue 的完整流程。包含模板发现、查重、权限陷阱处理和提交验证。
## 适用场景
- 用户要求"给某仓库提个 issue / feature request / bug report"
- 用户给了 issues/new 链接(含 `?template=...` 参数)或直接点名仓库
- 用户要求"帮我写并提交 issue"
## 核心步骤
### 1. 解析目标仓库与模板
- 从链接或用户描述提取 `owner/repo`。
- **模板位置因默认分支而异**:先查仓库默认分支和分支列表:
```bash
gh api repos/<owner>/<repo>/branches --jq '.[].name'
gh api repos/<owner>/<repo> --jq '.default_branch'
```
- 列出 ISSUE_TEMPLATE 目录(分别在默认分支和 main-v2/v2 等分支下找):
```bash
gh api "repos/<owner>/<repo>/contents/.github/ISSUE_TEMPLATE?ref=<branch>" --jq '.[].name'
```
- **注意格式差异**:有的仓库用 `.md` 模板(GitHub 自动表单),有的用 `.yml` form 模板(Version line dropdown / textarea 字段)。用户给的 `?template=xxx.yml` 链接可能与实际文件名不符(如 v1 分支是 `feature_request.md`、v2 分支是 `feature_request.yml`)——以实际文件为准。
- 读取模板内容了解必填字段:
```bash
gh api "repos/<owner>/<repo>/contents/.github/ISSUE_TEMPLATE/<file>?ref=<branch>" --jq '.content' | base64 -d
```
### 2. 查重(必做,避免重复 issue)
```bash
gh api "search/issues?q=repo:<owner>/<repo>+is:issue+in:title+<关键词>" --jq '.items[] | {number, title, state}'
```
- 用多个关键词组合搜(功能名、症状、中英文都试)。
- 找到相关 open issue 时:**不重复提交**——要么在已有 issue 下评论补充,要么新 issue 明确区分视角并引用旧 issue 编号(如"这是 #XXXX 提到的 follow-up")。
- **搜索限制**:`search/issues` 的 q 中 OR/AND 操作符合计不能超过 5 个(超限报 422 Validation Failed),多关键词拆成多个查询分别搜(如会话排序 / 会话分组各搜一次)。
- **已关闭的旧 issue 也要读**:搜到相关但已 closed 的 issue 时,用 `gh issue view <编号> --comments` 读关闭原因与维护者评论——
- 若维护者留下"场景未覆盖可开 focused issue"之