๊นจ์•Œ ๊ฐœ๋… ๐Ÿ“‘/Agentic Programming

Spec Kit - ๊ฐœ์š”

interfacer_han 2026. 7. 17. 18:39

#1 ๋ช…์„ธ ์ฃผ๋„ ๊ฐœ๋ฐœ(Spec-Driven Development)

Specification-Driven Development

= Spec-Driven Development

= SDD

= ๋ช…์„ธ ์ฃผ๋„ ๊ฐœ๋ฐœ

= ๋ช…์„ธ ๊ธฐ๋ฐ˜ ๊ฐœ๋ฐœ

 

#1-1 ๋ช…์„ธ๋ž€ ๋ฌด์—‡์ธ๊ฐ€

๋‹ค์‹œ ๋งํ•ด, ์˜๋ฏธ๊ถŒ ๊ฐœ๋ฐœ์ž๋“ค์ด ๋งํ•˜๋Š” Spec์ด๋ž€ ๋ฌด์—‡์ธ๊ฐ€?

๋ช…์„ธ = Spec = ๋Œ€์ƒ์ด ์ถฉ์กฑํ•ด์•ผ ํ•  ๊ฒƒ์„ ์ •์˜ํ•œ ๋ฌธ์„œ ⊃ API ๊ทœ์น™, ์š”๊ตฌ์‚ฌํ•ญ(requirements), ์ธํ„ฐํŽ˜์ด์Šค์˜ ์ œ์•ฝ, ํ•จ์ˆ˜์˜ ๊ธฐ๋Šฅ, ...

'์ถฉ์กฑ'์ด๋ผ ํ•จ์€, Whatใ†Whyใ†How๋ฅผ ํฌ๊ด„ํ•œ๋‹ค. ๋‹ค์‹œ ๋งํ•ด, ๋ฌด์—‡์„ใ†์™œใ†์–ด๋–ป๊ฒŒ ์ถฉ์กฑํ• ์ง€๋ฅผ ์ •์˜ํ•œ ๋ฌธ์„œ๊ฐ€ ๋ฐ”๋กœ '๋ช…์„ธ'๋‹ค.

 

#1-2 ๋ช…์„ธ ์ฃผ๋„ ๊ฐœ๋ฐœ์˜ ์˜ฌ๋ฐ”๋ฅธ ์ •์˜

'๋ช…์„ธ'์˜ ์ •์˜๋ฅผ ์•Œ์•˜์œผ๋‹ˆ, ์ด์ œ '๋ช…์„ธ ์ฃผ๋„ ๊ฐœ๋ฐœ'์˜ ๊ฐœ๋…๋„ ๋ˆ„์›Œ์„œ ๋–ก ๋จน๋“ฏ ์Šต๋“ํ•œ ๊ฒƒ์ผ๊นŒ?

๊ตฌํ˜„ ์ „์— Spec(์˜๋„, ์ œ์•ฝ, ...)์„ ๋ช…์‹œ์  ์‚ฐ์ถœ๋ฌผ๋กœ ๋งŒ๋“ค๊ณ , ์ด ์‚ฐ์ถœ๋ฌผ์— ์˜ํ•ด ์ดํ›„์˜ ๊ฒฐ๊ณผ๊ฐ€ ๋„์ถœใ†ํ†ต์ œ๋˜๋„๋ก ๋งŒ๋“œ๋Š” ๊ฐœ๋ฐœ ๋ฐฉ์‹

'๋ช…์„ธ'์˜ ๊ฐœ๋…๋งŒ ์ตํžˆ๊ณ  '๋ช…์„ธ ์ฃผ๋„ ๊ฐœ๋ฐœ'์ด๋ผ๋Š” ๋‹จ์–ด๋ฅผ ๋ณด๋ฉด, ์ž์นซ "Spec์„ ๊ผผ๊ผผํ•˜๊ฒŒ ๋ฏธ๋ฆฌ ๊ธฐ๋ก(Spec-first)ํ•ด ๋†“์ž๋Š” ๊ฐœ๋ฐœ๋ก ์ด๊ตฌ๋‚˜"๋ผ๊ณ  ์ƒ๊ฐํ•˜๊ธฐ ์‹ญ์ƒ์ด๋‹ค. "์ž ๊น... Spec-first๋Š” ์ƒˆ๋กœ์šด ํŒจ๋Ÿฌ๋‹ค์ž„์ด ์•„๋‹ˆ๋ผ, ์›๋ž˜๋ถ€ํ„ฐ ๊ฐœ๋ฐœ์—์„œ์˜ ์ง„๋ฆฌใ†์ •์„์ด์ž–์•„?" ์ด ์ง€์ ์—์„œ ํ˜ผ๋ˆ์ด ์ƒ๊ธด๋‹ค.

Spec-first๊ฐ€ ์•„๋‹ˆ๋ผ Spec-driven์ด๋‹ค. ๋ชจ๋“  Spec-driven์€ Spec-first์ง€๋งŒ, ๋ฐ˜๋Œ€๋กœ ๋ชจ๋“  Spec-first๊ฐ€ Spec-driven์ธ ๊ฒƒ์€ ์•„๋‹ˆ๋‹ค. ์ฝ”๋“œ๊ฐ€ ์•„๋‹ˆ๋ผ ๋ช…์„ธ๊ฐ€ ์›๋ณธ์ด๊ณ , ์ฝ”๋“œ๋Š” ๊ทธ ๋ช…์„ธ์˜ ๊ตฌํ˜„๋ฌผ์ด๋ผ๋Š” ๊ด€์ ์œผ๋กœ ๋‹ค์‹œ ๋ณด์•„์•ผ ํ•œ๋‹ค. ๊ตฌํ˜„์˜ ๊ฒฐ๊ณผ๊ฐ€ ์ž˜๋ชป๋˜์—ˆ์„ ๋•Œ, ์ฝ”๋“œ๋ณด๋‹ค ๋ช…์„ธ๋ฅผ ๊ธฐ์ค€์œผ๋กœ ํŒ๋‹จํ•˜๊ฒŒ๋” ๋งŒ๋“œ๋Š” ๊ฒŒ ๋ช…์„ธ ์ฃผ๋„ ๊ฐœ๋ฐœ์ด๋‹ค. ๋ช…์„ธ๊ฐ€ ๊ตฌํ˜„์„ ์•ˆ๋‚ดํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ, (์—์ด์ „ํ‹ฑ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๋•์—) ๊ตฌํ˜„์„ ์ง์ ‘ ์ƒ์„ฑํ•˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

 

