단일 스펙 변경 워크플로우
하나의 스펙을 생성하거나 수정할 때의 워크플로우입니다.
개요
브랜치 생성 → 스펙 작성 → 검증 → 커밋 → PR → 리뷰 → 병합단계별 가이드
1. 브랜치 생성
bash
# main에서 새 브랜치 생성
git checkout main
git pull origin main
git checkout -b spec/auth/user-login2. 스펙 작성
bash
# 새 스펙 생성
sdd new auth/user-login
# 또는 기존 스펙 수정
# .sdd/specs/auth/user-login/spec.md 편집3. 로컬 검증
bash
# 스펙 검증
sdd validate auth/user-login
# 전체 검증 (의존성 포함)
sdd validate
# Constitution 준수 확인
sdd validate --constitution4. 커밋
bash
# 변경 파일 확인
git status
# 스테이징
git add .sdd/specs/auth/user-login/
# 커밋 (컨벤션 준수)
git commit -m "spec(auth/user-login): add user login specification
이메일/비밀번호 기반 로그인 명세:
- 입력 검증 규칙
- 세션 생성 정책
- 실패 시나리오 정의
Depends-On: core/user-model"5. 푸시
bash
git push -u origin spec/auth/user-login6. PR 생성
bash
# GitHub CLI 사용
gh pr create \
--title "spec(auth): user-login specification" \
--body "## 개요
사용자 로그인 기능 명세
## 변경 내용
- 새 스펙: auth/user-login
## 체크리스트
- [x] sdd validate 통과
- [x] 의존성 명시
- [ ] 리뷰어 승인"7. 리뷰 & 수정
리뷰 피드백 반영:
bash
# 수정
# spec.md 편집
# 재검증
sdd validate auth/user-login
# 추가 커밋
git add .
git commit -m "spec-update(auth/user-login): address review feedback
- REQ-003 명확화
- 시나리오 2 수정"
git push8. 병합
PR 승인 후:
bash
# GitHub에서 Squash and merge
# 또는 CLI로
gh pr merge --squash9. 정리
bash
# 로컬 브랜치 삭제
git checkout main
git pull
git branch -d spec/auth/user-login전체 명령어 요약
bash
# 1. 브랜치 생성
git checkout main && git pull
git checkout -b spec/auth/user-login
# 2. 스펙 작성
sdd new auth/user-login
# 3. 검증
sdd validate auth/user-login
# 4. 커밋 & 푸시
git add .sdd/specs/auth/user-login/
git commit -m "spec(auth/user-login): add user login specification"
git push -u origin spec/auth/user-login
# 5. PR
gh pr create --title "spec(auth): user-login"
# 6. 병합 후 정리
gh pr merge --squash
git checkout main && git pull
git branch -d spec/auth/user-login모범 사례
스펙 작성
- 한 스펙 = 한 기능: 범위를 명확하게
- 의존성 명시:
depends_on필드 사용 - GIVEN-WHEN-THEN: 시나리오는 구체적으로
커밋
- 작은 단위: 논리적 변경 단위로
- 컨벤션 준수:
spec(scope): message형식 - 본문 활용: 변경 이유 설명
리뷰
- 자가 검증: PR 전
sdd validate - 설명 포함: PR 본문에 맥락 제공
- 빠른 반응: 피드백에 신속하게 대응
문제 해결
검증 실패
bash
# 오류 확인
sdd validate auth/user-login --verbose
# 일반적인 원인:
# - MUST/SHOULD 키워드 누락
# - GIVEN-WHEN-THEN 형식 오류
# - 의존성 스펙 미존재커밋 훅 실패
bash
# 커밋 메시지 형식 확인
# 올바른 형식: spec(auth/user-login): message
# 훅 우회 (권장하지 않음)
git commit --no-verify충돌 발생
bash
# main 최신화
git fetch origin
git rebase origin/main
# 충돌 해결 후
sdd validate auth/user-login
git add .
git rebase --continue