/cc-e2e:explore — 앱을 직접 눌러보며 동선 기록하기#
| 항목 | 내용 |
|---|---|
| 실행 명령 | /cc-e2e:explore |
| 분류 | E2E 작성 |
| 난이도 | ●●○ 보통 |
| MCP 서버 | flutter-skill |
한마디로#
실제로 돌아가는 앱을 사람이 손으로 눌러보듯 화면을 탐색하고, "어디를 어떤 순서로 눌렀는지"를 그대로 기록해 두는 단계입니다. 나중에 자동 테스트로 만들기 전, 마치 사용 설명서 초안을 만들기 위해 앱을 직접 써보며 동선을 메모하는 것과 같아요.
누가·언제 쓰나요#
- 새 기능에 대한 E2E(처음부터 끝까지 흐름) 테스트 시나리오를 처음 작성하기 시작할 때
- 기존 시나리오에서 빠진 경로나 예외 상황(엣지 케이스)을 더 찾아보고 싶을 때
- 앱 화면 요소의 식별값(위젯 Key·semantic)을 발견해 두고 싶을 때
E2E 테스트 만들기 전체 과정 중 1단계(맨 처음 진입점) 입니다.
무엇을 해주나요#
탐색하면서 다음 산출물을 남깁니다. 단, 이 결과물은 커밋되지 않는 임시 기록(휘발성) 이며, 이후 /cc-e2e:draft 단계에서 정식 시나리오 초안으로 변환됩니다.
.claude/e2e-journal/{feature}.jsonl— 조작 순서를 기록한 저널(임시).claude/e2e-journal/screenshots/{feature}/*.png— 탐색 중 캡처한 스크린샷(임시)- 탐색 요약 리포트 — 화면에 출력
어떻게 쓰나요#
# feature 명시
/cc-e2e:explore sign_in
# 자유 프롬프트로 탐색 의도 지시
/cc-e2e:explore sign_in " 이메일 로그인 성공 + 잘못된 비밀번호 실패 경로 둘 다 보고 싶어 "
# 자동 탐색 (auto-explore)
/cc-e2e:explore sign_in --auto --depth=3
# 몽키 테스트
/cc-e2e:explore sign_in --monkey --actions=50 --seed=42
sign_in같은 대상 기능 이름은 반드시 입력합니다(snake_case).- 뒤에 따옴표로 무엇을 보고 싶은지 자연어로 덧붙일 수 있습니다.
-
--auto: 사람이 일일이 안 누르고 앱이 알아서 탐색하게 합니다.--depth=3으로 얼마나 깊게 들어갈지 조절합니다. -
--monkey: 무작위로 마구 눌러보는 몽키 테스트 모드입니다.--actions=50(눌러볼 횟수),--seed=42(같은 결과를 재현하는 값)로 조절합니다. --device: 어떤 기기에서 돌릴지 지정합니다(생략하면 자동 감지).
안에서 무슨 일이 벌어지나요#
- 이미 끝난 작업인지 확인 — 해당 기능·시나리오가 이미 잠겨(lock) 있으면 멈추고
/e2e:unlock을 안내합니다. - 충돌 검사 — 다른 테스트 러너(
patrol develop)가 돌고 있으면 멈춥니다. - 앱이 켜져 있는지 확인 — 탐색 가능한 상태로 앱이 떠 있어야 하며, 아니면 켜는 명령을 알려줍니다.
- 탐색 연결 켜기 — 앱과 대화할 통로(flutter-skill MCP)를 잠시 활성화합니다.
- 기록장 열기 — 저널 파일을 만들고 "탐색 시작" 표시를 남깁니다.
- 탐색 수행 — 실제로 화면을 눌러가며 동선을 기록합니다.
- 기록장 닫기 — "탐색 종료" 표시를 남기고 연결을 다시 끕니다.
- 다음 단계 안내 — 이어서
/cc-e2e:draft로 넘어가도록 제안합니다.
⚙️ 상세 옵션·실행 명세 (개발자 / AI 에이전트용)
Triggers#
- 새 feature 에 대한 E2E 시나리오를 처음 작성할 때
- 기존 시나리오의 누락 경로/엣지 케이스를 탐색할 때
- 앱 위젯 Key/semantic 매핑을 발견할 때
사용법#
# feature 명시
/cc-e2e:explore sign_in
# 자유 프롬프트로 탐색 의도 지시
/cc-e2e:explore sign_in " 이메일 로그인 성공 + 잘못된 비밀번호 실패 경로 둘 다 보고 싶어 "
# 자동 탐색 (auto-explore)
/cc-e2e:explore sign_in --auto --depth=3
# 몽키 테스트
/cc-e2e:explore sign_in --monkey --actions=50 --seed=42파라미터#
| 파라미터 | 필수 | 설명 | 기본 |
|---|---|---|---|
feature | ✅ | 대상 feature 이름 (snake_case) | — |
prompt | ❌ | 탐색 의도 자연어 | — |
--auto | ❌ | flutter-skill explore 모드 사용 | false |
--depth | ❌ | auto-explore 깊이 | 3 |
--monkey | ❌ | 몽키 테스트 모드 | false |
--actions | ❌ | 몽키 테스트 액션 수 | 50 |
--seed | ❌ | 몽키 테스트 시드 | 42 |
--device | ❌ | 대상 디바이스 | 자동 감지 |
실행 단계#
- Lock 확인 —
.claude/e2e-lock.json에서feature+scenario가 이미 lock 되어 있는지 검사. 있으면 중단하고/e2e:unlock안내 - Patrol 러너 충돌 확인 —
patrol develop이 실행 중이면 중단 - 앱 기동 — debug 빌드로 앱이 실행 중인지 확인(kobic 은
kDebugMode가드로 flutter-skill 바인딩을 노출 — 별도--dart-define불필요). 아니면 사용자에게flutter run --debug기동 명령 제시 - MCP 연결 확인 — flutter-skill MCP 서버 연결 확인(debug 빌드에서 자동 노출). 연결 안 되면 8단계의 record-only 폴백으로 진행(중단 아님)
- 저널 열기 —
.claude/e2e-journal/{feature}.jsonl생성/append,session_start이벤트 기록 - 탐색 수행 —
exploration스킬 호출 (skills/exploration/SKILL.md 참조) - 저널 닫기 —
session_end이벤트 기록 + flutter-skill MCP disable - 다음 단계 안내 —
/cc-e2e:draft호출 제안
출력#
.claude/e2e-journal/{feature}.jsonl(휘발성).claude/e2e-journal/screenshots/{feature}/*.png(휘발성)- 탐색 요약 리포트 (stdout)
실패 케이스#
| 원인 | 대응 |
|---|---|
| debug 빌드 아님(릴리스 빌드) | flutter run --debug 기동 명령 출력 후 중단 (kobic 은 kDebugMode 가드 — --dart-define 불필요) |
patrol develop 실행 중 | 중단, patrol 세션 종료 안내 |
| 이미 lock 된 시나리오 재탐색 시도 | /e2e:unlock 안내 후 중단 |
| flutter-skill MCP 연결 실패 | record-only 폴백 — 사용자가 탭/입력을 구술하면 에이전트가 .jsonl 저널에 수기 기록(=/cc-e2e:draft 진행 가능). 진단은 cc-dev:mcp-debug (unsafe→중단, tooling 부재→degrade 구분) |
관련#
- skills/exploration/SKILL.md
- commands/draft.md — 다음 단계
- rules/binding-gating.md — 게이팅 표준