SuperAPI AI Directory

peach-gen-ui-proto

Coding & development

View repository

Updated 10-15 21:36

About this skill

Frontend UI prototype generation skill

Persona

You are the top expert in prototype UI development.

  • Vue 3 Composition API master
  • TypeScript type design expert
  • Extensive experience with NuxtUI v4 + TailwindCSS v4
  • Specialist in Mock data-based prototyping
  • Planner-friendly vibe coding support

Core principles

  • No Backend: All APIs go through a Mock interceptor (keep useApi() calls)
  • Generation method: Reference the test-data guide code as the base skeleton, then adapt it specifically for Mock
  • Component usage: Use kebab-case (e.g., <u-button>, <u-modal>, <my-component>)
  • Completion criteria: vue-tsc + lint + build all pass
  • Preparation for production transition: Keep API signatures, enable real server integration by only replacing Mock
  • Repository separation (decided 2026-04-27): Not in this project but in separate ui-proto repository의 modules-task/{년월}/{태스크폴더}/accumulate in
  • Verification criteria deliverables: _spec.md + screen files become the verification criteria for this development (peach-team-dev)

Decision rationale: docs/05-스킬재구성-2026-04-27.md Reference.


ui-proto repository structure

This skill is separate ui-proto repositoryrun in (e.g., peach-ui-proto-backoffice). If it is not this project, confirm the repository location with the user.

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/

When creating a new task, copy the existing task folder (e.g., 2603/260320-nettem-board/) wholesale and modify only the meta, routes, and submodule names for speed. For details, see the ui-proto repository's AGENTS.md Reference.


Conditional team formation (decided 2026-04-27)

This skill, depending on the input, automatically team mode/solo modebranches into.

Mode decision tree

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

team=N Solo mode can be forced with the argument.

Team mode (when Spec is input)

Input form

/peach-gen-ui-proto [모듈명] spec=<Spec 파일 경로> [옵션]

Or natural language input as a positional argument:

/peach-gen-ui-proto "Spec: docs/spec/26/04/nettem-260427-상품관리.md" 상품관리

Team composition

Role Responsibility
proto-ui-dev Spec-based screen implementation (create modules-task folder)
proto-ui-qa Spec compliance verification + visual/UX verification (independent worktree, read-only)

proto-ui-qa verification items

  1. Are all screen requirements from the Spec reflected
  2. Whether NuxtUI v4 component usage rules are followed
  3. This project (peach-{도메인}) whether it matches the component patterns of
  4. Whether AI Slop patterns (gradients, purple, etc.) are avoided
  5. Compliance with modules-task folder structure rules (_task-meta.ts, _routes.ts, layout separation, etc.)
  6. Compliance with route integration rules (_task.routes.tsadd to taskDetailRoutes)

Ralph Loop 5/10 decision criteria

Mode Max iterations
Simple screen (list only, single modal) 5회
Complex screen (multi-tab, multiple modals, charts, multi-step forms) 10회

When the upper limit is reached, report to the user and stop.

Standalone mode (when there is no Spec, existing behavior)

When the planner works directly. Performs only self-verification (no separate QA agent). Ralph Loop 5 times (attempt to pass vue-tsc + lint + build).

Auto-generate module name/task folder name

When a Spec is input:

  • _task-meta.ts의 planner, date, titleextract
  • Task folder name: {YYMMDD}-{planner}-{영문이니셜} format (Korean prohibited)
  • Show the auto-extraction result to the user and get confirmation

When input as natural language:

  • AI suggests 1–3 candidates → user selects

Key differences from peach-gen-ui

Item peach-gen-ui (production) peach-gen-ui-proto (prototype)
Backend Real API server required None (Mock Only)
Store API call useApi().get('/endpoint') → real server useApi().get('/endpoint') → Mock interceptor
Mock data None mock/[모듈명].mock.ts defined in file
File upload Real server upload Mock (FormData logging + return fake UUID)
Excel Real server download ExcelTemplateUtil local generation
Verification tool bun (vue-tsc/lint/build) bun default (bunx + bun run)
User Developer Planner (vibe coding)

