手順
- •
ストーリーのIssue番号を決定する。
- •引数で指定されている場合、その番号を使用する。
- •引数が未指定の場合は「ストーリーのIssue番号を指定してください」とユーザーに通知し、処理を終了する。
- •
フィードバック確認を行う。
- •
managing-githubスキルのissue-comments.shでストーリーのコメント一覧を取得する。 - •
managing-githubスキルのissue-sub-issues.shでサブIssue一覧を取得し、最新サブIssue作成日時を特定する。 - •以下の全条件を満たすコメントを未対応フィードバックとして検出する:
- •コメントの
author_associationがOWNER、COLLABORATOR、MEMBERのいずれか - •コメントの
created_atが最新サブIssue作成日時より後(サブIssueが存在しない場合はすべてのコメントを対象) - •コメント内容に改善要望・変更依頼・不備指摘が含まれる(具体的には「〜してほしい」「〜すべき」「〜が足りない」「〜が不足」「〜を追加」「〜を修正」「〜が必要」等の表現)
- •コメントの
- •未対応フィードバックが検出された場合:
- •各フィードバックの内容を分析し、「フィードバック判断基準」に従って対応方法を判断する。
- •受け入れ条件の更新が必要な場合、以下の手順で更新する:
- •
managing-githubスキルのissue-get.shでストーリーIssue本文全体を取得 - •本文から「受け入れ条件」セクションを抽出し、フィードバックに基づいて更新
- •
managing-githubスキルのissue-update.sh --body-fileで更新した本文全体を再投稿
- •
- •追加タスクの作成が必要な場合、「追加タスクIssue作成ルール」に従ってタスクIssueを作成し(
managing-githubスキルのissue-create.shを使用、--label taskオプションを付与)、サブIssueとして登録する(managing-githubスキルのsub-issue-add.shを使用)。 - •フィードバック対応の完了をストーリーIssueにコメントする(
managing-githubスキルのissue-add-comment.shを使用)。
- •未対応フィードバックが検出されなかった場合は、手順3へ進む。
- •
- •
managing-githubスキルでストーリーIssueの情報を取得する。- •Issue本文から受け入れ条件(チェックボックス形式
- [ ])を抽出する。 - •受け入れ条件が存在しない場合は「受け入れ条件が定義されていません」とユーザーに通知し、処理を終了する。
- •Issue本文から受け入れ条件(チェックボックス形式
- •
managing-githubスキルのissue-sub-issues.shでサブIssueの一覧を取得する。- •各サブIssueのタイトル、状態(OPEN/CLOSED)、本文を確認する。
- •
実装されたソースコードを確認する。
- •サブIssueで言及されているファイルや変更内容を確認する。
- •最近のコミット履歴を確認する(
git logコマンド)。 - •関連するPRがあれば
managing-githubスキルのpr-get.shで内容を確認する。
- •
各受け入れ条件について、満たされているか判定する。
- •完了したサブIssueの実装内容を元に判定する。
- •ソースコードの変更内容を元に判定する。
- •受け入れ条件の判定基準に従って評価する。
- •
判定結果に応じて処理を実行する。
- •満たされていない受け入れ条件がある場合:
- •満たされていない各条件について、追加タスクを作成する必要があるか検討する。
- •追加タスクが必要な場合、タスクのIssue本文を「追加タスクIssue作成ルール」に従って生成する。
- •
managing-githubスキルのissue-create.shでIssueを作成する。--label taskオプションを付与してtaskラベルを自動付与すること。 - •
managing-githubスキルのsub-issue-add.shでストーリーIssueのサブIssueとして登録する。 - •作成した追加タスクの一覧(タイトル・URL・理由)をユーザーに報告する。
- •すべての受け入れ条件を満たしている場合:
- •現在のGitHubユーザー名を取得する(
gh api user --jq '.login'コマンド)。 - •
managing-githubスキルのissue-update.shでストーリーIssueにユーザーをassigneeとして追加する(--add-assigneeオプション)。 - •
managing-githubスキルのissue-add-comment.shでストーリーIssueに受け入れ完了のコメントを追加する。コメント内容は以下の形式とする:code## 受け入れ確認完了 すべての受け入れ条件を満たしていることを確認しました。 ### 確認内容 - [確認した受け入れ条件1] - [確認した受け入れ条件2] ... 受け入れ完了として、ユーザーをassigneesに追加しました。
- •受け入れ完了をユーザーに報告する。
- •現在のGitHubユーザー名を取得する(
- •満たされていない受け入れ条件がある場合:
フィードバック判断基準
フィードバック内容を以下の基準で分類する:
- •
受け入れ条件の更新が必要:
- •ストーリーの要件や仕様変更を含むフィードバック
- •既存の受け入れ条件の修正や追加が求められる内容
- •例: 「認証機能はOAuth2.0に対応すべき」「パフォーマンス要件として5秒以内のレスポンスが必要」
- •
追加タスクの作成が必要:
- •実装上の不備や改善点の指摘
- •新しいタスクとして独立して対応可能な内容
- •例: 「エラーハンドリングが不足している」「テストケースを追加してほしい」「READMEを更新してほしい」
- •
両方が必要:
- •要件変更(受け入れ条件更新)と、それに対応する実装(追加タスク)の両方が必要な場合
受け入れ条件判定基準
受け入れ条件が満たされているかを判定する際、以下の基準を用いる:
- •
機能の実装確認
- •サブIssueまたはコミットで該当機能が実装されていることを確認する。
- •関連するソースコードファイルを確認し、条件に対応する実装が存在するかを検証する。
- •
テストの実装確認
- •受け入れ条件に「テスト」が含まれる場合、テストコードの存在を確認する。
- •テストファイルの内容を確認し、条件に対応するテストケースが存在するかを検証する。
- •
ドキュメントの更新確認
- •受け入れ条件に「ドキュメント」「README」等が含まれる場合、該当ファイルの更新を確認する。
- •
実装の完了状態確認
- •サブIssueが
CLOSED状態であれば、実装完了とみなす。 - •ただし、受け入れ条件で求められている内容がサブIssueに含まれているかを確認する。
- •サブIssueが
- •
不明な場合の取り扱い
- •判定が困難な場合は、保守的に「満たされていない」と判断する。
- •ユーザーに確認を求めることも検討する。
追加タスクIssue作成ルール
タイトル
具体的な作業内容を動詞で開始する(例: 「認証機能のテストを追加する」「READMEを更新する」)。
本文構成
概要
このタスクで実装する内容を簡潔に説明する。
親ストーリー
#[ストーリーのIssue番号] へのリンクを記載する。
背景
このタスクが必要な理由を説明する(どの受け入れ条件が満たされていないかを明記)。
実装内容
- •実装する機能や作業の詳細を箇条書きで記載する。
- •主な変更対象のファイルやディレクトリがわかる場合は記載する。
完了条件
- • 具体的な完了基準をチェックボックス形式で列挙する。
依存関係
依存する他タスクがあれば、Issue番号を記載する(なければ「なし(並列着手可能)」と記載)。
注意点
- •受け入れ条件の判定は、実装内容とソースコードを総合的に評価して行うこと。
- •追加タスクを作成する際は、重複したタスクを作成しないよう既存のサブIssueを確認すること。
- •ユーザーをassigneesに追加する際は、必ず現在のGitHubユーザー名を取得して使用すること。
- •受け入れ完了のコメントは、確認した受け入れ条件を具体的に列挙すること。