suggesting-cursor-rules:重复纠正同一约定时,建议写成 Cursor Rule

前言

在 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 各版本对 .mdc Rule 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

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