# Skills Collect

> 将外部 Claude Code skill 集成到本项目的 skills/ 目录中，自动收集依赖文件并处理路径定制。支持全新集成和增量更新。Trigger on keywords like "集成 skill", "收集 skill", "更新 skill", "skills-collect", "skill 同步".

- Skill: `jeandoom/skills-collect` (Agent Skill)
- Install (CLI): `npx skillmds@latest add jeandoom/skills-collect`
- Raw SKILL.md: https://api.skillmd.com/api/skills/jeandoom/skills-collect/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: Jeandoom (https://skillmd.com/u/jeandoom)
- Updated: 2026-09-21
- Page: https://skillmd.com/skills/jeandoom/skills-collect

---


# Skills Collect — Skill 集成与更新工具

将外部 Claude Code skill 集成到本项目的 `skills/` 目录，或更新已有 skill 到最新版本。

## 触发条件

- 用户说"集成 skill"、"收集 skill"、"更新 skill"
- 用户提到"skills-collect"、"skill 同步"
- 用户要将某个 skill 加入本项目或更新已有 skill

## 输入

- **必须**：skill 名称（如 `patent`、`gitlaber`）
- **可选**：源路径（不提供时自动查找 `~/.claude/skills/`）

## 执行流程（Checklist）

收到用户请求后，严格按以下 6 步顺序执行。每步完成后标记。

- [ ] 步骤 1：定位源 skill
- [ ] 步骤 2：收集全部文件
- [ ] 步骤 3：复制到 skills/ 目录
- [ ] 步骤 4：路径扫描与定制
- [ ] 步骤 5：更新检测（仅当 skills/<name>/ 已存在时）
- [ ] 步骤 6：提交

---

### 步骤 1：定位源 skill

按以下优先级查找源 skill 目录：

1. **用户级 skills 目录**：
   - Windows: `%USERPROFILE%\.claude\skills\<name>\`
   - Linux/Mac: `~/.claude/skills/<name>/`

2. **Claude plugins 目录**（递归搜索）：
   - Windows: `%USERPROFILE%\.claude\plugins\`
   - Linux/Mac: `~/.claude/plugins/`
   - 搜索方法：`find ~/.claude/plugins -type d -name "<name>" 2>/dev/null`

3. **仍未找到** → 询问用户提供源 skill 的完整路径

**找到后**：记录源目录的绝对路径，进入步骤 2。

---

### 步骤 2：收集全部文件

**不能只复制 SKILL.md**，必须收集 skill 运行所需的所有文件。

1. **列出源目录文件**：

   ```bash
   find <source-dir> -type f \
     ! -path "*/__pycache__/*" \
     ! -name "*.pyc" \
     ! -name ".DS_Store"
   ```

2. **扫描 SKILL.md 中的文件引用**：

   读取 `<source-dir>/SKILL.md`，提取以下模式的引用路径：
   - 反引号包裹的路径：如 `` `tools/md2docx.py` ``、`` `模板/` ``
   - 代码块中的路径：如 `python tools/xxx.py`
   - 明确提到的目录/文件名：如"模板目录"、"config.json"

3. **检查每个引用路径**：

   | 情况 | 处理 |
   |---|---|
   | 路径在源目录下存在 | 包含在文件清单中 |
   | 路径在源目录下不存在 | 提示用户："SKILL.md 中引用了 `{path}` 但该文件不在源目录中，请提供其实际位置" |
   | 用户提供路径 | 将文件加入清单（保持相对路径结构） |
   | 用户跳过 | 警告并继续 |

4. **展示文件清单给用户确认**：

   ```
   即将集成 <name> skill，包含以下文件：

   来源: <source-dir>
   ├── SKILL.md (X.X KB)
   ├── tools/md2docx.py (X.X KB)
   ├── 模板/xxx.docx (X.X KB)
   └── 专利文档格式.md (X.X KB)

   确认集成？
   ```

---

### 步骤 3：复制到 skills/ 目录

1. 创建目标目录：`mkdir -p skills/<name>/`
2. 按原始相对路径结构复制所有文件
3. 排除敏感文件：`config.json`、`env-config.json`、`.env`、`credentials.json`
4. 验证：`ls -R skills/<name>/` 确认文件完整

---

### 步骤 4：路径扫描与定制

读取 `skills/<name>/SKILL.md`，扫描以下可疑模式：

**模式 A — 绝对路径**：

匹配以下正则模式：
- Windows: `C:\...`、`D:\...` 等盘符路径
- Unix: `/usr/local/...`、`/home/...` 等绝对路径
- 特定解释器: `"C:\Python313\python.exe"` 等

**模式 B — 项目特定路径**：

SKILL.md 中引用了 skill 自带文件的相对路径（如 `tools/md2docx.py`），应替换为 `<skill-dir>/` 前缀以适配分发。

**处理流程**：

对每个发现的可疑路径，向用户展示并询问：

```
发现疑似硬编码路径：
  原文: "C:\Python313\python.exe" -X utf8 tools/md2docx.py
  建议: python -X utf8 <skill-dir>/tools/md2docx.py

