Промпти для PRD із сирого запиту і для кожного кроку завдання С2: проблеми у вимозі, уточнювальні питання, acceptance criteria, UAT-сценарії чи тест-кейси, перевірка покриття — і здача через merge request.
Шаблон звіту в репозиторії: templates/c2-report.md
Варіант — той самий, що в С1. Файли: materials/variants/NN-…/requirement.md (L1), bug-report.md (L2 BA), sources.md (L3).
Будь-який AI-інструмент; кожен крок — нова розмова або явне «продовжуємо з попередньою відповіддю».
Строк — вівторок, 6 жовтня, 23:59. Розбір — наступного дня, на занятті 3, 7 жовтня. Токен-звіту в С2 немає.
1. PRD: типи вимог, ID і трасування
Блок 01 заняття: від сирого запиту до PRD з типами вимог FR, NFR, TC, BC і стабільними ID. У звіті С2 окремого розділу для цього немає; як це виглядає на демо — розділ 1 сторінки «Демо».
Де / що: PRD із сирого запиту · BA · нова розмова · вставте запит від бізнесу (лист, нотатки зустрічі, повідомлення)
Роль: ти — бізнес-аналітик; готуєш PRD (Product Requirements Document) — документ, з якого розробка, QA і дизайн беруть вимоги до функції.
Вхідні дані: запит від бізнесу — нижче, між рядками ===. Працюй лише з ним.
Задача: склади PRD функції за форматом нижче.
Критерії приймання:
- кожна вимога має стабільний ID: FR-<ОБЛАСТЬ>-NN — функціональні, NFR-<ОБЛАСТЬ>-NN — нефункціональні, TC-<ОБЛАСТЬ>-NN — технічні обмеження, BC-<ОБЛАСТЬ>-NN — бізнес-обмеження; область — коротке слово латиницею (ADDR, PAY, UI…), NN — 01, 02…;
- одна вимога — одне твердження, яке можна перевірити; біля кожної — джерело: коротка цитата із запиту або позначка «припущення»;
- чисел, строків і правил, яких у запиті немає, не вигадуй — пиши «[питання до автора: …]»;
- NFR — лише з вимірюваним порогом; якщо порогу в запиті немає — «[поріг — питання до автора]»;
- суперечності в запиті не вирішуй сам: винеси їх у «Відкриті питання» з варіантами рішення.
Формат відповіді (Markdown):
1. Проблема і мета — з метрикою успіху, якщо вона є в запиті.
2. Користувачі.
3. Обсяг: у межах і поза межами.
4. Вимоги — чотири таблиці FR, NFR, TC, BC: «ID | Вимога | Джерело».
5. Припущення.
6. Відкриті питання — що спитати і в кого.
===
<вставте запит>
===
Очікуваний результат: PRD із шести розділів: вимоги з ID і джерелом, суперечності й прогалини — у «Відкритих питаннях». Далі — рев'ю: чи правильні типи і чи немає вигаданих чисел.
Якщо не працює
AI «вирішив» суперечність сам — наприклад, вибрав одну з двох цін? Допишіть: «Суперечність не вирішуй — винеси обидва варіанти у відкриті питання». Метрика успіху опинилася серед NFR? Це типова помилка — її ловить промпт «Рев'ю PRD».
Де / що: Спершу питання, потім PRD · BA · нова розмова · вставте запит
Роль: ти — бізнес-аналітик; готуєш PRD функції і не пишеш його, доки не з'ясуєш головне.
Вхідні дані: запит від бізнесу — нижче, між рядками ===. Працюй лише з ним і з моїми відповідями.
Задача: працюй у два кроки. Крок 1 — постав уточнювальні питання і зупинись: чекай моїх відповідей. Крок 2 — після моїх відповідей склади PRD.
Критерії приймання:
- не більше семи питань, найважливіші — першими;
- одне питання — одне рішення, з варіантами відповіді;
- питай лише про те, що змінить вимоги: суперечності в запиті, хто користувач, межі обсягу, числа, строки й пороги;
- до моїх відповідей PRD не пиши;
- у PRD кожна вимога має стабільний ID TYPE-AREA-NN: FR — функціональні, NFR — нефункціональні (лише з вимірюваним порогом; якщо порогу немає ні в запиті, ні в моїх відповідях — «[поріг — питання до автора]»), TC — технічні обмеження, BC — бізнес-обмеження;
- біля кожної вимоги — джерело: цитата із запиту або «відповідь на питання N»; на що я не відповів — лишається у «Відкритих питаннях»;
- чисел і правил, яких немає ні в запиті, ні в моїх відповідях, не вигадуй.
Формат відповіді: крок 1 — таблиця «№ | Питання | Чому це важливо | Варіанти відповіді»; крок 2 — PRD з розділами «Проблема і мета», «Користувачі», «Обсяг», «Вимоги» (таблиці FR, NFR, TC, BC: «ID | Вимога | Джерело»), «Припущення», «Відкриті питання».
===
<вставте запит>
===
Очікуваний результат: Спершу — до семи питань із варіантами відповіді; після ваших відповідей — PRD, де видно, яка вимога виникла з якої відповіді.
Якщо не працює
AI одразу пише PRD або питань більше семи? Нагадайте: «Лише крок 1: не більше семи питань — і чекай моїх відповідей». Відповідайте одним повідомленням, за номерами питань.
Де / що: Рев'ю PRD · QA і BA · нова розмова · вставте PRD і, якщо є, вихідний запит
Роль: ти — QA-інженер і бізнес-аналітик, які рецензують PRD, перш ніж із нього писатимуть вимоги до розробки й тести.
Вхідні дані: PRD і, якщо є, вихідний запит — нижче, між рядками ===.
Задача: знайди в PRD проблеми, які заважатимуть розробці й тестуванню.
Критерії приймання:
- вимоги, які не можна перевірити: слова без міри, кілька тверджень під одним ID;
- NFR без вимірюваного порогу;
- неправильний тип: метрика успіху чи бізнес-мета записана як NFR; правило поведінки системи записане як TC (TC — це стек, інтеграції, платформа, дані; правило поведінки — це FR);
- суперечності між вимогами, а також між PRD і запитом;
- обмеження, яких бракує: гроші, строки, ролі, межі дії функції;
- проблеми з ID: дублікати, ID без типу чи області, перенумеровані ID;
- прогалини обсягу: що не віднесено ні до «у межах», ні до «поза межами», і вимоги без джерела;
- для кожної проблеми — ID і коротка цитата; рішень не вигадуй — якщо його немає в запиті, це питання до автора.
Формат відповіді: таблиця «ID | Проблема | Тип | Що змінити | Питання».
===
<PRD>
===
<вихідний запит, якщо є>
===
Очікуваний результат: Таблиця проблем із ID вимог. Кожен рядок звірте з PRD і запитом: справжня це проблема чи вигадка AI.
Якщо не працює
AI переписав увесь PRD замість рев'ю? Допишіть: «Нічого не переписуй, лише таблиця проблем». Перевірка себе на демо-PRD (сторінка «Демо», розділ 1): у ньому дві вимоги з хибним типом — NFR-CALL-01 (метрика успіху, а не NFR) і TC-ADDR-01 (правило поведінки, а не технічне обмеження). Подивіться, чи рев'ю їх знайшло.
Де / що: Коди і трасування · QA і BA · вставте документ вимог і, якщо є, AC, тест-кейси чи UAT-сценарії
Роль: ти — аналітик, який відповідає за трасування вимог.
Вхідні дані: документ вимог (PRD, вимога чи сторі з AC) і, якщо є, AC, тест-кейси чи UAT-сценарії — нижче, між рядками ===.
Задача: 1) присвой стабільні ID вимогам документа; 2) прив'яжи AC, тест-кейси і UAT-сценарії до ID і покажи прогалини.
Критерії приймання:
- граматика ID — TYPE-AREA-NN: FR — функціональна, NFR — нефункціональна, TC — технічне обмеження, BC — бізнес-обмеження; AREA — коротке слово латиницею, NN — 01, 02…;
- наявні ID не змінюй і не перенумеровуй; нова вимога отримує наступний вільний номер у своїй області;
- одне твердження — один ID; якщо вимогу треба розділити, покажи, з якої вона виникла;
- ID тест-кейсів (TC-01, TC-02…) не змінюй: у тест-кейса немає області, у технічного обмеження — є (TC-STACK-01);
- кожен AC, тест-кейс і UAT-сценарій — з посиланням на один чи кілька ID; зв'язків, яких не видно з тексту, не вигадуй.
Формат відповіді: 1) таблиця «ID | Тип | Вимога | Було» (у «Було» — старий номер або «новий»); 2) таблиця «ID | AC | Тест-кейси | UAT-сценарії»; 3) три списки: «FR без тесту», «Тести без FR», «NFR без порогу».
===
<документ вимог>
===
<AC, тест-кейси чи UAT-сценарії, якщо є>
===
Очікуваний результат: Кожна вимога має ID, наявні ID — на місці; матриця «ID → AC → тести» і три списки прогалин.
Якщо не працює
AI перенумерував наявні ID підряд (FR-1, FR-2…) або «виправив» TC-07 на TC-TEST-07? Поверніть: «Наявні ID вимог і ID тест-кейсів не змінюй».
Де / що: Довідка · чотири типи вимог і граматика ID
FR — функціональна: що система робить — дія, правило, реакція.
NFR — нефункціональна: наскільки добре — завжди з вимірюваним порогом.
TC — технічне обмеження: стек, інтеграції, платформа, дані.
BC — бізнес-обмеження: гроші, строки, політики, приватність.
ID = TYPE-AREA-NN: FR-ADDR-03 · NFR-PERF-02 · TC-STACK-01 · BC-PAY-01
ID стабільний: не перенумеровується і не використовується повторно; зміну записують на місці — з датою і рішенням; відкинута вимога лишається зі статусом dropped.
TC-STACK-01 — технічне обмеження (є область).
TC-07 — тест-кейс (без області). Або команда домовляється про інший префікс для тест-кейсів.
Очікуваний результат: Кожна вимога має тип і ID, кожен NFR — поріг; AC, тест-кейси й UAT-сценарії посилаються на ID.
Якщо не працює
NFR це чи метрика успіху? Якщо число вимірює бізнес-результат (дзвінки, продажі), а не якість роботи системи, — це метрика успіху в розділі «Проблема і мета», а не NFR.
Що таке PRD
Product Requirements Document — документ вимог до продукту чи функції: проблема і мета, користувачі, обсяг (у межах і поза межами), вимоги з типами й ID, припущення, відкриті питання. З нього беруть вимоги розробка, QA і дизайн. PRD — ще не вимога для розробки: спершу автор закриває відкриті питання, і лише тоді з'являються сторі з acceptance criteria (у демо — requirement.md версії 1.0).
Приклад кодування з реального проєкту
Документ вимог з іншого проєкту тренера. FR-SEARCH-05 — якщо пошук міста нічого не знайшов, показати «Nothing found» просто на сторінці, без спливного повідомлення про помилку. NFR-PERF-02 — Lighthouse Performance ≥ 90 на продакшн-URL (mobile і desktop). TC-STACK-03 — лише API Open-Meteo (прогноз і геокодування), жодного іншого провайдера погоди. BC-PRIVACY-02 — геолокація лише після явної дії користувача, ніколи під час завантаження сторінки. Область у тій схемі необов'язкова, а в курсі ми її ставимо завжди — саме вона відрізняє технічне обмеження TC-STACK-01 від тест-кейса TC-07. ID ніколи не перенумеровуються; зміни записані на місці з датою і рішенням, а специфікації, тести й PR посилаються саме на ці ID.
Де це далі в курсі
С3 — ID вимог у задачах трекера. С4 — специфікація як контракт з OpenSpec: статус вимоги і контрольовані зміни propose → apply → archive. BA1 — декомпозиція епік → сторі з трасуванням до вихідного запиту. BA3 і QA-заняття — узгодженість пакета вимог.
2. Проблеми у вимозі і питання
Спершу — знайти, що у вимозі не так, і сформулювати питання. Лише потім переписувати AC.
Де / що: QA і BA · нова розмова · вставте повний текст requirement.md свого варіанту
Роль: ти — досвідчений бізнес-аналітик і тест-дизайнер, який рецензує вимогу перед тим, як її візьмуть у розробку.
Вхідні дані: вимога «<назва функції вашого варіанту>» — сторі й acceptance criteria — нижче, між рядками ===.
Задача: знайди проблеми у вимозі і сформулюй уточнювальні питання до автора.
Критерії приймання:
- для кожної проблеми — місце (AC1…AC7, сторі, нотатка), коротка цитата і тип: неоднозначність, неповнота, суперечність, порушення INVEST, неоднозначна межа;
- поясни, чому це заважає розробці чи тестуванню;
- не вигадуй правил, яких немає у вимозі; якщо чогось бракує — це питання, а не відповідь;
- щонайменше п'ять конкретних питань, на кожне можна відповісти одним рішенням.
Формат відповіді: таблиця «№ | Де | Цитата | Тип | Чому проблема», потім нумерований список «Уточнювальні питання».
===
<повний текст requirement.md>
===
Очікуваний результат: Таблиця проблем із посиланнями на AC і список питань. Далі — звірка з вимогою: що справжнє, що AI вигадав.
Якщо не працює
AI «виправляє» вимогу замість того, щоб знаходити проблеми? Допишіть: «Нічого не переписуй, лише знайди проблеми і постав питання».
П'ять типів проблем
Неоднозначність — слова без міри: «швидко», «зручно», «коректно». Неповнота — немає негативного чи межового випадку: а що, якщо…? Суперечність — два місця не можуть бути правдою одночасно. Порушення INVEST — сторі завелика, змішує дві функції або залежить від незробленого. Неоднозначна межа — «до», «понад», «за 24 години» без точки відліку й часового поясу.
Добре питання
Прив'язане до конкретного місця і має варіанти відповіді: «AC5: 24 години — до дати доставки чи до конкретного часу? Якщо до дати, то від 00:00 за Києвом?» Погане — «уточніть AC5».
3. Acceptance criteria
Переписуємо AC так, щоб кожен можна було перевірити: Given/When/Then або однозначне твердження.
Де / що: QA і BA · та сама розмова, після кроку 2
Роль: той самий аналітик.
Задача: перепиши acceptance criteria вимоги так, щоб кожен можна було перевірити.
Критерії приймання:
- формат Given / When / Then;
- без слів без міри («швидко», «зручно», «коректно») — або число, або окреме питання;
- щонайменше один негативний і один межовий критерій;
- де відповідь залежить від відкритого питання, познач «залежить від питання N» і не вигадуй рішення.
Формат відповіді: нумерований список AC1…ACn, під кожним — з якого старого AC чи питання він виник.
Очікуваний результат: AC, які можна перевірити, з позначками, що залежить від відкритих питань.
Якщо не працює
AI вписав числа, яких немає у вимозі (ліміти, строки)? Це вигадка — або поверніть як питання, або прямо позначте як припущення.
Given / When / Then
Given — стан до дії (статус посилки, роль, дані). When — одна дія користувача чи системи. Then — спостережуваний результат: текст на екрані, статус, сума, повідомлення. Один сценарій — один результат.
4. UAT-сценарії (BA) і тест-кейси (QA)
З AC — тестові артефакти. У кожного сценарію чи кейсу — посилання на AC.
Де / що: BA · після кроку 3
Роль: бізнес-аналітик, який готує приймальне тестування разом із власником продукту.
Задача: склади UAT-сценарії за acceptance criteria вище.
Критерії приймання:
- мовою користувача, без технічних кроків;
- кожен сценарій посилається на AC;
- щонайменше чотири сценарії, зокрема негативний і межовий;
- не додавай поведінки, якої немає в AC.
Формат відповіді: таблиця «№ | Сценарій | Передумови | Кроки | Очікуваний результат | AC».
Очікуваний результат: 4+ UAT-сценарії з посиланнями на AC.
Якщо не працює
Сценарії повторюють один одного? Попросіть: «Об'єднай сценарії, що перевіряють одне й те саме, і покажи, який AC ще без сценарію».
Де / що: QA · після кроку 3
Роль: досвідчений тест-дизайнер.
Задача: склади тест-кейси за acceptance criteria вище.
Критерії приймання:
- кожен кейс посилається на AC;
- позитивні, негативні й межові; для меж — значення на межі, під нею і над нею;
- кроки й очікуваний результат — конкретні, з тест-даними;
- щонайменше шість кейсів; не вигадуй поведінки, якої немає в AC — якщо бракує даних, познач «потребує відповіді на питання N».
Формат відповіді: таблиця «ID | Назва | Передумови | Кроки | Тест-дані | Очікуваний результат | Тип | AC».
Очікуваний результат: 6+ тест-кейсів із тест-даними й посиланнями на AC.
Якщо не працює
Очікуваний результат розмитий («система працює коректно»)? Попросіть переписати його як конкретне спостереження: текст, статус, сума.
Де / що: QA і BA · перевірка покриття
Побудуй матрицю покриття: рядки — AC, стовпці — сценарії чи тест-кейси вище. Познач AC без жодного сценарію, дублікати (два кейси перевіряють одне й те саме) і кейси, що не спираються на жоден AC.
Очікуваний результат: Таблиця AC × кейси з позначеними прогалинами й дублікатами — основа розділу 6 звіту.
Якщо не працює
Не вірте матриці на слово: перевірте два-три рядки самі за текстом кейсів.
UAT чи тест-кейс
UAT-сценарій відповідає на питання «чи отримав користувач те, що просив бізнес» і пишеться мовою користувача. Тест-кейс перевіряє конкретну поведінку системи з точними даними, включно з межами й помилками. Обидва мають посилатися на AC.
5. Перевірка згенерованого
Розділ 6 звіту: що ви змінили у відповіді AI і чому.
Де / що: Чек-лист перевірки перед здачею
[ ] кожна проблема — з місцем і цитатою з вимоги мого варіанту
[ ] у відповіді немає правил, чисел і строків, яких немає у вимозі
[ ] кожен AC перевірюваний і має хоча б один сценарій чи кейс
[ ] є негативні й межові сценарії
[ ] немає дублікатів
[ ] у звіті видно, що саме я виправив у відповіді AI
Очікуваний результат: Кожен пункт відмічено — або в розділі 6 пояснено, чому ні.
Якщо не працює
Найчастіша помилка С1 — перевірка переказує відповідь AI. Звіряйте з файлом вимоги, а не з відповіддю.
6. L2 і L3
Баг-репорт і суперечливі джерела — у файлах свого варіанту.
Де / що: BA · L2 · вставте bug-report.md і вимогу
Роль: бізнес-аналітик, який розбирає баг-репорт разом із QA.
Вхідні дані: вимога і баг-репорт — нижче, між рядками ===.
Задача: розбери баг-репорт мовою аналітика.
Критерії приймання:
- це дефект коду чи прогалина вимоги — з посиланням на конкретний AC або на те, що AC бракує;
- чого бракує в самому репорті, щоб його відтворити чи оцінити;
- чи не змішано в одному репорті кілька проблем;
- що змінити у вимозі: новий або уточнений AC.
Формат відповіді: розділи «Класифікація», «Зв'язок з вимогою», «Чого бракує в репорті», «Пропозиція до вимоги».
===
<вимога>
===
<bug-report.md>
===
Очікуваний результат: Класифікація, зв'язок з AC і конкретна пропозиція змінити вимогу.
Якщо не працює
AI одразу пише «це баг, виправте код»? Попросіть спершу звірити фактичну поведінку з текстом AC.
Де / що: QA і BA · L3 · вставте sources.md і вимогу
Роль: аналітик, який узгоджує вимоги з кількох джерел.
Задача: знайди суперечності між джерелами і вимогою та запропонуй узгоджене рішення.
Критерії приймання:
- кожна суперечність — з цитатами з обох джерел;
- рішення з обґрунтуванням: чому саме так і хто має його підтвердити;
- відкриті питання — окремо, з адресатом;
- не вигадуй позицій, яких немає в джерелах.
Формат відповіді: таблиця «Суперечність | Джерело А | Джерело Б | Рішення | Обґрунтування | Хто підтверджує», потім «Відкриті питання».
Очікуваний результат: Узгоджене рішення з обґрунтуванням; далі BA оновлює пакет вимог, QA — тестовий пакет.
Якщо не працює
Рішення «на користь усіх одразу»? Попросіть вибрати одне й пояснити ціну для інших сторін.
7. Здача — новий проєкт
Як у С1, але форк — з koldovsky/ai-qa-ba-c2, файл — submissions/ваш-username/c2.md.
Де / що: Крок 3 · New file → поле назви файлу
submissions/ваш-username/c2.md
Очікуваний результат: Саме submissions, без templates/ на початку, без пробілу в кінці.
Якщо не працює
Перед Commit changes перевірте повний шлях у полі назви.
Де / що: Крок 5 · форма merge request → Title
С2 · ваш-username · варіант NN
Очікуваний результат: Праворуч від стрілки — koldovsky/ai-qa-ba-c2 і main; у Changes — лише ваш файл.
Якщо не працює
У Changes є чужі файли? Форк зроблено з чужої копії — зробіть новий форк зі сторінки koldovsky/ai-qa-ba-c2.
Прізвище та ім'я і пошта
Поле «**Прізвище та ім'я:**» — точно як у шаблоні, з двома зірочками. Пошту в комітах приховайте: Edit profile → Commit email → Use a private email.