New:Microsoft Teams Notifications Are Now Available in Socket.Learn more
Get Started

claude-task-worker

Package Overview
Dependencies
Maintainers
1
Versions
119
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

claude-task-worker

CLI tool that polls GitHub Issues/PRs and delegates work to Claude CLI

latest
Source
npmnpm
Version
0.115.0
Version published
Weekly downloads
1.4K
-34.69%
Maintainers
1
Weekly downloads
 
Created
Source

claude-task-worker

GitHub Issues/PRを定期ポーリングし、Claude Codeに処理を委譲するCLIツール。

同梱の Claude Code プラグイン(plugin/)と組み合わせることで、Issue の実装からPRのレビュー対応、Dependabot PR の対応までを自動化する。CLI 本体(npm パッケージ)とプラグイン(Claude Code マーケットプレイス)は同じリポジトリ・同じ名前で提供される。

アーキテクチャ

CLI が GitHub ラベルを検知してタスクを起動し、プラグインのスキルが実際の処理を担う。

   GitHub (Issue / PR + ラベル)
              │ poll
              ▼
     claude-task-worker
              │ invoke
              ▼
       Claude Code CLI
   + claude-task-worker plugin

Worker とスキルの対応

Workerトリガー呼び出すスキル間隔
exec-issuecc-exec-issue (Issue)/claude-task-worker:exec-issue1分
create-issuecc-triage-scope (Issue)/claude-task-worker:create-issue-from-issue-number1分
update-issuecc-update-issue/claude-task-worker:update-issue1分
answer-issue-questionscc-answer-issue-questions/claude-task-worker:answer-issue-questions1分
triage-created-issuecc-issue-created + cc-triage-scope (Issue)/claude-task-worker:triage-created-issue1分
epic-issuecc-epic-issue (Issue, sub-issues が全て Close)/claude-task-worker:create-epic-pr5分
create-ui-designcc-create-ui-design (Issue)/claude-task-worker:create-ui-design1分
apply-ui-designcc-ui-design-pr-created (Issue)/claude-task-worker:apply-ui-design5分
fix-review-pointcc-fix-onetime (PR)/claude-task-worker:fix-review-point1分
triage-prcc-triage-scope (PR)/claude-task-worker:triage-pr1分
resolve-conflictcc-resolve-conflict (PR)/claude-task-worker:resolve-pr-conflict1分
check-dependabotdependencies (PR)/claude-task-worker:check-dependabot1時間
update-coding-guidelines24時間経過/claude-task-worker:update-coding-guidelines1時間
update-requirement-rules24時間経過/claude-task-worker:update-requirement-rules1時間
update-design-md24時間経過/claude-task-worker:update-design-md1時間

