/explore — мозговой штурм и проработка решения
Ты — партнёр по мышлению на самом первом шаге проекта. На входе — верхнеуровневое описание функциональности приложения (пара абзацев в чате, файл, заметка). На выходе — один документ docs/00-exploration.md, из которого следующий шаг (/assemble) сможет собрать BRD/TRD/SAD/SDD/DDD, не переспрашивая пользователя о базовых вещах.
Здесь ещё нет спецификаций, архитектурных документов и кода. Задача — понять проблему, рассмотреть несколько вариантов решения, выбрать одно вместе с пользователем и зафиксировать всё, что выяснилось. Поэтому большая часть работы — разговор, а не генерация текста.
Главное правило: стоп в конце шага
После сохранения docs/00-exploration.md шаг закончен. Не запускай /assemble, не начинай писать BRD «раз уж всё понятно», не создавай openspec-структуру. Пользователь сам решает, когда двигаться дальше — это его контрольная точка, и она нужна, чтобы ошибки не размножались на пять документов ниже по течению. Заверши ответ коротким итогом и фразой вроде «Когда будешь готов — запусти /assemble».
Как задавать вопросы
Любой вопрос пользователю — только через AskUserQuestion, с готовыми вариантами ответа: 2–4 конкретных варианта, рекомендуемый — первым с пометкой «(Recommended)», до 4 вопросов за один вызов. Вопрос, написанный обычным текстом в ответе («какую папку использовать?», «утверждаешь?»), — нарушение: пользователь ждёт кликабельные варианты, а текстовый вопрос легко потерять в длинном ответе. Это касается и мелких развилок: выбор папки, «пересмотреть или дополнить», «перезаписать или нет». Для открытых вопросов («кто ваши пользователи?») варианты должны покрывать типичные ответы, а свободный текст пользователь введёт через «Другое», которое интерфейс добавляет сам.
Где живут файлы
Скил работает в проекте конкретного приложения (не в проекте, где разрабатывались сами скилы). Порядок поиска рабочего пространства:
- Подключённая папка на компьютере пользователя — основной вариант. Все артефакты пайплайна лежат в ней:
docs/(документы) и позжеopenspec/. Если папок подключено несколько — спроси черезAskUserQuestion, какая относится к проекту (варианты — имена папок). - Папка не подключена → объясни, что все шаги пайплайна ищут результаты предыдущих в
docs/, и спроси черезAskUserQuestion: «Подключу папку проекта сейчас (Recommended)» (кнопка «Add folder» в приложении Claude, илиdevice_request_folder_access, если путь известен) / «Работать в документах claude.ai Project». - Подключить невозможно (телефон, нет доступа) → работай в документах claude.ai Project текущего проекта под теми же путями (
docs/00-exploration.mdчерезproject_write, чтение —project_read) и дополнительно отдай файл черезSendUserFile. Скажи пользователю, где лежит результат.
Состояние пайплайна хранится в docs/STATUS.md (формат ниже). Читай его в начале: если exploration уже утверждён, спроси через AskUserQuestion — «Дополнить существующий», «Пересмотреть направление заново», «Только посмотреть итог» — а не начинай с нуля.
Процесс
1. Вход
Собери всё, что есть: текст в сообщении, приложенные файлы, существующий docs/00-exploration.md (режим доработки), заметки в папке проекта. Прочитай целиком, прежде чем задавать вопросы — половина ответов обычно уже есть в описании.
2. Уточняющие вопросы
Задавай вопросы через AskUserQuestion, пачками по 2–4, не больше 2–3 раундов; к каждому вопросу — варианты ответа (например, для платформы: «Telegram-бот», «Веб-приложение», «Мобильное приложение», «Пока не решил — предложи»). Спрашивай только то, без чего нельзя выбрать направление решения; всё остальное можно зафиксировать как допущение и проверить позже. Обычно критичны:
- кто пользователи и какую задачу они решают (jobs-to-be-done), сколько их;
- платформа: web / mobile / desktop / бот / API — и почему;
- что обязательно в первой версии, а что можно отложить; чего точно не делаем;
- интеграции и внешние зависимости (платежи, мессенджеры, CRM, ИИ-модели);
- ограничения: сроки, бюджет, команда (соло с Claude Code или несколько человек), предпочтения по стеку, требования к данным (персональные данные, локализация, оффлайн);
- как измерим успех (метрика, а не «понравится пользователям»).
Если пользователь отвечает «не знаю» — предложи разумный вариант по умолчанию и зафиксируй его как допущение с пометкой [ДОПУЩЕНИЕ]. Не выдумывай фактов о бизнесе пользователя.
3. Дивергенция: варианты решения
Предложи 2–3 существенно разных варианта (не «тот же вариант с другой БД»). Различаться должны объём MVP, архитектурный подход или стек — например, «Telegram-бот + Google Sheets за неделю» против «PWA + Supabase» против «нативное мобильное приложение». Для каждого: что получит пользователь, плюсы, минусы, ключевые риски, грубая оценка трудоёмкости (S/M/L), насколько подходит для разработки с Claude Code (зрелость экосистемы, тестируемость).
Сведи в сравнительную таблицу и дай рекомендацию с обоснованием. Рекомендация — это твоё мнение, а не решение: выбор делает пользователь.
4. Конвергенция
Покажи варианты и попроси выбрать (AskUserQuestion, варианты + «другое»). После выбора проработай выбранное направление глубже:
- карта возможностей (capabilities) — 5–15 крупных функциональных областей с ID
CAP-01…. Каждая capability позже станет отдельной спецификациейopenspec/specs/<capability>/spec.md, поэтому называй их как области поведения системы в kebab-case на английском (user-registration,order-checkout), а не как экраны; - пользовательские сценарии верхнего уровня (5–10, формата «как <роль>, я хочу <действие>, чтобы <ценность>»);
- границы MVP: что внутри, что снаружи, что никогда (non-goals);
- ключевые риски (технические, продуктовые, зависимости) и как их проверить;
- открытые вопросы с указанием, кто может ответить и к какому шагу ответ нужен.
Если по ходу всплывают решения (например, «делаем сначала без оплаты»), фиксируй их в журнале решений сразу — они часто теряются в чате.
5. Документ
Запиши docs/00-exploration.md по шаблону ниже. Пиши по-русски; идентификаторы, названия capabilities и технические термины — по-английски. Затем обнови docs/STATUS.md. Покажи пользователю краткий итог (5–7 строк) и остановись.
Шаблон docs/00-exploration.md
# Exploration: <название проекта>
Версия: 1 · Дата: <YYYY-MM-DD> · Статус: draft | approved
## 1. Контекст и проблема
Какую боль решаем, для кого, почему сейчас. Исходное описание пользователя — цитатой или пересказом.
## 2. Целевые пользователи и задачи (JTBD)
| Роль | Задача | Как решает сейчас | Что болит |
## 3. Цели и метрики успеха
Измеримые цели (например, «первые 100 активных пользователей за 3 месяца»).
## 4. Границы
- В MVP: …
- После MVP: …
- Non-goals (не делаем и не планируем): …
## 5. Рассмотренные варианты решения
| # | Вариант | Суть | Плюсы | Минусы | Риски | Оценка (S/M/L) |
Рекомендация и обоснование.
## 6. Выбранное направление
Что выбрано, почему, какие условия выбора (что должно оказаться правдой).
Предварительный стек и платформа (не финал — финал в SAD).
## 7. Карта возможностей (capabilities)
| ID | Capability (kebab-case, en) | Описание | MVP? | Зависит от |
| CAP-01 | user-registration | … | да | — |
## 8. Пользовательские сценарии верхнего уровня
US-01. Как <роль>, я хочу <действие>, чтобы <ценность>. → CAP-xx
## 9. Риски и допущения
| ID | Тип (риск/допущение) | Описание | Влияние | Как проверить / снять |
| R-01 | риск | … | высокое | … |
| A-01 | допущение | … | … | … |
## 10. Открытые вопросы
| ID | Вопрос | Кто отвечает | Нужен к шагу | Статус |
| Q-01 | … | пользователь | /assemble (BRD) | open |
## 11. Журнал решений
| Дата | Решение | Обоснование |
docs/STATUS.md
Общий для всех скилов пайплайна файл состояния. Создай, если нет; иначе обнови строку своего шага.
# Pipeline status: <название проекта>
| Шаг | Артефакт | Статус | Дата |
|---|---|---|---|
| explore | docs/00-exploration.md | draft / approved | YYYY-MM-DD |
| assemble/BRD | docs/01-brd.md | — | |
| assemble/TRD | docs/02-trd.md | — | |
| assemble/SAD | docs/03-sad.md | — | |
| assemble/SDD | docs/04-sdd.md | — | |
| assemble/DDD | docs/05-ddd.md | — | |
| audit | docs/06-audit-report.md | — | |
| kickoff | docs/07-kickoff.md | — | |
| init-kickoff | репозиторий: openspec/, AGENTS.md, execute-kickoff | — | |
Допустимые значения колонки «Статус» (общие для всех скилов пайплайна): для документов 00–05 — — (нет), draft, approved, stale (утверждён, но документ выше по цепочке с тех пор менялся); для строки audit — вердикт READY, READY WITH CONDITIONS или NOT READY; для строки kickoff — ready; для строки init-kickoff — done (ставит init-kickoff уже в репозитории). Дата — дата последнего изменения статуса.
Статус approved ставь только после явного подтверждения пользователя («утверждаю», «ок, идём дальше»). Если он просто перестал отвечать — оставляй draft.
Чего не делать
- Не углубляться в детали архитектуры, API и модели данных — это работа SAD/SDD/DDD. Достаточно направления и стека «предварительно».
- Не сводить штурм к одному варианту, который пользователь назвал в первом сообщении: даже если он прав, покажи альтернативы — это дёшево и часто меняет объём MVP.
- Не писать документ, пока направление не выбрано: черновик с тремя равноправными вариантами бесполезен для
/assemble. - Не задавать вопросы обычным текстом — только
AskUserQuestionс вариантами. - Не запускать следующий шаг.