자동으로 피처 스펙 문서를 생성하고 EARS 형식으로 요구사항 정의를 도와드립니다
피처 개발 시 스펙 문서 작성을 자동으로 도와드립니다.
다음 상황에서 자동으로 활성화됩니다:
사용자에게 다음을 질문하여 피처를 명확히 합니다:
필수 질문:
추가 질문 (필요시): 5. 외부 의존성: 다른 시스템/API와 연동이 필요한가요? 6. 보안 요구사항: 민감한 데이터를 다루나요? 7. 성능 요구사항: 특정 성능 기준이 있나요?
수집한 정보를 바탕으로 5가지 EARS 유형으로 요구사항을 정의합니다:
Ubiquitous (보편적)
Event-driven (이벤트 기반)
State-driven (상태 기반)
Unwanted (바람직하지 않은)
Optional (선택적)
/spec-create 커맨드를 실행하여 3-file 구조를 생성:
docs/specs/{feature-name}/
├── spec.md # EARS 요구사항
├── plan.md # 구현 계획
├── acceptance.md # Given/When/Then 인수 기준
└── CHANGELOG.md # 변경 이력
생성된 spec.md를 열고 실제 요구사항을 함께 작성합니다:
spec.md의 요구사항을 바탕으로 plan.md를 자동으로 작성합니다:
5-1. Technical Approach 정의
5-2. Data Model 설계
-- 데이터베이스 스키마 작성
CREATE TABLE {feature} (
id UUID PRIMARY KEY,
-- 필드 정의
);
5-3. API Endpoints 정의
GET /api/{feature} - 목록 조회
GET /api/{feature}/:id - 상세 조회
POST /api/{feature} - 생성
PUT /api/{feature}/:id - 수정
DELETE /api/{feature}/:id - 삭제
5-4. Implementation Tasks 작성 spec.md의 Event-driven 요구사항을 태스크로 변환:
각 태스크에 예상 시간과 의존성 추가:
- [ ] TASK-001: 제품 추가 기능 구현
- Estimated: 3시간
- Dependencies: 없음
5-5. Estimated Effort 계산 모든 태스크의 예상 시간을 합산하여 총 노력량 계산
5-6. Risk Assessment 작성 주요 리스크 식별 및 완화 방안 작성
spec.md의 Event-driven 요구사항을 Given/When/Then로 변환:
변환 규칙:
[E-001] WHEN 사용자가 장바구니에 제품을 추가하면,
IF 제품이 이미 장바구니에 있으면,
THEN 시스템은 기존 수량에 새 수량을 더해야 한다.
↓ 변환 ↓
**[AC-001] 사용자는 장바구니에 제품을 추가할 수 있다**
Given:
- 사용자가 로그인되어 있다
- 장바구니 페이지에 접근했다
- 제품이 이미 장바구니에 있다
When:
- 사용자가 동일한 제품을 추가한다
Then:
- 장바구니에 기존 수량 + 새 수량이 표시된다
- 총 금액이 재계산된다
6-1. 주요 시나리오 작성 spec.md의 모든 Event-driven 요구사항을 시나리오로 변환
6-2. Edge Cases 작성
6-3. Performance Criteria 작성 spec.md의 Performance 요구사항을 인수 기준으로 변환
6-4. Security Criteria 작성 spec.md의 Security 요구사항을 인수 기준으로 변환
6-5. Testing Checklist 작성
예시: 사용자 인증 피처
**[U-001]**
시스템은 사용자의 비밀번호를 bcrypt로 해싱하여 저장해야 한다.
**[E-001]**
WHEN 사용자가 로그인을 요청하면,
IF 이메일과 비밀번호가 유효하면,
THEN 시스템은 JWT 토큰을 발행하고 반환해야 한다.
**[S-001]**
WHILE 사용자가 로그인되어 있는 동안,
시스템은 세션을 1시간마다 갱신해야 한다.
**[UW-001]**
시스템은 미인증 사용자의 보호된 리소스 접근을 허용하면 안 된다.
**[O-001]**
가능하다면, 시스템은 OAuth 2.0 소셜 로그인을 제공해야 한다.
사용 경우:
템플릿:
시스템은 [항상 참인 동작]해야 한다.
예시:
사용 경우:
템플릿:
WHEN [이벤트]하면,
IF [조건]라면,
THEN 시스템은 [응답]해야 한다.
예시:
사용 경우:
템플릿:
WHILE [상태]인 동안,
시스템은 [유지할 동작]해야 한다.
예시:
사용 경우:
템플릿:
시스템은 [금지된 동작]하면 안 된다.
예시:
사용 경우:
템플릿:
가능하다면, 시스템은 [선택적 기능]해야 한다.
예시:
다음이 완료되면 스킬 작업을 종료합니다:
❌ 나쁨:
시스템은 빨라야 한다.
✅ 좋음:
[P-001] 목록 조회 API는 200ms 이내에 응답해야 한다.
❌ 나쁨 (Ubiquitous를 Event-driven로):
WHEN 사용자가 데이터를 저장하면, 시스템은 보안을 유지해야 한다.
✅ 좋음:
[U-001] 시스템은 모든 사용자 데이터를 암호화하여 저장해야 한다.
❌ 나쁨 (구현 관점):
시스템은 PostgreSQL에 데이터를 저장해야 한다.
✅ 좋음 (사용자 관점):
시스템은 사용자 데이터를 영구적으로 저장하고 복구할 수 있어야 한다.
다음 말들을 하면 이 스킬이 자동으로 활성화됩니다:
이 스킬은 EARS 형식을 사용하여 명확하고 테스트 가능한 요구사항을 작성하도록 도와드립니다.