本日はAWESOME-COPILOTの技術調査枠です。
AWESOME-COPILOTのドキュメントを読みながら実際に操作を試して記事に残します。
今回はカスタムインストラクションの一つCode Generation Guidelinesについてです。
Code Generation Guidelines
Code Generation GuidelinesはNode.js + JavaScriptプロジェクトでVitestを使ったテスト開発を行う際のコーディングルールとベストプラクティスです。
VitestはViteエコシステムの高速テストフレームワークで、Node.jsやフロントエンドJavaScriptプロジェクトで広く使われています。
以下のページからCode Generation Guidelinesのインストールボタンをクリックして取得します。
github.com
インストールボタンを押してCode Generation Guidelinesをダウンロードします。
すると.github/instructions配下にインストラクションがインストールされます。

インストールしたインストラクションはCopilotの動作に自動的に適用されます。
このインストラクションを読み込むと、Copilotは以下の前提でコードを生成・レビューします。
- Node.js 環境
- ES Modules
- async/await を使った非同期処理
- Vitest によるテスト
次のような拡張子のファイルに適用されます。
**/*.js, **/*.mjs, **/*.cjs
具体的にはCopilotは以下のような行動をとります。
Node.js + ES Modulesを前提にコードを書く
CopilotはNode.js プロジェクトで以下を使う前提でコードを提案します。
- ESM(ES Modules)
- Node.js 20+
- ES2022 機能
async / awaitを標準で使用
非同期処理は以下の理由からasync / awaitを使います。
- 可読性が高い
- callback を避ける
- Promise chain を減らす
例えば以下のようなコードです。
async function loadConfig() { const data = await fs.readFile("config.json", "utf8"); return JSON.parse(data); }
callbackベースのコードは基本的に避けるようCopilotが提案します。
外部依存をできるだけ減らす
CopilotはNode.js 標準モジュールを優先します。
基本的にNode.js built-in modulesを使う提案になります。
シンプルで保守しやすいコードを書く
Copilotはコードが自己説明的であることを重視して次のようなコーディングスタイルを守ります。
- 分かりやすい関数名
- シンプルなロジック
- 過剰な abstraction を避ける
そのため、不要なコメントを書かないというルールもあります。
Vitestを使ったテストを必ず作る
Copilotは必ずVitestを使ったテストを作成します。
以下のコード変更に対して必ずテストコードを生成するようになります。
- 新機能
- バグ修正
テストのために本体コードを変更しない
Copilotはテストを簡単にするために本体コードを変更しません。
つまり必ず本来のコードをそのままテストする提案を行い、テストしやすいようにコードを改変するような提案は行わなくなります。
エラー処理もテスト対象にする
Copilotはテストを書くとき、以下を含めたテストを生成します。
- 正常系
- 例外ケース
- 不正入力