LLM 에이전트 협업을 위한 파일 기반 상태 관리 설계
프로젝트 루트의 .claude 디렉토리를 활용해 LLM 기반 에이전트들이 DB 없이 마크다운 파일만으로 상태를 공유하고 병렬 협업할 수 있는 구조 설계 가이드
개요
여러 LLM 에이전트가 하나의 프로젝트에서 병렬로 작업할 때, 각 에이전트는 서로의 상태를 실시간으로 파악하고 충돌 없이 협업해야 한다. 이 문서는 별도의 데이터베이스 없이 프로젝트 루트의 .claude 디렉토리와 마크다운 파일만으로 이를 실현하는 설계 방법을 다룬다.
에이전트는 이 디렉토리 내의 .md 파일들을 읽고 쓰는 것만으로 프로젝트의 전체 상태를 파악하고, 서로의 작업 현황을 추적하며, 충돌 없이 결과물을 공유할 수 있다.
1. 디렉토리 계층 구조
.claude/
├── agents/ # 에이전트 페르소나 및 역할 정의
├── tasks/ # 작업 단위 추적 및 결과 기록
├── instructions/ # 협업 규칙, 컨벤션, 공통 지침
└── memories/ # 프로젝트 공유 맥락 및 장기 기억
agents/
각 에이전트의 역할, 전문 영역, 행동 원칙을 정의하는 페르소나 파일을 보관한다. 파일명은 {역할명}.md 형식을 따른다.
agents/
├── orchestrator.md # 전체 작업 조율 에이전트
├── frontend.md # 프론트엔드 전담 에이전트
├── backend.md # 백엔드 전담 에이전트
└── reviewer.md # 코드 리뷰 전담 에이전트
tasks/
작업의 생성부터 완료까지 전 생애주기를 파일명과 내용으로 추적한다. 파일명은 {YYYYMMDD}-{상태}-{작업ID}-{설명}.md 형식을 따른다.
tasks/
├── 20250410-TODO-001-api-endpoint-design.md
├── 20250410-IN_PROGRESS-002-user-auth.md
└── 20250410-DONE-003-db-schema.md
상태 전이 순서는 TODO → IN_PROGRESS → REVIEW → DONE 이며, 에이전트가 작업을 시작하거나 완료할 때 파일명을 직접 변경함으로써 상태를 갱신한다.
instructions/
모든 에이전트가 공통으로 따라야 할 컨벤션, 협업 규칙, 도메인 용어 정의를 보관한다.
instructions/
├── conventions.md # 파일 작성 규칙, 명명 규칙
├── domain-glossary.md # 프로젝트 도메인 용어 사전
└── tech-stack.md # 기술 스택 및 의존성 정의
memories/
에이전트 간 공유해야 할 장기 맥락, 중요 결정 사항, 실패 이력을 축적한다.
memories/
├── project-context.md # 프로젝트 배경 및 목표
├── decisions-log.md # 주요 기술 결정 이력
└── known-issues.md # 알려진 문제 및 주의사항
2. 파일 기반 워크플로우
작업 시작 시
에이전트가 새로운 작업을 시작하면 tasks/ 디렉토리에 TODO 상태로 파일을 생성하고, 작업을 인수받는 즉시 파일명을 IN_PROGRESS로 변경한다. 이 파일명 변경 자체가 에이전트가 해당 작업을 점유했다는 신호가 된다.
# 생성
tasks/20250410-TODO-005-payment-integration.md
# 작업 시작 후 즉시 변경
tasks/20250410-IN_PROGRESS-005-payment-integration.md
작업 진행 중
파일 내용의 진행 로그 섹션에 체크박스 목록으로 세부 진행 상황을 기록한다. 다른 에이전트는 이 파일을 읽어 현재 작업 상태를 파악할 수 있다.
작업 완료 시
파일명을 DONE으로 변경하고, 내용에 최종 결과물 경로, 산출물 요약, 후속 작업 제안을 기록한다.
# 완료 후 변경
tasks/20250410-DONE-005-payment-integration.md
3. 마크다운 템플릿 설계
agents/ 페르소나 정의 템플릿
# {에이전트 이름}
## 역할
이 에이전트의 담당 영역과 주요 책임을 한 문장으로 기술한다.
## 전문 영역
- 구체적인 전문 기술 또는 도메인 1
- 구체적인 전문 기술 또는 도메인 2
## 행동 원칙
1. 작업 시작 전 반드시 `tasks/`와 `instructions/conventions.md`를 확인한다.
2. 작업 점유 시 파일명을 즉시 `IN_PROGRESS`로 변경한다.
3. 완료 후 결과물 경로와 요약을 반드시 파일에 기록한다.
4. 다른 에이전트의 `IN_PROGRESS` 파일은 수정하지 않는다.
## 소통 방식
- 결과물을 남길 위치: `tasks/{작업ID}-DONE-...md`
- 질문이나 블로킹 이슈: 해당 task 파일의 `이슈` 섹션에 기록
tasks/ 작업 추적 템플릿
---
id: {작업ID} # 예: 005
status: TODO | IN_PROGRESS | REVIEW | DONE
assignee: {담당 에이전트명} # 예: backend
created_at: YYYY-MM-DD HH:MM
updated_at: YYYY-MM-DD HH:MM
priority: HIGH | MEDIUM | LOW
depends_on: [{선행 작업ID}, ...] # 없으면 빈 배열
---
# {작업 제목}
## 목표
이 작업이 달성해야 할 구체적인 결과를 기술한다.
## 세부 요구사항
- 요구사항 항목 1
- 요구사항 항목 2
## 진행 로그
- [ ] 세부 작업 1
- [ ] 세부 작업 2
- [ ] 세부 작업 3
## 결과물
<!-- 완료 시 작성 -->
- 산출물 경로: `src/...`
- 변경 요약:
## 이슈
<!-- 블로킹 이슈 또는 다른 에이전트에게 전달할 내용 -->
## 후속 작업 제안
<!-- 이 작업 완료 후 생성이 권장되는 후속 작업 -->
4. 정합성 유지 전략
여러 에이전트가 동시에 파일을 수정할 때 발생하는 충돌을 방지하기 위해 instructions/conventions.md에 다음 규칙을 기록하고 모든 에이전트가 이를 준수하도록 한다.
파일 점유 원칙
에이전트는 작업을 시작하기 전 tasks/ 디렉토리를 스캔해 동일한 작업 ID를 가진 IN_PROGRESS 파일이 존재하는지 확인한다. 존재할 경우 해당 작업을 건드리지 않는다. 존재하지 않을 경우 파일명을 IN_PROGRESS로 변경하는 행위 자체를 점유의 선언으로 간주한다.
# instructions/conventions.md
## 파일 점유 및 수정 규칙
1. IN_PROGRESS 파일은 assignee 에이전트만 수정할 수 있다.
2. TODO 파일을 IN_PROGRESS로 변경하기 전, 동일 ID의 IN_PROGRESS 파일이 없는지 반드시 확인한다.
3. 한 에이전트가 동시에 점유할 수 있는 작업은 최대 3개다.
4. DONE 파일은 어떤 에이전트도 수정할 수 없다. (append-only)
## 읽기 전용 파일
- `agents/*.md`: 에이전트 본인 파일만 수정 가능
- `instructions/*.md`: orchestrator 에이전트만 수정 가능
- `memories/decisions-log.md`: 결정 사항 추가만 허용, 기존 항목 수정 금지
## 충돌 발생 시 해결 절차
1. 충돌을 발견한 에이전트는 해당 task 파일의 `이슈` 섹션에 상황을 기록한다.
2. orchestrator 에이전트가 이를 감지하고 중재한다.
3. 중재 결과는 `memories/decisions-log.md`에 기록한다.
전체 지도 읽기 규칙
에이전트가 프로젝트에 처음 진입하거나 현황 파악이 필요할 때는 다음 순서로 파일을 읽는다.
memories/project-context.md— 프로젝트 목표와 배경 파악instructions/conventions.md— 협업 규칙 확인tasks/전체 목록 스캔 — 현재 작업 현황 파악agents/{자신의 역할}.md— 자신의 역할과 원칙 재확인
이 네 단계만으로 에이전트는 별도의 외부 시스템 없이 프로젝트의 현재 상태, 진행 중인 작업, 자신이 해야 할 일을 모두 파악할 수 있다.
5. CLAUDE.md를 활용한 에이전트 진입점 설계
.claude 디렉토리 기반 상태 관리 체계를 운영할 때, 프로젝트 루트에 CLAUDE.md 파일을 두면 에이전트가 프로젝트에 진입하는 순간부터 일관된 방식으로 동작하도록 유도할 수 있다.
CLAUDE.md의 역할
CLAUDE.md는 Claude 에이전트가 프로젝트 디렉토리에서 작업을 시작할 때 자동으로 읽는 파일이다. 이 파일에 .claude 디렉토리의 존재와 사용 방법을 명시해두면, 에이전트가 별도의 안내 없이도 파일 기반 협업 체계를 즉시 인식하고 따를 수 있다.
이 파일은 에이전트에게 다음을 전달하는 역할을 한다.
- 프로젝트 개요와 기술 스택
.claude디렉토리 구조와 각 하위 디렉토리의 역할- 작업 시작 전 반드시 수행해야 하는 사전 확인 절차
- 파일 점유, 상태 전이, 기록 방식 등 핵심 협업 규칙 요약
CLAUDE.md 작성 예시
# 프로젝트명
## 프로젝트 개요
이 프로젝트는 [설명]을 목적으로 한다.
## 기술 스택
- Frontend: Next.js, TypeScript, Tailwind CSS
- Backend: Node.js, Prisma, PostgreSQL
## 에이전트 작업 시작 전 필수 확인 절차
이 프로젝트는 `.claude/` 디렉토리를 통해 에이전트 간 상태를 공유한다.
작업을 시작하기 전에 반드시 아래 순서로 파일을 읽어라.
1. `.claude/memories/project-context.md` — 프로젝트 목표와 배경
2. `.claude/instructions/conventions.md` — 협업 규칙 및 컨벤션
3. `.claude/tasks/` 전체 목록 스캔 — 현재 작업 현황
4. `.claude/agents/{자신의 역할}.md` — 자신의 역할과 원칙
## 핵심 협업 규칙 요약
- 작업 시작 시 task 파일명을 `IN_PROGRESS`로 변경하여 점유를 선언한다.
- 다른 에이전트의 `IN_PROGRESS` 파일은 수정하지 않는다.
- 완료 시 파일명을 `DONE`으로 변경하고 결과물 경로를 기록한다.
- `DONE` 파일은 append-only이며 내용을 수정할 수 없다.
배치 위치와 탐색 범위
CLAUDE.md는 프로젝트 루트뿐 아니라 하위 디렉토리에도 배치할 수 있다. 에이전트는 현재 작업 디렉토리와 그 상위 경로를 순서대로 탐색하며 CLAUDE.md를 찾기 때문에, 특정 서브모듈이나 패키지 디렉토리에 별도의 CLAUDE.md를 두어 해당 영역에 특화된 지침을 제공하는 것도 가능하다.
또한 CLAUDE.md 안에서 @{파일경로} 문법을 사용하면 외부 파일을 인라인으로 참조할 수 있다. 이를 활용하면 CLAUDE.md 자체는 간결하게 유지하면서, 상세 내용은 .claude/instructions/ 하위의 파일로 분리하여 관리할 수 있다.
## 협업 규칙
@.claude/instructions/conventions.md
## 도메인 용어
@.claude/instructions/domain-glossary.md
운영 시 권장 사항
CLAUDE.md는 프로젝트의 규모가 커지거나 팀 구성이 변경될 때 함께 갱신되어야 한다. 이 파일이 실제 .claude 디렉토리 구조와 일치하지 않으면 에이전트가 잘못된 경로를 참조하거나 규칙을 오해할 수 있다. memories/decisions-log.md에 주요 변경 이력을 기록하는 것과 마찬가지로, CLAUDE.md의 내용 변경도 버전 관리 대상으로 취급하는 것이 바람직하다.