Бесплатный интерактивный курс · aicoding.space
От идеи к документам: курс по @dzhechkov/skills-idea2prd
Практический Head-First курс для участника harness-мастерской: как превратить сырую боль или сырую идею в набор документов, который можно отдать кодирующему ассистенту — требования, архитектурные решения, модель предметной области, псевдокод, сценарии тестов и чек-лист выката. Двенадцать разделов, сквозная героиня Мира, девять контрольных точек живого конвейера.
Содержание курса
1. Зачем нужен idea2prd: дизайн раньше кода
Почему прыжок от идеи прямо к коду обходится дороже, чем кажется
Ключевая мысль: Дизайн раньше кода: слой документов, которые можно прочитать и оспорить
Мира пришла на мастерскую с идеей: сервис подбора подрядчиков. Она открыла ассистента, написала «сделай мне такой сервис» — и через час держала в руках три тысячи строк кода, в которых не было ответа на главный вопрос: кто пользователь и что мы считаем успехом.
А цена вот в чём. Код — самая дорогая форма мышления. Чтобы изменить решение, зашитое в код, нужно переписать код и все тесты вокруг него. Чтобы изменить решение, записанное в документе, нужно переписать абзац. Поэтому пакет @dzhechkov/skills-idea2prd вставляет между идеей и кодом слой документов, которые ты читаешь и оспариваешь до того, как написана первая строка.
Что именно он выдаёт: требования, архитектурные решения с причинами, модель предметной области, псевдокод, сценарии тестов на Gherkin и чек-лист выката. Это не бумага ради бумаги — это задание, которое понимает кодирующий ассистент.
Три выгоды, ради которых стоит потратить час:
- неверное допущение ловится на уровне требований, а не после реализации;
- у каждого архитектурного выбора есть записанная причина, а не «так вышло»;
- готовый набор документов уходит дальше как одно цельное задание.
💬 Просто попроси.
- «сделай PRD пошагово для сервиса подбора подрядчиков» → ассистент включит скилл idea2prd-manual и начнёт с уточняющих вопросов, а не с кода.
- «у меня не идея, а боль: подрядчиков ищут только по знакомым» → ассистент поймёт, что на входе проблема, а не идея, и сначала запустит аналитическую ветку.
Ссылки: страница пакета на npm и исходники в зеркале репозитория.
2. Установка: одна команда npx и ничего больше
Как положить пак скиллов в свой проект и не поставить лишнего
Ключевая мысль: Установка пакета одной командой npx прямо в проект
Мира открыла папку проекта и приготовилась к долгой возне: зависимости, конфигурация, ключи. Ничего этого не понадобилось — установка занимает одну строку.
npx @dzhechkov/skills-idea2prd initКоманда кладёт скиллы прямо в проект, в каталог .claude/skills/, и добавляет слэш-команду /idea2prd-manual. Глобально ничего не ставится: пак живёт внутри проекта, поэтому у двух проектов могут быть разные версии, и это нормально.
После установки ассистент подхватывает скилл сам, по фразам вроде «сделай PRD пошагово для …» или «idea to prd manual: …». Отдельно включать ничего не нужно.
Если в системе уже есть общий harness-инструмент dz, тот же пак ставится через него — команда dz init --select idea2prd-manual. Это удобно, когда собираешь проект сразу из нескольких паков, а не только из этого.
💬 Просто попроси.
- «поставь idea2prd в этот проект» → ассистент выполнит установку через npx @dzhechkov/skills-idea2prd init и покажет, что появилось в .claude/skills/.
- «проверь, что пак встал правильно» → ассистент запустит npx @dzhechkov/skills-idea2prd doctor.
Ссылки: страница пакета на npm и исходники в зеркале репозитория.
3. Что внутри: самодостаточный пак из четырёх скиллов
Четыре скилла, четыре локальных скрипта и почему ничего больше не нужно
Ключевая мысль: Самодостаточный пак: четыре скилла и четыре локальных скрипта
Мира ждала, что после установки придётся ставить ещё пять пакетов. Не пришлось: пак самодостаточный — внутри лежит всё, что нужно конвейеру, и ни один другой пакет @dzhechkov не требуется.
Внутри четыре скилла. idea2prd-manual — оркестратор, он ведёт весь путь и останавливается на контрольных точках. explore превращает расплывчатую задачу в бриф через вопросы. goap-research-ed25519 ведёт исследование с явными источниками и подписью. problem-solver-enhanced разбирает проблему девятью модулями — от первых принципов до ТРИЗ.
Плюс четыре скрипта, которые работают локально, без сети: c4_generator.py рисует диаграммы, fitness_validator.py проверяет fitness-функции, pseudocode_generator.py собирает псевдокод, ai_context_builder.py готовит каталог .ai-context/ для кодирующего ассистента.
Важная деталь про происхождение. Канонический артефакт этого пака — только idea2prd-manual. Тройка explore / goap-research-ed25519 / problem-solver-enhanced — отслеживаемая копия: их родной дом — пакет @dzhechkov/skills-analyst-manual, а расхождения подтягиваются командой dz sync-upstream. Знать это стоит: править копию внутри пака бессмысленно — правку затрёт следующая синхронизация.
💬 Просто попроси.
- «покажи, какие скиллы установил idea2prd» → ассистент выполнит npx @dzhechkov/skills-idea2prd list.
- «объясни, чем explore отличается от problem-solver-enhanced» → ассистент прочитает оба SKILL.md из .claude/skills/ и сравнит их роли.
4. Ворота 0: у тебя проблема или уже идея?
Первая развилка конвейера и почему она решает, сколько работы впереди
Ключевая мысль: Ворота 0: проблема или идея решают, какая ветка запустится
Первый вопрос, который задаёт себе конвейер, звучит обманчиво просто: у тебя проблема или уже идея? Мира сначала не поняла разницы — а она решает, сколько работы впереди.
Проблема — это боль без решения: «подрядчиков ищут только по знакомым, и качество лотерея». В формулировке есть боль и вопрос «как?», но нет продукта.
Идея — это уже названный продукт: «каталог подрядчиков с рейтингом, проверкой документов и оплатой через эскроу». Есть аудитория, есть функции.
Развилка работает так:
- на входе проблема → сначала аналитическая ветка, она превращает боль в проверенную идею продукта;
- на входе идея → аналитическая ветка пропускается, сразу запускается конвейер PRD;
- вход непонятен → ассистент задаёт ровно один уточняющий вопрос и не больше.
Зачем вообще нужна эта развилка. Аналитическая ветка стоит времени: вопросы, исследование, девять модулей разбора. Гонять её поверх уже продуманной идеи — потратить час на подтверждение того, что ты и так знаешь. А вот пропустить её на сырой боли — значит написать требования к продукту, которого не должно существовать.
💬 Просто попроси.
- «это проблема или идея? реши сам и скажи почему» → ассистент классифицирует твой вход и назовёт признаки, по которым выбрал ветку.
- «считай это готовой идеей, аналитику пропусти» → ассистент возьмёт короткий путь и сразу перейдёт к требованиям.
5. Аналитическая ветка: как боль становится идеей
Три скилла подряд превращают сырую жалобу в проверенную идею продукта
Ключевая мысль: Аналитическая ветка: explore, затем исследование, затем разбор проблемы
Мира принесла боль, а не готовый продукт, поэтому включилась аналитическая ветка. Она короткая, но порядок в ней не случайный: каждый следующий шаг опирается на результат предыдущего.
Шаг первый — explore. Ассистент задаёт уточняющие вопросы и собирает бриф задачи: в чём боль, у кого она, что считается успехом, какие ограничения есть. Это единственный шаг, где обязательно нужен живой человек — на вопросы отвечаешь ты.
Шаг второй — goap-research-ed25519. Исследование: кто уже решает эту боль, какими способами, где дыры. Ключевая особенность — источники называются явно, а находки несут честную оценку уверенности. Исследование не доказывает истину, оно показывает, откуда взято утверждение.
Шаг третий — problem-solver-enhanced. Девять модулей разбора подряд: первые принципы, пять «почему», анализ ограничений, SCQA, теория игр, эффекты второго порядка, ТРИЗ, адвокат дьявола и синтез. На выходе — проверенная идея продукта: название, описание, аудитория, ключевые функции и то, чем она отличается от чужих решений.
После третьего шага аналитика заканчивается, и та же идея уходит в конвейер PRD — как если бы ты принёс её готовой.
💬 Просто попроси.
- «разбери мою боль по первым принципам, прежде чем предлагать продукт» → ассистент запустит problem-solver-enhanced и покажет разбор по модулям.
- «покажи, кто уже решает эту задачу и чем» → ассистент выполнит шаг исследования и приведёт находки с источниками.
6. Девять контрольных точек: где ты можешь сказать «стоп»
Режим MANUAL: конвейер останавливается после каждой фазы и ждёт твоего слова
Ключевая мысль: Девять контрольных точек: режим MANUAL ждёт твоего подтверждения
Мира ожидала, что ассистент отработает всё разом и вывалит стопку файлов. Вместо этого он остановился после первой же фазы и спросил: «подтверди требования или внеси правки».
Это и есть режим MANUAL. Девять контрольных точек — три в аналитической ветке (бриф, исследование, идея продукта) и шесть в конвейере PRD (требования, стратегический DDD, архитектура, тактический DDD, псевдокод, тесты). После каждой конвейер печатает сводку сделанного и ждёт.
Отвечать можно по-разному:
okили «продолжай» — идём дальше;- «скорректируй X» — правим конкретный элемент;
- «добавь Y» — дополняем недостающее;
- «пересмотри Z» — возвращаемся к решению;
- «стоп» — пауза с сохранением состояния.
Зачем это нужно. Ошибка в требованиях, пропущенная на первой точке, к шестой уже разошлась по модели предметной области, архитектурным решениям и псевдокоду — исправлять придётся всё сразу. Контрольная точка — это место, где ошибка стоит один абзац, а не шесть документов.
Есть и обратная сторона: девять остановок означают, что конвейер нельзя запустить и уйти пить кофе. Если идея простая и цена ошибки низкая, честнее взять быстрый автоматический режим — контрольные точки нужны там, где ошибка дорогая.
💬 Просто попроси.
- «остановись после требований, я хочу посмотреть» → ассистент дойдёт до первой контрольной точки и будет ждать.
- «пересмотри границы контекстов, третий выглядит лишним» → ассистент вернётся к фазе стратегического DDD, не трогая остальное.
7. Конвейер PRD: шесть фаз от требований до выката
Главный рабочий путь: что рождается на каждой фазе и почему именно в этом порядке
Ключевая мысль: Конвейер PRD: шесть фаз от требований до чек-листа выката
Вот тот самый главный путь, ради которого ставят пакет. Мира прошла его целиком, и удобнее всего смотреть на него как на лестницу: каждая ступень опирается на предыдущую, и перепрыгнуть нельзя.
требования → стратегический DDD → решения ADR и схемы C4
→ тактический DDD → псевдокод → тесты и fitness → чек-лист выкатаЧто происходит на ступенях. Требования: функциональные и нефункциональные, пользовательские истории, пути пользователя, ограничения и допущения. Стратегический DDD — деление предметной области на ограниченные контексты, то есть на участки, внутри которых слова означают одно и то же; плюс карта связей между ними. ADR и C4: архитектурные решения с причинами и три уровня схем — контекст системы, контейнеры, компоненты.
Дальше конвейер спускается к деталям. Тактический DDD — агрегаты, сущности, объекты-значения, доменные события и схема базы. Псевдокод фиксирует алгоритмическую логику до кодогенерации, чтобы генератор реализовывал принятый дизайн, а не изобретал свой на ходу. Тесты и fitness-функции — сценарии на Gherkin и проверяемые архитектурные правила. Чек-лист выката закрывает путь: окружение, конвейер сборки, мониторинг, безопасность.
Почему порядок именно такой: каждая ступень отвечает на вопрос, который поставила предыдущая. Требования спрашивают «что», DDD отвечает «в каких границах», ADR — «каким способом», псевдокод — «по какому алгоритму», тесты — «как узнать, что мы не соврали».
💬 Просто попроси.
- «покажи карту контекстов, прежде чем писать ADR» → ассистент остановится на фазе стратегического DDD и нарисует карту.
- «собери псевдокод только для агрегата заказов» → ассистент сузит фазу псевдокода до одного агрегата.
8. Дисциплина утверждений: число без пометки — дефект
Как пакет запрещает себе и тебе писать красивые цифры из ниоткуда
Ключевая мысль: Дисциплина утверждений: число без честной пометки считается дефектом
Мира дочитала черновик требований и споткнулась о фразу: «система ускоряет подбор подрядчика на 40%». Откуда сорок? Никто не мерил. Цифра появилась, потому что красиво звучит.
Именно против этого работает дисциплина утверждений. Правило простое: рядом с числом, которое выглядит как результат, обязана стоять честная пометка — откуда оно взялось. Пометок три:
MEASURED— измерено, и рядом назван воспроизводитель: команда, файл, прогон;CLAIMED— это чужое утверждение, которое ты пересказываешь, и назван автор;ESTIMATED— это оценка или цель, и названо основание, на котором она выбрана.
Непомеченное число, похожее на результат, считается дефектом документа. И отдельно запрещена идеальная оценка: голые 100%, «ноль дефектов», «никогда не падает» помечаются как серьёзная находка даже с честным тегом — потому что совершенство в измерениях почти не встречается. Вместо этого пишут реальное значение в сравнении с базовой линией или цель с пометкой ESTIMATED.
Проверить документы можно машинно: если в системе есть harness-инструмент dz, запусти dz claim-check docs/ --fail-on medium. Порог именно medium: на пороге high обычные непомеченные утверждения средней силы проскакивают мимо — то есть проверка становится зелёной ровно там, где она нужна.
💬 Просто попроси.
- «проверь мои документы на непомеченные числа» → ассистент запустит dz claim-check docs/ --fail-on medium и покажет находки.
- «убери из PRD все цифры, которые никто не мерил» → ассистент найдёт утверждения без пометки и либо удалит их, либо предложит тег с основанием.
9. Стойка Confirmation: решение, которое можно опровергнуть
Как архитектурное решение перестаёт быть красивым текстом и становится проверяемым
Ключевая мысль: Стойка Confirmation: у каждого решения есть опровергающий тест
Архитектурное решение легко написать так, что его невозможно проверить: «выбрали микросервисы ради масштабируемости». Красиво — и бесполезно: непонятно, что должно случиться, чтобы мы признали решение неверным.
Поэтому каждый ADR, который генерирует пакет, обязан нести стойку ## Confirmation. В ней два несущих поля. Load-bearing property — то самое свойство, ради которого решение принято. Required automated check — конкретная проверка, которая покраснеет, если свойство нарушено: fitness-функция вида FF-001 или сценарий .feature на Gherkin.
Мира сначала решила, что это формальность, — пока не дошла до фазы 5, где конвейер сверяет обещания с реальностью. Сверка проходит по каждому ADR и требует трёх вещей:
- названный тест конкретен, а не заглушка вроде
TBDилиFF-NNN; - этот тест реально существует в выходе фазы 5 — идея
FF-001есть в таблице fitness-функций, файл.featureлежит вdocs/tests/; - тест привязан именно к несущему свойству, то есть покраснеет при его нарушении, а не проверяет просто счастливый путь.
Любая незакрытая строка блокирует подпись фазы 5. Смысл в том, что стойка Confirmation превращает решение из прозы в обещание с механизмом проверки — и связывает фазу 3 с фазой 5 не по доброй воле автора, а по правилу конвейера.
💬 Просто попроси.
- «покажи таблицу ADR и их опровергающих тестов» → ассистент напечатает сводку с несущим свойством и названным тестом для каждого решения.
- «этот ADR ничем не проверяется — допиши fitness-функцию» → ассистент добавит проверку и привяжет её к несущему свойству.
10. Память проекта: recall в начале, teach в конце
Как конвейер перестаёт быть одноразовым и начинает помнить прошлые прогоны
Ключевая мысль: Память проекта: recall в начале и teach в конце, один канонический склад
Мира запустила конвейер во второй раз и сразу заметила разницу. Первый прогон был чистым листом; второй начался с того, что конвейер вспомнил уроки первого.
Механика простая: у этой петли два конца. В начале — recall. Ещё до ворот 0, если в системе есть harness-инструмент dz, конвейер выполняет dz recall по ключевым словам задачи и вкладывает найденные уроки в бриф. Это прошлые находки: удачная граница контекста, доменное ограничение, которое однажды укусило, форма fitness-функции, которая сработала.
В конце — teach. После последней фазы конвейер сравнивает свои новые уроки с тем, что уже вспомнил в начале. Уже известное не переучивается. По-настоящему новое записывается командой dz teach — по одному уроку за вызов. Честный результат «ноль новых уроков» тоже бывает и не считается провалом.
Одна деталь решает, работает ли петля вообще: склад должен быть один. И recall, и teach привязываются к одному и тому же абсолютному пути проекта через --project. Если начало читает из одного склада, а конец пишет в другой, уроки копятся в разных местах и не подкрепляют друг друга — петля разомкнута, хотя обе команды отработали успешно.
Всё это включается само, только если dz есть в системе. Нет — конвейер молча работает как раньше, без памяти.
💬 Просто попроси.
- «вспомни, что мы уже решали про границы контекстов в этом проекте» → ассистент выполнит dz recall и вложит находки в бриф.
- «запиши урок: эскроу нельзя моделировать внутри контекста каталога» → ассистент выполнит dz teach с привязкой к каноническому складу проекта.
11. Пять команд: init, update, remove, list, doctor
Полный набор команд пакета и когда какая нужна
Ключевая мысль: Пять команд пакета: init, update, remove, list, doctor
Мира привыкла, что у инструмента десятки ключей и половина из них непонятна. Здесь всё короче: у пакета ровно пять команд, и каждая делает одну вещь.
init ставит пак в текущий проект и работает по умолчанию — если подкоманду не указать, выполнится именно она. update обновляет пак до свежей версии. remove убирает его из проекта. list показывает, что установлено. doctor проверяет здоровье установки — на месте ли скиллы, не побились ли файлы.
К любой из них добавляются четыре флага: --force продавливает действие, --dry-run показывает, что произошло бы, ничего не меняя, --help печатает справку, --version — версию.
Правило, которое экономит нервы: сначала --dry-run, потом без него. Особенно с remove и update — сухой прогон печатает список файлов, которых коснётся команда, и это единственный дешёвый способ убедиться, что она понимает твой проект так же, как ты.
Если что-то ведёт себя странно — скилл не подхватывается, слэш-команда не появилась, — начинай с doctor. Он отвечает на вопрос «установка вообще цела?» раньше, чем ты начнёшь искать причину в ассистенте.
💬 Просто попроси.
- «проверь установку idea2prd» → ассистент выполнит npx @dzhechkov/skills-idea2prd doctor и разберёт вывод.
- «покажи, что удалит remove, но не удаляй» → ассистент выполнит npx @dzhechkov/skills-idea2prd remove --dry-run.
12. Границы: чего пакет не делает за тебя
Честный список ограничений — и что из этого следует для твоей работы
Ключевая мысль: Границы честности: пакет готовит документы, но не пишет код и не проверяет факты за тебя
Последний раздел — самый полезный, потому что он про то, чего инструмент не умеет. Мира выучила эти границы дорогой ценой и рекомендует выучить их дешевле.
Пакет не пишет код. На выходе — документы: требования, решения, модель, псевдокод, сценарии тестов, чек-лист. Реализацию делает кодирующий ассистент или человек, взяв этот набор как задание.
Пакет не проверяет факты. Дисциплина утверждений требует, чтобы у числа была честная пометка, но она не может отличить настоящее измерение от выдуманного — тег MEASURED рядом с фантазией пройдёт машинную проверку. Формат проверяется, правдивость — нет, и это ровно та граница, где начинается твоя ответственность.
Проверка уроков тоже про форму. Слой памяти отклоняет записи, похожие на личные данные, — почта, телефон, номер записи. Но он не решает, о методе урок или о человеке: это остаётся на суждении автора.
Контрольные точки требуют человека. Девять остановок — не декорация: без ответов конвейер стоит. Автономный ночной прогон здесь не предусмотрен.
И одна деталь про подпись пакета. Манифест подписи описывает ровно те файлы, которые пакет отгружает, а не всё, что лежит у автора в рабочем дереве. Раньше он подписывал и то, что в поставку не попадает, — и у каждого получателя проверка честно сообщала о недостающих файлах, то есть пакет читался как подделанный. Урок общий: подпись должна описывать то, что реально доехало до получателя.
💬 Просто попроси.
- «набор документов готов — реализуй агрегат заказов по псевдокоду» → ассистент перейдёт к коду, взяв документы как задание.
- «пройдись по PRD и покажи все числа, которые я не могу подтвердить» → ассистент соберёт список утверждений, требующих твоей проверки.
Частые вопросы
- Чем idea2prd отличается от того, чтобы просто попросить ассистента «напиши PRD»?
Разовая просьба даёт один документ и никакой связности. Здесь идёт конвейер: требования задают деление предметной области, оно задаёт архитектурные решения, решения обязаны назвать опровергающий тест, а тест обязан реально существовать в фазе 5. Плюс девять остановок, на которых можно повернуть работу назад, пока она дешёвая.
- Обязательно ли проходить аналитическую ветку?
Нет. Она включается, только если на входе проблема, а не готовая идея. Если продукт уже сформулирован — аудитория, функции, отличие от чужих решений — ворота 0 пропускают аналитику и сразу запускают конвейер PRD. Можно и прямо сказать ассистенту: «считай это готовой идеей».
- Нужен ли harness-инструмент dz, чтобы пакет работал?
Нет, он опциональный. Без dz конвейер работает ровно как раньше, просто без слоя памяти: не будет recall в начале и teach в конце. Наличие dz обнаруживается автоматически, требовать его установку пакет не станет.
- Что делать, если ассистент выдал число без честной пометки?
Считать это дефектом документа и чинить: либо удалить число, либо измерить и поставить MEASURED с воспроизводителем, либо назвать оценкой ESTIMATED с основанием. Машинно найти такие места помогает
dz claim-check docs/ --fail-on medium— порог именно medium, на high обычные непомеченные утверждения проходят насквозь.- Можно ли править скиллы explore, goap-research-ed25519 и problem-solver-enhanced внутри пака?
Технически можно, но правка не переживёт синхронизацию: это отслеживаемая копия, её канонический дом — пакет @dzhechkov/skills-analyst-manual, и расхождение подтягивается командой
dz sync-upstream. Править нужно канонический источник.- Сколько времени занимает полный проход?
Режим MANUAL с девятью контрольными точками рассчитан на длинную сессию с участием человека — конвейер стоит, пока ты не ответишь. Если идея простая и цена ошибки низкая, разумнее не гонять полный путь: контрольные точки нужны там, где ошибка дорогая.
- Что делать, если после установки слэш-команда не появилась?
Начни с
npx @dzhechkov/skills-idea2prd doctor— он отвечает на вопрос «цела ли установка» раньше, чем ты начнёшь искать причину в ассистенте. Затемlist, чтобы увидеть, что реально установлено в.claude/skills/.