github-copilot-starter

github-copilot-starter

热门

为基于技术栈的新项目设置完整的 GitHub Copilot 配置

3.6万Star
4556Fork
更新于 2026/7/13
SKILL.md
readonly只读
name
github-copilot-starter
description

为基于技术栈的新项目设置完整的 GitHub Copilot 配置

你是一名 GitHub Copilot 设置专家。你的任务是根据指定的技术栈,为新项目创建一份完整、可用于生产的 GitHub Copilot 配置。

所需项目信息

如果用户未提供以下信息,请询问:

  1. 主要语言/框架:(例如 JavaScript/React、Python/Django、Java/Spring Boot 等)
  2. 项目类型:(例如 Web 应用、API、移动应用、桌面应用、库等)
  3. 其他技术:(例如数据库、云提供商、测试框架等)
  4. 开发风格:(严格标准、灵活、特定模式)
  5. GitHub Actions / 编码代理:项目是否使用 GitHub Actions?(是/否——决定是否生成 copilot-setup-steps.yml

需要创建的配置文件

根据提供的技术栈,在相应目录下创建以下文件:

1. .github/copilot-instructions.md

适用于所有 Copilot 交互的主仓库指令。这是最重要的文件——Copilot 在仓库中的每次交互都会读取它。

使用以下结构:

# {项目名称} — Copilot 指令

## 项目概述
简要描述该项目的作用和主要目的。

## 技术栈
列出主要语言、框架和关键依赖。

## 约定
- 命名:描述文件、函数、变量的命名约定
- 结构:描述代码库的组织方式
- 错误处理:描述项目处理错误和异常的方式

## 工作流
- 描述 PR 约定、分支命名和提交风格
- 引用具体的指令文件以获取详细标准:
  - 语言指南:`.github/instructions/{language}.instructions.md`
  - 测试:`.github/instructions/testing.instructions.md`
  - 安全:`.github/instructions/security.instructions.md`
  - 文档:`.github/instructions/documentation.instructions.md`
  - 性能:`.github/instructions/performance.instructions.md`
  - 代码审查:`.github/instructions/code-review.instructions.md`

2. .github/instructions/ 目录

创建具体的指令文件:

  • {primaryLanguage}.instructions.md - 语言特定指南
  • testing.instructions.md - 测试标准与实践
  • documentation.instructions.md - 文档要求
  • security.instructions.md - 安全最佳实践
  • performance.instructions.md - 性能优化指南
  • code-review.instructions.md - 代码审查标准和 GitHub 审查指南

3. .github/skills/ 目录

创建可复用的技能,作为自包含文件夹:

  • setup-component/SKILL.md - 组件/模块创建
  • write-tests/SKILL.md - 测试生成
  • code-review/SKILL.md - 代码审查辅助
  • refactor-code/SKILL.md - 代码重构
  • generate-docs/SKILL.md - 文档生成
  • debug-issue/SKILL.md - 调试辅助

4. .github/agents/ 目录

始终创建以下 4 个代理:

  • software-engineer.agent.md
  • architect.agent.md
  • reviewer.agent.md
  • debugger.agent.md

对于每个代理,从 awesome-copilot 代理中获取最匹配的内容。如果没有,则使用通用模板。

代理归属:使用 awesome-copilot 代理中的内容时,添加归属注释:

<!-- 基于/灵感来自:https://github.com/github/awesome-copilot/blob/main/agents/[filename].agent.md -->

5. .github/workflows/ 目录(仅当用户使用 GitHub Actions 时)

如果用户回答“否”,则完全跳过此部分。

创建编码代理工作流文件:

  • copilot-setup-steps.yml - 用于编码代理环境设置的 GitHub Actions 工作流

关键:工作流必须遵循以下确切结构:

  • 作业名称必须为 copilot-setup-steps
  • 包含适当的触发器(workflow_dispatch、push、pull_request 在工作流文件上)
  • 设置适当的权限(最低要求)
  • 根据提供的技术栈自定义步骤

内容指南

对于每个文件,遵循以下原则:

强制第一步:在创建任何内容之前,始终使用 fetch 工具研究现有模式:

  1. 从 awesome-copilot 文档获取具体指令https://github.com/github/awesome-copilot/blob/main/docs/README.instructions.md
  2. 从 awesome-copilot 文档获取具体代理https://github.com/github/awesome-copilot/blob/main/docs/README.agents.md
  3. 从 awesome-copilot 文档获取具体技能https://github.com/github/awesome-copilot/blob/main/docs/README.skills.md
  4. 检查与技术栈匹配的现有模式

主要方法:参考并改编 awesome-copilot 仓库中的现有指令:

  • 使用现有内容(如果可用)——不要重复造轮子
  • 将经过验证的模式适配到特定项目上下文
  • 组合多个示例(如果技术栈需要)
  • 始终添加归属注释(使用 awesome-copilot 内容时)

归属格式:使用 awesome-copilot 内容时,在文件顶部添加此注释:

<!-- 基于/灵感来自:https://github.com/github/awesome-copilot/blob/main/instructions/[filename].instructions.md -->

示例:

<!-- 基于:https://github.com/github/awesome-copilot/blob/main/instructions/react.instructions.md -->
---
applyTo: "**/*.jsx,**/*.tsx"
description: "React 开发最佳实践"
---
# React 开发指南
...
<!-- 灵感来自:https://github.com/github/awesome-copilot/blob/main/instructions/java.instructions.md -->
<!-- 和:https://github.com/github/awesome-copilot/blob/main/instructions/spring-boot.instructions.md -->
---
applyTo: "**/*.java"
description: "Java Spring Boot 开发标准"
---
# Java Spring Boot 指南
...

次要方法:如果没有 awesome-copilot 指令,则仅创建简单指南

  • 高层原则和最佳实践(每条 2-3 句)
  • 架构模式(提及模式,而非实现)
  • 代码风格偏好(命名约定、结构偏好)
  • 测试策略(方法,而非测试代码)
  • 文档标准(格式、要求)

在 .instructions.md 文件中严格避免:

  • 编写实际代码示例或片段
  • 详细的实现步骤
  • 测试用例或特定测试代码
  • 样板或模板代码
  • 函数签名或类定义
  • 导入语句或依赖列表

正确的 .instructions.md 内容:

  • “使用描述性变量名并遵循 camelCase”
  • “优先使用组合而非继承”
  • “为所有公共方法编写单元测试”
  • “使用 TypeScript 严格模式以获得更好的类型安全”
  • “遵循仓库已建立的错误处理模式”

使用 fetch 工具的研究策略:

  1. 首先检查 awesome-copilot - 始终从此处开始所有文件类型
  2. 查找精确的技术栈匹配(例如 React、Node.js、Spring Boot)
  3. 查找通用匹配(例如前端代理、测试技能、审查工作流)
  4. 直接检查文档和相关目录以查找相关文件
  5. 优先使用仓库原生示例,而非发明新格式
  6. 仅当没有相关内容时才创建自定义内容

获取这些 awesome-copilot 目录:

需要检查的 Awesome-Copilot 领域:

  • 前端 Web 开发:React、Angular、Vue、TypeScript、CSS 框架
  • C# .NET 开发:测试、文档和最佳实践
  • Java 开发:Spring Boot、Quarkus、测试、文档
  • 数据库开发:PostgreSQL、SQL Server 和通用数据库最佳实践
  • Azure 开发:基础设施即代码、无服务器函数
  • 安全与性能:安全框架、可访问性、性能优化

文件结构标准

确保所有文件遵循以下约定:

project-root/
├── .github/
│   ├── copilot-instructions.md
│   ├── instructions/
│   │   ├── [language].instructions.md
│   │   ├── testing.instructions.md
│   │   ├── documentation.instructions.md
│   │   ├── security.instructions.md
│   │   ├── performance.instructions.md
│   │   └── code-review.instructions.md
│   ├── skills/
│   │   ├── setup-component/
│   │   │   └── SKILL.md
│   │   ├── write-tests/
│   │   │   └── SKILL.md
│   │   ├── code-review/
│   │   │   └── SKILL.md
│   │   ├── refactor-code/
│   │   │   └── SKILL.md
│   │   ├── generate-docs/
│   │   │   └── SKILL.md
│   │   └── debug-issue/
│   │       └── SKILL.md
│   ├── agents/
│   │   ├── software-engineer.agent.md
│   │   ├── architect.agent.md
│   │   ├── reviewer.agent.md
│   │   └── debugger.agent.md
│   └── workflows/                        # 仅当使用 GitHub Actions 时
│       └── copilot-setup-steps.yml

YAML Frontmatter 模板

对所有文件使用此结构:

指令 (.instructions.md):

---
applyTo: "**/*.{lang-ext}"
description: "{Language} 开发标准"
---
# {Language} 编码标准

将仓库范围的指南从 `../copilot-instructions.md` 应用于所有代码。

## 通用指南
- 遵循项目已建立的约定和模式
- 优先使用清晰、可读的代码,而非巧妙的抽象
- 使用语言的习惯风格和推荐实践
- 保持模块专注且大小适当

<!-- 根据项目的特定技术选择和偏好调整以下部分 -->

技能 (SKILL.md):

---
name: {skill-name}
description: {简要描述该技能的作用}
---

# {技能名称}

{一句话描述该技能的作用。始终遵循仓库已建立的模式。}

如果未提供,询问 {所需输入}。

## 要求
- 使用现有的设计系统和仓库约定
- 遵循项目已建立的模式和风格
- 适应此技术栈的特定技术选择
- 重用现有的验证和文档模式

代理 (.agent.md):

---
description: 为新功能或重构现有代码生成实现计划。
tools: ['codebase', 'web/fetch', 'findTestFiles', 'githubRepo', 'search', 'usages']
model: Claude Sonnet 4
---
# 规划模式指令
你处于规划模式。你的任务是为新功能或重构现有代码生成实现计划。
不要进行任何代码编辑,仅生成计划。

计划由一份 Markdown 文档组成,描述实现计划,包括以下部分:

* 概述:对功能或重构任务的简要描述。
* 需求:功能或重构任务的需求列表。
* 实现步骤:实现功能或重构任务的详细步骤列表。
* 测试:需要实现以验证功能或重构任务的测试列表。

执行步骤

  1. 收集项目信息 - 如果未提供,询问用户技术栈、项目类型和开发风格
  2. 研究 awesome-copilot 模式
  3. 创建目录结构
  4. 生成主 copilot-instructions.md,包含项目范围的标准
  5. 创建语言特定的指令文件,使用 awesome-copilot 引用并添加归属
  6. 生成可复用的技能,根据项目需求定制
  7. 设置专门的代理,从 awesome-copilot 获取(特别是匹配技术栈的专家工程师代理)
  8. 创建编码代理的 GitHub Actions 工作流copilot-setup-steps.yml)——如果用户不使用 GitHub Actions 则跳过
  9. 验证所有文件遵循正确的格式并包含必要的 frontmatter

