Install any skill in seconds. Free to start, no credit card required.
Get Started Free →在 Deep Agents 中创建和使用自定义技能,实现渐进式披露、SKILL.md 格式和 Agent Skills 协议。
.claude/skills/majiayu000-deepagents-skills/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-01 | ✗→✓ | ▲ Improved | 13% | 0% |
| case-02 | ✗→✓ | ▲ Improved | 25% | 0% |
| case-06 | ✗→✓ | ▲ Improved | 11% | 0% |
| case-07 | ✗→✓ | ▲ Improved | 23% | 0% |
| case-08 | ✗→✓ | ▲ Improved | 39% | 0% |
技能通过渐进式披露提供专门功能:agent 仅在相关时加载内容。
流程: 匹配(查看描述)→ 读取(加载 SKILL.md)→ 执行(遵循指令)
| 技能 | 内存(AGENTS.md) | |--------|-------------------| | 按需加载 | 始终加载 | | 任务特定 | 一般偏好 | | 大型文档 | 紧凑上下文 |
typescriptimport { createDeepAgent, FilesystemBackend } from "deepagents"; import { MemorySaver } from "@langchain/langgraph"; const agent = await createDeepAgent({ backend: new FilesystemBackend({ rootDir: ".", virtualMode: true }), skills: ["./skills/"], checkpointer: new MemorySaver() }); const result = await agent.invoke({ messages: [{ role: "user", content: "什么是 LangGraph?如果可用,使用 langgraph-docs 技能。" }] });
typescriptimport { createDeepAgent, StoreBackend, type FileData } from "deepagents"; import { InMemoryStore } from "@langchain/langgraph"; const store = new InMemoryStore(); function createFileData(content: string): FileData { const now = new Date().toISOString(); return { content: content.split("\n"), created_at: now, modified_at: now, }; } const skillUrl = "https://raw.githubusercontent.com/.../SKILL.md"; const response = await fetch(skillUrl); const skillContent = await response.text(); await store.put( ["filesystem"], "/skills/langgraph-docs/SKILL.md", createFileData(skillContent) ); const agent = await createDeepAgent({ backend: (config) => new StoreBackend(config), store, skills: ["/skills/"] });
typescriptimport { createDeepAgent, type FileData } from "deepagents"; import { MemorySaver } from "@langchain/langgraph"; function createFileData(content: string): FileData { const now = new Date().toISOString(); return { content: content.split("\n"), created_at: now, modified_at: now }; } const skillContent = `--- name: python-testing description: Pytest 最佳实践 --- # Python 测试技能 ...`; const skillsFiles: Record<string, FileData> = { "/skills/python-testing/SKILL.md": createFileData(skillContent) }; const agent = await createDeepAgent({ skills: ["/skills/"], checkpointer: new MemorySaver() }); await agent.invoke({ messages: [{ role: "user", content: "我应该如何编写测试?" }], files: skillsFiles });
markdown--- name: fastapi-docs description: FastAPI 最佳实践和模式 --- # FastAPI 文档技能 ## 何时使用 使用 FastAPI 端点时。 ## 指令 始终使用异步处理程序: \`\`\`typescript app.get("/users/:id", async (req, res) => { const user = await db.users.findById(req.params.id); res.json(user); }); \`\`\`
typescript// ❌ 无后端 await createDeepAgent({ skills: ["./skills/"] }); // ✅ 提供后端 await createDeepAgent({ backend: new FilesystemBackend({ rootDir: ".", virtualMode: true }), skills: ["./skills/"] });
markdown# ❌ 缺少 # 我的技能 # ✅ 包含 --- name: my-skill description: 这做什么 --- # 我的技能
markdown# ❌ 模糊 description: 有用的技能 # ✅ 具体 description: 使用 Jest 和模拟模式的 TypeScript 测试
| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-01 | fail→pass | 10,423 | 5,597 | -46% | 1 | 1 | 0% | 1,845 | 2,090 | +13% | 0 | 0 | — |
case-02 | fail→pass | 11,795 | 7,411 | -37% | 1 | 1 | 0% | 2,010 | 2,509 | +25% | 0 | 0 | — |
case-03 | pass→pass | 10,332 | 9,172 | -11% | 1 | 1 | 0% | 1,744 | 2,684 | +54% | 0 | 0 | — |
case-04 | pass→pass | 12,669 | 10,796 | -15% | 1 | 1 | 0% | 2,260 | 2,908 | +29% | 0 | 0 | — |
case-05 | pass→pass | 10,858 | 10,326 | -5% | 1 | 1 | 0% | 1,948 | 3,060 | +57% | 0 | 0 | — |
case-06 | fail→pass | 13,462 | 6,607 | -51% | 1 | 1 | 0% | 1,902 | 2,118 | +11% | 0 | 0 | — |
case-07 | fail→pass | 9,879 | 4,715 | -52% | 1 | 1 | 0% | 1,464 | 1,795 | +23% | 0 | 0 | — |
case-08 | fail→pass | 16,370 | 14,172 | -13% | 1 | 1 | 0% | 2,286 | 3,188 | +39% | 0 | 0 | — |
case-09 | pass→pass | 9,785 | 5,144 | -47% | 1 | 1 | 0% | 1,452 | 1,811 | +25% | 0 | 0 | — |
case-10 | pass→pass | 9,707 | 7,433 | -23% | 1 | 1 | 0% | 1,440 | 2,192 | +52% | 0 | 0 | — |
case-11 | fail→pass | 8,795 | 5,195 | -41% | 1 | 1 | 0% | 1,554 | 1,934 | +24% | 0 | 0 | — |
case-12 | fail→pass | 11,443 | 4,100 | -64% | 1 | 1 | 0% | 1,783 | 1,639 | -8% | 0 | 0 | — |
case-13 | pass→pass | 9,524 | 3,195 | -66% | 1 | 1 | 0% | 1,416 | 1,560 | +10% | 0 | 0 | — |
case-14 | fail→pass | 10,990 | 3,500 | -68% | 1 | 1 | 0% | 1,607 | 1,586 | -1% | 0 | 0 | — |
case-15 | fail→pass | 11,584 | 3,506 | -70% | 1 | 1 | 0% | 1,757 | 1,592 | -9% | 0 | 0 | — |
case-16 | pass→pass | 13,180 | 2,483 | -81% | 1 | 1 | 0% | 2,072 | 1,426 | -31% | 0 | 0 | — |
case-17 | pass→pass | 6,093 | 3,874 | -36% | 1 | 1 | 0% | 806 | 1,625 | +102% | 0 | 0 | — |
case-18 | fail→pass | 13,955 | 4,646 | -67% | 1 | 1 | 0% | 2,097 | 1,694 | -19% | 0 | 0 | — |
case-19 | pass→pass | 8,152 | 4,575 | -44% | 1 | 1 | 0% | 1,259 | 1,859 | +48% | 0 | 0 | — |
case-20 | pass→pass | 3,288 | 2,611 | -21% | 1 | 1 | 0% | 430 | 1,407 | +227% | 0 | 0 | — |
case-21 | pass→pass | 11,870 | 3,129 | -74% | 1 | 1 | 0% | 1,924 | 1,549 | -19% | 0 | 0 | — |
case-22 | pass→pass | 14,030 | 3,891 | -72% | 1 | 1 | 0% | 2,014 | 1,633 | -19% | 0 | 0 | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 22 cases were attempted. The headline lift of +45 percentage points is the difference between those two pass rates over the 22 comparable cases.
Without the skill loaded, the model failed this case. With it loaded, the same prompt on the same model passed. This is one improved case from the latest verified run; every case, including any that regressed, is in the table above.
Other measured skills in the registry, with their headline benchmark lift.