CursorのSkills、Commands、Rules:違いは何か?
Cursorには、多くのユーザーを混乱させる3つの重複するが異なる機能があります:Skills、Commands、Rules。11件の返信を持つフォーラムスレッドは、本質的に同じ質問を異なる方法で繰り返していました —— 「何にどれを使うの?」本ガイドは、境界線を引き、各機能をいつ使用するかを示します。
定義
各機能が実際に何であるかから始めましょう。
Rulesとは?
Rulesは、コードを生成または変更するときにCursorのAIがどのように振る舞うべきかを伝えます。コーディング標準、規約、制約、および好みを定義します。
Rulesは宣言的です —— 何が真であるべきかを述べ、AIがそれに従います。
常にTypeScriptの厳格モードを使用する。
デフォルトエクスポートより名前付きエクスポートを優先する。
クラスコンポーネントではなくフックを持つ関数コンポーネントを使用する。
Rulesは、構成されたプロジェクトでのすべてのAIインタラクションに自動的に適用されます。手動で呼び出す必要はありません。
Rulesの場所:
- グローバルRules:設定 > 一般 > AIのRules
- プロジェクトRules:プロジェクトルートの
.cursorrulesファイル - スコープRules:
.cursor/rules/ディレクトリの.mdcファイル
Commandsとは?
Commandsは、特定のアクションを実行するために手動で呼び出す事前定義されたプロンプトです。一般的なタスクのショートカットです。
Commandsは命令的です —— 特定のことを即座に行うためにトリガーします。
入力:"/explain"
結果:AIが選択されたコードを説明
入力:
"/fix"
結果:AIが選択されたコードのエラーを修正
Commandsは明示的なユーザーアクションです。あなたが指示しない限り、AIはそれらを使用しません。
Commandsの場所:
- 組み込みCommands:
/explain、/fix、/doc、/testなど - カスタムCommands:ユーザーが設定で定義
Skillsとは?
Skillsは、CursorのAIが必要に応じて呼び出すことができるコンテキスト能力です。AIがリクエストに適用できるドメイン知識または専門能力を表します。
Skillsは適応的です —— AIがプロンプトに基づいていつ使用するかを決定します。
ユーザー:"TypeScript、Tailwind、およびPrismaを使用してNext.jsプロジェクトをセットアップ"
AIはその"Next.jsプロジェクトスキャフォールディング"Skillを使用して:
- 正しい初期化コマンドを実行
- Tailwindを正しく構成
- Prismaを正しいスキーマの場所でセットアップ
- TypeScriptパスを構成
Skillsを明示的に呼び出すことはありません。AIがSkillが適用可能であることを認識し、自動的に使用します。
Skillsのソース:
- CursorのAIトレーニングに組み込まれている
- 時間の経過とともにコードベースから学習する
- MCP(Model Context Protocol)サーバー経由で追加される
横並びの比較
| 側面 | Rules | Commands | Skills |
|---|---|---|---|
| 目的 | 行動標準を定義 | 特定のアクションを実行 | ドメイン知識を適用 |
| 適用タイミング | 自動的、常に | 手動で呼び出されたとき | AIが関連性を検出したとき |
| ユーザー制御 | 一度設定、常に適用 | オンデマンドでトリガー | 暗黙的、AIが決定 |
| 形式 | テキスト / JSON / .mdc | スラッシュコマンド(/fix) | 内部AI能力 |
| スコープ | グローバルまたはプロジェクト固有 | 汎用 | コンテキスト依存 |
| 例 | "セミコロンを使用" | /explain selection | "Reactアプリのスキャフォールディング方法を知っている" |
各機能をいつ使用するか
Rulesを使用する場合
AIがプロジェクトでコードを書く方法を一貫して変更したいとき。
良いRuleのユースケース:
- コーディングスタイルを強制(タブ対スペース、命名規約)
- 技術スタックの好みを指定(React対Vue、Prisma対Drizzle)
- アーキテクチャ制約を定義(循環インポートなし、特定のフォルダ構造)
- 応答スタイルを設定("簡潔に"、"常にコメントを追加")
{
"techStack": ["Next.js 14", "TypeScript", "Tailwind CSS"],
"rules": [
"デフォルトでサーバーコンポーネントを使用",
"インタラクティブ性が必要な場合のみ'use client'を追加",
"すべてのAPIルートをapp/api/に配置",
"すべてのデータベース操作にPrismaを使用"
]
}
Rulesはプロジェクトの「憲法」です。一度書けば、すべてのAIインタラクションを指導します。
Commandsを使用する場合
選択されたコードまたは現在のコンテキストに対して特定のアクションを即座に実行したいとき。
良いCommandのユースケース:
- 慣れないコードを説明(
/explain) - 特定のエラーを修正(
/fix) - ドキュメントを生成(
/doc) - 関数のテストを作成(
/test) - 選択されたコードブロックをリファクタリング(
/refactor)
1. ドキュメント化したい関数を選択
2. チャットに /doc と入力
3. AIがその関数のJSDocコメントを生成
組み込みCommandsリファレンス:
| Command | 何をするか | いつ使用するか |
|---|---|---|
/explain | 選択されたコードを説明 | 慣れないコードを読むとき |
/fix | 選択されたコードのエラーを修正 | バグやエラーがあるとき |
/doc | ドキュメントを生成 | JSDoc/ドキュメンテーション文字列を追加するとき |
/test | ユニットテストを生成 | テストカバレッジを書くとき |
/refactor | リファクタリングを提案 | コード構造を改善するとき |
/commit | コミットメッセージを生成 | 変更をコミットする前 |
Commandsは組み合わせることができます。コードを選択して/docと入力し、続けて/testと入力して、同じ関数のドキュメントとテストを生成できます。
Skillsを使用する場合
Skillsを直接「使用」するものではありません —— AIが利用するものです。ただし、MCPサーバーとプロジェクトコンテキストを通じてSkillsを有効化または構成できます。
良いSkill構成:
- データベーススキーマ認識のためにMCPサーバーを追加
- Web検索能力を有効化
- ドキュメントAPIに接続
- リポジトリ固有の知識をセットアップ
{
"mcpServers": {
"postgres": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-postgres", "postgresql://localhost/mydb"]
},
"github": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-github"]
}
}
}
これらのMCPサーバーが接続されると、AIはデータベースに直接クエリを実行したりGitHubのissueにアクセスしたりする"Skill"を獲得します。
組み合わせて使用:実際の例
本当の力は、3つを一緒に使用するときに生まれます。以下が実際のワークフローの様子です:
シナリオ:新しいAPIエンドポイントを追加
セットアップ(Rules):
.cursorrulesファイルには:
技術スタック:Next.js 14 App Router、TypeScript、Prisma、Zod
API規約:
- すべてのルートはapp/api/[resource]/route.ts
- Zodを使用した入力検証
- 一貫したエラー形式を返す:{ error: string, code: string }
- 複数テーブル操作にはPrismaトランザクションを使用
実行(Commands):
既存のルートファイルを選択して入力:
/test
AIはRulesに基づいて既存のルートのテストを生成します。
次に入力:
トランザクション内で注文および注文アイテムを作成する
POSTエンドポイント/api/ordersを作成。
{ items: Array<{ productId: string, quantity: number }>,
customerEmail: string } を受け入れます。
AI支援(Skills):
AIは自動的に:
- Rulesを適用 —— ファイルを
app/api/orders/route.tsに配置し、Zod検証を使用し、Prismaトランザクションでラップ - Next.js App Routerのルート規約を処理するSkillを使用
- Prismaトランザクション構文を処理するSkillを使用
- すべての制約に従うコードを生成
import { NextRequest, NextResponse } from 'next/server';
import { z } from 'zod';
import { prisma } from '@/lib/db';
const orderSchema = z.object({
items: z.array(z.object({
productId: z.string().uuid(),
quantity: z.number().int().positive()
})).min(1),
customerEmail: z.string().email()
});
export async function POST(request: NextRequest) {
try {
const body = await request.json();
const validated = orderSchema.parse(body);
const order = await prisma.$transaction(async (tx) => {
const newOrder = await tx.order.create({
data: {
customerEmail: validated.customerEmail,
status: 'PENDING'
}
});
await tx.orderItem.createMany({
data: validated.items.map(item => ({
orderId: newOrder.id,
productId: item.productId,
quantity: item.quantity
}))
});
return newOrder;
});
return NextResponse.json(order, { status: 201 });
} catch (error) {
if (error instanceof z.ZodError) {
return NextResponse.json(
{ error: 'Invalid input', code: 'VALIDATION_ERROR' },
{ status: 400 }
);
}
return NextResponse.json(
{ error: 'Internal server error', code: 'INTERNAL_ERROR' },
{ status: 500 }
);
}
}
コードが、プロンプトで繰り返すことなく定義したすべてのRuleに従っていることに注目してください。これが3つのメカニズムを組み合わせる力です。
一般的な混乱と明確化
"RulesをCommandsに変換できますか?"
直接変換することはできません。Rulesは受動的な制約です;Commandsは能動的なアクションです。ただし、Rulesを参照するカスタムCommandsを作成できます:
"/lint" —— 選択されたコードがすべてのプロジェクトRulesに
従っているか確認するカスタムCommand
"SkillsはRulesを上書きしますか?"
いいえ。Rulesは常に優先されます。Skillが提案する方法がRuleに違反する場合、AIはRuleに従うべきです。AIがRulesを無視しているのを見た場合、Rulesが曖昧すぎるか競合している可能性があります。
"どれを最初にセットアップすべきですか?"
- まずRules —— プロジェクトの規約を定義
- 次にCommands —— 組み込みのものを学び、必要に応じてカスタムを追加
- 最後にSkills —— ギャップが何であるかを知ってから、MCPサーバー経由でコンテキストを追加
"複数を同時に使用できますか?"
もちろんです。実際、そうすべきです。Rulesはベースラインを設定し、Commandsはアクションをトリガーし、Skillsは知識の空白を埋めます。協調して動作するように設計されています。
カスタムCommands:さらに一歩進む
Cursor設定で、プロジェクト固有のワークフロー用のカスタムCommandsを定義できます。
{
"cursor.customCommands": [
{
"name": "api-check",
"description": "APIルートがプロジェクト規約に従っているか確認",
"prompt": "このAPIルートファイルをレビューし、以下を確認:1)正しい場所にあるか?2)Zod検証を使用しているか?3)複数テーブル操作にPrismaトランザクションを使用しているか?4)標準エラー形式を返しているか?違反をリストアップ。"
},
{
"name": "add-logging",
"description": "関数に構造化ログを追加",
"prompt": "この関数に、プロジェクトの@/lib/loggerからのロガーを使用した構造化ログを追加。エントリパラメータ、終了結果、およびキャッチされたエラーを記録。"
}
]
}
チャットに/api-checkまたは/add-loggingと入力して使用します。
まとめ
| 機能 | これを想像する | あなたの操作 | AIの操作 |
|---|---|---|---|
| Rules | プロジェクトの憲法 | 一度書く | 自動的に従う |
| Commands | パワーツール | 必要に応じて呼び出す | 特定のタスクを実行 |
| Skills | ドメイン専門知識 | 構成/強化 | 関連するときに適用 |
最もシンプルなメンタルモデル:
- Rules = "常にこれを行う"
- Commands = "今この特定のことを行う"
- Skills = "この種類のことのやり方を知っている"
まずRulesを設定して、AIに標準を知らせましょう。組み込みのCommandsを学び、必要に応じてカスタムを追加しましょう。AIが外部システムを理解する必要があるときに、MCPサーバー経由でSkillsを追加しましょう。一緒に使用すると、Cursorはどの単一機能よりもはるかに強力になります。