🚀 VS Code で で入手しましょう!

VS Code における GitHub Copilot のカスタム指示

Copilot のチャット応答を強化するには、チームのワークフロー、ツール、またはプロジェクトの具体的な詳細に関するコンテキスト情報を提供します。すべてのチャットクエリにこのコンテキストを手動で含める代わりに、すべてのチャットリクエストにこの情報を自動的に組み込むカスタム指示ファイルを作成できます。

Copilot は、チャットビュー、クイックチャット、またはインラインチャットのチャットプロンプトにこれらの指示を適用します。これらの指示はチャットには表示されませんが、VS Code によって Copilot に渡されます。

特定の目的のためにカスタム指示を指定できます

  • コード生成指示 - コード生成に固有のコンテキストを提供します。たとえば、プライベート変数は常にアンダースコアで始まる必要があることや、シングルトンは特定の方法で実装する必要があることを指定できます。コード生成指示は、設定またはワークスペース内の Markdown ファイルで指定できます。

  • テスト生成指示 - テスト生成に固有のコンテキストを提供します。たとえば、生成されたすべてのテストは特定のテストフレームワークを使用する必要があることを指定できます。テスト生成指示は、設定またはワークスペース内の Markdown ファイルで指定できます。

  • コードレビュー指示 - 現在のエディター選択範囲のレビューに固有のコンテキストを提供します。たとえば、レビュアーがコード内の特定の種類のエラーを探す必要があることを指定できます。レビュー選択指示は、設定またはワークスペース内の Markdown ファイルで指定できます。

  • コミットメッセージ生成指示 - コミットメッセージの生成に固有のコンテキストを提供します。コミットメッセージ生成指示は、設定またはワークスペース内の Markdown ファイルで指定できます。

  • プルリクエストのタイトルと説明の生成指示 - プルリクエストのタイトルと説明の生成に固有のコンテキストを提供します。プルリクエストのタイトルと説明の生成指示は、設定またはワークスペース内の Markdown ファイルで指定できます。

カスタム指示は自然言語の指示で構成され、チャットの質問を補足するためのコンテキストまたは関連情報を追加する、短く自己完結型のステートメントである必要があります。

コード生成カスタム指示を定義する

Copilot は、たとえばリファクタリング、単体テストの生成、または機能の実装の一部として、コードを生成するのに役立ちます。プロジェクトで使用したい特定のライブラリや、Copilot が生成するコードに適用したい特定のコーディングスタイルがあるかもしれません。

Copilot は、コード補完にコード生成指示を適用しません。

設定を使用する

カスタムコード生成指示を構成するには、github.copilot.chat.codeGeneration.instructions 設定を使用します。カスタム指示はユーザーまたはワークスペースレベルで定義でき、言語固有の指示を指定することもできます。言語固有の設定の詳細をご覧ください。

次のコードスニペットは、settings.json ファイルで一連の指示を定義する方法を示しています。設定で指示を直接定義するには、text プロパティを構成します。外部ファイルを参照するには、file プロパティを構成します。

  "github.copilot.chat.codeGeneration.instructions": [
    {
      "text": "Always add a comment: 'Generated by Copilot'."
    },
    {
      "text": "In TypeScript always use underscore for private field names."
    },
    {
      "file": "code-style.md" // import instructions from file `code-style.md`
    }
  ],

code-style.md ファイルの内容の例

Always use React functional components.

Always add comments.

.github/copilot-instructions.md ファイルを使用する

カスタム指示をワークスペースまたはリポジトリの .github/copilot-instructions.md ファイルに保存して、VS Code にこのファイルを自動的に認識させることもできます。

.github/copilot-instructions.md ファイルと設定の両方でカスタム指示を定義した場合、Copilot は両方のソースからの指示を結合しようとします。

Visual Studio の GitHub Copilot も .github/copilot-instructions.md ファイルを検出します。VS Code と Visual Studio の両方で使用するワークスペースがある場合は、同じファイルを使用して両方のエディターのカスタム指示を定義できます。

  1. github.copilot.chat.codeGeneration.useInstructionFiles 設定を true に設定して、VS Code の Copilot にカスタム指示ファイルを使用するように指示します。

  2. ワークスペースのルートに .github/copilot-instructions.md ファイルを作成します。必要に応じて、最初に .github ディレクトリを作成します。

    ヒント

    VS Code のエクスプローラービューで、ファイル名としてフルパスを入力することで、フォルダとファイルを 1 回の操作で作成できます。

  3. 自然言語の指示をファイルに追加します。Markdown 形式を使用できます。

    指示間の空白は無視されるため、指示は単一の段落として、各行を新しい行に記述するか、読みやすくするために空白行で区切ることができます。

テスト生成カスタム指示を定義する

Copilot を使用してコードのテストを生成できます。たとえば、チャットビューで @workspace /tests プロンプトを使用します。カスタム指示を定義して、Copilot がプロジェクトと開発ワークフローに固有のテストを生成するのに役立てることができます。

