From ralph-plan
Ralph Loop 실행을 위한 brief 문서를 생성합니다. 작업 유형별 인터뷰 → 검증 수단 설정 → brief 생성 → ralph-loop 실행까지.
How this skill is triggered — by the user, by Claude, or both
Slash command
/ralph-plan:ralph-planThis skill is limited to the following tools:
The summary Claude sees in its skill listing — used to decide when to auto-load this skill
유저의 태스크 `$ARGUMENTS`를 인터뷰하고, 구멍 없는 brief 문서를 생성하여 `/ralph-loop`에 주입하는 스킬.
유저의 태스크 $ARGUMENTS를 인터뷰하고, 구멍 없는 brief 문서를 생성하여 /ralph-loop에 주입하는 스킬.
$ARGUMENTS가 비어있으면 Phase 1에서 태스크 설명을 질문한다.
.claude/ralph-brief-{slug}.md — slug는 태스크 내용 기반 영문 자동 생성AskUserQuestion으로 유저에게 질문:
어떤 상황에서 Ralph를 돌리려는 건가요?
A. 간단한 버그 픽스
단순한 수정 — 뭘 고칠지 알고 있고, 자동으로 돌리고 싶은 경우
B. 새 기능 개발
기능 설계부터 필요 — 심도 있는 인터뷰로 빈틈 없는 계획서 생성
C. 반복 실패 중인 버그
여러 번 시도했지만 계속 실패 — 이전 시도 이력을 정리하고 새 접근 유도
가볍게 확인:
→ 1라운드로 충분. 바로 Phase 3으로.
빈 곳이 없을 때까지 반복 질문한다. 유저가 말하지 않은 부분을 찾아서 체크한다.
라운드 1: What & Where
라운드 2: How (동작 상세)
라운드 3: Edge Cases
라운드 4: 기술 방향 (코드베이스 탐색 후)
Step 1: 컨텍스트 자동 수집 (유저에게 묻기 전에 먼저)
현재 대화 내용과 코드에서 아래 정보를 직접 추출한다:
추출한 내용을 유저에게 보여주고 "이 정리가 맞는지?" 확인만 받는다. 빠진 부분이 있을 때만 추가 질문한다.
Step 2: 유저에게 묻는 것 (Step 1로 알 수 없는 것만)
→ brief에 "이전 시도 이력" 섹션으로 들어가서, Ralph가 같은 실수를 반복하지 않도록 함.
brief 생성 전에 프로젝트의 기존 테스트/E2E 인프라를 스캔한다:
package.json의 scripts (test, e2e, playwright, cypress, vitest 등)감지 결과를 함께 보여주며 질문:
완료 검증을 어떻게 할까요?
(프로젝트에서 {감지된 도구/스크립트} 가 감지되었습니다)
A. 빌드 + 린트만
pnpm build && pnpm lint
B. 빌드 + 린트 + E2E ({감지된 도구명})
위 + {감지된 E2E 명령어} 기반 시나리오 검증
C. 직접 입력
다른 E2E 도구나 커스텀 검증 명령어를 직접 지정
E2E 또는 자동화 검증을 선택한 경우, brief 작성 전에 반드시 아래를 수행한다:
스텝 정의: 검증 시나리오를 구체적 액션 단위로 분해 예: "hover → 1초 대기 → 툴팁 등장 확인 → 스크롤 → 툴팁 사라짐 확인"
도구 매핑: 각 액션에 어떤 도구/API를 쓸지 명시 예: "page.hover() → page.waitForTimeout(1100) → expect().toBeVisible() → element.scrollBy() → expect().not.toBeVisible()"
선행 테스트: 최소한의 스켈레톤 테스트를 실제로 실행하여 각 도구/API가 해당 시나리오에서 동작하는지 확인
결과 보고: 유저에게 "이 검증 방법이 실제로 동작함을 확인했습니다" 또는 "X 단계에서 Y 문제로 불가능합니다. 대안: Z"를 보고
확인되지 않은 검증 방법은 brief에 포함하지 않는다.
모든 완료 조건에 대해 자체 검증:
.claude/ralph-brief-{slug}.md를 아래 구조로 생성한다.
slug는 태스크 설명을 기반으로 영문 kebab-case로 자동 생성.
# Ralph Brief: {제목}
## Type
{bug-fix | feature | persistent-bug}
## Goal
{구체적 요구사항 — 인터뷰 결과 종합}
## Done Criteria
- [ ] {검증 명령어 1} 통과
- [ ] {검증 명령어 2} 통과
- [ ] {기능/버그별 구체 조건}
## Verification
- Build: {빌드 명령어}
- Lint: {린트 명령어}
- E2E: {감지/입력된 E2E 명령어 — 선택 시}
- Scenario: {시나리오 파일 경로 or 인라인 설명}
<!-- Type: feature 일 때만 -->
## User Scenario
{라운드 1~3 인터뷰 결과 구조화}
## Technical Direction
{라운드 4 코드베이스 탐색 결과}
<!-- Type: persistent-bug 일 때만 -->
## Previous Attempts
### Attempt 1: {접근법}
- Result: {실패 내용}
### Attempt 2: {접근법}
- Result: {실패 내용}
## Expected Behavior
{버그 해결 시 이상적 동작 형상}
## Reproduction Steps
{버그 재현 단계}
<!-- 공통 -->
## Phases
- [ ] Phase 1: {단계} — Verify: {검증 조건}
- [ ] Phase 2: {단계} — Verify: {검증 조건}
## Iteration Protocol
1. Read this file
2. Check current Phase and last Iteration Log entry
3. Run verification commands to assess current state
4. If errors exist → fix first. If clean → proceed to next work
5. When ALL Done Criteria are met, output: `<promise>DONE</promise>` (Ralph Loop의 stop hook은 이 태그만 감지함)
## Failure Rules
- Same error 3 times → log current approach in Iteration Log, switch strategy
- NEVER repeat a previously failed approach without a different angle
- If stuck after strategy switch → log blocker and continue to next Phase
## Iteration Log
<!-- Append per iteration. Do NOT delete previous entries. -->
/ralph-loop "Read .claude/ralph-brief-{slug}.md and follow the instructions. Record each iteration in the Iteration Log section." --max-iterations {유형별 적절한 수} --completion-promise "DONE"
max-iterations 기본값:
Creates, edits, and optimizes skills for Claude Code, including drafting, evaluating with test prompts, iterating on performance, and improving skill descriptions for better triggering accuracy.
npx claudepluginhub namho-hong/team-offlight-claude-code-plugins --plugin ralph-plan