| name | idea-validation |
| description | Validate idea and create detailed PRD. Saves docs/PRD.md to project. Use when: user describes an app idea, wants to create something new. Triggers: "I want to build", "create app", "make website", "build MVP", "хочу создать", "сделать приложение". |
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.mdReport 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