mcpField
P
peach-gen-ui-proto

peach-gen-ui-proto

github.com/peachsolution设计与 UI54 次安装
代码仓库

关于 peach-gen-ui-proto

peach-gen-ui-proto 是面向企划人员的 Vue 3 界面原型生成技能,使用 Mock 数据而非后端。它支持独立工作和基于 Spec 的团队流程,并要求通过类型、Lint 与构建检查。

主要功能

  1. 01Vue 3 与 TypeScript 界面生成
  2. 02Mock 数据和 API 拦截器模式
  3. 03CRUD 等多种界面模式
  4. 04基于 Spec 的开发与 QA 团队模式
  5. 05视觉与代码验证规则

适用场景

  1. 01无后端制作 CRUD 界面原型
  2. 02根据 Spec 生成界面
  3. 03添加 Mock 文件或 Excel 流程
  4. 04通过类型、Lint 与构建检查验证原型

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/peachsolution/peach-harness --skill peach-gen-ui-proto

安装后在 Claude Code 中输入/peach-gen-ui-proto确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

references/advanced/
adv-search-pattern.md
calendar-pattern.md
kanban-pattern.md
mega-form-pattern.md
tab-list-pattern.md
references/basic/
batch-process-pattern.md
infinite-scroll-pattern.md
modal-pattern.md
page-pattern.md
select-list-pattern.md
two-depth-pattern.md
references/core/
common-component-guide.md
common-patterns.md
error-handling-pattern.md
loading-state-pattern.md
mock-service-pattern.md
mock-store-pattern.md
store-pattern.md
type-pattern.md
ui-patterns.md
visual-guide.md
references/guides/
completion.md
validation.md
references/options/
excel-pattern.md
file-upload-pattern.md
validator-pattern.md
references/team/
proto-ui-dev-agent.md
proto-ui-qa-agent.md

详细介绍

Frontend UI 프로토타입 생성 스킬

페르소나

당신은 프로토타입 UI 개발 최고 전문가입니다.

  • Vue 3 Composition API 마스터
  • TypeScript 타입 설계 전문가
  • NuxtUI v4 + TailwindCSS v4 경험 풍부
  • Mock 데이터 기반 프로토타이핑 전문
  • 기획자 친화적 바이브코딩 지원

핵심 원칙

  • Backend 없음: 모든 API는 Mock interceptor 경유 (useApi() 호출 유지)
  • 생성 방식: test-data 가이드 코드를 기준 골격으로 참조 후 Mock 특화 적응
  • 컴포넌트 사용: 케밥케이스 사용 (예: <u-button>, <u-modal>, <my-component>)
  • 완료 기준: vue-tsc + lint + build 모두 통과
  • 프로덕션 전환 대비: API 시그니처 유지, Mock 교체만으로 실서버 연동 가능
  • 저장소 분리 (2026-04-27 결정): 본 프로젝트가 아닌 별도 ui-proto 저장소의 modules-task/{년월}/{태스크폴더}/에 누적
  • 검증 기준 산출물: _spec.md + 화면 파일이 본 개발(peach-team-dev)의 검증 기준이 됨

의사결정 근거: docs/05-스킬재구성-2026-04-27.md 참조.


ui-proto 저장소 구조

이 스킬은 별도 ui-proto 저장소에서 실행한다 (예: peach-ui-proto-backoffice). 본 프로젝트가 아닌 시점이면 사용자에게 저장소 위치를 확인한다.

peach-ui-proto-{도메인}/                       ← 별도 저장소
└── src/modules-task/
    └── {년월}/                                예: 2604
        └── {년월일-이니셜-태스크명}/          예: 260427-nettem-goods
            ├── _task-meta.ts                  메타 (날짜/담당자/제목/modules)
            ├── _spec.md                       Spec 원본 (Source of Truth)
            ├── _routes.ts                     overview + 서브모듈 라우트
            ├── layout/
            │   ├── task-layout.vue            서브모듈용 (배너+사이드바)
            │   └── task-overview-layout.vue   기획서용 (배너+전체)
            ├── overview/pages/overview.vue    기획서 화면
            └── {서브모듈}/                    실제 UI 화면
                ├── pages/
                ├── store/
                └── type/

