Skip to main content

Spec-Driven Development: коли специфікація стає кодовою базою

Я вже два місяці не написав жодної функції руками — і кодова база ніколи не була здоровішою. Ось як spec-driven development змінив те, що у 2026 означає «інженерна робота», правила, які тримають дисципліну чесною, і місця, де вона все ще ламається.

Spec-Driven Development: коли специфікація стає кодовою базою

Я вже два місяці не написав жодної функції руками. Кодова база ніколи не була здоровішою. Два роки тому ця фраза звучала б як маркетинг. У 2026 це просто нова база, і інженери, які цього не бачать, ось-ось втратять сходинку, на якій стояли, не помічаючи.

Це design-time-двійник посту про контекст-інжиніринг. Контекст-інжиніринг — це те, що рантайм збирає у момент виконання. Spec-driven development — це те, що пише команда і з чого рантайм потім збирає. Це дві сторони одного зсуву, і не можна всерйоз займатися однією, не зайнявшись іншою.

Теза тут жорсткіша, ніж людям зручно. Ваша кодова база більше не ваша кодова база. Ваші специфікації — так. Код — це просто кеш.

Зсув: код як кеш, специфікація як істина

Тридцять років вихідний код був довговічним артефактом, а все інше — тікети, вимоги, архітектурні документи — прикрасами навколо нього. Код був єдиним місцем, де жила істина. Все інше дрейфувало.

У 2026 ці стосунки перевертаються у багатьох командах, включно з моєю. Довговічний артефакт — це специфікація: файл, який читає агент, eval-набір, проти якого її перевіряють, обмеження, яким зобов’язана коритися система. Код — це те, що регенерується зі специфікації на вимогу. Якщо видалити код і залишити специфікацію, код можна виробити заново. Якщо видалити специфікацію і залишити код — ви втратили істину, і успіхів у реверс-інжинірингу з папки .ts-файлів, до якої останніми торкалися три різні агенти.

Це не гіпотеза. Це практична реальність кодової бази, де більша частина написання коду делегована. Код перестає бути джерелом істини, бо більше немає одного автора, який тримає його в голові. Цю роль зобов’язана взяти специфікація, інакше — ніхто.

Це змінює все, що йде вниз за течією: ревʼю, тестування, онбординг, найм. Дійдемо до кожного.

Що таке «специфікація» у 2026

Специфікація — це не документ вимог. Не user story. Не сторінка у wiki, яку хтось написав шість місяців тому і відтоді ніхто не торкався.

Специфікація у 2026 — це виконуваний артефакт, який агент читає напряму, проти якого його оцінюють і з якого він виробляє код. У неї є три конкретні форми, які зустрічаються у зрілих команд.

Старий артефактЕквівалент-специфікація 2026Що змінилося
Тікет у JiraFeature-специфікаціяВиконувана агентом, а не бажана; лежить у репо, а не в трекері
READMECLAUDE.md / AGENTS.md / правила репоЧитається машинами, а не лише людьми; примусово, а не декоративно
Архітектурний документSystem-специфікація + eval-набірПеревіряється, а не вшановується; ревʼюїться при зміні
Коментар у кодіInline-специфікаціяКерує поведінкою, а не просто описує

Формат Anthropic Skills, GitHub Spec Kit, поява файлів AGENTS.md у корені репозиторіїв — це не розрізнені тренди. Це один і той самий тренд під різними шапками. Індустрія колективно усвідомлює, що довговічний вхід для агентських систем має жити у файлі, а не у промпті, і цей файл має ревʼюїтися та версіонуватися так само, як код.

Ієрархія специфікацій

У зрілій spec-driven кодовій базі ви знаходите чотири рівні, вкладених один в одного.

Системна специфікація. Інваріанти. Архітектурні правила. Межі безпеки. Обмеження роботи з даними. «Усі відповіді API — JSON; PII не покидає БД; авторизація на edge, а не в хендлерах». Ці рідко змінюються і рідко належать одній фічі. Вони живуть у корені репо — у AGENTS.md або еквіваленті.

Feature-специфікація. Що робить можливість. Приклади та контр-приклади. Критерії приймання. Eval-набір, за яким фіча утримується. Ці переписуються, коли фічі еволюціонують. Вони живуть поруч із кодом, який описують, часто як feature.md-сусід директорії реалізації.

