LogoSkills

dev:unstuck

Break out of a stuck loop with 5 lateral personas โ€” solo reframe or parallel debate (returns options, not a verdict)

ํ•ญ๋ชฉ๋‚ด์šฉ
Invoke/dev:unstuck
Categorydev-cycle
Complexitymoderate

/dev:unstuck โ€” ๋ง‰ํ˜”์„ ๋•Œ ์‹œ๊ฐ์„ ๋ฐ”๊ฟ”์ฃผ๋Š” "๊ด€์  ์ „ํ™˜ ํšŒ์˜"#

๊ฐ™์€ ์ˆ˜์ •์„ ๋ฐ˜๋ณตํ•˜๋‹ค ๋ง‰ํžŒ ์ž‘์—…์„, ์„œ๋กœ ๋‹ค๋ฅธ 5๋ช…์˜ ๊ด€์ ์œผ๋กœ ๋‹ค์‹œ ๋ฐ”๋ผ๋ณด๊ฒŒ ํ•ด ์ฃผ๋Š” ์›Œํฌํ”Œ๋กœ

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

์ž‘์—…์ด ๊ฐ™์€ ์ž๋ฆฌ์—์„œ ๊ณ„์† ๋ง‰ํ˜”์„ ๋•Œ โ€” ๊ฐ™์€ ์ˆ˜์ •์„ ๋ช‡ ๋ฒˆ์ด๋‚˜ ์‹œ๋„ํ–ˆ๋Š”๋ฐ ๋˜‘๊ฐ™์ด ์‹คํŒจํ•  ๋•Œ โ€” ์„œ๋กœ ๋‹ค๋ฅธ ์‚ฌ๊ณ ๋ฐฉ์‹์„ ๊ฐ€์ง„ 5๋ช…์˜ "๊ด€์  ์ „ํ™˜๊ฐ€"๋ฅผ ๋ถˆ๋Ÿฌ "๋‹ค๋ฅด๊ฒŒ ๋ณด๋Š” ๋ฒ•" ์„ ๋ฐ›์•„์˜ค๋Š” ๋ช…๋ น์ž…๋‹ˆ๋‹ค. ๋ง‰ํžŒ ๋ฌธ์ œ ์•ž์—์„œ ์นœ๊ตฌ 5๋ช…์—๊ฒŒ "์ด๊ฑฐ ์–ด๋–ป๊ฒŒ ๋ด?"๋ผ๊ณ  ๋ฌผ์–ด๋ณด๋Š” ํšŒ์˜๋ผ๊ณ  ์ƒ๊ฐํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค. ๋‹จ, ๋‹ต์„ ๋Œ€์‹  ์ •ํ•ด์ฃผ์ง€๋Š” ์•Š์Šต๋‹ˆ๋‹ค โ€” ์„ ํƒ์€ ๋‹น์‹  ๋ชซ์ž…๋‹ˆ๋‹ค.

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

  • ๊ฐ™์€ ์—๋Ÿฌ๋ฅผ ๊ฐ™์€ ๋ฐฉ๋ฒ•์œผ๋กœ N๋ฒˆ ๊ณ ์ณค๋Š”๋ฐ๋„ ๊ณ„์† ๋˜‘๊ฐ™์ด ์‹คํŒจํ•  ๋•Œ
  • ๋‘ ์ˆ˜์ • ์‚ฌ์ด๋ฅผ ์™”๋‹ค ๊ฐ”๋‹ค(A ๊ณ ์น˜๋ฉด B ๊นจ์ง€๊ณ , B ๊ณ ์น˜๋ฉด A ๊นจ์ง€๊ณ ) ํ•˜๋ฉฐ ์ง„๋™ํ•  ๋•Œ
  • "๋ญ”๊ฐ€ ์‚ฌ์‹ค ํ•˜๋‚˜๊ฐ€ ๋น„์–ด ์žˆ๋Š”๋ฐ ๊ทธ๊ฒŒ ๋ญ”์ง€ ๋ชจ๋ฅด๊ฒ ๋‹ค" ์‹ถ์„ ๋•Œ
  • ์ž๋™ํ™” ๋ฐฐ์น˜(/dev:batch)๊ฐ€ ํ•œ Story์—์„œ ๊ฐ™์€ ์‹คํŒจ๋ฅผ ๋ฐ˜๋ณตํ•ด ์Šค์Šค๋กœ ๊ด€์  ์ „ํ™˜์„ ํ˜ธ์ถœํ•  ๋•Œ (์ด๋•Œ๋Š” ์‚ฌ๋žŒ์ด ๋ถ€๋ฅด์ง€ ์•Š์•„๋„ ์ž๋™์œผ๋กœ ํ˜ธ์ถœ๋ฉ๋‹ˆ๋‹ค)

