Kiro CLI 확장
Skills, MCP, Custom Agents, 공유 구조
Kiro CLI 확장
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를 통합