deepagents-code-review
Reviews Deep Agents code for bugs, anti-patterns, and improvements. Use when reviewing code that uses create_deep_agent, backends, subagents, middleware, or…
Guides architectural decisions for Deep Agents applications. Use when deciding between Deep Agents vs alternatives, choosing backend strategies, designing subagent systems, or selecting middleware approaches.
$ npx -y skills add existential-birds/beagle --skill deepagents-architecture --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/deepagents-architectureContext preview
The summary Claude sees to decide when to auto-load this skill.
Guides architectural decisions for Deep Agents applications. Use when deciding between Deep Agents vs alternatives, choosing backend strategies, designing subagent systems, or selecting middleware approaches.
name: deepagents-architecture description: Guides architectural decisions for Deep Agents applications. Use when deciding between Deep Agents vs alternatives, choosing backend strategies, designing subagent systems, or selecting middleware approaches.
| Scenario | Alternative | Why | |----------|-------------|-----| | Single LLM call | Direct API call | Deep Agents overhead not justified | | Simple RAG pipeline | LangChain LCEL | Simpler abstraction | | Custom graph control flow | LangGraph directly | More flexibility | | No file operations needed | `create_react_agent` | Lighter weight | | Stateless tool use | Function calling | No middleware needed |
| Backend | Persistence | Use Case | Requires | |---------|-------------|----------|----------| | `StateBackend` | Ephemeral (per-thread) | Working files, temp data | Nothing (default) | | `FilesystemBackend` | Disk | Local development, real files | `root_dir` path | | `StoreBackend` | Cross-thread | User preferences, knowledge bases | LangGraph `store` | | `CompositeBackend` | Mixed | Hybrid memory patterns | Multiple backends |
Need real disk access?
├─ Yes → FilesystemBackend(root_dir="/path")
└─ No
└─ Need persistence across conversations?
├─ Yes → Need mixed ephemeral + persistent?
│ ├─ Yes → CompositeBackend
│ └─ No → StoreBackend
└─ No → StateBackend (default)Route different paths to different storage backends:
from deepagents import create_deep_agent
from deepagents.backends import CompositeBackend, StateBackend, StoreBackend
agent = create_deep_agent(
backend=CompositeBackend(
default=StateBackend(), # Working files (ephemeral)
routes={
"/memories/": StoreBackend(store=store), # Persistent
"/preferences/": StoreBackend(store=store), # Persistent
},
),
)**Use subagents when:**
**Don't use subagents when:**
┌─────────────┐
│ Orchestrator│
└──────┬──────┘
┌──────────┼──────────┐
▼ ▼ ▼
┌──────┐ ┌──────┐ ┌──────┐
│Task A│ │Task B│ │Task C│
└──┬───┘ └──┬───┘ └──┬───┘
└──────────┼──────────┘
▼
┌─────────────┐
│ Synthesize │
└─────────────┘Best for: Research on multiple topics, parallel analysis, batch processing.
research_agent = {
"name": "researcher",
"description": "Deep research on complex topics",
"system_prompt": "You are an expert researcher...",
"tools": [web_search, document_reader],
}
coder_agent = {
"name": "coder",
"description": "Write and review code",
"system_prompt": "You are an expert programmer...",
"tools": [code_executor, linter],
}
agent = create_deep_agent(subagents=[research_agent, coder_agent])Best for: Domain-specific expertise, different tool sets per task type.
from deepagents import CompiledSubAgent, create_deep_agent
# Use existing LangGraph graph as subagent
custom_graph = create_react_agent(model=..., tools=...)
agent = create_deep_agent(
subagents=[CompiledSubAgent(
name="custom-workflow",
description="Runs specialized workflow",
runnable=custom_graph
)]
)Best for: Reusing existing LangGraph graphs, complex custom workflows.
Deep Agents applies middleware in this order:
1. **TodoListMiddleware** - Task planning with `write_todos`/`read_todos` 2. **FilesystemMiddleware** - File ops: `ls`, `read_file`, `write_file`, `edit_file`, `glob`, `grep`, `execute` 3. **SubAgentMiddleware** - Delegation via `task` tool 4. **SummarizationMiddleware** - Auto-summarizes at ~85% context or 170k tokens 5. **AnthropicPromptCachingMiddleware** - Caches system prompts (Anthropic only) 6. **PatchToolCallsMiddleware** - Fixes dangling tool calls from interruptions 7. **HumanInTheLoopMiddleware** - Pauses for approval (if `interrupt_on` configured)
from langchain.agents.middleware import AgentMiddleware
class MyMiddleware(AgentMiddleware):
tools = [my_custom_tool]
def transform_request(self, request):
# Modify system prompt, inject context
return request
def transform_response(self, response):
# Post-process, log, filter
return response
# Custom middleware added AFTER built-in stack
agent = create_deep_agent(middleware=[MyMiddleware()])| Need | Use Middleware | Use Tools | |------|----------------|-----------| | Inject system prompt content | ✅ | ❌ | | Add tools dynamically | ✅ | ❌
Image: NASA, Public Domain. Source Beagle is an Agent Skills marketplace: framework-aware code review, documentation, testing, architectural analysis, and git workflows for any compatible coding agent.
Repo: existential-birds/beagle
Reviews Deep Agents code for bugs, anti-patterns, and improvements. Use when reviewing code that uses create_deep_agent, backends, subagents, middleware, or…
Implements agents using Deep Agents. Use when building agents with create_deep_agent, configuring backends, defining subagents, adding middleware, or setting…
Guides architectural decisions for LangGraph applications. Use when deciding between LangGraph vs alternatives, choosing state management strategies, designing…
Reviews LangGraph code for bugs, anti-patterns, and improvements. Use when reviewing code that uses StateGraph, nodes, edges, checkpointing, or other LangGraph…
Implements stateful agent graphs using LangGraph. Use when building graphs, adding nodes/edges, defining state schemas, implementing checkpointing, handling…
Create PydanticAI agents with type-safe dependencies, structured outputs, and proper configuration. Use when building AI agents, creating chat systems, or…