この記事を読んでいる方は、すでに 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」と表示する