mcpField
I
issues

issues

github.com/shpigford开发77 次安装
代码仓库

关于 issues

issues 是通过 gh 命令行与 GitHub 问题交互的技能。它引导用户创建、筛选列表或查看问题,并提供格式化问题内容的流程。

主要功能

  1. 01创建带标题、正文和可选标签的问题
  2. 02按状态、负责人、创建者或标签筛选列表
  3. 03查看指定问题的详情与评论
  4. 04为问题正文整理复现步骤和行为描述

适用场景

  1. 01提交包含复现信息的错误报告
  2. 02列出分配给自己的待处理问题
  3. 03查看特定问题的正文、标签和评论

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/shpigford/skills --skill issues

安装后在 Claude Code 中输入/issues确认已加载。

详细介绍

与 GitHub 问题互动——创建、列出和查看问题。

说明

此命令可帮助你使用 gh CLI 处理 GitHub 问题。

步骤 1:确定操作

使用 AskUserQuestion 询问用户想要执行什么操作:

问题:

  • question: "你想对 GitHub 问题执行什么操作?"
  • header: "操作"
  • multiSelect: false
  • options:
    • label: "创建新问题" description: "创建新问题,并填写标题、正文和可选标签"
    • label: "列出问题" description: "查看当前仓库中的未关闭问题"
    • label: "查看问题" description: "按编号查看特定问题的详细信息"

如果选择“创建新问题”:

步骤 2a:获取问题标题

使用 AskUserQuestion 获取问题标题:

问题:

  • question: "请为此问题拟一个简短、易浏览的标题。尽量简洁(最多 5-10 个词);详细信息写在正文中。(选择“Other”以输入标题)"
  • header: "标题"
  • multiSelect: false
  • options:
    • label: "我来输入标题" description: "输入简洁的标题,例如“修复无响应的登录按钮”或“添加深色模式支持”"

标题指南:

  • 标题应简短、易浏览(最多 5-10 个词)
  • 好的示例:“修复损坏的密码重置流程”
  • 不好的示例:“我尝试重置密码并点击按钮时什么都没发生,而且还收到一条错误”
  • 详细信息应写在描述/正文中,而不是标题里

如果用户提供的标题过长,请帮助他们缩短标题,并将详细信息移至正文。

步骤 3a:获取问题正文

使用 AskUserQuestion 收集问题正文内容:

问题 1——问题类型背景:

  • question: "这是什么类型的问题?"
  • header: "类型"
  • multiSelect: false
  • options:
    • label: "Bug" description: "需要修复的问题"
    • label: "增强" description: "对现有功能的改进"
    • label: "新功能" description: "全新的功能"
    • label: "任务" description: "常规工作项或杂项任务"

问题 2——描述:

  • question: "现在请提供完整详细信息。在这里说明标题中未能写下的背景、上下文和具体情况。(选择“Other”以输入描述)"
  • header: "描述"
  • multiSelect: false
  • options:
    • label: "我来详细描述" description: "提供背景、步骤、示例和任何相关信息"

用户将在此处选择“Other”来提供完整描述。

描述指南:

  • 所有详细信息都应写在这里——请尽可能详尽
  • 包含上下文:你当时在做什么?背景是什么?
  • 包含具体信息:错误消息、URL、版本等
  • 这里的信息越详细越好;标题则应保持简短

问题 3——对于 Bug,询问复现步骤: 如果问题类型是“Bug”,请使用 AskUserQuestion:

  • question: "你能提供复现此 Bug 的步骤吗?(选择“Other”以输入步骤)"
  • header: "复现步骤"
  • multiSelect: false
  • options:
    • label: "提供步骤" description: "我来描述如何复现此问题"
    • label: "无法复现" description: "此 Bug 是间歇性出现的,或难以复现"

问题 4——预期行为与实际行为(针对 Bug): 如果问题类型是“Bug”,请使用 AskUserQuestion:

  • question: "你原本希望发生什么?实际发生了什么?(选择“Other”以描述)"
  • header: "行为"
  • multiSelect: false
  • options:
    • label: "描述行为" description: "我来说明预期行为与实际行为"
步骤 4a:获取标签(可选)

使用 AskUserQuestion 选择标签:

  • question: "应添加哪些标签?(如果有)"
  • header: "标签"
  • multiSelect: true
  • options:
    • label: "bug" description: "某些功能无法正常工作"
    • label: "enhancement" description: "新功能或功能请求"
    • label: "documentation" description: "文档改进"
    • label: "good first issue" description: "适合新手参与"
步骤 5a:创建 Issue

根据类型构建 Issue 正文:

对于 Bug 报告:

## Description
[User's description]

## Steps to Reproduce
[User's reproduction steps or "Not easily reproducible"]

## Expected Behavior
[What should happen]

## Actual Behavior
[What actually happens]

对于功能请求/增强建议:

## Description
[User's description]

## Use Case
[Why this would be useful]

对于任务/其他:

## Description
[User's description]

运行 gh 命令创建 Issue:

gh issue create --title "[title]" --body "[constructed body]" --label "[labels]"

向用户返回 Issue URL。


如果选择了“列出 Issue”:

步骤 2b:筛选选项

使用 AskUserQuestion 确定筛选条件:

  • question: "你想如何筛选 Issue?"
  • header: "筛选"
  • multiSelect: false
  • options:
    • label: "所有未关闭的 Issue" description: "显示所有未关闭的 Issue"
    • label: "指派给我" description: "指派给当前用户的 Issue"
    • label: "由我创建" description: "我创建的 Issue"
    • label: "指定标签" description: "按标签筛选"

如果选择了“指定标签”,使用 AskUserQuestion:

  • question: "要按哪个标签筛选?(自定义标签请使用 'Other')"
  • header: "标签"
  • multiSelect: false
  • options:
    • label: "bug" description: "Bug 报告"
    • label: "enhancement" description: "功能请求"
    • label: "documentation" description: "文档相关 Issue"
步骤 3b:列出 Issue

运行相应的 gh 命令:

  • 所有未关闭的 Issue:gh issue list
  • 指派给我:gh issue list --assignee @me
  • 由我创建:gh issue list --author @me
  • 按标签筛选:gh issue list --label "[label]"

以清晰易读的格式显示结果。


如果选择了“查看 Issue”:

步骤 2c:获取 Issue 编号

使用 AskUserQuestion:

  • question: "你想查看哪个 Issue 编号?(使用 'Other' 输入编号)"
  • header: "Issue #"
  • multiSelect: false
  • options:
    • label: "输入 Issue 编号" description: "我会输入 Issue 编号"
步骤 3c:查看 Issue

运行:gh issue view [number]

显示 Issue 详情,包括标题、正文、标签、受指派人和评论。


错误处理

如果 gh 命令失败:

  1. 检查用户是否已通过身份验证:gh auth status
  2. 如果尚未通过身份验证,请告知用户运行 gh auth login
  3. 检查当前目录是否位于带有 GitHub 远程仓库的 git 仓库中
  4. 向用户报告具体错误消息

重要说明

  • 标题应简洁(5-10 个词)——如果用户提供的标题较长,请帮助缩短标题,并将详细信息移至正文
  • 正文应详细——鼓励用户提供充分的背景、步骤和具体信息
  • 创建 Issue 后,务必显示 URL 以确认创建成功
  • 对于 Issue 正文,保留用户的格式和换行
  • 如果用户提供的信息很少,也没关系——使用他们提供的信息创建 Issue
  • 使用 HEREDOC 保留正文格式:
    gh issue create --title "Title" --body "$(cat <<'EOF'
    Body content here
    EOF
    )"
    

评论

支持 Markdown