Tutorials

AI 에이전트 메모리와 도구 통합: 더 스마트한 Claude Skills 워크플로 구축

Claude Skills를 사용하여 영구 메모리와 도구 통합이 가능한 AI 에이전트 워크플로를 구축하는 방법을 알아보세요. 에이전트 메모리 시스템, 도구 조율, 프로덕션 준비 에이전트 아키텍처에 대한 단계별 가이드입니다.

Claude Skills TeamMarch 10, 20268 min read
#agent-memory#tool-integration#ai-agents#claude-skills#workflow-automation
Claude Skills를 활용한 AI 에이전트 메모리 및 도구 통합

대부분의 AI 에이전트 튜토리얼은 기본에서 멈춥니다: Claude에게 프롬프트하고, 응답을 받고, 끝. 하지만 프로덕션 워크플로는 다릅니다. 여러 세션에 걸쳐 있고, 수십 개의 외부 도구를 호출하며, 어제 내린 결정을 기억해야 합니다. 이 가이드는 데모와 프로덕션 수준의 Claude Skills 에이전트를 구분하는 세 가지 차원을 다룹니다: 메모리 시스템, 도구 통합 패턴, 그리고 확장 가능한 아키텍처 선택.

에이전트 메모리가 모든 것을 바꾸는 이유

상태 비저장 에이전트는 강력하지만 건망증이 있습니다. 모든 대화가 제로에서 시작합니다 — 코드베이스 규칙에 대한 지식도, 진행 중인 작업에 대한 인식도, 과거 결정에 대한 기록도 없습니다. 일회성 작업에는 괜찮지만, 한 세션 이상이 필요한 작업에서는 빠르게 무너집니다.

Claude Skills는 메모리를 Claude가 각 세션 시작 시 읽는 파일로 외부화하여 이를 해결합니다. Skill 파일 자체가 계약입니다: Claude에게 무엇을 기억할지, 어디에 저장할지, 어떻게 사용할지 정확히 알려줍니다.

차이를 생각해 보세요:

메모리 없이: "이 PR을 리뷰해줘" — Claude가 과거 리뷰에 대한 컨텍스트 없이, 팀의 스타일 가이드 없이, 이미 논의한 이슈에 대한 기록 없이 리뷰합니다.

메모리와 함께: "이 PR을 리뷰해줘" — Claude가 project-memory/review-history.md를 로드하고, 마지막 10개 PR 리뷰를 확인하고, 팀의 반복적인 이슈와 지난달 확립한 규칙을 확인합니다. 리뷰가 즉시 더 관련성 있게 됩니다.

세 가지 에이전트 메모리 패턴

패턴 1: 세션 내 축적

가장 단순한 형태의 메모리입니다. 에이전트가 단일 대화 윈도우 내에서 컨텍스트를 구축하고 작업이 진행됨에 따라 더 나은 결정을 내리는 데 사용합니다.

이 패턴을 구현하는 Skill은 다음과 같을 수 있습니다:

## 워크플로
1. 행동을 취하기 전에, 변경할 모든 파일과 이유를 나열한다
2. 작업 메모리에 실행 중인 결정 로그를 유지한다:
   - 무엇을 왜 변경했는지
   - 시도했지만 효과가 없었던 것
   - 사용자에게 묻고 싶은 질문
3. 마지막에 내린 결정과 다음 단계를 요약한다

이것은 한 세션 안에 완료되는 작업에 적합합니다 — 모듈 리팩토링, 기능 작성, 버그 디버깅. 한계는 분명합니다: 터미널을 닫으면 메모리가 사라집니다.

패턴 2: 세션 간 파일 메모리

며칠이나 몇 주에 걸치는 작업의 경우, Skills가 Claude에게 전용 메모리 파일을 읽고 쓰도록 지시할 수 있습니다. 이 패턴은 커뮤니티 Skill 저장소에서 일관되게 사용됩니다:

## 메모리 프로토콜
**세션 시작 시:**
- `AGENT_MEMORY.md`가 있으면 읽는다
- `project-state.json`에서 현재 작업 상태를 읽는다
- 사용자에게 마지막으로 어디까지 진행했는지 요약하여 인사한다

