
# <span>AI Skill 완벽 가이드</span>
> **<span>작성 기준:</span>**<span> 2026년 8월 29일</span>
> **<span>대상:</span>**<span> ChatGPT·Codex 같은 AI 에이전트를 반복 업무에 활용하려는 사용자와 개발자</span>
> **<span>핵심 주제:</span>**<span> AI Skill의 개념, 구조, 작동 원리, 프롬프트·메모리·MCP와의 차이, 작성 방법, 테스트와 운영</span>
***
## <span>1\. AI Skill이란?</span>
<span>\*\*AI Skill(에이전트 스킬)\*\*은 AI가 특정 업무를 일관된 방식으로 수행할 수 있도록 </span>**<span>지침, 참고자료, 스크립트, 템플릿과 도구 사용법을 하나의 재사용 가능한 패키지로 묶은 것</span>**<span>입니다.</span>
<span>쉽게 말하면 다음과 같습니다.</span>
> **<span>AI Skill = AI 직원이 반복해서 참고하는 업무 매뉴얼 + 필요한 자료 + 자동화 도구</span>**
<span>예를 들어 사용자가 매번 AI에게 다음과 같이 설명한다고 가정해 보겠습니다.</span>
* <span>유튜브 영상의 전체 자막을 확인합니다.</span>
* <span>광고 구간을 본문과 분리합니다.</span>
* <span>핵심 개념과 세부 내용을 Markdown으로 정리합니다.</span>
* <span>자동 자막의 명백한 오인식을 교정합니다.</span>
* <span>타임라인과 실무 체크리스트를 추가합니다.</span>
* <span>완성된 파일을 지정된 위치에 저장합니다.</span>
<span>이 절차를 매번 프롬프트로 입력하지 않고 </span>`<span>youtube-summary</span>`<span>라는 Skill로 만들어 두면, 다음부터는 영상 주소와 함께 해당 Skill을 호출하는 것만으로 같은 작업 절차를 재사용할 수 있습니다.</span>
***
## <span>2\. Skill이 필요한 이유</span>
### <span>반복 설명을 줄일 수 있다</span>
<span>자주 사용하는 지시를 매번 복사해 붙여 넣을 필요가 없습니다. 한 번 작성한 절차를 여러 작업과 프로젝트에서 다시 사용할 수 있습니다.</span>
### <span>결과물의 일관성이 높아진다</span>
<span>출력 형식, 필수 항목, 검증 방법과 금지사항을 Skill에 넣어두면 작업할 때마다 같은 기준이 적용됩니다.</span>
### <span>개인의 노하우를 구조화할 수 있다</span>
<span>머릿속에만 있던 업무 순서와 판단 기준을 문서로 만들 수 있습니다. 개인의 암묵적 노하우가 재사용 가능한 디지털 자산으로 바뀝니다.</span>
### <span>팀과 공유할 수 있다</span>
<span>프로젝트 저장소에 Skill을 포함하면 팀원과 AI 에이전트가 동일한 절차를 사용하게 할 수 있습니다. Skill 파일도 코드처럼 검토하고 버전 관리할 수 있습니다.</span>
### <span>긴 프롬프트가 컨텍스트를 차지하는 문제를 줄인다</span>
<span>모든 Skill의 전체 내용을 항상 프롬프트에 넣는 것이 아닙니다. AI는 먼저 Skill의 이름과 설명만 확인하고, 실제 작업에 필요하다고 판단할 때 전체 지침과 관련 자료를 읽습니다.</span>
### <span>지침과 자동화를 함께 묶을 수 있다</span>
<span>자연어 설명만으로 부족한 작업에는 결정론적인 스크립트를 포함할 수 있습니다. 예를 들어 문서 형식 검사, 파일명 정규화, 테스트 실행과 데이터 변환을 스크립트로 처리할 수 있습니다.</span>
***
## <span>3\. 프롬프트와 Skill의 차이</span>
| <span>구분</span> | <span>일반 프롬프트</span> | <span>AI Skill</span> |
| --- | ------- | -------- |
| **<span>사용 단위</span>** | <span>현재 대화의 한 번 또는 몇 번의 요청</span> | <span>여러 대화와 프로젝트에서 반복 사용</span> |
| **<span>구성</span>** | <span>주로 자연어 지시</span> | <span>지시, 참고자료, 스크립트, 템플릿, 에셋</span> |
| **<span>일관성</span>** | <span>입력할 때마다 달라질 수 있음</span> | <span>정해진 절차와 기준을 반복 적용</span> |
| **<span>공유</span>** | <span>복사·붙여넣기 필요</span> | <span>폴더나 플러그인 형태로 배포 가능</span> |
| **<span>버전 관리</span>** | <span>일반적으로 어려움</span> | <span>Git 등으로 변경 이력 관리 가능</span> |
| **<span>컨텍스트 사용</span>** | <span>입력 즉시 전체 내용이 들어감</span> | <span>필요한 Skill만 선택해 점진적으로 로드</span> |
| **<span>자동화</span>** | <span>설명 중심</span> | <span>실행 스크립트와 외부 도구 연결 가능</span> |
<span>Skill은 ‘더 긴 프롬프트’가 아닙니다. </span>**<span>업무의 입력, 절차, 판단 기준, 출력과 검증 방법을 재사용할 수 있도록 구조화한 워크플로우</span>**<span>입니다.</span>
***
## <span>4\. Skill을 업무 매뉴얼에 비유하면</span>
<span>회사에 새 직원이 들어오면 업무를 수행하기 위해 여러 자료가 필요합니다.</span>
| <span>회사의 구성요소</span> | <span>AI Skill에서 대응하는 요소</span> |
| -------- | ------------------ |
| <span>업무 매뉴얼</span> | `<span>SKILL.md</span>` |
| <span>참고 규정·제품 설명서</span> | `<span>references/</span>` |
| <span>엑셀 매크로·자동화 프로그램</span> | `<span>scripts/</span>` |
| <span>보고서 양식·디자인 템플릿</span> | `<span>assets/</span>` |
| <span>업무 이름과 담당 범위</span> | `<span>name</span>`<span>, </span>`<span>description</span>` |
| <span>시스템 접근 권한</span> | <span>MCP·도구 의존성</span> |
| <span>언제 이 업무를 맡길지</span> | <span>Skill의 호출 조건</span> |
<span>Skill을 잘 만든다는 것은 멋진 설명을 길게 작성하는 것이 아니라, </span>**<span>처음 업무를 맡은 사람이 문서만 보고도 같은 품질로 결과를 낼 수 있게 만드는 것</span>**<span>에 가깝습니다.</span>
***
## <span>5\. Skill과 다른 AI 구성요소의 차이</span>
| <span>구성요소</span> | <span>핵심 역할</span> | <span>대표 질문</span> |
| ---- | ----- | ----- |
| **<span>프롬프트</span>** | <span>현재 작업 지시</span> | <span>지금 무엇을 할 것인가?</span> |
| **<span>컨텍스트</span>** | <span>현재 판단에 필요한 정보</span> | <span>무엇을 보여줄 것인가?</span> |
| **<span>Memory</span>** | <span>사용자 선호와 과거 맥락 기억</span> | <span>이전에 무엇을 배웠는가?</span> |
| **<span>AGENTS.md</span>** | <span>프로젝트 전체에서 따라야 할 규칙</span> | <span>이 저장소에서 항상 무엇을 지킬 것인가?</span> |
| **<span>Skill</span>** | <span>특정 반복 업무의 수행 절차</span> | <span>이 종류의 일을 어떤 순서와 기준으로 할 것인가?</span> |
| **<span>MCP·도구</span>** | <span>외부 데이터와 기능에 접근</span> | <span>실제로 무엇을 읽고 실행할 수 있는가?</span> |
| **<span>Hook·Rule</span>** | <span>반드시 지켜야 할 동작 강제</span> | <span>어떤 행동을 시스템적으로 막거나 실행할 것인가?</span> |
| **<span>Plugin</span>** | <span>Skill·커넥터 등을 배포하는 설치 단위</span> | <span>다른 사람에게 어떻게 설치·배포할 것인가?</span> |
### <span>AGENTS.md와 Skill의 차이</span>
`<span>AGENTS.md</span>`<span>는 프로젝트의 공통 규칙에 적합합니다.</span>
* <span>사용해야 하는 프레임워크</span>
* <span>디렉터리 구조</span>
* <span>코딩 스타일</span>
* <span>테스트 명령어</span>
* <span>수정 금지 파일</span>
<span>Skill은 특정 업무 절차에 적합합니다.</span>
* <span>버그를 재현하고 수정하는 절차</span>
* <span>디자인을 검토하는 절차</span>
* <span>유튜브 영상을 요약하는 절차</span>
* <span>배포 전 검증 절차</span>
### <span>Memory와 Skill의 차이</span>
<span>Memory는 대화에서 발견한 사용자의 선호와 반복 맥락을 기억합니다. Skill은 사람이 의도적으로 설계한 업무 절차입니다.</span>
<span>예를 들면 다음과 같습니다.</span>
* <span>“상민님은 자세한 Markdown 정리를 선호한다” → Memory에 적합</span>
* <span>“영상 자막을 확보하고 광고를 분리한 뒤 15개 항목으로 정리한다” → Skill에 적합</span>
### <span>MCP와 Skill의 차이</span>
<span>MCP는 외부 서비스에 접근하는 </span>**<span>능력과 통로</span>**<span>입니다. Skill은 그 능력을 어떤 순서와 기준으로 사용할지 정하는 </span>**<span>업무 절차</span>**<span>입니다.</span>
<span>예를 들어 Gmail MCP가 메일을 읽고 보낼 수 있게 한다면, ‘고객 문의 답변 Skill’은 다음을 결정합니다.</span>
1. <span>신규 문의 검색</span>
2. <span>고객 정보 확인</span>
3. <span>답변 초안 작성</span>
4. <span>금지 표현 검사</span>
5. <span>사람 승인 요청</span>
6. <span>승인 후 메일 발송</span>
***
## <span>6\. Skill의 기본 폴더 구조</span>
<span>OpenAI 공식 문서에서 설명하는 기본 구조는 다음과 같습니다.</span>
```
my-skill/
├── SKILL.md # 필수: 메타데이터와 실행 지침
├── scripts/ # 선택: 실행 가능한 코드
├── references/ # 선택: 상세 문서와 참고자료
├── assets/ # 선택: 템플릿·이미지·기타 리소스
└── agents/
└── openai.yaml # 선택: UI, 호출 정책, 도구 의존성
```