カスタムテスト生成指示を構成するには、github.copilot.chat.testGeneration.instructions 設定を使用します。カスタム指示はユーザーまたはワークスペースレベルで定義できます。

次のコードスニペットは、settings.json ファイルで一連の指示を定義する方法を示しています。設定で指示を直接定義するには、text プロパティを構成します。外部ファイルを参照するには、file プロパティを構成します。

  "github.copilot.chat.testGeneration.instructions": [
    {
      "text": "Always use vitest for testing React components."
    },
    {
      "text": "Use Jest for testing JavaScript code."
    },
    {
      "file": "code-style.md" // import instructions from file `code-style.md`
    }
  ],

code-style.md ファイルの内容の例

Always add code comments.

Always use React functional components.

コードレビューカスタム指示を定義する

Copilot を使用して、エディターで選択したコードのレビューを行うことができます。カスタム指示を定義して、Copilot がプロジェクトと開発ワークフローに関連する特定のコードレビュー基準を考慮に入れるのに役立てることができます。

カスタムコードレビュー指示を構成するには、github.copilot.chat.reviewSelection.instructions 設定を使用します。カスタム指示はユーザーまたはワークスペースレベルで定義できます。

コミットメッセージ生成カスタム指示を定義する

ソース管理ビューでは、Copilot を使用して保留中のコード変更のコミットメッセージを生成できます。カスタム指示を定義して、Copilot がプロジェクトと開発ワークフローに固有の特定のフォーマットと構造を考慮に入れたコミットメッセージを生成するのに役立てることができます。

カスタムコミットメッセージ生成指示を構成するには、github.copilot.chat.commitMessageGeneration.instructions 設定を使用します。カスタム指示はユーザーまたはワークスペースレベルで定義できます。

プルリクエストのタイトルと説明の生成カスタム指示を定義する

GitHub Pull Requests 拡張機能がインストールされている場合、Copilot を使用してプルリクエストのタイトルと説明を生成できます。カスタム指示を定義して、Copilot がプロジェクトと開発ワークフローに固有の特定のフォーマットと構造を考慮に入れたタイトルと説明を生成するのに役立てることができます。

プルリクエストのタイトルと説明の生成カスタム指示を構成するには、github.copilot.chat.pullRequestDescriptionGeneration.instructions 設定を使用します。カスタム指示はユーザーまたはワークスペースレベルで定義できます。

カスタム指示を定義するためのヒント

  • 指示は短く自己完結型にしてください。各指示は、単一の単純なステートメントである必要があります。複数の情報を提供する必要がある場合は、複数の指示を使用します。

  • 特定のコーディング標準など、指示で外部リソースを参照しないでください。

  • カスタム指示をチームまたはプロジェクト間で簡単に共有できるように、指示を外部ファイルに保存します。また、ファイルのバージョン管理を行って、時間の経過に伴う変更を追跡することもできます。

再利用可能なプロンプトファイル (試験的)

