Claude Code로 프롬프트를 정기 실행! /loop 커맨드와 스케줄 태스크 사용법
목차
배포를 실행한 후, 터미널에 붙어서 완료를 기다린다. CI가 통과될 때까지 몇 번이고 브라우저를 새로고침한다. PR에 리뷰 코멘트가 달렸는지 신경 쓰여 집중이 끊긴다…. 개발 중에 이런 "살짝 신경 쓰이지만 손을 멈출 정도는 아닌 확인 작업"이 은근히 스트레스죠.
Claude Code의 /loop 커맨드와 스케줄 태스크 기능을 사용하면, 이런 확인 작업을 Claude에게 맡겨둘 수 있습니다. 주말에 Boris Cherry 씨의 공지에서도 소개된 이 기능, 공식 문서의 내용을 바탕으로 실제로 사용할 때 알아두면 좋은 포인트를 정리해 보겠습니다.
우선 실행해보기
사용법은 매우 간단합니다. /loop 뒤에 인터벌과 프롬프트를 쓰기만 하면 됩니다.
/loop 5m 배포가 완료됐는지 확인하고, 결과를 알려줘
이것으로 "5분마다 배포 완료를 확인하고 보고하는" 태스크가 동작하기 시작합니다. Claude가 내부적으로 cron 잡으로 등록하고, 잡 ID와 실행 간격을 반환해줍니다.
인터벌은 앞에 써도 뒤에 써도 OK이며, 생략하면 기본값인 10분이 됩니다.
/loop 30m 빌드 상태를 확인해줘
/loop 빌드 상태를 확인해줘 every 2 hours
/loop 빌드 상태를 확인해줘
단위는 s(초), m(분), h(시간), d(일). 내부적으로 cron 식으로 변환되므로, 초는 가장 가까운 분으로 올림되고, 7m처럼 나누어 떨어지지 않는 값은 가까운 깔끔한 간격으로 반올림됩니다. 실제로 몇 분 간격으로 설정됐는지는 Claude가 알려주므로, 세세한 부분은 신경 쓰지 않아도 됩니다.
이미 스킬이나 커맨드로 정리해둔 워크플로우가 있다면, 그것을 루프에 태울 수도 있습니다.
/loop 20m /review-pr 1234
20분마다 PR 리뷰를 실행해서, 새로운 커밋이 추가될 때마다 피드백을 받는 것도 가능합니다.
"나중에 알려줘"도 가능
반복이 아닌 일회성 리마인더라면, /loop를 사용하지 않고 자연어로 그대로 부탁할 수 있습니다.
3시가 되면 릴리스 브랜치를 push하라고 리마인드해줘
45분 후에 인테그레이션 테스트가 통과됐는지 확인해줘
Claude가 시각을 cron 식으로 변환해 단발 태스크로 등록하고, 실행 후에는 자동으로 삭제해줍니다. 개발에 몰두하다 보면 잊기 쉬운 태스크를 가볍게 설정해둘 수 있어 은근히 도움이 됩니다.
태스크 확인과 취소
"지금 어떤 태스크가 동작하고 있지?"라고 생각하면, 이것도 자연어로 물어볼 수 있습니다.
스케줄된 태스크를 목록으로 표시해줘
배포 체크 잡을 취소해줘
내부적으로는 CronCreate(등록), CronList(목록), CronDelete(삭제)라는 3가지 도구가 동작하고 있습니다. 각 태스크에는 8자리 ID가 부여되며, 1세션당 최대 50개까지 등록 가능합니다. 다만 평소 사용에서 50개에 달하는 경우는 거의 없을 것입니다.
사용 전에 알아두면 좋은 특성
편리한 기능이지만, 생각대로 동작하지 않는 경우도 있을 수 있습니다. 구조를 조금 알아두면 "어?" 싶을 때 침착하게 대처할 수 있습니다.
태스크는 "Claude가 한가할 때" 동작한다
스케줄 태스크는 사용자와의 대화 사이에 실행됩니다. Claude가 응답을 생성하는 도중에는 끼어들지 않습니다. 긴 처리 도중에 예정 시각이 되어도, 그 처리가 끝날 때까지 기다렸다가 실행됩니다.
즉 "딱 5분마다"가 아니라 "대략 5분마다" 정도의 느낌입니다. 초 단위의 정밀도가 요구되는 용도에는 적합하지 않습니다.
실행 타이밍에 미묘한 오차가 있다
API에 대한 동시 접근을 피하기 위해, 실행 시각에는 작은 오프셋(지터)이 자동으로 추가됩니다.
- 반복 태스크: 주기의 최대 10%(상한 15분)의 지연
- 단발 태스크: 매시 0분이나 30분에 스케줄한 경우, 최대 90초 일찍 실행될 수 있음
1시간마다의 잡이라면 :00부터 :06 사이 어딘가에서 실행된다는 이미지입니다. 오프셋은 태스크 ID에 의해 결정되므로, 같은 태스크라면 매번 같은 오차가 발생합니다.
반복 태스크는 3일 후 자동 소멸
설정한 채로 잊어버린 루프가 계속 실행되지 않도록, 반복 태스크에는 3일간의 유효 기간이 있습니다. 마지막으로 한 번 더 실행된 후 자동 삭제되는 구조입니다.
3일 이상 실행하고 싶다면, 기간 만료 전에 취소→재생성하거나, 후술할 다른 방법을 사용해야 합니다.
알림 대상은 세션 내에만
이 부분은 주의가 필요합니다. 리마인더나 태스크 결과는 Claude Code의 세션 내에 메시지로 표시될 뿐입니다. Slack이나 이메일, LINE 등의 외부 서비스에는 알림이 가지 않습니다.
"리마인드해줘"라고 부탁해도, Claude Code 창을 보고 있지 않으면 알아차릴 수 없다는 뜻입니다. 외부에 알림을 보내고 싶은 경우에는, 프롬프트 내에서 셸 커맨드나 API 호출을 조합하는 등 직접 구조를 마련해야 합니다.
스케줄 태스크의 한계
세션 스코프의 구조이므로, 구조적인 제약이 있습니다.
- 세션 종료 시 사라짐 — Claude Code를 재시작하면 태스크가 모두 초기화됩니다. 터미널을 닫거나 세션이 종료되어도 마찬가지입니다
- 누락된 실행의 보완은 없음 — Claude가 장시간 처리 중에 태스크의 예정 시각이 지난 경우, 유휴 상태가 됐을 때 한 번만 실행됩니다. 지나간 분이 모두 실행되는 것은 아닙니다
즉 "Claude Code를 열고 작업하는 동안의, 간단한 자동화"가 담당 범위입니다. 무인으로 계속 동작해야 하는 경우에는, GitHub Actions의 schedule 트리거나 Desktop scheduled tasks를 사용하는 것이 적합합니다.
반대로 말하면, 세션 스코프이기 때문에 "가볍게 시도해볼 수 있다"는 장점도 있습니다. 설정을 잘못해도 세션을 종료하면 깔끔하게 사라지므로, cron을 직접 다룰 때처럼 "삭제를 잊으면 어쩌지"라는 부담이 없습니다.
환경 변수로 비활성화도 가능
팀에서 사용하면서 보안 정책상 cron을 허용하고 싶지 않은 경우에는, 환경 변수 CLAUDE_CODE_DISABLE_CRON=1을 설정하면 스케줄러 전체를 비활성화할 수 있습니다.
실제로 활용할 수 있는 상황
지금까지의 내용을 바탕으로, 개발에서 활용할 수 있을 것 같은 패턴을 몇 가지 들어보겠습니다.
배포 후 헬스 체크
/loop 5m 스테이징 환경의 배포가 정상인지 확인하고, 에러가 있으면 보고해줘
배포한 후 다른 작업으로 넘어가면서, 문제가 있으면 알려받을 수 있습니다.
CI 완료 대기
30분 후에 CI 파이프라인이 통과됐는지 확인하고, 결과를 정리해줘
CI가 긴 프로젝트에서는, 완료 예상 시각 즈음에 원샷으로 설정해두는 것이 편리합니다.
릴리스 전 빠뜨린 것 방지
5시가 되면 릴리스 전에 changelog를 업데이트하라고 리마인드해줘
집중하다 보면 건너뛰기 쉬운 루틴 작업의 리마인더로.
정리
Claude Code의 스케줄 태스크는, "정기적으로 무언가를 확인한다" "나중에 기억한다"는, 개발 중의 작은 번거로움을 간편하게 해소해주는 기능입니다.
/loop으로 프롬프트를 반복 스케줄- 자연어로 원샷 리마인더도 설정 가능
- 세션 스코프이므로 가볍게 사용할 수 있고, 종료 시 자동 클린
- 반복 태스크는 3일 후 자동 만료
- 알림은 세션 내에만. 외부 알림에는 별도 구조가 필요
- 영속적인 스케줄링이 필요하다면 GitHub Actions나 Desktop scheduled tasks를
cron 식의 상세한 작성법이나 내부 도구의 사양에 대해서는 공식 문서가 충실하게 정리되어 있으므로, 더 깊이 알고 싶은 분은 그쪽도 참조해보세요.
우선 /loop 10m 빌드 상태를 확인해줘와 같은 가벼운 것부터 시도해보면, 이 기능의 편리함을 실감할 수 있을 것입니다.