Communitygithub.com

m1nga/experience-pack

프로젝트 경험 학습을 위한 에이전트 스킬: EXPERIENCE.md 원장에 사건을 기록하고, 재사용 가능한 교훈을 추출하며, 낡은 결정이 프로젝트 기억을 오염시키는 것을 방지합니다.

experience-pack란 무엇인가요?

Experience Pack은 프로젝트가 운영 과정에서 얻은 경험(특히 장애, 실패, 효과적이었던 방법)을 체계적으로 기록하고, 이를 다른 프로젝트에서도 재사용할 수 있는 추상화된 교훈으로 정제하는 AI 에이전트 스킬입니다. 이 스킬은 크게 세 가지 프로토콜로 구성됩니다: Protocol A(RECORD)는 프로젝트 루트의 `EXPERIENCE.md` 파일에 구체적인 사건과 대응, 비용, 교훈 가능 여부를 기록합니다. Protocol B(DISTILL)는 경계 테스트(boundary test)를 통해 프로젝트 고유 명사와 전략적 결정을 걸러내고, 보편적으로 적용 가능한 추상 교훈만을 `LESSONS.md`와 같은 휴대용 파일로 추출합니다. Protocol C(SHARE/APPLY)는 다른 프로젝트가 이 추출된 교훈을 자신의 컨텍스트에 맞게 채택하고 적용하는 과정을 안내합니다. 이 스킬은 공개 저장소에서 `EXPERIENCE.md`를 gitignore 처리하고, 복제/복구 시 기억 손실을 방지하기 위한 명시적 백업 채널을 요구하는 등 데이터 위생 규칙을 엄격히 적용합니다. 주로 Claude Code, Cursor, Codex와 같은 AI 코딩 에이전트 환경에서 사용되며, 프로젝트의 전략이나 제품 사실을 절대 다른 프로젝트로 복사하지 않는다는 원칙을 가지고 있습니다.

지원 대상✓Claude Code~Codex CLI~Cursor
npx skills add m1nga/experience-pack

즐겨 사용하는 AI에게 물어보기

이 에이전트 스킬이 미리 로드된 새 채팅을 엽니다.

문서

경험 팩 (Experience Pack)

한 문장: 모든 프로젝트는 자신의 경험 원장을 유지합니다. 경계 테스트가 휴대 가능한 부분을 추출하고, 휴대 가능한 부분만이 프로젝트 간에 이동합니다.

타이핑되거나 받아쓰기된 입력 모두 작동합니다: 지저분하고 구어체적이며 여러 언어가 혼합된 "방금 무슨 일이 잘못되었는지"에 대한 설명은 원장 항목의 유효한 원자재입니다 — 스킬이 구조화하고, 사용자는 확인만 하면 됩니다.

두 계층

계층파일소유자내용 규칙
원장프로젝트 루트의 EXPERIENCE.md프로젝트날짜, 구체적, 프로젝트 특정 정보 허용; 프로세스 경험만 — 절대 제품 진실(truth)이나 결정 등록부(decision register)가 아님
휴대 가능프로젝트의 휴대용-교훈 파일(예: LESSONS.md) 및/또는 이 스킬의 참조 팩이동추상적, 제품 명사(product-noun) 없음, 다른 프로젝트에서 낯선 사람이 읽어도 참이어야 함

파이프라인: 무언가 발생 → 원장 항목 (같은 날, 아프고 있을 때) → 주기적 증류 과정 → 휴대용 교훈. 전략과 제품 결정은 절대 이동하지 않음: 경험은 상속되고, 결정은 죽습니다.

프로토콜 A — RECORD (원장)

먼저 루트 확인. 원장은 프로젝트 루트에 있습니다 — 따라서 쓰기 전에 프로젝트 루트가 있는지 확인하십시오. 현재 작업 디렉토리가 홈 디렉토리, Desktop, Downloads 또는 기타 비프로젝트 위치인 경우, 이 경험이 속한 프로젝트를 묻고 해당 위치에 원장을 작성하십시오. 홈이나 Desktop 디렉토리에 EXPERIENCE.md를 절대 생성하지 마십시오. 프로젝트 디렉토리를 확인할 수 없거나 대상에 쓸 수 없는 경우, 항목을 조용히 버리지 말고 완전히 포맷된 항목을 복사 가능한 텍스트로 출력하고 사용자에게 최종적으로 어디에 있어야 하는지 알려주십시오.

첫날(또는 첫 사용 시)에 프로젝트 루트에 EXPERIENCE.md를 생성하십시오. 다음 상황 중 하나라도 발생하면 항목을 추가하십시오: 사건으로 인해 실제 시간/비용/신뢰가 소모된 경우; 방법이 명백히 효과가 있었던 경우; 독립적인 검토자가 작성자가 놓친 것을 발견한 경우; 협업 패턴이 성공하거나 실패한 경우; 사용자가 에이전트의 방향을 수정한 경우.

