find-session

자연어로 이전 Claude Code 세션을 검색하고 요약하는 스킬. agf 키워드 검색과 qmd 의미 검색을 병행하여 정확도를 높이고, git 커밋 조사와 AI 요약까지 제공한다. "세션 찾아줘", "지난번 작업 찾기", "이전에 했던 ~~ 세션", "~~ 작업한 세션 보여줘", "세션 검색", "작업 이력", "resume session", "이전 대화 찾기", "그때 세션", "그 세션" 등의 요청 시 반드시 이 스킬을 사용할 것. /agf나 qmd-search를 직접 호출하기 전에 이 스킬을 먼저 고려할 것.

38 stars

Best use case

find-session is best used when you need a repeatable AI agent workflow instead of a one-off prompt.

자연어로 이전 Claude Code 세션을 검색하고 요약하는 스킬. agf 키워드 검색과 qmd 의미 검색을 병행하여 정확도를 높이고, git 커밋 조사와 AI 요약까지 제공한다. "세션 찾아줘", "지난번 작업 찾기", "이전에 했던 ~~ 세션", "~~ 작업한 세션 보여줘", "세션 검색", "작업 이력", "resume session", "이전 대화 찾기", "그때 세션", "그 세션" 등의 요청 시 반드시 이 스킬을 사용할 것. /agf나 qmd-search를 직접 호출하기 전에 이 스킬을 먼저 고려할 것.

Teams using find-session should expect a more consistent output, faster repeated execution, less prompt rewriting.

When to use this skill

  • You want a reusable workflow that can be run more than once with consistent structure.

When not to use this skill

  • You only need a quick one-off answer and do not need a reusable workflow.
  • You cannot install or maintain the underlying files, dependencies, or repository context.

Installation

Claude Code / Cursor / Codex

$curl -o ~/.claude/skills/find-session/SKILL.md --create-dirs "https://raw.githubusercontent.com/msbaek/dotfiles/main/.claude/skills/find-session/SKILL.md"

Manual Installation

  1. Download SKILL.md from GitHub
  2. Place it in .claude/skills/find-session/SKILL.md inside your project
  3. Restart your AI agent — it will auto-discover the skill

How find-session Compares

Feature / Agentfind-sessionStandard Approach
Platform SupportNot specifiedLimited / Varies
Context Awareness High Baseline
Installation ComplexityUnknownN/A

Frequently Asked Questions

What does this skill do?

자연어로 이전 Claude Code 세션을 검색하고 요약하는 스킬. agf 키워드 검색과 qmd 의미 검색을 병행하여 정확도를 높이고, git 커밋 조사와 AI 요약까지 제공한다. "세션 찾아줘", "지난번 작업 찾기", "이전에 했던 ~~ 세션", "~~ 작업한 세션 보여줘", "세션 검색", "작업 이력", "resume session", "이전 대화 찾기", "그때 세션", "그 세션" 등의 요청 시 반드시 이 스킬을 사용할 것. /agf나 qmd-search를 직접 호출하기 전에 이 스킬을 먼저 고려할 것.

Where can I find the source code?

You can find the source code on GitHub using the link provided at the top of the page.

SKILL.md Source

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

```markdown
| # | 프로젝트 | 세션 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. 세션 데이터 추출:
```bash
python3 ~/.claude/skills/agf/show.py <SESSION_PREFIX>
```

2. 추출된 대화 데이터(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)를 추출할 수 있으면, 해당 디렉토리에서 세션 기간의 커밋을 조회:

```bash
# 세션 날짜 전후 1일 범위로 조회
git -C <project_path> log --oneline --since="YYYY-MM-DD" --until="YYYY-MM-DD" --all
```

프로젝트 경로를 알 수 없거나 git 저장소가 아니면 이 단계를 건너뛴다.

### 5단계: 통합 출력

```markdown
## 세션 상세: {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 서브에이전트 결과만으로 진행, 사용자에게 알림 |
| 두 서브에이전트 모두 실패 | 에러 내용을 표시하고 수동 검색 명령어를 안내 |

Related Skills

session-handoff

38
from msbaek/dotfiles

세션 종료 시 plan/INDEX/메모리/저널을 업데이트하고 다음 세션 재개 프롬프트 제공

analyzing-mlflow-session

38
from msbaek/dotfiles

Analyzes an MLflow session — a sequence of traces from a multi-turn chat conversation or interaction. Use when the user asks to debug a chat conversation, review session or chat history, find where a multi-turn chat went wrong, or analyze patterns across turns. Triggers on "analyze this session", "what happened in this conversation", "debug session", "review chat history", "where did this chat go wrong", "session traces", "analyze chat", "debug this chat".