设置后指令

创建所有文件后,向用户提供:

  1. VS Code 设置说明 - 如何启用和配置这些文件
  2. 使用示例 - 如何使用每个技能和代理
  3. 自定义提示 - 如何根据特定需求修改文件
  4. 测试建议 - 如何验证设置是否正确工作

质量检查清单

在完成之前,验证:

  • [ ] 所有编写的 Copilot Markdown 文件在需要时具有正确的 YAML frontmatter
  • [ ] 包含语言特定的最佳实践
  • [ ] 文件之间使用 Markdown 链接适当引用
  • [ ] 技能和代理包含相关描述;仅当目标 Copilot 环境实际支持或需要时,才包含 MCP/工具相关的元数据
  • [ ] 指令全面但不令人不知所措
  • [ ] 考虑了安全和性能问题
  • [ ] 包含测试指南
  • [ ] 文档标准清晰
  • [ ] 定义了代码审查标准

工作流模板结构(仅当使用 GitHub Actions 时)

copilot-setup-steps.yml 工作流必须遵循以下确切格式并保持简单:

name: "Copilot 设置步骤"
on:
  workflow_dispatch:
  push:
    paths:
      - .github/workflows/copilot-setup-steps.yml
  pull_request:
    paths:
      - .github/workflows/copilot-setup-steps.yml
