scripts/seed-skills.ts
基本信息
- 类型: 数据导入脚本 / CLI 工具
- 路径:
./scripts/seed-skills.ts
功能描述
从 Anthropic Skills 仓库导入 Skill 文件到数据库的脚本。将多文件 Skill 打包为单条 Prompt 记录,支持增量更新。
导出内容
- 无(CLI 脚本,直接执行)
依赖导入
@prisma/client- 数据库 ORMfs- 文件系统操作path- 路径处理
前置要求
# 克隆 Anthropic Skills 仓库
git clone https://github.com/anthropics/skills.git /tmp/anthropic-skills
使用方法
# 查看帮助和可用 Skills
npx tsx scripts/seed-skills.ts
# 导入指定 Skill
npx tsx scripts/seed-skills.ts pdf
# 导入所有 Skills
npx tsx scripts/seed-skills.ts --all
# 列出可用 Skills
npx tsx scripts/seed-skills.ts --list
核心功能
Skill 文件格式
- SKILL.md: 主文件,包含 YAML Frontmatter
- 其他文件: 支持任意代码、文档文件
多文件序列化
使用 ASCII 控制字符作为分隔符:
\x1F(Unit Separator): 文件开始标记\x1E(Record Separator): 文件结束标记
格式:
[SKILL.md 内容]
\x1FFILE:filename.ts\x1E
[filename.ts 内容]
...
YAML Frontmatter 解析
---
name: Skill 名称
description: Skill 描述
license: MIT
---
核心函数
parseFrontmatter()
解析 SKILL.md 的 YAML 前置元数据。
readSkillFiles()
递归读取 Skill 目录下的所有文件(跳过二进制和隐藏文件)。
serializeSkillFiles()
将多文件打包为单字符串格式。
importSkill()
导入/更新单个 Skill:
- 读取并解析文件
- 检查数据库中是否已存在
- 存在则更新,不存在则创建
- 输出操作结果
数据库操作
作者处理
- 优先使用 ADMIN 角色用户
- 无管理员时自动创建 system 用户
Prompt 记录
| 字段 | 值 |
|---|---|
| title | metadata.name |
| description | metadata.description |
| content | 序列化后的多文件内容 |
| type | "SKILL" |
| authorId | 管理员用户 ID |
| isPrivate | false |
错误处理
- Skills 仓库不存在:提示克隆命令
- Skill 不存在:列出可用选项
- 导入失败:记录错误继续处理其他
相关文件
/tmp/anthropic-skills/skills/- Skills 仓库本地路径- 数据库
Prompt表(type = SKILL)