weekly-newsletter

38
from msbaek/dotfiles

Obsidian vault에서 이번 주(토~금) 작성/수정된 글들을 모아 뉴스레터 생성. 서브 에이전트 기반 병렬 처리로 메인 컨텍스트 절약. 기술적, 리더십적으로 외부에 공유할 만한 내용을 선별하여 정리. "뉴스레터 만들어줘", "이번 주 글 정리해줘", "weekly digest" 등의 요청 시 자동 적용.

vis

38
from msbaek/dotfiles

Vault Intelligence System (vis) CLI를 활용한 Obsidian vault 시맨틱 검색, 자동 태깅, MOC 생성, 관련 문서 연결, 주제별 문서 연결, 주제 수집, 태그 통계, 지식 공백 분석, 중복 감지, 학습 리뷰 등 vault 지식 관리 전반을 지원하는 skill. vault 검색, 문서 정리, 태그, MOC, 관련 문서, 주제 수집, 중복 검사, 학습 리뷰, 지식 공백, 클러스터링, 인덱싱, 주제별 문서 연결, 태그 통계 관련 작업 시 자동 적용.

spark-python-data-source

38
from msbaek/dotfiles

Build custom Python data sources for Apache Spark using the PySpark DataSource API — batch and streaming readers/writers for external systems. Use this skill whenever someone wants to connect Spark to an external system (database, API, message queue, custom protocol), build a Spark connector or plugin in Python, implement a DataSourceReader or DataSourceWriter, pull data from or push data to a system via Spark, or work with the PySpark DataSource API in any way. Even if they just say "read from X in Spark" or "write DataFrame to Y" and there's no native connector, this skill applies.

searching-mlflow-docs

38
from msbaek/dotfiles

Searches and retrieves MLflow documentation from the official docs site. Use when the user asks about MLflow features, APIs, integrations (LangGraph, LangChain, OpenAI, etc.), tracing, tracking, or requests to look up MLflow documentation. Triggers on "how do I use MLflow with X", "find MLflow docs for Y", "MLflow API for Z".

retrieving-mlflow-traces

38
from msbaek/dotfiles

Retrieves MLflow traces using CLI or Python API. Use when the user asks to get a trace by ID, find traces, filter traces by status/tags/metadata/execution time, query traces, or debug failed traces. Triggers on "get trace", "search traces", "find failed traces", "filter traces by", "traces slower than", "query MLflow traces".

recall

38
from msbaek/dotfiles

Load context from vault memory. Temporal queries (yesterday, last week, session history) use agf (history.jsonl) for fast session lookup. Topic queries use vis semantic search. "recall graph" generates interactive temporal graph of sessions and files. Every recall ends with "One Thing" - the single highest-leverage next action synthesized from results. Use when user says "recall", "what did we work on", "load context about", "remember when we", "prime context", "yesterday", "what was I doing", "last week", "session history", "recall graph", "session graph".

vercel-react-best-practices

38
from msbaek/dotfiles

React and Next.js performance optimization guidelines from Vercel Engineering. This skill should be used when writing, reviewing, or refactoring React/Next.js code to ensure optimal performance patterns. Triggers on tasks involving React components, Next.js pages, data fetching, bundle optimization, or performance improvements.

querying-mlflow-metrics

38
from msbaek/dotfiles

Fetches aggregated trace metrics (token usage, latency, trace counts, quality evaluations) from MLflow tracking servers. Triggers on requests to show metrics, analyze token usage, view LLM costs, check usage trends, or query trace statistics.

prompt-contracts

38
from msbaek/dotfiles

프롬프트 작성, brainstorming, planning, design, 설계, 기능 개발 시 Prompt Contracts 프레임워크 적용. Goal/Constraints/Format/Failure Conditions 4요소로 명확한 명세 작성. "바이브 코딩" 방지. brainstorming, writing-plans, 설계, 기능 구현 관련 작업 시 자동 적용.

obsidian-vault

38
from msbaek/dotfiles

Obsidian vault 및 마크다운 문서 작업 시 사용. markdown-oxide LSP를 통한 효율적인 검색, 백링크 탐색, 태그 관리 지원. vault 경로, 태그 체계, vault-intelligence CLI, 토큰 최적화 전략 제공. Obsidian, vault, 마크다운, 태그, 노트 정리, zettelkasten, 백링크, wiki-link, PKM 관련 작업 시 자동 적용.