TRENDSHIFT #2 딥다이브 · 2026-03-23 분석

GitHub Spec Kit 딥다이브
— "스펙 먼저, 코드는 나중" SDD 방법론을 21개 이상 AI 에이전트에 적용하는 GitHub 공식 툴킷

GitHub이 만든 Spec-Driven Development(SDD) 도구. 스펙(사양서)을 먼저 작성하면 AI가 자동으로 구현 코드를 생성하는 개발 방법론 + CLI 툴킷. ⭐106,332(분석 시 80.8k) · Python · MIT · Claude Code, Cursor, GitHub Copilot, Gemini, Windsurf 등 21개 이상 AI 에이전트 지원. (저장소: github/spec-kit)
목차
  1. 프로젝트 한줄 요약
  2. 왜 주목받는가
  3. 기술 스택 전체 지도
  4. 아키텍처 심화 분석
  5. 디렉토리 구조 해부
  6. 학습 포인트 (기술별)
  7. 하드웨어 / 시스템 요구사항
  8. 직접 해볼 수 있는 실습 과제
  9. 관련 기술 심화 학습 로드맵
  10. 핵심 키워드 사전
  11. 참고 링크

1프로젝트 한줄 요약

Spec Kit이 정확히 무엇을 하는 도구인가

Spec Kit은 GitHub이 만든 "Spec-Driven Development(SDD)" 도구로, 스펙(사양서)을 먼저 작성하면 AI가 자동으로 구현 코드를 생성하는 개발 방법론 + CLI 툴킷이다. specify init my-project --ai claude 한 줄로 프로젝트를 초기화하면, Claude Code/Cursor/Copilot 등 AI 에이전트가 바로 사용할 수 있는 슬래시 커맨드와 헌법(constitution)이 자동으로 생성된다.

한 컷 비유

"건물 설계도(스펙)를 먼저 그리면, AI 건축 로봇(에이전트)이 자동으로 시공하는 시스템"

바이브 코딩은 "AI한테 말로 대충 지시하면 뭔가 나온다"는 방식이지만, Spec Kit은 "설계도를 제대로 그려야 원하는 건물이 나온다"는 철학입니다. 헌법(Constitution)이 AI의 코드 생성을 제약하는 "건축 규정" 역할을 하고, 스펙 → 계획 → 태스크 → 구현의 4단계 파이프라인이 설계도를 시공으로 변환합니다.

핵심은 21개 이상 AI 에이전트 어댑터입니다. Claude Code든 Cursor든 Copilot이든 같은 스펙 파일로 동일한 결과물을 만들 수 있도록 CommandRegistrar가 에이전트별 설정 차이를 추상화합니다.

2왜 주목받는가

트렌딩 이유와 경쟁 도구 대비 강점
기존 방식의 불편함
바이브 코딩의 한계 — 즉흥 프롬프트는 일관성 없는 결과물

AI 에이전트에게 즉흥적으로 "이거 만들어줘"를 반복하면 구조가 무너지고 일관성이 없어진다. PRD를 써도 개발자가 "해석"해야 하고, 코드 생성 품질을 제어할 방법이 없다.

Spec Kit의 해법
스펙 → 계획 → 태스크 → 구현 4단계 파이프라인 + 헌법으로 품질 제어

체계적인 명세(스펙)가 AI 코드 생성의 "입력 품질 = 출력 품질"을 보장한다. Constitution(헌법) 9개 조항이 AI의 아키텍처 결정을 제약해 일관성을 유지한다.

경쟁 도구 비교

비교 대상Spec Kit의 차별점
일반 PRD 작성 도구스펙이 "실행 가능" — 직접 코드로 변환됨
바이브 코딩 (즉흥 프롬프트)체계적 명세 → 계획 → 태스크 → 구현의 4단계 파이프라인
Cursor/Copilot 단독 사용에이전트에 "헌법(Constitution)"과 "스펙 템플릿"을 주입하여 일관성 보장
기존 프로젝트 스캐폴딩기술 스택 무관, 어떤 프로젝트든 SDD 워크플로 적용 가능

