Claude-skill-registry idea-validation
install
source · Clone the upstream repo
git clone https://github.com/majiayu000/claude-skill-registry
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/majiayu000/claude-skill-registry "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/data/idea-validation" ~/.claude/skills/majiayu000-claude-skill-registry-idea-validation && rm -rf "$T"
manifest:
skills/data/idea-validation/SKILL.mdsource content
Idea Validation
Understand what the user wants, ask the right questions based on project type, and create a comprehensive PRD.
Phase A: Discovery
Step 1: Identify Project Type
First, determine project type from user's description or ask directly:
question: "Какой тип проекта?" header: "Type" options: - label: "Web App (SaaS)" description: "Веб-приложение с UI" - label: "Telegram Bot" description: "Бот для Telegram" - label: "REST/GraphQL API" description: "Backend сервис" - label: "CLI Tool" description: "Консольная утилита" # Other types via "Other": Mobile App, Discord Bot, Library/SDK, Data Pipeline, Browser Extension
Step 2: Brainstorm Offer
Based on complexity, offer brainstorming:
| Signal | Recommendation |
|---|---|
| Description < 10 words | Suggest brainstorm |
| Complex type (Telegram, Mobile, Data) | Suggest brainstorm |
| Detailed description | Suggest skip |
| User says "быстро"/"simple" | Auto-skip |
question: "Хочешь уточнить идею через brainstorm?" header: "Brainstorm" options: - label: "Да, давай уточним" description: "Детальные вопросы → полный PRD" - label: "Нет, идея понятна" description: "Быстрые вопросы → минимальный PRD" - label: "Частично" description: "Ключевые вопросы только"
Step 3: Core Questions (всегда)
Q1: Problem
question: "Какую проблему это решает?" header: "Problem" options: [3-4 contextual options based on idea]
Q2: Target User
question: "Кто будет этим пользоваться?" header: "User" options: - label: "Для себя" description: "Личное использование" - label: "AI агенты" description: "Через API/MCP" - label: "Команда/Бизнес" description: "Совместная работа" - label: "Публичный сервис" description: "Широкая аудитория"
Q3: Core Action
question: "Что первое делает пользователь?" header: "Action" options: [3-4 contextual options]
Q4: Success
question: "Как понять что сработало?" header: "Success" options: [3-4 contextual options]
Step 4: Type-Specific Questions (если brainstorm)
For Telegram Bot:
question: "Как бот взаимодействует с пользователем?" header: "Interaction" options: - label: "Команды (/start, /help)" description: "Структурированное взаимодействие" - label: "Диалог" description: "Свободное общение" - label: "Inline режим" description: "Поиск из любого чата" - label: "Кнопки/меню" description: "Визуальная навигация" question: "Нужна ли база данных?" header: "Storage" options: - label: "Да, SQLite" description: "Простое хранение" - label: "Да, PostgreSQL" description: "Масштабируемое" - label: "Нет" description: "Stateless бот" question: "Внешние интеграции?" header: "APIs" multiSelect: true options: - label: "OpenAI/LLM" - label: "Payment (Stripe/YooKassa)" - label: "External APIs" - label: "Нет интеграций"
For Web App (SaaS):
question: "Нужна ли авторизация?" header: "Auth" options: - label: "Email + пароль" - label: "OAuth (Google/GitHub)" - label: "Magic link" - label: "Не нужна" question: "Realtime функции?" header: "Realtime" options: - label: "Да, WebSocket" - label: "Да, Server-Sent Events" - label: "Нет, обычный HTTP"
For REST API:
question: "Для кого API?" header: "Audience" options: - label: "Internal" description: "Для своих фронтов" - label: "Public" description: "Для внешних разработчиков" - label: "Partner" description: "Для партнёров" question: "Аутентификация?" header: "Auth" options: - label: "API Key" - label: "JWT" - label: "OAuth2" - label: "Без авторизации"
For CLI Tool:
question: "Как запускается?" header: "Execution" options: - label: "Одна команда" description: "cli do-something" - label: "Субкоманды" description: "cli cmd1, cli cmd2" - label: "Интерактивный" description: "Диалог с пользователем" question: "Вывод?" header: "Output" options: - label: "Текст" - label: "JSON" - label: "Файлы" - label: "Табличный"
Step 5: Constraints (если brainstorm full)
question: "Есть ли ограничения?" header: "Constraints" multiSelect: true options: - label: "Бесплатные сервисы only" description: "Без платных зависимостей" - label: "Быстрый MVP" description: "Дедлайн < 1 недели" - label: "Scale 1000+ пользователей" description: "Нужна масштабируемость" - label: "Нет ограничений"
Phase B: PRD Generation
Minimal PRD (простые проекты, skip brainstorm)
# {Name} PRD ## Problem {One sentence from Q1} ## User {From Q2} ## Core Features - [ ] {Feature from Q3} - [ ] {Feature 2} - [ ] {Feature 3} ## Success Metric {From Q4} ## Tech Stack {Based on project type} --- Generated: {date} Status: Draft
Standard PRD (средние проекты, partial brainstorm)
# {Name} PRD ## Problem {One sentence from Q1} ## User {From Q2 with context} ## Product Type {Type} — {type-specific details} ## Core Features (MVP) 1. **{Feature Name}** - User story: As a {user}, I want to {action} so that {benefit} - Acceptance criteria: - [ ] {Criterion 1} - [ ] {Criterion 2} 2. **{Feature 2}** ... ## Non-Goals - {What we're NOT building} ## Success Metrics - **Primary:** {From Q4} ## Tech Stack {Based on project type and answers} ## Dependencies - {External APIs if any} - {Third-party services} --- Generated: {date} Status: Draft
Full PRD (сложные проекты, full brainstorm)
# {Name} — Product Requirements Document ## Overview {Brief description of what we're building and why} ## Problem Statement {Detailed problem from Q1 with context} ## Target Users - **Primary persona:** {From Q2} - **Use context:** {When/where they use this} - **User volume:** {Expected scale} ## Product Type {Type} ### Type-Specific Requirements {Section content varies by project type - from type-specific questions} ## Core Features (MVP) ### Feature 1: {Name} - **User story:** As a {user}, I want to {action} so that {benefit} - **Acceptance criteria:** - [ ] {Criterion 1} - [ ] {Criterion 2} - [ ] {Criterion 3} - **Priority:** P0 ### Feature 2: {Name} ... ## Non-Goals (Explicitly Out of Scope) - Not doing {X} because {Y} - Not doing {Z} in MVP, maybe later ## Success Metrics - **Primary:** {From Q4} - **Secondary:** {Supporting metrics} ## Technical Constraints - **Hosting:** {Where it runs} - **Budget:** {Free tier / paid services} - **Performance:** {Latency/throughput requirements} - **Security:** {Auth, encryption, compliance} ## Dependencies - **External APIs:** {list} - **Third-party services:** {list} ## Risks & Mitigations - Risk 1 → Mitigation - Risk 2 → Mitigation --- Generated: {date} Status: Draft
PRD Selection Logic
| Project Type | Default PRD |
|---|---|
| CLI Tool | Minimal |
| Simple API | Minimal |
| Web App | Standard |
| Telegram Bot | Standard |
| Mobile App | Full |
| Data Pipeline | Full |
| SaaS with Auth | Full |
Override:
- User chose "skip brainstorm" → Minimal
- User chose "partial" → Standard
- User chose "full brainstorm" → Full
After PRD Creation
-
Validate PRD:
python3 scripts/validate_prd.py --path docs/PRD.md -
Report to user:
PRD saved to docs/PRD.md Summary: - Type: {project type} - Features: {count} - Complexity: {minimal/standard/full} Next: Task[rust-project-init] or Task[python-project-init]
Rules
- Ask type first — determines question flow
- One question at a time — don't overwhelm
- Adaptive depth — simple projects get simple PRD
- No guessing — if unclear, ask
- Save PRD.md — always persist
- Validate — run validate_prd.py after creation