fsd-workshop/skills/structure-planner/SKILL.md
fsd-workshop 파이프라인의 2단계. requirements-analyzer가 생성한 fsd-blueprint.md를 입력받아 인터뷰를 통해 레이아웃 존 분류, shared/ui 후보, widgets 후보, 인증 설계를 결정하고 fsd-blueprint.md의 해당 섹션을 채운다. "FSD 레이아웃 잡아줘", "공용 컴포넌트 정리", "fsd-workshop 2단계", "structure-planner", "레이아웃 구조 설계", "shared ui 뭐 넣지", "인증 어디서 처리해" 같은 요청에 트리거. 반드시 requirements-analyzer 완료 후 실행한다.
npx skillsauth add dev-goraebap/skills structure-plannerInstall 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.
fsd-workshop 파이프라인의 2단계. 페이지 목록을 보고 사용자와 인터뷰하면서 FSD의 레이어 배치를 결정한다.
이 스킬이 결정하는 것:
이 스킬이 결정하지 않는 것:
framework-adapter 역할)⚠️ 미정으로 기록.shared/ui 후보입니다").fsd-blueprint.md가 존재해야 한다. 파일을 먼저 읽고 페이지 목록과 사용자 역할을 파악한다.
파일이 없으면:
fsd-blueprint.md를 찾을 수 없습니다.
먼저 `fsd-workshop:requirements-analyzer`를 실행해 주세요.
페이지 목록을 보고 공통 레이아웃 패턴을 그룹화한다.
| 레이아웃명 | 해당 페이지 패턴 | 특징 |
|-----------|----------------|------|
| AuthLayout | 로그인, 회원가입, 비밀번호 재설정 | 헤더/사이드바 없음, 중앙 정렬 폼 |
| ErrorLayout | 404, 500, 접근 거부 | 최소 레이아웃 |
| MainLayout | 인증된 일반 사용자 페이지 | 상단 네비게이션 또는 사이드바 |
| AdminLayout | 관리자 전용 페이지 | 별도 네비게이션 구조 |
위 4가지 외에 추가 레이아웃이 필요한지 사용자에게 확인한다.
페이지 목록을 분석한 결과, 아래 레이아웃이 필요해 보입니다.
[레이아웃 목록과 각 레이아웃에 속하는 페이지 목록 제시]
맞나요? 추가하거나 합칠 레이아웃이 있으면 알려주세요.
layout.tsx, Nuxt layouts/, SvelteKit +layout.svelte) → app 레이어widgets 레이어⚠️ 미정으로 표시shared/ui의 기준: 도메인 무관하고 여러 페이지에서 재사용되는 순수 UI 컴포넌트.
요구사항에서 공통적으로 나타나는 패턴을 추론해 목록을 제안한다.
예시 추론 로직:
FormField, FormGroupDataTable, PaginationStatusBadge, ConfirmDialogSearchInput아래 컴포넌트들이 shared/ui 후보로 보입니다.
[컴포넌트 목록과 이유 제시]
각 항목에 대해: 맞다 / 이건 도메인 결합이 있다 (→ widgets로 이동) / 불필요 중 선택해 주세요.
목록에서 등록/수정 기능이 있으면 반드시 확인한다.
[기능명] 등록은 어떻게 처리할까요?
1) 별도 페이지로 이동 (예: /employees/new)
2) 현재 페이지에서 모달/다이얼로그
3) 슬라이드 패널 (Drawer)
4) 아직 미정
모달/다이얼로그를 선택한 경우, 반응형 처리를 확인한다.
모바일에서도 같은 방식(모달)으로 보여야 하나요?
아니면 모바일에서는 전체 페이지처럼 보여야 하나요?
1) 모바일에서도 모달 유지
2) 모바일에서는 전체 페이지로 전환 (Bottom Sheet 또는 full-screen 스타일)
3) 아직 미정
반응형 처리가 필요한 경우: shared/ui에 반응형 래퍼 컴포넌트(예: ResponsiveDialog)를 두는 방향을 제안한다.
widgets의 기준: 여러 페이지에서 재사용되지만 도메인 결합이 있는 대형 UI 블록.
자동 추론 후보 예시:
Header, SidebarUserCardNotificationPanel아래 항목들은 여러 페이지에서 재사용되지만 도메인 결합이 있어 widgets 후보입니다.
[위젯 목록과 이유 제시]
맞나요? 추가하거나 제거할 것이 있으면 알려주세요.
인증 관련 페이지가 있으면 반드시 진행한다.
로그인은 어떻게 진입하나요?
1) 전용 페이지 (/login 등) — 로그인하지 않으면 리다이렉트
2) 어느 페이지에서나 뜨는 모달/다이얼로그
3) OAuth 외부 링크만 (소셜 로그인만)
4) 아직 미정
토큰 관리 복잡도는 어떤가요?
1) 단순 — 쿠키 기반이거나 자동 처리 (별도 로직 거의 없음)
2) 중간 — 액세스 토큰 + 리프레시 토큰, 만료 시 재발급
3) 복잡 — 멀티 디바이스, 강제 로그아웃, 세션 관리 등
4) 아직 미정
결과에 따라 배치 결정:
shared/api 클라이언트에서 처리shared/auth 전용 세그먼트 권장인증되지 않은 사용자가 보호된 페이지에 접근하면?
1) 로그인 페이지로 리다이렉트
2) 에러 페이지 표시
3) 아직 미정
라우트 보호 로직의 위치: app 레이어 (미들웨어 또는 라우터 가드).
기존 파일을 읽고 아래 섹션을 채운다. 기존 내용(페이지 & 라우트, 메타 등)은 그대로 유지한다.
## 레이아웃 구조
| 레이아웃명 | 해당 페이지 | 배치 |
|------------|-------------------------------|---------------|
| AuthLayout | 로그인, 회원가입 | app 레이어 |
| ErrorLayout | 404, 500 | app 레이어 |
| MainLayout | 대시보드, 연차신청, ... | app 레이어 |
| AdminLayout | 사원관리, 권한관리, ... | app 레이어 |
---
## 공용 컴포넌트 후보
### shared/ui (도메인 무관, 순수 UI)
| 컴포넌트명 | 설명 | 근거 |
|------------------|------------------------|---------------------------|
| DataTable | 정렬/필터 가능한 테이블 | 사원 목록, 연차 목록 등 다수 페이지 |
| Pagination | 페이지네이션 | DataTable과 함께 사용 |
| StatusBadge | 상태 표시 배지 | 연차 상태, 권한 상태 등 |
| ConfirmDialog | 확인/취소 다이얼로그 | 삭제, 승인, 반려 등 |
| ResponsiveDialog | 모바일 full-screen 전환 | 연차 신청 폼 (모바일 대응) |
### widgets (도메인 결합 있음, 재사용)
| 위젯명 | 설명 | 근거 |
|----------------|----------------------|-----------------|
| AppHeader | 상단 네비게이션 + 유저 메뉴 | MainLayout에서 사용 |
| AppSidebar | 사이드 네비게이션 | MainLayout에서 사용 |
---
## 인증 설계
- **로그인 진입**: 전용 페이지 (/login) — 미인증 시 리다이렉트
- **토큰 관리**: `shared/auth` — 액세스 토큰 + 리프레시 토큰
- **라우트 보호**: `app` 레이어 미들웨어/가드 → 미인증 시 /login 리다이렉트
- **로그아웃**: AppHeader 위젯의 `model` 세그먼트에서 처리
업데이트 후 문서 하단의 진행 상태 표시를 변경한다:
> **현재 단계**: 2/3 — structure-planner 완료
□ fsd-blueprint.md 읽기 완료
□ 레이아웃 존 분류 사용자 확인 완료
□ shared/ui 후보 목록 사용자 확인 완료
□ 모달 vs 페이지 패턴 인터뷰 완료 (해당 기능 있는 경우)
□ 모바일 반응형 패턴 확인 완료 (모달 선택 시)
□ widgets 후보 목록 사용자 확인 완료
□ 인증 설계 3항목 (진입/토큰/라우트) 모두 결정됨 (또는 ⚠️ 미정)
□ 기존 fsd-blueprint.md 내용 보존됨 (덮어쓰지 않음)
□ 진행 단계 표시 2/3로 업데이트됨
framework-adapter 역할.shared/ui에 배치하기. 도메인 결합이 있으면 widgets로.testing
도메인 일반 패턴을 강의 모드로 가르치는 인지과학 기반 학습 스킬. AI가 가상 도메인 전문가(선생님) 역할을 하고 사용자가 학생으로 낯선 도메인을 차근차근 배운다. 메뉴로 시작해서 페이즈를 골라 잠수 → 능동 회상 Q&A → 자기 설명(Feynman) 순서로 진행. Dunlosky 메타분석 기반 인지과학 8원칙(Cognitive Load, Practice Testing, 정교화 질문, Self-Explanation, Schema 연결, Dual Coding, Desirable Difficulty, 분산 학습)을 본문에 명시 적용. 도메인의 법령·산업 표준·인증을 학습 본문에 정식 통합 (출처 인용이 아니라 학습 대상). AI가 판단해 보편적이고 자료 풍부한 도메인은 자료 요청 없이 진행, 좁고 깊은 도메인일 때만 사용자에게 자료 있는지 묻기. 산출물은 학습 노트 스타일 (진도 체크박스 + 페이즈별 일관 구조 + 출처 링크). 페르소나 강요 없이 보편 액터 표현("사원 A", "관리자 A"). bigpicture의 이전 단계로 작동하거나 단독 사용 가능. Triggers — "도메인 학습", "낯선 도메인 가르쳐줘", "이 산업 어떻게 굴러가요", "선생님 모드", "1:1 강의", "도메인 입문", "도메인 일반 패턴", "HR 플랫폼이 뭔지", "이커머스 흐름", "domain classroom", "/domain-classroom".
development
빅픽처 이벤트스토밍의 1:1 분석 도구. 학습 단계(domain-classroom)에서 머리에 박힌 도메인 일반 패턴을 클라이언트 시스템에 매핑해 빅픽처 산출물(시간순 도메인 이벤트·페이즈·액터·외부시스템·핫스팟·피벗)을 누적한다. domain-classroom의 학습 노트(docs/learning-notes/{도메인}- classroom.md)와 클라이언트 자료(RFP·요구사항정의서·기존 시스템 스키마)를 입력으로 받아 페이즈 단위로 진행. 페르소나·서사 없는 분석 톤. 도메인 이벤트 판별 4기준(도메인 전문가 관심·비즈니스 상태 변화·법적 의미·다른 흐름 트리거)을 명시 적용해 UI/Telemetry 이벤트 혼입 방지. 이벤트는 한국어 자연어 + Code Identifier 이중 표기. 핫스팟에 ID·답할 위치·확신도 태그 부여. 산출물은 docs/eventstorming.md 단일 파일로 시작, 후속 단계 스킬(process-modeling·software-design)이 추가될 때 폴더로 자연 분기. Initial/Update/Cycle 모드 지원 — 코드 작성 후에도 다시 사이클 가능. Triggers — "빅픽처", "빅픽처 만들어줘", "이벤트스토밍", "도메인 이벤트 정리", "Big Picture EventStorming", "페이즈 매핑", "도메인 산출물 정리", "/bigpicture".
data-ai
빅픽처 이벤트스토밍의 1:1 학습 친화 변형. 그룹 워크샵에서 도메인 전문가가 던지는 이벤트를 받아 적는 대신, AI가 가상 도메인 전문가 역할을 하고 사용자가 학습자로 1:1 인터뷰하며 빅픽처를 누적한다. 산출물(시간순 도메인 이벤트·액터· 외부시스템·핫스팟·피벗)은 빅픽처 이벤트스토밍과 거의 동일하지만, 한 보드에 한 번에 펼치는 방식이 아니라 **한 액터·한 챕터씩 시간순 서사로 누적**한다. 각 장면마다 "왜 이게 필요한가?" 설명을 곁들여 학습자가 따라올 수 있게 한다. RFP·요구사항정의서·기존 도메인 자료를 입력으로 받거나, 자료가 없으면 AI 사전 리서치(보편 사례·법령·산업 표준)로 보충해 진행. 페르소나 시점의 챕터 단위 (5~7개 장면) + 확신도 태그 [확실/일반론/추측]로 검증 지점 명시 + 사용자 인터랙션 + 액터 전환으로 빅픽처를 점진적으로 채운다. 산출물 저장은 옵셔널 — 이해 자체가 목적이다. Triggers — "낯선 도메인 이해", "도메인 차근차근 알려줘", "1:1 빅픽처", "솔로 이벤트스토밍", "RFP 분석", "비즈니스 흐름 이해", "액터 시나리오", "신규 프로젝트 도메인 파악", "빅픽처 스토리타임", "bigpicture storytime", "/bigpicture-storytime".
databases
PostgreSQL DB에 직접 접근하는 스킬. DB 조회, 테이블 구조 확인, 데이터 검증이 필요할 때 사용한다. Node.js 스크립트로 직접 연결하며 접속 정보는 환경변수 또는 credentials 파일에서 읽는다. "postgres 조회", "DB 확인", "테이블 구조", "pg-query", "쿼리 실행", "데이터 검증", "PostgreSQL 접속" 같은 요청에 트리거한다.