Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

16 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

Harness Framework ๐Ÿš€

ํ•˜๋„ค์Šค ํ”„๋ ˆ์ž„์›Œํฌ๋Š” ์ž‘์—…์„ ์›์ž ๋‹จ์œ„์˜ Step์œผ๋กœ ๋ถ„ํ•ดํ•˜๊ณ , ์„ธ์…˜์ด ์ค‘๋‹จ๋˜๋”๋ผ๋„ ๋‹ค์–‘ํ•œ AI ์ฝ”๋”ฉ ์—์ด์ „ํŠธ(Antigravity, Claude, Codex, Kimi ๋“ฑ)๊ฐ€ ์ƒํƒœ๋ฅผ ์•ˆ์ „ํ•˜๊ฒŒ ๊ณต์œ ํ•˜๋ฉฐ ์ด์–ด์„œ ์ž‘์—…ํ•  ์ˆ˜ ์žˆ๋„๋ก ์ง€์›ํ•˜๋Š” ๋ฒ”์šฉ ํ•˜๋„ค์Šค ์›Œํฌํ”Œ๋กœ์šฐ ์ธํ”„๋ผ์ž…๋‹ˆ๋‹ค.

์ด ํ”„๋ ˆ์ž„์›Œํฌ๋Š” ๋ฌดํ•œ ์ž๋™ํ™” ๋ฃจํ”„ ๋Œ€์‹  **"๊ตฌ์กฐํ™”๋œ ์ž‘์—… ๊ธฐ๋ก๊ณผ ์•ˆ์ „ํ•œ ์„ธ์…˜ ์žฌ๊ฐœ"**๋ฅผ ํ•ต์‹ฌ ๊ฐ€์น˜๋กœ ์‚ผ์Šต๋‹ˆ๋‹ค.


๐Ÿ”ง ์„ค์น˜ (ํ•œ ๋ฒˆ๋งŒ)

ํ”„๋ ˆ์ž„์›Œํฌ๋Š” ํ”„๋กœ์ ํŠธ๋งˆ๋‹ค cloneํ•˜์ง€ ์•Š๊ณ , ํ•œ ๊ณณ์— ์„ค์น˜ํ•ด์„œ ์Šคํ‚ฌ๋กœ ์žฌ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

mkdir -p ~/.agents/skills
git clone https://github.com/superwhyun/skill-harness.git ~/.agents/skills/harness
cd ~/.agents/skills/harness
bash install.sh

install.sh๋Š” ~/.claude/skills/harness, ~/.kimi/skills/harness, ~/.codex/skills/harness, ~/.gemini/config/skills/harness๋ฅผ ์ด ํด๋ก ์˜ skills/harness/๋กœ symlink ํ•ฉ๋‹ˆ๋‹ค. ์ดํ›„ ์–ด๋–ค ํ”„๋กœ์ ํŠธ ๋””๋ ‰ํ„ฐ๋ฆฌ๋ฅผ ์—ด์–ด๋„ harness ์Šคํ‚ฌ์ด ์ž๋™ ๋กœ๋“œ๋ฉ๋‹ˆ๋‹ค (~/.gemini/config/skills/๋Š” Antigravity agy/AGY CLI/AGY IDE ์„ธ ๋ณ€ํ˜• ๋ชจ๋‘๊ฐ€ ๊ณตํ†ต์œผ๋กœ ์ธ์‹ํ•˜๋Š” ์ „์—ญ ์Šคํ‚ฌ ๊ฒฝ๋กœ์ž…๋‹ˆ๋‹ค).

์—…๋ฐ์ดํŠธ๋Š” ~/.agents/skills/harness์—์„œ git pull ํ•œ ๋ฒˆ์ด๋ฉด ๋ฉ๋‹ˆ๋‹ค. symlink์ด๋ฏ€๋กœ ์žฌ์„ค์น˜๊ฐ€ ํ•„์š” ์—†์Šต๋‹ˆ๋‹ค.

ํด๋ก  ๋””๋ ‰ํ„ฐ๋ฆฌ(~/.agents/skills/harness)๋Š” ์ง€์šฐ๋ฉด ์•ˆ ๋ฉ๋‹ˆ๋‹ค. ์‹ฌ๋ณผ๋ฆญ ๋งํฌ๊ฐ€ ๊ฐ€๋ฆฌํ‚ค๋Š” ์‹ค์ œ ์›๋ณธ์ž…๋‹ˆ๋‹ค.


๐ŸŒŸ ํ•ต์‹ฌ ํŒจ๋Ÿฌ๋‹ค์ž„

1. ๊ณ„์•ฝ ์šฐ์„  ๊ฐœ๋ฐœ (Contract-first Development)

