스킬은 마법이 아니다. 스코프된 컨텍스트다. 🧭🗂️
Source: Dev.to
위에 있는 출처 링크 아래에 번역하고 싶은 전체 텍스트를 제공해 주시면, 해당 내용을 한국어로 번역해 드리겠습니다. (코드 블록이나 URL은 그대로 유지됩니다.)
🦄 스킬은 마법 같은 부스트가 아니라 컨텍스트 관리입니다
스킬은 컨텍스트가 로드될 때 변합니다.
Copilot 스킬을 추가하면 곧 “방법”에서 행동에 대한 논의로 전환됩니다. 맞춤형 에이전트, 재사용 가능한 프롬프트, 저장소 지시문을 구동하는 동일한 패턴이 여기에도 적용됩니다: 메커니즘이 파일 자체보다 더 중요합니다.
핵심 불만
대부분의 사람들은 스킬이 에이전트를 더 똑똑하게 만든다고 기대합니다. 실제로는 에이전트를 더 선별적으로 만들죠. 흥미로운 질문은 스킬이 도움이 되는 시점과 해가 되는 시점입니다.
“큰 차이는 어떤 모델이 더 똑똑한가가 아니라; 각 에이전시 시스템이 어떤 컨텍스트에 주의를 기울여야 하는지를 어떻게 결정하느냐입니다.”
📦 스킬이 하는 일
| 활성화 전 | 활성화 후 |
|---|---|
| 추론된 저장소 패턴에 작동 | 정의된 절차 규칙을 실행 |
| 기본 지시사항만 사용 | 기본 지시사항 + 스킬 가이드 사용 |
| 일반 적용성을 최적화 | 작업‑특화 행동을 최적화 |
스킬은 관련 있을 때만 상세 지시사항을 로드하여 컨텍스트 과부하를 줄입니다.
🛠️ 은유: “Bob the Builder”
| 요소 | 비유 |
|---|---|
| Agent | 건축가 |
| Instructions | 청사진 (항상 로드) |
| Skills | 도구 (필요 시 로드) |
- 청사진 (
.github/copilot-instructions.md)은 언제나 존재하는 보편적인 안내를 포함합니다. - 도구 (스킬)는 현재 작업이 그 설명과 일치할 때만 가져와서 기본 컨텍스트 과부하를 방지합니다.
📁 스킬을 위한 저장소 레이아웃
.github/
└── skills/
└── your-skill-name/
└── SKILL.md
디렉터리 트리 자체는 중요하지 않으며, 중요한 것은 에이전트가 스킬을 언제 활성화하느냐입니다.
- 처음에는 메타데이터(이름 및 설명)만 검토합니다.
- 설명이 작업과 일치하면 에이전트가 전체
SKILL.md를 로드합니다. - 스킬 폴더 내부의 추가 파일들은 명시적으로 참조되지 않는 한 보이지 않습니다.
ProTip: GitHub의 agent skills 문서와 Claude Code의 skills docs가 활성화 메커니즘을 자세히 설명합니다.
⚙️ How Activation Works
- Baseline Load – 에이전트가 저장소의 기본 지침을 읽습니다.
- Metadata Scan – 각 스킬의
name및description을 스캔합니다. - Match? – 현재 요청이 설명과 일치하면 에이전트가 해당 스킬의
SKILL.md를 로드합니다. - Execution – 스킬의 절차적 안내가 적용됩니다.
- No Match – 스킬이 에이전트 컨텍스트에 나타나지 않으므로 “잊혀지는” 것이 없습니다.
📄 SKILL.md Structure
---
name:
description:
---
- YAML front‑matter (
name&description)는 항상 표시됩니다. - 프론트‑머터 아래의 모든 내용은 호출된 후에만 활성화됩니다.
스킬은 다음과 같이 사용할 수 있습니다:
- 커스텀 에이전트
- 재사용 가능한 프롬프트
- 커스텀 인스트럭션
- 또는 이 세 가지의 혼합 형태
🧬 예시: changelog-writer Skill
---
name: changelog-writer
description: |
Rewrite changelog entries with cheeky, narrative flair following project
conventions. Use this when asked to rewrite or update CHANGELOG.md entries.
---
# Guidance (visible only after activation)
1. **Identify the entry** to be updated.
2. **Preserve the date** and version number.
3. Rewrite the description in a *light‑hearted, narrative* tone.
4. Keep bullet‑point formatting consistent with existing entries.
5. Add a short “why” note if the change is non‑trivial.
# Example
이전
- 로그인 흐름에서 버그를 수정했습니다.
After
- 교묘한 로그인 흐름 버그를 해결했습니다. 이 버그 때문에 가끔 500 오류가 발생했습니다. 🎉
When a user asks the agent to “update the changelog”, the description matches, the skill loads, and the guidance above is applied.
## 💡 주요 요점
- **Skills = conditional tools**는 기본 컨텍스트를 가볍게 유지합니다.
- **Metadata matters** – 명확하고 작업에 특화된 설명을 작성하세요.
- **Avoid over‑loading** 기본 지시를 과부하하지 말고, 스킬이 무거운 작업을 처리하도록 하세요.
- **GitHub Copilot** 및 **Claude Code**에 대한 공식 문서를 검토하여 활성화 세부 사항을 숙달하세요.
*즐거운 개발 되세요!* 🚦💎
## 실행 워크플로우
변경 로그 항목을 다시 작성하도록 호출될 때:
1. **`CHANGELOG.md` 읽기**를 통해 톤과 구조를 추출합니다.
2. **릴리스 유형 및 파괴적 변경 사항 식별**.
3. **릴리스 테마에 맞는 이모지 선택**.
4. **이탤릭체 오프닝 인용문 작성**.
5. **본문 내용 작성**.
6. **링크, 포맷, 파괴적 변경 가시성 검증**.
핵심 관찰은 워크플로 자체가 아니라 활성화 경계입니다. 활성화가 없으면 해당 로직은 에이전트의 작업 기억에 존재하지 않습니다.
🦄 전체 버전은 더 자세히 살펴보고 싶다면 제 `awesome‑github‑copilot` 저장소에 있습니다.
- 행동이 일관되게 적용되어야 한다면, 이는 저장소나 전역 지침에 포함되어야 합니다.
- 행동이 조건부이거나 절차적이거나 작업‑특정인 경우, 이는 스킬에 포함됩니다.
스킬은 가끔씩 꺼내 쓰는 도구처럼 느껴져야 하며, 에이전트가 매 세션마다 스스로 재발견해야 하는 일관된 규칙이 되어서는 안 됩니다. 그러나 지시사항이 충분히 커지면 기본 컨텍스트 역할을 멈추고 잡음처럼 작용합니다. 이 시점에서는 추가보다 정리가 더 가치 있게 됩니다.
**도움이 될 경우, 최신 LLM을 위한 지시 과다를 줄일 때 제가 사용하는 프롬프트는 다음과 같습니다:**
> `#copilot‑instructions.md`를 검토하고 AI 사용에 최적화하십시오. 저장소 구조나 코드 사용으로부터 추론할 수 있는 정보를 제거합니다. 중복 및 명확성을 높이거나 모호성을 줄이지 않는 모든 것을 없애세요. 성격 및 톤 지시사항을 유지합니다. 최종 파일은 인간 가독성보다 에이전트 이해를 우선시해야 합니다.
💡 **ProTip:** 먼저 원본을 백업하세요. 에이전트는 자신감 있는 편집자이며, 때때로 자신감 있는 편집자가 가장 중요한 한 줄을 지워버리기도 합니다.
제가 이 글을 작성했으며, ChatGPT는 잘 정의된 스킬처럼 도움을 주었습니다. 최종 결정은 제가 내렸으며—필요할 때 활성화되고 그 외에는 방해하지 않았습니다.