技术无关的蓝图生成器,用于创建全面的 copilot-instructions.md 文件,通过分析现有代码库模式并避免假设,指导 GitHub Copilot 生成符合项目标准、架构模式和确切技术版本的代码。
Copilot 指令蓝图生成器
配置变量
${PROJECT_TYPE="自动检测|.NET|Java|JavaScript|TypeScript|React|Angular|Python|多技术栈|其他"} <!-- 主要技术 -->
${ARCHITECTURE_STYLE="分层架构|微服务|单体架构|领域驱动|事件驱动|无服务器|混合架构"} <!-- 架构方法 -->
${CODE_QUALITY_FOCUS="可维护性|性能|安全性|可访问性|可测试性|全部"} <!-- 质量优先级 -->
${DOCUMENTATION_LEVEL="最小化|标准|全面"} <!-- 文档要求 -->
${TESTING_REQUIREMENTS="单元测试|集成测试|端到端测试|TDD|BDD|全部"} <!-- 测试方法 -->
${VERSIONING="语义化版本|日历版本|自定义"} <!-- 版本管理方法 -->
生成的提示
"生成一个全面的 copilot-instructions.md 文件,指导 GitHub Copilot 生成符合我们项目标准、架构和技术版本的代码。指令必须严格基于代码库中的实际代码模式,避免任何假设。遵循以下方法:
1. 核心指令结构
# GitHub Copilot 指令
## 优先级指南
为此仓库生成代码时:
1. **版本兼容性**:始终检测并尊重本项目使用的语言、框架和库的确切版本
2. **上下文文件**:优先使用 .github/copilot 目录中定义的模式和标准
3. **代码库模式**:当上下文文件未提供具体指导时,扫描代码库以查找已建立的模式
4. **架构一致性**:维护我们的 ${ARCHITECTURE_STYLE} 架构风格和已建立的边界
5. **代码质量**:在所有生成的代码中优先考虑 ${CODE_QUALITY_FOCUS == "全部" ? "可维护性、性能、安全性、可访问性和可测试性" : CODE_QUALITY_FOCUS}
## 技术版本检测
在生成代码之前,扫描代码库以识别:
1. **语言版本**:检测正在使用的编程语言的确切版本
- 检查项目文件、配置文件和包管理器
- 查找特定于语言的版本指示器(例如 .NET 项目中的 <LangVersion>)
- 绝不使用超出检测版本的语言特性
2. **框架版本**:识别所有框架的确切版本
- 检查 package.json、.csproj、pom.xml、requirements.txt 等
- 生成代码时尊重版本约束
- 绝不建议检测到的框架版本中不可用的特性
3. **库版本**:注意关键库和依赖项的确切版本
- 生成与这些特定版本兼容的代码
- 绝不使用检测到的版本中不可用的 API 或特性
## 上下文文件
优先使用 .github/copilot 目录中的以下文件(如果存在):
- **architecture.md**:系统架构指南
- **tech-stack.md**:技术版本和框架细节
- **coding-standards.md**:代码风格和格式化标准
- **folder-structure.md**:项目组织指南
- **exemplars.md**:要遵循的示例代码模式
## 代码库扫描指令
当上下文文件未提供具体指导时:
1. 识别与正在修改或创建的文件相似的文件
2. 分析以下方面的模式:
- 命名约定
- 代码组织
- 错误处理
- 日志记录方法
- 文档风格
- 测试模式
3. 遵循代码库中发现的最一致的模式
4. 当存在冲突模式时,优先使用较新文件或测试覆盖率较高的文件中的模式
5. 绝不引入现有代码库中未发现的模式
## 代码质量标准
${CODE_QUALITY_FOCUS.includes("可维护性") || CODE_QUALITY_FOCUS == "全部" ? `### 可维护性
- 编写自文档化代码,命名清晰
- 遵循代码库中明显的命名和组织约定
- 遵循已建立的模式以保持一致性
- 保持函数专注于单一职责
- 限制函数复杂度和长度以匹配现有模式` : ""}
${CODE_QUALITY_FOCUS.includes("性能") || CODE_QUALITY_FOCUS == "全部" ? `### 性能
- 遵循现有的内存和资源管理模式
- 匹配处理计算密集型操作的现有模式
- 遵循已建立的异步操作模式
- 与现有模式一致地应用缓存
- 根据代码库中明显的模式进行优化` : ""}
${CODE_QUALITY_FOCUS.includes("安全性") || CODE_QUALITY_FOCUS == "全部" ? `### 安全性
- 遵循现有的输入验证模式
- 应用代码库中使用的相同清理技术
- 使用与现有模式匹配的参数化查询
- 遵循已建立的身份验证和授权模式
- 根据现有模式处理敏感数据` : ""}
${CODE_QUALITY_FOCUS.includes("可访问性") || CODE_QUALITY_FOCUS == "全部" ? `### 可访问性
- 遵循代码库中现有的可访问性模式
- 使 ARIA 属性用法与现有组件匹配
- 保持与现有代码一致的键盘导航支持
- 遵循已建立的颜色和对比度模式
- 应用与代码库一致的文本替代模式` : ""}
${CODE_QUALITY_FOCUS.includes("可测试性") || CODE_QUALITY_FOCUS == "全部" ? `### 可测试性
- 遵循已建立的可测试代码模式
- 匹配代码库中使用的依赖注入方法
- 应用相同的模式来管理依赖项
- 遵循已建立的模拟和测试替身模式
- 匹配现有测试中使用的测试风格` : ""}
## 文档要求
${DOCUMENTATION_LEVEL == "最小化" ?
`- 匹配现有代码中注释的级别和风格
- 根据代码库中观察到的模式进行文档记录
- 遵循记录非显而易见行为的现有模式
- 使用与现有代码相同的参数描述格式` : ""}
${DOCUMENTATION_LEVEL == "标准" ?
`- 遵循代码库中确切的文档格式
- 匹配现有注释的 XML/JSDoc 风格和完整性
- 以相同风格记录参数、返回值和异常
- 遵循使用示例的现有模式
- 匹配类级别文档的风格和内容` : ""}
${DOCUMENTATION_LEVEL == "全面" ?
`- 遵循代码库中最详细的文档模式
- 匹配文档最完善的代码的风格和完整性
- 完全按照文档最全面的文件进行记录
- 遵循链接文档的现有模式
- 匹配设计决策解释的详细程度` : ""}
## 测试方法
${TESTING_REQUIREMENTS.includes("单元测试") || TESTING_REQUIREMENTS == "全部" ?
`### 单元测试
- 匹配现有单元测试的确切结构和风格
- 遵循测试类和方法的相同命名约定
- 使用现有测试中发现的相同断言模式
- 应用代码库中使用的相同模拟方法
- 遵循测试隔离的现有模式` : ""}
${TESTING_REQUIREMENTS.includes("集成测试") || TESTING_REQUIREMENTS == "全部" ?
`### 集成测试
- 遵循代码库中相同的集成测试模式
- 匹配测试数据设置和清理的现有模式
- 使用相同的方法测试组件交互
- 遵循验证系统行为的现有模式` : ""}
${TESTING_REQUIREMENTS.includes("端到端测试") || TESTING_REQUIREMENTS == "全部" ?
`### 端到端测试
- 匹配现有的端到端测试结构和模式
- 遵循已建立的 UI 测试模式
- 应用相同的方法验证用户旅程` : ""}
${TESTING_REQUIREMENTS.includes("TDD") || TESTING_REQUIREMENTS == "全部" ?
`### 测试驱动开发
- 遵循代码库中明显的 TDD 模式
- 匹配现有代码中测试用例的演进过程
- 测试通过后应用相同的重构模式` : ""}
${TESTING_REQUIREMENTS.includes("BDD") || TESTING_REQUIREMENTS == "全部" ?
`### 行为驱动开发
- 匹配测试中现有的 Given-When-Then 结构
- 遵循行为描述的相同模式
- 在测试用例中应用相同级别的业务关注点` : ""}
## 特定技术指南
${PROJECT_TYPE == ".NET" || PROJECT_TYPE == "自动检测" || PROJECT_TYPE == "多技术栈" ? `### .NET 指南
- 检测并严格遵守正在使用的特定 .NET 版本
- 仅使用与检测到的版本兼容的 C# 语言特性
- 完全按照代码库中的 LINQ 使用模式
- 匹配现有代码中的 async/await 使用模式
- 应用代码库中使用的相同依赖注入方法
- 使用现有代码中发现的相同集合类型和模式` : ""}
${PROJECT_TYPE == "Java" || PROJECT_TYPE == "自动检测" || PROJECT_TYPE == "多技术栈" ? `### Java 指南
- 检测并遵守正在使用的特定 Java 版本
- 遵循代码库中完全相同的设计模式
- 匹配现有代码中的异常处理模式
- 使用代码库中发现的相同集合类型和方法
- 应用现有代码中明显的依赖注入模式` : ""}
${PROJECT_TYPE == "JavaScript" || PROJECT_TYPE == "TypeScript" || PROJECT_TYPE == "自动检测" || PROJECT_TYPE == "多技术栈" ? `### JavaScript/TypeScript 指南
- 检测并遵守正在使用的特定 ECMAScript/TypeScript 版本
- 遵循代码库中相同的模块导入/导出模式
- 使 TypeScript 类型定义与现有模式匹配
- 使用与现有代码相同的异步模式(promises、async/await)
- 遵循类似文件中的错误处理模式` : ""}
${PROJECT_TYPE == "React" || PROJECT_TYPE == "自动检测" || PROJECT_TYPE == "多技术栈" ? `### React 指南
- 检测并遵守正在使用的特定 React 版本
- 匹配现有组件的组件结构模式
- 遵循代码库中相同的 hooks 和生命周期模式
- 应用现有组件中使用的相同状态管理方法
- 匹配现有代码中的 prop 类型和验证模式` : ""}
${PROJECT_TYPE == "Angular" || PROJECT_TYPE == "自动检测" || PROJECT_TYPE == "多技术栈" ? `### Angular 指南
- 检测并遵守正在使用的特定 Angular 版本
- 遵循代码库中相同的组件和模块模式
- 完全按照现有代码中的装饰器用法
- 应用代码库中发现的相同 RxJS 模式
- 遵循组件通信的现有模式` : ""}
${PROJECT_TYPE == "Python" || PROJECT_TYPE == "自动检测" || PROJECT_TYPE == "多技术栈" ? `### Python 指南
- 检测并遵守正在使用的特定 Python 版本
- 遵循现有模块中相同的导入组织方式
- 如果代码库中使用类型提示,则匹配类型提示方法
- 应用现有代码中发现的相同错误处理模式
- 遵循相同的模块组织模式` : ""}
## 版本控制指南
${VERSIONING == "语义化版本" ?
`- 遵循代码库中应用的语义化版本模式
- 匹配记录破坏性变更的现有模式
- 遵循弃用通知的相同方法` : ""}
${VERSIONING == "日历版本" ?
`- 遵循代码库中应用的日历版本模式
- 匹配记录变更的现有模式
- 遵循突出重要变更的相同方法` : ""}
${VERSIONING == "自定义" ?
`- 匹配代码库中观察到的确切版本模式
- 遵循现有文档中使用的相同变更日志格式
- 应用项目中使用的相同标签约定` : ""}
## 通用最佳实践
- 完全按照现有代码中的命名约定
- 匹配类似文件的代码组织模式
- 应用与现有模式一致的错误处理
- 遵循代码库中相同的测试方法
- 匹配现有代码中的日志记录模式
- 使用代码库中相同的配置方法
## 项目特定指导
- 在生成任何代码之前彻底扫描代码库
- 毫无例外地尊重现有的架构边界
- 匹配周围代码的风格和模式
- 如有疑问,优先考虑与现有代码的一致性,而非外部最佳实践
2. 代码库分析指令
要创建 copilot-instructions.md 文件,首先分析代码库以:
-
识别确切的技术版本:
- ${PROJECT_TYPE == "自动检测" ? "通过扫描文件扩展名和配置文件检测所有编程语言、框架和库" :
Focus on ${PROJECT_TYPE} technologies} - 从项目文件、package.json、.csproj 等中提取精确的版本信息
- 记录版本约束和兼容性要求
- ${PROJECT_TYPE == "自动检测" ? "通过扫描文件扩展名和配置文件检测所有编程语言、框架和库" :
-
理解架构:
- 分析文件夹结构和模块组织
- 识别清晰的层边界和组件关系
- 记录组件之间的通信模式
-
记录代码模式:
- 编目不同代码元素的命名约定
- 注意文档风格和完整性
- 记录错误处理模式
- 映射测试方法和覆盖率
-
注意质量标准:
- 识别实际使用的性能优化技术
- 记录代码中实现的安全实践
- 注意存在的可访问性特性(如果适用)
- 记录代码库中明显的代码质量模式
3. 实现说明
最终的 copilot-instructions.md 应:
- 放置在 .github/copilot 目录中
- 仅引用代码库中存在的模式和标准
- 包含明确的版本兼容性要求
- 避免规定代码中未体现的任何实践
- 提供来自代码库的具体示例
- 全面但简洁,以便 Copilot 有效使用
重要提示:仅包含基于代码库中实际观察到的模式的指导。明确指示 Copilot 优先考虑与现有代码的一致性,而非外部最佳实践或更新的语言特性。
"
预期输出
一个全面的 copilot-instructions.md 文件,指导 GitHub Copilot 生成与您现有技术版本完全兼容并遵循您已建立的模式和架构的代码。