๐Ÿ‘‰ "๋” ์—ด์‹ฌํžˆ ๋‹ค์‹œ ์‹œ๋„"๊ฐ€ ์•„๋‹ˆ๋ผ "๋‹ค๋ฅธ ๊ฐ๋„๋กœ ๋‹ค์‹œ ๋ณด๊ธฐ" ๊ฐ€ ํ•„์š”ํ•  ๋•Œ ์“ฐ๋Š” ๋„๊ตฌ์ž…๋‹ˆ๋‹ค.

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

5๋ช…์˜ ๊ด€์ (ํŽ˜๋ฅด์†Œ๋‚˜)์œผ๋กœ ๋ง‰ํžŒ ์ƒํ™ฉ์„ ๋‹ค์‹œ ๋ฐ”๋ผ๋ด…๋‹ˆ๋‹ค. ๊ฐ ํŽ˜๋ฅด์†Œ๋‚˜๋Š” ํ•œ ๊ฐ€์ง€ ์‚ฌ๊ณ ๋ฐฉ์‹๋งŒ ๊ฐ€์ง‘๋‹ˆ๋‹ค.

  • HACKER โ€” ๊ฐ™์€ ์ˆ˜๋ฆฌ ๊ทธ๋งŒํ•˜๊ณ , ๋ง‰ํžŒ ์ง€์ ์„ ๋–ผ์–ด๋‚ด ์šฐํšŒํ•˜๋ผ
  • RESEARCHER โ€” ๋…ธ๋ ฅ์ด ์•„๋‹ˆ๋ผ ์‚ฌ์‹ค ํ•˜๋‚˜๊ฐ€ ๋น„์–ด ์žˆ๋‹ค, ๊ฐ€์„œ ์ฐพ์•„์™€๋ผ
  • SIMPLIFIER โ€” ๊ณผํ•˜๊ฒŒ ์ง€์–ด์กŒ๋‹ค, ๋”ํ•˜์ง€ ๋ง๊ณ  ๋œ์–ด๋‚ด๋ผ
  • ARCHITECT โ€” ๊ณ„์† ์™”๋‹ค ๊ฐ”๋‹ค ํ•œ๋‹ค, ๊ตฌ์กฐ๊ฐ€ ํ‹€๋ ธ์œผ๋‹ˆ ๋‹ค์‹œ ์งœ๋ผ
  • CONTRARIAN โ€” (๊ธฐ๋ณธ ํด๋ฐฑ) ์ „์ œ ์ž์ฒด๋ฅผ ์˜์‹ฌํ•˜๋ผ

์ด 5๋ช…์˜ ์ •์˜ยท์งˆ๋ฌธ์€ ํ•œ ๊ณณ(references/LATERAL_PERSONAS.md)์— ๋ชจ์—ฌ ์žˆ์–ด, ์–ด๋””์„œ ๋ถ€๋ฅด๋“  ๊ฐ™์€ ํŽ˜๋ฅด์†Œ๋‚˜๊ฐ€ ๊ฐ™์€ ๋ฐฉ์‹์œผ๋กœ ๋™์ž‘ํ•ฉ๋‹ˆ๋‹ค.

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

# ํ† ๋ก  ๋ชจ๋“œ (๊ธฐ๋ณธ) โ€” 5๋ช… ์ „์›์ด ๊ฐ์ž ๊ด€์ ์„ ๋‚ด๊ณ , ์ข…ํ•ฉ ์ •๋ฆฌ
/dev:unstuck

