---
title: "09 · 指令、Skills、Hooks 怎麼分工"
description: "解釋個人、儲存庫、組織指令，prompt files、agent skills、hooks、plugins 在 Copilot 體系裡的職責邊界。"
verifiedAt: "2026-05-06"
---

讓 Copilot 穩定，不是靠每次 prompt 寫得更長，而是把規則、流程和控制放到正確層級。指令（instructions）、提示詞檔案（prompt files）、技能包（skills）、生命週期鉤子（hooks）、外掛（plugins）都能影響 Copilot，但它們解決的問題不同——把它們混在一起，最常見的結果是規則到處衝突、agent 行為不可預期。

> [!NOTE]
> **本章目標**：你會區分“規則注入”“任務複用”“能力包”“生命週期命令”和“分發包”，避免把所有擴充套件能力混成一團。

## 1. 先看職責圖

```mermaid
flowchart TD
  Need["要擴充套件 Copilot"] --> Rule{"每次都要遵守?"}
  Rule -->|是| Instructions["Custom instructions"]
  Rule -->|否| Repeat{"是否重複任務?"}
  Repeat -->|否| Prompt["普通 prompt"]
  Repeat -->|是| Assets{"需要指令碼/示例/資源?"}
  Assets -->|否| PromptFile["Prompt file"]
  Assets -->|是| Skill["Agent skill"]
  Skill --> Lifecycle{"需要固定生命週期執行?"}
  Lifecycle -->|是| Hook["Hook"]
  Lifecycle -->|否| Package{"需要跨團隊分發?"}
  Hook --> Package
  Package -->|是| Plugin["Plugin"]
  Package -->|否| Local["專案內維護"]
```

這個圖的核心判斷是：規則歸規則，流程歸流程，命令歸命令，分發歸分發。

### 五類能力對照表（新手速查）

光看流程圖還是抽象。把"團隊辦公"類比一下：

| 能力 | 團隊辦公類比 | 載入時機 | 失敗影響 | 何時該升級 |
| --- | --- | --- | --- | --- |
| Custom instructions | 工位牆上的便利貼：永遠在視線裡 | 每次相關請求自動注入 | 規則錯 → Copilot 一直按錯的做 | 同一規則在 ≥2 個 prompt 裡手抄過，立刻沉澱進 instructions |
| Prompt file | 抽屜裡的固定流程清單：要做就取 | 你顯式呼叫 `/<name>` 時載入 | 單次任務跑偏 | 同一 prompt 用過 ≥3 次，每次都基本一樣，沉澱成 prompt file |
| Agent skill | 部門工具箱：含說明 + 指令碼 + 示例 | 任務相關時 agent 自動載入 | 載入鏈斷裂 / 指令碼路徑錯 → 安靜失敗 | prompt file 滿足不了，需要附指令碼和示例 |
| Hook | 流水線上的檢查工位：固定時機執行 | agent 生命週期固定節點（Pre/PostToolUse 等） | 命令報錯可能阻斷 agent 整個會話 | 必須強制阻斷、記錄、審批的危險操作（rm / 寫敏感路徑） |
| Plugin | 外購的能力包：裝上就能用 | 安裝後按上面四種機制工作 | 來源不可信 → 任意機器執行風險 | 公司多團隊複用同一套規則 + 工具 |

> **新手起步順序**：先寫 instructions（10 分鐘搞定的便利貼）→ 用一週後把高頻 prompt 沉澱成 prompt file → 真有需要指令碼時再升 skill → 必須強制控制時才上 hook → 公司級才考慮打 plugin。**反過來從 plugin 起步基本都返工**。

## 2. Instructions：長期規則

Custom instructions 適合穩定、長期、廣泛適用的專案規則。GitHub 官方響應定製頁列出五種來源——personal（個人偏好）、repository-wide（儲存庫通用，寫在 `.github/copilot-instructions.md`）、path-specific（路徑專用，寫在 `.github/instructions/**`）、agent instructions（agent 專用，如 `AGENTS.md`）、organization instructions（組織級），並說明它們有不同優先順序。

適合：

- 專案目錄職責。
- 技術堆疊和版本約束。
- 編碼規範、測試命令、審查要求。
- 安全紅線和敏感檔案邊界。

不適合：

- 一次性任務。
- 臨時 bug 方案。
- 金鑰、賬號、客戶資訊。
- 過期遷移說明。
- 和已有規則衝突的偏好。

## 3. Prompt files：重複任務

Prompt files 適合複用一類請求，例如：

- “按團隊規範寫測試。”
- “做一次 API 相容性審查。”
- “生成 release note 草稿。”
- “按 PR 模板總結變更。”

