en un clic
claude-agent-dev
Claude Agent SDK patterns and best practices
Installer avec Codex ou Claude Copiez ce prompt, collez-le dans Codex, Claude ou un autre assistant, puis laissez-le vérifier la page du skill et l'installer pour vous.
Menu
Claude Agent SDK patterns and best practices
Installer avec Codex ou Claude Copiez ce prompt, collez-le dans Codex, Claude ou un autre assistant, puis laissez-le vérifier la page du skill et l'installer pour vous.
Generate a structured pre-consultation patient briefing. Use when the physician asks for a briefing, a pre-consultation summary, or sends /briefing.
Search the live web or read a specific web page for recency-sensitive clinical information — drug recalls, newly published guidance, FDA/EMA safety communications — that the local clinical guidelines corpus does not cover. Use when the physician asks to "search the web", "look up the latest", or asks about something the guidelines search returned no results for.
Code review and refactoring guidelines
FastAPI backend patterns for AI Doctor Assistant
React frontend development patterns for AI Doctor Assistant
Architecture guidance for AI Doctor Assistant
Basé sur la classification professionnelle SOC
| name | claude-agent-dev |
| description | Claude Agent SDK patterns and best practices |
uv add claude-agent-sdk
Tools are deterministic Python functions the agent can call:
from claude_agent_sdk import tool, create_sdk_mcp_server
@tool("tool_name", "Description of what it does", {"param": str})
async def my_tool(args: dict) -> dict:
result = do_something(args["param"])
return {
"content": [{
"type": "text",
"text": json.dumps(result)
}]
}
# Register tools as MCP server
tools_server = create_sdk_mcp_server(
name="my_tools",
version="1.0.0",
tools=[my_tool]
)
When referencing tools in allowed_tools:
"mcp__<server_name>__<tool_name>"
# Example: "mcp__briefing__fetch_patient"
Use JSON schema for validated output:
from claude_agent_sdk import ClaudeAgentOptions
options = ClaudeAgentOptions(
output_format={
"type": "json_schema",
"schema": {
"type": "object",
"properties": {
"result": {"type": "string"}
},
"required": ["result"]
}
}
)
from claude_agent_sdk import HookMatcher
async def log_hook(input_data, tool_use_id, context):
print(f"Tool called: {input_data.get('tool_name')}")
return {}
options = ClaudeAgentOptions(
hooks={
"PreToolUse": [HookMatcher(hooks=[log_hook])],
"PostToolUse": [HookMatcher(hooks=[log_hook])]
}
)
query() - One-off task, returns resultClaudeSDKClient - Continuous conversation with statefrom claude_agent_sdk import query
async for message in query(prompt="Do something", options=options):
if hasattr(message, "structured_output"):
return message.structured_output
NEVER call real LLM in tests. Always mock:
@pytest.fixture
def mock_agent_response():
return {"result": "mocked"}
async def test_agent(mock_agent_response, mocker):
mocker.patch("claude_agent_sdk.query", return_value=[mock_agent_response])
# ... test logic
from langfuse import Langfuse
langfuse = Langfuse()
async def langfuse_hook(input_data, tool_use_id, context):
langfuse.trace(
name=f"tool:{input_data.get('tool_name')}",
input=input_data.get('tool_input')
)
return {}