Dotfiles find-session
install
source · Clone the upstream repo
git clone https://github.com/msbaek/dotfiles
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/msbaek/dotfiles "$T" && mkdir -p ~/.claude/skills && cp -r "$T/.claude/skills/find-session" ~/.claude/skills/msbaek-dotfiles-find-session && rm -rf "$T"
manifest:
.claude/skills/find-session/SKILL.mdsource content
Find Session
이전 Claude Code 세션을 자연어 설명으로 검색하여 찾고, 상세 정보와 요약을 제공하는 스킬. agf(키워드 매칭)와 qmd-search(의미 검색)를 병행하여 누락을 최소화한다.
워크플로우
1단계: 쿼리 분석
사용자의 요청에서 다음 3가지를 추출한다:
| 요소 | 예시 | 필수 여부 |
|---|---|---|
| 키워드 | "102 파일", "배송아이디", "toss 결제" | 필수 |
| 날짜/기간 | "지난 금요일", "4/3", "이번주", "3월 초" | 없으면 사용자에게 질문 |
| 프로젝트 | "BO-query", "ktown4u-java" | 선택 (현재 프로젝트를 기본값으로) |
날짜/기간이 없는 경우, 반드시 사용자에게 물어본다:
"대략 언제쯤 작업이었나요? (예: 지난주, 4월 초, 3일 전, 잘 모르겠음)"
"잘 모르겠음"이라고 답하면 최근 2주를 기본 범위로 사용한다.
상대 날짜 변환: "지난 금요일" → 실제 YYYY-MM-DD로 변환. 오늘 날짜를 기준으로 계산.
2단계: 병렬 검색 (서브에이전트 2개 동시 실행)
Agent 도구로 agf 서브에이전트와 qmd 서브에이전트를 하나의 메시지에서 동시에 호출한다. 반드시 두 Agent 호출을 같은 응답에 포함하여 병렬 실행을 보장할 것.
서브에이전트 A: agf 검색 (키워드 기반)
Agent({ description: "agf 키워드 세션 검색", name: "agf-searcher", prompt: `아래 조건으로 Claude Code 세션을 검색하고 결과를 보고해주세요. 코드를 작성하지 말고 검색만 수행하세요. ## 검색 조건 - 키워드: {KEYWORD} - 날짜/기간: {DATE_OR_RANGE} (없으면 생략) - 프로젝트: {PROJECT} (없으면 생략) ## 실행할 명령어 ${DATE가 특정 날짜인 경우} python3 ~/.claude/skills/agf/list.py {YYYY-MM-DD} ${키워드가 있는 경우} python3 ~/.claude/skills/agf/search.py "{KEYWORD}" ${결과가 3건 미만이면 deep 검색 추가} python3 ~/.claude/skills/agf/search.py --deep "{KEYWORD}" 여러 키워드가 있으면 가장 특징적인 키워드로 검색. 날짜 list와 키워드 search는 병렬 실행 가능. ## 출력 형식 (반드시 이 형식으로) ### agf 검색 결과 | # | 세션ID(8자) | 프로젝트 | 날짜 | 첫 메시지(50자) | |---|------------|---------|------|----------------| | 1 | abcd1234 | ... | ... | ... | 총 N건 발견. 검색 실패 시: "agf 검색 결과 없음" + 실행한 명령어와 에러 메시지` })
서브에이전트 B: qmd 의미 검색
Agent({ description: "qmd 의미 세션 검색", name: "qmd-searcher", prompt: `아래 쿼리로 Claude Code 세션을 의미 검색하고 결과를 보고해주세요. 코드를 작성하지 말고 검색만 수행하세요. ## 검색 쿼리 "{사용자의 원래 자연어 설명}" ## 실행할 명령어 qmd-search "{사용자의 원래 자연어 설명}" 2>/dev/null | head -20 ## 출력 형식 (반드시 이 형식으로) ### qmd 검색 결과 | # | 세션ID(8자) | 프로젝트 | 날짜 | 유사도 | 첫 메시지(50자) | |---|------------|---------|------|--------|----------------| | 1 | abcd1234 | ... | ... | 0.85 | ... | 총 N건 발견. qmd-search 미설치/실패 시: "qmd 검색 불가" + 에러 메시지` })
중요: 두 Agent 호출은 반드시 같은 응답 블록에 포함하여 병렬 실행할 것. 순차 실행 금지 — 하나가 끝나기를 기다리지 않는다.
3단계: 결과 통합
두 서브에이전트가 모두 완료되면 결과를 취합한다.
- agf-searcher와 qmd-searcher 결과에서 세션 ID(8자)를 추출
- 세션 ID 기준으로 중복 제거 — 양쪽 모두에 있으면 매칭 소스를
로 표시agf+qmd - 날짜 목록(list)이 있으면 키워드/의미 매칭으로 후보 필터링
- 우선순위 정렬:
>agf+qmd
>agf only
(양쪽 매칭이 신뢰도 높음)qmd only - 후보가 여러 개이면 상위 3-5개를 통합 테이블로 표시:
| # | 프로젝트 | 세션 ID | 날짜 | 첫 메시지 | 매칭 소스 | |---|----------|---------|------|-----------|----------| | 1 | BO-query | 4c28f92c | 04-03 09:51 | 102 파일 배송아이디... | agf+qmd | | 2 | dotfiles | 8e3a7b12 | 04-02 14:30 | vis 설치 관련... | qmd | | 3 | ktown4u | f1c92d45 | 04-01 10:15 | 배송 로직... | agf |
후보가 1개이면 바로 4단계로 진행. 후보가 0개이면 검색 범위를 넓히거나 다른 키워드를 제안.
4단계: 세션 상세 + AI 요약
사용자가 세션을 선택하면 (또는 명확한 1건인 경우) 다음을 병렬로 실행:
A. 세션 데이터 추출 + haiku 요약
/agf show 워크플로우를 따른다:
- 세션 데이터 추출:
python3 ~/.claude/skills/agf/show.py <SESSION_PREFIX>
- 추출된 대화 데이터(CONV_START~CONV_END)를 haiku 서브에이전트에 전달:
| 파라미터 | 값 |
|---|---|
| description | "세션 요약 생성" |
| subagent_type | "general-purpose" |
| model | "haiku" |
프롬프트:
아래 Claude Code 세션의 대화 내용을 분석하여 요약해주세요. 코드를 작성하지 말고 분석만 수행하세요. ## 세션 정보 - 프로젝트: {PROJECT_DIR} - 기간: {START} ~ {END} ({DURATION}) ## 대화 내용 (U=사용자, A=어시스턴트) {CONV_DATA} ## 출력 형식 ### 요약 - 이 세션에서 수행한 작업을 3-5개 항목으로 정리 - 각 항목은 "무엇을 했는지"를 1줄로 서술 ### 주요 결정사항 - 세션 중 내려진 기술적 결정이 있으면 기록 (없으면 "없음") ### 미완료 작업 - 세션에서 시작했으나 완료되지 않은 작업이 있으면 기록 (없으면 "없음")
B. git 커밋 조사
메타데이터에서 프로젝트 경로(cwd)를 추출할 수 있으면, 해당 디렉토리에서 세션 기간의 커밋을 조회:
# 세션 날짜 전후 1일 범위로 조회 git -C <project_path> log --oneline --since="YYYY-MM-DD" --until="YYYY-MM-DD" --all
프로젝트 경로를 알 수 없거나 git 저장소가 아니면 이 단계를 건너뛴다.
5단계: 통합 출력
## 세션 상세: {SESSION_ID_SHORT}... | 항목 | 값 | |------|-----| | 프로젝트 | {PROJECT_DIR} | | 경로 | {CWD} | | Git Branch | {GIT_BRANCH} | | 시작 | {START} | | 종료 | {END} | | Duration | {DURATION} | | 메시지 수 | User {USER_COUNT} / Assistant {ASST_COUNT} | ### AI 요약 {HAIKU_SUBAGENT_RESULT} ### 관련 Git 커밋 {GIT_COMMITS_OR_"해당 없음"} ### 사용자 메시지 목록 {HISTORY_MESSAGES}
에러 처리
| 상황 | 대응 |
|---|---|
| 양쪽 검색 결과 0건 | 키워드를 바꾸거나 기간을 넓혀서 재검색 제안 |
| agf는 0건, qmd만 결과 있음 | qmd 결과만으로 진행 (키워드가 세션 제목에 없을 수 있음) |
| qmd는 0건, agf만 결과 있음 | agf 결과만으로 진행 |
| 세션 ID 매칭 2건 이상 | 후보 목록 표시 후 사용자에게 선택 요청 |
| git 디렉토리 접근 불가 | git 커밋 조사 단계를 건너뜀 |
| qmd-search 미설치/실패 | agf 서브에이전트 결과만으로 진행, 사용자에게 알림 |
| agf 서브에이전트 실패 | qmd 서브에이전트 결과만으로 진행, 사용자에게 알림 |
| 두 서브에이전트 모두 실패 | 에러 내용을 표시하고 수동 검색 명령어를 안내 |