Files
gh-mh4gf-issync-claude-plug…/commands/create-sub-issue.md
2025-11-30 08:40:07 +08:00

8.0 KiB
Raw Blame History

description
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と自動リンク、順序維持

使用方法

/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: 環境変数確認 & モード決定

ラベル自動付与の有効化状態を確認し、以降のステップで使用するモードフラグを設定。

環境変数:

ISSYNC_LABELS_AUTOMATION               # ラベル自動付与モード ("true" で有効)

モード決定:

  • ラベル自動付与: ISSYNC_LABELS_AUTOMATION="true"で有効 (未設定時はステップ6のラベル付与をスキップ)

出力: 設定状態をユーザーに表示

## 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のスタイルに合わせる

本文テンプレート:

Part of #{親issue番号}

## 目的
{タスクの具体的な目的1-2文}

## 背景
{親issueから関連情報を抽出・要約}

## 完了条件
- [ ] {完了条件3-5項目}
- [ ] コードレビュー完了
- [ ] ドキュメント更新完了

## 関連
- 親issue: #{親issue番号}
- 詳細: [親issueを見る]({親issueのURL})

ステップ5.5: 既存issueの重複チェック

類似タスクが既に存在しないか検索し、重複作成を防ぐ。

検索実行:

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作成。 未設定の場合はラベルなしで作成。

処理フロー:

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ワークフロー順次実行