AI 맥락, 가장 싸게 넘기기

TL;DR

AI 코딩 도구는 대화가 끊기면 맥락을 잃는다. “모든 기능 = 하나의 마크다운 문서”로 추적하는 시스템을 만들었더니, 새 대화에서도 파일 하나만 읽으면 바로 작업을 이어갈 수 있게 됐다. INDEX.md 캐시로 토큰도 50배 절약.


문제

Claude Code로 3개월 넘게 개발하면서 계속 같은 문제를 겪었다.

대화 #1: "주간 일정 기능 만들어줘"
→ 50% 구현

(컴퓨터 종료)

대화 #2: "어제 작업 이어서..."
→ AI: "뭘 하고 있었는지 모르겠는데요?"

매번 처음부터 다시 설명해야 하는 거다. TODO도 코드 주석, 노션, Git Issues, 머릿속에 흩어져 있으니 AI한테 “지금 뭘 해야 하는지”를 전달하는 것 자체가 일이었다.


해결: 기능 하나 = 문서 하나

아이디어는 단순하다. 기능을 시작하면 폴더를 하나 만들고, 그 안에 모든 맥락을 넣는다.

features/
├── INDEX.md                       # 전체 요약 (캐시)
├── F001-classroom-management/
│   ├── README.md                  # 작업 추적 + 맥락
│   ├── blog.md                    # 블로그 초안 (선택)
│   └── images/                    # 스크린샷
├── F002-controller-refactoring/
└── ...

3개월간 실제로 쓰면서 130개 기능을 이걸로 관리했다. 핵심 설계 결정 두 가지를 소개한다.


1. 상태 관리는 frontmatter로

처음엔 todo/, in-progress/, done/ 폴더로 나눠서 파일을 옮기려고 했다. 근데 이러면 git log --follow를 써야 하고, GitHub blame도 깨지더라.

그래서 파일은 그대로 두고 frontmatter만 바꾸는 방식으로 갔다.

---
id: F001
title: 교실 관리 시스템
status: DONE              # TODO → IN_PROGRESS → DONE
priority: HIGH
created: 2025-10-18 KST
completed: 2025-10-21 KST
elapsed_hours: 16
---

## ✅ 완료된 작업
- [x] 교실 CRUD API
- [x] 좌석 배치 UI

## 🔗 관련 커밋
- `8356a91` - feat: 교실 관리 기능 추가

git log features/F001-.../README.md 하면 해당 기능의 전체 히스토리가 나온다. 파일을 안 옮기니까 당연한 거다.


2. INDEX.md = 캐시

130개 파일을 매번 다 읽히면 토큰이 수만 개 날아간다. 대신 요약본 하나만 읽으면 된다.

## 📊 요약
- TODO: 10개 | IN_PROGRESS: 8개 | DONE: 89개

## 🚀 IN_PROGRESS
### [F128](F128-teacher-mobile-app/) 교사용 모바일 앱
- 진행률: 40%

INDEX.md 하나 읽는 데 ~300 토큰. 전체 파일 읽으면 ~15,000 토큰. 50배 차이다.

AI한테 “지금 뭐 하고 있었지?”라고 물으면, INDEX.md만 보고 바로 대답할 수 있다. 상세 내용이 필요하면 그때 개별 파일을 읽으면 되고.


슬래시 커맨드로 자동화

이 시스템을 수동으로 관리하면 귀찮아서 안 쓰게 된다. 그래서 Claude Code 슬래시 커맨드로 자동화했다.

  • /finish: 작업 완료 시 frontmatter 업데이트 → INDEX.md 갱신 → 작업일지 작성 → Git 커밋까지 한 번에
  • /blog: Features 문서 + Git diff를 분석해서 블로그 초안 자동 생성. 스크린샷 추천까지 해줌
  • /pause & /resume: 작업 중단/재개. INDEX.md만 읽어서 어디서 멈췄는지 바로 파악

특히 /blog가 좋았던 게, 개발 끝나자마자 실행하면 그때의 맥락으로 초안이 나온다. 3주 뒤에 “뭐했더라…” 하면서 끙끙대는 일이 없어졌다.


실제로 써보니

130개 기능을 이 시스템으로 관리한 결과:

  Before After
새 대화에서 맥락 전달 매번 5-10분 설명 INDEX.md → 개별 파일, 즉시
TODO 관리 노션+주석+머릿속 features/ 한 곳
블로그 작성 “나중에…” → 안 씀 /blog로 바로 초안

다른 도구와 비교하면:

도구 Features 시스템과의 차이
Claude Task Master MCP 기반 36개 도구. 우리 건 마크다운만 씀
GitHub Issues 프로젝트 단위. 우리 건 기능 단위로 더 세분화
Notion 수동 관리. 우리 건 슬래시 커맨드로 자동화

블로그 초안 자동 생성이랑 스크린샷 타이밍 관리는 다른 도구에서 못 본 기능이다.


얻은 교훈

AI는 도구가 아니라 팀원이다. 팀원한테 매번 처음부터 설명하면 비효율적이듯, AI한테도 “읽어볼 문서”를 남겨두는 게 핵심이다. "F023 작업 시작"이라고만 하면 AI가 알아서 해당 문서를 읽고 맥락을 파악한다.

파일 이동은 Git의 적이다. 상태를 바꿀 때 폴더를 옮기면 히스토리가 꼬인다. Frontmatter가 답이다.

토큰은 돈이다. INDEX.md 캐시 하나로 50배를 아낄 수 있다. AI 도구를 쓸 때 “이 작업에 토큰이 얼마나 드는가”를 항상 생각해야 한다.


업계도 같은 방향으로 가고 있다

이 시스템을 3개월 전에 만들어서 쓰고 있었는데, 최근 나온 도구들을 보니 방향이 거의 같더라.

Google Antigravity는 에이전트가 작업 계획, 구현, 검증까지 수행하면서 Artifacts(태스크 목록, 구현 계획, 스크린샷)를 생성한다. AWS Kirospec-driven development라고 해서, 한 줄 프롬프트에서 요구사항 문서를 자동 생성하고 그걸 기반으로 개발한다. Claude Code 자체도 2.1.0에서 sub-agent, hooks, skills 같은 에이전트 오케스트레이션 기능이 추가됐다.

표준화 움직임도 비슷하다. AGENTS.md는 Linux Foundation 산하에서 “AI 에이전트를 위한 README” 포맷을 표준으로 만들고 있고, Google Conductor는 마크다운 파일로 작업을 계획하고 pause/resume하는 구조를 제공한다. GitHub Blog에서는 아예 마크다운을 프로그래밍 언어처럼 쓰는 spec-driven development를 소개하기도 했다.

결국 다 같은 문제를 풀고 있는 거다 — AI한테 맥락을 어떻게 넘기느냐. 에이전트가 더 자율적으로 움직일수록, 읽을 수 있는 맥락 문서의 가치는 더 올라간다.

마크다운 기반이라 도구에 종속되지 않는 것도 장점이다. Claude Code에서 Antigravity로 옮기더라도 features/ 폴더는 그대로 쓸 수 있다.


참고 자료


AI 코딩의 병목은 코드 생성 속도가 아니라 맥락 전달 속도다. 마크다운 파일 몇 개가 그 병목을 풀어준다.