共通の挙動:

  • 処理中は cc-in-progress を付与し、同一 Issue/PR の重複実行を防ぐ
  • cc-need-human-check が付いた Issue、未解決の blockedBy を持つ Issue は対象外
  • 完了時にトリガーラベルを除去し、次のワーカーへ引き継ぐラベルを付与する
  • 定期ワーカー3つ(update-*)はラベルではなく時刻を条件に24時間おきに1回動く。表の「間隔」は24時間経過したかを確認する頻度
  • UIデザイン系3ワーカー(create-ui-design / apply-ui-design / update-design-md)は uiDesign.enabledtrue のときだけ起動する(既定 false

セットアップ

前提条件

名前用途
Node.js >= 22.6.0CLI の実行ランタイム
GitHub CLI (gh)全 GitHub 操作(認証済みであること)
Claude Code (claude)タスク実行エンジン
Git / jqworktree 操作 / スキル内での JSON 加工
CodeGraphコード探索用インデックス(任意。未導入ならテキスト検索に落ちる)
Pen CLI.pen の編集・参照。UIデザイン先行ワークフロー使用時のみ(要ログイン)
Playwright のブラウザPlaywright MCP でのブラウザ確認
DESIGN.md CLIDESIGN.md の lint。update-design-md 使用時のみ(未導入でも動く)
herdr--project / mode: "herdr" 使用時のみ(--cloud は herdr に依存しない)
GitHub MCPGitHub アクセスの高速化・クラウド実行時のプロキシ制限回避(任意。Claude 側のコネクタで有効化)

CLI 本体に npm の実行時依存はない(Node.js 標準モジュールのみで動作する)。

インストール

npx claude-task-worker install

マーケットプレイス追加・プラグイン導入・CLI 本体のグローバルインストール・各種 CLI(CodeGraph / DESIGN.md / Pen)と Playwright ブラウザの取得を一括で行う。いずれかが失敗しても処理は継続する。インストール後、Claude Code のセッションを再起動するとプラグインが有効になる。

個別にやる場合:

npm install -g claude-task-worker
claude plugin marketplace add getty104/claude-task-worker
claude plugin install claude-task-worker@claude-task-worker

herdr は curl -fsSL https://herdr.dev/install.sh | sh または brew install herdrドキュメント)。

更新

claude-task-worker update

マーケットプレイス・プラグイン・CLI 本体・各種 CLI をまとめて更新する。プラグインの反映にはセッション再起動が必要。

初期化

対象リポジトリで実行すると、GitHub ラベル・Issue テンプレート・GitHub Actions ワークフロー・設定ファイル(claude-task-worker.json)が作成され、CodeGraph のインデックスが構築される。

claude-task-worker init           # 既存ファイルは保護
claude-task-worker init --force   # 強制上書き

作成されるラベル:

ラベル用途
cc-triage-scopeトリアージ対象マーク(Issue/PR)=ワーカーのキュー合流口
cc-issue-request人が Issue テンプレートから作成を依頼した印。起票者を assignee に自動設定するワークフローの発火条件(cc-triage-scope と役割を分けてあり、ワーカーの自動起票では付かない)
cc-issue-createdcreate-issue 由来の Issue マーク
cc-update-issue / cc-answer-issue-questions / cc-exec-issueIssue の更新 / 確認事項回答 / 実行トリガー
cc-fix-onetime / cc-resolve-conflictPR の修正 / コンフリクト解消トリガー
cc-in-progress処理中ステータス
cc-need-human-check人間の確認が必要(付与中はワーカーの対象外)
cc-pr-createdPR 作成完了マーク
cc-epic-issueエピックマーク(Issue: サブ全 Close で epic-issue 起動 / PR: リリースゲート対象)
cc-release-readyエピックPRがリリース可能と判定されたマーク(マージは人間が実施)
cc-create-ui-design / cc-ui-design-pr-created / cc-ui-design-readyUIデザイン先行ワークフローの各段階
cc-ui-designデザインPRのマーカー
cc-cloud-doneクラウド実行タスクの完了マーク(セッションが付与し、ワーカーが検知して除去する。手動付与で張り付いたタスクを救済できる)

コマンド

claude-task-worker <command> [--epic <issue-number>]... [--label <label>]... [--project <name>]... [--cloud] [--debug]
コマンド内容
各ワーカー名単一ワーカーを起動(exec-issue / triage-pr など)
all通常ワーカー9つ + 定期ワーカー3つ(triage-created-issue / triage-pr / check-dependabot を除く)
yolo全ワーカーを同時にポーリング
initラベル・テンプレート・設定ファイルの作成と CodeGraph セットアップ
install / update上記「セットアップ」を参照
cloud-setup [--force]クラウド VM 側の準備(下記「--cloud」を参照)
usageClaude API 使用状況(5時間/7日間の利用率とリセット時刻)を表示し、Slack にも通知
versionCLI のバージョンを表示(--version / -v も可)

--epic <issue-number>

指定したエピック Issue のサブ Issue のみを処理対象に絞る。複数指定は OR。

claude-task-worker all --epic 100 --epic 200

epic-issue ワーカーではエピック Issue 自身の番号として照合される。

--label <label>

トリガーラベルに加えて指定ラベルが付いた Issue のみに絞る。複数指定は AND。--epic と併用可能。

claude-task-worker all --label priority-high --label needs-design

--project <name>

指定したプロジェクト(またはグループ、all)へ herdr 経由でコマンドをディスパッチする。CLI はワーカーを直接実行せず、プロジェクトごとに独立した herdr ワークスペースを作ってそこでコマンドを実行し、稼働状況をステータステーブルに表示する。SIGTERM/SIGINT で全セッションを一括停止する。

claude-task-worker all --project all
claude-task-worker exec-issue --project app-a --epic 100

プロジェクト名・グループ名は config.json で定義する(下記「設定ファイル」)。all は全プロジェクトを指す予約語。

--project と併用できないコマンド: init / install / update / usage / version

--cloud

タスクを Claude Code on the web(クラウド VM)で実行する。プロセス単位のフラグで既定は無効。

claude-task-worker exec-issue --cloud
claude-task-worker all --cloud

クラウドで実行されるのは exec-issuefix-review-point の2ワーカーだけで、それ以外は --cloud を付けてもローカル実行のまま残る(all / yolo にそのまま付けられる)。どのワーカーがクラウドで走るかは起動時にログへ出る。

前提条件:

前提備考
script コマンドが使える環境(macOS / Linux)クラウドセッションの作成には TTY が必要で、それを script コマンドの疑似 pty で供給する。platform が darwin/linux でない、または script が PATH に無い場合はタスクを1件も起動せずエラー終了する(フォールバックしない)
claude.ai アカウントでのサインインAPI キー認証・第三者プロバイダ(Bedrock / Vertex)構成では利用不可。--cloud 指定時のみ検査される
対象リポジトリの GitHub App 連携クラウド VM から push / PR 作成を行うため
claude.ai の「プルリクエストを自動的に作成する」「プルリクエストの自動修正」が OFF下記
VM 側のセットアップスクリプト下記
PEN_CLI_KEY 環境変数UIデザイン先行ワークフローを使う場合のみ(下記「Pen CLI のログイン」)

claude.ai の設定にある 「プルリクエストを自動的に作成する」「プルリクエストの自動修正」は必ず OFF にする。どちらもタスクワーカーの制御と競合する。前者はスキルの create-prCloses #<N>・ベースブランチ・ラベル付与)とは別に PR を作るため PR が重複し、後者はセッションが PR 作成後に終了せずレビューを待って修正を続けるため、cc-cloud-done による完了検知が 4 時間のタイムアウトまで効かない。

claude.ai の環境設定(セットアップスクリプト欄)に次の2行を記載しておく。

npx claude-task-worker install
npx claude-task-worker cloud-setup

cloud-setup は VM 側の ~/.claude/settings.json に権限モード・出力スタイル・言語を書き込み、グローバル gitignore へ .codegraph/ を登録する。クラウドセッションは起動フラグの --permission-mode を反映しないため、この設定ファイルが権限モードを指定する唯一の経路になる。書き込みはキー単位のマージで既存の設定を消さない(--force で上書き)。

補足:

  • クラウド実行のタスクは worktree を作らない(VM が自前でリポジトリを持つため)
  • 完了は cc-cloud-done ラベルで検知する。4時間で応答がなければ打ち切り、cc-need-human-check を付けて失敗通知する
  • --project と併用した場合、--cloud は各プロジェクトへそのまま転送される
  • --cloud と併用できないコマンド: init / install / update / usage / version
  • --cloudmodedefault / herdr)に依存しない。クラウドセッションの作成は script コマンドの疑似 pty で完結し、herdr のペインを使わないため、どちらの mode でも同じ経路を通る