#2 Spec Kit

#2-1 What

Spec Kit = AI ์ฝ”๋”ฉ ์—์ด์ „ํŠธ๊ฐ€ ์š”๊ตฌ์‚ฌํ•ญ ์ •๋ฆฌ, ๊ธฐ์ˆ  ์„ค๊ณ„, ์ž‘์—… ๋ถ„ํ•ด, ๊ตฌํ˜„ ์ˆœ์„œ๋กœ ๊ฐœ๋ฐœํ•˜๋„๋ก ๋งŒ๋“  ์ž‘์—… ์ ˆ์ฐจ์™€ ์ง€์นจ์˜ ๋ฌถ์Œ (Spec์˜ ๋ฌถ์Œ)

(์‚ฌ์‹ค ๋‹น์—ฐํ•œ ๊ฒƒ์ด์ง€๋งŒ) ์งš๊ณ  ๋„˜์–ด๊ฐ€์•ผ ํ•˜๋Š” ๊ฒŒ ์žˆ๋‹ค. Spec Kit์€ ๋ช…์„ธ ์ฃผ๋„ ๊ฐœ๋ฐœ์ด์ง€๋งŒ, ๋ฐ˜๋Œ€๋กœ ๋ช…์„ธ ์ฃผ๋„ ๊ฐœ๋ฐœ์ด Spec Kit์€ ์•„๋‹ˆ๋ผ๋Š” ๊ฒƒ์ด๋‹ค. ๋งˆ์น˜, Git์ด ๋ฒ„์ „ ๊ด€๋ฆฌ ๊ทธ ์ž์ฒด๋Š” ์•„๋‹ˆ๋ฉฐ ๋ฒ„์ „ ๊ด€๋ฆฌ๋ฅผ ๊ตฌํ˜„ํ•œ ๋„๊ตฌ์ธ ๊ฒƒ๊ณผ ๋น„์Šทํ•œ ๊ด€๊ณ„๋‹ค.

  • ๋ช…์„ธ ์ฃผ๋„ ๊ฐœ๋ฐœ ๊ทธ ์ž์ฒด๊ฐ€ ์•„๋‹˜
  • GPT, Claude, Gemini ๊ฐ™์€ ์–ธ์–ด ๋ชจ๋ธ์ด ์•„๋‹˜
  • Claude Code, Codex, GitHub Copilot ๊ฐ™์€ AI ์ฝ”๋”ฉ ์—์ด์ „ํŠธ๋„ ์•„๋‹˜
  • JavaScript, Kotlin ๊ฐ™์€ ์–ธ์–ด๋„ ์•„๋‹ˆ๊ณ , React๋‚˜ Spring ๊ฐ™์€ ์ฝ”๋“œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋„ ์•„๋‹˜

 

๋ง‰๋ง๋กœ, '๋ฌธ์„œ ๋ฉ์–ด๋ฆฌ'๋ผ๊ณ  ํ•ด๋„ ํฐ ๊ณผ์žฅ์€ ์•„๋‹ˆ๋‹ค. 'ํ”„๋กœ๊ทธ๋žจ'์ด๋ผ๊ณ ๋Š” ๋ถ€๋ฅผ ์ˆ˜ ์žˆ๊ฒ ๋‹ค. ์™œ๋ƒํ•˜๋ฉด '๋ฌธ์„œ ๋ฉ์–ด๋ฆฌ' ํŒŒ์ผ ์ƒ์„ฑ์„ ํ•ด์ฃผ๋Š” Specify CLI๋ผ๋Š” ์ „์šฉ ํ”„๋กœ๊ทธ๋žจ๊นŒ์ง€ ํฌํ•จํ•ด์„œ Spec Kit์ด๋ผ๊ณ  ๋ถ€๋ฅด๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

 

#2-2 How

์„ค์น˜

# PowerShell์— ์ „๋ถ€ ์ž…๋ ฅ
winget install --id=astral-sh.uv -e # uv
uv tool install specify-cli --from git+https://github.com/github/spec-kit.git@v0.12.17 # Specify CLI

uv๋Š” Specify CLI ์„ค์น˜๋ฅผ ์œ„ํ•ด ํ•„์š”ํ•˜๋‹ค. 2026๋…„ 7์›” 17์ผ ๊ธฐ์ค€ ์ตœ์‹  ๋ฒ„์ „์€ v0.12.17์ด๋ฉฐ, ์ƒˆ ๋ฒ„์ „์ด ๋‚˜์˜จ๋‹ค๋ฉด ๊ทธ ๋ฒ„์ „์„ ์‚ฌ์šฉํ•˜๋„๋ก ํ•˜์ž (์ƒˆ ๋ฒ„์ „ ํ™•์ธํ•˜๊ธฐ: Spec Kit์˜ Release ํŽ˜์ด์ง€).

 

์‚ฌ์šฉ
Spec Kit์€ ์•ž์„œ ๋งํ•œ ๋Œ€๋กœ ๋ฌธ์„œ ๋ฉ์–ด๋ฆฌ์— ๋ถˆ๊ณผํ•˜๋‹ค. ์ด์ œ Specify CLI๋กœ Spec Kit์„ ๋ถˆ๋Ÿฌ์˜ค๊ธฐ๋งŒ ํ•˜๋ฉด ๋œ๋‹ค.

# PowerShell์— ์…‹ ์ค‘ ํ•˜๋‚˜๋งŒ ์ž…๋ ฅ
specify init ํ”„๋กœ์ ํŠธ-๋ฃจํŠธ-ํด๋”-๊ฒฝ๋กœ --integration claude
specify init . --integration claude # ํ”„๋กœ์ ํŠธ ๋ฃจํŠธ ํด๋”์—์„œ PowerShell์„ ์‹คํ–‰์‹œ์ผฐ์„ ๋•Œ ๋น„๊ต์  ๊ฐ„๋‹จํ•œ ๋ช…๋ น์–ด๋ฅผ ์“ธ ์ˆ˜ ์žˆ๋‹ค.
specify init ํ”„๋กœ์ ํŠธ-๋ฃจํŠธ-ํด๋”-๊ฒฝ๋กœ --integration codex # Claude Code ๋Œ€์‹  Codex๋ฅผ ์“ด๋‹ค๋ฉด

 

#3 ๋ถ„์„ - ๋””๋ ‰ํ† ๋ฆฌ

# .specify/memory/...

ํ”„๋กœ์ ํŠธ๊ฐ€ ๋ฐ˜๋“œ์‹œ ๋”ฐ๋ผ์•ผ ํ•˜๋Š” ์›์น™์„ ๋‹ด๋Š”๋‹ค. ํ—Œ๋ฒ• ๊ฐ™์€ ๊ฐœ๋…์ด๋ผ๊ณ  ๋ณด๋ฉด ๋œ๋‹ค.

 

#3-1 .specify/templates/...

plan-template.md
spec-template.md
tasks-template.md
checklist-template.md
...

Spec์„ ๋‹ด์„ ๋ฌธ์„œ๋“ค์˜ ํ…œํ”Œ๋ฆฟ์ด๋‹ค. Spec Kit์„ ๋งŒ๋“  ์ œ์ž‘์ž๊ฐ€ ๋ณด๊ธฐ์—, ๊ฐ€์žฅ ๋ฒ”์šฉ์ ์ด๋ฉฐ ๊น”๋”ํ•œ ๋ชฉ์ฐจ๋งŒ ์žˆ๋Š” ํ…œํ”Œ๋ฆฟ์ผ ํ…Œ๋‹ค. AI ์—์ด์ „ํŠธ๋Š” ์ด ํ…œํ”Œ๋ฆฟ์— ๊ธฐ๋ฐ˜ํ•ด ์‹ค์ œ ํ”„๋กœ์ ํŠธ์˜ ๋ช…์„ธ๋ฅผ ๋งŒ๋“ค์–ด ๋‚˜๊ฐˆ ๊ฒƒ์ด๋‹ค.

 

#3-2 .claude/commands/...

AI์—๊ฒŒ ๋‚ด๋ฆด ์ˆ˜ ์žˆ๋Š” ๋ช…๋ น ๋ชฉ๋ก์ด ๋“ค์–ด์žˆ๋‹ค. Skill์ด๋ž‘ ๋น„์Šทํ•˜๋‹ค. Spec Kit ์ธก์—์„œ ์ฒ˜์Œ ๋งŒ๋“ค์–ด์ค€ ๋ช…๋ น์–ด ๋ชฉ๋ก์„ ๊ทธ๋Œ€๋กœ ์‚ฌ์šฉํ•˜๋ฉด ๋˜๊ณ , ์šฐ๋ฆฌ๊ฐ€ ์ถ”๊ฐ€๋กœ ์ปค์Šคํ…€ํ•ด์„œ ์‚ฌ์šฉํ•  ์ผ์€ ๊ฑฐ์˜ ์—†๋‹ค๊ณ  ๋ณด๋ฉด ๋œ๋‹ค. ์‚ฌ์šฉํ•  AI ์—์ด์ „ํŠธ๊ฐ€ Claude Code๊ฐ€ ์•„๋‹ˆ๋ผ Codex๋ผ๋ฉด, .codex/prompts/... ๋””๋ ‰ํ† ๋ฆฌ๊ฐ€ ๋Œ€์‹ ํ•œ๋‹ค.

 

#3-3 .specify/scripts/...

.claude/commands/...์—์„œ ์ˆ˜ํ–‰ํ•  ๋ช…๋ น์„ ์ž˜ ์ˆ˜ํ–‰ํ•˜๊ธฐ ์œ„ํ•ด, ์„œ๋ธŒ ๋ช…๋ น์„ ์ •์˜ํ•ด ๋†“์€ ๊ณณ์ด๋‹ค. Tool์— ๊ฐ€๊นŒ์šด ์—ญํ• ์ด๋‹ค. ๊ฐ€๋ น AI ์—์ด์ „ํŠธ๊ฐ€ ์‚ฌ์šฉ์ž๊ฐ€ ๋‚ด๋ฆฐ ์–ด๋–ค ๋ช…๋ น์„ ์ˆ˜ํ–‰ํ•˜๋ฉด์„œ, ์ฐธ๊ณ ํ•  ํŒŒ์ผ ์œ„์น˜๋‚˜ ํŠน์ • ์ปค๋ฐ‹์ด ๋‹ด๊ธด ๋ธŒ๋žœ์น˜ ์ด๋ฆ„ ๋“ฑ์„ ์ œ๋ฉ‹๋Œ€๋กœ ํŒ๋‹จํ•˜์ง€ ์•Š๋„๋ก ๊ฐ•์ œํ•ด ์ฃผ๋Š” ์‹์ด๋‹ค. ์ด ๋””๋ ‰ํ† ๋ฆฌ๋Š” .claude/commands/... ๋ณด๋‹ค ๋”๋”์šฑ ์šฐ๋ฆฌ๊ฐ€ ๊ฑด๋“ค ์ผ์ด ์—†๋‹ค.

 

#3-4 specs/...

specs/001-user-login/...
specs/002-database-migration/...
specs/003-cache-refactoring/...
specs/004-security-hardening/...
specs/005-api-rate-limit/...
...

Spec Kit์˜ ๊ฝƒ์ด๋ผ๊ณ  ํ•  ์ˆ˜ ์žˆ๋‹ค. ์ด๋ฆ„ ๊ทธ๋Œ€๋กœ ๋ช…์„ธ(Spec)๋ฅผ ๋‹ด๋Š”๋‹ค. ๋ช…์„ธ๋Š” feature ๋ณ„๋กœ ๊ตฌ๋ถ„๋œ๋‹ค. Spec Kit์—์„œ feature๋Š” ์ž‘์—… ๋‹จ์œ„, ํ•œ ๋‹จ์œ„์˜ ๊ฐœ๋ฐœ๋กœ ๋ณ€๊ฒฝํ•  ๋ฒ”์œ„ ๋”ฐ์œ„๋ฅผ ์˜๋ฏธํ•˜๋Š” ์ถ”์ƒ์  ์šฉ์–ด๋‹ค. ์–ด๋””๊นŒ์ง€๊ฐ€ feature์ธ๊ฐ€๊ฐ€ ์ •ํ•ด์ง„ ๊ฒƒ์€ ์•„๋‹ˆ๋‹ค. ๋‹ค๋งŒ ์•„์ฃผ ์ž์ž˜ํ•œ ์ˆ˜์ •์€ (์‹ค๋ฌด์ ์œผ๋กœ) feature๋ผ ํ•  ์ˆ˜ ์—†๋‹ค. '๋ณธ๊ฒฉ์ ์ธ ๊ตฌํ˜„์— ์•ž์„œ ๋ช…์„ธ๋ฅผ ํ•ด์•ผ ํ•  ์ •๋„์˜ ๋ฒ”์œ„' ์ด์ƒ์ด์–ด์•ผ feature๋ผ ํ•  ์ˆ˜ ์žˆ์„ ๊ฒƒ์ด๋‹ค.

 

