この記事は何
以前、Claude CodeのPluginを使ったカスタムコマンドによる並列開発ワークフローについて記事を書きました。
この記事では、create-plan(現在はcreate-issue)、exec-issue、fix-review-pointという3つのカスタムコマンドを使い、複数のタスクを並列に処理する開発フローを紹介しました。
ただ、exec-issueやfix-review-pointの実行はすべてローカルのターミナルから手動で行う必要があり、タスクが増えてくると、いちいちターミナルでコマンドを叩くのが面倒に感じる場面が出てきました。
レビューが終わったことに気づかないでいると、レビューの修正をさせるのにもラグが発生してしまいます。
そこで、GitHub上でラベルを付けるだけで自動的にワークフローが走るCLIツール「claude-task-worker」を作りました。
claude-task-workerとは
claude-task-workerは、GitHub IssueやPRを定期的にポーリングし、特定のラベルを検知するとClaude CLIにタスク処理を委譲するCLIツールです。
このツールは僕が作成した以下のプラグインをインストールしている環境用に実装しています。
これにより、開発者はGitHub上でラベルを付けるだけで、exec-issueやfix-review-pointというスキルが自動的に実行されるようになります。ターミナルでコマンドを叩く必要がなくなり、よりシームレスな並列開発が実現できます。
また、GitHub上で操作をするだけでClaude Codeに処理を行わせることができるため、出先でスマホなどでもタスクを依頼することができます。
exec-issue, fix-review-pointについては以下をご覧ください。(既存のコードではskillsに移管しています)
ワークフローの変化
Before: すべて手動実行
以前のワークフローでは、3つのステップすべてをローカルのClaude Codeから手動で実行していました。
-
/create-issueでGitHub Issueを作成 -
/exec-issue <issue番号>で実装・テスト・PR作成 -
/fix-review-point <ブランチ名>でレビューコメントへの対応
タスクごとにターミナルでコマンドを実行する必要があり、並列で処理するにはターミナルを複数開いて管理する手間がありました。
After: ラベルを付けるだけで自動実行
claude-task-workerを導入した後のワークフローでは、create-issue以外の操作はGitHub上で完結します。
-
/create-issueでGitHub Issueを作成(ここだけローカルで実行) - Issueに
dev-readyラベルを付ける →exec-issueが自動実行される - PRにレビューコメントを書く → ラベルに応じて
fix-review-pointが自動実行される
ローカルでやることはcreate-issueによるタスクの作成だけになり、それ以降はGitHub上の操作だけでワークフローが進行します。
なぜ Claude Code on the Webを使わないのか
Claude Codeにはブラウザ上で動作する「Claude Code on the Web」も存在します。これを使えばローカル環境がなくてもタスクを実行できるのですが、今回はあえてローカルでClaude Codeを動かす方式を選びました。
理由の1つは、Claude Code on the Webではプラグインや各種設定がリポジトリ単位になるという点です。ghコマンドの認証なども同様で、ローカルにある設定をそのまま使えないケースがあります。
また、僕の場合はローカルマシン上で動作する前提のskillsも用意しているため、できるだけローカル上でClaude Codeを使いたいという事情もありました。
Claude Code on the WebからSSHでローカルマシンに接続できるようになったという話もありますが、ローカルマシンへのSSH接続を可能にするには制約も多く、設定のハードルがあります。それよりも、GitHub上のラベルをトリガーにしたシンプルなPubSub形式のワークフローのほうが、導入も運用もシンプルに済むと判断しました。
各機能の詳細
exec-issue
dev-readyラベルが付いた、自分にアサインされたIssueを定期的に監視します。該当するIssueが見つかると、以下の処理が自動的に実行されます。
-
dev-readyラベルを削除し、in-progressラベルを追加 -
claude -p /exec-issue <issue番号>を非同期で実行
つまり、Issueを作成してdev-readyラベルを付けるだけで、実装からPR作成までが自動で進みます。
claude-task-worker exec-issue
fix-review-point
PRに未解決のレビューコメントがあり、かつin-progressラベルが付いていないPRを定期的に監視します。該当するPRが見つかると、以下の処理が自動的に実行されます。
-
in-progressラベルを追加 -
claude -p /fix-review-point <ブランチ名>を非同期で実行
レビューコメントを書いてResolveせずに残しておけば、自動的にAIが修正を行ってくれます。
ここで、レビュー修正の実行モードとして2つのラベルを用意しています。
-
fix-onetime: 1回のイテレーションのみ実行する。レビューコメントに対して1度だけ修正を行う -
fix-repeat: イテレーションをループさせる。AIによるレビュー対応を繰り返し、修正→レビュー→修正のサイクルを自動で回したい場合に使う
たとえば、軽微な修正であればfix-onetimeで十分ですが、複雑な修正でAIに何度か試行錯誤してほしい場合はfix-repeatを使うといった使い分けができます。
https://github.com/getty104/claude-code-marketplace で提供している/fix-review-pointは、タスクの終了後にレビューコメントを全てResolveし、/gemini reviewというコメントを行います。
https://developers.google.com/gemini-code-assist/docs/review-github-code?hl=ja を導入しておけば自動でAIレビューが走るため、fix-repeatをラベルとしてつけるとAIレビューがつくたびに修正が自動で入るようになります。
claude-task-worker fix-review-point
both
exec-issueとfix-review-pointの両方を同時にポーリングするモードです。実際の運用では基本的にこのモードで起動しておき、IssueとPRの両方を監視し続けます。
claude-task-worker both
実際の運用フロー
実際の運用では、以下のような流れになります。
- ローカルのClaude Codeで
/create-issueを実行し、実装タスクをGitHub Issueとして作成する - 作成されたIssueに
dev-readyラベルを付ける - claude-task-workerがIssueを検知し、自動的に実装を開始する
- 実装が完了するとPRが作成される
- PRをレビューし、修正が必要な箇所にコメントを残す
- PRに
fix-onetimeまたはfix-repeatラベルを付ける - 未解決のコメントがあるPRをclaude-task-workerが検知し、自動的に修正を行う
- 修正内容を確認し、問題なければマージする
このフローを複数のIssueに対して並列で回せるので、開発のスループットが大きく向上します。
最後に
claude-task-workerを作ったことで、Claude Codeを使った並列開発ワークフローがかなり快適になりました。ローカルでやることはcreate-issueでタスクを定義するだけで、あとはGitHub上でラベルを付けるだけでワークフローが進行していきます。
AIによる開発の自動化に興味がある方は、ぜひ試してみてください。