先週、Claude Code で dynamic workflows をリリースしました。Claude は、タスクに合わせてカスタムビルドされた独自の harness をその場で作成できるようになりました。
デフォルトの Claude Code の harness はコーディング用に作られていますが、多くのタスクがコーディングタスクに似ているため、他の多くの種類のタスクにも役立ちます。しかし、Research、security analysis、agent teams、Code Review などの最高のパフォーマンスを達成するために、Claude Code の上にカスタム harness を構築する必要があった特定のクラスのタスクがあります。
Workflows を使用すると、Claude がそれらの問題すべてを Claude Code 内でネイティブに解決できる harness を動的に作成できます。また、これらのワークフローを他のユーザーと共有して再利用することもできます。
この記事では、私の初期のワークフローの経験と学びを紹介します。これらを最大限に活用してください。
とはいえ、ベストプラクティスはまだ発展途上です! Dynamic workflows は多くの場合、より多くのトークンを使用するため、いつどのように使用するかを慎重に検討してください。
注: この投稿は Claude Blog でも閲覧できます。
プロンプトの例
技術的な詳細に入る前に、ワークフローの可能性について考えるためのプロンプトの例をいくつか紹介します。
- 「このテストはおそらく 50 回に 1 回失敗します。ワークフローを設定して再現し、仮説を立て、worktrees でそれらを敵対的にテストし、/goal で 1 つの仮説が機能するまで止まらないようにしてください。」
- 「ワークフローを使って、過去 50 回のセッションを調べ、繰り返し行っている修正を抽出し、頻発するものを CLAUDE.md のルールに変換してください。」
- 「ワークフローを使って、Slack の過去 6 ヶ月間の #incidents を調べ、誰もチケットを発行していない繰り返し発生する根本原因を見つけてください。」
- 「私のビジネスプランを使って、投資家、顧客、競合の視点から異なるエージェントがそれを分析するワークフローを実行してください。」
- 「80 件の履歴書が入ったフォルダがあります。ワークフローを使ってバックエンドの役割に合わせてランク付けし、上位 10 件を再確認してください。AskUserQuestion ツールを使ってルーブリックを基に私に面接を行ってください。」
- 「この CLI ツールの名前が必要です。ワークフローを使って多くのオプションをブレインストーミングし、トーナメントを実行して上位 3 つを選んでください。」
- 「ワークフローを使って、User モデルをすべて Account にリネームしてください。」
- 「ブログ記事の下書きを確認し、ワークフローを使ってコードベースに対してすべての技術的主張を検証してください。間違ったものをリリースしたくありません。」
Dynamic workflows の仕組み
Dynamic workflows は、subagents の生成と調整を支援するいくつかの特別な関数を含む JavaScript ファイルを実行します。

Dynamic workflows には、データ処理を支援する JSON、Math、Array などの標準的な JavaScript 関数も含まれています。
特に有用なのは、dynamic workflows がエージェントが使用するモデルを決定でき、サブエージェントを自身の worktree で実行するかどうかを選択できることで、Claude が必要なインテリジェンスレベルと分離を選択できるようになります。
ワークフローが中断された場合(例えばユーザーの操作やターミナルの終了など)、セッションを再開するとワークフローは中断したところから再開できます。
Dynamic workflows の理由
デフォルトの Claude Code harness にタスクを依頼すると、同じコンテキストウィンドウ内で計画と実行の両方を行う必要があります。多くのコーディングタスクではこれは非常に効果的ですが、長時間実行、大規模並列、および/または高度に構造化された敵対的タスクでは、うまくいかないことがあります。
これは、Claude が単一のコンテキストウィンドウで複雑なタスクに取り組む時間が長くなるほど、いくつかの特定の障害モードの影響を受けやすくなるためです。
- エージェントの怠惰 は、特に複雑で複数部分からなるタスクを完了する前に Claude が停止し、部分的な進捗(例えばセキュリティレビューの 50 項目中 20 項目を処理しただけ)で仕事が完了したと宣言することを指します。
- 自己優先バイアス は、特にルーブリックに対して検証や判断を求められたときに、Claude が自身の結果や発見を優先する傾向を指します。
- ゴールドリフト は、多くのターンにわたって、特に圧縮後に、元の目的への忠実度が徐々に失われることを指します。
ワークフローを作成することで、それぞれ独自のコンテキストウィンドウと集中した孤立した目標を持つ別々の Claude を調整することで、これらに対抗できます。
Dynamic workflows と Static workflows
以前に Claude Agent SDK や claude -p を使用して、複数の Claude Code インスタンスを連携させる静的なワークフロー (static workflow) を作成したことがあるかもしれません。
しかし、静的なワークフローはすべてのエッジケースで動作する必要があるため、通常はより汎用的です。Claude Opus 4.8 と dynamic workflows により、Claude はユースケースに合わせたカスタム harness を記述できるほどインテリジェントになりました。