# ์†”๋กœ ๋ชจ๋“œ โ€” ํŠน์ • ํŽ˜๋ฅด์†Œ๋‚˜ ํ•œ ๋ช…๋งŒ ๋ถˆ๋Ÿฌ ๋น ๋ฅด๊ฒŒ ๊ด€์  ์ „ํ™˜
/dev:unstuck solo hacker
/dev:unstuck solo architect
  • ์ธ์ž ์—†์ด ๋ถ€๋ฅด๋ฉด ํ† ๋ก (debate) ๋ชจ๋“œ ์ž…๋‹ˆ๋‹ค โ€” 5๋ช…์ด ๋™์‹œ์— ์˜๊ฒฌ์„ ๋‚ด๊ณ  ๋งˆ์ง€๋ง‰์— ์ข…ํ•ฉํ•ด ์ค๋‹ˆ๋‹ค.
  • solo <ํŽ˜๋ฅด์†Œ๋‚˜> ๋กœ ๋ถ€๋ฅด๋ฉด ํ•ด๋‹น ํŽ˜๋ฅด์†Œ๋‚˜ ํ•œ ๋ช…๋งŒ ๋น ๋ฅด๊ฒŒ ๊ด€์ ์„ ์ „ํ™˜ํ•ด ์ค๋‹ˆ๋‹ค (ํŽ˜๋ฅด์†Œ๋‚˜: hacker / researcher / simplifier / architect / contrarian).
  • ์–ด๋А ๋ชจ๋“œ๋“  ๋ง‰ํžŒ ์ƒํ™ฉ ์ •๋ณด(๋ฌด์—‡์„ ํ•˜๋ ค ํ–ˆ๋‚˜ / ๋ฌด์—‡์„ ๋ฐ˜๋ณตํ–ˆ๋‚˜ / ๋ฌด์—‡์„ ์‹œ๋„ํ–ˆ๊ณ  ์–ด๋–ป๊ฒŒ ์‹คํŒจํ–ˆ๋‚˜)๋ฅผ ํ•จ๊ป˜ ์ฃผ๋ฉด ๋” ์ •ํ™•ํ•ฉ๋‹ˆ๋‹ค.

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

  1. ์ƒํ™ฉ ์ •๋ฆฌ โ€” "๋ฌด์—‡์„ ํ•˜๋ ค๋Š”์ง€(problem_context) / ์–ด๋–ค ๋ฐฉ๋ฒ•์„ ๋ฐ˜๋ณตํ–ˆ๋Š”์ง€(current_approach) / ๋ฌด์—‡์„ ์‹œ๋„ํ–ˆ๊ณ  ์–ด๋–ป๊ฒŒ ์‹คํŒจํ–ˆ๋Š”์ง€(failed_attempts)"๋ฅผ ๋ชจ์๋‹ˆ๋‹ค.
  2. ๊ด€์  ์ „ํ™˜
    • ์†”๋กœ ๋ชจ๋“œ: ์ง€์ •ํ•œ ํŽ˜๋ฅด์†Œ๋‚˜ ์ •์˜๋ฅผ ์ฝ๊ณ , ๊ทธ ํ•œ ๋ช…์˜ ์‹œ๊ฐ์œผ๋กœ ๋ง‰ํžŒ ์ง€์ ์„ ๋‹ค์‹œ ์ง„์ˆ ํ•ฉ๋‹ˆ๋‹ค.
    • ํ† ๋ก  ๋ชจ๋“œ: 5๋ช…์„ ๋™์‹œ์—(๋ณ‘๋ ฌ) ๋ถˆ๋Ÿฌ ๊ฐ์ž reframing์„ ๋ฐ›์•„์˜ต๋‹ˆ๋‹ค.
  3. ์ข…ํ•ฉ โ€” ํ† ๋ก  ๋ชจ๋“œ๋Š” 5๋ช…์˜ ์˜๊ฒฌ์„ ์„ ํƒ์ง€(Options) / ์„œ๋กœ ์—‡๊ฐˆ๋ฆฐ ์ง€์ (Disagreements) / ์ถ”์ฒœ(Recommended) ์œผ๋กœ ๋ฌถ์–ด ๋ณด์—ฌ์ค๋‹ˆ๋‹ค.
  4. ๋ฉˆ์ถค โ€” ์—ฌ๊ธฐ์„œ ๋ฉˆ์ถฅ๋‹ˆ๋‹ค. ๊ฒฐ๋ก (verdict)์€ ์ž๋™์œผ๋กœ ๋‚ด์ง€ ์•Š์Šต๋‹ˆ๋‹ค โ€” ์–ด๋–ค ์„ ํƒ์ง€๋ฅผ ํƒํ• ์ง€๋Š” ์‚ฌ๋žŒ์ด ์ •ํ•ฉ๋‹ˆ๋‹ค.