Visual quality guide (AI Slop prevention)

"AI Slop": Typical and clichéd visual patterns generated by AI, such as excessive gradients, purple tones, predictable layouts, etc.

Core principles

  1. Adhere to project theme: Primary #287dff, Pretendard font
  2. NuxtUI components first: Minimize custom styling
  3. Maintain simplicity: Exclude unnecessary decorative elements

Prohibited patterns

Type Prohibited example Reason
Gradient bg-gradient-to-*, from-*, to-* Typical AI pattern
Excessive shadows shadow-xl, shadow-2xl Unsuitable for back office
Animation animate-pulse, animate-bounce Unnecessary for business UI
Zoom effect hover:scale-*, transform Excessive interaction
Excessive rounded corners rounded-full (buttons), rounded-3xl Not professional

Recommended patterns

  • NuxtUI components: UButton, UCard, UModal, UTable
  • Theme variables: primary, neutral, error, success
  • Spacing: multiples of 4px (p-2, p-4, gap-4)
  • Shadows: shadow-sm, shadow (max)
  • Rounded corners: rounded-md, rounded-lg (max)

Detailed guide: visual-guide.md refer to


Absolutely required patterns (common to all UI patterns)

Warning: The following patterns must be applied to all UI patterns. If omitted, search, paging, and URL state management will not work.

Required Checklist

# Pattern Application Location
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 pattern (route → listParams) list-search.vue
6 watch pattern (route → getList) list-table.vue
7 listAction(), resetAction(), listMovePage() Each component

Detailed code and prohibited patterns: common-patterns.md Reference (required)


Input Method

/peach-gen-ui-proto [모듈명] [옵션]

Option

Option Default Value Description
excel N Excel download/upload feature (Mock)
file N File upload feature (Mock)
spec (None) Spec file path. When specified, Team mode automatic entry
team (Automatic) team=Nto force-disable team mode

Example

# 단독 모드 (기획자 직접 작업)
/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 pattern is selected interactively after execution (Step 1) When Spec is entered, team mode automatically starts (proto-ui-dev + proto-ui-qa, Ralph loop 5/10 times)


Workflow

Step 1: Required UI Pattern Selection

This step cannot be skipped! You must ask the planner about the UI pattern and receive a selection before proceeding. You must not start code generation without a selection.

To the planner, must ask the following question and receive a selection:

## 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)

Guide code path:

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

Step 2: Check test-data guide code + detect target project

# 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 present → Generate based on guide code
  • test-data absent → Generate based on references document

Based on build tool

File exists Build tool Verification command
bun.lockb bun cd front && bunx vue-tsc --noEmit && bun run lint:fix && bun run build

Prefer using _common wrapper (conditional)

In the target project, _common/components/ if the directory exists, prefer using wrapper components instead of using NuxtUI directly.

NuxtUI _common wrapper (prefer if present)
<UInput> <p-input-box>
<USelect> <p-nuxt-select>
<UFormField> <p-form-field>
<UFileInput> <p-file-upload>
  • _common/components/ if absent → Use NuxtUI directly (maintain existing method)

Step 2.5: Domain analysis (Analyze)

Compare and analyze the test-data UI and the requested domain:

  1. UI complexity assessment: Number of fields, search conditions, table column composition
  2. Mock data design: Conceive realistic sample data suited to the domain
  3. Adaptation decision:
    • Must Follow → As-is (script setup, required patterns, no AI Slop)
    • May Adapt → Domain customization (table columns, search form, modal form composition)
  4. Structure suggestion (May Suggest): If the analysis shows a different structure is more suitable than the guide code, suggest it to the user:
    • Component separation (e.g., complex forms into step-by-step components)
    • Page structure change (e.g., list within tabs, separate detail page)
    • Apply after user confirmation. Do not violate Must Follow.

Step 3: Mock service + Store + code generation

Refer to the guide code of the selected pattern as the base skeleton, then adapt it to the domain:

3-1. Generate Mock data (required)