Dynamic workflows を使用する際の有用なパターン
Dynamic workflows の使用を開始するには、Claude に作成を依頼するか、トリガーワード「ultracode」を使用して Claude Code がワークフローを作成するように指示します。
しかし、dynamic workflows の仕組みに関するメンタルモデルを構築することで、いつ使用するか、プロンプトを通じて Claude をどのように誘導するかを理解するのに役立ちます。
ワークフローを構築する際に Claude が使用し、組み合わせる可能性のあるいくつかの一般的なパターンを以下に示します。

分類して行動
分類エージェントを使用してタスクの種類を判断し、タスクに基づいて異なるエージェントや動作にルーティングします。または、最後に分類器を使用して出力を決定します。
ファンアウトして統合
タスクを多くの小さなステップに分割し、各ステップでエージェントを実行し、それらの結果を統合します。これは、多数の小さなステップがある場合や、各ステップが独自のクリーンなコンテキストウィンドウの恩恵を受けて干渉や相互汚染を防ぐ場合に特に役立ちます。統合ステップはバリアです。すべてのファンアウトエージェントを待ち、それらの構造化出力を 1 つの結果にマージします。
敵対的検証
生成された各エージェントについて、別の生成されたエージェントを実行して、その出力をルーブリックまたは基準に対して敵対的に検証します。
生成してフィルタリング
トピックに関する多くのアイデアを生成し、ルーブリックや検証によってフィルタリングし、重複を排除して、最高品質でテスト済みのアイデアのみを返します。
トーナメント
作業を分割する代わりに、エージェントに競わせます。異なるアプローチを使用して同じタスクを試行する N 個のエージェントを生成します。その後、プロンプトまたはモデルが評価エージェントを使用して結果をペアワイズ方式で判断し、勝者が決まるまで続けます。
完了するまでループ
作業量が不明なタスクの場合、固定回数ではなく、停止条件(新しい発見がない、またはログにエラーがなくなったなど)が満たされるまでエージェントの生成をループします。
ユースケース
いつどのように Claude Code に dynamic workflows を作成させるかを創造的に考えてください。ワークフローは、非技術的な作業においても非常に有用な場合があることがわかりました。

移行とリファクタリング
Bun はワークフローを使用して Zig から Rust に書き換えられました。その方法の詳細は Jarred の X スレッド でご覧いただけます。
鍵は、タスクをコールサイト、失敗するテスト、モジュールなどに対して操作する必要がある一連のステップに分解することです。修正ごとに worktree でサブエージェントを生成して修正を行い、別のエージェントに敵対的にレビューさせ、マージします。マシンのリソースを使い果たさずに最大限並列化できるように、エージェントにリソース集約型のコマンドを使用しないように指示することを検討してください。
深層リサーチ
Claude Code 内で dynamic workflows を使用する深層リサーチスキル (/deep-research) を公開しました。具体的には、Web 検索をファンアウトし、ソースを取得し、その主張を敵対的に検証し、引用付きのレポートを統合します。
しかし、この種のリサーチは Web 検索だけでなく、例えば Slack のコンテキストからステータスレポートをまとめたり、コードベースを詳細に調査して機能の仕組みを調べるよう Claude に依頼することもできます。
深層検証

一方、参照しているすべての事実主張を確認してソースを特定したいレポートがある場合、1 つのエージェントがすべての事実主張を特定し、サブエージェントを生成してそれぞれを詳細に確認するワークフローを作成するとよいでしょう。検証エージェントにソースサブエージェントをチェックさせて、そのソースが高品質であることを確認することもできます。
ソート

Claude Code が評価するのに適していると思われる定性的な測定基準(例えばバグの深刻度でソートされたサポートチケット)に基づいてソートしたいアイテムのリストがあるかもしれません。しかし、1 つのプロンプトで 1000 行以上をソートしようとすると、品質が低下し、コンテキストに収まりません。代わりに、トーナメント、ペアワイズ比較エージェントのパイプライン(比較判断は絶対評価よりも信頼性が高い)、またはバケットランクを並列実行してからマージします。各比較は独自のエージェントであるため、決定論的ループがブラケットを保持し、実行順序のみがコンテキストに残ります。
メモリとルール順守