ํ•ต์‹ฌ: ์ด ๋ช…๋ น์€ ์„ ํƒ์ง€๋ฅผ ์ฃผ๋Š” ๊ฒƒ์ด์ง€ ๊ฒฐ์ •์„ ๋‚ด๋ฆฌ๋Š” ๊ฒƒ์ด ์•„๋‹™๋‹ˆ๋‹ค.

๋๋‚˜๋ฉด ๋‹ค์Œ์€?#

  • ๋งˆ์Œ์— ๋“œ๋Š” ์„ ํƒ์ง€๊ฐ€ ์žˆ์œผ๋ฉด ๊ทธ ๋ฐฉํ–ฅ์œผ๋กœ ์ง์ ‘ ์ž‘์—…์„ ์ด์–ด๊ฐ€๋ฉด ๋ฉ๋‹ˆ๋‹ค.
  • ๊ทธ๋ž˜๋„ ์•ˆ ํ’€๋ฆฌ๋ฉด ๋‹ค๋ฅธ ํŽ˜๋ฅด์†Œ๋‚˜๋กœ ํ•œ ๋ฒˆ ๋”(solo) ๋Œ๋ฆฌ๊ฑฐ๋‚˜, ์ „์ œ ์ž์ฒด๊ฐ€ ์˜์‹ฌ๋˜๋ฉด ์‚ฌ๊ณ  ๋ณต๊ธฐ(/debrief)๋กœ ๋„˜์–ด๊ฐ‘๋‹ˆ๋‹ค.
  • ๋ฐฐ์น˜ ์ž๋™ํ™”๊ฐ€ ํ˜ธ์ถœํ•œ ๊ฒฝ์šฐ, ๊ด€์  ์ „ํ™˜์„ ๋‹ค ์จ๋„ ์•ˆ ํ’€๋ฆฌ๋ฉด ํ•ด๋‹น Story๋Š” BLOCKED('unstuck_exhausted')๋กœ ํ‘œ์‹œ๋˜๊ณ  ๋‚˜๋จธ์ง€ ๋ฐฐ์น˜๋Š” ๊ณ„์† ์ง„ํ–‰๋ฉ๋‹ˆ๋‹ค (Epic ์ „์ฒด๊ฐ€ ๋ฉˆ์ถ”์ง€ ์•Š์Šต๋‹ˆ๋‹ค).

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

Triggers#

  • ๋™์ผ ์ „๋žต์„ ๋ฐ˜๋ณตํ–ˆ๋Š”๋ฐ ๋™์ผํ•˜๊ฒŒ ์‹คํŒจํ•˜๋Š” stuck loop
  • /dev:batch / sequential-workflow ์˜ stall budget 2๋‹จ๊ณ„์—์„œ ์ž๋™ ํ˜ธ์ถœ
  • ์‚ฌ๋žŒ์ด ๋ช…์‹œ์ ์œผ๋กœ ๊ด€์  ์ „ํ™˜์„ ์š”์ฒญ

Usage#

/dev:unstuck                      # debate ๋ชจ๋“œ (๊ธฐ๋ณธ): 5 ํŽ˜๋ฅด์†Œ๋‚˜ ๋ณ‘๋ ฌ
/dev:unstuck solo  < persona >         # solo ๋ชจ๋“œ: ๋‹จ์ผ ํŽ˜๋ฅด์†Œ๋‚˜

Parameters#

