name: issue-size-estimation description: Issue粒度判定とコード行数見積もりの基準、サイズラベル、分割判定ロジックを定義
Issue粒度判定 & コード行数見積もり
参照元: 実装ワークフローの粒度判定ロジック
概要
実装タスクは200行以下のIssueを対象とすることを推奨する。
大きなIssueは事前に /decompose-issue で分解してから実行すること。
粒度判定基準
| 粒度 | 対応 |
|---|---|
| 200行以下 | 直接実装可能 |
| 200行超 | /decompose-issue で分割してから実装 |
| 新規設計 | /detailed-design-workflow で設計時に適切な粒度でIssue作成 |
粒度ルール
| 項目 | 基準 |
|---|---|
| コード量 | 200行以下 |
| ファイル数 | 1-3ファイル |
| 責務 | 単一責務(1つの機能・1つの目的) |
| テスト可能性 | 独立してテスト可能 |
| 所要時間目安 | 10-15分で実装完了 |
サイズラベル
プロジェクトで以下のラベルを使用することを推奨:
| ラベル | 目安行数 | 対応 |
|---|---|---|
size/xs | ~50行 | 直接実装 |
size/s | ~100行 | 直接実装 |
size/m | ~200行 | 直接実装(境界) |
size/l | ~400行 | 要分割 |
size/xl | ~800行以上 | 要分割 |
行数見積もり方法
優先順位:
- Issue labelsから推定(
size/*ラベル) - 設計書のコードブロックから推定
- Issueタイトル・本文のキーワードから推定
キーワードベース推定:
| キーワード | 推定行数 |
|---|---|
fix | ~50行 |
update | ~80行 |
add | ~100行 |
refactor | ~150行 |
create | ~150行 |
implement | ~200行 |
分割判定
def should_decompose(issue_id: int) -> bool:
"""分割が必要かどうか判定"""
estimated = estimate_code_lines(issue_id)
return estimated > 200
大きなIssueを見つけた場合
# 1. まず分解コマンドを実行
/decompose-issue 8
# 2. 作成されたSubtaskを実装
# (各Subtaskを順次実装)
リトライポリシー
| 条件 | アクション |
|---|---|
| Issue失敗(1-2回目) | リトライ |
| Issue失敗(3回目) | Draft PRを作成、ユーザーに報告 |
| 複数Issue並列時 | 失敗したIssueのみ報告、他は継続 |