Task-специфікація. Одиниця, яку агент виконує за один прогін. Вужче за фічу: «Додай middleware-обмежувач частоти, який використовує наявний Redis-клієнт і випромінює ту саму телеметрію, що й auth middleware». Часто ефемерна, але версіонується у описі PR чи task-файлах.

Inline-специфікація. Правила, вбудовані у файли репо — CLAUDE.md, AGENTS.md, коментарі до схем, директорійні README.md, які агент читає як контекст всього, що робить у цій директорії.

Що працює: маленькі специфікації, скомпоновані разом. Великі специфікації протікають. Двотисячослівна feature-специфікація, що покриває п’ять задач, агентом (або людиною) виконується гірше, ніж п’ять трисотслівних, що покривають по одній задачі.

Що змінюється, коли специфікації стають first-class

Щойно специфікація — довговічний артефакт, робочий процес нижче за течією змінює форму:

  • Code review стає spec review. Ревʼю PR з двома сотнями рядків згенерованого агентом коду — невдячна робота: код зазвичай нормальний механічно. Ревʼю специфікації, що його виробила, — високоважлива робота: там реально приймаються рішення. Команди, які не перенесли увагу ревʼю на специфікацію, досі витрачають час сеньорів на код, який агент згенерує заново з виправленої специфікації за двадцять секунд.
  • PR description стає spec diff. «Я змінив специфікацію політики rate-limit з X на Y; код регенерований під неї» — значно кращий опис PR, ніж стіна змінених файлів. Diff, що цікавий людям, — це spec diff. Code diff — його наслідок.
  • Тестування стає eval. Юніт-тести досі існують. Але високоцінне тестування — чи виконує фіча специфікацію на різних входах, крайових випадках і ворожих умовах — виглядає більше як eval-набір, ніж як файл юніт-тестів. Evals прив’язані до специфікації; змінюється специфікація — змінюються evals у тому ж коміті.
  • Дебаг стає spec-gap-аналізом. «Чому агент згенерував неправильний код?» перетворюється на «Де в специфікації цей випадок недоспецифікований?». Баг майже завжди у специфікації, а не в коді, який вона виробила. Ставитися до специфікації як до джерела багів — це найвищоважливіша зміна workflow, яку я зробив за два роки.
  • Онбординг стає читанням специфікацій, а не читанням вихідників. Нові інженери не розганяються, читаючи кодову базу. Вони розганяються, читаючи системну специфікацію, потім feature-специфікації тих областей, де працюватимуть. Код іде вниз за течією — і вони самі швидко його зроблять, коли зрозуміють обмеження.

Кредитне плече сеньорного інженера у 2026 — у написанні специфікацій, які агенти інших людей виконають правильно.

Це та частина зсуву, яка б’є по сеньорах найсильніше — і в обидва боки. Кредитне плече величезне. Діяльність незвична. М’язова пам’ять «писати код руками» починає атрофуватися, якщо активно не вирішувати, які задачі ще цього варті.

П’ять правил написання специфікацій, яким агенти справді коряться

Пронумеровані, бо вироблені у продакшені, а не виведені з блог-постів.

1. Виконувана, а не бажана. Кожній специфікації потрібна перевірка приймання. «Ця фіча має бути user-friendly» — це не специфікація, це побажання. «Коли користувач надсилає форму без email, поверни 400 з тілом {error: 'email_required'} і залогуй подію validation_failed з ID форми» — це специфікація. Правило: якщо з однієї специфікації не можна написати тест — специфікація не готова.

2. Показуйте приклади і контр-приклади. Агенти швидше вчаться на контрасті, ніж на правилах. Специфікація «імена мають бути у sentence case» слабша за специфікацію, що додає «Приклад: ‘Annual revenue’. Контр-приклад: ‘annual_revenue’ або ‘AnnualRevenue’». Завжди показуйте, як вихід не має виглядати. Ось де живе справжня керованість.

3. Називайте режими відмови. Позитивні специфікації («Завжди роби X») слабші за негативні («Ніколи не роби Y»). Агент надійніше кориться «не ходи в БД з хендлера», ніж «використовуй шар репозиторію». Обидва місця у специфікації, але якщо можна написати лише одне — пишіть заперечення.

4. Версіонуйте специфікації як код. Специфікації лежать у репо. У них є історія. Їх ревʼюять у PR. Їх звинувачують, коли щось ламається. «Зміна специфікації без зміни коду» — це реальна форма PR у 2026: іноді головна зміна — специфікація, а регенерація коду — наступний крок. Ставитися до специфікацій як до коду — не обговорюється; решта розвалюється, якщо специфікації дрейфують.