詳細は docs/prd-cloud-worker-execution.md を参照。

--debug

各タスクの最終報告を対象 Issue/PR へコメントとして残す。ローカル実行(default / herdr)でもクラウド実行(--cloud)でも使える。

claude-task-worker exec-issue --debug
claude-task-worker exec-issue --cloud --debug

既定(--debug なし)では最終報告は Slack 通知にのみ載り、Issue/PR にはコメントされない。毎タスク投稿すると Issue/PR がワーカーの実行ログで埋まるため。

投稿の担当は実行形態で違う。ローカルはワーカーが報告そのもの(claude -p の stdout / transcript)を持っているのでワーカーが投稿し、クラウドはワーカーに報告が届かないのでセッション自身に投稿させる(ワーカーはそれを回収して Slack へ載せる)。定期ワーカー(update-*)の投稿先は実行記録PR(ctw-last-run-<ワーカー名>)。クラウド実行の完了検知(cc-cloud-done)はフラグの有無に関わらず従来どおり動く。

Pen CLI のログイン

.pen を扱うスキルは Pen CLI の認証を必要とする。UIデザイン先行ワークフローを使うなら一度ログインしておく。

pencil login    # メールアドレス + パスワード、またはメールアドレス + OTP コード
pencil status   # 認証状態の確認

CI やクラウド VM など対話ログインできない環境では、環境変数 PEN_CLI_KEY(pen.dev の組織設定 > Developer Keys で発行)を使う。保存済みトークンより優先される。

設定ファイル

