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

Spec Kit - "assess" ์ต์Šคํ…์…˜

interfacer_han 2026. 7. 19. 23:51

#1 ๊ฐœ์š”: "assess"

v0.13.0์—์„œ ์ถ”๊ฐ€๋œ Spec Kit์˜ ๊ณต์‹ ํ™•์žฅ "assess". "assess"๋Š” ์–ด๋–ค ์•„์ด๋””์–ด(feature ํ›„๋ณด)๋ฅผ ๋ช…์„ธํ• ์ง€ ๋ง์ง€๋ฅผ ๋จผ์ € ํŒ๋‹จํ•œ๋‹ค.

"assess"๋Š” ์ฝ”๋“œ๋ฅผ ๊ตฌํ˜„ํ•˜๋Š” ๊ธฐ๋Šฅ์ด ์•„๋‹ˆ์ง€๋งŒ, ๊ทธ๋ ‡๋‹ค๊ณ  ๋ช…์„ธ ๊ทธ ์ž์ฒด์— ํฌํ•จ๋˜๋Š” ๋‹จ๊ณ„ ๋˜ํ•œ ์•„๋‹ˆ๋‹ค. ์–ด๋–ค ๊ธฐ๋Šฅ์„ ๋ช…์„ธํ•˜๊ธฐ ์ „, ๊ทธ ๊ธฐ๋Šฅ ์ž์ฒด๊ฐ€ ๋ช…์„ธํ•  ๊ฐ€์น˜๊ฐ€ ์žˆ๋Š”์ง€ ์‹ฌ์‚ฌํ•˜๋Š” ๋ณ„๋„์˜ ๊ณผ์ •์ด๋‹ค. ๊ณต์‹ ๋ฌธ์„œ์—์„œ๋„ assess๊ฐ€ ๊ธฐ์กด์˜ ๋ช…์„ธ ํŒŒ์ดํ”„๋ผ์ธ์— ํฌํ•จ๋˜์ง€ ์•Š๋Š”, ๋…๋ฆฝ์ ์ธ ๋‹จ๊ณ„๋ผ ์„ค๋ช…ํ•œ๋‹ค.

 

#2 ํŒ์˜ฌ๋ฆผ ๋ฐ "assess" ํ™œ์„ฑํ™”

#2-1 v0.13.0์œผ๋กœ ํŒ์˜ฌ๋ฆผ

Spec Kit ์ž์ฒด์˜ ํŒ์˜ฌ๋ฆผ

# in ํ„ฐ๋ฏธ๋„
uv tool install specify-cli --from git+https://github.com/github/spec-kit.git@v0.13.0

 

๊ตฌ๋ฒ„์ „ Spec Kit์ด ์ ์šฉ๋œ ํ”„๋กœ์ ํŠธ์˜ ํŒ์˜ฌ๋ฆผ

# in ํ„ฐ๋ฏธ๋„
# ํ•ด๋‹น ํ”„๋กœ์ ํŠธ์˜ ๊ฒฝ๋กœ์—์„œ
specify init --here

 

#2-2 "assess" ํ™œ์„ฑํ™”

"assess"๋Š” ์™ธ๋ถ€ ๊ฐœ๋ฐœ์ž๊ฐ€ ์ปค๋ฎค๋‹ˆํ‹ฐ ์นดํƒˆ๋กœ๊ทธ์— ์˜ฌ๋ฆฐ ํ™•์žฅ์ด ์•„๋‹ˆ๋‹ค. ๊ณต์‹์—์„œ ๋งŒ๋“  ํ™•์žฅ์ด๋ฉฐ, Spec Kit v0.13.0 ์„ค์น˜ ์‹œ ์ž๋™์œผ๋กœ ํฌํ•จ๋œ๋‹ค. ํ•˜์ง€๋งŒ ๊ธฐ๋ณธ์ ์œผ๋กœ ํ™œ์„ฑํ™”๋˜์ง„ ์•Š๋Š”๋‹ค. ์ด ๋ง์€, v0.13.0 ๋ฒ„์ „์˜ Spec Kit์„ ์‚ฌ์šฉํ•œ๋‹ค๊ณ  ํ•œ๋“ค, "assess"์—์„œ ์ œ๊ณตํ•˜๋Š” ๋ช…๋ น์–ด๋ฅผ ๋ฐ”๋กœ ์“ธ ์ˆ˜๋Š” ์—†๋‹ค๋Š” ์†Œ๋ฆฌ๋‹ค. "assess" ์‚ฌ์šฉ์„ ์œ„ํ•ด์„  ํ„ฐ๋ฏธ๋„์— ์•„๋ž˜์˜ ๋ช…๋ น์–ด๋ฅผ ์ž…๋ ฅํ•ด ์ฃผ์–ด์•ผ ํ•œ๋‹ค.

 