ํ† ํฐ ์†Œ๋ชจ๋ฅผ ๊ทน๋Œ€ํ™”ํ•˜๋Š” ์ „์ฒด ์ฝ”๋“œ ์žฌํƒ์ƒ‰ ๋ฐฉ์‹์„ ์ง€์–‘ํ•˜๊ณ , **๊ณ„์•ฝ(Contract)**๊ณผ **๊ธฐ์ค€์„ (Baseline)**์„ ์ค‘์‹ฌ์œผ๋กœ ํ˜‘์—…ํ•ฉ๋‹ˆ๋‹ค.

  • module-map.json ๋„์ž…: ๊ฐ ํŽ˜์ด์ฆˆ(Phase)๋Š” ๋ชจ๋“ˆ ๊ฒฝ๊ณ„, ์†Œ์œ  step, owned_paths, public contracts, dependencies๋ฅผ ์„ ์–ธํ•˜์—ฌ ๋ฒ”์œ„๋ฅผ ์ œํ•œํ•ฉ๋‹ˆ๋‹ค.
  • ํ† ํฐ ์ ˆ์•ฝ ์šฐ์„ : ํ›„์† step์€ ์˜์กด ๋ชจ๋“ˆ์˜ ๊ตฌํ˜„ ์ „์ฒด๋ฅผ ๋‹ค์‹œ ์ฝ๋Š” ๋Œ€์‹ , ์ด์ „ ํŽ˜์ด์ฆˆ์˜ baseline๊ณผ ํ•ด๋‹น ๋ชจ๋“ˆ์˜ public contract๋ฅผ ๋จผ์ € ์ฝ์Šต๋‹ˆ๋‹ค.
  • Surgical Edit (Surgical ์ˆ˜์ •): ํ’ˆ์งˆ์ด๋‚˜ AC ๊ฒ€์ฆ์„ ์œ„ํ•ด ์†Œ์Šค์ฝ”๋“œ๋ฅผ ์ง์ ‘ ์กฐํšŒํ•ด์•ผ ํ•  ๊ฒฝ์šฐ์—๋Š” ์˜ํ–ฅ์ด ์žˆ๋Š” ๋ชจ๋“ˆ๋งŒ targeted read๋กœ ์ตœ์†Œํ™”ํ•˜์—ฌ ๋ถ„์„ํ•ฉ๋‹ˆ๋‹ค.
  • ๊ฒฉ๋ฆฌ๋œ ๋ฌธ์ œ ํ•ด๊ฒฐ: contract์— ๋ถˆ์ผ์น˜๋‚˜ ๋ณ€๊ฒฝ์ด ํ•„์š”ํ•œ ๊ฒฝ์šฐ, ํ˜„์žฌ ์ž‘์—… ์ค‘์ธ step์— ์–ต์ง€๋กœ ์„ž์–ด ์ˆ˜์ •ํ•˜์ง€ ์•Š๊ณ  blocking-fix ๋˜๋Š” contract-change step์„ ๋ช…์‹œ์ ์œผ๋กœ ์ถ”๊ฐ€(append)ํ•˜์—ฌ ํ•ด๊ฒฐํ•ฉ๋‹ˆ๋‹ค.

2. ํ”„๋กœ์ ํŠธ ๋งค๋‹ˆํŽ˜์ŠคํŠธ ๋ˆ„์  ์‹œ์Šคํ…œ (project-manifest.json)

์—ฌ๋Ÿฌ ํŽ˜์ด์ฆˆ๊ฐ€ ์™„๋ฃŒ๋  ๋•Œ๋งˆ๋‹ค ์ „์ฒด ํ”„๋กœ์ ํŠธ์˜ ๊ตฌ์„ฑ ์š”์†Œ๋ฅผ ์ž๋™์œผ๋กœ ์ˆ˜์ง‘ํ•˜์—ฌ ๋‹จ์ผ ๋งค๋‹ˆํŽ˜์ŠคํŠธ๋กœ ํ†ตํ•ฉ ๊ด€๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

  • ํŽ˜์ด์ฆˆ ๋งˆ๊ฐ ์‹œ phases/project-manifest.json ํŒŒ์ผ์— ๋ชจ๋“ˆ ํ˜„ํ™ฉ, ๋ผ์šฐํŠธ(์ค‘๋ณต ์ œ๊ฑฐ), ๊ณต์œ  ๊ณ„์•ฝ, ์™ธ๋ถ€ ํ†ตํ•ฉ ์ง€์ (Integration Points) ๋ฐ ์ „์ฒด ์™„๋ฃŒ ์ด๋ ฅ(tag, completed_at ๋“ฑ)์ด ์ž๋™์œผ๋กœ ๋ˆ„์  ๋ฐ ๊ฐฑ์‹ ๋ฉ๋‹ˆ๋‹ค.
  • ์ƒˆ๋กœ์šด ํŽ˜์ด์ฆˆ๋ฅผ ์‹œ์ž‘ํ•˜๋Š” ์—์ด์ „ํŠธ๋Š” ์ด ํ†ตํ•ฉ ๋งค๋‹ˆํŽ˜์ŠคํŠธ ํŒŒ์ผ ํ•˜๋‚˜๋งŒ ์ฝ์–ด ์ „์ฒด ํ”„๋กœ์ ํŠธ์˜ ๊ตฌ์กฐ์  ์ง„์ฒ™ ์ƒํ™ฉ์„ ์ฆ‰์‹œ ์ดํ•ดํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๐Ÿ›ก๏ธ CRITICAL: phases/ ๋””๋ ‰ํ„ฐ๋ฆฌ ๋ณดํ˜ธ ๊ทœ์น™