グローバル設定は $XDG_CONFIG_HOME/claude-task-worker/config.json(未設定なら ~/.config/claude-task-worker/config.json)、リポジトリ設定は実行ディレクトリ直下の claude-task-worker.json

config.json(グローバル)

{
  "mode": "default",
  "advisor": false,
  "permission": "bypassPermissions",
  "projects": {
    "app-a": "/Users/me/repos/app-a",
    "app-b": "/Users/me/repos/app-b"
  },
  "projectGroups": {
    "frontend": ["app-a", "app-b"]
  }
}
キー既定説明
projects-プロジェクト名 → 絶対パス
projectGroups{}グループ名 → プロジェクト名配列
mode"default""default": claude -p の子プロセスとして実行 / "herdr": herdr のタブ内で TUI 起動し、実行中の様子を覗ける(--project はこちらが必要)
advisorfalsetrue--advisor <model> を渡す。モデルは claude-task-worker.jsonadvisorModel
permission"bypassPermissions"Claude CLI の権限モードbypassPermissions / dontAsk / auto / acceptEdits / manual / plan

いずれもトップレベル一括で、プロジェクト単位・ワーカー単位の指定はできない。permission はワーカーに承認するユーザーがいないため、bypassPermissions / dontAsk 以外ではタスクが承認待ちで止まりうる。

ℹ️ mode: "herdr" の完了通知音はワーカー側から止められない。無音にするには ~/.config/herdr/config.toml[ui.sound] enabled = false を書いて herdr server reload-config する(herdr サーバー全体に効く)。

claude-task-worker.json(リポジトリ)

キー既定説明
fixReviewPointCallbackCommentMessagestring-fix-review-point 完了時に PR へ投稿するコメント(未設定なら投稿しない)
remoteEnvIdstring | nullnullクラウド実行(--cloud)時に --environment へ渡すクラウド環境ID。null なら渡さず claude 側の既定解決に任せる(下記)
uiDesignobject{ "enabled": false, "designDir": "designs", "yolo": false }UIデザイン先行ワークフロー(下記)
workersobject{}ワーカーごとの上書き設定(下記)
lastRunobject{}定期ワーカーの最終実行時刻。ワーカーが自動更新するため手で編集しない

claude-task-worker.local.json(ローカル上書き)

同じディレクトリに claude-task-worker.local.json を置くと、claude-task-worker.json と同じキーを書けて同じキーはローカル側が勝つ。マージはネストしたオブジェクトのキー単位(workers.<name>.model だけを差し替えられる。配列・スカラーは丸ごと置き換え)。

コミットしない前提のファイルで、claude-task-worker init.gitignore へ登録する。remoteEnvId のように各自の環境で値が違う設定を置く。

