メインコンテンツへスキップ
この記事を読んでいる方は、すでに LLM のユースケースや制約をある程度理解していることでしょう。AIモデル に適切なプロンプトとコンテキストを与えるほど、結果は良くなります。 Windsurf でも同様に、ツールを最大限に活用し、ワークフローを加速させて高品質なコードを得るためには、より効果的なプロンプトを作成するためのベストプラクティスがあります。
特定のコードブロックを @-Mention する必要があるなど、より複雑なタスクには、Command ではなく Chat を使用してください。

高品質なプロンプトの構成要素

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

例 #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」としてください。