requirements-speclisted
Install: claude install-skill sehyun0518/agent
# Requirements Spec — 요구사항 스펙 계약
## 목적
이 스킬은 프론트엔드 파이프라인의 모든 레이어가 공유하는 **단일 출처(source of truth)** 다. 스키마와 스펙 포맷을 각 에이전트 프롬프트에 중복 정의하면 레이어마다 정의가 갈라져(drift) 같은 스펙을 서로 다르게 해석하게 된다. 그래서 정의는 여기 한 곳에만 두고, 각 레이어는 이 스킬을 참조한다.
이 계약은 특정 에이전트 몇 개가 "소유"하는 게 아니라, **레이어 경계를 넘을 때마다 검사되는 불변식(invariant)** 이다. 산출물이 한 레이어에서 다음 레이어로 이동하는 모든 지점(handoff)에서 이 계약에 부합하는지 확인한다. 경계마다 하는 동작은 다르지만(채우기 / 읽기·게이트 / 검증), 기준은 언제나 이 스킬 하나다. 그래서 "소비자 N명"으로 외우면 안 된다 — 목록은 닫힌 집합처럼 굳어서 레이어를 추가·재배치하면 깨진다. **"경계마다 검사"** 로 기억한다.
경계 예시:
- **논의 → 오케스트레이터**: 스펙을 산출하고, 완결성 게이트로 검사.
- **오케스트레이터 → 실행**: 스펙 슬라이스를 브리프에 담아 넘김. 격리된 실행자에게는 이 계약 조각이 세계 전부.
- **실행 → 피드백**: `acceptance_criteria`가 그대로 검증 게이트가 됨.
- **되돌림(loop-back)**: 어느 경계든 미달이면, 같은 계약으로 부족한 슬롯을 지정해 이전 레이어로 반환.
레이어를 추가하거나 순서를 바꿔도 규칙은 그대로다: **경계가 생기는 곳에 이 계약 검사를 둔다.**
## 요구사항 스키마
각 슬롯은 아래 `채워짐 판정 기준`을 통과해야 "채워진" 것으로 본다. 통과하지 못하면 빈 칸으로 취급한다. 판정 기준을 둔 이유는, 슬롯에 글자가 들어있다고 채워진 게 아니라 *실행 가능한 수준의 구체성*이 있어야 채워진 것이기 때문이다.
### 필수 슬롯 (하나라도 비면 미완결)
| 슬롯 | 설명 | 채워짐 판정 기준 |
|---|---|---|
| `goal` | 무엇을, 왜 만드는가 (기능이 아니라 목적/job-to-be-done) | "무슨 화면"이 아니라 "사용자가 무엇을 달성하나"가 한 문장으로 적힘 |
| `target` | 타깃 유저 · 디바이스 · 브라우저 지원 범위 | 디바이스(모바일/데스크톱/둘 다)와 지원 브라우저 하한이 특정됨 |
| `design_ref` | 디자인 시스템 / 토큰 / 컴포넌트 컨벤션은 `AGENT.md`에서 링크하는 `DESIGN.md`를 따른다. 이 슬롯은 그 표준을 **따른다는 사실 + 이번 작업의 의도적 벗어남(deviation)만** 기록한다. | 기본값 "DESIGN.md 표준 따름"으로 충족됨. 벗어나는 부분이 있으면 그것이 명시됨 (없으면 그대로 통과) |
| `scope_in` | 이번 작업에 포함되는 것 | 만들 화면/컴포넌트/상호작용이 열거됨 |
| `scope_out` | 명시적으로 제외하는 것 | 최소 1개 이상 "이번엔 안 함" 항목이 적힘 (없