에이전트 스킬 작성하기

발행: (2026년 3월 19일 오후 06:02 GMT+9)
10 분 소요
원문: Dev.to

Source: Dev.to

번역할 텍스트를 제공해 주시면 한국어로 번역해 드리겠습니다.

Source:

DRY 원칙

DRY(Do not Repeat Yourself) 원칙은 오래전부터 존재해 왔습니다.
코드를 여러 곳에 복사‑붙여넣기하고 버그가 발생하면, 모든 곳에서 그 버그를 수정해야 합니다. 중복이 많을수록 수정할 때 하나를 놓칠 가능성이 높아집니다.

코딩 어시스턴트 맥락에서의 DRY

코딩 어시스턴트를 사용할 때 DRY는 다른 의미를 가집니다:

  • 매 세션마다 어시스턴트에게 프로젝트 분석을 요청할 필요가 없습니다.
  • 매번 언어의 코딩 규칙을 반복해서 알려줄 필요가 없습니다.
  • 프로젝트가 불변성을 선호한다는 것을 어시스턴트에게 계속 상기시킬 필요가 없습니다.

새로운 개발자가 좋은 프로젝트에 합류하면, 그 프로젝트의 기능, 아키텍처, 그리고 규칙을 안내받습니다. 훌륭한 프로젝트에서는 이러한 규칙이 문서화된 형태로 공식화되어 있으며, 때때로 최신 상태로 유지됩니다. 코딩 어시스턴트는 다른 팀원과 마찬가지로 문서화된 정보를 필요로 합니다.

제가 사용하는 두 코딩 어시스턴트 모두 이러한 지시문을 사용할 수 있게 해줍니다(모두 지원한다고 가정합니다). 예를 들어, GitHub Copilot은 자동으로 .github/instructions.md 파일을 읽습니다.

지시 파일을 작게 유지하기

어시스턴트가 지시를 자동으로 읽고 그 범위가 너무 넓으면, 관련 없는 데이터가 컨텍스트에 섞이게 됩니다.
결론: 파일을 비교적 작게 유지하고 일반적인 정보에 집중하세요.

크기 조정 조언

출처권장 사항
docs.factory.ai 700줄은 너무 깁니다

제 조언: 작게 시작하고 필요에 따라 늘리며, 결과를 분석하고 파일이 너무 커지면 리팩터링하세요.

토큰이 진정한 자원입니다

오늘날 중요한 자원은 CPU, RAM, 저장소가 아니라 토큰입니다. 토큰은 한정되어 있고 비용이 많이 듭니다. 나는 개발자들이 곧 토큰 사용량으로 평가받게 될 것이라고 예측합니다: 비슷한 결과를 얻으면서 가장 적은 토큰을 사용하는 개발자가 더 뛰어난 개발자가 될 것입니다.

대부분의 에이전트는 기본 지시 파일을 로드합니다:

  • GitHub Copilot → AGENTS.md
  • Claude → CLAUDE.md

파일이 작을수록 컨텍스트에서 사용되는 토큰이 적어집니다.

좋은 컨텍스트는 필요한 모든 토큰을 포함하지만 그 이상은 포함하지 않습니다—여기서 스킬이 중요한 역할을 합니다.

Source:

에이전트 스킬

에이전트 스킬은 에이전트가 발견하고 사용할 수 있는 명령, 스크립트, 리소스 폴더이며, 이를 통해 작업을 보다 정확하고 효율적으로 수행할 수 있습니다.

AGENTS.md와는 달리 스킬은 자동으로 로드되지 않으므로 컨텍스트를 부풀리지 않습니다. 코딩 어시스턴트에 따라 스킬이 자동으로 발견·로드될 수도 있고, 그렇지 않을 수도 있습니다.

스킬 호출 방법

  • 기본적으로 당신과 Claude 모두 어떤 스킬이든 호출할 수 있습니다.
  • /skill-name 형태로 입력하면 직접 호출할 수 있습니다.
  • Claude는 대화와 관련이 있을 때 스킬을 자동으로 로드할 수 있습니다.

Claude가 스킬을 언제 호출해야 하는지 아는 방법

Claude는 각 SKILL.md 파일의 프런트‑머터를 도구 정의로 변환합니다. 아래는 제가 만든 Kotlin 스킬의 프런트‑머터 예시입니다:

