Managed Agent Cookbooks Overview
ที่อยู่: managed-agent-cookbooks/
นี่คือ mirror structure ของ plugins/agent-plugins/ — แต่สำหรับ Claude Managed Agents API deployment แทน Cowork
ความสัมพันธ์ระหว่าง Cowork vs Managed Agents
| Aspect | Cowork Plugin | Managed Agent Cookbook |
|---|---|---|
| Installation | User clicks “Add plugin” | Platform engineer runs deploy-managed-agent.sh |
| Manifest format | plugin.json |
agent.yaml (YAML + JSON) |
| Deployment target | Claude.com/product/cowork | /v1/agents API endpoint |
| Invocation | User types in chat | Steering event sent to /messages |
| System prompt source | Same .md file |
Same .md file (copied) |
| Skills | Bundled files | Uploaded to /v1/skills, referenced by ID |
| Subagents | Not in Cowork | Depth-1 leaf workers with callable_agents |
Key insight: Agent logic เดียวกัน — Cowork และ API แค่ wrapper ต่างกัน
Cookbook Structure
managed-agent-cookbooks/pitch-agent/
├── agent.yaml # Main manifest (→ POST /v1/agents)
├── subagents/
│ ├── researcher.yaml # Leaf worker 1
│ ├── modeler.yaml # Leaf worker 2
│ └── deck-writer.yaml # Leaf worker 3 (only one with Write)
├── steering-examples.json # Example steering events
└── README.md # Security tier + handoff notes
10 Cookbooks (1 per agent)
| Slug | Vertical Source | Leaf Workers | Bold (Write) |
|---|---|---|---|
pitch-agent |
investment-banking | researcher, modeler, deck-writer | deck-writer |
market-researcher |
equity-research | sector-reader, comps-spreader, note-writer | note-writer |
earnings-reviewer |
equity-research | transcript-reader, model-updater, note-writer | note-writer |
meeting-prep-agent |
wealth-management | profiler, news-reader, pack-writer | pack-writer |
model-builder |
financial-analysis | data-puller, builder, auditor | builder |
gl-reconciler |
financial-analysis | reader, critic, resolver | resolver |
kyc-screener |
financial-analysis | doc-reader, rules-engine, escalator | escalator |
valuation-reviewer |
private-equity | package-reader, valuation-runner, publisher | publisher |
month-end-closer |
financial-analysis | ledger-reader, rollforward, poster | poster |
statement-auditor |
private-equity | statement-reader, reconciler, flagger | flagger |
Important: ทุก agent มี 3 leaf workers, แต่เพียงตัวเดียวมี Write capability
agent.yaml — Manifest Format
ตัวอย่างโครงสร้าง:
name: pitch-agent
model: claude-3-5-sonnet-20241022
system:
file: ../../plugins/agent-plugins/pitch-agent/agents/pitch-agent.md
append: |
## Additional API-specific context
You are running as a Managed Agent...
skills:
- from_plugin: ../../plugins/agent-plugins/pitch-agent
callable_agents:
- manifest: ./subagents/researcher.yaml
- manifest: ./subagents/modeler.yaml
- manifest: ./subagents/deck-writer.yaml
Manifest Conveniences (Deploy Script Resolves)
Deploy script (scripts/deploy-managed-agent.sh) แปลง conveniences เหล่านี้:
| Manifest | Resolves to |
|---|---|
system: {file: ../../plugins/.../agents/pitch-agent.md, append: "..."} |
system: "<inlined file content + append text>" |
system: {text: "..."} |
system: "<text>" |
skills: [{from_plugin: ../../plugins/agent-plugins/pitch-agent}] |
uploads every skill under that dir → [{type: custom, skill_id: ...}, ...] |
skills: [{path: ../../...}] |
uploads skill → {type: custom, skill_id: ...} |
callable_agents: [{manifest: ./subagents/x.yaml}] |
creates agent first → {type: agent, id: ..., version: latest} |
ตัวอย่าง Output
{
"name": "pitch-agent",
"model": "claude-3-5-sonnet-20241022",
"system": "You are Pitch Agent. You take competitor data... [inlined content from pitch-agent.md + append]",
"skills": [
{
"type": "custom",
"skill_id": "skill_abc123def456" // uploaded from pitch-agent/skills/comps-analysis/
},
...
],
"callable_agents": [
{
"type": "agent",
"id": "agent_researcher_uuid",
"version": "latest"
},
...
]
}
Subagent Structure
ตัวอย่าง leaf worker:
# subagents/researcher.yaml
name: pitch-agent-researcher
description: "Gathers market and company data for pitch book analysis"
model: claude-3-5-sonnet-20241022
system:
text: |
You are a research assistant for pitch book creation.
Your job is to gather:
- comparable company data
- precedent transactions
- market insights
Return your findings as structured JSON.
skills:
- path: ../../plugins/agent-plugins/pitch-agent/skills/comps-analysis
- path: ../../plugins/agent-plugins/pitch-agent/skills/market-research
output_schema:
type: object
properties:
comps:
type: array
items:
type: object
required: [ticker, ev, multiple]
Output Schema Validation
Reader subagents (ไม่มี Write) อาจมี output_schema: block:
- Deploy script extracts schema
scripts/validate.pychecks output ก่อน orchestrator ประมวลผล- ป้องกัน bad JSON ไม่ไปถึง next stage
Bold/Write workers ไม่มี schema (ดำเนินการเสร็จสิ้น)
Steering Examples
ไฟล์ steering-examples.json:
{
"examples": [
{
"description": "Pitch book for acquisition scenario",
"event": {
"type": "steering_event",
"target_agent": "pitch-agent",
"payload": {
"target": "Example Corp",
"acquirer": "Strategic Buyer Inc",
"thesis": "Synergies in cloud platform integration"
}
}
}
]
}
ใช้สำหรับ: Documentation + orchestration layer reference
Cross-Agent Handoffs
Agents ไม่เรียกกันโดยตรง — เมื่อ agent หนึ่งต้องการ agent อื่น:
// Inside orchestrator output detection:
{
"type": "handoff_request",
"target_agent": "market-researcher",
"event": "Get sector overview for TechCorp Inc",
"context_ref": "pitch_deck_session_123"
}
Flow:
pitch-agentoutputs text containing handoff JSONscripts/orchestrate.py(or your event bus) detects- Schema validates:
target_agentใน allowlist? - Sends new steering event ไป
market-researcher - Result returned back ไป
pitch-agent
Security
ข้อควรระวัง: ถ้าผู้ประชากร document สามารถ embed “handoff” text → อาจ trigger unintended handoff
Mitigations ใน orchestrate.py:
- Hard-allowlist target agents (ตัวอักษร set)
- Schema-validate payload (JSON structure)
- Prefer tool call over text pattern matching (ในอนาคต)
README.md ในแต่ละ Cookbook
ตัวอย่าง:
# pitch-agent Managed Agent
## Security Tier
Confidential — may process deal-sensitive materials
## Handoff Targets
- market-researcher: for deep sector analysis
- model-builder: for financial modeling
## Steering Event Schema
{
"target": "Target Company Inc",
"acquirer": "Buyer Group LLC",
"thesis": "string describing deal thesis"
}
Deploy Workflow
# Step 1: Check all cookbooks are valid
bash scripts/test-cookbooks.sh
# Step 2: Deploy specific agent
export ANTHROPIC_API_KEY=sk-ant-...
scripts/deploy-managed-agent.sh pitch-agent
# Output:
# - Creates 3 subagents (researcher, modeler, deck-writer)
# - Uploads all skills
# - POSTs orchestrator agent to /v1/agents
# - Returns agent_id for use in steering events
ทำไมแยก Managed Agents ออกจาก Cowork?
| ด้าน | เหตุผล |
|---|---|
| API Format | /v1/agents expects YAML + JSON resolve steps (Cowork expects plugin.json) |
| Subagents | Cowork ไม่มี callable_agents (only agents, no workers) |
| Steering | API-driven (steering_event), Cowork user-driven (chat) |
| Validation | CMA needs schema checks ก่อน handoff (Cowork handles via UI) |
| Orchestration | CMA users manage event loop (e.g. Temporal, Airflow) |
สรุป: managed-agent-cookbooks/ เป็น API deployment mirror ของ plugins/agent-plugins/ — ใช้เดียว system prompts + skills แต่ wrap ใน agent.yaml manifests, subagent leaf workers, และ steering event orchestration ที่เหมาะสำหรับ headless deployment