항목 형식:

### YYYY-MM-DD — 제목
**무슨 일이 있었나:** 사실, 구체적으로.
**우리가 한 일:** 대응, 구체적으로.
**효과가 있었던 것 / 실패한 것:** 둘 다, 솔직하게.
**비용:** 시간 / 토큰 / 신뢰 / 재작업.
**휴대 가능?** 예 → <lesson-slug> | 아직 | 아니오 (프로젝트 특정).

규칙: 제품 사실이 아닌 프로세스 경험을 기록하십시오; 작업 공간에 오염 방지 규칙(금지된 명사)이 있는 경우, 원장은 이를 따릅니다; 이전 항목을 소급하거나 다시 작성하지 마십시오 — 수정 사항은 새 항목으로 추가하십시오. 프로젝트가 사용하는 언어로 원장 항목을 작성하십시오(사용자의 기존 습관을 따르고, 알 수 없는 경우 한 번 물어보십시오).

팩을 채택한 프로젝트에서 정제된 바인딩 규칙:

  • 기록은 완료의 일부입니다. 사건 수정은 해당 원장 항목이 존재할 때까지 완료된 것으로 선언될 수 없습니다 — 원장은 일기가 아니라 게이트(gate)입니다. (초기 채택자는 하루에 8개의 항목을 소급 입력했습니다. 사건 당시 기록을 강제하는 것이 없었기 때문입니다; 전투 상황에서는 일기를 쓸 시간이 절대 없습니다.)
  • 부트스트랩 가져오기는 합법적이며, 조용한 소급 날짜는 그렇지 않습니다. 기록이 있는 프로젝트에 팩을 채택할 때: 각 항목의 날짜를 사건 발생 날짜로 지정하고, 가져오기를 원장 상단의 날짜가 적힌 메모에 선언하십시오. 선언된 가져오기 없이 과거 날짜의 항목은 위조입니다.
  • 배포 위생. 원장에는 프로젝트 내부 정보가 포함됩니다. 공개 원격 저장소가 있는 저장소에서는 기본적으로 EXPERIENCE.md를 gitignore 처리하고, 경계 테스트를 거친 휴대용 계층만 게시하십시오.
  • 발견 가능성. 프로젝트의 기본 진실 파일(CLAUDE.md / AGENTS.md / 시스템 맵 / 상태 문서)에 한 줄의 포인터를 추가하여 컨텍스트가 없는 에이전트가 원장을 찾을 수 있도록 하십시오; 발견 불가능한 원장은 다음 세션을 위해 아무것도 기록하지 않습니다.
  • gitignore 처리된 원장은 선언된 탈출 경로가 필요합니다. 원장을 gitignore 처리(위 규칙)하면 복제/푸시 복구에서도 제거됩니다. gitignore 처리된 원장은 반드시 선언된 백업 또는 동기화 채널이 있어야 합니다 — 개인 저장소나 브랜치, 동기화된 폴더, 예약된 복사본; 사용자가 선택 — 원장의 헤더 노트에 한 줄로 기록됩니다. 이것이 없으면, 머신 변경이나 재복제 시 프로젝트의 기억이 조용히 지워집니다: 머신 전환은 다음 사건이 반복될 때까지 아무도 눈치채지 못하는 기억상실증이 됩니다.

프로토콜 B — DISTILL (경계 테스트)

"휴대 가능? 예/아직"으로 표시된 각 원장 항목에 대해 다음 테스트를 순서대로 실행하십시오:

  1. 대체 테스트 — 모든 고유 명사와 특정 숫자를 제거하십시오. 해당 진술이 여전히 무언가를 가르치는가? 무너지면 → 결정이므로 죽습니다.
  2. 메커니즘 vs 선택 — 그것이 사물이 작동하거나 실패하는 방식(메커니즘 → 상속)을 말하는가, 아니면 누가/무엇이/얼마나 선택되었는지(선택 → 죽음)를 말하는가?
  3. 재유도 테스트 — 똑똑한 낯선 사람이 새로운 프로젝트의 자체 컨텍스트로부터 그것을 재유도할 수 있는가? 오래된 프로젝트의 전략에서만 나올 수 있다면, 그것은 오래된 전략이 말하는 것이므로 죽습니다.
  4. 매몰 비용 테스트 — 그것의 유일한 가치가 그에 노력을 쏟았다는 사실인가? 죽습니다.
  5. 검증 가능성 테스트 — 그것을 확인하는 데 죽은 명사가 필요한가? 추상화하거나 죽게 두십시오.

