AI

VS Code Copilot 커스텀 인스트럭션 — AI를 팀 스타일로 길들이는 법

.github/copilot-instructions.md 파일 하나로 Copilot이 프로젝트의 코딩 표준과 워크플로우를 자동으로 따르게 만드는 방법을 설명한다.

8 min read
CopilotAIVS Code프롬프트 엔지니어링개발 도구
VS Code Copilot 커스텀 인스트럭션 — AI를 팀 스타일로 길들이는 법

Copilot한테 같은 말을 반복하는 게 지겨워졌다면, 커스텀 인스트럭션이 해답이다. "우리 팀은 화살표 함수 쓰고, 싱글 쿼트 쓰고, async/await 써야 해"를 매번 프롬프트에 넣는 대신, 파일 하나에 한 번만 쓰면 된다.

커스텀 인스트럭션이 뭔가

Copilot에게 팀의 워크플로우와 스타일 선호도를 알려주는 상시 컨텍스트.

프로젝트 루트에 .github/copilot-instructions.md 파일을 만들면, Copilot이 이 파일을 자동으로 인식해서 모든 대화에 적용한다. 새 팀원이 합류해도, CI에서 코드 생성 도구를 쓸 때도, 이 파일 하나가 일관성을 보장한다.

비유하면 회사에 새로 입사한 직원한테 "우리 팀 코딩 컨벤션 문서"를 주는 것과 같다. 매번 구두로 설명하지 않아도 기준이 생긴다.

기본 설정

.github/copilot-instructions.md 파일을 만들고 마크다운으로 지시사항을 작성한다.

.github/copilot-instructions.md
# Copilot Instructions
 
## 코딩 표준
- 변수/함수명: camelCase
- 컴포넌트명: PascalCase
- 문자열: 싱글 쿼트
- 들여쓰기: 2스페이스
- 함수: 화살표 함수 사용
- 비동기: async/await (Promise.then 금지)
- 선언: const 우선, 필요 시 let (var 금지)
- 구조 분해 할당 적극 활용
- 템플릿 리터럴 사용 (문자열 연결 금지)
 
## 패턴
- 컴포넌트는 함수형으로만 작성
- Props 타입은 interface로 정의
- 상태 관리는 Zustand 사용
- API 호출은 React Query 사용

이게 전부다. 파일을 저장소에 커밋하면 팀 전체에 즉시 적용된다.

[💡 잠깐! 이 용어는?] .github/ 디렉토리: GitHub이 특별하게 인식하는 설정 파일을 저장하는 디렉토리. GitHub Actions, Pull Request 템플릿, Copilot 설정 등이 여기에 들어간다.

워크스페이스 설정으로 세밀하게 조정

.github/copilot-instructions.md가 전역 인스트럭션이라면, .vscode/settings.json으로는 특정 작업별 인스트럭션을 추가로 설정할 수 있다.

커밋 메시지 생성 커스터마이징

.vscode/settings.json
{
  "github.copilot.chat.commitMessageGeneration.instructions": [
    {
      "text": "커밋 타입은 feat/fix/refactor/docs/test/chore만 사용. 한 줄 설명은 한글로. 변경 이유를 명확히 포함."
    }
  ]
}

코드 생성 시 여러 스타일 문서 참조

.vscode/settings.json
{
  "github.copilot.chat.codeGeneration.instructions": [
    {
      "file": "./docs/typescript-conventions.md"
    },
    {
      "file": "./docs/api-patterns.md"
    },
    {
      "file": "./docs/database-query-style.md"
    }
  ]
}

파일이 여러 개여도 된다. 백엔드 스타일, 프론트엔드 스타일, DB 쿼리 패턴을 각각 문서로 분리해서 관리할 수 있다.

실제 효과

인스트럭션 없이 "tail recursion으로 피보나치 구현해줘"라고 하면, Copilot이 일반적인 형태로 코드를 작성한다. 인스트럭션에 팀 스타일을 지정해두면, 같은 요청에도 화살표 함수, 싱글 쿼트, TypeScript 타입 명시가 자동으로 적용된다.

상황인스트럭션 없을 때인스트럭션 있을 때
함수 작성function 키워드 혼용화살표 함수 통일
에러 처리try/catch 스타일 제각각팀 패턴 적용
커밋 메시지"update files" 수준구체적 변경 이유 포함
코드 리뷰 요청일반적인 체크팀 규칙 기반 검토

프롬프트 파일 — 재사용 가능한 명령어

.github/prompts/ 디렉토리에 *.prompt.md 파일을 만들면, 팀이 자주 쓰는 프롬프트를 재사용 가능한 형태로 저장할 수 있다.

.github/prompts/code-review.prompt.md
---
description: "코드 리뷰 수행"
---
 
아래 코드를 검토하고 피드백을 제공해줘:
 
- TypeScript 타입 안전성
- [conventions.md](../docs/conventions.md) 규칙 준수 여부
- 성능 문제 가능성
- 테스트 커버리지 부족 부분

파일 간 링크도 된다. 프롬프트 파일에서 다른 마크다운 문서를 참조하면, Copilot이 해당 문서도 같이 읽는다.

모델 톤 조절

사소하지만 실제로 영향이 있는 설정이다. Copilot이 너무 과하게 정중하면 인스트럭션으로 조절할 수 있다.

.github/copilot-instructions.md
## 응답 스타일
- 사과 표현 사용 금지 ("죄송합니다", "미안합니다")
- 동의 표현 최소화 ("맞습니다", "훌륭한 질문이에요")
- 틀렸다고 하면, 맞는지 판단하고 근거 있으면 반박
- 간결하게. 불필요한 도입부 없이 바로 본론

주의할 점이 있다. "~하지 마라"는 부정형보다 "~을 피해라"처럼 긍정형으로 쓰는 게 모델이 더 잘 따른다. "과장된 표현을 사용하지 마라"보다 "간결하고 직접적인 표현을 사용해라"가 효과적이다.

Sequelize 같은 ORM 패턴 자동 적용

데이터 접근 계층 코드를 자주 작성한다면, 샘플 파일을 인스트럭션으로 지정할 수 있다.

.vscode/settings.json
{
  "github.copilot.chat.codeGeneration.instructions": [
    {
      "file": "./src/models/User.example.ts"
    }
  ]
}

User.example.ts에 팀에서 사용하는 Sequelize 모델 패턴을 하나 써두면, Copilot이 새 모델을 만들 때 같은 패턴을 따른다. 주석도, Association도, 커스텀 메서드도 일관되게 나온다.

마무리

커스텀 인스트럭션은 작은 투자로 큰 일관성을 얻는 방법이다.

  • 팀 코딩 표준 문서가 있다면 → .github/copilot-instructions.md로 연결
  • 자주 쓰는 프롬프트가 있다면 → .github/prompts/로 저장
  • 특정 작업 유형에 다른 기준이 필요하면 → .vscode/settings.json으로 세분화

파일이 저장소에 커밋되면, 새 팀원도 클론 즉시 같은 AI 환경에서 작업하게 된다. "Copilot이 우리 팀 스타일을 몰라요"는 이제 변명이 되지 않는다.


참고: