LogoSkills

e2e:explore

Explore the running app via flutter-skill MCP and record an interaction journal (E2E authoring stage 1 entry point).

ํ•ญ๋ชฉ๋‚ด์šฉ
Invoke/e2e:explore
Aliases/e2e:ex
Categorye2e-authoring
Complexitymoderate
MCP Serversflutter-skill

/e2e:explore โ€” ์•ฑ์„ ์ง์ ‘ ๋ˆŒ๋Ÿฌ๋ณด๋ฉฐ ๋™์„  ๊ธฐ๋กํ•˜๊ธฐ#

ํ•œ๋งˆ๋””๋กœ#

์‹ค์ œ๋กœ ๋Œ์•„๊ฐ€๋Š” ์•ฑ์„ ์‚ฌ๋žŒ์ด ์†์œผ๋กœ ๋ˆŒ๋Ÿฌ๋ณด๋“ฏ ํ™”๋ฉด์„ ํƒ์ƒ‰ํ•˜๊ณ , "์–ด๋””๋ฅผ ์–ด๋–ค ์ˆœ์„œ๋กœ ๋ˆŒ๋ €๋Š”์ง€"๋ฅผ ๊ทธ๋Œ€๋กœ ๊ธฐ๋กํ•ด ๋‘๋Š” ๋‹จ๊ณ„์ž…๋‹ˆ๋‹ค. ๋‚˜์ค‘์— ์ž๋™ ํ…Œ์ŠคํŠธ๋กœ ๋งŒ๋“ค๊ธฐ ์ „, ๋งˆ์น˜ ์‚ฌ์šฉ ์„ค๋ช…์„œ ์ดˆ์•ˆ์„ ๋งŒ๋“ค๊ธฐ ์œ„ํ•ด ์•ฑ์„ ์ง์ ‘ ์จ๋ณด๋ฉฐ ๋™์„ ์„ ๋ฉ”๋ชจํ•˜๋Š” ๊ฒƒ๊ณผ ๊ฐ™์•„์š”.

๋ˆ„๊ฐ€ยท์–ธ์ œ ์“ฐ๋‚˜์š”#

  • ์ƒˆ ๊ธฐ๋Šฅ์— ๋Œ€ํ•œ E2E(์ฒ˜์Œ๋ถ€ํ„ฐ ๋๊นŒ์ง€ ํ๋ฆ„) ํ…Œ์ŠคํŠธ ์‹œ๋‚˜๋ฆฌ์˜ค๋ฅผ ์ฒ˜์Œ ์ž‘์„ฑํ•˜๊ธฐ ์‹œ์ž‘ํ•  ๋•Œ
  • ๊ธฐ์กด ์‹œ๋‚˜๋ฆฌ์˜ค์—์„œ ๋น ์ง„ ๊ฒฝ๋กœ๋‚˜ ์˜ˆ์™ธ ์ƒํ™ฉ(์—ฃ์ง€ ์ผ€์ด์Šค)์„ ๋” ์ฐพ์•„๋ณด๊ณ  ์‹ถ์„ ๋•Œ
  • ์•ฑ ํ™”๋ฉด ์š”์†Œ์˜ ์‹๋ณ„๊ฐ’(์œ„์ ฏ Keyยทsemantic)์„ ๋ฐœ๊ฒฌํ•ด ๋‘๊ณ  ์‹ถ์„ ๋•Œ

E2E ํ…Œ์ŠคํŠธ ๋งŒ๋“ค๊ธฐ ์ „์ฒด ๊ณผ์ • ์ค‘ 1๋‹จ๊ณ„(๋งจ ์ฒ˜์Œ ์ง„์ž…์ ) ์ž…๋‹ˆ๋‹ค.

๋ฌด์—‡์„ ํ•ด์ฃผ๋‚˜์š”#

