前言¶
在 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