Spec Kit은 GitHub이 만든 "Spec-Driven Development(SDD)" 도구로, 스펙(사양서)을 먼저 작성하면 AI가 자동으로 구현 코드를 생성하는 개발 방법론 + CLI 툴킷이다. specify init my-project --ai claude 한 줄로 프로젝트를 초기화하면, Claude Code/Cursor/Copilot 등 AI 에이전트가 바로 사용할 수 있는 슬래시 커맨드와 헌법(constitution)이 자동으로 생성된다.
바이브 코딩은 "AI한테 말로 대충 지시하면 뭔가 나온다"는 방식이지만, Spec Kit은 "설계도를 제대로 그려야 원하는 건물이 나온다"는 철학입니다. 헌법(Constitution)이 AI의 코드 생성을 제약하는 "건축 규정" 역할을 하고, 스펙 → 계획 → 태스크 → 구현의 4단계 파이프라인이 설계도를 시공으로 변환합니다.
핵심은 21개 이상 AI 에이전트 어댑터입니다. Claude Code든 Cursor든 Copilot이든 같은 스펙 파일로 동일한 결과물을 만들 수 있도록 CommandRegistrar가 에이전트별 설정 차이를 추상화합니다.
AI 에이전트에게 즉흥적으로 "이거 만들어줘"를 반복하면 구조가 무너지고 일관성이 없어진다. PRD를 써도 개발자가 "해석"해야 하고, 코드 생성 품질을 제어할 방법이 없다.
체계적인 명세(스펙)가 AI 코드 생성의 "입력 품질 = 출력 품질"을 보장한다. Constitution(헌법) 9개 조항이 AI의 아키텍처 결정을 제약해 일관성을 유지한다.
| 비교 대상 | Spec Kit의 차별점 |
|---|---|
| 일반 PRD 작성 도구 | 스펙이 "실행 가능" — 직접 코드로 변환됨 |
| 바이브 코딩 (즉흥 프롬프트) | 체계적 명세 → 계획 → 태스크 → 구현의 4단계 파이프라인 |
| Cursor/Copilot 단독 사용 | 에이전트에 "헌법(Constitution)"과 "스펙 템플릿"을 주입하여 일관성 보장 |
| 기존 프로젝트 스캐폴딩 | 기술 스택 무관, 어떤 프로젝트든 SDD 워크플로 적용 가능 |
GitHub 공식 프로젝트라는 신뢰도, 21개 이상 AI 에이전트 지원, 106,332 스타로 폭발적 성장 중. "스펙이 왕, 코드는 스펙의 출력물"이라는 패러다임 전환이 개발자 커뮤니티에서 뜨거운 토론을 일으키고 있다.
| 구성 요소 | 기술 | 역할 |
|---|---|---|
| CLI 언어 | Python 3.11+ | 메인 CLI 도구 |
| 빌드 시스템 | Hatchling | Python 패키지 빌드 |
| 패키지 관리 | uv (권장) / pip | 설치 및 의존성 관리 |
| 포맷 | 용도 |
|---|---|
| Markdown | 스펙/계획/태스크/헌법 템플릿의 기본 포맷 |
| YAML | 프론트매터 메타데이터 |
| TOML | 일부 AI 에이전트용 커맨드 포맷 |
| JSON | VS Code 설정 (.vscode/settings.json) |
| 요소 | 설명 |
|---|---|
| GitHub Actions | CI/CD, 릴리스 자동화 |
| DevContainer | .devcontainer/ 개발 환경 정의 |
| Git | 브랜치 기반 피처 관리 (SDD의 핵심) |
[PLACEHOLDER] 슬롯을 가지며 AI가 이를 채운다. LLM 출력 품질을 제어하는 "구조화된 프롬프트" 역할.CommandRegistrar 클래스가 21개 이상 AI 에이전트를 통일된 인터페이스로 관리한다. 에이전트별로 디렉토리 경로, 파일 포맷, 플레이스홀더 문법이 달라도 동일한 커맨드 등록 로직을 공유한다.
# 에이전트별 설정 구조 (개념)
AGENT_CONFIG = {
"claude": {
"dir": ".claude/commands",
"format": "markdown",
"placeholder": "$ARGUMENTS"
},
"cursor": {
"dir": ".cursor/commands",
"format": "markdown",
"placeholder": "$ARGUMENTS"
},
"copilot": {
"dir": ".github/agents",
"format": "markdown",
"placeholder": "$ARGUMENTS"
}
# ... 18개 이상
}
프로젝트 "헌법"이 AI의 코드 생성을 제약한다. 9개 조항으로 구성:
| 조항 | 핵심 원칙 | 효과 |
|---|---|---|
| I | Library-First | 모든 기능을 재사용 가능한 라이브러리로 먼저 구현 |
| II | CLI Interface | 모든 라이브러리에 CLI 인터페이스 제공 (관찰 가능성) |
| III | Test-First | 구현 코드 전에 테스트 먼저 작성 |
| VII | Simplicity | 초기 프로젝트 수 ≤3개로 제한 |
| VIII | Anti-Abstraction | 프레임워크를 직접 사용, 불필요한 래핑 금지 |
| IX | Integration-First | 모의 객체 대신 실제 DB/서비스로 테스트 |
배울 것: "코드 우선" 사고에서 "스펙 우선" 사고로의 전환. 실행 가능한 명세(Executable Specification)의 개념. AI 시대의 소프트웨어 개발 프로세스 재설계.
실습: 자신의 사이드 프로젝트에 SDD 워크플로를 적용. 동일한 스펙으로 Claude Code vs Cursor에서 생성 결과 비교.
배울 것: typer + rich 조합으로 현대적 CLI 구축, 화살표 키 내비게이션 등 인터랙티브 터미널 UI 구현 (readchar), httpx로 비동기 HTTP + SOCKS 프록시 지원, platformdirs로 OS 독립적 경로 관리.
배울 것: 21개 이상 AI 에이전트를 하나의 인터페이스로 통합하는 아키텍처. 설정 기반 코드 생성 (설정 딕셔너리를 읽어 에이전트별 파일 생성). Markdown/TOML 간 포맷 변환.
실습: agents.py의 AGENT_CONFIG 구조를 분석하고, 새로운 에이전트 추가해보기.
배울 것: 마크다운 템플릿으로 LLM 출력을 구조화하는 기법. [NEEDS CLARIFICATION] 마커로 LLM의 "추측" 방지. 체크리스트를 통한 자기 검증 메커니즘. Constitution(헌법)으로 아키텍처 일관성 강제.
배울 것: CSS의 cascade와 유사한 4단계 우선순위 시스템. 조직 표준(프리셋) → 프로젝트 커스텀(오버라이드)의 계층적 설정 관리. 확장 포인트 설계로 서드파티 생태계 지원.
배울 것: 피처 번호 자동 부여 (001-feature-name, 002-next-feature), 브랜치명 자동 생성 및 시맨틱 네이밍, SPECIFY_FEATURE 환경 변수를 통한 비-Git 환경 지원.
| 항목 | 최소 요구 | 권장 |
|---|---|---|
| Python | 3.11+ | 3.12+ |
| 패키지 매니저 | pip | uv (더 빠름) |
| Git | 필수 | 최신 버전 |
| AI 에이전트 | 1개 이상 | Claude Code 권장 |
| 디스크 | 수 MB (CLI + 템플릿) | — |
| OS | Linux, macOS, Windows (PowerShell) | — |
에어갭(Air-Gapped) 환경: --offline 모드 + 번들 core_pack 에셋으로 네트워크 없이도 사용 가능. PyPI/GitHub 차단 환경을 위한 portable wheel 번들 가이드 별도 제공.
# 1. Spec Kit 설치
uv tool install specify-cli --from git+https://github.com/github/spec-kit.git@v0.3.2
# 2. 새 프로젝트 초기화 (Claude Code 사용)
specify init todo-app --ai claude
# 3. 헌법 작성
cd todo-app && claude "/speckit.constitution"
# 4. 첫 번째 스펙 작성
claude "/speckit.specify 간단한 할일 목록 CRUD 앱"
# 5. 계획 → 태스크 → 구현까지 완주
claude "/speckit.plan"
claude "/speckit.tasks"
claude "/speckit.implement"
# 기존 프로젝트 디렉토리에서
specify init . --ai claude --here
# 기존 코드베이스를 분석하여 헌법 작성
claude "/speckit.constitution"
# 새 기능을 SDD 방식으로 추가
claude "/speckit.specify 사용자 인증 기능 추가"
팀 표준 템플릿 세트를 만들어 여러 프로젝트에서 공유한다.
src/specify_cli/agents.py의 AGENT_CONFIG에 새 에이전트를 추가하고 PR을 작성해 오픈소스 기여를 체험한다.
Claude Code + Spec Kit으로 "스펙 → 코드 → 테스트 → 배포" 전체 자동화 파이프라인을 구축한다.
| 일차 | 학습 내용 | 실습 |
|---|---|---|
| 1~2일 | spec-driven.md 전문 정독 | SDD 개념 정리 노트 작성 |
| 3~4일 | Python typer + rich 튜토리얼 | 간단한 CLI 도구 만들기 |
| 5일 | Spec Kit으로 첫 프로젝트 생성 | 과제 1 완수 |
| 일차 | 학습 내용 | 실습 |
|---|---|---|
| 1~2일 | templates/ 디렉토리 전체 분석 | 각 템플릿의 역할 정리 |
| 3~4일 | LLM 제어용 템플릿 설계 기법 | 자신만의 스펙 템플릿 작성 |
| 5일 | Constitution 패턴 심화 | 팀 헌법 문서 작성 |
| 일차 | 학습 내용 | 실습 |
|---|---|---|
| 1~2일 | agents.py 소스코드 정독 | Strategy 패턴 구현 분석 |
| 3~4일 | Layered Override 시스템 이해 | 커스텀 프리셋 만들기 |
| 5일 | 멀티 에이전트 워크플로 비교 | Claude vs Copilot 결과 비교 |
| 일차 | 학습 내용 | 실습 |
|---|---|---|
| 1~3일 | 실제 프로젝트에 SDD 적용 | 풀스택 앱을 SDD로 개발 |
| 4~5일 | Spec Kit에 기여할 개선점 탐색 | 이슈/PR 작성 |
| 키워드 | 설명 |
|---|---|
| SDD | Spec-Driven Development. 스펙이 코드를 생성하는 개발 방법론. 전통적 "코드 우선"의 역전 |
| Constitution (헌법) | 프로젝트의 불변 아키텍처 원칙을 정의한 문서. AI의 코드 생성을 제약 |
| Executable Specification | 충분히 상세하여 AI가 직접 코드로 변환할 수 있는 명세서 |
| Specify CLI | Spec Kit의 커맨드라인 도구. specify init으로 프로젝트 초기화 |
| Slash Command | /speckit.specify 형태의 AI 에이전트 커맨드. 슬래시로 시작 |
| CommandRegistrar | 21개 이상 AI 에이전트에 대한 커맨드 등록/관리를 담당하는 핵심 클래스 |
| Template Override | 4단계 우선순위(로컬→프리셋→확장→코어)로 템플릿을 커스터마이징하는 시스템 |
| Preset | 팀/조직 단위의 표준 템플릿+설정 세트. 여러 프로젝트에서 재사용 |
| Feature Numbering | 피처를 001-, 002- 형태로 순차 번호 부여하여 관리하는 규칙 |
| NEEDS CLARIFICATION | 스펙 템플릿에서 모호한 부분에 표시하는 마커. AI의 추측 방지 |
| Given/When/Then | BDD(행위 주도 개발) 스타일의 인수 테스트 시나리오 포맷 |
| Library-First | 모든 기능을 먼저 재사용 가능한 라이브러리로 구현한 뒤 앱에 통합하는 원칙 |
| Integration-First Testing | 모의 객체 대신 실제 DB/서비스를 사용하여 테스트하는 원칙 |
| Air-Gapped | 외부 네트워크 접근이 차단된 환경. --offline 모드로 대응 |
| core_pack | CLI에 번들된 기본 템플릿 에셋. 네트워크 없이도 프로젝트 초기화 가능 |
| uv | Astral에서 만든 빠른 Python 패키지 매니저. pip 대체 권장 |
| Hatchling | Python 빌드 백엔드. pyproject.toml 기반 패키지 빌드 |