Back to list

Personal Assistant - 문서 참조 구조 정의

목차11

TL;DR

  • 목적: Claude가 참조하는 여러 문서 및 다른 리포지토리/폴더와의 연결
  • 핵심
    • System Prompt: 프롬프트 최적화
    • CLAUDE.md, INDEX.md

개요

아마 프로젝트를 진행하고 실제로 내가 사용하면서, Claude는 여러 문서를 생성하고 업데이트 할 것이다. 그 중에는 /compact를 위한 Handoff 문서와 같은 임시 파일, 해야 할 일들을 잠시 적어놓는 todo 리스트 파일, 추후 개선이나 과거 행적(?) 추적을 위한 로그 파일 등, 다양한 목적의 파일들이 있을 것이다.

어느정도 규모를 잡은 이후, 내가 고민했던 다음 스텝은 이 문서들을 어떻게 관리할 것인가였다.


Claude의 기본 문서 참조 구조

Claude를 포함한 AI Agent들은 기본적으로 모든 프롬프트에 기본적으로 주입되는 시스템 프롬프트를 사용자가 관리할 수 있도록 한다. 예를들어 이전까지 내가 사용하던 Windsurf나 다른 툴들의 경우 global-rule 혹은 Agents.md를, 클로드의 경우에는 CLAUDE.md 라는 파일을 둔다.

CLAUDE.md

더 좋은 CLAUDE.md 작성을 위해, 여러가지 팁들이 알려져있다:

  • 한국어보다는 영어로 작성하는 것이 토큰 절감 측면에서 유리하다.
  • Anthropic에서는 가급적 CLAUDE.md를 간결하게 유지할 것을 권고. 본인은 200Line 이내로 관리하고 있음.
  • 여기에 모든 내용을 담을 필요 없음. 필요할 때 에이전트가 적절한 파일을 읽을 수 있도록 index만 잘 걸어줘도 좋음

아무래도 매 프롬프트마다 같이 보내지는 시스템 프롬프트이기 때문에, 이 CLAUDE.md가 얼마나 잘 관리되느냐가 곧 토큰, 응답 시간, 품질 모두에 영향을 끼칠 수 밖에 없는 구조이다.


구조

초기에 생각했던 구조는 위 이미지와 같다. 가장 신경썼던 부분은 “Claude가 당장 필요없는 문서는 읽지 않도록” 하는 것이었다. 즉, ‘항상 로드되는 것’과 ‘필요할 때 읽는 것’을 물리적으로 가르되, 필요한 기능으로의 라우팅(routing)이 문제없이 진행되도록 하는 것이 주요 과제였다.

흐름

큰 흐름을 설명하자면, CLAUDE.md에서부터, 에이전트는 필요하다고 판단될 경우 하위 문서를 따라가고 따라가서 필요한 내용을 찾아가는 과정을 겪게된다.

  1. CLAUDE.md에서 가장 기초적인 내용들을 잡아준다. (인격, 응답 방식, 작업 방식, 로깅, …) 가장 중요한 것은, “어떤 상황이 되면 → INDEX의 어떤 부분을 참고해서 작업을 진행해라”라고 명시되어있다는 점.

  2. “필요하다면” INDEX.md에서 필요한 내용을 찾는다. “필요하면 저기 가서 너가 직접 읽어” 라는 방식을 취하므로, 내용이 길어지지 않도록 작성되어있다.

    스크린샷 2026-07-13 231443
    실제 내용 일부인데, 위 사진과 같이 일종의 Table을 만들어서 언제 어떤 파일을, 어떤 스킬과 함께 사용할 수 있는지를 걸어놓은 문서이다.

3-a. 실제 어떤 도메인 기능을 이용하기 위해, 해당 도메인의 작업 규칙을 모아둔 RULES.md를 읽는다. 여러 문서의 CRUD를 다루므로, 주된 내용은 어떤 문서를 언제, 어떻게 수정하고 언제 어떤 문서를 어떻게 읽어야하는지에 대한 내용이다.

3-b. 만약 Obsidian Vault에 접근하는 등 이 리포지토리에서의 작업 범위를 넘어가게 된다면, 이때는 해당 리포지토리의 사용 설명서를 명시해둔 또다른 CLAUDE.mdINDEX.md를 참조한다.