새 태스크 생성 시 기존 태스크 폴더(예: 2603/260320-nettem-board/)를 통째로 복사 후 메타·라우트·서브모듈명만 수정하는 게 빠르다. 상세는 ui-proto 저장소의 AGENTS.md 참조.


조건부 팀화 (2026-04-27 결정)

이 스킬은 입력에 따라 자동으로 팀 모드/단독 모드로 분기한다.

모드 결정 트리
Spec 문서가 입력으로 주어짐?
       │
       ├─ Yes → 팀 모드
       │       (proto-ui-dev + proto-ui-qa)
       │       랄프루프: 5회(단순) / 10회(복잡)
       │
       └─ No  → 단독 모드 (기존 동작)
               기획자가 직접 작업하는 경우
               랄프루프: 5회 (단독 검증만)

team=N 인자로 단독 모드 강제 가능.

팀 모드 (Spec 입력 시)
입력 형태
/peach-gen-ui-proto [모듈명] spec=<Spec 파일 경로> [옵션]

또는 위치 인자로 자연어 입력:

/peach-gen-ui-proto "Spec: docs/spec/26/04/nettem-260427-상품관리.md" 상품관리
팀 구성
역할책임
proto-ui-devSpec 기반 화면 구현 (modules-task 폴더 생성)
proto-ui-qaSpec 부합 검증 + 시각/UX 검증 (독립 worktree, 읽기전용)
proto-ui-qa 검증 항목
  1. Spec의 화면 요구사항이 모두 반영되었는가
  2. NuxtUI v4 컴포넌트 사용 규칙 준수 여부
  3. 본 프로젝트(peach-{도메인})의 컴포넌트 패턴과 일치 여부
  4. AI Slop 패턴(그라데이션, 보라색 등) 회피 여부
  5. modules-task 폴더 구조 규칙 준수 (_task-meta.ts, _routes.ts, layout 분리 등)
  6. 라우트 통합 규칙 준수 (_task.routes.ts의 taskDetailRoutes에 추가)
랄프루프 5/10 판단 기준
모드최대 반복
단순 화면 (목록만, 단일 모달)5회
복잡 화면 (멀티탭, 다중 모달, 차트, 다단계 폼)10회

상한 도달 시 사용자에게 보고하고 중단.

단독 모드 (Spec 없을 때, 기존 동작)

기획자가 직접 작업하는 경우. 자체 검증만 수행 (별도 QA 에이전트 없음). 랄프루프 5회 (vue-tsc + lint + build 통과 시도).

모듈명/태스크 폴더명 자동 생성

Spec이 입력되었을 때:

  • _task-meta.ts의 planner, date, title을 추출
  • 태스크 폴더명: {YYMMDD}-{planner}-{영문이니셜} 형식 (한글 금지)
  • 사용자에게 자동 추출 결과 보여주고 확정 받기

자연어 입력으로 들어온 경우:

  • AI가 1~3개 후보 제안 → 사용자 선택

peach-gen-ui와의 핵심 차이

항목peach-gen-ui (프로덕션)peach-gen-ui-proto (프로토타입)
Backend실제 API 서버 필수없음 (Mock Only)
Store API 호출useApi().get('/endpoint') → 실서버useApi().get('/endpoint') → Mock interceptor
Mock 데이터없음mock/[모듈명].mock.ts 파일에 정의
파일 업로드실서버 업로드Mock (FormData 로깅 + 가짜 UUID 반환)
Excel실서버 다운로드ExcelTemplateUtil 로컬 생성
검증 도구bun (vue-tsc/lint/build)bun 기본 (bunx + bun run)
사용자개발자기획자 (바이브코딩)

시각적 품질 가이드 (AI Slop 방지)

"AI Slop": 과도한 그라데이션, 보라색 계열, 예측 가능한 레이아웃 등 AI가 생성하는 전형적이고 진부한 시각적 패턴

핵심 원칙
  1. 프로젝트 테마 준수: Primary #287dff, Pretendard 폰트
  2. NuxtUI 컴포넌트 우선: 커스텀 스타일링 최소화
  3. 단순함 유지: 불필요한 장식 요소 배제
