
Deep Agents Core
Bootstrap a LangChain Deep Agent harness with planning, files, subagents, memory, approvals, and on-demand skills instead of assembling LangGraph middleware yourself.
Overview
deep-agents-core is an agent skill for the Build phase that teaches how to configure create_deep_agent(), middleware, and SKILL.md-based capabilities for multi-step LangGraph agents.
Install
npx skills add https://github.com/langchain-ai/langchain-skills --skill deep-agents-coreWhat is this skill?
- create_deep_agent() opinionated harness on LangChain/LangGraph
- Default TodoListMiddleware for multi-step task breakdown
- FilesystemMiddleware with pluggable backends for large context
- SubAgent middleware for delegating to specialized agents
- Store-backed long-term memory, human-in-the-loop approvals, and on-demand SKILL.md skills
- 6 harness capabilities listed: task planning, context/files, subagents, long-term memory, human-in-the-loop, on-demand s
Adoption & trust: 7.5k installs on skills.sh; 782 GitHub stars; 3/3 security scanners passed (skills.sh audits); trending (+100% hot-view momentum).
What problem does it solve?
You need a production-shaped agent with planning, files, and delegation, but wiring LangGraph middleware from scratch is slow and easy to get wrong.
Who is it for?
Indie builders launching multi-step coding or ops agents that outgrow a single create_agent loop.
Skip if: Tiny one-off automations where context fits in one message and no subagents or durable memory are needed.
When should I use this skill?
INVOKE THIS SKILL when building ANY Deep Agents application.
What do I get? / Deliverables
You stand up a configured Deep Agent harness with the right middleware enabled, then extend it with skills like deep-agents-memory when persistence or hybrid storage is required.
- Configured create_deep_agent() instance with selected middleware
- Documented harness choices aligned to the when-to-use table
Recommended Skills
Journey fit
Deep Agents are productized agent stacks you configure during implementation, before ship-time hardening or launch distribution. agent-tooling covers create_deep_agent(), middleware selection, and SKILL.md loading for specialized capabilities.
How it compares
Opinionated Deep Agents harness versus lightweight LangChain create_agent for single-purpose bots.
Common Questions / FAQ
Who is deep-agents-core for?
Developers and solo founders implementing LangChain Deep Agents who want the standard middleware stack documented in one place.
When should I use deep-agents-core?
Use it at the start of Build agent-tooling whenever you are creating any Deep Agents app—before adding Store backends, custom skills, or subagent graphs.
Is deep-agents-core safe to install?
The harness can enable filesystem, subagents, and HITL hooks—check the Security Audits panel on this page and restrict tools and approvals for production.
Workflow Chain
Then invoke: deep agents memory
SKILL.md
READMESKILL.md - Deep Agents Core
<overview> Deep Agents are an opinionated agent framework built on LangChain/LangGraph with built-in middleware: - **Task Planning**: TodoListMiddleware for breaking down complex tasks - **Context Management**: Filesystem tools with pluggable backends - **Task Delegation**: SubAgent middleware for spawning specialized agents - **Long-term Memory**: Persistent storage across threads via Store - **Human-in-the-loop**: Approval workflows for sensitive operations - **Skills**: On-demand loading of specialized capabilities The agent harness provides these capabilities automatically - you configure, not implement. </overview> <when-to-use> | Use Deep Agents When | Use LangChain's create_agent When | |---------------------|-----------------------------------| | Multi-step tasks requiring planning | Simple, single-purpose tasks | | Large context requiring file management | Context fits in a single prompt | | Need for specialized subagents | Single agent is sufficient | | Persistent memory across sessions | Ephemeral, single-session work | </when-to-use> <middleware-selection> | If you need to... | Middleware | Notes | |------------------|------------|-------| | Track complex tasks | TodoListMiddleware | Default enabled | | Manage file context | FilesystemMiddleware | Configure backend | | Delegate work | SubAgentMiddleware | Add custom subagents | | Add human approval | HumanInTheLoopMiddleware | Requires checkpointer | | Load skills | SkillsMiddleware | Provide skill directories | | Access memory | MemoryMiddleware | Requires Store instance | </middleware-selection> <ex-basic-agent> <python> Create a basic deep agent with a custom tool and invoke it with a user message. ```python from deepagents import create_deep_agent from langchain.tools import tool @tool def get_weather(city: str) -> str: """Get the weather for a given city.""" return f"It is always sunny in {city}" agent = create_deep_agent( model="claude-sonnet-4-5-20250929", tools=[get_weather], system_prompt="You are a helpful assistant" ) config = {"configurable": {"thread_id": "user-123"}} result = agent.invoke({ "messages": [{"role": "user", "content": "What's the weather in Tokyo?"}] }, config=config) ``` </python> <typescript> Create a basic deep agent with a custom tool and invoke it with a user message. ```typescript import { createDeepAgent } from "deepagents"; import { tool } from "@langchain/core/tools"; import { z } from "zod"; const getWeather = tool( async ({ city }) => `It is always sunny in ${city}`, { name: "get_weather", description: "Get weather for a city", schema: z.object({ city: z.string() }) } ); const agent = await createDeepAgent({ model: "claude-sonnet-4-5-20250929", tools: [getWeather], systemPrompt: "You are a helpful assistant" }); const config = { configurable: { thread_id: "user-123" } }; const result = await agent.invoke({ messages: [{ role: "user", content: "What's the weather in Tokyo?" }] }, config); ``` </typescript> </ex-basic-agent> <ex-full-configuration> <python> Configure a deep agent with all available options including subagents, skills, and persistence. ```python from deepagents import create_deep_agent from deepagents.backends import FilesystemBackend from langgraph.checkpoint.memory import MemorySaver from langgraph.store.memory import InMemoryStore agent = create_deep_agent( name="my-assistant", model="claude-sonnet-4-5-20250929", tools=[custom_tool1, custom_tool2], system_prompt="Custom instructions", subagents=[research_agent, code_agent], backend=FilesystemBackend(root_dir=".", virtual_mode=True), interrupt_on={"write_file": True}, skills=["./skills/"], checkpointer=MemorySaver(), store=InMemoryStore() ) ``` </python> <typescript> Con