GitHub - github/spec-kit: ๐Ÿ’ซ Toolkit to help you get started with Spec-Driven Development
Service

GitHub - github/spec-kit: ๐Ÿ’ซ Toolkit to help you get started with Spec-Driven Development

github
2025.09.14
ยทGitHubยทby Anonymous
#Spec-Driven Development#AI Agents#Software Development#Toolkit#CLI

ํ•ต์‹ฌ ํฌ์ธํŠธ

  • 1Spec-Driven Development (SDD)๋Š” ์‹คํ–‰ ๊ฐ€๋Šฅํ•œ ์ŠคํŽ™์ด ์ง์ ‘ ๊ตฌํ˜„์„ ์ƒ์„ฑํ•˜๋„๋ก ํ•˜์—ฌ ์ฝ”๋“œ๋ฅผ ์šฐ์„ ํ•˜๋Š” ๊ฐœ๋ฐœ ๋ฐฉ์‹์—์„œ ๋ฒ—์–ด๋‚˜ ์ŠคํŽ™์„ ์šฐ์„ ํ•˜๋Š” ๋ฐฉ๋ฒ•๋ก ์ด๋ฉฐ, `spec-kit`์€ ์ด๋ฅผ ๋•๋Š” ํˆดํ‚ท์ž…๋‹ˆ๋‹ค.
  • 2์ด ํˆดํ‚ท์€ `Specify CLI`์™€ AI ์—์ด์ „ํŠธ๋ฅผ ํ™œ์šฉํ•˜์—ฌ `/speckit.constitution`, `/speckit.specify`, `/speckit.plan`, `/speckit.tasks`, `/speckit.implement`์™€ ๊ฐ™์€ ํ•ต์‹ฌ ์Šฌ๋ž˜์‹œ ๋ช…๋ น์–ด๋ฅผ ํ†ตํ•ด ์ฒด๊ณ„์ ์ธ ๊ฐœ๋ฐœ ์›Œํฌํ”Œ๋กœ์šฐ๋ฅผ ์•ˆ๋‚ดํ•ฉ๋‹ˆ๋‹ค.
  • 3`spec-kit`์€ ์‚ฌ์–‘ ์ƒ์„ฑ, ๊ณ„ํš, ์ž‘์—… ๋ถ„ํ•ด ๋ฐ ์ฝ”๋“œ ์‹คํ–‰์„ ํฌํ•จํ•˜๋Š” ๋‹ค๋‹จ๊ณ„ ์ •์ œ ํ”„๋กœ์„ธ์Šค๋ฅผ ํ†ตํ•ด ๋†’์€ ํ’ˆ์งˆ์˜ ์†Œํ”„ํŠธ์›จ์–ด๋ฅผ ๋” ๋น ๋ฅด๊ฒŒ ๊ตฌ์ถ•ํ•˜๊ณ , ๊ธฐ์ˆ  ๋…๋ฆฝ์„ฑ ๋ฐ ๋ฐ˜๋ณต์ ์ธ ๊ธฐ๋Šฅ ๊ฐœ๋ฐœ์„ ๋ชฉํ‘œ๋กœ ํ•ฉ๋‹ˆ๋‹ค.

Spec-Driven Development(SDD)๋Š” ๊ธฐ์กด ์†Œํ”„ํŠธ์›จ์–ด ๊ฐœ๋ฐœ ๋ฐฉ์‹์˜ ํŒจ๋Ÿฌ๋‹ค์ž„์„ ์ „ํ™˜ํ•˜๋Š” ์ ‘๊ทผ ๋ฐฉ์‹์œผ๋กœ, ์ฝ”๋”ฉ์ด ์ค‘์‹ฌ์ด ์•„๋‹Œ ์‹คํ–‰ ๊ฐ€๋Šฅํ•œ(executable) ๋ช…์„ธ(specifications)๊ฐ€ ํ•ต์‹ฌ์ด ๋˜์–ด ์ง์ ‘ ๋™์ž‘ํ•˜๋Š” ๊ตฌํ˜„์ฒด๋ฅผ ์ƒ์„ฑํ•˜๋„๋ก ํ•˜๋Š” ๋ฐฉ๋ฒ•๋ก ์ž…๋‹ˆ๋‹ค. ์ด๋Š” ๋‹จ์ˆœํžˆ ์ฝ”๋“œ ์ž‘์„ฑ์„ ์œ„ํ•œ ๊ฐ€์ด๋“œ ์—ญํ• ์„ ๋„˜์–ด, ๋ช…์„ธ ์ž์ฒด๊ฐ€ ์‹ค์ œ ๊ตฌํ˜„์˜ ์›์ฒœ์ด ๋˜๋Š” ๊ฒƒ์„ ๋ชฉํ‘œ๋กœ ํ•ฉ๋‹ˆ๋‹ค. Spec Kit์€ ์ด๋Ÿฌํ•œ SDD๋ฅผ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•˜๋Š” ์˜คํ”ˆ ์†Œ์Šค ํˆดํ‚ท์ž…๋‹ˆ๋‹ค.

