GitHub Copilot:Custom Instructions
GitHub Copilot 深度整合在 GitHub 生態系裡,同一套設定會跨 VS Code、Visual Studio、JetBrains、GitHub.com 上的 Copilot Chat、Copilot 編碼代理(coding agent)與 Copilot CLI 生效。它的自訂機制稱為 Custom Instructions(自訂指令),走的是「規則檔」路線,沒有像 Claude/Codex 那樣資料夾式的可攜技能包。
檔案放哪裡
- Repository 全域指令:
.github/copilot-instructions.md。整份檔案套用到這個 repo 裡的所有請求,適合放專案架構、建置與測試指令、程式風格這類「幾乎每次都用得到」的內容。 - 路徑限定指令:
.github/instructions/資料夾下可以放多個*.instructions.md檔,各自用applyTo指定只在編輯特定檔案時套用,讓不同資料夾(例如前端 vs 後端)可以有不同規範。 - Prompt files(提示範本):
.github/prompts/*.prompt.md,用來存可重複使用的提示樣板(例如「產生單元測試」),目前僅支援 VS Code、Visual Studio、JetBrains,需在settings.json打開"chat.promptFiles": true才會出現。 - 個人指令:在 IDE 或 GitHub 帳號設定內填寫,只套用到你自己的請求,不會進版控、也不會影響團隊其他人。
優先順序:個人指令 > repository 指令 > organization 指令;repository 全域指令與路徑限定指令會同時套用、疊加生效。
撰寫格式
.github/copilot-instructions.md 就是一般 Markdown,段落之間的空白會被忽略,寫成一段話、每行一條,或用空行分隔都可以:
本專案是用 TypeScript 寫的 Express API。
- 所有路由都要寫在 src/routes 底下,一個檔案一個資源。
- 錯誤處理一律丟自訂的 AppError,不要直接 throw Error。
- commit message 請用繁體中文,格式為「類型: 說明」。
路徑限定的 .instructions.md 需要 YAML frontmatter 指定 applyTo(glob 語法,可用逗號分隔多個樣式),選填 excludeAgent 排除特定情境:
---
applyTo: "app/models/**/*.rb,app/serializers/**/*.rb"
excludeAgent: "code-review"
---
這個資料夾內的 Model 一律加上型別註記,並在檔案頂端引用 `T::Sig`。
實際應用
.github/
├── copilot-instructions.md # repo 全域:專案簡介、建置指令
├── instructions/
│ ├── frontend.instructions.md # applyTo: src/components/**/*.tsx
│ └── backend.instructions.md # applyTo: server/**/*.py
└── prompts/
└── write-tests.prompt.md # 可重複使用的提示範本
要確認 Copilot 真的有讀到指令,可以在 Chat 面板展開回覆上方的「參考來源」清單,看是否列出 .github/copilot-instructions.md。
官方文件
推薦影音
掌握 Custom Instructions
簡述:完整示範如何建立 copilot-instructions.md 與路徑限定的 .instructions.md,說明如何避免重複下達相同的程式風格、安全性要求給 Copilot。
Copilot CLI 的 Agents、Skills 與 Instructions
簡述:介紹 GitHub Copilot CLI 系列教學的第 6 集,講解 CLI 情境下的 agents、skills 與 custom instructions 怎麼互相搭配,適合已經熟悉編輯器內 Copilot、想延伸到終端機的讀者。
相關資料
- 跟其他工具的差異:〈五大工具怎麼選、怎麼寫〉
- 為什麼要有這些機制:〈核心概念〉