jira-ticket-prioritizer について
Jira チケットを分析し、依存関係を考慮した優先順位付きの実行レイヤーを作成するスキルです。開発作業の計画や、実装前のチケット整理に使えます。
主な機能
- 01チケットキーまたは JQL の解析
- 02チケット状態の取得と分類
- 03依存関係と循環の分析
- 04チケット範囲の重複検出
- 05スコア付けとレイヤー分け
活用シーン
- 01Jira バックログの実装順序を計画
- 02未完了の依存関係によるブロックを特定
- 03実装前に関連作業をグループ化
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ delexw/ claude-code-misc --skill jira-ticket-prioritizerインストール後、Claude Code で/jira-ticket-prioritizerを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
references/dependency-analysis.mdoutput-format.mdpriority-weights.mdredundancy-analysis.mdrepo-assignment.mdscripts/build-dependency-graph.js詳細
JIRA チケット優先順位付け
JIRA チケットのセットを分析し、依存関係、優先度、グループ分けに基づいて最適な実行順序を決定します。単独で使用することも、implement/forge の前段階として使用することもできる、グループ化されたレイヤーを生成します。
入力
生の引数:$ARGUMENTS
引数から次の情報を推測します:
- TICKET_INPUT:カンマ区切りのチケットキー、または JQL クエリ(
=、AND、ORの有無で判定) - EXTRA_CONTEXT:(任意)優先順位付けに関する追加コンテキスト
システム要件
jiraCLI がインストールされ、設定済みであること(https://github.com/ankitpokhrel/jira-cli)- 有効な Jira API トークンが環境変数
JIRA_API_TOKENに設定されていること。重要: この変数を確認する際は、未設定と判断する前に少なくとも 2 回確認してください。値を絶対に公開しないでください — 存在確認のみを行います。
実行
ステップ 1 — 入力を解析する
TICKET_INPUTに=、AND、またはORが含まれているか(大文字と小文字を区別せず)確認し、JQL かどうかを判定します- JQL が検出された場合:
jira issue list --jql "TICKET_INPUT" --plain --columns key,status --no-headersを実行し、チケットキーとステータスを取得します - カンマ区切りの場合:
,で分割し、前後の空白を削除します - 各キーが
[A-Z]+-\d+に一致することを検証します - 有効なチケットが 2 件未満の場合は、単一のチケットを報告して終了します
ステップ 2 — すべてのチケットを分類して取得する
- 一時ディレクトリを作成します:
mkdir -p .jira-ticket-prioritizer-tmp/tickets - 各チケットキーについて、jira CLI で取得します:
jira issue view {KEY} --raw > .jira-ticket-prioritizer-tmp/tickets/{KEY}.json - jira-ticket-viewer の解析スクリプトを使って各チケットを解析します:
node ${CLAUDE_SKILL_DIR}/../jira-ticket-viewer/scripts/parse-ticket.js < .jira-ticket-prioritizer-tmp/tickets/{KEY}.json > .jira-ticket-prioritizer-tmp/tickets/{KEY}-parsed.json - 解析した出力をすべて 1 つの JSON 配列にまとめ、
.jira-ticket-prioritizer-tmp/all-tickets.jsonに書き込みます - ステータスでチケットを分類します — すべてのチケットを取得して解析した後、次の 2 グループに分けます:
pending= ステータスが "To Do" または "Backlog" のチケット — これらはスコア付け、グループ分けされ、出力レイヤーに配置されますcontext= それ以外のステータス("In Progress"、"In Review"、"Done"、"Closed"、"Resolved")のチケット — レイヤーには配置されませんが、ステップ 3~5 で依存関係を解決するために使用されます
ステップ 3 — 依存関係グラフを構築する
- 次を実行します:
node ${CLAUDE_SKILL_DIR}/scripts/build-dependency-graph.js < .jira-ticket-prioritizer-tmp/all-tickets.json > .jira-ticket-prioritizer-tmp/graph.json - グラフの出力を確認し、循環や警告がないか調べます
- 関係のマッピング規則については、references/dependency-analysis.md を参照してください
- グラフにはすべてのチケット(
pendingとcontext)が含まれるため、進行中または完了済みのチケットへの依存関係も確認できます
ステップ 4 — セマンティック依存関係の分析と親チケットの評価
- references/dependency-analysis.md に従って、親/コンテナチケットとセマンティック依存関係を評価します
- 信頼度(high/medium/low)を付けたソフトエッジをグラフに追加します
- 新しいエッジを追加した場合は、トポロジカルソートを再実行します:
- 追加の
softEdgesでall-tickets.jsonを更新し、build-dependency-graph.jsを再実行します
- 追加の
ステップ 4b — 冗長性の検出
- 検出ルールの詳細については、references/redundancy-analysis.md を読んでください
- 保留中のチケットをすべてペアごとに確認し、スコープの重複度を評価してください。要約、説明、コンポーネント、ラベル、チケットの種類、明示的な JIRA の重複リンクを考慮します
- 各ペアについて、同じ作業を説明している可能性を判断し、重み(重複の度合い)と信頼度(判断の確かさ)を割り当ててください
- 2 つのチケットが明らかに重複している場合は、どちらを主チケットにするか決めてください。スコアが高いチケットを優先し、スコアが同じ場合は番号の小さいチケットを優先します
- 重複が対応に値するほど強い場合(信頼度が高い、または重みが相当高く信頼度が中程度)、副チケットを保留中の集合から外し、
skippedに入れてください。何が見つかったのかを正確に説明する、平易な英語の理由を記述します。どのフィールドが重複していたか、テキストの類似性、片方のチケットのスコープがもう片方に含まれると判断した理由を記載してください。根拠の文字列に関するガイドラインは、references/redundancy-analysis.md を参照してください - 重複が弱い場合(信頼度が低い、または重みが低く信頼度が中程度)、チケットは独立しているものとして扱い、両方を各レイヤーに残し、フラグを付けないでください
- ここで
skippedに移されたチケットは、以降のスコアリングやグループ化の手順に含めてはいけません
ステップ 5 — 優先度のスコアリングとグループ化
pendingのチケットのみをスコアリングします。contextのチケットはスコアリングもレイヤーへの配置も行いません- 同じ依存関係レイヤー内のチケットは、references/priority-weights.md の重みを使ってスコアリングします
- 各レイヤー内では、スコアの降順で並べ替えます
- 同点の場合のタイブレーク、またはスコアの加算には、
EXTRA_CONTEXTのコンテキストを適用します - 同じレイヤー内の関連チケットをグループ化します。references/dependency-analysis.md の「グループ化ルール」を参照してください。各グループで最初のチケット(スコアが最も高いもの)が主チケットです。
- レイヤーをまたぐ依存関係を解決します:
contextのチケットのステータスが「Done」/「Closed」/「Resolved」で、そのチケットにpendingのチケットが依存している場合 → 依存関係は解決済みであり、チケットは通常どおり処理を進めますcontextのチケットがその他のステータス(例:「In Progress」)で、そのチケットにpendingのチケットが依存している場合 → 依存先のキーとステータスを含む理由を付けて、skippedとします- 別のレイヤーにある別の
pendingチケットに依存している場合 → 通常どおりレイヤー分けします(レイヤー N+1 はレイヤー N に依存します)
- ステータスが「Done」/「Closed」/「Resolved」のチケット →
excluded - 実装可能な作業がないコンテナー/親ストーリー →
excluded
ステップ 5a — リポジトリの割り当て
ルールの詳細については、references/repo-assignment.md を読んでください。各チケットについて、ルールに従って repos、branch、complexity、hasFrontend を決定します。
ステップ 6 — 出力の生成
- レポートのスキーマと JSON の構造については、references/output-format.md を参照してください
.jira-ticket-prioritizer-tmp/detailed-report.jsonに、スコア、根拠、依存関係グラフ、スキップしたチケット、除外したチケット、警告などの詳細をすべて書き込みます.jira-ticket-prioritizer-tmp/output.jsonに、layers、skipped、excludedの配列を含むグループ化されたレイヤーオブジェクトを書き込みます- ユーザーに提示するのは
output.jsonのみです。詳細レポートは参照用に保存しますが、表示しません。
ステップ 7 — クリーンアップ
- 一時ディレクトリを削除します:
rm -rf .jira-ticket-prioritizer-tmp
参照ファイル
| 名前 | 読むタイミング |
|---|---|
| references/priority-weights.md | ステップ 5 — スコアリングルールと要素の重み |
| references/output-format.md | ステップ 6 — レポートテンプレートと JSON スキーマ |
| references/dependency-analysis.md | ステップ 3〜5 — 依存関係の検出とグループ化ルール |
| references/redundancy-analysis.md | ステップ 4b — 重複の検出、重み/信頼度のルール、省略エントリの形式 |
| references/repo-assignment.md | ステップ 5a — リポジトリの把握、割り当てルール、ブランチ/複雑さ/hasFrontend |
コメント
Markdown 対応