RSS

第 9 章 / 共 10 章

打包成插件,一键分发给团队

约 5 分钟 更新于

9.1 从 .claude/ 散件到一个插件

现在你的资产是散的:技能在 ~/.claude/skills/,子代理在 .claude/agents/,钩子在 .claude/settings.json。它们能用,但没法整体分发——同事得一样样复制。

插件解决的就是打包分发:把这些东西装进一个自带清单的目录,别人一条命令就能装上,还能版本化更新。

9.2 plugin.json 与目录结构

插件是一个目录,根上放一个清单 .claude-plugin/plugin.json

{
  "name": "release-kit",
  "description": "团队发布流程工具包:发布说明技能、发布调查子代理、格式化与守门钩子。",
  "version": "1.0.0",
  "author": { "name": "你的团队" }
}

name 是插件的唯一标识,也是它所有技能的命名空间前缀——release-notes 装进来后会变成 /release-kit:release-notesversion 决定别人什么时候收到更新:你不 bump 它,用户就不会被动更新。

目录结构有一条最容易踩的规矩:只有 plugin.json 放进 .claude-plugin/,其余全部放在插件根目录

release-kit/
├── .claude-plugin/
│   └── plugin.json        # 只有它在这里面
├── skills/
│   └── release-notes/
│       ├── SKILL.md
│       └── template.md
├── agents/
│   └── release-scanner.md
└── hooks/
    └── hooks.json
第9章:release-kit 插件的目录结构,把四件套收拢后一键分发
图 9.1:注意那条红线——skills/agents/hooks/ 都在插件根,不在 .claude-plugin/ 里面。.claude-plugin/ 只住一个 plugin.json。把目录塞错位置,是插件不生效最常见的原因。

9.3 钩子进 hooks.json

技能和子代理几乎是原样搬进 skills/agents/。唯一要改形态的是钩子:它从 settings.jsonhooks 对象,搬进插件的 hooks/hooks.json。格式完全一样,把那个 hooks 对象整块拷过去即可:

{
  "hooks": {
    "PostToolUse": [
      {
        "matcher": "Edit|Write",
        "hooks": [
          { "type": "command", "command": "jq -r '.tool_input.file_path' | xargs -r npx prettier --write" }
        ]
      }
    ],
    "PreToolUse": [
      {
        "matcher": "Bash",
        "hooks": [
          { "type": "command", "command": "${CLAUDE_PLUGIN_ROOT}/hooks/guard-push.sh" }
        ]
      }
    ]
  }
}

插件里引用自己的文件,用 ${CLAUDE_PLUGIN_ROOT}(插件安装目录),而不是 ${CLAUDE_PROJECT_DIR}——因为脚本现在随插件走,不随项目走。把 guard-push.sh 放进插件的 hooks/ 目录一并带上。

9.4 本地测试与通过市场分发

打包完先本地测。--plugin-dir 直接加载一个插件目录,不用真的安装:

claude --plugin-dir ./release-kit

启动后逐件验收:/release-kit:release-notes 能调用吗?/context 里能看到 release-scanner 吗?改个文件,格式化钩子触发了吗?让它试 git push --force,守门拦住了吗?开发中改了插件,用 /reload-plugins 热更新,不必重启。

验收通过后,分发有两条路:

  • 团队内部:把插件放进一个 git 仓库,在里面加一个 .claude-plugin/marketplace.json 描述这个市场,同事用 /plugin marketplace add <你的仓库> 添加、再 /plugin install release-kit 安装。私有仓库即可,不必公开。
  • 社区:提交到公共市场需要走审核,本篇不展开。
广告位 · Multiplex 关联广告