phases/ ๋””๋ ‰ํ„ฐ๋ฆฌ๋Š” ํ”„๋กœ์ ํŠธ ๊ตฌํ˜„ ๊ณ„ํš๊ณผ ์ง„ํ–‰ ์ƒํƒœ๋ฅผ ๊ด€๋ฆฌํ•˜๋Š” **์œ ์ผํ•œ ์ง„์‹ค ๊ณต๊ธ‰์› (SSOT, Single Source of Truth)**์ž…๋‹ˆ๋‹ค. ์•„๋ž˜์˜ ํ–‰๋™์€ ํ”„๋กœ์ ํŠธ ์ƒํƒœ๋ฅผ ํŒŒ๊ดดํ•˜๋ฏ€๋กœ ์ ˆ๋Œ€ ๊ธˆ์ง€๋ฉ๋‹ˆ๋‹ค.

Warning

  • ํ”„๋กœ์ ํŠธ ๋ฃจํŠธ๋ฅผ ์‚ญ์ œํ•˜๊ฑฐ๋‚˜ ๋‹ค์‹œ ์ƒ์„ฑํ•˜์ง€ ๋งˆ์‹ญ์‹œ์˜ค.
  • phases/ ๋””๋ ‰ํ„ฐ๋ฆฌ์™€ ํ•˜์œ„ ์ƒํƒœ ํŒŒ์ผ๋“ค์„ ์‚ญ์ œํ•˜๊ฑฐ๋‚˜ ์ดˆ๊ธฐํ™”ํ•˜์ง€ ๋งˆ์‹ญ์‹œ์˜ค.
  • ์ด๋ฏธ ์กด์žฌํ•˜๊ณ  ๋‚ด์šฉ์ด ๊ธฐ๋ก๋œ ๊ธฐ์กด stepN.md๋ฅผ ๋ฎ์–ด์“ฐ์ง€ ๋งˆ์‹ญ์‹œ์˜ค.
  • ํ”„๋กœ์ ํŠธ ์†Œ์Šค์ฝ”๋“œ๊ฐ€ ์—†๊ฑฐ๋‚˜ package.json์ด ๋ˆ„๋ฝ๋˜์—ˆ๋”๋ผ๋„ phases/ ๋””๋ ‰ํ„ฐ๋ฆฌ๊ฐ€ ์กด์žฌํ•œ๋‹ค๋ฉด ์ด๋Š” ์ง„ํ–‰ ์ค‘์ธ ํ”„๋กœ์ ํŠธ์ž…๋‹ˆ๋‹ค. ์ ˆ๋Œ€๋กœ scaffold๋ฅผ ๋‹ค์‹œ ์‹คํ–‰ํ•˜์ง€ ๋งˆ์‹ญ์‹œ์˜ค.

๐Ÿ”„ ์ƒˆ ์„ธ์…˜ ์‹œ์ž‘ ์‹œ ์˜ฌ๋ฐ”๋ฅธ ํƒ์ƒ‰ ํ”„๋กœ์„ธ์Šค

์ƒˆ๋กœ์šด ํ˜‘์—… ์„ธ์…˜์„ ์‹œ์ž‘ํ•  ๋•Œ, ๋ชจ๋“  ์—์ด์ „ํŠธ๋Š” ๋ฐ˜๋“œ์‹œ ์•„๋ž˜์˜ 7๋‹จ๊ณ„ ์ˆœ์„œ๋Œ€๋กœ ์ƒํƒœ๋ฅผ ํƒ์ƒ‰ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

  1. phases/index.json ์ฝ๊ธฐ โž” ํ”„๋กœ์ ํŠธ ์ „์ฒด ํŽ˜์ด์ฆˆ ๋ชฉ๋ก๊ณผ ์™„๋ฃŒ/์ง„ํ–‰ ์ƒํƒœ ํŒŒ์•…
  2. phases/project-manifest.json ์ฝ๊ธฐ (์กด์žฌ ์‹œ) โž” ๋ˆ„์ ๋œ ํ”„๋กœ์ ํŠธ ๋ชจ๋“ˆ ๋ฐ ์•„ํ‚คํ…์ฒ˜ ์ƒํƒœ ํŒŒ์•…
  3. ์ฒซ pending ํŽ˜์ด์ฆˆ์˜ phases/{task}/index.json ์ฝ๊ธฐ โž” ํ•ด๋‹น ํŽ˜์ด์ฆˆ์˜ ์„ธ๋ถ€ step ๋ชฉ๋ก ํŒŒ์•…
  4. ํŽ˜์ด์ฆˆ์˜ module-map.json ์ฝ๊ธฐ (์กด์žฌ ์‹œ) โž” ๋ชจ๋“ˆ ์†Œ์œ ๊ถŒ ๋ฐ ๊ณ„์•ฝ ๊ฒฝ๊ณ„ ํŒŒ์•…
  5. ์ฒซ pending step์˜ stepN.md ์ง€์‹œ์„œ ์ฝ๊ธฐ โž” ๊ตฌํ˜„ ๋ฒ”์œ„์™€ AC(Acceptance Criteria) ํ™•์ธ
  6. phases/{task}/index.json์—์„œ ์ง์ „ ์™„๋ฃŒ step์˜ summary ํ™•์ธ โž” (ํ•„์š” ์‹œ) ์„ธ์…˜ ๋ณต๊ตฌ๋ฅผ ์œ„ํ•œ ํžŒํŠธ ํš๋“
  7. ์‹ค์ œ ์ž‘์—… ์‹คํ–‰ ์ฐฉ์ˆ˜