물론 위의 모든 문서들을 내가 실제로 읽거나 편집할 단계는 지났으므로, 대부분은 영문으로 바꿔둔 상태이다.

두 축(Axis)

처음에는 문서들을 그냥 .claude 폴더에서 관리하고자 하였으나, 점점 쌓이면서 구조를 손봐야 할 필요성을 느꼈다. 내 방법이 정답인지는 모르겠으나, 나는 처음부터 두 개의 축으로 문서 관리를 강제하기로 하였다.

  • X-axis: 무엇에 관한 문서인가? (주제)

    • 관심사 별로 분류한 것. 각 관심사는 유사한 성격의 docs로 볼 수 있다.
    • 여러 종류의 Todo, Logging, Handoff 문서들이 생겨나게 되는데, Todo들은 Todo끼리, Logging은 Logging끼리 모아두어, 동일한 규칙으로 각 문서들을 관리할 수 있다.
  • Y-axis: 관심사를 어떻게 관리하는가? (정리 방법)

    • 모든 관심사는 대체로 유사한 구조를 갖게 된다 (이 구조에 종속되지 않는다면, 별도의 repository를 만드는 편이 편하다)
    • 처음 보는 도메인이더라도 일단 “RULES.md부터 열면 된다”가 항상 성립하고, 공통되는 뼈대는 INDEX.md에 한 번만 적어두면 되므로 확장에 용이하다.

Problem & Solve

1. MEMORY.md

claude는 기본적으로 MEMORY.md라는 문서를 관리한다. 문제는, 여기엔 언제 어떤 내용이 들어오고 어떤 내용이 삭제될지 모른다는 점이다. 즉 오늘 기억하던 메모리가 내일은 휘발될 수 있기 때문에, MEMORY.md에 어떤 내용이 들어있든 신경쓰지 않는 구조로 설계하였다.

2. HANDOFF, TODO, LOG 문서들

기존에는 특히 HANDOFF, TODO, LOG 문서들이 뒤섞여 사용되고는 했었다.

  • HANDOFF: /compact 시 다음 채팅 시작 시점에 반드시 참고할 문서. 그러나 TODO의 내용과 중복되거나 이미 끝나서 LOG에 포함된 내용도 중복해서 포함하였음
  • TODO: 남은 작업. 그러나 완료된 작업도 지워지지 않고 남아있었음
  • LOG: 개발 일지. 사실상 TODO와 HANDOFF의 혼합체.

그러나 구조 개편 이후, (X-axis로 나눴으므로) 이를 완전히 분리할 수 있었다:

  • HANDOFF: 당장 다음 채팅 시작 시점에 알아야 할 내용 (마지막 완료 - 진행중 - 관련 todo)
  • TODO: 남은 작업 및 변경 후 검증 대기중인 작업들. 완전 완료된건 LOG로 이전.
  • LOG (Dev-log): 언제 어떤 부분이 왜 바뀌었는지를 기술하는 일지. “xyz 작업 남음” 등은 TODO나 HANDOFF로 모두 이전

특히 제일 상단에 RULES.md를 따로 둠으로써, 위 문서들의 책임 범위와 관리 방식이 명확하게 정의되었기에 서로 ‘reference’는 할지언정 (ex: todo의 “xyz” 항목 참고), 중복되는 내용은 크게 줄어들어, 문서 간 정합성이 어긋나는 빈도가 크게 줄어들었다.

그리고 LOG 부분은 추후 로깅 시스템을 고도화하여 hill-climbing을 구현하기위해 필수적으로 거쳤어야 했던 항목이었던 만큼, 충분한 시간을 투자할만한 작업이었다는 생각이 든다.


결과

  • CLAUDE.md의 길이가 85 → 40줄로 대폭 감소. 세션 시작 토큰 절감
  • HANDOFF, TODO, LOG의 완전한 책임 분리
    • 부가적인 효과로, 중복이 감소하고 레퍼런스 구조로 가면서 문서 정합성과 간결성도 확보

Comments

링크가 복사되었습니다