CLAUDE.md に記載しても Claude が見落としたり苦戦したりする特定のルールセットがある場合、検証エージェント(ルールごとに 1 つの検証エージェント)によってチェックされる必要があるルールのリストを含むワークフローを作成してください。ルールが適切であることを確認するために懐疑的なペルソナのサブエージェントを作成すると、誤検出が多くなりすぎるのを防ぐのに役立ちます。
逆方向も機能します。最近のセッションやコードレビューのコメントから繰り返し行っている修正を抽出し、並列エージェントでクラスタリングし、各候補を敵対的に検証し(このルールが実際のミスを防いだでしょうか?)、生き残ったものを CLAUDE.md に抽出します。
根本原因調査
デバッグは、複数の独立した仮説を立ててテストするときに最も効果的ですが、1 つのコンテキストウィンドウだけを使用していると、Claude は自己優先バイアスに陥る可能性があります。
ワークフローは、互いに素な証拠から仮説を生成するエージェントを立ち上げることで、これを構造的に防ぐことができます。例えば、ログ、ファイル、データ用の個別のエージェントです。各仮説は、検証者と反論者のパネルに直面することができます。
これはコードだけではありません。ワークフローは、営業(なぜ 3 月に売上が落ちたのか?)、データエンジニアリング(なぜこのパイプラインは失敗したのか?)、または任意の事後検証に使用できます。
大規模なトリアージ

すべてのチームには、人間では完全に処理できないサポートキュー、バグレポート、またはその他のバックログがあります。
トリアージワークフローは、各アイテムを分類し、既に追跡されているものと重複排除し、アクションを実行します。これは、修正を試みるか、人間のユーザーにエスカレーションすることを意味する場合があります。
トリアージワークフローの有用なパターンは隔離です。これには、信頼できない公開コンテンツを読み取るエージェントが高権限アクションを実行することを禁止し、代わりに情報に基づいて行動する責任を持つエージェントが実行するようにすることが含まれます。
トリアージワークフローを /loop と組み合わせて、Claude にこれを継続的に実行させます。
探索とセンス
ワークフローは、解決策への異なるアプローチを探索する際に役立ちます。特に、デザインや命名などセンスに基づく場合で、ルーブリックの恩恵を受ける場合に有効です。
Claude に多くの解決策を探索するよう依頼し、レビューエージェントに良い解決策のルーブリックを与えてみてください。レビューエージェントが基準を満たしたと感じた時点でタスクは完了です。解決策は、ルーブリックに基づいたトーナメントを通じて順序付けまたは選択することもできます。
評価
特定のタスクに対して軽量な評価を実行するには、worktree 内で個別のエージェントを生成し、比較エージェントを生成して特定の出力をルーブリックに対して比較および評価します。例えば、作成したスキルを特定の基準に対して評価し、その後改良します。
モデルとインテリジェンスルーティング
タスクに合わせて調整された分類エージェントを作成し、使用するモデルを決定します。これは、タスクに多くのツールコールが含まれる場合や、実行前の調査によって最適なモデルを特定できる場合に役立ちます。
例えば、「認証モジュールの仕組みを説明する」というタスクに最適なモデルは、認証モジュール内のファイル数とコードベースの形状によって異なります。分類エージェントはこの調査を行い、タスクの予想される複雑さに基づいて Sonnet または Opus にルーティングできます。
Dynamic workflows を使用すべきでない場合
ワークフローは新しいものです。多くのユースケースで非常に優れた結果を生み出しますが、すべてのタスクに必要というわけではなく、大幅に多くのトークンを使用する可能性があります。
ワークフローは、これまでにない方法で Claude Code を活用するために創造的に使用するのが最善です。通常のコーディングタスクでは、本当により多くの計算リソースが必要かどうかを自問してみてください。例えば、従来のコーディングタスクのほとんどは 5 人のレビュアーのパネルを必要としません。
Dynamic workflows を構築するためのヒント
プロンプティング
上記で説明した特定のテクニックを使用した詳細なプロンプティングにより、dynamic workflows で最良の結果が得られます。
ワークフローは大規模なタスクだけのものではありません。モデルに「クイックワークフロー」の使用を促すことができます。例えば、仮定に対する簡単な敵対的レビューを作成できます。
/goal と /loop と組み合わせる
トリアージ、リサーチ、検証など繰り返し可能なワークフローを使用する場合は、/loop と組み合わせて定期的に実行し、/goal で厳格な完了要件を設定します。
トークン使用量の予算
Dynamic workflows に明示的なトークン使用量の予算を設定して、タスクが使用するトークン数を制限できます。「10k トークンを使用」など、予算をプロンプトで指定できます。これにより上限が設定されます。
Dynamic workflows の保存と共有
ワークフローメニューで「s」を押すとワークフローを保存できます。これらを ~/.claude/workflows にチェックインするか、スキルを介して配布できます。

スキルを介して共有するには、JavaScript ワークフローファイルをスキルとフォルダに配置し、SKILL.MD でそれらを参照します。より柔軟性を持たせるために、スキル内のワークフローを逐語的に実行する必要があるスクリプトではなく、テンプレートとして考えるように Claude に促すとよいでしょう。

全く新しい世界
ワークフローは、Claude Code を拡張するための便利な新しい方法です。これを出発点として考え、最適な使用方法についてはまだ多くの発見があることをお勧めします。見つけたことをぜひお知らせください。
Thariq Shihipar と Sid Bidasaria (@sidbid) は、Anthropic の技術スタッフであり、Claude Code に取り組んでいます。