是否替换？[Y/n]
```

用户确认后执行 Edit 替换。所有路径替换完成后进入步骤 5。

---

### 步骤 5：更新检测

**仅当 `skills/<name>/` 已存在时执行此步骤。如果是全新集成，跳过此步直接到步骤 6。**

1. **对比文件列表**：

   ```bash
   # 列出目标目录现有文件
   find skills/<name>/ -type f | sort > /tmp/dst_files.txt
   # 列出源目录文件（排除缓存）
   find <source-dir> -type f ! -path "*/__pycache__/*" ! -name "*.pyc" | sort > /tmp/src_files.txt
   ```

2. **分类差异**：

   | 差异类型 | 处理 |
   |---|---|
   | 源有、目标无（新增文件） | 包含在更新中 |
   | 源无、目标有（目标独有） | 保留，不删除（可能是用户本地配置） |
   | 两边都有（可能修改） | 用 `diff` 检查内容差异 |

3. **展示 diff 摘要**：

   ```
   更新 <name> skill：

   新增文件：
   + tools/new_script.py

   修改文件：
   ~ SKILL.md (新增"审查意见回复流程"章节)
   ~ tools/md2docx.py

   目标独有文件（保留）：
   · config.json

   确认更新？
   ```

4. **用户确认后执行更新**：覆盖修改的文件，添加新增文件

5. **保留路径定制**：

   更新 SKILL.md 后，重新执行步骤 4 的路径扫描，确保新增内容中的路径也按已定制的形式处理。

   具体方法：
   - 检查更新前 SKILL.md 中已有的 `<skill-dir>` 替换规则
   - 对更新后新增的路径引用，应用相同的替换规则

---

### 步骤 6：提交

生成 git commit：

```bash
git add skills/<name>/
git commit -m "$(cat <<'EOF'
feat: <集成|更新> <name> skill

文件清单：
- SKILL.md
- tools/md2docx.py
- ...

路径定制：
- C:\Python313\python.exe → python
- tools/md2docx.py → <skill-dir>/tools/md2docx.py
（如无定制则省略此段）

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
EOF
)"
```

如果是更新模式，commit message 中使用"更新"而非"集成"，并额外说明变更内容。

---

## 常见错误与注意事项

1. **不要只复制 SKILL.md**：必须收集所有依赖文件，否则安装后无法使用
2. **敏感文件不复制**：`config.json`、`env-config.json` 等含 token 的文件必须排除
3. **路径定制要保留**：更新时不要覆盖已有的 `<skill-dir>` 替换
4. **用户确认每一步**：文件清单、路径替换、更新确认都需要用户明确同意
5. **目标独有文件保留**：用户可能在 `skills/<name>/` 下放了本地配置，不要删除

## 依赖

- 工具: Bash（文件操作、find、diff、git）、Read（扫描 SKILL.md）、Edit（路径替换）
- 无前置 skill 依赖