GitHub 공식 프로젝트라는 신뢰도, 21개 이상 AI 에이전트 지원, 106,332 스타로 폭발적 성장 중. "스펙이 왕, 코드는 스펙의 출력물"이라는 패러다임 전환이 개발자 커뮤니티에서 뜨거운 토론을 일으키고 있다.

3기술 스택 전체 지도

Python CLI · 템플릿 시스템 · 인프라

언어 및 런타임

구성 요소기술역할
CLI 언어Python 3.11+메인 CLI 도구
빌드 시스템HatchlingPython 패키지 빌드
패키지 관리uv (권장) / pip설치 및 의존성 관리

핵심 Python 의존성

typer → CLI 프레임워크 (Click 기반) click >= 8.1 → CLI 커맨드 파싱 rich → 터미널 UI (색상, 패널, 프로그레스바) httpx[socks] → HTTP 클라이언트 (GitHub API 호출, SOCKS 프록시 지원) platformdirs → OS별 데이터 디렉토리 관리 readchar → 터미널 키보드 입력 (화살표 키 내비게이션) pyyaml >= 6.0 → YAML 파싱 (프론트매터, 설정 파일) json5 → JSON5 파싱 (느슨한 JSON 포맷) pathspec → Gitignore 스타일 패턴 매칭

템플릿 시스템

포맷용도
Markdown스펙/계획/태스크/헌법 템플릿의 기본 포맷
YAML프론트매터 메타데이터
TOML일부 AI 에이전트용 커맨드 포맷
JSONVS Code 설정 (.vscode/settings.json)

인프라 / DevOps

요소설명
GitHub ActionsCI/CD, 릴리스 자동화
DevContainer.devcontainer/ 개발 환경 정의
Git브랜치 기반 피처 관리 (SDD의 핵심)

4아키텍처 심화 분석

SDD 파이프라인 · 4개 설계 패턴 · Constitution 9개 조항

SDD 워크플로 파이프라인

아이디어 → 헌법 → 스펙 → 계획 → 태스크 → 구현 ┌──────────┐ ┌──────────┐ ┌──────────┐ │ /speckit │ │ /speckit │ │ /speckit │ │.constitu-│───▶│.specify │───▶│ .plan │ │ tion │ │ │ │ │ └──────────┘ └──────────┘ └────┬─────┘ 프로젝트 원칙 기능 명세서 │ 기술 계획서 (1회 작성) (피처당 1개) │ ▼ ┌──────────┐ ┌──────────┐ ┌──────────┐ │ 코드 │ │ /speckit │ │ /speckit │ │ 생성 │◀───│.implement│◀───│ .tasks │ │ 완료! │ │ │ │ │ └──────────┘ └──────────┘ └──────────┘ 태스크 실행 태스크 분해

시스템 구조도

$ specify init my-project --ai claude │ ▼ ┌─────────────────────────────────────────────────────────┐ │ Specify CLI (Python/Typer) │ │ init 커맨드 | check 커맨드 | version 커맨드 │ │ │ │ │ CommandRegistrar (agents.py) │ │ Claude 설정 | Copilot 설정 | Cursor 설정 | ...18개 │ │ │ │ │ Template Engine │ │ Core 템플릿 | Preset 프리셋 | 확장 │ └───────────────┬─────────────────────────────────────────┘ ▼ 생성된 프로젝트 구조: my-project/ ├── .specify/ ← SDD 핵심 디렉토리 ├── .claude/commands/ ← AI 에이전트 슬래시 커맨드 ├── .specify/memory/constitution.md ← 프로젝트 헌법 └── specs/ ← 피처별 스펙 저장소

설계 패턴 ①: Template Method

핵심 패턴
Template Method — 구조화된 프롬프트
모든 산출물(스펙, 계획, 태스크)이 Markdown 템플릿에서 시작. 템플릿은 [PLACEHOLDER] 슬롯을 가지며 AI가 이를 채운다. LLM 출력 품질을 제어하는 "구조화된 프롬프트" 역할.

