LogoSkills

/marionette smoke — 화면들이 일단 잘 뜨는지 빠르게 점검

화면 목록을 대상으로 스모크 테스트: 이동, 스크린샷, 조작 가능한 요소 목록화, 에러 노출.

/marionette smoke — 화면들이 일단 잘 뜨는지 빠르게 점검#

항목내용
실행 명령/cc-marionette:smoke
분류Flutter
난이도●○○ 간단
MCP 서버marionette

한마디로#

앱의 주요 화면들을 하나씩 자동으로 열어보고 "정상적으로 떴는지, 에러는 없는지"만 빠르게 확인하는 점검입니다. 건물을 넘기기 전에 각 방의 불이 켜지는지 스위치만 눌러보고 도는 것과 같아요. 가구 하나하나를 만져보는 정밀 점검은 아닙니다.

누가·언제 쓰나요#

  • 코드를 합치기(merge) 직전에, 주요 화면들이 깨지지 않았는지 가볍게 확인하고 싶은 개발자
  • "방금 바꾼 게 다른 화면을 망가뜨리지 않았나"를 빠르게 훑고 싶을 때
  • CI(자동 검증 파이프라인)에 넣어 화면이 뜨는지 자동으로 검사하고 싶을 때

화면별로 버튼·입력칸 하나하나까지 직접 눌러보며 깊게 검사하려면 이 명령 대신 sweep을 쓰세요.

무엇을 해주나요#

지정한 화면들을 차례로 열어보고, 결과를 한 폴더에 정리해 줍니다.

  • screens/<route>.png — 각 화면의 스크린샷
  • interactive_summary.json — 화면에 있는 버튼·입력칸 등 조작 가능한 요소의 개수와 종류
  • errors.txt — 화면에서 발생한 에러 기록
  • summary.md — 전체 통과/실패 요약 (CI에서 성공·실패 판정 용도로 사용)

판정 기준은 단순합니다. 모든 화면이 정상적으로 뜨고 에러가 없으면 통과, 어떤 화면이 에러를 내거나 아무 요소도 없는 빈 화면(흰 화면)이면 실패입니다.

어떻게 쓰나요#

/marionette smoke --routes=/home,/posts/123,/settings
  • --routes (필수) — 점검할 화면 경로들을 쉼표로 이어서 적습니다. 예: /home,/posts,/settings
  • --output (선택) — 결과를 저장할 폴더. 안 적으면 .claude/docs/marionette/smoke-<시각>/에 자동 저장됩니다.

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

지정한 각 화면마다 다음을 순서대로 합니다.

  1. 해당 화면으로 이동합니다. (화면의 내비게이션 버튼을 눌러 이동하거나, 앱이 지원하면 경로로 바로 이동)
  2. 화면 스크린샷을 찍습니다.
  3. 화면 안의 조작 가능한 요소(버튼·입력칸 등)의 개수와 종류를 세어 기록합니다.
  4. 에러 수준 이상의 로그가 있으면 끌어와 요약에 표시합니다.

모든 화면을 다 돌면 summary.md에 전체 통과/실패 결과가 정리됩니다.


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

Parameters#

ParameterRequiredDescription
--routesComma-separated route paths, e.g. /home,/posts,/settings
--outputOutput dir (default .claude/docs/marionette/smoke-<ts>/)

Behaviour#

For each route:

  1. Navigate via Marionette tap on existing navigation elements OR — if the app exposes a goNamed-style dynamic tool via cc-mcp-toolkit — call that instead.
  2. take_screenshots.
  3. get_interactive_elements (count + types only — saved to JSON).
  4. get_logs — pull anything at Level.error or higher; surface in summary.md.

Pass / Fail#

  • ✅ Pass: every route renders and produces no error log.
  • ❌ Fail: route threw, or get_interactive_elements returns empty (likely white screen).

Output#

.claude/docs/marionette/smoke- < ts > /
├── screens/ < route > .png
├── interactive_summary.json
├── errors.txt
└── summary.md

Example#

/marionette smoke --routes=/home,/posts/123,/settings

Use in CI by piping the agent prompt through a non-interactive runner; the command returns exit-code-style status in summary.md.