05 GitHub Copilot Harness 이론
Part 2

에이전트 생성 — 빌드 개념편

Part 1의 원리를 실제 에이전트로 빌드할 때 알아야 할 6개 구성요소(지침·스킬·도구·참고자료·연결된 에이전트·메모리)를 개념 → 작성법 → 함정 순서로 정리합니다.

이 페이지를 읽는 법

Part 1에서 “메이커의 일이 흐름 그리기 → 하네스 설계로 바뀐다”고 했습니다. Part 2는 그 하네스를 실제로 어떻게 조립하는지입니다.

특히 빌드 품질을 좌우하는 지침(2장)과 스킬(3장)을 가장 깊게 다룹니다.

1

빌드의 6요소 — 유능한 신입에게 일 맡기기

6요소 한눈에 보기

요소한 줄 정의👔 신입 직원 비유
지침항상 켜져 있는 상위 규칙(헌법)근무 수칙 — 항상 지켜야 할 최상위 규칙
스킬필요할 때만 꺼내 쓰는 재사용 지침 묶음업무 매뉴얼 — 필요할 때 펼치는 문서
도구외부에서 실제로 행동하는 손발연장 — 실제로 무언가를 실행하는 수단
참고자료에이전트가 읽는 지식(엑셀·문서)자료실 — 근거로 삼는 참고 문서
연결된 에이전트전문 작업을 위임하는 협업 에이전트전문 동료 — 깊은 작업을 맡기는 협업자
메모리대화·작업의 맥락 유지업무 노트 — 맥락을 적어 두는 수첩
↑ 맨 위로
2

지침 (Instructions) — 에이전트의 헌법

지침은 왜 짧아야 할까?

  • 지침은 에이전트가 모든 대화에서 항상 참조하는 최상위 규칙입니다. 회사로 치면 헌법·취업규칙입니다.
  • 스킬(필요할 때만 로드)과 달리 지침은 늘 켜져 있으므로, 길어질수록 모든 응답이 무거워지고 핵심이 묽어집니다.
  • 그래서 지침에는 항상 지켜야 할 소수의 원칙만 담고, 상황별 디테일은 스킬로 내립니다.

좋은 지침 구조 (템플릿)

구조는 역할 → 작업별 규칙 → 가드레일 순서입니다. 짧은 섹션으로 끊어 한눈에 훑을 수 있게 만듭니다.

# [에이전트 이름] — 지침
[한 문단: 역할과 무엇을 도와주는지]

## [작업 A]를 할 때
- 규칙 (무엇을, 쉬운 말로)
- 세부는 스킬을 가리키기

## [작업 B]를 할 때 (되돌릴 수 없는 작업이면 "중요" 표시)
- 확인 게이트, 금지선

## 지킬 점 (가드레일)
- 항상/절대 규칙 3~5개

지침 작성 6원칙

원칙설명
① “무엇을”만, “어떻게”는 맡긴다목표·규칙만 쉬운 말로 적고, 코드·라이브러리·경로 같은 구현은 에이전트에 맡김
② 일반 사용자가 읽을 수 있게대부분의 메이커는 개발자가 아님. 폴더 경로·함수명·전문용어를 빼고 업무 언어로
③ 단일 출처 — 지침에 세부를 박지 마라세부를 지침·스킬 양쪽에 적으면 에이전트가 “지침에 이미 있네” 하고 스킬을 건너뜀
④ 되돌릴 수 없는 행동엔 확인 게이트메일 발송·외부 전송은 반드시 사용자 확인 후 실행으로 못 박기
⑤ 가드레일은 부정형으로 명확히“데이터에 없는 숫자를 만들지 않는다”, “승인 전 발송하지 않는다”처럼
⑥ 역할 → 작업별 규칙 → 가드레일짧은 섹션으로 끊어 스캔하기 쉽게

❌ / ✅ 이렇게 바꿔 보세요

