タスクを与える前にコンテキストを与える
AIはあなたが見るようにはプロジェクトを見られない。フレームワークのバージョンも、ファイル構造も、すでに確立した規約も知らない。これを飛ばすと、AIは推測する——しかも下手に推測する。さらに悪いことに、自信満々に推測する。だから出力は、あなたの実際のコードベースとぶつかるまではもっともらしく見える。
同じ要求に対するこの二つのプロンプトを比べてみよう。
Add a function to validate emails.
This is a TypeScript backend using Express and Zod for validation.
We already validate inputs with Zod schemas in src/schemas/.
Add an email validation schema in that style. Emails must be
lowercase, max 254 chars, and reject disposable domains from
the existing BLOCKED_DOMAINS list in src/config.ts.
最初のプロンプトは、あなたが望まない正規表現を使うかもしれない、コードベースに合わないスタイルの汎用的なコードを生む。二つ目はそのまま貼り付けられるコードを生む。ルールはこうだ。スタックを、規約を、そしてAIが再利用すべき既存の部品を述べよ。
エンターを押す前に役立つ心の中のチェックリスト。言語とフレームワーク(重要ならバージョンまで)、関連するファイルやモジュール、プロジェクトにすでにあるパターン、そしてAIが好むべき、または避けるべきライブラリ。毎回四つすべてが要るわけではない——だが答えがそのうちの一つによって変わるなら、それを名指せ。迷ったら、新しいコードが合わせるべき実際のシグネチャ、型、または設定を貼り付けよ。数行の既存コードは、一段落の説明よりはるかに、あなたの規約をAIに教える。