**세션 종료 시 (또는 사용자가 "저장" 또는 "체크포인트"라고 말할 때):**
- `AGENT_MEMORY.md`를 주요 결정 사항으로 업데이트한다
- `project-state.json`을 현재 작업 상태로 업데이트한다
- 다음 세션을 위한 차단 요인이나 질문을 나열한다

메모리 파일 구조가 중요합니다. 플랫 파일은 금방 다루기 어려워집니다. 잘 설계된 메모리 스키마는 다음을 분리합니다:

  • 결정 (불변, 타임스탬프): 아키텍처 선택, 수용한 트레이드오프
  • 상태 (가변): 현재 작업, 진행 중인 작업, 열린 PR
  • 지식 (발전): 코드베이스 규칙, 팀 선호도, 반복되는 패턴

levnikolaevich/claude-code-skills와 같은 커뮤니티 Skills는 구조화된 JSON 상태 파일로 이 패턴을 구현하여 Claude 외부에서 에이전트의 메모리를 검사하고 디버깅하기 쉽게 합니다.

패턴 3: 도구 매개 상태

가장 견고한 접근 방식은 메모리를 그것을 위해 설계된 시스템에 저장합니다: 데이터베이스, 키-값 저장소, 또는 버전 관리되는 파일. 에이전트는 저장 형식을 관리하지 않습니다 — 그것을 처리하는 도구를 호출합니다.

## 상태 관리
- 현재 스프린트 상태 읽기: `gh project list --owner @me`
- 작업 세부 사항 읽기: `gh issue view {issue_number}`
- 작업 업데이트 기록: `gh issue comment {issue_number} -b "{update}"`
- 결정 추적: `docs/decisions/ADR-{number}.md`에 추가하고 커밋

이 접근 방식은 전체 감사 추적, 사람이 읽을 수 있는 상태, 이력을 쿼리할 수 있는 능력을 제공합니다. 또한 기존 팀 워크플로와 자연스럽게 통합됩니다 — 에이전트의 메모리는 git 이력의 또 다른 기여자일 뿐입니다.

도구 통합 패턴

메모리는 에이전트에게 무슨 일이 일어났는지를 알려줍니다. 도구는 에이전트에게 무엇을 할 수 있는지를 알려줍니다. 도구 세트의 풍부함이 자동화할 수 있는 워크플로의 복잡도를 직접적으로 결정합니다.

MCP 서버 통합

Model Context Protocol 서버는 Claude가 기본적으로 호출할 수 있는 구조화된 도구 정의로 기능을 노출합니다. MCP 도구를 통합하는 Skill은 기대하는 서버를 선언합니다:

## 필수 MCP 서버
- `filesystem`: 프로젝트 파일 읽기 및 쓰기
- `github`: PR, 이슈, 저장소와 상호작용
- `postgres`: 컨텍스트를 위해 애플리케이션 데이터베이스 쿼리

## 도구 사용 가이드라인
- 둘 다 사용 가능할 때 CLI 대신 MCP 도구를 선호한다
- MCP 도구는 구조화된 오류를 제공한다; 명시적으로 처리한다
- 관련 도구 호출을 배치 처리하여 라운드 트립을 최소화한다

핵심 규율: Skills는 도구 의존성을 명시적으로 선언해야 합니다. 도구가 있다고 묵묵히 가정하는 에이전트는 디버깅하기 어려운 실패를 만듭니다. 시작 시 도구를 확인하고 우아하게 실패하는 에이전트가 훨씬 운영하기 쉽습니다.

CLI 도구 오케스트레이션

최고의 커뮤니티 Skills 중 많은 것이 커스텀 MCP 서버를 요구하지 않고 표준 CLI 도구를 오케스트레이션합니다. 이로 인해 추가 설정 없이 즉시 유용합니다:

## 코드 품질 검사 워크플로
1. 린터 실행: `npm run lint 2>&1 | tee .agent/lint-output.txt`
2. 타입 검사 실행: `npx tsc --noEmit 2>&1 | tee .agent/type-errors.txt`
3. 테스트 실행: `npm test -- --json > .agent/test-results.json`
4. 모든 출력을 함께 분석하고 우선순위별 단일 보고서를 생성
5. 각 심각한 이슈에 대해 줄 번호와 함께 구체적인 수정안을 제안