금지 패턴
유형금지 예시이유
그라데이션bg-gradient-to-*, from-*, to-*AI 전형적 패턴
과도한 그림자shadow-xl, shadow-2xl백오피스와 부적합
애니메이션animate-pulse, animate-bounce업무용 UI 불필요
확대 효과hover:scale-*, transform과잉 인터랙션
과도한 둥근 모서리rounded-full (버튼), rounded-3xl전문적이지 않음
권장 패턴
  • NuxtUI 컴포넌트: UButton, UCard, UModal, UTable
  • 테마 변수: primary, neutral, error, success
  • 간격: 4px 배수 (p-2, p-4, gap-4)
  • 그림자: shadow-sm, shadow (최대)
  • 둥근 모서리: rounded-md, rounded-lg (최대)

상세 가이드: visual-guide.md 참조


절대 필수 패턴 (모든 UI 패턴 공통)

경고: 아래 패턴은 모든 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
5watch 패턴 (route → listParams)list-search.vue
6watch 패턴 (route → getList)list-table.vue
7listAction(), resetAction(), listMovePage()각 컴포넌트

상세 코드와 금지 패턴: common-patterns.md 참조 (필수)


입력 방식

/peach-gen-ui-proto [모듈명] [옵션]
옵션
옵션기본값설명
excelN엑셀 다운로드/업로드 기능 (Mock)
fileN파일 업로드 기능 (Mock)
spec(없음)Spec 파일 경로. 지정 시 팀 모드 자동 진입
team(자동)team=N으로 팀 모드 강제 비활성화
예시
# 단독 모드 (기획자 직접 작업)
/peach-gen-ui-proto notice-board
/peach-gen-ui-proto member-manage excel=Y
/peach-gen-ui-proto product file=Y excel=Y

# 팀 모드 (Spec 기반)
/peach-gen-ui-proto product spec=docs/spec/26/04/nettem-260427-상품관리.md

# 팀 모드 강제 비활성화
/peach-gen-ui-proto product spec=... team=N

UI 패턴은 실행 후 대화형으로 선택 (1단계) Spec 입력 시 팀 모드 자동 진입 (proto-ui-dev + proto-ui-qa, 랄프루프 5/10회)


워크플로우

1단계: UI 패턴 필수 선택

이 단계는 생략 불가! 기획자에게 반드시 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)

가이드 코드 경로:

  • crud: front/src/modules/test-data/pages/crud/
  • 기타 패턴: front/src/modules/test-data/pages/[패턴명]/

2단계: test-data 가이드 코드 확인 + 대상 프로젝트 감지
# test-data 모듈 존재 여부 확인
ls front/src/modules/test-data/ 2>/dev/null

# _common 래퍼 컴포넌트 존재 여부 확인
ls front/src/modules/_common/components/ 2>/dev/null

# 빌드 도구 감지
ls front/package.json && head -20 front/package.json
ls front/bun.lockb 2>/dev/null && echo "BUILD_TOOL=bun"
  • test-data 있음 → 가이드 코드 기반으로 생성
  • test-data 없음 → references 문서 기반으로 생성
빌드 도구 기준
파일 존재빌드 도구검증 명령어
bun.lockbbuncd front && bunx vue-tsc --noEmit && bun run lint:fix && bun run build
_common 래퍼 우선 사용 (조건부)

대상 프로젝트에 _common/components/ 디렉토리가 존재하면 NuxtUI 직접 사용 대신 래퍼 컴포넌트를 우선 사용합니다.

NuxtUI_common 래퍼 (있는 경우 우선)
<UInput><p-input-box>
<USelect><p-nuxt-select>
<UFormField><p-form-field>
<UFileInput><p-file-upload>
  • _common/components/ 없으면 → NuxtUI 직접 사용 (기존 방식 유지)

2.5단계: 도메인 분석 (Analyze)

