Skip to content

Copilot CLI Plugin 是你打包自定义代理、Skills 和 MCP 配置的标准方式:写一个 plugin.json 清单,把各组件组织进目录,一条命令安装,同事和团队成员也能一键复用你的工作流配置。

GitHub Copilot CLI 插件开发:创建和打包自定义 Plugin

插件的价值

手动配置 Copilot CLI 的代理和技能后,分享给团队的成本很高——每人都要手动复制文件。Plugin 解决这个问题:把所有配置打包成一个可安装的单元,copilot plugin install 一行搞定。

插件目录结构

my-plugin/
├── plugin.json          # 必须,清单文件
├── agents/              # 可选,自定义代理
│   └── react-expert.agent.md
├── skills/              # 可选,自定义技能
│   └── deploy/
│       └── SKILL.md
├── hooks.json           # 可选,Hooks 配置
└── .mcp.json            # 可选,MCP 服务器配置

plugin.json 清单文件

json
{
  "name": "my-dev-tools",
  "description": "React development utilities for our team",
  "version": "1.0.0",
  "agents": "agents/",
  "skills": ["skills/"],
  "hooks": "hooks.json",
  "mcpServers": ".mcp.json"
}

字段说明:

字段必须说明
name插件唯一标识,卸载时用这个名字
description插件描述
version版本号(推荐填写)
agents代理文件目录路径
skillsSkills 目录路径(数组,可多个)
hooksHooks 配置文件路径
mcpServersMCP 服务器配置文件路径

添加自定义代理

agents/ 目录中创建 NAME.agent.md

markdown
---
name: react-expert
description: React 专家代理,擅长组件设计和性能优化
tools: ["bash", "edit", "view"]
---

你是一位 React 专家,专注于:
- 函数式组件和 Hooks 最佳实践
- 性能优化(memo、useMemo、useCallback)
- 组件设计模式

处理任务时先分析现有代码结构,再提出改进方案。

添加自定义技能(Skill)

skills/deploy/SKILL.md 中:

markdown
---
name: deploy
description: 部署当前项目到测试环境
---

# 部署流程

1. 运行 `npm run build` 构建项目
2. 检查 build 目录是否生成成功
3. 运行 `./scripts/deploy-staging.sh` 推送到测试环境
4. 输出部署成功的 URL

本地安装和测试

bash
# 安装本地插件
copilot plugin install ./my-plugin

# 验证安装
copilot plugin list

# 在交互式会话中验证组件
/agent           # 查看是否有新代理
/skills list     # 查看是否有新技能
/mcp show        # 查看是否有新 MCP 服务器

更新开发中的插件:每次修改后重新安装(会覆盖旧版本):

bash
copilot plugin install ./my-plugin

卸载插件

bash
copilot plugin uninstall my-dev-tools

注意:用的是 plugin.json 中的 name 字段,不是目录路径。

发布到插件市场

  1. 把插件目录推送到 GitHub 仓库(plugin.json 必须在仓库根目录,或 .plugin/.github/plugin/.claude-plugin/ 下)
  2. 提交到 copilot-plugins 官方市场awesome-copilot 社区市场

用户安装时:

bash
copilot plugin install OWNER/REPO

常见问题

Q: 插件里的代理和直接在仓库 .github/agents/ 放的代理有什么区别?

A: .github/agents/ 只对当前仓库生效;Plugin 是可安装/卸载的单元,安装后对所有项目生效,更容易在团队间分发。

Q: 插件可以包含私有的 API Keys 吗?

A: 不建议。插件是可分发的,不要把敏感信息写进去。敏感配置应通过环境变量或用户级配置文件传递。

Q: 如何让非标准路径的 plugin.json 被识别?

A: 安装时指定路径:

bash
copilot plugin install OWNER/REPO:custom/path/to/plugin