# in ํ„ฐ๋ฏธ๋„
# Spec Kit v0.13.0 ์ด์ƒ์ด ์„ค์น˜๋œ, ํ”„๋กœ์ ํŠธ ๊ฒฝ๋กœ์—์„œ ์ž…๋ ฅ
specify extension add assess

Spec Kit v0.13.0์— ์ด๋ฏธ ํฌํ•จ๋œ ์ƒํƒœ์ด๊ธฐ์—, ์œ„์˜ ๋ช…๋ น์–ด๊ฐ€ ์ธํ„ฐ๋„ท์œผ๋กœ๋ถ€ํ„ฐ ๋ฌด์–ธ๊ฐ€๋ฅผ ์ถ”๊ฐ€ ๋‹ค์šด๋กœ๋“œํ•˜๋Š” ๊ฒƒ์€ ์•„๋‹ˆ๋‹ค. ๋ง ๊ทธ๋Œ€๋กœ 'ํ™œ์„ฑํ™”'๋‹ค.

 

#3 "assess" ๋ถ„์„์— ์•ž์„œ ์•Œ์•„๋‘๊ธฐ

#3-1 ํ˜ธ์ถœ ์‹œ์ 

๊ณต์‹ ๋ฌธ์„œ๊ฐ€ ๊ถŒ์žฅํ•˜๋Š” ํ˜ธ์ถœ ์‹œ์ ์€ ์•„์ด๋””์–ด๊ฐ€ ์ƒ๊ธด ๋’ค, ๊ทธ ์•„์ด๋””์–ด๋ฅผ ๋ช…์„ธ(/speckit.specify)ํ•˜๊ธฐ๋กœ ๊ฒฐ์ •ํ•˜๊ธฐ ์ „์ด๋‹ค. ์•„๋ž˜์™€ ๊ฐ™์€ ์งˆ๋ฌธ์— ํ™•์‹คํžˆ ๋‹ตํ•˜๊ธฐ ์–ด๋ ค์šธ ๋•Œ ์‚ฌ์šฉํ•œ๋‹ค.

  • ์‹ค์ œ๋กœ ํ•ด๊ฒฐํ•  ๊ฐ€์น˜๊ฐ€ ์žˆ๋Š” ๋ฌธ์ œ์ธ๊ฐ€?
  • ์•„์ด๋””์–ด๋ฅผ ๋’ท๋ฐ›์นจํ•˜๋Š” ๊ทผ๊ฑฐ๊ฐ€ ์ถฉ๋ถ„ํ•œ๊ฐ€?
  • ์•„๋ฌด๊ฒƒ๋„ ํ•˜์ง€ ์•Š๋Š” ๊ฒƒ๋ณด๋‹ค ๋งŒ๋“ค์—ˆ์„ ๋•Œ์˜ ๊ฐ€์น˜๊ฐ€ ํฐ๊ฐ€? (= ๊ตณ์ด ๋งŒ๋“ค์–ด์•ผ ํ•˜๋Š”๊ฐ€?)
  • ๊ฐ๋‹นํ•  ์ˆ˜ ์žˆ๋Š” ๋น„์šฉ ์•ˆ์—์„œ ๊ตฌํ˜„ํ•  ๋ฐฉ๋ฒ•์ด ์žˆ๋Š”๊ฐ€?

 