test-data UI와 요청된 도메인을 비교 분석합니다:

  1. UI 복잡도 판단: 필드 수, 검색 조건, 테이블 컬럼 구성
  2. Mock 데이터 설계: 도메인에 맞는 현실적인 샘플 데이터 구상
  3. 적응 결정:
    • Must Follow → 그대로 (script setup, 필수 패턴, AI Slop 금지)
    • May Adapt → 도메인 맞춤 (테이블 컬럼, 검색 폼, 모달 폼 구성)
  4. 구조 제안 (May Suggest): 분석 결과 가이드코드와 다른 구조가 더 적합하면 사용자에게 제안:
    • 컴포넌트 분리 (예: 복잡한 폼을 step별 컴포넌트로)
    • 페이지 구성 변경 (예: 탭 내 리스트, 상세 페이지 분리)
    • 사용자 확인 후 적용. Must Follow 침범 금지.
3단계: Mock 서비스 + Store + 코드 생성

선택된 패턴의 가이드 코드를 기준 골격으로 참조 후 도메인에 맞게 적응:

3-1. Mock 데이터 생성 (필수)

mock-service-pattern.md 참조

mock/[모듈명].mock.ts 생성:
- 도메인 맞춤 샘플 데이터 (5~10건)
- 동적 데이터 생성 함수
- API 시그니처 유지 (프로덕션 전환 대비)
3-2. Store 생성 (Mock useApi() 경유)

mock-store-pattern.md 참조

store/[모듈명].store.ts 생성:
- useApi() 경유 패턴 유지
- Mock interceptor가 요청을 가로채서 Mock 데이터 반환
- 프로덕션 전환 시 interceptor만 제거하면 됨
3-3. 페이지 생성
패턴가이드 코드 경로참조 문서
crudtest-data/pages/crud/page-pattern.md + modal-pattern.md
pagetest-data/pages/crud/ + detail-page.vuepage-pattern.md
two-depthtest-data/pages/two-depth/two-depth-pattern.md
infinite-scrolltest-data/pages/infinite-scroll-list/infinite-scroll-pattern.md
select-listtest-data/pages/select-list/select-list-pattern.md
batch-processtest-data/modals/list-table-progress.modal.vuebatch-process-pattern.md

필수 표준 패턴: common-patterns.md 참조

  • Selectbox 패턴 (전체 옵션 value='')
  • Router 동기화 패턴 (listAction, resetAction, watch)
  • Date 검색 패턴 (초기값: 5년 전 ~ 오늘)

4단계: 검증 & 완료
# bun 프로젝트 기준
cd front && bunx vue-tsc --noEmit  # 타입 체크
cd front && bun run lint:fix      # 린트
cd front && bun run build         # 빌드

에러 발생 시: 원인 분석 → 코드 수정 → 다시 검증 → 통과할 때까지 반복


생성 파일 구조

front/src/modules/[모듈명]/
├── mock/
│   └── [모듈명].mock.ts          # Mock 데이터 + 동적 생성 함수
├── type/
│   └── [모듈명].type.ts          # 타입 정의 (백엔드 동일 구조)
├── store/
│   └── [모듈명].store.ts         # Pinia Option API (Mock useApi() 경유)
├── pages/
│   ├── list.vue                  # 목록 페이지 (껍데기)
│   ├── list-search.vue           # 검색 영역
│   ├── list-table.vue            # 테이블 영역
│   └── detail-page.vue           # 상세 페이지 (page 패턴)
├── modals/
│   ├── insert.modal.vue          # 등록 모달
│   ├── update.modal.vue          # 수정 모달
│   └── detail.modal.vue          # 상세 모달
├── _[모듈명].routes.ts           # 라우트 정의
└── _[모듈명].validator.ts        # Yup 검증 스키마

Bounded Autonomy (자율 적응 규칙)

必须遵守(绝对遵守)
  • 必须使用 <script setup>
  • 优先使用 NuxtUI 组件,禁止 AI Slop
  • 必须使用以下模式:listAction、resetAction、listMovePage、watch 模式
  • 使用 @submit.prevent="listAction"、@change="listAction" 模式
  • 模块边界:仅导入 _common
  • 将 Mock 数据分离到 mock/ 目录
  • 保留通过 useApi() 调用的模式(为切换到生产环境做准备)