#3-5 specs/example_feature_name/...

spec.md
plan.md
tasks.md
...

์—ฌ๋Ÿฌ ๋ช…์„ธ ํŒŒ์ผ์ด ๋‹ด๊ธฐ์ง€๋งŒ ๊ฐ€์žฅ ํ•ต์‹ฌ์ด ๋˜๋Š” 3๊ฐ€์ง€๋Š” spec.mdใ†plan.mdใ†tasks.md๋‹ค.

  • spec.md
    • ์ด ์ž‘์—… ๋‹จ์œ„์—์„œ ๋ฌด์—‡์„ ๋งŒ์กฑํ•ด์•ผ ํ•˜๋Š”์ง€ ๋ช…์‹œํ•œ๋‹ค.
    • "์‚ฌ์šฉ์ž๋Š” ์ด๋ฉ”์ผ๊ณผ ๋น„๋ฐ€๋ฒˆํ˜ธ๋กœ ๋กœ๊ทธ์ธํ•  ์ˆ˜ ์žˆ๋‹ค.", "์ž˜๋ชป๋œ ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ์ž…๋ ฅํ•˜๋ฉด ์˜ค๋ฅ˜ ๋ฉ”์‹œ์ง€๊ฐ€ ํ‘œ์‹œ๋œ๋‹ค.", "๋กœ๊ทธ์ธ์— ์„ฑ๊ณตํ•˜๋ฉด ๋Œ€์‹œ๋ณด๋“œ๋กœ ์ด๋™ํ•œ๋‹ค.", ...
  • plan.md
    • spec.md๋ฅผ ์ง„ํ–‰ํ•˜๊ธฐ ์œ„ํ•œ ๊ตฌ์กฐ, ๊ตฌํ˜„ ๋ฐฉ์‹, ๋„๊ตฌ(๊ธฐ์ˆ )๋ฅผ ๋ช…์‹œํ•œ๋‹ค.
    • "Spring Boot์™€ Spring Security๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.", "์‚ฌ์šฉ์ž ์ •๋ณด๋Š” PostgreSQL์— ์ €์žฅํ•œ๋‹ค.", "JWT ๊ธฐ๋ฐ˜ ์ธ์ฆ์„ ์‚ฌ์šฉํ•œ๋‹ค.", "ํ†ตํ•ฉ ํ…Œ์ŠคํŠธ๋Š” Testcontainers๋กœ ์ž‘์„ฑํ•œ๋‹ค.", ...
  • tasks.md
    • ์ „์ฒด ํ”„๋กœ๊ทธ๋ž˜๋ฐ์„, ์ง„ํ–‰ ์ˆœ์„œ๋ฅผ ์ง€์ผœ ์ž˜๊ฒŒ ๋ถ„ํ•ดํ•œ๋‹ค.
    • [ ] T001 User ์—”ํ‹ฐํ‹ฐ ์ถ”๊ฐ€
      [ ] T002 UserRepository ๊ตฌํ˜„
      [ ] T003 ๋กœ๊ทธ์ธ ์š”์ฒญ DTO ์ž‘์„ฑ
      [ ] T004 ์ธ์ฆ ์„œ๋น„์Šค ๊ตฌํ˜„
      [ ] T005 ๋กœ๊ทธ์ธ API ํ†ตํ•ฉ ํ…Œ์ŠคํŠธ ์ž‘์„ฑ
      ...

 

#3-6 src/...

domain/User.kt
domain/Category.kt
application/LoginService.kt
infrastructure/JwtTokenProvider.kt
presentation/LoginController.kt
...

ํ”„๋กœ๊ทธ๋žจ์˜ ์†Œ์Šค ์ฝ”๋“œ. task.md์˜ ๊ฒฐ๊ณผ๋กœ ๋งŒ๋“ค์–ด์ง„๋‹ค.

 

#3-7 tests/...

์†Œ์Šค ์ฝ”๋“œ๋ฅผ ๊ฒ€์ฆํ•˜๋Š” ํ…Œ์ŠคํŠธ ํŒŒ์ผ๋“ค์„ ๋‹ด๋Š”๋‹ค.

 

#4 ๋ถ„์„ - ๋ช…๋ น์–ด

#4-1 /speckit.constitution

