AI

AGENTS.md — AI 에이전트를 위한 npm 패키지 문서화 전략

README가 인간을 위한 문서라면, AGENTS.md는 AI 에이전트를 위한 문서다. 라이브러리에 추가하면 LLM이 정확한 코드를 생성하게 된다.

7 min read
AInpmAGENTS.mdLLM개발 생산성
AGENTS.md — AI 에이전트를 위한 npm 패키지 문서화 전략

LLM 기반 코딩 에이전트가 내 라이브러리를 쓸 때 왜 틀린 코드를 내놓을까? 대부분은 README를 제대로 파싱하지 못해서다.

README는 사람을 위해 쓴다. 마케팅 문구, GIF 데모, 설치 안내가 섞여 있다. LLM은 이 안에서 정확한 prop 이름, 유효한 조합, 기본값, 에러 조건을 찾아내야 한다. 놓치면 잘못된 코드가 나온다.

AGENTS.md는 이 문제를 직접 해결한다. AI 에이전트만을 위해 쓴 별도 문서다.

AGENTS.md vs README — 뭐가 다른가

항목READMEAGENTS.md
독자사람AI 에이전트
형식자유형, 마케팅 포함구조화된 기계 친화적 형식
내용설치·개요·소개타입·패턴·의사결정 트리
GIF/이미지있음없음
사용 실수드물게 언급필수 섹션

핵심은 LLM이 참조하기 쉬운 구조로 써야 한다는 것이다. 마케팅이 필요 없고, 애매한 표현이 들어가면 안 된다.

AGENTS.md의 6가지 섹션

1. 한 단락 요약

라이브러리가 무엇을 하는지, 언제 쓰는지 딱 한 단락으로.

AGENTS.md — 요약 섹션 예시
## Summary
shimmer-trace는 React 로딩 상태를 위한 Shimmer 컴포넌트 라이브러리다.
데이터 페칭 중 스켈레톤 UI를 표시할 때 사용한다.
React 18+, TypeScript 5+ 지원.

2. 모든 공개 export 목록

AGENTS.md — exports 섹션 예시
## Exports
- `Shimmer` — 기본 래퍼 컴포넌트
- `ShimmerText` — 텍스트 전용 스켈레톤
- `ShimmerImage` — 이미지 전용 스켈레톤
- `useShimmer` — 로딩 상태 훅

[💡 잠깐! 이 용어는?] 공개 export: 라이브러리 사용자가 import { X } from 'my-lib' 형태로 가져다 쓸 수 있는 함수·컴포넌트·타입의 목록. 내부 구현 파일은 포함하지 않는다.

3. 타입 정의

props, config, enum을 모두 나열한다. 제너릭까지 명시하는 게 좋다.

AGENTS.md — 타입 섹션 예시
## Types
 
interface ShimmerProps {
  loading: boolean          // 필수. true면 스켈레톤, false면 children 표시
  children: React.ReactNode // 필수. 로딩 완료 후 표시할 콘텐츠
  width?: string | number   // 선택. 기본값: '100%'
  height?: string | number  // 선택. 기본값: 'auto'
  rounded?: boolean         // 선택. true면 border-radius: 8px. 기본값: false
  duration?: number         // 선택. 애니메이션 주기(ms). 기본값: 1500
}

4. 번호별 사용 패턴

AGENTS.md — 패턴 섹션 예시
## Usage Patterns
 
// Pattern 1: 기본 래핑
import { Shimmer } from 'shimmer-trace'
 
function UserCard({ userId }: { userId: string }) {
  const { data: user, loading } = useFetchUser(userId)
  return (
    <Shimmer loading={loading}>
      <div className="card">
        <h2>{user?.name}</h2>
        <p>{user?.email}</p>
      </div>
    </Shimmer>
  )
}
 
// Pattern 2: 고정 크기 스켈레톤
function AvatarSkeleton() {
  return <Shimmer loading={true} width={48} height={48} rounded />
}

5. 의사 결정 트리

AGENTS.md — 의사결정 트리 예시
## Decision Tree
 
Q: 이미지 로딩에 쓸 건가?
  → ShimmerImage 사용
 
Q: 텍스트 줄 여러 개를 보여줄 건가?
  → ShimmerText + lines prop 사용
 
Q: 커스텀 레이아웃 전체를 감쌀 건가?
  → Shimmer 기본 컴포넌트 사용
 
Q: 프로그래밍 방식으로 제어해야 하나?
  → useShimmer 훅 사용

6. 일반적인 실수 → 올바른 방법

AGENTS.md — 실수 섹션 예시
## Common Mistakes
 
❌ loading prop 없이 사용
<Shimmer><UserCard /></Shimmer>
 
✅ loading prop 반드시 전달
<Shimmer loading={isLoading}><UserCard /></Shimmer>
 
❌ 중첩 Shimmer
<Shimmer loading={outer}>
  <Shimmer loading={inner}><Content /></Shimmer>
</Shimmer>
 
✅ 가장 바깥 Shimmer 하나만 사용
<Shimmer loading={outer || inner}><Content /></Shimmer>

npm 패키지에 포함시키는 방법

package.jsonfiles 배열에 추가하면 된다.

package.json
{
  "name": "shimmer-trace",
  "version": "1.2.0",
  "files": [
    "dist",
    "AGENTS.md"
  ]
}

이렇게 하면 npm install shimmer-tracenode_modules/shimmer-trace/AGENTS.md에서 접근 가능하다. AI 에이전트는 node_modules를 탐색할 때 이 파일을 찾아 읽는다.

[💡 잠깐! 이 용어는?] files 필드: npm에 패키지를 퍼블리시할 때 tarball에 포함할 파일/폴더 목록. 여기 없으면 node_modules에 설치되지 않는다. .npmignore로 제외하는 것과 반대 개념이다.

작성 비용 대비 효과

파일 하나 작성하는 데 2시간 정도면 충분하다. 얻는 것은 이렇다.

  • LLM이 잘못된 props 조합으로 이슈를 열지 않는다
  • Copilot, Claude, Cursor 등 모든 AI 코딩 도구에서 즉시 효과가 있다
  • 버전이 올라갈 때마다 AGENTS.md만 함께 업데이트하면 된다

비유하면 API 문서를 JSON Schema로 명세하는 것과 같다. 사람은 예쁜 문서 사이트를 보고, 기계는 Schema를 읽는다. AGENTS.md는 라이브러리의 AI용 Schema다.

정리

  • AGENTS.md는 README와 별도로 AI 에이전트 전용 구조화 문서다
  • 6개 섹션: 요약 → export 목록 → 타입 → 패턴 → 의사결정 트리 → 실수 모음
  • package.jsonfiles 배열에 추가하면 node_modules까지 전달된다
  • 작성 비용 2시간, AI 에이전트가 정확한 코드를 생성하기 시작한다

오픈소스 라이브러리를 관리한다면, 다음 릴리즈에 AGENTS.md를 추가하는 걸 검토할 만하다.


참고: