LogoSkills

/pixel-loop capture — 실행 중인 앱 화면 캡처

Marionette MCP로 실행 중인 Flutter 앱의 라벨이 붙은 스크린샷을 캡처하고, 선택적으로 Dart MCP 위젯 트리 스냅샷도 함께 남깁니다.

/pixel-loop capture — 실행 중인 앱 화면 캡처#

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

한마디로#

지금 실행 중인 Flutter 앱의 특정 화면으로 이동해서 스크린샷을 한 장 찍어 저장해 주는 명령입니다. "이 화면 지금 어떻게 보이는지 사진으로 남겨줘"라고 말하는 것과 같아요.

누가·언제 쓰나요#

  • 화면을 고치기 전에 현재 상태를 사진으로 남겨두고 싶을 때 (예: "이 화면 리팩터링하기 전에 지금 모습 저장해 줘")
  • 새 버전을 내보낸 뒤 화면이 멀쩡한지 빠르게 눈으로 확인하고 싶을 때
  • PR(코드 리뷰)에 "새 설정 화면 스크린샷 붙여줘" 처럼 화면 사진을 첨부하고 싶을 때

무엇을 해주나요#

  • 지정한 화면으로 앱을 이동시킨 뒤 스크린샷을 찍어, .claude/docs/pixel-loop/captures/ 폴더에 시간_라벨.png 형식의 이미지 파일로 저장합니다.
  • 이미 실행 중인 앱에 그대로 붙어서 캡처하므로 로그인 상태가 유지되고, 로그인 후에만 보이는 화면도 그대로 찍을 수 있습니다.
  • 옵션을 켜면 화면 구조 정보(위젯 트리)도 함께 시간_라벨.tree.json 파일로 남겨, 나중에 화면 구성을 분석할 수 있습니다.

어떻게 쓰나요#

/pixel-loop capture --route=/home --label=baseline --with-widget-tree
  • --route=/home — 캡처할 화면 경로 (필수). 예: /home
  • --label=baseline — 저장 파일 이름에 붙일 꼬리표 (선택, 기본값 capture)
  • --target — 어떤 기기에서 찍을지 (선택, 기본값 auto — 자동 선택). ios/android/macos/linux/windows 중 지정 가능
  • --with-widget-tree — 화면 구조 정보도 함께 저장 (선택, 기본값 꺼짐)

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

  1. 어떤 기기에서 찍을지 고릅니다.
  2. 이미 디버그 모드로 실행 중인 앱에 연결합니다(앱을 새로 띄우지 않으므로 로그인 상태가 그대로 유지됩니다).
  3. 화면을 눌러 이동하거나 글자를 입력해 가며 원하는 화면까지 들어갑니다.
  4. 스크린샷을 찍어 이미지 파일로 저장합니다.
  5. 옵션이 켜져 있으면 화면 구조 정보도 별도 파일로 함께 저장합니다.

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

Parameters#

ParameterRequiredDescription
--routeIn-app route to navigate to (e.g. /home)
--labelFilename suffix (default capture)
--targetios/android/macos/linux/windows/auto (default auto)
--with-widget-treeAlso dump the widget tree via Dart MCP (default false)

Behavior#

  1. Resolve target device and marionette.connect to the running app's VM Service URI.
  2. Attach to the already-running debug app — no relaunch, so auth state is preserved.
  3. Navigate with marionette.tap / enter_text / scroll_to (prefer ValueKey matches over text).
  4. marionette.take_screenshots.claude/docs/pixel-loop/captures/<timestamp>_<label>.png.
  5. If --with-widget-tree, persist dart.getRootWidgetTree() to <timestamp>_<label>.tree.json.

Example#

/pixel-loop capture --route=/home --label=baseline --with-widget-tree

Use Cases#

  • Pre-loop baseline ("save the current state before I start refactoring this screen").
  • Post-release smoke verification.
  • Visual review on a PR ("attach a screenshot of the new settings page").