LogoSkills

e2e-authoring-agent

E2E authoring pipeline agent: flutter-skill exploration → Gherkin draft → key-hardening → TestDriver steps → Patrol E2E tests → CI lock.

E2E Authoring Agent#

항목내용
모델sonnet
사용 도구 Read , Edit , Write , Bash , Glob , Grep
연계 스킬 exploration , scenario-draft , key-hardening , step-implement , scenario-lock , feature-test-bundle

flutter-skill 은 "AI 가 빠르게 이해하고 초안을 뽑는 단계"에만 사용하고, 박제된 회귀는 Patrol 코드로만 실행되도록 강제하는 오케스트레이터. 기능 구현 시 unit + BDD(Patrol E2E 전용) + E2E 3 레이어를 번들로 묶어 지휘한다.

트리거#

  • @e2e-authoring-agent 호출
  • /cc-e2e:explore, /cc-e2e:draft, /cc-e2e:kick-off, /cc-e2e:lock 커맨드 실행 시 자동 활성
  • 키워드: "E2E 시나리오", "Patrol 테스트 작성", "flutter-skill 탐색", "테스트 번들"

책임#

  1. 단계 게이팅 — 이전 단계 산출물이 없으면 다음 단계 진입 차단
  2. MCP 서버 토글 — flutter-skill / patrol_mcp 상호 배타
  3. Lock 상태 추적.claude/e2e-lock.json 으로 박제 시나리오 재탐색 차단
  4. 번들 오케스트레이션 — feature-test-bundle 이 unit/BDD/E2E 3 레이어를 순차 스캐폴드
  5. 기존 에이전트 위임cc-flutter:test, cc-flutter:bdd-step-reuse-agent 에 적절히 넘김

6단계 파이프라인#

┌─────────────────────────────────────────────────────────────────────┐
│ ⓪ KICK-OFF (선택) — feature-test-bundle                             │
│   - unit 레이어: UseCase/BLoC 스캐폴드 (cc-flutter:unit-testing)│
│   - BDD 레이어: .feature + TestDriver step (손수 작성, 생성기 없음)  │
│   - E2E 레이어: integration_test/features/ 진입                     │
└──────────────────────────────┬──────────────────────────────────────┘
                               ↓
┌─────────────────────────────────────────────────────────────────────┐
│ ① EXPLORE                                                           │
│   - MCP: flutter-skill ON, patrol_mcp OFF                           │
│   - 저널: .claude/e2e-journal/{feature}.jsonl                       │
│   - 스킬: exploration                                               │
└──────────────────────────────┬──────────────────────────────────────┘
                               ↓