ParameterRequiredDescription
modeโ€”solo ๋˜๋Š” ์ƒ๋žต(=debate). ๊ธฐ๋ณธ debate
<persona>solo์ผ ๋•Œ โœ…hacker / researcher / simplifier / architect / contrarian

Stuck Context (์–‘ ๋ชจ๋“œ ๊ณตํ†ต ์ž…๋ ฅ)#

ํ•„๋“œ์˜๋ฏธ
problem_context๋‹ฌ์„ฑํ•˜๋ ค๋Š” ๋ชฉํ‘œ
current_approach๋ฐ˜๋ณตํ•˜๊ณ  ์žˆ๋Š” ์ „๋žต
failed_attempts์ด๋ฏธ ์‹œ๋„ํ•œ ๊ฒƒ + ๊ฐ๊ฐ ์–ด๋–ป๊ฒŒ ์‹คํŒจํ–ˆ๋Š”์ง€

Persona Source of Truth#

5 ํŽ˜๋ฅด์†Œ๋‚˜(HACKER / RESEARCHER / SIMPLIFIER / ARCHITECT / CONTRARIAN)์˜ mindsetยทaffinityยทprobing questions๋Š” ๋‹จ์ผ ์ •์˜ ํŒŒ์ผ์„ ๋”ฐ๋ฅธ๋‹ค:

plugins/cc-spec-clarity/references/LATERAL_PERSONAS.md

์ด ๋ช…๋ น๊ณผ lateral-thinker ์—์ด์ „ํŠธ๋Š” ๊ทธ ํŒŒ์ผ์„ READํ•ด์„œ ์“ด๋‹ค โ€” ํŽ˜๋ฅด์†Œ๋‚˜ ๋ฌธ์žฅ์„ ์—ฌ๊ธฐ์„œ ๋‹ค์‹œ ์“ฐ์ง€ ์•Š๋Š”๋‹ค.

LLM-SEMANTIC, never lexical#

"๊ฐ™์€ ์‹คํŒจ๊ฐ€ ๋ฐ˜๋ณต๋˜๋Š”๊ฐ€?" ์™€ "์–ด๋–ค ์ฆ์ƒ โ†’ ์–ด๋–ค ํŽ˜๋ฅด์†Œ๋‚˜" ํŒ์ •์€ ์ƒํ™ฉ์˜ ์˜๋ฏธ์— ๋Œ€ํ•œ LLM ํŒ๋‹จ์œผ๋กœ ํ•œ๋‹ค. ์—๋Ÿฌ ํ…์ŠคํŠธ์˜ ๋ฌธ์ž์—ด/ํ† ํฐ ๊ฒน์นจ์œผ๋กœ ๋น„๊ตํ•˜์ง€ ์•Š๋Š”๋‹ค. ํ•œ๊ตญ์–ด๋Š” ๋„์–ด์“ฐ๊ธฐ ๊ฒฝ๊ณ„๊ฐ€ ์—†๊ณ  ์กฐ์‚ฌ๊ฐ€ ๋ถ™์–ด, ๊ฐ™์€ ๋ธ”๋กœ์ปค๋ฅผ ๊ฐ€๋ฆฌํ‚ค๋Š” ๋‘ ๋กœ๊ทธ๊ฐ€ ํ† ํฐ์„ ๊ฑฐ์˜ ๊ณต์œ ํ•˜์ง€ ์•Š์„ ์ˆ˜ ์žˆ๋‹ค("๋นŒ๋“œ๊ฐ€ ์‹คํŒจ" vs "๋นŒ๋“œ๋Š” ๋˜ ์‹คํŒจ"). ์˜๋ฏธ๋กœ ํŒ๋‹จํ•˜๋ผ.

Solo Mode#

1.  < persona >   ๊ฒ€์ฆ (5๊ฐœ ์ค‘ ํ•˜๋‚˜). ๋ฏธ์ง€์ •/์˜คํƒ€ โ†’ affinity ๋ผ์šฐํŒ…์œผ๋กœ ์ถ”์ •(๊ธฐ๋ณธ CONTRARIAN)ํ•˜๊ณ  ๋ฌด์—‡์„ ๊ณจ๋ž๋Š”์ง€ ๋ช…์‹œ.
2. LATERAL_PERSONAS.md ์—์„œ ํ•ด๋‹น ํŽ˜๋ฅด์†Œ๋‚˜ ํ–‰ ๋กœ๋“œ.
3. stuck context ์— ํŽ˜๋ฅด์†Œ๋‚˜ 3 probing questions ์ ์šฉ.
4. reframing 1๊ฑด ์ถœ๋ ฅ (์žฌ์‹œ๋„ ์•„๋‹˜ โ€” ์ข…๋ฅ˜๊ฐ€ ๋‹ค๋ฅธ next move).
5. STOP. verdict ์—†์Œ.

๋‹จ์ผ ํ˜ธ์ถœ์€ lateral-thinker ์—์ด์ „ํŠธ๋กœ ์œ„์ž„ํ•  ์ˆ˜๋„, ์ธ๋ผ์ธ์œผ๋กœ ์ฒ˜๋ฆฌํ•  ์ˆ˜๋„ ์žˆ๋‹ค:

await Task({
  subagent_type:  " lateral-thinker " ,
  prompt: `
    persona: ${persona}            // e.g. HACKER
    problem_context: ${problem_context}
    current_approach: ${current_approach}
    failed_attempts: ${failed_attempts}
  `
});

Debate Mode (default)#

5 ํŽ˜๋ฅด์†Œ๋‚˜๋ฅผ ๋ณ‘๋ ฌ fan-outํ•œ๋‹ค. ๊ฐ ํ˜ธ์ถœ์€ subagent_type: "lateral-thinker" (์ •์˜๋œ ์—์ด์ „ํŠธ, ํŽ˜๋ฅด์†Œ๋‚˜ ์ธ์ž ์ „๋‹ฌ) ๋˜๋Š” ๋นŒํŠธ์ธ general-purpose ์ค‘ ํ•˜๋‚˜๋กœ ๋ณด๋‚ธ๋‹ค โ€” ๋‘˜ ๋‹ค resolve๋œ๋‹ค. ์ปค์Šคํ…€ ๋ฏธ์ •์˜ ํƒ€์ž…์€ ์“ฐ์ง€ ์•Š๋Š”๋‹ค. ์™ธ๋ถ€ lateral-thinking MCP ๋„๊ตฌ๋Š” ์ฐธ์กฐํ•˜์ง€ ์•Š๋Š”๋‹ค โ€” Task ๋งŒ ์‚ฌ์šฉํ•œ๋‹ค.

const PERSONAS = [ " HACKER " ,  " RESEARCHER " ,  " SIMPLIFIER " ,  " ARCHITECT " ,  " CONTRARIAN " ];

// 5๊ฐœ ๋™์‹œ ์‹คํ–‰ (ํ•œ ๋ฉ”์‹œ์ง€์—์„œ ๋ณ‘๋ ฌ Task)
const reframings = await Promise.all(
  PERSONAS.map((persona) = > 
     Task({
      subagent_type:  " lateral-thinker " ,   // ๋˜๋Š”  " general-purpose " 
       prompt: `
        persona: ${persona}
        problem_context: ${problem_context}
        current_approach: ${current_approach}
        failed_attempts: ${failed_attempts}

        references/LATERAL_PERSONAS.md ์˜ ${persona} ์ •์˜๋ฅผ ์ฝ๊ณ ,
        ์ด stuck context ๋ฅผ ๊ทธ ์‹œ๊ฐ์œผ๋กœ reframing ํ•˜๋ผ. verdict ๊ธˆ์ง€.
      `,
    })
  )
);

// ์ข…ํ•ฉ (synthesize) โ†’ STOP

Synthesis Output#

5๋ช…์˜ reframing์„ ๋ฐ›์•„ ์•„๋ž˜๋กœ ๋ฌถ๊ณ  ๋ฉˆ์ถ˜๋‹ค:

## /dev:unstuck โ€” Debate Synthesis

### Options
- [HACKER] {next move}
- [RESEARCHER] {next move}
- [SIMPLIFIER] {next move}
- [ARCHITECT] {next move}
- [CONTRARIAN] {next move}

