Plugins 与 LSP:把团队能力打包分发

Claude Code Plugin 是 Skills、Agents、Hooks、MCP、LSP 和配置的分发层。本篇讲清独立配置与插件的边界、目录规范、LSP 代码智能、安装验证和安全审查。

教程基准:Claude Code v2.1.224(当前最新版,核验于 2026-08-07) · 最后核验:2026-08-07 · 适用版本:建议使用最新版 · 官方文档

学习并行工作

Plugin 解决什么问题

单个项目里可以直接维护 .claude/skills/.claude/agents/ 和 hooks。只在一个仓库使用时,这种独立配置最简单;当同一套能力要跨仓库、跨团队复用,并且需要版本、启停和统一升级时,再把它包装成 Plugin。

Plugin 不是另一种提示词,而是分发容器。它可以一起携带:

什么时候先不要做 Plugin

正确顺序通常是:项目内独立配置 -> 低风险任务验证 -> 团队评审 -> 再打包成 Plugin。

基础目录规范

my-plugin/
├── .claude-plugin/
│   └── plugin.json
├── skills/
│   └── review/
│       └── SKILL.md
├── agents/
├── hooks/
│   └── hooks.json
├── .mcp.json
├── .lsp.json
└── settings.json

.claude-plugin/ 里只放 plugin.json。不要把 skills/agents/hooks/ 塞进 .claude-plugin/。它们应该和 .claude-plugin/ 同级。

最小 manifest:

{
  "name": "team-quality",
  "description": "团队代码质量检查流程",
  "version": "1.0.0",
  "author": {
    "name": "Your Team"
  }
}

名字要稳定。发布后随意改名,会影响命令命名空间、安装记录和团队文档。

LSP 为什么值得单独理解

普通文本搜索只能找到字符串;LSP 可以理解语言符号,帮助 Claude 查定义、查引用、查看类型错误和实时诊断。对于 TypeScript、Python、Rust 或大型单体仓库,代码智能能减少为了定位一个符号而读取大量无关文件。

LSP 不是模型,也不替代测试。它依赖本机已经安装的 language server。插件中的 .lsp.json 只是告诉 Claude Code 如何启动它;团队成员缺少对应二进制时,插件会加载失败或跳过该能力。

优先使用官方 Marketplace 已提供的语言插件。只有目标语言没有成熟插件,或者团队需要特殊启动参数时,才维护自定义 .lsp.json

本地验证流程

第一次不要直接发布到 Marketplace。先从插件目录的上一级启动:

claude --plugin-dir ./my-plugin

然后逐项验证:

  1. /plugin 中没有 manifest、hook 或 LSP 加载错误。
  2. Skill 使用带命名空间的命令可以触发。
  3. Agent 能被发现,且工具权限符合预期。
  4. Hook 只在目标事件触发,不会循环运行。
  5. MCP 不会默认获得不必要的写权限。
  6. LSP 能找到定义并返回真实诊断。
  7. 禁用插件后,项目仍能正常构建和测试。

修改插件后使用 /reload-plugins。如果 MCP 工具集合变化导致无法热重载,按提示确认是否需要强制重载或重新启动会话。

安装第三方 Plugin 前的审查

Plugin 可以带来脚本、Hooks、MCP 和可执行文件,风险高于复制一段 Markdown。安装前至少检查:

不要把“Marketplace 可以安装”等同于“已经适合公司项目”。团队环境应固定版本、维护允许清单,并准备回滚到上一版本的方法。

团队发布清单

请只读审查这个 Claude Code Plugin,不要安装或执行。

请输出:
1. Plugin 包含哪些 Skills、Agents、Hooks、MCP、LSP 和脚本。
2. 每个组件何时触发、会读取或修改什么。
3. 是否包含网络访问、凭据或权限扩大。
4. 本地最小验证步骤。
5. 禁用和回滚方法。
6. 可以发布、需要修改或不建议使用的结论。

验收结果