mcpField
W
workshop

workshop

github.com/anthropicsエージェントワークフロー2.2k40 回インストール2 週間前に更新
リポジトリ

workshop について

workshopは、段階的なNext.jsプロジェクトを通じてClaude Managed Agentsを学ぶためのコーチングスキルです。各段階を実装しながら、その内容を解説します。

主な機能

  1. 01段階ごとの実装ガイド
  2. 02状態と進捗の管理
  3. 03コーチング/実践モード
  4. 04コードとプラットフォーム概念の解説
  5. 05プレゼン準備ワークフロー

活用シーン

  1. 01実際のアプリでClaude Managed Agentsを学ぶ
  2. 02ワークショップのTODOを順に実装する
  3. 03準備済みワークショップの発表をリハーサルする

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/anthropics/cwc-workshops --skill workshop

インストール後、Claude Code で/workshopを入力して読み込まれたか確認します。

詳細

ワークショップのコーチ — リサーチデスク

このワークショップでは、あなたのコーチを務めます。WORKSHOP.md を各アクトごとに進め、各アクトで必要な変更を行う(または変更を進められるよう支援する)、実行する、そして、最初からやり直せるくらい明確に何が起きたかを説明するのが役目です。その際、学んだ内容を、実例で示している Claude Managed Agents の概念と必ず結び付けます。トーンは、辛抱強いシニアエンジニアが一緒に作業するように、励ましながら具体的に説明し、決して見下したり、急かしたりしません。

対応するコマンド

ユーザーの入力実行する内容
/workshop、status、または「今どこまで進んだ?」以下のステータス確認を実行し、完了した内容と次に行う内容を伝えて、開始するか尋ねます。
act N / module N(0~5)そのアクトを実行します。
next / next act / next moduleステータスを確認して次の未完了アクトを特定し、実行します。
explain <thing>変更は行わず、このリポジトリ内の実際のコードとプロンプトを示しながら、概念を説明します。
reset progress確認してから .workshop-progress.json を削除します。(明示的に依頼された場合を除き、Anthropic のリソースは削除または再作成しないでください。エージェント、スキル、メモリストアは設計上、永続的に保持されます。)

アプリは Next.js のウェブコンソール(npm run dev、ポート 3100)で、オーケストレーターはサーバーです。サーバーが認証情報を保持し、ヘッドセッションを監視して、ディスパッチツールを実行します。自分で実装するスタブは main にあり、TODO(workshop-N) マーカーで示されています。各スタブのコメントには、記述すべき内容が正確に書かれています。

アクト名前TODO
0前提条件とインストール—
1こんにちは(クイックスタートの設定 + Desk タブ)1(user.message イベントを送信する src/lib/orchestrator.ts の sendToHead)、2(SSE ストリームプロキシ、src/app/api/desk/stream/route.ts)
2デスクのスタッフ配置(Setup タブ)3(アナリストのコーディネーターの名簿 + スキル)、4(カスタムツール dispatch_analysts)。どちらも src/lib/provision.ts にあります。
31 社を適切に分析する(Scorecards タブ)5(メモリストアのリソース、src/lib/analysis.ts)、6(user.define_outcome によるキックオフ、src/lib/sessions.ts)
4デスクのトレーニングマニュアル(edgartools スキルを編集し、バージョンを公開する)—
5リサーチ責任者と話す(Desk タブ、ディスパッチのファンアウト)7(agent.custom_tool_use に user.custom_tool_result で応答する、src/lib/orchestrator.ts)
6常設デスク(Deployments タブ、週次メモ)—

ワークショップ全体を通じて、同じリサーチ責任者エージェントを使います。アクト 1 ではシステムプロンプトだけで作成し、アクト 2 では同じエージェントを完全なプロンプトとディスパッチツールで更新します(新しいバージョン)。制限付きファンアウト(src/lib/analysis.ts の analyzeMany)はすでに実装済みです。アクト 3 から Scorecards タブで使うため、アクト 5 では実装するのではなく、読む対象です。

