用于管理 Cursor Skills 并同步到 AGENTS.md 的命令行工具

AgenticCoding·十二月创作之星挑战赛 10w+人浏览 430人参与

Cursor 中自动加载 Skill 的技术实现解析
落地方案:Cursor-Skills Github

Cursor Skills CLI

用于管理 Cursor Skills 并同步到 AGENTS.md 的命令行工具。

在这里插入图片描述

目录

功能特性

  • 双级 Skills 管理 - 同时支持项目级和全局级 Skills
  • 交互式选择 - 基于 TUI 的多选菜单,支持键盘导航
  • AI 代理集成 - 内置 read 命令供 AI 代理调用
  • 零依赖 - 纯 Node.js 实现,无任何外部依赖
  • 智能同步 - 基于标记的增量更新,保护 AGENTS.md 中的其他内容

安装

环境要求

  • Node.js >= 16.0.0

通过 npm 安装

npm install -g @localsummer/cursor-skills

通过 GitHub Packages 安装

npm install -g @localsummer/cursor-skills --registry=https://npm.pkg.github.com

本地开发

git clone https://github.com/localSummer/cursor-skills.git
cd cursor-skills
npm link

快速开始

# 1. 查看可用的 Skills
cursor-skills list

# 2. 选择并同步 Skills 到 AGENTS.md
cursor-skills sync

# 3. 读取特定 Skill 内容(供 AI 代理使用)
cursor-skills read <skill-name>

使用方法

列出可用 Skills

cursor-skills list
cursor-skills ls

扫描并显示以下目录中的所有可用 Skills:

  • 项目级: .cursor/skills/
  • 全局级: ~/.cursor/skills/

同步 Skills 到 AGENTS.md

cursor-skills sync

打开交互式多选菜单,选择 Skills 并同步到 AGENTS.md

键盘操作:

按键操作
Up/k向上移动
Down/j向下移动
Space切换选中状态
Ctrl+A全选/取消全选
Enter确认
Ctrl+C取消

读取 Skill 内容

cursor-skills read <skill-name>

将 Skill 的完整内容输出到标准输出。专为 AI 代理集成设计。

输出格式:

# Skill: <name>

Base directory: /path/to/skill
Location: project|global

---

[SKILL.md 内容]

从 AGENTS.md 移除 Skill

cursor-skills remove <skill-name>
cursor-skills rm <skill-name>

从 AGENTS.md 文件中移除指定的 Skill。

帮助

cursor-skills help
cursor-skills help <command>
cursor-skills --help

Skills 目录结构

项目级 Skills

project-root/
└── .cursor/
    └── skills/
        └── skill-name/
            ├── SKILL.md        # 必需: Skill 定义文件
            ├── scripts/        # 可选: 可执行脚本
            ├── references/     # 可选: 参考文件
            └── assets/         # 可选: 资源文件

全局 Skills

~/.cursor/
└── skills/
    └── skill-name/
        └── SKILL.md

优先级规则

当项目级和全局级存在同名 Skill 时:

  • 项目级优先
  • 两者都会显示,并标注各自的来源位置

SKILL.md 格式

每个 Skill 必须包含一个带有 YAML 前置数据的 SKILL.md 文件:

---
name: my-skill
description: 简要描述这个 Skill 的功能
---

# Skill 文档

详细的文档和使用说明...

前置数据字段

字段必需说明
nameSkill 的显示名称
description简要描述(显示在列表中)

生成的 AGENTS.md 结构

sync 命令生成/更新的 AGENTS.md 结构如下:

<skills_system priority="1">

## Skills 位置

项目级: `.cursor/skills/`
全局级: `~/.cursor/skills/`

<!-- SKILLS_TABLE_START -->
<usage>
...使用说明...
</usage>
<available_skills>
<skill>
  <name>skill-name</name>
  <description>skill 描述</description>
  <location>project|global</location>
</skill>
</available_skills>
<!-- SKILLS_TABLE_END -->

</skills_system>

<!-- SKILLS_TABLE_START --><!-- SKILLS_TABLE_END --> 标记之间的内容由 CLI 管理。标记外的内容在更新时会被保留。

架构

cursor-skills/
├── index.mjs           # CLI 入口,命令路由
├── commands/           # 命令实现
│   ├── list.mjs       # 列出可用 Skills
│   ├── sync.mjs       # 交互式同步到 AGENTS.md
│   ├── read.mjs       # 读取 Skill 内容
│   ├── remove.mjs     # 从 AGENTS.md 移除 Skill
│   └── help.mjs       # 帮助信息
└── lib/                # 核心模块
    ├── skills.mjs     # Skills 扫描和解析
    ├── agents.mjs     # AGENTS.md 读写
    └── terminal.mjs   # 终端 UI 和样式

模块职责

模块职责
lib/skills.mjs扫描目录、解析前置数据、管理 Skill 元数据
lib/agents.mjs生成和更新 AGENTS.md 内容
lib/terminal.mjsANSI 颜色、交互式菜单、用户提示

错误处理

场景处理方式
目录不存在返回空数组,继续执行
SKILL.md 不存在跳过该目录,继续扫描
AGENTS.md 不存在自动创建新文件
用户中断 (Ctrl+C)优雅退出,不会损坏数据

API 参考

Skill 对象

{
  name: string,           // Skill 显示名称
  description: string,    // 简要描述
  location: 'global' | 'project',  // 来源位置
  path: string,           // Skill 目录路径
  skillFilePath: string   // SKILL.md 完整路径
}

核心函数

// lib/skills.mjs
getAllSkills(cwd)              // 获取所有可用 Skills
getSkillByName(name, cwd)      // 按名称查找 Skill
readSkillContent(skill)        // 读取 SKILL.md 内容
formatSkillOutput(skill, content)  // 格式化输出

// lib/agents.mjs
updateAgentsFile(skills, cwd)  // 更新 AGENTS.md
getExistingSkillNames(cwd)     // 获取已同步的 Skill 名称
removeSkillFromAgents(name, cwd)  // 从 AGENTS.md 移除

// lib/terminal.mjs
multiSelect({message, choices})  // 交互式多选
confirm(message)               // Y/N 确认

贡献指南

欢迎贡献代码、报告问题或提出功能建议。详细信息请参阅 CONTRIBUTING.md

快速开始

  1. Fork 本仓库
  2. 创建功能分支 (git checkout -b feature/amazing-feature)
  3. 提交更改 (git commit -m 'feat: add amazing feature')
  4. 推送到分支 (git push origin feature/amazing-feature)
  5. 打开 Pull Request

问题反馈

变更记录

查看 CHANGELOG.md 了解版本更新历史。

许可证

本项目采用 ISC 许可证。


如果这个项目对你有帮助,欢迎给一个 Star!

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

RI Code

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值