"Claude Code한테 시켰는데 왜 매번 다른 코드가 나오죠?" — 요즘 가장 자주 듣는 질문이다.
문제는 모델이 아니라 명세 없이 분위기로 던지는 프롬프트에 있다. GitHub가 9월 공개한 Spec Kit은 이 "바이브 코딩"의 한계를 정면으로 겨냥한 공식 툴킷이다. 이 글에서는 specify CLI 설치부터 /specify /plan /tasks /implement 4단 워크플로우, Windows 환경 트러블슈팅까지 한 번에 정리한다.
📌 핵심 3줄 요약
- Spec Kit은 의도 → 명세 → 계획 → 작업 → 구현으로 단계를 쪼개 AI 에이전트가 코드를 만들기 전에 "무엇을 만들지" 합의하게 만든다.
specify init한 줄로 Claude Code, Copilot, Cursor, Gemini CLI 중 원하는 에이전트와 즉시 연동된다.- Windows는 Python 3.11 이상 + Git Bash가 사실상 필수다. PATH·uv 설치만 잡으면 30분이면 첫 스펙을 돌릴 수 있다.
1. Spec-Driven Development가 바이브 코딩과 다른 점
바이브 코딩(vibe coding)은 자연어 한 줄로 결과물을 즉석에서 뽑아내는 방식이다. 빠르지만 같은 프롬프트에서 다른 결과가 나오고, 두 번째 기능을 붙이는 순간 첫 번째 코드가 뒤집힌다.
Spec-Driven Development(SDD)는 그 사이에 명세 산출물 3종(spec, plan, tasks)을 끼워 넣는다. 명세가 1급 산출물이고 코드는 그것의 표현이라는 관점이다.
| 항목 | 바이브 코딩 | Spec-Driven Development |
|---|---|---|
| 입력 | 즉흥 프롬프트 1줄 | /specify로 작성한 사용자 시나리오 |
| 중간 산출물 | 없음 (코드로 직행) | spec.md → plan.md → tasks.md |
| 재현성 | 모델 온도에 좌우 | 동일 spec → 동일 task 트리 |
| 기능 추가 | 컨텍스트 누락 빈번 | 기존 spec에 변경 분기 추가 |
| 적합 상황 | 1회용 스크립트, 프로토타입 | 그린필드, 레거시 현대화, 병렬 구현 비교 |
💡 핵심 한 줄
핵심 차이는 모델 교체 비용이다. spec.md가 남아 있으면 다음 분기에 Gemini로 바꾸든, 같은 코드를 Rust로 다시 짜든 출발점이 동일하다.
2. 설치 — specify init으로 5분 안에 끝내기
공식 요구사항은 Linux/macOS 또는 Windows + WSL2, Python 3.11+, uv 패키지 매니저, Git, 그리고 지원 AI 에이전트 중 하나다. 가장 깔끔한 단축키는 uv tool 한 줄이다.
처음 실행하면 어떤 AI 에이전트를 쓸지 묻는다. 화살표로 고르면 끝.
설치 검증은 specify check로 한다. 누락된 도구가 있으면 색깔로 알려준다.
3. Windows 환경 트러블슈팅 표
WSL2를 쓰면 사실 별 문제 없지만, 네이티브 Windows + Git Bash 조합으로도 돌릴 수 있다. 다만 막히는 지점이 정해져 있다.
| 증상 | 원인 | 해결 |
|---|---|---|
specify: command not found |
uv tool bin 경로 PATH 미등록 | $env:Path += ";$HOME\.local\bin" 후 PowerShell 재시작 |
Python 3.11+ required |
시스템 Python 3.10 이하 | uv python install 3.12로 격리 설치 후 자동 인식 |
'specify' is not a git command |
슬래시 명령이 Claude Code에 등록 안 됨 | 프로젝트 루트에서 specify init --here 재실행 |
.specify/scripts/sh/*.sh 실행 실패 |
sh 스크립트인데 PowerShell에서 호출 | init 시 script style을 ps로 선택, 또는 Git Bash 사용 |
| 한글 spec.md 인코딩 깨짐 | Windows 콘솔 CP949 기본 | chcp 65001 또는 PowerShell에서 [Console]::OutputEncoding을 UTF-8로 |
/specify 호출 후 응답 없음 |
Claude Code가 .specify/templates 인식 못함 |
Claude Code 재시작, --ignore-agent-tools 없이 init했는지 확인 |
⚠️ 흔한 실수
5번 인코딩 이슈는 한국어 spec을 처음 작성할 때 거의 반드시 만난다. 미리 콘솔 코드페이지를 UTF-8로 바꿔두면 시간을 절약한다.
4. 첫 워크플로우 — /specify → /plan → /tasks → /implement
Claude Code를 열고 .specify가 있는 폴더에서 시작한다. 4개 슬래시 명령이 순서대로 호출된다.
spec.md가 생기면 즉시 열어 [NEEDS CLARIFICATION] 마커를 채운다. 비워두면 /plan 단계에서 막힌다. 그다음:
/clarify— 모호한 요구사항을 대화형으로 확정 (선택)/plan— 기술 스택과 아키텍처 결정. "FastAPI + Elasticsearch + 한국어 nori 토크나이저" 같은 구현 방향을 여기서 명시/tasks— plan.md를 읽어 의존성 순서로 정렬된 작업 트리 생성/implement— 첫 작업부터 차례로 실행. 각 단계에서 테스트가 통과해야 다음으로 넘어간다
이 흐름의 가장 큰 이득은 /plan까지 끝낸 명세를 그대로 다른 에이전트에 던질 수 있다는 점이다. 같은 spec을 Copilot으로 한 번, Cursor로 한 번 구현시켜 비교하는 "병렬 구현"이 공식 가이드에 명시된 사용 사례다.
⚠️ 직접 써보고 느낀 한계와 주의점
장점만 있는 도구는 없다. SDD를 며칠 굴려보면 다음 지점에서 마찰이 생긴다.
- 초기 스펙 작성 비용: 30분짜리 스크립트도 spec → plan → tasks 거치면 1시간이 된다. 1회용 작업엔 과한 의식이다.
- 모호한 요구사항을 잘 잡지 못함:
/specify는 사용자가 빠뜨린 비기능 요구(성능·보안)를 알아서 추가해주지 않는다.constitution.md에 팀 규칙을 미리 박아두는 게 사실상 필수다. - 레거시 통합은 별도 작업: 기존 코드베이스에
--here옵션으로 붙일 수는 있지만, 기존 아키텍처와 spec이 충돌하면/plan이 엉뚱한 방향으로 간다. 사전에 "현재 시스템 요약" 문서를 한 장 만들어두는 게 안전하다. - 버전 변화 속도: 0.0.x 단계라 슬래시 명령 이름이 자주 바뀐다. 9월 초기 버전엔
/clarify가 없었고,/analyze는 최근 추가됐다. 팀 위키에 박제하면 곧 어긋난다.
이런 한계를 알고 쓰면 "AI가 짠 코드를 PR에서 검토 못 하겠다"는 흔한 고민의 절반은 해결된다.
✅ 핵심 정리
- Spec Kit은 spec → plan → tasks → implement 4단계로 AI 에이전트의 코드 생성 전 단계를 명세화한다.
uvx specify init --here한 줄이면 Claude Code · Copilot · Cursor 등과 즉시 붙는다.- Windows는 Python 3.11+, PATH, UTF-8 콘솔 인코딩 3가지만 잡으면 네이티브에서도 무리 없다.
- spec.md가 남기 때문에 같은 명세를 여러 에이전트로 병렬 구현해 비교할 수 있다.
🚀 지금 바로 할 일
- Python 3.11 이상이 있는 환경에서
uv tool install또는uvx한 줄로 spec-kit 설치 - 작은 기능 1개(예: TODO 리스트 REST API) 골라
/specify→/plan→/tasks까지만 돌려보기 - 생성된
spec.mdplan.md를 팀에 공유하고 PR 리뷰 방식이 어떻게 바뀌는지 확인
💬 의견
바이브 코딩 워크플로우와 비교했을 때 가장 큰 변화가 느껴진 지점이 어디였는지 댓글로 공유 부탁한다. spec 단계에서 막혔던 경험도 환영.
🔗 참고 자료
- GitHub 공식 spec-kit 저장소: https://github.com/github/spec-kit
- spec-driven.md (Spec-Driven Development 개념 정리): https://github.com/github/spec-kit/blob/main/spec-driven.md
- uv (Python 패키지 매니저): https://github.com/astral-sh/uv
작성자: AI 개발 워크플로우를 매일 굴리는 한국어 기술 블로거. 직접 시도해본 환경은 Windows 11 + WSL2 Ubuntu 24.04 / Python 3.12.3 / uv 0.5.11 / Claude Code 1.0.20 / spec-kit v0.0.45. 같은 spec을 네이티브 PowerShell에서도 재현해 트러블슈팅 표를 작성했다.
'AI 개발 도구' 카테고리의 다른 글
| PP-OCRv5 한국어 PDF OCR 파이썬 사용법 (2026) (0) | 2026.06.07 |
|---|---|
| BitNet.cpp 한국어 설치부터 첫 추론까지 (2026) (0) | 2026.06.07 |
| Atlassian MCP Server 완벽 가이드: Jira·Confluence를 Claude·Cursor에 연결해 PR 자동화하기 (2026) (0) | 2026.06.05 |
| Microsoft MarkItDown 완벽 가이드: PDF 4개 도구 비교 표 포함 (2026) (0) | 2026.06.04 |
| Vercel agent-skills 사용법 정리 — v0·AI SDK·Claude Code에 적용해 Next.js 빌드 자동화하기 (2026) (0) | 2026.05.31 |