๐Ÿ› ๏ธ CRITICAL: Git ๊ด€๋ฆฌ ๋ฐ .gitignore ๊ทœ์น™

ํ•˜๋„ค์Šค ํ”„๋ ˆ์ž„์›Œํฌ ํ•˜์œ„์˜ ๊ฐœ๋ณ„ ํ”„๋กœ์ ํŠธ๋“ค์€ ๊ฐ๊ฐ ๋…๋ฆฝ์ ์ธ Git ์ €์žฅ์†Œ๋กœ ๊ด€๋ฆฌ๋ฉ๋‹ˆ๋‹ค. ์ƒํƒœ ์†์ƒ๊ณผ ๋ฌด๋ถ„๋ณ„ํ•œ ํŒŒ์ผ ์ถ”์ ์„ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•ด ์—„๊ฒฉํ•œ Git ๊ทœ์น™์„ ์ ์šฉํ•ฉ๋‹ˆ๋‹ค.

Important

1. git init์€ ๋‹จ ํ•œ ๋ฒˆ๋งŒ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.

  • git init์€ ํ”„๋กœ์ ํŠธ ์ตœ์ดˆ scaffold step ์‹œ์ ์— ๋”ฑ 1ํšŒ๋งŒ ์‹คํ–‰๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
  • ๋””๋ ‰ํ„ฐ๋ฆฌ ๋‚ด์— .git ๋””๋ ‰ํ„ฐ๋ฆฌ๊ฐ€ ์ด๋ฏธ ์กด์žฌํ•œ๋‹ค๋ฉด ์–ด๋– ํ•œ ๊ฒฝ์šฐ์—๋„ git init์„ ์žฌ์‹คํ–‰ํ•ด์„œ๋Š” ์•ˆ ๋ฉ๋‹ˆ๋‹ค.

2. ์ฒซ git add ์ „์— ๋ฐ˜๋“œ์‹œ .gitignore๋ฅผ ์ž‘์„ฑํ•ฉ๋‹ˆ๋‹ค.

  • .gitignore ํŒŒ์ผ์ด ๊ตฌ์„ฑ๋˜์ง€ ์•Š์€ ์ƒํƒœ์—์„œ git add . ๋˜๋Š” git add -A๋ฅผ ์‹คํ–‰ํ•˜๋Š” ๊ฒƒ์€ ์ ˆ๋Œ€ ๊ธˆ์ง€๋ฉ๋‹ˆ๋‹ค.
  • ๊ธฐ์ˆ  ์Šคํƒ์— ๋งž์ถฐ ์•„๋ž˜์˜ ๊ธฐ๋ณธ ํ…œํ”Œ๋ฆฟ ์š”์†Œ๋ฅผ ํ•„์ˆ˜๋กœ ํฌํ•จํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค:
    # ์˜์กด์„ฑ ๋ฐ ๋Ÿฐํƒ€์ž„
    node_modules/
    .venv/
    __pycache__/
    *.pyc
    
    # ๋นŒ๋“œ ๋ฐ ์ปดํŒŒ์ผ ์‚ฐ์ถœ๋ฌผ
    dist/
    build/
    *.tsbuildinfo
    
    # ํ™˜๊ฒฝ ๋ณ€์ˆ˜ ๋ฐ ์„ค์ •
    .env
    .env.local
    .env.*.local
    .vscode/
    .idea/
    .DS_Store
    

