Files
gh-dio0550-cc-plugin/commands/create-issues-from-plan.md
2025-11-29 18:22:02 +08:00

13 KiB
Raw Blame History

実装計画から GitHub Issues を作成

Keywords: github-issues, epic, sub-issues, automation, implementation-plan, mcp-prompts, mcp-tools

目的

実装計画ドキュメント (implementation-plan-template.md) から、Epic および子 Issue を自動生成し、GitHub Issues として起票します。

使用する MCP ツール

このコマンドは以下の MCP ツールを使用します:

  • get_implementation_plan_to_issues: Issue 作成ガイドライン (implementation-plan-to-issues.md) を取得する専用ツール

使用する MCP リソース

以下の MCP prompts も併せて使用できます:

  • implementation-plan-template: 実装計画のテンプレート構造
  • epic-template: Epic Issue のテンプレート
  • feature-template: Feature Issue のテンプレート
  • migration-template: Migration Issue のテンプレート
  • test-template: Test Issue のテンプレート
  • docs-template: Docs Issue のテンプレート
  • chore-template: Chore Issue のテンプレート

前提条件

  • gh CLI がインストール済み・認証済み
  • リポジトリのラベルが設定済み(例: type:feature, type:migration, type:test, type:docs, priority:P1|P2|P3, size:S|M|L
  • MCP サーバーが起動済み: 以下のテンプレートを MCP prompts から取得します
    • implementation-plan-template: 実装計画テンプレート
    • epic-template: Epic Issue テンプレート
    • feature-template: Feature Issue テンプレート
    • migration-template: Migration Issue テンプレート
    • test-template: Test Issue テンプレート
    • docs-template: Docs Issue テンプレート
    • chore-template: Chore Issue テンプレート
  • 実装計画ドキュメントが存在(またはユーザーが提供)

処理フロー

  1. MCP から必要なドキュメントを取得

    • 実装計画テンプレート: MCP prompts から implementation-plan-template を読み込み
    • Issue テンプレート: MCP prompts から各種テンプレートを読み込み
      • epic-template (Epic 用)
      • feature-template (実装 Issue 用)
      • migration-template (移行 Issue 用)
      • test-template (テスト Issue 用)
      • docs-template (ドキュメント Issue 用)
      • chore-template (Chore Issue 用)
    • ユーザーから実装計画ファイルのパスを受け取る場合はそれを使用
  2. 実装計画の解析

    • 機能名、設計方針、コンポーネント、移行計画を抽出
    • Epic および子 Issue のリストを生成
  3. Epic Issue の作成

    • MCP から取得した epic-template をベースに Epic を作成
    • タイトル: [Feature] <機能名>: 実装計画と進行管理
    • サブ Issue のチェックリストを含む
  4. 子 Issue の作成候補を提示

    • 実装 Issueコンポーネント/ユーティリティ)
    • 移行 IssuePhase 1〜4
    • 品質 Issueテスト/パフォーマンス/セキュリティ/ドキュメント)
  5. GitHub Issues として作成

    • gh issue create コマンドを使用
    • ラベル、マイルストーンを適切に設定

Prompt Template

以下のタスクを実行してください:

  1. MCP ツール「get_implementation_plan_to_issues」を利用して、Issue 作成ガイドラインを読み込むこと

  2. MCP prompts から必要なテンプレートを読み込むこと

    • implementation-plan-template: 実装計画の構造を理解
    • epic-template, feature-template, migration-template, test-template, docs-template, chore-template: 各種 Issue テンプレート
  3. 実装計画ドキュメントを解析すること

    • ユーザーが指定した実装計画ファイル(または implementation-plan-template)を読み込み
    • 機能名、設計方針、コンポーネント、移行計画を抽出
  4. Epic Issue と子 Issue のドラフトを生成すること

    • Epic: 全体の進行管理用
    • Feature: 実装タスク(コンポーネント/ユーティリティ)
    • Migration: 移行フェーズPhase 1〜4
    • Quality: テスト/パフォーマンス/セキュリティ/ドキュメント
  5. GitHub Issues を作成すること

    • gh issue create コマンドを使用
    • 適切なラベル、マイルストーン、優先度を設定

使用方法

基本的な使い方

@workspace 実装計画から GitHub Issues を作成してください

実装計画ファイルを指定する場合