설계 패턴 ②: Strategy (에이전트 어댑터)

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개 이상
}

설계 패턴 ③: Layered Override (4단계 우선순위)

우선순위 높음 ──────────────────── 우선순위 낮음 프로젝트 로컬 프리셋 확장 코어 .specify/ .specify/ .specify/ .specify/ templates/ presets/ extensions/ templates/ overrides/ <id>/ <id>/ (기본) templates/ templates/ → 팀 표준(프리셋) + 개인 커스텀(오버라이드) 동시 지원

설계 패턴 ④: Constitution (아키텍처 거버넌스)

프로젝트 "헌법"이 AI의 코드 생성을 제약한다. 9개 조항으로 구성:

조항핵심 원칙효과
ILibrary-First모든 기능을 재사용 가능한 라이브러리로 먼저 구현
IICLI Interface모든 라이브러리에 CLI 인터페이스 제공 (관찰 가능성)
IIITest-First구현 코드 전에 테스트 먼저 작성
VIISimplicity초기 프로젝트 수 ≤3개로 제한
VIIIAnti-Abstraction프레임워크를 직접 사용, 불필요한 래핑 금지
IXIntegration-First모의 객체 대신 실제 DB/서비스로 테스트

5디렉토리 구조 해부

레포 자체 구조 + 생성되는 프로젝트 구조

Spec Kit 레포 자체 구조

github/spec-kit/ ├── .devcontainer/ # VS Code Dev Container 설정 ├── .github/ # GitHub Actions 워크플로 ├── docs/ # 문서 │ ├── installation.md # 설치 가이드 (에어갭 포함) │ └── upgrade.md # 업그레이드 가이드 ├── extensions/ # 확장 기능 템플릿 (서드파티 확장 포인트) ├── presets/ # 팀/조직 표준 템플릿 세트 ├── src/specify_cli/ # ★ 메인 CLI 소스코드 │ ├── __init__.py # CLI 엔트리포인트 (typer 앱) │ ├── agents.py # CommandRegistrar (21개 에이전트) │ ├── extensions.py # 확장 기능 관리 │ └── presets.py # 프리셋 관리 ├── templates/ # ★ 핵심 템플릿 │ ├── commands/ # AI 에이전트 슬래시 커맨드 원본 │ ├── constitution-template.md │ ├── plan-template.md │ ├── spec-template.md │ └── tasks-template.md ├── tests/ # pytest 테스트 ├── spec-driven.md # ★ SDD 방법론 심화 가이드 ├── AGENTS.md # 에이전트 통합 문서 └── pyproject.toml # Python 프로젝트 설정

생성되는 프로젝트 구조 (specify init my-app --ai claude)

my-app/ ├── .claude/ │ └── commands/ # Claude Code 슬래시 커맨드 │ ├── speckit.specify.md │ ├── speckit.plan.md │ ├── speckit.tasks.md │ ├── speckit.implement.md │ ├── speckit.constitution.md │ ├── speckit.clarify.md │ ├── speckit.analyze.md │ └── speckit.checklist.md ├── .specify/ │ ├── templates/overrides/ # 프로젝트 로컬 커스텀 │ ├── presets/ # 프리셋 디렉토리 │ ├── extensions/ # 확장 디렉토리 │ └── memory/ │ └── constitution.md # 프로젝트 헌법 ├── specs/ # 피처 스펙 저장소 │ └── 001-feature-name/ │ ├── spec.md │ ├── plan.md │ ├── tasks.md │ └── research.md └── .git/ # Git 자동 초기화

6학습 포인트 (기술별)

이 레포에서 무엇을 배울 수 있는가

6-1. Spec-Driven Development (SDD) 방법론

배울 것: "코드 우선" 사고에서 "스펙 우선" 사고로의 전환. 실행 가능한 명세(Executable Specification)의 개념. AI 시대의 소프트웨어 개발 프로세스 재설계.

