turbomesh-skill-cli
v0.1.5
Published
Sync skill registry rules into IDE-specific project directories.
Readme
Skill Registry CLI
从 Git 数据仓库拉取 Skill 规范,并同步到当前项目的 IDE 规则目录或自定义目录。
使用方式
CLI 已发布到 npm 公共 registry,推荐通过 npx 直接运行:
npx turbomesh-skill-cli@latest
npx turbomesh-skill-cli@latest --ide cursor --roles common,frontend,qa
npx turbomesh-skill-cli@latest --target-dir .codex/skills --roles common,frontend
npx turbomesh-skill-cli@latest --ide cursor --roles common,frontend --skills react-patterns,eslint-standards
npx turbomesh-skill-cli@latest --ide cursor --roles common,frontend --force
npx turbomesh-skill-cli@latest --ide cursor --roles common,frontend --dry-run默认 Skill 数据仓库地址在 src/config.js 中配置。也可以单次运行时覆盖:
npx turbomesh-skill-cli@latest --repo-url https://github.com/your-org/skills.git或通过环境变量覆盖:
SKILL_DATA_REPO_URL=https://github.com/your-org/skills.git npx turbomesh-skill-cli@latest如果 Skill 数据仓库是私有仓库,请先在本机配置好 Git 访问权限。推荐使用 SSH key、Git credential helper,或 HTTPS personal access token。
常用参数
--ide <ide>:选择 IDE 类型,CLI 会根据内置映射写入对应目录。
--target-dir <dir>:指定当前项目内的自定义存放目录,并跳过 IDE 选择。例如:
npx turbomesh-skill-cli@latest --target-dir .codex/skills--roles <roles>:指定 Skill 范围,多个范围用逗号分隔。例如:
--roles common,frontend,devops/release-web--skills <skills>:指定要同步的 Skill,多个 Skill 用逗号分隔。未指定时会进入交互选择。
--force:替换目标目录中已存在的本地 Skill。
--dry-run:只输出同步计划,不写入目标目录,也不更新 .skill-lock.json。
--repo-url <url>:临时覆盖 Skill 数据仓库地址。
交互流程
- 选择 IDE,或通过
--target-dir直接指定存放目录。 - 拉取 Skill 数据仓库。
- 选择 Skill 范围,例如
common、frontend、qa、devops/release-web。 - 选择具体要同步的 Skill。
- CLI 自动同步所选 Skill 及其依赖。
common 会像普通范围一样展示在选择列表中,不会默认选中。
数据仓库结构
Skill 范围会从数据仓库目录结构中动态发现。只要某个目录直接包含 Skill 子目录,它就会成为一个可选范围。
示例:
backend/
common/
devops/
frontend/
qa/
scripts/其中:
common/:公共 Skill 范围,会显示在范围选择列表中。
backend/、frontend/、qa/、devops/...:岗位或场景范围,会自动发现。
scripts/:根级仓库工具目录,会在范围和 Skill 发现时被忽略。
嵌套范围也支持,例如:
--roles common,devops/release-webSkill Manifest
每个 Skill 目录必须包含 skill.md,也兼容外部仓库常见的 SKILL.md。依赖通过 YAML front matter 声明:
---
dependencies:
- name: eslint-standards
- name: shared-security-rules
---依赖只声明 name,不要在 Skill Manifest 中填写 url、external 或 ref。CLI 会先通过数据仓库内全局唯一的 Skill 目录名解析依赖;如果内部找不到,再读取数据仓库根目录的 external-skills.json 查找同名外部 Skill。
external-skills.json 示例:
{
"skills": {
"browser-use": {
"url": "https://github.com/browser-use/browser-use.git",
"entry": "skills/browser-use/SKILL.md",
"description": "浏览器自动化、页面状态检查、截图、表单交互与网页数据提取 Skill。",
"tags": ["browser", "automation", "testing", "frontend"],
"aliases": ["browser-automation", "browseruse", "web-testing", "e2e"]
}
}
}其中 url 是外部 Git 仓库地址,entry 是仓库内 Skill Manifest 文件或 Skill 目录的相对路径。description、tags、aliases 用于索引与搜索,当前同步流程只依赖 url 和 entry。
外部依赖会先克隆到临时目录,移除 .git 元数据,再按 entry 定位 Skill 目录,校验通过后只移动该 Skill 目录到目标规则目录。如果旧索引没有配置 entry,CLI 会兼容地尝试使用仓库根目录下的 skill.md 或 SKILL.md。如果内部和外部索引都找不到依赖,CLI 会跳过该依赖并提示通过 find-skills 补充外部 Skill 索引。