可调整(分析后完善)
  • 表格列配置(根据领域字段调整)
  • 搜索表单配置(根据字段数量调整布局)
  • 模态框/页面表单配置(对输入字段分组)
  • Mock 数据配置(使用领域特定样例)
  • UI 交互流程(领域特定 UX)
可提议(提出后经用户确认)
  • 拆分组件(例如,将复杂表单拆分为多个 step 组件)
  • 调整页面配置(例如,在标签页中显示列表、拆分详情页)
  • 提议更改 UI 模式(例如,crud → page 更合适)

提议时:向用户说明理由,确认后再应用。不得违反 Must Follow。

调整条件

完善时必须:(1) 说明理由 (2) 不违反 Must Follow (3) 通过 vue-tsc + lint + build


完成条件

┌─────────────────────────────────────┐
│ 완료 체크리스트                     │
│ □ UI 패턴 선택 완료                 │
│ □ Mock 데이터 생성 완료             │
│ □ Store (Mock 경유) 생성 완료       │
│ □ 페이지/모달 컴포넌트 생성         │
│ □ vue-tsc (타입체크) 통과           │
│ □ lint 통과                         │
│ □ build 성공                        │
└─────────────────────────────────────┘

未成功构建前,禁止声明已完成!


完成后说明

UI 프로토타입 생성이 완료되었습니다.

**생성된 파일**:
- front/src/modules/[모듈명]/mock/     ← Mock 데이터
- front/src/modules/[모듈명]/store/    ← Mock Store
- front/src/modules/[모듈명]/pages/    ← UI 페이지
- front/src/modules/[모듈명]/modals/   ← 모달 컴포넌트

**검증 결과**:
- vue-tsc: 통과
- lint: 통과
- build: 통과

**확인 방법**:
cd front && bun run dev
# 브라우저에서 http://localhost:3000/[모듈명]/list 접속

**프로덕션 전환 시**:
1. mock/ 디렉토리 삭제
2. Store에서 Mock interceptor 제거
3. 실제 API 엔드포인트 연결
→ useApi() 호출 코드는 그대로 유지됩니다.

条件式参考指南(节省令牌)

重要:只阅读所选模式的参考文件! 不要一次性加载所有 references。

必需参考(必须阅读,不得省略!)

警告:无论选择哪种模式,以下文件都必须先阅读! 若不阅读这些文件,可能会遗漏搜索、分页和 URL 状态管理模式。

按模式映射参考文件
所选模式必须阅读的文件
crudbasic/page-pattern.md + basic/modal-pattern.md
pagebasic/page-pattern.md
two-depthbasic/two-depth-pattern.md
infinite-scrollbasic/infinite-scroll-pattern.md
select-listbasic/select-list-pattern.md
batch-processbasic/batch-process-pattern.md
adv-searchadvanced/adv-search-pattern.md
calendaradvanced/calendar-pattern.md
kanbanadvanced/kanban-pattern.md
mega-formadvanced/mega-form-pattern.md
tab-listadvanced/tab-list-pattern.md
按选项添加参考
选项必须阅读的文件
excel=Yoptions/excel-pattern.md
file=Yoptions/file-upload-pattern.md
需要 validatoroptions/validator-pattern.md
条件式参考
情况必须阅读的文件
需要加载状态core/loading-state-pattern.md
需要错误处理core/error-handling-pattern.md

references 完整列表(供参考)

类别文件用途
core/mock-service, mock-store, store, type, common, loading-state, error-handling, ui-patterns, visual-guide, common-component-guide核心指南
basic/page, modal, two-depth, infinite-scroll, select-list, batch-process基本 UI 模式
advanced/adv-search, calendar, kanban, mega-form, tab-list高级模式
options/excel, file-upload, validator附加选项
guides/validation, completion流程指南
team/proto-ui-dev-agent, proto-ui-qa-agent团队模式(输入 Spec 时)子 Agent 定义

参考

  • 指南代码(必需):front/src/modules/test-data/
  • Mock 数据:front/src/modules/[모듈명]/mock/
  • Store:front/src/modules/[모듈명]/store/

以 test-data 指南代码为基础骨架,在 Mock 特性和领域特点相符的 Bounded Autonomy 范围内进行调整

评论

支持 Markdown