新しいツールベルト:Artifacts、Task、型付き出力
Claude Code の Fable 5 時代のツールベルトを一巡する:Artifacts、Task システム、AskUserQuestion のプレビュー、ReportFindings、LSP ツール、継続可能なサブエージェント。
学ぶこと
モジュール 5 では、Fable 5 時代の大きなアーキテクチャ上の転換 — モデル、effort、ワークフロー、メモリ、遅延ツール、スケジュールされた自律動作 — を扱ってきました。最終回となる本セッションで扱うのは、それ以外のすべて:Claude Code のセッションが生み出すものを静かに変えた、ユーザー向けツール群です。
このセッションを終えると、次のことがわかります:
- Artifacts — ターミナルのテキストではなく、ホストされた Web ページとして公開する
- Task システム — TodoWrite が追跡可能で依存関係を持つタスクへ進化した姿
- プレビュー付きの AskUserQuestion と、プランモードが質問を順序立てる仕組み
- ReportFindings — コードレビューの出力を、散文ではなく型付きデータとして返す
- LSP ツール、ShareOnboardingGuide、メインエージェントの worktree
- 名前付きで継続可能なサブエージェントと、デフォルトのバックグラウンド実行
課題
セッション 2 では、元祖のツールシステム — Read、Write、Edit、Bash、Grep — を学びました。これらのツールはどれも、エージェントが世界に働きかけるためのものです。しかし、エージェントの出力 — あなたが受け取るもの — は常に同じでした:ターミナルの中のテキストです。
この天井は、あらゆる場面で顔を出します:
- コードレビューは、目で解析するしかない散文の壁を生む。
- 進捗リスト(TodoWrite、セッション 3)は、1つの会話の中で生まれて消える。
- 設計案の比較は、横並びで選べる選択肢ではなく、段落として届く。
- チームメイトと共有する価値のあるレポートは、ターミナルからコピペするしかない。
Fable 5 時代のハーネスは、シンプルなアイデアでこれに応えます:テキストよりリッチな出力チャネルをエージェントに与える — ホストされたページ、型付きの指摘、構造化された質問、追跡されるタスク。解析を担うのはあなたの目ではなく、ホスト UI になるのです。
仕組み
Artifacts:Web ページがターミナルテキストに勝つとき
Claude Code は、HTML や Markdown のファイルを claude.ai 上のホストされた Web ページとして公開できます。ページはデフォルトで非公開であり、共有するかどうかはユーザーが選べます。これはダッシュボード、レポート、視覚的な説明のためのチャネルです — レンダリングされたページが等幅テキストに勝る、あらゆる用途に向いています。
Artifacts(アーティファクト)の振る舞いは、3つの性質で定義されます:
- 自己完結のみ。 厳格な Content Security Policy がすべての外部リクエスト — CDN スクリプト、外部スタイルシート、フォント、fetch 呼び出し — をブロックします。すべてをインライン化し、アセットは
data:URI として埋め込む必要があります。 - 安定した URL。 同じファイルパスを再デプロイすると、同じ URL が更新されます。他のセッションで公開した Artifact も、URL 指定で更新できます。チームは1つのリンクをブックマークし、あなたはその先にあるものを改善し続けられます。
- レスポンシブかつテーマ対応。 ページはビューポートサイズに適応し、ライト・ダーク両方のテーマでレンダリングされなければなりません。
Task システム:TodoWrite の成長した姿
セッション 3 の TodoWrite は計画用のスクラッチパッドでした — 便利ではあるものの、揮発的でフラット。Fable 5 時代はこれを本物のタスクシステムに置き換えます:
TaskCreate ──► visible task list
TaskUpdate ──► states: pending / in_progress / completed
TaskList ──► what's open, what's blocked
TaskGet ──► inspect one task
TaskStop / TaskOutput ──► control & read background work
最も重要なアップグレードは2つです:
- 依存関係。 タスクは他のタスクに依存できるため、リストは意図だけでなく順序をエンコードします。
- バックグラウンド作業がタスクとして追跡される。 エージェント、ワークフロー、バックグラウンドの Bash コマンドはすべてタスクリストに現れ、完了時に通知されます。タスクリストはもはやエージェントの私的な計画ではなく、セッションの運用ビューです。
AskUserQuestion:プレビュー付きの選択肢
散文でオープンな質問を投げる代わりに、エージェントは 2〜4 個の選択肢を持つ構造化された質問を提示できます(複数選択も可能)。際立った機能はプレビューです:各選択肢に ASCII モックアップやコードスニペットを添えて横並びにレンダリングできるため、説明文ではなく、具体的な代替案そのものを比較できます。
これはセッション 22 のヒューマン・イン・ザ・ループの原則にネイティブな UI を与えたものです:意思決定は段落ではなく、選択肢としてあなたのもとに届きます。
プランモード、順序立てられたフロー
プランモードは今も EnterPlanMode / ExitPlanMode を使いますが、フローは計画的です:確認のための質問はプランの確定前に行われ、ユーザーがプランを目にするのは ExitPlanMode の承認時だけです。まず質問に答え、それから1つの一貫したプランを判断する、という流れになります。
ReportFindings:レビュー出力をデータとして
コードレビューの指摘(findings)は、散文ではなく型付きリストとして報告されます。各指摘は次のフィールドを持ちます:
| フィールド | 目的 |
|---|---|
| file, line | 欠陥がどこに紐づくか |
| summary | 欠陥を一文で述べたもの |
| failure scenario | 具体的な入力/状態 → 誤った出力 |
| verdict | CONFIRMED または PLAUSIBLE |
| category | 指摘の種類(correctness、efficiency など) |
指摘がデータであるため、ホスト UI はそれをネイティブにレンダリングします。レビュー出力は「読むもの」であることをやめ、インターフェースが提示するものになりました。
LSP ツール
言語サーバーへのクエリ — 定義、参照、診断 — がハーネス内で利用できます。かつてのツールベルトが Grep と推論でコードをたどっていたところを、エージェントは言語サーバーに直接問い合わせられるようになりました。
ShareOnboardingGuide
ハーネスはプロジェクトの ONBOARDING.md を生成し、チームメイトが Claude Code 内で直接開ける共有リンクとしてアップロードできます。オンボーディングの知識は、誰も読まない wiki ページであることをやめ、ツールそのものへの生きた入り口になります。
メインエージェントのための Worktree
セッション 12 では、サブエージェント向けの worktree 分離を扱いました。Fable 5 時代はこれをメインエージェントへ拡張します:EnterWorktree / ExitWorktree により、プライマリセッションはリポジトリの分離されたコピーを得られます。サブエージェントとワークフローエージェントは isolation: 'worktree' で同じものを得ます。
サブエージェント:デフォルトでバックグラウンド、名前付きで継続可能
Agent ツール自体も形を変えました(元のモデルはセッション 4を参照):
- デフォルトでバックグラウンド。 起動されたエージェントはバックグラウンドで動作し、完了時に親へ通知されます。
run_in_background: falseを指定すると同期実行を強制できます。 - 名前付きで継続可能。 エージェントに
nameを付けられるようになり、親は後からそのエージェントを — コンテキストを保ったまま — SendMessage によるメールボックス方式で継続できます。ゼロから始め直す必要はありません。委譲はもはや「撃ちっぱなし」ではなくなりました。 - 最終メッセージは呼び出し元にだけ返る。 ユーザーがサブエージェントの出力を直接目にすることはありません。重要な内容は親が中継しなければなりません。
委譲の指針は次のとおりです:複数ファイルにわたる読み取りや検索はエージェントに送り、メインコンテキストには(ファイルの丸ごとダンプではなく)結論だけを残し、対象ファイルが分かっている単一事実の確認は自分で行う。
外の世界へ
ツールベルトを締めくくるのは2つのワンライナーです:PushNotification はユーザーのデバイスへ通知でき、RemoteTrigger はリモートセッションをトリガーして対話できます。ハーネスは、自分が動いているターミナルの外へ手を伸ばせるのです。
ハンズオン
ツールベルト全体を概念的に組み合わせてみましょう:コードレビューを共有可能な Artifact として公開します。
Step 1: Review runs
Subagents (background, tracked as tasks)
examine the diff
│
Step 2: Findings return typed
ReportFindings: file, line, summary,
failure scenario, verdict, category
│
Step 3: Build the page
One self-contained HTML file:
inline CSS, findings table, verdict
badges — no external requests (CSP)
│
Step 4: Publish
Artifact tool → hosted, default-private
URL on claude.ai
│
Step 5: Iterate
Fix issues, redeploy the SAME file
path → same URL updates in place
実際のウォークスルー:
- レビューを依頼する。 エージェントはバックグラウンドで起動し、追跡されるタスクとして現れ、完了時に通知します。
- 指摘はデータとして届く。 それぞれが file、line、failure scenario、そして CONFIRMED/PLAUSIBLE の verdict を持つため、レポートページは、テキストを一切解析することなく、確認済み(confirmed)の正確性バグを、可能性あり(plausible)の効率面の指摘より上にグループ化できます。
- ページは自己完結でなければならない。 CDN のチャートライブラリも外部フォントも使えません。スタイルはインライン化し、画像は
data:URI として埋め込みます。ライト・ダーク両テーマでレンダリングできる必要があります。 - 公開して共有する。 デフォルトは非公開。自分で確認してから、リンクを共有します。
- 修正後に再デプロイする。 来週の再レビューは同じファイルパスに書き込みます — チームがブックマークした URL に、更新されたレポートがそのまま表示されます。
1つのターミナルセッションが、Claude Code を離れることなく、永続的で共有可能な成果物を生み出しました。
何が変わったか
| Fable 5 以前の時代 | Fable 5 時代 |
|---|---|
| レポートはターミナルの散文 | ホストされ共有可能な Artifacts |
| TodoWrite のスクラッチパッド、会話単位で消滅 | 状態・依存関係・通知を備えた Task システム |
| テキストによるオープンな質問 | AskUserQuestion:プレビュー付きの 2〜4 選択肢 |
| レビュー指摘は段落 | ReportFindings:型付きで UI がレンダリングするデータ |
| コードナビゲーションは Grep | LSP クエリ:定義、参照、診断 |
| 撃ちっぱなしのサブエージェント | SendMessage による名前付き・継続可能なエージェント |
| worktree はサブエージェント専用 | メインエージェントにも EnterWorktree |
| 出力はターミナルで終わる | PushNotification、RemoteTrigger、共有リンク |
キーインサイト
このツールベルトのテーマは、出力が構造化されたことです。 元祖のツールはモデルが世界に働きかけることを可能にしました。新しいツールは、ハーネスが仕事を提示することを可能にします。file、line、verdict を持つ指摘は、レンダリングもソートもできます。状態と依存関係を持つタスクは監視できます。プレビュー付きの質問はクリック1つで答えられます。安定した URL を持つ HTML ファイルは、共有も更新もできます。
このセッションのすべてのツールは、「人間が解析しなければならないテキスト」を「インターフェースがレンダリングできるデータ」に置き換えます — そしてどの単一機能にも増して、この点こそが、Fable 5 時代のセッションをチャットログではなく作業環境のように感じさせるのです。
モジュール 5 のまとめ
これでモジュール 5:Fable 5 時代 — Claude 5 世代で Claude Code がどう変わったかを扱う全 8 セッション — を修了しました:
- セッション 25:Claude 5 ファミリーとモデル戦略 — Fable 5、Mythos クラスティア、タスクごとのモデルティアの組み合わせ。
- セッション 26:Effort レベルと Ultracode — 品質/コストのダイヤル、そしてオプトインとしての xhigh + オーケストレーション。
- セッション 27:Workflow ツール — 制御フローはコードに、判断はモデルに。
- セッション 28:オーケストレーションの品質パターン — 敵対的検証、判定パネル、loop-until-dry。
- セッション 29:永続メモリ — 1ファイル1事実、インデックスとしての MEMORY.md。
- セッション 30:遅延ツールと ToolSearch — 従量課金コンテキストとしてのツールスキーマ。
- セッション 31:スケジュールされた自律動作 — ループ、ウェイクアップ、cron、キャッシュを意識したペース配分。
- セッション 32(本セッション) — 拡張されたツールベルト。
セッション 24 の5つの原則を思い出してください。Fable 5 時代は、そのすべてを補強しています:
- エージェントループが土台である。 ワークフローはループを置き換えるのではなく、その委譲を決定論的にスクリプト化します。各サブエージェントの内部では、依然として同じループが回っています。
- コンテキストは最も貴重なリソースである。 遅延ツール、ToolSearch、ハードコンパクションに代わる要約、内容ではなくポインタをロードするメモリインデックス — この時代全体がコンテキスト経済学です。
- パーミッションはセーフティネットである。 パーミッションモードはスポーンされるサブエージェントごとに設定できるようになり、Bash はデフォルトでサンドボックス実行されます — 自律性が高まるにつれ、セーフティネットはよりきめ細かくなりました。
- Markdown は拡張言語である。 スキル、エージェント、メモリ、オンボーディングガイド — いずれも今なおフロントマター付きの Markdown ファイルです。ファイルを1つ置けば、能力(あるいは記憶)が1つ増えます。
- プロダクションにはプロダクションの規律が要る。 状態と通知を持つタスク、型付きの指摘、再開可能なワークフロー、固いバジェット上限 — その規律は、いまやハーネス自体に組み込まれています。
コースはここで終わりますが、プラットフォームは終わりません。新しいモデルや機能が登場したときの継続的なカバレッジは、記事セクションをフォローしてください — ニュースはそちらに、アーキテクチャはこのチュートリアルにあります。
さあ、何かを作りましょう。