[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6C5F5PYAXQBT657MBA8ZAXQ":3,"skill-same:01M6C5F5PYAXQBT657MBA8ZAXQ":56},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":16,"categories":17,"keywords":23,"publishedAt":30,"linkOnly":31,"markdownContent":32,"markdownBody":33,"frontMatter":34,"refName":35,"commitSha":36,"skillDirectory":37,"forksCount":14,"repositoryHtmlUrl":38,"repositoryHomepageUrl":6,"ownerHtmlUrl":39,"ownerBlogUrl":40,"ownerDescription":6,"updatedAt":41,"install":42,"resources":55},"01M6C5F5PYAXQBT657MBA8ZAXQ","deep-agents-core",null,"INVOKE THIS SKILL when building ANY Deep Agents application. Covers create_deep_agent(), harness architecture, SKILL.md format, and configuration options.","CoralShades\u002Facm-ai","CoralShades","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F220297585?v=4","01M6C5211QSJHZ8HXSDDWCR507","Coral Shades AI Agency","01M6C52161FNQDRQ0FRR8DAA9D",0,"MIT","https:\u002F\u002Fgithub.com\u002FCoralShades\u002Facm-ai\u002Fblob\u002Fmain\u002F.claude\u002Fskills\u002Fdeep-agents-core\u002FSKILL.md",[18],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000023","Skill与智能体开发","SCENARIO","使用场景",[24,25,26,27,28,29],"core","deep agents core","architecture","create","harness","format","2026-11-10 10:12:30",false,"---\nname: deep-agents-core\ndescription: \"INVOKE THIS SKILL when building ANY Deep Agents application. Covers create_deep_agent(), harness architecture, SKILL.md format, and configuration options.\"\n---\n\n\u003Coverview>\nDeep Agents are an opinionated agent framework built on LangChain\u002FLangGraph with built-in middleware:\n\n- **Task Planning**: TodoListMiddleware for breaking down complex tasks\n- **Context Management**: Filesystem tools with pluggable backends\n- **Task Delegation**: SubAgent middleware for spawning specialized agents\n- **Long-term Memory**: Persistent storage across threads via Store\n- **Human-in-the-loop**: Approval workflows for sensitive operations\n- **Skills**: On-demand loading of specialized capabilities\n\nThe agent harness provides these capabilities automatically - you configure, not implement.\n\u003C\u002Foverview>\n\n\u003Cwhen-to-use>\n\n| Use Deep Agents When | Use LangChain's create_agent When |\n|---------------------|-----------------------------------|\n| Multi-step tasks requiring planning | Simple, single-purpose tasks |\n| Large context requiring file management | Context fits in a single prompt |\n| Need for specialized subagents | Single agent is sufficient |\n| Persistent memory across sessions | Ephemeral, single-session work |\n\n\u003C\u002Fwhen-to-use>\n\n\u003Cmiddleware-selection>\n\n| If you need to... | Middleware | Notes |\n|------------------|------------|-------|\n| Track complex tasks | TodoListMiddleware | Default enabled |\n| Manage file context | FilesystemMiddleware | Configure backend |\n| Delegate work | SubAgentMiddleware | Add custom subagents |\n| Add human approval | HumanInTheLoopMiddleware | Requires checkpointer |\n| Load skills | SkillsMiddleware | Provide skill directories |\n| Access memory | MemoryMiddleware | Requires Store instance |\n\n\u003C\u002Fmiddleware-selection>\n\n\u003Cex-basic-agent>\n\u003Cpython>\nCreate a basic deep agent with a custom tool and invoke it with a user message.\n```python\nfrom deepagents import create_deep_agent\nfrom langchain.tools import tool\n\n@tool\ndef get_weather(city: str) -> str:\n    \"\"\"Get the weather for a given city.\"\"\"\n    return f\"It is always sunny in {city}\"\n\nagent = create_deep_agent(\n    model=\"claude-sonnet-4-5-20250929\",\n    tools=[get_weather],\n    system_prompt=\"You are a helpful assistant\"\n)\n\nconfig = {\"configurable\": {\"thread_id\": \"user-123\"}}\nresult = agent.invoke({\n    \"messages\": [{\"role\": \"user\", \"content\": \"What's the weather in Tokyo?\"}]\n}, config=config)\n```\n\u003C\u002Fpython>\n\u003Ctypescript>\nCreate a basic deep agent with a custom tool and invoke it with a user message.\n```typescript\nimport { createDeepAgent } from \"deepagents\";\nimport { tool } from \"@langchain\u002Fcore\u002Ftools\";\nimport { z } from \"zod\";\n\nconst getWeather = tool(\n  async ({ city }) => `It is always sunny in ${city}`,\n  { name: \"get_weather\", description: \"Get weather for a city\", schema: z.object({ city: z.string() }) }\n);\n\nconst agent = await createDeepAgent({\n  model: \"claude-sonnet-4-5-20250929\",\n  tools: [getWeather],\n  systemPrompt: \"You are a helpful assistant\"\n});\n\nconst config = { configurable: { thread_id: \"user-123\" } };\nconst result = await agent.invoke({\n  messages: [{ role: \"user\", content: \"What's the weather in Tokyo?\" }]\n}, config);\n```\n\u003C\u002Ftypescript>\n\u003C\u002Fex-basic-agent>\n\n\u003Cex-full-configuration>\n\u003Cpython>\nConfigure a deep agent with all available options including subagents, skills, and persistence.\n```python\nfrom deepagents import create_deep_agent\nfrom deepagents.backends import FilesystemBackend\nfrom langgraph.checkpoint.memory import MemorySaver\nfrom langgraph.store.memory import InMemoryStore\n\nagent = create_deep_agent(\n    name=\"my-assistant\",\n    model=\"claude-sonnet-4-5-20250929\",\n    tools=[custom_tool1, custom_tool2],\n    system_prompt=\"Custom instructions\",\n    subagents=[research_agent, code_agent],\n    backend=FilesystemBackend(root_dir=\".\", virtual_mode=True),\n    interrupt_on={\"write_file\": True},\n    skills=[\".\u002Fskills\u002F\"],\n    checkpointer=MemorySaver(),\n    store=InMemoryStore()\n)\n```\n\u003C\u002Fpython>\n\u003Ctypescript>\nConfigure a deep agent with all available options including subagents, skills, and persistence.\n```typescript\nimport { createDeepAgent, FilesystemBackend } from \"deepagents\";\nimport { MemorySaver, InMemoryStore } from \"@langchain\u002Flanggraph\";\n\nconst agent = await createDeepAgent({\n  name: \"my-assistant\",\n  model: \"claude-sonnet-4-5-20250929\",\n  tools: [customTool1, customTool2],\n  systemPrompt: \"Custom instructions\",\n  subagents: [researchAgent, codeAgent],\n  backend: new FilesystemBackend({ rootDir: \".\", virtualMode: true }),\n  interruptOn: { write_file: true },\n  skills: [\".\u002Fskills\u002F\"],\n  checkpointer: new MemorySaver(),\n  store: new InMemoryStore()\n});\n```\n\u003C\u002Ftypescript>\n\u003C\u002Fex-full-configuration>\n\n\u003Cbuilt-in-tools>\nEvery deep agent has access to:\n\n1. **Planning**: `write_todos` - Track multi-step tasks\n2. **Filesystem**: `ls`, `read_file`, `write_file`, `edit_file`, `glob`, `grep`\n3. **Delegation**: `task` - Spawn specialized subagents\n\u003C\u002Fbuilt-in-tools>\n\n---\n\n## SKILL.md Format\n\n\u003Cskill-md-format>\nSkills use **progressive disclosure** - agents only load content when relevant.\n\n### Directory Structure\n```\nskills\u002F\n└── my-skill\u002F\n    ├── SKILL.md        # Required: main skill file\n    ├── examples.py     # Optional: supporting files\n    └── templates\u002F      # Optional: templates\n```\n\n### SKILL.md Format\n```markdown\n---\nname: my-skill\ndescription: Clear, specific description of what this skill does\n---\n\n# Skill Name\n\n## Overview\nBrief explanation of the skill's purpose.\n\n## When to Use\nConditions when this skill applies.\n\n## Instructions\nStep-by-step guidance for the agent.\n```\n\u003C\u002Fskill-md-format>\n\n\u003Cskills-vs-memory>\n\n| Skills | Memory (AGENTS.md) |\n|--------|-------------------|\n| On-demand loading | Always loaded at startup |\n| Task-specific instructions | General preferences |\n| Large documentation | Compact context |\n| SKILL.md in directories | Single AGENTS.md file |\n\n\u003C\u002Fskills-vs-memory>\n\n\u003Cex-skills-with-filesystem-backend>\n\u003Cpython>\nSet up an agent with skills directory and filesystem backend for on-demand skill loading.\n```python\nfrom deepagents import create_deep_agent\nfrom deepagents.backends import FilesystemBackend\nfrom langgraph.checkpoint.memory import MemorySaver\n\nagent = create_deep_agent(\n    backend=FilesystemBackend(root_dir=\".\", virtual_mode=True),\n    skills=[\".\u002Fskills\u002F\"],\n    checkpointer=MemorySaver()\n)\n\nresult = agent.invoke({\n    \"messages\": [{\"role\": \"user\", \"content\": \"Use the python-testing skill\"}]\n}, config={\"configurable\": {\"thread_id\": \"session-1\"}})\n```\n\u003C\u002Fpython>\n\u003Ctypescript>\nSet up an agent with skills directory and filesystem backend for on-demand skill loading.\n```typescript\nimport { createDeepAgent, FilesystemBackend } from \"deepagents\";\nimport { MemorySaver } from \"@langchain\u002Flanggraph\";\n\nconst agent = await createDeepAgent({\n  backend: new FilesystemBackend({ rootDir: \".\", virtualMode: true }),\n  skills: [\".\u002Fskills\u002F\"],\n  checkpointer: new MemorySaver()\n});\n\nconst result = await agent.invoke({\n  messages: [{ role: \"user\", content: \"Use the python-testing skill\" }]\n}, { configurable: { thread_id: \"session-1\" } });\n```\n\u003C\u002Ftypescript>\n\u003C\u002Fex-skills-with-filesystem-backend>\n\n\u003Cex-skills-with-store-backend>\n\u003Cpython>\nLoad skill content into a Store backend for environments without filesystem access.\n```python\nfrom deepagents import create_deep_agent\nfrom deepagents.backends import StoreBackend\nfrom deepagents.backends.utils import create_file_data\nfrom langgraph.store.memory import InMemoryStore\n\nstore = InMemoryStore()\n\n# Load skill content into store\nskill_content = \"\"\"---\nname: python-testing\ndescription: Best practices for Python testing with pytest\n---\n# Python Testing Skill\n...\"\"\"\n\nstore.put(\n    namespace=(\"filesystem\",),\n    key=\"\u002Fskills\u002Fpython-testing\u002FSKILL.md\",\n    value=create_file_data(skill_content)\n)\n\nagent = create_deep_agent(\n    backend=lambda rt: StoreBackend(rt),\n    store=store,\n    skills=[\"\u002Fskills\u002F\"]\n)\n```\n\u003C\u002Fpython>\n\u003C\u002Fex-skills-with-store-backend>\n\n\u003Cboundaries>\n### What Agents CAN Configure\n\n- Model selection and parameters\n- Additional custom tools\n- System prompt customization\n- Backend storage strategy\n- Which tools require approval\n- Custom subagents with specialized tools\n\n### What Agents CANNOT Configure\n\n- Core middleware removal (TodoList, Filesystem, SubAgent always present)\n- The write_todos, task, or filesystem tool names\n- The SKILL.md frontmatter format\n\u003C\u002Fboundaries>\n\n\u003Cfix-checkpointer-for-interrupts>\n\u003Cpython>\nInterrupts require a checkpointer.\n```python\n# WRONG\nagent = create_deep_agent(interrupt_on={\"write_file\": True})\n\n# CORRECT\nagent = create_deep_agent(interrupt_on={\"write_file\": True}, checkpointer=MemorySaver())\n```\n\u003C\u002Fpython>\n\u003Ctypescript>\nInterrupts require a checkpointer.\n```typescript\n\u002F\u002F WRONG\nconst agent = await createDeepAgent({ interruptOn: { write_file: true } });\n\n\u002F\u002F CORRECT\nconst agent = await createDeepAgent({ interruptOn: { write_file: true }, checkpointer: new MemorySaver() });\n```\n\u003C\u002Ftypescript>\n\u003C\u002Ffix-checkpointer-for-interrupts>\n\n\u003Cfix-store-for-memory>\n\u003Cpython>\nStoreBackend requires a Store instance for persistent memory across threads.\n```python\n# WRONG\nagent = create_deep_agent(backend=lambda rt: StoreBackend(rt))\n\n# CORRECT\nagent = create_deep_agent(backend=lambda rt: StoreBackend(rt), store=InMemoryStore())\n```\n\u003C\u002Fpython>\n\u003Ctypescript>\nStoreBackend requires a Store instance for persistent memory across threads.\n```typescript\n\u002F\u002F WRONG\nconst agent = await createDeepAgent({ backend: (config) => new StoreBackend(config) });\n\n\u002F\u002F CORRECT\nconst agent = await createDeepAgent({ backend: (config) => new StoreBackend(config), store: new InMemoryStore() });\n```\n\u003C\u002Ftypescript>\n\u003C\u002Ffix-store-for-memory>\n\n\u003Cfix-thread-id-for-conversations>\n\u003Cpython>\nUse consistent thread_id to maintain conversation context across invocations.\n```python\n# WRONG: Each invocation is isolated\nagent.invoke({\"messages\": [{\"role\": \"user\", \"content\": \"Hi\"}]})\nagent.invoke({\"messages\": [{\"role\": \"user\", \"content\": \"What did I say?\"}]})\n\n# CORRECT\nconfig = {\"configurable\": {\"thread_id\": \"user-123\"}}\nagent.invoke({\"messages\": [...]}, config=config)\nagent.invoke({\"messages\": [...]}, config=config)\n```\n\u003C\u002Fpython>\n\u003Ctypescript>\nUse consistent thread_id to maintain conversation context across invocations.\n```typescript\n\u002F\u002F WRONG: Each invocation is isolated\nawait agent.invoke({ messages: [{ role: \"user\", content: \"Hi\" }] });\nawait agent.invoke({ messages: [{ role: \"user\", content: \"What did I say?\" }] });\n\n\u002F\u002F CORRECT\nconst config = { configurable: { thread_id: \"user-123\" } };\nawait agent.invoke({ messages: [...] }, config);\nawait agent.invoke({ messages: [...] }, config);\n```\n\u003C\u002Ftypescript>\n\u003C\u002Ffix-thread-id-for-conversations>\n\n\u003Cfix-frontmatter-required>\n```markdown\n# WRONG: Missing frontmatter in SKILL.md\n# My Skill\nThis is my skill...\n\n# CORRECT: Include YAML frontmatter\n---\nname: my-skill\ndescription: Python testing best practices with pytest fixtures and mocking\n---\n# My Skill\nThis is my skill...\n```\n\u003C\u002Ffix-frontmatter-required>\n\n\u003Cfix-backend-for-skills>\n\u003Cpython>\nSkills require a proper backend to load from the filesystem.\n```python\n# WRONG: Skills won't load without proper backend\nagent = create_deep_agent(skills=[\".\u002Fskills\u002F\"])\n\n# CORRECT: Use FilesystemBackend for local skills\nagent = create_deep_agent(\n    backend=FilesystemBackend(root_dir=\".\", virtual_mode=True),\n    skills=[\".\u002Fskills\u002F\"]\n)\n```\n\u003C\u002Fpython>\n\u003C\u002Ffix-backend-for-skills>\n\n\u003Cfix-specific-skill-descriptions>\nUse specific descriptions to help agents decide when to use a skill.\n```markdown\n# WRONG: Vague description\n---\nname: helper\ndescription: Helpful skill\n---\n\n# CORRECT: Specific description\n---\nname: python-testing\ndescription: Python testing best practices with pytest fixtures, mocking, and async patterns\n---\n```\n\u003C\u002Ffix-specific-skill-descriptions>\n\n\u003Cfix-subagent-skills>\n\u003Cpython>\nSkills are not inherited by subagents - provide them explicitly.\n```python\n# WRONG: Custom subagents don't inherit skills\nagent = create_deep_agent(\n    skills=[\"\u002Fmain-skills\u002F\"],\n    subagents=[{\"name\": \"helper\", ...}]  # No skills\n)\n\n# CORRECT: Provide skills explicitly\nagent = create_deep_agent(\n    skills=[\"\u002Fmain-skills\u002F\"],\n    subagents=[{\"name\": \"helper\", \"skills\": [\"\u002Fhelper-skills\u002F\"], ...}]\n)\n```\n\u003C\u002Fpython>\n\u003C\u002Ffix-subagent-skills>\n","\u003Coverview>\nDeep Agents are an opinionated agent framework built on LangChain\u002FLangGraph with built-in middleware:\n\n- **Task Planning**: TodoListMiddleware for breaking down complex tasks\n- **Context Management**: Filesystem tools with pluggable backends\n- **Task Delegation**: SubAgent middleware for spawning specialized agents\n- **Long-term Memory**: Persistent storage across threads via Store\n- **Human-in-the-loop**: Approval workflows for sensitive operations\n- **Skills**: On-demand loading of specialized capabilities\n\nThe agent harness provides these capabilities automatically - you configure, not implement.\n\u003C\u002Foverview>\n\n\u003Cwhen-to-use>\n\n| Use Deep Agents When | Use LangChain's create_agent When |\n|---------------------|-----------------------------------|\n| Multi-step tasks requiring planning | Simple, single-purpose tasks |\n| Large context requiring file management | Context fits in a single prompt |\n| Need for specialized subagents | Single agent is sufficient |\n| Persistent memory across sessions | Ephemeral, single-session work |\n\n\u003C\u002Fwhen-to-use>\n\n\u003Cmiddleware-selection>\n\n| If you need to... | Middleware | Notes |\n|------------------|------------|-------|\n| Track complex tasks | TodoListMiddleware | Default enabled |\n| Manage file context | FilesystemMiddleware | Configure backend |\n| Delegate work | SubAgentMiddleware | Add custom subagents |\n| Add human approval | HumanInTheLoopMiddleware | Requires checkpointer |\n| Load skills | SkillsMiddleware | Provide skill directories |\n| Access memory | MemoryMiddleware | Requires Store instance |\n\n\u003C\u002Fmiddleware-selection>\n\n\u003Cex-basic-agent>\n\u003Cpython>\nCreate a basic deep agent with a custom tool and invoke it with a user message.\n```python\nfrom deepagents import create_deep_agent\nfrom langchain.tools import tool\n\n@tool\ndef get_weather(city: str) -> str:\n    \"\"\"Get the weather for a given city.\"\"\"\n    return f\"It is always sunny in {city}\"\n\nagent = create_deep_agent(\n    model=\"claude-sonnet-4-5-20250929\",\n    tools=[get_weather],\n    system_prompt=\"You are a helpful assistant\"\n)\n\nconfig = {\"configurable\": {\"thread_id\": \"user-123\"}}\nresult = agent.invoke({\n    \"messages\": [{\"role\": \"user\", \"content\": \"What's the weather in Tokyo?\"}]\n}, config=config)\n```\n\u003C\u002Fpython>\n\u003Ctypescript>\nCreate a basic deep agent with a custom tool and invoke it with a user message.\n```typescript\nimport { createDeepAgent } from \"deepagents\";\nimport { tool } from \"@langchain\u002Fcore\u002Ftools\";\nimport { z } from \"zod\";\n\nconst getWeather = tool(\n  async ({ city }) => `It is always sunny in ${city}`,\n  { name: \"get_weather\", description: \"Get weather for a city\", schema: z.object({ city: z.string() }) }\n);\n\nconst agent = await createDeepAgent({\n  model: \"claude-sonnet-4-5-20250929\",\n  tools: [getWeather],\n  systemPrompt: \"You are a helpful assistant\"\n});\n\nconst config = { configurable: { thread_id: \"user-123\" } };\nconst result = await agent.invoke({\n  messages: [{ role: \"user\", content: \"What's the weather in Tokyo?\" }]\n}, config);\n```\n\u003C\u002Ftypescript>\n\u003C\u002Fex-basic-agent>\n\n\u003Cex-full-configuration>\n\u003Cpython>\nConfigure a deep agent with all available options including subagents, skills, and persistence.\n```python\nfrom deepagents import create_deep_agent\nfrom deepagents.backends import FilesystemBackend\nfrom langgraph.checkpoint.memory import MemorySaver\nfrom langgraph.store.memory import InMemoryStore\n\nagent = create_deep_agent(\n    name=\"my-assistant\",\n    model=\"claude-sonnet-4-5-20250929\",\n    tools=[custom_tool1, custom_tool2],\n    system_prompt=\"Custom instructions\",\n    subagents=[research_agent, code_agent],\n    backend=FilesystemBackend(root_dir=\".\", virtual_mode=True),\n    interrupt_on={\"write_file\": True},\n    skills=[\".\u002Fskills\u002F\"],\n    checkpointer=MemorySaver(),\n    store=InMemoryStore()\n)\n```\n\u003C\u002Fpython>\n\u003Ctypescript>\nConfigure a deep agent with all available options including subagents, skills, and persistence.\n```typescript\nimport { createDeepAgent, FilesystemBackend } from \"deepagents\";\nimport { MemorySaver, InMemoryStore } from \"@langchain\u002Flanggraph\";\n\nconst agent = await createDeepAgent({\n  name: \"my-assistant\",\n  model: \"claude-sonnet-4-5-20250929\",\n  tools: [customTool1, customTool2],\n  systemPrompt: \"Custom instructions\",\n  subagents: [researchAgent, codeAgent],\n  backend: new FilesystemBackend({ rootDir: \".\", virtualMode: true }),\n  interruptOn: { write_file: true },\n  skills: [\".\u002Fskills\u002F\"],\n  checkpointer: new MemorySaver(),\n  store: new InMemoryStore()\n});\n```\n\u003C\u002Ftypescript>\n\u003C\u002Fex-full-configuration>\n\n\u003Cbuilt-in-tools>\nEvery deep agent has access to:\n\n1. **Planning**: `write_todos` - Track multi-step tasks\n2. **Filesystem**: `ls`, `read_file`, `write_file`, `edit_file`, `glob`, `grep`\n3. **Delegation**: `task` - Spawn specialized subagents\n\u003C\u002Fbuilt-in-tools>\n\n---\n\n## SKILL.md Format\n\n\u003Cskill-md-format>\nSkills use **progressive disclosure** - agents only load content when relevant.\n\n### Directory Structure\n```\nskills\u002F\n└── my-skill\u002F\n    ├── SKILL.md        # Required: main skill file\n    ├── examples.py     # Optional: supporting files\n    └── templates\u002F      # Optional: templates\n```\n\n### SKILL.md Format\n```markdown\n---\nname: my-skill\ndescription: Clear, specific description of what this skill does\n---\n\n# Skill Name\n\n## Overview\nBrief explanation of the skill's purpose.\n\n## When to Use\nConditions when this skill applies.\n\n## Instructions\nStep-by-step guidance for the agent.\n```\n\u003C\u002Fskill-md-format>\n\n\u003Cskills-vs-memory>\n\n| Skills | Memory (AGENTS.md) |\n|--------|-------------------|\n| On-demand loading | Always loaded at startup |\n| Task-specific instructions | General preferences |\n| Large documentation | Compact context |\n| SKILL.md in directories | Single AGENTS.md file |\n\n\u003C\u002Fskills-vs-memory>\n\n\u003Cex-skills-with-filesystem-backend>\n\u003Cpython>\nSet up an agent with skills directory and filesystem backend for on-demand skill loading.\n```python\nfrom deepagents import create_deep_agent\nfrom deepagents.backends import FilesystemBackend\nfrom langgraph.checkpoint.memory import MemorySaver\n\nagent = create_deep_agent(\n    backend=FilesystemBackend(root_dir=\".\", virtual_mode=True),\n    skills=[\".\u002Fskills\u002F\"],\n    checkpointer=MemorySaver()\n)\n\nresult = agent.invoke({\n    \"messages\": [{\"role\": \"user\", \"content\": \"Use the python-testing skill\"}]\n}, config={\"configurable\": {\"thread_id\": \"session-1\"}})\n```\n\u003C\u002Fpython>\n\u003Ctypescript>\nSet up an agent with skills directory and filesystem backend for on-demand skill loading.\n```typescript\nimport { createDeepAgent, FilesystemBackend } from \"deepagents\";\nimport { MemorySaver } from \"@langchain\u002Flanggraph\";\n\nconst agent = await createDeepAgent({\n  backend: new FilesystemBackend({ rootDir: \".\", virtualMode: true }),\n  skills: [\".\u002Fskills\u002F\"],\n  checkpointer: new MemorySaver()\n});\n\nconst result = await agent.invoke({\n  messages: [{ role: \"user\", content: \"Use the python-testing skill\" }]\n}, { configurable: { thread_id: \"session-1\" } });\n```\n\u003C\u002Ftypescript>\n\u003C\u002Fex-skills-with-filesystem-backend>\n\n\u003Cex-skills-with-store-backend>\n\u003Cpython>\nLoad skill content into a Store backend for environments without filesystem access.\n```python\nfrom deepagents import create_deep_agent\nfrom deepagents.backends import StoreBackend\nfrom deepagents.backends.utils import create_file_data\nfrom langgraph.store.memory import InMemoryStore\n\nstore = InMemoryStore()\n\n# Load skill content into store\nskill_content = \"\"\"---\nname: python-testing\ndescription: Best practices for Python testing with pytest\n---\n# Python Testing Skill\n...\"\"\"\n\nstore.put(\n    namespace=(\"filesystem\",),\n    key=\"\u002Fskills\u002Fpython-testing\u002FSKILL.md\",\n    value=create_file_data(skill_content)\n)\n\nagent = create_deep_agent(\n    backend=lambda rt: StoreBackend(rt),\n    store=store,\n    skills=[\"\u002Fskills\u002F\"]\n)\n```\n\u003C\u002Fpython>\n\u003C\u002Fex-skills-with-store-backend>\n\n\u003Cboundaries>\n### What Agents CAN Configure\n\n- Model selection and parameters\n- Additional custom tools\n- System prompt customization\n- Backend storage strategy\n- Which tools require approval\n- Custom subagents with specialized tools\n\n### What Agents CANNOT Configure\n\n- Core middleware removal (TodoList, Filesystem, SubAgent always present)\n- The write_todos, task, or filesystem tool names\n- The SKILL.md frontmatter format\n\u003C\u002Fboundaries>\n\n\u003Cfix-checkpointer-for-interrupts>\n\u003Cpython>\nInterrupts require a checkpointer.\n```python\n# WRONG\nagent = create_deep_agent(interrupt_on={\"write_file\": True})\n\n# CORRECT\nagent = create_deep_agent(interrupt_on={\"write_file\": True}, checkpointer=MemorySaver())\n```\n\u003C\u002Fpython>\n\u003Ctypescript>\nInterrupts require a checkpointer.\n```typescript\n\u002F\u002F WRONG\nconst agent = await createDeepAgent({ interruptOn: { write_file: true } });\n\n\u002F\u002F CORRECT\nconst agent = await createDeepAgent({ interruptOn: { write_file: true }, checkpointer: new MemorySaver() });\n```\n\u003C\u002Ftypescript>\n\u003C\u002Ffix-checkpointer-for-interrupts>\n\n\u003Cfix-store-for-memory>\n\u003Cpython>\nStoreBackend requires a Store instance for persistent memory across threads.\n```python\n# WRONG\nagent = create_deep_agent(backend=lambda rt: StoreBackend(rt))\n\n# CORRECT\nagent = create_deep_agent(backend=lambda rt: StoreBackend(rt), store=InMemoryStore())\n```\n\u003C\u002Fpython>\n\u003Ctypescript>\nStoreBackend requires a Store instance for persistent memory across threads.\n```typescript\n\u002F\u002F WRONG\nconst agent = await createDeepAgent({ backend: (config) => new StoreBackend(config) });\n\n\u002F\u002F CORRECT\nconst agent = await createDeepAgent({ backend: (config) => new StoreBackend(config), store: new InMemoryStore() });\n```\n\u003C\u002Ftypescript>\n\u003C\u002Ffix-store-for-memory>\n\n\u003Cfix-thread-id-for-conversations>\n\u003Cpython>\nUse consistent thread_id to maintain conversation context across invocations.\n```python\n# WRONG: Each invocation is isolated\nagent.invoke({\"messages\": [{\"role\": \"user\", \"content\": \"Hi\"}]})\nagent.invoke({\"messages\": [{\"role\": \"user\", \"content\": \"What did I say?\"}]})\n\n# CORRECT\nconfig = {\"configurable\": {\"thread_id\": \"user-123\"}}\nagent.invoke({\"messages\": [...]}, config=config)\nagent.invoke({\"messages\": [...]}, config=config)\n```\n\u003C\u002Fpython>\n\u003Ctypescript>\nUse consistent thread_id to maintain conversation context across invocations.\n```typescript\n\u002F\u002F WRONG: Each invocation is isolated\nawait agent.invoke({ messages: [{ role: \"user\", content: \"Hi\" }] });\nawait agent.invoke({ messages: [{ role: \"user\", content: \"What did I say?\" }] });\n\n\u002F\u002F CORRECT\nconst config = { configurable: { thread_id: \"user-123\" } };\nawait agent.invoke({ messages: [...] }, config);\nawait agent.invoke({ messages: [...] }, config);\n```\n\u003C\u002Ftypescript>\n\u003C\u002Ffix-thread-id-for-conversations>\n\n\u003Cfix-frontmatter-required>\n```markdown\n# WRONG: Missing frontmatter in SKILL.md\n# My Skill\nThis is my skill...\n\n# CORRECT: Include YAML frontmatter\n---\nname: my-skill\ndescription: Python testing best practices with pytest fixtures and mocking\n---\n# My Skill\nThis is my skill...\n```\n\u003C\u002Ffix-frontmatter-required>\n\n\u003Cfix-backend-for-skills>\n\u003Cpython>\nSkills require a proper backend to load from the filesystem.\n```python\n# WRONG: Skills won't load without proper backend\nagent = create_deep_agent(skills=[\".\u002Fskills\u002F\"])\n\n# CORRECT: Use FilesystemBackend for local skills\nagent = create_deep_agent(\n    backend=FilesystemBackend(root_dir=\".\", virtual_mode=True),\n    skills=[\".\u002Fskills\u002F\"]\n)\n```\n\u003C\u002Fpython>\n\u003C\u002Ffix-backend-for-skills>\n\n\u003Cfix-specific-skill-descriptions>\nUse specific descriptions to help agents decide when to use a skill.\n```markdown\n# WRONG: Vague description\n---\nname: helper\ndescription: Helpful skill\n---\n\n# CORRECT: Specific description\n---\nname: python-testing\ndescription: Python testing best practices with pytest fixtures, mocking, and async patterns\n---\n```\n\u003C\u002Ffix-specific-skill-descriptions>\n\n\u003Cfix-subagent-skills>\n\u003Cpython>\nSkills are not inherited by subagents - provide them explicitly.\n```python\n# WRONG: Custom subagents don't inherit skills\nagent = create_deep_agent(\n    skills=[\"\u002Fmain-skills\u002F\"],\n    subagents=[{\"name\": \"helper\", ...}]  # No skills\n)\n\n# CORRECT: Provide skills explicitly\nagent = create_deep_agent(\n    skills=[\"\u002Fmain-skills\u002F\"],\n    subagents=[{\"name\": \"helper\", \"skills\": [\"\u002Fhelper-skills\u002F\"], ...}]\n)\n```\n\u003C\u002Fpython>\n\u003C\u002Ffix-subagent-skills>\n",{"name":5,"description":7},"main","1ca81b0a7de199942400f965edd4d7544077ac5d",".claude\u002Fskills\u002Fdeep-agents-core","https:\u002F\u002Fgithub.com\u002FCoralShades\u002Facm-ai","https:\u002F\u002Fgithub.com\u002FCoralShades","coralshades.com.au","2026-04-18 00:45:07",{"source":8,"skillName":5,"commands":43,"prompt":53,"zipAvailable":54},[44,47,50],{"tool":45,"command":46},"npx","npx skills add CoralShades\u002Facm-ai --skill deep-agents-core",{"tool":48,"command":49},"bunx","bunx skills add CoralShades\u002Facm-ai --skill deep-agents-core",{"tool":51,"command":52},"pnpm","pnpm dlx skills add CoralShades\u002Facm-ai --skill deep-agents-core","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002FCoralShades\u002Facm-ai\u002Fblob\u002Fmain\u002F.claude\u002Fskills\u002Fdeep-agents-core\u002FSKILL.md",true,[],[57,79,92,108,130,140],{"skillNo":58,"name":59,"nameZh":6,"description":60,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":61,"categories":62,"keywords":66,"publishedAt":30},"01M6C63HKXA890HHV47WBAX0TB","uncodixfy","Prevents generic AI\u002FCodex UI patterns when generating frontend code. Use this skill whenever generating HTML, CSS, React, Vue, Svelte, or any frontend UI code to enforce clean, human-designed aesthetics inspired by Linear, Raycast, Stripe, and GitHub instead of typical AI-generated UI.","https:\u002F\u002Fgithub.com\u002FCoralShades\u002Facm-ai\u002Fblob\u002Fmain\u002F.qwen\u002Fskills\u002Funcodixfy\u002FSKILL.md",[63],{"categoryNo":64,"categoryName":65,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000009","前端开发",[59,67,68,69,70,71,72,73,74,75,76,77,78],"github","frontend","css","codex","react","code","linear","ui","vue","generated","use","html",{"skillNo":80,"name":81,"nameZh":6,"description":82,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":83,"licenseFileUrl":6,"sourceHtmlUrl":84,"categories":85,"keywords":86,"publishedAt":30},"01M6C63FJ2GEBBGZ5XSMV40KXB","runpodctl","Runpod CLI to manage your GPU workloads.","Apache-2.0","https:\u002F\u002Fgithub.com\u002FCoralShades\u002Facm-ai\u002Fblob\u002Fmain\u002F.qwen\u002Fskills\u002Frunpodctl\u002FSKILL.md",[],[81,87,88,89,90,91],"macos","cli","linux","gpu","Bash",{"skillNo":93,"name":94,"nameZh":6,"description":95,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":96,"categories":97,"keywords":98,"publishedAt":30},"01M6C63DPAV46TFVQ01SFYPJ7X","langgraph-persistence","INVOKE THIS SKILL when your LangGraph needs to persist state, remember conversations, travel through history, or configure subgraph checkpointer scoping. Covers checkpointers, thread_id, time travel, Store, and subgraph persistence modes.","https:\u002F\u002Fgithub.com\u002FCoralShades\u002Facm-ai\u002Fblob\u002Fmain\u002F.qwen\u002Fskills\u002Flanggraph-persistence\u002FSKILL.md",[],[99,100,101,102,103,104,105,106,107],"langgraph persistence","langgraph","persistence","travel","history","scoping","remember","state","configure",{"skillNo":109,"name":110,"nameZh":6,"description":111,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":112,"categories":113,"keywords":119,"publishedAt":30},"01M6C63BNS9CQEBTB8RNSSBFPA","langgraph-human-in-the-loop","INVOKE THIS SKILL when implementing human-in-the-loop patterns, pausing for approval, or handling errors in LangGraph. Covers interrupt(), Command(resume=...), approval\u002Fvalidation workflows, and the 4-tier error handling strategy.","https:\u002F\u002Fgithub.com\u002FCoralShades\u002Facm-ai\u002Fblob\u002Fmain\u002F.qwen\u002Fskills\u002Flanggraph-human-in-the-loop\u002FSKILL.md",[114],{"categoryNo":115,"categoryName":116,"taxonomyType":117,"taxonomyTypeDesc":118},"01JBSEEDCAT000000000000038","人力资源","PROFESSION","适用职业",[120,121,100,122,123,124,125,126,127,128,129],"langgraph human in the loop","loop","workflows","error handling","validation","human-in-the-loop","command","strategy","approval","resume",{"skillNo":131,"name":132,"nameZh":6,"description":133,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":134,"categories":135,"keywords":136,"publishedAt":30},"01M6C639GVYZFX3NFPV5FBDR4F","langgraph-fundamentals","INVOKE THIS SKILL when writing ANY LangGraph code. Covers StateGraph, state schemas, nodes, edges, Command, Send, invoke, streaming, and error handling.","https:\u002F\u002Fgithub.com\u002FCoralShades\u002Facm-ai\u002Fblob\u002Fmain\u002F.qwen\u002Fskills\u002Flanggraph-fundamentals\u002FSKILL.md",[],[137,100,123,106,138,139,126,72],"langgraph fundamentals","streaming","writing",{"skillNo":141,"name":142,"nameZh":6,"description":143,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":144,"categories":145,"keywords":146,"publishedAt":30},"01M6C6375N34YX2GZ3SD3R7XR2","langchain-rag","INVOKE THIS SKILL when building ANY retrieval-augmented generation (RAG) system. Covers document loaders, RecursiveCharacterTextSplitter, embeddings (OpenAI), and vector stores (Chroma, FAISS, Pinecone).","https:\u002F\u002Fgithub.com\u002FCoralShades\u002Facm-ai\u002Fblob\u002Fmain\u002F.qwen\u002Fskills\u002Flangchain-rag\u002FSKILL.md",[],[147,148,149,150,151,152,153,154,155,156],"rag","langchain rag","langchain","embeddings","vector","openai","chroma","faiss","vector stores","system"]