🌊

Cursorのチャットでルール作成を指示するのはもう古い

に公開

こんにちは!Cursor Rules 使ってますか?
私は Cursor にデビューしたときに、ルールに何をどこまで書くべきかよくわからず、結構困りました。
試行錯誤の上、何が正解か分からない状態でなんとか作り切りましたが、いいツール、ありました!

ので、この記事ではそれについて紹介します!

ルールの自動生成機能

https://www.cursor.com/ja/changelog

こちらの 0.49.x のリリースで、ルールを自動生成で生成してくれる機能が追加されました。
/Generate Cursor Rules コマンドを実行するだけでルールを生成してくれます。
もう「なんちゃらのルールを生成して」なんて指示は不要です。

実際に生成してもらったルールをいくつかご紹介します。
既存のプロジェクトでコマンド実行のみで指示文は無しで生成してもらったものになります。

ファイルの分割も自動でやってくれます。

TypeScriptとNext.js関係

typescript-next.mdc
# TypeScript/Next.jsルール

- target: ES2017
- strict: true
- module: esnext, moduleResolution: bundler
- jsx: preserve
- import alias: `@/*` → ルート直下
- next.config.mjsで画像のremotePatternsをutfs.ioに限定
- middleware.tsで`/dashboard/*`配下を認証必須に
- layout.tsxで全体にThemeProvider, Toaster, カスタムフォントを適用
- postinstallで`prisma generate`を自動実行

---
- TypeScriptの型安全を重視
- Next.jsのApp Router構成

Shadcn関係

shadcn-ui.mdc
# shadcn/uiルール

- `npx shadcn@latest init`で初期化。
- style: default, baseColor: slate, CSS変数有効。
- components.jsonでエイリアス(components, utils, ui, lib, hooks)を管理。
- UI部品は`components/ui/`配下に配置(button, card, table, input, label, textarea, dropdown-menu, badge, sonner等)。
- テーマや色は https://ui.shadcn.com/themes でカスタマイズ可。
- globals.css, tailwind.config.tsと連携。
- ダークモードはnext-themesで対応。

---
- UI部品の追加・更新はshadcnコマンド推奨。

Next.jsの機能関係

.cursor/rules/actions-and-utils.mdc
# サーバーアクション・ユーティリティルール

## サーバーアクション(app/actions.ts)
- サイト・記事の作成/編集/削除、サブスクリプション作成、画像更新などをexport。
- すべて`requireUser`で認証必須。
- バリデーションはzodスキーマ(app/utils/zodSchemas.ts)で実施。
- Prisma経由でDB操作。
- Stripe連携は`app/utils/stripe.ts`で初期化。
- redirectで画面遷移を制御。

## ユーティリティ
- `app/utils/db.ts`: PrismaClientのシングルトン化。
- `app/utils/requireUser.ts`: Kinde認証ユーザー取得、未認証時はログインリダイレクト。
- `app/utils/zodSchemas.ts`: サイト・記事のzodバリデーション、サブディレクトリ重複チェック対応。
- `app/utils/stripe.ts`: Stripeインスタンス初期化、APIバージョン指定。
- `lib/utils.ts`: cn関数でclsx+tailwind-merge。

---
- サーバーアクションは"use server"必須。
- DB/認証/バリデーション/決済は各ユーティリティ経由で統一。

こう生成してみると、想像していたよりも詳細に書くことがわかりますね。
こんな面倒なルールそうりゃ作れるわけない...

上記のいくつかの自動生成されたルールをCursorの推奨とすると、推奨される書き方としては以下の傾向があることがわかります。

ルール記述の基本構造

  1. ヘッダー: カテゴリ名を# TypeScript/Next.jsルールのように明記

  2. 実装詳細(前半):

    • 箇条書きで具体的な設定値を列挙
    • 例: - target: ES2017
    • 例: - strict: true
    • ファイルパスは正確に: components/ui/
    • 設定ファイル名と内容: next.config.mjsの設定内容
  3. 区切り: --- で前半と後半を分ける

  4. 一般原則(後半):

    • 開発方針を簡潔に列挙
    • 例: - TypeScriptの型安全を重視
    • 例: - UI部品の追加・更新はshadcnコマンド推奨

記載すべき内容

  1. 技術設定:

    • コンパイラ設定(target, module等)
    • フレームワーク設定(App Router等)
    • パス解決(import alias等)
  2. ファイル構成:

    • 重要なファイルの配置場所
    • ディレクトリ構造のルール
    • コンポーネント配置のパターン
  3. 開発規約:

    • 認証方法(middleware等)
    • データ操作(Prisma等)
    • バリデーション(zod等)
  4. 運用手順:

    • インストール・初期化コマンド
    • 運用時の推奨コマンド
    • デプロイ・ビルド手順
  5. プロジェクト固有情報:

    • 外部サービス連携(Stripe等)
    • 画像ホスティング設定
    • フック処理(postinstall等)

ファイル分割の考え方

  • 技術スタック別:

    • typescript-next.mdc
    • shadcn-ui.mdc
  • 機能単位別:

    • actions-and-utils.mdc
    • authentication.mdc

まとめると以下になります。

  • 具体的な値・パスを明記する
  • 暗黙知を明文化する
  • 関連する設定をグループ化する
  • コマンド例を含める
  • 推奨・非推奨を明確にする

生成されるルールはCursorに限らずClineとかでも活用できると思うのでClineユーザーの方も必見ですね!

その他のアップデート内容詳細

アップデートの内容で、その他にも個人的にありがたいと感じた機能が機能が 3 点ありましたので紹介します。

Auto Attached ルールの強化

Auto Attached パスパターンが定義されたルールの場合、エージェントはファイルの読み取りまたは書き込み時に適切なルールを自動的に適用するようになりました。

Auto Attached で指定した場合結構ルールが当たらない問題があったようなのですが改善されています。

ルールの永続性と編集

Always また、長時間の会話でルールが保持されるという長年の課題も修正しました。エージェントがルールを確実に編集できるようになりました。

これまではしばらく会話するとルールの存在を忘れてしまっていたのでこれもありがたいですね。

ユーザーレベルで ignore file を設定できる

Command + Shift + P で設定画面を開き、
Appearance の Open editor settings を開き、General: Global Cursor Ignore List で設定ができます。
env ファイルの値を変更されたりしようものなら結構困るのでこれもありがたいですね

まとめ

今回アップデートされた機能はどれも結構課題に感じていた部分で、課題となっていたところが全部改善されているように感じます。
特に自動生成機能の追加により、ルール作成のハードルが大幅に下がり、より Cursor の恩恵を受けられるようになりました。

これらの機能を活用することで、より効率的で安全な開発環境を構築できます。ぜひ試してみてください!

Discussion