---
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="/docs/github-copilot/understanding/08-copilot-cli-workflow" />
  <Card title="下一篇" description="继续学习 Copilot 如何通过 MCP 接入外部工具和数据。" href="/docs/github-copilot/understanding/10-mcp-with-copilot" />
  <Card title="Skills 与 Hooks" description="回到官方重组页深读 skills、hooks 和 plugins。" href="/docs/github-copilot/official/06-context-customization/skills-hooks-plugins" />
</Cards>
