# Claude Code VOC 技能包 npm 打包经验

## 目标

同一个技能包同时支持两种交付：

- 链接下载 zip：适合不会 npm 的客户，解压后执行 `node install.js`。
- npm/npx 安装：适合教学、远程交付和批量升级。

推荐命令：

```bash
npm install -g @gangvy/claude-code-voc-intelligence
claude-voc install
```

免全局安装：

```bash
npx @gangvy/claude-code-voc-intelligence install
```

## 关键设计

`npx` 下载的包可能在临时缓存里，不能直接让 Claude Code 长期加载这个临时目录。

所以 `claude-voc install` 会把包复制到固定目录：

```text
~/.claude/plugins/voc-intelligence
```

然后在该目录安装运行依赖，并输出：

```bash
claude --plugin-dir "<安装目录>"
```

这样全局安装和 npx 安装的结果一致，后续也便于升级。

## package.json 要点

- npm 包名使用 scoped package：`@gangvy/claude-code-voc-intelligence`
- CLI 入口：

```json
{
  "bin": {
    "claude-voc": "bin/claude-voc.js"
  }
}
```

- `files` 必须显式包含：
  - `.claude-plugin/`
  - `.mcp.json`
  - `bin/`
  - `skills/`
  - `mcp/`
  - `memory-templates/`
  - `docs/`
  - `install.js`
  - `skill-package-manifest.json`

## 验证命令

根目录执行：

```bash
npm run claude-voc:npm-pack
```

这个命令会做三件事：

1. 校验 npm package metadata 和 CLI 入口。
2. 生成 `dist/npm/*.tgz`。
3. 在临时目录里模拟 npm 安装，并执行 `claude-voc install --smoke`。

发布命令：

```bash
npm run claude-voc:npm-publish
```

发布前需要完成 `npm login`，或在 CI/部署环境配置 npm token。

## 注意点

- zip 包和 npm 包共用同一套源码，但验证脚本分开。
- npm 包不要发布 `node_modules/`、`memory/`、`outputs/`、`.env`。
- `install.js` 不强依赖 `package-lock.json`，因为 npm publish 后 package-lock 不一定随包安装。
- 用户侧不要暴露 profile、output、collectionMode 这类参数；安装完成后仍然用自然语言启动。

