- AI 插件
- 开发工具
- 插件系统
【免费下载链接】claude-plugins-official
Official, Anthropic-managed directory of high quality Claude Code Plugins.
本指南以claude-plugins-official仓库中 component-patterns.md 为骨架,系统讲解 Claude Code 插件中 commands、agents、skills、hooks、scripts 五类组件的组织模式,并深入剖析组件生命周期、跨组件协作架构与可扩展性最佳实践。读完本文,你将掌握从 1 个命令的小插件到 100+ 文件企业级插件的分层组织方案,并能结合plugin.json清单配置设计出可维护、可扩展、可自动发现的插件目录结构。
组件生命周期:理解 Claude Code 如何加载与触发插件组件
组织模式的前提是理解组件的两个生命周期阶段:发现阶段(Discovery)与激活阶段(Activation)。从 SKILL.md 对自动发现机制的描述可以确认,Claude Code 的组件加载完全由目录约定与清单驱动。
发现阶段(Discovery Phase)
当 Claude Code 启动时,按以下顺序完成插件的加载:
- 扫描已启用的插件:读取每个插件的
.claude-plugin/plugin.json - 发现组件:扫描默认目录(
./commands/、./agents/、./skills/、./hooks/hooks.json、./.mcp.json)以及清单中声明的自定义路径 - 解析定义:读取 Markdown 文件的 YAML frontmatter 与 JSON 配置
- 注册组件:将组件注册到 Claude Code 运行时
- 初始化:启动 MCP 服务器、注册 hooks
关键时序:组件注册发生在 Claude Code初始化期间,而不是持续运行过程中。这意味着修改插件目录结构后,需要重新启动 Claude Code 会话才能让新组件生效(对应 SKILL.md 中"Changes take effect on next Claude Code session"的说明)。
路径解析遵循 manifest-reference.md 定义的规则:先扫描默认目录,再扫描清单声明的自定义路径,最后合并加载——所有位置的组件都会注册,同名组件会触发冲突错误,不会互相覆盖。
激活阶段(Activation Phase)
不同类型的组件在不同时机被激活:
| 组件类型 | 触发方式 | 激活时机 |
|---|---|---|
| Commands | 用户输入/斜杠命令 | Claude Code 查表并执行 |
| Agents | 任务到达 | Claude Code 评估能力描述后自动选择,或用户手动调用 |
| Skills | 任务上下文匹配description | Claude Code 加载对应 SKILL.md |
| Hooks | 生命周期事件发生 | Claude Code 调用匹配的钩子 |
| MCP Servers | 工具调用匹配服务器能力 | 转发到对应服务器 |
命令(Commands)组织模式
命令是用户直接交互的入口,其组织方式决定了插件的可用性边界。Claude Code 对commands/目录下的.md文件自动发现,文件名即斜杠命令名。
扁平结构(Flat Structure)
单目录存放全部命令,是最简单、零配置的方案:
commands/ ├── build.md ├── test.md ├── deploy.md ├── review.md └── docs.md适用场景:命令总数 5~15 个、所有命令处于同一抽象层级、无清晰分类维度。
优点:结构简单易导航、无需任何清单配置、发现速度快。仓库中的 code-review 与 commit-commands 插件即采用这种直接扁平的组织方式。
分类结构(Categorized Structure)
当命令超过 15 个且存在清晰的功能分类(或不同的权限级别)时,按目录划分命令类型:
commands/ # Core commands ├── build.md └── test.md admin-commands/ # Administrative ├── configure.md └── manage.md workflow-commands/ # Workflow automation ├── review.md └── deploy.md清单配置:通过commands字段声明多个路径:
{ "commands": [ "./commands", "./admin-commands", "./workflow-commands" ] }适用场景:15+ 命令、清晰的功能类别、不同权限级别。
优点:按用途组织、易于维护、可按目录限制访问。注意commands字段补充而非替换默认commands/目录——默认目录与自定义路径中的组件都会加载(见 manifest-reference.md)。
仓库中的 code-modernization 插件是分类结构的实践范本:其commands/目录下集中了modernize-assess.md、modernize-map.md、modernize-transform.md、modernize-uplift.md等 9 个命令,全部采用modernize-前缀统一命名,形成清晰的命令族。
层级结构(Hierarchical Structure)
对 20+ 命令、多级分类、复杂工作流的插件,采用嵌套目录:
commands/ ├── ci/ │ ├── build.md │ ├── test.md │ └── lint.md ├── deployment/ │ ├── staging.md │ └── production.md └── management/ ├── config.md └── status.md重要限制:Claude Code不支持自动递归发现嵌套命令目录。必须为每一层子目录显式声明自定义路径:
{ "commands": [ "./commands/ci", "./commands/deployment", "./commands/management" ] }优点:组织度最高、边界清晰、结构可扩展。manifest-reference.md也提醒:所有自定义路径必须相对插件根目录、以./开头、禁止../向上导航。
Agent(子代理)组织模式
Agent 是 Markdown 定义的子代理文件(YAML frontmatter 声明description与capabilities),组织方式直接影响自动选择与协作效率。
按角色组织(Role-Based)
面向职责明确、互不重叠、由用户手动调用的场景:
agents/ ├── code-reviewer.md # Reviews code ├── test-generator.md # Generates tests ├── documentation-writer.md # Writes docs └── refactorer.md # Refactors code仓库中的 pr-review-toolkit 即典型范例:code-reviewer.md、code-simplifier.md、comment-analyzer.md、pr-test-analyzer.md、silent-failure-hunter.md、type-design-analyzer.md六个角色各司其职、互不重叠。
按能力组织(Capability-Based)
面向技术专项、领域专精、需要自动选择的场景:
agents/ ├── python-expert.md # Python-specific ├── typescript-expert.md # TypeScript-specific ├── api-specialist.md # API design └── database-specialist.md # Database work按工作流阶段组织(Workflow-Based)
面向顺序工作流与流水线自动化:
agents/ ├── planning-agent.md # Planning phase ├── implementation-agent.md # Coding phase ├── testing-agent.md # Testing phase └── deployment-agent.md # Deployment phaseSkill(技能)组织模式
Skill 以skills/下的子目录承载,每个技能目录必须包含SKILL.md。仓库中 plugin-dev 的 Skill 结构本身就是组织模式的活教材。
按主题组织(Topic-Based)
知识型技能、教育参考内容、广泛适用性:
skills/ ├── api-design/ │ └── SKILL.md ├── error-handling/ │ └── SKILL.md ├── testing-strategies/ │ └── SKILL.md └── performance-optimization/ └── SKILL.md按工具组织(Tool-Based)
面向特定工具或技术的专精技能,可携带 references、examples、scripts:
skills/ ├── docker/ │ ├── SKILL.md │ └── references/ │ └── dockerfile-best-practices.md ├── kubernetes/ │ ├── SKILL.md │ └── examples/ │ └── deployment.yaml └── terraform/ ├── SKILL.md └── scripts/ └── validate-config.sh仓库中的 terraform、playwright 外部插件均属此类。
按工作流组织(Workflow-Based)
面向多步骤流程、公司特定流程、过程自动化:
skills/ ├── code-review-workflow/ │ ├── SKILL.md │ └── references/ │ ├── checklist.md │ └── standards.md ├── deployment-workflow/ │ ├── SKILL.md │ └── scripts/ │ ├── pre-deploy.sh │ └── post-deploy.sh └── testing-workflow/ ├── SKILL.md └── examples/ └── test-structure.md富资源技能(Skill with Rich Resources)
综合性技能应完整利用全部资源类型。以api-testing技能为例:
skills/ └── api-testing/ ├── SKILL.md # Core skill (1500 words) ├── references/ │ ├── rest-api-guide.md │ ├── graphql-guide.md │ └── authentication.md ├── examples/ │ ├── basic-test.js │ ├── authenticated-test.js │ └── integration-test.js ├── scripts/ │ ├── run-tests.sh │ └── generate-report.py └── assets/ └── test-template.json资源使用原则:
- SKILL.md:总览与何时使用各类资源(采用渐进式披露,见 plugin-structure README)
- references/:详细指南(按需加载)
- examples/:可复制的代码示例
- scripts/:可执行的测试运行器等
- assets/:模板与配置
仓库中的 claude-security/skills/claude-security 是富资源技能的完整范例:SKILL.md作为核心入口,jobs/目录承载scan-changes.md、scan-codebase.md、suggest-patches.md三个任务,specs/目录存放patch-spec.md、report-spec.md规格文档。
Hook(钩子)组织模式
Hook 通过hooks.json配置事件处理器(事件包括 PreToolUse、PostToolUse、Stop、SessionStart 等)。hooks.json 可以位于hooks/hooks.json,也可内联在plugin.json的hooks字段(见 manifest-reference.md)。
单体配置(Monolithic Configuration)
单一hooks.json承载全部钩子:
hooks/ ├── hooks.json # All hook definitions └── scripts/ ├── validate-write.sh ├── validate-bash.sh └── load-context.sh{ "PreToolUse": [...], "PostToolUse": [...], "Stop": [...], "SessionStart": [...] }适用场景:总计 5~10 个钩子、钩子逻辑简单、集中式配置。仓库中的 hookify 即采用单体配置:单个hooks.json内联定义了 PreToolUse(pretooluse.py)、PostToolUse(posttooluse.py)、Stop(stop.py)、UserPromptSubmit(userpromptsubmit.py)四个事件的全部钩子,统一调用${CLAUDE_PLUGIN_ROOT}/hooks/下的 Python 脚本。
按事件组织(Event-Based)
每类事件独立一个文件,便于不同团队分别管理:
hooks/ ├── hooks.json # Combines all ├── pre-tool-use.json # PreToolUse hooks ├── post-tool-use.json # PostToolUse hooks ├── stop.json # Stop hooks └── scripts/ ├── validate/ │ ├── write.sh │ └── bash.sh └── context/ └── load.sh{ "PreToolUse": ${file:./pre-tool-use.json}, "PostToolUse": ${file:./post-tool-use.json}, "Stop": ${file:./stop.json} }注意:Claude Code 不支持 JSON 文件引用语法(${file:...}),必须使用构建脚本将分片文件合并为最终的hooks.json。
适用场景:10+ 钩子、不同团队管理不同事件、复杂钩子配置。
按用途组织(Purpose-Based)
按功能目的分组钩子脚本,适合钩子脚本众多、职能边界清晰的场景:
hooks/ ├── hooks.json └── scripts/ ├── security/ │ ├── validate-paths.sh │ ├── check-credentials.sh │ └── scan-malware.sh ├── quality/ │ ├── lint-code.sh │ ├── check-tests.sh │ └── verify-docs.sh └── workflow/ ├── notify-team.sh └── update-status.sh仓库中的 claude-security 展示了按事件 + 条件匹配的高阶用法:其hooks.json为不同事件(UserPromptExpansion、PostToolUse、PostToolUseFailure、PermissionRequest)分别配置钩子,并大量使用matcher、if条件、async异步执行等字段,例如仅当git push或gh pr create发生时触发提示,钩子命令统一通过sh "${CLAUDE_PLUGIN_ROOT}/hooks/hooks.sh"分发。这种模式印证了 standard-plugin.md 中 hooks 与 scripts 配合的做法——配置只描述"何时触发",具体逻辑全部下沉到脚本,保持hooks.json精简。
脚本(Scripts)组织模式
脚本是组件背后的执行引擎,组织方式影响可复用性与维护成本。
扁平脚本(Flat Scripts)
scripts/ ├── build.sh ├── test.py ├── deploy.sh ├── validate.js └── report.py适用场景:5~10 个脚本、彼此相关、插件简单。
分类脚本(Categorized Scripts)
scripts/ ├── build/ │ ├── compile.sh │ └── package.sh ├── test/ │ ├── run-unit.sh │ └── run-integration.sh ├── deploy/ │ ├── staging.sh │ └── production.sh └── utils/ ├── log.sh └── notify.sh适用场景:10+ 脚本、清晰类别、可复用工具。仓库中的 claude-security/scripts 即采用分类结构:lib/存放共享 Python 库,根目录存放render_report.py、save_result.py、write_scan_meta.py等单用途脚本,并配有keep-waiting.sh等辅助脚本。
按语言组织(Language-Based)
scripts/ ├── bash/ │ ├── build.sh │ └── deploy.sh ├── python/ │ ├── analyze.py │ └── report.py └── javascript/ ├── bundle.js └── optimize.js适用场景:多语言脚本、不同运行时要求、语言专属依赖。
跨组件协作模式
当插件规模增长,组件之间需要共享代码与职责边界时,采用以下三种跨组件模式。
共享资源(Shared Resources)
多组件共享公共库,消除重复代码:
plugin/ ├── commands/ │ ├── test.md # Uses lib/test-utils.sh │ └── deploy.md # Uses lib/deploy-utils.sh ├── agents/ │ └── tester.md # References lib/test-utils.sh ├── hooks/ │ └── scripts/ │ └── pre-test.sh # Sources lib/test-utils.sh └── lib/ ├── test-utils.sh └── deploy-utils.sh组件内通过${CLAUDE_PLUGIN_ROOT}可移植路径引用:
#!/bin/bash source "${CLAUDE_PLUGIN_ROOT}/lib/test-utils.sh" run_tests收益:代码复用、行为一致、维护更容易。
仓库中 claude-security 正是此模式的体现:lib/下集中的chain.py、console.py、cwe.py、finding.py、sarif.py、secret.py、strictjson.py等模块被hooks.py、扫描脚本与报告生成脚本共同引用,__init__.py使其可作为包导入。
分层架构(Layered Architecture)
按关注点分离组件:
plugin/ ├── commands/ # User interface layer ├── agents/ # Orchestration layer ├── skills/ # Knowledge layer └── lib/ ├── core/ # Core business logic ├── integrations/ # External services └── utils/ # Helper functions适用场景:大型插件(100+ 文件)、多开发者协作、清晰的关注点分离。仓库中的 hookify 是一个生动的分层范例:commands/作为用户界面层(configure.md、help.md、hookify.md、list.md),hooks/承载事件接入层(pretooluse.py、posttooluse.py、stop.py、userpromptsubmit.py),core/提供核心逻辑(config_loader.py、rule_engine.py),matchers/与utils/分别提供匹配规则与工具函数,agents/提供会话分析能力。
插件中嵌套插件(Plugin Within Plugin)
在单个插件内组织可选扩展模块:
plugin/ ├── .claude-plugin/ │ └── plugin.json ├── core/ # Core functionality │ ├── commands/ │ └── agents/ └── extensions/ # Optional extensions ├── extension-a/ │ ├── commands/ │ └── agents/ └── extension-b/ ├── commands/ └── agents/清单配置:
{ "commands": [ "./core/commands", "./extensions/extension-a/commands", "./extensions/extension-b/commands" ] }适用场景:模块化功能、可选特性、插件家族。advanced-plugin.md 中的enterprise-devops示例将这一思路发挥到极致:commands 按ci/、monitoring/、admin/分组,agents 按orchestration/与specialized/分组,skills 各自携带references/、examples/、scripts/富资源,hooks 脚本按security/、quality/、workflow/归类,配合.mcp.json注册三个自定义 MCP 服务器与lib/共享库,构成完整的企业级分层插件。
组织最佳实践
命名(Naming)
- 命名一致:文件名与组件用途匹配
- 描述性强:名称应说明组件做什么
- 避免缩写:使用完整单词保证清晰(如 SKILL.md 建议避免
utils/、misc.md、temp.sh这类模糊命名)
组织(Organization)
- 从简开始:先用扁平结构,需要时再重组
- 相关分组:将相关组件放在一起(例如把测试相关的 commands、agents、skills 放在相邻位置)
- 关注点分离:不混入无关功能
可扩展性(Scalability)
- 为增长做规划:选择可扩展的结构
- 尽早重构:在结构变得痛苦之前重组
- 文档化结构:在 README 中说明组织方式(参考 plugin-structure README 的维护建议)
可维护性(Maintainability)
- 模式一致:整个插件使用相同结构
- 最小化嵌套:保持目录深度可控
- 遵循约定:遵守社区标准与命名惯例(kebab-case、
${CLAUDE_PLUGIN_ROOT})
性能(Performance)
- 避免深层嵌套:影响组件发现时间
- 最小化自定义路径:尽量使用默认目录
- 保持配置精简:过大的配置文件拖慢加载
与清单配置协同:路径规则与验证
组织模式最终需要通过plugin.json落地。manifest-reference.md 给出了配套的路径硬性规则,直接决定组织方案能否被正确发现:
- 必须相对路径:禁止绝对路径(如
/Users/name/plugin/commands) - 必须以
./开头:指示相对插件根目录 - 禁止
../:不得向上导航目录 - 仅使用正斜杠:即使在 Windows 上也用
/而非\ - 自定义路径是补充:
commands、agents字段补充而非替换默认目录 - 名称冲突会报错:合并加载时同名组件触发错误
推荐的组件路径写法:"./commands"✅、"./src/commands"✅、"./configs/hooks.json"✅;而"commands"(缺./)、"../shared/commands"、".\\commands"(反斜杠)均为非法写法。Claude Code 会在插件加载时执行语法、字段与组件三重验证(路径存在性、Hook/MCP 配置有效性、无循环依赖),任何违规都会阻止插件正常注册。
结语
Claude Code 插件的组件组织不是单纯的文件摆放问题,而是与自动发现机制、清单路径解析、事件触发模型深度耦合的架构决策。从单一命令的扁平结构,到按事件/用途组织的 hooks,再到 lib 共享库与分层架构支撑的百文件级插件,组织模式的选型应始终围绕"可发现、可维护、可扩展"三个目标展开。仓库中的 plugin-dev 插件 本身既是这些模式的文档来源,也是其最佳实践的直接示范——无论开发何种规模的插件,都可以从这里找到对应的组织范本。
- AI 插件
- 开发工具
- 插件系统
【免费下载链接】claude-plugins-official
Official, Anthropic-managed directory of high quality Claude Code Plugins.
相关推荐
Claude Code 插件组件组织模式实战指南:从扁平目录到分层架构的完整演进路径
Claude Code 插件组件组织模式实战指南:从扁平目录到分层架构的完整演进路径 组件如何组织,直接决定 Claude Code 插件的可发现性、可维护性与
AI 应用AI 技能/插件开发工具Windows11DragAndDropToTaskbarFix完全配置教程:从自动启动到高级参数调整
Windows11DragAndDropToTaskbarFix完全配置教程:从自动启动到高级参数调整 Windows11DragAndDropToTaskba
桌面应用模块化架构设计:从组件到全栈的Leptos代码组织指南
模块化架构设计:从组件到全栈的Leptos代码组织指南 引言:Leptos的模块化哲学 Leptos作为一个用Rust构建快速Web应用的框架,其核心优势之一在
前端后端Web框架SSR
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考