如何用 Claude Code 生成一个工具?
核心思路
让 Claude Code 生成工具,本质上就是用自然语言描述需求,让 AI 帮你写代码。你只需要说清楚要什么,Claude 会完成编码、调试、优化的全流程。
四步工作法
需求描述 → Claude 规划 → 编码实现 → 测试验证 → 迭代优化
第一步:写好需求描述
好的需求描述包含以下要素:
| 要素 | 说明 | 好例子 | 差例子 |
|---|---|---|---|
| 目标 | 做什么用的 | "命令行日志分析工具" | "帮我写个工具" |
| 技术栈 | 用什么语言实现 | "用 Python 3,只用标准库" | "用 Python" |
| 功能清单 | 具体功能点 | "支持按日期过滤、统计级别分布" | "分析日志" |
| 输入输出 | 输入什么、输出什么 | "读取 access.log,输出表格" | "处理一下" |
| 约束条件 | 限制和注意事项 | "文件超过 100MB 时给出提示" | "要快" |
好的例子
帮我写一个 Node.js 命令行工具,功能是批量调整图片大小:
- 输入:指定图片目录
- 输出:缩放到指定宽高,保存到 output/ 目录
- 参数:--width 800 --height 600 --quality 80
- 要求:支持 jpg/png/webp 格式,处理进度条显示
- 约束:使用 sharp 库,兼容 Node.js 18+
差的例子
帮我写个图片处理工具
第二步:让 Claude 生成
完整流程演示
你输入需求后,Claude 会:
你:帮我写一个 Nginx 日志分析工具
Claude:好的,我先分析一下需求...
需要实现的功能:
1. 读取 Nginx access.log
2. 统计每个 IP 的访问次数
3. 统计每个 URL 的访问次数
4. 输出格式化的表格
我建议使用 Python 实现,只用标准库
开始编码...
【创建文件 log-analyzer.py】
代码实现完成,测试一下...
【运行 python3 log-analyzer.py access.log】
运行成功,输出结果如下:
┌──────────────┬───────┐
│ IP │ 次数 │
├──────────────┼───────┤
│ 192.168.1.1 │ 152 │
│ 10.0.0.2 │ 89 │
└──────────────┴───────┘
如果还需要其他功能,随时告诉我。
分步推进策略
对于复杂工具,分多轮对话逐步构建:
第 1 轮:生成核心功能
"生成基础框架,能读取日志文件并逐行输出"
第 2 轮:添加统计功能
"添加 IP 统计和 URL 统计功能,按访问次数降序排列"
第 3 轮:增强输出
"输出格式改为表格,添加颜色区分高低频"
第 4 轮:添加参数支持
"支持通过命令行参数指定日志路径、过滤条件"
第 5 轮:健壮性提升
"添加错误处理、文件不存在提示、大文件处理"
第三步:调试和修复
生成工具后,Claude 会自动运行测试。如果出错,它会自动分析并修复:
常见的调试场景
| 问题 | Claude 的处理方式 |
|---|---|
| 语法错误 | 自动读取错误信息、定位问题行、修复 |
| 运行时异常 | 分析堆栈跟踪、补充边界条件处理 |
| 逻辑错误 | 检查代码逻辑、添加日志输出排查 |
| 性能问题 | 分析瓶颈、优化算法或数据结构 |
手动调试
你也可以主动让 Claude 帮你调试:
这个工具运行报错了,错误信息:
TypeError: Cannot read property 'length' of undefined
文件:src/parser.js:25
帮我看一下是什么问题
Claude 会分析错误信息,定位问题并修复。
第四步:将工具封装成 Skill
工具开发完成后,可以封装成 Claude Code 的 Skill,方便随时调用:
JavaScript
// .claude/skills/log-analyzer.js
export const meta = {
name: 'log-analyzer',
description: '分析 Nginx 日志,统计 IP 和 URL 访问次数',
whenToUse: '需要分析访问日志文件时',
};
之后在对话中直接使用:
/log-analyzer /var/log/nginx/access.log
实战示例合集
示例 1:批量文件重命名工具
用 Python 写一个批量重命名工具:
- 遍历指定目录下的所有文件
- 支持替换文件名中的指定字符串
- 支持添加前缀/后缀
- 支持正则表达式匹配
- 执行前预览改动
- --dry-run 参数只显示不改
示例 2:API 健康检查工具
用 Node.js 写一个 API 健康检查工具:
- 从 config.json 读取 URL 列表
- 每隔 30 秒检查一次
- 记录响应状态码和响应时间
- 超时 5 秒标记为异常
- 异常时输出红色警告
- 运行结果输出到 health-report.log
示例 3:数据库迁移脚本
写一个数据迁移脚本:
- 从 SQLite 读取用户表
- 数据清洗:去除空值、格式统一
- 写入 PostgreSQL 目标表
- 每迁移 1000 条输出一次进度
- 迁移完成后输出统计报告
- 支持 --rollback 回滚
生成工具的最佳实践
✅ 要做的
- 先小后大:从最小可用版本开始,逐步迭代
- 明确边界:说清楚文件范围、不要改什么
- 及时测试:每轮迭代后让 Claude 运行验证
- 审查代码:生成后再检查一遍,特别是涉及文件操作的逻辑
❌ 不要做的
- 一次性提超大需求:Claude 的处理能力有限,分步更靠谱
- 不明确技术栈:不指定语言时 Claude 可能选你不熟悉的
- 忽略错误处理:生成后记得让 Claude 补充异常处理
💡 实际使用场景
场景一:生成图片压缩工具
设计师每次都要手动压缩网页图片,前端小陈用 Claude Code 生成了一个工具:
帮我写一个 Node.js 批量图片压缩工具,锐度优先模式,支持拖拽文件夹处理
Claude 生成了脚本,小陈测试后发现压缩率不够理想,继续输入:
把压缩质量从 80 降到 60,保留 EXIF 信息,输出压缩前后的大小对比
Claude 调整了参数,重新运行。三次迭代后,工具达到了预期效果。小陈把它封装成了 Skill,之后设计师自己都能用。
场景二:生成数据清洗脚本
运营给了数据分析师小吴一份 2GB 的 CSV,格式混乱。小吴让 Claude 生成脚本:
写一个 Python 脚本清洗这份 CSV:去除空行、统一日期格式为 YYYY-MM-DD、去重、输出清洗报告
Claude 生成的脚本跑完后输出了:原始 52341 行、清洗后 48722 行、去重 3619 行、日期修正 124 条。小吴直接拿数据去做分析了。
场景三:生成 API 文档工具
后端老张写完了一套 API,懒得手写文档,用 Claude 生成了一个文档生成器:
读取 routes/ 目录下的所有路由文件,自动生成 OpenAPI 格式的文档
Claude 分析了路由注册代码,提取了 URL、方法、参数信息,生成了标准的 OpenAPI 规范文档,可以直接导入 Swagger UI。