@workspace <ファイルパス> の実装計画から GitHub Issues を作成してください

オプション指定

@workspace 実装計画から GitHub Issues を作成してください
- マイルストーン: Sprint 5
- 優先度: P2
- 担当者: @username

実行手順

  1. MCP からテンプレートを取得

    • MCP prompts から implementation-plan-template を取得し、実装計画の構造を理解
    • MCP prompts から各種 Issue テンプレート (epic-template, feature-template など) を取得
    • または、ユーザー指定のファイルを読み込み
  2. 実装計画の解析と Issue リストの生成

    • 機能名、コンポーネント、移行計画を抽出
    • MCP から取得したテンプレートを使用して Issue タイトルと本文のドラフトを生成
  3. Epic Issue の作成

# Epic 本文を生成
cat > /tmp/epic-body.md <<'EOF'
# 背景 / 目的

- 機能名: <機能名>
- 設計方針の要点(抜粋): <抽出した設計方針>

# スコープ

- コンポーネント: <抽出したコンポーネント>
- サービス/ユーティリティ: <抽出したサービス>
- 移行フェーズ: Phase1〜4

# サブ IssueTasklist

- [ ] ComponentA: create/parse を実装
- [ ] ComponentA Utils: validate/transform を実装
- [ ] ComponentB: 型/ファクトリを実装
- [ ] Phase 1: 基本実装
- [ ] Phase 2: 既存コード移行
- [ ] Phase 3: テスト/ドキュメント
- [ ] Phase 4: 最適化/クリーンアップ
- [ ] テスト整備
- [ ] パフォーマンス検討
- [ ] セキュリティ/エラー対策
- [ ] ドキュメント更新

# 受け入れ条件DoD

- 子 Issue が全て Close
- 相互参照が揃っている
- ドキュメント/テストが最新

# 関連

- 設計ドキュメント: <実装計画ファイルへのリンク>
EOF

# Epic Issue を作成
gh issue create \
  --title "[Feature] <機能名>: 実装計画と進行管理" \
  --body-file /tmp/epic-body.md \
  --label "type:feature" \
  --label "priority:P2"
  1. 子 Issue 候補の提示

    • ユーザーに確認を求める
    • 必要に応じて調整
  2. 実行確認後、一括作成(オプション)

    • ユーザーが承認した場合、gh issue create を連続実行
    • または、Epic 作成後に UI で「Convert to sub-issues」を使用するよう案内

Issue 種別とテンプレート

