프롬프트 파일 및 지침 파일 설명 | Wendy Breiding | .NET Blog


GitHub Copilot을 위한 Prompt Files와 Instructions Files 완전 가이드

개요

GitHub Copilot은 개발자가 코드를 작성하는 방식을 혁신적으로 변화시키는 지능형 코딩 에이전트입니다. ASP.NET 웹 애플리케이션 구축, C# 작업, 팀과의 코드 리뷰 등 다양한 작업에서 반복적인 작업을 자동화하고, 전체 함수를 제안하며, 코드 리뷰를 간소화할 수 있습니다.

Instruction Files (지시 파일)

Instruction Files란 무엇인가?

Instruction Files는 저장소나 워크스페이스에서 코드를 생성할 때 Copilot이 따라야 하는 규칙, 코딩 표준, 가이드라인을 정의하는 파일입니다.

파일 종류

  • 일반 커스텀 지시사항 파일: 모든 요청에 사용되는 copilot-instructions.md

  • 특정 시나리오 지시사항 파일: 특정 요청에만 적용되는 title.instructions.md 형식

Instruction Files 사용 시기

  • 팀 프로젝트: Copilot이 조직의 표준과 명명 규칙에 맞는 코드를 제안하도록 보장

  • 오픈소스 저장소: 기여자들이 프로젝트별 규칙을 자동으로 준수할 수 있도록 지원

Instruction Files 사용 방법

설정 단계

  1. 샘플을 기반으로 하거나 처음부터 또는 Copilot을 사용하여 지시사항 파일 작성

  2. copilot-instructions.md 파일을 워크스페이스의 .github 폴더에 배치

  3. .cs 파일이나 .razor 파일에만 적용되는 특정 파일 유형 지시사항은 .github/instructions 폴더에 배치

  4. Copilot이 채팅을 통해 전송되는 각 요청에 적절한 지시사항 파일을 자동으로 포함

Instruction Files에 포함할 내용

1. 목적 및 범위

  • 지시사항 파일이 제어하는 내용을 한 문장으로 설명 (예: “Blazor UI를 위한 안전한 저장소 편집 및 규칙에 대한 자동화된 어시스턴트 가이드”)

2. 위치 및 범위 규칙

  • 파일이 적용되는 위치 (경로, 언어, 파일 글롭)

  • 적용되지 않는 경우

3. 프로젝트 개요

  • 프로젝트의 간단한 의도 (대상, 주요 기능, 런타임/플랫폼)

4. 도구 및 버전

  • 정확한 명령어 및 버전 (예: .NET 8.0, dotnet 명령어 예제, Node, Python, SDK)

5. 빌드/실행/테스트 명령어

  • 개발 및 CI를 위한 최소한의 복사 가능한 명령어 (Windows의 PowerShell 친화적 예제)

6. 코딩 규칙 및 린팅

  • 포맷터 (예: dotnet format, prettier)

  • 스타일 규칙, 명명 패턴

  • 스타일의 단일 소스 오브 트루스

7. API 및 데이터 계약

  • JSON 형태, DTO 예제, DB 스키마 또는 중요한 필드 (비밀 정보 제외)

8. 테스트 및 E2E 기대사항

  • 변경사항이 승인되기 전에 통과해야 하는 테스트

9. CI/CD 및 릴리스 규칙

  • 브랜칭 모델, 필수 체크, 버전 관리 정책, 배포 제약사항

10. 보안 및 비밀 정보 정책

  • 체크인하면 안 되는 내용

  • 환경 변수 명명

  • 비밀 정보 저장 가이드

11. 허용된 편집 및 위험 허용도

  • 어시스턴트가 자율적으로 변경할 수 있는 내용 (오타 수정, 포맷팅, 테스트)

  • 리뷰어/PR이 필요한 내용 (스키마 변경, DB 마이그레이션, 인프라)

12. 출력 형식 및 차이점

  • 코드 변경사항 표시 방법 (패치 형식, 단일 파일 편집 vs 다중 파일)

  • 커밋 메시지 스타일, PR 설명 템플릿

13. 동작 및 어조

  • 선호하는 어시스턴트 페르소나 (간결함, 보수적, 테스트 우선)

  • 상세함 및 인간에게 물어볼 내용

14. 실패 및 롤백

  • 빌드 또는 테스트 실패 처리 방법

  • 되돌리기 지침

  • 알림을 받을 사람

15. 예제 및 코드 조각

  • 승인된 작은 PR의 좋은 예제

  • 허용되지 않는 변경사항

16. 유지 관리 노트

  • 이 문서를 업데이트할 사람

  • 업데이트 빈도

참고 자료

더 많은 지시사항 파일 샘플은 awesome-copilot/instructions에서 확인할 수 있습니다.

Prompt Files (프롬프트 파일)

Prompt Files란 무엇인가?

Prompt Files는 특정 코딩 세션이나 특정 파일에 대한 컨텍스트를 Copilot에게 제공하는 파일입니다. 컨텍스트로 추가하거나 전용 프롬프트 파일로 사용하여 특정 작업에 대한 AI의 출력을 유도할 수 있습니다.

Prompt Files 사용 시기

  • 특정 요구사항: 커스텀 알고리즘, 통합, 규정 준수 요구사항 등에 따라 코드를 생성해야 할 때

  • 프로토타이핑: 문서 작성이나 명시적인 가이드가 필요한 새로운 팀 멤버 온보딩 시