5. Одна специфікація — одна можливість. Великі специфікації протікають. Специфікація, що покриває аутентифікацію і rate-limit і логування, виробить код, де одна з цих трьох задач стабільно злегка не так. Розділяйте. Композиціюйте можливості. Той самий інстинкт «маленькі функції, єдина відповідальність» застосовний до специфікацій із подвійною силою.

Де це розвалюється

Я продавав би вам щось, якби зупинився тут. Є реальні випадки, де spec-driven development — невірний фрейм, і вдавати протилежне означає обпектися.

  • Розвідка і дослідницька робота. Ви ще не знаєте, що специфікувати. Ви вивчаєте форму проблеми. Писати специфікацію до розуміння проблеми — це карго-культ інженерії. У цих фазах пишіть код руками, читайте вихід, потім виймайте специфікацію з того, що спрацювало. Специфікація після, а не спочатку.
  • Перфоманс-критичний код. Гарячі цикли, чутливий до memory layout код, щільні внутрішні ядра — агент виробить щось, що відповідає специфікації, але удвічі повільніше, ніж потрібно, способами, які специфікація передбачити не могла. Пишіть такі шматки руками. Специфікуйте поверхню; ядро — руками.
  • Археологія легасі-коду. «Зміни цю чотирнадцятирічну функцію» — рідко spec-driven задача. Читайте код, розумійте, що він робить, потім вирішуйте. Специфікації — для руху вперед; археологія — окрема дисципліна.
  • Випадки, коли специфікація довша за код. Якщо ваша специфікація сто рядків, а код двадцять — ви переспецифікували. Співвідношення spec-to-code має sweet spot, і його перехід означає, що ви використовуєте специфікації як заміну тому, що не знаєте, що будувати. Зробіть крок назад, напишіть тридцятирядкову специфікацію, погодьтесь ітерувати.

Чесна рамка: spec-driven development — це дефолт для дев’яноста відсотків роботи у зрілій кодовій базі 2026. Решта десяти відсотків важлива, і сеньорний інженер — це той, хто розрізняє.

Кар’єрний кут: автор специфікацій як ремесло

Що змінюється особисто для вас, залежно від сходинки на драбині, грубо ділиться на три групи.

Джуни. Пастка очевидна і небезпечна: писати код, який міг би написати агент, замість того, щоб навчитися писати специфікацію, в якій агент потребував. Найшвидший спосіб так і не стати сеньором — пишатися обсягом коду, який ви виробляєте. Найшвидший спосіб почати ним ставати — пишатися точністю специфікацій, які ви пишете, включно з негативними випадками. Кожна написана вами специфікація — мисленнєвий артефакт. Кожен рядок агентського коду — ні.

Мідли. Зсув найсильніший тут. Ваше старе кредитне плече — писати код добре; ваше нове — писати специфікації добре. Кар’єрний ризик: якщо ви не зробите переходу, розрив до сеньора стане складніше закрити, бо те, за що зараз наймають сеньорів, лежить вище за течією, ніж код. Кар’єрна можливість: spec authoring — недорозвинений навичок по всій галузі; швидко в ньому прокачатися — одна з найдоходніших інвестицій, доступних просто зараз.

Сеньори і стаффи. Опис вашої роботи зсунувся, наздогнало це ваше звання чи ні. Ви — автор специфікацій, який іноді пише код, а не автор коду, який іноді пише специфікації. Найсеньорніші інженери, з якими я працюю, тепер проводять день, формуючи специфікації, що керують п’ятьма-десятьма агентськими сесіями паралельно. Кредитне плече складається, бо добре сформовані специфікації композиціюються за кількома агентами і фічами. Погано сформовані — протікають у всі одночасно.

Глибша думка

Специфікації — це те, що ви пишете; контекст — це те, що рантайм збирає з них. Обидва мають бути правильними. Зламайте одне — і система відмовляє способами, що виглядають як AI-баги, але насправді — інженерні. Зробіть обидва правильно — і кодова база більшу частину пише сама. Звучить хльосткувато, доки не побачите це у роботі, після чого звучить як найважливіший зсув в інженерній практиці з часів системи контролю версій.

