跳转到内容

06-插件开发全生命周期

插件开发全生命周期

学习目标

本章将掌握 Claude Code 插件从创建到发布的完整生命周期,通过 plugin-dev 插件的 8 阶段引导工作流,掌握:

  • 8 阶段开发流程的每个步骤和 Gate
  • 三个专用验证 Agent 的职责和输出
  • 六个验证脚本的使用方法
  • 本地测试工作流(cc --plugin-dir

前置知识


项目实践

8 阶段开发流程

/plugin-dev:create-plugin Command 引导以下 8 个阶段:

阶段目标加载的 Skill
1. Discovery明确插件目的、目标用户、核心功能plugin-structure
2. Component Planning确定需要的 Commands、Agents、Skills、Hooks、MCPplugin-structure
3. Detailed Design详细设计每个组件(不可跳过所有相关 Skills
4. Structure Creation创建目录结构、plugin.json、README 模板plugin-structure
5. Component Implementation实现每个组件按需加载 Skills
6. Validation运行验证 Agent 和脚本plugin-validatorskill-reviewer
7. Testing本地 cc --plugin-dir 测试
8. Documentation完善 README 和市场发布

三个验证 Agent

Agent职责验证维度
plugin-validator全面验证插件结构目录结构、plugin.json、Commands、Agents、Skills、Hooks、MCP、安全检查
skill-reviewer审查 Skill 质量描述质量、触发有效性、渐进式披露、skill-creator 最佳实践
agent-creator生成 Agent 配置将用户需求翻译为 Agent frontmatter 和系统提示

六个验证脚本

脚本功能
validate-hook-schema.sh验证 hooks.json 结构是否符合 schema
test-hook.sh用样本输入测试 Hook 脚本
hook-linter.sh检查 Hook 脚本最佳实践
validate-agent.sh验证 Agent markdown 文件
parse-frontmatter.sh提取 YAML frontmatter
validate-settings.sh验证设置文件

本地测试工作流

开发完成后,使用 cc --plugin-dir <path> 加载未安装的插件进行测试:

Terminal window
cc --plugin-dir ./my-plugin

这会临时加载指定目录中的所有组件,不需要先安装到市场。

为什么 Detailed Design 不可跳过

8 阶段流程中,阶段 3(Detailed Design)被明确标记为不可跳过

“CRITICAL: Do not skip this phase. Detailed design ensures each component is well-defined before implementation.”

原因

  • 设计先行的工程原则——没有清晰设计就开始编码,很容易导致边写边改
  • 组件之间的依赖关系需要在设计阶段明确(如 Hook 依赖 Skill 的格式定义)
  • 跳过设计会导致后续 Validation 阶段频繁返工

文档标准

plugin-dev 强制执行一致的文档标准:

维度标准
描述第三人称(“This skill should be used when…”)
触发短语强且具体(列出用户可能的查询方式)
正文命令式/不定式(“To do X, do Y”)
README包含安装、使用、特性、最佳实践、贡献指南

陷阱与对策

陷阱表现对策
跳过 Detailed Design组件定义不清晰,Validation 阶段频繁返工强制执行阶段 3
验证 Agent 和脚本结果矛盾Agent 认为通过,脚本认为不通过以脚本的验证结果为准(确定性 > 模型判断)
本地测试与安装后行为不一致--plugin-dir 加载的环境与实际安装环境不同最终在安装后再次测试

设计取舍

为什么需要 3 个验证 Agent?

各自专注不同维度:plugin-validator 检查结构正确性,skill-reviewer 检查 Skill 的触发和描述质量,agent-creator 帮助生成 Agent 配置。合并为一个会导致注意力分散。

为什么 Validation 阶段使用 Agent 而非纯脚本?

脚本只能检查格式和结构(如 JSON schema 验证)。Agent 可以检查语义质量(如”这个 Skill 的触发短语是否足够具体?”、“这个 Agent 的系统提示是否清晰?”)。两者互补。

参考来源