Communitygithub.com

LucioLiu/user-md

나를 아는 AI: 성장하는 USER.md. 당신의 AI가 당신을 이해하는 내용을 당신이 소유한 파일에 저장합니다. 수동 영역과 AI 관리 영역이 분리되어 있으며, 자동 수정 없이 폴더를 따라 이동합니다.

user-md란 무엇인가요?

이 스킬은 AI 에이전트(Claude Code, Cursor, Codex 등)가 사용자에 대한 이해를 구조화된 마크다운 파일(`USER.md`, `USER.local.md`, `user/*.md`)에 저장하고 관리하는 방법을 정의합니다. 사용자가 직접 작성하는 '수동 영역'과 에이전트가 관찰을 기반으로 추가하는 '침전 영역'을 명확히 분리하여, AI가 사용자의 선호도, 업무 스타일, 관계 등을 학습하되 사용자의 데이터 주권을 보장합니다. 에이전트는 침전 영역에만 추가할 수 있으며, 수동 영역 수정은 제안만 가능합니다. 파일은 평문 마크다운이라 모든 편집기로 열고 수정할 수 있고, 폴더를 따라 자동으로 이동합니다. 개인정보 보호를 위해 민감 정보는 절대 파일에 직접 쓰지 않고 참조 포인터만 저장하며, `USER.local.md`는 반드시 `.gitignore`에 포함시킵니다. 주요 기능으로는 세션 시작 시 전체 파일 주입, 신호 감지 시 즉시 침전, 정기적인 통합 및 중복 제거, 용량 임계값 초과 시 하위 파일로 분할 등이 있습니다.

지원 대상✓Claude Code~Codex CLI~Cursor
npx skills add LucioLiu/user-md

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

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

문서

user-md: 사용자 프로필 파일 규율

AI가 당신을 이해하는 내용은 당신이 소유한 파일에 있어야 합니다. 특정 업체의 클라우드 계정에 갇혀 있지 않아야 합니다. 이 문서는 프로필 파일의 규율(에이전트에게 파일을 만들고, 유지하고, 사용하는 방법을 가르침)이며, 메모리 시스템(런타임 및 자동 파이프라인 포함)이 아닙니다. 세부 규칙은 필요 시 references/를 참조하세요: 유지 규칙 curation.md, 계층 판단 기준 및 호스트 관계 layering.md. 전체 파일의 크기 및 빈도 임계값은 references/curation.md의 임계값 테이블에 한 번만 정의되며, 이 문서와 다른 파일은 참조만 하고 숫자를 복사하지 않습니다.

핵심 입장(네 가지)

  1. 파일은 당신이 소유합니다: 일반 텍스트 마크다운으로, 모든 편집기에서 읽고, 수정하고, 삭제할 수 있으며, 폴더를 따라 이동합니다(moves when you move).
  2. 이중 트랙 명확: 수동 영역은 사용자 전용이며, 에이전트는 제안만 할 수 있고 수정할 수 없습니다. 침전 영역은 에이전트 전용이며, 추가만 가능하고 각 항목은 흔적을 남겨야 합니다.
  3. 자동 수정 금지: 모든 수정은 흔적을 남깁니다(변경 기록 한 줄). 모든 내용은 사용자에게 표시되고, 편집 가능하며, 삭제 가능합니다.
  4. 사실 날조 금지: 침전 영역은 실제 관찰만 기록하며, 단일 관찰은 반드시 '검증 필요' 표시를 해야 합니다. 관찰되지 않은 것은 기록하지 않습니다.

1. 생성: 파일 패밀리와 다섯 섹션

파일 패밀리 세 가지