ํ•ต์‹ฌ ๋ฐฉ๋ฒ•๋ก ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋‹จ๊ณ„๋กœ ์ง„ํ–‰๋ฉ๋‹ˆ๋‹ค:

  1. Specify CLI ์„ค์น˜ (Install Specify CLI):
uv tool install specify-cli ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ Specify CLI๋ฅผ ์„ค์น˜ํ•ฉ๋‹ˆ๋‹ค. ์ด CLI ๋„๊ตฌ๋Š” ํ”„๋กœ์ ํŠธ ์ดˆ๊ธฐํ™” ๋ฐ ๋„๊ตฌ ์ƒํƒœ ํ™•์ธ ๋“ฑ์˜ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.
  • specifyinit<PROJECTNAME>specify init <PROJECT_NAME>: ์ƒˆ ํ”„๋กœ์ ํŠธ๋ฅผ ์ƒ์„ฑํ•˜๊ฑฐ๋‚˜ ๊ธฐ์กด ํ”„๋กœ์ ํŠธ๋ฅผ ์ดˆ๊ธฐํ™”ํ•ฉ๋‹ˆ๋‹ค. ์ด ๊ณผ์ •์—์„œ --ai ํ”Œ๋ž˜๊ทธ๋ฅผ ํ†ตํ•ด ์‚ฌ์šฉํ•  AI ์—์ด์ „ํŠธ๋ฅผ ์ง€์ •ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, --here ํ”Œ๋ž˜๊ทธ๋กœ ํ˜„์žฌ ๋””๋ ‰ํ† ๋ฆฌ์— ์ดˆ๊ธฐํ™”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • specify check: ํ•„์š”ํ•œ ๋„๊ตฌ๋“ค์ด ์„ค์น˜๋˜์–ด ์žˆ๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.
  1. ํ”„๋กœ์ ํŠธ ์›์น™ ์ˆ˜๋ฆฝ (Establish project principles):
ํ”„๋กœ์ ํŠธ ๋””๋ ‰ํ† ๋ฆฌ์—์„œ AI ์—์ด์ „ํŠธ๋ฅผ ์‹คํ–‰ํ•˜๊ณ , /speckit.constitution ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํ”„๋กœ์ ํŠธ์˜ ๊ธฐ๋ณธ์ ์ธ ์›์น™๊ณผ ๊ฐœ๋ฐœ ๊ฐ€์ด๋“œ๋ผ์ธ์„ ์ •์˜ํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” memory/constitution.md ํŒŒ์ผ์— ๊ธฐ๋ก๋˜๋ฉฐ, ์ฝ”๋“œ ํ’ˆ์งˆ, ํ…Œ์ŠคํŒ… ํ‘œ์ค€, ์‚ฌ์šฉ์ž ๊ฒฝํ—˜ ์ผ๊ด€์„ฑ, ์„ฑ๋Šฅ ์š”๊ตฌ์‚ฌํ•ญ ๋“ฑ ์ „๋ฐ˜์ ์ธ ๊ฐœ๋ฐœ ๊ณผ์ •์˜ ์˜์‚ฌ๊ฒฐ์ •์„ ์•ˆ๋‚ดํ•˜๋Š” ์—ญํ• ์„ ํ•ฉ๋‹ˆ๋‹ค.

  1. ๋ช…์„ธ ์ƒ์„ฑ (Create the spec):