생존자는 하나의 추상적인 명령형 줄 + 이유 + 적용 방법으로 다시 작성되고, 출처(provenance) 태그 ("이전 프로젝트, 증류됨 · 날짜")가 붙습니다. 휴대용 계층은 영어(또는 이중 언어)로 작성하십시오: 원장은 프로젝트가 사용하는 어떤 언어로든 작성될 수 있지만, 휴대용 교훈은 낯선 사람에게 전달됩니다 — 프로젝트 지역 관용어는 그들을 좌초시킵니다. 모호한 항목은 기본적으로 죽음(DIE)입니다 — 원장은 이후 과정에서 복구할 수 있도록 보관합니다. 다운그레이드(DOWNGRADE, 드물게): 전략 형태의 인공물은 명시적인 가설(HYPOTHESIS)과 재검증 조건으로만 다른 프로젝트에 들어갈 수 있으며, 오직 사용자의 호출에 의해서만, 절대 조용히 이루어지지 않습니다.

프로토콜 C — SHARE / APPLY (다른 프로젝트가 이 프로젝트로부터 배움)

  1. 받는 프로젝트에서: references/rebuild-experience-pack.md (이 스킬의 패키지된 이야기) 및/또는 소스 프로젝트의 휴대용-교훈 파일을 읽으십시오 — 절대 소스 프로젝트의 원장, 진실 파일 또는 전략을 읽지 마십시오.
  2. 받는 프로젝트의 자체 EXPERIENCE.md를 부트스트랩합니다(프로토콜 A, 루트 확인 포함).
  3. 팩의 다섯 가지 조언을 설정 체크리스트로 살펴보고, 적용되는 것을 채택하며, 차이점을 받는 프로젝트의 첫 번째 원장 항목으로 기록합니다.
  4. 채택된 교훈은 출처 태그와 함께 받는 프로젝트에 들어갑니다; 이는 사용자 결정이 아닌 엔지니어링 제약 조건이며 — 사용자는 이 중 어느 것이든 재분류할 수 있습니다.

경계 — 이 스킬이 절대 하지 않는 일

  • 어느 방향으로든 프로젝트 간에 전략, 제품 사실, 페르소나, 가격, 채널, 클라이언트 이름 또는 계정 ID를 절대 복사하지 않습니다.
  • 원장을 결정 등록부로 취급하지 않습니다; 결정은 자체 출처 규칙을 가진 프로젝트의 진실/결정 파일에 있습니다.
  • 다른 스킬이나 사용자의 글로벌 설정을 절대 편집하지 않습니다.
  • 격리/보관된 자료를 팩을 "풍부하게" 하기 위해 읽지 않습니다; 증류 입력은 원장과 라이브 파일만입니다.

인접 스킬과의 관계

  • conclude-rounds — 현재 대화의 라운드를 검토합니다. 사용자가 이 대화에 대해 "복반(复盘)" 또는 "되돌아보자"고 말하는 것은 거기에 속합니다; 이 스킬은 대화를 넘어서는 프로젝트 수준의 사후 분석을 소유합니다.
  • iteration-close — 지속적인 방향의 반복을 종료합니다(증류, 짐 제거, 태깅, 시드). 둘 다 설치된 경우 experience-pack의 프로토콜 B를 그 일부로 실행합니다; iteration-close는 종료 의식을 소유합니다. 두 스킬 모두 준수해야 할 주의사항: "git 히스토리가 아카이브다"라는 것은 추적된 파일에만 적용됩니다. 추적되지 않거나 gitignore 처리된 자료(공개 저장소의 개인 IP)는 아카이브가 없습니다 — 정리 전에 명시적인 로컬 규칙(예: _retired/)으로 격리하십시오; 삭제는 정리가 아니라 영구적인 손실입니다.
  • diagnose-project-rebuild — 방향이 교체될 때, 여기의 경계 테스트는 무엇이 살아남을지 결정하는 데 사용되는 동일한 테스트입니다; 재구축 스킬은 진단 및 제거 메커니즘을 소유하고, 이 스킬의 휴대용 계층만을 입력으로 받습니다.
  • 이 스킬은 제품에 구애받지 않으며(product-agnostic) 그 상태를 유지해야 합니다: 프로젝트의 명사가 이 파일이나 그 참조에 나타난다면, 그것은 결함입니다 — 제거하십시오.

엔진 노트

여기 있는 어떤 것도 특정 공급업체의 런타임에 의존하지 않습니다. "새 세션"과 "컨텍스트 없는 탐색"은 이전 컨텍스트 없이 시작된 모든 에이전트 인스턴스(새 채팅, 하위 에이전트 또는 두 번째 도구)를 의미합니다. 스킬 런타임이 없는 경우, 수동으로 프로토콜을 적용하십시오: 위의 파일 형식과 테스트가 스킬 자체입니다.

참조

references/rebuild-experience-pack.md — 실제 다섯 번의 재구축 오염 사가에서 얻은 패키지된, 명사 없는 경험: 여섯 가지 오염 문, 소스-잠금 재설정 방법, 세 가지 탐색 검증 스택, 다중 AI 협업 프로토콜, 다섯 가지 예방 조언.

관련 스킬