파일내용특성
USER.md기기와 프로젝트를 넘어 유효한 사용자 프로필이식 가능; 세션마다 전체 주입, 작은 크기 유지 필요 (임계값은 references/curation.md 참조)
USER.local.md기기를 바꾸면 무효화되는 내용: 환경/경로/도구 체인/자격 증명 포인터기기 로컬; 반드시 gitignore
user/*.md 오버플로우 보조 파일침전 영역이 하한선 초과 시 이동된 세부 내용주 파일에 인덱스 한 줄 남기고 필요 시 로드

USER.md 다섯 섹션 (최종 구조, 템플릿은 templates/USER.md 참조)

  1. ## Who I am — 신원 사실: 역할/배경/호칭. 사실과 선호도는 분리하여 저장 (두 유형의 정보를 분리하는 것은 여러 제품급 메모리 시스템의 공통된 방식).
  2. ## How I work — 선호도와 스타일: 의사소통 방식/결과물 기준/검토 습관/기본 권한 경계.
  3. ## Our relationship — 관계와 협업: 무엇을 물어야 하는지, 무엇을 직접 수행해야 하는지, 피드백은 어떻게 제공할지.
  4. ## What I'm up to — 동적 인식 계층: 현재 목표와 진행 중인 작업 — 명시적으로 수정 가능한 가정, 증거에 따라 업데이트되고, 만료 시 삭제.
  5. ## Learned by your agent — 에이전트 침전 영역 (규칙은 아래 이중 트랙 체계 참조).

명명 규율: 섹션 이름은 facts / preferences 체계를 따릅니다. persona라는 용어는 문서 전체에서 사용 금지 — UX 맥락에서는 가상 프로토타입 사용자를 의미하고, 에이전트 맥락에서는 에이전트 자체의 인격을 의미하여 이중 점유로 인해 반드시 모호함이 발생합니다.

시작하기: templates/에서 두 개의 템플릿을 작업 영역 루트로 복사하고, USER.local.md를 .gitignore에 추가한 후, 처음 네 섹션을 채우는 데 5분을 투자하세요. 비워 두어도 실행되지만, 에이전트는 매 세션마다 당신에 대한 인식이 전혀 없습니다.

2. 유지: 이중 트랙 체계와 침전 규율

이중 트랙 체계

  • 수동 영역 (처음 네 섹션): 사용자가 직접 작성. 에이전트가 내용이 만료되었거나 모순을 발견하면 제안만 가능 (제안 텍스트와 이유 제시). 사용자가 직접 수정하거나 명시적으로 동의한 후에만 변경하며, 변경 후 파일 끝 변경 기록에 한 줄을 남깁니다.

  • 침전 영역 (다섯 번째 섹션): 에이전트가 추가. 각 항목 형식:

    - 【YYYY-MM-DD · 출처 이벤트】규칙 본문.【단일 관찰 검증 필요】

    날짜+출처는 각 항목의 출생 증명서입니다. 단일 관찰은 반드시 '검증 필요' 표시를 해야 합니다. 동일 유형의 관찰이 반복되어 승격 임계값에 도달하면 (임계값은 references/curation.md 참조) 승격 제안을 시작할 수 있으며, 사용자 확인 후 수동 영역으로 이동합니다. 전체 형식과 절차는 references/curation.md 참조.

신호와 오탐

  • 침전 가능 신호 세 가지: 수정 (사용자가 당신의 방식이나 이해를 수정함), 반복 선호도 (동일한 요구가 다른 상황에서 반복됨), 명시적 표현 (사용자가 "기억해", "앞으로는 항상 이렇게"라고 직접 말함).
  • 즉시 추가 하드 규칙: 세 가지 신호 중 하나에 해당하고 오탐 필터를 통과하면 -> 즉시 침전 영역에 추가 — 배치하지 않고, 세션이 끝날 때까지 기억에 의존하여 나중에 작성하지 않습니다. 인식했는데 작성하지 않으면, 이 규율이 없는 것과 같습니다.
  • 오탐 필터: 일회성 컨텍스트는 침전하지 않습니다 (현재 작업의 특수 요구 사항 != 장기 선호도). 매우 짧은 메시지는 기본적으로 무시됩니다 (필터 기준은 references/curation.md 참조). 감정적인 순간의 표현은 신뢰도를 낮춥니다. 작업에 강하게 바인딩된 지시는 작업에 속하고 프로필에 속하지 않습니다.

통합과 크기

  • 정기적인 통합 및 중복 제거 (주기는 references/curation.md 임계값 테이블 참조): 동의어 항목 병합, 만료 항목 정리; 통합과 승격 이동은 침전 영역을 다시 작성할 수 있는 유일한 두 가지 합법적 시나리오이며, 모두 변경 기록에 흔적을 남겨야 합니다.
  • 주 파일이 크기 목표를 초과하거나 침전 영역이 하한선을 초과하면 (임계값은 모두 references/curation.md 참조) -> 세부 내용을 user/*.md 보조 파일로 이동하고, 주 파일에 인덱스 행을 남깁니다.

3. 사용: 주입과 분기

세션마다 주입

주 파일을 작게 유지하는 이유가 여기에 있습니다: 모든 세션에 전체를 주입할 수 있을 만큼 작아야 합니다. 호스트에 따라 다음 중 하나를 선택하여 연결합니다 (각 호스트에 대한 자세한 내용은 README의 호환성 섹션 참조):

  • 명령 파일 참조 행: 예: Claude Code에서 CLAUDE.md에 @USER.md 행 추가;
  • 참조 메커니즘이 없는 호스트: 시스템 프롬프트나 규칙 파일에 "세션 시작 시 USER.md를 먼저 읽으세요"라는 문장 추가;
  • session-start hook 연결 가능 (선택적 연결 방식 — 이 스킬은 자체 런타임을 제공하지 않으며, hook을 연결하지 않아도 규율은 유효). Claude Code 예시 구성:
{
  "hooks": {
    "SessionStart": [
      { "hooks": [ { "type": "command", "command": "cat USER.md" } ] }
    ]
  }
}

(POSIX 예시; Windows 또는 다른 호스트는 동등한 명령으로 대체. 연결 여부와 방법은 사용자가 결정.)

분기 판단 기준 세 가지 (약한 모델 대비용, 자세한 내용은 references/layering.md 참조)

  1. 기기를 바꾸면 무효화 -> USER.local.md;
  2. 프로젝트/직무를 바꾸면 유효하지 않음 -> 해당 프로젝트의 로컬 파일;
  3. 나머지 -> USER.md.

포인터 규율: 이미 권위 있는 출처가 있는 사실은 다시 복사하지 않고, 포인터 행만 남깁니다 ("특정 파일 참조") — 이중 출처 불일치 방지. 판례는 references/layering.md 참조.

개인정보 보호 경계선

  • 이 파일 패밀리는 본질적으로 모두 PII입니다 — 가장 민감한 내용을 다루듯 취급하세요.
  • USER.local.md는 반드시 gitignore해야 하며, 절대 저장소에 커밋하지 마세요.
  • USER.md를 공개 저장소에 푸시하기 전에 반드시 수동 검토하세요: 실명, 연락처, 고용주 내부 정보, 자격 증명 포인터를 항목별로 확인하세요.
  • 일반 텍스트 비밀번호 / API 키 / 토큰은 절대 이 파일 패밀리에 기록하지 마세요 — "자격 증명이 어디에 있고, 어떻게 호출하는지"에 대한 포인터만 작성하세요.
  • 템플릿은 절대 실제 내용을 미리 채우지 않습니다 — 이 스킬이 제공하는 모든 템플릿은 플레이스홀더와 가상 예시로만 구성됩니다.

간단한 예시

  • 사용자가 또 "답변은 결론부터 주세요"라고 말하면, 침전 영역의 동일 유형 '검증 필요' 항목이 승격 임계값에 도달한 경우 ( references/curation.md 참조) -> 승격 제안 초안 작성 (한 문장으로 병합하여 How I work에 넣을 예정), 사용자 확인 후 이동.
  • 사용자가 "이 기기에서는 npm 대신 pnpm을 사용하세요"라고 말하면 -> 기기를 바꾸면 무효화 -> USER.local.md에 기록.
  • 사용자가 특정 저장소에서 "이 프로젝트의 커밋 메시지는 스페인어로 작성하세요"라고 말하면 -> 프로젝트를 바꾸면 유효하지 않음 -> 해당 프로젝트의 로컬 파일에 기록하고, USER.md에는 기록하지 않음.
  • 사용자가 늦은 밤에 "짜증 나, 긴 답변은 보지 마"라고 불평하면 -> 감정적인 순간 -> 단일 관찰로 침전하고 신뢰도를 낮추며, 수동 영역을 직접 수정하지 않고, 확실한 규칙으로 간주하지 않음.
  • 사용자가 수동 영역에 "X 프로젝트를 하고 있습니다"라고 썼지만 석 달 동안 언급하지 않음 -> 에이전트는 제안으로 What I'm up to 섹션을 업데이트하고 이유를 첨부하며, 사용자가 동의하기 전까지 한 글자도 수정하지 않음.

버전 및 업데이트 자가 점검

  • 현재 버전: 1.0.0 (plugin.json과 일치).
  • 저장소: https://github.com/LucioLiu/user-md
  • 자가 점검: 플러그인으로 설치된 경우, 호스트 업데이트 메커니즘이 버전 번호를 따라 업데이트합니다. 수동 복제/템플릿 복사본의 경우, 이 파일과 저장소 main 브랜치를 diff하여 뒤쳐졌는지 확인하세요. 당신의 USER.md 파일 패밀리는 스킬 업데이트의 영향을 받지 않습니다 — 그것은 당신의 데이터이지, 스킬의 일부가 아닙니다.

관련 스킬