🤖

Claude CodeでGitHub Projectsのタスク作成をほぼ自動化した話

に公開

はじめに

前提知識: この記事は Claude Code の基本的な使い方と GitHub Projects でのタスク管理経験がある方を対象としています。Claude Code 初心者の方は、まず公式ドキュメントで基本操作を確認することをおすすめします。

スクラム開発で GitHub Projects を使ってタスク管理をしているチームは多いと思います。私たちのチームでも、スプリント計画やタスク進捗管理に GitHub Projects を活用していました。

しかし、運用していく中でいくつかの課題が浮き彫りになってきました:

  • メンバーによってタスクの記載方法にバラツキがある
  • タスクの粒度が大きすぎて、見積もりが困難で進捗も見えにくい
  • フォーマットが統一されていないため、情報が抜け漏れる
  • 正直、タスク作成が面倒...

これらの課題を解決するために、Claude Code のカスタムコマンドを使ってタスク作成を「ほぼ」自動化する仕組みを作りました。

解決のコンセプト - 人間と AI の協業

なぜ「ほぼ」自動化なのか

完全自動化を目指さなかった理由は明確です。タスク管理において最も重要なのは、チームメンバーがタスクの背景と目的を理解することだからです。

完全に AI に任せてしまうと、タスク作成者自身が内容を深く考えなくなり、結果として:

  • タスクの意図が伝わらない
  • 実装時に必要な情報が不足する
  • チームメンバー間の認識がズレる

といった問題が発生します。

一方で、手動作業の負担は確実に減らしたい。そこで目指したのが:

  • チーム力の平均値を上げる: 経験の浅いメンバーでも、ベテランと同じ品質でタスクを作成できる
  • スクラムの管理性を向上: フォーマットが統一され、進捗が可視化される
  • 面倒な作業を減らす: 人が価値を感じない機械的な作業は AI に任せる

この両立を実現するため、以下のような役割分担を設計しました:

AI が担当すること(7 割)

  • 過去の類似タスクの検索と参照
  • Slack/Confluence からの情報抽出
  • タスク内容の分析と作業量見積もり
  • 適切な粒度への自動分割
  • フォーマットの統一とラベル付与
  • GitHub Projects への登録作業

人間が担当すること(3 割)

  • タスクの最終確認と承認
  • 優先度の判断
  • 詳細要件の追記
  • チームメンバーへの共有

この「7 割の品質」という割り切りが、実用的なツールを作る鍵でした。100%を目指すと複雑になりすぎて、結局使われなくなってしまいます。

Claude Code による実装

カスタムコマンドの作成

Claude Code のカスタムコマンド機能を使って、/create_taskというコマンドを作成しました。このコマンドは、タスクの概要を伝えるだけで、GitHub Issue を適切な形式で作成してくれます。

# /create_task コマンドの使い方

1. Claude Code で `/create_task` と入力
2. タスクの種類を選択(新規親タスク or 既存親タスクへの子タスク追加)
3. 必要な情報を入力(タスク概要、関連 Slack URL など)
4. 自動生成された内容を確認
5. 承認後、GitHub Issue が自動作成される

MCP と GitHub CLI を活用した外部連携

このコマンドの肝は、MCP(Model Context Protocol)と GitHub CLI を組み合わせた外部サービスとの連携です:

MCP 経由での情報取得

  • Slack API: スレッドの内容を読み取り、背景情報を自動抽出
  • Confluence API: ドキュメントから詳細な要件を取得
  • GitHub API(読み取り): 既存 Issue の内容確認、過去の類似 Issue 検索

GitHub CLI(gh)での操作

  • Issue 作成: gh issue createコマンドで高速に作成
  • ラベル付与: gh issue editでラベルを一括設定
  • プロジェクト連携: gh project item-addで GitHub Projects に自動追加
  • Sub-issue 設定: GitHub API と組み合わせて親子関係を構築