#3-2 "slug"

slug๋Š” ํ‰๊ฐ€ํ•  ์•„์ด๋””์–ด ํ•˜๋‚˜๋ฅผ ๊ตฌ๋ถ„ํ•˜๋Š” ์งง์€ ์˜๋ฌธ ์‹๋ณ„์ž(ID)๋‹ค. ๊ฐ€๋ น, "๋‹คํฌ ๋ชจ๋“œ ๊ธฐ๋Šฅ" ์•„์ด๋””์–ด์˜ slug๋Š” "dark-mode"๋กœ ์ •ํ•  ์ˆ˜ ์žˆ๋‹ค.

 

#3-3 '์‹ฌ์‚ฌ'์˜ 3๊ฐ€์ง€ ๊ฒฐ๊ณผ

assess๋Š” ์‹ฌ์‚ฌ ๋‹จ๊ณ„๋ผ ํ–ˆ๋‹ค. ๊ทธ๋ ‡๋‹ค๋ฉด ๊ทธ ์‹ฌ์‚ฌ์˜ ๊ฒฐ๊ณผ๋Š” ์–ด๋–ป๊ฒŒ ํŒ์ •๋˜๋Š”๊ฐ€?

1. go: ํ†ต๊ณผ. ๊ธฐ์กด์˜ ๋ช…์„ธ ํŒŒ์ดํ”„๋ผ์ธ์„ ๋”ฐ๋ผ๊ฐ€๋ฉด ๋œ๋‹ค.
2. needs-clarification: ํŒ๋‹จ์— ํ•„์š”ํ•œ ๋‚ด์šฉ์ด ๋ถ€์กฑ.
3. kill: ๊ฐ€์น˜ ์—†์Œ. AI ์—์ด์ „ํŠธ๊ฐ€ ๋ณด๊ธฐ์— ๊ตณ์ด ๋งŒ๋“ค ํ•„์š”๊ฐ€ ์—†๋Š” ๊ธฐ๋Šฅ์ด๋ผ๋Š” ์†Œ๋ฆฌ๋‹ค.

"assess"์˜ ๊ฒฐ๊ณผ๋Š” ์œ„์˜ 3๊ฐ€์ง€ ๊ฒฝ์šฐ ์ค‘ ํ•˜๋‚˜๋กœ ๊ฒฐ์ •๋œ๋‹ค.

 

#4 "assess" ๋ถ„์„

#4-1 ์ „์šฉ ๋””๋ ‰ํ† ๋ฆฌ

.specify/assessments/example-slug-name/...

์•„์ด๋””์–ด ํ•˜๋‚˜๋‹น, ".specify/assessments/"์— ์žˆ๋Š” ํ•˜๋‚˜์˜ ํด๋”์— ๋Œ€์‘ํ•œ๋‹ค.

 

#4-2 5๊ฐ€์ง€ ๋ช…๋ น์–ด

assess๋Š” ํ™•์žฅ ์ด๋ฆ„์ด์ง€, ํ˜ธ์ถœํ•  ์ˆ˜ ์žˆ๋Š” ๋‹จ์ผ ๋ช…๋ น์ด ์•„๋‹ˆ๋‹ค. assess๋กœ ์ถ”๊ฐ€๋˜๋Š” ๊ฐ€์šฉ ๋ช…๋ น์–ด๋Š” ์•„๋ž˜์— ์žˆ๋Š” 5๊ฐ€์ง€๋‹ค. assess ๊ณ„์—ด ๋ช…๋ น์–ด ํ•˜๋‚˜๋Š” ํ•˜๋‚˜์˜ ํŒŒ์ผ์„ ๊ฒฐ๊ณผ๋กœ ๋ฑ‰๋Š”๋‹ค.

 

#4-3 /speckit-assess-intake

์ด ๋ช…๋ น์–ด๋กœ ์ƒ์„ฑ๋˜๋Š” ํŒŒ์ผ:
.specify/assessments/example-slug-name/intake.md