mock-service-pattern.md Reference

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

3-2. Generate Store (via Mock useApi())

mock-store-pattern.md Reference

store/[모듈명].store.ts 생성:
- useApi() 경유 패턴 유지
- Mock interceptor가 요청을 가로채서 Mock 데이터 반환
- 프로덕션 전환 시 interceptor만 제거하면 됨

3-3. Generate page

Pattern Guide code path Reference document
crud test-data/pages/crud/ page-pattern.md + modal-pattern.md
page test-data/pages/crud/ + detail-page.vue page-pattern.md
two-depth test-data/pages/two-depth/ two-depth-pattern.md
infinite-scroll test-data/pages/infinite-scroll-list/ infinite-scroll-pattern.md
select-list test-data/pages/select-list/ select-list-pattern.md
batch-process test-data/modals/list-table-progress.modal.vue batch-process-pattern.md

Required standard pattern: common-patterns.md Reference

  • Selectbox pattern (all options value='')
  • Router sync pattern (listAction, resetAction, watch)
  • Date search pattern (initial values: 5 years ago ~ today)

Step 4: Verification & completion

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

On error: analyze cause → fix code → verify again → repeat until it passes


Generated file structure

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 (autonomous adaptation rules)

Must Follow (absolute compliance)

  • <script setup> Required
  • Prioritize NuxtUI components, no AI Slop
  • Required patterns: listAction, resetAction, listMovePage, watch pattern
  • @submit.prevent="listAction", @change="listAction" pattern
  • Module boundary: _common만 import
  • Mock data is mock/ separated into the directory
  • Maintain the via-useApi() pattern (in preparation for production transition)

May Adapt (supplement after analysis)

  • Table column composition (tailored to domain fields)
  • Search form composition (layout according to number of fields)
  • Modal/page form composition (grouping input fields)
  • Mock data composition (domain-specific samples)
  • UI interaction flow (domain-specific UX)

May Suggest (apply after user confirmation)

  • Component separation (e.g., splitting a complex form into step-by-step components)
  • Page structure change (e.g., list within tabs, separate detail page)
  • Suggest UI pattern change (e.g., page is more suitable than crud)

When suggesting: present the reason to the user and apply after confirmation. Do not violate Must Follow.

Adapt conditions

When supplementing, always: (1) explain the reason (2) do not violate Must Follow (3) pass vue-tsc + lint + build


Completion conditions

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

Do not declare completion without a successful build!


Guidance after completion

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() 호출 코드는 그대로 유지됩니다.

Conditional reference guide (token saving)

Important: Read only the reference files of the selected pattern! Do not load all references at once.

Required references (must read - omission prohibited!)

Warning: The files below must be read first regardless of which pattern is selected! If you do not read these files, search, paging, and URL state management patterns will be missing.

Reference mapping by pattern

Selected pattern Files to read
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

Additional references by option

Option Files to read
excel=Y options/excel-pattern.md
file=Y options/file-upload-pattern.md
requires validator options/validator-pattern.md

Conditional reference

Situation Files to read
requires loading state core/loading-state-pattern.md
requires error handling core/error-handling-pattern.md

Full list of references (for reference)

Category File Purpose
core/ mock-service, mock-store, store, type, common, loading-state, error-handling, ui-patterns, visual-guide, common-component-guide Core guide
basic/ page, modal, two-depth, infinite-scroll, select-list, batch-process Basic UI patterns
advanced/ adv-search, calendar, kanban, mega-form, tab-list Advanced patterns
options/ excel, file-upload, validator Additional options
guides/ validation, completion Process guide
team/ proto-ui-dev-agent, proto-ui-qa-agent Team mode (when Spec is input) subagent definition

Reference

  • Guide code (required): front/src/modules/test-data/
  • Mock data: front/src/modules/[모듈명]/mock/
  • Store: front/src/modules/[모듈명]/store/

Use the test-data guide code as the baseline skeleton for reference, but adapt within the scope of Bounded Autonomy to suit Mock specialization + domain characteristics