---
name: kotlin
description: |
  Use this skill when working with Kotlin code in any capacity:
  - Reading, writing, editing, or reviewing Kotlin files (*.kt, *.kts)
  - Running Gradle tasks for Kotlin modules
  - Writing or debugging Kotlin/JS code that targets Node.js
  - Working with external JavaScript libraries from Kotlin
  - Writing tests for Kotlin code (@Test, @BeforeTest, @AfterTest)
  - Setting up dependency injection or mocking in Kotlin
  - Dealing with multiplatform Kotlin projects (common, jsMain, jsTest, jvmMain)
  - Troubleshooting Kotlin compilation or runtime errors
  - Any task involving Kotlin/JS modules targeting Node.js

  This skill provides Kotlin/JS technical knowledge (especially JS interop gotchas)
  and coding‑style preferences beyond the official conventions.
---

위 내용은 Claude가 언제 도구를 로드할지 판단하는 데 필요한 정보를 제공합니다. 명백히 이 스킬은 Kotlin 및 Kotlin/JS와 관련된 것입니다.

스킬의 내용

일반 AGENTS.md 파일과 동일한 규칙을 따릅니다:

  • 스킬 폴더 내에 로컬로 존재하거나 온라인에서 접근 가능한 다른 문서(텍스트 등)를 참조할 수 있습니다.
  • Kotlin 코딩 컨벤션 전체를 전용 파일에 복사해 두었습니다. SKILL.md는 주요 항목을 요약하고 컨벤션에 대한 링크를 제공합니다.
  • 전체 컨벤션은 이 스킬 디렉터리의 kotlin-coding-conventions.md 파일에 로컬로 캐시되어 있습니다.

주요 알림 (Kotlin)

  • var보다 val을 선호하세요 – 불변성을 우선합니다
  • 불변 컬렉션 인터페이스(List, Set, Map, MutableList 등 사용 금지)를 사용하세요
  • 짧은 람다에서는 it을 사용하고, 중첩/복잡한 경우에는 명명된 매개변수를 사용하세요
  • if, when, try는 문 형태보다 표현식 형태를 선호하세요
  • 명령형 루프보다 함수형 스타일(filter, map)을 선호하세요

1. 외부 인터페이스 vs. Kotlin 클래스

문제: Kotlin 클래스는 프로토타입에 메서드를 가지고 있습니다. 외부 인터페이스는 메서드가 객체 자체에 직접 존재하기를 기대합니다. unsafeCast를 사용해 변환할 수 없습니다.

// ❌ WRONG: This will fail at runtime
class MockSql {
    fun unsafe(query: String) = /* … */
}
val sql: Sql = mockSql.unsafeCast()  // Throws: sql.unsafe is not a function
// ✅ CORRECT: Use an extension function to build a plain JS object
fun MockSql.toExternal(): Sql {
    val obj = Any().asDynamic()
    val mock = this

    obj.unsafe = { query: String -> mock.unsafe(query) }
    obj.end = { mock.end() }

    return obj.unsafeCast()
}

// Then use it:
val sql: Sql = mockSql.toExternal()

Bottom line

스킬은 같은 지시를 반복해서 하는 것을 피하는 데 훌륭합니다. skillsinstructions의 주요 차이점은 필요하지 않을 때 skills컨텍스트를 부풀리지 않는다는 점입니다. 현명하게 사용하고, 지시 파일을 작게 유지하며, 토큰 사용량이 감소하는 것을 확인하세요.

더 나아가기

에이전트 스킬

  • Claude에 스킬 확장
  • 체계적 개발 스킬
  • 멋진 스킬

AGENTS.md

원래는 A Java Geek에 2026년 3월 15일에 게시되었습니다.

0 조회
Back to Blog

관련 글

더 보기 »

파일 시스템이 디버깅하기 어려운 이유

동기 부여 나는 파일 시스템을 처음부터 구축하고 있다—필요해서가 아니라, 보이지 않는 것을 디버깅하는 것이 추측에 불과하기 때문이다. 파일 시스템을 이해하는 l...

블루 틱이 표시된 메시지, 그러나 도착하지 않음

소개 WhatsApp에서 메시지가 전달 및 읽음으로 표시되지만 AI 에이전트가 해당 메시지를 전혀 확인하지 못한다면, 이는 무음 메시지 손실 문제입니다. 이 기사에서는 이러한 문제에 대한 전문적인 해결책을 제시합니다.