session-skills / guide

/session:close

세션을 닫아도 되는지 4개 항목으로 훑어 [OK] / [BLOCKED] 판정 한 줄과 Next: 한 줄을 산출한다. 저장소는 아무것도 바꾸지 않는다.

read-only모든 하네스bash + gitgh (선택)
경계

언제 쓰고, 언제 안 쓰나

close 와 handoff 는 같은 순간에 서로 다른 질문에 답한다. 한쪽이 다른 쪽으로 자라면 그것이 버그다.

이럴 때 쓴다

  • 세션을 끝내기 직전, 커밋 안 한 변경·미완 todo·임시 파일·후속 조치가 남았는지 확인할 때
  • 워크트리를 여러 개 띄운 세션에서 어디에 뭘 남겼는지 한 번에 훑고 싶을 때
  • 저장소를 건드리지 않고 판정만 받고 싶을 때

이럴 땐 다른 스킬

  • 컨텍스트가 차서 미완 작업을 넘겨야 한다 → session:handoff
  • 끊긴 턴을 이어서 재개해야 한다 → session:restart
  • 완료 작업을 기록으로 남긴다 → gh-issue:create, notes:task-history

close 는 감사, handoff 는 기록

close 는 “깨끗하게 끝났나” 를 감사만 하고, handoff 는 “안 끝났으니 적어서 넘긴다” 를 실행한다.

쓰기를 시작하는 close 도, 감사를 시작하는 handoff 도 둘 다 버그다. close 가 미완 작업으로 [BLOCKED] 를 내면 그 Next: 줄이 handoff 를 가리킨다.

인터페이스

호출 형식

/session:close [--repos <path,...>]
/session:close -h
인자설명기본값
--repos <path,...>자동 수집이 놓친 저장소를 보태는 용도 (치환 아님)없음
-h / --help / helpreferences/help.md 출력 후 정지—
동작

7단계

판단이 드는 지점은 Step 2 하나뿐이다. 나머지는 lib/ 스크립트가 결정적으로 수행한다.

1

인자 파싱

--repos 는 자동 수집 결과에 더한다.

2

대상 저장소 수집

현재 저장소 최상위 + 이번 세션이 건드린 다른 워크트리 + --repos. 절대경로 정규화 후 중복 제거. cwd 하나만 보고 끝내지 않는다.

3

C-1 git 상태

lib/check-repos.sh. 진행중 merge/rebase, 미커밋 변경, untracked 파일, 원격 미반영 커밋.

4

C-2 TodoList

TaskList 로 in_progress(BLOCKED) / pending(NOTE) 나열. todo 가 없으면 “TodoList 없음” 을 명시한다.

5

C-3 임시 산출물

lib/check-artifacts.sh 로 scratchpad 잔재, 버려진 예약 파일, 미정리 임시 파일. 결과는 전부 NOTE.

6

C-4 산출물 후속

이번 세션이 만든 이슈/PR 번호가 있을 때만 gh 로 상태 조회.

7

판정

마지막 두 줄에 [OK]/[BLOCKED] 와 Next: 만 남긴다.

계약

주의사항과 제약

아래는 조언이 아니라 dotfiles 에서 넘어온 인수 조건이다.

  • 엄격히 read-only. 파일을 만들거나 고치거나 지우지 않고, git 상태를 바꾸지 않으며, 원격에 아무것도 보내지 않는다. 조치 명령은 출력만 하고 실행 여부는 사용자가 정한다.
  • /exit 를 대신 실행하지 않는다. 그린이어도 안내 문자열만 찍는다 — 프로세스를 강제 종료하면 트랜스크립트 정리가 건너뛰어진다.
  • 네트워크는 C-4 하나만. gh 실패는 [WARN] 한 줄로 낮추고 판정을 뒤집지 않는다.
  • 백그라운드 작업·서브에이전트는 검사하지 못한다. 열거할 표준 수단이 없어 경고 한 줄만 남기고 넘어간다.
  • TaskList 가 없는 하네스에서는 C-2 가 degrade 한다. 조용히 건너뛰지 말고 출력에 명시해야 한다.
  • lib/*.sh 의 BLOCKED: / NOTE: / WARN: 줄은 그대로 옮긴다. 산문으로 재구현하거나 경고를 삼켜 exit code 를 깨끗하게 만들지 않는다.