3 つの自動化ポイント

1. インテリジェントな情報収集

単純にテンプレートを埋めるだけでなく、様々な情報源から文脈を理解します:

過去の類似 Issue 検索

# 類似のIssueを検索(結果数を制限してエラーを回避)
gh search issues "API 実装" --repo [organization]/[repository] --limit 5

Slack や Confluence からの情報抽出

ユーザーが Slack の URL を貼り付けると、自動的にそのスレッドを読み込み:

  • 依頼者の特定
  • 背景・経緯の把握
  • 要件の詳細理解

を行います。

2. AI による適切なタスク分割

最も重要な機能の一つが、AI がタスクの内容を理解して適切に細分化することです:

  • AI がタスク内容を分析し、作業量を見積もり
  • 5 日以上かかると判断したタスク(size/XL)は自動的に分割
  • 各子タスクは 4 日以内(size/L 以下)に収まるよう調整
  • 依存関係を考慮して、独立して着手可能な単位に分割

例えば、「新しいデータパイプラインの構築」という大きなタスクを AI に渡すと:

  1. 要件定義とスキーマ設計(size/M: 2 日)
  2. Lambda 関数の実装(size/L: 4 日)
  3. テストとドキュメント作成(size/M: 2 日)

のように、AI が実装内容を理解して論理的に分割してくれます。

単純な時間分割ではなく、実際の開発フローに沿った分割になるのがポイントです。

3. ヒアリングによる精度向上

この仕組みの重要な点は、AI が不明な点を適切にヒアリングすることです:

Claude: 親Issueから依頼者とAssigneesを取得しました。
        子タスクの優先度はどうしましょうか?
        1. P0 - 緊急(ブロッカー)
        2. P1 - 高(このスプリントで必須)
        3. P2 - 中(次のスプリントでも可)
        4. P3 - 低(バックログ)

User: P1でお願いします

Claude: 了解しました。P1で設定します。

このように、自動化できる部分は自動化しつつ、判断が必要な部分は人間に確認を取ります。

実際の使用例

Before: 手動でのタスク作成

従来は以下のような作業が必要でした:

  1. Issue 作成画面を開く
  2. タイトルを考える
  3. テンプレートをコピペ
  4. 各項目を手動で埋める
  5. ラベルを選択
  6. 子タスクがある場合は、この作業を繰り返す
  7. GitHub Projects に手動で追加
  8. 優先度とボリュームを設定

所要時間: 約 15-20 分

After: /create_task コマンドを使用

User: /create_task

Claude: タスクの種類を選択してください:
        A. 既存の親タスクに子タスクを追加
        B. 新しい親タスク

User: B

Claude: 実装内容を教えてください。関連するSlack URLがあれば一緒に貼ってください。

User: 外部サービスのユーザーデータをDatabricksに同期する仕組みを作りたい
      https://[workspace].slack.com/archives/xxxxx/p1234567890

Claude: Slackの内容を確認しました。以下の構成でIssueを作成します:

[親タスク]
タイトル: [外部API] Databricksへのユーザーデータ同期機能の実装
優先度: P1
ラベル: type/epic, priority/P1