它比 instructions 更適合任務型內容，因為不會汙染每一次 Copilot 請求。任務經常用、但不是每次都要用，就放 prompt file。

## 4. Skills：能力包

VS Code 官方 Agent Skills 文件把 skill 定義為一組資料夾，裡面可以有 instructions、scripts、examples 和 resources。Copilot 會在相關任務里載入它們，幫助完成特定能力。

適合 skill：

- 測試工作流：測試命令、樣例、失敗排查指令碼。
- 安全審計：檢查清單、敏感路徑、報告模板。
- 文件釋出：frontmatter、截圖流程、連結檢查指令碼。
- 遷移任務：階段步驟、驗證命令、回復策略。

一個 skill 目錄至少要有 `SKILL.md`。如果要用指令碼或示例，`SKILL.md` 必須顯式引用它們，否則 agent 可能不會載入。

## 5. Hooks：生命週期控制

Hook 不是知識包，而是固定時機執行的 shell command。VS Code hooks 當前處於公開預覽（public preview），Copilot CLI 也提供 hooks 能力。

典型用途：

- `PreToolUse`：命令執行前檢查 allowlist。
- `PostToolUse`：檔案編輯後跑 formatter、lint 或日誌記錄。
- `UserPromptSubmit`：記錄請求或注入可審計上下文。
- `SessionStart`：檢查專案狀態。
- `PreCompact`：壓縮上下文前儲存關鍵狀態。
- `Stop`：會話結束時做收尾記錄。

Hook 風險更高，因為它真的會執行命令。上線前要驗證命令可重複執行、失敗可解釋、日誌不含金鑰、受保護路徑不能繞過。

## 6. Plugins：分發載體

Plugin 適合把 skills、custom agents、hooks、MCP server configurations 等組合打包分發。它解決的是安裝、更新、解除安裝、版本管理，不是單個任務提示詞。

適合 plugin：

- 公司級工程規範包。
- 多儲存庫共用測試和釋出工作臺。
- skill、hook、MCP server 組合能力。
- 需要版本和回復的團隊級分發。

安裝 plugin 前，要像審程式碼一樣看 manifest、指令碼、許可權、網路目標、更新機制和釋出者。

## 7. 落地順序

推薦順序：

1. 先寫最小 instructions。
2. 把重複任務沉澱成 prompt files。
3. 需要指令碼、示例、資源時升級成 skill。
4. 必須強制校驗、記錄、阻斷或審批時加入 hook。
5. 需要跨團隊安裝更新時打成 plugin。

不要反過來。剛開始就做 plugin，通常會把還沒穩定的 prompt、指令碼和許可權一起固化。

## 本章自檢

上線前確認：

- 這個能力解決的是規則、任務複用、專業能力、生命週期控制，還是分發？
- 是否有 owner、版本、驗證任務和回復方式？
- 是否會執行 shell 命令、訪問網路或讀取敏感檔案？
- 是否只在合適入口載入？
- 是否能被停用、解除安裝或替換？

透過標準：每個擴充套件能力都能說清職責、觸發條件、許可權和驗證證據。

## 官方來源

- [About customizing GitHub Copilot responses](https://docs.github.com/en/copilot/concepts/prompting/response-customization)：官方 custom instructions 和 prompt files 邊界。
- [Use Agent Skills in VS Code](https://code.visualstudio.com/docs/copilot/customization/agent-skills)：VS Code 官方 Agent Skills 定義、位置和 `SKILL.md`。
- [Agent hooks in Visual Studio Code](https://code.visualstudio.com/docs/copilot/customization/hooks)：VS Code 官方 hooks 和 Preview 邊界。
- [Agent plugins in VS Code](https://code.visualstudio.com/docs/copilot/customization/agent-plugins)：VS Code 官方 agent plugins 說明。
- [Comparing GitHub Copilot CLI customization features](https://docs.github.com/en/enterprise-cloud@latest/copilot/concepts/agents/copilot-cli/comparing-cli-features)：GitHub 官方 CLI 定製能力對比。

## 接下來去哪

<Cards>
  <Card title="上一篇" description="先確認 Copilot CLI 的終端許可權和自動化邊界。" href="/zh-Hant/docs/github-copilot/understanding/08-copilot-cli-workflow" />
  <Card title="下一篇" description="繼續學習 Copilot 如何透過 MCP 接入外部工具和資料。" href="/zh-Hant/docs/github-copilot/understanding/10-mcp-with-copilot" />
  <Card title="Skills 與 Hooks" description="回到官方重組頁深讀 skills、hooks 和 plugins。" href="/zh-Hant/docs/github-copilot/official/06-context-customization/skills-hooks-plugins" />
</Cards>
