Cursor開発チームは、同社のCursor IDEを活用する上で、コーディングエージェントの性能を最大限に引き出すためのベストプラクティスを公開した。単なるコード生成にとどまらず、大規模なリファクタリングやテスト駆動開発の自動化が可能になる一方、その制御にはコツが必要だと指摘している。
この記事は会員限定です。会員登録(無料)すると全てご覧いただけます。
AI(人工知能)コードエディタ「Cursor」を開発するAnysphereは2026年1月9日(米国時間)、コーディングエージェント活用のベストプラクティスを公式ブログで解説した。
コーディングエージェントは、数時間にわたる連続実行や大規模な複数ファイルのリファクタリング、テスト通過までの反復作業が可能になっており、ソフトウェア開発の在り方は大きく変わりつつある。一方、ITエンジニアがエージェントの性能を最大限に引き出すには、その仕組みを理解し、新しい使い方やパターンを身に付ける必要がある。
そこでAnysphereは、Cursorの開発チームがコーディングエージェントをどのように活用しているのかを踏まえ、ベストプラクティスを次のように解説している。
最もインパクトの大きい改善は、コーディングを始める前にプランを立てることだという。経験豊富な開発者ほどコードを生成する前にプランを立てる傾向があるというシカゴ大学の調査を引用(関連記事)した上で、プランニングにより目標を明確化することで、エージェントが自律的にコーディングする際の具体的な指針になるとした。
Cursorにおいては[Shift]+[Tab]キーを押すと「Plan Mode」に切り替えられる。すぐにコードを書き始める代わりに、エージェントはコードベースの調査、要件の明確化、詳細な実装プランを作成し、ユーザーの承認を待つ。
プランはMarkdownファイルとして開かれ、不要なステップの削除やアプローチの調整が可能だ。また、プランを「.cursor/plans/」に保存することで、チーム向けのドキュメント作成や中断した作業の再開、将来のエージェントへのコンテキスト提供に活用できる。
エージェントが意図と合わないものを生成した場合、その場で追加入力で修正を試みるよりもプランに戻る方が効果的だという。変更を元に戻し、具体的な内容でプランを練り直してから再実行することで、より洗練されたコードが得られるとしている。
ユーザーの主な役割は、各エージェントがタスクを完了するために必要なコンテキストを提供し、管理することにある。
とはいえ、プロンプト内で全てのファイルに手動でタグ付けする必要はない。エージェントには強力な検索ツールがあり、必要に応じてコンテキストを取得する。例えば「認証の手順」を質問すると、コーディングエージェントは高速なgrep機能やセマンティック検索を使用して関連するファイルを見つけ出す。
コーディングエージェントとの対話が長引くと、エージェントが焦点を失う原因となり得る。以下に該当する場合は、新しい会話を開始することが推奨される。
一方、同じ機能について反復作業を依頼する場合や、直前に作ったもののデバッグなど、過去のコンテキストが必要な場合は会話を継続する。Cursorで新しい会話を始める際は「@Past Chats」コマンドを使用して、必要なコンテキストだけ取り込ませることも可能だ。
エージェントの動作をカスタマイズする方法として、「Rules」と「Skills」の2種類がある。
Rulesは、エージェントがコードを扱う際の永続的な指示だ。「.cursor/rules/」配下にファイルを配置することで、コマンド、コードスタイル、ワークフローなどのルールを定義できる。
# Commands
- `npm run build`: Build the project
- `npm run typecheck`: Run the typechecker
- `npm run test`: Run tests (prefer single test files for speed)
# Code style
- Use ES modules (import/export), not CommonJS (require)
- Destructure imports when possible: `import { foo } from 'bar'`
- See `components/Button.tsx` for canonical component structure
# Workflow
- Always typecheck after making a series of code changes
- API routes go in `app/api/` following existing patterns
Rulesはエージェントが同じミスを繰り返す場合にのみ追加し、本当に必要なルールだけに絞ることが望ましい。「Git」へのコミットを通じてチーム全体に共有することも可能だ。
「Agent Skills」(Nightlyチャネルで利用可能)は、エージェントが実行できることの幅を広げる機能だ。ドメイン固有の知識やワークフローをパッケージ化し、エージェントが必要に応じて呼び出せる。
これにはカスタムコマンド、エージェントのアクション前後に実行されるスクリプトである「Hooks」、オンデマンドで取り込める手順などが含まれる。Skillsは関連があると判断されたときのみ動的に読み込まれるため、コンテキストを効率的に保つことができる。
1例として、Agent Skillsを活用すると、目標を達成するまで長時間実行し続けるエージェントを作成できる。
{
"version": 1,
"hooks": {
"stop": [{ "command": "bun run .cursor/hooks/grind.ts" }]
}
}
import { readFileSync, existsSync } from "fs";
interface StopHookInput {
conversation_id: string;
status: "completed" | "aborted" | "error";
loop_count: number;
}
const input: StopHookInput = await Bun.stdin.json();
const MAX_ITERATIONS = 5;
if (input.status !== "completed" || input.loop_count >= MAX_ITERATIONS) {
console.log(JSON.stringify({}));
process.exit(0);
}
const scratchpad = existsSync(".cursor/scratchpad.md")
? readFileSync(".cursor/scratchpad.md", "utf-8")
: "";
if (scratchpad.includes("DONE")) {
console.log(JSON.stringify({}));
} else {
console.log(JSON.stringify({
followup_message: `[反復 ${input.loop_count + 1}/${MAX_ITERATIONS}] 作業を続けてください。完了したら .cursor/scratchpad.md に DONE を記入してください。`
}));
}
長時間実行し続けるエージェントは以下のようなユースケースで役に立つ。
日常的に使用している外部ツールとエージェントをMCP(Model Context Protocol)で接続させることもできる。これによりエージェントは以下のようなタスクを実行できるようになる。
エージェントはIDE(統合開発環境)の枠を超え、監視ツールやコミュニケーションツール上の情報を直接参照しながら開発やトラブルシューティングもできるようになる。
エージェントはプロンプト内の画像を直接処理できる。デザインモックアップを貼り付けて実装を依頼すれば、エージェントはレイアウトや配色を解析して再現する。
エラー状態のスクリーンショットを共有すれば、ビジュアル面でのデバッグも可能だ。ブラウザ機能を使用することで、エージェント自身がスクリーンショットを撮り、UIを検証することもできる。
多様なタスクにおいてエージェントが価値を発揮する、代表的なワークフローは以下の通り。
エージェントにテスト作成を依頼し、失敗を確認した後に、テストを通過するコードを書かせる反復プロセスだ。テストという明確なゴールがあることで、エージェントは段階的に実装を改善できる。
新しいプロジェクトに参加した際、ログ出力の実装方法やAPIエンドポイントの追加手順などをエージェントに尋ねることで、エージェントはコードベースを素早く理解できるようになる。
Git履歴の検索、マージコンフリクトの解消、Pull Requestの作成などをAIエージェントに委ねることで自動化できる。
「/pr」などのコマンドを「.cursor/commands/」に保存すれば、チーム全員で定型ワークフローを利用することもできる。
Create a pull request for the current changes. 1. Look at the staged and unstaged changes with `git diff` 2. Write a clear commit message based on what changed 3. Commit and push to the current branch 4. Use `gh pr create` to open a pull request with title/description 5. Return the PR URL when done
Cursor開発チームが実際に作成・利用しているコマンドは以下の通り。
| コマンド | 実行内容 |
|---|---|
| /fix-issue [番号] | gh issue viewコマンドで内容を把握してコード修正、Pull Request作成までを一括実行する |
| /review | リンターの実行、コードの不備チェック、修正が必要な箇所を要約する |
| /update-deps | 依存関係の更新、テスト実行、成功すればコミットの動作を繰り返す |
AIが生成したコードにはレビューが不可欠だ。Cursorには、生成中のリアルタイム差分表示に加え、行ごとに問題を検出する「Agent Review」、Pull Requestに対して自動でレビューする「Bugbot」などの機能が用意されている。またMermaid図を用いたアーキテクチャの視覚化も、問題発見に役立つ。
Cursorでは、複数のエージェントを互いに干渉させることなく並列で実行できる。Git worktree(同じリポジトリに複数の作業ディレクトリを持つことができる機能)を自動的に作成・管理するため、各エージェントは専用の環境で編集やビルドができる。複数のモデルに同じ問題に取り組ませ、最良の結果を選択することで、出力品質を向上させられる。
バグ修正やリファクタリング、ドキュメント更新などのタスクをクラウドエージェントに委譲できる。リモートのサンドボックス上で動作するため、PCを閉じた後でも自律的に作業を進め、完了時にPull Requestを作成して通知する。
標準的な対話で解決しない手ごわいバグには「Debug Mode」が有効だ。複数の仮説を立て、コード実行時のデータを収集・分析することで、根本原因を特定して修正する。
エージェントを最大限に活用している開発者の共通点として、Cursor開発チームは以下の5つのポイントを挙げている。
「もはやコーディングの80%がAI」 元OpenAIカルパシー氏が警告する2026年の悪夢“スロポカリプス”
AIエージェントのトークン消費を約47%削減 Cursorの「コンテキストエンジニアリング」事例
Coworkならスキル(SKILL.md)を作るのもカンタン? 実際にやってみたCopyright © ITmedia, Inc. All Rights Reserved.