ํƒ์ƒ‰ํ•˜๋ฉด์„œ ๋‹ค์Œ ์‚ฐ์ถœ๋ฌผ์„ ๋‚จ๊น๋‹ˆ๋‹ค. ๋‹จ, ์ด ๊ฒฐ๊ณผ๋ฌผ์€ ์ปค๋ฐ‹๋˜์ง€ ์•Š๋Š” ์ž„์‹œ ๊ธฐ๋ก(ํœ˜๋ฐœ์„ฑ) ์ด๋ฉฐ, ์ดํ›„ /e2e:draft ๋‹จ๊ณ„์—์„œ ์ •์‹ ์‹œ๋‚˜๋ฆฌ์˜ค ์ดˆ์•ˆ์œผ๋กœ ๋ณ€ํ™˜๋ฉ๋‹ˆ๋‹ค.

  • .claude/e2e-journal/{feature}.jsonl โ€” ์กฐ์ž‘ ์ˆœ์„œ๋ฅผ ๊ธฐ๋กํ•œ ์ €๋„(์ž„์‹œ)
  • .claude/e2e-journal/screenshots/{feature}/*.png โ€” ํƒ์ƒ‰ ์ค‘ ์บก์ฒ˜ํ•œ ์Šคํฌ๋ฆฐ์ƒท(์ž„์‹œ)
  • ํƒ์ƒ‰ ์š”์•ฝ ๋ฆฌํฌํŠธ โ€” ํ™”๋ฉด์— ์ถœ๋ ฅ

์–ด๋–ป๊ฒŒ ์“ฐ๋‚˜์š”#

# feature ๋ช…์‹œ
/e2e:explore sign_in

# ์ž์œ  ํ”„๋กฌํ”„ํŠธ๋กœ ํƒ์ƒ‰ ์˜๋„ ์ง€์‹œ
/e2e:explore sign_in  " ์ด๋ฉ”์ผ ๋กœ๊ทธ์ธ ์„ฑ๊ณต + ์ž˜๋ชป๋œ ๋น„๋ฐ€๋ฒˆํ˜ธ ์‹คํŒจ ๊ฒฝ๋กœ ๋‘˜ ๋‹ค ๋ณด๊ณ  ์‹ถ์–ด " 

 # ์ž๋™ ํƒ์ƒ‰ (auto-explore)
/e2e:explore sign_in --auto --depth=3

# ๋ชฝํ‚ค ํ…Œ์ŠคํŠธ
/e2e:explore sign_in --monkey --actions=50 --seed=42
  • sign_in ๊ฐ™์€ ๋Œ€์ƒ ๊ธฐ๋Šฅ ์ด๋ฆ„์€ ๋ฐ˜๋“œ์‹œ ์ž…๋ ฅํ•ฉ๋‹ˆ๋‹ค(snake_case).
  • ๋’ค์— ๋”ฐ์˜ดํ‘œ๋กœ ๋ฌด์—‡์„ ๋ณด๊ณ  ์‹ถ์€์ง€ ์ž์—ฐ์–ด๋กœ ๋ง๋ถ™์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • --auto: ์‚ฌ๋žŒ์ด ์ผ์ผ์ด ์•ˆ ๋ˆ„๋ฅด๊ณ  ์•ฑ์ด ์•Œ์•„์„œ ํƒ์ƒ‰ํ•˜๊ฒŒ ํ•ฉ๋‹ˆ๋‹ค. --depth=3์œผ๋กœ ์–ผ๋งˆ๋‚˜ ๊นŠ๊ฒŒ ๋“ค์–ด๊ฐˆ์ง€ ์กฐ์ ˆํ•ฉ๋‹ˆ๋‹ค.
  • --monkey: ๋ฌด์ž‘์œ„๋กœ ๋งˆ๊ตฌ ๋ˆŒ๋Ÿฌ๋ณด๋Š” ๋ชฝํ‚ค ํ…Œ์ŠคํŠธ ๋ชจ๋“œ์ž…๋‹ˆ๋‹ค. --actions=50(๋ˆŒ๋Ÿฌ๋ณผ ํšŸ์ˆ˜), --seed=42(๊ฐ™์€ ๊ฒฐ๊ณผ๋ฅผ ์žฌํ˜„ํ•˜๋Š” ๊ฐ’)๋กœ ์กฐ์ ˆํ•ฉ๋‹ˆ๋‹ค.
  • --device: ์–ด๋–ค ๊ธฐ๊ธฐ์—์„œ ๋Œ๋ฆด์ง€ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค(์ƒ๋žตํ•˜๋ฉด ์ž๋™ ๊ฐ์ง€).

์•ˆ์—์„œ ๋ฌด์Šจ ์ผ์ด ๋ฒŒ์–ด์ง€๋‚˜์š”#

  1. ์ด๋ฏธ ๋๋‚œ ์ž‘์—…์ธ์ง€ ํ™•์ธ โ€” ํ•ด๋‹น ๊ธฐ๋Šฅยท์‹œ๋‚˜๋ฆฌ์˜ค๊ฐ€ ์ด๋ฏธ ์ž ๊ฒจ(lock) ์žˆ์œผ๋ฉด ๋ฉˆ์ถ”๊ณ  /e2e:unlock์„ ์•ˆ๋‚ดํ•ฉ๋‹ˆ๋‹ค.
  2. ์ถฉ๋Œ ๊ฒ€์‚ฌ โ€” ๋‹ค๋ฅธ ํ…Œ์ŠคํŠธ ๋Ÿฌ๋„ˆ(patrol develop)๊ฐ€ ๋Œ๊ณ  ์žˆ์œผ๋ฉด ๋ฉˆ์ถฅ๋‹ˆ๋‹ค.
  3. ์•ฑ์ด ์ผœ์ ธ ์žˆ๋Š”์ง€ ํ™•์ธ โ€” ํƒ์ƒ‰ ๊ฐ€๋Šฅํ•œ ์ƒํƒœ๋กœ ์•ฑ์ด ๋–  ์žˆ์–ด์•ผ ํ•˜๋ฉฐ, ์•„๋‹ˆ๋ฉด ์ผœ๋Š” ๋ช…๋ น์„ ์•Œ๋ ค์ค๋‹ˆ๋‹ค.
  4. ํƒ์ƒ‰ ์—ฐ๊ฒฐ ์ผœ๊ธฐ โ€” ์•ฑ๊ณผ ๋Œ€ํ™”ํ•  ํ†ต๋กœ(flutter-skill MCP)๋ฅผ ์ž ์‹œ ํ™œ์„ฑํ™”ํ•ฉ๋‹ˆ๋‹ค.
  5. ๊ธฐ๋ก์žฅ ์—ด๊ธฐ โ€” ์ €๋„ ํŒŒ์ผ์„ ๋งŒ๋“ค๊ณ  "ํƒ์ƒ‰ ์‹œ์ž‘" ํ‘œ์‹œ๋ฅผ ๋‚จ๊น๋‹ˆ๋‹ค.
  6. ํƒ์ƒ‰ ์ˆ˜ํ–‰ โ€” ์‹ค์ œ๋กœ ํ™”๋ฉด์„ ๋ˆŒ๋Ÿฌ๊ฐ€๋ฉฐ ๋™์„ ์„ ๊ธฐ๋กํ•ฉ๋‹ˆ๋‹ค.
  7. ๊ธฐ๋ก์žฅ ๋‹ซ๊ธฐ โ€” "ํƒ์ƒ‰ ์ข…๋ฃŒ" ํ‘œ์‹œ๋ฅผ ๋‚จ๊ธฐ๊ณ  ์—ฐ๊ฒฐ์„ ๋‹ค์‹œ ๋•๋‹ˆ๋‹ค.
  8. ๋‹ค์Œ ๋‹จ๊ณ„ ์•ˆ๋‚ด โ€” ์ด์–ด์„œ /e2e:draft๋กœ ๋„˜์–ด๊ฐ€๋„๋ก ์ œ์•ˆํ•ฉ๋‹ˆ๋‹ค.

โš™๏ธ ์ƒ์„ธ ์˜ต์…˜ยท์‹คํ–‰ ๋ช…์„ธ (๊ฐœ๋ฐœ์ž / AI ์—์ด์ „ํŠธ์šฉ)

Triggers#

  • ์ƒˆ feature ์— ๋Œ€ํ•œ E2E ์‹œ๋‚˜๋ฆฌ์˜ค๋ฅผ ์ฒ˜์Œ ์ž‘์„ฑํ•  ๋•Œ
  • ๊ธฐ์กด ์‹œ๋‚˜๋ฆฌ์˜ค์˜ ๋ˆ„๋ฝ ๊ฒฝ๋กœ/์—ฃ์ง€ ์ผ€์ด์Šค๋ฅผ ํƒ์ƒ‰ํ•  ๋•Œ
  • ์•ฑ ์œ„์ ฏ Key/semantic ๋งคํ•‘์„ ๋ฐœ๊ฒฌํ•  ๋•Œ

์‚ฌ์šฉ๋ฒ•#

# feature ๋ช…์‹œ
/e2e:explore sign_in

# ์ž์œ  ํ”„๋กฌํ”„ํŠธ๋กœ ํƒ์ƒ‰ ์˜๋„ ์ง€์‹œ
/e2e:explore sign_in  " ์ด๋ฉ”์ผ ๋กœ๊ทธ์ธ ์„ฑ๊ณต + ์ž˜๋ชป๋œ ๋น„๋ฐ€๋ฒˆํ˜ธ ์‹คํŒจ ๊ฒฝ๋กœ ๋‘˜ ๋‹ค ๋ณด๊ณ  ์‹ถ์–ด " 

 # ์ž๋™ ํƒ์ƒ‰ (auto-explore)
/e2e:explore sign_in --auto --depth=3

# ๋ชฝํ‚ค ํ…Œ์ŠคํŠธ
/e2e:explore sign_in --monkey --actions=50 --seed=42

ํŒŒ๋ผ๋ฏธํ„ฐ#

ํŒŒ๋ผ๋ฏธํ„ฐํ•„์ˆ˜์„ค๋ช…๊ธฐ๋ณธ
featureโœ…๋Œ€์ƒ feature ์ด๋ฆ„ (snake_case)โ€”
promptโŒํƒ์ƒ‰ ์˜๋„ ์ž์—ฐ์–ดโ€”
--autoโŒflutter-skill explore ๋ชจ๋“œ ์‚ฌ์šฉfalse
--depthโŒauto-explore ๊นŠ์ด3
--monkeyโŒ๋ชฝํ‚ค ํ…Œ์ŠคํŠธ ๋ชจ๋“œfalse
--actionsโŒ๋ชฝํ‚ค ํ…Œ์ŠคํŠธ ์•ก์…˜ ์ˆ˜50
--seedโŒ๋ชฝํ‚ค ํ…Œ์ŠคํŠธ ์‹œ๋“œ42
--deviceโŒ๋Œ€์ƒ ๋””๋ฐ”์ด์Šค์ž๋™ ๊ฐ์ง€

์‹คํ–‰ ๋‹จ๊ณ„#

  1. Lock ํ™•์ธ โ€” .claude/e2e-lock.json ์—์„œ feature + scenario ๊ฐ€ ์ด๋ฏธ lock ๋˜์–ด ์žˆ๋Š”์ง€ ๊ฒ€์‚ฌ. ์žˆ์œผ๋ฉด ์ค‘๋‹จํ•˜๊ณ  /e2e:unlock ์•ˆ๋‚ด
  2. Patrol ๋Ÿฌ๋„ˆ ์ถฉ๋Œ ํ™•์ธ โ€” patrol develop ์ด ์‹คํ–‰ ์ค‘์ด๋ฉด ์ค‘๋‹จ
  3. ์•ฑ ๊ธฐ๋™ โ€” debug ๋นŒ๋“œ๋กœ ์•ฑ์ด ์‹คํ–‰ ์ค‘์ธ์ง€ ํ™•์ธ(kobic ์€ kDebugMode ๊ฐ€๋“œ๋กœ flutter-skill ๋ฐ”์ธ๋”ฉ์„ ๋…ธ์ถœ โ€” ๋ณ„๋„ --dart-define ๋ถˆํ•„์š”). ์•„๋‹ˆ๋ฉด ์‚ฌ์šฉ์ž์—๊ฒŒ flutter run --debug ๊ธฐ๋™ ๋ช…๋ น ์ œ์‹œ
  4. MCP ์—ฐ๊ฒฐ ํ™•์ธ โ€” flutter-skill MCP ์„œ๋ฒ„ ์—ฐ๊ฒฐ ํ™•์ธ(debug ๋นŒ๋“œ์—์„œ ์ž๋™ ๋…ธ์ถœ). ์—ฐ๊ฒฐ ์•ˆ ๋˜๋ฉด 8๋‹จ๊ณ„์˜ record-only ํด๋ฐฑ์œผ๋กœ ์ง„ํ–‰(์ค‘๋‹จ ์•„๋‹˜)
  5. ์ €๋„ ์—ด๊ธฐ โ€” .claude/e2e-journal/{feature}.jsonl ์ƒ์„ฑ/append, session_start ์ด๋ฒคํŠธ ๊ธฐ๋ก
  6. ํƒ์ƒ‰ ์ˆ˜ํ–‰ โ€” exploration ์Šคํ‚ฌ ํ˜ธ์ถœ (skills/exploration/SKILL.md ์ฐธ์กฐ)
  7. ์ €๋„ ๋‹ซ๊ธฐ โ€” session_end ์ด๋ฒคํŠธ ๊ธฐ๋ก + flutter-skill MCP disable
  8. ๋‹ค์Œ ๋‹จ๊ณ„ ์•ˆ๋‚ด โ€” /e2e:draft ํ˜ธ์ถœ ์ œ์•ˆ

์ถœ๋ ฅ#

  • .claude/e2e-journal/{feature}.jsonl (ํœ˜๋ฐœ์„ฑ)
  • .claude/e2e-journal/screenshots/{feature}/*.png (ํœ˜๋ฐœ์„ฑ)
  • ํƒ์ƒ‰ ์š”์•ฝ ๋ฆฌํฌํŠธ (stdout)

์‹คํŒจ ์ผ€์ด์Šค#

์›์ธ๋Œ€์‘
debug ๋นŒ๋“œ ์•„๋‹˜(๋ฆด๋ฆฌ์Šค ๋นŒ๋“œ)flutter run --debug ๊ธฐ๋™ ๋ช…๋ น ์ถœ๋ ฅ ํ›„ ์ค‘๋‹จ (kobic ์€ kDebugMode ๊ฐ€๋“œ โ€” --dart-define ๋ถˆํ•„์š”)
patrol develop ์‹คํ–‰ ์ค‘์ค‘๋‹จ, patrol ์„ธ์…˜ ์ข…๋ฃŒ ์•ˆ๋‚ด
์ด๋ฏธ lock ๋œ ์‹œ๋‚˜๋ฆฌ์˜ค ์žฌํƒ์ƒ‰ ์‹œ๋„/e2e:unlock ์•ˆ๋‚ด ํ›„ ์ค‘๋‹จ
flutter-skill MCP ์—ฐ๊ฒฐ ์‹คํŒจrecord-only ํด๋ฐฑ โ€” ์‚ฌ์šฉ์ž๊ฐ€ ํƒญ/์ž…๋ ฅ์„ ๊ตฌ์ˆ ํ•˜๋ฉด ์—์ด์ „ํŠธ๊ฐ€ .jsonl ์ €๋„์— ์ˆ˜๊ธฐ ๊ธฐ๋ก(=/e2e:draft ์ง„ํ–‰ ๊ฐ€๋Šฅ). ์ง„๋‹จ์€ cc-dev-cycle:mcp-debug (unsafeโ†’์ค‘๋‹จ, tooling ๋ถ€์žฌโ†’degrade ๊ตฌ๋ถ„)

๊ด€๋ จ#

  • skills/exploration/SKILL.md
  • commands/e2e/draft.md โ€” ๋‹ค์Œ ๋‹จ๊ณ„
  • rules/binding-gating.md โ€” ๊ฒŒ์ดํŒ… ํ‘œ์ค€