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.md
source 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단계: 결과 통합

두 서브에이전트가 모두 완료되면 결과를 취합한다.

  1. agf-searcherqmd-searcher 결과에서 세션 ID(8자)를 추출
  2. 세션 ID 기준으로 중복 제거 — 양쪽 모두에 있으면 매칭 소스를
    agf+qmd
    로 표시
  3. 날짜 목록(list)이 있으면 키워드/의미 매칭으로 후보 필터링
  4. 우선순위 정렬:
    agf+qmd
    >
    agf only
    >
    qmd only
    (양쪽 매칭이 신뢰도 높음)
  5. 후보가 여러 개이면 상위 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
워크플로우를 따른다:

  1. 세션 데이터 추출:
python3 ~/.claude/skills/agf/show.py <SESSION_PREFIX>
  1. 추출된 대화 데이터(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 서브에이전트 결과만으로 진행, 사용자에게 알림
두 서브에이전트 모두 실패에러 내용을 표시하고 수동 검색 명령어를 안내