### Disagreements
- {ํŽ˜๋ฅด์†Œ๋‚˜ ๊ฐ„ ์ถฉ๋Œํ•˜๋Š” ์ง„๋‹จ/์ œ์•ˆ โ€” ์–ด๋””์„œ ์—‡๊ฐˆ๋ฆฌ๋Š”๊ฐ€}

### Recommended
- {์ƒํ™ฉ์ƒ ๊ฐ€์žฅ ์„ค๋“๋ ฅ ์žˆ๋Š” ์„ ํƒ์ง€ 1โ€“2๊ฐœ + ์ด์œ }

 >   Do not auto-emit a verdict; the verdict is the user ' s.

Synthesis๋Š” ์ถ”์ฒœ๊นŒ์ง€๋งŒ. ๊ฒฐ๋ก (์–ด๋–ค ์˜ต์…˜์„ ์‹คํ–‰ํ• ์ง€)์€ ์ž๋™์œผ๋กœ ๋‚ด์ง€ ์•Š๋Š”๋‹ค โ€” ์‚ฌ์šฉ์ž๊ฐ€ ์ •ํ•œ๋‹ค.

Affinity Routing (solo ํŽ˜๋ฅด์†Œ๋‚˜ ๋ฏธ์ง€์ • ์‹œ)#

references/LATERAL_PERSONAS.md ์˜ affinity/symptom ํ‘œ๋ฅผ ์˜๋ฏธ ๊ธฐ๋ฐ˜์œผ๋กœ ์ ์šฉ (๊ธฐ๋ณธ CONTRARIAN):

์ฆ์ƒ (semantic)Persona
๊ฐ™์€ ์—๋Ÿฌยท๊ฐ™์€ ์ˆ˜์ • NํšŒ ๋ฐ˜๋ณตHACKER
ํ™•์ธ ์•ˆ ๋œ ์‚ฌ์‹คยท๊ฐ€์ • ๋•Œ๋ฌธ์— ๋ง‰ํž˜RESEARCHER
๊ณผ์„ค๊ณ„ยท๋ณต์žก์„ฑ์— ๋ฌปํžŒ ๋ธ”๋กœ์ปคSIMPLIFIER
์ˆ˜์ • ์‚ฌ์ด ์ง„๋™(flip-flop)ARCHITECT
๋ถ„๋ฅ˜ ๋ถˆ๊ฐ€ยท์ „์ œ ์ž์ฒด ์˜์‹ฌ (๊ธฐ๋ณธ)CONTRARIAN

Key Rules#

  1. No verdict: ์„ ํƒ์ง€ยท์ถ”์ฒœ๊นŒ์ง€๋งŒ. ๊ฒฐ์ •์€ ์‚ฌ์šฉ์ž.
  2. Reframe, not retry: ๋ชจ๋“  next move ๋Š” failed_attempts ์™€ ์ข…๋ฅ˜๊ฐ€ ๋‹ฌ๋ผ์•ผ ํ•œ๋‹ค.
  3. Semantic matching: stuck/affinity ํŒ์ •์€ ์˜๋ฏธ ๊ธฐ๋ฐ˜, ์–ดํœ˜ ๊ฒน์นจ ๊ธˆ์ง€ (Korean-first).
  4. Shared definitions: ํŽ˜๋ฅด์†Œ๋‚˜ ์ •์˜๋Š” references/LATERAL_PERSONAS.md ๋‹จ์ผ ์ถœ์ฒ˜.
  5. Resolvable subagents only: lateral-thinker ๋˜๋Š” general-purpose ๋งŒ ์‚ฌ์šฉ.
  • /dev:batch โ€” stall budget 2๋‹จ๊ณ„์—์„œ ์ด ๋ช…๋ น์„ ์ž๋™ ํ˜ธ์ถœ
  • /debrief โ€” ๊ด€์  ์ „ํ™˜์œผ๋กœ๋„ ์•ˆ ํ’€๋ฆฐ ์‚ฌ๊ณ ์˜ ์‚ฌํ›„ ๋ณต๊ธฐ
  • references/LATERAL_PERSONAS.md โ€” 5 ํŽ˜๋ฅด์†Œ๋‚˜ ๊ณต์œ  ์ •์˜