deepagents-code-review
Reviews Deep Agents code for bugs, anti-patterns, and improvements. Use when reviewing code that uses create_deep_agent,…
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.
Claude Code
$ npx -y skills add existential-birds/beagle --skill deepagents-architecture --agent claude-code
Codex
$ npx skills add existential-birds/beagle --skill deepagents-architecture -a codex -y
Cursor
$ npx skills add existential-birds/beagle --skill deepagents-architecture -a cursor -y
Gemini CLI
$ npx skills add existential-birds/beagle --skill deepagents-architecture -a gemini-cli -y
GitHub Copilot
$ npx skills add existential-birds/beagle --skill deepagents-architecture -a github-copilot -y
OpenCode
$ npx skills add existential-birds/beagle --skill deepagents-architecture -a opencode -y
Windsurf
$ npx skills add existential-birds/beagle --skill deepagents-architecture -a windsurf -y
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.
Reviews Deep Agents code for bugs, anti-patterns, and improvements. Use when reviewing code that uses create_deep_agent,…
Implements agents using Deep Agents. Use when building agents with create_deep_agent, configuring backends, defining subagents,…
Guides architectural decisions for LangGraph applications. Use when deciding between LangGraph vs alternatives, choosing state…
Reviews LangGraph code for bugs, anti-patterns, and improvements. Use when reviewing code that uses StateGraph, nodes, edges,…
Implements stateful agent graphs using LangGraph. Use when building graphs, adding nodes/edges, defining state schemas,…
Create PydanticAI agents with type-safe dependencies, structured outputs, and proper configuration. Use when building AI agents,…
You MUST use this before any creative work - creating features, building components, adding functionality, modifying behavior, or…
Ask which skill or flow fits your situation. A router over the skills in this repo.