Skill.md
LangChain Tool Builder
在 LangChain 项目里手写工具有一个隐患:安全属性分散在多处——权限逻辑可能混在执行逻辑里,新工具忘记声明 is_read_only 就默认可写。这个 skill 用 Claude Code 的 buildTool() 模式解决这个问题:一个类统一管理工具的身份、参数 schema、安全属性和执行逻辑,新工具 fail-closed 默认安全。
核心框架
| 层级 | 方法 | 职责 |
|---|---|---|
| 安全元数据 | 类属性 | is_read_only、is_destructive、is_concurrency_safe 三个 bool,默认 False(fail-closed) |
| 语义校验 | _validate_input_semantics | 在执行前拦截"参数格式不对"的情况,错误消息必须可操作 |
| 权限检查 | _check_permissions | 在执行前拦截"不该用这个工具"的情况(路径越权、缺少 env var) |
| 核心逻辑 | _call | 真正的业务执行,只在前两层通过后才运行 |
支持的查询类型
- "帮我定义一个查询/搜索/创建/删除工具"
- "给这个工具加权限检查 / 参数校验"
- "在项目里安装 ClaudeStyleTool 基类"
- "工具定义" / "build_tool" / "Claude Code style tool"
- "定义一个工具" / "create a LangChain tool"
使用方式
- 打开 Claude Code,说"帮我定义一个工具"或"create a tool for X"
- Skill 检查基类是否就位,没有则自动安装
- 收集工具名、描述、参数 schema、安全属性
- 生成完整的
.py工具文件,打印安全属性摘要供校验 - 对于简单工具,使用
build_tool()工厂函数,更简洁
局限说明
安全属性需要开发者明确声明——Skill 会引导你回答,但最终判断(这个工具是否并发安全?)需要你对业务逻辑有判断力。_call 内部的实际执行逻辑也需要你自己补全。