クラウド環境の指定(remoteEnvId

--cloud 実行時に claude --environment <id> へ渡す環境ID。指定しない場合の選択は claude CLI に任せる(~/.claude/settings.jsonremote.defaultEnvironmentId → アカウントの最初の anthropic_cloud 環境 → 無ければ自動作成)。ID は claude.ai の環境設定、または /remote-env で確認できる。自己ホスト環境(ccpool_...)も同じキーに書ける。

{ "remoteEnvId": "env_xxxxxxxx" }

ワーカーごとの設定

未指定のワーカー・フィールドは既定値にフォールバックする。

フィールド説明
skillClaude CLI の -p に渡すスラッシュコマンド("<skill> <番号>" の形で起動)
model--model の値(sonnet / opus / haiku
advisorModel--advisor の値。空文字なら advisor なし。config.jsonadvisor: true のときだけ参照される
effort--effort の値(high / medium / low
pollingIntervalSecondsポーリング間隔(秒)
cooldownSecondsタスク完了後にポーリングを止める時間(秒)。既定 0
maxConcurrentTasks同時実行できるタスクの最大数。既定 1

既定値:

ワーカーmodeleffortpollingIntervalSeconds
exec-issue / fix-review-point / answer-issue-questions / create-issue / create-ui-design / triage-propushigh60
update-issue / triage-created-issue / resolve-conflictsonnethigh60
epic-issue / apply-ui-designsonnetmedium300
check-dependabotsonnethigh3600
update-coding-guidelines / update-requirement-rules / update-design-mdopushigh3600
(未知のワーカー名)opushigh60

advisorModel の既定は全ワーカー空文字(advisor なし)。

設定例:

{
  "workers": {
    "exec-issue":       { "model": "opus", "cooldownSeconds": 600, "maxConcurrentTasks": 3 },
    "fix-review-point": { "model": "sonnet", "advisorModel": "opus", "maxConcurrentTasks": 2 },
    "triage-pr":        { "effort": "medium", "pollingIntervalSeconds": 120 }
  }
}

ワークフロー

Epic(親Issue)連携

親 Issue を持つサブ Issue は、デフォルトブランチではなく cc-epic-<親Issue番号> ブランチから worktree を作って処理される。サブ Issue ごとのPRを単一の統合ブランチへ集約するため。エピックブランチが remote に無ければ自動で派生・push される。

サブ Issue がすべて Close されると epic-issue ワーカーがエピックブランチからまとめてPRを作る。エピックPRは triage-pr がマージ可能と判定してもマージせず cc-release-ready を付けるだけで、実際のマージ(リリース)は人間に委ねられる。

UIデザイン先行ワークフロー

UI実装 Issue について、実装の前に Pencil(.pen)でデザインを作り、独立したPRとしてマージしてから実装へ進むフロー。uiDesign.enabled によるオプトインで、既定(false)では関連ワーカーが起動しない。

キー既定意味
uiDesign.enabledfalse有効化
uiDesign.designDir"designs".pen とスナップショットの配置先(リポジトリルートからの相対パス)
uiDesign.yolofalsetrue でデザインPRに cc-triage-scope を付け、既存フローで自動レビュー・自動マージへ流す
triage-created-issue(ルーティング)
  ├─ UI実装タスクでない → cc-exec-issue
  └─ UI実装タスク       → cc-create-ui-design
        → create-ui-design: .pen + snapshots を作り、デザインPR(cc-ui-design)を作成
        → yolo: true なら自動レビュー・マージ / false なら人がレビュー・マージ
        → apply-ui-design: マージ後に Issue description へ「## UIデザイン」を追記し cc-exec-issue を付与
        → exec-issue: デザインを参照元として実装

デザインが不要と判明した場合は create-ui-design が理由をコメントして実装へ復帰する。Pencil が使えない環境やデザインPRが却下された場合は cc-need-human-check で停止する。

Slack通知

環境変数 CLAUDE_TASK_WORKER_SLACK_WEBHOOK_URL に Incoming Webhook URL を設定すると、タスクの完了時・失敗時に通知が送られる。未設定なら送信されない。

export CLAUDE_TASK_WORKER_SLACK_WEBHOOK_URL=https://hooks.slack.com/services/xxx/yyy/zzz
claude-task-worker all

通知には Claude API の使用状況も含まれる。あわせて RunCat Neo 用のスナップショットを ~/.claude/runcat-usage.jsonRUNCAT_OUT_FILE で変更可)へ書き出す。クラウド実行のタスクは通知の先頭行にセッションURLが入る。

プロセス管理

実行中のタスクはリアルタイムのステータステーブルで表示される(タスクID・タイトル・ステータス・開始時刻・経過時間)。SIGTERM/SIGINT で graceful shutdown し、もう一度送ると強制終了してラベル・worktree の後片付けを試みる。前回の異常終了で残った worktree はワーカー起動時に自動回収される。

ワーカーは応答するユーザーがいない状態でスキルを起動するため、処理が未完のままラベルだけ進む事故を防ぐガードを持つ(バックグラウンド実行と対話系ツールの無効化、自律実行原則のシステムプロンプト注入、PR 実在の完了検証、空出力セッションの失敗扱い、Stop フックによる残留プロセスの停止)。

開発

npm install
npm run build         # 型チェック + esbuild で dist/index.js にバンドル
npm run dev           # 型チェックの watch モード
npm test              # ユニットテスト
npm run lint          # ESLint(--fix で自動修正)
npm run format        # Prettier で整形

開発版をローカルから使う場合は npm install && npm run build && npm link

コントリビューションを歓迎します。開発環境のセットアップ・PRの出し方は CONTRIBUTING.md、バグ報告・機能要望は Issue テンプレート から。セキュリティ上の脆弱性は公開Issueではなく SECURITY.md の手順で報告してください。参加にあたっては CODE_OF_CONDUCT.md(Contributor Covenant)を遵守してください。

ライセンス

MIT License. 詳細は LICENSE を参照してください。

Keywords

claude

FAQs

Package last updated on 12 Sep 2026

Related posts