claude-task-worker 0.60.0 → 0.62.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +192 -509
- package/dist/index.js +14 -14
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -2,338 +2,184 @@
|
|
|
2
2
|
|
|
3
3
|
GitHub Issues/PRを定期ポーリングし、Claude Codeに処理を委譲するCLIツール。
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
同梱の `claude-task-worker` Claude Code プラグイン(`plugin/`)と組み合わせることで、Issue の実装からPRのレビュー対応、Dependabot PR の対応までを自動化する。CLI 本体(npm パッケージ)とプラグイン(Claude Code マーケットプレイス)は同じリポジトリ・同じ名前で提供される。
|
|
6
6
|
|
|
7
7
|
## アーキテクチャ
|
|
8
8
|
|
|
9
|
-
|
|
9
|
+
CLI が GitHub ラベルを検知してタスクを起動し、プラグインのスキルが実際の処理を担う。
|
|
10
10
|
|
|
11
11
|
```
|
|
12
|
-
|
|
13
|
-
│
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
│
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
│ Issue (cc-epic-issue, all sub-issues closed) ──┤ │
|
|
21
|
-
│ PR (cc-fix-onetime) ──┤ │
|
|
22
|
-
│ PR (cc-triage-scope) ──┤ │
|
|
23
|
-
│ PR (cc-resolve-conflict) ──┤ │
|
|
24
|
-
│ PR (dependencies, Dependabot) ──┤ │
|
|
25
|
-
└─────────────────────────────────────────────────────┼──┘
|
|
26
|
-
│
|
|
27
|
-
▼
|
|
28
|
-
┌────────────────────────┐
|
|
29
|
-
│ claude-task-worker │
|
|
30
|
-
└───────────┬────────────┘
|
|
31
|
-
│ invoke
|
|
32
|
-
▼
|
|
33
|
-
┌────────────────────────┐
|
|
34
|
-
│ Claude Code CLI │
|
|
35
|
-
│ + claude-task-worker │
|
|
36
|
-
│ plugin │
|
|
37
|
-
└────────────────────────┘
|
|
12
|
+
GitHub (Issue / PR + ラベル)
|
|
13
|
+
│ poll
|
|
14
|
+
▼
|
|
15
|
+
claude-task-worker
|
|
16
|
+
│ invoke
|
|
17
|
+
▼
|
|
18
|
+
Claude Code CLI
|
|
19
|
+
+ claude-task-worker plugin
|
|
38
20
|
```
|
|
39
21
|
|
|
40
|
-
### Worker
|
|
22
|
+
### Worker とスキルの対応
|
|
41
23
|
|
|
42
|
-
| Worker |
|
|
24
|
+
| Worker | トリガー | 呼び出すスキル | 間隔 |
|
|
43
25
|
|---|---|---|---|
|
|
44
|
-
| `exec-issue` | `cc-exec-issue` | `/claude-task-worker:exec-issue` | 1分 |
|
|
45
|
-
| `create-issue` | `cc-triage-scope` (Issue
|
|
26
|
+
| `exec-issue` | `cc-exec-issue` (Issue) | `/claude-task-worker:exec-issue` | 1分 |
|
|
27
|
+
| `create-issue` | `cc-triage-scope` (Issue) | `/claude-task-worker:create-issue-from-issue-number` | 1分 |
|
|
46
28
|
| `update-issue` | `cc-update-issue` | `/claude-task-worker:update-issue` | 1分 |
|
|
47
29
|
| `answer-issue-questions` | `cc-answer-issue-questions` | `/claude-task-worker:answer-issue-questions` | 1分 |
|
|
48
|
-
| `fix-review-point` | `cc-fix-onetime` | `/claude-task-worker:fix-review-point` | 1分 |
|
|
49
30
|
| `triage-created-issue` | `cc-issue-created` + `cc-triage-scope` (Issue) | `/claude-task-worker:triage-created-issue` | 1分 |
|
|
50
|
-
| `triage-pr` | `cc-triage-scope` (PR) | `/claude-task-worker:triage-pr` | 1分 |
|
|
51
|
-
| `resolve-conflict` | `cc-resolve-conflict` (PR) | `/claude-task-worker:resolve-pr-conflict` | 1分 |
|
|
52
|
-
| `check-dependabot` | `dependencies` (PR) | `/claude-task-worker:check-dependabot` | 1時間 |
|
|
53
31
|
| `epic-issue` | `cc-epic-issue` (Issue, sub-issues が全て Close) | `/claude-task-worker:create-epic-pr` | 5分 |
|
|
54
32
|
| `create-ui-design` | `cc-create-ui-design` (Issue) | `/claude-task-worker:create-ui-design` | 1分 |
|
|
55
33
|
| `apply-ui-design` | `cc-ui-design-pr-created` (Issue) | `/claude-task-worker:apply-ui-design` | 5分 |
|
|
34
|
+
| `fix-review-point` | `cc-fix-onetime` (PR) | `/claude-task-worker:fix-review-point` | 1分 |
|
|
35
|
+
| `triage-pr` | `cc-triage-scope` (PR) | `/claude-task-worker:triage-pr` | 1分 |
|
|
36
|
+
| `resolve-conflict` | `cc-resolve-conflict` (PR) | `/claude-task-worker:resolve-pr-conflict` | 1分 |
|
|
37
|
+
| `check-dependabot` | `dependencies` (PR) | `/claude-task-worker:check-dependabot` | 1時間 |
|
|
56
38
|
|
|
57
|
-
|
|
58
|
-
>
|
|
59
|
-
> ℹ️ `create-ui-design` / `apply-ui-design` は `claude-task-worker.json` の `uiDesign.enabled` が `true` のときだけ起動する(既定は `false`)。詳細は「[UIデザイン先行ワークフロー](#uiデザイン先行ワークフロー)」を参照。
|
|
60
|
-
|
|
61
|
-
### Epic(親Issue)連携
|
|
62
|
-
|
|
63
|
-
親Issue (Issue Dependencies の Parent) を持つサブIssueを処理する場合、ワーカーはデフォルトブランチではなく `cc-epic-<親Issue番号>` ブランチから worktree を作成する。エピック単位でブランチをまとめることで、サブIssueごとのPRを単一の統合ブランチに集約しやすくなる。エピックブランチが remote に無い場合はデフォルトブランチから自動派生して push される。
|
|
64
|
-
|
|
65
|
-
`epic-issue` ワーカーは、`cc-epic-issue` ラベル付きの親Issueに紐づくサブIssueがすべて Close されたタイミングで `/claude-task-worker:create-epic-pr` を起動し、エピックブランチからまとめてPRを作成する。
|
|
66
|
-
|
|
67
|
-
### UIデザイン先行ワークフロー
|
|
68
|
-
|
|
69
|
-
UI実装Issueについて、実装の前に Pencil(`.pen`)でデザインを作り、それを独立したPRとしてマージしてから実装へ進むフロー。デザインの見た目・構成を実装PRとは別に単体でレビュー・合意でき、合意済みデザインがリポジトリに永続化される。
|
|
70
|
-
|
|
71
|
-
`claude-task-worker.json` の `uiDesign.enabled` によるオプトインで、既定(`false`)では2つのワーカーが起動しないため、Pencil を使っていないリポジトリの挙動は本機能の追加前と完全に一致する。
|
|
72
|
-
|
|
73
|
-
```json
|
|
74
|
-
{
|
|
75
|
-
"uiDesign": {
|
|
76
|
-
"enabled": true,
|
|
77
|
-
"designDir": "designs",
|
|
78
|
-
"yolo": false
|
|
79
|
-
}
|
|
80
|
-
}
|
|
81
|
-
```
|
|
82
|
-
|
|
83
|
-
| キー | 既定値 | 意味 |
|
|
84
|
-
|---|---|---|
|
|
85
|
-
| `uiDesign.enabled` | `false` | 本ワークフローの有効化。`false` の間は `triage-created-issue` がUI判定を行わず、2つのワーカーも起動しない |
|
|
86
|
-
| `uiDesign.designDir` | `"designs"` | `.pen` とスナップショットの配置先(リポジトリルートからの相対パス) |
|
|
87
|
-
| `uiDesign.yolo` | `false` | デザインPRを自動レビュー・自動マージへ流すか。`true` のときだけデザインPRに `cc-triage-scope` を付与する。`false`(既定)ではデザインPRは `cc-ui-design` のみが付いた状態で止まり、人がレビュー・マージするまで `apply-ui-design` は先へ進まない |
|
|
88
|
-
|
|
89
|
-
フローは以下のとおり。
|
|
90
|
-
|
|
91
|
-
```text
|
|
92
|
-
cc-issue-created + triage-created-issue(ルーティング)
|
|
93
|
-
├─ UI実装タスクでない → cc-exec-issue(従来どおり)
|
|
94
|
-
└─ UI実装タスク → cc-create-ui-design
|
|
95
|
-
→ create-ui-design ワーカー
|
|
96
|
-
・.pen を作成/更新 + snapshots/ に PNG 出力
|
|
97
|
-
・ブランチ cc-ui-design-<N> を push しデザインPRを作成(Refs #N。closing keyword は使わない)
|
|
98
|
-
・PR に cc-ui-design(uiDesign.yolo が true なら cc-triage-scope も)、Issue に cc-ui-design-pr-created を付与
|
|
99
|
-
→ uiDesign.yolo: true → triage-pr / fix-review-point / resolve-conflict(既存フローでレビュー・マージ)
|
|
100
|
-
uiDesign.yolo: false → 人がデザインPRをレビュー・マージ
|
|
101
|
-
→ apply-ui-design ワーカー
|
|
102
|
-
・デザインPRが MERGED になるまで skip
|
|
103
|
-
・Issue description に「## UIデザイン」セクションを追記
|
|
104
|
-
・cc-ui-design-ready + cc-exec-issue を付与
|
|
105
|
-
→ exec-issue(デザインを参照元として実装)
|
|
106
|
-
```
|
|
107
|
-
|
|
108
|
-
デザインPRのレビュー・マージ経路は `uiDesign.yolo` で切り替わる。`true` のときはデザインPRに `cc-triage-scope` が付き、Epic PR ではないため `cc-release-ready` によるマージ保留の対象外で、`triage-pr` が通常どおりレビュー・マージする。`false`(既定)では `cc-triage-scope` を付けないためどのワーカーもデザインPRを拾わず、人がレビューしてマージするまで待つ(`apply-ui-design` はデザインPRが `MERGED` になるまでスキップし続ける)。デザインに人が介在したい場合は既定のままにする。`triage-pr` は `cc-ui-design` ラベル付きPRに対してコードレビューではなくデザイン向けの観点(差分が `.pen` とPNGに限定されているか、スナップショットとデザイン意図が読み取れるか、Issue要件を満たしているか)で評価する。
|
|
109
|
-
|
|
110
|
-
デザインが不要と判明した場合は `create-ui-design` が理由をコメントして `cc-ui-design-ready` + `cc-exec-issue` を付与し、人手を介さず実装へ復帰する。Pencil が使えない環境やデザインPRが却下された場合は `cc-need-human-check` に落ちて停止する(共通除外ラベルのため無限リトライしない)。
|
|
111
|
-
|
|
112
|
-
### `--project` 指定時(ディスパッチャーモード)
|
|
39
|
+
共通の挙動:
|
|
113
40
|
|
|
114
|
-
|
|
41
|
+
- 処理中は `cc-in-progress` を付与し、同一 Issue/PR の重複実行を防ぐ
|
|
42
|
+
- `cc-need-human-check` が付いた Issue は全ワーカーの対象外
|
|
43
|
+
- Issue 系ワーカーは `-is:blocked` 検索 qualifier で絞り込むため、未解決の blockedBy を持つ Issue は対象外
|
|
44
|
+
- 完了時にトリガーラベルを除去し、次のワーカーへ引き継ぐラベルを付与する
|
|
45
|
+
- `create-ui-design` / `apply-ui-design` は `uiDesign.enabled` が `true` のときだけ起動する(既定 `false`)
|
|
115
46
|
|
|
116
|
-
###
|
|
47
|
+
### プラグインの構成
|
|
117
48
|
|
|
118
49
|
| ディレクトリ | 内容 |
|
|
119
50
|
|---|---|
|
|
120
|
-
| `plugin/skills/` |
|
|
51
|
+
| `plugin/skills/` | ワーカーが呼ぶスキル群と、対話セッション用の補助スキル(`commit-push` / `create-pr` / `breakdown-issues` / `edit-pencil-design` など) |
|
|
121
52
|
| `plugin/agents/` | サブエージェント定義(`explore-agent` / `frontend-implementer` / `general-purpose-assistant` / `lightweight-assistant` / `pencil-design-updater` / `requirement-todo-organizer`) |
|
|
122
|
-
| `plugin/hooks/` | `SessionStart`(worktree
|
|
53
|
+
| `plugin/hooks/` | `SessionStart`(worktree セットアップ)と `UserPromptSubmit`(`codegraph prompt-hook`)のフック定義 |
|
|
123
54
|
| `plugin/scripts/` | フックから呼ばれるスクリプト(`setup-worktree.sh` / `stop-servers.mjs`) |
|
|
124
|
-
| `plugin/.mcp.json` |
|
|
125
|
-
|
|
126
|
-
ワーカー起動スキルには `Stop` フック(`plugin/scripts/stop-servers.mjs`)が設定されており、スキル終了時に `docker compose down` と、worktree を作業ディレクトリに持つ残留プロセスの `SIGTERM` をベストエフォートで実行する。worktree はスキル完了直後に削除されるため、切り離されたサーバープロセスが残ると削除の妨げになるのを防ぐ。
|
|
127
|
-
|
|
128
|
-
## 必要なライブラリ
|
|
129
|
-
|
|
130
|
-
### 実行時に必要なもの
|
|
131
|
-
|
|
132
|
-
CLI 本体に npm の実行時依存パッケージはない(ビルド時に esbuild で単一ファイル `dist/index.js` にバンドルされ、Node.js 標準モジュールのみで動作する)。代わりに以下の外部ツールが必要。
|
|
133
|
-
|
|
134
|
-
| 名前 | バージョン | 用途 |
|
|
135
|
-
|---|---|---|
|
|
136
|
-
| [Node.js](https://nodejs.org/) | >= 22.6.0 | CLI の実行ランタイム(`--experimental-strip-types` を使用するテスト実行に必要) |
|
|
137
|
-
| [GitHub CLI (`gh`)](https://cli.github.com/) | - | Issue/PR の取得・ラベル操作など全GitHub操作(認証済みであること) |
|
|
138
|
-
| [Claude Code (`claude`)](https://docs.anthropic.com/en/docs/claude-code) | - | タスク実行エンジン。各ワーカーが Claude CLI プロセスとして起動する |
|
|
139
|
-
| [Git (`git`)](https://git-scm.com/) | - | worktree の作成・ブランチ操作 |
|
|
140
|
-
| [jq](https://jqlang.org/) | - | プラグインスキル内でのJSON加工(`check-dependabot` / `edit-pencil-design` スキルなどで使用) |
|
|
141
|
-
| [CodeGraph (`codegraph`)](https://www.npmjs.com/package/@colbymchenry/codegraph) | - | コード探索用のインデックス。MCP サーバー(`codegraph serve --mcp`)としてプラグインから起動される。`install` / `update` / `init` が面倒を見る。未インストールでもワーカーは動作する(探索がテキスト検索に落ちるだけ) |
|
|
142
|
-
| [Pencil CLI (`pencil`)](https://docs.pencil.dev/for-developers/pencil-cli) | - | `.pen` デザインファイルの編集・参照・コンフリクト解消(`edit-pencil-design` / `inspect-pencil-node` / `resolve-pencil-conflict` スキルで使用) |
|
|
143
|
-
| [herdr](https://herdr.dev) | - | `--project` 使用時と `mode: "herdr"` 使用時にのみ必要。複数プロジェクトへのディスパッチ・セッション監視・一括停止、タスクのTUI実行に使用 |
|
|
144
|
-
| `claude-task-worker` プラグイン | - | 各ワーカーが呼び出すスキル群(本リポジトリの `plugin/`) |
|
|
145
|
-
|
|
146
|
-
Slack通知(任意)を使う場合は Slack Incoming Webhook URL が必要。Claude API使用状況の取得には、macOSでは `security` コマンド(Keychain)を使用し、それ以外の環境では `~/.claude/.credentials.json` にフォールバックする。
|
|
147
|
-
|
|
148
|
-
### 開発時に必要なライブラリ(devDependencies)
|
|
149
|
-
|
|
150
|
-
| パッケージ | バージョン | 用途 |
|
|
151
|
-
|---|---|---|
|
|
152
|
-
| `typescript` | ^5.7.0 | 型チェック(`tsc --noEmit`) |
|
|
153
|
-
| `esbuild` | ^0.27.4 | `dist/index.js` へのバンドル |
|
|
154
|
-
| `@types/node` | ^22.0.0 | Node.js の型定義 |
|
|
155
|
-
| `eslint` | ^10.3.0 | Lint |
|
|
156
|
-
| `@eslint/js` | ^10.0.1 | ESLint 推奨設定 |
|
|
157
|
-
| `typescript-eslint` | ^8.59.1 | TypeScript 対応の ESLint ルール |
|
|
158
|
-
| `eslint-config-prettier` | ^10.1.8 | ESLint と Prettier の競合ルール無効化 |
|
|
159
|
-
| `prettier` | ^3.8.3 | コードフォーマッタ |
|
|
160
|
-
|
|
161
|
-
### プラグインが利用する MCP サーバー
|
|
162
|
-
|
|
163
|
-
`claude-task-worker` プラグイン(`plugin/.mcp.json`)は以下の MCP サーバーを定義しており、プラグイン有効化時に Claude Code から自動的に利用される。
|
|
164
|
-
|
|
165
|
-
| サーバー | 接続方法 | 用途 |
|
|
166
|
-
|---|---|---|
|
|
167
|
-
| `codegraph` | `codegraph serve --mcp`(stdio) | シンボルの定義元・参照元・呼び出し関係をたどるコード探索。ワーカー起動セッションは `--append-system-prompt` の指示により、`Grep`/`Glob` より優先してこの MCP を使う |
|
|
168
|
-
| `context7` | HTTP(`https://mcp.context7.com/mcp`) | ライブラリの最新ドキュメント取得 |
|
|
169
|
-
| `next-devtools` | `npx -y next-devtools-mcp@latest` | Next.js 開発支援 |
|
|
170
|
-
| `shadcn` | `npx shadcn@latest mcp` | shadcn/ui コンポーネント情報の取得 |
|
|
55
|
+
| `plugin/.mcp.json` | MCP サーバー定義(`codegraph` / `context7` / `next-devtools` / `shadcn`) |
|
|
171
56
|
|
|
172
57
|
## セットアップ
|
|
173
58
|
|
|
174
59
|
### 前提条件
|
|
175
60
|
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
-
|
|
61
|
+
| 名前 | 用途 |
|
|
62
|
+
|---|---|
|
|
63
|
+
| [Node.js](https://nodejs.org/) >= 22.6.0 | CLI の実行ランタイム |
|
|
64
|
+
| [GitHub CLI (`gh`)](https://cli.github.com/) | 全 GitHub 操作(認証済みであること) |
|
|
65
|
+
| [Claude Code (`claude`)](https://docs.anthropic.com/en/docs/claude-code) | タスク実行エンジン |
|
|
66
|
+
| [Git](https://git-scm.com/) | worktree の作成・ブランチ操作 |
|
|
67
|
+
| [jq](https://jqlang.org/) | プラグインスキル内での JSON 加工 |
|
|
68
|
+
| [CodeGraph](https://www.npmjs.com/package/@colbymchenry/codegraph) | コード探索用インデックス。任意(未導入でも探索がテキスト検索に落ちるだけ) |
|
|
69
|
+
| [Pencil CLI](https://docs.pencil.dev/for-developers/pencil-cli) | `.pen` デザインファイルの編集・参照。UIデザイン先行ワークフロー使用時のみ |
|
|
70
|
+
| [herdr](https://herdr.dev) | `--project` / `mode: "herdr"` 使用時のみ |
|
|
182
71
|
|
|
183
|
-
|
|
72
|
+
CLI 本体に npm の実行時依存はない(esbuild で `dist/index.js` に単一バンドルされ、Node.js 標準モジュールのみで動作する)。
|
|
184
73
|
|
|
185
74
|
### インストール
|
|
186
75
|
|
|
187
|
-
#### 推奨手順(一発セットアップ)
|
|
188
|
-
|
|
189
|
-
以下のコマンド一発で、Claude Code マーケットプレイスの追加・プラグインのインストール・CLI本体のグローバルインストール・CodeGraph CLI のインストールをまとめて行える。
|
|
190
|
-
|
|
191
76
|
```bash
|
|
192
77
|
npx claude-task-worker install
|
|
193
78
|
```
|
|
194
79
|
|
|
195
|
-
|
|
196
|
-
- `claude plugin install claude-task-worker@claude-task-worker` — プラグインのインストール
|
|
197
|
-
- `npm install -g claude-task-worker@latest` — CLI 本体のグローバルインストール(`npx` 実行時でも `claude-task-worker` コマンドを常設化する)
|
|
198
|
-
- `npm install -g @colbymchenry/codegraph@latest` — CodeGraph CLI のインストール(MCP サーバーの登録はプラグインの `.mcp.json` が担うため、`codegraph install` は実行しない)
|
|
199
|
-
|
|
200
|
-
インストール後、Claude Code のセッションを再起動するとプラグインが有効化される。
|
|
80
|
+
マーケットプレイスの追加・プラグインのインストール・CLI 本体のグローバルインストール・CodeGraph CLI のインストールを一括で行う。いずれかが失敗しても処理は継続し、`[install]` プレフィックス付きでログ出力される(失敗時の終了コードは 1)。インストール後、Claude Code のセッションを再起動するとプラグインが有効になる。
|
|
201
81
|
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
個別にインストールしたい場合は以下の手順でも良い。
|
|
205
|
-
|
|
206
|
-
CLI(npm パッケージ):
|
|
82
|
+
個別にやる場合:
|
|
207
83
|
|
|
208
84
|
```bash
|
|
209
85
|
npm install -g claude-task-worker
|
|
210
|
-
```
|
|
211
|
-
|
|
212
|
-
開発版をローカルから使う場合:
|
|
213
|
-
|
|
214
|
-
```bash
|
|
215
|
-
npm install
|
|
216
|
-
npm run build
|
|
217
|
-
npm link
|
|
218
|
-
```
|
|
219
|
-
|
|
220
|
-
Claude Code プラグイン(このリポジトリを Claude Code マーケットプレイスとして追加し、プラグインをインストールする):
|
|
221
|
-
|
|
222
|
-
```bash
|
|
223
86
|
claude plugin marketplace add getty104/claude-task-worker
|
|
224
87
|
claude plugin install claude-task-worker@claude-task-worker
|
|
225
88
|
```
|
|
226
89
|
|
|
227
|
-
|
|
90
|
+
herdr が必要な場合は `curl -fsSL https://herdr.dev/install.sh | sh` または `brew install herdr`([ドキュメント](https://herdr.dev/docs/install/))。
|
|
228
91
|
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
```bash
|
|
232
|
-
curl -fsSL https://herdr.dev/install.sh | sh
|
|
233
|
-
# または
|
|
234
|
-
brew install herdr
|
|
235
|
-
```
|
|
236
|
-
|
|
237
|
-
詳細は [herdr インストールドキュメント](https://herdr.dev/docs/install/) を参照。
|
|
238
|
-
|
|
239
|
-
#### 更新
|
|
240
|
-
|
|
241
|
-
CLI・プラグイン(マーケットプレイス)・CodeGraph CLI をまとめて更新する。
|
|
92
|
+
### 更新
|
|
242
93
|
|
|
243
94
|
```bash
|
|
244
95
|
claude-task-worker update
|
|
245
96
|
```
|
|
246
97
|
|
|
247
|
-
|
|
248
|
-
- `claude plugin update claude-task-worker@claude-task-worker` — プラグインの更新(反映にはセッション再起動が必要)
|
|
249
|
-
- `npm install -g claude-task-worker@latest` — CLI 本体の更新
|
|
250
|
-
- `codegraph upgrade` — CodeGraph CLI の更新(未インストール環境ではコマンドが無く失敗するため、`npm install -g @colbymchenry/codegraph@latest` へフォールバックする)
|
|
98
|
+
マーケットプレイス・プラグイン・CLI 本体・CodeGraph CLI をまとめて更新する。プラグインの反映にはセッション再起動が必要。
|
|
251
99
|
|
|
252
100
|
### 初期化
|
|
253
101
|
|
|
254
|
-
|
|
102
|
+
対象リポジトリで実行すると、GitHub ラベル・Issue テンプレート・GitHub Actions ワークフロー・設定ファイルが作成され、CodeGraph のインデックスが構築される。
|
|
255
103
|
|
|
256
104
|
```bash
|
|
257
105
|
claude-task-worker init # 既存ファイルは保護
|
|
258
|
-
claude-task-worker init --force #
|
|
106
|
+
claude-task-worker init --force # 強制上書き
|
|
259
107
|
```
|
|
260
108
|
|
|
261
109
|
作成されるラベル:
|
|
262
110
|
|
|
263
|
-
|
|
|
264
|
-
|
|
265
|
-
| `cc-update-issue` | Issue更新トリガー |
|
|
266
|
-
| `cc-answer-issue-questions` | Issue確認事項への回答トリガー |
|
|
267
|
-
| `cc-exec-issue` | Issue実行トリガー |
|
|
268
|
-
| `cc-fix-onetime` | PR修正トリガー(1回) |
|
|
111
|
+
| ラベル | 用途 |
|
|
112
|
+
|---|---|
|
|
269
113
|
| `cc-triage-scope` | トリアージ対象マーク(Issue/PR) |
|
|
270
|
-
| `cc-
|
|
114
|
+
| `cc-issue-created` | `create-issue` 由来の Issue マーク(`triage-created-issue` のトリガー) |
|
|
115
|
+
| `cc-update-issue` | Issue 更新トリガー |
|
|
116
|
+
| `cc-answer-issue-questions` | Issue 確認事項への回答トリガー |
|
|
117
|
+
| `cc-exec-issue` | Issue 実行トリガー |
|
|
118
|
+
| `cc-fix-onetime` | PR 修正トリガー(1回) |
|
|
119
|
+
| `cc-resolve-conflict` | PR コンフリクト解消トリガー |
|
|
271
120
|
| `cc-in-progress` | 処理中ステータス |
|
|
272
|
-
| `cc-need-human-check` |
|
|
273
|
-
| `cc-
|
|
274
|
-
| `cc-
|
|
275
|
-
| `cc-
|
|
276
|
-
| `cc-
|
|
277
|
-
| `cc-
|
|
278
|
-
| `cc-ui-design-
|
|
279
|
-
| `cc-ui-design
|
|
280
|
-
| `cc-ui-design` | デザインPRのマーカー(PR。`triage-pr` のレビュー観点切り替えに使う) |
|
|
121
|
+
| `cc-need-human-check` | 人間の確認が必要(付与中は Issue ワーカーの対象外) |
|
|
122
|
+
| `cc-pr-created` | PR 作成完了マーク |
|
|
123
|
+
| `cc-epic-issue` | エピックマーク(Issue: サブ全 Close で `epic-issue` 起動 / PR: リリースゲート対象) |
|
|
124
|
+
| `cc-release-ready` | エピックPRがリリース可能と判定されたマーク(実際のマージは人間が実施) |
|
|
125
|
+
| `cc-create-ui-design` | UIデザイン作成トリガー |
|
|
126
|
+
| `cc-ui-design-pr-created` | デザインPR作成済み・マージ待ちマーク |
|
|
127
|
+
| `cc-ui-design-ready` | デザイン反映済みマーク(再デザイン抑止) |
|
|
128
|
+
| `cc-ui-design` | デザインPRのマーカー(`triage-pr` のレビュー観点切り替え用) |
|
|
281
129
|
|
|
282
130
|
作成されるファイル:
|
|
283
131
|
|
|
284
|
-
- `.github/ISSUE_TEMPLATE/cc-triage-scope.yml` — `cc-triage-scope`
|
|
285
|
-
- `.github/workflows/assign-creator-on-cc-triage-scope.yml` — Issue
|
|
286
|
-
- `claude-task-worker.json` —
|
|
132
|
+
- `.github/ISSUE_TEMPLATE/cc-triage-scope.yml` — `cc-triage-scope` 付き Issue 作成用テンプレート
|
|
133
|
+
- `.github/workflows/assign-creator-on-cc-triage-scope.yml` — Issue 作成者の自動アサイン
|
|
134
|
+
- `claude-task-worker.json` — 設定ファイル。**ワーカーごとの既定値は書き出さない**(写経するとプラグイン更新で既定が変わっても古い値に固定されるため)。上書きしたいワーカーだけ手で追記する
|
|
287
135
|
|
|
288
|
-
CodeGraph
|
|
289
|
-
|
|
290
|
-
- グローバル gitignore(`$XDG_CONFIG_HOME/git/ignore`、未設定なら `~/.config/git/ignore`)へ `.codegraph/` を追記する(冪等)。`.codegraph/` はプロジェクトごとのローカルインデックスでコミット対象ではないが、対象リポジトリの `.gitignore` を汚さないためグローバル側に入れる
|
|
291
|
-
- `codegraph init` でインデックスを構築する。CodeGraph が未インストールでも `init` 全体は失敗せず、ログにエラーを出して続行する
|
|
136
|
+
CodeGraph のセットアップとして、グローバル gitignore(`~/.config/git/ignore`)へ `.codegraph/` を冪等に追記し、`codegraph init` を実行する。CodeGraph 未インストールでも `init` 全体は失敗しない。
|
|
292
137
|
|
|
293
138
|
## コマンド
|
|
294
139
|
|
|
295
140
|
```bash
|
|
296
|
-
claude-task-worker <command> [--epic <issue-number>]... [--label <label
|
|
141
|
+
claude-task-worker <command> [--epic <issue-number>]... [--label <label>]... [--project <name>]...
|
|
297
142
|
```
|
|
298
143
|
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
144
|
+
| コマンド | 内容 |
|
|
145
|
+
|---|---|
|
|
146
|
+
| 各ワーカー名 | 単一ワーカーを起動(`exec-issue` / `triage-pr` など。上記 Worker 表を参照) |
|
|
147
|
+
| `all` | 通常ワーカー9つを同時にポーリング(トリアージ系3つを除く) |
|
|
148
|
+
| `yolo` | 全ワーカーを同時にポーリング(`all` + `triage-created-issue` + `triage-pr` + `check-dependabot`) |
|
|
149
|
+
| `init` | ラベル・テンプレート・設定ファイルの作成と CodeGraph セットアップ |
|
|
150
|
+
| `install` / `update` | 上記「セットアップ」を参照 |
|
|
151
|
+
| `usage` | Claude API 使用状況(5時間/7日間の利用率とリセット時刻)を表示し、Slack にも通知 |
|
|
152
|
+
| `version` | CLI のバージョンを表示(`--version` / `-v` も可) |
|
|
302
153
|
|
|
303
|
-
|
|
154
|
+
### `--epic <issue-number>`
|
|
304
155
|
|
|
305
|
-
|
|
156
|
+
指定したエピック Issue のサブ Issue のみを処理対象に絞る。`all` / `yolo` と Issue 系ワーカーで有効。複数指定するといずれかのエピックを親に持つサブ Issue が対象になる(OR)。
|
|
306
157
|
|
|
307
158
|
```bash
|
|
308
|
-
claude-task-worker all --epic 100
|
|
309
|
-
claude-task-worker all --epic 100 --epic 200 # #100 または #200 の sub-issue
|
|
159
|
+
claude-task-worker all --epic 100 --epic 200
|
|
310
160
|
```
|
|
311
161
|
|
|
312
|
-
|
|
162
|
+
`epic-issue` ワーカーだけはエピック Issue 自体が処理対象なので、指定番号は「エピック Issue 自身の番号」として照合される。
|
|
313
163
|
|
|
314
|
-
|
|
164
|
+
### `--label <label>`
|
|
315
165
|
|
|
316
|
-
|
|
166
|
+
トリガーラベルに加えて指定ラベルが付いた Issue のみに絞る。複数指定すると全ラベルの AND。`--epic` と併用可能。ユーザーのスコープ指定なので、タスク完了時にワーカーが除去することはない。
|
|
317
167
|
|
|
318
168
|
```bash
|
|
319
|
-
claude-task-worker all --label priority-high
|
|
320
|
-
claude-task-worker all --label priority-high --label needs-design # 両方付いている Issue のみ
|
|
321
|
-
claude-task-worker yolo --epic 100 --epic 200 --label priority-high
|
|
169
|
+
claude-task-worker all --label priority-high --label needs-design
|
|
322
170
|
```
|
|
323
171
|
|
|
324
|
-
|
|
172
|
+
### `--project <name>`
|
|
325
173
|
|
|
326
|
-
|
|
174
|
+
指定したプロジェクト(またはグループ、`all`)へ [herdr](https://herdr.dev) 経由でコマンドをディスパッチする。指定するとCLIはワーカーを直接実行せず、対象プロジェクトごとに独立した herdr ワークスペースを作ってそこでコマンドを実行する。
|
|
327
175
|
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
- グループ名: `config.json` の `projectGroups` に登録された、複数プロジェクト名をまとめたグループ名
|
|
334
|
-
- `all`: `config.json` の `projects` に登録された全プロジェクトが対象になる予約語(`projects` / `projectGroups` のキーとして使用不可)
|
|
176
|
+
```bash
|
|
177
|
+
claude-task-worker all --project all
|
|
178
|
+
claude-task-worker all --project frontend
|
|
179
|
+
claude-task-worker exec-issue --project app-a --epic 100 --label priority-high
|
|
180
|
+
```
|
|
335
181
|
|
|
336
|
-
|
|
182
|
+
プロジェクト名・グループ名は `$XDG_CONFIG_HOME/claude-task-worker/config.json`(未設定なら `~/.config/claude-task-worker/config.json`)で定義する。`all` は全プロジェクトを指す予約語。
|
|
337
183
|
|
|
338
184
|
```json
|
|
339
185
|
{
|
|
@@ -341,8 +187,7 @@ claude-task-worker yolo --epic 100 --epic 200 --label priority-high
|
|
|
341
187
|
"advisor": false,
|
|
342
188
|
"projects": {
|
|
343
189
|
"app-a": "/Users/me/repos/app-a",
|
|
344
|
-
"app-b": "/Users/me/repos/app-b"
|
|
345
|
-
"app-c": "/Users/me/repos/app-c"
|
|
190
|
+
"app-b": "/Users/me/repos/app-b"
|
|
346
191
|
},
|
|
347
192
|
"projectGroups": {
|
|
348
193
|
"frontend": ["app-a", "app-b"]
|
|
@@ -350,320 +195,162 @@ claude-task-worker yolo --epic 100 --epic 200 --label priority-high
|
|
|
350
195
|
}
|
|
351
196
|
```
|
|
352
197
|
|
|
353
|
-
|
|
198
|
+
ディスパッチャーの機能:
|
|
354
199
|
|
|
355
|
-
|
|
200
|
+
- **一斉起動**: プロジェクトごとに `ctw:<プロジェクト名>` ラベルのワークスペースを作り、そこで(`--project` を除いた)同じコマンドを実行する。ワーカーが実際に起動したかを確認し、起動しなければ再送・失敗判定する
|
|
201
|
+
- **稼働一覧**: プロジェクト名・ワークスペースID・ペインID・ステータス・稼働時間をステータステーブルに描画する
|
|
202
|
+
- **一括停止**: SIGTERM/SIGINT で全セッションへ ctrl-c を送り、終了を待ってワークスペースを閉じる。もう一度送ると強制終了
|
|
356
203
|
|
|
357
|
-
|
|
204
|
+
`--project` と併用できないコマンド: `init` / `install` / `update` / `usage` / `version`
|
|
358
205
|
|
|
359
|
-
|
|
206
|
+
## 設定ファイル
|
|
360
207
|
|
|
361
|
-
|
|
362
|
-
- **稼働一覧**: 各セッションのプロジェクト名・ワークスペースID・ペインID・ステータス・稼働時間をステータステーブルとして定期的に画面へ描画し、対象プロセスが終了したセッションは自動的に一覧から除去する
|
|
363
|
-
- **一括停止**: SIGTERM/SIGINTを受けると、稼働中の全セッションへ ctrl-c を送信して各プロジェクトのコマンドを終了させ、終了を待ってからherdrワークスペースを閉じる(`mode: "herdr"` でワーカーが作ったタスクタブもワークスペースごと片付く)。もう一度シグナルを送ると強制終了する
|
|
208
|
+
グローバル設定は `config.json`(上記)、リポジトリ設定は実行ディレクトリ直下の `claude-task-worker.json`。
|
|
364
209
|
|
|
365
|
-
|
|
210
|
+
### `config.json`(グローバル)
|
|
366
211
|
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
```
|
|
212
|
+
| キー | 既定 | 説明 |
|
|
213
|
+
|---|---|---|
|
|
214
|
+
| `projects` | - | プロジェクト名 → 絶対パス |
|
|
215
|
+
| `projectGroups` | `{}` | グループ名 → プロジェクト名配列 |
|
|
216
|
+
| `mode` | `"default"` | タスクの実行形態(下記) |
|
|
217
|
+
| `advisor` | `false` | `--advisor` を渡すか(下記) |
|
|
374
218
|
|
|
375
|
-
|
|
219
|
+
#### `mode`(タスクの実行形態)
|
|
376
220
|
|
|
377
|
-
|
|
221
|
+
全ワーカー・全プロジェクトに一括適用される(個別指定は不可)。
|
|
378
222
|
|
|
379
223
|
| `mode` | 挙動 |
|
|
380
|
-
|--------|------|
|
|
381
|
-
| `"default"`(既定) | タスクを `claude -p`(非対話 print モード)の子プロセスとして実行する |
|
|
382
|
-
| `"herdr"` | タスクを herdr のタブ内で TUI セッションとして実行する。実行中の様子をherdrで覗ける |
|
|
383
|
-
|
|
384
|
-
```json
|
|
385
|
-
{
|
|
386
|
-
"mode": "herdr",
|
|
387
|
-
"projects": { "app-a": "/Users/me/repos/app-a" }
|
|
388
|
-
}
|
|
389
|
-
```
|
|
390
|
-
|
|
391
|
-
`mode: "herdr"` のときの1タスクの流れ:
|
|
392
|
-
|
|
393
|
-
1. worktree を作成し、`ctw:<プロジェクト名>:#<Issue/PR番号>` ラベルのタブを作ってから、そのルートペインで `herdr agent start --kind claude` を使って claude を TUI 起動する(タブを先に作ってからその中で起動するため、ユーザーが見ているタブにペインが割り込むことはない)。`agent start` は claude が検出され入力待ちになるまで同期的にブロックするため、起動確認の別ポーリングは不要
|
|
394
|
-
2. herdr が持つ agent ステータスを監視し、`done`(未確認完了)または `working` → `idle` の遷移をタスク完了とみなす。ワーカーのタスクタブは誰も開かないため、完了したタスクは通常 `done` として観測される
|
|
395
|
-
3. 完了したら claude のセッション transcript(`~/.claude/projects/*/<sessionId>.jsonl`)から最終レポートを回収して通知に使い、タブを閉じてラベル・worktree を後片付けする。transcript を引けない場合のみペインの内容にフォールバックする
|
|
396
|
-
|
|
397
|
-
補足:
|
|
398
|
-
|
|
399
|
-
- タブは `--project` で起動した場合そのプロジェクトのワークスペース内に作られる(herdrが各ペインへ注入する `HERDR_WORKSPACE_ID` を利用する)
|
|
400
|
-
- `blocked`(claudeが入力待ち)になってもタスクは自動失敗にせず待機し続ける。ステータステーブルに `running:blocked` と表示されるので、herdrのタブを開いて直接対応できる
|
|
401
|
-
- `mode: "herdr"` でherdrが未インストール・未起動の場合、ワーカーは起動時にエラー終了する(`"default"` へ勝手にフォールバックしない)
|
|
402
|
-
- **タスク完了時の通知音はワーカー側から止められない**。herdr のエージェント状態遷移音を再生するのは herdr サーバープロセスで、`HERDR_DISABLE_SOUND` もそのプロセスの環境変数として読まれるため、タスクペインへ渡しても効かない(socket API にもペイン単位のミュートは無い)。無音にしたい場合は herdr 側の設定で行う:
|
|
403
|
-
|
|
404
|
-
```toml
|
|
405
|
-
# ~/.config/herdr/config.toml
|
|
406
|
-
[ui.sound]
|
|
407
|
-
enabled = false
|
|
408
|
-
```
|
|
409
|
-
|
|
410
|
-
適用は `herdr server reload-config`。この設定は herdr サーバー全体に効くため、ワーカー以外の対話セッションの完了音も鳴らなくなる(`[ui.sound.agents] claude = "off"` でも実質同じ範囲)。ワーカーだけを無音にしたい場合は、`HERDR_DISABLE_SOUND=1 herdr --session <name>` で別セッションを起動し、その中でディスパッチャーを動かす
|
|
411
|
-
|
|
412
|
-
### `advisor`(アドバイザーモデル)
|
|
413
|
-
|
|
414
|
-
`config.json` のトップレベルに `advisor: true` を書くと、ワーカーがタスクを起動する際、Claude CLI へ `--advisor <model>` を渡すようになる。渡すモデルはリポジトリ直下の `claude-task-worker.json` の `workers.<ワーカー名>.advisorModel`([ワーカーごとの設定](#ワーカーごとの設定))で指定する。`mode` と同じくトップレベル一括で、プロジェクト単位・ワーカー単位のオン/オフはできない。
|
|
415
|
-
|
|
416
|
-
| `advisor` | 挙動 |
|
|
417
224
|
|---|---|
|
|
418
|
-
| `
|
|
419
|
-
| `
|
|
420
|
-
|
|
421
|
-
```json
|
|
422
|
-
{
|
|
423
|
-
"advisor": true,
|
|
424
|
-
"projects": { "app-a": "/Users/me/repos/app-a" }
|
|
425
|
-
}
|
|
426
|
-
```
|
|
427
|
-
|
|
428
|
-
advisor は main モデル以上の能力を持つモデルである必要がある(Claude CLI 側の制約)。そのため `advisorModel` の既定値は、`model` が `sonnet` のワーカーは `opus`、`model` が `opus` のワーカー(`exec-issue` / `fix-review-point` / `answer-issue-questions` / `create-issue` / `create-ui-design`)は空文字(=advisor なし)にしてある。
|
|
429
|
-
|
|
430
|
-
### exec-issue
|
|
431
|
-
|
|
432
|
-
`cc-exec-issue` ラベルが付いた自分にアサインされたIssueを定期取得し、Claude Codeで処理を実行する。(デフォルト1分間隔)
|
|
433
|
-
|
|
434
|
-
- `cc-in-progress` ラベルを付与
|
|
435
|
-
- `/claude-task-worker:exec-issue <issue番号>` を非同期で実行
|
|
436
|
-
- 親Issueがある場合は `cc-epic-<親Issue番号>` ブランチから worktree を切って実行
|
|
437
|
-
- 完了後、`cc-exec-issue` ラベルを除去し、`cc-pr-created` ラベルを付与
|
|
438
|
-
|
|
439
|
-
### fix-review-point
|
|
440
|
-
|
|
441
|
-
`cc-fix-onetime` ラベルが付いたPRを定期取得し、Claude Codeで修正を実行する。(1分間隔)
|
|
442
|
-
|
|
443
|
-
- CI完了済みで `cc-in-progress` がないPRが対象
|
|
444
|
-
- 完了後、`cc-fix-onetime` ラベルを除去
|
|
445
|
-
- 完了後、設定ファイルに `fixReviewPointCallbackCommentMessage` が設定されていればPRにコメント投稿
|
|
446
|
-
|
|
447
|
-
### create-issue
|
|
448
|
-
|
|
449
|
-
`cc-triage-scope` ラベルが付いており、かつ Open な blockedBy Issue を持たないIssueを定期取得し、Claude CodeでIssue作成を実行する。(1分間隔)
|
|
450
|
-
|
|
451
|
-
`init` コマンドで作成されるIssueテンプレートを使えば、`cc-triage-scope` ラベル付与と作成者アサインが自動で行われる。ブロック中の依存 Issue が残っている間はワーカーが拾わず、依存がすべて Close された時点で処理が開始される。
|
|
225
|
+
| `"default"` | タスクを `claude -p`(非対話 print モード)の子プロセスとして実行 |
|
|
226
|
+
| `"herdr"` | タスクを herdr のタブ内で TUI セッションとして実行。実行中の様子を herdr で覗ける |
|
|
452
227
|
|
|
453
|
-
|
|
454
|
-
- 完了後、`cc-issue-created` ラベルを付与して triage-created-issue ワーカーに引き継ぎ
|
|
228
|
+
`"herdr"` では、worktree 作成後に `ctw:<プロジェクト名>:#<番号>` ラベルのタブを作り、そのルートペインで claude を TUI 起動する。agent ステータスを監視して完了を検知し、セッション transcript から最終レポートを回収して通知に使う。`blocked`(claude が入力待ち)になっても自動失敗にせず待機し、ステータステーブルに `running:blocked` と表示するので herdr のタブを開いて直接対応できる。herdr が未インストール・未起動なら起動時にエラー終了する(`"default"` へフォールバックしない)。
|
|
455
229
|
|
|
456
|
-
|
|
230
|
+
> ℹ️ タスク完了時の通知音はワーカー側から止められない(音を鳴らすのは herdr サーバープロセスで、`HERDR_DISABLE_SOUND` もそのプロセスの環境変数として読まれるため)。無音にするには `~/.config/herdr/config.toml` に `[ui.sound] enabled = false` を書いて `herdr server reload-config` する。ただし herdr サーバー全体に効くため、対話セッションの完了音も鳴らなくなる。
|
|
457
231
|
|
|
458
|
-
`
|
|
232
|
+
#### `advisor`(アドバイザーモデル)
|
|
459
233
|
|
|
460
|
-
|
|
234
|
+
`true` にすると、タスク起動時に Claude CLI へ `--advisor <model>` を渡す。渡すモデルは `claude-task-worker.json` の `workers.<名前>.advisorModel`。`mode` と同じくトップレベル一括で、プロジェクト単位・ワーカー単位のオン/オフはできない。空文字が指定されたワーカーには渡さない。
|
|
461
235
|
|
|
462
|
-
`
|
|
236
|
+
advisor は main モデル以上の能力が必要(Claude CLI の制約)。全ワーカーの既定 `model` が `opus` なので、`advisorModel` の既定値はすべて空文字(advisor なし)。`model` を `sonnet` 等へ下げたワーカーには `advisorModel: "opus"` を指定できる。
|
|
463
237
|
|
|
464
|
-
|
|
238
|
+
### `claude-task-worker.json`(リポジトリ)
|
|
465
239
|
|
|
466
|
-
|
|
467
|
-
|
|
468
|
-
`
|
|
469
|
-
|
|
470
|
-
|
|
471
|
-
- `cc-create-ui-design` / `cc-ui-design-pr-created`(UIデザイン先行フローの進行中マーカー)が付いているIssueも除外。トリガーラベルはトリアージ完了後に付き直されるため、除外しないとデザインPRのマージまで再トリアージが走り続け、パターンE-1の前提ゲートが満たされない再実行が `cc-exec-issue` を付けてデザイン合意前に実装を始めてしまう
|
|
472
|
-
- 確認事項の有無に応じて `cc-answer-issue-questions` または `cc-exec-issue` ラベルを付与(または不要ならクローズ)
|
|
473
|
-
|
|
474
|
-
### triage-pr
|
|
475
|
-
|
|
476
|
-
`cc-triage-scope` ラベルが付いたPRを定期取得し、Claude Codeでトリアージを実行する。(1分間隔)
|
|
477
|
-
|
|
478
|
-
- `cc-fix-onetime` が付いているPRは除外
|
|
479
|
-
- `cc-resolve-conflict` が付いているPRは除外
|
|
480
|
-
- `cc-release-ready` が付いているPRは除外(リリースゲート判定済みのため再トリアージしない)
|
|
481
|
-
- マージ可能と判定した際、`cc-epic-issue` が付いたエピックPRはマージせず `cc-release-ready` ラベルを付与する(リリースのためのマージは人間の判断に委ねる)。通常PRは従来どおりマージする
|
|
482
|
-
|
|
483
|
-
### resolve-conflict
|
|
484
|
-
|
|
485
|
-
`cc-resolve-conflict` ラベルが付いたPRを定期取得し、`/claude-task-worker:resolve-pr-conflict` を実行してコンフリクト解消を行う。(1分間隔)
|
|
486
|
-
|
|
487
|
-
- 完了後、`cc-resolve-conflict` ラベルを除去
|
|
488
|
-
|
|
489
|
-
### check-dependabot
|
|
490
|
-
|
|
491
|
-
`dependencies` ラベルが付いたDependabot PRを定期取得し、依存ライブラリのバージョンアップ内容を確認する。(1時間間隔)
|
|
492
|
-
|
|
493
|
-
- `cc-triage-scope` が付いているPRは除外
|
|
494
|
-
- 完了後、`cc-triage-scope` ラベルを付与して triage-pr ワーカーに引き継ぎ
|
|
495
|
-
|
|
496
|
-
### epic-issue
|
|
497
|
-
|
|
498
|
-
`cc-epic-issue` ラベルが付いた親Issueを定期取得し、紐づくサブIssueがすべて Close されたタイミングで `/claude-task-worker:create-epic-pr` を起動してエピックPRを作成する。(デフォルト5分間隔)
|
|
499
|
-
|
|
500
|
-
- `cc-pr-created` が付いているIssueは除外
|
|
501
|
-
- サブIssueが存在しない、または1つでも未Closeのものがあればスキップ
|
|
502
|
-
- 完了後、親Issueに `cc-pr-created` ラベルを付与
|
|
503
|
-
- 完了後、作成されたエピックPR(`cc-epic-<親Issue番号>` ブランチ)に `cc-epic-issue` と `cc-triage-scope` ラベルを付与し、triage-pr のリリースゲート判定に引き継ぐ
|
|
504
|
-
|
|
505
|
-
### create-ui-design
|
|
506
|
-
|
|
507
|
-
`cc-create-ui-design` ラベルが付いたIssueを定期取得し、`/claude-task-worker:create-ui-design` を起動して Pencil デザイン(`.pen` + スナップショットPNG)を作成し、デザインのみのPRを作成する。(デフォルト1分間隔)
|
|
508
|
-
|
|
509
|
-
- `claude-task-worker.json` の `uiDesign.enabled` が `true` の場合のみ起動する(`false` なら1行ログを出して即終了)
|
|
510
|
-
- `cc-ui-design-pr-created` / `cc-ui-design-ready` が付いているIssueは除外
|
|
511
|
-
- デザインPRは `cc-ui-design-<Issue番号>` の固定名ブランチを head とする(後段の `apply-ui-design` が一意に特定するため)
|
|
512
|
-
- 完了後、デザインPRの実在を確認できた場合のみ、PRに `cc-ui-design`(`uiDesign.yolo` が `true` の場合は `cc-triage-scope` も)、Issueに `cc-ui-design-pr-created` を付与する
|
|
513
|
-
- スキルが「デザイン不要」と判定した場合(`cc-ui-design-ready` 付与済み)は完了扱いとし、そのまま実装フェーズへ流す
|
|
514
|
-
- PRの実在を確認できない場合は `cc-need-human-check` を付与してIssueにコメントを残す
|
|
515
|
-
|
|
516
|
-
### apply-ui-design
|
|
517
|
-
|
|
518
|
-
`cc-ui-design-pr-created` ラベルが付いたIssueを定期取得し、デザインPRのマージ後に `/claude-task-worker:apply-ui-design` を起動して Issue description へデザイン参照セクション(`## UIデザイン`)を書き戻す。(デフォルト5分間隔)
|
|
519
|
-
|
|
520
|
-
- `claude-task-worker.json` の `uiDesign.enabled` が `true` の場合のみ起動する
|
|
521
|
-
- `cc-ui-design-ready` / `cc-exec-issue` が付いているIssueは除外
|
|
522
|
-
- preflight でデザインPR(`cc-ui-design-<Issue番号>` を head とするPR)の状態を確認し、`OPEN` の間はスキップしてマージを待つ
|
|
523
|
-
- 未マージのままクローズされた場合・PRが見つからない場合は `cc-need-human-check` を付与してスキップする
|
|
524
|
-
- 完了後、description に `## UIデザイン` セクションと `.pen` パスが載っていることを検証できた場合のみ `cc-ui-design-ready` と `cc-exec-issue` を付与する
|
|
525
|
-
|
|
526
|
-
### all
|
|
527
|
-
|
|
528
|
-
通常ワーカー9つ(exec-issue, fix-review-point, create-issue, update-issue, answer-issue-questions, resolve-conflict, epic-issue, create-ui-design, apply-ui-design)を同時にポーリングする。`--epic` / `--label` オプションでIssue系ワーカーの処理対象を絞り込み可能(どちらも複数指定可)。UIデザイン系2ワーカーは `uiDesign.enabled` が `false` なら起動しない。
|
|
240
|
+
| キー | 型 | 既定 | 説明 |
|
|
241
|
+
|---|---|---|---|
|
|
242
|
+
| `fixReviewPointCallbackCommentMessage` | string | - | `fix-review-point` 完了時に PR へ投稿するコメント(未設定なら投稿しない) |
|
|
243
|
+
| `uiDesign` | object | `{ "enabled": false, "designDir": "designs", "yolo": false }` | UIデザイン先行ワークフロー(下記) |
|
|
244
|
+
| `workers` | object | `{}` | ワーカーごとの上書き設定(下記) |
|
|
529
245
|
|
|
530
|
-
|
|
246
|
+
#### ワーカーごとの設定
|
|
531
247
|
|
|
532
|
-
|
|
248
|
+
未指定のワーカー・フィールドは既定値にフォールバックする。
|
|
533
249
|
|
|
534
|
-
|
|
250
|
+
| フィールド | 型 | 説明 |
|
|
251
|
+
|---|---|---|
|
|
252
|
+
| `skill` | string | Claude CLI の `-p` に渡すスラッシュコマンド。`"<skill> <番号>"` の形で起動される |
|
|
253
|
+
| `model` | string | `--model` の値(`sonnet` / `opus` / `haiku`) |
|
|
254
|
+
| `advisorModel` | string | `--advisor` の値。空文字なら advisor なし。`config.json` の `advisor: true` のときだけ参照される |
|
|
255
|
+
| `effort` | string | `--effort` の値(`high` / `medium` / `low`) |
|
|
256
|
+
| `pollingIntervalSeconds` | number | ポーリング間隔(秒) |
|
|
257
|
+
| `cooldownSeconds` | number | タスク完了後にポーリングを止める時間(秒)。`0` でなし |
|
|
258
|
+
| `maxConcurrentTasks` | number | 同時実行できるタスクの最大数 |
|
|
535
259
|
|
|
536
|
-
|
|
260
|
+
既定値(`skill` は「[Worker とスキルの対応](#worker-とスキルの対応)」を参照。`effort` は全て `high`、`cooldownSeconds` は `0`、`maxConcurrentTasks` は `1`):
|
|
537
261
|
|
|
538
|
-
|
|
262
|
+
| ワーカー | `model` | `advisorModel` | `pollingIntervalSeconds` |
|
|
263
|
+
|---|---|---|---|
|
|
264
|
+
| `exec-issue` / `fix-review-point` / `answer-issue-questions` / `create-issue` / `update-issue` / `resolve-conflict` / `create-ui-design` / `triage-created-issue` / `triage-pr` | `opus` | `""`(なし) | 60 |
|
|
265
|
+
| `epic-issue` / `apply-ui-design` | `opus` | `""`(なし) | 300 |
|
|
266
|
+
| `check-dependabot` | `opus` | `""`(なし) | 3600 |
|
|
267
|
+
| (未知のワーカー名) | `opus` | `""`(なし) | 60 |
|
|
539
268
|
|
|
540
|
-
|
|
269
|
+
設定例:
|
|
541
270
|
|
|
542
|
-
```
|
|
543
|
-
|
|
271
|
+
```json
|
|
272
|
+
{
|
|
273
|
+
"workers": {
|
|
274
|
+
"exec-issue": { "model": "opus", "cooldownSeconds": 600, "maxConcurrentTasks": 3 },
|
|
275
|
+
"fix-review-point": { "model": "sonnet", "advisorModel": "opus", "maxConcurrentTasks": 2 },
|
|
276
|
+
"triage-pr": { "effort": "medium", "pollingIntervalSeconds": 120 },
|
|
277
|
+
"check-dependabot": { "model": "haiku", "pollingIntervalSeconds": 7200 }
|
|
278
|
+
}
|
|
279
|
+
}
|
|
544
280
|
```
|
|
545
281
|
|
|
546
|
-
|
|
547
|
-
- `claude plugin install claude-task-worker@claude-task-worker` — プラグインのインストール
|
|
548
|
-
- `npm install -g claude-task-worker@latest` — CLI 本体のグローバルインストール
|
|
549
|
-
- `npm install -g @colbymchenry/codegraph@latest` — CodeGraph CLI のインストール
|
|
282
|
+
## ワークフロー
|
|
550
283
|
|
|
551
|
-
|
|
284
|
+
### Epic(親Issue)連携
|
|
552
285
|
|
|
553
|
-
|
|
286
|
+
親 Issue(Issue Dependencies の Parent)を持つサブ Issue を処理する場合、ワーカーはデフォルトブランチではなく `cc-epic-<親Issue番号>` ブランチから worktree を作成する。エピック単位でブランチをまとめることで、サブ Issue ごとのPRを単一の統合ブランチへ集約できる。エピックブランチが remote に無ければデフォルトブランチから自動派生して push される。
|
|
554
287
|
|
|
555
|
-
`claude-task-worker`
|
|
288
|
+
サブ Issue がすべて Close されると `epic-issue` ワーカーが `/claude-task-worker:create-epic-pr` を起動し、エピックブランチからまとめてPRを作る。エピックPRは `triage-pr` がマージ可能と判定してもマージせず `cc-release-ready` を付けるだけで、実際のマージ(リリース)は人間に委ねられる。
|
|
556
289
|
|
|
557
|
-
|
|
558
|
-
claude-task-worker update
|
|
559
|
-
```
|
|
560
|
-
|
|
561
|
-
- `claude plugin marketplace update claude-task-worker` — マーケットプレイスの更新
|
|
562
|
-
- `claude plugin update claude-task-worker@claude-task-worker` — プラグインの更新(反映にはセッション再起動が必要)
|
|
563
|
-
- `npm install -g claude-task-worker@latest` — CLI 本体の更新
|
|
564
|
-
- `codegraph upgrade` — CodeGraph CLI の更新(失敗時は `npm install -g @colbymchenry/codegraph@latest` へフォールバック)
|
|
290
|
+
### UIデザイン先行ワークフロー
|
|
565
291
|
|
|
566
|
-
|
|
292
|
+
UI実装 Issue について、実装の前に Pencil(`.pen`)でデザインを作り、独立したPRとしてマージしてから実装へ進むフロー。デザインを実装PRとは別に単体でレビュー・合意でき、合意済みデザインがリポジトリに永続化される。
|
|
567
293
|
|
|
568
|
-
|
|
294
|
+
`uiDesign.enabled` によるオプトインで、既定(`false`)では2つのワーカーが起動しないため、Pencil を使っていないリポジトリの挙動は本機能の追加前と完全に一致する。
|
|
569
295
|
|
|
570
|
-
|
|
296
|
+
| キー | 既定 | 意味 |
|
|
297
|
+
|---|---|---|
|
|
298
|
+
| `uiDesign.enabled` | `false` | 有効化。`false` の間は `triage-created-issue` がUI判定を行わず、2つのワーカーも起動しない |
|
|
299
|
+
| `uiDesign.designDir` | `"designs"` | `.pen` とスナップショットの配置先(リポジトリルートからの相対パス) |
|
|
300
|
+
| `uiDesign.yolo` | `false` | デザインPRを自動レビュー・自動マージへ流すか。`true` のときだけデザインPRに `cc-triage-scope` を付ける |
|
|
571
301
|
|
|
572
|
-
```
|
|
573
|
-
|
|
574
|
-
|
|
575
|
-
|
|
302
|
+
```text
|
|
303
|
+
cc-issue-created + triage-created-issue(ルーティング)
|
|
304
|
+
├─ UI実装タスクでない → cc-exec-issue(従来どおり)
|
|
305
|
+
└─ UI実装タスク → cc-create-ui-design
|
|
306
|
+
→ create-ui-design ワーカー
|
|
307
|
+
・.pen を作成/更新 + snapshots/ に PNG 出力
|
|
308
|
+
・ブランチ cc-ui-design-<N> を push しデザインPRを作成(Refs #N。closing keyword は使わない)
|
|
309
|
+
・PR に cc-ui-design、Issue に cc-ui-design-pr-created を付与
|
|
310
|
+
→ yolo: true → triage-pr / fix-review-point / resolve-conflict(既存フローでレビュー・マージ)
|
|
311
|
+
yolo: false → 人がデザインPRをレビュー・マージ
|
|
312
|
+
→ apply-ui-design ワーカー
|
|
313
|
+
・デザインPRが MERGED になるまで skip
|
|
314
|
+
・Issue description に「## UIデザイン」セクションを追記
|
|
315
|
+
・cc-ui-design-ready + cc-exec-issue を付与
|
|
316
|
+
→ exec-issue(デザインを参照元として実装)
|
|
576
317
|
```
|
|
577
318
|
|
|
578
|
-
`
|
|
579
|
-
|
|
580
|
-
## 設定ファイル
|
|
581
|
-
|
|
582
|
-
コマンドを実行したディレクトリ直下の `claude-task-worker.json` を読み込む。
|
|
583
|
-
|
|
584
|
-
| キー | 型 | デフォルト | 説明 |
|
|
585
|
-
|---|---|---|---|
|
|
586
|
-
| `fixReviewPointCallbackCommentMessage` | string | - | fix-review-point 完了時にPRへ投稿するコメント(未設定の場合は投稿しない) |
|
|
587
|
-
| `uiDesign` | object | `{ "enabled": false, "designDir": "designs", "yolo": false }` | UIデザイン先行ワークフローの設定(詳細は「[UIデザイン先行ワークフロー](#uiデザイン先行ワークフロー)」) |
|
|
588
|
-
| `workers` | object | `{}` | ワーカーごとに Claude CLI に渡すスキル、`--model` / `--advisor` / `--effort`、ポーリング間隔、クールダウン時間、最大同時実行数を上書きする設定(詳細は下記) |
|
|
589
|
-
|
|
590
|
-
### ワーカーごとの設定
|
|
591
|
-
|
|
592
|
-
`workers` キーにワーカー名ごとの設定オブジェクトを指定することで、Claude CLI の `-p` に渡すスキル(スラッシュコマンド)、`--model` / `--advisor` / `--effort`、ポーリング間隔、タスク完了後のクールダウン時間、最大同時実行数を個別に上書きできる。未指定のワーカー・フィールドは下記のワーカー別デフォルト値が使用される。
|
|
593
|
-
|
|
594
|
-
| ワーカー名 | デフォルト `skill` | デフォルト `model` | デフォルト `advisorModel` | デフォルト `effort` | デフォルト `pollingIntervalSeconds` | デフォルト `cooldownSeconds` | デフォルト `maxConcurrentTasks` |
|
|
595
|
-
|---|---|---|---|---|---|---|---|
|
|
596
|
-
| `answer-issue-questions` | `/claude-task-worker:answer-issue-questions` | `opus` | `""`(なし) | `high` | 60 | 0 | 1 |
|
|
597
|
-
| `create-issue` | `/claude-task-worker:create-issue-from-issue-number` | `opus` | `""`(なし) | `high` | 60 | 0 | 1 |
|
|
598
|
-
| `update-issue` | `/claude-task-worker:update-issue` | `opus` | `""`(なし) | `high` | 60 | 0 | 1 |
|
|
599
|
-
| `exec-issue` | `/claude-task-worker:exec-issue` | `opus` | `""`(なし) | `high` | 60 | 0 | 1 |
|
|
600
|
-
| `fix-review-point` | `/claude-task-worker:fix-review-point` | `opus` | `""`(なし) | `high` | 60 | 0 | 1 |
|
|
601
|
-
| `triage-created-issue` | `/claude-task-worker:triage-created-issue` | `sonnet` | `opus` | `high` | 60 | 0 | 1 |
|
|
602
|
-
| `triage-pr` | `/claude-task-worker:triage-pr` | `sonnet` | `opus` | `high` | 60 | 0 | 1 |
|
|
603
|
-
| `resolve-conflict` | `/claude-task-worker:resolve-pr-conflict` | `opus` | `""`(なし) | `high` | 60 | 0 | 1 |
|
|
604
|
-
| `check-dependabot` | `/claude-task-worker:check-dependabot` | `sonnet` | `opus` | `high` | 3600 | 0 | 1 |
|
|
605
|
-
| `epic-issue` | `/claude-task-worker:create-epic-pr` | `sonnet` | `opus` | `high` | 300 | 0 | 1 |
|
|
606
|
-
| `create-ui-design` | `/claude-task-worker:create-ui-design` | `opus` | `""`(なし) | `high` | 60 | 0 | 1 |
|
|
607
|
-
| `apply-ui-design` | `/claude-task-worker:apply-ui-design` | `sonnet` | `opus` | `high` | 300 | 0 | 1 |
|
|
608
|
-
| (上記以外・未知のワーカー名) | (なし) | `sonnet` | `opus` | `high` | 60 | 0 | 1 |
|
|
609
|
-
|
|
610
|
-
各フィールドの値:
|
|
611
|
-
|
|
612
|
-
| フィールド | 型 | 説明 |
|
|
613
|
-
|---|---|---|
|
|
614
|
-
| `skill` | string | Claude CLI の `-p` に渡すスラッシュコマンド(例: `/claude-task-worker:exec-issue`, `/my-plugin:my-skill`)。ワーカーは `"<skill> <issue-or-pr-number>"` の形で Claude を起動する |
|
|
615
|
-
| `model` | string | Claude CLI の `--model` に渡す値(例: `sonnet`, `opus`, `haiku`) |
|
|
616
|
-
| `advisorModel` | string | Claude CLI の `--advisor` に渡す値(例: `opus`)。空文字を指定するとそのワーカーでは advisor を使わない。`config.json` の `advisor` が `true` のときだけ参照される(詳細は「[`advisor`(アドバイザーモデル)](#advisorアドバイザーモデル)」) |
|
|
617
|
-
| `effort` | string | Claude CLI の `--effort` に渡す値(例: `high`, `medium`, `low`) |
|
|
618
|
-
| `pollingIntervalSeconds` | number | GitHub をポーリングする間隔(秒)。正の数を指定する |
|
|
619
|
-
| `cooldownSeconds` | number | タスク完了後に次のポーリングを停止する時間(秒)。`0` でクールダウンなし |
|
|
620
|
-
| `maxConcurrentTasks` | number | そのワーカーが同時に実行できるタスクの最大数。正の整数を指定する |
|
|
621
|
-
|
|
622
|
-
設定例:
|
|
319
|
+
`triage-pr` は `cc-ui-design` 付きPRをコードレビューではなくデザイン向けの観点(差分が `.pen` とPNGに限定されているか、スナップショットからデザイン意図が読み取れるか、Issue 要件を満たしているか)で評価する。
|
|
623
320
|
|
|
624
|
-
|
|
625
|
-
{
|
|
626
|
-
"workers": {
|
|
627
|
-
"exec-issue": { "skill": "/my-plugin:exec-issue", "model": "opus", "advisorModel": "", "effort": "high", "pollingIntervalSeconds": 60, "cooldownSeconds": 600, "maxConcurrentTasks": 3 },
|
|
628
|
-
"fix-review-point": { "skill": "/claude-task-worker:fix-review-point", "model": "sonnet", "advisorModel": "opus", "effort": "high", "maxConcurrentTasks": 2 },
|
|
629
|
-
"triage-pr": { "effort": "medium", "pollingIntervalSeconds": 120 },
|
|
630
|
-
"check-dependabot": { "model": "haiku", "pollingIntervalSeconds": 7200 }
|
|
631
|
-
}
|
|
632
|
-
}
|
|
633
|
-
```
|
|
321
|
+
デザインが不要と判明した場合は `create-ui-design` が理由をコメントして `cc-ui-design-ready` + `cc-exec-issue` を付与し、人手を介さず実装へ復帰する。Pencil が使えない環境やデザインPRが却下された場合は `cc-need-human-check` で停止する。
|
|
634
322
|
|
|
635
323
|
## Slack通知
|
|
636
324
|
|
|
637
|
-
環境変数 `CLAUDE_TASK_WORKER_SLACK_WEBHOOK_URL` にSlack Incoming Webhook URL
|
|
325
|
+
環境変数 `CLAUDE_TASK_WORKER_SLACK_WEBHOOK_URL` に Slack Incoming Webhook URL を設定すると、各ワーカーのタスク完了時・失敗時に通知が送られる。未設定なら送信されない。
|
|
638
326
|
|
|
639
327
|
```bash
|
|
640
328
|
export CLAUDE_TASK_WORKER_SLACK_WEBHOOK_URL=https://hooks.slack.com/services/xxx/yyy/zzz
|
|
641
329
|
claude-task-worker all
|
|
642
330
|
```
|
|
643
331
|
|
|
644
|
-
通知にはClaude APIの使用状況(5時間/7
|
|
645
|
-
|
|
646
|
-
使用状況を組み立てる際、[RunCat Neo](https://kyome.io/runcat/) 用のスナップショットを `~/.claude/runcat-usage.json`(`RUNCAT_OUT_FILE` で変更可)へ一時ファイル + rename で原子的に書き出す。Webhook 未設定でも通知が no-op になるだけでスナップショットは更新される。使用状況の取得自体は `/tmp/claude-usage-cache.json` の360秒キャッシュを挟むため、値は最大6分古くなりうる。
|
|
332
|
+
通知には Claude API の使用状況(5時間/7日間の利用率とリセット時刻)も含まれる。使用状況の取得は macOS では `security`(Keychain)、それ以外では `~/.claude/.credentials.json` を使う。あわせて [RunCat Neo](https://kyome.io/runcat/) 用のスナップショットを `~/.claude/runcat-usage.json`(`RUNCAT_OUT_FILE` で変更可)へ原子的に書き出す(Webhook 未設定でも更新される)。取得結果は360秒キャッシュされるため、値は最大6分古くなりうる。
|
|
647
333
|
|
|
648
334
|
## プロセス管理
|
|
649
335
|
|
|
650
336
|
実行中のタスクはリアルタイムのステータステーブルで表示される。
|
|
651
337
|
|
|
652
338
|
- タスクID・タイトル・ステータス(running/completed/failed)・開始時刻・経過時間を表示
|
|
653
|
-
- `mode: "herdr"` では実行中の行に agent ステータスが併記される(`running:working` / `running:blocked
|
|
654
|
-
- 同一Issue/PRの重複実行を自動防止
|
|
655
|
-
- SIGTERM/SIGINTで全子プロセスをgraceful shutdown(もう一度送ると強制終了し、ラベル・worktree の後片付けを試みる)
|
|
656
|
-
- 前回の異常終了で残った worktree
|
|
339
|
+
- `mode: "herdr"` では実行中の行に agent ステータスが併記される(`running:working` / `running:blocked`)
|
|
340
|
+
- 同一 Issue/PR の重複実行を自動防止
|
|
341
|
+
- SIGTERM/SIGINT で全子プロセスを graceful shutdown(もう一度送ると強制終了し、ラベル・worktree の後片付けを試みる)
|
|
342
|
+
- 前回の異常終了で残った worktree はワーカー起動時に自動回収される(実行中タスク・対話セッションが掴んでいるものは保護される)
|
|
657
343
|
|
|
658
344
|
### タスク実行のガード
|
|
659
345
|
|
|
660
346
|
ワーカーは応答するユーザーがいない状態でスキルを起動するため、処理が未完のままセッションが終了してラベルだけ進む事故を防ぐガードを持つ。
|
|
661
347
|
|
|
662
|
-
- **バックグラウンド実行の無効化**: `CLAUDE_CODE_DISABLE_BACKGROUND_TASKS=1`
|
|
663
|
-
- **ツールの無効化**: `--disallowedTools` で `Monitor` / `ScheduleWakeup` / `AskUserQuestion` / `EnterPlanMode` / `Cron*` / `RemoteTrigger` / `EnterWorktree`
|
|
348
|
+
- **バックグラウンド実行の無効化**: `CLAUDE_CODE_DISABLE_BACKGROUND_TASKS=1` を全タスクへ注入し、Bash の `run_in_background` やサブエージェントの自動バックグラウンド化を止める
|
|
349
|
+
- **ツールの無効化**: `--disallowedTools` で `Monitor` / `ScheduleWakeup` / `AskUserQuestion` / `EnterPlanMode` / `Cron*` / `RemoteTrigger` / `EnterWorktree` を無効化する
|
|
664
350
|
- **自律実行原則の注入**: `--append-system-prompt` で「ユーザーに質問しない・全ステップを完遂してから終了する・曖昧なら安全側を選ぶ・サブエージェントの完了報告を検証する」および CodeGraph 優先のコード探索方針を注入する
|
|
665
|
-
- **完了検証**: exec-issue / epic-issue は PR の実在(または Issue のクローズ)を確認できるまで `cc-pr-created`
|
|
351
|
+
- **完了検証**: `exec-issue` / `epic-issue` は PR の実在(または Issue のクローズ)を確認できるまで `cc-pr-created` を付けず、確認できなければ `cc-need-human-check` を付けて Issue にコメントを残す
|
|
666
352
|
- **空振り検知**: 正常終了しても出力が空のセッションは失敗として分類し、失敗通知(stderr の末尾を含む)を送る
|
|
353
|
+
- **起動プロセスの後片付け**: スキル終了時に `Stop` フックが `docker compose down` と、worktree を作業ディレクトリに持つ残留プロセスの `SIGTERM` をベストエフォートで実行する(worktree はスキル完了直後に削除されるため、残留プロセスが削除の妨げになるのを防ぐ)
|
|
667
354
|
|
|
668
355
|
## 開発
|
|
669
356
|
|
|
@@ -672,17 +359,13 @@ npm install
|
|
|
672
359
|
npm run build # 型チェック(tsc --noEmit)+ esbuild で dist/index.js にバンドル
|
|
673
360
|
npm run dev # 型チェックの watch モード
|
|
674
361
|
npm test # ユニットテスト(node --experimental-strip-types --test)
|
|
675
|
-
npm run lint # ESLint
|
|
676
|
-
npm run
|
|
677
|
-
npm run format # Prettier で整形
|
|
678
|
-
npm run format:check # Prettier のチェックのみ
|
|
362
|
+
npm run lint # ESLint(--fix で自動修正)
|
|
363
|
+
npm run format # Prettier で整形(format:check でチェックのみ)
|
|
679
364
|
```
|
|
680
365
|
|
|
681
|
-
|
|
682
|
-
|
|
683
|
-
セキュリティ上の脆弱性は公開Issueではなく [SECURITY.md](./SECURITY.md) の手順で報告してください。
|
|
366
|
+
開発版をローカルから使う場合は `npm install && npm run build && npm link`。
|
|
684
367
|
|
|
685
|
-
|
|
368
|
+
コントリビューションを歓迎します。開発環境のセットアップ・PRの出し方は [CONTRIBUTING.md](./CONTRIBUTING.md)、バグ報告・機能要望は [Issue テンプレート](https://github.com/getty104/claude-task-worker/issues/new/choose) から。セキュリティ上の脆弱性は公開Issueではなく [SECURITY.md](./SECURITY.md) の手順で報告してください。参加にあたっては [CODE_OF_CONDUCT.md](./CODE_OF_CONDUCT.md)(Contributor Covenant)を遵守してください。
|
|
686
369
|
|
|
687
370
|
## ライセンス
|
|
688
371
|
|
package/dist/index.js
CHANGED
|
@@ -1602,8 +1602,8 @@ var DEFAULT_UI_DESIGN_CONFIG = {
|
|
|
1602
1602
|
};
|
|
1603
1603
|
var DEFAULT_WORKER_CONFIG = {
|
|
1604
1604
|
skill: "",
|
|
1605
|
-
model: "
|
|
1606
|
-
advisorModel: "
|
|
1605
|
+
model: "opus",
|
|
1606
|
+
advisorModel: "",
|
|
1607
1607
|
effort: "high",
|
|
1608
1608
|
pollingIntervalSeconds: 60,
|
|
1609
1609
|
cooldownSeconds: 0,
|
|
@@ -1657,8 +1657,8 @@ var WORKER_DEFAULTS = {
|
|
|
1657
1657
|
},
|
|
1658
1658
|
"triage-created-issue": {
|
|
1659
1659
|
skill: "/claude-task-worker:triage-created-issue",
|
|
1660
|
-
model: "
|
|
1661
|
-
advisorModel: "
|
|
1660
|
+
model: "opus",
|
|
1661
|
+
advisorModel: "",
|
|
1662
1662
|
effort: "high",
|
|
1663
1663
|
pollingIntervalSeconds: 60,
|
|
1664
1664
|
cooldownSeconds: 0,
|
|
@@ -1666,8 +1666,8 @@ var WORKER_DEFAULTS = {
|
|
|
1666
1666
|
},
|
|
1667
1667
|
"triage-pr": {
|
|
1668
1668
|
skill: "/claude-task-worker:triage-pr",
|
|
1669
|
-
model: "
|
|
1670
|
-
advisorModel: "
|
|
1669
|
+
model: "opus",
|
|
1670
|
+
advisorModel: "",
|
|
1671
1671
|
effort: "high",
|
|
1672
1672
|
pollingIntervalSeconds: 60,
|
|
1673
1673
|
cooldownSeconds: 0,
|
|
@@ -1684,8 +1684,8 @@ var WORKER_DEFAULTS = {
|
|
|
1684
1684
|
},
|
|
1685
1685
|
"check-dependabot": {
|
|
1686
1686
|
skill: "/claude-task-worker:check-dependabot",
|
|
1687
|
-
model: "
|
|
1688
|
-
advisorModel: "
|
|
1687
|
+
model: "opus",
|
|
1688
|
+
advisorModel: "",
|
|
1689
1689
|
effort: "high",
|
|
1690
1690
|
pollingIntervalSeconds: 3600,
|
|
1691
1691
|
cooldownSeconds: 0,
|
|
@@ -1693,8 +1693,8 @@ var WORKER_DEFAULTS = {
|
|
|
1693
1693
|
},
|
|
1694
1694
|
"epic-issue": {
|
|
1695
1695
|
skill: "/claude-task-worker:create-epic-pr",
|
|
1696
|
-
model: "
|
|
1697
|
-
advisorModel: "
|
|
1696
|
+
model: "opus",
|
|
1697
|
+
advisorModel: "",
|
|
1698
1698
|
effort: "high",
|
|
1699
1699
|
pollingIntervalSeconds: 300,
|
|
1700
1700
|
cooldownSeconds: 0,
|
|
@@ -1711,8 +1711,8 @@ var WORKER_DEFAULTS = {
|
|
|
1711
1711
|
},
|
|
1712
1712
|
"apply-ui-design": {
|
|
1713
1713
|
skill: "/claude-task-worker:apply-ui-design",
|
|
1714
|
-
model: "
|
|
1715
|
-
advisorModel: "
|
|
1714
|
+
model: "opus",
|
|
1715
|
+
advisorModel: "",
|
|
1716
1716
|
effort: "high",
|
|
1717
1717
|
pollingIntervalSeconds: 300,
|
|
1718
1718
|
cooldownSeconds: 0,
|
|
@@ -3814,8 +3814,8 @@ var LABELS = [
|
|
|
3814
3814
|
// vivid orange (H30 S100 L64 / L*75 C*66)
|
|
3815
3815
|
{ name: "cc-triage-scope", color: "ffffff" },
|
|
3816
3816
|
// white (L*100 C*0)
|
|
3817
|
-
{ name: "cc-answer-issue-questions", color: "
|
|
3818
|
-
// vivid
|
|
3817
|
+
{ name: "cc-answer-issue-questions", color: "c5adff" },
|
|
3818
|
+
// vivid pale violet (H258 S100 L84 / L*75 C*45)
|
|
3819
3819
|
{ name: "cc-exec-issue", color: "74089b" },
|
|
3820
3820
|
// vivid purple (H284 S90 L32 / L*30 C*80)
|
|
3821
3821
|
{ name: "cc-epic-issue", color: "0fffdf" },
|