### `<span>SKILL.md</span>`
<span>Skill의 중심 파일입니다. 다음 두 부분으로 구성됩니다.</span>
1. <span>YAML Front Matter</span>
2. <span>Markdown 형식의 작업 지침</span>
### `<span>scripts/</span>`
<span>정확하고 반복 가능한 처리가 필요할 때 사용하는 실행 코드입니다.</span>
<span>예시는 다음과 같습니다.</span>
* <span>문서 형식 검사</span>
* <span>테스트와 린트 실행</span>
* <span>자막 파일 정리</span>
* <span>데이터 변환</span>
* <span>결과물 패키징</span>
### `<span>references/</span>`
<span>항상 읽을 필요는 없지만 특정 상황에서 필요한 상세 자료입니다.</span>
* <span>API 문서</span>
* <span>회사 규정</span>
* <span>디자인 시스템</span>
* <span>출력 형식 명세</span>
* <span>예외 처리 기준</span>
### `<span>assets/</span>`
<span>Skill이 결과물을 만들 때 재사용하는 리소스입니다.</span>
* <span>보고서 템플릿</span>
* <span>프레젠테이션 테마</span>
* <span>문서 표지</span>
* <span>아이콘과 이미지</span>
* <span>샘플 데이터</span>
### `<span>agents/openai.yaml</span>`
<span>선택적 메타데이터 파일입니다. 사용자 화면에 표시할 이름·설명·아이콘·브랜드 색상, 자동 호출 허용 여부와 필요한 MCP 도구 등을 선언할 수 있습니다.</span>
***
## <span>7\. 가장 단순한 SKILL\.md 예시</span>
```
---
name: youtube-summary
description: YouTube 영상을 전체 자막 기준으로 자세히 요약하고 Markdown 파일로 만드는 작업에 사용합니다.
---
# YouTube 영상 상세 요약
1. 영상 제목, 채널, 게시일, 길이와 설명을 확인합니다.
2. 제공되는 전체 자막을 확보합니다.
3. 자동 자막의 명백한 오인식을 문맥에 맞게 교정합니다.
4. 영상의 공식 타임라인을 기준으로 내용을 구분합니다.
5. 광고 구간은 기술 본문과 분리해 표시합니다.
6. 핵심 메시지, 세부 개념, 실무 예시와 주의사항을 정리합니다.
7. 마지막에 체크리스트와 구간별 타임라인을 추가합니다.
8. 결과를 Markdown 파일로 저장합니다.
## 출력 요구사항
- 원본 영상 링크를 포함합니다.
- 핵심 개념은 표로 비교합니다.
- 추측한 내용은 영상의 주장과 구분합니다.
- 확인하지 않은 사실을 영상에서 말했다고 작성하지 않습니다.
```
<span>이 정도의 지침만으로도 Instruction-only Skill을 만들 수 있습니다. 필요한 경우 나중에 자막 처리 스크립트와 Markdown 템플릿을 추가하면 됩니다.</span>
***
## <span>8\. YAML Front Matter 작성법</span>
`<span>SKILL.md</span>`<span>의 맨 위에는 최소한 </span>`<span>name</span>`<span>과 </span>`<span>description</span>`<span>이 필요합니다.</span>
```
---
name: skill-name
description: 이 Skill이 언제 사용되어야 하고 언제 사용되지 않아야 하는지 설명합니다.
---
```
### `<span>name</span>`
* <span>짧고 구체적인 이름을 사용합니다.</span>
* <span>다른 Skill과 쉽게 구분되어야 합니다.</span>
* <span>업무의 목적이 드러나면 좋습니다.</span>
<span>좋은 예시는 다음과 같습니다.</span>
* `<span>youtube-summary</span>`
* `<span>vue-ui-review</span>`
* `<span>github-ci-fix</span>`
* `<span>job-experience-cards</span>`
<span>너무 모호한 예시는 다음과 같습니다.</span>
* `<span>helper</span>`
* `<span>work</span>`
* `<span>assistant</span>`
* `<span>useful-tool</span>`
### `<span>description</span>`
<span>Description은 단순 소개문이 아니라 </span>**<span>자동 호출 여부를 결정하는 트리거</span>**<span>입니다. AI는 사용자의 요청과 Description을 비교해 어떤 Skill이 필요한지 판단합니다.</span>
<span>좋은 Description은 다음 내용을 포함합니다.</span>
* <span>무엇을 하는 Skill인지</span>
* <span>어떤 요청에서 사용해야 하는지</span>
* <span>중요한 입력 파일이나 키워드</span>
* <span>사용하면 안 되는 범위</span>
#### <span>나쁜 예시</span>
```
description: 문서를 잘 만들어 줍니다.
```
<span>범위가 너무 넓어 관련 없는 작업에도 호출될 수 있습니다.</span>
#### <span>개선된 예시</span>
```
description: 사용자가 YouTube 영상 URL을 제공하고 전체 내용을 자세한 Markdown 문서로 요약해 달라고 할 때 사용합니다. 짧은 질문 답변이나 영상 편집 작업에는 사용하지 않습니다.
```
***
## <span>9\. Skill은 어떻게 선택되고 실행되는가?</span>
<span>OpenAI 공식 문서에서는 Skill을 두 가지 방식으로 호출할 수 있다고 설명합니다.</span>
### <span>명시적 호출</span>
<span>사용자가 특정 Skill을 직접 지정합니다.</span>
* <span>ChatGPT: </span>`<span>@</span>`<span>를 사용해 Skill 선택</span>
* <span>Codex CLI·IDE: </span>`<span>/skills</span>`<span> 또는 </span>`<span>$skill-name</span>`
<span>예시는 다음과 같습니다.</span>
```
$youtube-summary 이 영상을 자세히 정리해 줘.
```
<span>명시적 호출은 사용자가 반드시 특정 절차를 적용하고 싶을 때 적합합니다.</span>
### <span>암묵적 호출</span>
<span>사용자가 Skill 이름을 말하지 않아도 요청이 Description과 일치하면 ChatGPT나 Codex가 Skill을 선택할 수 있습니다.</span>
<span>예를 들어 </span>`<span>youtube-summary</span>`<span> Skill이 설치된 상태에서 다음과 같이 요청할 수 있습니다.</span>
```
이 영상의 전체 내용을 Markdown 파일로 자세히 정리해 주세요.
```
<span>AI는 요청과 Skill Description을 비교해 해당 Skill을 자동 선택합니다.</span>
### <span>자동 호출을 막을 수도 있다</span>
`<span>agents/openai.yaml</span>`<span>에서 다음 정책을 설정하면 명시적으로 호출했을 때만 사용할 수 있습니다.</span>
```
policy:
allow_implicit_invocation: false
```
<span>민감한 외부 작업이나 사용자의 승인이 필요한 워크플로우는 자동 호출을 비활성화하는 편이 안전할 수 있습니다.</span>
***
## <span>10\. 점진적 공개\(Progressive Disclosure\)</span>
<span>Skill의 중요한 작동 원리 중 하나입니다.</span>
<span>모든 Skill의 전체 지침과 참고자료를 항상 AI의 컨텍스트에 넣으면 다음 문제가 생깁니다.</span>
* <span>컨텍스트 공간 낭비</span>
* <span>관련 없는 지침 간 충돌</span>
* <span>응답 속도와 비용 증가</span>
* <span>중요한 현재 작업 정보가 밀려남</span>
<span>이를 방지하기 위해 AI는 정보를 단계적으로 읽습니다.</span>
```
flowchart TD
A["Skill 이름·설명 목록 확인"] --> B{"현재 요청과 일치?"}
B -->|아니요| C["Skill을 읽지 않음"]
B -->|예| D["전체 SKILL.md 로드"]
D --> E{"추가 자료 필요?"}
E -->|예| F["references·scripts·assets 확인"]
E -->|아니요| G["지침에 따라 작업 수행"]
F --> G
```
<span>OpenAI 공식 문서에 따르면 Codex의 초기 Skill 목록은 컨텍스트를 과도하게 차지하지 않도록 제한되며, Skill이 선택되면 해당 </span>`<span>SKILL.md</span>`<span> 전체를 읽습니다.</span>
### <span>작성자가 지켜야 할 원칙</span>
* <span>Description에는 선택에 필요한 정보만 간결하게 작성합니다.</span>
* <span>핵심 작업 절차는 </span>`<span>SKILL.md</span>`<span>에 작성합니다.</span>
* <span>긴 규정과 예시는 </span>`<span>references/</span>`<span>로 분리합니다.</span>
* <span>결정론적인 작업은 </span>`<span>scripts/</span>`<span>로 분리합니다.</span>
* <span>실제로 필요할 때만 추가 자료를 읽게 지시합니다.</span>
***
## <span>11\. 좋은 Skill 지침을 작성하는 방법</span>
### <span>한 가지 업무에 집중한다</span>
<span>하나의 Skill이 영상 요약, 이메일 발송, 코드 리뷰와 배포를 모두 담당하게 만들면 호출 조건과 지침이 복잡해집니다.</span>
<span>가능하면 다음처럼 나눕니다.</span>
* `<span>youtube-summary</span>`
* `<span>email-draft</span>`
* `<span>frontend-visual-qa</span>`
* `<span>production-deploy-check</span>`
### <span>명령형 문장으로 작성한다</span>
<span>AI가 실행해야 할 행동을 분명하게 씁니다.</span>
* <span>“관련 파일을 확인합니다.”</span>
* <span>“모든 필수 항목을 검사합니다.”</span>
* <span>“실패하면 원인을 기록하고 중단합니다.”</span>
### <span>입력과 출력을 명시한다</span>
```
## 입력
- YouTube 영상 URL 1개
- 원하는 요약 언어
- 출력 파일 형식
## 출력
- 영상 메타데이터
- 상세 요약
- 타임라인
- 참고 URL
- Markdown 파일
```
### <span>완료 조건을 객관적으로 정의한다</span>
<span>“좋은 결과물이 될 때까지”처럼 주관적인 문구보다 검증 가능한 기준을 사용합니다.</span>
* <span>필수 섹션 10개가 모두 존재</span>
* <span>모든 표의 열 개수가 동일</span>
* <span>원본 URL이 문서 상단에 존재</span>
* <span>Markdown 링크 형식 검사 통과</span>
* <span>광고 구간이 별도 섹션으로 분리</span>
### <span>예외 처리와 중단 조건을 작성한다</span>
* <span>자막이 없으면 영상 설명과 공개 자료만 사용하고 한계를 표시합니다.</span>
* <span>비공개 영상이면 사용자에게 접근 가능한 파일을 요청합니다.</span>
* <span>동일 오류가 반복되면 무제한 재시도하지 않습니다.</span>
* <span>외부 발송과 게시 전에는 사람 승인을 받습니다.</span>
### <span>하지 말아야 할 행동도 명시한다</span>
* <span>확인하지 않은 내용을 사실로 작성하지 않습니다.</span>
* <span>원본 파일을 임의로 삭제하지 않습니다.</span>
* <span>API 키를 출력하지 않습니다.</span>
* <span>사용자의 승인 없이 외부에 게시하지 않습니다.</span>
***
## <span>12\. Instructions와 Scripts 중 무엇을 사용해야 하는가?</span>
<span>OpenAI는 기본적으로 지침 중심 Skill로 시작하고, 결정론적인 동작이나 외부 도구가 필요할 때 스크립트를 추가하는 방식을 권장합니다.</span>
| <span>작업</span> | <span>권장 방식</span> |
| --- | ----- |
| <span>문서의 핵심 내용을 이해하고 요약</span> | <span>자연어 Instructions</span> |
| <span>문체와 독자 수준 조정</span> | <span>자연어 Instructions</span> |
| <span>파일 이름 규칙 검사</span> | <span>Script</span> |
| <span>JSON·CSV 데이터 변환</span> | <span>Script</span> |
| <span>테스트·린트·빌드 실행</span> | <span>Script</span> |
| <span>이미지의 미적 품질 판단</span> | <span>Instructions + 시각 검토</span> |
| <span>정확한 수식 계산</span> | <span>Script 또는 계산 도구</span> |
| <span>외부 서비스 접근</span> | <span>MCP·Tool</span> |
### <span>스크립트가 유리한 경우</span>
* <span>같은 입력에 같은 결과가 나와야 합니다.</span>
* <span>형식 오류를 정확히 잡아야 합니다.</span>
* <span>대량의 파일을 반복 처리합니다.</span>
* <span>AI의 자연어 판단보다 프로그램 검사가 안전합니다.</span>
### <span>자연어 지침이 유리한 경우</span>
* <span>맥락을 이해해야 합니다.</span>
* <span>글의 의미와 표현을 판단합니다.</span>
* <span>상황에 따라 유연한 선택이 필요합니다.</span>
* <span>정답이 하나가 아닌 창의적인 작업입니다.</span>
***
## <span>13\. Skill의 저장 범위와 위치</span>
<span>Codex는 저장소, 사용자, 관리자와 시스템 범위의 Skill을 읽을 수 있습니다.</span>
| <span>범위</span> | <span>대표 위치</span> | <span>적합한 용도</span> |
| --- | ----- | ------ |
| **<span>현재 작업 폴더</span>** | `<span>$CWD/.agents/skills</span>` | <span>특정 모듈이나 현재 폴더에만 필요한 Skill</span> |
| **<span>상위 저장소 폴더</span>** | `<span>$CWD/../.agents/skills</span>` | <span>저장소의 하위 프로젝트가 공유하는 Skill</span> |
| **<span>저장소 루트</span>** | `<span>$REPO\_ROOT/.agents/skills</span>` | <span>프로젝트 팀 전체가 사용하는 Skill</span> |
| **<span>사용자</span>** | `<span>$HOME/.agents/skills</span>` | <span>모든 프로젝트에서 개인적으로 사용하는 Skill</span> |
| **<span>관리자</span>** | `<span>/etc/codex/skills</span>` | <span>공용 컴퓨터·컨테이너의 기본 Skill</span> |
| **<span>시스템</span>** | <span>Codex에 기본 포함</span> | <span>Skill Creator 같은 공통 기능</span> |
### <span>어떤 위치를 선택해야 하는가?</span>
* <span>특정 프로젝트에서만 사용 → 저장소의 </span>`<span>.agents/skills</span>`
* <span>개인의 모든 작업에서 사용 → 사용자 Skill 경로</span>
* <span>조직의 공통 개발 환경 → 관리자 경로</span>
* <span>다른 사용자에게 설치형으로 배포 → Plugin으로 패키징</span>
<span>프로젝트 Skill은 저장소에 함께 커밋하면 팀원이 동일한 버전을 사용할 수 있습니다.</span>
***
## <span>14\. Skill\, Plugin과 MCP의 관계</span>
<span>이 세 가지는 경쟁 관계가 아니라 서로 다른 역할을 담당합니다.</span>
```
flowchart TD
A["Plugin: 설치·배포 단위"] --> B["Skill: 업무 절차"]
A --> C["MCP·Connector: 외부 기능"]
B --> D["Instructions·References·Scripts"]
C --> E["메일·문서·GitHub·기타 서비스"]
```
### <span>Skill</span>
<span>업무를 어떤 순서와 기준으로 수행할지 정의합니다.</span>
### <span>MCP·Connector</span>
<span>AI가 외부 데이터와 서비스에 접근할 수 있는 도구를 제공합니다.</span>
### <span>Plugin</span>
<span>하나 이상의 Skill, MCP 연결 설정과 표시용 리소스를 다른 사용자가 쉽게 설치할 수 있도록 묶습니다.</span>
<span>로컬에서 개인적으로 사용할 때는 Skill 폴더만으로 충분합니다. 다른 사람에게 배포하거나 여러 Skill과 외부 커넥터를 함께 제공하려면 Plugin이 적합합니다.</span>
***
## <span>15\. agents/openai\.yaml의 역할</span>
<span>선택적으로 다음 정보를 정의할 수 있습니다.</span>
```
interface:
display_name: "YouTube 상세 요약"
short_description: "영상 전체를 Markdown 문서로 정리합니다."
icon_small: "./assets/icon-small.svg"
icon_large: "./assets/icon-large.png"
brand_color: "#FF0000"
default_prompt: "이 영상을 전체 자막 기준으로 자세히 요약해 주세요."
policy:
allow_implicit_invocation: true
dependencies:
tools:
- type: "mcp"
value: "exampleTool"
description: "영상 메타데이터와 자막 확인 도구"
transport: "streamable_http"
url: "https://example.com/mcp"
```
### <span>Interface</span>
<span>사용자 화면에 표시할 이름, 설명, 아이콘과 기본 요청문을 정의합니다.</span>
### <span>Policy</span>
<span>사용자가 이름을 말하지 않아도 자동 호출할 수 있는지를 정합니다.</span>
### <span>Dependencies</span>
<span>Skill이 정상적으로 작동하는 데 필요한 MCP 도구를 선언합니다.</span>
***
## <span>16\. Skill 만들기: 권장 순서</span>
### <span>1단계: 반복되는 업무를 선택한다</span>
<span>다음 질문에 ‘예’라고 답할 수 있는 업무가 좋습니다.</span>
* <span>한 달에 여러 번 반복하는가?</span>
* <span>매번 비슷한 설명을 AI에게 하는가?</span>
* <span>결과물의 형식과 품질 기준이 있는가?</span>
* <span>단계별 체크리스트로 표현할 수 있는가?</span>
### <span>2단계: 실제 업무 절차를 기록한다</span>
<span>지금 사람이 하는 순서 그대로 적습니다.</span>
1. <span>입력 자료 확인</span>
2. <span>필요한 정보 수집</span>
3. <span>초안 생성</span>
4. <span>기준에 따라 검사</span>
5. <span>수정</span>
6. <span>결과 저장</span>
### <span>3단계: 경계와 트리거를 정의한다</span>
* <span>어떤 요청에서 사용해야 하는가?</span>
* <span>어떤 요청에서는 사용하지 말아야 하는가?</span>
* <span>필수 입력은 무엇인가?</span>
* <span>권한이나 자료가 없으면 어떻게 해야 하는가?</span>
### <span>4단계: Instruction-only로 먼저 만든다</span>
<span>처음부터 많은 스크립트와 자료를 넣지 않습니다. </span>`<span>SKILL.md</span>`<span>만으로 실제 작업을 여러 번 수행해 봅니다.</span>
### <span>5단계: 반복 오류를 보완한다</span>
* <span>같은 형식 오류가 반복됨 → 검사 스크립트 추가</span>
* <span>같은 참고자료를 계속 찾음 → </span>`<span>references/</span>`<span> 추가</span>
* <span>동일한 템플릿을 반복 생성함 → </span>`<span>assets/</span>`<span> 추가</span>
* <span>외부 서비스가 필요함 → MCP 의존성 연결</span>
### <span>6단계: 다양한 요청으로 테스트한다</span>
<span>정상 요청뿐 아니라 애매한 요청, 사용하면 안 되는 요청과 실패 상황도 시험합니다.</span>
### <span>7단계: 팀 공유 또는 배포 방식을 결정한다</span>
* <span>프로젝트 내부 공유 → 저장소에 커밋</span>
* <span>개인 전역 사용 → 사용자 Skill 경로</span>
* <span>다른 사용자에게 설치 제공 → Plugin으로 패키징</span>
***
## <span>17\. Skill Creator와 Record & Replay</span>
<span>직접 폴더와 파일을 작성하지 않고 내장 도구를 활용할 수도 있습니다.</span>
### <span>Skill Creator</span>
<span>Codex에서는 다음처럼 호출할 수 있습니다.</span>
```
$skill-creator
```
<span>Skill Creator는 일반적으로 다음을 확인합니다.</span>
* <span>Skill이 담당할 업무</span>
* <span>언제 호출되어야 하는지</span>
* <span>필요한 입력과 출력</span>
* <span>지침만 필요한지 스크립트도 필요한지</span>
* <span>참고자료와 에셋이 필요한지</span>
### <span>Record & Replay</span>
<span>업무를 글로 설명하기보다 직접 수행하는 것이 쉬운 경우, 실제 작업 과정을 기록하고 반복 가능한 Skill 초안을 만들 수 있습니다.</span>
<span>정형화되지 않은 업무라도 한 번 시범을 보인 뒤 절차를 추출할 수 있다는 장점이 있습니다.</span>
***
## <span>18\. Skill 설치와 활성화 관리</span>
### <span>큐레이션된 Skill 설치</span>
<span>Codex에서는 Skill Installer를 이용해 제공되는 Skill이나 외부 저장소의 Skill을 설치할 수 있습니다.</span>
```
$skill-installer
```
### <span>Skill 변경 감지</span>
<span>Codex는 일반적으로 Skill 파일의 변경을 자동으로 감지합니다. 변경 내용이 표시되지 않으면 Codex를 다시 시작해 볼 수 있습니다.</span>
### <span>Skill 비활성화</span>
<span>Skill을 삭제하지 않고 </span>`<span>\~/.codex/config.toml</span>`<span>에서 비활성화할 수 있습니다.</span>
```
[[skills.config]]
path = "/path/to/skill/SKILL.md"
enabled = false
```
<span>설정 파일을 변경한 뒤에는 Codex를 다시 시작해야 합니다.</span>
### <span>이름이 같은 Skill</span>
<span>동일한 이름의 Skill이 여러 위치에 있어도 자동으로 병합되지 않습니다. 선택 목록에 둘 다 나타날 수 있으므로 팀에서는 이름 충돌을 피하는 것이 좋습니다.</span>
***
## <span>19\. Skill 테스트 방법</span>
<span>좋은 Skill은 정상적인 요청에서 잘 작동하는 것뿐 아니라, 사용하면 안 되는 상황에서도 호출되지 않아야 합니다.</span>
### <span>19.1 트리거 테스트</span>
#### <span>호출되어야 하는 요청</span>
* <span>“이 유튜브 영상 전체를 Markdown으로 자세히 정리해 줘.”</span>
* <span>“광고를 분리하고 타임라인까지 넣어 영상 요약 파일을 만들어 줘.”</span>
#### <span>호출되면 안 되는 요청</span>
* <span>“유튜브가 재생되지 않는 이유가 뭔가요?”</span>
* <span>“영상 썸네일 이미지를 만들어 줘.”</span>
* <span>“이 문장만 영어로 번역해 줘.”</span>
<span>잘못 호출된다면 Description의 범위와 제외 조건을 수정합니다.</span>
### <span>19.2 출력 품질 테스트</span>
* <span>필수 섹션이 빠지지 않았는가?</span>
* <span>입력이 달라도 동일한 문서 구조를 유지하는가?</span>
* <span>출처와 추측이 구분되는가?</span>
* <span>금지된 행동을 하지 않는가?</span>
* <span>실패 시 사용자에게 필요한 정보를 요청하는가?</span>
### <span>19.3 회귀 테스트</span>
<span>Skill을 수정한 뒤 이전에 잘 처리했던 대표 요청을 다시 실행합니다. 새로운 기능을 추가하면서 기존 품질이 떨어지지 않았는지 확인합니다.</span>
### <span>19.4 비용과 컨텍스트 테스트</span>
* <span>불필요한 참고자료를 모두 읽지 않는가?</span>
* <span>너무 긴 지침이 현재 작업 정보를 밀어내지 않는가?</span>
* <span>스크립트로 처리할 일을 반복해서 AI가 추론하지 않는가?</span>
***
## <span>20\. 실패하기 쉬운 Skill 설계</span>
### <span>Description이 너무 넓다</span>
`<span>“문서 작업에 사용합니다.”</span>`<span>처럼 작성하면 관련 없는 모든 문서 요청에 호출될 수 있습니다.</span>
### <span>한 Skill에 너무 많은 업무를 넣는다</span>
<span>기획, 개발, 테스트, 배포, 고객지원까지 한 Skill에 넣으면 지침이 충돌하고 유지보수가 어려워집니다.</span>
### <span>모든 참고자료를 SKILL.md에 넣는다</span>
<span>Skill을 선택할 때마다 긴 문서를 모두 읽게 됩니다. 세부 자료는 </span>`<span>references/</span>`<span>로 분리합니다.</span>
### <span>자연어로 정확한 검사를 대신한다</span>
<span>테스트 통과, JSON 유효성, 파일 존재 여부처럼 프로그램으로 확인할 수 있는 것은 스크립트와 도구를 사용합니다.</span>
### <span>완료 조건이 없다</span>
<span>AI가 언제 작업을 끝내야 하는지 모호해집니다. 필수 항목, 검사 조건과 최대 반복 횟수를 정의합니다.</span>
### <span>실패 처리와 권한 경계가 없다</span>
<span>자료가 없을 때 추측하거나, 사용자의 승인 없이 외부로 전송할 수 있습니다. 실패·중단·승인 조건을 명시합니다.</span>
### <span>예시만 많고 원칙이 없다</span>
<span>예시와 조금 다른 입력이 들어오면 대응하지 못합니다. 예시보다 먼저 일반 규칙과 판단 기준을 작성합니다.</span>
***
## <span>21\. 보안과 권한 설계</span>
<span>Skill은 스크립트와 외부 도구를 사용할 수 있으므로 일반 프롬프트보다 더 큰 영향력을 가질 수 있습니다.</span>
### <span>최소 권한 원칙</span>
<span>필요한 파일과 서비스에만 접근하게 합니다. 읽기만 필요한 Skill에는 쓰기·삭제 권한을 주지 않습니다.</span>
### <span>외부 행동은 승인 단계 추가</span>
<span>다음 작업은 초안 생성과 실제 실행을 분리하는 것이 안전합니다.</span>
* <span>이메일 발송</span>
* <span>Slack 메시지 전송</span>
* <span>게시물 공개</span>
* <span>GitHub PR 병합</span>
* <span>운영 환경 배포</span>
* <span>파일 삭제</span>
### <span>비밀정보 보호</span>
* <span>API 키를 Skill 지침이나 저장소에 직접 넣지 않습니다.</span>
* `<span>.env</span>`<span>와 자격 증명 파일 접근을 제한합니다.</span>
* <span>로그와 결과물에 비밀 값이 포함되지 않게 검사합니다.</span>
### <span>외부 Skill 검토</span>
<span>설치 전 다음을 확인합니다.</span>
* `<span>SKILL.md</span>`<span>가 요구하는 권한</span>
* `<span>scripts/</span>`<span>의 실제 동작</span>
* <span>외부 네트워크 요청 대상</span>
* <span>파일 생성·수정·삭제 범위</span>
* <span>MCP 서버와 데이터 처리 방식</span>
***
## <span>22\. 상민님에게 유용한 Skill 아이디어</span>
<span>상민님의 개발·디자인·AI 학습 흐름에서는 다음 Skill이 특히 실용적입니다.</span>
### <span>22.1 YouTube 기술 영상 상세 요약</span>
**<span>입력:</span>**<span> 영상 URL</span>
**<span>출력:</span>**<span> 전체 자막 기반 상세 Markdown, 개념 비교, 실무 예시, 타임라인</span>
<span>최근 정리한 하네스·루프·그래프 엔지니어링 영상을 같은 형식으로 축적할 수 있습니다.</span>
### <span>22.2 AI 엔지니어링 개념 포스팅</span>
**<span>입력:</span>**<span> 이미지, 영상, 참고 URL</span>
**<span>출력:</span>**<span> 초보자 친화적인 블로그 포스팅, 표, 참고 링크, 이미지 제안</span>
<span>RAG, 에이전트, MCP, Skill, 하네스, 루프와 그래프 등의 개념을 통일된 포맷으로 정리할 수 있습니다.</span>
### <span>22.3 Vue 프론트엔드 시각 QA</span>
**<span>입력:</span>**<span> 실행 중인 웹페이지 또는 저장소</span>
**<span>출력:</span>**<span> 반응형·간격·색상·접근성·브라우저 오류 검사 보고서</span>
<span>개발자 관점의 기능 검사와 디자이너 관점의 시각 품질 검사를 하나의 절차로 만들 수 있습니다.</span>
### <span>22.4 자기소개서 경험 카드</span>
**<span>입력:</span>**<span> 경력 사례</span>
**<span>출력:</span>**<span> 상황·문제·행동·성과·직무역량 구조의 경험 카드</span>
<span>BOM 분석, 공정 개선, QI·CAPA, SAP ERP 같은 경험을 지원 기업과 질문에 맞게 재조합할 수 있습니다.</span>
### <span>22.5 AI 서비스 프로젝트 기획 인터뷰</span>
**<span>입력:</span>**<span> 한두 문장의 러프한 아이디어</span>
**<span>출력:</span>**<span> 목표 사용자, 핵심 문제, MVP, 제외 범위, 데이터, 기술 스택, 검증 기준</span>
<span>바로 개발을 시작하기 전에 AI가 역으로 질문해 요구사항을 구체화하는 절차입니다.</span>
***
## <span>23\. 실전 예시: YouTube 요약 Skill 설계안</span>
### <span>목적</span>
<span>AI 에이전트·개발 기술 영상을 전체 자막 기준으로 자세한 Markdown 문서로 변환합니다.</span>
### <span>입력</span>
* <span>공개 YouTube URL</span>
* <span>출력 언어</span>
* <span>원하는 상세 수준</span>
### <span>처리 순서</span>
1. <span>영상 메타데이터를 확인합니다.</span>
2. <span>전체 자막과 공식 타임라인을 확보합니다.</span>
3. <span>자막을 시간 구간별로 분리합니다.</span>
4. <span>명백한 자동 자막 오류만 문맥에 맞게 교정합니다.</span>
5. <span>핵심 주장과 근거·실습을 구분합니다.</span>
6. <span>광고와 홍보 구간은 기술 본문에서 분리합니다.</span>
7. <span>개념 비교표와 실제 업무 예시를 작성합니다.</span>
8. <span>주의사항과 체크리스트를 추가합니다.</span>
9. <span>원본 링크와 참고자료를 포함합니다.</span>
10. <span>Markdown 파일을 검증하고 저장합니다.</span>
### <span>완료 조건</span>
* <span>영상 제목·채널·게시일·길이 포함</span>
* <span>핵심 메시지 포함</span>
* <span>전체 타임라인 포함</span>
* <span>광고 구간 별도 표시</span>
* <span>영상의 주장과 보충 설명 구분</span>
* <span>Markdown 문법 오류 없음</span>
* <span>원본 영상 URL 포함</span>
### <span>실패 처리</span>
* <span>자막이 없으면 사용 가능한 공개 자료만으로 정리하고 한계를 표시합니다.</span>
* <span>비공개·삭제 영상이면 자막이나 영상 파일 첨부를 요청합니다.</span>
* <span>기술적으로 확인하지 않은 내용을 영상의 발언처럼 작성하지 않습니다.</span>
* <span>다운로드·접근 오류를 무제한 재시도하지 않습니다.</span>
***
## <span>24\. Skill 품질 체크리스트</span>
### <span>목적과 범위</span>
* <span>Skill이 한 가지 명확한 업무에 집중하는가?</span>
* <span>사용해야 하는 상황이 Description에 구체적으로 적혀 있는가?</span>
* <span>사용하면 안 되는 상황도 구분할 수 있는가?</span>
* <span>이름이 다른 Skill과 충돌하지 않는가?</span>
### <span>지침</span>
* <span>단계가 실행 순서대로 작성되어 있는가?</span>
* <span>필수 입력과 최종 출력이 명시되어 있는가?</span>
* <span>완료 조건을 객관적으로 검사할 수 있는가?</span>
* <span>실패·중단·사람 승인 조건이 있는가?</span>
* <span>금지 행동과 보안 경계가 명시되어 있는가?</span>
### <span>구조</span>
* <span>핵심 지침만 </span>`<span>SKILL.md</span>`<span>에 있는가?</span>
* <span>긴 자료는 </span>`<span>references/</span>`<span>로 분리했는가?</span>
* <span>정확한 반복 작업은 </span>`<span>scripts/</span>`<span>로 처리하는가?</span>
* <span>템플릿과 이미지가 </span>`<span>assets/</span>`<span>에 정리되어 있는가?</span>
### <span>테스트</span>
* <span>호출되어야 하는 요청에서 선택되는가?</span>
* <span>관련 없는 요청에서는 선택되지 않는가?</span>
* <span>여러 입력에서 결과 형식이 일관적인가?</span>
* <span>실패 상황에서 추측하지 않고 올바르게 중단하는가?</span>
* <span>Skill 수정 후 대표 작업을 다시 테스트했는가?</span>
### <span>운영</span>
* <span>버전과 변경 이력을 관리하는가?</span>
* <span>외부 도구의 권한이 최소 범위인가?</span>
* <span>API 키와 개인정보가 노출되지 않는가?</span>
* <span>다른 사용자가 설치할 경우 필요한 의존성이 문서화되어 있는가?</span>
***
## <span>25\. 핵심 정리</span>
<span>AI Skill은 단순한 프롬프트 모음이 아니라 </span>**<span>AI가 반복 업무를 수행하는 방법을 구조화한 재사용 가능한 워크플로우 패키지</span>**<span>입니다.</span>
<span>핵심 내용을 다섯 문장으로 정리하면 다음과 같습니다.</span>
1. **`<span>SKILL.md</span>`<span>는 Skill의 이름·호출 조건·업무 절차를 정의하는 필수 파일입니다.</span>**
2. **<span>스크립트, 참고자료와 템플릿은 필요할 때만 추가하며 점진적으로 불러옵니다.</span>**
3. **<span>Description은 소개문이 아니라 자동 선택을 좌우하는 중요한 트리거입니다.</span>**
4. **<span>Skill은 업무 절차, MCP는 외부 능력, Plugin은 설치·배포 단위입니다.</span>**
5. **<span>좋은 Skill은 명확한 입력·출력·완료 조건·실패 처리·권한 경계를 갖습니다.</span>**
<span>Skill을 처음 만들 때는 자주 반복하는 작은 업무 하나를 골라 지침만으로 시작하는 것이 좋습니다. 실제로 사용하면서 반복 오류가 발견될 때 참고자료, 템플릿, 스크립트와 외부 도구를 한 겹씩 추가하면 유지하기 쉬운 Skill이 됩니다.</span>
***
## <span>공식 참고자료</span>
* <span>OpenAI Docs — Build skills: </span>[<span>https://learn.chatgpt.com/docs/build-skills</span>](https://learn.chatgpt.com/docs/build-skills)
* <span>OpenAI Docs — Skills & Plugins: </span>[<span>https://developers.openai.com/codex/skills-and-plugins</span>](https://developers.openai.com/codex/skills-and-plugins)
* <span>OpenAI Docs — Reusable Codex skills: </span>[<span>https://developers.openai.com/codex/use-cases/reusable-codex-skills</span>](https://developers.openai.com/codex/use-cases/reusable-codex-skills)
* <span>OpenAI Skills 예제 저장소: </span>[<span>https://github.com/openai/skills</span>](https://github.com/openai/skills)
* <span>Open Agent Skills 표준: </span>[<span>https://agentskills.io</span>](https://agentskills.io)
## <span>작성 기준</span>
* <span>OpenAI 공식 문서에서 설명하는 ChatGPT·Codex Skill 구조와 동작 방식을 기준으로 작성했습니다.</span>
* <span>제품별 지원 범위와 호출 방식은 업데이트에 따라 달라질 수 있으므로 실제 설치 전 최신 공식 문서를 확인하는 것이 좋습니다.</span>
* <span>예제 Skill과 체크리스트는 공식 구조를 바탕으로 이해와 실무 적용을 돕기 위해 재구성했습니다.</span>
콘텐츠를 불러오는 중..

댓글목록
등록된 댓글이 없습니다.