[子タスク]
1. [#xxx] 外部APIの調査と接続テスト (size/S: 1日)
2. [#xxx] データ同期Lambda関数の実装 (size/L: 4日)
3. [#xxx] Databricksテーブル設計とスキーマ作成 (size/M: 2日)
4. [#xxx] 監視・アラート設定 (size/S: 1日)

この内容で作成してよろしいですか?

User: はい

Claude: GitHub Issueを作成しています...
        ✅ 親タスク #628 を作成しました
        ✅ 子タスク #629-632 を作成しました
        ✅ GitHub Projectsに追加しました
        ✅ 優先度とボリュームを設定しました

所要時間: 約 2-3 分

実装の詳細

カスタムコマンドのファイル構成:

~/.claude/
└── commands/
    └── create_task.md  # コマンド定義ファイル

コマンドファイルの構造を簡単に紹介します:

1. 基本設定

# 前提

- GitHub CLI (gh) を使用して Issue 作成
- MCP で Slack/Confluence の内容を読み取り
- 日本語で対話

2. 権限確認フロー

コマンド実行時に必要な権限を確認するフローを定義:

# 事前準備: 権限確認(必須)

- `gh auth status`で GitHub CLI 認証状態を確認
- 必要な権限:repo, project, read:org

3. インテリジェントなタスク分析

タスクの種類に応じて、適切な情報収集と推測を行う仕組み:

# タスク種別選択

A. 既存の親タスクに子タスクを追加
→ 親 Issue の内容を分析し、文脈を理解

B. 新しい親タスク
→ 過去の類似 Issue を検索し、参考情報として活用
→ Slack/Confluence の URL から背景情報を自動抽出

4. 自動分割ルール

# タスク分割ルール

- 各子タスクは原則として 4 日以内(size/L 以下)
- 5 日以上のタスクは必ず細分化
- 独立して着手可能な単位に分割

5. テンプレートとラベル体系

親タスク・子タスクそれぞれに適したテンプレートと、統一されたラベル体系(type/size/priority)を定義しています。

6. 親子関係の自動構築

最も重要な機能の一つが、親タスクと子タスクの関係を自動で構築することです:

# 親タスク作成時

- type/epic ラベルを付与
- 子タスクのチェックリストを自動生成
- GitHub Projects で進捗バーが表示される

# 子タスク作成時

- タイトルに[#親 Issue 番号]を自動付与
- 親タスクの Assignees を自動で引き継ぎ
- Sub-issue 機能で階層構造を設定

この仕組みにより、GitHub Projects 上で親タスクの進捗が子タスクの完了状況に応じて自動的に更新されます。

期待される効果と運用のポイント

期待される効果

まだ導入して間もないですが、以下のような効果を期待しています:

定量的な効果(想定)

  • タスク作成時間: 15-20 分 → 2-3 分(約 85%削減)
  • フォーマット統一率: 100%(テンプレート自動適用)
  • タスク粒度の最適化: AI による自動分割で、見積もり精度と進捗の可視性が向上

定性的な効果(期待)

  • 心理的ハードルの低下: 「面倒だから後で...」が減るはず
  • 情報の網羅性向上: Slack/Confluence の情報が自動的に含まれる
  • 進捗の可視化: 親子関係により、GitHub Projects で進捗バーが表示される

運用のポイント - 7 割の品質を活かす

AI が生成するタスクは完璧ではありません。しかし、それが逆に良い効果を生んでいます:

  1. 素早いスタート: 白紙から始めるより、たたき台があることで議論が活発に
  2. レビュー文化の醸成: 「AI が作ったものを確認する」という習慣が定着
  3. 継続的な改善: 使いながらテンプレートやルールを調整できる

重要なのは、AI を「完璧な自動化ツール」としてではなく、「優秀なアシスタント」として捉えることです。

まとめと今後の展望

Claude Code のカスタムコマンドを使うことで、GitHub Projects のタスク作成を効率化する仕組みを構築しました。

重要なのは、完全自動化を目指すのではなく、人間と AI が協業する仕組みを作ったことです。AI が 7 割の品質でたたき台を作り、人間が残り 3 割を補完する。この割り切りが、実用的なツールを作る秘訣だと感じています。

今後の改善点

  • テンプレートのカスタマイズ性向上: チームごとに異なるテンプレートを使えるように
  • 見積もり精度の向上: 過去の実績データを学習して、より正確な工数見積もりを
  • 他ツールとの連携強化: Jira や Notion など、他のタスク管理ツールへの対応

タスク管理の自動化は、開発生産性向上の第一歩です。ぜひ皆さんのチームでも、Claude Code を使った自動化にチャレンジしてみてください!

Discussion