> ## Documentation Index
> Fetch the complete documentation index at: https://docs.windsurf.com/llms.txt
> Use this file to discover all available pages before exploring further.

# プロンプトエンジニアリング

> Windsurf から高品質なコードを得るための、明確な目的、コンテキスト、制約を含む効果的なプロンプト作成のベストプラクティス。

この記事を読んでいる方は、すでに LLM のユースケースや制約をある程度理解していることでしょう。AIモデル に適切なプロンプトとコンテキストを与えるほど、結果は良くなります。

Windsurf でも同様に、ツールを最大限に活用し、ワークフローを加速させて高品質なコードを得るためには、より効果的なプロンプトを作成するためのベストプラクティスがあります。

<Tip>特定のコードブロックを [@-Mention](/ja/chat/overview/#mentions) する必要があるなど、より複雑なタスクには、[Command](/ja/command/plugins-overview) ではなく [Chat](/ja/chat/overview) を使用してください。</Tip>

<div id="components-of-a-high-quality-prompt">
  ## 高品質なプロンプトの構成要素
</div>

* ***明確な目的または成果物***
  * AIモデルに何を生成させたいのか？
  * 計画ですか？新規コードですか？それともリファクタリングですか？
* ***タスクを実行するための関連コンテキストの網羅***
  * 適切なコンテキストが含まれるよう、@メンションを正しく使いましたか？
  * Windsurf には分かりにくい可能性のある、顧客固有のコンテキストはありますか？
* ***必要な制約***
  * 必ず使用すべき特定のフレームワーク、ライブラリ、または言語はありますか？
  * 時間計算量や空間計算量の制約はありますか？
  * セキュリティ上の考慮事項はありますか？

<div id="examples">
  ## 例
</div>

***例 #1:***

* **悪い例**: Order Book オブジェクトのすべてのテストケースに対して単体テストを書いてください。

* **良い例**: `@class:unit-testing-module` を使って、ストップロスを上回る／下回る場合にスローされる例外を検証する `@func:src-order-book-add` 向けの単体テストを書いてください。

***例 #2***:

* **悪い例**: rawDataTransform をリファクタリングする。

* **良い例**: `@func:rawDataTransform` をリファクタリングし、while ループを for ループに書き換え、出力のデータ構造を `@func:otherDataTransformer` と同じにしてください。

***例 #3***:

* **悪い例**: Contact Form 用に新しい Button を作成する。

* **良い例**: `@class:ContactForm` 用に新しい Button コンポーネントを作成し、`@repo:frontend-components` のスタイルガイドに従い、ラベルを「Continue」としてください。