์ตœ์ดˆ์˜ ์•„์ด๋””์–ด์™€ ์ถœ์ฒ˜๋ฅผ ์ˆ˜์ง‘ํ•œ๋‹ค. ์•„์ง ํ‰๊ฐ€ํ•˜๊ฑฐ๋‚˜ ํ•ด๊ฒฐ์ฑ…์„ ์„ค๊ณ„ํ•˜์ง€ ์•Š๋Š”๋‹ค.

 

#4-4 /speckit-assess-research

์ด ๋ช…๋ น์–ด๋กœ ์ƒ์„ฑ๋˜๋Š” ํŒŒ์ผ:
.specify/assessments/example-slug-name/research.md

์‚ฌ์šฉ์ž·์‹œ์žฅ·์„ ํ–‰ ์‚ฌ๋ก€·๋ฐ์ดํ„ฐ์™€ ์•„์ด๋””์–ด์— ๋ฐ˜๋Œ€๋˜๋Š” ๊ทผ๊ฑฐ๋ฅผ ์กฐ์‚ฌํ•œ๋‹ค.

 

#4-5 /speckit-assess-define

์ด ๋ช…๋ น์–ด๋กœ ์ƒ์„ฑ๋˜๋Š” ํŒŒ์ผ:
.specify/assessments/example-slug-name/problem.md

์‚ฌ์šฉ์ž, ๋ฌธ์ œ, ๋ชฉํ‘œ·๋น„๋ชฉํ‘œ, ์„ฑ๊ณต ์ง€ํ‘œ, ์•„๋ฌด๊ฒƒ๋„ ํ•˜์ง€ ์•Š์„ ๋•Œ์˜ ๋น„์šฉ์„ ์ •์˜ํ•œ๋‹ค.

 

#4-6 /speckit-assess-shape

์ด ๋ช…๋ น์–ด๋กœ ์ƒ์„ฑ๋˜๋Š” ํŒŒ์ผ:
.specify/assessments/example-slug-name/concept.md

๊ฐœ๋… ์ˆ˜์ค€ ํ•ด๊ฒฐ์ฑ… 2~3๊ฐœ์™€ ๋น„์šฉ ํ•œ๋„(appetite)·์ ˆ์ถฉ์ ์„ ๋น„๊ตํ•œ๋‹ค.

 

#4-7 /speckit-assess-decide

์ด ๋ช…๋ น์–ด๋กœ ์ƒ์„ฑ๋˜๋Š” ํŒŒ์ผ:
.specify/assessments/example-slug-name/decision.md

์•ž์„  ๋ฌธ์„œ๋ฅผ ์ฑ„์ ํ•ด ์ตœ์ข… ํŒ์ •๊ณผ ์ด์œ ๋ฅผ ๊ธฐ๋กํ•œ๋‹ค. ๋ฌธ์„œ์˜ ํ˜•ํƒœ๋Š” ์•„๋ž˜์™€ ๊ฐ™๋‹ค.

 

# Decision: <์งง์€ ์ œ๋ชฉ>

- **Slug**: <์•„์ด๋””์–ด ์‹๋ณ„์ž>
- **Decided**: <ํŒ์ • ๋‚ ์งœ>
- **Verdict**: go | needs-clarification | kill
- **Artifacts reviewed**: intake.md? | research.md? | problem.md | concept.md?

...

์‹ค์ œ ํŒ์ •์€ ๊ทธ ์•„๋ž˜ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ์˜ Verdict ํ•ญ๋ชฉ์—์„œ ํ™•์ธํ•œ๋‹ค. Artifacts reviewed๋Š” ํŒ์ •์˜ ๊ทผ๊ฑฐ๋กœ ์‚ฌ์šฉํ•œ ๋ฌธ์„œ์˜ ๋ชฉ๋ก์ด ์ ํžŒ๋‹ค. ๊ทธ ๋’ค์—๋Š” ์—ฌ์„ฏ ํ‰๊ฐ€ ๊ธฐ์ค€์˜ ์ ์ˆ˜ํ‘œ์™€ ์ตœ์ข… ํŒ์ • ์ด์œ ๊ฐ€ ์ด์–ด์ง„๋‹ค. ์—ฌ์„ฏ ํ‰๊ฐ€ ๊ธฐ์ค€์€ ์•„๋ž˜์™€ ๊ฐ™์œผ๋ฉฐ, ๊ฐ ํ•ญ๋ชฉ์€ strong, adequate, weak, unknown ์ค‘ ํ•˜๋‚˜์˜ ์ ์ˆ˜๋กœ ํŒ์ •๋œ๋‹ค.

  1. Problem validity (๋ฌธ์ œ์˜ ์œ ํšจ์„ฑ)
  2. Evidence strength (๊ทผ๊ฑฐ์˜ ๊ฐ•๋„)
  3. Value vs. inaction (ํ•ด๋‹น ๊ธฐ๋Šฅ์œผ๋กœ ์–ป์–ด์งˆ ๊ฐ€์น˜์•„ ๊ธฐํšŒ๋น„์šฉ์„ ์ €์šธ์งˆ)
  4. Feasibility / appetite (์‹คํ˜„ ๊ฐ€๋Šฅ์„ฑ๊ณผ ๋น„์šฉ์˜ ํ•œ๊ณ„ ๊ณ ๋ ค)
  5. Strategic fit (ํ”„๋กœ์ ํŠธ ๋ชฉํ‘œ์™€์˜ ์ ํ•ฉ์„ฑ)
  6. Risk posture (ํ•ด๋‹น ๊ธฐ๋Šฅ์˜ ์ž ์žฌ์  ๋ฆฌ์Šคํฌ)

 

#4-8 ๋ช…๋ น์–ด ๊ฐ„ ์„ ํ›„ ๊ด€๊ณ„?

#4-3 ~ #4-7์€ ์ž„์˜๋กœ ์ •๋ฆฌํ•œ ์ˆœ์„œ๊ฐ€ ์•„๋‹ˆ๋ผ ๊ณต์‹์—์„œ ๊ถŒ์žฅํ•˜๋Š” ์ˆœ์„œ๋‹ค. ํ•˜์ง€๋งŒ, ์ด ์ˆœ์„œ๊ฐ€ ์—„๊ฒฉํžˆ ๊ฐ•์ œ๋˜์ง„ ์•Š๋Š”๋‹ค. ์•„๋ž˜์™€ ๊ทœ์น™์„ ์ง€ํ‚ค๋Š” ์„ ์—์„œ ๋ช…๋ น์–ด ์ˆœ์„œ๋ฅผ ์œ ์—ฐํ•˜๊ฒŒ ๋ฐ”๊ฟ€ ์ˆ˜ ์žˆ๋‹ค๋Š” ๋ง์ด๋‹ค. ๋ฌผ๋ก , ๊ตณ์ด ๋ฐ”๊ฟ€ ์ผ์ด ์žˆ์„๊นŒ ์‹ถ๋‹ค.

  • define์€ ์ตœ์†Œ ์‹คํ–‰ ๋‹จ๊ณ„์ด๋ฏ€๋กœ ์›์‹œ ์ž…๋ ฅ๋งŒ์œผ๋กœ ๋ฐ”๋กœ ์‹œ์ž‘ํ•  ์ˆ˜ ์žˆ๋‹ค.
  • intake์™€ research๋Š” ์ƒ๋žต ๊ฐ€๋Šฅํ•˜๋‹ค.
  • shape๋Š” problem.md๊ฐ€ ์žˆ์–ด์•ผ ํ•œ๋‹ค.
  • decide๋„ problem.md๊ฐ€ ์žˆ์–ด์•ผ ํ•œ๋‹ค.
  • concept.md ์—†์ด decide๋ฅผ ์‹คํ–‰ํ•  ์ˆ˜๋Š” ์žˆ์ง€๋งŒ go ํŒ์ •์€ ๋ฐ›์„ ์ˆ˜ ์—†๋‹ค. ์ด ๊ฒฝ์šฐ needs-clarification์œผ๋กœ ํŒ์ •๋œ๋‹ค.

 

