ddd-workshop/skills/requirements-refiner/SKILL.md
ddd-workshop 파이프라인의 입구 스킬. 막연한 아이디어·PRD·러프한 프롬프트를 받아 맥락(학습/개인/사내/B2B/B2C)을 판별하고, 에이전트 자가 진단 8문항을 공개적으로 수행해 모르는 영역은 (옵션) 웹 리서치 또는 사용자 인터뷰로 메운 뒤, 모호함·엣지 케이스·암묵 가정·모순을 1문 1답 큐로 정제한다. 산출물은 맥락·요구사항(MUST/SHOULD)·도메인 브리프·미정 항목이 통합된 단일 문서. "요구사항 정리", "DDD 시작", "프로젝트 킥오프", "requirements refiner", "에이전트 자가 진단", "낯선 도메인 공부", "ddd-workshop 1단계", "PRD 정제", "요구사항 빈틈" 같은 요청에 트리거한다.
npx skillsauth add dev-goraebap/skills requirements-refinerInstall 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.
ddd-workshop 파이프라인의 입구. 막연한 입력을 받아 다음 스킬들이 쓸 수 있는 정제된 요구사항 + 맥락 + 도메인 브리프로 내보낸다.
이 스킬 하나가 v1의 project-kickoff + domain-research + requirement-clarifier를 모두 담당한다. 이유: 사용자 경험상 초기에 스킬을 3개 돌리는 것보다 한 스킬 안에서 단계적으로 진행하는 것이 흐름이 매끄럽다.
[Q 3/12 · 근거: 자가 진단 #5]⚠️ 미정으로 기록. 초기 단계 답 강요 금지./ddd-workshop:requirements-refinerrequirements.md가 있고 "업데이트하자" → --update 모드requirements.md (--update 모드)부분 진입 허용: 입력이 빈약해도 맥락 판별부터 시작. 모르는 항목은 ⚠️ 미정으로 남김.
내부적으로 4단계를 거치며, 각 단계가 끝날 때마다 사용자에게 중간 산출물을 보여주고 확인받는다.
첫 발화에서 맥락을 추정하고, 모호하면 숫자 메뉴로 한 번만 확인한다.
이 프로젝트는 어떤 성격인가요? (번호로 답해주세요)
1) 학습/취미 — 배우거나 손맛으로
2) 개인 도구 — 내가 쓰려고
3) 사내 도구/솔루션 — 우리 팀·회사 내부
4) B2B — 외부 기업 고객에게 납품
5) B2C 제품 — 외부 일반 사용자에게 제공
단서 표:
| 발화 | 추정 | |---|---| | "연습", "공부" | 학습 | | "내가 쓰려고" | 개인 | | "우리 팀", "사내" | 사내 | | "고객사", "납품" | B2B | | "사용자 모으고", "런칭" | B2C |
확정 후 confidence: {high|medium|low} 기록.
파이프라인 전체에서 쓸 UL 기본 언어를 1회 고정한다. 이후 후속 스킬들이 이 설정을 따라 이중 표기(한국어/영어 + Code Identifier)를 생성.
UL(Ubiquitous Language) 기본 언어를 정해주세요.
사용자와 에이전트가 주로 쓸 언어를 고르면, 후속 스킬들은
"용어(사용자 언어) | Code Identifier(영어) | 의미" 3열로
용어집을 작성합니다.
1) 한국어 기본 (코드 식별자는 영어 병기) — 기본값
2) 영어 기본 (단일 컬럼)
3) 기타 언어 기본 (직접 입력)
판단 기본값: 사용자가 한국어로 대화 중이면 1번. 영어면 2번.
1문 1답으로 진행. 큐 순서:
공통 5질문 (맥락 무관):
맥락별 추가:
각 답변은 진행 표시 [Q N/M] 와 함께. 답 강요 금지("나중에"/"모름" 허용).
맥락·기본 정보가 모이면 에이전트 스스로 다음 8문항을 ✅/⚠️/❌ 3단계로 평가하고 사용자에게 공개한다.
🔍 에이전트 자가 진단
이 도메인에 대해:
1. [?] 핵심 개념 5개를 설명할 수 있는가?
2. [?] 업계 고유 용어(전문 용어, 약어)를 구분할 수 있는가?
3. [?] 이 업계에 적용되는 법/규제를 최소 하나라도 아는가?
4. [?] 일반적 업무 프로세스를 단계별로 기술할 수 있는가?
5. [?] 이 업계의 자주 발생하는 엣지 케이스를 예로 들 수 있는가?
6. [?] 유사 기존 서비스를 최소 3개 들 수 있는가?
7. [?] 다른 시스템과 통합되는 전형적 방식을 아는가?
8. [?] 최근 1~2년간 이 업계의 변화가 있었는지 아는가?
→ "없다"에 특히 의심. 모름을 "없음"으로 착각하기 쉬움.
평가: ✅ 자신 있음 / ⚠️ 얕음 / ❌ 모름
공개 후, ⚠️ 또는 ❌ 항목에 대해 사용자에게 선택지 제시:
아래 항목이 얕거나 모르는 상태입니다. 어떻게 메울까요?
1) 웹 리서치 (에이전트가 공식 출처 기준으로 조사, 출처 명시)
2) 사용자가 알려줌 (직접 답변)
3) 나중으로 미룸 (`⚠️ 미정`으로 기록, 다음 스킬에 경고 전파)
리서치가 선택되면 Step 4에서 수행.
필수 원칙 (얼버무림 금지):
웹 리서치 (Step 3에서 요청된 경우만):
도메인 브리프 섹션에 정리빈틈·모순 질문 큐 (내부 생성 → 1문 1답):
질문 후보 카테고리(내부에서 큐에 적재):
1문 1답 루프:
[Q 3/12 · 근거: 비정상 경로]
결제 실패 시 주문의 재고는 즉시 복원하나요, 아니면 타임아웃까지 예약 상태로 두나요?
(답변 외에 "나중에" / "모름" / "스킵" 도 가능합니다)
답변이 새 질문을 열면 큐에 추가. 기존 질문을 무의미하게 만들면 제거 + 사용자에게 알림("답변 덕분에 Q7은 생략합니다").
기본 경로 docs/shared/requirements.md. 프로젝트 관례가 다르면 사용자에게 확인.
YAML frontmatter 없음. 본문만.
# 요구사항
## 프로젝트 정체성
- 한 줄 정의:
- 맥락: {학습|개인|사내|B2B|B2C}
- UL 기본 언어: {한국어|영어|기타}
- Why (해결하려는 문제):
- 핵심 가치:
## 액터
- ...
## 범위
- 반드시 포함 (MUST):
- 명시적 제외 (영영 안 함):
- 나중으로 미룸 (Later):
## 제약 조건
- 기술 / 일정 / 인력:
- (사내) As-Is 프로세스:
- (사내) 연동 시스템:
- (사내) 규제·감사:
- (B2B) 계약·멀티테넌시·SLA:
- (B2C) 타깃 사용자·차별점·성공 지표:
---
## 에이전트 자가 진단
(Step 3 결과. 투명성을 위해 그대로 포함)
### ✅ 일반 상식 수준에서 아는 것
- ...
### ⚠️ 얕게 아는 것
- ...
### ❌ 모르는 것
- ...
---
## 도메인 브리프 (리서치 수행 시)
### 업계 일반 지식
- [내용] — 출처: [제목](URL) — YYYY-MM-DD 조회
### 관련 법규 및 규제
- [법규명]: [내용] — 출처: ...
⚠️ 세부 해석은 법무/변호사 확인 필요
### 업계 표준 프로세스
- ...
### 주요 플레이어 및 관행
- ...
### 자주 발생하는 엣지 케이스
- ...
### 후속 스킬을 위한 힌트
- `event-storming-explorer`가 주의할 이벤트·동음이의어: ...
- `subdomain-classifier`가 참고할 경쟁 차별점: ...
- `context-designer`가 참고할 업계 표준 경계: ...
- `screen-inventory`가 다룰 주요 화면 후보: ...
- `aggregate-designer`가 누락하기 쉬운 이벤트: ...
---
## 정제된 요구사항
### 기능 요구사항 (MUST)
- [기능명]: [설명]
- 성공 기준:
- 실패 처리:
### 기능 요구사항 (SHOULD)
- ...
### 비기능 요구사항
- 성능 / 보안 / 접근성:
---
## 암묵 가정
- ⚠️ 가정: ...
## 모순/충돌
- ⚠️ 충돌: ... (해결 방향은 사용자 결정)
## 미정 항목 (사용자가 스킵한 것)
- ⚠️ 미정: ...
## 다음 단계
→ `event-storming-explorer`로 Big Picture Event Storming + 서브도메인 후보 식별.
--update)기존 docs/requirements.md가 있고 변경 요청이 들어오면:
1) 새 요구사항 추가
2) 기존 요구사항 수정
3) 맥락 변화 (예: 개인→B2C)
4) 자가 진단 재실행
5) 미정 항목 해소
6) 기타(자유 입력)
updated_at 갱신, 변경된 섹션만 업데이트.sources:를 통해 이 문서를 참조하는 downstream 스킬들에게 "stale 알림" 유도 (downstream의 Step 0에서 감지).전면 재작성: 사용자가 명시적으로 "처음부터 다시 하자"고 할 때만 수행. 확인 필수.
□ 맥락 판별됨 (5종 중 하나) + confidence 기록
□ UL 기본 언어 결정됨 (Step 1-b)
□ 한 줄 정의 · Why · 액터 · 범위 · 제약 모두 채워짐 (미정은 ⚠️)
□ 자가 진단 8문항 평가됨 (✅/⚠️/❌)
□ ⚠️/❌ 항목에 대해 "리서치/사용자/미정" 선택됨
□ 리서치 수행 시 모든 항목에 출처 명시
□ 정제된 요구사항이 MUST/SHOULD로 레이블됨
□ 암묵 가정 최소 2개 명시
□ 모순 있으면 명시 (없으면 "모순 없음")
□ 미정 항목 별도 섹션에 모음
□ 산출물 경로: docs/shared/requirements.md
□ Frontmatter 없음 (본문만)
| 맥락 | 자가 진단 깊이 | 리서치 권장 | 질문 큐 크기 | |---|---|---|---| | 학습 | 최소 | 거의 없음 | 10개 이하 | | 개인 | 중간, 사용자 전문성 우선 | 필요시 | 10~15개 | | 사내 | 중간 (사용자가 내부 전문가) | 규제만 | 15~20개 | | B2B | 깊게 | 최대 | 20개 이상 | | B2C | 깊게 | 최대 | 20개 이상 |
testing
도메인 일반 패턴을 강의 모드로 가르치는 인지과학 기반 학습 스킬. AI가 가상 도메인 전문가(선생님) 역할을 하고 사용자가 학생으로 낯선 도메인을 차근차근 배운다. 메뉴로 시작해서 페이즈를 골라 잠수 → 능동 회상 Q&A → 자기 설명(Feynman) 순서로 진행. Dunlosky 메타분석 기반 인지과학 8원칙(Cognitive Load, Practice Testing, 정교화 질문, Self-Explanation, Schema 연결, Dual Coding, Desirable Difficulty, 분산 학습)을 본문에 명시 적용. 도메인의 법령·산업 표준·인증을 학습 본문에 정식 통합 (출처 인용이 아니라 학습 대상). AI가 판단해 보편적이고 자료 풍부한 도메인은 자료 요청 없이 진행, 좁고 깊은 도메인일 때만 사용자에게 자료 있는지 묻기. 산출물은 학습 노트 스타일 (진도 체크박스 + 페이즈별 일관 구조 + 출처 링크). 페르소나 강요 없이 보편 액터 표현("사원 A", "관리자 A"). bigpicture의 이전 단계로 작동하거나 단독 사용 가능. Triggers — "도메인 학습", "낯선 도메인 가르쳐줘", "이 산업 어떻게 굴러가요", "선생님 모드", "1:1 강의", "도메인 입문", "도메인 일반 패턴", "HR 플랫폼이 뭔지", "이커머스 흐름", "domain classroom", "/domain-classroom".
development
빅픽처 이벤트스토밍의 1:1 분석 도구. 학습 단계(domain-classroom)에서 머리에 박힌 도메인 일반 패턴을 클라이언트 시스템에 매핑해 빅픽처 산출물(시간순 도메인 이벤트·페이즈·액터·외부시스템·핫스팟·피벗)을 누적한다. domain-classroom의 학습 노트(docs/learning-notes/{도메인}- classroom.md)와 클라이언트 자료(RFP·요구사항정의서·기존 시스템 스키마)를 입력으로 받아 페이즈 단위로 진행. 페르소나·서사 없는 분석 톤. 도메인 이벤트 판별 4기준(도메인 전문가 관심·비즈니스 상태 변화·법적 의미·다른 흐름 트리거)을 명시 적용해 UI/Telemetry 이벤트 혼입 방지. 이벤트는 한국어 자연어 + Code Identifier 이중 표기. 핫스팟에 ID·답할 위치·확신도 태그 부여. 산출물은 docs/eventstorming.md 단일 파일로 시작, 후속 단계 스킬(process-modeling·software-design)이 추가될 때 폴더로 자연 분기. Initial/Update/Cycle 모드 지원 — 코드 작성 후에도 다시 사이클 가능. Triggers — "빅픽처", "빅픽처 만들어줘", "이벤트스토밍", "도메인 이벤트 정리", "Big Picture EventStorming", "페이즈 매핑", "도메인 산출물 정리", "/bigpicture".
data-ai
빅픽처 이벤트스토밍의 1:1 학습 친화 변형. 그룹 워크샵에서 도메인 전문가가 던지는 이벤트를 받아 적는 대신, AI가 가상 도메인 전문가 역할을 하고 사용자가 학습자로 1:1 인터뷰하며 빅픽처를 누적한다. 산출물(시간순 도메인 이벤트·액터· 외부시스템·핫스팟·피벗)은 빅픽처 이벤트스토밍과 거의 동일하지만, 한 보드에 한 번에 펼치는 방식이 아니라 **한 액터·한 챕터씩 시간순 서사로 누적**한다. 각 장면마다 "왜 이게 필요한가?" 설명을 곁들여 학습자가 따라올 수 있게 한다. RFP·요구사항정의서·기존 도메인 자료를 입력으로 받거나, 자료가 없으면 AI 사전 리서치(보편 사례·법령·산업 표준)로 보충해 진행. 페르소나 시점의 챕터 단위 (5~7개 장면) + 확신도 태그 [확실/일반론/추측]로 검증 지점 명시 + 사용자 인터랙션 + 액터 전환으로 빅픽처를 점진적으로 채운다. 산출물 저장은 옵셔널 — 이해 자체가 목적이다. Triggers — "낯선 도메인 이해", "도메인 차근차근 알려줘", "1:1 빅픽처", "솔로 이벤트스토밍", "RFP 분석", "비즈니스 흐름 이해", "액터 시나리오", "신규 프로젝트 도메인 파악", "빅픽처 스토리타임", "bigpicture storytime", "/bigpicture-storytime".
databases
PostgreSQL DB에 직접 접근하는 스킬. DB 조회, 테이블 구조 확인, 데이터 검증이 필요할 때 사용한다. Node.js 스크립트로 직접 연결하며 접속 정보는 환경변수 또는 credentials 파일에서 읽는다. "postgres 조회", "DB 확인", "테이블 구조", "pg-query", "쿼리 실행", "데이터 검증", "PostgreSQL 접속" 같은 요청에 트리거한다.