Install
openclaw skills install @sueelly/genspark-ralph-loopGenspark Claw에서 PRD의 개발 작업을 하나씩 구현하고 검증하며 결과를 파일에 기록해 반복하거나 재개한다. Ralph loop, 작업 목록 반복 실행, 중단된 개발 작업 재개 요청에 사용한다.
openclaw skills install @sueelly/genspark-ralph-loopGenspark Claw의 현재 모델과 사용 가능한 도구로 개발 작업을 수행한다. 작업 목록과 디스크의 검증 기록을 다음 반복의 근거로 삼는다.
사용자가 지정한 프로젝트 경로와 PRD를 사용한다. 경로가 없으면 현재 작업 공간을 확인하고, PRD가 없으면 사용자의 실제 개발 요구사항으로 작업 목록을 만든다. 요구사항도 없으면 개발 목표를 요청한다. 스킬 설치 요청 자체를 개발 작업으로 취급하지 않는다.
지원되는 파일 읽기·쓰기·명령 실행 도구와 하위 에이전트 또는 새 실행 생성 도구를 확인한다. 명령 실행 도구가 없으면 구현·테스트를 실행했다고 주장하지 않는다.
Genspark에 내장된 sessions_spawn과 sessions_yield가 있으면 로컬 런타임 연결 절차를 읽는다. 확인된 도구 계약으로 새 컨텍스트 실행을 시도하고, 반환된 실행 ID와 완료 이벤트로 동작을 검증한다. 단지 아직 실행해 보지 않았다는 이유만으로 same-session을 선택하지 않는다.
fresh-context: 실제 도구 계약에서 새 실행 컨텍스트 생성과 완료 대기를 확인했을 때만 선택한다. 매 반복마다 새 작업자를 하나 만들고 이전 작업자가 끝난 뒤 다음 작업자를 시작한다. 생성된 실행 ID와 컨텍스트 설정을 기록한다. 부모 대화 전체를 자동 상속하는지 알 수 없다면 격리가 확인됐다고 표현하지 않는다.same-session: 새 컨텍스트 기능을 확인할 수 없을 때 선택한다. 사용자에게 같은 대화에서의 제한된 반복이며 컨텍스트 초기화를 보장하지 않는다고 알린다. 사용자가 새 컨텍스트를 필수로 지정했으면 이 모드로 대체하지 말고, 확인되지 않은 기능과 필요한 연결 지점만 보고한다.Genspark에 실제로 포함된 OpenClaw 도구는 사용할 수 있다. 별도로 설치한 OpenClaw CLI, 문서에 없는 Genspark API, 숨겨진 엔드포인트와의 호환성을 가정하지 않는다. 사용자가 외부 엔진을 선택하지 않았다면 Claude Code·Codex CLI로 작업을 넘기지 않는다. 스킬만으로 앱의 종료 제한이나 자동 재호출 기능을 추가할 수 있다고 주장하지 않는다.
대상 프로젝트의 .ralph-claw/에 상태를 기록한다. 스킬 설치 폴더와 대상 프로젝트를 구분한다.
state.json: run_id, status, mode, prd, current_task, attempts, max_iterations, max_task_failures, task_failures, last_iteration, stop_reason.progress.md: 반복 번호, 작업 ID, 실행 ID가 있으면 해당 ID, 변경 파일, 검사 명령·실제 종료 코드·결과, 남은 문제.STOP: 사용자가 생성하면 다음 작업을 시작하지 않는 중단 신호. 실행 중인 도구를 즉시 취소하는 기능은 아니다.하위 에이전트를 실행할 때는 active_child에 반환된 runId, childSessionKey, 작업 ID와 완료 이벤트 처리 여부를 저장한다. 완료를 기다리는 동안 status는 waiting_child로 두고, 부모가 다시 깨어나면 이 상태를 읽어 같은 작업자를 중복 생성하지 않는다. 처리한 실행 ID도 기록하여 중복 완료 이벤트를 다시 완료 처리하지 않는다.
사용자가 지정한 한도를 우선한다. 지정이 없으면 한 실행은 최대 5회 시도, 같은 작업은 누적 실패 2회까지로 한다. 재시도도 전체 시도 수에 포함한다. 새 반복을 시작하기 전에 attempts를 증가시켜 기록한다. 상태를 새로 만드는 방식으로 한도를 자동 초기화하지 않는다.
state.json 갱신에는 scripts/save-state.py를 사용한다. Python 3로 스크립트를 실행하면서 목적지 경로를 인자로, 완성된 JSON 객체를 표준 입력으로 전달한다. 하나의 exec 호출에서 JSON 검사·임시 파일 쓰기·원자적 교체를 끝내며, 성공 출력과 종료 코드를 확인한다. 임시 파일 작성과 이름 변경을 별도 모델 턴으로 나누면 그 사이 모델 호출이 거부될 때 이전 상태가 남을 수 있다. 이 스크립트는 동시 실행 잠금이나 다중 파일 트랜잭션을 제공하지 않는다.
상태가 손상되었거나 이전 작업의 실행 여부를 확인할 수 없으면 진행 기록과 실제 실행 상태를 먼저 대조한다. 사용자의 기존 기록을 빈 상태로 덮어쓰지 않는다. 중단된 실행을 복구했으면 원본 상태를 보관하고 복구 주체·근거·시각을 기록한다. 크레딧·인증 등 제공자 오류는 자동 재시도하지 않고 체크포인트를 남긴다.
동일 프로젝트에서 작업자 두 개를 동시에 실행하지 않는다. 이전 작업이 실행 중이면 상태만 보고한다. 예약 실행이나 외부 실행기가 필요하다면 원자적인 잠금과 취소·복구 처리를 먼저 마련한다. 이 스킬의 순차 절차 자체가 동시 실행 잠금을 제공하는 것은 아니다.
state.json, 최근 진행 기록, STOP 존재 여부를 읽는다. 이전 실행이 중단됐다면 변경된 파일과 실제 검사 결과를 대조하고, 미완료 작업에서 재개한다. 설정된 한도에 도달했으면 중단 이유를 기록한다.fresh-context에서는 작업 ID, 요구사항, 프로젝트 경로, 관련 규칙과 직전 실패의 짧은 요약을 새 작업자에게 전달한다. 작업자는 구현과 검증 결과를 반환하고 PRD나 제어 상태를 수정하지 않는다. same-session에서는 Claw가 같은 범위의 작업을 직접 수행한다.커밋·푸시·PR·배포는 사용자가 요청한 범위에 따른다. 반복 실행 요청만으로 외부 게시 작업을 추가하지 않는다. 프로젝트에 있는 기존 변경은 보존한다.
사용자가 중단을 요청하면 새 작업을 시작하지 않는다. 실행 중인 작업자는 앱이 제공하는 실제 취소 기능으로 중단하고, 종료를 확인한 뒤 상태를 저장한다. 취소 기능이 없으면 그 사실과 현재 작업 상태를 보고한다.
앱의 실행 시간 제한이 가까워지면 현재 결과를 저장하고 재개 방법을 알려준다. 예약 기능이나 Heartbeat를 임의로 활성화하지 않는다. 재개 요청에서는 디스크의 상태를 다시 읽는다. 이전 실행이 실제로 종료됐는지 확인한 뒤 이어서 작업한다. 사용자가 새 실행 한도를 부여했을 때만 이전 기록을 보존한 새 run_id로 시작한다.
최종 보고에는 완료/미완료 작업, 검사 결과, 사용한 실행 모드, 시도 수, 중단 이유, 상태 파일 경로를 포함한다. 모든 필수 완료 조건을 검증했을 때만 전체 완료로 보고한다.