@su-record/vibe 2.9.2 → 2.9.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CLAUDE.md +30 -10
- package/README.ko.md +90 -25
- package/README.md +139 -25
- package/agents/teams/figma/figma-builder.md +29 -1
- package/agents/teams/review-debate-team.md +1 -1
- package/commands/vibe.analyze.md +324 -170
- package/commands/vibe.figma.md +549 -34
- package/commands/vibe.harness.md +177 -0
- package/commands/vibe.run.md +44 -27
- package/commands/vibe.scaffold.md +195 -0
- package/commands/vibe.spec.md +375 -947
- package/commands/vibe.trace.md +17 -0
- package/commands/vibe.verify.md +19 -10
- package/dist/cli/commands/init.d.ts.map +1 -1
- package/dist/cli/commands/init.js +29 -1
- package/dist/cli/commands/init.js.map +1 -1
- package/dist/cli/commands/update.d.ts.map +1 -1
- package/dist/cli/commands/update.js +4 -2
- package/dist/cli/commands/update.js.map +1 -1
- package/dist/cli/postinstall/constants.d.ts +1 -1
- package/dist/cli/postinstall/constants.d.ts.map +1 -1
- package/dist/cli/postinstall/constants.js +6 -1
- package/dist/cli/postinstall/constants.js.map +1 -1
- package/dist/cli/setup/ProjectSetup.d.ts +12 -1
- package/dist/cli/setup/ProjectSetup.d.ts.map +1 -1
- package/dist/cli/setup/ProjectSetup.js +259 -72
- package/dist/cli/setup/ProjectSetup.js.map +1 -1
- package/dist/cli/setup.d.ts +1 -1
- package/dist/cli/setup.d.ts.map +1 -1
- package/dist/cli/setup.js +1 -1
- package/dist/cli/setup.js.map +1 -1
- package/hooks/scripts/figma-guard.js +220 -0
- package/package.json +1 -1
- package/skills/arch-guard/SKILL.md +1 -1
- package/skills/capability-loop/SKILL.md +106 -2
- package/skills/chub-usage/SKILL.md +43 -43
- package/skills/claude-md-guide/SKILL.md +175 -175
- package/skills/design-teach/SKILL.md +33 -33
- package/skills/devlog/SKILL.md +38 -38
- package/skills/event-comms/SKILL.md +23 -13
- package/skills/event-ops/SKILL.md +28 -19
- package/skills/event-planning/SKILL.md +13 -1
- package/skills/priority-todos/SKILL.md +1 -1
- package/skills/vibe.figma/SKILL.md +234 -154
- package/skills/vibe.figma.convert/SKILL.md +123 -112
- package/skills/vibe.figma.extract/SKILL.md +141 -129
- package/skills/vibe.interview/SKILL.md +358 -0
- package/skills/vibe.interview/checklists/api.md +101 -0
- package/skills/vibe.interview/checklists/feature.md +88 -0
- package/skills/vibe.interview/checklists/library.md +95 -0
- package/skills/vibe.interview/checklists/mobile.md +89 -0
- package/skills/vibe.interview/checklists/webapp.md +97 -0
- package/skills/vibe.interview/checklists/website.md +99 -0
- package/skills/vibe.plan/SKILL.md +216 -0
- package/skills/vibe.spec/SKILL.md +1155 -0
- package/{commands/vibe.spec.review.md → skills/vibe.spec.review/SKILL.md} +269 -108
- package/vibe/templates/claudemd-template.md +74 -0
- package/vibe/templates/constitution-template.md +15 -0
- package/vibe/templates/plan-template.md +194 -0
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
# Discovery Checklist: Mobile App
|
|
2
|
+
|
|
3
|
+
> iOS/Android/크로스플랫폼 **네이티브 앱**. React Native, Flutter, Swift, Kotlin 등.
|
|
4
|
+
|
|
5
|
+
## Required
|
|
6
|
+
|
|
7
|
+
### R1. purpose
|
|
8
|
+
**Q**: 이 모바일 앱으로 어떤 문제를 해결하시려 하나요?
|
|
9
|
+
|
|
10
|
+
### R2. platforms
|
|
11
|
+
**Q**: 어떤 플랫폼을 지원하나요?
|
|
12
|
+
**힌트**: iOS만 / Android만 / 둘 다 / 웹+앱.
|
|
13
|
+
**follow-up**: "우선 개발 플랫폼은?"
|
|
14
|
+
|
|
15
|
+
### R3. target-users
|
|
16
|
+
**Q**: 주요 사용자는 누구이며 언제 앱을 사용하나요?
|
|
17
|
+
**힌트**: 사용 맥락(출퇴근, 운동 중, 여가, 업무 등)이 중요.
|
|
18
|
+
|
|
19
|
+
### R4. core-features
|
|
20
|
+
**Q**: 핵심 기능(Must)은 무엇인가요?
|
|
21
|
+
**힌트**: 3-7개. MVP 범위로 압축.
|
|
22
|
+
|
|
23
|
+
### R5. auth-method
|
|
24
|
+
**Q**: 인증 방식은?
|
|
25
|
+
**힌트**: 소셜 로그인, 애플 로그인(iOS 필수), 전화번호, 게스트 모드, 인증 없음.
|
|
26
|
+
|
|
27
|
+
### R6. backend-need
|
|
28
|
+
**Q**: 백엔드가 필요한가요?
|
|
29
|
+
**힌트**: 100% 로컬 / BaaS(Firebase/Supabase) / 자체 백엔드 / 기존 API 사용.
|
|
30
|
+
|
|
31
|
+
### R7. store-plan
|
|
32
|
+
**Q**: 앱스토어 배포 계획이 있나요?
|
|
33
|
+
**힌트**: App Store, Play Store, 사내 배포, TestFlight만.
|
|
34
|
+
|
|
35
|
+
### R8. success-metric
|
|
36
|
+
**Q**: 성공 기준은? (DAU, 리텐션, 리뷰 점수, 특정 액션 N회)
|
|
37
|
+
|
|
38
|
+
## Optional
|
|
39
|
+
|
|
40
|
+
### O1. offline-mode
|
|
41
|
+
**Q**: 오프라인 동작이 필요한가요?
|
|
42
|
+
**힌트**: 완전 오프라인 / 일부 기능 / 온라인 필수.
|
|
43
|
+
|
|
44
|
+
### O2. push-notifications
|
|
45
|
+
**Q**: 푸시 알림이 필요한가요?
|
|
46
|
+
**힌트**: APNs, FCM, OneSignal.
|
|
47
|
+
|
|
48
|
+
### O3. native-features
|
|
49
|
+
**Q**: 어떤 네이티브 기능을 사용하나요?
|
|
50
|
+
**힌트**: 카메라, 위치, 생체인증, HealthKit, 연락처, 블루투스, NFC.
|
|
51
|
+
|
|
52
|
+
### O4. deep-linking
|
|
53
|
+
**Q**: 딥링크/유니버설 링크가 필요한가요?
|
|
54
|
+
|
|
55
|
+
### O5. in-app-purchase
|
|
56
|
+
**Q**: 인앱 결제가 필요한가요?
|
|
57
|
+
**힌트**: IAP(구독/소비성), 외부 결제 링크.
|
|
58
|
+
|
|
59
|
+
### O6. analytics
|
|
60
|
+
**Q**: 분석 도구는?
|
|
61
|
+
**힌트**: Firebase Analytics, Amplitude, Mixpanel, PostHog.
|
|
62
|
+
|
|
63
|
+
### O7. crash-reporting
|
|
64
|
+
**Q**: 크래시 리포팅은?
|
|
65
|
+
**힌트**: Sentry, Crashlytics, Bugsnag.
|
|
66
|
+
|
|
67
|
+
### O8. accessibility
|
|
68
|
+
**Q**: 접근성 요구사항은?
|
|
69
|
+
**힌트**: VoiceOver(iOS), TalkBack(Android), Dynamic Type.
|
|
70
|
+
|
|
71
|
+
### O9. dark-mode
|
|
72
|
+
**Q**: 다크 모드 지원이 필요한가요?
|
|
73
|
+
|
|
74
|
+
### O10. i18n
|
|
75
|
+
**Q**: 다국어 지원이 필요한가요?
|
|
76
|
+
|
|
77
|
+
### O11. device-orientation
|
|
78
|
+
**Q**: 지원 디바이스 방향은?
|
|
79
|
+
**힌트**: 세로 전용 / 가로 전용 / 둘 다 / 태블릿.
|
|
80
|
+
|
|
81
|
+
### O12. min-os-version
|
|
82
|
+
**Q**: 지원 최소 OS 버전은?
|
|
83
|
+
|
|
84
|
+
### O13. app-size
|
|
85
|
+
**Q**: 앱 용량 제한이 있나요?
|
|
86
|
+
|
|
87
|
+
### O14. build-distribution
|
|
88
|
+
**Q**: 빌드/배포 방식은?
|
|
89
|
+
**힌트**: EAS, Fastlane, Xcode Cloud, CI/CD.
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
# Discovery Checklist: Webapp
|
|
2
|
+
|
|
3
|
+
> 대시보드, SaaS, 관리자 도구, 내부 도구 등 **상호작용/상태 기반 웹 애플리케이션**.
|
|
4
|
+
|
|
5
|
+
## Required (반드시 수집)
|
|
6
|
+
|
|
7
|
+
### R1. purpose
|
|
8
|
+
**Q**: 이 웹앱으로 어떤 문제를 해결하시려고 하나요?
|
|
9
|
+
**힌트**: 구체적 사용 시나리오 1개 이상.
|
|
10
|
+
|
|
11
|
+
### R2. user-roles
|
|
12
|
+
**Q**: 어떤 종류의 사용자가 있나요? (역할/권한 구분)
|
|
13
|
+
**힌트**: 예) 관리자/일반사용자, 호스트/게스트, 판매자/구매자. 단일 역할이면 "단일".
|
|
14
|
+
**follow-up**: 각 역할이 할 수 있는 일을 간단히.
|
|
15
|
+
|
|
16
|
+
### R3. core-features
|
|
17
|
+
**Q**: 핵심 기능을 우선순위 순으로 나열해주세요.
|
|
18
|
+
**힌트**: Must/Should/Could로 구분. 최소 3개.
|
|
19
|
+
**follow-up**: "첫 버전(MVP)에 반드시 있어야 할 것만 고르면 몇 개인가요?"
|
|
20
|
+
|
|
21
|
+
### R4. data-model
|
|
22
|
+
**Q**: 주요 데이터는 무엇인가요? (엔티티와 관계 대략)
|
|
23
|
+
**힌트**: 예) User → Project → Task. ERD 수준의 정밀도는 불필요.
|
|
24
|
+
|
|
25
|
+
### R5. auth-method
|
|
26
|
+
**Q**: 인증 방식은?
|
|
27
|
+
**힌트**: 이메일/비밀번호, 소셜(Google/Apple/GitHub), 매직 링크, Passkey, SSO, 인증 없음.
|
|
28
|
+
**follow-up**: "MFA 필요하신가요?"
|
|
29
|
+
|
|
30
|
+
### R6. tech-stack
|
|
31
|
+
**Q**: 기술 스택 선호가 있나요?
|
|
32
|
+
**힌트**: Frontend/Backend/DB. 기존 프로젝트면 그대로 유지.
|
|
33
|
+
|
|
34
|
+
### R7. hosting-runtime
|
|
35
|
+
**Q**: 어디서 실행되나요? (호스팅/런타임)
|
|
36
|
+
**힌트**: Vercel, Fly, Railway, AWS, 자체 서버. Serverless vs 항상-on.
|
|
37
|
+
|
|
38
|
+
### R8. success-metric
|
|
39
|
+
**Q**: 성공 기준은? (DAU, 리텐션, 핵심 액션 N회 등)
|
|
40
|
+
**힌트**: 측정 가능한 숫자.
|
|
41
|
+
|
|
42
|
+
## Optional
|
|
43
|
+
|
|
44
|
+
### O1. realtime-requirement
|
|
45
|
+
**Q**: 실시간 기능이 필요한가요? (채팅, 알림, 협업 등)
|
|
46
|
+
**힌트**: WebSocket/SSE/Polling 중 어느 수준.
|
|
47
|
+
|
|
48
|
+
### O2. offline-support
|
|
49
|
+
**Q**: 오프라인 지원이 필요한가요? (PWA, 로컬 동기화)
|
|
50
|
+
|
|
51
|
+
### O3. notifications
|
|
52
|
+
**Q**: 알림은 어떤 방식으로? (in-app, 이메일, 푸시, SMS)
|
|
53
|
+
|
|
54
|
+
### O4. integrations
|
|
55
|
+
**Q**: 외부 서비스 통합이 필요한가요?
|
|
56
|
+
**힌트**: 결제(Stripe), 이메일(SendGrid/Resend), SMS(Twilio), 스토리지(S3), 검색(Algolia), AI(OpenAI).
|
|
57
|
+
|
|
58
|
+
### O5. permission-model
|
|
59
|
+
**Q**: 권한 모델이 복잡한가요? (RBAC, ABAC, 리소스 소유권)
|
|
60
|
+
**힌트**: 예) "팀 단위 권한, 관리자가 역할 지정"
|
|
61
|
+
|
|
62
|
+
### O6. data-retention
|
|
63
|
+
**Q**: 데이터 보존/삭제 정책이 있나요?
|
|
64
|
+
**힌트**: GDPR, 사용자 요청 삭제, 보관 기간.
|
|
65
|
+
|
|
66
|
+
### O7. i18n
|
|
67
|
+
**Q**: 다국어 지원이 필요한가요?
|
|
68
|
+
|
|
69
|
+
### O8. accessibility
|
|
70
|
+
**Q**: 접근성 목표는? (WCAG 레벨)
|
|
71
|
+
|
|
72
|
+
### O9. performance-slo
|
|
73
|
+
**Q**: 성능 목표(SLO)가 있나요?
|
|
74
|
+
**힌트**: 예) p95 API 응답 < 300ms, 페이지 로드 < 2s.
|
|
75
|
+
|
|
76
|
+
### O10. monitoring
|
|
77
|
+
**Q**: 모니터링/로깅 도구는?
|
|
78
|
+
**힌트**: Sentry, Datadog, Logflare, OpenTelemetry.
|
|
79
|
+
|
|
80
|
+
### O11. analytics
|
|
81
|
+
**Q**: 사용자 분석 도구가 필요한가요?
|
|
82
|
+
**힌트**: PostHog, Mixpanel, Amplitude.
|
|
83
|
+
|
|
84
|
+
### O12. test-strategy
|
|
85
|
+
**Q**: 테스트 전략 선호가 있나요?
|
|
86
|
+
**힌트**: unit/integration/e2e 중 어디에 무게.
|
|
87
|
+
|
|
88
|
+
### O13. ci-cd
|
|
89
|
+
**Q**: CI/CD 환경은?
|
|
90
|
+
**힌트**: GitHub Actions, GitLab CI, Vercel Auto, 수동 배포.
|
|
91
|
+
|
|
92
|
+
### O14. budget
|
|
93
|
+
**Q**: 월 인프라 예산은?
|
|
94
|
+
|
|
95
|
+
### O15. compliance
|
|
96
|
+
**Q**: 법적/컴플라이언스 요구사항이 있나요?
|
|
97
|
+
**힌트**: GDPR, HIPAA, SOC2, 개인정보보호법.
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
# Discovery Checklist: Website
|
|
2
|
+
|
|
3
|
+
> 랜딩, 포트폴리오, 프로모션, 브랜드, 회사 소개 등 **정보 전달형 웹사이트**.
|
|
4
|
+
|
|
5
|
+
## Required (반드시 수집)
|
|
6
|
+
|
|
7
|
+
### R1. purpose
|
|
8
|
+
**Q**: 이 웹사이트를 왜 만드시나요? 어떤 목적인가요?
|
|
9
|
+
**힌트**: 예) 신제품 런칭 프로모션, 개인 포트폴리오, 회사 소개, 이벤트 안내, 에이전시 showcase
|
|
10
|
+
**follow-up**: 목적이 구체적이지 않으면 "런칭/브랜딩/전환/정보제공 중 어디에 가까운가요?"
|
|
11
|
+
|
|
12
|
+
### R2. target-users
|
|
13
|
+
**Q**: 주요 타깃 사용자는 누구인가요? (나이/관심사/상황 등)
|
|
14
|
+
**힌트**: "누구나"는 지양. 구체적 페르소나 1-2명 확보.
|
|
15
|
+
**follow-up**: "그분들은 보통 어떤 상황에서 이 사이트를 방문하게 되나요?"
|
|
16
|
+
|
|
17
|
+
### R3. core-message
|
|
18
|
+
**Q**: 방문자가 사이트를 떠날 때 단 한 문장만 기억한다면, 그건 무엇이어야 하나요?
|
|
19
|
+
**힌트**: USP/핵심 가치제안.
|
|
20
|
+
|
|
21
|
+
### R4. required-sections
|
|
22
|
+
**Q**: 어떤 섹션이 필수인가요?
|
|
23
|
+
**힌트**: 예) Hero, About, Features, Gallery, Testimonials, Contact, FAQ, CTA
|
|
24
|
+
**follow-up**: 각 섹션이 달성해야 할 목적도 함께 확인.
|
|
25
|
+
|
|
26
|
+
### R5. brand-tone
|
|
27
|
+
**Q**: 브랜드 톤/무드는 어떻게 가고 싶으신가요?
|
|
28
|
+
**힌트**: 예) 미니멀·시네마틱, 따뜻·아날로그, 모던·고급, 친근·활기, 전문·신뢰
|
|
29
|
+
**follow-up**: "비슷한 느낌의 사이트가 있다면 URL 공유 가능한가요?"
|
|
30
|
+
|
|
31
|
+
### R6. tech-constraints
|
|
32
|
+
**Q**: 기술 제약이 있나요? (지원 브라우저, 성능 목표, 디바이스 등)
|
|
33
|
+
**힌트**: 예) 최신 브라우저만, LCP < 2.5s, 모바일 우선, IE 지원 불필요
|
|
34
|
+
**follow-up**: 기존 프로젝트면 CLAUDE.md/config.json 스택 확인.
|
|
35
|
+
|
|
36
|
+
### R7. launch-timeline
|
|
37
|
+
**Q**: 언제까지 런칭이 필요한가요?
|
|
38
|
+
**힌트**: 정확한 날짜 또는 상대적 기간 (2주/1달/분기 내).
|
|
39
|
+
|
|
40
|
+
### R8. success-metric
|
|
41
|
+
**Q**: 이 웹사이트가 "성공했다"고 판단할 기준은 무엇인가요?
|
|
42
|
+
**힌트**: 예) 월 방문자 N명, 이메일 수집 N건, 전환율 X%, 특정 버튼 클릭 N회
|
|
43
|
+
|
|
44
|
+
## Optional (시간이 있으면 수집)
|
|
45
|
+
|
|
46
|
+
### O1. reference-sites
|
|
47
|
+
**Q**: 참고하고 싶은 레퍼런스 사이트가 있나요? (좋아하는 디자인/인터랙션)
|
|
48
|
+
**힌트**: URL 2-3개.
|
|
49
|
+
|
|
50
|
+
### O2. color-direction
|
|
51
|
+
**Q**: 컬러 방향이 있나요? (다크/라이트, 주요 색상, 피해야 할 색)
|
|
52
|
+
**힌트**: 브랜드 컬러가 있으면 HEX 값. 없으면 키워드.
|
|
53
|
+
|
|
54
|
+
### O3. typography-preference
|
|
55
|
+
**Q**: 타이포그래피 선호가 있나요? (serif/sans, 한글 폰트 등)
|
|
56
|
+
|
|
57
|
+
### O4. animation-level
|
|
58
|
+
**Q**: 애니메이션/인터랙션 강도는?
|
|
59
|
+
**힌트**: 1-5 스케일. 1=정적, 3=가벼운 스크롤 효과, 5=풀스크린 인터랙티브.
|
|
60
|
+
|
|
61
|
+
### O5. responsive-strategy
|
|
62
|
+
**Q**: 디바이스 우선순위가 어떻게 되나요?
|
|
63
|
+
**힌트**: desktop-first / mobile-first / equal priority.
|
|
64
|
+
|
|
65
|
+
### O6. accessibility-level
|
|
66
|
+
**Q**: 접근성 수준은?
|
|
67
|
+
**힌트**: WCAG A / AA / AAA. 공공/의료 분야면 AA 이상 권장.
|
|
68
|
+
|
|
69
|
+
### O7. seo-importance
|
|
70
|
+
**Q**: SEO가 중요한가요?
|
|
71
|
+
**힌트**: 검색 유입이 주 채널인가? 타깃 키워드는?
|
|
72
|
+
|
|
73
|
+
### O8. i18n
|
|
74
|
+
**Q**: 다국어 지원이 필요한가요?
|
|
75
|
+
**힌트**: 지원할 언어 목록.
|
|
76
|
+
|
|
77
|
+
### O9. analytics
|
|
78
|
+
**Q**: 분석 도구 연동이 필요한가요?
|
|
79
|
+
**힌트**: 예) Google Analytics 4, Plausible, Hotjar, Mixpanel
|
|
80
|
+
|
|
81
|
+
### O10. cms-need
|
|
82
|
+
**Q**: 콘텐츠를 나중에 직접 수정해야 하나요? (CMS 필요)
|
|
83
|
+
**힌트**: Sanity, Contentful, Notion, Headless CMS 등.
|
|
84
|
+
|
|
85
|
+
### O11. hosting-preference
|
|
86
|
+
**Q**: 호스팅 선호가 있나요?
|
|
87
|
+
**힌트**: Vercel, Netlify, Cloudflare Pages, GitHub Pages, 자체 호스팅.
|
|
88
|
+
|
|
89
|
+
### O12. budget
|
|
90
|
+
**Q**: 월 운영 예산은 어느 수준인가요?
|
|
91
|
+
**힌트**: $0 (free tier) / $10 이하 / $50 이하 / 제약 없음.
|
|
92
|
+
|
|
93
|
+
### O13. maintenance-plan
|
|
94
|
+
**Q**: 런칭 후 유지보수는 누가 하나요?
|
|
95
|
+
**힌트**: 본인 / 외주 / 자동화만 / 미정.
|
|
96
|
+
|
|
97
|
+
### O14. content-author
|
|
98
|
+
**Q**: 콘텐츠(카피, 이미지, 영상)는 누가 준비하나요?
|
|
99
|
+
**힌트**: 클라이언트가 준비 / 이 프로젝트에서 함께 작성 / AI로 생성.
|
|
@@ -0,0 +1,216 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: vibe.plan
|
|
3
|
+
tier: core
|
|
4
|
+
description: "Refine a vibe.interview result into a human-readable markdown 기획서 (planning document). The plan is a vision document that downstream skills/commands use: /vibe.spec consumes it for code implementation, /vibe.figma uses it for UI storyboards. Must use this skill after vibe.interview completes, or when the user has raw interview notes and wants a structured plan document."
|
|
5
|
+
triggers: [기획서, 기획서 작성, plan document, 기획 정리, "interview 정리", refine plan]
|
|
6
|
+
priority: 90
|
|
7
|
+
chain-next: [vibe.spec, vibe.figma]
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
# vibe.plan — Interview → Plan Document Refinement
|
|
11
|
+
|
|
12
|
+
> **Principle**: Refine the raw Q&A from the interview into a **human-readable vision document**. AI execution structures like PTCF/EARS/Phase are the responsibility of `/vibe.spec`.
|
|
13
|
+
|
|
14
|
+
## When to Use
|
|
15
|
+
|
|
16
|
+
- `vibe.interview` has just completed and `.claude/vibe/interviews/{feature}.md` exists
|
|
17
|
+
- The user requests "write me a plan document" or "clean up the interview"
|
|
18
|
+
- Need to convert an external PRD/wireframe into the vibe plan document format
|
|
19
|
+
|
|
20
|
+
**Skip condition**:
|
|
21
|
+
- If this skill is called directly without an interview → chain to `vibe.interview` first (no chain-prev; inform the user)
|
|
22
|
+
|
|
23
|
+
## Core Flow
|
|
24
|
+
|
|
25
|
+
```
|
|
26
|
+
1. Read interview file
|
|
27
|
+
.claude/vibe/interviews/{feature}.md
|
|
28
|
+
↓
|
|
29
|
+
2. Load template
|
|
30
|
+
~/.claude/vibe/templates/plan-template.md
|
|
31
|
+
↓
|
|
32
|
+
3. Refine per section
|
|
33
|
+
- Required responses → body sections
|
|
34
|
+
- Optional responses → body + "Assumptions"
|
|
35
|
+
- TBD items → "Open Questions"
|
|
36
|
+
- Discovered → merged into relevant sections
|
|
37
|
+
↓
|
|
38
|
+
4. Conditionally include UI sections
|
|
39
|
+
type ∈ {website, webapp, mobile} → include Look&Feel / layout / responsive
|
|
40
|
+
type ∈ {api, library, feature-data} → omit
|
|
41
|
+
↓
|
|
42
|
+
5. Save plan document
|
|
43
|
+
.claude/vibe/plans/{feature}.md
|
|
44
|
+
↓
|
|
45
|
+
6. Handoff guidance
|
|
46
|
+
Next steps: /vibe.spec, /vibe.figma, parallel
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
## Step 1: Read Interview File
|
|
50
|
+
|
|
51
|
+
```
|
|
52
|
+
Read .claude/vibe/interviews/{feature-name}.md
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
Extract `type`, `status`, `requiredCollected`, `optionalCollected`, etc. from the frontmatter.
|
|
56
|
+
|
|
57
|
+
**Validation**:
|
|
58
|
+
- `status: partial` + Required items incomplete → warn the user:
|
|
59
|
+
```
|
|
60
|
+
⚠️ Interview is partially complete (N Required items not collected).
|
|
61
|
+
Those items will appear as "TBD" in the plan document.
|
|
62
|
+
Continue? (y/N)
|
|
63
|
+
```
|
|
64
|
+
- If the file does not exist → guide the user to run `vibe.interview` first.
|
|
65
|
+
|
|
66
|
+
### `.last-feature` Pointer Update
|
|
67
|
+
|
|
68
|
+
```
|
|
69
|
+
Write ".claude/vibe/.last-feature" ← feature-name (one line)
|
|
70
|
+
Run immediately after extracting the feature name from the interview file.
|
|
71
|
+
No-op if the value is already the same.
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
## Step 2: Load Template
|
|
75
|
+
|
|
76
|
+
```
|
|
77
|
+
Read ~/.claude/vibe/templates/plan-template.md
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
The template has a 12-section structure:
|
|
81
|
+
|
|
82
|
+
| # | Section | All Types | UI Types Only |
|
|
83
|
+
|---|---------|-----------|---------------|
|
|
84
|
+
| 1 | Overview | ✅ | |
|
|
85
|
+
| 2 | Background (Why) | ✅ | |
|
|
86
|
+
| 3 | Target Users (Who) | ✅ | |
|
|
87
|
+
| 4 | Goals & Success Criteria | ✅ | |
|
|
88
|
+
| 5 | Core Features/Sections | ✅ | |
|
|
89
|
+
| 6 | Scope & Out-of-Scope | ✅ | |
|
|
90
|
+
| 7 | Look & Feel | | ✅ |
|
|
91
|
+
| 8 | Layout/Section Structure | | ✅ |
|
|
92
|
+
| 9 | Responsive Strategy | | ✅ |
|
|
93
|
+
| 10 | Tech Stack & Constraints | ✅ | |
|
|
94
|
+
| 11 | Assumptions & Risks | ✅ | |
|
|
95
|
+
| 12 | Next Steps (Handoff) | ✅ | |
|
|
96
|
+
|
|
97
|
+
### Template Fallback
|
|
98
|
+
|
|
99
|
+
If `~/.claude/vibe/templates/plan-template.md` is not found:
|
|
100
|
+
1. Check `{{VIBE_PATH}}/vibe/templates/plan-template.md` (package source)
|
|
101
|
+
2. If neither exists, use the built-in section list from this skill as the template structure
|
|
102
|
+
3. Never fail silently — always inform the user which template source was used
|
|
103
|
+
|
|
104
|
+
## Step 3: Per-Section Refinement Mapping
|
|
105
|
+
|
|
106
|
+
Interview items → plan document section mapping rules:
|
|
107
|
+
|
|
108
|
+
### Common Mapping
|
|
109
|
+
|
|
110
|
+
| Interview Item | Plan Section |
|
|
111
|
+
|----------------|--------------|
|
|
112
|
+
| `R1. purpose` | §2 Background (Why) |
|
|
113
|
+
| `R2. target-users` | §3 Target Users |
|
|
114
|
+
| `R3. core-message` / `R3. core-features` / `R3. core-endpoints` | §5 Core Features/Sections |
|
|
115
|
+
| `R4. required-sections` / `R4. data-model` / `R4. core-api` | §5 Core Features/Sections |
|
|
116
|
+
| `R7/R8. success-metric` | §4 Goals & Success Criteria |
|
|
117
|
+
| `R6/R7. tech-constraints` / `tech-stack` | §10 Tech Stack & Constraints |
|
|
118
|
+
|
|
119
|
+
### UI Types (website/webapp/mobile) Additional Mapping
|
|
120
|
+
|
|
121
|
+
| Interview Item | Plan Section |
|
|
122
|
+
|----------------|--------------|
|
|
123
|
+
| `R5. brand-tone` + `O1. reference-sites` + `O2. color-direction` + `O3. typography-preference` + `O4. animation-level` | §7 Look & Feel |
|
|
124
|
+
| `R4. required-sections` (website) / `R4. core-features` (webapp) | §8 Layout/Section Structure |
|
|
125
|
+
| `O5. responsive-strategy` + `O6/O8. accessibility-level` | §9 Responsive Strategy |
|
|
126
|
+
|
|
127
|
+
### Common Post-Processing
|
|
128
|
+
|
|
129
|
+
- `interview.TBD[]` → §11 "Assumptions & Risks" or "Open Questions" at the end of the document
|
|
130
|
+
- `interview.discovered[]` → merged into relevant sections + "Discovered during interview" note
|
|
131
|
+
- All uncollected Optional items → recorded as defaults in §11 "Assumptions" (e.g., "Accessibility: WCAG AA assumed")
|
|
132
|
+
|
|
133
|
+
## Step 4: Conditionally Include UI Sections
|
|
134
|
+
|
|
135
|
+
```python
|
|
136
|
+
if interview.type in {"website", "webapp", "mobile"}:
|
|
137
|
+
include_sections = [1..12] # all sections
|
|
138
|
+
else: # api, library, feature-data
|
|
139
|
+
include_sections = [1..6, 10..12] # omit §7-9 (Look&Feel/Layout/Responsive)
|
|
140
|
+
# note in §5: "No UI — API/Library project"
|
|
141
|
+
```
|
|
142
|
+
|
|
143
|
+
## Step 5: Save Plan Document
|
|
144
|
+
|
|
145
|
+
**Output path**: `.claude/vibe/plans/{feature-name}.md`
|
|
146
|
+
|
|
147
|
+
**Frontmatter**:
|
|
148
|
+
|
|
149
|
+
```yaml
|
|
150
|
+
---
|
|
151
|
+
feature: {feature-name}
|
|
152
|
+
type: {website | webapp | mobile | api | library | feature}
|
|
153
|
+
status: draft
|
|
154
|
+
createdAt: {ISO-timestamp}
|
|
155
|
+
lastUpdated: {ISO-timestamp}
|
|
156
|
+
source: .claude/vibe/interviews/{feature-name}.md
|
|
157
|
+
downstream: [spec, figma] # or [spec] for non-UI
|
|
158
|
+
---
|
|
159
|
+
```
|
|
160
|
+
|
|
161
|
+
**Body**: Template structure + refined content.
|
|
162
|
+
|
|
163
|
+
**Quality criteria**:
|
|
164
|
+
- Each section takes 30 seconds or less to read
|
|
165
|
+
- Compressed to 3-7 bullets per section
|
|
166
|
+
- Minimize technical jargon (this is a human-readable vision document)
|
|
167
|
+
- Mark "TBD" in bold to make it clear that a follow-up decision is needed
|
|
168
|
+
|
|
169
|
+
## Step 6: Handoff Guidance
|
|
170
|
+
|
|
171
|
+
After saving the plan document, guide the user on next steps:
|
|
172
|
+
|
|
173
|
+
```
|
|
174
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
175
|
+
✅ Plan document complete!
|
|
176
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
177
|
+
|
|
178
|
+
📄 .claude/vibe/plans/{feature-name}.md
|
|
179
|
+
Sections: {N} written
|
|
180
|
+
TBD: {M} (to be decided later)
|
|
181
|
+
|
|
182
|
+
Type: {type}
|
|
183
|
+
|
|
184
|
+
Next steps:
|
|
185
|
+
|
|
186
|
+
[UI project: website/webapp/mobile]
|
|
187
|
+
1. /vibe.spec ".claude/vibe/plans/{feature-name}.md"
|
|
188
|
+
→ Write code spec → /vibe.run implementation
|
|
189
|
+
2. /vibe.figma
|
|
190
|
+
→ Figma design → FE UI code
|
|
191
|
+
3. Run in parallel (recommended)
|
|
192
|
+
→ Feature + Design → website prototype
|
|
193
|
+
|
|
194
|
+
[Non-UI: api/library]
|
|
195
|
+
1. /vibe.spec ".claude/vibe/plans/{feature-name}.md"
|
|
196
|
+
→ Code spec → /vibe.run implementation
|
|
197
|
+
|
|
198
|
+
Where would you like to start?
|
|
199
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
200
|
+
```
|
|
201
|
+
|
|
202
|
+
## Anti-Patterns
|
|
203
|
+
|
|
204
|
+
- Do not write in PTCF structure (that is /vibe.spec's responsibility)
|
|
205
|
+
- Do not use EARS format (WHEN/THEN)
|
|
206
|
+
- Do not include file lists, Phase splits, or Acceptance Criteria
|
|
207
|
+
- Do not over-specify the Tech Stack — high-level only
|
|
208
|
+
- Do not hide TBD items — they must be surfaced explicitly so they can be decided in the next step
|
|
209
|
+
- Do not run this skill without an interview (no raw information)
|
|
210
|
+
- Do not force-fill a Look&Feel section for non-UI projects
|
|
211
|
+
|
|
212
|
+
## Related
|
|
213
|
+
|
|
214
|
+
- **Prev**: `vibe.interview` — requirements collection (implicit chain-prev)
|
|
215
|
+
- **Next**: `/vibe.spec` (code spec), `/vibe.figma` (UI design)
|
|
216
|
+
- **Template**: `~/.claude/vibe/templates/plan-template.md`
|