ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

【Skill入门指南】[第一篇] Cursor Agent Skill 入门指南:从 SKILL.md 到 CLI 的 0 到 1 实战

【Skill入门指南】[第一篇] Cursor Agent Skill 入门指南:从 SKILL.md 到 CLI 的 0 到 1 实战 1. 为什么你的 Cursor Agent 总是“失忆”从一次 OpenSpec 归档报错说起如果你正在用 Cursor 做 AI 辅助开发大概率遇到过这种场景某个项目特有的操作流程你在对话框里手把手教了 AI 一遍它当场执行得很漂亮结果第二天换个会话同样的报错再次出现它又一脸茫然地从头猜。这不是模型变笨了而是它缺少一份可以跨会话复用的“操作手册”。Cursor Agent Skill 就是为解决这个问题而生的机制而 SKILL.md 则是这份手册的唯一载体。本文要讲的就是如何用 SKILL.md 定义能力边界、用 OpenSpec 描述任务、再通过 CLI 触发执行把一次性的调试经验固化成 AI 永远记得的技能。先把这个概念说清楚。Cursor Agent Skill 不是插件不是脚本也不需要编译它本质上就是一个放在特定目录下的 Markdown 文件。当你在对话中提到某些关键词或者 CLI 输出里出现了特定报错Cursor 会扫描所有 Skill 的 description 字段找到匹配项后自动读取 SKILL.md 正文然后按照里面写的步骤去执行。换句话说Skill 是写给 AI 看的备忘录而不是给机器跑的自动化脚本。它适合谁适合那些项目里有特殊工作流、有反复出现的 debug 套路、有团队约定俗成的操作规范的开发者。如果你只是写通用业务代码AI 本身已经知道怎么做那确实没必要写 Skill但只要你的项目里存在“只有这个仓库才这样”的知识Skill 就能显著减少重复沟通成本。我试过的真实案例来自一个 OpenSpec 工作流项目。OpenSpec 用来管理功能变更的生命周期提案、规格、设计、任务、实施、归档。当我完成fix-document-extraction这个变更的全部实施执行归档命令时CLI 直接报错openspec archive fix-document-extraction -y输出是Delta parsing found no operations for extraction-preview-ui. Aborted. No files were changed.奇怪的地方在于用 Cursor 的 Read 工具打开那些.md文件内容完全正确## ADDED Requirements、### Requirement:等结构一应俱全。根因很快定位到了这个项目对.md文件做了磁盘加密TSD。Cursor 的 Read 工具内置了解密层所以能看到明文但 OpenSpec CLI 是一个独立的 Node.js 进程直接从文件系统读取拿到的是密文也就是一堆%TSD-Header-开头的二进制垃圾。解决方案并不复杂用 Cursor 读出明文写回磁盘覆盖密文再跑 CLI加密层后续会自动重新加密。问题在于下次遇到同样情况AI 还记得这个解法吗这就是 Skill 的用武之地。2. TaoToken 前置准备让 CLI 与模型调用链路先跑通在正式写 SKILL.md 之前有一个容易被忽略但非常关键的前置环节你的 Cursor Agent 和 CLI 工具最终都要调用大模型而模型调用的 Base URL、API Key、Model ID 这三件套必须先配置正确否则后面所有步骤都会卡在 401 或者连接失败上。我实测下来用 TaoToken 作为统一接入层是比较省心的做法它兼容 OpenAI 风格的接口Cursor、Cline、Codex 这类工具都能直接对接。先拿到 API Key。打开 API Keys 管理页面https://taotoken.net/api-keys?utm_sourcetaotoken_aicg_blog_endutm_contentapi_keysutm_campaignrewrite在页面里创建一个新的 Key复制出来保存好。注意Key 只在创建时完整显示一次关掉页面就看不到了。接着确认你要用的 Model ID常见的有claude-sonnet-4-20250514、gpt-4o等具体以控制台里列出的为准。控制台地址https://taotoken.net/console?utm_sourcetaotoken_aicg_blog_endutm_contentconsoleutm_campaignrewrite如果你打算长期用 Cursor 做编码和 Agent 任务可以了解一下 Coding Plan它针对高频编码场景做了额度优化https://taotoken.net/coding-plan?utm_sourcetaotoken_aicg_blog_endutm_contentcoding_planutm_campaignrewrite接入文档在这里遇到参数不确定时优先查它https://taotoken.net/doc?utm_sourcetaotoken_aicg_blog_endutm_contentdocutm_campaignrewrite这里要强调一个原则Base URL、Key、Model ID 三件套必须同时写对缺一不可。Base URL 用https://taotoken.net/api注意这个地址不带任何查询参数。很多人排障时只检查 Key 对不对却忘了 Base URL 末尾多写了一个斜杠或者少写了/api结果一直报local proxy failed。我建议你在配置完成后先用一个最小的 curl 请求验证链路再往下走。curl https://taotoken.net/api/v1/chat/completions \ -H Content-Type: application/json \ -H Authorization: Bearer $TAOTOKEN_API_KEY \ -d { model: claude-sonnet-4-20250514, messages: [{role: user, content: ping}], max_tokens: 16 }如果返回里有choices字段说明链路通了。如果返回 401检查 Key 是否复制完整如果返回连接错误检查 Base URL 是否写成了https://taotoken.net/api。这一步跑通之后后面的 Skill 配置才有意义因为 Skill 本身不负责模型调用它只是告诉 AI 该按什么步骤操作。3. 可复制配置SKILL.md 模板与 OpenSpec 配置片段现在进入核心部分。一个 Skill 就是一个目录里面必须有一个SKILL.md。目录结构长这样.cursor/skills/ └── openspec-decrypt-for-cli/ └── SKILL.md存放位置有两个选择。个人级放在~/.cursor/skills/skill-name/你的所有项目都能用项目级放在.cursor/skills/skill-name/只对这个仓库的所有协作者生效。我们这个案例放在项目级因为加密是这个项目特有的。SKILL.md 必须有 YAML 头部两个字段name和description。name用小写字母加连字符最多 64 个字符description是最关键的字段Cursor 用它来决定什么时候该读这个 Skill。写法有三个要点用第三人称因为 description 会被注入到系统提示词里既写“做什么”也写“什么时候用”包含具体的触发关键词比如你希望 AI 能识别的错误信息、命令名、场景描述。下面是可以直接复制的完整 SKILL.md 模板--- name: openspec-decrypt-for-cli description: Fix OpenSpec CLI failures caused by encrypted .md files. Use when openspec validate, openspec archive, or openspec sync fails with errors like No delta sections found, Delta parsing found no operations, or No deltas found due to on-disk encryption that Cursor can read through. --- # OpenSpec: Decrypt MD Files for CLI When .md files in openspec/changes/ are encrypted on disk, OpenSpec CLI cannot parse them — but Cursor can read the plaintext via its Read tool. This skill bridges the gap: read via Cursor, write plaintext back, run CLI, then let the encryption layer re-encrypt. ## When to Use Detect this situation when ANY of these appear in openspec CLI output: - Delta parsing found no operations - No delta sections found - No deltas found - YAML warnings containing garbled binary like %TSD-Header- ## Steps 1. Identify all encrypted .md files in the change directory 2. Read each file via Cursors Read tool (sees decrypted content) 3. Write plaintext back to disk via Write tool 4. Run: openspec validate change-name 5. Retry the original CLI command ## Integration with Archive Workflow 1. First attempt: openspec archive name -y 2. If delta parsing errors → trigger this skill 3. After plaintext rewrite validate → retry archive ## Notes - Only touch files inside openspec/changes/name/ - The encryption layer will re-encrypt automatically正文写作有几个原则简洁AI 本身很聪明只写它不知道的不要解释什么是 Markdown控制在 500 行以内给命令、给路径、给期望输出不要说“大概这样做”术语全文统一比如统一用“加密/密文/明文”不要混用“编码/乱码/加密”。除了 SKILL.mdOpenSpec 本身也需要一份配置来描述任务。在项目根目录创建openspec.yamlversion: 1 changes_dir: openspec/changes specs_dir: openspec/specs archive_dir: openspec/archive validation: require_delta_sections: true allowed_sections: - ADDED Requirements - MODIFIED Requirements - REMOVED Requirements这份配置告诉 OpenSpec CLI 去哪里找变更目录、规格目录和归档目录以及校验时要求哪些 delta 段落。当.md文件被加密后CLI 读到的内容不满足require_delta_sections就会抛出前面看到的Delta parsing found no operations。理解这一点你就能明白为什么 Skill 里的步骤是先解密写回、再 validate、最后重试 archive。4. 验证请求与成功结果从 CLI 触发到 Skill 生效配置写完之后怎么确认每一步真的生效了我建议按下面的顺序逐步验证不要跳步。第一步确认 Skill 被 Cursor 识别。在 Cursor 里打开对话输入一句包含触发关键词的话比如“openspec archive 报 No delta sections found 怎么处理”。如果 Skill 配置正确Cursor 会在后台匹配到openspec-decrypt-for-cli这个 Skill并读取它的正文。你可以观察 AI 的回复是否开始引用 SKILL.md 里的步骤比如它是否提到“先用 Read 工具读取明文再写回磁盘”。如果它完全没提这些说明 description 的匹配没生效回去检查关键词是否写全。第二步手动模拟 Skill 的执行流程确认 CLI 能跑通。先列出变更目录下的加密文件ls -la openspec/changes/fix-document-extraction/你会看到若干.md文件。用 Cursor 的 Read 工具逐个读取确认能看到明文结构。然后写回磁盘覆盖密文。这一步在 Cursor 里通过 Write 工具完成注意只操作openspec/changes/name/目录内的文件不要碰其他目录。第三步运行 validateopenspec validate fix-document-extraction期望输出是校验通过没有 delta parsing 相关报错。如果仍然报No delta sections found说明写回的文件内容不完整或者写回时编码不对需要重新读取并确认写入的是纯 UTF-8。第四步重试归档命令openspec archive fix-document-extraction -y成功的话你会看到归档完成的提示文件被移动到openspec/archive/目录下。此时加密层会自动重新加密这些文件这是预期行为不需要手动干预。第五步验证 Skill 的复用性。新开一个 Cursor 会话再次触发同样的报错场景观察 AI 是否能自动按 SKILL.md 的步骤执行。如果能说明 Skill 真正生效了如果不能回到 description 字段检查触发关键词是否覆盖了实际报错文本。这里有一个关键认知需要反复强调Skill 是给 AI 的备忘录不是给机器的自动化脚本。它不会在后台静默运行必须由对话或 CLI 输出触发。所以验证的核心不是“脚本有没有跑”而是“AI 有没有在正确时机读到这份手册并照做”。5. 本篇常见错排查401、local proxy failed 与 OAuth 报错对照配置过程中最容易踩的坑集中在模型调用链路上而不是 Skill 本身。下面按真实报错逐条对照。401 Unauthorized。这个报错几乎总是 Key 的问题。检查三件事Key 是否复制完整有没有多余空格请求头里是不是Authorization: Bearer key格式Key 是否已经过期或被删除。如果你用的是 Cursor 的模型配置确认在设置里填的 Key 和你在 TaoToken 控制台创建的一致。注意Base URL 用https://taotoken.net/api不要带 UTM 参数也不要多加/v1之外的路径。local proxy failed。这个报错通常出现在 Cursor 或 Cline 这类工具里原因是 Base URL 配置错误。常见情况是末尾多了斜杠或者写成了https://taotoken.net/api/正确写法是https://taotoken.net/api。另一个原因是本地网络环境导致请求没发出去可以先在终端用 curl 验证同一个 Base URL 是否能通排除工具配置问题。reading choices 相关报错。如果你看到类似cannot read property choices of undefined说明返回体结构不符合预期通常是 Base URL 指向了错误的端点或者 Model ID 写错了。确认 Model ID 和控制台里列出的完全一致不要自己拼写。OAuth 相关报错。如果你用的是 Claude Code 或 Codex 这类需要 OAuth 的工具报 OAuth 失败时先确认你走的是 API Key 模式而不是 OAuth 模式。在 Codex 的auth.json里配置应该长这样{ base_url: https://taotoken.net/api, api_key: 你的Key, model: claude-sonnet-4-20250514 }三件套 Base URL、Key、Model ID 必须同时正确。如果你用 CC Switch 或 Cline MCP同样检查这三项是否填全。缺任何一项都会导致调用失败而报错信息往往不会直接告诉你缺的是哪一项所以排查时按顺序核对最稳妥。还有一个容易忽略的点Skill 目录的路径。如果你把 SKILL.md 放在了.cursor/skills/下但目录名和name字段不一致Cursor 可能无法正确索引。确保目录名和name字段保持一致比如目录叫openspec-decrypt-for-cliname也写openspec-decrypt-for-cli。6. 把经验固化成 Skill从 CLI 触发到长期复用走到这里你已经完成了从 SKILL.md 编写、OpenSpec 配置、CLI 触发到逐步验证的完整闭环。回到最初的问题为什么值得花时间写一个 Skill因为一次性的调试经验如果不固化下次遇到同样报错你还是要重新解释一遍加密层、Read 工具、CLI 读取差异这些背景知识。而写成 SKILL.md 之后AI 在匹配到触发关键词时会自动读取这份手册按步骤执行你只需要确认结果。如果你想把这条链路长期用起来建议把模型调用统一到 TaoToken 的 Coding Plan 上高频编码和 Agent 任务会更顺畅https://taotoken.net/coding-plan?utm_sourcetaotoken_aicg_blog_endutm_contentcoding_planutm_campaignrewrite需要新建或管理 Key 时走这里https://taotoken.net/api-keys?utm_sourcetaotoken_aicg_blog_endutm_contentapi_keysutm_campaignrewrite接入细节查文档https://taotoken.net/doc?utm_sourcetaotoken_aicg_blog_endutm_contentdocutm_campaignrewrite想直接验证模型对话效果可以用模型对话页面https://taotoken.net/chat?utm_sourcetaotoken_aicg_blog_endutm_contentmodel_chatutm_campaignrewrite最后给一个实用建议每次你在项目里解决了一个“AI 下次肯定还会忘”的问题就顺手写一个 SKILL.md。判断标准很简单如果这个知识是项目特有的、会重复出现的、AI 本身不知道的那就值得写。写的时候记住 description 要包含触发关键词正文要简洁具体控制在 500 行以内。你教 AI 一次它就永远记住了。
返回列表