/speckit.specify ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ตฌ์ถ•ํ•˜๊ณ ์ž ํ•˜๋Š” ๊ฒƒ์— ๋Œ€ํ•œ ์š”๊ตฌ์‚ฌํ•ญ๊ณผ ์‚ฌ์šฉ์ž ์Šคํ† ๋ฆฌ๋ฅผ ๋ช…์„ธํ•ฉ๋‹ˆ๋‹ค. ์ด ๋‹จ๊ณ„์—์„œ๋Š” ๊ธฐ์ˆ  ์Šคํƒ๋ณด๋‹ค๋Š” ๋ฌด์—‡์„(what) ๋งŒ๋“ค๊ณ  ์™œ(why) ๋งŒ๋“œ๋Š”์ง€์— ์ง‘์ค‘ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. AI ์—์ด์ „ํŠธ(์˜ˆ: Claude Code)๋Š” ์ด ์ž…๋ ฅ์„ ๋ฐ”ํƒ•์œผ๋กœ ์‚ฌ์šฉ์ž ์Šคํ† ๋ฆฌ๊ฐ€ ํฌํ•จ๋œ ์ƒ์„ธ ๋ช…์„ธ(์˜ˆ: specs/001-create-taskify/spec.md)๋ฅผ ์ƒ์„ฑํ•˜๋ฉฐ, ์ด๋ฅผ ์œ„ํ•ด ์ƒˆ๋กœ์šด Git ๋ธŒ๋žœ์น˜(์˜ˆ: 001-create-taskify)๋ฅผ ์ƒ์„ฑํ•˜๊ธฐ๋„ ํ•ฉ๋‹ˆ๋‹ค.
  • ๋ช…์„ธ ๋ช…ํ™•ํ™” (Functional specification clarification): ๊ธฐ์ˆ  ๊ณ„ํš์„ ์„ธ์šฐ๊ธฐ ์ „, /speckit.clarify ๋ช…๋ น์–ด๋ฅผ ํ†ตํ•ด ๋ช…์„ธ๋ฅผ ๊ตฌ์กฐ์ ์œผ๋กœ ๋ช…ํ™•ํ™”ํ•˜๋Š” ๊ณผ์ •์„ ๊ฑฐ์นฉ๋‹ˆ๋‹ค. ์ด๋Š” ๋ชจํ˜ธํ•˜๊ฑฐ๋‚˜ ๋ถˆ์™„์ „ํ•œ ๋ถ€๋ถ„์„ ์งˆ๋ฌธ๊ณผ ๋‹ต๋ณ€์„ ํ†ตํ•ด ๋ณด์™„ํ•˜๊ณ , ๋ช…์„ธ์˜ ์ผ๊ด€์„ฑ๊ณผ ์™„์ „์„ฑ์„ ๊ฒ€์ฆํ•˜๋Š” ๋ฐ ๋„์›€์„ ์ค๋‹ˆ๋‹ค. ํ•„์š”์‹œ ์ž์œ  ํ˜•์‹์˜ ์ถ”๊ฐ€ ์งˆ๋ฌธ์ด๋‚˜ Review & Acceptance Checklist๋ฅผ ํ™œ์šฉํ•˜์—ฌ ๋ช…์„ธ๋ฅผ ๊ฐœ์„ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  1. ๊ธฐ์ˆ  ๊ตฌํ˜„ ๊ณ„ํš ์ƒ์„ฑ (Create a technical implementation plan):
/speckit.plan ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ธฐ์ˆ  ์Šคํƒ๊ณผ ์•„ํ‚คํ…์ฒ˜ ์„ ํƒ์„ ํฌํ•จํ•œ ๊ธฐ์ˆ  ๊ตฌํ˜„ ๊ณ„ํš์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, .NET Aspire, Postgres, Blazor server, REST API ๋“ฑ์˜ ๊ตฌ์ฒด์ ์ธ ๊ธฐ์ˆ  ์š”์†Œ๋ฅผ ์ง€์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๋‹จ๊ณ„์˜ ๊ฒฐ๊ณผ๋ฌผ์€ plan.md, data-model.md, api-spec.json, research.md ๋“ฑ ๋‹ค์–‘ํ•œ ๊ตฌํ˜„ ์ƒ์„ธ ๋ฌธ์„œ๋“ค์„ ํฌํ•จํ•ฉ๋‹ˆ๋‹ค. AI ์—์ด์ „ํŠธ์™€ ์ƒํ˜ธ์ž‘์šฉํ•˜๋ฉฐ ๊ณ„ํš์˜ ์ •ํ™•์„ฑ์„ ๊ฒ€ํ† ํ•˜๊ณ , ํ•„์š”ํ•œ ๊ฒฝ์šฐ ์ถ”๊ฐ€์ ์ธ ์กฐ์‚ฌ๋ฅผ ์ง€์‹œํ•˜์—ฌ ๊ธฐ์ˆ  ์„ ํƒ์˜ ํƒ€๋‹น์„ฑ์„ ํ™•๋ณดํ•ฉ๋‹ˆ๋‹ค.

  1. ํƒœ์Šคํฌ ๋ถ„ํ•ด (Break down into tasks):
