| name | session-briefing |
| description | 세션 브리핑 자동화 v39. 작업 완료시 결정·미결·다음을 VAULT에 저장. 프로젝트 단서 있음=프로젝트 폴더, 없음=글로벌 `_session_briefing/` 자동 폴백(질문 ✗). 터보(기본)=3줄, 풀=3블록+포인터. VAULT 세션캐시 1회 resolve·PROJECT_ROOT 세션캐시·no-op 가드 내장. 세션브리핑, 세션저장, 작업완료 자동발동. P1: 세션브리핑, 세션저장, session briefing, 작업완료, 브리핑, 세션핸드오프, 압축각, 저장각, 컨텍스트꽉, 선제저장. P2: 브리핑해줘, 저장해줘, resume, brief, save session. P3: session brief, context preservation, session continuity, session handoff. P5: md파일로, `_session_briefing/` 저장. NOT: UP수정(→up-manager), 산출물저장, 일반문서작성(→직접수행). |
| vault_dependency | SOFT |
Session Briefing
세션 간 컨텍스트 연속성 보장. 작업 결과를 VAULT에 저장, 다음 세션에서 자동 로드. 프로젝트 단서 있음=프로젝트 폴더, 없음=글로벌 폴백.
⛔ 절대 규칙
| # | 규칙 | 이유 |
|---|
| 1 | 절대경로 하드코딩 금지 — VAULT·PROJECT_ROOT·홈경로 어떤 형태든 스킬 본문 절대경로 ✗. 오직 {VAULT} 변수로 표현 | 머신·사용자 변경 시 즉사 방지 |
| 2 | VAULT resolve = 세션 1회 — 글로벌 CLAUDE.md MOUNT::=VAULT 세션 첫 호출에만 read, 이후 세션캐시 키 VAULT_RESOLVED 재사용 | CLAUDE.md 반복 read 차단 |
| 3 | 세션 마운트·볼트 외부 저장 금지 — 반드시 {VAULT} 하위만 | 세션 종료 시 소실 방지 |
| 4 | _latest.md 덮어쓰기 — append 금지 — 과거는 날짜별 사본 담당 | 정합성 보장 |
| 5 | PROJECT_ROOT 미확정 시 질문 ✗ — 프로젝트 단서 없음 = 글로벌 {VAULT}/_session_briefing/로 직행 | 턴 절감. 오저장 방지는 단서 기반 추론으로 대체 |
자체 점검 (self-check)
스킬 수정 후: SKILL.md ≤5KB · P1 ≥5개 · 절대규칙 존재 · Gotchas ≥3행 · 본문 내 절대경로 0개 확인.
발동
| 조건 | 모드 | 행동 |
|---|
| "압축각·저장각·컨텍스트꽉" (예약어, 최우선) | 터보 즉시 | 조건 불문 즉시 저장. 압축 직전 안전망. no-op 가드 ✗ |
| 작업 완료 | 터보 | 자동. 3줄 요약 + 2회 저장 (본파일·_latest.md 덮어쓰기) |
| 산출물 생성·결정 확정 (백그라운드) | 사일런트 패치 | _latest.md만 조용히 덮어쓰기. 날짜사본 skip. 보고 1줄("↻ _latest 갱신"). 압축 발생해도 최신 스냅샷 보존 |
| 20턴↑ AND 산출물 ≥2개 (형 기본토큰 무거움) | 터보 + no-op 가드 | 결정·미결·다음 중 ≥1 변화시만 저장. 무변화 = 인-컨텍스트 1문단 자가요약 + 1줄 보고 |
| "이어서" / 새 세션 | 로드 | 컨텍스트 기반 _latest.md 1회 read, 끝 (정합성 검증 ✗) |
| "풀 브리핑"·"상세" | 풀 | 3블록 + 포인터 전부 + 2회 저장 |
| "생략" | — | 1회 스킵 |
임계치·예약어 하드넘버
| 항목 | 값 | 비고 |
|---|
| 턴 임계치 | 20턴 | 형 UP 기본토큰 무거움 반영. 기존 10턴에서 상향 |
| 산출물 임계치 | ≥2개 | 파일 생성·커밋·산출물 저장 2건 이상 누적 시 |
| 예약어 | 압축각 저장각 컨텍스트꽉 선제저장 | 한 단어만 떠도 즉시 저장 발동. 조건 불문 |
| 사일런트 패치 대상 | _latest.md 덮어쓰기만 | 날짜사본·보고 전문 skip. 압축 안전망 역할 |
경로 (이원화)
VAULT = 글로벌 CLAUDE.md `MOUNT::=VAULT` resolve (세션 1회, 캐시)
PROJECT_ROOT = {VAULT} 하위 프로젝트 폴더 (세션 캐시)
GLOBAL_SB = {VAULT}/_session_briefing/
PROJECT_SB = {PROJECT_ROOT}/_session_briefing/
PATH = {SB_ROOT}/YYMMDD_작업명.md
LATEST = {SB_ROOT}/_latest.md
SB_ROOT 판정 (3단계, 질문 ✗)
- PROJECT_ROOT 세션 캐시 hit →
PROJECT_SB
- miss + 프로젝트 단서 (최근 접근·사용자 명시·@프로젝트명) → 해당 프로젝트로 캐시 갱신 →
PROJECT_SB
- 단서 없음 →
GLOBAL_SB 직행
프로젝트 전환은 사용자 명시 시에만 캐시 갱신. 세션 마운트·볼트 외부 폴백 ✗.
로드 ("이어서")
| 컨텍스트 | 읽을 파일 |
|---|
| PROJECT_ROOT 캐시 hit | {PROJECT_SB}/_latest.md |
| miss | {GLOBAL_SB}/_latest.md |
파일명
YYMMDD_작업명.md — YYMMDD는 env date. 같은 날 동일 작업명 = 덮어쓰기. 폴더명 _session_briefing (언더스코어, 공백 없음). 없으면 쓰기 시 자동 생성.
콘텐츠
터보 (기본) — 3줄
- 결정: [확정된 핵심 1~2개 / 한 줄]
- 미결: [보류 + 사유 / 한 줄. 없으면 "없음"]
- 다음: [다음 세션 첫 행동 + → 파일경로 / 한 줄]
포인터(→ path)는 다음액션에만 필수. 결정·미결은 변경 파일 있을 때만.
풀 (명시 요청) — 3블록 + 포인터
- 결정사항 +
→ 관련 파일
- 미결 + 사유 + 외부 대기 +
→ 관련 파일
- 다음액션 +
→ 관련 파일
저장 = 2회 병렬
날짜별 사본 + _latest.md 동시 write (병렬 tool call). 누적 ✗. 터보에서도 날짜별 사본 필수(역추적 앵커).
문서화 전환 게이트
| 모드 | 동작 |
|---|
| 터보 (기본) | 게이트 스킵 |
| 풀 | 3조건(핵심방향 동의·수정요청 없음·재검토 신호 없음) ALL → "문서로 옮길까요?" |
| "써줘/저장해" | 즉시 실행 |
속도 규칙
| 규칙 | 효과 |
|---|
| 터보 기본 (3줄) | 추론 토큰 -60~70% |
| VAULT 세션캐시 1회 resolve | CLAUDE.md read -90% |
| PROJECT_ROOT 세션캐시 | 판정 -90% |
| 단서 없음 → 글로벌 폴백 (질문 ✗) | 대화 턴 -1 |
| 20턴+산출물2개 no-op 가드 | 저장 -20~40% |
| 사일런트 패치 (_latest만) | 보고 턴 -1 |
| 예약어 즉시 저장 | 압축 직전 안전망 |
| 터보 시 게이트 스킵 | 대화 턴 -1~2 |
| 로드 = _latest.md 1회 read (검증 ✗) | I/O 단일화 |
| YYMMDD = env date | bash 호출 -1 |
| 디렉토리 존재 확인 생략 (쓰기 실패 시 create) | MCP 호출 -1 |
| 저장 2회 병렬 (본파일+latest) | 저장 턴 -1 |
| 같은 날 덮어쓰기 | list 호출 -1 |
예시
| 상황 | 단서 | 저장 위치 |
|---|
| 프로젝트 A에서 작업 완료 | 캐시 hit | {VAULT}/프로젝트A/_session_briefing/ |
| 스킬 정비·일반 대화 | 단서 없음 | {VAULT}/_session_briefing/ (글로벌) |
| "이어서" (프로젝트 컨텍스트) | 캐시 hit | {PROJECT_SB}/_latest.md 1회 read |
| "이어서" (새 세션, 단서 없음) | miss | {GLOBAL_SB}/_latest.md 1회 read |
| 20턴+산출물2개 도달, 변화 없음 | — | 저장 스킵 → 1문단 자가요약 |
| "압축각" 한 단어 | 예약어 hit | 조건 불문 즉시 터보저장 |
| 산출물 1개 생성 완료 | 백그라운드 | _latest.md 조용히 갱신 ("↻" 1줄만) |
§INV FINAL_RENDER_GATE (산출물 본질 보호 — 분리형)
| 항목 | 정의 |
|---|
| SCOPE | 사용자에게 전달되는 최종 산출물에만 적용 |
| INTERNAL | 내부 처리 라벨(축·층·Phase·모드 등)은 작업용으로 유지 OK |
| RULE | 외부 노출 시점 → 산출물·대화 = 인간 언어. 작업 라벨 ZERO. (1만 페이지 1단어 = FAIL) |
| 판정 | "이 단어, 이 대화 밖 사람이 사전 없이 읽을 수 있나?" NO → 작업 라벨 → 금지 |
| ALLOW | 업계 전문용어 · 고유명사(프로젝트명·세션명) · 법조문 |
| CONVERT | 라벨 발견 → 실명·평문 풀어쓰기. 예) 내부 3블록 구조 라벨은 작업용으로 유지. 사용자 노출 .md 본문(결정·미결·다음)은 평문 |
| SELF_CHECK | VAULT 저장 직전(내부 처리 라벨 보존, 본문만 평문)에서 자체 스캔. 1개라도 발견 = 차단·재작성 |
Gotchas
| 함정 | 대응 |
|---|
_latest.md에 append | 반드시 덮어쓰기. 과거는 날짜별 사본 담당 |
| 세션 마운트 경로에 저장 | {VAULT} 하위만 |
| VAULT·홈경로 하드코딩 | 절대경로 금지. {VAULT} 변수로만 표현. resolve는 글로벌 CLAUDE.md 유일 |
| PROJECT_ROOT 미확정 시 질문 반복 | 단서 없음 = 글로벌 폴백. 질문 ✗ |
글로벌 _latest.md 잦은 덮어쓰기로 컨텍스트 오염 | 날짜별 사본이 역추적 앵커. _latest는 최신 인덱스 역할만 |
| no-op 가드 오판 | 표현만 다르고 실질 변화 없으면 스킵 |
| 폴더명 공백 | _session_briefing 언더스코어 고정 (bash 따옴표 불필요) |
| CLAUDE.md 매 호출 read | VAULT_RESOLVED 세션캐시 키 우선 확인 |
| 예약어("압축각") 놓침 | 조사·어미·농담·인용 전부 hit. "압축각이네" "저장각인가?" 모두 즉시 발동 |
| 사일런트 패치가 날짜사본까지 생성 | 백그라운드 모드는 _latest.md만. 날짜사본·3블록 보고 전부 skip |
| 20턴 카운팅 기준 모호 | 사용자↔Claude 왕복 1쌍 = 1턴. 산출물=파일생성/커밋/최종딜리버리 중 택일 |