Initial commit

This commit is contained in:
Zhongwei Li
2025-11-30 08:40:07 +08:00
commit fb4d2ff5f1
12 changed files with 2249 additions and 0 deletions

View File

@@ -0,0 +1,217 @@
---
description: 新規タスクをGitHub Issueとして作成し、親issueとのリンクを自動管理。進捗ドキュメントのTasksセクションは不使用
---
# /issync:create-sub-issue: サブissue作成オペレーション
新規タスクをGitHub Issueとして作成し、以下を自動化
1. タスク概要入力(インタラクティブ: 1つ / 引数: 複数可)
2. 親issue情報取得`.issync/state.yml`
3. LLMによるタイトル・本文生成
4. Issue作成`ISSYNC_LABELS_AUTOMATION=true`の場合、`issync:plan`ラベル自動付与)
5. Sub-issues API連携親issue紐づけ + 順序維持)
## コンテキスト
**横断的オペレーション** - どのステートでも実行可能plan、poc、architecture-decision、implement
**設計原則**:
- GitHub Sub-issuesを完全なSSOTとする進捗ドキュメントのTasksセクション不使用
- ユーザー入力は簡潔な概要のみLLMが適切なタイトル・本文を自動生成
- Sub-issues APIで親issueと自動リンク、順序維持
## 使用方法
```bash
/issync:create-sub-issue # インタラクティブモード1つ
/issync:create-sub-issue "概要1" "概要2" # 引数モード(複数可)
```
**入力例**: "Status変更時の自動アクション" "コマンド実装" など簡潔でOK
**推奨ワークフロー**:
- 基本: 1つずつ作成 → `/issync:plan`で詳細化 → 必要に応じて孫issue作成
- 複数の独立タスクが明確な場合のみ引数モードで一括作成
## 前提条件
- `.issync/state.yml`存在(`issync init`完了済み)
- `ISSYNC_GITHUB_TOKEN`環境変数設定
- `gh` CLIインストール済み
- `ISSYNC_LABELS_AUTOMATION=true`設定時: リポジトリに`issync:plan`ラベルが存在すること
## 実行ステップ
### ステップ1: 環境変数確認 & モード決定
ラベル自動付与の有効化状態を確認し、以降のステップで使用するモードフラグを設定。
**環境変数**:
```bash
ISSYNC_LABELS_AUTOMATION # ラベル自動付与モード ("true" で有効)
```
**モード決定**:
- **ラベル自動付与**: `ISSYNC_LABELS_AUTOMATION="true"`で有効 (未設定時はステップ6のラベル付与をスキップ)
**出力**: 設定状態をユーザーに表示
```markdown
## Environment Check
**Label Automation**: {有効/無効}
```
### ステップ2: タスク概要の入力
- **インタラクティブモード**: プロンプトでタスク概要を1つ入力
- **引数モード**: コマンドライン引数から複数取得
### ステップ3: 親issue情報を取得
`issync status <親issue URL>`を実行し、以下を取得:
- `issue_url`: 親issueのURL
- `local_file`: 進捗ドキュメントのパス
### ステップ4: 親issueコンテキスト抽出
進捗ドキュメント全体を読み込み、LLMが以下を理解:
- Purpose/Overview: 目的、コアバリュー
- Context & Direction: 背景、設計哲学
- Specification: 仕様、アーキテクチャ(存在時)
### ステップ5: タイトル・本文生成
**タイトル**: 「{動詞} + {対象}」形式、10-30文字、親issueのスタイルに合わせる
**本文テンプレート**:
```markdown
Part of #{親issue番号}
## 目的
{タスクの具体的な目的1-2文}
## 背景
{親issueから関連情報を抽出・要約}
## 完了条件
- [ ] {完了条件3-5項目}
- [ ] コードレビュー完了
- [ ] ドキュメント更新完了
## 関連
- 親issue: #{親issue番号}
- 詳細: [親issueを見る]({親issueのURL})
```
### ステップ5.5: 既存issueの重複チェック
類似タスクが既に存在しないか検索し、重複作成を防ぐ。
**検索実行**:
```bash
gh search issues --repo {owner}/{repo} "{キーワード1} {キーワード2}" \
--json number,title,url,state,labels --limit 5
```
- LLMがタイトルから主要キーワード抽出動詞・名詞中心、2-3語
- 検索対象: リポジトリ内全issueopen/closed、親issueのsub-issues優先
**類似issue検出時の確認**:
```
⚠️ 類似する既存issueが見つかりました:
#123 [open]: Status変更時の自動通知機能を実装
このまま新規issue作成を続けますか (y/n)
```
- `y`: ステップ6へ進む
- `n`: キャンセル、既存issue利用を推奨
**エラー時**: 警告表示後、検索スキップして続行
### ステップ6: ユーザー確認
生成したタイトル・本文プレビューを提示し、承認後に作成(`y`/`n`
### ステップ7: Issue作成とSub-issues連携
**ラベル付与**:
ステップ1で確認したラベル自動付与モードが有効な場合、`--label "issync:plan"`を付与してissue作成。
未設定の場合はラベルなしで作成。
**処理フロー**:
```bash
PREV_SUB_ISSUE_ID=""
for i in "${!GENERATED_TITLES[@]}"; do
TITLE="${GENERATED_TITLES[$i]}"
BODY="${GENERATED_BODIES[$i]}"
# ISSYNC_LABELS_AUTOMATIONに応じてラベル付与
ISSUE_URL=$(gh issue create --repo {owner}/{repo} --title "$TITLE" --body "$BODY")
ISSUE_NUMBER=$(echo $ISSUE_URL | grep -o '[0-9]*$')
SUB_ISSUE_ID=$(gh api /repos/{owner}/{repo}/issues/$ISSUE_NUMBER --jq .id)
# Sub-issueとして紐づけ
gh api --method POST /repos/{owner}/{repo}/issues/{親issue番号}/sub_issues \
-F "sub_issue_id=$SUB_ISSUE_ID"
# 2つ目以降は順序設定
if [ -n "$PREV_SUB_ISSUE_ID" ]; then
gh api --method PATCH /repos/{owner}/{repo}/issues/{親issue番号}/sub_issues/priority \
--input - << EOF
{
"sub_issue_id": $SUB_ISSUE_ID,
"after_id": $PREV_SUB_ISSUE_ID
}
EOF
fi
PREV_SUB_ISSUE_ID=$SUB_ISSUE_ID
done
```
### ステップ8: GitHub Projects Status設定オプション
`gh issue edit`でStatus=planを設定利用不可時は手動設定を案内
## 出力フォーマット
完了後、以下を表示:
- 作成されたサブissueリストURL、タイトル
- Sub-issues紐づけ結果
- `ISSYNC_LABELS_AUTOMATION=true`の場合:
- `issync:plan`ラベル付与確認
- **auto-planワークフロー自動実行**のため、手動`/issync:plan`実行不要
- GitHub Actionsタブで実行状況確認可能
- 未設定の場合:
- 手動で`/issync:plan`実行が必要
## 重要な注意事項
**必須要件**:
- ステップ1で環境変数を確認し、モードフラグを設定以降のステップで参照
- 親issueの進捗ドキュメント全体読み込み`.issync/state.yml`のlocal_fileパス使用
- タイトル・本文はLLM生成、ユーザー確認必須
- gh CLI使用、内部ID使用`gh api .../issues/{番号} --jq .id`
- `ISSYNC_LABELS_AUTOMATION=true`の場合、`issync:plan`ラベル自動付与
- auto-planワークフローが自動トリガーされ、進捗ドキュメントが自動作成される
**Sub-issues API**:
- 処理順: Issue作成 → 内部ID取得 → Sub-issues紐づけ → 順序設定(`after_id`
- JSON payload使用、エラー時は処理継続して報告
**その他**:
- 進捗ドキュメント非変更Tasksセクション削除済み、タスク管理はGitHub Sub-issuesに完全移行
- エラーハンドリング: `state.yml`/`gh` CLI不在時は終了、Issue作成失敗時は部分成功も記録
## 実行例
**インタラクティブモード**: `/issync:create-sub-issue`
1. タスク概要入力: "Status変更時の自動アクション"
2. LLMがタイトル生成例: "Status変更時の自動アクション機能を設計"
3. ユーザー確認 → Issue作成
4. `ISSYNC_LABELS_AUTOMATION=true`の場合:
- `issync:plan`ラベル付き → auto-planワークフロー自動実行 → 進捗ドキュメント作成
**引数モード**: `/issync:create-sub-issue "自動アクション設計" "/issync:create-sub-issue実装"`
1. 複数タスクを一括作成
2. Sub-issues順序設定で作成順序維持
3. `ISSYNC_LABELS_AUTOMATION=true`の場合:
- 各サブissueに対しauto-planワークフロー順次実行