tee 패턴은 주목할 가치가 있습니다: 에이전트가 나중에 분석할 도구 출력을 캡처하면서도 사용자에게 실시간으로 보여줄 수 있습니다. .agent/ 디렉토리는 세션의 임시 공간 역할을 합니다 — 프로젝트를 오염시키지 않고 컨텍스트를 축적하는 임시 파일입니다.

curl을 통한 API 통합

MCP 서버나 CLI 도구가 없는 서비스의 경우, Skills가 API를 직접 호출할 수 있습니다:

## 배포 확인
성공적인 테스트 실행 후마다:
1. 현재 배포 상태 확인:
   `curl -s -H "Authorization: Bearer $DEPLOY_TOKEN" https://api.example.com/deployments/latest`
2. 상태가 "ready"이면 배포 트리거:
   `curl -X POST -H "Authorization: Bearer $DEPLOY_TOKEN" https://api.example.com/deployments`
3. 30초마다 완료 여부 확인 (최대 10분)
4. 최종 상태와 URL 보고

API 호출을 사용하는 Skills는 항상 시크릿의 출처를 지정하고 (환경 변수, 절대 하드코딩 안 함), 속도 제한을 명시적으로 처리하며, 타임아웃 동작을 정의해야 합니다.

실용적 예시: 메모리가 있는 코드 리뷰 에이전트

이러한 패턴이 실제 Skill에서 어떻게 결합되는지 보여드립니다. 이 에이전트는 과거 리뷰 결정을 기억하고 도구를 사용하여 단일 세션 에이전트가 할 수 없는 더 풍부한 리뷰를 만듭니다.

Skill 파일: code-review-with-memory.md

# 메모리가 있는 코드 리뷰 에이전트

당신은 이 프로젝트에 대한 조직 지식을 가진 코드 리뷰어입니다.

## 세션 시작 프로토콜
1. `.agent/review-memory.md`가 있으면 읽는다 — 다음을 포함:
   - 과거 리뷰에서 발견된 반복 이슈
   - 논의를 통해 확립된 팀 규칙
   - 작성자와 그들의 일반적인 패턴
2. `git log --oneline -20`을 실행하여 최근 이력을 파악한다
3. `gh pr list --state open`을 실행하여 진행 중인 다른 항목을 확인한다

## 리뷰 프로세스
변경된 각 파일에 대해:
1. `.agent/review-memory.md`의 규칙과 대조하여 확인
2. `npx eslint {file} --format json` 실행 및 출력 분석
3. 테스트 커버리지 확인: `npx jest --collectCoverageFrom='{file}' --coverage`
4. 이전 리뷰에서 나타난 패턴을 찾기

## 피드백 형식
- 심각도별로 이슈를 그룹화: 차단 / 중요 / 제안
- 반복되는 이슈의 경우 "이것은 X를 본 3번째입니다 — 린트 규칙 추가를 고려하세요"라고 기록
- 좋은 패턴의 경우 긍정적으로 기록 — 효과가 있는 것을 강화

## 세션 종료 프로토콜
리뷰 완료 후:
1. `.agent/review-memory.md`를 다음으로 업데이트:
   - 새로 식별된 반복 패턴
   - 이 세션에서 명확해진 규칙
   - 작성자의 강점과 성장 영역
2. 메모리 파일 커밋: `git add .agent/review-memory.md && git commit -m "chore: update review memory after PR #{pr_number}"`

이 에이전트로 10번의 리뷰를 수행하면, 리뷰 메모리 파일은 저장소에서 가장 가치 있는 문서 중 하나가 됩니다 — 팀의 발전하는 표준에 대한 살아있는 기록입니다.

프로덕션 배포 고려 사항

상태를 관리하고 외부 도구를 호출하는 Skills는 상태 비저장 스크립트보다 더 신중한 운영 설계가 필요합니다.