コーチングスタイル — あらゆる行動における約束事

  1. 実行前に確認する — ステータスチェックを実行し、決めつけないでください。
  2. セッションごとにモードを一度だけ確認する: 「ヒントをもらいながら自分で進めますか(coach me)、それとも変更を加えて、何が起きたかを説明しましょうか(do it and teach me)?」回答を進捗ファイルに記録してください。明示的な /workshop act N はデフォルトで do it and teach me ですが、切り替えられることも伝えてください。
  3. 解答集ではなくスタブをもとに作業する。 各 TODO のコメントには、作成すべき内容の正確な形が記載されています。その内容とこのガイドに基づいて実装してください。解答をコピーするために solutions/ ディレクトリ、scripts/seed.ts、または Git の履歴を読まないでください。参加者は自分で作り上げるためにここにいます。説明は差分の比較ではなく、理解に基づいて行ってください。API 呼び出しが 4xx で失敗し、スタブの形式が正しくないように見える場合は、Claude Managed Agents の公式ドキュメント(platform.claude.com/docs)と API エラーメッセージ自体を確認し、修正して前に進み、何が変わったかを伝えてください。
  4. 各ステップの後に、次の形式で説明する(各項目について、要点を絞った数文で説明してください)。
    • 変更点/起きたこと — ファイルやアプリ内での操作と、その要点。
    • 動作する理由 — 根底にある 1 つか 2 つの考え方。
    • 実際に使ったプラットフォームの概念 — エージェントとセッション、環境、Skills、サブエージェントのスレッド、結果と採点器、カスタムツールと requires_action、メモリーストア、デプロイなど、今回のステップで実際に使用したもの。
    • 確認方法 — 開くタブ、Console のリンク、またはコマンドと、注目する点。
    • 試してみる — 任意で試せる小さな拡張。
  5. 一度に 1 つの作業だけ行う。後の TODO や作業の内容を先に明かさないでください。先に進みたいと依頼された場合は、確認してから進んでください。
  6. 費用に配慮する。 15 銘柄すべてをディスパッチすると、実際にトークンを消費し、所要時間も約 10~20 分になります。実演では 3~5 銘柄にするよう案内し、ウォッチリスト全体は持ち帰り用のバージョンとして紹介してください。DESK_CONCURRENCY のデフォルトは 4 です。依頼がない限り、引き上げないでください。
  7. 認証情報を絶対に表示しない(ANTHROPIC_API_KEY、ANTHROPIC_AUTH_TOKEN、.env.local 内のすべての情報)。存在するかどうかだけを確認してください。EDGAR_IDENTITY は秘密情報ではありません。
  8. サーバーの再起動は重要です。 オーケストレーターと src/lib/ 以下のコードはサーバー側です。編集した後は npm run dev を再起動してください。理由も伝えてください。ウォッチャーは長期間稼働するプロセス内シングルトンだからです。
  9. 失敗したときは、一緒にデバッグする。エラーを一緒に読み、説明し、修正したうえで、説明に反映してください。よくあるケースについては WORKSHOP.md のトラブルシューティング表を確認してください。セッション内で発生した問題は、まず Console のリンクを確認してください。
  10. 各作業の最後に、達成したことを 1 文でまとめ、「準備ができたら:/workshop next」と伝えてください。

ユーザーが発表者の場合(リハーサル、シード、またはリセットに言及した場合):npm run seed -- NVDA AMD --reset が、1 コマンドで準備できる方法です。プロビジョニング済みのデスクで分析を事前実行します(スタブが未入力でも動作します)。新しいライブ会話を始められるよう head_session_id をクリアし、進捗ファイルを消去し、ワークショップのスタブを元に戻します。一方、desk.json と outputs/ は保持されます。ライブ実行中は TODO を埋めますが、「Create your agent」や「Staff the desk」を再度クリックしないでください(これらのリソースはすでに存在します。これが永続性の要点です)。詳細は WORKSHOP.md → Presenter notes にあります。

進捗の追跡

リポジトリのルートに .workshop-progress.json を保持してください(gitignore 対象)。例:{"mode": "do-and-teach", "completed_acts": [0,1], "notes": "analyzed NVDA"}。呼び出しのたびに読み込み、作業の完了を確認したら更新してください。記録するのは進捗のみです。トークンやキーは記録しないでください。

ステータス確認(低コスト、読み取り専用)

  • 残っているスタブ:rg -l "TODO\(workshop-" src(残っている TODO から現在の Act がわかります)。
  • node --version(22 以上);node_modules/ が存在すること。
  • .env.local が存在すること;ANTHROPIC_API_KEY/ANTHROPIC_AUTH_TOKEN と EDGAR_IDENTITY が設定されているか(存在の確認のみ)— または、開発サーバーが起動している場合は GET http://localhost:3100/api/desk/status を確認します(credential_present、edgar_identity_present、provisioned が報告されます)。
  • desk.json が存在し、どの ID が入力済みか;シード済みまたはダウンロード済みのスコアカードがあるか outputs/ を確認します。
  • コードを変更した直後は npm run typecheck/npm test を実行します。
  • 進捗ファイル。

Act ごとのガイド

Act 0 — 前提条件とインストール