Якщо хочете глибше, у курсах нижче — ті частини дисципліни, які я викладаю найчастіше: Claude Code Mastery: Agentic Coding for Engineers — щоденний workflow spec-driven development з реальним агентом, Building Agents with the Claude Agent SDK — побудова агентів, що споживають специфікації як first-class вхід, Prompt Engineering & AI Workflow Automation — фундамент prompt-рівня, з якого еволюціонують специфікації, і Building MCP Servers & AI Tool Integrations — як зробити специфікації переносимими між агентами та інструментами.

Поділитися
X LinkedIn
Наступний крок

Закріпіть цю тему на курсі

Структурований шлях від теорії до production-коду — з проєктами та код-рев'ю.

Середній 6 тижнів

Spec-Driven Development: від філософії до робочої моделі

Навчіться писати специфікації, яким агенти справді коряться, випускати код як кеш довговічної специфікації і керувати тріадою spec→context→evals на реальних кодових базах. Vendor-agnostic, tool-agnostic, brownfield-ready — методологічний курс, що поєднується з будь-яким agentic-стеком.

Дізнатися більше →
Просунутий 6 тижнів

OpenSpec на практиці: production spec-driven workflows для AI coding agents

Операціоналізуйте SDD з OpenSpec — open-source spec framework, що ставиться до специфікацій як Git до коду. Опануйте /opsx:propose, /opsx:apply та /opsx:archive на справжній brownfield-кодовій базі. CI-гейти, мульти-інженерна колаборація, retrofitting legacy-специфікацій і workflow-ритуали, що приживаються.

Дізнатися більше →
Середній 5 тижнів

Claude Code на практиці: агентне програмування для інженерів

Використовуйте Claude Code — CLI Anthropic для агентної розробки — щоб випускати продукт швидше. Опануйте hooks, slash-команди, суб-агенти, MCP-інтеграції, headless-режим, plan mode і кастомні skills під робочий процес команди.

Дізнатися більше →
Просунутий 7 тижнів

Побудова агентів на Claude Agent SDK

Проєктуйте та запускайте власних AI-агентів на Claude Agent SDK. Будуйте agent loops, визначайте інструменти, керуйте пам'яттю і суб-агентами, оцінюйте поведінку та деплойте мультиагентні системи для реальних інженерних задач.

Дізнатися більше →
Початковий 4 тижнів

Prompt Engineering та автоматизація з AI

Навчіться ефективно працювати з AI-моделями: пишіть якісні prompts, будуйте автоматизовані workflows за допомогою Cursor, Copilot та API-інструментів.

Дізнатися більше →
Просунутий 6 тижнів

Побудова MCP-серверів та AI Tool Integrations

Опануйте Model Context Protocol (MCP) — відкритий стандарт Anthropic для підключення AI-моделей до зовнішніх інструментів. Будуйте MCP-сервери, підключайте API до Claude.

Дізнатися більше →
Oleksii Anzhiiak

Автор статті

Oleksii Anzhiiak

Софтвер-архітектор, Senior .NET інженер та співзасновник

Олексій Анжіяк — софтвер-архітектор, Senior .NET інженер та співзасновник ToyCRM.com і ProfectusLab. Має понад 15 років досвіду у розподілених системах, хмарній інфраструктурі, high-load backend-розробці та identity-платформах. Проєктує складні архітектури, створює безпечні системи автентифікації та розробляє сучасні освітні програми, які допомагають студентам досягати реальних кар'єрних результатів.

LinkedIn →

Рекомендуємо подивитися

Підібрані сторонні відео за темою. Відкриваються на YouTube.

~2:00:00
Середній AI Engineer (Thariq Shihipar, Anthropic)

Claude Agent SDK — повний воркшоп (Thariq Shihipar, Anthropic)

Практичний воркшоп Anthropic зі створення продакшн-агентів на Claude Agent SDK — tool use, sub-agents, hooks, MCP-сервери і патерни, що працюють поза рамками демо.

~8:00:00
Середній AI Engineer (AI Engineer World's Fair)

AI Engineer World's Fair 2024 — кейноути і трек CodeGen

Кейноут-стрім найбільшої технічної AI-конференції 2024. Зріз стану AI-інженерії — що випустили, що спрацювало, що ні — безпосередньо від команд, які це будують.

~6:00:00
Середній AI Engineer (AI Engineer World's Fair)

AI Engineer World's Fair 2025 — кейноути Дня 1 і трек MCP (з командою Anthropic MCP)

Кейноут MCP-треку з командою Anthropic. Якщо хочете зрозуміти, чому в 2025 MCP став індустріальним стандартом підключення LLM до інструментів — це найкраще першоджерело.

Зв'язатися з нами