こんにちは。@masatomixです。
前回の記事「仕様書を書いたらそのまま動く」— Claude Code × GitHub Issuesでタスク管理では、Claude Codeの活用方法について書きました。
おさらいすると、
- GitHub Issues をClaude Codeから操作することによって、人間はタスクを指示するだけで、調査、レポート作成、プルリク作成といった作業はすべてClaude Codeがやってくれる
- Claude Code自体の動作仕様については
CLAUDE.mdに日本語で記述しておけばよい - 動作仕様の修正も「ここ仕様通り動かないからもう少し
CLAUDE.mdに注意点を追記して」と依頼すればよい
みたいな話でした。「仕様書を書いたらそのまま動く」という体験を記事にしたつもりです。
さて今回はClaude Codeの動作仕様のキモとなる CLAUDE.md 自体を作る話。
TL;DR
前回記事のCLAUDE.mdもそこそこの分量があり、それ自体を作るのもまあ大変そうなのですが、作り方のコツをまとめると
- いきなり完璧な仕様書を書こうとしなくて大丈夫
- Claudeに質問 → ヒアリングされる → 答える → それを繰り返し... という壁打ちでOK
- 「Claude CodeとGitHub Issuesでタスク管理したい」と書き込んだだけで、Claudeが膨らませてくれて要件定義書のようになっていく
- 最終的にClaudeに
CLAUDE.mdを出力してもらえばよい- なんなら運用開始後も、Claude Codeに運用を改善してもらえばよい(
CLAUDE.mdを更新してもらうってこと)
- なんなら運用開始後も、Claude Codeに運用を改善してもらえばよい(
CLAUDE.mdを作るのは大変だけど、であれば作成もClaudeにおまかせすればいいじゃん、ってことですね。
やってみる
はじめの質問はザックリと。
とにかくはじめてみましょう。claude.ai のWEB画面にて、まずは人間がすぐ書けそうな文章、
Claude Code とGitHub Issuesをつかってタスク管理をしたいです。
とだけつぶやいてみました。Claudeはどんな返答をしてくれるでしょうか。
クリックで展開
Claude CodeとGitHub Issuesを組み合わせたタスク管理は素晴らしいアイデアですね。いくつかの実装アプローチを提案させていただきます。
実装アプローチ
1. Claude Codeでの直接操作
Claude Codeのターミナルから、GitHubのIssueを作成・更新・検索できるようにする方法です。
必要なもの:
- GitHub Personal Access Token (repo権限)
- GitHub CLIツール (
gh)、またはGitHub APIの直接利用できること:
- コードレビュー中に見つけたバグをその場でIssue化
- TODOコメントを自動的にIssueに変換
- 実装完了時に関連Issueを自動クローズ
2. ワークフロー例
# GitHub CLIのセットアップ gh auth login # Issueの作成 gh issue create --title "バグ修正: ログイン処理" --body "詳細..." # Issue一覧の確認 gh issue list --assignee @me # Issueのクローズ gh issue close 1233. Claude Codeとの統合パターン
Claude Codeを使ってコーディングしながら:
- Issue作成: 「このバグをGitHub Issueとして記録して」
- Issue参照: 「Issue #42に関連するコードを修正して」
- Progress更新: 「この作業が完了したら関連Issueを更新して」
具体的にどのような使い方を想定されていますか?
以下のような点を教えていただけると、より具体的なアドバイスができます:
- 個人プロジェクトですか、チームでの開発ですか?
- Issue作成を自動化したい場面はありますか?(例: TODOコメント検出、バグ発見時など)
- 既存のGitHubリポジトリがありますか?
- どのようなタスク管理フローをイメージされていますか?
必要であれば、GitHub API連携のサンプルスクリプトや、Claude Codeでの具体的な使用例も作成できますよ。
回答を参考に、再度質問してみる(壁打ち1回目)
Claudeからの回答にはヒアリング事項が盛り込まれていました。そのまま答えてもよいですが、今回は下記のように 「さも自分が思ったかのように」内容に盛り込んで再度質問してみました。
Claude Code とGitHub Issuesをつかってタスク管理をしたいです。具体的には下記の通りですが、まだまだ要件が決まっていないので、ヒアリングをお願いします。
- Claude Codeのターミナルから、GitHubのIssueを作成・更新・検索できるようにする
- GitHub CLIツール (
gh)を利用するでよい- 個人プロジェクトですが、複数人が担当者となる可能性はあります。
- 管理したいタスクはコーディングタスクというよりは日々のTODO管理に近いです。
- Issue作成も自動化したい。ユーザの問いかけに応じて適切なタスク作成をお願いします。
- GitHubリポジトリは、初期セットアップ時に、新規作成できるようにしたい。既存のリポジトリも選択可能に。
- タスク管理フローは、ステータスは GitHub Projectのステータスで管理するでよい。
- また成果物のドキュメントについてはGitHub Flowを用いて、IssueごとにFeatureブランチを作成し、mainブランチには直接Pushしないこと
この質問に対する返答はこちらでした。
クリックで展開
素晴らしい要件ですね!日々のTODO管理をGitHub Issues + Projectsで行い、成果物はGitHub Flowで管理するという構成ですね。いくつか確認させてください。
ヒアリング項目
1. タスクの種類と構造
- タスクにはどのような情報を含めたいですか?
- タイトル、説明文、期限、優先度、担当者など
- ラベル(bug, enhancement, documentationなど)は使いますか?
- タスクの粒度はどのくらいを想定していますか?
- 例: 「資料作成」「会議準備」「調査タスク」など
2. GitHub Projectsの設定
- Project(v2)のステータスはどのような状態を想定していますか?
- 例: Todo → In Progress → Review → Done
- それとも別の状態遷移がありますか?
- Projectは1つだけですか?それとも複数のProjectを切り替えて使いますか?
3. 自動化の範囲
Claude Codeに対してどのような指示をしたいですか?以下のような例を想定しています:
Issue作成系:
- 「明日までに企画書を作成するタスクを追加して」
- 「調査タスクを3つ作成: A, B, Cについて」
- 「この会議のアクションアイテムをIssue化して」
Issue管理系:
- 「今日やるべきタスクを教えて」
- 「優先度高のタスク一覧を表示」
- 「Issue #5の担当者を@userに変更」
- 「完了したタスクをDoneに移動」
ドキュメント作業系:
- 「Issue #10の作業ブランチを作成して」
- 「このドキュメントをコミットしてPR作成」
4. リポジトリとブランチ戦略
- mainブランチ以外に、developブランチなどは使いますか?
- PRのマージ方法の希望はありますか?(Squash merge, Merge commit, Rebaseなど)
- PRのレビュワーは設定しますか?
5. 初期セットアップ
初回実行時に以下を自動化することを想定していますが、他に必要なものはありますか?
- リポジトリ作成(or 既存選択)
- GitHub Project作成とステータス列の設定
- デフォルトラベルの作成
.github/配下の設定ファイル(Issue template, PR templateなど)6. 通知・リマインダー
- 期限が近いタスクの通知は必要ですか?
- 毎日の作業開始時に「今日のタスク」を表示したいですか?
7. 利用環境
- Claude Codeを使う環境は主にどこですか?(ローカルPC、特定のOSなど)
- GitHub CLIは既にインストール済みですか?
これらの情報をいただければ、具体的な実装方針とスクリプトを作成できます。全てに答える必要はありませんので、決まっている部分だけで大丈夫ですよ!
最初の質問より、回答・ヒアリング内容がより具体的になってきましたね。
再度、聞いてみる(壁打ち2回目)
先ほど同様、答えられるところを盛り込んで再質問。Claudeからの質問を適当に貼り付けたりしたせいでMarkdownもわりと殴りがきですが、この時点ではOKです1。
また、今回は「CLAUDE.md」も出力できるかを聞いてみることにしました。
Claude Code とGitHub Issuesをつかってタスク管理をしたいです。具体的には下記の通りですが、まだまだ要件が決まっていないので、ヒアリングをお願いします。
Claude Codeにこの要件を渡したいので、ヒアリングが完了したら CLAUDE.md等の出力をお願いします。
Claude Codeのターミナルから、GitHubのIssueを作成・更新・検索できるようにする
- GitHub CLIツール (
gh)を利用するでよい個人プロジェクトですが、複数人が担当者となる可能性はあります。
- 管理したいタスクはコーディングタスクというよりは日々のTODO管理に近いです。
Issue作成も自動化したい。ユーザの問いかけに応じて適切なタスク作成をお願いします。
GitHubリポジトリは、初期セットアップ時に、新規作成できるようにしたい。既存のリポジトリも選択可能に。
タスク管理フローは、ステータスは GitHub Projectのステータスで管理するでよい。
- また成果物のドキュメントについてはGitHub Flowを用いて、IssueごとにFeatureブランチを作成し、mainブランチには直接Pushしないこと
タスクには
- タイトル、説明文、期限、優先度、担当者 を設定
- ラベル(bug, enhancement, documentationなど) を用いる
タスクの粒度は「資料作成」「会議準備」「調査タスク」など
GitHub Projectsは一つでOK。ステータスは Todo → In Progress → Review → Done でよい。
Claude Codeには下記のような指示をしたい。
- Issue作成系:
- 「明日までに企画書を作成するタスクを追加して」
- 「調査タスクを3つ作成: A, B, Cについて」
- 「この会議のアクションアイテムをIssue化して」
- Issue管理系:
- 「今日やるべきタスクを教えて」
- 「優先度高のタスク一覧を表示」
- 「Issue #5の担当者を@userに変更」
- 「完了したタスクをDoneに移動」
- ドキュメント作業系:
- 「Issue #10の作業ブランチを作成して」
- 「このドキュメントをコミットしてPR作成」
リポジトリとブランチ戦略について。
- いったんmainブランチのみでよい
- PRのマージ方法は Rebaseを基本
- PRのレビュワーはあとからサブエージェントを入れるかもだけどいったんナシでよい
初期セットアップについて、初回実行時に以下を自動化する
- リポジトリ作成(or 既存選択)
- GitHub Project作成とステータス列の設定
- デフォルトラベルの作成
.github/配下の設定ファイル(Issue template, PR templateなど)- リポジトリの情報などは設定ファイルに出力し、.gitignoreで除外しておく。
通知・リマインダー
- 期限が近いタスクの通知は必要。
- 毎日の作業開始時に「今日のタスク」を表示したい。
最初の質問は「Claude Code とGitHub Issuesをつかってタスク管理をしたいです。」というだけだったのに、Claude が膨らませてくれてなんだか要件定義書のようになってきました。
さて返答はこちら。
クリックで展開
完璧です!要件が明確になりましたね。いくつか最終確認をさせてください。
最終確認事項
1. 期限とリマインダーの詳細
- 期限は何日前から「近い」と判断しますか?(例: 3日前、1日前)
- リマインダーの通知方法は?
- Claude Code起動時に自動表示
- 専用コマンド実行時に表示(
task-reminderのような)- 両方?
2. 優先度の管理方法
- 優先度は何段階ですか?(例: High/Medium/Low、P0/P1/P2/P3)
- 優先度はラベルで管理?それともIssueのフィールド?
3. デフォルトラベル
すでに挙げられている以外に必要なラベルはありますか?
- 現状: bug, enhancement, documentation
- 追加候補: priority:high, priority:medium, priority:low など
4. 設定ファイルの形式
- 設定ファイルの形式は何がいいですか?(JSON, YAML, TOML)
- 保存場所は
.task-config.jsonのようなファイル名でよいですか?5. 「今日のタスク」の定義
以下のどれを表示しますか?
- 期限が今日のタスク
- 担当が自分でステータスが「In Progress」のタスク
- 優先度が高く未完了のタスク
- 上記の組み合わせ
6. 複数担当者の扱い
- Issueに複数人をアサインすることはありますか?
- 担当者を指定しない場合、デフォルトで誰かにアサインしますか?
7. 会議のアクションアイテムのIssue化
- 会議メモはどこにありますか?(テキストファイル、クリップボード、口頭で指示?)
- アクションアイテムのフォーマットは決まっていますか?
- 例: 「- [ ] タスク名 (@担当者) 期限: YYYY-MM-DD」
8. PRテンプレート
PR作成時に自動で含めたい情報はありますか?
- 関連Issue番号の自動リンク
- チェックリスト(テスト済み、ドキュメント更新済みなど)
- その他
9. 実装言語・ツール
Claude Codeで利用するスクリプトの実装言語の希望はありますか?
- Shell script (bash/zsh)
- Python
- Node.js
- その他
これらが決まれば、すぐに
CLAUDE.mdを作成できます!
また「これはどうする??」と来てしまいました。
要件定義は決めなくてはいけないことが多くて、むずかしいですね。
残りはデフォルト値でやってもらう → CLAUDE.md 出力!
要件定義について、ビシっと全ての項目が決まるまでひたすら壁打ちしてもよいのですが、Claude Codeでの運用を開始したあとに修正することもできるので、今回はあえて「残りは未定だからデフォルトですすめて」とお願いしてみます。
というわけで、下記のように返答してみました。
実装言語の決まりはなく、むしろ自然言語でやり取りをしたいので特別なプログラミング言語は使わないで実装してもらえますか?
その他は、上記の質問はいったんClaude が考えるデフォルト値でよいです!
さてどうなるかな。
以下回答です。
理解しました!自然言語でのやり取りを重視するということですね。
つまり、PythonやShellスクリプトなどの実装は不要で、Claude Codeに自然言語で指示を出すことで、Claude CodeがGitHub CLIコマンド(
ghコマンド)を直接実行する形式ということですね。
ちゃんとこちらの気持ちを汲んでくれてて、なんだかステキです。
Claude Codeからの返答の続き。
確認させてください
イメージとしては以下のような使い方でしょうか?
ユーザー → Claude Codeへの指示:
「明日までに企画書を作成するタスクを追加して」Claude Codeが実行:
gh issue create \ --title "企画書作成" \ --body "企画書を作成する" \ --label "documentation,priority:high" \ --assignee @me \ --milestone "2024-12-15"このような形で、Claude Codeが自然言語を解釈して適切な
ghコマンドを実行する、という理解で合っていますか?であれば、要件定義書には:
- スクリプトファイルは作成しない
- Claude Codeへの指示例とそれに対応するghコマンドの例を記載
- Claude Codeが参照するコマンドパターン集を用意
という方針で作成します。この理解で正しいでしょうか?
じつはいちど、「実装言語もおまかせ」で返答したら、こちらの指示に対してPythonで処理が実行されるようなCLAUDE.mdを作成してくれました。しかしながら上記の「Claude Codeが自然言語を解釈して適切なghコマンドを実行する」方がClaude Code っぽい(?) 気がしたので、いったん上記の方針でやってもらいます。
上記の理解で正しいです。
Claudeくん、がんばってくれるでしょうか。
完璧です!では自然言語ベースの要件定義書を作成しますね。
CLAUDE.mdにまとめました。内容は以下の通りです:
📋 含まれる内容
概要と基本方針 - 自然言語ベースのアプローチ
前提条件 - GitHub CLIのセットアップ
タスク管理の構成 - Project、ラベル、Issue構造
自然言語指示とコマンドの対応
- 実際の使い方
- 初期セットアップ
- タスク作成(単一・複数・会議メモから)
- タスク確認・表示
- タスク更新
- ブランチ・PR操作
- リマインダー・サマリー
クイックリファレンス - よく使うコマンド集
使い方のコツ - 効果的な指示方法
トラブルシューティング
🎯 特徴
- プログラミング言語不要
- 全て
ghコマンドで実装- 自然言語の指示例とコマンドを対応付け
- Claude Codeがそのまま実行できる形式
このファイルをClaude Codeに渡せば、すぐにタスク管理を開始できます!
うまくいったようです!
この時点でのCLAUDE.mdの全体像は長すぎるため割愛しますが、こちらが書いた殴り書きのMarkdownではなく、ちゃんときれいなフォーマットで出力してくれました。すごい。
また内容についても、人間がツギハギでつくったCLAUDE.mdより、Claude Codeが読みやすいだろう内容に整形してくれているのも安心感があります。
ファイル分割してもらう
さて大量の記述がなされたCLAUDE.mdが出力されたのですが、ファイル分割されていないと人間が仕様を把握するのが大変なので、下記の通り分割をお願いしました2。
ファイルが長すぎるので、メイン部(CLAUDE.md)とか、セットアップ用ファイルとかワークフロー用とか、ファイルを分けることはできるかな。
人間も機械(Claude Code)も読みやすいファイル構造になるかな。
もちろんです!ファイルを目的別に分割しますね。
作業中...
メインファイルを簡潔にしました!次に各ドキュメントを作成しますね。
作業中...
完成しました!4つのドキュメントに分割しました:
📁 作成したファイル
1. CLAUDE.md (メインファイル)
- システム概要
- クイックスタート
- 自然言語指示の例
- システム構成
- 各ドキュメントへのリンク
2. SETUP.md (初期セットアップ)
- 前提条件とツールインストール
- リポジトリ作成手順
- Project、ラベル、テンプレート設定
- セットアップ確認方法
- トラブルシューティング
3. WORKFLOW.md (日常的なワークフロー)
- 朝の作業開始時の確認
- タスク作成パターン
- タスク更新・管理
- ブランチ作業とPR作成
- リマインダーとサマリー
- ベストプラクティス
4. COMMANDS.md (コマンドリファレンス)
- Issue操作コマンド
- PR操作コマンド
- Project/Label操作
- よく使うパターン集
- トラブルシューティング
- クイックリファレンス
🎯 使い方
- 最初に読む: CLAUDE.md(概要把握)
- セットアップ: SETUP.mdに従って初期設定
- 日常使用: WORKFLOW.mdを参考に運用
- 困ったら: COMMANDS.mdでコマンド確認
これらのファイルをClaude Codeに渡せば、すぐにタスク管理を開始できます!
すばらしいですね。ファイル分割も人間・機械双方が読みやすくなっていそう。よい感じです。
ファイル群をダウンロード
では実際のファイルを見てみます、の前にダウンロードを依頼。
全部ダウンロードしたいです
さて。
全てのファイルをダウンロードできるように、まとめて提供しますね!
各ファイルを個別にダウンロードしていただくか、以下のように一つずつ保存してください。
📥 ダウンロード手順
方法1: 個別にダウンロード
現在表示されている各Artifactの右上にあるダウンロードボタン(↓アイコン)をクリックしてダウンロードできます。
方法2: ZIPファイルとして提供
全てのファイルをまとめたマークダウン形式で提供します。全てのファイルを用意しました!
📥 ダウンロード方法
最も簡単な方法
画面上に表示されている各Artifactの**右上のダウンロードボタン(↓アイコン)**をクリックしてください:
- CLAUDE.md - メインファイル
- SETUP.md - セットアップガイド
- WORKFLOW.md - ワークフローガイド
- COMMANDS.md - コマンドリファレンス
ファイル配置
ダウンロード後、以下のように配置してください:
task-management/ ├── CLAUDE.md └── docs/ ├── SETUP.md ├── WORKFLOW.md └── COMMANDS.md次のステップ
- 全ファイルをダウンロード
docs/ディレクトリを作成- 各ファイルを適切な場所に配置
- CLAUDE.md から読み始める
- Claude Codeでタスク管理開始!
ダウンロードできない場合は教えてください。別の方法を提案します!
ダウンロードできたので、みてみましょう。
成果物を確認する
ファイル1: CLAUDE.md
クリックで展開
# GitHub Issues タスク管理システム
## 📋 概要
Claude Codeとの自然言語対話でGitHub Issuesを使った日々のTODO管理を実現します。
プログラミング言語は使用せず、GitHub CLI (`gh`コマンド)を直接実行する方式です。
### 基本方針
- **自然言語でのやり取り**を最優先
- ユーザーの指示をClaude Codeが解釈し、適切な`gh`コマンドを実行
- スクリプトファイルは作成しない
- GitHub CLIの機能をフル活用
---
## 📁 ドキュメント構成
このシステムは以下のドキュメントで構成されています:
### コアドキュメント
1. **CLAUDE.md** (このファイル) - システム概要
2. **[SETUP.md](docs/SETUP.md)** - 初期セットアップ手順
3. **[WORKFLOW.md](docs/WORKFLOW.md)** - 日常的なタスク管理フロー
4. **[COMMANDS.md](docs/COMMANDS.md)** - ghコマンドリファレンス
### 設定ファイル
- `.task-config.json` - システム設定(自動生成推奨)
- `.github/ISSUE_TEMPLATE/task.md` - Issueテンプレート
- `.github/PULL_REQUEST_TEMPLATE.md` - PRテンプレート
---
## 🚀 クイックスタート
### 1. 前提条件の確認
```bash
# GitHub CLIのバージョン確認
gh --version # 2.0.0以上
# 認証状態確認
gh auth status
```
認証が必要な場合:
```bash
gh auth login
```
### 2. 初期セットアップ
Claude Codeに以下のように指示:
```
「GitHub Issuesでタスク管理システムをセットアップしたい。
task-managementという名前でプライベートリポジトリを作成して、
Projectとラベルも設定して」
```
詳細は **[SETUP.md](docs/SETUP.md)** を参照
### 3. 最初のタスク作成
```
「明日までに企画書を作成するタスクを追加して。優先度は高で」
```
---
## 💬 自然言語指示の例
### タスク作成
```
「明日までに企画書を作成するタスクを追加して」
「調査タスクを3つ作成: A, B, Cについて」
「この会議のアクションアイテムをIssue化して」
```
### タスク確認
```
「今日やるべきタスクを教えて」
「優先度高のタスク一覧を表示」
「期限が近いタスクを教えて」
```
### タスク操作
```
「Issue #5の担当者を@userに変更」
「完了したタスクをクローズして」
```
### ブランチ・PR
```
「Issue #10の作業ブランチを作成して」
「このドキュメントをコミットしてPR作成」
```
---
## 📊 システム構成
### リポジトリ設定
- **ブランチ戦略**: GitHub Flow
- `main`: 本番ブランチ(直接push禁止)
- `feature/issue-{number}-{description}`: 作業ブランチ
- **PRマージ方法**: Rebase
- **レビュワー**: 未設定(将来的に追加可能)
### GitHub Project
- **Project数**: 1つ
- **ステータス列**: Todo → In Progress → Review → Done
### ラベル構成
**タイプ別:**
- `bug` - バグ修正
- `enhancement` - 機能追加・改善
- `documentation` - ドキュメント作成
**優先度別:**
- `priority:high` - 高優先度
- `priority:medium` - 中優先度
- `priority:low` - 低優先度
### タスク(Issue)の構造
- **タイトル**: タスクの概要
- **説明文**: タスクの詳細
- **期限**: Body内に記載(YYYY-MM-DD形式)
- **優先度**: ラベルで管理
- **担当者**: Assignee(デフォルト: 自分)
- **粒度**: 資料作成、会議準備、調査タスクなど
---
## 📚 詳細ドキュメント
### [SETUP.md](docs/SETUP.md)
初期セットアップの詳細手順:
- リポジトリ作成(新規/既存)
- GitHub Project作成
- ラベル設定
- テンプレート作成
- 設定ファイル生成
### [WORKFLOW.md](docs/WORKFLOW.md)
日常的なタスク管理フロー:
- 朝の作業開始(今日のタスク確認)
- タスク作成パターン
- タスク更新・ステータス管理
- ブランチ作業とPR作成
- 週次レビュー
### [COMMANDS.md](docs/COMMANDS.md)
ghコマンドのリファレンス:
- Issue操作コマンド一覧
- PR操作コマンド一覧
- よく使うコマンドパターン
- トラブルシューティング
---
## 🎯 主な機能
### ✅ 実装済み(即座に利用可能)
- Issue作成・更新・表示
- ラベル管理
- 担当者管理
- ブランチ作成
- PR作成・マージ
- 期限管理(Body内記載)
- リマインダー(手動実行)
### ⚠️ 制限事項
- **Projectステータス更新**: CLI未対応(Web UIまたはGraphQL API必要)
- **期限フィールド**: GitHub Issues標準機能にないため、Body内に記載
- **自動リマインダー**: 手動実行が必要(GitHub Actionsで自動化可能)
---
## 💡 使い方のコツ
### Claude Codeへの指示方法
**✅ 良い指示例:**
```
「明日までに企画書作成のタスクを作って、優先度は高で」
「Issue #23の担当者を@aliceに変更して」
「今日のタスクを確認して」
```
**❌ 避けるべき指示:**
```
「タスクを作って」(情報不足)
「このタスクを更新して」(Issue番号不明)
「来週まで」(期限が曖昧)
```
### ワークフロー推奨パターン
1. **朝**: 「今日のタスクを確認して」
2. **タスク作成**: 「[内容]のタスクを作成、期限は[日付]、優先度は[level]」
3. **作業開始**: 「Issue #[番号]の作業ブランチを作成して」
4. **作業完了**: 「変更をコミットしてIssue #[番号]のPRを作成して」
5. **週末**: 「今週完了したタスクと未完了タスクのサマリーを作って」
---
## 🔧 トラブルシューティング
### GitHub CLI認証エラー
```bash
gh auth status
gh auth logout
gh auth login
```
### リポジトリが見つからない
```bash
gh repo list
cd /path/to/repo
```
### Project番号の確認
```bash
gh project list --owner @me
```
詳細は **[COMMANDS.md](docs/COMMANDS.md)** のトラブルシューティングセクションを参照
---
## 📖 次のステップ
1. **[SETUP.md](docs/SETUP.md)** を読んで初期セットアップを実行
2. **[WORKFLOW.md](docs/WORKFLOW.md)** で日常の使い方を確認
3. **[COMMANDS.md](docs/COMMANDS.md)** でコマンドを確認
4. Claude Codeで実際にタスク管理を開始
---
## 🚀 実装ロードマップ
### Phase 1: 基本機能(現在)
- ✅ Issue CRUD操作
- ✅ ラベル・担当者管理
- ✅ ブランチ・PR操作
- ✅ 期限管理(Body内)
### Phase 2: 拡張機能(要実装)
- ⚠️ Projectステータス自動更新
- ⚠️ 自動リマインダー
- ⚠️ レポート自動生成
### Phase 3: 将来の改善
- GitHub Actions連携
- Slack通知連携
- サブエージェントによるレビュー
---
## 📄 ライセンス
MIT License
## 🤝 コントリビューション
Issue/PRを歓迎します
---
**すぐに始めるには**: [SETUP.md](docs/SETUP.md) へ
ファイル2: docs/SETUP.md
クリックで展開
# セットアップガイド
## 📋 前提条件
### 必須ツール
```bash
# GitHub CLI(2.0.0以上)
gh --version
# Git(2.30.0以上)
git --version
```
### GitHub CLI認証
```bash
# 認証状態確認
gh auth status
# 未認証の場合
gh auth login
# → GitHub.com を選択
# → HTTPS を選択
# → Login with a web browser
```
---
## 🚀 初期セットアップ
### Step 1: リポジトリ作成
#### 新規リポジトリを作成する場合
**Claude Codeへの指示:**
```
「task-managementという名前でプライベートリポジトリを作成して」
```
**実行されるコマンド:**
```bash
gh repo create task-management --private --clone
cd task-management
```
#### 既存リポジトリを使う場合
**Claude Codeへの指示:**
```
「既存のmy-tasksリポジトリを使いたい」
```
**実行されるコマンド:**
```bash
gh repo clone my-tasks
cd my-tasks
```
---
### Step 2: GitHub Project作成
**Claude Codeへの指示:**
```
「Daily Tasksという名前のProjectを作成して」
```
**実行されるコマンド:**
```bash
gh project create "Daily Tasks" --owner @me
```
**Project番号の確認:**
```bash
gh project list --owner @me
```
出力例:
```
NUMBER TITLE STATE ID
1 Daily Tasks open PVT_xxx
```
#### ステータスフィールドの設定
**重要:** CLIではステータスフィールドを設定できないため、Web UIで設定します。
**Claude Codeへの指示:**
```
「ProjectのステータスフィールドをWeb UIで設定する手順を教えて」
```
**手順:**
1. https://github.com/users/{username}/projects/{number}/settings にアクセス
2. "Fields" → "New field" をクリック
3. Field name: `Status`
4. Field type: `Single select`
5. Options を追加:
- `Todo`
- `In Progress`
- `Review`
- `Done`
6. "Save" をクリック
---
### Step 3: ラベル作成
**Claude Codeへの指示:**
```
「タスク管理用のラベルを作成して: bug, enhancement, documentation,
priority:high, priority:medium, priority:low」
```
**実行されるコマンド:**
```bash
# タイプ別ラベル
gh label create "bug" \
--color "d73a4a" \
--description "バグ修正"
gh label create "enhancement" \
--color "a2eeef" \
--description "機能追加・改善"
gh label create "documentation" \
--color "0075ca" \
--description "ドキュメント作成"
# 優先度別ラベル
gh label create "priority:high" \
--color "b60205" \
--description "高優先度"
gh label create "priority:medium" \
--color "fbca04" \
--description "中優先度"
gh label create "priority:low" \
--color "0e8a16" \
--description "低優先度"
```
**ラベル確認:**
```bash
gh label list
```
---
### Step 4: Issueテンプレート作成
**Claude Codeへの指示:**
```
「タスク用のIssueテンプレートを作成して」
```
**実行されるコマンド:**
```bash
mkdir -p .github/ISSUE_TEMPLATE
cat > .github/ISSUE_TEMPLATE/task.md << 'EOF'
---
name: タスク
about: 日々のTODO管理用
title: ''
labels: ''
assignees: ''
---
## 📋 タスク概要
<!-- 何をするタスクか簡潔に記載 -->
## 📝 詳細
<!-- 必要に応じて詳細を記載 -->
## ✅ チェックリスト
- [ ]
- [ ]
- [ ]
## 📅 期限
期限: YYYY-MM-DD
## 🏷️ 優先度
<!-- high / medium / low -->
EOF
git add .github/ISSUE_TEMPLATE/
git commit -m "Add issue template"
git push
```
---
### Step 5: PRテンプレート作成
**Claude Codeへの指示:**
```
「PRテンプレートを作成して」
```
**実行されるコマンド:**
```bash
cat > .github/PULL_REQUEST_TEMPLATE.md << 'EOF'
## 概要
<!-- このPRの目的を記載 -->
## 関連Issue
Closes #
## 変更内容
<!-- 主な変更点を箇条書き -->
-
## チェックリスト
- [ ] ドキュメントを更新した
- [ ] セルフレビューを実施した
EOF
git add .github/PULL_REQUEST_TEMPLATE.md
git commit -m "Add PR template"
git push
```
---
### Step 6: 設定ファイル作成
**Claude Codeへの指示:**
```
「設定ファイルを作成して、リポジトリ情報とProject番号を保存。
.gitignoreにも追加して」
```
**実行されるコマンド:**
```bash
# リポジトリ名とユーザー名を取得
REPO_NAME=$(gh repo view --json nameWithOwner -q .nameWithOwner)
USERNAME=$(gh api user -q .login)
# 設定ファイル作成
cat > .task-config.json << EOF
{
"repository": "$REPO_NAME",
"project_number": 1,
"default_assignee": "$USERNAME",
"reminder_days": 3,
"labels": {
"bug": "d73a4a",
"enhancement": "a2eeef",
"documentation": "0075ca",
"priority:high": "b60205",
"priority:medium": "fbca04",
"priority:low": "0e8a16"
}
}
EOF
# .gitignoreに追加
echo "" >> .gitignore
echo "# Task Management Config" >> .gitignore
echo ".task-config.json" >> .gitignore
git add .gitignore
git commit -m "Add task config to gitignore"
git push
```
---
## ✅ セットアップ確認
### 設定内容の確認
**Claude Codeへの指示:**
```
「セットアップが正しく完了したか確認して」
```
**実行されるコマンド:**
```bash
echo "📊 セットアップ確認"
echo "━━━━━━━━━━━━━━━━━━━━"
# リポジトリ確認
echo ""
echo "✓ リポジトリ:"
gh repo view --json nameWithOwner,visibility -q '" " + .nameWithOwner + " (" + .visibility + ")"'
# Project確認
echo ""
echo "✓ Project:"
gh project list --owner @me --format json | jq -r '.[] | " #\(.number) \(.title)"'
# ラベル確認
echo ""
echo "✓ ラベル:"
gh label list | head -6
# テンプレート確認
echo ""
echo "✓ テンプレート:"
ls -1 .github/ISSUE_TEMPLATE/ .github/PULL_REQUEST_TEMPLATE.md 2>/dev/null | sed 's/^/ /'
# 設定ファイル確認
echo ""
echo "✓ 設定ファイル:"
if [ -f .task-config.json ]; then
echo " .task-config.json exists"
cat .task-config.json | jq -r '" Repository: " + .repository'
cat .task-config.json | jq -r '" Project: #" + (.project_number | tostring)'
else
echo " ⚠️ .task-config.json not found"
fi
```
---
## 🔄 既存リポジトリへの追加セットアップ
すでにリポジトリがある場合の追加手順:
**Claude Codeへの指示:**
```
「既存のリポジトリにタスク管理機能を追加したい。
Projectとラベルとテンプレートを追加して」
```
**実行手順:**
1. リポジトリに移動
2. Step 2(Project作成)から実行
3. Step 3〜6を順次実行
---
## 🎯 セットアップ完了後の最初のアクション
### 最初のタスクを作成
**Claude Codeへの指示:**
```
「セットアップ完了を記録するタスクを作成して」
```
**実行されるコマンド:**
```bash
gh issue create \
--title "タスク管理システムセットアップ完了" \
--body "初期セットアップが完了しました" \
--label "documentation" \
--assignee @me
```
### 今日のタスクを確認
**Claude Codeへの指示:**
```
「今日のタスクを確認して」
```
これで次のワークフローに進めます → **[WORKFLOW.md](WORKFLOW.md)**
---
## 🔧 トラブルシューティング
### GitHub CLI認証エラー
```bash
# 認証状態確認
gh auth status
# エラーが出る場合は再認証
gh auth logout
gh auth login
```
### Project IDが取得できない
```bash
# Project一覧を確認
gh project list --owner @me --format json
# Web UIでも確認
# https://github.com/users/{username}/projects
```
### ラベル作成でエラー
```bash
# 既存のラベルを確認
gh label list
# 既にある場合は削除してから作成
gh label delete "priority:high"
gh label create "priority:high" --color "b60205"
```
### push時の権限エラー
```bash
# リモートURLを確認
git remote -v
# SSH/HTTPSを確認し、必要に応じて変更
git remote set-url origin https://github.com/username/repo.git
```
---
## 📝 設定ファイルの詳細
### .task-config.json の項目
```json
{
"repository": "username/repo-name", // リポジトリ名
"project_number": 1, // Project番号
"default_assignee": "username", // デフォルト担当者
"reminder_days": 3, // リマインダー日数
"labels": { // ラベルの色定義
"bug": "d73a4a",
"enhancement": "a2eeef",
"documentation": "0075ca",
"priority:high": "b60205",
"priority:medium": "fbca04",
"priority:low": "0e8a16"
}
}
```
この設定ファイルは参照用で、Claude Codeが直接読み込む必要はありません。
---
## 💡 Tips
### 複数プロジェクトの管理
異なるディレクトリで別々のプロジェクトを管理:
```bash
~/projects/work-tasks/
~/projects/personal-tasks/
~/projects/study-tasks/
```
各ディレクトリで独立してセットアップを実行します。
### チーム環境での初期設定
チームで使う場合:
1. 1人がリポジトリとProjectをセットアップ
2. 他のメンバーは既存リポジトリをクローン
3. Projectへのアクセス権限を付与
---
**次のステップ**: [WORKFLOW.md](WORKFLOW.md) で日常的な使い方を確認
ファイル3: docs/WORKFLOW.md
クリックで展開
# タスク管理ワークフロー
## 📅 日常的な使い方
### 朝の作業開始時
**Claude Codeへの指示:**
```
「今日のタスクを確認して」
```
**実行されるコマンド:**
```bash
TODAY=$(date '+%Y-%m-%d')
echo "🌅 今日のタスク ($TODAY)"
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━"
echo ""
# 今日期限のタスク
echo "📌 今日期限:"
gh issue list --state open --json number,title,body,labels \
--jq ".[] | select(.body | contains(\"$TODAY\")) | \" #\(.number) \(.title)\""
# 自分が担当のオープンタスク
echo ""
echo "🚀 自分のタスク:"
gh issue list --assignee @me --state open --limit 10
# 高優先度タスク
echo ""
echo "⚠️ 高優先度:"
gh issue list --label priority:high --state open --limit 5
```
---
## ✅ タスクの作成
### 基本的なタスク作成
**Claude Codeへの指示:**
```
「明日までに企画書を作成するタスクを追加して。優先度は高で」
```
**実行されるコマンド:**
```bash
TOMORROW=$(date -v+1d '+%Y-%m-%d' 2>/dev/null || date -d '+1 day' '+%Y-%m-%d')
gh issue create \
--title "企画書作成" \
--body "企画書を作成する
期限: $TOMORROW" \
--label "documentation,priority:high" \
--assignee @me
```
### 詳細を指定したタスク作成
**Claude Codeへの指示:**
```
「会議資料準備のタスクを作って。
詳細: 四半期レビュー用の資料を準備
期限: 12月20日
担当: @alice
優先度: 中」
```
**実行されるコマンド:**
```bash
gh issue create \
--title "会議資料準備" \
--body "四半期レビュー用の資料を準備
期限: 2024-12-20" \
--label "documentation,priority:medium" \
--assignee alice
```
### 複数タスクの一括作成
**Claude Codeへの指示:**
```
「次の3つの調査タスクを作成して:
1. 市場調査
2. 競合分析
3. ユーザーインタビュー
全て来週金曜日が期限で、優先度は中」
```
**実行されるコマンド:**
```bash
DEADLINE="2024-12-20"
gh issue create \
--title "市場調査" \
--body "期限: $DEADLINE" \
--label "priority:medium" \
--assignee @me
gh issue create \
--title "競合分析" \
--body "期限: $DEADLINE" \
--label "priority:medium" \
--assignee @me
gh issue create \
--title "ユーザーインタビュー" \
--body "期限: $DEADLINE" \
--label "priority:medium" \
--assignee @me
```
### 会議メモからタスク作成
**Claude Codeへの指示:**
```
「この会議メモからアクションアイテムをIssue化して:
- 企画書作成 (@user) 期限: 12/20
- データ収集 (@alice) 期限: 12/18 優先度: 高
- レビュー依頼」
```
**実行されるコマンド:**
```bash
# 1つ目
gh issue create \
--title "企画書作成" \
--body "期限: 2024-12-20" \
--assignee user
# 2つ目
gh issue create \
--title "データ収集" \
--body "期限: 2024-12-18" \
--label "priority:high" \
--assignee alice
# 3つ目
gh issue create \
--title "レビュー依頼" \
--assignee @me
```
---
## 🔍 タスクの確認
### 一覧表示
**Claude Codeへの指示:**
```
「全てのオープンなタスクを表示して」
```
**実行されるコマンド:**
```bash
gh issue list --state open
```
**Claude Codeへの指示:**
```
「優先度高のタスク一覧を表示して」
```
**実行されるコマンド:**
```bash
gh issue list --label priority:high --state open
```
**Claude Codeへの指示:**
```
「自分が担当のタスクを表示して」
```
**実行されるコマンド:**
```bash
gh issue list --assignee @me --state open
```
### タスク詳細
**Claude Codeへの指示:**
```
「Issue #23の詳細を教えて」
```
**実行されるコマンド:**
```bash
gh issue view 23
```
### 期限が近いタスク
**Claude Codeへの指示:**
```
「期限が3日以内のタスクを教えて」
```
**実行されるコマンド:**
```bash
TODAY=$(date '+%Y-%m-%d')
THREE_DAYS=$(date -v+3d '+%Y-%m-%d' 2>/dev/null || date -d '+3 days' '+%Y-%m-%d')
echo "⚠️ 期限が近いタスク (3日以内):"
gh issue list --state open --json number,title,body \
--jq ".[] | select(.body | contains(\"期限:\")) |
select(.body | capture(\"期限: (?<date>[0-9-]+)\").date <= \"$THREE_DAYS\") |
\" #\(.number) \(.title) - \(.body | capture(\"期限: (?<date>[0-9-]+)\").date)\""
```
---
## 🔄 タスクの更新
### 担当者変更
**Claude Codeへの指示:**
```
「Issue #23の担当者を@aliceに変更して」
```
**実行されるコマンド:**
```bash
gh issue edit 23 --add-assignee alice
```
**Claude Codeへの指示:**
```
「Issue #23を自分にアサインして」
```
**実行されるコマンド:**
```bash
gh issue edit 23 --add-assignee @me
```
### 期限変更
**Claude Codeへの指示:**
```
「Issue #23の期限を12月25日に変更して」
```
**実行されるコマンド:**
```bash
# 現在のBodyを取得
CURRENT_BODY=$(gh issue view 23 --json body -q .body)
# 期限部分を更新
NEW_BODY=$(echo "$CURRENT_BODY" | sed 's/期限: [0-9-]*/期限: 2024-12-25/')
# Issue更新
gh issue edit 23 --body "$NEW_BODY"
```
### 優先度変更
**Claude Codeへの指示:**
```
「Issue #23の優先度を高に変更して」
```
**実行されるコマンド:**
```bash
# 既存の優先度ラベルを削除
gh issue edit 23 --remove-label priority:medium --remove-label priority:low
# 新しい優先度を追加
gh issue edit 23 --add-label priority:high
```
### ラベル追加・削除
**Claude Codeへの指示:**
```
「Issue #23にbugラベルを追加して」
```
**実行されるコマンド:**
```bash
gh issue edit 23 --add-label bug
```
**Claude Codeへの指示:**
```
「Issue #23からenhancementラベルを削除して」
```
**実行されるコマンド:**
```bash
gh issue edit 23 --remove-label enhancement
```
### コメント追加
**Claude Codeへの指示:**
```
「Issue #23に進捗報告: 50%完了しました」
```
**実行されるコマンド:**
```bash
gh issue comment 23 --body "進捗報告: 50%完了しました"
```
---
## 🌿 ブランチ作業フロー
### 作業ブランチ作成
**Claude Codeへの指示:**
```
「Issue #23の作業ブランチを作成して」
```
**実行されるコマンド:**
```bash
# Issueタイトルを取得
ISSUE_TITLE=$(gh issue view 23 --json title -q .title)
# タイトルをslug化
SLUG=$(echo "$ISSUE_TITLE" | tr '[:upper:]' '[:lower:]' | tr ' ' '-' | sed 's/[^a-z0-9-]//g')
# ブランチ作成
git checkout main
git pull origin main
git checkout -b "feature/issue-23-$SLUG"
echo "✓ ブランチ作成: feature/issue-23-$SLUG"
```
### 作業とコミット
**Claude Codeへの指示:**
```
「変更をコミットして。メッセージは『企画書の初版作成』」
```
**実行されるコマンド:**
```bash
git add .
git commit -m "企画書の初版作成"
```
### PR作成
**Claude Codeへの指示:**
```
「Issue #23のPRを作成して」
```
**実行されるコマンド:**
```bash
# 現在のブランチ名を取得
BRANCH=$(git branch --show-current)
# push
git push origin $BRANCH
# PR作成
gh pr create \
--title "企画書作成" \
--body "Closes #23
## 変更内容
- 企画書の初版を作成
## チェックリスト
- [x] ドキュメントを更新した
- [x] セルフレビューを実施した" \
--base main \
--head $BRANCH
```
### ドラフトPR作成
**Claude Codeへの指示:**
```
「Issue #23のドラフトPRを作成して」
```
**実行されるコマンド:**
```bash
BRANCH=$(git branch --show-current)
git push origin $BRANCH
gh pr create \
--title "企画書作成 (WIP)" \
--body "Closes #23" \
--base main \
--draft
```
### PRマージ
**Claude Codeへの指示:**
```
「PR #45をRebaseマージして」
```
**実行されるコマンド:**
```bash
gh pr merge 45 --rebase --delete-branch
```
---
## 📊 ステータス管理
### コメントでステータス記録
GitHub Projects v2のステータスはCLIで直接更新できないため、コメントで記録します。
**Claude Codeへの指示:**
```
「Issue #23を作業中に変更して」
```
**実行されるコマンド:**
```bash
gh issue comment 23 --body "ステータス: In Progress"
```
**Claude Codeへの指示:**
```
「Issue #23をレビュー待ちに変更して」
```
**実行されるコマンド:**
```bash
gh issue comment 23 --body "ステータス: Review"
```
### Issueクローズ
**Claude Codeへの指示:**
```
「Issue #23を完了としてクローズして」
```
**実行されるコマンド:**
```bash
gh issue close 23 --comment "タスク完了しました"
```
**Claude Codeへの指示:**
```
「完了したタスクをクローズして: #23, #24, #25」
```
**実行されるコマンド:**
```bash
gh issue close 23 --comment "完了"
gh issue close 24 --comment "完了"
gh issue close 25 --comment "完了"
```
---
## 🔔 リマインダー・サマリー
### 期限リマインダー
**Claude Codeへの指示:**
```
「期限が近いタスクをリマインドして」
```
**実行されるコマンド:**
```bash
TODAY=$(date '+%Y-%m-%d')
THREE_DAYS=$(date -v+3d '+%Y-%m-%d' 2>/dev/null || date -d '+3 days' '+%Y-%m-%d')
echo "🔔 リマインダー ($TODAY)"
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━"
echo ""
echo "⚠️ 期限が近いタスク (3日以内):"
gh issue list --state open --json number,title,body,labels \
--jq ".[] | select(.body | contains(\"期限:\")) |
select(.body | capture(\"期限: (?<date>[0-9-]+)\").date <= \"$THREE_DAYS\") |
\" #\(.number) \(.title)
期限: \(.body | capture(\"期限: (?<date>[0-9-]+)\").date)
[\(.labels | map(select(.name | startswith(\"priority:\"))) | map(.name) | join(\", \"))]
\""
```
### 週次サマリー
**Claude Codeへの指示:**
```
「今週完了したタスクと未完了タスクのサマリーを作って」
```
**実行されるコマンド:**
```bash
WEEK_AGO=$(date -v-7d '+%Y-%m-%d' 2>/dev/null || date -d '-7 days' '+%Y-%m-%d')
TODAY=$(date '+%Y-%m-%d')
echo "📊 週次サマリー ($WEEK_AGO 〜 $TODAY)"
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
echo ""
echo "✅ 今週完了したタスク:"
gh issue list --state closed --search "closed:>=$WEEK_AGO" \
--json number,title,closedAt \
--jq '.[] | " #\(.number) \(.title) (完了: \(.closedAt[:10]))"'
echo ""
echo "📝 未完了タスク:"
gh issue list --state open \
--json number,title,labels \
--jq '.[] | " #\(.number) \(.title) [\(.labels | map(select(.name | startswith("priority:"))) | map(.name) | join(", "))]"'
echo ""
echo "📈 統計:"
OPEN_COUNT=$(gh issue list --state open --json number | jq '. | length')
CLOSED_COUNT=$(gh issue list --state closed --search "closed:>=$WEEK_AGO" --json number | jq '. | length')
echo " 未完了: $OPEN_COUNT件"
echo " 今週完了: $CLOSED_COUNT件"
```
---
## 🎯 ベストプラクティス
### 効果的な指示の出し方
**✅ 良い例:**
```
「明日までに企画書作成のタスクを作って、優先度は高、担当は@alice」
「Issue #23の期限を12月25日に変更して」
「今日のタスクを確認して」
```
**❌ 避けるべき例:**
```
「タスクを作って」(情報不足)
「このタスクを更新して」(Issue番号不明)
「来週まで」(期限が曖昧)
```
### タスク管理のコツ
1. **毎朝の確認**: 「今日のタスクを確認して」
2. **期限の明確化**: 具体的な日付を指定
3. **優先度の設定**: high/medium/lowを適切に
4. **ステータス更新**: コメントで記録
5. **週次レビュー**: 金曜日に振り返り
### ブランチ運用のコツ
1. **Issue毎にブランチ**: 必ずIssueから作成
2. **こまめなコミット**: 作業単位でコミット
3. **mainへ直接push禁止**: 必ずPR経由
4. **PRマージ後**: 関連Issueを必ずクローズ
---
## 📅 週次レビューの例
### 金曜日の振り返り
**Claude Codeへの指示:**
```
「週次レビューをしたい。今週完了したタスク、未完了タスク、
来週の優先度高タスクを教えて」
```
**実行されるコマンド:**
```bash
WEEK_AGO=$(date -v-7d '+%Y-%m-%d' 2>/dev/null || date -d '-7 days' '+%Y-%m-%d')
echo "📊 週次レビュー"
echo ""
echo "✅ 今週完了:"
gh issue list --state closed --search "closed:>=$WEEK_AGO" --limit 10
echo ""
echo "📝 未完了:"
gh issue list --state open --limit 10
echo ""
echo "⚠️ 来週の高優先度:"
gh issue list --label priority:high --state open --limit 5
```
---
## 💡 活用シーン別の指示例
### 朝のルーティン
```
「今日のタスクを確認して」
「期限が近いタスクをリマインドして」
```
### タスク作成時
```
「[内容]のタスクを作成、期限は[日付]、優先度は[level]」
```
### 作業開始時
```
「Issue #[番号]の作業ブランチを作成して」
「Issue #[番号]を作業中に変更して」
```
### 作業完了時
```
「変更をコミットしてIssue #[番号]のPRを作成して」
「PR #[番号]をマージして」
```
### 週末の振り返り
```
「今週のサマリーを作って」
「来週の高優先度タスクを教えて」
```
---
**次のステップ**: [COMMANDS.md](COMMANDS.md) でコマンド詳細を確認
ファイル4: docs/COMMANDS.md
クリックで展開
# コマンドリファレンス
## 📚 目次
- [Issue操作](#issue操作)
- [PR操作](#pr操作)
- [Project操作](#project操作)
- [Label操作](#label操作)
- [よく使うパターン](#よく使うパターン)
- [トラブルシューティング](#トラブルシューティング)
---
## Issue操作
### Issue作成
```bash
# 基本形
gh issue create
# オプション指定
gh issue create \
--title "タスクタイトル" \
--body "タスクの説明" \
--label "bug,priority:high" \
--assignee @me
# マイルストーン指定
gh issue create \
--title "タスク" \
--milestone "v1.0"
```
**主なオプション:**
- `--title, -t`: タイトル
- `--body, -b`: 説明文
- `--label, -l`: ラベル(カンマ区切りで複数指定)
- `--assignee, -a`: 担当者
- `--milestone, -m`: マイルストーン
- `--web, -w`: ブラウザで開く
### Issue一覧
```bash
# オープンなIssue
gh issue list
# クローズ済み
gh issue list --state closed
# 全て
gh issue list --state all
# 担当者でフィルター
gh issue list --assignee @me
gh issue list --assignee alice
# ラベルでフィルター
gh issue list --label priority:high
gh issue list --label bug
# 件数制限
gh issue list --limit 10
# JSON出力
gh issue list --json number,title,labels
```
**主なオプション:**
- `--state`: open/closed/all
- `--assignee, -a`: 担当者
- `--label, -l`: ラベル
- `--limit, -L`: 件数制限
- `--json`: JSON出力
- `--search, -S`: 検索クエリ
### Issue詳細表示
```bash
# 標準出力
gh issue view 23
# Web表示
gh issue view 23 --web
# JSON出力
gh issue view 23 --json title,body,labels,assignees
```
### Issue更新
```bash
# タイトル変更
gh issue edit 23 --title "新しいタイトル"
# 説明文変更
gh issue edit 23 --body "新しい説明"
# ラベル追加
gh issue edit 23 --add-label bug
# ラベル削除
gh issue edit 23 --remove-label enhancement
# 担当者追加
gh issue edit 23 --add-assignee alice
# 担当者削除
gh issue edit 23 --remove-assignee bob
```
### Issueコメント
```bash
# コメント追加
gh issue comment 23 --body "進捗報告"
# コメント一覧
gh issue view 23 --comments
```
### Issueクローズ/再オープン
```bash
# クローズ
gh issue close 23
# コメント付きでクローズ
gh issue close 23 --comment "完了しました"
# 再オープン
gh issue reopen 23
```
---
## PR操作
### PR作成
```bash
# 対話形式
gh pr create
# オプション指定
gh pr create \
--title "PRタイトル" \
--body "説明" \
--base main \
--head feature/branch
# ドラフトPR
gh pr create --draft
# Issue自動クローズ
gh pr create \
--title "企画書作成" \
--body "Closes #23"
```
**主なオプション:**
- `--title, -t`: タイトル
- `--body, -b`: 説明文
- `--base, -B`: ベースブランチ
- `--head, -H`: HEADブランチ
- `--draft, -d`: ドラフトPR
- `--web, -w`: ブラウザで開く
### PR一覧
```bash
# オープンなPR
gh pr list
# クローズ済み
gh pr list --state closed
# マージ済み
gh pr list --state merged
# 担当者でフィルター
gh pr list --assignee @me
# ラベルでフィルター
gh pr list --label bug
```
### PR詳細表示
```bash
# 標準出力
gh pr view 45
# Web表示
gh pr view 45 --web
# 差分表示
gh pr diff 45
# コメント一覧
gh pr view 45 --comments
```
### PRチェックアウト
```bash
# ローカルにチェックアウト
gh pr checkout 45
# ブランチ名指定
gh pr checkout 45 --branch review-pr-45
```
### PRマージ
```bash
# Merge commit
gh pr merge 45 --merge
# Squash merge
gh pr merge 45 --squash
# Rebase merge
gh pr merge 45 --rebase
# ブランチ自動削除
gh pr merge 45 --rebase --delete-branch
# コメント付き
gh pr merge 45 --rebase --body "LGTM"
```
### PRレビュー
```bash
# Approve
gh pr review 45 --approve
# Request changes
gh pr review 45 --request-changes --body "修正が必要です"
# Comment
gh pr review 45 --comment --body "確認しました"
```
### PRクローズ
```bash
# クローズ
gh pr close 45
# コメント付き
gh pr close 45 --comment "別の方法で実装します"
```
---
## Project操作
### Project作成
```bash
# 個人Project
gh project create "Project Name" --owner @me
# OrganizationProject
gh project create "Project Name" --owner org-name
```
### Project一覧
```bash
# 個人Project
gh project list --owner @me
# JSON出力
gh project list --owner @me --format json
```
### Project詳細
```bash
# Project表示
gh project view 1
# Web表示
gh project view 1 --web
```
### IssueをProjectに追加
**注意:** CLIでの追加は複雑なため、Web UIまたはGraphQL APIを推奨
```bash
# GraphQL APIを使用
PROJECT_ID="PVT_xxx"
ISSUE_ID=$(gh issue view 23 --json id -q .id)
gh api graphql -f query='
mutation($project:ID!, $issue:ID!) {
addProjectV2ItemById(input: {projectId: $project, contentId: $issue}) {
item { id }
}
}' -f project="$PROJECT_ID" -f issue="$ISSUE_ID"
```
---
## Label操作
### ラベル作成
```bash
# 基本形
gh label create "label-name"
# 色とdescription指定
gh label create "bug" \
--color "d73a4a" \
--description "バグ修正"
```
**よく使う色コード:**
- `d73a4a`: 赤(bug)
- `a2eeef`: 青(enhancement)
- `0075ca`: 濃い青(documentation)
- `b60205`: 濃い赤(priority:high)
- `fbca04`: 黄(priority:medium)
- `0e8a16`: 緑(priority:low)
### ラベル一覧
```bash
# 全ラベル
gh label list
# JSON出力
gh label list --json name,color,description
```
### ラベル編集
```bash
# 名前変更
gh label edit "old-name" --name "new-name"
# 色変更
gh label edit "bug" --color "ff0000"
# description変更
gh label edit "bug" --description "新しい説明"
```
### ラベル削除
```bash
gh label delete "label-name"
# 確認なし
gh label delete "label-name" --yes
```
---
## よく使うパターン
### 今日のタスク確認
```bash
TODAY=$(date '+%Y-%m-%d')
# 今日期限のタスク
gh issue list --state open --json number,title,body \
--jq ".[] | select(.body | contains(\"$TODAY\")) | \"#\(.number) \(.title)\""
# 自分のタスク
gh issue list --assignee @me --state open
# 高優先度
gh issue list --label priority:high --state open
```
### 期限が近いタスク
```bash
TODAY=$(date '+%Y-%m-%d')
THREE_DAYS=$(date -v+3d '+%Y-%m-%d' 2>/dev/null || date -d '+3 days' '+%Y-%m-%d')
gh issue list --state open --json number,title,body \
--jq ".[] | select(.body | contains(\"期限:\")) |
select(.body | capture(\"期限: (?<date>[0-9-]+)\").date <= \"$THREE_DAYS\") |
\"#\(.number) \(.title) - 期限: \(.body | capture(\"期限: (?<date>[0-9-]+)\").date)\""
```
### 週次サマリー
```bash
WEEK_AGO=$(date -v-7d '+%Y-%m-%d' 2>/dev/null || date -d '-7 days' '+%Y-%m-%d')
# 今週完了
gh issue list --state closed --search "closed:>=$WEEK_AGO"
# 未完了
gh issue list --state open
# 統計
OPEN=$(gh issue list --state open --json number | jq '. | length')
CLOSED=$(gh issue list --state closed --search "closed:>=$WEEK_AGO" --json number | jq '. | length')
echo "未完了: $OPEN件, 今週完了: $CLOSED件"
```
### ブランチ作成からPRまで
```bash
# Issue情報取得
ISSUE_NUM=23
TITLE=$(gh issue view $ISSUE_NUM --json title -q .title)
SLUG=$(echo "$TITLE" | tr '[:upper:]' '[:lower:]' | tr ' ' '-' | sed 's/[^a-z0-9-]//g')
# ブランチ作成
git checkout main
git pull origin main
git checkout -b "feature/issue-$ISSUE_NUM-$SLUG"
# 作業...
git add .
git commit -m "$TITLE"
# push & PR作成
git push origin "feature/issue-$ISSUE_NUM-$SLUG"
gh pr create --title "$TITLE" --body "Closes #$ISSUE_NUM"
```
---
## トラブルシューティング
### 認証エラー
```bash
# 現在の認証状態
gh auth status
# 再認証
gh auth logout
gh auth login
```
### リポジトリが見つからない
```bash
# リポジトリ一覧
gh repo list
# リポジトリ情報
gh repo view
# リモートURL確認
git remote -v
```
### Issue/PRが見つからない
```bash
# Issue一覧(全て)
gh issue list --state all --limit 100
# PR一覧(全て)
gh pr list --state all --limit 100
# 検索
gh issue list --search "keyword"
```
### Project IDの取得
```bash
# Project一覧
gh project list --owner @me --format json
# 特定のProject
gh project view 1 --json id
```
### ラベルが重複
```bash
# 既存ラベル確認
gh label list
# 削除してから作成
gh label delete "priority:high" --yes
gh label create "priority:high" --color "b60205"
```
### push時の権限エラー
```bash
# リモートURL確認
git remote -v
# HTTPSに変更
git remote set-url origin https://github.com/username/repo.git
# SSHに変更
git remote set-url origin git@github.com:username/repo.git
```
### ブランチが既に存在
```bash
# ブランチ一覧
git branch -a
# ローカルブランチ削除
git branch -d branch-name
# リモートブランチ削除
git push origin --delete branch-name
```
---
## 高度な使い方
### JSON出力の活用
```bash
# Issueの特定フィールド取得
gh issue list --json number,title,labels \
--jq '.[] | select(.labels[].name == "bug") | .number'
# 複数条件でフィルター
gh issue list --json number,title,assignees,labels \
--jq '.[] | select(.assignees[].login == "alice") |
select(.labels[].name | startswith("priority:")) |
"\(.number): \(.title)"'
```
### 検索クエリ
```bash
# 期限でソート
gh issue list --search "sort:created-asc"
# 特定期間
gh issue list --search "created:>2024-12-01"
# コメント数
gh issue list --search "comments:>5"
# 複数条件
gh issue list --search "is:open label:bug assignee:@me"
```
### エイリアス設定
```bash
# ~/.bashrc or ~/.zshrc に追加
alias ghil='gh issue list'
alias ghic='gh issue create'
alias ghiv='gh issue view'
alias ghpl='gh pr list'
alias ghpc='gh pr create'
alias ghpv='gh pr view'
# 使用例
ghil --label bug
ghic --title "新しいタスク"
```
---
## 参考リンク
### GitHub CLI公式ドキュメント
- Issue: https://cli.github.com/manual/gh_issue
- PR: https://cli.github.com/manual/gh_pr
- Project: https://cli.github.com/manual/gh_project
- Label: https://cli.github.com/manual/gh_label
### GitHub REST API
- https://docs.github.com/en/rest
### GitHub GraphQL API
- https://docs.github.com/en/graphql
---
## クイックリファレンス
```bash
# === Issue ===
gh issue create -t "タイトル" -b "説明" -l "ラベル" -a @me
gh issue list [-a @me] [-l label] [--state open|closed|all]
gh issue view 23
gh issue edit 23 --add-label bug
gh issue comment 23 -b "コメント"
gh issue close 23
# === PR ===
gh pr create -t "タイトル" -b "説明" [-d]
gh pr list [--state open|closed|merged]
gh pr view 45
gh pr checkout 45
gh pr merge 45 --rebase --delete-branch
gh pr review 45 --approve
# === Project ===
gh project create "名前" --owner @me
gh project list --owner @me
gh project view 1
# === Label ===
gh label create "名前" --color "色" --description "説明"
gh label list
gh label edit "名前" --color "新色"
gh label delete "名前"
# === Repository ===
gh repo create リポジトリ名 --private
gh repo list
gh repo view
```
---
## 便利なワンライナー
### 自分の未完了タスクを優先度順に表示
```bash
gh issue list --assignee @me --state open --json number,title,labels \
--jq 'sort_by(.labels | map(select(.name | startswith("priority:"))) | .[0].name // "z") |
.[] | "#\(.number) \(.title) [\(.labels | map(select(.name | startswith("priority:"))) | .[0].name // "なし")]"'
```
### 期限が過ぎたタスクを検出
```bash
TODAY=$(date '+%Y-%m-%d')
gh issue list --state open --json number,title,body \
--jq ".[] | select(.body | contains(\"期限:\")) |
select(.body | capture(\"期限: (?<date>[0-9-]+)\").date < \"$TODAY\") |
\"⚠️ #\(.number) \(.title) - 期限超過: \(.body | capture(\"期限: (?<date>[0-9-]+)\").date)\""
```
### 今月作成されたタスク数
```bash
MONTH_START=$(date '+%Y-%m-01')
gh issue list --search "created:>=$MONTH_START" --json number | jq '. | length'
```
### 担当者別のオープンタスク数
```bash
gh issue list --state open --json assignees \
--jq '[.[] | .assignees[] | .login] | group_by(.) |
map({user: .[0], count: length}) |
sort_by(.count) | reverse |
.[] | "\(.user): \(.count)件"'
```
---
**戻る**: [WORKFLOW.md](WORKFLOW.md) | **メインへ**: [CLAUDE.md](../CLAUDE.md)
```
---
## 🎉 全ファイル完成!
以上で全4ファイルが揃いました。以下のようにファイルを保存してください:
### 保存先
```
task-management/
├── CLAUDE.md # ファイル1
└── docs/
├── SETUP.md # ファイル2
├── WORKFLOW.md # ファイル3
└── COMMANDS.md # ファイル4
かなり色々なファイルを作成してくれました。
- システム概要と基本方針: 自然言語でのやり取りを最優先し、スクリプトファイルは作成しない方針
- クイックスタート: 前提条件の確認から最初のタスク作成までの手順
- 自然言語指示の例: タスク作成・確認・操作・ブランチ/PRの指示例
- システム構成: ブランチ戦略(GitHub Flow)、PRマージ方法(Rebase)、Project設定、ラベル構成
- 初期セットアップ手順: リポジトリ作成、Project作成、ラベル作成、Issue/PRテンプレート作成、設定ファイル生成
- 日常ワークフロー: 朝のタスク確認、タスク作成パターン、タスク更新、ブランチ作業フロー、週次レビュー
- ghコマンドリファレンス: Issue/PR/Project/Label操作コマンド、よく使うパターン、便利なワンライナー
- トラブルシューティング: 認証エラー、リポジトリが見つからない場合などの対処法
などが盛り込まれています。人間がやったことは実質「Claude Code とGitHub Issuesをつかってタスク管理をしたいです。」 とつぶやいただけなのに、要件定義ができてしまった感じです。
うごかしてみる
さてClaude Codeを動かすためのファイル群ができたので、このフォルダ構成のとおりにファイル群を配置をして、Claude Codeがちゃんと動くのか確認してみたいと思います。
% claude
* ▐▛███▜▌ * Claude Code v2.0.76
* ▝▜█████▛▘ * Opus 4.5 · Claude Max
* ▘▘ ▝▝ * /private/tmp/qiita
A gift for you
Your rate limits are 2x higher through 12/31. Enjoy the extra room to think!
> まずなにすればよかったっけ?
⏺ GitHub Issuesタスク管理システムのセットアップですね。まず前提条件を確認しましょう。
⏺ Bash(gh --version)
⎿ gh version 2.83.1 (2025-11-13)
https://github.com/cli/cli/releases/tag/v2.83.1
⏺ Bash(gh auth status)
⎿ github.com
✓ Logged in to github.com account foo-user (keyring)
- Active account: true
… +3 lines (ctrl+o to expand)
⏺ GitHub CLIの準備は完了しています:
- バージョン: 2.83.1 ✓
- 認証: foo-userアカウントでログイン済み ✓
次のステップは初期セットアップです。以下を教えてください:
1. リポジトリ: 新規作成する? or 既存のリポジトリを使う?
2. リポジトリ名: 何にする?(例: task-management)
3. 公開設定: プライベート? or パブリック?
例えば「task-managementという名前でプライベートリポジトリを作成して、Projectとラベルも設定して」のように指示してもらえれば、一気にセットアップできます。
> 1. リポジトリ: 新規作成
> 2. リポジトリ名: test-task
> 3. 公開設定: Private
⏺ 了解です。test-taskリポジトリをセットアップします。
⏺ Bash(gh repo create test-task --private --description "GitHub Issues タスク管理システム" --clone)
⎿ https://github.com/foo-user/test-task
⏺ Bash(cd test-task && gh project create --owner @me --title "Task Board")
⎿ (No content)
... 以下つづくけど省略
「まずなにすればよかったっけ?」と聞いただけで、セットアップが始まったようですね。続きを載せるのは割愛しますが、ちゃんと動きました!
まとめ
まとめです。
-
CLAUDE.mdは最初から完璧に書く必要はなく、さらっと質問すればOKと言うことが分かりました。- Claudeとの壁打ち(質問→ヒアリング→回答の繰り返し)で要件を固めていけばOK
- わからない・決まっていない部分は「デフォルトで」とお願いすれば十分
- 前回記事のように、運用開始後もClaude Codeに
CLAUDE.mdを改善してもらえばよい
ところで、生成AIを使うとスキルが落ちるかも...と心配していましたが、Claude Codeが出力・実行してくれたコマンドをみて「ほー、そうやるのか」と学べることも多く、むしろスキルアップのために活用することもできそうです。
以上、おつかれさまでした。
関連リンク
- 前回記事:「仕様書を書いたらそのまま動く」— Claude Code × GitHub Issuesでタスク管理
- GitHub CLI公式ドキュメント
- AIコーディングツール入門:自律性レベルで理解する主要ツール比較