前言¶
在 Cursor 里让 Agent 改代码,常见情况是:你反复强调「用相对路径 import」「别给显而易见的代码加注释」「测试文件要和源文件放在一起」——下一轮对话里,它还是会按默认习惯来写。每次在聊天里纠正,约定只留在当次上下文里,换线程或新项目又要重来。
Cursor 本身支持用 .cursor/rules/ 把项目约定写进仓库,让 Agent 持续遵守。但很多人不会主动建 Rule,或者不知道该在什么时候建。suggesting-cursor-rules 是一份 Agent Skill:当 Agent 发现你在重复纠正同一类问题时,会主动提议把约定固化成 Rule 文件,而不是让你一直当「人肉 linter」。
下面介绍这份 Skill 的定位、触发条件、Rule 写法,以及如何在本地启用。
这是什么¶
suggesting-cursor-rules 来自 awesome-cursor-skills 仓库中的 Cursor-Native 分类。官方说明是:当用户对同一纠正或约定重复多次时,建议创建 Cursor Rule,把约定永久编码进项目。
Skill 元数据里 user-invocable: false,表示这不是用户在命令面板里手动点名的 Skill,而是装进 .cursor/skills/ 后由 Agent 在对话中按说明自行遵循的行为指引。
它和 Cursor 的 Skills 机制配合:Skills 是可复用的 SKILL.md 指令文件,教 Agent 如何完成特定任务;本 Skill 教的是「何时、如何建议用户写 Rule」——属于 Rules 与 Skills 协同的 Meta 工作流(同仓库里还有 suggesting-cursor-hooks、building-skills-from-patterns 等同思路的 Skill)。
核心功能¶
Skill 要求 Agent 观察对话中的重复模式,在满足条件时自然提出建 Rule,并在用户同意后生成 .cursor/rules/ 下的规则文件。
触发条件¶
官方列出的情形包括:
- 用户对同一模式纠正 至少 2 次(例如坚持 named export、禁止 default export)
- 用户对代码风格或团队约定表现出不耐烦
- 用户出现「我总是要…」「永远不要…」「你每次都会…」一类表述
- Agent 在本项目中反复犯同一类错误
注意:Skill 明确要求不要在第一次纠正时就推销 Rule,避免打扰;只有出现真实、可识别的重复模式再建议。
建议方式¶
检测到触发后,用简短、可选的语气提议,例如:
I notice you've corrected me on [pattern] a couple times. Want me to
create a Cursor rule so I always follow this convention?
用户同意后,在项目中创建:
.cursor/rules/<name>.mdc
文件结构示例:
---
description: <what this rule enforces>
globs: <file pattern this applies to>
---
- <the convention, stated clearly>
生成 Rule 时的约束¶
- 先查看
.cursor/rules/是否已有同类规则,避免重复 - 每个文件只讲一件事,保持短小、聚焦
- 以帮忙的提议口吻呈现,而不是说教
安装与启用¶
根据 awesome-cursor-skills 的说明,Skills 是可直接复制的 SKILL.md 文件,放在以下位置之一后会被 Agent 自动发现:
- 项目目录下的
.cursor/skills/ - 个人范围的
.cursor/skills/(文档表述为 personal 或 project directories)
本 Skill 的源文件路径为仓库内:
resources/suggesting-cursor-rules/SKILL.md
典型做法是:从 官方目录 取得 SKILL.md,复制到本机或仓库的 .cursor/skills/suggesting-cursor-rules/(或你习惯的子目录名,以 Cursor 对 Skill 目录的发现规则为准)。已抓取资料中未提供单独的 npm 安装命令或插件市场一键安装步骤;以复制 SKILL.md 到 .cursor/skills/ 为准。
启用后无需每次在对话里提醒「记得建议 Rule」——Skill 正文会指导 Agent 何时观察、何时提议。
典型用法(官方示例)¶
以下三条来自 Skill 自带的 Examples,展示「用户反复说什么 → 对应 Rule 怎么写」。
用户多次要求使用相对路径 import:
---
description: Import conventions
globs: **/*.{ts,tsx}
---
- Use relative imports, not @ aliases
- Import from the same package with relative paths (e.g. "../../queries/..." not "src/queries/...")
用户多次反对给显而易见代码加注释:
---
description: Comment style
globs: **/*.{ts,tsx,js,jsx}
---
- Do not add comments that narrate what the code does
- Only comment non-obvious intent, tradeoffs, or constraints
用户对测试文件位置不满:
---
description: Test file conventions
globs: **/*.test.{ts,tsx}
---
- Co-locate test files next to the source file they test
- Name test files <source>.test.ts, not __tests__/<source>.ts
实际项目中,globs 和 bullet 应改成你们团队的真实约定;Skill 只规定流程与格式,不替你们定规范内容。
适用场景与注意¶
适合谁
- 长期在同一仓库里用 Cursor Agent,且有稳定代码风格或架构约定
- 已经或打算使用
.cursor/rules/,希望约定从「聊天记忆」变成「仓库里的配置」 - 愿意在重复纠正 2 次以上时,把对话升级为可版本管理的 Rule
限制与注意
- Skill 不会自动创建 Rule,需要用户同意后才写入文件
user-invocable: false意味着这不是「用户口令触发」的工具,效果取决于 Agent 是否加载并遵守该 Skill- Rule 只管 Agent 在匹配
globs时的行为;lint、CI、hooks 等仍需单独配置(同系列的suggesting-cursor-hooks针对的是重复跑检查的场景) - 资料未描述 Cursor 各版本对
.mdcRule frontmatter 的细微差异,以你当前 Cursor 文档与编辑器行为为准
结尾¶
suggesting-cursor-rules 解决的不是「如何写一条 Rule」的语法问题,而是「什么时候该把口头约定写进 .cursor/rules/」——把重复纠正收敛成项目级、可提交的约定。若你已在用 Cursor Skills,把它与其它 Cursor-Native Skill 一起放进 .cursor/skills/,是低成本的一步。
官方 Skill 源码与全文说明:
https://github.com/spencerpauly/awesome-cursor-skills/tree/main/resources/suggesting-cursor-rules