mvp-design-spec
MVP 디자인 스펙(design-spec.md) 작성 표준 — IA 트리·Mermaid 유저플로우·화면 명세·디자인 토큰·컴포넌트 인벤토리 필수 구조, [story: S-xx] 매핑 태그 정확 형식(gate-design.sh grep 호환), ASCII 와이어프레임 컨벤션, 색·타이포·간격 토큰 최소 셋, 빈/로딩/에러/성공 4상태 의무, 스토리×화면 커버리지 매트릭스. ux-designer가 Stage 2에서 design-spec.md를 작성할 때, product-strategist가 checker로 커버리지를 검증할 때, gate-design.sh 실패를 진단할 때 참조. Authoring standard for the MVP design spec (design-spec.md): required IA tree, Mermaid user flows, screen specs, design tokens, exact [story: S-xx] tag format (gate-design.sh grep-compatible), ASCII wireframe conventions, mandatory empty/loading/error/success states, and the coverage matrix. Use when: writing design-spec.md in Stage 2, checking coverage, or diagnosing gate-design.sh failures.
- License 许可
- Apache-2.0
- 最近更新
- 2026-10-29
- Stars
- ★ 1
- Forks
- 0
01 前言 Front Matter
- name
- mvp-design-spec
- description
- MVP 디자인 스펙(design-spec.md) 작성 표준 — IA 트리·Mermaid 유저플로우·화면 명세·디자인 토큰·컴포넌트 인벤토리 필수 구조, [story: S-xx] 매핑 태그 정확 형식(gate-design.sh grep 호환), ASCII 와이어프레임 컨벤션, 색·타이포·간격 토큰 최소 셋, 빈/로딩/에러/성공 4상태 의무, 스토리×화면 커버리지 매트릭스. ux-designer가 Stage 2에서 design-spec.md를 작성할 때, product-strategist가 checker로 커버리지를 검증할 때, gate-design.sh 실패를 진단할 때 참조. Authoring standard for the MVP design spec (design-spec.md): required IA tree, Mermaid user flows, screen specs, design tokens, exact [story: S-xx] tag format (gate-design.sh grep-compatible), ASCII wireframe conventions, mandatory empty/loading/error/success states, and the coverage matrix. Use when: writing design-spec.md in Stage 2, checking coverage, or diagnosing gate-design.sh failures.
03 SKILL.md 正文
MVP 디자인 스펙 표준
design-spec.md는 그림 도구 없이 텍스트만으로 구현 가능한 수준까지 화면을 확정하는 단일 산출물이다.
ux-designer는 이 문서만 쓰고 코드는 생성하지 않는다. 모든 화면은 PRD 스토리에 매핑되어야 하며, 매핑은gate-design.sh가 결정론적으로 검사한다.
When to Apply
다음 상황에서 이 스킬을 참조한다:
ux-designer가 Stage 2(디자인)에서.planning/design-spec.md를 작성·수정할 때product-strategist가 Stage 2 checker로 커버리지 매트릭스(스토리×화면)를 검증할 때/mvp-gate실행 결과gate-design.sh가 실패([story: S-xx]태그 누락)하여 원인을 진단·교정할 때mvp-builder가 Stage 4 루프에서 화면 구현 시 화면 명세·4상태·디자인 토큰을 구현 기준으로 삼을 때- 스코프 재협상으로 스토리가 추가·분할되어 디자인 스펙에 화면·태그를 증분 반영할 때
1. 핵심 규칙
| # | 규칙 | 집행 주체 |
|---|---|---|
| R1 | design-spec.md는 필수 6섹션을 §2 순서대로 포함한다 | product-strategist 검증 |
| R2 | prd.json의 모든 스토리 id가 [story: S-xx] 정확 형식으로 1회 이상 등장한다 (§3) |
gate-design.sh grep |
| R3 | 매핑 태그 변형 금지 — 대소문자·공백·축약 어긋나면 게이트 실패 | gate-design.sh grep -F |
| R4 | 모든 화면은 빈/로딩/에러/성공 4상태를 정의한다 (§6) | product-strategist 검증 |
| R5 | 디자인 토큰은 색·타이포·간격 최소 셋을 표로 정의하고, 화면 명세는 토큰 이름으로 참조한다 (§7) | mvp-builder 구현 기준 |
| R6 | 커버리지 매트릭스에 prd.json 전 스토리가 행으로 존재하고 빈 행이 없어야 한다 (§9) | product-strategist 검증 입력 |
| R7 | 코드(HTML/CSS/컴포넌트 코드) 생성 금지 — 산출물은 design-spec.md 단일 파일 | ux-designer Boundaries |
2. design-spec.md 필수 구조
아래 6개 ## 섹션을 이 순서대로 포함한다.
| 순서 | 섹션 헤딩 | 내용 |
|---|---|---|
| 1 | ## IA |
정보 구조 트리 — 화면 계층과 진입 관계 |
| 2 | ## 유저 플로우 |
Mermaid flowchart — 핵심 여정 + 실패 분기 |
| 3 | ## 화면 명세 |
화면별 ### SCR-xx 이름 [story: S-xx] + 와이어프레임 + 4상태 |
| 4 | ## 디자인 토큰 |
색·타이포·간격 표 (§7) |
| 5 | ## 컴포넌트 인벤토리 |
재사용 컴포넌트 목록 + 사용 화면 (§8) |
| 6 | ## 커버리지 매트릭스 |
스토리×화면 표 (§9) |
IA 트리 예시
앱 루트
├── SCR-01 로그인 (비로그인 진입점)
└── SCR-02 메모 목록 (로그인 후 홈)
├── SCR-03 메모 작성 (목록의 [+ 새 메모])
└── SCR-04 메모 상세 (목록 아이템 탭)
Mermaid 유저플로우 예시
flowchart TD
A[SCR-01 로그인] -->|성공| B[SCR-02 메모 목록]
A -->|실패: 401| A
B -->|+ 새 메모| C[SCR-03 메모 작성]
C -->|저장 성공| B
C -->|저장 실패: 에러 배너| C
B -->|아이템 탭| D[SCR-04 메모 상세]
성공 경로만 그리지 않는다 — 실패·이탈 분기 1개 이상 포함.
3. [story: S-xx] 매핑 태그 — 정확 형식
gate-design.sh는 prd.json의 각 id에 대해 grep -qF "[story: S-xx]"로 검사한다.
고정 문자열 비교이므로 한 글자라도 다르면 해당 스토리는 미커버로 판정된다.
형식 규칙: [story: S-01]
— 여는 대괄호 + 소문자 story + 콜론 + 공백 정확히 1개 + 대문자 S + 하이픈 + 2자리 숫자 + 닫는 대괄호.
| 판정 | 표기 | 사유 |
|---|---|---|
| GOOD | [story: S-01] |
정확 형식 |
| GOOD | [story: S-01] [story: S-02] |
복수 스토리는 태그를 반복 |
| BAD | [Story: S-01] |
대문자 S로 시작 |
| BAD | [story:S-01] |
콜론 뒤 공백 누락 |
| BAD | [story: s-01] |
소문자 id |
| BAD | [story: S-1] |
자릿수 불일치(2자리 필수) |
| BAD | [story: S-01, S-02] |
축약 — S-02가 grep -F에 잡히지 않음 |
배치 위치: 각 화면 명세의 ### 헤딩 라인에 붙인다(권장). 화면 외 요소(공통 레이아웃 등)에
스토리가 걸리면 해당 단락 첫 줄에 태그를 둔다. prd.json의 모든 스토리가 어딘가에 1회 이상
등장해야 게이트 통과 — 화면이 없는 스토리(예: 순수 API 스토리)도 가장 가까운 화면 또는
"비화면 동작" 단락에 태그로 귀속시킨다.
4. 화면 명세 양식
화면마다 아래 형식을 따른다:
### SCR-02 메모 목록 [story: S-02] [story: S-03]
- 목적: 내 메모를 최신순으로 훑고 작성·상세로 이동하는 허브
- 진입 경로: 로그인 성공 직후 / 작성·상세에서 뒤로가기
- 와이어프레임: (§5 컨벤션)
- 상태 정의: (§6 표)
- 인터랙션:
- [+ 새 메모] 탭 → SCR-03 이동
- 리스트 아이템 탭 → SCR-04 이동
- 당겨서 새로고침 → 목록 재조회(로딩 상태 표시)
5. ASCII 와이어프레임 컨벤션
텍스트 박스 문자로 레이아웃을 고정한다. 픽셀 정밀도가 아니라 요소 존재·순서·위계를 확정하는 것이 목적.
| 표기 | 의미 |
|---|---|
┌─┐ │ └─┘ |
화면/카드 경계 |
├─┤ |
영역 구분선 |
[텍스트] |
버튼(탭 가능 액션) |
(텍스트____) |
입력 필드(괄호 안은 placeholder) |
▸ |
리스트 아이템 |
← 화살표 주석 |
와이어프레임 우측 설명(렌더링 대상 아님) |
예시 — SCR-02 메모 목록:
┌──────────────────────────────────┐
│ 메모 [+ 새 메모] │ ← 헤더: 타이틀(heading) + 주요 액션 버튼
├──────────────────────────────────┤
│ (메모 검색____________________) │ ← 입력 필드, space-4 패딩
├──────────────────────────────────┤
│ ▸ 장보기 목록 2026-06-11 │ ← 아이템: 제목(body) + 날짜(caption, muted)
│ ▸ 회의 메모 2026-06-10 │
│ ▸ 아이디어 2026-06-09 │
├──────────────────────────────────┤
│ [더 불러오기] │ ← 페이지네이션 버튼, 마지막 페이지면 숨김
└──────────────────────────────────┘
6. 4상태 의무 — 빈/로딩/에러/성공
모든 화면 명세는 아래 4상태를 표로 정의한다. 하나라도 빠지면 mvp-builder가 임의 구현하게 되고,
mvp-verifier의 AC 반증(빈 입력·실패 케이스)에서 적발된다.
| 상태 | 정의 의무 사항 | SCR-02 예시 |
|---|---|---|
| 빈(empty) | 데이터 0건 표시 문구 + 다음 행동 유도 | "메모가 없습니다" + [첫 메모 작성] |
| 로딩(loading) | 표시 방식(스켈레톤/스피너)과 위치 | 리스트 영역 스켈레톤 3행 |
| 에러(error) | 메시지 + 복구 액션 | "목록을 불러오지 못했습니다" + [다시 시도] |
| 성공(success) | 정상 표시 규칙(정렬·포맷·최대 노출 수) | createdAt 내림차순, 날짜 yyyy-MM-dd, 페이지당 20건 |
나쁜 예 / 좋은 예
BAD : "목록 화면: 메모를 보여준다" ← 0건일 때? 실패하면? 정렬은?
GOOD: 위 4상태 표 — 상태마다 표시 내용과 사용자의 다음 행동이 한 줄씩 확정됨
7. 디자인 토큰 최소 셋
색·타이포·간격 3종은 반드시 정의한다. 화면 명세·와이어프레임 주석은 raw 값(#3B82F6, 16px)이
아니라 토큰 이름으로 참조한다. 구현 단계에서 tech-architect/mvp-builder가 스택에 맞게
(CSS 변수, Tailwind 테마 등) 옮긴다.
색 (최소 6)
| 토큰 | 값 | 용도 |
|---|---|---|
color-primary |
#2563EB |
주요 액션 버튼, 링크 |
color-on-primary |
#FFFFFF |
primary 위 텍스트 |
color-surface |
#FFFFFF |
카드·화면 배경 |
color-text |
#111827 |
본문 텍스트 |
color-muted |
#6B7280 |
보조 텍스트, 날짜·메타 |
color-danger |
#DC2626 |
에러 메시지, 파괴적 액션 |
타이포 (패밀리 1 + 스케일 4)
| 토큰 | 크기/굵기/행간 | 용도 |
|---|---|---|
font-family |
Pretendard, sans-serif | 전체 |
type-heading |
20px / 700 / 1.3 | 화면 타이틀 |
type-body |
16px / 400 / 1.5 | 본문, 리스트 제목 |
type-caption |
13px / 400 / 1.4 | 메타 정보, 날짜 |
type-button |
15px / 600 / 1.0 | 버튼 라벨 |
간격 (4px 그리드)
| 토큰 | 값 | 용도 |
|---|---|---|
space-1 |
4px | 아이콘-라벨 간격 |
space-2 |
8px | 인라인 요소 간격 |
space-4 |
16px | 컴포넌트 내부 패딩, 화면 좌우 여백 |
space-6 |
24px | 섹션 간 간격 |
space-8 |
32px | 화면 상하 대여백 |
값은 프로젝트 성격에 맞게 바꿔도 되지만 토큰 이름 체계와 4px 배수 규칙은 유지한다.
8. 컴포넌트 인벤토리
화면 명세에서 2회 이상 등장하는 요소를 컴포넌트로 추출해 표로 관리한다.
mvp-builder가 중복 구현 대신 재사용 단위를 식별하는 입력이다.
| 컴포넌트 | 설명 | 상태/변형 | 사용 화면 |
|---|---|---|---|
PrimaryButton |
color-primary 채움 버튼 | default / disabled / loading | SCR-01, SCR-03 |
ListItem |
제목 + caption 메타 행 | default / pressed | SCR-02 |
EmptyState |
빈 상태 문구 + 유도 버튼 | 문구·버튼 라벨 주입 | SCR-02, SCR-04 |
ErrorBanner |
color-danger 배너 + 재시도 | 메시지 주입 | 전 화면 공통 |
9. 커버리지 매트릭스
product-strategist가 Stage 2 검증에서 그대로 대조하는 입력. 행 = prd.json 전 스토리(누락 금지),
열 = 화면 명세의 전 화면. ● = 해당 화면이 그 스토리를 구현 표면으로 커버.
| 스토리 | SCR-01 로그인 | SCR-02 메모 목록 | SCR-03 메모 작성 | SCR-04 메모 상세 | 커버 |
|--------|:---:|:---:|:---:|:---:|------|
| S-01 이메일 로그인 | ● | | | | ✅ |
| S-02 메모 목록 조회 | | ● | | | ✅ |
| S-03 메모 작성 | | ● | ● | | ✅ |
| S-04 메모 상세·삭제 | | | | ● | ✅ |
검증 판정 규칙:
| 발견 | 판정 |
|---|---|
| 빈 행(어느 화면에도 미커버 스토리) | 실패 — 화면 추가 또는 §3 비화면 동작 태그 귀속 후 재검 |
| 빈 열(어느 스토리에도 안 걸린 화면) | 경고 — 스코프 외 화면 의심, 범위 비대 신호로 PS가 지적 |
| 매트릭스의 행 수 ≠ prd.json 스토리 수 | 실패 — 매트릭스 갱신 누락 |
매트릭스는 gate-design.sh(태그 grep)와 별개의 의미 검증 층이다: 게이트는 태그 존재만,
매트릭스는 매핑이 말이 되는지를 product-strategist가 확인한다.
04 同仓库更多 Skills
sync-claude-md
커밋·푸시·PR/MR 직전에 이번 변경이 프로젝트 CLAUDE.md 를 낡게 만드는지 검토하고, 필요할 때만 갱신 diff 를 제안한다 — 아키텍처·디렉터리 구조, 새 통합/MCP, 컨벤션, 빌드·CI·도구, 주요 의존성 변화가 대상. 해당 없으면 한 줄로 끝낸다. Reviews whether pending changes make the project CLAUDE.md stale (architecture, integrations, conventions, build/CI/tooling, major dependencies) and proposes a minimal update diff only when needed. Use when: "CLAUDE.md 갱신 필요해?", "CLAUDE.md 동기화", 커밋/푸시/MR 전에 구조·도구가 바뀐 변경을 정리할 때, sync CLAUDE.md, check CLAUDE.md before commit or PR.
spec-driven-dev
새 기능·프로젝트·큰 변경을 코드보다 스펙 먼저로 진행하는 게이트 워크플로(SPECIFY → PLAN → TASKS → IMPLEMENT) — 가정 명시, 측정 가능한 성공 기준, Always/Ask/Never 경계, 단계별 사람 검토로 범위 이탈과 재작업을 줄인다. Spec-before-code gated workflow for new features or significant changes: explicit assumptions, measurable success criteria, boundaries, and a human review between stages. Use when: "스펙 먼저", "기능 명세", "요구사항 정리", starting a new feature or project, a significant change with vague requirements. 단순 버그 수정·1~2줄 변경엔 불필요.
shipping-guide
프로덕션 배포 전후 가이드 — 배포 전 체크리스트, 피처 플래그 수명주기, 단계적 롤아웃과 진행/보류/롤백 임계값, 롤백 계획 템플릿, 배포 후 모니터링. Production shipping guide: pre-launch checklist, feature-flag lifecycle, staged rollout with go/hold/rollback thresholds, rollback plan template, post-launch monitoring. Use when: "배포 준비", "릴리즈 전 점검", "롤아웃 계획", "롤백 계획", preparing a production deploy, staged rollout, feature flags.
retro
세션 회고·교훈 컴파운딩 — 이번 세션의 교정·실수·발견을 추출해 품질 기준(재현·일반화·판정 가능성)으로 거르고, 컨벤션 변화는 sync-claude-md 위임, 반복 실수는 tasks/lessons.md(#가드-훅-후보 태그), 스킬 지식 갱신은 수정 제안으로 나눈다. 모든 적용은 승인 후. Session retrospective that turns corrections, mistakes, and discoveries into vetted lessons routed to CLAUDE.md sync, tasks/lessons.md, or skill-edit proposals, with user approval before any write. Use when: "회고", "레트로", "교훈 정리", "같은 실수 반복", "재발 방지 규칙", retrospective, lessons learned, wrapping up a task, review, or loop. 여러 실행에 걸친 하네스 개선은 harness:evolve.
project-rules
현재 프로젝트의 스택(빌드 파일 버전, 마이그레이션 도구, ORM 유무, ES 사용, git 호스트)을 감지해 프로젝트 루트 AGENTS.md 의 마커 블록(스택 사실 + 항상 적용되는 스페셜리스트 핵심 ≤15줄 — Claude Code·Codex·Antigravity 공통)과 CLAUDE.md 의 `@AGENTS.md` 연결, Claude 전용 경로 한정 .claude/rules/<stack>-specialist.md(해당 버전에 실제로 맞는 상세 함정)를 diff 로 제안하고, 스택 플러그인을 런타임별로 프로젝트 범위에서 켜는 법을 안내한다. 이전 버전 출력(CLAUDE.md 블록·specialist-core.md)은 AGENTS.md 로 이전을 제안. --check 는 버전 불일치·사라진 ID·크기 한도·연결 누락을 점검. Detects the project's stack and proposes a cross-runtime AGENTS.md block (stack facts + always-on specialist core) linked from CLAUDE.md via @AGENTS.md, plus Claude-only path-scoped specialist rules; migrates the older CLAUDE.md-block layout; --check audits drift. Use when: "이 프로젝트 세팅", "프로젝트 규칙 생성", "AGENTS.md/CLAUDE.md 점검", project setup, generate project rules, audit AGENTS.md or CLAUDE.md drift.
post-merge
MR 머지 완료 후 Plane 이슈 종료와 Outline 문서 업데이트를 자동으로 처리하는 오케스트레이터 스킬입니다. issue-tracker와 document-latest 스킬을 연계 실행하여 머지 후 후속 작업을 일괄 처리합니다. Orchestrates post-merge follow-up after an MR is merged: chains the issue-tracker and document-latest skills to close the Plane issue and update Outline wiki docs in a single batch. Use when: an MR was just merged, closing tickets and syncing documentation after a merge, post-merge cleanup.