LogoSkills

/cc-e2e:lock — 통과한 테스트를 "공식 시험지"로 박제

step 구현이 끝난 시나리오를 CI 회귀 스위트에 lock합니다: test_bundle.dart 등록, 저널 삭제, lock 레코드 작성 (E2E authoring 최종 5단계).

/cc-e2e:lock — 통과한 테스트를 "공식 시험지"로 박제#

항목내용
실행 명령/cc-e2e:lock
분류E2E 작성
난이도●●○ 보통

한마디로#

검증을 통과한 자동화 테스트 시나리오를 회귀 시험지(CI 회귀 스위트)에 도장 찍어 등록하는 단계입니다. 한 번 합격한 모의고사 문제를 "이제부터 매번 푸는 정식 시험 문제"로 확정하는 것과 같아요. 등록 후에는 함부로 바꿀 수 없습니다(되돌리려면 명시적인 unlock이 필요).

누가·언제 쓰나요#

  • 테스트 시나리오 작성(step-implement)을 끝내고, 자동 실행 결과가 PASS(합격) 로 나온 직후
  • 그 시나리오를 CI 회귀 테스트(코드가 바뀔 때마다 자동으로 도는 검사)에 정식으로 포함시키고 싶을 때

무엇을 해주나요#

통과한 시나리오를 검증한 뒤, 정식 테스트 목록에 등록하고 임시 작업 기록을 정리해 줍니다. 끝나면 다음이 남습니다.

  • test_bundle.dart 수정 — 전체 테스트 묶음에 시나리오 추가
  • run_all_scenarios.sh 수정 — 한 번에 실행하는 스크립트 갱신
  • .claude/e2e-lock.json 갱신 — "어떤 시나리오를 박제했는지" 기록 (커밋 대상)
  • 임시 작업 기록(저널)을 삭제하거나 보관함(archive)으로 이동
  • 추천 커밋 메시지 제안: test(e2e): lock {feature}/{scenario}

어떻게 쓰나요#

# 단일 시나리오 박제
/cc-e2e:lock sign_in email_login_success

# feature 전체 박제 (해당 feature의 모든 시나리오)
/cc-e2e:lock sign_in --all

# pre-lock 검증만 수행 (실제 lock 안함)
/cc-e2e:lock sign_in email_login_success --dry-run

# 저널을 archive 로 보관하며 lock
/cc-e2e:lock sign_in email_login_success --archive-journal
  • feature(필수): 기능 이름 (예: sign_in)
  • scenario(필수): 시나리오 이름. 단, --all을 쓰면 생략 가능
  • --all: 해당 기능의 모든 시나리오를 한꺼번에 박제
  • --dry-run: 실제로 등록하지 않고 "통과하는지 검증만" 미리 해보기
  • --archive-journal: 작업 기록을 지우지 않고 보관함으로 옮기기 (기본은 삭제)

안에서 무슨 일이 벌어지나요#

크게 검증 → 등록 → 정리 → 기록 → 보고 순서로 진행됩니다.

  1. 사전 점검 — 시나리오 파일이 제자리에 있는지, 빠진 부분은 없는지, 마지막 자동 실행이 합격이었는지 등을 꼼꼼히 검사합니다. 하나라도 미달이면 등록하지 않고 멈춥니다(강제 등록 금지).
  2. 정식 목록 등록 — 전체 테스트 묶음과 실행 스크립트에 이 시나리오를 추가합니다.
  3. CI 연결 확인 — 자동 검사 설정(.github/workflows/e2e-patrol.yml)이 잘 연결돼 있는지 확인하고 필요한 보완을 제안합니다.
  4. 임시 기록 정리 — 작업하면서 남긴 저널을 삭제하거나 보관함으로 옮깁니다.
  5. 박제 기록 작성 — "무엇을 등록했는지"를 .claude/e2e-lock.json에 남깁니다.
  6. 결과 보고 — 등록 경로, CI 실행 명령, 추천 커밋 메시지를 정리해 알려줍니다.

문제가 생기면(예: 사전 점검 실패, 마지막 실행이 불합격, 이름 중복) 그 원인을 알려주고 다음에 무엇을 해야 할지 안내합니다.


⚙️ 상세 옵션·실행 명세 (개발자 / AI 에이전트용)

Triggers#

  • step-implement 완료 후 patrol_mcp run 결과가 PASS
  • 시나리오를 CI 회귀에 포함시키려 할 때

사용법#

# 단일 시나리오 박제
/cc-e2e:lock sign_in email_login_success

# feature 전체 박제 (해당 feature의 모든 시나리오)
/cc-e2e:lock sign_in --all

# pre-lock 검증만 수행 (실제 lock 안함)
/cc-e2e:lock sign_in email_login_success --dry-run

# 저널을 archive 로 보관하며 lock
/cc-e2e:lock sign_in email_login_success --archive-journal

파라미터#

파라미터필수설명기본
featurefeature 이름
scenario✅*시나리오 슬러그
--allfeature 내 모든 시나리오 lockfalse
--dry-run검증만 수행false
--archive-journal저널을 .claude/e2e-journal/archive/ 로 이동 (기본은 삭제)false

*--all 미사용 시 필수

실행 단계#

  1. Pre-lock 검증 (skills/scenario-lock/SKILL.md 참조)
    • 시나리오 파일 존재 + 위치
    • step 함수 매핑 완전성
    • semantic ref 잔존 검사
    • flutter-skill import 잔존 검사
    • patrol_mcp 마지막 run PASS
    • (배치 소속이면) 배치 전체 PASS — 형제 시나리오에 FAIL·BLOCKED·RESET_FAILED 가 없을 것
    • canonical step 규약 준수
  2. Bundle 등록test_bundle.dart, run_all_scenarios.sh 업데이트 (배치는 파일 1개 = 항목 1개)
  3. CI 연결 점검.github/workflows/e2e-patrol.yml 확인 + 제안
  4. 저널 정리 — 삭제 또는 archive 이동
  5. Lock 레코드 작성.claude/e2e-lock.json 업데이트 (커밋 대상)
  6. 리포트 — 등록 경로, CI 명령, 제안 커밋 메시지

출력#

  • test_bundle.dart 수정
  • run_all_scenarios.sh 수정
  • .claude/e2e-lock.json 갱신 (커밋 대상)
  • 저널 삭제 or archive 이동
  • 제안 커밋 메시지: test(e2e): lock {feature}/{scenario}

실패 케이스#

원인대응
Pre-lock 검증 실패원인 리포트 + 중단 (강제 lock 금지)
patrol_mcp 마지막 run FAILstep-implement 재진입 안내
semantic ref 잔존해당 코드 위치 출력 + key-hardening 재실행 안내
시나리오명 중복 — 같은 (feature, scenario) 쌍 재-lock오류가 아니다. 멱등 skip 후 형제 계속 (skills/scenario-lock/SKILL.md §1.1) — 중단·충돌 리포트 금지
시나리오명 중복 — 다른 feature 의 같은 scenario 명기존 lock 레코드와 충돌 리포트

관련#

  • skills/scenario-lock/SKILL.md
  • commands/draft.md — 이전 단계
  • rules/selector-policy.md, rules/feature-file-conventions.md