注記: すべてのテンプレートは MCP prompts から取得します。ワークスペースには general/issue-templates/*.template.md として保存されていますが、実行時は MCP 経由でアクセスします。

実装 IssueFeature

MCP Prompt: feature-template
ファイル: general/issue-templates/feature.template.md

タイトル例:

  • [Feature][Model] ComponentA: create/parse を実装
  • [Feature][Util] ComponentA Utils: validate/transform を実装
  • [Feature][Model] ComponentB: 型とファクトリ実装

ラベル: type:feature, size:S|M|L, area:*

移行 IssueMigration

MCP Prompt: migration-template
ファイル: general/issue-templates/migration.template.md

タイトル例:

  • [Migration] Phase 1: 基本実装
  • [Migration] Phase 2: 既存コード移行
  • [Migration] Phase 3: テストとドキュメント化
  • [Migration] Phase 4: 最適化とクリーンアップ

ラベル: type:migration, priority:P1|P2|P3

品質 IssueTest/Docs/Chore

MCP Prompts:

  • Test: test-template (general/issue-templates/test.template.md)
  • Docs: docs-template (general/issue-templates/docs.template.md)
  • Chore: chore-template (general/issue-templates/chore.template.md)

タイトル例:

  • [Test] ComponentA/B の単体・結合テスト整備
  • [Perf] パフォーマンス考慮点の計測/最適化
  • [Security] エラーハンドリング/入力検証の整備
  • [Docs] 使用例/設計ドキュメント更新

ラベル: type:test, type:docs, type:chore

実装例(実際の処理)

ステップ 1: 実装計画の読み込みと解析

// 実装計画ドキュメントから情報を抽出
const plan = {
  featureName: "機能名",
  designPrinciples: "設計方針の要点",
  components: ["ComponentA", "ComponentB"],
  phases: ["Phase 1", "Phase 2", "Phase 3", "Phase 4"],
  implementationStatus: {
    done: ["Task 1"],
    todo: ["Task 2", "Task 3"],
  },
};

ステップ 2: Epic Issue の作成

# Epic Issue 番号を取得
EPIC_NUMBER=$(gh issue create \
  --title "[Feature] ${FEATURE_NAME}: 実装計画と進行管理" \
  --body-file /tmp/epic-body.md \
  --label "type:feature" \
  --label "priority:P2" \
  --json number --jq .number)

echo "Created Epic: #${EPIC_NUMBER}"

ステップ 3: 子 Issue の作成(オプション)

# ComponentA の実装 Issue
cat > /tmp/component-a-body.md <<EOF
# 目的

- ComponentA の create/parse を実装する

# 仕様

- 入力: <型/前提>
- 出力: <型/結果>

# タスク

- [ ] 型定義の作成/更新
- [ ] create メソッドの実装
- [ ] parse メソッドの実装
- [ ] 単体テスト
- [ ] ドキュメント追加

# 完了条件

- テストがグリーン
- ドキュメントに使用例が掲載

# 関連

- Epic: #${EPIC_NUMBER}
EOF

gh issue create \
  --title "[Feature][Model] ComponentA: create/parse を実装" \
  --body-file /tmp/component-a-body.md \
  --label "type:feature" \
  --label "size:M"

UI での推奨運用(サブ Issue 機能)

Epic を作成後、GitHub UI で以下の操作を行うことを推奨します:

  1. Epic Issue を開く
  2. 本文のチェックリストにカーソルを合わせる
  3. 「Convert to sub-issues」ボタンをクリック
  4. 自動で子 Issue が作成され、親子リンクが確立
  5. 進捗バーが自動更新される

この方法により、手動で 関連: #<epic> を記述する必要がなくなります。

注意事項

  • MCP サーバー: MCP prompts から各種テンプレートを取得するため、MCP サーバーが起動している必要があります
    • テンプレートは general/issue-templates/*.template.md に保存されていますが、実行時は MCP 経由でアクセスします
    • 利用可能な prompts: implementation-plan-template, epic-template, feature-template, migration-template, test-template, docs-template, chore-template
  • ラベル: リポジトリに存在するラベルのみ指定可能
  • マイルストーン: 事前に作成しておく必要がある
  • 担当者: GitHub アカウント名で指定(例: @username

トラブルシューティング

gh CLI が認証されていない

gh auth login

ラベルが存在しない

# ラベルを作成
gh label create "type:feature" --color "0E8A16" --description "New feature"
gh label create "type:migration" --color "FBCA04" --description "Migration task"
gh label create "type:test" --color "D93F0B" --description "Testing"
gh label create "type:docs" --color "0075CA" --description "Documentation"

または、scripts/create-github-labels.sh を実行してください。

MCP サーバーが起動していない

MCP サーバーの起動状態を確認し、必要に応じて再起動してください。

完了チェックリスト

  • MCP ツール get_implementation_plan_to_issues で Issue 作成ガイドラインを読み込んだ
  • MCP prompts から必要なテンプレートを読み込んだ
  • 実装計画ドキュメントを解析した
  • Epic Issue が作成された
  • サブ Issue のチェックリストが揃っている
  • ラベル/マイルストーンが適切に設定されている
  • (オプション)子 Issue が作成された、または UI での作成手順が案内された

Notes

  • MCP Tools: 実行前に MCP サーバーが起動していることを確認してください
    • get_implementation_plan_to_issues: Issue 作成ガイドラインを取得する専用ツール
  • MCP Prompts: 各種テンプレートは MCP prompts から取得します
  • GitHub CLI: gh auth status で認証状態を確認してください
  • テンプレート: ワークスペースの general/issue-templates/ にテンプレートファイルが存在します
  • 推奨運用: Epic 作成後、GitHub UI で「Convert to sub-issues」を使用すると親子リンクが自動設定されます

関連ドキュメント

  • general/implementation-plan-template.md: 実装計画テンプレート
  • general/implementation-plan-to-issues.md: Issue 作成の詳細ガイド
  • general/issue-templates/*.template.md: Issue テンプレート集
  • scripts/create-github-labels.sh: ラベル作成スクリプト