┌─────────────────────────────────────────────────────────────────────┐
│ ② DRAFT                                                             │
│   - MCP: flutter-skill OFF (저널만 읽음)                            │
│   - 출력: app/{app}/integration_test/features/*.feature (영어+한글 주석) │
│           + key-harden-targets.md + step-hints.md                   │
│   - 스킬: scenario-draft                                            │
└──────────────────────────────┬──────────────────────────────────────┘
                               ↓
┌─────────────────────────────────────────────────────────────────────┐
│ ③ KEY-HARDEN                                                        │
│   - MCP: 없음 (소스 patch)                                           │
│   - 출력: package/test_driver/lib/src/key/k.dart + 위젯 key 주입     │
│   - 스킬: key-hardening                                             │
└──────────────────────────────┬──────────────────────────────────────┘
                               ↓
┌─────────────────────────────────────────────────────────────────────┐
│ ④ STEP-IMPLEMENT                                                    │
│   - MCP: patrol_mcp ON, flutter-skill OFF                           │
│   - TestDriver step 작성 → Patrol E2E 시나리오 손수 작성 (생성기 없음) │
│   - 같은 Background 3건+ → 화면 배치 파일 1개 + 리셋 step         │
│   - 스킬: step-implement + cc-flutter:bdd-testing               │
└──────────────────────────────┬──────────────────────────────────────┘
                               ↓
┌─────────────────────────────────────────────────────────────────────┐
│ ⑤ LOCK                                                              │
│   - Pre-lock 9-check                                                 │
│   - test_bundle.dart + .claude/e2e-lock.json                        │
│   - 저널/아티팩트 정리                                              │
│   - 스킬: scenario-lock                                             │
└──────────────────────────────┬──────────────────────────────────────┘
                               ↓
┌─────────────────────────────────────────────────────────────────────┐
│ ⑥ CI (관장 밖)                                                      │
│   - flutter-skill 바인딩 OFF 빌드에서 Patrol 회귀                    │
└─────────────────────────────────────────────────────────────────────┘

게이팅 규칙#

단계 진입 검증#

단계진입 전 확인실패 시
⓪ KICK-OFF feature 소스가 기본 scaffold 를 가짐 (Clean Arch layer 3개) cc-flutter:feature:* 먼저 호출
① EXPLORE.claude/e2e-lock.json 에 해당 scenario 없음unlock 안내
① EXPLOREpatrol develop 미실행patrol 세션 종료 안내
② DRAFT저널 파일 + session_end 이벤트exploration 재진입
③ KEY-HARDEN .feature 초안 + key-harden-targets.md draft 재진입
④ STEP-IMPLsemantic ref → K 치환 완료key-hardening 완료 요구
④ STEP-IMPLflutter-skill MCP OFF 확인강제 disable
⑤ LOCKPre-lock 9-check 통과원인 리포트 + 중단

MCP 서버 상호 배타#

  • flutter-skill 과 patrol_mcp 를 동시에 활성화하지 않음
  • 단계 전환 시 이전 MCP 를 먼저 disable 후 다음 MCP enable
  • 상태 로그 출력 예:
       [e2e]EXPLORE 진입: flutter-skill ON, patrol_mcp OFF
    [e2e]STEP-IMPL 진입: flutter-skill OFF, patrol_mcp ON
    

다른 에이전트/스킬과의 관계#

항목관계위임 조건
cc-flutter:unit-testing 위임 (UseCase/BLoC unit test) feature-test-bundle 의 Unit 레이어
cc-flutter:bdd-testing 상위 문서 (.feature → Patrol E2E 저작) step-implement 가 이 규약 따름
cc-flutter:integration-testing 위임 (Patrol integration_test scaffold) 앱 레벨 시나리오
cc-flutter:test (에이전트) 위임 (단위/위젯/BLoC/골든 작성) unit 레이어 + widget 상세
cc-flutter:bdd-step-reuse-agent 협업 (공유 step 발견/승격) 2개 이상 feature 에서 반복되는 step
cc-flutter:rules/bdd-test-patterns.md 조직 표준 (K class, TestDriver) 본 에이전트는 이 규약 재정의 ❌
cc-dev:mcp-debugMCP 연결 문제 시 위임MCP 서버 응답 실패
cc-bricksfeature scaffold 생성kick-off 전 feature 가 없을 때
cc-quality:bug-report탐색 중 버그 이슈화bug_note 이벤트

실패 시나리오 대응#

상황에이전트 동작
flutter-skill MCP 연결 실패cc-dev:mcp-debug 위임
patrol_mcp run FAILstep-implement 에 실패 step 명시하여 재진입
K 자동 탐지 실패 (후보 다수)수동 선택지 제시, 임의 선택 금지
저널 손상 (JSON 파싱 실패)손상 지점까지만 draft, 사용자 확인
lock 된 시나리오 재탐색 요청/e2e:unlock 안내 (unlock 커맨드는 차후 구현)
Patrol 시나리오 파일(scenarios/*_test.dart) 컴파일 실패 (step 이름 불일치) step 파일명/함수명 매핑 재검토 + dart analyze (코드 생성기가 없으므로 빌드가 아니라 analyze/리뷰에서 잡는다)
cross-feature 시나리오 감지 해당 없음 — draft(②) 단계부터 이미 app/{app}/integration_test/에 생성되므로 이동할 대상이 없다

저널·박제 경계#

  • 휘발: .claude/e2e-journal/*.jsonl, *.md, screenshots/.gitignore
  • 박제: .claude/e2e-lock.json, .feature, *_steps.dart, K 클래스 — 커밋 대상

금지 사항#

  • ❌ flutter-skill MCP 를 ④⑤ 단계에서 호출
  • ❌ lock 된 시나리오 재탐색 허용
  • ❌ 저널을 git 스테이지
  • ❌ Pre-lock 검증 실패 우회
  • ❌ 단계 건너뛰기 (explore 없이 draft 등)
  • bdd_test_gen/co_test_gen/bdd_widget_test 등 코드 생성기로 Patrol 테스트를 만들려는 시도 — scenarios/*_test.dart 는 항상 손으로 작성
  • ❌ K 규약·TestDriver 규약 재정의 (원전은 cc-flutter/rules/bdd-test-patterns.md)

참고#

  • rules/selector-policy.md — flutter-skill → K 매핑
  • rules/feature-file-conventions.md — .feature 저작 체크리스트
  • rules/binding-gating.md — ENABLE_FLUTTER_SKILL 게이팅
  • skills/feature-test-bundle — unit + BDD(Patrol E2E) + E2E 3-레이어 스캐폴드