라벨이 skills인 게시물 표시

claude -p에서 인터랙티브 스킬이 멈추는 이유 — Phase 2 승인 트랩과 3가지 우회법

이미지
cron에서 스킬을 돌렸더니 Phase 2에서 멈췄다 claude -p 를 cron에 넣고 blog-draft 스킬을 자동화했다. 첫 실행 로그를 열었더니 스킬이 프레임 후보 3개를 출력한 뒤 프로세스가 종료돼 있었다. 응답을 기다리는 주체는 아무도 없었다. 이게 Phase 2 승인 트랩 이다. 이 글은 트랩의 원인을 분해하고, 자동화 파이프라인에서 인터랙티브 스킬을 끝까지 실행시키는 우회법 3가지를 다룬다. cron·CI 환경에서 claude -p 로 스킬을 돌리고 있다면 바로 적용 가능한 내용이다. 같은 상황을 겪어봤다면 CI 잡이나 cron에서 claude -p 로 스킬을 호출했는데 절반만 실행되고 종료된 것을 본 적 있다. exit code는 0이라 성공처럼 보이지만 결과물은 없다. stdout 마지막 줄이 "진행 시 Phase 3 시작"이라는 텍스트였는데, 그걸 읽고 Enter를 칠 사람은 없었다. 스크립트는 정상 종료됐고 아무 일도 일어나지 않았다. 이게 반복되면 자동화 자체를 의심하게 된다. 문제는 claude -p가 아니라 스킬 설계의 가정에 있다. 원리와 증상: 단일 턴 vs 멀티턴 가정의 충돌 claude -p 는 비대화형 모드다. 프롬프트 하나를 받아 응답 하나를 돌려주고 종료한다. 대화 루프가 없다. 두 번째 입력을 기다리는 구조가 아니다. 반면 대부분의 인터랙티브 스킬은 멀티턴 가정으로 설계돼 있다. 전형적인 3-Phase 패턴을 보면: Phase 1 — 재료 수집, 분석 결과 출력 Phase 2 — 방향 제안, 사용자 승인 대기 ← 여기가 트랩 Phase 3 — 승인 후 본문 실행 Phase 2는 설계상 응답을 기다리는 체크포인트다. 대화형 환경에서는 "1번으로"라고 답하면 Phase 3가 시작된다. claude -p 환경에서는 Phase 2 출력 직후 Claude가 종료한다. 다음 턴이 오지 않기 때문이다. 스킬이 버그가 있는 게 아니다...