Proto Generator
기획 문서를 입력받아 인터랙티브 프로토타입을 생성하는 스킬. HTML 단독 파일 또는 대상 시스템의 실제 소스코드(live) 두 가지 모드를 지원한다.
파라미터
| 파라미터 | 필수 | 설명 |
|---|
--doc {경로} | O | 기획 문서 경로 (improve.md 등) |
--mode {html|live} | O | 출력 포맷: html (standalone HTML) 또는 live (소스코드) |
| 시스템명 | △ | 대상 시스템명. 미지정 시 문서에서 추출 |
| scope | △ | 페이지 식별자 (kebab-case). 미지정 시 문서에서 추출 |
시스템명 / scope 확정 순서
1. 파라미터로 직접 지정됨 → 그대로 사용
2. 없으면 → --doc 문서에서 추출 (대상 시스템, 대상 화면/기능 섹션 등)
3. 그래도 없으면 → 사용자에게 선택지 프롬프트로 확정
호출 예시
# 문서에서 전부 추출
/proto-generator --doc improve.md --mode live
# 시스템/scope 직접 지정
/proto-generator MySystem member-search --doc improve.md --mode html
# system-planner와 연계 시
system-planner의 --prototype 옵션이 이 스킬을 호출
출력
| mode | 출력물 |
|---|
| html | {출력 디렉토리}/prototype/{시스템}-{scope}.html |
| live | pages/temp/{scope}.tsx + 브랜치 + 커밋 + push + Draft MR |
실행 흐름
1. --doc 기획 문서 읽기 → 화면 기획, API 스펙, 정책, 기획 노트 추출
2. 시스템명/scope 확정 (파라미터 → 문서 → 프롬프트)
3. 대상 시스템 Frontend 저장소 준비 (사용자가 제공한 경로 또는 도구로 접근)
4. 대상 시스템 Frontend 스타일/기술 스택 분석
5. mode 분기:
[html]
a. standalone HTML 생성 (기획 노트 UI 포함)
b. 저장 → {출력 디렉토리}/prototype/
[live]
a. develop 기반 브랜치 생성 (proto-{시스템}-{scope})
b. pages/temp/{scope}.tsx 단일 파일 생성 (기획 노트 UI 포함)
c. 커밋 + push
d. Draft MR 생성
HTML 모드 규칙
스타일 반영
프로토타입은 대상 시스템의 실제 Frontend 스타일을 반영해야 한다. Frontend 저장소에서 아래 항목을 분석한다.
| 분석 항목 | 확인 위치 | 반영 대상 |
|---|
| 테마 토큰 | ConfigProvider, UI 라이브러리 theme | Primary color, 폰트, border-radius, 색상 팔레트 |
| 레이아웃 | Layout 컴포넌트 | SideBar + TopBar + Content 구조 |
| 페이지 패턴 | pages/ 디렉토리 | 검색폼 + 버튼 + 테이블 패턴 |
| CSS 오버라이드 | styles/ 디렉토리 | 버튼, 테이블, 폼 커스텀 스타일 |
| 공통 컴포넌트 | components/ 디렉토리 | FormGroup, SearchForm 등 패턴 |
HTML 포함 요소
- Tailwind CDN + 시스템별 Tailwind config (fontFamily, colors 등)
- 시스템의 웹폰트 CDN
- SideBar + TopBar 레이아웃 (해당 메뉴 active 상태 표시)
- 더미데이터 (실제 도메인에 맞는 사실적 데이터)
- 인터랙션 구현 (탭 전환, Drawer 열기/닫기, 필터 등)
live 모드 규칙
핵심 원칙: 단일 파일, 외부 의존 제로
규칙 1. temp/ 경로에 생성 → pages/temp/{scope}.tsx (또는 src/pages/temp/)
규칙 2. 단일 파일 → 타입, 목 데이터, 컴포넌트 모두 한 파일
규칙 3. 프로젝트 import 금지 → node_modules만 import (UI 라이브러리, react, dayjs 등)
규칙 4. 기존 파일 수정 없음 → temp/ 폴더에 파일 추가만, 영향도 제로
규칙 5. package.json 기반 UI → 실행 시점에 기술 스택 확인하여 UX/UI 맞춤
기술 스택 확인 절차
1. package.json 읽기
2. 설치된 패키지로 기술 스택 판별:
- UI 라이브러리 (antd, MUI, chakra 등)
- 유틸리티 CSS (tailwindcss 등)
- 아이콘 (react-feather, lucide-react 등)
- 날짜 (dayjs, moment 등)
- 차트 (@ant-design/charts, recharts 등)
3. 판별된 스택의 npm 패키지만 import하여 코드 생성
단일 파일 구조
// pages/temp/{scope}.tsx
/**
* [Proto] {제목}
* ⚠️ 프로토타입 — 목 데이터 사용, 프로덕션 전환 시 API 연동 필요
*/
import { useState, useMemo } from 'react'
import { Table, Card, Input, Button, ... } from '{UI 라이브러리}'
// ❌ 프로젝트 내부 import 금지
// ── 타입 정의 ──────────────────────────────
interface SomeItem { ... }
// ── 목 데이터 ──────────────────────────────
const MOCK_DATA: SomeItem[] = [...] // 100건 이상
// ── 기획 노트 데이터 ──────────────────────────────
const SPEC_NOTES: SpecNote[] = [
{ id: 1, title: '...', tags: ['정책'], body: '...' },
]
// ── 메인 컴포넌트 ──────────────────────────────
export default function Proto{Scope}Page() {
const [data] = useState<SomeItem[]>(MOCK_DATA)
return (
<div style={{ padding: 24 }}>
<h2>[Proto] {제목}</h2>
{/* 기획 노트 토글 + 마커 + 패널 */}
{/* 본문 UI */}
</div>
)
}
코드 생성 세부 규칙
| 항목 | 규칙 |
|---|
| export | export default function (named function) |
| 스타일링 | UI 라이브러리 컴포넌트 + 인라인 style 또는 Tailwind className |
| 상태 | useState만 사용 (프로젝트 상태관리 사용 안 함) |
| 데이터 | useState에 목 데이터 직접 초기화 (데이터 페칭 라이브러리 사용 안 함) |
| 레이아웃 | _app.tsx 등이 자동 적용하는 범위만 활용, 직접 import 안 함 |
| TypeScript | strict, any 금지, 타입은 파일 내 inline 정의 |
| 제목 | 페이지 상단에 [Proto] 접두사로 프로토타입 명시 |
브랜치/커밋/MR 규칙
| 항목 | 규칙 |
|---|
| 브랜치명 | proto-{시스템}-{scope} (flat, 슬래시 없음) |
| 커밋 메시지 | proto: {제목} 프로토타입 |
| MR | Draft, squash: true, remove_source_branch: true |
| 타겟 | develop (또는 프로젝트 기본 브랜치) |
페이지 접근
/temp/{scope} URL로 직접 접근 (메뉴 등록 없음)
- URL을 커뮤니케이션 도구에 공유하여 이해관계자 확인
- 영향도 제로:
temp/ 폴더에 파일 1개 추가만, 기존 코드 변경 없음
인터랙션 규칙 (HTML / live 공통)
원칙: 화면에 보이는 모든 UI 요소는 실제로 동작해야 한다.
이해관계자가 프로토타입을 조작하며 UX를 검증할 수 있어야 한다.
목 데이터 요구사항
- 인터랙션을 지탱할 수 있는 충분한 양의 목 데이터를 생성할 것
- 페이징이 있으면 여러 페이지를 채울 수 있는 분량 (예: 100건 이상)
- 검색/필터가 있으면 조건별로 다른 결과가 나오는 다양한 데이터
필수 동작
| UI 요소 | 요구사항 |
|---|
| 페이징 | 페이지 전환 시 해당 페이지의 데이터 표시 |
| 검색/필터 | 조건에 따라 목 데이터를 필터링하여 결과 변경 |
| 정렬 | 컬럼 클릭 시 목 데이터 정렬 (오름차순/내림차순 토글) |
| 탭 전환 | 탭 클릭 시 해당 콘텐츠 표시 |
| Drawer/Modal | 열기/닫기 동작. 선택한 항목의 데이터 표시 |
| 폼 입력 | 입력값 반영, 조건부 필드 활성화/비활성화 |
| 내보내기 | 클릭 시 동작 피드백 (토스트 메시지 등) |
| 상태 변경 | 토글, 체크박스 등 상태 변경이 UI에 즉시 반영 |
기획 노트 시스템 (Spec Annotation)
모든 프로토타입에 인터랙티브 기획 노트를 포함한다.
필수 구성 요소
| 요소 | 요구사항 |
|---|
| 기획 노트 토글 | 화면 우측 상단 고정 버튼. 클릭 시 기획 모드 ON/OFF |
| 어노테이션 마커 | 기획 모드 ON 시 각 UI 영역에 번호 마커 표시, 해당 영역 시각적 하이라이트 |
| 팝오버 | 마커 클릭 시 해당 기획 내용 팝오버 표시 |
| 기획 노트 패널 | 우측 슬라이드 패널, 전체 기획 노트 카드 목록. 카드 클릭 시 해당 영역으로 스크롤 |
노트 유형 태그
| 태그 | 포함 내용 |
|---|
| 정책 | 비즈니스 규칙, 필수/선택 조건, 감사 정책 |
| API | 엔드포인트, 요청/응답 구조, 현행 API 존재 여부 |
| UX | 인터랙션 정의, 컴포넌트 선택, 상태 관리, 레이아웃 정책 |
노트 작성 기준
각 노트에는 아래 항목을 포함한다:
- 무엇을 — 해당 UI 요소의 기능/역할
- 왜 — 현행 Gap 또는 개선 필요성
- 어떻게 — 사용할 API, 컴포넌트, 정책/규칙
- 현행 대비 — 현재 시스템과의 차이점
화면 메타 정보 노트 (필수)
마지막 노트로 화면 메타 정보를 포함한다:
- 페이지 경로
- 우선순위
- 예상 공수
- 관련 개선 항목
- 기대 효과
연관 스킬
system-planner — improve 서브커맨드의 --prototype 옵션으로 이 스킬을 호출