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

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

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

小夜