session-skills / guide

/session:resume-after-limit

guard 가 남긴 상태 파일을 읽어, 옳은 워크트리인지 확인한 뒤 감싼 명령을 다시 실행하고 다음 사이클을 미리 무장한다.

Claude Code 전용보통 크론이 호출워크트리 불일치 = 하드 정지짝: rate-limit-guard
경계

언제 쓰고, 언제 안 쓰나

이럴 때 쓴다

  • 토큰 리밋 리셋 시각이 되어 guard 의 크론이 발화했을 때 (정상 경로)
  • 같은 워크트리에서 수동으로 “리밋 풀렸으니 이어서” 하고 싶을 때

이럴 땐 다른 스킬

  • 안전망을 설치 하는 쪽 → session:rate-limit-guard
  • API 에러·OOM·ESC 로 끊긴 같은 세션 복구 (크론 없음) → session:restart
  • 미완 작업을 다음 세션에 넘기기 → session:handoff
인터페이스

호출 형식

/session:resume-after-limit                # 상태 파일을 읽어 재개
/session:resume-after-limit <command>      # 명시 override (크론 경로)
/session:resume-after-limit -h
동작

7단계

1

상태 로드

.claude/.rate-limit-guard.json 에서 command, worktree, branch, max_cycles, cycles_remaining, cycle_window_min 파싱. 다중 사이클 필드가 없으면 1 / 1 / 305 로 기본값.

2

명령 결정

상태 파일의 command → <command> 인자 → 둘 다 없으면 정지.

3

컨텍스트 sanity check

pwd != worktree 면 STOP ([FAIL] 워크트리 불일치). 브랜치만 다르면 [WARN] 후 계속.

4

선제적 재무장

cycles_remaining > 1 이면 감싼 명령을 돌리기 전에 다음 사이클 크론을 등록하고 <NEXT_ID> 를 저장한다.

5

announce

[RESUME] 블록에 워크트리·브랜치·사이클 번호를 찍는다.

6

명령 실행

멱등 실행 — 이미 끝난 sub-step 은 감싼 워크플로 자신의 멱등성이 건너뛴다.

7

성공 시 정리

같은 턴에서 Step 4 크론을 CronDelete 하고 상태 파일을 지운다. 발화한 크론 자신은 recurring: false 라 자동 삭제된다.

계약

주의사항과 제약

  • 워크트리 불일치에서 Step 3 를 넘어가지 않는다. 잘못된 디렉터리는 곧 잘못된 작업이다.
  • 감싼 명령이 성공하기 전에는 상태 파일도, 다음 크론도 지우지 않는다. 실패 시 둘 다 그대로 두어야 다음 발화가 이 스킬을 다시 트리거한다.
  • 다른 스킬 안에서 호출하지 않는다. 크론 또는 사용자 트리거 전용.
  • references/preemptive-rearm.md 의 크론 프롬프트 템플릿은 rate-limit-guard/references/cron-prompt-template.md 와 동기화되어야 한다.