Skills, MCP, Custom Agents
점진적 컨텍스트 로딩, 외부 도구 연결, 전문 에이전트 정의
Skills, MCP, Custom Agents
점진적 컨텍스트 로딩, 외부 도구 연결, 전문 에이전트 정의
CLI에서도 전문가처럼 확장한다
JIT 지식 로딩, 외부 도구 연결, 전문 에이전트 위임
확장 오버뷰
Skills · MCP · Custom Agents
확장 체계
지식·도구·전문가 — CLI 능력을 넓히는 3축
Skills + MCP + Agents
지식은 Skills로, 외부 도구는 MCP로, 전문 역할은 Custom Agents로 추가합니다.
- Skills — 도메인 지식 JIT 로딩
- MCP — 외부 도구 표준 연결
- Custom Agents — 전문 역할 위임
- .kiro/ 공유 — IDE와 동일 동작
IDE에서 설정한 것이 CLI에서 그대로 동작합니다 — .kiro/ 하나가 두 인터페이스의 단일 소스입니다.
3축 확장 체계
Skills는 JIT 로딩, MCP는 표준 연결, Agents는 역할 위임 — 축마다 다른 확장 방식
-
1
Skills
- description 매칭으로 도메인 지식 JIT 로딩
- AWS 서비스 가이드, 사내 규칙 등
- 필요할 때만 활성화 — 토큰 절약
-
2
MCP
- 외부 도구를 프로토콜 표준으로 연결
- GitHub, AWS, Figma 등 API를 에이전트가 직접 호출
- OAuth MCP로 인증 서비스도 연동
-
3
Custom Agents
- 전문 역할 하위 에이전트 정의
- 보안 리뷰어, 테스트 작성자 등에 위임
- 역할별 도구 제한으로 안전한 분업
셋의 역할이 다릅니다 — 지식은 Skills, 도구는 MCP, 역할은 Agents로 나눠 확장합니다.
.kiro/ 공유 아키텍처
IDE와 CLI가 동일한 설정을 읽는 구조
Skills
description 매칭 · JIT 로딩 · 슬래시 활성화
Skills
필요한 지식만 그때그때 불러오는 JIT 로딩 구조
JIT 지식
description 매칭으로 필요한 Skill만 컨텍스트에 올립니다.
- description 매칭 — 요청과 대조
- JIT 로딩 — 매칭된 것만 토큰 소비
- /skill-name — 슬래시 수동 활성화
- Steering(항상)과 달리 선택적
매칭 단서는 description에 녹여 씁니다 — keywords 필드는 없습니다.
Skills JIT 로딩 흐름
프롬프트 입력부터 전문 응답까지 — description 매칭이 결정하는 4단계
-
1
프롬프트 입력
- "DynamoDB 싱글 테이블 설계해줘"
- 사용자가 질문이나 요청을 입력
- Skills description 매칭 시작
-
2
description 매칭
- Skills 메타데이터(description)와 요청 매칭
- "DynamoDB", "싱글 테이블" → 해당 Skill 발견
- 매칭 안 되면 로딩하지 않음
-
3
JIT 로딩
- 매칭된 Skills 마크다운만 컨텍스트 추가
- 나머지 수십 개 Skills는 토큰 소비 없음
- Steering(항상)과 달리 선택적
-
4
전문 응답
- Skills 지식을 참조하여 정확한 가이드
- 최신 API, 모범 사례, 주의사항 포함
- 할루시네이션 감소
수십 개 Skill이 있어도 매칭된 것만 토큰을 씁니다 — 안 쓰는 지식은 컨텍스트에 없습니다.
Skills 마크다운 구조
.kiro/skills/ 디렉토리에 마크다운으로 작성
---
name: dynamodb-patterns
description: DynamoDB 설계 패턴 가이드 — 싱글 테이블 설계,
GSI, 파티션 키 작업 시 활성화
---
# keywords 필드는 없음 — 매칭 단서는 description에 녹여 쓴다
# DynamoDB 설계 패턴
## 싱글 테이블 디자인
- PK/SK 복합 키로 다중 엔티티 저장
- GSI는 최대 20개 — 액세스 패턴별 설계
## 파티션 키 설계
- 높은 카디널리티 선택 (UUID, 복합 키)
- 핫 파티션 방지 — write sharding 활용
## 비용 최적화
- On-Demand는 예측 불가 워크로드에
- Provisioned + Auto Scaling이 안정 워크로드에 적합
MCP
stdio · streamable-http · OAuth
MCP
외부 도구를 표준 프로토콜로 잇는 연결 계층
MCP 연결
.kiro/settings/mcp.json에 서버를 등록하면 에이전트가 외부 API를 직접 호출합니다.
- mcp.json — 서버 등록
- stdio — 로컬 프로세스 래핑
- streamable-http — 원격 서버 연결
- OAuth — GitHub·Figma 인증 연동
로컬 도구는 stdio로 래핑하고, 팀이 공유하는 원격 서비스는 streamable-http + OAuth로 연결합니다.
MCP 설정 파일
.kiro/settings/mcp.json으로 서버 등록
{
"mcpServers": {
"aws-docs": {
"command": "uvx",
"args": ["awslabs.aws-documentation-mcp-server@latest"],
"env": { "AWS_REGION": "us-east-1" }
},
"github": {
"url": "https://api.githubcopilot.com/mcp/",
"headers": {
"Authorization": "Bearer ${GITHUB_TOKEN}"
}
},
"figma": {
"url": "https://mcp.figma.com/mcp",
"oauth": {
"redirectUri": "http://127.0.0.1:8080/oauth/callback",
"oauthScopes": ["read"]
}
}
}
}
- "command"·"args" — stdio 방식. 로컬 CLI를 프로세스로 래핑하고 "env"로 환경변수 주입
- "url" — streamable-http 방식. 원격 서버에 HTTP 연결, "headers"로 Bearer 토큰 전달
- "oauth" — 브라우저 인증 연동. redirectUri 콜백 + oauthScopes로 권한 범위 지정
stdio vs streamable-http
로컬 프로세스와 원격 서버의 선택
stdio (로컬)
- command + args로 로컬 프로세스 실행
- stdin/stdout으로 JSON-RPC 통신
- 설치된 CLI 도구를 직접 래핑
- 인증 불필요 — 로컬 권한 상속
- 네트워크 지연 없음
로컬에 설치된 도구를 MCP 서버로 실행합니다. uvx, npx로 패키지를 바로 실행하거나 직접 만든 스크립트를 연결.
streamable-http (원격)
- url로 원격 HTTP 엔드포인트 연결
- SSE 스트리밍으로 실시간 응답
- 팀 전체가 동일 서버 공유 가능
- OAuth/API Key 인증 필요
- AgentCore Gateway로 관리형 배포
원격 서비스(GitHub, Figma 등)를 OAuth로 인증하여 연결합니다. 팀이 공유하는 중앙 MCP 서버에 적합.
기준은 도구의 위치입니다 — 내 머신에 있으면 stdio, 팀이 공유하면 streamable-http입니다.
OAuth MCP 연결
서드파티 서비스 인증 설정
GitHub
- Personal Access Token 또는 OAuth App 사용
- repo, read:org 스코프 권장
- MCP가 이슈 생성, PR 리뷰, 코드 검색을 수행
OAuth 스키마
- oauth 키 — clientId · clientSecret · redirectUri · oauthScopes
- clientId 미지정 시 Dynamic Client Registration 자동 수행
- OAuth 지원 원격 MCP 공통 설정
Figma
- 공식 원격 엔드포인트 — https://mcp.figma.com/mcp
- 인증은 OAuth 플로우 (브라우저 승인)
- 디자인 파일 읽기 — Powers로 한 번에 설치 권장
Custom Agents
역할 정의 · 도구 제한 · 자동 위임
Custom Agents
역할·도구·권한을 파일로 정의하는 전문가 분업
전문 에이전트
.kiro/agents/*.md에 역할과 도구 제한을 정의하고 복잡한 작업을 위임합니다.
- *.md 프론트매터 — description·tools
- permissions.rules — 쓰기 범위 제한
- 자동 위임 — 메인 에이전트가 호출
- 읽기 전용 리뷰어 등 역할 분업
핵심은 최소 권한 원칙입니다 — 역할마다 허용 도구와 쓰기 범위를 좁혀 안전하게 위임합니다.
Custom Agent 정의
.kiro/agents/*.md로 전문 에이전트 작성
---
description: 단위 테스트를 자동 생성하는 전문 에이전트
tools:
- read
- write
- shell
permissions:
rules:
- capability: fs_write
effect: allow
match: "**/*.test.{ts,tsx}"
- capability: shell
effect: allow
match: "npx jest*"
---
# 테스트 작성 에이전트
## 역할
소스 코드를 분석하여 단위 테스트를 생성합니다.
## 지시사항
- describe/it 구조로 작성
- 경계값, 에러 케이스 포함
- mock보다 실제 구현 우선
- 기존 테스트 패턴을 참조하여 일관성 유지
- 생성 후 npx jest로 실행하여 통과 확인
- description — 메인 에이전트가 "이 작업을 위임할까"를 판단하는 매칭 기준
- tools — 허용 도구 카테고리만 노출 (read·write·shell)
- permissions.rules — capability+match로 세밀 제한. 테스트 파일 쓰기·npx jest*만 allow
- 본문 마크다운 — 역할·지시사항이 하위 에이전트의 시스템 프롬프트가 됨
에이전트 역할 분업
최소 권한 원칙으로 안전한 위임
| 에이전트 | 역할 | 허용 도구 | 파일 쓰기 범위 |
|---|---|---|---|
| test-writer | 단위 테스트 생성 | read, write, shell(jest) | *.test.* 파일만 |
| security-reviewer | 보안 취약점 분석 | read, web | 쓰기 불가 (읽기 전용) |
| doc-generator | API 문서 생성 | read, write | docs/ 폴더만 |
| refactorer | 코드 리팩토링 | read, write, shell(tsc) | src/ 폴더만 |
| reviewer | 코드 리뷰 피드백 | read | 쓰기 불가 (읽기 전용) |
리뷰어는 읽기 전용, 테스트 작성자는 *.test.*만 — 역할마다 도구와 쓰기 범위를 좁힙니다.
공유 구조
Global · Workspace · Git 동기화
공유 구조
개인 설정과 팀 설정이 병합되는 2계층 구조
Global + Workspace
~/.kiro/는 개인 기본값, 프로젝트 .kiro/는 Git으로 공유되는 팀 규칙입니다.
- Global ~/.kiro/ — 개인, .gitignore
- Workspace .kiro/ — Git 팀 공유
- 병합 — Workspace가 오버라이드
- IDE·CLI가 동일하게 읽음
토큰 같은 개인 설정은 Global에, 팀 규칙은 Workspace에 둡니다 — 충돌하면 Workspace가 이깁니다.
Global ↔ Workspace 계층
개인 설정과 팀 설정의 분리
IDE vs CLI 동작 차이
동일한 설정, 약간 다른 인터페이스
| 기능 | IDE | CLI |
|---|---|---|
| Steering 적용 | ✓ 동일하게 동작 | ✓ 동일하게 동작 |
| Hooks 실행 | ✓ UI 알림 표시 | ✓ 터미널 출력 |
| Skills 로딩 | ✓ description 자동 매칭 | ✓ 자동 + /skill-name 수동 |
| MCP 연결 | ✓ 설정 UI 제공 | ✓ JSON 직접 편집 |
| Agents 위임 | ✓ Subagent 패널 | ✓ 자동 위임 (패널 없음) |
| Spec 세션 | ✓ 3단계 UI 패널 | △ V3(early access)부터 지원 — 그 전엔 Plan 모드 |
| Checkpoint | ✓ 시각적 타임라인 | ✓ /checkpoint init·restore·diff (experimental) |
핵심 기능은 양쪽에서 동작합니다 — Spec 세션만 CLI V3(early access)부터 지원됩니다.
.kiro/ 디렉토리 전체 구조
Git으로 관리되는 프로젝트 규칙의 단일 소스
specs/만 IDE 전용 산출물입니다 — 나머지 디렉토리는 IDE와 CLI가 함께 읽습니다.
.kiro/ 하나로 IDE와 CLI를 통합