실습: 자신의 사이드 프로젝트에 SDD 워크플로를 적용. 동일한 스펙으로 Claude Code vs Cursor에서 생성 결과 비교.

6-2. CLI 도구 설계 (Python/Typer)

배울 것: typer + rich 조합으로 현대적 CLI 구축, 화살표 키 내비게이션 등 인터랙티브 터미널 UI 구현 (readchar), httpx로 비동기 HTTP + SOCKS 프록시 지원, platformdirs로 OS 독립적 경로 관리.

6-3. 다중 에이전트 어댑터 패턴

배울 것: 21개 이상 AI 에이전트를 하나의 인터페이스로 통합하는 아키텍처. 설정 기반 코드 생성 (설정 딕셔너리를 읽어 에이전트별 파일 생성). Markdown/TOML 간 포맷 변환.

실습: agents.py의 AGENT_CONFIG 구조를 분석하고, 새로운 에이전트 추가해보기.

6-4. 템플릿 기반 LLM 제어

배울 것: 마크다운 템플릿으로 LLM 출력을 구조화하는 기법. [NEEDS CLARIFICATION] 마커로 LLM의 "추측" 방지. 체크리스트를 통한 자기 검증 메커니즘. Constitution(헌법)으로 아키텍처 일관성 강제.

6-5. Layered Override 시스템

배울 것: CSS의 cascade와 유사한 4단계 우선순위 시스템. 조직 표준(프리셋) → 프로젝트 커스텀(오버라이드)의 계층적 설정 관리. 확장 포인트 설계로 서드파티 생태계 지원.

6-6. Git 기반 피처 관리

배울 것: 피처 번호 자동 부여 (001-feature-name, 002-next-feature), 브랜치명 자동 생성 및 시맨틱 네이밍, SPECIFY_FEATURE 환경 변수를 통한 비-Git 환경 지원.

7하드웨어 / 시스템 요구사항

에어갭(Air-Gapped) 환경 지원 포함
항목최소 요구권장
Python3.11+3.12+
패키지 매니저pipuv (더 빠름)
Git필수최신 버전
AI 에이전트1개 이상Claude Code 권장
디스크수 MB (CLI + 템플릿)
OSLinux, macOS, Windows (PowerShell)

에어갭(Air-Gapped) 환경: --offline 모드 + 번들 core_pack 에셋으로 네트워크 없이도 사용 가능. PyPI/GitHub 차단 환경을 위한 portable wheel 번들 가이드 별도 제공.

8직접 해볼 수 있는 실습 과제

난이도별 5가지 과제
과제 1

SDD 전체 체험 ★ 초급

# 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"
과제 2

기존 프로젝트에 SDD 적용 ★★ 중급

# 기존 프로젝트 디렉토리에서
specify init . --ai claude --here

# 기존 코드베이스를 분석하여 헌법 작성
claude "/speckit.constitution"

# 새 기능을 SDD 방식으로 추가
claude "/speckit.specify 사용자 인증 기능 추가"
과제 3

커스텀 프리셋 만들기 ★★★ 중고급

팀 표준 템플릿 세트를 만들어 여러 프로젝트에서 공유한다.

단계: (1) .specify/presets/my-team/templates/ 디렉토리에 팀 표준 템플릿 세트 배치 (2) 스펙 템플릿에 팀 고유의 섹션 추가 (보안 검토, 성능 기준 등) (3) 여러 프로젝트에서 동일 프리셋 공유
과제 4

새 AI 에이전트 어댑터 추가 ★★★★ 고급

src/specify_cli/agents.py의 AGENT_CONFIG에 새 에이전트를 추가하고 PR을 작성해 오픈소스 기여를 체험한다.

분석 포인트: (1) AGENT_CONFIG 딕셔너리 구조 분석 (2) CommandRegistrar의 렌더링 로직 이해 (3) 새 에이전트의 커맨드 파일 경로/포맷/플레이스홀더 파악 (4) 테스트 추가 후 PR 작성
과제 5