์ด ๋ช…๋ น์–ด๊ฐ€ ์ฃผ๋กœ ๋‹ค๋ฃจ๋Š” ํŒŒ์ผ:
.specify/memory/constitution.md
.specify/templates/*.md

ํ”„๋กœ์ ํŠธ ์ „์ฒด๊ฐ€ ์ง€์ผœ์•ผ ํ•  ๊ฐœ๋ฐœ ์›์น™์„ ์ƒ์„ฑใ†์ˆ˜์ •ํ•œ๋‹ค. ํ”„๋กœ๊ทธ๋žจ์˜ ํ•ต์‹ฌ ๊ตฌ์กฐ(์•„ํ‚คํ…์ฒ˜), ๋ณด์•ˆ ๊ฐ™์€ ๊ณตํ†ต ๊ทœ์น™๊นŒ์ง€ ํฌํ•จํ•œ๋‹ค. Constitution์€ ํ”„๋กœ๊ทธ๋žจ์˜ ํ—Œ๋ฒ•์œผ๋กœ ๊ฐ€์žฅ ์ค‘์š”ํ•œ ์›์น™์ด๋‹ค. ๋”ฐ๋ผ์„œ /speckit.constitution ๋ช…๋ น์œผ๋กœ ์›์น™์„ ์—…๋ฐ์ดํŠธํ–ˆ์„ ๋•Œ, (AI ์—์ด์ „ํŠธ๊ฐ€ ๋ณ€๊ฒฝ์ด ํ•„์š”ํ•˜๋‹ค๊ณ  ํŒ๋‹จํ•œ ๊ฒฝ์šฐ) ๋ช…์„ธ ํ…œํ”Œ๋ฆฟ๊นŒ์ง€๋„ ์ˆ˜์ •๋  ์ˆ˜ ์žˆ๋‹ค.

 

#4-2 /speckit.specify

์ด ๋ช…๋ น์–ด๊ฐ€ ์ฃผ๋กœ ๋‹ค๋ฃจ๋Š” ํŒŒ์ผ:
specs/example_feature_name/spec.md

์ƒˆ ์ž‘์—… ๋‹จ์œ„๋ฅผ ์‹ ์„คํ•œ๋‹ค. spec.md์—๋Š” ๊ธฐ๋Šฅ๋ช…, ๊ด€๋ จ ๋ธŒ๋žœ์น˜, ์ƒ์„ฑ์ผ, ์ƒํƒœ, ์ตœ์ดˆ ์š”์ฒญ ๋‚ด์šฉ, ๊ธฐ๋Šฅ ์š”๊ตฌ์‚ฌํ•ญ ๋“ฑ์˜ ๋งŽ์€ ๋‚ด์šฉ์ด ๋“ค์–ด๊ฐ„๋‹ค.

 

#4-3 /speckit.clarify

์ด ๋ช…๋ น์–ด๊ฐ€ ์ฃผ๋กœ ๋‹ค๋ฃจ๋Š” ํŒŒ์ผ:
specs/example_feature_name/spec.md

์ด๋ฏธ ์กด์žฌํ•˜๋Š” ์ž‘์—… ๋‹จ์œ„๋ฅผ ์—…๋ฐ์ดํŠธํ•œ๋‹ค. ๋ชจํ˜ธ(underspecified)ํ•œ ๋ถ€๋ถ„์„ ๋ช…๋ฃŒ(Clarify)ํ•˜๊ฒŒ ๋งŒ๋“ ๋‹ค๋Š” ๋œป์ด๋‹ค. /speckit.plan ์ˆ˜ํ–‰ ์ „ spec.md๋ฅผ ๋” ๋‹ค๋“ฌ๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉํ•œ๋‹ค.

 

#4-4 /speckit.plan

์ด ๋ช…๋ น์–ด๊ฐ€ ์ฃผ๋กœ ๋‹ค๋ฃจ๋Š” ํŒŒ์ผ:
specs/example_feature_name/plan.md (์ตœ์ข… ๊ตฌ์กฐ, ๊ตฌํ˜„ ๋ฐฉ์‹, ๊ธฐ์ˆ  ์Šคํƒ)
specs/example_feature_name/research.md (plan.md ์† ๊ธฐ์ˆ  ์Šคํƒ์˜ ์„ ํƒ ์ด์œ , ์„ ํƒ์„ ๊ณ ๋ คํ–ˆ์—ˆ๋˜ ํ›„๋ณด๋“ค์˜ ํƒˆ๋ฝ ์ด์œ )
specs/example_feature_name/data-model.md (Entity, Field, ...)
specs/example_feature_name/quickstart.md (๊ตฌํ˜„ ์ ˆ์ฐจ๋ฅผ ์ถ”์ƒ์ ์œผ๋กœ๋งŒ ๋‚˜์—ด)
specs/example_feature_name/contracts/* (ํ”„๋กœ๊ทธ๋žจ ์™ธ๋ถ€์™€์˜ ์†Œํ†ต์„ ์œ„ํ•œ ๊ทœ์น™)

spec.md์˜ ์š”๊ตฌ์‚ฌํ•ญ์„ ์–ด๋–ค ๊ตฌ์กฐ์™€ ๋„๊ตฌ(๊ธฐ์ˆ )๋กœ ๊ตฌํ˜„ํ• ์ง€ ์„ค๊ณ„ํ•œ๋‹ค. ์ด ๋ช…๋ น์˜ ํ•ต์‹ฌ ๊ฒฐ๊ณผ๋ฌผ์€ plan.md์ง€๋งŒ, ์‹ค์ œ๋กœ๋Š” ์—ฌ๋Ÿฌ ๋ฌธ์„œ๊ฐ€ ์ƒ์„ฑ๋œ๋‹ค.

  • tests/... ๋””๋ ‰ํ† ๋ฆฌ๊ฐ€ ์กด์žฌํ•˜๋Š”๋ฐ, quickstart.md๋Š” ์™œ ์กด์žฌํ• ๊นŒ? ์ค‘๋ณต์€ ์•„๋‹๊นŒ? tests/... ์—๋Š” ํ”„๋กœ๊ทธ๋žจ์ด ํŠน์ • ๋‹จ์œ„๋งˆ๋‹ค ์ˆ˜๋ฐฑ์ˆ˜์ฒœ ๋ฒˆ์„ ์•Œ์•„์„œ ํ•˜๋Š” ์ž๋™ํ™” ํ…Œ์ŠคํŠธ๊ฐ€ ๋“ค์–ด๊ฐ€์ง€๋งŒ, quickstart.md์—๋Š” ๊ฐœ๋ฐœํ•  feature๋ฅผ ์‚ฌ์šฉํ•  ์–ด๋–ค ์‚ฌ์šฉ์ž๋ฅผ ์ƒ์ •ํ•˜๊ณ  ๊ทธ ์‚ฌ์šฉ์ž๊ฐ€ ๊ตฌํ˜„ ๊ฒฐ๊ณผ๋ฌผ์„ ์‚ฌ์šฉํ•˜๋Š” ์‹œ๋‚˜๋ฆฌ์˜ค๊ฐ€ ์ ํžŒ๋‹ค. ๊ฐœ๋ฐœํ•  ๊ธฐ๋Šฅ์ด '์ผ๋‹จ ์ •์ƒ ์‹คํ–‰๋˜๋Š” ๋ชจ์Šต'์„ ๊ฐ€์žฅ ์งง์€ ๊ฒฝ๋กœ๋กœ ์žฌํ˜„ํ•œ๋‹ค.
    • ์—ฌ๋‹ด์œผ๋กœ, ์šฐ๋ฆฌ๊ฐ€ ์ „์ž์ œํ’ˆ์„ ์‚ฌ๋ฉด ๋™๋ด‰๋˜์–ด ์˜ค๋Š” '์‚ฌ์šฉ ์„ค๋ช…์„œ'๋Š” 2์ข…๋ฅ˜๋‹ค. ํ•˜๋‚˜๋Š” User Manual์ด๊ณ , ํ•˜๋‚˜๋Š” Quick Start Guide๋‹ค. ์ „์ž๋Š” ๋ชจ๋“  ๊ธฐ๋Šฅใ†์„ค์ •ใ†์˜ค๋ฅ˜ ํ•ด๊ฒฐ๊นŒ์ง€ ์ž์„ธํžˆ ์„ค๋ช…ํ•˜๋Š” ๋ฐ˜๋ฉด, ํ›„์ž๋Š” ์ „์› ์—ฐ๊ฒฐ → ์ดˆ๊ธฐ ์„ค์ • → ํ•ต์‹ฌ ๊ธฐ๋Šฅ ์ฒซ ์‚ฌ์šฉ๊นŒ์ง€์˜ ์ตœ์†Œ ๋‹จ๊ณ„๋งŒ ์•ˆ๋‚ดํ•œ๋‹ค.
  • plan.md๊ฐ€ ์ตœ์ข…์ ์œผ๋กœ ์ฑ„ํƒํ•œ ๊ตฌํ˜„ ๋ฐฉํ–ฅ์˜ ์š”์•ฝ์ด๋ผ๋ฉด, research.md๋Š” ๊ทธ ๊ฒฐ๋ก ์— ๋„๋‹ฌํ•˜๊ธฐ ์ „์— ํ•ด๊ฒฐํ•ด์•ผ ํ–ˆ๋˜ ๊ธฐ์ˆ ์  ์˜๋ฌธ๊ณผ ํŒ๋‹จ ๊ทผ๊ฑฐ๋ฅผ ์ ๋Š”๋‹ค. research.md๋Š” ์ตœ์ข… ๊ธฐ์ˆ  ์Šคํƒ, ๊ตฌ์กฐ์˜ ๊ฒฐ์ •์— ๋Œ€ํ•œ ๊ทผ๊ฑฐ ๋ฌธ์„œ์ธ ๊ฒƒ์ด๋‹ค.
  • .../contracts/ ์—๋Š” example-site-rest-api.yaml, user-event-schema.json ๋”ฐ์œ„์˜ ๋ฌธ์„œ๊ฐ€ ๋“ค์–ด๊ฐ„๋‹ค.
  • /speckit.specify ์˜ ๊ฒฝ์šฐ์—๋Š”, /speckit.clarify ๋ผ๋Š” ์—…๋ฐ์ดํŠธ ์ „์šฉ ๋ช…๋ น์–ด๊ฐ€ ์žˆ๋‹ค. /speckit.plan ๋„ ๊ทธ๋Ÿด๊นŒ? ์•„๋‹ˆ๋‹ค, ์—†๋‹ค. /speckit.plan๋ฅผ ํ•œ ๋ฒˆ ๋” ํ˜ธ์ถœํ•ด์„œ ๊ณ ์ณ ๋‹ฌ๋ผ๊ณ  ํ•˜๊ฑฐ๋‚˜, plan.md ๋ฌธ์„œ๋ฅผ ์ง์ ‘ ์ˆ˜์ •ํ•ด๋„ ๋œ๋‹ค. ์ง์ ‘ ์ˆ˜์ •ํ•˜๋Š” ๊ฒฝ์šฐ, ์ด๋ฏธ ๋งŒ๋“ค์–ด์ง„ tasks.md๊ฐ€ ์žˆ๋‹ค๋ฉด /speckit.tasks ๋ช…๋ น๊นŒ์ง€ (์—ฐ์‡„์ ์œผ๋กœ) ์žฌ์‹คํ–‰ํ•ด ์ฃผ์–ด์•ผ ํ•œ๋‹ค.

 

#4-5 /speckit.checklist

์ด ๋ช…๋ น์–ด๊ฐ€ ์ฃผ๋กœ ๋‹ค๋ฃจ๋Š” ํŒŒ์ผ:
specs/example_feature_name/checklists/requirements.md
specs/example_feature_name/checklists/security.md
specs/example_feature_name/checklists/ux.md
...

์š”๊ตฌ์‚ฌํ•ญ ๋ฌธ์„œ๊ฐ€ ์•„์ฃผ ๋ช…ํ™•ํ•˜๊ณ  ๋น ์ง์—†์ด ์ž‘์„ฑ๋๋Š”์ง€ ํ™•์ธํ•  ์ ๊ฒ€ํ‘œ๋ฅผ ๋งŒ๋“ ๋‹ค. ๊ตฌํ˜„ ์™„๋ฃŒ ์—ฌ๋ถ€๊ฐ€ ์•„๋‹ˆ๋ผ, ๋ช…์„ธ์˜ ํ’ˆ์งˆ์„ ์ ๊ฒ€ํ•˜๋Š” ๋ฌธ์„œ๋‹ค.

 

#4-6 /speckit.tasks

์ด ๋ช…๋ น์–ด๊ฐ€ ์ฃผ๋กœ ๋‹ค๋ฃจ๋Š” ํŒŒ์ผ:
specs/example_feature_name/tasks.md

ํŠน์ • feature ๋””๋ ‰ํ† ๋ฆฌ์— ์žˆ๋Š” ์—ฌ๋Ÿฌ ๋ฌธ์„œ๋ฅผ ์ด๋ง๋ผํ•ด, ์ž˜๊ฒŒ ๋ถ„ํ•ด๋œ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๊ณ„ํš์„ ์„ธ์šด๋‹ค.

 

#4-7 /speckit.analyze

์ด ๋ช…๋ น์–ด๊ฐ€ ์ฃผ๋กœ ๋‹ค๋ฃจ๋Š” ํŒŒ์ผ:
.specify/memory/constitution.md
specs/example_feature_name/spec.md
specs/example_feature_name/plan.md
specs/example_feature_name/tasks.md

๊ธฐ๋ณธ์ ์œผ๋กœ ์–ด๋–ค ํŒŒ์ผ์„ ๋งŒ๋“œ๋Š” ๋ช…๋ น์€ ์•„๋‹ˆ๊ณ , AI ์—์ด์ „ํŠธ๊ฐ€ ๋Œ€ํ™”์ฐฝ์— ์ถœ๋ ฅํ•œ ์ฑ„ํŒ…์œผ๋กœ ๋ช…๋ น์— ๋Œ€ํ•œ ๊ฒฐ๊ณผ๋ฅผ ๋ฐ›๋Š”๋‹ค. AI ์—์ด์ „ํŠธ๋Š” ์•„๋ž˜์™€ ๊ฐ™์€ ๊ฒƒ๋“ค์„ ๋ถ„์„(Analyze)ํ•œ๋‹ค.

  • ์š”๊ตฌ์‚ฌํ•ญ์ด ๊ณ„ํš์— ๋น ์ง์—†์ด ๋ฐ˜์˜๋๋Š”์ง€
  • ๊ณ„ํš์ด ์ž‘์—… ๋ชฉ๋ก์œผ๋กœ ์ถฉ๋ถ„ํžˆ ๋ถ„ํ•ด๋๋Š”์ง€
  • ๋ฌธ์„œ๋ผ๋ฆฌ ์ถฉ๋Œํ•˜์ง€ ์•Š๋Š”์ง€
  • Constitution์„ ์œ„๋ฐ˜ํ•˜์ง€ ์•Š๋Š”์ง€
  • ์ค‘๋ณต์ด๋‚˜ ๋ชจํ˜ธํ•จ์ด ์—†๋Š”์ง€
  • ...

๋ณดํ†ต

  1. /speckit.tasks
  2. /speckit.analyze
  3. /speckit.implement

์˜ ์ˆœ์„œ๋กœ ์‚ฌ์šฉํ•œ๋‹ค.

 

#4-8 /speckit.taskstoissues

์ด ๋ช…๋ น์–ด๊ฐ€ ์ฃผ๋กœ ๋‹ค๋ฃจ๋Š” ํŒŒ์ผ:
specs/example_feature_name/tasks.md

tasks.md๋ฅผ GitHub Issue๋กœ ๋ณ€ํ™˜ํ•œ๋‹ค.

 

#4-9 /speckit.implement

์ด ๋ช…๋ น์–ด๊ฐ€ ์ฃผ๋กœ ๋‹ค๋ฃจ๋Š” ํŒŒ์ผ:
src/...
tests/...
specs/example_feature_name/tasks.md

์†Œ์Šค ์ฝ”๋“œ์™€ ํ…Œ์ŠคํŠธ ์ฝ”๋“œ๋ฅผ ์งœ๊ณ , tasks.md์—์„œ ์™„๋ฃŒ๋œ ํ•ญ๋ชฉ์— โœ“ ํ‘œ์‹œํ•œ๋‹ค.

 

#4-10 /speckit.converge

์ด ๋ช…๋ น์–ด๊ฐ€ ์ฃผ๋กœ ๋‹ค๋ฃจ๋Š” ํŒŒ์ผ:
.specify/memory/constitution.md
specs/example_feature_name/spec.md
specs/example_feature_name/plan.md
specs/example_feature_name/tasks.md
src/...
tests/...
...

/speckit.converge๋Š” /speckit.implement ํ›„์— ์ˆ˜ํ–‰ํ•œ๋‹ค. ๊ตฌํ˜„ ๊ฒฐ๊ณผ๋ฌผ๊ณผ ๋ช…์„ธ(Spec)์™€์˜ ์ฐจ์ด๋ฅผ ์ฐพ์•„, ๋น ์กŒ๊ฑฐ๋‚˜ ๋ถˆ์™„์ „ํ•œ ๊ตฌํ˜„์„ tasks.md ํ•˜๋‹จ์— ๋ณด์™„ ์ž‘์—…์œผ๋กœ ์ถ”๊ฐ€ํ•œ๋‹ค. ์ด ๋ช…๋ น์ด ์ฝ”๋“œ(src/*)๋ฅผ ๊ณ ์น˜๋Š” ๊ฒƒ์€ ์•„๋‹ˆ๋ฉฐ, tasks.md์— ์ƒˆ ์ž‘์—…๋งŒ์„ ์ถ”๊ฐ€ํ•œ๋‹ค.

 

#5 ๋ถ„์„ - ์˜์กด์„ฑ ๊ทธ๋ž˜ํ”„

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

 

๋”๋ณด๊ธฐ
```mermaid
flowchart BT
    subgraph Foundation["๊ธฐ๋ฐ˜ ๋ช…์„ธ"]
        direction LR
        Constitution["โ‘ 
/speckit.constitution
(constitution.md)"]
        Specify["โ‘ก
/speckit.specify
(spec.md)"]
    end
    subgraph Refinement["๋ช…์„ธ ๋ณด๊ฐ•"]
        direction LR
        Clarify["โ‘ข
/speckit.clarify
(spec.md)"]
        Checklist["โ‘ค
/speckit.checklist
(checklists/*.md)"]
    end
    subgraph Planning["๊ณ„ํš ๋ฐ ์ž‘์—…ํ™”"]
        direction LR
        Plan["โ‘ฃ
/speckit.plan
(plan.md + ์„ค๊ณ„ ์‚ฐ์ถœ๋ฌผ)"]
        Tasks["โ‘ฅ
/speckit.tasks
(tasks.md)"]
    end
    subgraph Execution["๋ถ„์„·์—ฐ๋™·๊ตฌํ˜„"]
        direction LR
        TasksToIssues["โ‘ฆ
/speckit.taskstoissues
(tasks.md)"]
        Analyze["โ‘ง
/speckit.analyze
(*)"]
        Implement["โ‘จ
/speckit.implement
(*)"]
        Converge["โ‘ฉ
/speckit.converge
(*)"]
    end
    Specify --> Constitution
    Clarify --> Specify
    Plan --> Specify
    Plan --> Constitution
    Checklist --> Specify
    Tasks --> Plan
    TasksToIssues --> Tasks
    Analyze --> Tasks
    Implement --> Tasks
    Converge --> Implement
    Legend["โ€ป A → B: A ๋ช…๋ น์ด B ๋ช…๋ น์˜ ์‚ฐ์ถœ๋ฌผ ๋˜๋Š” ์„ ํ–‰ ์‹คํ–‰์— ์˜์กด
โ€ป ๊ด„ํ˜ธ ์•ˆ: ํ•ด๋‹น ๋ช…๋ น์ด ๋‹ค๋ฃจ๋Š” ์ฃผ์š” ํŒŒ์ผ
โ€ป *: ์—ฌ๋Ÿฌ ์‚ฐ์ถœ๋ฌผ๊ณผ ์ฝ”๋“œ๋ฒ ์ด์Šค๋ฅผ ์ข…ํ•ฉ์ ์œผ๋กœ ๋‹ค๋ฃธ
โ€ป ํŒŒ๋ž€์ƒ‰ ๋…ธ๋“œ: ํ•„์ˆ˜(Core) ๋ช…๋ น / ๋…ธ๋ž€์ƒ‰ ๋…ธ๋“œ: ์„ ํƒ(Optional) ๋ช…๋ น
โ€ป ์„ ํƒ ๋ช…๋ น(โ‘ขโ‘คโ‘ง)์€ ํ’ˆ์งˆ·๋ช…๋ฃŒํ™”๋ฅผ ๋•๋Š” ๋ณด์กฐ ๋‹จ๊ณ„๋กœ, ์ƒ๋žตํ•ด๋„ ์›Œํฌํ”Œ๋กœ์šฐ๋Š” ์„ฑ๋ฆฝ
โ€ป ๊ฐ€๋…์„ฑ์„ ์œ„ํ•ด ์ „์ด ์˜์กด์„ฑ๊ณผ ์„ ํƒ์  ๋ณด์กฐ ์˜์กด์„ฑ์€ ์ƒ๋žต"]
    Legend ~~~ Constitution

    classDef note fill:none,stroke:none,color:#666,font-size:12px;
    classDef core fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#1e3a5f;
    classDef optional fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#7c4a03;
    class Legend note;
    class Constitution,Specify,Plan,Tasks,TasksToIssues,Implement,Converge core;
    class Clarify,Checklist,Analyze optional;
    style Foundation fill:#fafafa,stroke:#bbb
    style Refinement fill:#fafafa,stroke:#bbb
    style Planning fill:#fafafa,stroke:#bbb
    style Execution fill:#fafafa,stroke:#bbb
```

 

#6 ๊ฐ„๋‹จํžˆ ์ง„ํ–‰ํ•œ ์‹ค์Šต

#6-1 ์ง„ํ–‰ ๋ฐฉ์‹

๊ณต์‹ ์ €์žฅ์†Œ README.md์˜ "Get Started" ์„น์…˜์— ๋‚˜์˜จ ๋ช…๋ น์–ด ์ˆœ์„œ๋ฅผ ๊ทธ๋Œ€๋กœ ๋”ฐ๋ผ ํ•˜๋˜, ๋ช…์„ธ ๋‚ด์šฉ๋งŒ ๋‚ด๊ฐ€ ์›ํ•˜๋Š” ๋Œ€๋กœ ๋ฐ”๊ฟจ๋‹ค. ์•„๋ž˜๋Š” ๋‚ด๊ฐ€ AI ์—์ด์ „ํŠธ์—๊ฒŒ ๋‚ด๋ฆฐ ๋ช…๋ น์–ด ๋ชจ์Œ์ด๋‹ค.

  • /speckit.constitution ๊ฐœ๋ฐœ์˜ ๊ฐ ๋‹จ๊ณ„์˜ ์ง„ํ–‰์ด ์ผ๋ชฉ์š”์—ฐํ•˜๊ฒŒ ๋ณด์—ฌ์•ผ ํ•˜๋ฉฐ, README.md ํŒŒ์ผ ๋“ฑ์„ ์•„์ฃผ ์นœ์ ˆํ•˜๊ฒŒ ์ ์–ด ์ดˆ๋ณด์ž๋ฅผ ๋ฐฐ๋ คํ•ด์•ผ ํ•จ.
  • /speckit.specify ์‚ฌ์šฉ์ž๊ฐ€ ๋ฐฐ์šฐ๊ณ  ์‹ถ์€ ์–ด๋–ค ๊ฐœ๋…์„ ๋งํ•˜๋ฉด, ๋”ฐ๋ผ ํ•˜๊ธฐ ์ข‹์€ Codelab ํŒŒ์ผ์„ ๋ฐ˜ํ™˜ํ•˜๋Š” Agent Harness. ์‚ฌ์šฉ์ž๋Š” ๋ง‰์—ฐํ•œ ๊ฐœ๋…์„ ์งˆ๋ฌธํ•ด๋„ ์ข‹๊ณ , ์–ด๋–ค ๊ตฌ์ฒด์ ์ธ ์›นํŽ˜์ด์ง€ ๋งํฌ๋ฅผ ๋ณด๋‚ด๋„ ์ข‹๋‹ค. ์‚ฌ์šฉ์ž์˜ ์งˆ๋ฌธ์„ ๋ฐ›์œผ๋ฉด Agent๋Š” Codelab์˜ ๊ฐ ๋‹จ๊ณ„์˜ ๊ฐœ์ˆ˜์™€ ์ด๋ฆ„์„ ์–ด๋–ป๊ฒŒ ๊ตฌ์„ฑํ•  ๊ฒƒ์ธ์ง€๋ฅผ ๋จผ์ € ์ƒ๊ฐํ•œ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๊ทธ๊ฑธ ์‚ฌ์šฉ์ž์—๊ฒŒ ์ค‘๊ฐ„ ์ ๊ฒ€ ๋ฐ›์€ ํ›„ ๋น„๋กœ์†Œ ๋ณธ๊ฒฉ์ ์ธ Codelab ํŒŒ์ผ ์ œ์ž‘์— ์ฐฉ์ˆ˜ํ•œ๋‹ค.
  • /speckit.plan ๋‚ด๋ถ€์ ์œผ๋กœ .md ํŒŒ์ผ์„ ๋งŒ๋“ ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๊ทธ๊ฑธ claat.exe์˜ .md → .html ๋ณ€ํ™˜ ๊ธฐ๋Šฅ์œผ๋กœ Codelab ํŒŒ์ผ(.html ํ˜•ํƒœ)๋กœ ๋งŒ๋“ค์–ด ์‚ฌ์šฉ์ž์—๊ฒŒ ๋ฐ˜ํ™˜ํ•œ๋‹ค. claat๋ฅผ ์‚ฌ์šฉ์ž๊ฐ€ ๋”ฐ๋กœ ์„ค์น˜ํ•˜์ง€ ์•Š์•„๋„ ๋˜๋„๋ก ํ”„๋กœ์ ํŠธ์— ๊ตฌ์„ฑํ•œ๋‹ค. ์ง€์ •ํ•œ ๋ฒ„์ „์˜ ์‹คํ–‰ ํŒŒ์ผ์ด ์—†์œผ๋ฉด ์ž๋™์œผ๋กœ ๋‹ค์šด๋กœ๋“œํ•œ๋‹ค.
  • /speckit.tasks
  • /speckit.implement

 

#6-2 ๊ฒฐ๊ณผ

 

GitHub - Kanmanemone/keenel-codelab at simple-first-practice

Contribute to Kanmanemone/keenel-codelab development by creating an account on GitHub.

github.com

์œ„ ๋ ˆํฌ์ง€ํ† ๋ฆฌ์˜ README.md ๋˜ํ•œ Spec Kit์— ์˜ํ•ด ์ž๋™ ์ƒ์„ฑ๋œ ๊ฒƒ์ด๋‹ค.