plugins/ai-registry/common/spec-pipeline/skills/spec-interview/SKILL.md
Use when planning teams need to clarify and structure requirements through business-language interviewing. For non-technical stakeholders who have rough ideas, meeting notes, or vague feature descriptions that need to become structured requirements before development. Triggers: "기획 인터뷰", "요구사항 정리", "spec interview", "기능 정리해줘", "기획서 작성 도와줘", "이거 정리해줘"
npx skillsauth add onejaejae/skills spec-interviewInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
기획팀용 역질문 인터뷰. 비구조화된 아이디어를 비즈니스 언어로 질문하여 구조화된 요구사항 문서로 정리한다.
Do NOT use when:
AskUserQuestion은 이 스킬이 로드된 턴(같은 assistant turn)에서 절대 호출하지 마세요.
Skill tool로 이 스킬이 로드되면, 같은 턴에서 AskUserQuestion을 호출할 경우 사용자에게 질문 UI가 표시되지 않고 빈 응답으로 자동 처리됩니다 (Claude Code 플랫폼 제약).
필수 절차:
이 규칙을 어기면 사용자가 질문을 볼 수 없고, 인터뷰가 진행되지 않습니다.
| Phase | Action | Key Rule |
|-------|--------|----------|
| 1. 도메인 컨텍스트 파악 | specs/ 스캔 + input 분석 + 주제 분류 | 도메인 문서 스캔. 코드 스캔 아님 |
| 2. 스토리 기반 탐색 (OPEN) | 개방형 질문으로 맥락과 문제 파악 | 넓게 시작, 프레이밍 금지 |
| 3. 시나리오 구체화 (PROBE) | 정상흐름 → 예외 도출 → 상태 발견 | 구체 예시로 모호성 제거 |
| 4. 빈틈 채우기 (FOCUS) | 누락 항목 기반 타겟 질문 | 빠진 차원만 선별 |
| 5. 범위 확정 + 완료 검증 | 범위/성공기준 확정 | 완료 기준 충족 시에만 종료 |
| 6. 요구사항 출력 | specs/{feature}-requirements.md | 항상 이 경로 |
1. 비기술 언어만 사용한다. 기획팀이 주 사용자이다. 기술 용어를 절대 쓰지 않는다.
| 기술 용어 (사용 금지) | 비즈니스 질문 (이렇게 질문) | |---|---| | 상태 전이 다이어그램 | "이 데이터가 어떤 단계를 거치나요?" | | 소프트 삭제 / 하드 삭제 | "삭제하면 완전히 사라지나요, 복구할 수 있나요?" | | 페이지네이션 | "목록이 길면 어떻게 나누나요?" | | API 계약 | "이 기능이 다른 시스템과 주고받는 정보는?" | | 인가/인증 | "누가 이걸 쓸 수 있고, 누가 못 쓰나요?" | | 비기능 요구사항 | "동시에 몇 명이 쓸 수 있어야 하나요?" | | 데이터 모델 | "어떤 정보를 저장하고 보여줘야 하나요?" |
2. 개방형 → 탐침 → 구체적 순서로 질문한다 (Funnel). 구체적 질문으로 시작하면 응답자를 프레이밍에 가둔다. 반드시 넓게 열고 좁혀간다.
3. 가상이 아닌 실제 경험을 묻는다. "~하면 어떨 것 같아요?"는 신뢰할 수 없다. "마지막으로 ~했을 때 어떻게 하셨나요?"로 실제 경험에서 요구사항을 추출한다.
기존 interview Skill과 다르게, 코드를 스캔하지 않는다. 대신:
specs/ 폴더를 Glob/Read로 스캔하여 관련 기존 요구사항/기획서 확인기존 specs/에 관련 문서가 없으면 빠르게 넘기고 Phase 2로 진행한다.
AskUserQuestion으로 2-3개 질문/라운드. 반드시 개방형으로 시작한다.
질문 구조 (순서대로):
스토리 개방: 현재 상황과 맥락을 파악한다.
스토리 발굴: 답변을 파고든다.
문제 탐색: 핵심 문제를 찾는다.
가치 확인: 해결의 가치를 확인한다.
라운드 조절:
금지 사항:
Phase 2에서 파악한 맥락을 기반으로 구체적 시나리오를 정의한다. AskUserQuestion 2-3개/라운드.
Step 1 — 정상 흐름 정의:
Step 2 — 예외 도출: 정상 흐름의 각 단계를 변형하여 예외를 끌어낸다:
Step 3 — 상태 발견 (파이프라인 역할: 상태를 발견한다. 구조화는 spec-generator, 완전성 검증은 spec-reviewer가 담당): 데이터의 생명주기를 질문하여 상태 전이를 발견한다:
라운드 조절: 정상 흐름이 단순하면 1라운드, 복잡하면 2-3라운드.
Phase 2-3에서 자연스럽게 커버된 항목은 건너뛴다. 빠진 차원만 선별하여 질문한다.
10개 누락 항목 체크리스트:
| # | 항목 | 질문 예시 | 건너뛰는 조건 | |---|------|----------|-------------| | 1 | 암묵적 지식 | "앞서 말씀하신 [구체 프로세스]에서, 당연해서 따로 말 안 한 규칙이 있나요? 예: 순서 제약, 금액 한도, 시간 제한 등" | Phase 2에서 프로세스가 충분히 설명됨 | | 2 | 에러/실패 | "잘못될 수 있는 3가지는?" | Phase 3 Step 2에서 예외가 충분히 나옴 | | 3 | 상태 전이 | "[A상태]에서 [B이벤트] 발생 시?" | Phase 3 Step 3에서 상태가 명확히 정의됨 | | 4 | 비기능 요구 | "동시 사용자 수? 반응 속도? 개인정보?" | 항상 질문 (자연스럽게 안 나오는 영역) | | 5 | 데이터 제약 | "수정/삭제 가능? 최대 길이?" | Phase 3에서 데이터가 상세히 논의됨 | | 6 | 권한 | "누가 쓸 수 있고, 못 쓰나요?" | Phase 3에서 역할이 명확히 나옴 | | 7 | 연동 | "다른 시스템과 연결? 그 시스템 안 되면?" | Phase 2에서 연동이 이미 논의됨 | | 8 | 목록 동작 | "비어있으면? 수천 개면? 정렬/검색?" | 목록 UI가 없는 기능이면 건너뜀 | | 9 | 입력 유효성 | "잘못 입력하면 바로 알려주나요?" | 입력 폼이 없는 기능이면 건너뜀 | | 10 | 범위 경계 | "이번에 안 하는 것 5가지는?" | Phase 5에서 반드시 커버 |
질문 방식: 빠진 항목을 AskUserQuestion 2-3개로 묶어서 한 번에 질문한다.
주의: #4 비기능 요구는 반드시 질문한다. 동시 사용자 수, 반응 속도, 개인정보 여부는 인터뷰에서 자연스럽게 나오지 않는 영역이다. Phase 2-3에서 이미 나왔더라도 구체적 수치가 없으면 다시 확인한다.
미결 사항 상한: "모르겠어요" / "아직 안 정해졌어요"가 5개를 초과하면, 추가 질문을 중단하고 Phase 5로 즉시 이동한다. 더 물어도 답이 나오지 않는 상태이므로, 현재까지의 정보로 요구사항을 정리하는 것이 효과적이다.
범위 확정 (반드시 질문):
마감 질문 (반드시 질문):
완료 판정 기준 — End ONLY when ALL are true:
완료 신호 판별:
| 신호 | 판정 | |------|------| | 같은 답변이 반복됨 | 충분 — 해당 차원 종료 | | 핵심 5개 차원 (시나리오, 예외, 상태, 권한, 범위) 커버 | 완료 가능 | | "아직 안 정해졌어요"가 3개 이상 | 미결 사항으로 기록하고 계속 | | 새 카테고리가 계속 나옴 | 부족 — 더 탐색 | | 마감 질문에 "없어요" | 완료 |
Don't stop early — "충분히 이해한 것 같다"는 완료 기준이 아니다. Don't drag on — 명확한 기능은 2-3라운드면 충분하다.
Write to specs/{feature-slug}-requirements.md. Always this path.
slug 규칙: 영문 소문자, 하이픈 구분. 예: user-like, payment-migration, notification-settings
# {기능명} — 요구사항
## 배경
왜 이 기능이 필요한가. 현재 어떤 문제가 있는가.
## 사용자와 목표
누가 쓰는가. 무엇을 달성하려 하는가.
## 핵심 시나리오
### 정상 흐름
1. 사용자가 ~ 한다
2. 시스템이 ~ 한다
3. 결과로 ~ 가 보인다
### 예외 상황
| 상황 | 사용자에게 보이는 것 | 시스템 동작 |
|------|---------------------|------------|
## 데이터
| 항목 | 설명 | 필수 여부 | 제약 |
|------|------|----------|------|
## 상태 변화
| 현재 상태 | 이벤트 | 다음 상태 | 부수 효과 |
|----------|--------|----------|----------|
(해당하지 않으면 "상태 변화 없음" 명시)
## 연동 범위
| 시스템 | 연동 내용 | 방향 |
|--------|----------|------|
(해당하지 않으면 "외부 연동 없음" 명시)
## 권한
| 역할 | 할 수 있는 것 | 할 수 없는 것 |
|------|-------------|--------------|
## 이번 범위
### 하는 것
- ...
### 안 하는 것
- ...
## 성공 기준
- ...
## 비기능 요구사항
- 동시 사용자 수:
- 기대 반응 속도:
- 보안/개인정보:
(해당하지 않으면 "비기능 요구사항 없음" 명시)
## 미결 사항
- ...
(없으면 "미결 사항 없음" 명시)
Tell the user the file path after writing.
| 상황 | 대응 | |------|------| | 결정 권한이 없는 사안 | "미결 사항으로 기록하겠습니다. 누가 결정할 수 있나요?" | | 추상적이라 답하기 어려움 | 구체적 시나리오로 전환: "예를 들어 ~한 상황이면 어떻게 하나요?" | | 진짜 아직 안 정해진 것 | "미결 사항으로 남겨놓겠습니다" | | 침묵 | 기다린다. 대부분 추가 정보를 준다 | | 기술 용어로 답변 | 비즈니스 언어로 번역하여 확인: "~라는 말씀이시죠?" |
If the user changes topic mid-interview:
| Mistake | Fix | |---------|-----| | 기술 용어로 질문 | 비즈니스 언어만 — 용어 변환 표 참고 | | 구체적 질문으로 시작 | Phase 2는 개방형으로 시작. OPEN → PROBE → FOCUS 순서 | | "~기능 필요하세요?"로 유도 | Feature Fishing 금지. 문제를 묻고, 해결책은 사용자가 말하게 | | "만약 ~하면 어떨까요?"로 가상 질문 | 실제 경험 기반: "마지막으로 ~했을 때?" | | 예외를 직접 물음 | 구체 시나리오를 변형하여 예외를 끌어냄 | | Phase 2-3에서 이미 나온 걸 Phase 4에서 재질문 | Phase 4는 빠진 것만 질문 | | 완료 기준 전에 멈춤 | Don't stop early — 5개 차원 커버 확인 | | 너무 오래 끌기 | 명확한 기능은 2-3라운드. Don't drag on | | 미결 사항을 억지로 해결 | 모르면 미결로 기록. 결정 권한자 확인 | | "빨리 시작해줘" 요청에 STOP 생략 | 플랫폼 제약은 우회 불가 — 급해도 로드 턴에서 AskUserQuestion 호출 금지 |
testing
CLAUDE.md 기반 환경 안전 체크. 작업 시작 전에 프로젝트의 안전 규칙, 컨벤션, 환경 설정을 자동 검증하여 CLEAR/WARNING/BLOCKED 상태를 보고한다. /check가 "변경 후 검증"이라면, /pre-flight는 "작업 전 환경 검증"이다. Use PROACTIVELY before starting work, especially after switching branches, pulling changes, or resuming a session. Also use when explicitly asked: "/pre-flight", "프리플라이트", "환경 체크", "작업 전 점검", "안전 체크", "environment check", "pre-flight check", "시작해도 돼?", "환경 괜찮아?", "safety check", "DB 확인", "설정 확인", "config check".
tools
PR 리뷰 워크플로우와 체크리스트를 제공하는 스킬. "PR 리뷰해줘", "코드 리뷰 해줘", "이 PR 봐줘", "review this PR" 등 PR 리뷰 요청 시 사용. GitHub/GitLab PR URL 또는 로컬 브랜치 diff를 기반으로 체계적이고 일관된 리뷰를 수행. 코드 품질, 안정성/보안, 성능, 테스트, 문서화 관점에서 건설적인 피드백 제공.
documentation
PR review comments를 체계적으로 처리하는 skill. Use when: (1) PR에 동료의 리뷰가 달렸을 때, (2) 여러 리뷰를 한 번에 처리하고 싶을 때, (3) 수정 후 commit 링크가 포함된 reply를 자동으로 추가하고 싶을 때
tools
PR diff를 받아 코드 리뷰 자동 요약을 생성하는 스킬. 핵심 변경점을 3줄로 요약하고, 변경 파일별로 what changed / why it matters / risk level을 정리. Use when: "PR 요약", "diff 요약", "PR 변경점 정리", "코드 변경 요약", "summarize PR", "PR summary", "diff summary", "what changed in this PR", "변경점 요약해줘", "PR 핵심 정리", "리뷰 요약"