멱등성: 도구 호출을 안전하게 재시도할 수 있도록 설계하세요. 도구를 호출한 후가 아니라 전에 상태를 기록하세요. 도구 호출이 중간에 실패하면, 에이전트가 중단된 지점에서 재개할 수 있어야 합니다.

시크릿 관리: Skills에 자격 증명을 포함해서는 안 됩니다. Skill 파일 상단에 필요한 환경 변수를 정의하세요. 기존 시크릿 매니저 (1Password CLI, AWS Secrets Manager 등)를 사용하여 채우세요.

범위 제한: 프로덕션 에이전트에는 가드레일이 필요합니다. 파일을 쓰고, API를 호출하고, CLI 도구를 실행할 수 있는 Skill은 실제 피해를 줄 수도 있습니다. 명시적인 경계를 정의하세요:

## 범위 제약
- 절대 main이나 master 브랜치에 직접 push하지 않는다
- 명시적인 사용자 확인 없이 절대 파일을 삭제하지 않는다
- 예상 비용을 먼저 보여주지 않고 절대 비용이 드는 API 호출을 하지 않는다
- 읽기 전용 모드 사용 가능: 명령어 앞에 "분석만, 수정하지 않음"을 붙인다

관측 가능성: .agent/ 스크래치 디렉토리 패턴은 감사 로그의 역할도 합니다. 각 세션의 도구 출력, 중간 분석, 결정 근거가 보존됩니다. 임시 파일에는 .agent/.gitignore에 추가하되, 세션 요약은 커밋하여 팀이 에이전트가 한 일을 볼 수 있게 하세요.

실패 모드: 도구를 사용할 수 없을 때 어떻게 되는지 정의하세요. 도구 호출을 조용히 건너뛰는 에이전트는 미묘하게 잘못된 출력을 생성합니다. 도구가 없을 때 크게 실패하는 에이전트가 수정하기 더 쉽습니다.

살펴볼 만한 커뮤니티 Skills

Claude Skills Hub의 여러 저장소가 이러한 패턴을 프로덕션 수준의 품질로 보여줍니다:

  • obra/superpowers-skills: 이전에 중단된 곳에서 계속하는 작업 지향 에이전트를 구축하는 방법을 보여주며, 깔끔한 상태 직렬화를 제공합니다.
  • levnikolaevich/claude-code-skills: JSON 상태 파일과 명시적인 읽기/쓰기 프로토콜로 구현된 세션 간 메모리의 예시입니다.
  • mrgoonie/claudekit-skills: 명확한 의존성 선언과 도구를 사용할 수 없을 때의 우아한 성능 저하를 가진 도구 통합 패턴을 보여줍니다.

이러한 각 저장소는 Skill 파일을 캐주얼한 프롬프트가 아닌 공식적인 사양으로 다룹니다. 그 엄격함이 프로덕션에서 신뢰할 수 있게 만듭니다.

핵심 정리

더 스마트한 Claude Skills 에이전트를 구축하는 것은 세 가지 규율에 달려 있습니다:

  1. 메모리를 명시적으로 설계하세요. 에이전트가 무엇을 기억해야 하는지, 어디에 있는지, 언제 업데이트되는지를 미리 결정하세요. 이것을 우연에 맡기지 마세요.

  2. 도구 의존성을 선언하세요. 모든 Skill 상단에 필요한 도구를 나열하세요. 시작 시 확인하세요. 없을 때 크게 실패하세요.

  3. Skill 파일을 계약으로 다루세요. 동작, 메모리 프로토콜, 도구 사용, 범위 제한을 정의합니다. 문제가 생기면, Skill 파일에서 디버깅하세요.

Claude Skills Hub의 커뮤니티 Skills는 이러한 패턴을 실제로 확인하는 가장 빠른 방법입니다. 저장소 컬렉션을 찾아보고, 워크플로에 맞는 몇 가지 Skills를 설치하고, 직접 만들기 전에 메모리와 도구 통합 패턴을 연구하세요.

데모 에이전트와 프로덕션 에이전트의 차이는 기반 모델이 아닙니다 — 그것을 안내하는 Skill에 들인 정성입니다.

Skills in This Post

Related Posts