Claude Code 提供了强大的插件系统,允许你通过自定义命令、代理、Hook、Skills 和 MCP 服务器来扩展功能。本文将完整介绍如何从零开始开发 Claude Code 插件和 Hook,包括创建插件、配置 Hook、发布到 Marketplace 等全流程。
Claude Code 的插件系统提供了多种扩展方式:
- Commands(命令):创建自定义斜杠命令,快速执行常用操作
- Agents(代理):定义专门的子代理来处理特定任务
- Skills(技能):扩展 Claude 的能力,让模型自主调用
- Hooks(钩子):在特定事件发生时自动执行脚本
- MCP Servers:集成外部工具和服务
通过插件系统,你可以:
- 自动化工作流:在文件写入后自动格式化、运行测试
- 增强安全性:拦截危险操作、验证命令
- 集成工具:连接数据库、API、通知系统等
- 团队协作:在项目级别配置插件,确保团队使用一致的工具
让我们通过创建一个简单的问候插件来熟悉插件系统。
- 已安装 Claude Code(可通过 验证)
- 基本的命令行操作知识
插件清单文件 描述了插件的基本信息:
在 目录下创建命令文件:
返回上级目录,创建 Marketplace 配置文件:
选择 “Install now”,然后需要重启 Claude Code 才能使用新插件。
你会看到 Claude 使用你的问候命令!运行 可以查看新命令是否已列出。
一个完整的插件可以包含以下组件:
这是插件的核心配置文件,必须包含:
Commands 是自定义的斜杠命令,通过 Markdown 文件定义。文件内容会被发送给 Claude 作为指令。
示例:代码格式化命令
Agents 是专门的子代理,用于处理特定类型的任务。
示例:代码审查代理
Skills 是模型可以自主调用的能力扩展。创建 目录,每个技能是一个包含 的子目录。
示例:Git 操作技能
Hook 是插件系统中最强大的功能之一,允许你在特定事件发生时自动执行脚本。
Hook 可以在以下位置配置:
- - 用户级设置
- - 项目级设置
- - 本地项目设置(不提交)
- 插件中的 - 插件提供的 Hook
PreToolUse
在工具调用之前执行,可以拦截、修改或自动批准操作。
PostToolUse
在工具成功执行后立即运行,常用于自动格式化、运行测试等。
Notification
当 Claude Code 发送通知时触发,可以用于桌面通知、日志记录等。
UserPromptSubmit
在用户提交提示之前执行,可以添加上下文、验证提示等。
SessionStart / SessionEnd
在会话开始或结束时执行,用于环境设置、清理任务等。
Hook 通过 stdin 接收 JSON 数据,包含会话信息和事件特定数据:
Hook 可以通过退出码和 JSON 输出来控制行为:
简单方式:退出码
- :成功,stdout 在详细模式下显示
- :阻止操作,stderr 作为错误消息返回给 Claude
- 其他:非阻塞错误,stderr 在详细模式下显示
高级方式:JSON 输出
让我们参考 ritmex-marketplace 来创建一个完整的通知插件。
:
:
:
:
在文件写入后自动运行格式化工具:
:
拦截危险命令并建议更安全的替代方案:
使用 LLM 判断 Claude 是否应该继续工作:
- 创建仓库结构:
- 推送到 GitHub:
- 用户安装:
在项目的 中配置自动安装:
团队成员信任仓库文件夹后,插件会自动安装。
- 验证输入:永远不要盲目信任输入数据
- 引用变量:使用 而不是
- 阻止路径遍历:检查文件路径中的
- 使用绝对路径:为脚本指定完整路径
- 跳过敏感文件:避免处理 、、密钥等
- 设置超时:为长时间运行的脚本设置合理的超时
- 并行执行:多个匹配的 Hook 会并行运行
- 去重:相同的 Hook 命令会自动去重
- 使用调试模式: 查看详细执行信息
- 测试命令:先手动运行 Hook 命令确保正常工作
- 检查配置:使用 查看已注册的 Hook
Claude Code 的插件系统提供了强大的扩展能力:
- Commands:快速创建自定义命令
- Agents:定义专门的子代理
- Skills:扩展模型能力
- Hooks:自动化工作流和增强安全性
- MCP Servers:集成外部工具
通过插件系统,你可以:
- 自动化重复任务
- 增强开发安全性
- 集成团队工具
- 提升开发效率
参考资源:
- Claude Code 官方文档
- ritmex-marketplace 示例
- Plugin 参考文档
- Hook 参考文档
开始创建你的第一个插件,让 Claude Code 更加强大!
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/220862.html