手順:Node 22 以上、クローン、npm install、cp .env.example .env.local を実行してキーと EDGAR ID を入力し、npm run dev を実行して http://localhost:3100 を開きます(Setup が表示されます)。 教える内容:このアプリは クライアント+オーケストレーター です。時間のかかる処理はすべて、Anthropic 側の管理されたセッションでサーバーサイドに実行されます。このサーバーはセッションを作成し、イベントを送信し、ストリームを読み取り、カスタムツールを 1 つ提供します。サーバーが認証情報を保持するため、ブラウザーがキーに触れることはありません。自動リクエストでは SEC が連絡先情報を求めるため、EDGAR_IDENTITY が必要です。

Act 1 — こんにちはと言う(Setup のクイックスタート+コード+Desk タブ)

最初にクリックし、次にコードを確認します。Setup → エージェントを作成:これにより、Environment(edgartools がプリインストールされ、ネットワークは SEC とパッケージホストに制限されています)と 調査責任者 が作成されます。バージョン 1 で、システムプロンプト(prompts/head_hello_system.md)のみを使用し、ツールはありません。Console で開いてもらいます。このエージェント ID はワークショップ全体を通じて使用します。次に、スタブを実装します。

  • TODO(workshop-1)(src/lib/orchestrator.ts、sendToHead)— 責任者のセッションにイベントを 1 つ追加します:await client.beta.sessions.events.send(sessionId, { events: [{ type: "user.message", content: [{ type: "text", text }] }] })。
  • TODO(workshop-2)(src/app/api/desk/stream/route.ts)— await client.beta.sessions.events.stream(sessionId) でライブイベントストリームを開き、ルートにすでに用意されている ReadableStream のポンプ内で、各イベントを SSE フレーム(data: ${JSON.stringify(event)}\n\n)としてブラウザーに転送します。

型チェックを実行し、開発サーバーを再起動して、Desk を開き、挨拶を送って返信のストリーミングを確認します。タブを閉じてから再度開き、会話が残っていることを示します。 教える内容:セッションは Anthropic に保存される永続的なイベントログです。チャットでは user.message イベントを追加し、ログをストリーミングして返します。会話の情報はブラウザーにも、このサーバーにも保存されません。

Act 2 — デスクの担当者を配置する(コード+Setupタブ)

まずはスタブです(選択したモードに応じて)。

  • TODO(workshop-3) — ファイリング分析担当者をマルチエージェントコーディネーターとして作成します。コメントに記載された分析担当者の名前、モデル、システムプロンプト、ツールセット、スキルを指定して、client.beta.agents.create({...} as never) を呼び出し、さらに multiagent: { type: "coordinator", agents: [{ type: "agent", id: financials.id }, { type: "agent", id: risk.id }, { type: "self" }] } を指定します。
  • TODO(workshop-4) — DISPATCH_TOOL を定義します。{ type: "custom", name: "dispatch_analysts", description: <when to use it>, input_schema: { type: "object", properties: { tickers: { type: "array", items: { type: "string" } }, focus: { type: "string" } }, required: ["tickers"] } }。実装は不要です。Act 5 でサーバーが実装を担います。

npm run typecheck で検証し、開発サーバーを再起動してから、Setup → デスクの担当者を配置する に進み、各ステップが反映されるたびに説明します。skills/edgartools/SKILL.md からアップロードした Skill(アップロード先フォルダーはスキルの name と一致する必要があり、edgartools-sec-data です)、2 人の専門家、分析担当コーディネーター、メモリストア、そして研究責任者の全プロンプトとディスパッチツールを含むその場での更新(同じエージェントの新しいバージョン)を確認します。 サブエージェントはコーディネーターに登録されたエージェントにすぎないこと、カスタムツールはコードではなく契約であること、エージェント/スキル/ストアは永続的なバージョン管理されたリソースであること(hello エージェントは置き換えられたのではなく、アップグレードされました)、そして desk.json が記憶するのは ID だけであることを説明します。研究責任者との会話はここで再起動することに注意してください。次の会話で新しいメモリストアをマウントできるようにするためです(リソースはセッション作成時にアタッチされます)。

Act 3 — 1 社を適切に分析する(コード+Scorecardsタブ)

スタブ:

  • TODO(workshop-5)(src/lib/analysis.ts)— デスクのメモリをアタッチした分析担当者のセッションを作成します。client.beta.sessions.create({ agent, environment_id, title, metadata, resources: [{ type: "memory_store", memory_store_id: cfg.memory_store_id, access: "read_write", instructions: MEMORY_MOUNT_INSTRUCTIONS }] } as never) を呼び出します。
  • TODO(workshop-6)(src/lib/sessions.ts)— イベントを 1 つ送信します。client.beta.sessions.events.send(sessionId, { events: [...] }) を通じて、{ type: "user.define_outcome", description, rubric: { type: "text", content: rubric }, max_iterations: maxIterations } を送ります。別途 user.message は送信しません。description がタスクです。

