| ํญ๋ชฉ | ๋ด์ฉ |
| Invoke | /pixel-loop:capture |
| Category | cocode-flutter |
| Complexity | simple |
| MCP Servers | maestro, dart |
/pixel-loop capture โ ์คํ ์ค์ธ ์ฑ ํ๋ฉด ์บก์ฒ#
ํ๋ง๋๋ก#
์ง๊ธ ์คํ ์ค์ธ 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 โ ํ๋ฉด ๊ตฌ์กฐ ์ ๋ณด๋ ํจ๊ป ์ ์ฅ (์ ํ, ๊ธฐ๋ณธ๊ฐ ๊บผ์ง)
์์์ ๋ฌด์จ ์ผ์ด ๋ฒ์ด์ง๋์#
- ์ด๋ค ๊ธฐ๊ธฐ์์ ์ฐ์์ง ๊ณ ๋ฆ
๋๋ค.
- ๋ก๊ทธ์ธ ์ํ๋ฅผ ์ง์ฐ์ง ์๊ณ ์ฑ์ ์คํํฉ๋๋ค.
- ํ๋ฉด์ ๋๋ฌ ์ด๋ํ๊ฑฐ๋ ๊ธ์๋ฅผ ์
๋ ฅํด ๊ฐ๋ฉฐ ์ํ๋ ํ๋ฉด๊น์ง ๋ค์ด๊ฐ๋๋ค.
- ์คํฌ๋ฆฐ์ท์ ์ฐ์ด ์ด๋ฏธ์ง ํ์ผ๋ก ์ ์ฅํฉ๋๋ค.
- ์ต์
์ด ์ผ์ ธ ์์ผ๋ฉด ํ๋ฉด ๊ตฌ์กฐ ์ ๋ณด๋ ๋ณ๋ ํ์ผ๋ก ํจ๊ป ์ ์ฅํฉ๋๋ค.
โ๏ธ ์์ธ ์ต์
ยท์คํ ๋ช
์ธ (๊ฐ๋ฐ์ / AI ์์ด์ ํธ์ฉ)
Parameters#
| Parameter | Required | Description |
|---|
--route | โ
| In-app route to navigate to (e.g. /home) |
--label | โ | Filename suffix (default capture) |
--target | โ | ios/android/macos/linux/windows/auto (default auto) |
--with-widget-tree | โ | Also dump the widget tree via Dart MCP (default false) |
Behavior#
- Resolve target device (Maestro MCP).
- Launch app without
clearState to keep auth. - Navigate via Maestro flow (
tapOn, inputText, deep-link openLink as appropriate). takeScreenshot โ .claude/docs/pixel-loop/captures/<timestamp>_<label>.png.- 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").