๐Ÿ“ฆ Step ๋‹จ์œ„ ์ปค๋ฐ‹ ์ •์ฑ…

  • ์ปค๋ฐ‹์€ ํŽ˜์ด์ฆˆ ๋‹จ์œ„๊ฐ€ ์•„๋‹ˆ๋ผ Step ๋‹จ์œ„๋กœ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.
  • ์ปค๋ฐ‹ ์œ„์น˜: ๋Œ€์ƒ ํ”„๋กœ์ ํŠธ ๋ฃจํŠธ์˜ Git ์ €์žฅ์†Œ์—์„œ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.
  • ์ปค๋ฐ‹ ์‹œ์ : ํ•ด๋‹น Step์˜ AC๋ฅผ ๋ชจ๋‘ ๋งŒ์กฑํ•˜๊ณ  ๊ฒ€์ฆ์„ ํ†ต๊ณผํ•œ ์งํ›„.
  • ์ปค๋ฐ‹ ๋ฉ”์‹œ์ง€ ๊ทœ๊ฒฉ (Conventional Commits):
    feat({project}/step{N}): {step-name} โ€” {ํ•œ ์ค„ ์š”์•ฝ}
    
    (์˜ˆ์‹œ: feat(debate/step0): project-setup โ€” package skeleton)

๐Ÿ Phase ์™„๋ฃŒ ๋ฐ ๋งˆ๊ฐ(Closure) ํ”„๋กœ์„ธ์Šค

ํŠน์ • ํŽ˜์ด์ฆˆ์˜ ๋งˆ์ง€๋ง‰ Step์ด completed๋กœ ์ „ํ™˜๋˜๋ฉด, ์ฆ‰์‹œ ์•„๋ž˜์˜ ํ”„๋กœ์„ธ์Šค๋ฅผ ํ†ตํ•ด ํŽ˜์ด์ฆˆ๋ฅผ ๊ณต์‹ ๋งˆ๊ฐํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

  1. ์ƒ์œ„ ํŽ˜์ด์ฆˆ ์ƒํƒœ ๊ฐฑ์‹ : phases/index.json์—์„œ ์™„๋ฃŒ๋œ ํ•ด๋‹น ํŽ˜์ด์ฆˆ์˜ status๋ฅผ completed๋กœ ์ฆ‰์‹œ ์—…๋ฐ์ดํŠธํ•ฉ๋‹ˆ๋‹ค.
  2. Baseline ์•„ํ‹ฐํŒฉํŠธ ์ž‘์„ฑ: ๋‹ค์Œ ํŽ˜์ด์ฆˆ๊ฐ€ ๋ถˆํ•„์š”ํ•˜๊ฒŒ ์ด์ „ ์†Œ์Šค์ฝ”๋“œ๋ฅผ ์ „์ฒด ์žฌํƒ์ƒ‰ํ•˜์ง€ ์•Š๋„๋ก phases/baselines/{phase-dir}.json ํŒŒ์ผ์— ์•„๋ž˜ ๋‚ด์šฉ์„ ์š”์•ฝ ๋ณด๊ฐ•ํ•ฉ๋‹ˆ๋‹ค:
    • ์™„๋ฃŒ ํƒœ๊ทธ (Completion Tag)
    • ๋ชจ๋“ˆ ๋ชฉ๋ก ๋ฐ Public Surface / Contracts
    • ๊ณต์œ  ๊ณ„์•ฝ ๋ฐ API ๋ผ์šฐํŠธ ์ •๋ณด
    • ์™ธ๋ถ€ ์—ฐ๋™ ํฌ์ธํŠธ (Integration Points) ๋ฐ ์•Œ๋ ค์ง„ ์ด์Šˆ (Known Issues)
  3. Git ํƒœ๊น… ์™„๋ฃŒ: ๋งˆ์ง€๋ง‰ step ์ปค๋ฐ‹์ด ์™„๋ฃŒ๋˜๋ฉด ํ”„๋กœ์ ํŠธ ์ €์žฅ์†Œ์— ๋ฆด๋ฆฌ์ฆˆ ํƒœ๊ทธ๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค:
    git tag {project}-phase{N}-done
    # ์˜ˆ์‹œ: git tag debate-phase0-done

๐Ÿ“š ๋ฌธ์„œ ์šฐ์„ ์ˆœ์œ„ (Document Priority)

๋ชจ๋“  AI ์—์ด์ „ํŠธ๋Š” ์ž‘์—…์„ ์‹œ์ž‘ํ•  ๋•Œ ๋‹ค์Œ์˜ ๋ฌธ์„œ ์ฝ๊ธฐ ์ˆœ์„œ๋ฅผ ์—„๊ฒฉํžˆ ์ค€์ˆ˜ํ•ฉ๋‹ˆ๋‹ค.

graph TD
    A[1. AGENTS.md - Canonical Rules] --> B[2. skills/harness/framework/docs/HARNESS.md - Workflow Specification]
    B --> C[3. skills/harness/framework/docs/ARCHITECTURE.md - Design Map]
    C --> D[4. skills/harness/framework/docs/ADR.md - Technical Decisions]
    D --> E[5. phases/project-manifest.json - Manifest Status]
    E --> F[6. phases/{task}/module-map.json - Module Contracts]
    F --> G[7. phases/{task}/stepN.md - Step Instruction]
