/session:close
세션을 닫아도 되는지 4개 항목으로 훑어 [OK] / [BLOCKED] 판정 한 줄과 Next: 한 줄을 산출한다. 저장소는 아무것도 바꾸지 않는다.
언제 쓰고, 언제 안 쓰나
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 / help | references/help.md 출력 후 정지 | — |
7단계
판단이 드는 지점은 Step 2 하나뿐이다. 나머지는 lib/ 스크립트가 결정적으로 수행한다.
인자 파싱
--repos 는 자동 수집 결과에 더한다.
대상 저장소 수집
현재 저장소 최상위 + 이번 세션이 건드린 다른 워크트리 + --repos. 절대경로 정규화 후 중복 제거. cwd 하나만 보고 끝내지 않는다.
C-1 git 상태
lib/check-repos.sh. 진행중 merge/rebase, 미커밋 변경, untracked 파일, 원격 미반영 커밋.
C-2 TodoList
TaskList 로 in_progress(BLOCKED) / pending(NOTE) 나열. todo 가 없으면 “TodoList 없음” 을 명시한다.
C-3 임시 산출물
lib/check-artifacts.sh 로 scratchpad 잔재, 버려진 예약 파일, 미정리 임시 파일. 결과는 전부 NOTE.
C-4 산출물 후속
이번 세션이 만든 이슈/PR 번호가 있을 때만 gh 로 상태 조회.
판정
마지막 두 줄에 [OK]/[BLOCKED] 와 Next: 만 남긴다.
주의사항과 제약
아래는 조언이 아니라 dotfiles 에서 넘어온 인수 조건이다.
- 엄격히 read-only. 파일을 만들거나 고치거나 지우지 않고, git 상태를 바꾸지 않으며, 원격에 아무것도 보내지 않는다. 조치 명령은 출력만 하고 실행 여부는 사용자가 정한다.
/exit를 대신 실행하지 않는다. 그린이어도 안내 문자열만 찍는다 — 프로세스를 강제 종료하면 트랜스크립트 정리가 건너뛰어진다.- 네트워크는 C-4 하나만.
gh실패는[WARN]한 줄로 낮추고 판정을 뒤집지 않는다. - 백그라운드 작업·서브에이전트는 검사하지 못한다. 열거할 표준 수단이 없어 경고 한 줄만 남기고 넘어간다.
TaskList가 없는 하네스에서는 C-2 가 degrade 한다. 조용히 건너뛰지 말고 출력에 명시해야 한다.lib/*.sh의BLOCKED:/NOTE:/WARN:줄은 그대로 옮긴다. 산문으로 재구현하거나 경고를 삼켜 exit code 를 깨끗하게 만들지 않는다.