skills/peach-team-ui-proto/SKILL.md
Backend 없이 Mock 데이터 기반 프로토타입 UI를 생성·검증하는 기획 구체화 산출물 스킬. Vue 3 + TypeScript + NuxtUI v4. 별도 ui-proto 저장소(예: peach-ui-proto-backoffice)의 src/modules-task 폴더에 태스크별 화면을 누적한다. "프로토타입 만들어줘", "Mock 화면", "proto UI", "기획 화면 빠르게", "ui-proto 작업", "기획자 검토용 화면", "태스크 폴더 추가", "팀 ui-proto" 키워드로 트리거. 기획자가 직접 작업하는 화면 기획 + 현업 검토용 산출물 스킬이며, 개발용 Spec은 후속 peach-gen-spec이 생성한다. 실제 API 연동이 필요하면 peach-gen-ui를 사용한다.
npx skillsauth add peachsolution/peach-harness peach-team-ui-protoInstall 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.
ui-proto 화면을 만들고 검증하는 기획 구체화 산출물 스킬.
이 스킬의 핵심은 팀 자동화가 아니라, 사람의 의도를 화면/액션/상태로 구체화해 현업이 실제 프로그램처럼 검토할 수 있는 산출물을 만드는 것이다.
<u-button>, <u-modal>, <my-component>)src/modules-task/{년월}/{태스크폴더}/에 누적peach-gen-spec의 입력이 됨peach-gen-spec이 확정 Spec을 만들 수 있게 함| 스킬 | 책임 |
|------|------|
| peach-team-ui-proto | Mock 기반 기획 검토용 화면 + 태스크 메타 + overview + 화면/액션/상태 생성·검증 |
| peach-team-dev | 준비된 DB/Spec/ui-proto 기준 본 프로젝트 코드 구현 |
| peach-team-e2e | 본 개발 완료 후 실제 브라우저 흐름과 기획 부합 검증 |
| peach-gen-ui | 실제 API/Store 기반 UI 단독 생성 |
ui-proto는 본 개발 코드가 아니다. 프로덕션 코드 수정, 실제 API 연동, E2E 최종 판정, 완전한 E2E 시나리오 설계는 이 스킬에서 처리하지 않는다.
이 스킬은 별도 ui-proto 저장소에서 실행한다 (예: peach-ui-proto-backoffice).
본 프로젝트가 아닌 시점이면 사용자에게 저장소 위치를 확인한다.
peach-ui-proto-{도메인}/ ← 별도 저장소
└── src/modules-task/
└── {년월}/ 예: 2604
└── {년월일-이니셜-태스크명}/ 예: 260427-{이니셜}-goods
├── _task-meta.ts 메타 (날짜/담당자/제목/modules)
├── _routes.ts overview + 서브모듈 라우트
├── layout/
│ ├── task-layout.vue 서브모듈용 (배너+사이드바)
│ └── task-overview-layout.vue 기획서용 (배너+전체)
├── overview/pages/overview.vue 기획서 화면
└── {서브모듈}/ 실제 UI 화면
├── pages/
├── store/
└── type/
새 태스크 생성 시 기존 태스크 폴더(예: 2603/260320-{이니셜}-board/)를 통째로 복사 후 메타·라우트·서브모듈명만 수정하는 게 빠르다. 상세는 ui-proto 저장소의 AGENTS.md 참조.
이 스킬은 요청 복잡도에 따라 팀 모드/단독 모드로 자동 분기한다. 단, 팀 모드의 목적은 자율 개발이 아니라 후속 개발/검증 기준의 품질을 높이는 것이다.
화면/흐름 요구가 충분히 주어짐?
│
├─ Yes + 복잡 화면 → 자동 팀 모드
│ (proto-ui-dev + proto-ui-qa)
│ 목적: 화면/액션/상태/overview 품질 보강
│ 랄프루프: 5회(단순) / 10회(복잡)
│
├─ Yes + 단순 화면 → 단독 모드
│ 기획자가 직접 빠르게 구체화하는 경우
│ 랄프루프: 5회 (단독 검증만)
│
└─ No → 요구사항 구체화 요청
team=Y만 있고 화면/흐름 요구가 없으면 진행하지 않음
team=Y로 팀 모드를 강제할 수 있지만 화면/흐름 요구사항은 반드시 필요하다. team=N 인자로 단독 모드를 강제할 수 있다.
/peach-team-ui-proto [모듈명] "화면/흐름 요구사항" [옵션]
/peach-team-ui-proto [모듈명] req=<요구사항 파일 경로> [옵션]
/peach-team-ui-proto [모듈명] spec=<Spec 파일 경로> [옵션]
spec=은 이미 정리된 요구사항 문서가 있을 때 쓰는 선택 입력이다. ui-proto의 표준 책임은 후속 peach-gen-spec의 입력 산출물을 만드는 것이므로 Spec을 필수로 요구하지 않는다.
| 역할 | 책임 | |------|------| | proto-ui-dev | 화면/흐름 요구 기반 화면 구현 (modules-task 폴더 생성) | | proto-ui-qa | 시각/UX 검증 + 후속 gen-spec 입력 적합성 검증 (독립 worktree, 읽기전용) |
peach-{도메인})의 컴포넌트 패턴과 일치 여부_task-meta.ts, _routes.ts, layout 분리 등)_task.routes.ts의 taskDetailRoutes에 추가)peach-gen-spec이 E2E 시나리오 후보를 정리할 수 있도록 화면 전환 흐름의 단서가 충분한가peach-gen-spec이 개발용 Spec을 만들 수 있도록 화면/Store/API 기대가 충분히 드러나는가| 모드 | 최대 반복 | |------|----------| | 단순 화면 (목록만, 단일 모달) | 5회 | | 복잡 화면 (멀티탭, 다중 모달, 차트, 다단계 폼) | 10회 |
상한 도달 시 사용자에게 보고하고 중단.
기획자가 직접 구체화하는 경우. 자체 검증만 수행 (별도 QA 에이전트 없음). 랄프루프 5회 (vue-tsc + lint + build 통과 시도).
요구사항 문서 또는 자연어 입력이 주어졌을 때:
planner, date, title 후보를 추출{YYMMDD}-{planner}-{영문슬러그} 형식 (한글 금지)_task-meta.ts를 생성한다. 이후 peach-gen-spec proto=<경로>는 이 메타와 화면 파일을 읽어 개발용 Spec을 생성한다자연어 입력으로 들어온 경우:
useApi() 호출을 처리한다.mock/에 분리하고, 실제 API 전환 시 시그니처를 유지한다.peach-gen-ui/references/core/visual-guide.md를 따른다. 공유 UI 패턴은 peach-gen-ui가 SoT다.overview와 화면 파일에는 다음 정보가 드러나야 한다. 이 정보는 완전한 E2E 시나리오가 아니라 peach-gen-spec이 개발용 Spec을 만들기 위한 화면/액션/상태 기준이다.
## UI Proto 검증 매핑
### 화면 목록
| 화면 | 경로 | 목적 |
|------|------|------|
### 주요 액션
| 액션 | 시작 화면 | 결과 화면/상태 |
|------|-----------|----------------|
### 완료/오류 상태
| 상태 | 표시 위치 | 메시지/피드백 |
|------|-----------|---------------|
### 결정 필요 항목
| 항목 | 모호한 이유 | 후속 처리 |
|------|------------|-----------|
작성 규칙:
peach-gen-spec에서 사용자 확인할 수 있도록 기록한다.peach-team-e2e 책임으로 남긴다.경고: 아래 패턴은 모든 UI 패턴에서 반드시 적용해야 합니다. 누락 시 검색, 페이징, URL 상태관리가 동작하지 않습니다.
| # | 패턴 | 적용 위치 |
|---|------|----------|
| 1 | <form @submit.prevent="listAction"> | list-search.vue |
| 2 | @change="listAction" (select, radio) | list-search.vue, list-table.vue |
| 3 | @update:modelValue="listAction" (date) | list-search.vue |
| 4 | @update:page="listMovePage" (pagination) | list-table.vue |
| 5 | watch 패턴 (route → listParams) | list-search.vue |
| 6 | watch 패턴 (route → getList) | list-table.vue |
| 7 | listAction(), resetAction(), listMovePage() | 각 컴포넌트 |
상세 코드와 금지 패턴:
peach-gen-ui/references/core/common-patterns.md참조 (필수, 공유 SoT)
/peach-team-ui-proto [모듈명] [옵션]
| 옵션 | 기본값 | 설명 |
|------|--------|------|
| excel | N | 엑셀 다운로드/업로드 기능 (Mock) |
| file | N | 파일 업로드 기능 (Mock) |
| req | (없음) | 화면/흐름 요구사항 파일 경로. 복잡하면 팀 모드 자동 진입 |
| spec | (없음) | 이미 작성된 Spec 또는 요구사항 문서 경로. 복잡하면 팀 모드 자동 진입 |
| team | (자동) | team=Y로 팀 모드 강제, team=N으로 팀 모드 강제 비활성화 |
# 단독 모드 (기획자 직접 작업)
/peach-team-ui-proto notice-board
/peach-team-ui-proto member-manage excel=Y
/peach-team-ui-proto product file=Y excel=Y
# 복잡 화면 팀 모드
/peach-team-ui-proto product team=Y "상품 목록, 검색, 등록, 수정, 삭제, 엑셀 다운로드, 상태별 승인 흐름이 필요함"
/peach-team-ui-proto product req=docs/prd/product.md
# 팀 모드 강제 비활성화
/peach-team-ui-proto product team=N
UI 패턴은 실행 후 대화형으로 선택 (1단계) 복잡 화면은 요청 분석 후 자동으로 proto-ui-dev + proto-ui-qa 팀 모드로 전환한다.
cat DESIGN.md 2>/dev/null | head -200
⚠️ DESIGN.md 없음 — 디자인 시스템 문서가 없습니다. 작성을 권장합니다.
참고: peach-harness/templates/DESIGN-template.md (또는 /peach-gen-design)
이 단계는 생략 불가! 기획자에게 반드시 UI 패턴을 질문하고 선택을 받은 후 진행합니다. 선택 없이 코드 생성을 시작하면 안 됩니다.
기획자에게 반드시 아래 질문을 하고 선택을 받으세요:
## UI 패턴 선택 (필수)
어떤 UI 패턴을 사용할까요?
### 기본 UI 패턴 (test-data 가이드 있음)
| 패턴 | 설명 | 사용 시기 |
|------|------|----------|
| **crud** | 목록 + 모달 | 일반적인 CRUD, 입력 10개 미만 |
| page | 목록 + 별도 페이지 | 입력 10개 이상, URL 공유 필요 |
| two-depth | 좌우 분할 | 목록/상세 동시 표시 |
| infinite-scroll | 무한 스크롤 | 피드형, 모바일 최적화 |
| select-list | 선택 모달 | 다른 화면에서 데이터 참조 |
| show-more | 더보기 버튼 | 적은 데이터, 단계별 로드 |
| batch-process | 일괄 처리 | 순차 작업 진행바 |
### 추가 옵션 (기본 패턴과 조합)
| 옵션 | 설명 |
|------|------|
| excel | 엑셀 다운로드/업로드 (Mock 로컬 생성) |
| file | 파일 업로드 (Mock UUID 반환) |
### 고급 UI 패턴 (MCP 활용, test-data 없음)
| 패턴 | 설명 |
|------|------|
| adv-search | 복합 검색 (5개 이상 조건) |
| calendar | 달력 UI |
| kanban | 칸반 보드 |
| mega-form | 대량 입력 폼 (50개+) |
| tab-list | 탭 내 리스트 |
선택해주세요 (예: crud, excel=Y)
가이드 코드 경로:
src/modules/test-data/pages/crud/가 있으면 우선 참조src/modules/test-data/pages/[패턴명]/ 또는 가장 가까운 기존 src/modules-task/{년월}/{태스크폴더}/# test-data 모듈 존재 여부 확인
ls src/modules/test-data/ 2>/dev/null
# _common 래퍼 컴포넌트 존재 여부 확인
ls src/modules/_common/components/ 2>/dev/null
# 빌드 도구 감지
ls package.json && head -20 package.json
ls bun.lockb 2>/dev/null && echo "BUILD_TOOL=bun"
# 공유 UI 패턴 references 경로 감지 (SoT: peach-gen-ui)
SHARED_UI_REFS=$(find ~/.claude ~/.agents ~/.codex "${CODEX_HOME:-$HOME/.codex}/skills" -path "*/peach-gen-ui/references" -type d 2>/dev/null | head -1)
# proto 자체 references 경로 (Mock 특화 패턴)
PROTO_REFS=$(find ~/.claude ~/.agents ~/.codex "${CODEX_HOME:-$HOME/.codex}/skills" -path "*/peach-team-ui-proto/references" -type d 2>/dev/null | head -1)
peach-team-ui-proto는 UI 패턴 카탈로그 사본을 보유하지 않는다. 공유 가능한 UI 패턴은 peach-gen-ui/references를 읽고, proto에만 필요한 Mock 차이점만 자체 references에 둔다.
| 구분 | 위치 | 내용 |
|------|------|------|
| 공유 UI SoT | ${SHARED_UI_REFS} | common-patterns, ui-patterns, visual-guide, Store/Type 골격, basic/advanced UI 패턴, validator |
| proto 고유 | ${PROTO_REFS} | mock-service, mock-store, Mock excel/file 옵션, completion/validation, proto team agent |
팀 모드에서는 proto-ui-dev와 proto-ui-qa 작업 지시에 SHARED_UI_REFS, PROTO_REFS 값을 함께 전달한다.
| 파일 존재 | 빌드 도구 | 검증 명령어 |
|-----------|----------|------------|
| bun.lockb | bun | bunx vue-tsc --noEmit && bun run lint:fix && bun run build |
대상 프로젝트에
_common/components/디렉토리가 존재하면 NuxtUI 직접 사용 대신 래퍼 컴포넌트를 우선 사용합니다.
| NuxtUI | _common 래퍼 (있는 경우 우선) |
|--------|------------------------------|
| <UInput> | <p-input-box> |
| <USelect> | <p-nuxt-select> |
| <UFormField> | <p-form-field> |
| <UFileInput> | <p-file-upload> |
_common/components/ 없으면 → NuxtUI 직접 사용 (기존 방식 유지)test-data UI와 요청된 도메인을 비교 분석합니다:
선택된 패턴의 가이드 코드를 기준 골격으로 참조 후 도메인에 맞게 적응:
${PROTO_REFS}/core/mock-service-pattern.md 참조
mock/[모듈명].mock.ts 생성:
- 도메인 맞춤 샘플 데이터 (5~10건)
- 동적 데이터 생성 함수
- API 시그니처 유지 (프로덕션 전환 대비)
${PROTO_REFS}/core/mock-store-pattern.md 참조
store/[모듈명].store.ts 생성:
- useApi() 경유 패턴 유지
- Mock interceptor가 요청을 가로채서 Mock 데이터 반환
- 프로덕션 전환 시 interceptor만 제거하면 됨
| 패턴 | 가이드 코드 경로 | 참조 문서 (peach-gen-ui SoT) |
|------|-----------------|-----------------------------|
| crud | test-data/pages/crud/ | ${SHARED_UI_REFS}/basic/page-pattern.md + ${SHARED_UI_REFS}/basic/modal-pattern.md |
| page | test-data/pages/crud/ + detail-page.vue | ${SHARED_UI_REFS}/basic/page-pattern.md |
| two-depth | test-data/pages/two-depth/ | ${SHARED_UI_REFS}/basic/two-depth-pattern.md |
| infinite-scroll | test-data/pages/infinite-scroll-list/ | ${SHARED_UI_REFS}/basic/infinite-scroll-pattern.md |
| select-list | test-data/pages/select-list/ | ${SHARED_UI_REFS}/basic/select-list-pattern.md |
| batch-process | test-data/modals/list-table-progress.modal.vue | ${SHARED_UI_REFS}/basic/batch-process-pattern.md |
필수 표준 패턴: ${SHARED_UI_REFS}/core/common-patterns.md 참조
# ui-proto 저장소 루트 기준
bunx vue-tsc --noEmit # 타입 체크
bun run lint:fix # 린트
bun run build # 빌드
에러 발생 시: 원인 분석 → 코드 수정 → 다시 검증 → 통과할 때까지 반복
src/modules-task/{년월}/{태스크폴더}/ 아래에 _task-meta.ts, _routes.ts, layout/, overview/, {서브모듈}/pages, {서브모듈}/store, {서브모듈}/type, {서브모듈}/modals를 생성한다. 후속 peach-gen-spec proto=<경로>에는 이 태스크 폴더 경로를 넘긴다.
<script setup> 필수listAction, resetAction, listMovePage, watch 패턴@submit.prevent="listAction", @change="listAction" 패턴_common만 importmock/ 디렉토리에 분리Suggest 시: 이유를 사용자에게 제시하고 확인 후 적용. Must Follow 침범 금지.
보완 시 반드시: (1) 이유 설명 (2) Must Follow 미침범 (3) vue-tsc + lint + build 통과
vue-tsc, lint, build 통과proto-ui-qa APPROVED 또는 사용자 승인된 CONDITIONAL 필요빌드 성공 없이 완료 선언 금지.
생성/수정 파일, vue-tsc/lint/build 결과, 브라우저 확인 경로, 프로덕션 전환 시 Mock 제거 범위를 보고한다.
중요: 선택된 패턴의 참조 파일만 읽으세요! 모든 references를 한 번에 로드하지 마세요.
경고: 아래 파일은 어떤 패턴을 선택하든 반드시 먼저 읽어야 합니다! 이 파일을 읽지 않으면 검색, 페이징, URL 상태관리 패턴이 누락됩니다.
${SHARED_UI_REFS}/core/common-patterns.md - URL Watch 패턴, Selectbox, Router 동기화, Date 검색, 모달 오픈 패턴${PROTO_REFS}/core/mock-service-pattern.md - Mock 데이터 정의, 동적 생성, API 시그니처 유지${PROTO_REFS}/core/mock-store-pattern.md - Mock useApi() 경유 Store 패턴| 선택 패턴 | 읽어야 할 파일 |
|----------|---------------|
| crud | 공유: basic/page-pattern.md + basic/modal-pattern.md |
| page | 공유: basic/page-pattern.md |
| two-depth | 공유: basic/two-depth-pattern.md |
| infinite-scroll | 공유: basic/infinite-scroll-pattern.md |
| select-list | 공유: basic/select-list-pattern.md |
| batch-process | 공유: basic/batch-process-pattern.md |
| adv-search | 공유: advanced/adv-search-pattern.md |
| calendar | 공유: advanced/calendar-pattern.md |
| kanban | 공유: advanced/kanban-pattern.md |
| mega-form | 공유: advanced/mega-form-pattern.md |
| tab-list | 공유: advanced/tab-list-pattern.md |
| 옵션 | 읽어야 할 파일 |
|------|---------------|
| excel=Y | proto 고유: options/excel-pattern.md |
| file=Y | proto 고유: options/file-upload-pattern.md |
| validator 필요 | 공유: options/validator-pattern.md |
| 상황 | 읽어야 할 파일 |
|------|---------------|
| 로딩 상태 필요 | 공유: core/loading-state-pattern.md |
| 에러 처리 필요 | 공유: core/error-handling-pattern.md |
src/modules/test-data/ 또는 기존 src/modules-task/{년월}/{태스크폴더}/src/modules-task/{년월}/{태스크폴더}/{서브모듈}/mock/src/modules-task/{년월}/{태스크폴더}/{서브모듈}/store/test-data 가이드 코드를 기준 골격으로 참조하되, Mock 특화 + 도메인 특성에 맞게 Bounded Autonomy 범위 내에서 적응
tools
기능 브랜치용 git worktree 라이프사이클을 관리하는 스킬. 생성(create) / 상태 진단(status) / PR 준비(finish) / 병합 후 정리(closeout) / 정리(cleanup) 모드를 자동 판단한다. "워크트리 만들어줘", "worktree 생성", "워크트리 정리", "워크트리 삭제", "기능 브랜치 워크트리", "워크트리 상태", "마무리", "PR 생성", "PR 머지 후 정리", "feature worktree" 키워드로 트리거. PR 전 base 비교와 안전한 동기화 필요 여부를 진단한다. 개발 완료 후 finish/closeout 모드에서는 한 번의 통합 체크포인트로 push/PR/merge/cleanup을 안전하게 진행한다.
development
Karpathy LLM Wiki 패턴 기반 지식 관리 스킬. 코드 프로젝트와 옵시디언 노트 모두 지원. Raw Source(코드·문서)를 읽어 docs/wiki/에 누적형 지식베이스를 구축·유지한다. "wiki", "위키", "ingest", "인제스트", "wiki 점검", "wiki lint", "wiki 업데이트", "문서화해줘", "아키텍처 설명해줘", "어떻게 동작해?" 키워드로 트리거. qmd 검색 도구와 연동하여 토큰 절약 + 높은 검색 정확도 제공.
development
Spec 필수 + ui-proto 보조 기준으로 E2E 환경 세팅 + 단위 시나리오 자동 분할 + 통합 suite 생성 + 실행 + 부합 검증을 한 번에 처리하는 통합 팀 스킬. "e2e 검증해줘", "통합 검증", "전체 흐름 테스트", "팀 e2e", "스펙대로 동작하는지 확인", "ui-proto와 다른지 확인", "최종 검증", "릴리스 전 검증" 키워드로 트리거. peach-e2e-setup + peach-e2e-scenario + peach-e2e-suite 3개 스킬의 패턴을 공유하고, 검증 기준은 본 프로젝트 Spec을 필수 기준으로 삼고, ui-proto는 화면/흐름 보조 기준으로 사용한다. peach-team-dev와 함께 하나의 개발-검증 납품 흐름을 이루되, 구현 컨텍스트와 검증 컨텍스트는 분리한다. 팀 실행 방식은 E2E 범위와 런타임 도구 가용성을 분석해 single-agent / role-queue / agent-team 중 선택한다. 단순 코드 동작 검증을 넘어, 기획 의도와 부합하는지 자동 검증하는 게 핵심 차별점.
development
PeachSolution 신규 모듈 개발을 조율하는 통합 팀 스킬. 준비된 DB 스키마와 Spec, ui-proto 기반 표준 모드 + Spec만 모드 + 자연어 prompt 모드를 지원. "팀으로 만들어줘", "풀스택 개발", "팀 개발", "백엔드+UI 전체 생성", "버그 수정해줘", "이 화면에 X 추가해줘", "API와 화면 같이 만들어줘", "백엔드만 만들어줘", "API만 만들어줘", "UI만 추가" 키워드로 트리거. mode=backend(API+Store) | ui(UI만) | fullstack(전체) 지원하며, mode/proto 없이 자연어 입력만으로도 즉흥적 버그 수정·기능 추가 가능. 대규모 작업은 기능 큐와 Contract Gate로 1차 완성도를 높이는 방향을 따른다. peach-team-e2e와 함께 하나의 개발-검증 납품 흐름을 이루되, E2E 검증 독립성은 유지한다. 팀 실행 방식은 요청 범위와 런타임 도구 가용성을 분석해 single-agent / role-queue / agent-team 중 선택한다. 기존 팀 개발 스킬의 개발 조율 역할을 대체하며, DB 생성은 peach-gen-db 선행 단계로 분리한다.