Loading

Note

์ €์žฅ์†Œ์˜ ์ ˆ๋Œ€์ ์ธ Canonical ํ‘œ์ค€ ๊ทœ์น™์€ **AGENTS.md**์— ๋ณด์กด๋˜๋ฉฐ, ํˆด๋ณ„ ์ „์šฉ ์„ค์ • ํŒŒ์ผ์€ ๋ณด์กฐ ์ˆ˜๋‹จ์œผ๋กœ๋งŒ ๊ธฐ๋Šฅํ•ฉ๋‹ˆ๋‹ค. phases/* ํ•ญ๋ชฉ์€ ํ”„๋ ˆ์ž„์›Œํฌ๊ฐ€ ์•„๋‹ˆ๋ผ ๋Œ€์ƒ ํ”„๋กœ์ ํŠธ ๋ฃจํŠธ๋ฅผ ๊ธฐ์ค€์œผ๋กœ ์ฝ์Šต๋‹ˆ๋‹ค.


๐Ÿค– ์—์ด์ „ํŠธ๋ณ„ ์‚ฌ์šฉ ๊ฐ€์ด๋“œ

1. Antigravity (IDE ํ†ตํ•ฉ ์—์ด์ „ํŠธ)

Antigravity๋Š” IDE ๋‚ด๋ถ€์— ๊ณ ๋„๋กœ ์œตํ•ฉ๋œ ์—์ด์ „ํŠธ๋กœ, GEMINI.md์™€ .agy/commands/*.toml์„ ๊ธฐ์ค€์œผ๋กœ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค. ์ž์„ธํ•œ ๋‚ด์šฉ์€ GEMINI.md ์ฐธ๊ณ .

  • ์‚ฌ์šฉ๋ฒ•: ์ฑ„ํŒ… ์ฐฝ์— ์•„๋ž˜ ๋ช…๋ น์–ด๋‚˜ ์ž์—ฐ์–ด ํ”„๋กฌํ”„ํŠธ๋ฅผ ์ž์œ ๋กญ๊ฒŒ ์ž…๋ ฅํ•˜์—ฌ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.
    /harness
    /review
    /loop
    
    ์ž์—ฐ์–ด ์ž…๋ ฅ ์˜ˆ์‹œ: harness ์›Œํฌํ”Œ๋กœ์šฐ ์ง„ํ–‰ํ•ด์ค˜, ํ˜„์žฌ ์ฝ”๋“œ์˜ ๋ณ€๊ฒฝ์‚ฌํ•ญ ๋ฆฌ๋ทฐ ์ˆ˜ํ–‰ํ•ด์ค˜

2. Claude Code

  • ํ”„๋กœ์ ํŠธ ๊ทœ์น™: CLAUDE.md
  • ํ”„๋กœ์ ํŠธ ๋ช…๋ น: .claude/commands/harness.md, review.md, loop.md
  • ์‹คํ–‰ ๋ฐฉ๋ฒ•: /harness, /review ๋˜๋Š” /loop ์ž…๋ ฅ

3. Kimi Code CLI

  • ํ”„๋กœ์ ํŠธ ๊ทœ์น™: AGENTS.md
  • ์‹คํ–‰ ๋ฐฉ๋ฒ•: /skill:harness ๋˜๋Š” /skill:review ์ž…๋ ฅ

4. Codex

  • ๋ณ„๋„์˜ ์Šฌ๋ž˜์‹œ ์ปค๋งจ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š์œผ๋ฉฐ, AGENTS.md๋ฅผ ํ‘œ์ค€์œผ๋กœ ์‚ผ์•„ ์ž์—ฐ์–ด ๋ช…๋ น์œผ๋กœ ์›Œํฌํ”Œ๋กœ์šฐ๋ฅผ ์š”์ฒญํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ์‹œ: ํ˜„์žฌ phases ์ƒํƒœ๋ฅผ ์ฝ๊ณ  ์ฒซ pending step๋ถ€ํ„ฐ ์ง„ํ–‰ํ•ด์ค˜

๐Ÿš€ ๋น ๋ฅธ ์‹œ์ž‘ ๋ฐ ์Šคํฌ๋ฆฝํŠธ ๋„๊ตฌ ๋ ˆํผ๋Ÿฐ์Šค

์•„๋ž˜ ์Šคํฌ๋ฆฝํŠธ๋Š” ์„ค์น˜๋œ ์Šคํ‚ฌ ๊ธฐ์ค€ ~/.claude/skills/harness/framework/scripts/(๋˜๋Š” ์ด ํด๋ก ์˜ skills/harness/framework/scripts/)์— ์žˆ์œผ๋ฉฐ, ํ•ญ์ƒ --root {๋Œ€์ƒ ํ”„๋กœ์ ํŠธ ๊ฒฝ๋กœ}๋กœ ๋Œ€์ƒ ํ”„๋กœ์ ํŠธ๋ฅผ ๊ฐ€๋ฆฌ์ผœ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.

1. ์ƒˆ ํŽ˜์ด์ฆˆ ๋ผˆ๋Œ€ ์ƒ์„ฑ (scaffold_phase.py)

์ƒˆ๋กœ์šด ์ž‘์—… ํŽ˜์ด์ฆˆ๋ฅผ ์„ค๊ณ„ํ•˜๊ณ  ํ‘œ์ค€ ์Šคํ… ํŒŒ์ผ ๊ตฌ์กฐ๋ฅผ ์ž๋™ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.

python3 ~/.claude/skills/harness/framework/scripts/scaffold_phase.py {phase-dir} --project {name} --steps step1 step2 --root {๋Œ€์ƒ ํ”„๋กœ์ ํŠธ ๊ฒฝ๋กœ}

2. ํŽ˜์ด์ฆˆ ๋ฐ์ดํ„ฐ ์ •ํ•ฉ์„ฑ ๊ฒ€์ฆ (validate_phase.py)

์ž‘์„ฑ๋˜๊ฑฐ๋‚˜ ์ˆ˜์ •๋œ ํŽ˜์ด์ฆˆ ์ธ๋ฑ์Šค, ๋ชจ๋“ˆ ๋งต, ์Šคํ… ๋ฌธ์„œ ์Šคํ‚ค๋งˆ์˜ ๋ฌด๊ฒฐ์„ฑ์„ ๊ฒ€์ฆํ•ฉ๋‹ˆ๋‹ค.

python3 ~/.claude/skills/harness/framework/scripts/validate_phase.py {phase-dir} --root {๋Œ€์ƒ ํ”„๋กœ์ ํŠธ ๊ฒฝ๋กœ}

์ด ์ €์žฅ์†Œ๋Š” ์ธํ„ฐ๋ž™ํ‹ฐ๋ธŒ ์—์ด์ „ํŠธ ์„ธ์…˜์—์„œ๋งŒ ๋™์ž‘ํ•ฉ๋‹ˆ๋‹ค โ€” ๋ณ„๋„ ํ—ค๋“œ๋ฆฌ์Šค ๋ฐฐ์น˜ ์‹คํ–‰๊ธฐ๋‚˜ ๋ฐฑ์—”๋“œ CLI ์ถ”์ƒํ™”๋Š” ์—†์Šต๋‹ˆ๋‹ค.


๐Ÿ“ ๋””๋ ‰ํ„ฐ๋ฆฌ ๊ตฌ์กฐ ๊ฐ€์ด๋“œ

~/.agents/skills/harness/     # ์ด ์ €์žฅ์†Œ๋ฅผ cloneํ•˜๋Š” ๊ถŒ์žฅ ์œ„์น˜ (ํ•œ ๊ณณ์—๋งŒ clone)
โ”œโ”€โ”€ AGENTS.md                # ์ „์‚ฌ ๊ณตํ†ต ์ฝ”๋”ฉ ์—์ด์ „ํŠธ ๊ทœ์น™ (Canonical Rules)
โ”œโ”€โ”€ CLAUDE.md                # Claude Code Supplement
โ”œโ”€โ”€ GEMINI.md                # Gemini / Antigravity Supplement
โ”œโ”€โ”€ install.sh               # ~/.claude, ~/.kimi, ~/.codex ์˜ skills/harness ๋ฅผ
โ”‚                             # ์ด ํด๋ก ์˜ skills/harness/ ๋กœ symlink
โ””โ”€โ”€ skills/harness/
    โ”œโ”€โ”€ SKILL.md              # ์Šคํ‚ฌ ์ง„์ž…์  (Claude Code / Kimi ๊ณต์šฉ)
    โ””โ”€โ”€ framework/             # ๋ฒˆ๋“ค ํ”„๋ ˆ์ž„์›Œํฌ โ€” ์‹ค์ œ ๋ฐฐํฌ๋˜๋Š” ์›๋ณธ
        โ”œโ”€โ”€ docs/               # ํ”„๋ ˆ์ž„์›Œํฌ ํ‘œ์ค€ ์ง€์นจ ๋ฌธ์„œ
        โ”‚   โ”œโ”€โ”€ HARNESS.md      # ํ•˜๋„ค์Šค ์Šคํ… ๋ฐ ์„ธ์…˜ ๋ผ์ดํ”„์‚ฌ์ดํด ๋ช…์„ธ
        โ”‚   โ”œโ”€โ”€ LOOP.md         # ์ž์œจ ๊ฐœ๋ฐœ ๋ฃจํ”„(Planโ†’Executeโ†’Evaluate) ์›Œํฌํ”Œ๋กœ์šฐ
        โ”‚   โ”œโ”€โ”€ REVIEW.md       # ์ฝ”๋“œ ํ’ˆ์งˆ ๋ฐ ์•„ํ‚คํ…์ฒ˜ ๋ฆฌ๋ทฐ ํ‘œ์ค€ ๊ฐ€์ด๋“œ
        โ”‚   โ”œโ”€โ”€ ARCHITECTURE.md # ํ”„๋ ˆ์ž„์›Œํฌ ๋ฐ ๋ฐ์ดํ„ฐ ํ๋ฆ„ ์•„ํ‚คํ…์ฒ˜
        โ”‚   โ””โ”€โ”€ ADR.md          # ์•„ํ‚คํ…์ฒ˜ ์ฃผ์š” ๊ฒฐ์ • ์ด๋ ฅ
        โ”œโ”€โ”€ scripts/            # phase/step ์Šค์บํด๋“œยท๊ฒ€์ฆ ์œ ํ‹ธ๋ฆฌํ‹ฐ (scaffold_phase.py, validate_phase.py ๋“ฑ)
        โ””โ”€โ”€ templates/          # scaffold ํ‘œ์ค€ ๋งˆํฌ๋‹ค์šด ํ…œํ”Œ๋ฆฟ ์†Œ์Šค

๋Œ€์ƒ-ํ”„๋กœ์ ํŠธ/                 # ํ•˜๋„ค์Šค ์Šคํ‚ฌ๋กœ ์ž‘์—…ํ•˜๋Š” ์‹ค์ œ ํ”„๋กœ์ ํŠธ (๋ณ„๋„ ๋””๋ ‰ํ„ฐ๋ฆฌ)
โ””โ”€โ”€ phases/                  # ํ”„๋กœ์ ํŠธ ์ง„ํ–‰ ์ƒํƒœ๋ฅผ ๊ธฐ๋กํ•˜๋Š” SSOT
    โ”œโ”€โ”€ index.json           # ํŽ˜์ด์ฆˆ ๋ชฉ๋ก ๋ฐ ์ƒํƒœ
    โ”œโ”€โ”€ project-manifest.json # ๋ˆ„์  ํ”„๋กœ์ ํŠธ ๋งค๋‹ˆํŽ˜์ŠคํŠธ
    โ”œโ”€โ”€ baselines/           # ์™„๋ฃŒ ํŽ˜์ด์ฆˆ ์•„ํ‹ฐํŒฉํŠธ
    โ””โ”€โ”€ {phase-dir}/
        โ”œโ”€โ”€ index.json       # ์Šคํ… ๋ชฉ๋ก ๋ฐ ์ƒํƒœ
        โ”œโ”€โ”€ module-map.json  # ๋ชจ๋“ˆ ๊ฒฝ๊ณ„, ์†Œ์œ  step, contracts
        โ””โ”€โ”€ stepN.md         # ๊ฐœ๋ณ„ ์Šคํ… ์ˆ˜ํ–‰ ์ง€์‹œ์„œ

๐Ÿ’ก ๊ถŒ์žฅ ํ˜‘์—… ๋ฐ ์šด์˜ ๊ฐ€์ด๋“œ

  • ์Šคํ… ๋ฒ”์œ„ ๊ฒฉ๋ฆฌ: ํ•˜๋‚˜์˜ Step์€ ํ•ญ์ƒ ๋ช…ํ™•ํ•˜๊ณ  ์ข์€ ๋‹จ์ผ ์ฑ…์ž„ ๋ฒ”์œ„๋ฅผ ์œ ์ง€ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
  • ๊ตฌ์กฐํ™”๋œ ํ•ธ๋“œ์˜คํ”„: ์„ธ์…˜์ด ์ค‘๋‹จ๋˜๊ฑฐ๋‚˜ ์™„๋ฃŒ๋  ๋•Œ๋Š” phases/{phase-dir}/index.json์˜ status๋ฅผ ๊ฐฑ์‹ ํ•˜์—ฌ, ํ›„์† ์—์ด์ „ํŠธ๊ฐ€ ์™„๋ฒฝํ•˜๊ฒŒ ๋ฐ”ํ†ต์„ ์ด์–ด๋ฐ›์„ ์ˆ˜ ์žˆ๊ฒŒ ํ•ฉ๋‹ˆ๋‹ค.
  • ๋Œ€ํ™” ๋งฅ๋ฝ ์˜์กด ๊ธˆ์ง€: ์ด์ „ ์„ธ์…˜์˜ ๋ฉ”์‹ ์ € ๋Œ€ํ™” ์ด๋ ฅ์— ์˜์กดํ•˜์ง€ ๋งˆ์‹ญ์‹œ์˜ค. ์˜ค์ง ํŒŒ์ผ ์ƒํƒœ(index.json, module-map.json, baseline, contract)๋งŒ์ด ์œ ์ผํ•œ ์ง„์‹ค์ž…๋‹ˆ๋‹ค.

About

Loop engineering + Harness framework

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages