
Claude CodeのTasks System機能を試してみた
こんにちは、せーのです。今日は Claude Code v2.1.16 で追加された Tasks System(タスクリスト)を使ってみましたので、共有します。(バージョン情報は CHANGELOG より)
この機能、単にタスクを管理するだけではなく、タスクを分解して複数のセッションで並行処理し、最後に統合するという使い方ができるのが面白いところです。今回は、ブログ用に用意したサンプル CLI(ポモドーロタイマー work-timer)を題材に、その流れを実際にやってみます。
どんな機能か
公式ドキュメントによると、タスクリストは「複雑なマルチステップ作業に取り組む場合、Claude がタスクリストを作成して進捗を追跡する」機能です。
Claude Code のツールとして以下の4つが追加されています(実際に使ってみると、これらのツールが呼ばれていることが確認できます)。
| ツール | 役割 |
|---|---|
| TaskCreate | 新規タスク作成 |
| TaskGet | 指定タスクの詳細取得 |
| TaskList | 全タスクの一覧と現在の状態を取得 |
| TaskUpdate | ステータス変更・依存関係・削除(v2.1.20〜)の更新 |
ターミナル上では以下のように表示されます。
- ✓ completed(完了)
- ■ open / pending(未着手)
- ▲ blocked by #N(ブロック中)
Ctrl+T でタスクリスト表示のオン/オフができます。
そして今回のポイントになるのが、CLAUDE_CODE_TASK_LIST_ID 環境変数です。これを設定すると、複数のセッション(ターミナルタブ)で同じタスクリストを共有できます。
CLAUDE_CODE_TASK_LIST_ID=my-project claude
つまり、一つのタスクをサブタスクに分解して、別々のセッションで並行して消化し、全部終わったら統合する、という流れが可能になります。
とりあえず動かしてみる(基本の確認)
まずは基本動作の確認です。サンプルプロジェクト work-timer のディレクトリで Claude Code を起動します(work-timer の説明は次のセクションで行います)。
$ CLAUDE_CODE_TASK_LIST_ID=blog-tasklist claude
タスクを作成すると、ターミナル下部にタスクリストが表示されます。/tasks コマンドまたは Ctrl+T でタスク一覧の表示/非表示を切り替えられます。
4 tasks (0 done, 4 open) · ctrl+t to hide tasks
◻ 概要セクションを作成する
◻ セットアップ手順を作成する
◻ 使い方セクションを作成する
◻ 参考リンクセクションを作成する
TaskUpdate でステータスを変更すると、表示が ✓ completed に変わります。これが基本の動作です。
今回使うサンプルプロジェクト(work-timer)
本題の「タスク分解→複数セッションで消化→統合」を説明するために、work-timer というサンプルプロジェクトを作ってみました。Claude Code の Tasklist 機能をブログで紹介するために用意した、ポモドーロ・テクニック用の CLI ツールです。
「本業はエンジニアで、週末に趣味で小さな CLI を GitHub で公開しているが、README をちゃんと書きたいと思いつつ後回しにしがち」という方を想定し「README を概要・セットアップ・使い方・参考リンクの4セクションに分けて整えたい」というタスクに取りかかる、というストーリーで進めて見ましょう。
work-timer の中身
work-timer は Python 3.10 以上で動く CLI です。主なコマンドは次のとおりです。
work-timer start… 作業セッション開始(デフォルト25分)。-d 30で分数指定可能work-timer break… 休憩(5分)。--longで長休憩(15分)work-timer status… 今日の進捗(完了ポモドーロ数と日次目標への進捗バー)work-timer history… セッション履歴。--weekで週間サマリーwork-timer config… 設定の確認・変更(作業時間、休憩時間、日次目標など)
技術スタックは Click(CLI)、Plyer(通知)、TOML(設定)です。実行中はターミナルに残り時間と進捗バーが表示され、セッション終了時にデスクトップ通知が出ます。

初期 README は意図的に最小限
サンプル用に、README はあえて最小限にしてあります。「後で整える」タスクを体験できるようにするためです。
# work-timer
ポモドーロタイマー CLI
## Install
pip install -e .
## Usage
work-timer start
この状態から、本題で「4セクションに分けて整える」タスクを Tasklist で進めていきます。
完成の目安: 各タスクでコードを読んだり調査したりした結果、完成した README の「使い方」セクションに、次のような内容が含まれていれば成功です。
- 隠しオプション(
--helpには出ないが便利な機能):work-timer start --focus(通知を抑制するフォーカスモード)、work-timer history --json(JSON 出力) - 設定項目(コードを読まないとわからないもの):
daily_goal、auto_start_break、notification_soundなど - データの保存場所: 履歴は
~/.work-timer/history.json、設定は~/.work-timer/config.toml
やってみた
一つのタスクを分解して、複数セッションで消化し、統合する
さて、ここからが本題です。
私が今回期待しているのは、タスクの分割・再編とセッションをまたいだ利用です。つまり、一つのやりたいタスクがあって、それをどうこなすか考えながらタスクリストに分解し、別タブや Explore セッションで空いているタスクをどんどん処理して、最後に統合して完了する、という流れです。
やりたいタスクを決める
「README をちゃんと書きたい」と思いつつ、どこから手をつければいいかわからず後回しにしていませんか?一度に全部やろうとすると負荷が高く、結局やらないまま……という経験、ありますよね。
今回は「work-timer の README を、概要・セットアップ・使い方・参考リンクの4セクションに分けて整える」というタスクを、Tasklist で分解して進めます。
タスクの分解(1セッション目)
まず、同一の CLAUDE_CODE_TASK_LIST_ID で Claude Code を起動します。
$ CLAUDE_CODE_TASK_LIST_ID=blog-tasklist claude
そして、タスク分解を依頼します。
work-timer の README を整えたい。以下の4セクションに分けてサブタスクを作成して:
1. 概要セクション
2. セットアップ手順
3. 使い方
4. 参考リンク
TaskCreate で各タスクを登録して。
すると、タスクが分解されてリストに並びました。すばらしい。
⏺ 4つのタスクを作成しました:
┌─────┬────────────────────────────────┬─────────┐
│ ID │ タスク │ 状態 │
├─────┼────────────────────────────────┼─────────┤
│ #1 │ 概要セクションを作成する │ pending │
├─────┼────────────────────────────────┼─────────┤
│ #2 │ セットアップ手順を作成する │ pending │
├─────┼────────────────────────────────┼─────────┤
│ #3 │ 使い方セクションを作成する │ pending │
├─────┼────────────────────────────────┼─────────┤
│ #4 │ 参考リンクセクションを作成する │ pending │
└─────┴────────────────────────────────┴─────────┘
次に、依存関係を設定します。
タスク2(セットアップ手順)はタスク1(概要セクション)の後に。
タスク3(使い方)はタスク2の後に。
タスク4(参考リンク)は最後に。依存関係を設定して。
すると、こう表示されます。
⏺ 依存関係を設定しました:
#1 概要セクション
↓
#2 セットアップ手順 (blocked by #1)
↓
#3 使い方 (blocked by #2)
↓
#4 参考リンク (blocked by #3)
4 tasks (0 done, 4 open) · ctrl+t to hide tasks
◻ 概要セクションを作成する
◻ セットアップ手順を作成する › blocked by #1
◻ 使い方セクションを作成する › blocked by #2
◻ 参考リンクセクションを作成する › blocked by #3
依存関係を設定したので、タスク2は1が終わってから、タスク3は2が終わってから、という順序が守られます。blocked by #N の表示が出ていますね。
別タブ・別セッションで空きタスクを処理
ここからが面白いところです。
新しいターミナルタブを開いて、同じ CLAUDE_CODE_TASK_LIST_ID で Claude Code を起動します。
# ターミナル2(別タブ)
$ CLAUDE_CODE_TASK_LIST_ID=blog-tasklist claude
そして、こう依頼します。
TaskList で今のタスク一覧を出して。まだ誰もやってない(pending の)タスクを1つ取って、それを実行して完了にして。
なんと、別のセッションでも同じタスクリストが見えています!
⏺ 現在のタスク一覧:
┌─────┬─────────────┬────────────────────────────────┬──────────┐
│ ID │ ステータス │ タスク │ ブロック │
├─────┼─────────────┼────────────────────────────────┼──────────┤
│ #1 │ in_progress │ 概要セクションを作成する │ - │
├─────┼─────────────┼────────────────────────────────┼──────────┤
│ #2 │ pending │ セットアップ手順を作成する │ #1待ち │
├─────┼─────────────┼────────────────────────────────┼──────────┤
│ #3 │ pending │ 使い方セクションを作成する │ #2待ち │
├─────┼─────────────┼────────────────────────────────┼──────────┤
│ #4 │ pending │ 参考リンクセクションを作成する │ #3待ち │
└─────┴─────────────┴────────────────────────────────┴──────────┘
タスクを進めていくと、進捗状況がリアルタイムで更新されます。
✽ セットアップ手順を作成中… (thinking)
⎿ ✔ 概要セクションを作成する
◼ セットアップ手順を作成する
◻ 使い方セクションを作成する › blocked by #2
◻ 参考リンクセクションを作成する › blocked by #3
これは便利です。タブごとに別のタスクを処理しながら、同じタスクリストで進捗を共有できます。
全タスク完了の確認
全てのタスクが終わったら、いずれかのセッションで確認します。
TaskList を出して、全部 completed か確認して
⏺ 実行結果:
┌─────┬─────────────┬────────────────────────────────┐
│ ID │ ステータス │ タスク │
├─────┼─────────────┼────────────────────────────────┤
│ #1 │ completed │ 概要セクションを作成する │
├─────┼─────────────┼────────────────────────────────┤
│ #2 │ completed │ セットアップ手順を作成する │
├─────┼─────────────┼────────────────────────────────┤
│ #3 │ completed │ 使い方セクションを作成する │
├─────┼─────────────┼────────────────────────────────┤
│ #4 │ completed │ 参考リンクセクションを作成する │
└─────┴─────────────┴────────────────────────────────┘
全て completed になりました!
統合して「本来のタスク完了」にする
最後に、一つのセッションで統合を依頼します。
4つのタスクで作成した各セクションをまとめて、README.md を完成させて。
すると、こう返ってきました。
⏺ README.md は既に完成しています。先ほどの4つのタスクで各セクションを順次追加し、
1つのファイルにまとめました。
現在の構成:
# work-timer
├── 概要 (タスク#1で作成)
├── セットアップ (タスク#2で作成)
│ ├── 必要環境
│ └── インストール
├── 使い方 (タスク#3で作成)
│ ├── 基本コマンド
│ ├── 進捗確認
│ └── 設定
├── 参考リンク (タスク#4で作成)
└── ライセンス
なんということでしょう。4つのサブタスクで作成した各セクションが、すでに一つの README.md にまとまっていました。各タスクを順番に処理した結果、自然と統合された形になっていたのです。きちんと実行できました。
完成した README:
work-timer
シンプルなポモドーロタイマー CLI ツール。
概要
work-timer は、ポモドーロ・テクニックを活用した集中作業をサポートするコマンドラインツールです。
主な機能:
- 作業セッション(デフォルト25分)と休憩セッション(5分/> 15分)の管理
- リアルタイムのタイマー表示とデスクトップ通知
- 日次・週次の作業履歴と進捗トラッキング
- カスタマイズ可能な設定(作業時間、休憩時間、日次目標など)
セットアップ
必要環境
- Python 3.10 以上
インストール
# リポジトリをクローン git clone https://github.com/makoto/work-timer.git cd work-timer # 開発モードでインストール pip install -e .インストール後、
work-timerコマンドが使用可能になります。使い方
基本コマンド
# 作業セッションを開始(デフォルト25分) work-timer start # 作業時間を指定して開始 work-timer start -d 30 # 休憩を開始(デフォルト5分) work-timer break # 長い休憩を開始(デフォルト15分) work-timer break --long進捗確認
セッション履歴は
~/.work-timer/history.json> に保存されます。# 今日の進捗を表示 work-timer status # セッション履歴を表示 work-timer history # 週間サマリーを表示 work-timer history --week # 履歴を JSON 形式で出力(他ツール連携用) work-timer history --json隠しオプション(--help には非表示)
# フォーカスモード: 通知を抑制して作業に集中 work-timer start --focus設定
設定は
~/.work-timer/config.tomlに保存されます。以下の項目を変更できます。
項目 説明 例 work_duration 作業時間(分) 25 break_duration 短い休憩(分) 5 long_break_duration 長い休憩(分) 15 daily_goal 日次目標(ポモドーロ数) 8 auto_start_break 作業完了後に休憩を自動開始するか false notification_sound 通知時にサウンドを鳴らすか true # 現在の設定を表示 work-timer config --list # 作業時間を30分に変更 work-timer config work_duration 30 # 日次目標を10ポモドーロに変更 work-timer config daily_goal 10 # 作業完了後に休憩を自動で開始する work-timer config auto_start_break true # 設定をデフォルトに戻す work-timer config --reset参考リンク
- [ポモドーロ・テクニック - Wikipedia](https://ja.wikipedia.org/wiki/ポモドーロ�%> 83%BB%E3%83%86%E3%82%AF%E3%83%8B%E3%83%83%E3%82%AF)
- Click - Python CLI ライブラリ
- Plyer - クロスプラットフォーム通知ライブラリ
ライセンス
MIT License
上記「完成の目安」のとおり、使い方セクションに隠しオプション(--focus、history --json)、設定項目(daily_goal、auto_start_break、notification_sound)、および保存場所(~/.work-timer/history.json と ~/.work-timer/config.toml)が書かれていれば、タスク分解とコード読解がうまくいった証拠です。Claude に各タスクを任せた結果、こうした「コード内にしかない情報」まで README に反映されているのはすごいですね。ちゃんとコードが読み込めているということだと思います。
依存関係(blockedBy)と タスクの削除・再編
依存関係で順序を守る
先ほどの例でも使いましたが、blockedBy で「どのタスクが終われば着手できるか」を設定できます。
タスク2はタスク1に依存するようにして
と依頼すると、TaskUpdate で依存関係が設定され、タスク1が completed になるまでタスク2は ▲ blocked by #1 のままになります。
実際に試した範囲では、前タスクを完了にすると自動的にアンブロックされる動作が確認できました。これも便利ですね。
タスクの削除と再編(v2.1.20〜)
v2.1.20 からは、TaskUpdate でタスクを削除できるようになりました。
タスク#3 を削除して
分解しすぎたタスクをまとめ直したい、というときに便利です。削除してから細分化して作り直す、という再編がやりやすくなっています。
まとめ
Claude Code の Tasks System を使ってみて感じたのは、タスクの分割・再編とセッションをまたいだ利用の組み合わせがとても面白い、ということです。
- 一つのやりたいタスクを「どうこなすか」考えながら、サブタスクに分解
CLAUDE_CODE_TASK_LIST_IDを設定して、別タブ・別セッションで同じタスクリストを共有- 空いているタスクを各セッションで取得して並行処理
- 全タスク完了後に統合して、本来のタスクが完了した形にする
複数のセッションを使って並行してタスクを消化し、最後に統合で完了、という流れが可視化できると、Claude Code を使った開発の幅が広がりそうです。
ぜひ試してみてください。









