Issue の完了状態を確認
Check if an issue can be closed by analyzing linked PRs and their merge status. Use this to verify completion before closing issues manually.
/plugin marketplace add B16B1RD/cc-zen-workflow/plugin install b16b1rd-zen-workflow@B16B1RD/cc-zen-workflowissue/Issue の完了状態を確認し、必要なアクションをガイドする
このコマンドを実行したら、以下のフェーズを順番に実行してください。
| 引数 | 説明 |
|---|---|
<issue_number> | 確認する Issue 番号(必須) |
指定された Issue の詳細情報を取得:
gh issue view {issue_number} --json number,title,body,state,labels,closedAt
Issue の状態に応じて分岐:
Issue が既にクローズされている場合:
Issue #{number} は既にクローズされています
タイトル: {title}
クローズ日時: {closed_at}
追加のアクションは不要です。
処理を終了。
Issue がオープンの場合:
Phase 2 へ進む。
Issue に紐づく PR を検索:
gh pr list --state all --search "linked:issue:{issue_number}" --json number,title,state,mergedAt,url
または Issue 番号を参照している PR を検索:
gh pr list --state all --json number,title,state,body,mergedAt,url
検索された PR の body に以下のパターンが含まれるか確認:
Closes #{issue_number}closes #{issue_number}Fixes #{issue_number}fixes #{issue_number}Resolves #{issue_number}resolves #{issue_number}Issue 番号を含むブランチの PR も検索:
gh pr list --state all --head "*issue-{issue_number}*" --json number,title,state,mergedAt,url
見つかったすべての関連 PR を一覧化:
| # | タイトル | 状態 | マージ日時 |
|---|---|---|---|
| #{pr_number} | {pr_title} | {state} | {merged_at} |
Issue が自動的にクローズされる条件:
Closes #XXX, Fixes #XXX, Resolves #XXX を含む紐づく PR がマージ済みで、クローズキーワードを含む場合:
Issue #{number} は自動的にクローズされます(または既にクローズされました)
紐づく PR:
- #{pr_number}: {pr_title} (Merged)
GitHub のキーワード連携により、PR マージ時に Issue は自動クローズされます。
追加のアクションは不要です。
紐づく PR があるが、クローズキーワードがない場合:
Issue #{number} に紐づく PR がありますが、自動クローズは設定されていません
紐づく PR:
- #{pr_number}: {pr_title} ({state})
推奨アクション:
1. PR 本文に "Closes #{number}" を追加してマージ
2. または手動で Issue をクローズ: gh issue close {number}
紐づく PR がオープン状態の場合:
Issue #{number} に紐づく PR がマージ待ちです
紐づく PR:
- #{pr_number}: {pr_title} (Open)
URL: {pr_url}
推奨アクション:
1. PR をレビュー・マージ
2. マージ後、Issue は自動的にクローズされます
関連する PR が見つからない場合:
Issue #{number} に紐づく PR が見つかりません
オプション:
- PR を作成してから Issue をクローズ: /zen:pr:create
- 手動で Issue をクローズ: gh issue close {number}
- Issue を開いたままにする
AskUserQuestion で次のアクションを確認:
どのアクションを実行しますか?
オプション:
- PR を作成する (/zen:pr:create)
- Issue を手動でクローズする
- 何もしない
ユーザーが手動クローズを選択した場合:
gh issue close {issue_number}
Issue がクローズされた場合、Projects の Status を "Done" に更新:
# プロジェクトアイテム情報を取得
gh api graphql -f query='
query($owner: String!, $repo: String!, $number: Int!) {
repository(owner: $owner, name: $repo) {
issue(number: $number) {
projectItems(first: 10) {
nodes {
id
project {
id
number
}
}
}
}
}
}' -f owner="{owner}" -f repo="{repo}" -F number={issue_number}
# Status を "Done" に更新
gh project item-edit --project-id {project_id} --id {item_id} --field-id {status_field_id} --single-select-option-id {done_option_id}
Issue #{number} をクローズしました
タイトル: {title}
Status: Done
関連 PR: #{pr_number} (Merged)
エラー: Issue #{number} が見つかりません
考えられる原因:
- Issue 番号が間違っている
- Issue が削除されている
- リポジトリが異なる
対処:
1. `gh issue list` で Issue 一覧を確認
2. 正しい Issue 番号で再実行
エラー: Issue #{number} をクローズする権限がありません
考えられる原因:
- リポジトリへの書き込み権限がない
- Issue がロックされている
対処:
1. リポジトリの権限を確認
2. リポジトリ管理者に連絡
エラー: GitHub API への接続に失敗しました
対処:
1. ネットワーク接続を確認
2. `gh auth status` で認証状態を確認
3. 再度実行
gh コマンド実行