모든 걸 AI에게 시키지 않기: 스크립트·크론으로 돌릴 일 가르기
매일 반복되는 정해진 절차는 AI에게 스크립트를 한 번 짜게 하고 크론·launchd로 예약하는 편이 낫습니다. 돌 때마다 모델을 부르지 않으니 사용량이 쌓이지 않고 입력이 같으면 결과도 같거든요. 스크립트와 크론을 처음부터 풀고, AI를 넣을 단계와 뺄 단계를 가르는 기준과 요청문을 정리했습니다.

Claude Code나 Codex에 익숙해지면 매일 하는 일도 대화창에 부탁하고 싶어집니다. "어제 들어온 파일 받아서 정리해 줘", "매주 월요일에 지난주 숫자 모아 줘" 같은 일이요. 한 번은 편합니다. 그런데 이걸 매일 반복하면 매번 AI가 처음부터 파일을 읽고 방법을 다시 정하고 사용량을 씁니다. 어제와 조금 다르게 처리하는 날도 생기고요.
정해진 절차는 AI에게 스크립트를 한 번 짜게 하고 그 스크립트를 크론 같은 예약 실행으로 돌리는 편이 낫습니다. 돌 때마다 모델을 다시 부르지 않으니 사용량이 쌓이지 않고 바로 실행됩니다. 입력이 같으면 결과도 같고요. AI는 요약, 분류, 문장 쓰기처럼 판단이 필요한 단계에만 넣으면 됩니다.
이 글은 개발을 해 본 적 없는 분을 기준으로 스크립트와 크론이 무엇인지부터 풀고, 어떤 일을 어느 쪽에 맡길지 가르는 기준과 Claude Code·Codex에 붙여 넣을 요청문, 잘 돌고 있는지 확인하는 방법으로 이어 갑니다.
제가 영상 554편을 정리할 때 나눈 방식
9월 24일부터 이틀 동안 해외 교육 커뮤니티 자료를 정리했습니다. 강의·워크숍 영상 554편과 첨부 파일을 받고 형식을 바꾸고 영상 음성을 글자로 받아 적은(전사) 뒤 자막을 한국어로 옮기는 작업이었어요.
이 중 Claude나 GPT 같은 언어 모델에게 맡긴 건 자막 번역 하나였습니다. 다운로드, 파일 변환, 음성 전사는 Claude Code가 짜 준 스크립트로 돌렸어요. 전사도 제 컴퓨터에서 돌아가는 음성 인식 프로그램(whisper)에 파일을 넣으면 되는 일이라 스크립트가 파일마다 실행하게 했습니다. 절차가 정해진 일에 대화형 AI가 매번 방법을 정할 이유가 없었고 번역만 문장을 읽고 뜻을 옮겨야 하니 모델이 필요했습니다.
스크립트를 부탁할 때 "중간에 멈춰도 다시 실행하면 이미 받은 파일은 건너뛰고 이어서 받게 해 줘"를 같이 적었습니다. 수백 편을 받다 보면 네트워크가 끊기거나 컴퓨터가 잠들 수 있는데 이어받기가 되면 그때 할 일이 "같은 명령 한 번 더"로 끝납니다.
평소 정기 작업도 비슷합니다. 여러 프로젝트의 수집이나 모니터링은 늘 켜 두는 작업용 맥 한 대에서 macOS 예약 작업(launchd)으로 돌리고 있어요. 아래에서 설명하는 launchd가 바로 그 도구입니다.
스크립트: 명령 순서를 적어 둔 파일
스크립트는 컴퓨터에게 시킬 명령을 순서대로 적어 둔 텍스트 파일입니다. 요리로 치면 레시피 카드예요. 한 번 적어 두면 언제 실행해도 같은 순서로 같은 명령을 처리합니다. 용어집의 스크립트 항목에도 정리해 두었습니다.
자주 보는 종류는 두 가지입니다.
- 쉘 스크립트(
.sh): 터미널에 치는 명령을 그대로 모아 둔 파일입니다. 파일 옮기기, 압축하기, 다른 프로그램 실행하기처럼 짧은 작업에 씁니다. - 파이썬 스크립트(
.py): 파이썬이라는 프로그래밍 언어로 쓴 파일입니다. 표 읽기, 숫자 계산, 웹에서 데이터 받기처럼 조금 복잡한 처리에 씁니다. 합계 같은 계산을 AI에게 대화로 시키면 가끔 틀리지만 코드로 더하면 같은 표에서 늘 같은 숫자가 나와요. 이 이야기와 파이썬 예시는 AI 계산 실수 막기: 계산은 코드로, 검증은 따로에 있습니다.
받은 파일 폴더를 매일 날짜 이름으로 압축해 두는 쉘 스크립트는 이렇게 생겼습니다.
#!/bin/bash
# backup-inbox.sh: 받은 파일 폴더를 날짜 이름으로 압축해 백업 폴더에 둔다
set -e
SRC="$HOME/work/inbox"
DEST="$HOME/work/backup"
mkdir -p "$DEST"
zip -r "$DEST/inbox-$(date +%Y-%m-%d).zip" "$SRC"
echo "$(date '+%F %T') 백업 완료"
#으로 시작하는 줄은 사람이 읽으라고 남긴 설명입니다. set -e는 중간에 명령 하나가 실패하면 거기서 멈추라는 뜻이고요. 마지막 줄은 끝난 시각과 함께 "백업 완료"를 출력하는데 나중에 기록(로그)을 볼 때 이 한 줄이 도움이 돼요.
스크립트 실행하는 법
터미널을 열고 스크립트가 있는 폴더로 이동한 뒤 이렇게 칩니다. 파이썬 스크립트라면 python3 파일이름.py입니다.
bash backup-inbox.sh
파이썬 스크립트는 컴퓨터에 파이썬이 설치돼 있어야 돌아갑니다. 처음이라면 이 단계도 Claude Code나 Codex에 "이 스크립트를 실행해 보고 결과를 보여 줘"라고 부탁하면 돼요. 중요한 건 한 번 만든 뒤에는 AI 없이도 이 명령 한 줄로 같은 일이 된다는 점입니다.
스크립트 안에 API 키나 비밀번호를 직접 적으면 안 됩니다. 메일 발송용 키 같은 값은 환경변수로 빼 두고 스크립트는 이름만 불러 쓰게 합니다.
크론: 정해진 시각에 대신 실행해 주는 예약 장치
스크립트가 레시피 카드라면 크론은 "매일 아침 9시에 이 카드대로 요리해"라고 걸어 두는 타이머입니다. macOS와 리눅스에 들어 있는 오래된 예약 실행 프로그램이고 예약 목록을 적는 표를 크론탭(crontab)이라고 부릅니다. 용어집의 크론 항목에도 정리했습니다.
crontab 한 줄 읽는 법
크론탭은 한 줄에 예약 하나를 적습니다. 앞의 칸 다섯 개가 시각이고 그 뒤가 실행할 명령이에요.
분 시 일 월 요일 명령
0 9 * * * /Users/me/jobs/backup-inbox.sh
| 칸 | 뜻 | 쓸 수 있는 값 |
|---|---|---|
| 분 | 몇 분에 | 0~59 |
| 시 | 몇 시에(24시간제) | 0~23 |
| 일 | 매달 며칠에 | 1~31 |
| 월 | 몇 월에 | 1~12 |
| 요일 | 무슨 요일에 | 0~7 (0과 7은 일요일, 1은 월요일) |
*는 "아무 값이나", 즉 매번이라는 뜻입니다. 그래서 위 줄은 "매달 매일 모든 요일의 9시 0분", 풀어 말하면 매일 오전 9시예요. 기호 세 개를 더 알아 두면 거의 다 읽을 수 있습니다.
1-5: 범위. 요일 칸에 쓰면 월요일부터 금요일까지입니다.1,15: 목록. 일 칸에 쓰면 1일과 15일입니다.*/15: 간격. 분 칸에 쓰면 15분마다입니다.
| crontab 시각 부분 | 뜻 |
|---|---|
0 9 * * * | 매일 오전 9시 |
30 8 * * 1-5 | 평일(월~금) 오전 8시 30분 |
*/15 * * * * | 15분마다 |
0 18 * * 5 | 매주 금요일 오후 6시 |
0 7 1 * * | 매달 1일 오전 7시 |
헷갈리기 쉬운 규칙이 하나 있어요. 일 칸과 요일 칸을 둘 다 채우면 둘 중 하나만 맞아도 실행됩니다. 그래서 0 9 1 * 1은 "1일이 월요일일 때"가 아니라 "매달 1일, 그리고 매주 월요일"이에요. 크론 다섯 칸만으로는 "1일이면서 월요일"을 적을 수 없습니다. 그런 조건이 필요하면 요일 칸은 *로 두고 스크립트 안에서 요일을 한 번 더 확인하게 합니다.
실제 크론탭 한 줄은 보통 이렇게 씁니다.
0 9 * * * /bin/bash /Users/me/jobs/backup-inbox.sh >> /Users/me/jobs/logs/backup-inbox.log 2>&1
뒤에 붙은 >> 파일 2>&1은 "화면에 나올 내용과 오류 메시지를 이 파일 끝에 계속 붙여 적어라"라는 뜻입니다. 예약 실행은 아무도 화면을 보고 있지 않을 때 돌아서 이렇게 기록을 남겨야 나중에 무슨 일이 있었는지 알 수 있어요. 예약 실행은 내가 터미널에서 실행할 때와 환경이 달라서 파일 위치도 전체 경로로 적어 두는 게 안전합니다.
크론탭은 터미널에서 crontab -l로 목록을 보고 crontab -e로 고칩니다. crontab -e를 치면 낯선 편집기가 열리니 처음이라면 AI에게 등록을 맡기고 crontab -l로 결과만 확인하는 걸 권합니다.
macOS에는 launchd가 있습니다
맥에서도 크론은 돌아갑니다. 다만 Apple 개발자 문서는 크론이 아직 지원되지만 권장하지 않으며 launchd로 대체됐다고 적어 두었어요. launchd는 macOS가 원래 쓰는 예약·상시 실행 관리자입니다.
launchd는 한 줄짜리 크론탭 대신 작업마다 설정 파일(plist) 하나를 씁니다. 내 계정으로 도는 작업은 ~/Library/LaunchAgents 폴더에 둡니다. 매일 오전 9시에 위 백업 스크립트를 돌리는 설정은 이렇게 생겼습니다.
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>com.me.backup-inbox</string>
<key>ProgramArguments</key>
<array>
<string>/bin/bash</string>
<string>/Users/me/jobs/backup-inbox.sh</string>
</array>
<key>StartCalendarInterval</key>
<dict>
<key>Hour</key>
<integer>9</integer>
<key>Minute</key>
<integer>0</integer>
</dict>
<key>StandardOutPath</key>
<string>/Users/me/jobs/logs/backup-inbox.log</string>
<key>StandardErrorPath</key>
<string>/Users/me/jobs/logs/backup-inbox.err.log</string>
</dict>
</plist>
Label은 작업 이름, ProgramArguments는 실행할 명령, StartCalendarInterval은 시각입니다. 비워 둔 칸은 크론의 *처럼 "매번"으로 읽혀요. StandardOutPath와 StandardErrorPath는 출력과 오류를 적을 기록 파일이고요. 등록과 확인은 터미널에서 이렇게 합니다.
# 등록
launchctl bootstrap gui/$(id -u) ~/Library/LaunchAgents/com.me.backup-inbox.plist
# 상태 확인 (마지막 종료 상태가 함께 나온다)
launchctl print gui/$(id -u)/com.me.backup-inbox
# 예약 시각을 기다리지 않고 지금 한 번 실행
launchctl kickstart gui/$(id -u)/com.me.backup-inbox
# 예약 지우기
launchctl bootout gui/$(id -u)/com.me.backup-inbox
이 파일도 직접 쓸 필요는 없습니다. 아래 요청문처럼 AI에게 만들고 등록까지 부탁하면 되고 등록된 뒤 무엇을 확인해야 하는지 알아볼 수 있을 정도면 충분합니다.
컴퓨터가 꺼져 있으면 돌지 않습니다
크론과 launchd 모두 그 컴퓨터가 켜져 있어야 돕니다. 잠자기일 때는 둘이 다른데 크론은 잠든 동안의 예약을 건너뛰고 launchd의 StartCalendarInterval 작업은 깨어날 때 실행됩니다. 잠든 동안 여러 번을 놓쳤어도 한 번으로 합쳐 돌아요. 전원이 꺼져 있었다면 둘 다 그 회차를 건너뛰고 다음 예약 시각을 기다립니다. 노트북 뚜껑을 닫고 퇴근하면 저녁 예약이 밀리거나 빠질 수 있다는 뜻이에요.
~/Library/LaunchAgents에 둔 작업은 내 계정으로 로그인된 동안 돕니다. 전원만 켜 두고 로그인 화면에 멈춰 있으면 돌지 않을 수 있으니 상시 컴퓨터는 로그인 상태로 둡니다.
그래서 정기 작업은 늘 켜 두는 컴퓨터에 두는 편이 편합니다. 그런 컴퓨터가 없다면 서버나 클라우드에서 예약 실행하는 방법이 있습니다. 공식 문서로 확인한 선택지만 짧게 적습니다.
- GitHub Actions의 schedule: 저장소에 넣어 둔 작업(워크플로)을 크론 문법으로 예약해 GitHub 서버에서 돌립니다. 내 컴퓨터의 폴더는 보이지 않고 워크플로 파일이 기본 브랜치에 있어야 예약됩니다. 기본 시간대가 UTC라서 한국 시각 오전 9시 7분은
7 0 * * *이고(timezone항목으로 시간대 지정 가능) 가장 짧은 간격은 5분입니다. 매시 정각은 사용량이 몰려 늦게 시작되거나 실행이 버려질 수 있으니 분 칸에 0은 피하세요. 공개 저장소는 60일 동안 활동이 없으면 예약이 자동으로 꺼집니다. - Claude Code 루틴(Routines): Anthropic 클라우드에서 돌아 내 컴퓨터가 꺼져 있어도 됩니다. 대신 내 맥의 폴더가 아니라 연결한 GitHub 저장소를 매번 새로 받아 작업합니다. Pro, Max, Team, Enterprise 플랜에서 쓸 수 있고 가장 짧은 간격은 1시간, 아직 연구 미리보기(research preview)라 동작과 한도가 바뀔 수 있습니다.
- Codex 예약 작업(Scheduled tasks): ChatGPT 웹과 데스크톱 앱에서 만듭니다. 웹에서 만든 예약은 내 컴퓨터의 폴더를 직접 다루지 못하고 데스크톱 앱에서 프로젝트 폴더를 쓰는 예약은 컴퓨터와 앱이 켜져 있어야 합니다. 워크스페이스나 플랜에 따라 쓸 수 있는지가 다릅니다.
아래 두 개는 성격이 다릅니다. 스크립트가 아니라 AI 에이전트를 매번 새로 실행하는 예약이에요. 이 차이가 다음 절의 주제입니다.
AI에게 매번 시키면 생기는 일
Claude Code에는 세션이 열려 있는 동안 같은 요청을 되풀이하는 /loop와 데스크톱 앱의 예약 작업, 위의 클라우드 루틴이 있고 Codex에는 예약 작업이 있어요. 세션 안에서 도는지 실행마다 새 세션을 여는지는 조금씩 다르지만 어느 쪽이든 정해진 시각에 AI가 요청문을 다시 읽고 다시 판단하는 방식입니다.
판단이 필요한 일이라면 이게 맞습니다. 매일 아침 새로 올라온 이슈를 읽고 우선순위를 매기는 일은 스크립트로 짜기 어렵거든요. 하지만 "폴더의 파일을 압축해 백업"처럼 절차가 정해진 일까지 이렇게 돌리면 세 가지를 손해 봅니다.
사용량이 매번 듭니다. Claude Code 루틴 문서는 루틴 실행이 대화형 세션과 똑같이 구독 사용량을 쓰고 계정마다 하루 실행 횟수에도 따로 한도가 있다고 안내합니다. 스크립트는 만든 뒤에는 돌 때 모델을 부르지 않아요. 차이가 얼마인지는 작업마다 달라 숫자로 말할 수 없지만 매일 도는 일이라면 매일 쌓입니다.
가끔 다르게 동작합니다. AI는 매번 방법을 새로 정하니 어느 날은 파일 이름을 다르게 붙이거나 한 단계를 건너뛸 수 있어요. 스크립트는 입력이 같으면 결과도 같고 달라졌다면 입력이나 스크립트가 바뀐 것이라 원인을 찾기도 쉽습니다.
느리고 확인하기 번거롭습니다. AI 세션은 시작하고 파일을 읽고 계획을 세우는 데 시간이 걸립니다. 스크립트는 바로 실행되고 결과는 기록 파일에 한 줄로 남아요. 루틴 문서도 실행 목록의 초록색 표시는 세션이 인프라 오류 없이 끝났다는 뜻일 뿐 작업이 성공했다는 뜻은 아니니 기록을 열어 확인하라고 적어 두었습니다.
그래서 예약할 대상이 "AI"인지 "스크립트"인지부터 정해야 합니다. 자동화할 가치가 있는지 따지는 법은 반복 업무 자동화 ROI 계산법에 있어요.
어느 쪽에 맡길까: 판단 기준 네 가지
일 하나를 놓고 아래 네 가지를 물어보세요.
| 질문 | 스크립트만 | 스크립트 + AI 한 단계 | AI 대화로 |
|---|---|---|---|
| 매번 같은 결과가 나와야 하나 | 반드시 같아야 함 | 대부분 같고 일부만 달라도 됨 | 매번 달라도 됨 |
| 판단이 필요한가 | 필요 없음(규칙으로 충분) | 한 단계만 필요(요약, 분류, 문장) | 처음부터 끝까지 판단 |
| 얼마나 자주 도나 | 매일·매시간 | 매일·매주 | 가끔, 한 번 |
| 틀리면 얼마나 아픈가 | 크게 아픔(돈, 발송, 삭제) | 사람이 결과를 보고 고칠 수 있음 | 대화하며 바로 고침 |
예를 들어 이렇게 나뉩니다.
- 스크립트만: 정해진 시각에 정해진 사람에게 알림 메일 보내기, 파일 받기, 형식 바꾸기(엑셀을 CSV로), 매출 합계 집계, 백업.
- 스크립트 + AI 한 단계: 새 문의를 모으는 것까지는 스크립트, 유형별로 나누고 세 줄로 요약하는 건 AI. 회의 녹음 전사는 스크립트, 결정 사항 정리는 AI. 제 영상 정리도 여기에 해당합니다.
- AI 대화로: 이번 분기 기획안 초안, 처음 보는 데이터에서 무엇을 봐야 할지 찾기, 한 번만 하는 조사.
틀리면 아픈 일일수록 AI 단계를 줄이고 사람 확인을 넣으세요. 메일 발송처럼 되돌릴 수 없는 동작은 스크립트가 하되 AI가 쓴 문장이 들어간다면 발송 전에 사람이 한 번 보게 하는 게 좋습니다. 사람 확인 지점을 어디에 둘지는 긴 작업을 스킬로 쪼개기에서 이어서 다룹니다.
스크립트 안에 AI 한 단계 넣기
Claude Code와 Codex는 대화창 없이 명령 한 줄로도 실행할 수 있어서 스크립트 중간에 AI 단계를 끼워 넣을 수 있습니다. 오늘 모은 문의 파일을 요약해 저장하는 줄은 이렇게 씁니다.
# Claude Code
cat today-inquiries.txt | claude -p "아래 문의를 유형별로 나누고 유형마다 세 줄로 요약해 줘" > summary.md
# Codex
cat today-inquiries.txt | codex exec "아래 문의를 유형별로 나누고 유형마다 세 줄로 요약해 줘" > summary.md
claude -p와 codex exec는 각각 공식 문서가 안내하는 비대화형 실행 방식입니다. codex exec는 Git 저장소 폴더 안에서 실행하는 게 기본이라 저장소가 아닌 폴더라면 문서 안내대로 --skip-git-repo-check를 붙여야 합니다. 이 예시는 결과 저장을 셸(>)이 하니 Codex의 기본 읽기 전용 샌드박스로 충분하고 Codex가 직접 파일을 고쳐야 한다면 --sandbox workspace-write가 필요해요. 앞뒤 단계는 스크립트가 늘 같게 처리하고 판단이 필요한 가운데 한 줄만 AI가 맡습니다. 이 한 줄은 돌 때마다 사용량을 씁니다.
Claude Code·Codex에 이렇게 요청하세요
아래 요청문은 Claude Code와 Codex 어느 쪽에 붙여 넣어도 됩니다. 괄호 부분만 내 일로 바꾸세요.
1단계: 스크립트 만들기
(매일 아침 거래처 폴더에 새로 올라온 엑셀 파일을 CSV로 바꿔 output 폴더에 저장하는) 일을 스크립트로 만들어 줘.
- 이 일은 매번 같은 결과가 나와야 하니 AI 호출 없이 스크립트만으로 처리해 줘.
- 이미 처리한 파일은 건너뛰어서, 중간에 멈춰도 다시 실행하면 이어서 하게 해 줘.
- 실행할 때마다 시각과 처리한 파일 수, 실패한 파일 이름을 logs 폴더의 기록 파일에 한 줄씩 남겨 줘.
- 키나 비밀번호가 필요하면 스크립트에 적지 말고 환경변수로 받게 해 줘.
- 다 만들면 한 번 실행해서 결과와 기록 파일 내용을 보여 주고, 실행 명령을 알려 줘.
2단계: 예약 등록하기
방금 만든 스크립트가 매일 오전 9시에 자동으로 돌게 등록해 줘.
- 이 컴퓨터는 macOS야. launchd(LaunchAgents)로 등록하고, 크론을 쓰는 게 낫다면 이유를 먼저 설명해 줘.
- 스크립트와 파일 경로는 전체 경로로 적어 줘.
- 출력과 오류는 logs 폴더의 기록 파일에 남게 해 줘.
- 등록한 뒤 예약 시각을 기다리지 말고 지금 한 번 실행해서 기록 파일에 결과가 찍히는지 확인해 줘.
- logs 폴더가 없으면 먼저 만들어 줘.
- 등록을 확인하는 명령과 예약을 지우는 명령도 알려 줘.
3단계: 실패 알림 붙이기
이 예약 작업이 실패하면 나에게 알림이 오게 해 줘.
- 스크립트가 오류로 끝나면 (내 이메일 / 내가 쓰는 메신저 채널)로 "어떤 작업이, 언제, 무슨 오류로" 실패했는지 한 번만 보내 줘.
- 알림에 필요한 키는 환경변수로 받고 코드에 적지 마.
- 일부러 실패를 한 번 일으켜서 알림이 실제로 오는지 시험해 줘.
요청을 세 번으로 나눈 건 문제가 생겼을 때 "스크립트 문제인지 예약 문제인지"를 가르기 위해서입니다. 스크립트가 손으로 실행해서 잘 도는 걸 본 다음에 예약해야 그 구분이 됩니다. AI가 명령을 실행하려고 승인을 물을 때는 무엇을 하려는지 읽고 허락하세요(권한 모드).
잘 돌고 있는지 확인하는 법
예약 작업의 가장 큰 위험은 조용히 멈추는 것입니다. 아무도 화면을 보지 않으니 며칠째 안 돌았는데 모를 수 있어요. 처음 일주일은 아래 네 가지를 확인하는 습관을 들이면 좋습니다.
- 기록 파일 끝을 봅니다.
tail -n 20 /Users/me/jobs/logs/backup-inbox.log를 치면 마지막 20줄이 나옵니다. 오늘 날짜의 "완료" 줄이 있으면 돌았다는 뜻이에요. - 예약이 살아 있는지 봅니다. 크론이면
crontab -l, launchd면 위의launchctl print명령으로 등록 상태와 마지막 종료 상태를 봅니다. - 결과물을 직접 엽니다. 기록에는 성공이라고 찍혔는데 파일이 비어 있는 경우도 있습니다.
- 실패 알림이 실제로 오는지 시험해 둡니다. 만들어 놓고 한 번도 안 받아 봤다면 없는 것과 같습니다.
막혔을 때는 기록 파일을 통째로 AI에게 보여 주면 됩니다. "이 기록 파일을 보고 어제 예약 작업이 왜 실패했는지 찾아 줘"라고 하면 실패한 명령을 찾기가 훨씬 쉬워져요. 스크립트와 기록 파일이 어디 있는지 AI가 헤매지 않게 폴더를 정리하는 방법은 AI가 알아서 찾는 작업 폴더 만들기에 있습니다.
같이 읽으면 좋은 글
- AI 계산 실수 막기: 계산은 코드로, 검증은 따로
- 긴 작업을 스킬로 쪼개기: 사람 확인 지점을 넣는 기준 세 가지
- 반복 업무 자동화 ROI 계산법: 언제 자동화가 손해인가
- Claude Code 비용 줄이는 7가지: 컨텍스트·모델·캐시
출처와 확인 (2026-09-25)
- Scheduling Timed Jobs (Apple, 크론 대신 launchd 권장, 잠자기·전원 꺼짐 때 동작)
- macOS
man 5 crontab,man launchd.plist,man launchctl(크론 칸과 값, 일·요일 칸 규칙, 잠든 동안 크론은 건너뛰고 launchd는 깨어날 때 한 번 실행, LaunchAgents 위치, StandardOutPath, bootstrap·print·kickstart·bootout) - Events that trigger workflows: schedule (GitHub Actions, UTC 기본과 timezone, 5분 최소 간격, 정각 지연·실행 누락, 기본 브랜치, 60일 비활성)
- Run prompts on a schedule (Claude Code
/loop, 예약 방식 비교) - Schedule recurring tasks in Claude Code Desktop (데스크톱 예약 작업, 앱이 켜져 있고 깨어 있을 때만 실행, 잠든 시각은 건너뛰고 최근 7일 중 가장 최근 1회만 보충)
- Automate work with routines (연구 미리보기, 루틴 플랜, 최소 1시간, 저장소 클론, 구독 사용량과 하루 실행 한도, 초록 표시의 뜻)
- Run Claude Code programmatically (
claude -p) - Scheduled tasks (Codex 예약 작업, 웹과 데스크톱 앱 차이)
- Non-interactive mode (
codex exec, Git 저장소 확인과 --skip-git-repo-check, 기본 읽기 전용 샌드박스)