プロンプトファイル (プロンプト) を使用すると、追加のコンテキストを含む再利用可能なプロンプト指示を構築および共有できます。プロンプトファイルは、Copilot チャットでプロンプトを記述する既存の形式 (たとえば、Rewrite #file:x.ts) を模倣した Markdown ファイルです。これにより、自然言語の指示、追加のコンテキスト、さらには依存関係として他のプロンプトファイルへのリンクをブレンドできます。

カスタム指示は各 AI ワークフローにコードベース全体のコンテキストを追加するのに役立ちますが、プロンプトファイルを使用すると、特定のチャットインタラクションに指示を追加できます。

一般的なユースケースには、次のようなものがあります

  • コード生成: コンポーネント、テスト、または移行 (たとえば、React フォーム、または API モック) 用の再利用可能なプロンプトを作成します。
  • ドメイン専門知識: セキュリティプラクティスやコンプライアンスチェックなど、プロンプトを通じて専門知識を共有します。
  • チームコラボレーション: スペックやドキュメントへの参照を含むパターンとガイドラインをドキュメント化します。
  • オンボーディング: 複雑なプロセスまたはプロジェクト固有のパターンに関するステップバイステップガイドを作成します。

プロンプトファイルの例

  • react-form.prompt.md - フォームを生成するための再利用可能なタスクをドキュメント化します

    Your goal is to generate a new React form component.
    
    Ask for the form name and fields if not provided.
    
    Requirements for the form:
    * Use form design system components: [design-system/Form.md](../docs/design-system/Form.md)
    * Use `react-hook-form` for form state management:
    * Always define TypeScript types for your form data
    * Prefer *uncontrolled* components using register
    * Use `defaultValues` to prevent unnecessary rerenders
    * Use `yup` for validation:
    * Create reusable validation schemas in separate files
    * Use TypeScript types to ensure type safety
    * Customize UX-friendly validation rules
    
  • security-api.prompt.md - REST API のセキュリティレビューを実行するために使用できる、REST API の再利用可能なセキュリティプラクティスをドキュメント化します

    Secure REST API review:
    * Ensure all endpoints are protected by authentication and authorization
    * Validate all user inputs and sanitize data
    * Implement rate limiting and throttling
    * Implement logging and monitoring for security events
    
    

使用法

プロンプトファイルを有効にするには、chat.promptFiles VS Code 設定を構成します。デフォルトでは、プロンプトファイルはワークスペースの .github/prompts ディレクトリにあります。プロンプトファイルが配置されている追加のフォルダを指定することもできます。

プロンプトファイルの作成

  1. .github/prompts ディレクトリの chat.promptFiles 設定を true に設定します。

  2. ワークスペースの .github/prompts ディレクトリに .prompt.md ファイルを作成します。

    または、コマンドパレットから プロンプトを作成 コマンドを使用します (⇧⌘P (Windows、Linux Ctrl+Shift+P))。

  3. Markdown 形式を使用してプロンプト指示を記述します。

    プロンプトファイル内で、追加のワークスペースファイルを Markdown リンク ([index](../index.ts)) として、またはプロンプトファイル内で #file:../index.ts 参照として参照します。

    他の .prompt.md ファイルを参照して、プロンプトの階層を作成することもできます。再利用可能なプロンプトは、複数のプロンプトファイル間で共有できます。

ユーザープロンプトファイルの作成

ユーザープロンプトファイルは、ユーザープロファイルに保存されます。ユーザープロンプトファイルを使用すると、複数のワークスペース間で再利用可能なプロンプトを共有できます。

ワークスペースプロンプトファイルと同じ方法で、チャットプロンプトにユーザープロンプトファイルを追加できます。

ユーザープロンプトファイルを作成するには

  1. コマンドパレットから ユーザープロンプトを作成 コマンドを選択します (⇧⌘P (Windows、Linux Ctrl+Shift+P))。

  2. プロンプトファイルの名前を入力します。

  3. Markdown 形式を使用してプロンプト指示を記述します。

ユーザープロンプトファイルは、設定の同期を使用して、複数のデバイス間で同期できるようになりました。設定の同期構成でプロンプトファイルのサポートを有効にしてください。コマンドパレットから 設定の同期: 構成 を選択し、プロンプト が選択されていることを確認します。

チャットリクエストにプロンプトファイルを添付する

  1. コンテキストを添付 アイコン (⌘/ (Windows、Linux Ctrl+/)) を選択し、プロンプト... を選択します。

    または、コマンドパレットから チャット: プロンプトを使用 コマンドを使用します (⇧⌘P (Windows、Linux Ctrl+Shift+P))。

  2. クイック選択からプロンプトファイルを選択して、チャットリクエストに添付します。

    プロンプトファイルは、Copilot チャットと Copilot エディットの両方で使用できます。

  3. 必要に応じて、タスクに必要な追加のコンテキストファイルを添付します。

    再利用可能なタスクの場合は、追加の指示なしでプロンプトを送信します。

    再利用可能なプロンプトをさらに洗練するには、タスクのコンテキストをさらに提供するための追加の指示を含めます。

ヒント

Markdown リンクを使用して API 仕様やドキュメントなどの追加のコンテキストファイルを参照して、Copilot により完全な情報を提供します。

設定

カスタム指示の設定

  • github.copilot.chat.codeGeneration.useInstructionFiles: .github/copilot-instructions.md からのコード指示を Copilot リクエストに追加するかどうかを制御します。
  • github.copilot.chat.codeGeneration.instructions (試験的): コードを生成する Copilot リクエストに追加される指示のセット。
  • github.copilot.chat.testGeneration.instructions (試験的): テストを生成する Copilot リクエストに追加される指示のセット。
  • github.copilot.chat.reviewSelection.instructions (プレビュー): 現在のエディター選択範囲をレビューするための Copilot リクエストに追加される指示のセット。
  • github.copilot.chat.commitMessageGeneration.instructions (試験的): コミットメッセージを生成する Copilot リクエストに追加される指示のセット。
  • github.copilot.chat.pullRequestDescriptionGeneration.instructions (試験的): プルリクエストのタイトルと説明を生成する Copilot リクエストに追加される指示のセット。

プロンプトファイル (試験的) 設定

  • chat.promptFiles (試験的): 再利用可能なプロンプトファイルを有効にします。

  • chat.promptFilesLocations (試験的): プロンプトファイルが配置されているフォルダのリスト。プロンプトファイルが配置されている 1 つまたは複数のフォルダを指定できます。相対パスは、ワークスペースのルートフォルダから解決されます。ファイルパスの glob パターンをサポートします。

    設定値 説明
    ["/path/to/folder"] 特定のパスのプロンプトファイルを有効にします。プロンプトファイルが配置されている 1 つまたは複数のフォルダを指定します。相対パスは、ワークスペースのルートフォルダから解決されます。
    デフォルトでは、.github/prompts が追加されますが、無効になっています。