Prompt Files 사용 방법

설정 단계

  1. 샘플을 기반으로 하거나 처음부터 또는 Copilot의 도움으로 프롬프트 작성

  2. 워크스페이스의 .github/prompts 폴더에 [promptname].prompt.md 형식으로 배치 (예: CreateAnalyzer.prompt.md)

사용 방법

  • VS Code: 채팅에서 /[promptName] 입력

  • Visual Studio: 채팅에서 #[promptName] 입력

사용 예제

약한 해싱 기법을 확인하는 분석기를 만들 때:


/CreateAnalyzer detect usage of MD5.Create(), SHA1.Create(), RijndaelManaged with insecure modes, new HMACSHA1(), or TripleDES and suggest using SHA256 or RandomNumberGenerator and point to library wrappers

Prompt Files에 포함할 내용

1. 헤더/메타데이터

  • 이름, 버전, 마지막 업데이트, 작성자/유지 관리자 연락처

  • 범위 글롭 (프롬프트가 제어하는 경로/언어/구성 요소)

2. 목적/한 줄 요약

  • 의도에 대한 간단한 설명 (이 프롬프트로 어시스턴트가 할 수 있는 것)

3. 페르소나 및 어조

  • 어시스턴트가 어떻게 말해야 하는지 (간결함, 보수적, 명확한 질문)

4. 허용된 자율 작업

  • 정확한 목록 (오타 수정, 문서 업데이트, 테스트가 포함된 단일 파일 리팩터링, 포맷팅)

  • 제한 사항 포함 (예: 최대 변경 파일 수, 인프라 변경 금지)

5. 금지된 작업/인간 검토 필요

  • DB 스키마/마이그레이션, 비밀 정보, 프로덕션 설정, 대규모 리팩터링, 주요 종속성 업그레이드

6. 빌드/실행/테스트 명령어

  • 정확한 명령어 및 환경 노트 (Windows 워크스페이스용 PowerShell 예제)

  • 변경사항을 제안하기 전에 어시스턴트가 로컬에서 실행해야 하는 최소 스모크 체크 명령어

7. 린트/포맷 명령어

  • 도구 및 호출 (예: dotnet format, prettier --check)

8. CI 규칙 및 PR 승인 기준

  • 필수 통과 체크, 필요한 레이블, 실행할 테스트, PR 제목/본문 템플릿

9. 파일 및 경로 예외

  • 변경하면 안 되는 바이너리, 생성된 파일, 벤더 파일 목록

10. 출력 형식 및 패치 규칙

  • 패치/PR 형식, 커밋 메시지 스타일, 포함할 테스트 증거

11. 오류 처리 및 롤백

  • 테스트 실패 시 해야 할 일, 되돌리는 방법, 알림을 받을 사람

12. 예제

  • 어시스턴트가 만들 수 있는 “좋은” 편집과 “나쁜” 편집의 2-3개 짧은 예제

13. 최소 기계 판독 가능 코드 조각 (선택사항)

  • 자동화가 구문 분석할 수 있도록 적용 대상 글롭, SDK 버전이 포함된 YAML 또는 front-matter

14. 유지 관리 노트

  • 이 파일을 업데이트하는 사람과 버전을 업데이트할 시기

참고 자료

더 많은 프롬프트 파일 샘플은 awesome-copilot/prompts에서 확인할 수 있습니다.

Instruction Files vs Prompt Files 선택 기준

Instruction Files 사용이 적합한 경우

  • 저장소 전체 가이드: 여러 기여자와 프로젝트에 걸친 장기적인 표준이 필요한 경우

Prompt Files 사용이 적합한 경우

  • 로컬, 세션 기반 가이드: 단일 파일이나 세그먼트의 특정 기능에 대한 가이드가 필요한 경우

두 가지 모두 사용

최대 효과를 위해 전체 프로젝트에는 instruction files를 사용하고, 추가적인 명확성이나 특정성이 필요한 영역에는 prompt files로 보완하는 것이 좋습니다.

실용적인 팁과 주의사항

효과적인 프롬프트 작성 및 협업을 위한 모범 사례

  1. 구체성이 핵심: 프롬프트와 지시사항은 구체적으로 작성 - 명확성이 더 나은 제안을 만들어냅니다

  2. 코드 검토 필수: AI가 생성한 모든 코드의 정확성, 보안성, 규정 준수를 검토해야 합니다

  3. 파일 역할 구분: 일관성을 위해서는 instruction files를, 타겟팅된 가이드를 위해서는 prompt files를 사용하세요

  4. 협업적 개선: 코드 리뷰에서 Copilot의 출력을 공유하여 협업적으로 개선하세요

관련 문서 및 리소스

결론

GitHub Copilot은 명확한 지시사항과 프롬프트로 가이드될 때 .NET 프로젝트를 슈퍼차지할 수 있습니다. Copilot이 더 많은 것을 달성하는 데 도움이 되는 다양한 방법을 탐색함으로써 생산성과 코드 품질을 모두 극대화할 수 있습니다. 개발자 커뮤니티와 함께 Copilot 경험을 탐색하고, 개선하고, 공유하세요!

1개의 좋아요