/speckit.tasks ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ตฌํ˜„ ๊ณ„ํš์„ ๊ตฌ์ฒด์ ์ด๊ณ  ์‹คํ–‰ ๊ฐ€๋Šฅํ•œ ํƒœ์Šคํฌ ๋ชฉ๋ก์œผ๋กœ ๋ถ„ํ•ดํ•ฉ๋‹ˆ๋‹ค. ์ด ๊ณผ์ •์—์„œ tasks.md ํŒŒ์ผ์ด ์ƒ์„ฑ๋˜๋ฉฐ, ๋‹ค์Œ์„ ํฌํ•จํ•ฉ๋‹ˆ๋‹ค:
  • ์‚ฌ์šฉ์ž ์Šคํ† ๋ฆฌ์— ๋”ฐ๋ฅธ ํƒœ์Šคํฌ ๋ถ„ํ•ด (๊ฐ ์‚ฌ์šฉ์ž ์Šคํ† ๋ฆฌ๋Š” ๋ณ„๋„์˜ ๊ตฌํ˜„ ๋‹จ๊ณ„๊ฐ€ ๋จ)
  • ์˜์กด์„ฑ ๊ด€๋ฆฌ (์ปดํฌ๋„ŒํŠธ ๊ฐ„ ์˜์กด์„ฑ ๊ณ ๋ คํ•˜์—ฌ ํƒœ์Šคํฌ ์ˆœ์„œ ์ง€์ •)
  • ๋ณ‘๋ ฌ ์‹คํ–‰ ๊ฐ€๋Šฅํ•œ ํƒœ์Šคํฌ ํ‘œ์‹œ ([P])
  • ํŒŒ์ผ ๊ฒฝ๋กœ ๋ช…์‹œ (๊ฐ ํƒœ์Šคํฌ์˜ ๊ตฌํ˜„ ์œ„์น˜)
  • ํ…Œ์ŠคํŠธ ์ฃผ๋„ ๊ฐœ๋ฐœ(TDD) ๊ตฌ์กฐ (ํ…Œ์ŠคํŠธ ํƒœ์Šคํฌ ํฌํ•จ ๋ฐ ๊ตฌํ˜„ ์ „ ์ž‘์„ฑ ์ˆœ์„œ)
  • ์ฒดํฌํฌ์ธํŠธ ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ (๊ฐ ์‚ฌ์šฉ์ž ์Šคํ† ๋ฆฌ ๋‹จ๊ณ„์—์„œ ๋…๋ฆฝ์ ์ธ ๊ธฐ๋Šฅ ๊ฒ€์‚ฌ)
  1. ๊ตฌํ˜„ ์‹คํ–‰ (Execute implementation):
๋ชจ๋“  ์ค€๋น„๊ฐ€ ์™„๋ฃŒ๋˜๋ฉด /speckit.implement ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ตฌํ˜„ ๊ณ„ํš์— ๋”ฐ๋ผ ํƒœ์Šคํฌ๋ฅผ ์‹คํ–‰ํ•˜๊ณ  ๊ธฐ๋Šฅ์„ ๊ตฌ์ถ•ํ•ฉ๋‹ˆ๋‹ค. ์ด ๋ช…๋ น์€ constitution, spec, plan, tasks์˜ ์œ ํšจ์„ฑ์„ ๊ฒ€์‚ฌํ•˜๊ณ , tasks.md์˜ ํƒœ์Šคํฌ ๋ถ„ํ•ด๋ฅผ ํŒŒ์‹ฑํ•˜์—ฌ ์˜์กด์„ฑ๊ณผ ๋ณ‘๋ ฌ ์‹คํ–‰ ๋งˆ์ปค๋ฅผ ์ค€์ˆ˜ํ•˜๋ฉฐ ํƒœ์Šคํฌ๋ฅผ ์ˆœ์„œ๋Œ€๋กœ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค. AI ์—์ด์ „ํŠธ๋Š” ๋กœ์ปฌ CLI ๋ช…๋ น(์˜ˆ: dotnet, npm)์„ ์‹คํ–‰ํ•˜์—ฌ ์ฝ”๋“œ๋ฅผ ์ƒ์„ฑํ•˜๋ฏ€๋กœ, ํ•ด๋‹น ๋„๊ตฌ๋“ค์ด ์‹œ์Šคํ…œ์— ์„ค์น˜๋˜์–ด ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๊ตฌํ˜„ ์™„๋ฃŒ ํ›„์—๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ํ…Œ์ŠคํŠธํ•˜๊ณ , ๋Ÿฐํƒ€์ž„ ์˜ค๋ฅ˜ ๋ฐœ์ƒ ์‹œ AI ์—์ด์ „ํŠธ์— ์˜ค๋ฅ˜ ๋ฉ”์‹œ์ง€๋ฅผ ์ œ๊ณตํ•˜์—ฌ ํ•ด๊ฒฐํ•˜๋„๋ก ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

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