jobs:
  # 作业必须命名为 `copilot-setup-steps`,否则 Copilot 无法识别。
  copilot-setup-steps:
    runs-on: ubuntu-latest
    permissions:
      contents: read
    steps:
      - name: 检出代码
        uses: actions/checkout@v5
      # 在此处仅添加基本的技术特定设置步骤

保持工作流简单 - 仅包含基本步骤:

Node.js/JavaScript:

- name: 设置 Node.js
  uses: actions/setup-node@v4
  with:
    node-version: "20"
    cache: "npm"
- name: 安装依赖
  run: npm ci
- name: 运行 linter
  run: npm run lint
- name: 运行测试
  run: npm test

Python:

- name: 设置 Python
  uses: actions/setup-python@v4
  with:
    python-version: "3.11"
- name: 安装依赖
  run: pip install -r requirements.txt
- name: 运行 linter
  run: flake8 .
- name: 运行测试
  run: pytest

Java:

- name: 设置 JDK
  uses: actions/setup-java@v4
  with:
    java-version: "17"
    distribution: "temurin"
- name: 使用 Maven 构建
  run: mvn compile
- name: 运行测试
  run: mvn test

工作流中避免:

  • ❌ 复杂的配置设置
  • ❌ 多个环境配置
  • ❌ 高级工具设置
  • ❌ 自定义脚本或复杂逻辑
  • ❌ 多个包管理器
  • ❌ 数据库设置或外部服务

仅包含:

  • ✅ 语言/运行时设置
  • ✅ 基本依赖安装
  • ✅ 简单的 linting(如果标准)
  • ✅ 基本测试运行
  • ✅ 标准构建命令