この記事で紹介する Cursor Agent に pay-per-call-mcp を追加すると、Web検索・企業調査・インボイス検証を Cursor が自律で実行できます。
この記事でわかること
- Cursor の Agent モードと Chat モードの根本的な違い
- 「的外れな提案ばかり」を解消する Context 設定のコツ
- Agent に長い作業を任せて放置するための指示の書き方
-
.cursor/rules/
でエージェントの行動ルールを事前定義する方法 - 実際に導入してコーディング速度が 3 倍になった具体的な使い方
はじめに
Cursor を使い始めたとき、一番困ったのは「的外れな提案」でした。
自分: このコンポーネントをリファクタリングして
Cursor: (プロジェクトと関係ない別のファイルを参照して)
こんな実装はいかがでしょうか?
自分: そこじゃなくて...
コンテキストを正しく渡せていなかっただけでした。
Agent モードと Context 設定を整備したところ、的外れな提案がほぼゼロになり、長い作業を丸投げできるようになりました。
Chat と Agent の違い
Chat モード ↓ コードを提案する(自分で適用する) 1つの質問に1つの回答 コンテキストは自分で @指定 Agent モード ↓ コードを自分で書いて適用する 複数のファイルを連続して変更する 必要なファイルを自分で探す コマンドも自動実行する
Agent は「やっといて」が通じる。Chat は「どうすればいい?」を聞く場所。
Before / After
Before(Chat モードで毎回コンテキスト指定)
自分: @Button.tsx @types.ts @theme.ts
このコンポーネントを dark mode 対応にして
Cursor: (提案を出す)
自分: (手動でコードを適用)
自分: @Input.tsx @Select.tsx も同じように対応して
Cursor: (別の提案)
自分: (また手動で適用)
→ 30分
After(Agent モードで丸投げ)
自分: src/components/ 以下の全コンポーネントを
dark mode 対応にして。
Tailwind の dark: プレフィックスを使うこと。
変更したファイルの一覧を最後に報告して。
Cursor Agent: (自律的に全ファイルを変更)
→ 5分、自分は別の作業
「的外れな提案」をなくす 3 つの設定
1. @Codebase で全体像を渡す
❌ 的外れになりやすい 「この関数をリファクタリングして」 ✅ コンテキストが通る 「@Codebase この関数をリファクタリングして。 プロジェクト全体のパターンに合わせること」
@Codebaseを入れると Cursor がインデックスを検索して関連ファイルを自動で参照します。
2. .cursor/rules/
でプロジェクトルールを事前定義
毎回「〇〇の形式で書いて」と言わなくていいように、ルールファイルを作ります:
.cursor/rules/ ├── always.mdc ← 常時適用(5個まで) ├── components.mdc ← src/components/** に自動適用 ├── api.mdc ← src/api/** に自動適用 └── database.mdc ← DB操作時に参照
--- alwaysApply: true --- # 絶対ルール 1. TypeScript の any 禁止 2. コンポーネントの Props は interface で定義 3. Tailwind CSS のみ使用(styled-components 禁止) 4. Server Component デフォルト(use client は最小限)
--- globs: ["src/components/**/*.tsx"] --- # Reactコンポーネントルール - export default でエクスポート - ファイル名とコンポーネント名を一致させる - Props の型は ComponentProps という名前にする - エラー境界は ErrorBoundary コンポーネントを使う
3. 最初に「確認してから進む」を伝える
Agent が間違った方向に走り出すのを防ぐ指示:
「src/api/user.ts をリファクタリングしてください。 始める前に: 1. 変更対象のファイルと変更内容の概要を教えてください 2. 影響を受けるファイルがあれば一覧を出してください 3. 確認が取れたら進めてください」
Agent に長い作業を丸投げする指示の型
型 1:複数ファイルの一括変更
「以下の変更を src/components/ 以下の全ファイルに適用してください: 変更内容: - className の文字列を cn() ユーティリティ関数でラップする - import に clsx を追加する 条件: - すでに cn() を使っているファイルはスキップ - TypeScript エラーが出たら止めて報告 完了したら変更ファイル数を教えてください」
型 2:新機能の実装(一気通貫)
「ユーザーのプロフィール編集機能を実装してください。 仕様: - フォーム: 名前、メールアドレス、アバター画像 - バリデーション: zod を使う - API: PATCH /api/users/:id - 成功時: トースト通知を表示 参考: - 既存の @src/components/forms/LoginForm.tsx のパターンに合わせる - API は @src/api/auth.ts の書き方に合わせる テストも合わせて書いてください」
型 3:バグ修正(調査から修正まで)
「以下のバグを調査して修正してください:
症状: ユーザーがプロフィール画像をアップロードすると、
2回目以降のアップロードがキャッシュされた古い画像を表示する
調査してほしいこと:
1. 画像の URL 生成ロジック
2. キャッシュの扱い方
3. S3 への upload 処理
修正前に原因の仮説を説明してから進めてください」
よく使う @ コマンドの使い分け
| コマンド | 使いどころ |
|---|---|
@Codebase |
プロジェクト全体を検索してほしいとき |
@ファイル名 |
特定のファイルを参照させるとき |
@Docs |
ライブラリの公式ドキュメントを参照させるとき |
@Web |
最新情報を検索させるとき |
@Git |
最近の変更を参照させるとき |
@Terminal |
直前のターミナル出力を渡すとき |
Agent を止めるタイミング
Agent に丸投げするとき、止めどきを事前に伝えておくと暴走しません:
「以下の作業をしてください: ... 以下の場合は作業を止めて確認を求めてください: - 変更ファイルが 10 個を超える場合 - テストが失敗した場合 - 変更内容が仕様と異なると思う場合 - .env ファイルや設定ファイルを変更する必要が出た場合」
まとめ
| 設定 | 効果 |
|---|---|
@Codebaseを使う |
プロジェクト全体を把握してから提案 |
.cursor/rules/で事前定義 |
毎回の指示が不要 |
| 「確認してから進む」を伝える | 間違った方向への暴走を防ぐ |
| 完了条件と中断条件を明示 | 長い作業を安全に丸投げ |
Agent は「何でもやってくれる便利なもの」ではなく「ルールと文脈を整えると一気に賢くなるもの」です。最初の 10 分を投資して設定を整えると、あとは止まらなくなります。
よくある質問(FAQ)
Q. Agent モードはどこから使えますか?
A. Cursor のチャット欄の左上にある切り替えボタン、または
Cmd+Shift+Iで Agent モードに切り替えられます。
Q. Agent が勝手にコミットしてしまいます
A.
.cursor/rules/の
alwaysApply: trueのルールに「git commit は必ずユーザーの確認を取ること」と書いておくと防げます。
Q. @Codebase が遅いです
A. インデックスを作成中の場合があります。
Cursor Settings → Features → Codebase indexingで状態を確認してください。大きなリポジトリは初回インデックスに数分かかります。
Q. Chat と Agent どちらを使えばいいですか?
A. 「どうすればいい?」は Chat、「やっといて」は Agent が向いています。複数ファイルを変更する作業は Agent 一択です。