원칙❌ 이렇게 쓰지 말고✅ 이렇게 쓰세요
① 무엇을 vs 어떻게“pandas로 /app/uploads의 xlsx를 read_excel 후 groupby로 집계하고 print”“엑셀 숫자는 눈대중 말고 실제로 계산해서 정확한 값을 알려 주세요”
③ 단일 출처지침: “배경은 아이보리(#FBF6EC), 포인트는 마젠타” → 에이전트가 색만 알고 템플릿·안전 규칙 스킬을 안 봄지침: “메일·보고서는 회사 디자인 규칙(스킬)을 따르세요” → 색을 알려면 반드시 스킬을 열어야 함

지침에 넣을 것 vs 스킬로 내릴 것

구분지침 (항상 로드)스킬 (필요할 때 로드)
성격모든 대화에 적용되는 원칙특정 작업의 방법·형식
길이짧게 (한눈에)길어도 됨 (그때만 로드)
예역할, 톤, 가드레일, 확인 게이트분석 방법, 보고서 형식, 디자인 규칙, 특수 절차
변경 빈도드묾잦음 (형식·규칙이 진화)

실제 사례 — 단일 출처를 어겨 디자인이 깨진 메일

단계내용
① 증상메일 헤더의 흰색 글씨가 안 보임
② 표면 원인헤더 배경을 그라데이션만으로 칠해, 그라데이션을 지원하지 않는 메일 앱(Outlook 등)에서 배경이 사라지고 흰 글씨만 남음
③ 근본 원인색 값이 지침에 박혀 있어서 에이전트가 스킬의 안전 규칙(“흰 글씨엔 단색 배경을 깐다”)을 펼쳐 보지 않음
④ 교훈디자인은 스킬에만 두고 지침은 “스킬을 따르라”고만 했다면, 에이전트가 스킬을 열어 안전 규칙까지 함께 적용했을 것
↑ 맨 위로
3

스킬 (Skills) — 필요할 때 펼치는 업무 매뉴얼

SKILL.md 구조 — 필수 규격

스킬 파일 맨 위에는 YAML 머리말로 name과 description이 있어야 합니다.

---
name: excel-analysis
description: 판매 엑셀 데이터를 분석할 때 사용. 눈대중 대신
  정확히 계산하고, 결과를 표로 정리하는 규칙.
  "분석·집계·평균·순위·추세" 요청 시.
---
# 판매 데이터 분석 규칙
## 언제 쓰나      [트리거가 되는 상황]
## 규칙          [핵심 원칙 — 무엇을, 쉬운 말로]
## 예시          [자주 쓰는 사용례]
부분역할작성 팁
name스킬 식별자짧은 영문 슬러그
description언제 로드할지 결정하는 트리거“~할 때 사용 + 핵심 키워드”
본문실제 지침언제 쓰나 → 규칙 → 예시

description이 가장 중요합니다

오케스트레이터는 description 한 줄만 보고 “지금 이 스킬을 꺼낼까?”를 판단합니다. 사용 상황과 트리거 키워드를 또렷하게 넣어야 제때 불려옵니다.

description 예시결과
❌ 모호“데이터 도우미”언제 쓸지 몰라 안 불려 옴
✅ 또렷“판매 엑셀을 분석할 때 사용. ‘분석·집계·평균·순위·추세’ 요청 시.”해당 요청에서 정확히 로드됨

효과적으로 쓰는 3원칙

원칙설명
① 단순하게 시작하라처음부터 거대한 스킬을 만들지 말고 SKILL.md 한 장으로 시작해, 필요할 때 리소스를 붙임
② “모델이 혼자 못 하는 것”을 적어라스킬의 본질은 에이전트가 스스로는 못 푸는 지식을 적어 두는 것
③ 단일 출처를 지켜라디자인 색·절차 같은 세부는 그 스킬 한 곳에만 두고, 지침·다른 스킬과 중복하지 않음

단계별로 키우기

단계구성언제
1단계SKILL.md 한 장규칙·형식만 적으면 충분할 때
2단계SKILL.md + 보조 설명 문서용어·맥락 설명이 필요할 때
3단계SKILL.md + 템플릿·리소스산출물 품질을 고정해야 할 때

가장 쉬운 시작 — 단일 파일 스킬

가장 쉬운 스킬은 리소스 없는 SKILL.md 한 장입니다. UI에 그대로 붙여 넣어 바로 등록할 수 있어 zip도, 업로드 절차도 필요 없습니다. 처음 익힐 때는 이 형태로 시작하세요 — 피드백이 가장 빠릅니다.

---
name: result-brief
description: 분석 결과를 매번 똑같은 짧은 형식으로
  요약할 때. "요약·브리핑·정리" 요청 시.
---
# 결과 브리핑
## 무엇을 하나 — 항상 이 고정 형식으로 정리
한 줄 요약 / 핵심 숫자 / 눈에 띄는 점 / 다음 액션
## 규칙
숫자는 분석 결과만, 5줄 안팎으로 짧게, 증감은 +/-로
구분단일 파일패키징(ZIP)
등록 방법UI에 바로 붙여 넣기ZIP 업로드
구성SKILL.md 하나SKILL.md + 리소스(.py·.html·.md)
적합한 경우규칙·형식만으로 충분코드·템플릿·디자인까지 고정
예출력 형식 요약 규칙처리 코드 + 메일 HTML 양식 + 디자인 지침

패키징 함정 — zip 구조와 이름 규칙

핵심: 폴더가 아니라 폴더 ‘안의 내용물’을 압축합니다. 그리고 스킬 이름은 소문자·숫자·하이픈(-)만 쓸 수 있고, 하이픈으로 시작하거나 끝날 수 없습니다.

체크 항목❌ 잘못된 예✅ 올바른 예
zip 구조my-skill/SKILL.md (폴더째 압축) → “missing a root-level SKILL.md” 오류SKILL.md가 zip 맨 위(루트)에 바로 있음
언더스코어brand_commsbrand-comms
대문자Brand-Commsbrand-comms
하이픈 위치-brand / brand-brand

올바르게 압축하는 방법

탐색기: 스킬 폴더 안으로 들어가 파일 전체를 선택 → 우클릭 → 압축.

PowerShell: 폴더 경로 끝에 \* 를 붙여 내용물만 압축합니다.

Compress-Archive -Path "스킬폴더\*" -DestinationPath out.zip
↑ 맨 위로
4

도구 & 참고자료 — 손발과 자료실

도구 선택 기준

도구 유형필요한가?메모
코드 실행(코드 인터프리터)데이터 계산·파일 생성이 있으면 ✅ 필수엑셀 집계·문서 생성의 엔진
지식 연결(SharePoint 등)참고할 파일·문서가 있으면 ✅자료가 들어오는 통로
메일/메시지(MCP·커넥터)외부로 보내야 하면 ✅발송엔 확인 게이트 필수
파일 저장소(OneDrive 등)산출물을 링크로 공유·첨부하면 ✅큰 파일 첨부를 우회할 때
문서 생성 커넥터보통 ❌docx·pptx·HTML은 코드로 직접 생성
같은 일을 하는 두 번째 도구❌ 금지기능 중복 → 선택 혼란

최소 큐레이션 3원칙

  • 목적당 최소 도구만 — 도구가 10개면 매 턴 “뭘 쓸지” 헷갈립니다.
  • 기능 중복 금지 — 메일 커넥터와 메일 MCP를 둘 다 붙이면 모호해집니다.
  • 코드로 되는 건 도구로 붙이지 않는다 — HTML·문서 생성은 기본 제공 라이브러리로 충분합니다.

두 종류의 참고자료 — 섞지 마세요

종류성격어떻게 쓰나
데이터 파일 (엑셀·CSV)숫자 — 집계해야 답이 나옴코드로 계산해 정확한 값
문서 (Word·PDF)형식·톤·정책 — 참고용말투·규칙을 인용(출처 명시)

RAG에서 코드 실행으로 — 왜 더 정확할까?

방식“제조사별 평균가는?”이라고 물으면결과
클래식 (RAG)관련 있어 보이는 텍스트 조각 몇 개를 찾아 답함근사치 ❌
New (CLI 코어)원본 엑셀 전체를 열어 모든 행을 집계정확한 값 ✅
↑ 맨 위로
5

연결된 에이전트 & 메모리

연결된 에이전트 — 언제 나눌까?

메인(오케스트레이터)
├── 분석 전문   ← 깊이 파고들어 "핵심 요약"만 반환
└── 작성 전문   ← 형식·템플릿을 다뤄 "완성 산출물"만 반환
나누면 좋은 신호예
한 작업이 컨텍스트를 크게 차지광범위한 데이터를 여러 각도로 분석
전문 규칙이 두꺼움디자인·정책 규칙이 방대함
병렬이 이득두 작업을 동시에 진행 가능

메모리 — 단기·장기 2계층

구분위치세션 종료 후
현재 대화 턴세션 컨테이너 (단기)❌ 사라짐
생성한 파일세션 컨테이너 (단기)❌ 사라짐
사용자 프로필·메모리M365 클라우드 (장기)✅ 유지

메이커가 실제로 할 일

  • 대부분은 신경 쓸 게 없습니다 — 세션 안의 맥락 유지는 코어가 자동으로 처리합니다.
  • 세션을 넘어 기억이 필요하면 그 데이터를 M365(프로필·SharePoint 등)에 두도록 설계합니다.
  • 산출물을 영구 보관하려면 OneDrive/SharePoint에 저장합니다.
↑ 맨 위로
6

종합 & 체크리스트

한 요청이 6요소를 관통하는 흐름

요청 예: “이 데이터를 분석해서 결과를 보고서로 만들고, 담당자에게 메일로 보내 줘.”

순서작동한 요소일어나는 일
1지침항상 켜진 규칙 로드 — 정확히 계산 / 확인 후 발송 / 형식은 스킬을 따름
2참고자료연결된 지식(데이터 파일·문서)을 가져옴
3스킬 + 도구분석 스킬 로드 → 코드 실행으로 전체 데이터 집계 (RAG 아님)
4스킬 + 도구작성 스킬 로드(형식·디자인) → 보고서 생성 → 저장소 업로드 → 링크 첨부
5지침(확인 게이트)“받는 사람 확인 + 발송 전 미리보기” → 사용자 승인
6도구승인 후 메일 발송
7메모리대화는 세션 메모리에, 산출물 영구 보관은 저장소에

권장 빌드 순서

순서할 일
1지침부터 — 역할·가드레일·확인 게이트를 쉬운 말로, 짧게
2참고자료 연결 — SharePoint에 엑셀·Word를 올리고 Knowledge로 연결
3핵심 스킬 1개 — 가장 중요한 것부터, 단일 파일로
4도구는 최소로 — 코드 실행 + 꼭 필요한 MCP만
5스킬 확장 — 품질이 필요한 곳에 템플릿 등 리소스 추가
6필요해지면 연결된 에이전트로 분리

✅ 빌드 체크리스트

  • 지침이 짧고 “무엇을”에 집중하는가? (구현 디테일 없음)
  • 세부(색·절차)를 지침이 아니라 스킬에 뒀는가? (단일 출처)
  • 되돌릴 수 없는 행동(발송)에 확인 게이트가 있는가?
  • 각 스킬에 name·description(YAML)이 있는가?
  • description에 트리거 키워드가 또렷한가?
  • zip 루트에 SKILL.md가 있는가? (폴더 안 내용물을 압축)
  • 스킬 name이 소문자·숫자·하이픈만 쓰는가?
  • 핵심 디자인·규칙이 SKILL.md 본문에 직접 있는가?
  • 도구가 최소인가? (겹치는 도구 없음, 코드로 되는 건 안 붙임)
  • 숫자는 엑셀, 말투·형식은 Word로 분리했는가?

⚠️ 흔한 함정과 해결

함정증상해결
zip 구조 오류“missing root-level SKILL.md”폴더가 아닌 내용물을 압축
스킬 이름 규칙 위반“Name must use only lowercase…”소문자·숫자·하이픈만 사용
같은 이름 재업로드삭제·재업로드해도 옛 스킬로 인식수정본은 새 이름(-v2)으로, 미리보기로 반영 확인
리소스에만 디테일“가이드 없다” → 제멋대로 디자인핵심 규칙을 SKILL.md 본문에 직접
지침에 색 박기스킬 우회 → 디자인 규칙 무시지침은 스킬을 가리키기만
그라데이션만 사용메일의 흰 글씨가 안 보임흰 글씨엔 단색 배경
큰 파일 직접 첨부토큰 폭발·실패OneDrive 업로드 → 링크 첨부
도구 중복도구 선택 혼란목적당 하나만
과설계무거운 지침·다중 에이전트단순하게 시작, 막힐 때 확장
↑ 맨 위로
참고 자료: Microsoft Copilot Agentic Blog · 2부 에이전트 생성