issue-triage
GitHub Issue 处理协作流程。当用户收到 issue 需要分析和回复时使用。通过"诊断 → 定性 → 决策 → 回复"四步法,从一个 issue 产出准确的根因分析和得体的用户回复,避免误判问题类型或回复不专业。
下記のコマンドをコピーしてターミナル(Mac/Linux)または PowerShell(Windows)に貼り付けてください。 ダウンロード → 解凍 → 配置まで全自動。
mkdir -p ~/.claude/skills && cd ~/.claude/skills && curl -L -o issue-triage.zip https://jpskill.com/download/21211.zip && unzip -o issue-triage.zip && rm issue-triage.zip
$d = "$env:USERPROFILE\.claude\skills"; ni -Force -ItemType Directory $d | Out-Null; iwr https://jpskill.com/download/21211.zip -OutFile "$d\issue-triage.zip"; Expand-Archive "$d\issue-triage.zip" -DestinationPath $d -Force; ri "$d\issue-triage.zip"
完了後、Claude Code を再起動 → 普通に「動画プロンプト作って」のように話しかけるだけで自動発動します。
💾 手動でダウンロードしたい(コマンドが難しい人向け)
- 1. 下の青いボタンを押して
issue-triage.zipをダウンロード - 2. ZIPファイルをダブルクリックで解凍 →
issue-triageフォルダができる - 3. そのフォルダを
C:\Users\あなたの名前\.claude\skills\(Win)または~/.claude/skills/(Mac)へ移動 - 4. Claude Code を再起動
⚠️ ダウンロード・利用は自己責任でお願いします。当サイトは内容・動作・安全性について責任を負いません。
🎯 このSkillでできること
下記の説明文を読むと、このSkillがあなたに何をしてくれるかが分かります。Claudeにこの分野の依頼をすると、自動で発動します。
📦 インストール方法 (3ステップ)
- 1. 上の「ダウンロード」ボタンを押して .skill ファイルを取得
- 2. ファイル名の拡張子を .skill から .zip に変えて展開(macは自動展開可)
- 3. 展開してできたフォルダを、ホームフォルダの
.claude/skills/に置く- · macOS / Linux:
~/.claude/skills/ - · Windows:
%USERPROFILE%\.claude\skills\
- · macOS / Linux:
Claude Code を再起動すれば完了。「このSkillを使って…」と話しかけなくても、関連する依頼で自動的に呼び出されます。
詳しい使い方ガイドを見る →- 最終更新
- 2026-05-18
- 取得日時
- 2026-05-18
- 同梱ファイル
- 1
📖 Skill本文(日本語訳)
※ 原文(英語/中国語)を Gemini で日本語化したものです。Claude 自身は原文を読みます。誤訳がある場合は原文をご確認ください。
[スキル名] issue-triage ユーザーが GitHub Issue(バグ報告、質問、機能リクエスト)を受け取った際、AI が問題分析、実施要否の判断、返信文の作成を支援します。AI がプロセス全体を主導し、ユーザーは重要な局面でのみ判断を行います。
核となる原則
- 診断してから発言する — コードを読み終えるまで結論を出さず、根本原因を特定するまで断定しません。
- ユーザーに正直である — バグであれば認め、アーキテクチャ上の制限であれば明確に説明し、責任転嫁や過度な期待を抱かせるようなことはしません。
- コストを定量化する — 「コストが高い」だけでは結論ではありません。変更するファイルの数、関連するモジュール、テスト条件の有無など、何が高いのかを明確に説明します。
- 代替案を提示する — 実施しないからといって放置するわけではありません。ユーザーに現在の回避策を伝えます。
作業フロー
ステップ 1:Issue 内容の取得
目標: Issue の完全な情報を取得します。
方法:
- ユーザーが issue リンクまたはリポジトリのアドレスを提供します。
gh issue viewまたは WebFetch を介して issue の詳細を取得します。- 重要な情報(ユーザー環境、再現手順、期待される動作、実際の動作、ユーザーの推測)を抽出します。
出力: ユーザーに issue の内容を簡潔に要約し、理解に誤りがないことを確認します。
禁止事項: タイトルだけを見て分析を開始すること。Issue の全文を必ず読みます。
ステップ 2:コード診断
目標: コード内で根本原因を特定します。
方法:
- Issue の説明からキーワード(機能名、エラーメッセージ、ページ名など)を抽出します。
- コード内の関連する経路を特定します。フロントエンドの入り口 → IPC 呼び出し → バックエンド処理 → 低レベルの実装。
- 完全な呼び出しチェーンを図示し、各段階のファイルと行番号をマークします。
- 根本原因を確認します。コードのどこに問題があるのか、またはコードがユーザーのシナリオをサポートしない理由は何なのか。
出力: ユーザーに以下を表示します。
- 完全な呼び出しチェーン(ファイル + 行番号)
- 根本原因の要約(一文)
- 必要に応じて、主要なコードスニペットを添付します。
禁止事項:
- コードを読まずに原因を推測すること。
- 1つのファイルだけを見て結論を出すこと(完全なチェーンを追跡する必要があります)。
ステップ 3:定性判断
目標: この Issue がどのタイプに属するかを判断します。
| タイプ | 判断基準 | 対応戦略 |
|---|---|---|
| Bug | 製品設計の範囲内で、動作が期待と異なる | 修正をスケジュールする |
| アーキテクチャ上の制限 | ユーザーのシナリオが製品の設計前提を超えている | 現状を説明し、拡張する価値があるかを評価する |
| Feature Request | 製品自体に問題はなく、ユーザーが新しい機能を求めている | コストと優先度を評価する |
| 使用上の問題 | ユーザーの操作方法が間違っているが、製品をより使いやすくできる | ガイダンスを返信し、ユーザーエクスペリエンスの最適化を検討する |
重要な判断: 「やるべきだが間違っている」(バグ)と「やるつもりがない」(アーキテクチャ上の制限/機能)を区別します。
出力: ユーザーに定性的な結論とその理由を説明し、ユーザーが確認してから次に進みます。
ステップ 4:意思決定(実施するかしないか)
目標: 根本原因と定性判断に基づき、実施するかしないかの提案を行います。
4つの側面を評価する
- 変更範囲 — 数行の変更 / 1つのモジュールの変更 / 新しいモジュールの追加
- 影響範囲 — 1つのファイルのみの変更 / 複数のファイルの呼び出しチェーンの変更 / リファクタリングが必要
- テスト条件 — 再現および検証できる環境があるか(環境がない = 高リスク)
- ユーザーの回避コスト — ユーザーが他の方法で解決できるか
意思決定マトリックス
| 変更範囲 | テスト条件あり | ユーザーが回避可能 | 提案 |
|---|---|---|---|
| 小(数行) | あり | — | 直接修正 |
| 中(1つのモジュール) | あり | — | スケジュールして実施 |
| 大(新モジュール/リファクタリング) | あり | いいえ | 評価後、スケジュールして実施 |
| 大(新モジュール/リファクタリング) | なし | はい | 要件を記録し、一時的に実施しない |
| 任意 | なし | はい | 回避策を伝え、要件を記録する |
出力: ユーザーに提案とその理由を説明します。実施しないと提案する場合は、コストを定量化します(変更するファイルの数、関連するモジュール、テストできない理由)。
ユーザーが決定を確認した後、返信フェーズに進みます。
ステップ 5:返信文の作成
目標: プロフェッショナルで適切かつ情報量の多い Issue 返信文を作成します。
返信の構造(3層)
- シナリオの位置付けを説明する — この機能がどのようなシナリオのために設計されたのかを説明し、ユーザーに「なぜ現在サポートされていないのか」を理解してもらいます。
- 実際の影響を提示する — ユーザーにとって、この機能がないことの影響が大きいか、代替案があるか。
- 今後の計画を説明する — 実施する場合は方向性を示し、実施しない場合はコストと理由を正直に説明します。
口調の原則
- フィードバックに感謝する — Issue を提出するために時間を費やしたユーザーは尊重されるべきです。
- 責任転嫁しない — 「使い方が間違っている」とは言わず、「このシナリオはまだカバーしていません」と言います。
- 具体的な提案をする — 「できません」と言うだけでなく、ユーザーに今どうすべきかを伝えます。
- コストを定量化する — ユーザーに、やりたくないのではなく、客観的にコストが高いことを理解してもらいます。
返信テンプレート
Hi @{ユーザー名}、フィードバックありがとうございます!
**1. 機能の位置付け**
{この機能がどのようなシナリオのために設計されたのか、なぜ現在ユーザーのシナリオをサポートしていないのか}
**2. あなたへの実際の影響**
{ユーザーが現在回避できるか、どのように回避できるか、コア機能が影響を受けるか}
**3. {ユーザーが期待する機能}について**
{コストの説明 + 今後の計画}
出力: 返信のドラフトを作成し、ユーザーが確認した後で公開します。
禁止事項:
- ユーザーの確認なしに直接 GitHub に公開すること。
- 非技術系のユーザーに技術的な専門用語で返信すること。
- 結論だけを述べ、理由を説明しないこと。
ステップ 6:公開
ユーザーが返信内容を確認した後:
gh issue commentを使用してコメントを投稿します。- 定性判断の結果に基づいてタグを付けます(bug / enhancement / wontfix / question)。
- 要件として記録する必要がある場合は、ユーザーに要件プールに追加するかどうかを尋ねます。
プロセス中のコミュニケーション規範
AI 主導のペース
- 各ステップ完了後、次のステップへ積極的に進めます。
- 重要な結論は、ユーザーが確認してから次に進めます(定性判断、意思決定、返信内容)。
- 技術的な詳細は AI が自己完結し、ユーザーには結論のみを表示します。
ユーザーの確認を待つ必要があるノード
| ステップ | 何を確認するか |
|---|---|
| ステップ 1 | 「Issue の内容、私の理解で合っていますか?」 |
| ステップ 3 | 「この定性判断に同意しますか?」 |
| ステップ 4 | 「この決定に同意しますか?」 |
| ステップ 5 | 「返信内容を送信してもよろしいですか?」 |
ユーザーに尋ねる必要がない事項
| 事項 | 直接実行 |
|---|---|
| コードの調査方法 | AI が自分で経路を追跡 |
| 根本原因の分析方法 | AI が自分で判断 |
| コストの定量化方法 | AI が自分で評価 |
📜 原文 SKILL.md(Claudeが読む英語/中国語)を展開
用户收到了一个 GitHub Issue(bug 报告、疑问、feature request),需要 AI 协助分析问题、判断是否要做、起草回复。AI 全程主导推进,用户只在关键节点做判断。
核心原则
- 先诊断后开口 — 没看完代码不下结论,没找到根因不定性
- 对用户诚实 — 是 bug 就认,是架构限制就说清楚,不甩锅也不画饼
- 量化成本 — "成本高"不是结论,要说清楚高在哪:改几个文件、涉及哪些模块、有没有测试条件
- 给替代方案 — 不做不等于不管,要告诉用户现在怎么绕过
工作流程
第 1 步:获取 Issue 内容
目标: 拿到 issue 的完整信息。
方法:
- 用户提供 issue 链接或仓库地址
- 通过
gh issue view或 WebFetch 获取 issue 详情 - 提取关键信息:用户环境、复现步骤、期望行为、实际行为、用户的猜测
输出: 向用户简要转述 issue 内容,确认理解无误。
禁止: 只看标题就开始分析。必须读完 issue 全文。
第 2 步:代码诊断
目标: 在代码中找到根因。
方法:
- 从 issue 描述中提取关键词(功能名、错误信息、页面名等)
- 在代码中定位相关链路:从前端入口 → IPC 调用 → 后端处理 → 底层实现
- 画出完整调用链,标注每个环节的文件和行号
- 确认根因:代码哪里出了问题,或者代码为什么不支持用户的场景
输出: 向用户展示:
- 完整调用链(文件 + 行号)
- 根因的一句话总结
- 必要时附关键代码片段
禁止:
- 没读代码就猜原因
- 只看一个文件就下结论(要追完整条链路)
第 3 步:定性
目标: 判断这个 issue 属于哪种类型。
| 类型 | 判断标准 | 应对策略 |
|---|---|---|
| Bug | 在产品设计范围内,行为不符合预期 | 排期修复 |
| 架构限制 | 用户场景超出产品的设计前提 | 解释现状,评估是否值得扩展 |
| Feature Request | 产品本身没问题,用户想要新能力 | 评估成本和优先级 |
| 使用问题 | 用户操作方式不对,但产品可以做得更友好 | 回复指引,考虑优化体验 |
关键判断: 区分"该做但做错了"(bug)和"没打算做"(架构限制/feature)。
输出: 向用户说明定性结论和理由,等用户确认后再往下走。
第 4 步:决策(做还是不做)
目标: 基于根因和定性,给出做/不做的建议。
评估四个维度
- 改动范围 — 改几行 / 改一个模块 / 新增一个模块
- 影响面 — 只动一个文件 / 要改多个文件的调用链 / 要重构
- 测试条件 — 有没有环境能复现和验证(没环境 = 高风险)
- 用户绕过成本 — 用户自己能不能用其他方式解决
决策矩阵
| 改动范围 | 有测试条件 | 用户可绕过 | 建议 |
|---|---|---|---|
| 小(几行) | 有 | — | 直接修 |
| 中(一个模块) | 有 | — | 排期做 |
| 大(新模块/重构) | 有 | 否 | 评估后排期 |
| 大(新模块/重构) | 没有 | 是 | 记下需求,暂不做 |
| 任意 | 没有 | 是 | 告知绕过方案,需求记下 |
输出: 向用户说明建议和理由。如果建议不做,要量化成本(改几个文件、涉及哪些模块、为什么没法测)。
等用户确认决策后,再进入回复环节。
第 5 步:起草回复
目标: 写一条专业、得体、有信息量的 issue 回复。
回复结构(三层)
- 解释场景定位 — 这个功能是为什么场景设计的,让用户理解"为什么当前不支持"
- 给出实际影响 — 对用户来说,没有这个功能影响大不大,有没有替代方案
- 说明后续计划 — 如果做,给方向;如果不做,诚实说明成本和原因
语气原则
- 感谢反馈 — 用户花时间提 issue 值得尊重
- 不甩锅 — 不说"你用错了",说"这个场景我们还没覆盖到"
- 给具体建议 — 不只说"不行",要告诉用户现在怎么办
- 量化成本 — 让用户理解不是不想做,是客观上成本高
回复模板
Hi @{用户名},感谢反馈!
**1. 功能定位**
{这个功能是为什么场景设计的,为什么当前不支持用户的场景}
**2. 对你的实际影响**
{用户现在能不能绕过,怎么绕过,核心功能是否受影响}
**3. 关于{用户期望的能力}**
{成本说明 + 后续计划}
输出: 回复草稿,等用户确认后发布。
禁止:
- 不经用户确认就直接发布到 GitHub
- 用技术黑话回复非技术用户
- 只说结论不解释原因
第 6 步:发布
用户确认回复内容后:
- 通过
gh issue comment发布评论 - 根据定性结果打标签(bug / enhancement / wontfix / question)
- 如果需要记录为需求,提醒用户是否要加到需求池
过程中的沟通规范
AI 主导的节奏
- 每一步完成后主动推进到下一步
- 关键结论让用户确认后再往下走(定性、决策、回复内容)
- 技术细节 AI 自己搞定,只向用户展示结论
必须等用户确认的节点
| 步骤 | 确认什么 |
|---|---|
| 第 1 步 | "issue 内容我理解的对吗?" |
| 第 3 步 | "这个定性你认同吗?" |
| 第 4 步 | "这个决策你同意吗?" |
| 第 5 步 | "回复内容可以发吗?" |
不需要问用户的
| 事项 | 直接做 |
|---|---|
| 代码怎么查 | AI 自己追链路 |
| 根因怎么分析 | AI 自己判断 |
| 成本怎么量化 | AI 自己评估 |