用途:抓取指定 GitHub issue,将其正文重排为 Kibana 对应的 issue 模板格式。输入可以是 issue 编号(如 12345)或 GitHub issue URL(如 https://github.com/elastic/kibana/issues/12345),需从中提取编号。
主要能力与流程:
- 抓取 issue:gh issue view <NUMBER> --repo elastic/kibana --json number,title,body,labels,读取标题、正文与标签。
- 分类:先看标签,含 bug(不区分大小写)视为 bug;含 enhancement 或 feature 视为功能请求。标签不明确时依据标题与正文措辞推断,仍不确定则询问用户。
- 提取现有内容:把原标题与正文映射到对应模板字段,无信息处留空。bug 报告读取 .github/ISSUE_TEMPLATE/Bug_report.md,功能请求读取 .github/ISSUE_TEMPLATE/Feature_request.yml 获取必填字段。
- 逐项访谈:找出仍为空的字段,每次只问第一个空字段的问题,然后结束回复等待用户回答,不得连续追问或提前进入下一步。必填字段(如“Describe the bug”“Steps to reproduce”“What feature do you want added?”“Why?”)必须询问;可选字段(截图、浏览器控制台错误、日志、补充上下文)只问一次,接受“N/A”或“none”。回答含糊时只追问一个澄清问题。功能请求还需确认范围边界、当前替代方案、目标用户、依赖(记入“Blocked By”)。
- 展示 diff 并确认:向用户展示拟定的新正文,等待明确确认后再继续。
- 更新 issue:gh issue edit <NUMBER> --repo elastic/kibana --body "<NEW_BODY>",建议用 shell 变量或 heredoc 传入正文以避免引号问题,成功后报告 issue URL。
适用场景:维护 Kibana 仓库 issue 质量、将零散描述规范化为模板格式。限制:仅面向 elastic/kibana 仓库;依赖 gh CLI 与仓库内模板文件;分类不确定或字段缺失时需用户交互,无法全自动完成。