SDD 전체 파이프라인 자동화 ★★★★★ 최고급

Claude Code + Spec Kit으로 "스펙 → 코드 → 테스트 → 배포" 전체 자동화 파이프라인을 구축한다.

단계: (1) GitHub Actions에서 /speckit.implement 자동 실행 (2) 스펙 변경 시 코드 자동 재생성 파이프라인 구축 (3) 테스트 자동 실행 + 결과 PR 댓글로 요약

9관련 기술 심화 학습 로드맵

4주 SDD + CLI 개발 학습 플랜

1주차: SDD 기초 + CLI 도구

일차학습 내용실습
1~2일spec-driven.md 전문 정독SDD 개념 정리 노트 작성
3~4일Python typer + rich 튜토리얼간단한 CLI 도구 만들기
5일Spec Kit으로 첫 프로젝트 생성과제 1 완수

2주차: 템플릿 시스템 + 프롬프트 엔지니어링

일차학습 내용실습
1~2일templates/ 디렉토리 전체 분석각 템플릿의 역할 정리
3~4일LLM 제어용 템플릿 설계 기법자신만의 스펙 템플릿 작성
5일Constitution 패턴 심화팀 헌법 문서 작성

3주차: 아키텍처 패턴 + 에이전트 어댑터

일차학습 내용실습
1~2일agents.py 소스코드 정독Strategy 패턴 구현 분석
3~4일Layered Override 시스템 이해커스텀 프리셋 만들기
5일멀티 에이전트 워크플로 비교Claude vs Copilot 결과 비교

4주차: 실전 프로젝트 + 기여

일차학습 내용실습
1~3일실제 프로젝트에 SDD 적용풀스택 앱을 SDD로 개발
4~5일Spec Kit에 기여할 개선점 탐색이슈/PR 작성

10핵심 키워드 사전

이 레포를 이해하는 데 꼭 필요한 용어들
키워드설명
SDDSpec-Driven Development. 스펙이 코드를 생성하는 개발 방법론. 전통적 "코드 우선"의 역전
Constitution (헌법)프로젝트의 불변 아키텍처 원칙을 정의한 문서. AI의 코드 생성을 제약
Executable Specification충분히 상세하여 AI가 직접 코드로 변환할 수 있는 명세서
Specify CLISpec Kit의 커맨드라인 도구. specify init으로 프로젝트 초기화
Slash Command/speckit.specify 형태의 AI 에이전트 커맨드. 슬래시로 시작
CommandRegistrar21개 이상 AI 에이전트에 대한 커맨드 등록/관리를 담당하는 핵심 클래스
Template Override4단계 우선순위(로컬→프리셋→확장→코어)로 템플릿을 커스터마이징하는 시스템
Preset팀/조직 단위의 표준 템플릿+설정 세트. 여러 프로젝트에서 재사용
Feature Numbering피처를 001-, 002- 형태로 순차 번호 부여하여 관리하는 규칙
NEEDS CLARIFICATION스펙 템플릿에서 모호한 부분에 표시하는 마커. AI의 추측 방지
Given/When/ThenBDD(행위 주도 개발) 스타일의 인수 테스트 시나리오 포맷
Library-First모든 기능을 먼저 재사용 가능한 라이브러리로 구현한 뒤 앱에 통합하는 원칙
Integration-First Testing모의 객체 대신 실제 DB/서비스를 사용하여 테스트하는 원칙
Air-Gapped외부 네트워크 접근이 차단된 환경. --offline 모드로 대응
core_packCLI에 번들된 기본 템플릿 에셋. 네트워크 없이도 프로젝트 초기화 가능
uvAstral에서 만든 빠른 Python 패키지 매니저. pip 대체 권장
HatchlingPython 빌드 백엔드. pyproject.toml 기반 패키지 빌드

11참고 링크

더 깊이 파고들 때 유용한 자료들