| name | fresh-session-guide |
| description | 세션이 충분히 무거워졌고 큰 흐름의 휴지점일 때 디자이너에게 새 대화창으로 옮기길 *잔소리 없이 한 번* 권유 — CLAUDE.project.md 자동 로드 덕분에 컨텍스트는 그대로 이어진다는 안심이 핵심. 주력 트리거는 *시스템 자가 점검* (§1)으로 사용자가 직접 부르는 일은 드물다. (a) `export-handoff` 인계 사이클 마무리 직후 / (b) 양적·질적 게이트 둘 다 yes일 때 자가 점검 자동 / (c) 보조 자연어("대화 길어졌나?"·"이거 무거워"·"새 대화 열까?"·"토큰 너무 쓰는 거 아냐?") — 같은 세션에서 1회만. |
| model | inherit |
fresh-session-guide
목적
세션이 길어진 시점에 디자이너에게 새 대화창으로 옮기길 권유. 핵심은 두 가지 — (1) 새 대화에서도 디자인 약속(컴포넌트 인덱스·토큰·페르소나)이 그대로 이어진다는 안심, (2) 같은 세션에서 1회만이라 잔소리가 되지 않게 하는 정밀 통제.
자가 점검 책임은 이 Skill 본체 §1 — 다른 Skill은 위임만 한다.
1. 자가 점검 — AND 게이트 (4조건 강화)
응답 작성 직전 자가 점검. AND 게이트 — 4조건 모두 yes일 때만 권유. 하나라도 모호하면 권유 X.
1.0 평가 발동 시점 — hook 신호 또는 보조 자연어 발화
§1 평가는 능동 매 턴 자가 점검이 아니라 신호가 들어왔을 때 자연 깨어난다. 진입 경로 두 가지:
- hook 신호: PostToolUse Bash 매처가
git commit 직후 fresh-session-guide 신호: save_count=..., started_at=..., suggested=..., last_commit_message="..." 형태의 원본 값을 추가 컨텍스트로 노출. 이 신호를 받으면 §1.1~§1.5 평가가 자연 발동. hook은 판정·임계치 비교 X — 원본 값만 노출하고, 평가는 SKILL이 책임. publishing-guard 가드 패턴과 같은 결.
- 보조 자연어 발화 (description 예시 — "대화 길어졌나?"·"새 대화 열까?" 등): 디자이너가 직접 진입. 흔치 않음.
발동 시점이 매 턴이 아니라 commit이라는 자연 신호에 묶여있어 잔소리 위험이 정밀 통제됨 — commit이 큰 사이클 closer일수록 §1.2 질적 게이트가 yes 가까워지고, 작은 작업 commit이면 §1.4 사용자 차단 게이트(흐름 한가운데·디버깅 중)가 평가 자체를 침묵으로 끌어내림.
1.1 양적 게이트 (둘 중 하나)
- hook 신호 분기: §1.0에서 받은 원본 값으로 평가 —
save_count >= 5 또는 now - started_at >= 1h 중 하나라도 yes. 신호값을 그대로 비교(임계치 비교는 이 자리에서, hook은 원본만 노출). state 파일을 별도 Read해서 검증해도 동일.
- fallback 분기: hook 신호 부재 또는 state 파일 읽기 실패 시 (파일 부재 /
jq 미설치 / 권한 실패 / K디자이너 비활성 환경 — issue #1 정신상 hook 자체가 침묵) → 자가 카운트. 단, "분명히 3회 이상 commit이 있었다"고 근거 인용 가능할 때만 yes — 예: "직전 export-handoff 응답에서 commit 3개 sha를 확인했다", "사용자가 저장해줘 발화한 횟수가 3회 이상이고 각각 commit으로 이어졌다". 단순 추정·"느낌상" X.
1.2 질적 게이트 (모델 자가 판단, 하나 이상 yes + 근거 인용 가능)
- 큰 흐름 마무리 직후 (
export-handoff 완료, 인계 commit 직후)
- 한 결정/사이클 닫힘 (사용자 명시 발화 또는 흐름상 자명)
- 새 결정 영역으로 전환 직전 (다음 작업이 이전 작업과 독립적)
근거 인용 예: "방금 export-handoff 응답을 마쳤고, 사용자 다음 발화가 새 화면 시작 의도다."
1.3 재권유 차단 게이트
- state 파일에
suggested: true 아닐 것
- 또는 hook 미배포 환경: 메인 모델 메모리에서 "이 세션 권유 완료" 표시 없을 것
1.4 사용자 차단 게이트
다음 중 하나라도 yes면 즉시 침묵:
- 사용자가 방금 새 발화를 시작 — 흐름 한가운데 끊지 않음
- 디버깅 진행 중 — 에러 회복 사이클 중간
- 사용자가 명시적으로 끄는 발화 ("계속 여기서 해" / "새 대화 안 열어")
1.5 AND 게이트 통과 조건 (강화)
§1.1 양적 yes + §1.2 질적 yes (+ 근거 1줄을 응답에 박을 수 있음) + §1.3 미권유 + §1.4 미차단 — 4조건 모두 yes일 때만 §2 권유 진행. 하나라도 모호하면 침묵.
2. 권유 메시지 노출 (응답 끝에 박기)
다음 톤 그대로 또는 톤만 다듬고 내용은 보존:
잠깐 제안 한 마디 — 지금까지 대화가 꽤 길어졌어요. 새 대화창으로 옮기시는 게 가벼워요.
왜요? 대화가 길수록 (1) 이전 대화 내용이 새 작업에 헷갈리게 끼어들고, (2) 매번 이전 대화를 다시 읽어오면서 비용도 쌓여요(한 번에 큰돈은 아니지만 길어질수록 누적돼요).
새 대화 여는 법:
- 터미널에서:
/clear
- 데스크톱/웹에서:
⌘ + N (Mac) / Ctrl + N (Windows)
이 프로젝트의 모든 정보는 새 대화에서도 그대로 이어져요 — ./CLAUDE.md가 디자인 약속(@CLAUDE.project.md)을 자동으로 불러와줘서, 새 창에서 "이어서 작업하자"라고 시작하면 바로 같은 자리예요.
규칙:
- 강제·재촉 X — "원하시면" 톤 유지
- 영어 단독 노출 X (
/clear·@CLAUDE.project.md는 코드로 백틱 감싸 OK)
- 페르소나 톤 일관 (
designer-persona §)
3. CLAUDE.project.md에 마지막 작업 한 줄 갱신 (다음 대화 부드럽게 잇기)
처리 절차:
Read ./CLAUDE.project.md
## 마지막 작업 섹션(슬롯 ID last-work) 검색:
- 있으면: 섹션 끝에 한 줄 추가 (이전 줄 보존, 누적 로그)
- 없으면: 파일 끝에 섹션 추가
- 새 줄 형식:
- **<YYYY-MM-DD HH:MM>** — <이번 사이클 한 줄 요약>
- 시간:
date "+%Y-%m-%d %H:%M" (Bash)
- 한 줄 요약:
export-handoff 완료 시점이면 그 commit 메시지에서, 그 외엔 메인 모델이 사용자 발화·작업 흐름에서 한 줄 추출
Edit으로 정확히 그 위치만 갱신 — 이전 줄·다른 섹션 절대 손대지 X
- 회전 검사 — append 직후 슬롯 분량이 디자이너가 한눈에 훑을 만함을 넘었으면 가장 오래된 줄들을
.claude/slot-archive/last-work.md로 최신 순 append하고 슬롯에선 그 줄 제거. archive 파일·.claude/slot-archive/ 디렉토리 부재 시 함께 생성. archive는 ./CLAUDE.md @import에 미추가 — 자동 로드 X(이슈 #8 해소의 핵심). 첫 archive 생성 시 디자이너에게 1회 안내("이전 작업 이력은 .claude/slot-archive/last-work.md로 옮겨두었어요 — 새 대화에선 자동 로드되지 않아 가벼워졌고, 이전 이력 보여줘 한 마디면 다시 볼 수 있어요"), 이후 회전은 침묵. last-work는 시간순 1줄씩이라 짧은 분량 기준이 자연 — 정확한 줄 수는 갱신 시점 슬롯 본문 보고 자율 결정(고정 N 박지 X). 자세한 정책 정본: plugin/SCHEMA.md §2.3.
4. state 파일 갱신 (재권유 차단)
hook 배포 환경에서:
hook 미배포 환경 또는 jq 미설치:
- 메인 모델이 대화 메모리에 "이 세션에서 권유 완료" 표시 — 다시 점검 시 §1.3에서 차단
Subagent 위임
없음 — 메인 모델이 권유 톤 직접 가공. 잔소리 위험 정밀 통제가 핵심이라 위임 시 톤 일관성 깨질 수 있음.
응답 톤
- 한국어, 페르소나 일관 (
designer-persona §)
- 권유 끝에 다음 행동 1개 — 예: "이어서 다음 작업이 있으시면 새 대화창에서 이어서 작업하자로 시작해보세요"
- 강제·재촉 X — 디자이너가 무시해도 흐름 그대로
의존
- 다른 Skill:
designer-persona (응답 톤 가드), export-handoff (가장 자연스러운 자동 트리거 시점), safe-save (양적 카운터의 hook 트리거 시점)
- 외부 도구:
Read/Edit (CLAUDE.project.md 갱신), Bash (date, jq — state 갱신)
- 외부 자산:
${CLAUDE_PLUGIN_DATA}/sessions/<session_id>.json (hook이 박는 state 파일), ./CLAUDE.project.md 슬롯 last-work
- 슬롯 정의:
plugin/SCHEMA.md §2.2