#5 "assess"์˜ go ํŒ์ • ์ดํ›„

go ํŒ์ •์ด ๋‚˜์™”๋‹ค๊ณ  /speckit.specify๊ฐ€ ์ž๋™ ์‹คํ–‰๋˜์ง€๋Š” ์•Š๋Š”๋‹ค. ๋Œ€์‹  decision.md์— ๋‹ค์Œ ๋‚ด์šฉ์ด ์ •๋ฆฌ๋œ๋‹ค.

  • Problem (ํ•ด๊ฒฐํ•  ๋ฌธ์ œ)
  • Chosen approach (์„ ํƒํ•œ ์ ‘๊ทผ๋ฒ•)
  • In scope / out of scope (ํฌํ•จํ•  ๋ฒ”์œ„์™€ ์ œ์™ธํ•  ๋ฒ”์œ„)
  • Success metrics (์„ฑ๊ณต ํŒ๋‹จ ๊ธฐ์ค€)
  • Carried-forward open questions (๋ช…์„ธ ๋‹จ๊ณ„๋กœ ๊ฐ€์ ธ๊ฐˆ ๋ฏธํ•ด๊ฒฐ ์งˆ๋ฌธ)

 

์ด์ œ ์•„๋ž˜์™€ ๊ฐ™์€ ๋ช…๋ น์–ด๋กœ, ๊ธฐ์กด ๋ช…์„ธ ํŒŒ์ดํ”„๋ผ์ธ์„ ์‹œ์ž‘ํ•˜๋ฉด ๋œ๋‹ค.

/speckit.specify .specify/assessments/example-slug-name/decision.md์˜ handoff ๋‚ด์šฉ์„ ๋ฐ”ํƒ•์œผ๋กœ ๊ธฐ๋Šฅ ๋ช…์„ธ๋ฅผ ์ž‘์„ฑํ•ด์ค˜.

handoff์— ์–ด๋–ค ํŠน๋ณ„ํ•œ ์˜๋ฏธ๊ฐ€ ์žˆ๋Š” ๊ฒƒ์€ ์•„๋‹ˆ๊ณ , ๊ทธ๋ƒฅ '์ธ๊ณ„', '์—…๋ฌด ๋„˜๊ฒจ์ฃผ๊ธฐ'์˜ ๋œป์„ ์ง€๋‹Œ ํ‰๋ฒ”ํ•œ ์˜์–ด ๋‹จ์–ด๋‹ค.

 

#6 ์‹ค์Šต

#6-1 ์ง„ํ–‰ ์˜ˆ์‹œ

/speckit.assess.intake "์ธํ„ฐ๋„ท์ด ๋Š๊ฒจ๋„ ์ž‘์—…ํ•˜๊ณ , ์—ฐ๊ฒฐ๋˜๋ฉด ๋™๊ธฐํ™”ํ•˜์ž" slug=offline-mode
/speckit.assess.research slug=offline-mode
/speckit.assess.define slug=offline-mode
/speckit.assess.shape slug=offline-mode
/speckit.assess.decide slug=offline-mode

์ดํ›„ ".specify/assessments/offline-mode/decision.md"์—์„œ ํŒ์ •์„ ํ™•์ธํ•ด ๋ณธ๋‹ค.

 

#6-2 ์‹ค์Šต์šฉ ๋ ˆํฌ์ง€ํ† ๋ฆฌ

 

GitHub - Kanmanemone/keenel-codelab at simple-first-practice-v0.13.0

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

github.com

Spec Kit ์‹ค์Šต์šฉ ๋ ˆํฌ์ง€ํ† ๋ฆฌ์—์„œ ์‹ค์ œ๋กœ ์ง„ํ–‰ํ•ด ๋ดค๋‹ค.