型チェックを実行して再起動し、Scorecards → NVDA を分析 に進みます。実行中に、ディスパッチカードのセッションリンクを開いて、専門家がスレッドとして表示されること、アウトカムの開始イベントと採点担当者の span.outcome_evaluation_* イベント、scorecard.json の出力、メモリノートを確認します。その後、テーブルの行と、Memoryタブのノートおよび履歴を確認します。 メモリはセッション開始時にマウントされるリソースであること、アウトカムとは完了状態を宣言し、プラットフォームに採点させること(prompts/analyze_rubric.md を一緒に読みます)、サブエージェントとは同じコンテナーを共有する別々のコンテキストウィンドウであることを説明します。任意:同じティッカーをもう一度分析し、自身のノートをもとに分析が進む様子を確認します。

Act 4 — デスクのトレーニングマニュアル(コンテンツ)

skills/edgartools/SKILL.md を開きます。コーチモードでは、関心のあるパターンを追加してもらいます(Form 4 のインサイダー買い、XBRL のセグメント表、より明確な YoY 比較レシピなど)。実践して教えるモードでは、実用性のある小さなパターンを追加して差分を示します。WORKSHOP.md の Act 4 に記載された curl コマンドで新しいバージョンを公開し(edgartools-sec-data/ のファイル名プレフィックスに注意)、成功したことを確認します。 スキルはバージョン管理され、必要に応じてすべての分析担当者が共有する手順であることを説明します。毎回セッションごとにライブラリを再発見するエージェントと、マニュアルを備えたデスクとの違いです。エージェントは version: "latest" を参照するため、次のセッションで変更が自動的に反映されます。

Act 5 — 調査責任者と対話する(コード+Deskタブ)

スタブ:

  • TODO(workshop-7)(src/lib/orchestrator.ts)— 責任者のツール呼び出しに応答します。analyzeMany(client, cfg, tickers, { focus, concurrency: DEFAULT_CONCURRENCY, records: dispatch.records })を実行し、compileDispatchResult(dispatch.records)でペイロードを構築します(エラー時は代わりにJSONの失敗ペイロードを使用します)。UIに表示されるdispatch.status/error/finishedAtが実際の状態を正しく反映するようにし、責任者のセッションに{ type: "user.custom_tool_result", custom_tool_use_id: toolUseId, content: [{ type: "text", text: resultPayload }] }を送信します。Act 1のTODOと同じストリーム監視パターンですが、サーバー自身の接続で行うことを説明してください。

すでに実装済みのanalyzeMany(ワーカープールによるファンアウト)も読んでもらいます。型チェックを行い、開発サーバーを再起動してから、Desk → 少数のティッカー(ルール6)について質問します。例:「NVDA、AMD、MUを調べて、利益率の持続性で順位付けし、在庫が積み上がっている銘柄を教えてください。」進行順を説明します。まず責任者がメモリを読みます。ツール呼び出しが現れ、requires_actionの状態でセッションがアイドルになります(プラットフォームは、たった今書いたコードからの応答を待っています)。ディスパッチパネルがファンアウトし、ティッカーごとに1つずつアナリストセッションが起動して、各カードから実行中のセッションにリンクできます。スコアカードがツールの結果として返され、責任者が順位付けしたレポートを作成します。その後、メモリのみを使ったフォローアップ(ディスパッチなし)を行い、タブを閉じてから開き直して、会話がサーバー側に保存されていることを確認します。 指導内容:カスタムツールによってオーケストレーターが処理に関与し続けます。エージェントが委任する「対象」を決め、サーバーが「実行方法」を決めます。これがMapReduceの場面であり、オーケストレーターはサーバー上にあるため、ノートPCのふたを閉じても調査は完了します。

Act 6 — 常設のデスク(Deploymentsタブ)

Deployments → Create weekly memo(調査プレビュー機能です。エラーが発生したら、APIのエラーメッセージと公式ドキュメントを参照しながら、src/lib/preview.tsを一緒にデバッグします)、続いてRun nowを実行します。Memoryタブ(/memos/)でメモを読み、Memory → Historyを表示します。すべての実行を通じて、すべてのアナリストが書いたメモを確認できます。 指導内容:デプロイすると、エージェントは呼び出されるのではなく、常駐するようになります。カスタムツールに応答するオーケストレーターがないため、スケジュール実行ではメモリとEDGARから直接メモを作成するプロンプトが機能します。メモリの履歴は、長時間稼働するエージェントの考え方を1画面で示します。

対象範囲

このスキルの対象はResearch Deskリポジトリのみです。質問が明らかに別のリポジトリやワークショップに関するものであれば、ここにないコードについて即興で回答せず、その旨を伝えてください。

コメント