Skip to main content

OpenSpec у 2026: операційна система spec-driven development

Шість тижнів тому я поставив @fission-ai/openspec. Учора відвантажив зміну на чотирнадцять файлів за дев'яносто хвилин зі двохсотрядкової специфікації, у brownfield-кодовій базі, яку троє інженерів правлять два роки — без мерж-конфліктів, без ескалацій рев'ю. Це сеньорний архітектурний розбір того, чому OpenSpec — перший SDD-інструмент, який не розвалюється під продакшен-реальністю.

OpenSpec у 2026: операційна система spec-driven development

Шість тижнів тому я поставив @fission-ai/openspec на brownfield TypeScript-кодову базу, яку троє інженерів правили два роки. Учора відвантажив зміну на чотирнадцять файлів за дев’яносто хвилин зі двохсотрядкової специфікації. Без мерж-конфліктів. Без ескалацій рев’ю. PR-опис складався з proposal і шестидесятирядкової spec-дельти; код-діфф був її наслідком. Сеньйор, який рев’ював, не читав код — він прочитав spec-дельту і апрувнув.

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

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

Теза жорсткіша, ніж людям зручно. OpenSpec — перший spec-driven фреймворк, що ставиться до специфікацій так, як Git ставиться до коду: filesystem-state-machine з гілками, ізоляцією й атомарними мержами. Це не фіча. Це вся причина, з якої він працює.

Що таке OpenSpec, якщо по суті

OpenSpec — це open-source CLI від Fission-AI, заснований Tabish Bidiwale, запущений через Y Combinator на початку цього року, що сидить на п’ятдесяти тисячах GitHub-зірок приблизно за шість місяців після релізу. NPM-пакет — @fission-ai/openspec. TypeScript, потребує Node 20.19+, остання стабільна — v1.3.1 (21 квітня 2026 — близько місяця тому на момент написання).

Фреймінг засновника варто цитувати, бо він проривається крізь три роки LLM-хайпу одним реченням:

Генерація коду тепер дешева. Коректність — все ще дорога.

Це весь діагноз. Пляшкове горло відвантаження AI-фіч у 2026 — не можливості моделі. Opus 4.7 і Codex 5.5 можуть виробити робочу реалізацію майже з будь-якої добре сформованої специфікації. Пляшкове горло — дістатися до добре сформованої специфікації, тримати її стабільною між сесіями, ізолювати паралельні зміни і мержити їх назад у джерело істини без забруднення. Це системна задача, не задача про промптинг.

OpenSpec вирішує її так, як вирішував би backend-інженер — файловою системою, без БД, markdown’ом скрізь, і воркфлоу, що мапиться майже один-в-один на Git Flow. Канонічний layout:

project_root/
└── openspec/
    ├── AGENTS.md            # поведінкові правила для будь-якого AI-інструменту
    ├── project.md           # глобальний контекст — стек, конвенції, обмеження
    ├── specs/               # Джерело істини — поточна поведінка системи
    │   ├── auth-login/spec.md
    │   ├── payment-checkout/spec.md
    │   └── ...
    └── changes/             # ізольована робоча зона для in-flight пропозицій
        ├── add-oauth-login/
        │   ├── proposal.md  # "чому" і "що"
        │   ├── design.md    # технічний підхід
        │   ├── tasks.md     # чек-лист реалізації
        │   └── specs/       # spec-дельти: ADDED / MODIFIED / REMOVED
        └── archive/
            └── 2026-04-12-add-rate-limiting/
                └── ...

Дві директорії несуть усю модель. specs/ — поточний стан світу, джерело істини системи, організоване за capability. changes/ — in-flight робоча зона; кожна пропозиція — своя папка, повністю ізольована, зі своєю дельтою проти поточних специфікацій. Коли зміна схвалена і застосована, її дельти мержаться назад у specs/, а папка proposal переїжджає у changes/archive/[date]-[name]/. Архів незмінний. Все. Це весь контракт файлової системи.

Усе решта — CLI, slash-команди, інтеграції з AI-інструментами — це інтерфейс над цим контрактом. Можна видалити кожен JavaScript-файл у node_modules і в тебе все одно буде когерентна SDD-кодова база, бо методологія живе у структурі директорій, не в інструменті.

Машина станів із чотирьох фаз

CLI експонує невеликий набір slash-команд, що переміщують зміну через чотири фази. Усередині AI-інструменту на кшталт Claude Code чи Cursor ти набираєш команду, AI робить роботу; ти рев’юєш.

ФазаКомандаФайли створені / зміненіЩо відбувається downstream
1. Propose/opsx:propose <feature>openspec/changes/<feature>/ з proposal.md, design.md, tasks.md, дельтами specs/Існує нова ізольована робоча зона; у джерелі істини нічого не змінилося
2. Defineopenspec validateНових файлів немає; репортить помилки синтаксису специфікацій / сценаріївСтатичний аналіз spec-дельти до того, як написаний хоч якийсь код
3. Implement/opsx:applyЗміни вихідного коду, чекбокси задач відщовкнутіAI виконує tasks.md строго проти узгодженої специфікації; ти рев’юєш код-діфи і spec-дельти разом
4. Archive/opsx:archivespecs/ оновлено мержем дельт; proposal переїхав у changes/archive/[date]-<feature>/Джерело істини відображає новий стан системи; архівований proposal — постійна історія

Конкретний end-to-end:

Ти:   /opsx:propose add-dark-mode
AI:   Створено openspec/changes/add-dark-mode/
      ✓ proposal.md       (обґрунтування, критерії успіху)
      ✓ design.md         (theme-контекст, CSS-змінні, персистенс)
      ✓ tasks.md          (8 задач на 3 компоненти)
      ✓ specs/theme/spec.md  (ADDED: 4 сценарії)

Ти:   openspec validate
✓ Усі сценарії коректно сформовані
✓ Конфліктів з існуючими специфікаціями немає

Ти:   /opsx:apply
AI:   ✓ 1.1 Додати theme context provider
      ✓ 1.2 Створити toggle-компонент
      ✓ 2.1 Додати CSS-змінні для темної палітри
      ...

Ти:   /opsx:archive add-dark-mode
✓ Специфікації змержені в openspec/specs/theme/
✓ Proposal заархівований у openspec/changes/archive/2026-05-21-add-dark-mode/

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

Чому filesystem-as-state-machine — правильний вибір

Хитрість тут не в CLI. Хитрість у тому, що хтось нарешті сів і запитав: як виглядав би Git, якби Git версіонував поведінку, а не код? І потім реалізував це без БД, без сервісу, без централізованого сервера — просто файлами в директорії і машиною станів із чотирьох команд.

Маппінг один-в-один з інтуїціями, які в кожного backend-інженера вже є.

Поняття GitЕквівалент OpenSpecНотатки
Гілка mainopenspec/specs/Джерело істини; поточний стан світу
Feature-гілкаopenspec/changes/<feature>/Ізольована робоча зона; не забруднює main, поки не змержена
ДиффSpec-дельта (ADDED / MODIFIED / REMOVED сценарії)Рев’юється як текст, історія за рядками
Мерж/opsx:archiveАтомарний; дельти застосовані, proposal переїхав у історію
git logopenspec/changes/archive/Append-only історія кожної зміни зі збереженим обґрунтуванням
Pre-commit hookopenspec validate у CIЛовить криво сформовані специфікації до того, як вони потраплять у рев’ю

Щойно бачиш маппінг, будь-який інший SDD-інструмент виглядає недо-спроектованим. GitHub Spec Kit важкий і жорсткий; він нав’язує фазові гейти й інлайн-править source-of-truth специфікації по ходу, що означає: конкурентні пропозиції від двох інженерів зіткнуться на одному файлі. AWS Kiro прив’язує до Kiro IDE та зокрема до моделей Claude — норм, якщо ти вже AWS-shop, фатально інакше. Tessl — пуристська позиція («код реконструюється зі специфікації»), філософськи чиста й операційно болісна — у більшості реальних кодових баз є код, написаний руками, який має співіснувати з генерованим. BMAD, Antigravity від Google, та жменя інших SDD-фреймворків, що відвантажуються у 2026, роблять різні ставки, але майже всі припускають greenfield — новий проєкт, порожнє репо, чистий аркуш.

Brownfield — це де робота насправді. Кожна команда, яку я поважаю, відвантажує в кодову базу, яку правили роками, люди, що пішли з компанії, з конвенціями, які не збігаються з README, у директоріях, названих за продуктами, що перейменовували двічі. Уся архітектура OpenSpec побудована під цю реальність. Директорію specs/ можна ретрофітнути на існуючий проєкт — є навіть документований режим retrofitting, де ти просиш AI зворотно-інженерити специфікації з існуючого коду, виробляючи базову документацію для систем, що її ніколи не мали. Це справжнє розкриття. Не «spec-driven з першого дня» — spec-driven з третього року.

Backend-архітектор, який це читає, має помітити, що OpenSpec насправді відвантажує workflow-engine поверх content-addressed store, і адресує файлова система. Усе це вміщується на USB-флешці. Немає сервісу, який треба експлуатувати, немає consensus-протоколу для дебагу, немає API для версіонування. Це найлегша можлива реалізація справжньої ідеї, і тому він уже виграє SDD-екосистему.

Форма PR змінюється downstream від цього. У старому світі рев’юер відкриває PR, бачить 600-рядковий діфф, скролить, сподівається, що в середині нічого важливого не ховається, і апрувить. У OpenSpec-формі PR тіло складається з proposal.md + design.md + spec-дельта. Рев’юер читає шістдесят рядків специфікації, ставить одне питання за неоднозначним сценарієм і апрувить. 600-рядковий код-діфф проглядається як sanity-check — це наслідок узгодженої зміни, не сама зміна. Це і є зміна воркфлоу, на яку Spec-Driven Development вказував; OpenSpec — перший інструмент, який реально доставляє це на brownfield-команді.

Як це б’є по дизайну компонентів

OpenSpec описують і демонструють переважно backend-leaning інженери, що заслонило дещо, варте сказати: це негучно-чудовий frontend-інструмент.

Причина в layout’і файлів. Кожна поведінкова capability отримує свою папку під openspec/specs/. Для component-heavy frontend це мапиться в:

openspec/specs/
├── ui-button/spec.md
├── ui-form-field/spec.md
├── auth-login-form/spec.md
├── checkout-cart/spec.md
├── nav-language-switcher/spec.md
└── ...

Кожен spec.md містить сценарії у форматі GIVEN / WHEN / THEN — наприклад, для форми логіну:

СЦЕНАРІЙ: Користувач із увімкненим 2FA надсилає валідні дані
  GIVEN у користувача увімкнено 2FA
    AND користувач надіслав валідний email і пароль
  WHEN форму надіслано
  THEN сервер повертає OTP-виклик
    AND форма переходить у стан вводу OTP
    AND поля email/пароль задизейблені

СЦЕНАРІЙ: Надсилання форми з невалідним форматом email
  GIVEN поле email містить "not-an-email"
  WHEN користувач блюрить поле
  THEN поле показує inline-валідаційну помилку
    AND кнопка submit залишається задизейбленою

Це не новий формат. Це та сама форма даних, яку твої Playwright-тести вже використовують. Та сама форма даних, яку play-функції Storybook вже використовують. Та сама форма даних, у якій твоя QA-команда вже пише user stories. Причина, з якої більшість frontend-команд не пишуть специфікацій, — не в тому, що формат незнайомий — у тому, що у формату не було канонічного дому. OpenSpec дає йому дім.

Що це розкриває для frontend:

  • A11y, i18n, design tokens і responsive-обмеження стають first-class spec-контентом замість розкиданих коментарів. «Кнопка має досягати мінімум touch-target 44×44 на мобілі» перестає бути повідомленням у Slack і стає сценарієм, рев’юваним, коли рев’юється специфікація.
  • Дизайнер може відвантажити UX-пропозицію як spec-дельту, поки інженер відвантажує data-layer-пропозицію як окрему spec-дельту. Ці дві ніколи не торкаються одного файлу. Вони мержаться незалежно у specs/. Мерж-конфлікту немає, бо немає shared mutable state — кожна пропозиція ізольована by design.
  • Рефактори компонентів перестають бути «я переписав форму» і стають «я MODIFIED два сценарії й ADDED один». Рев’юери бачать, яка поведінка змінилася. Якщо сценарій не змінився — поведінка не змінилася, і рев’юер може довіряти реалізації.

Де це напружується — і я продавав би тобі щось, якби не сказав — це на сильно візуальній роботі. Тайминг анімації, layout-as-art, мікро-інтеракції, що залежать від руху і кольорових рішень: ці не вписуються чисто в GIVEN / WHEN / THEN. Як і раніше потрібні visual-regression evals, screenshot-діфи, design-system stories. OpenSpec не замінює це. Але він означає, що поведінковий шар — що цей компонент робить, коли, кому, з яким наслідком — має канонічний дім, і отже, перестає битися за простір з візуальним шаром.

Tell frontend-архітектора тут — що GIVEN / WHEN / THEN байт-у-байт та сама форма даних, яку твій Playwright-спек уже використовує. Ти не вчиш новий формат. Ти вчиш куди покласти той, що в тебе є, щоб він перестав бути осиротілим у папці, яку ніхто не читає.

Це також те місце, де дисципліна evals зустрічається з OpenSpec природно. Кожен сценарій у специфікації — механічно — це eval-вхід. Пайплайн, що читає openspec/specs/**/spec.md, видобуває сценарії і ганяє їх як Playwright-тести проти розгорнутого превью — проєкт на вихідні. Щойно він існує, специфікація перестає бути aspirational — вона верифікується на кожному PR, і будь-яке розходження між специфікацією і реалізацією — це CI-падіння, не ескалація рев’ю.

Контекст-інжиніринг під іншим іменем

Першого разу, коли я читав доки OpenSpec, у мене було конкретне відчуття впізнавання старої ідеї у нових одежах.

Доки прямо кажуть: «Коли використання контексту перевищує 40%, перформанс AI значно деградує, і минулі вимоги забуваються». Це не відкриття OpenSpec; це відома властивість long-context LLM у 2026, і це вся причина, чому контекст-інжиніринг — дисципліна, що важлива. Цікаво, що OpenSpec з цим робить.

Воркфлоу OpenSpec, у рантаймі, — це load-on-demand стратегія контексту. Коли AI починає сесію, він читає три файли: openspec/project.md (глобальний стек, конвенції, ~200 рядків), openspec/changes/<active>/tasks.md (поточний фокус, ~50 рядків) і конкретні openspec/specs/<capability>/spec.md файли, на які посилається задача (~100 рядків кожен). Це приблизно 500–1,000 токенів курованого, щільного контексту — не 50,000 токенів «ось усе репо, розбирайся».

Кожна проблема, яку ідентифікує контекст-інжиніринг — розрідження контекстного вікна, hot/warm/cold тіринг, економіка токенів, стратегія евікції, planning context vs execution context — тут вирішується layout’ом директорій. Hot-тір — це tasks.md. Warm-тір — це згадані spec.md-файли. Cold-тір — це решта specs/ і весь archive/, доступний для завантаження на вимогу, але не оплачуваний за дефолтом. Ти не конфігуруєш контекстний пайплайн. Ти використовуєш інструмент, у якого правильний пайплайн вбудований у його файлову структуру.

Є також історія про пам’ять. Plan mode зникає, коли модель перезапущена; історія розмови випаровується між сесіями; навіть найкраща long-context модель не пам’ятає, що ти вирішив у вівторок минулого тижня. Специфікації вирішують це без церемоній: це файли, версіоновані, довговічні, тривіально завантажувані. «Пам’ять» OpenSpec-проєкту — це директорія specs/. «Мислення» OpenSpec-проєкту — це директорія changes/. Кожна обмежена, інспектована, переживає рестарти. Це те, що будь-який agent-фреймворк, який я використовував, намагався побудувати з векторних сховищ і KV-кешів, а OpenSpec відвантажує це як .md-файли у папці.

Тут є більш тонка властивість, яку я кілька тижнів учився цінувати. Оскільки OpenSpec-специфікації написані в GIVEN / WHEN / THEN, кожен сценарій природно eval-shaped. Можна зробити scrape усього дерева specs/, вважати кожен сценарій тест-кейсом і годувати їх eval-харнес як канонічні критерії коректності. Ти не пишеш evals окремо — вони і є специфікація, у достатньо структурованій формі, щоб бути машинно видобуваними. Це уніфікація, за яку я виступав у кінці eval-посту, і OpenSpec — перший інструмент, який добирається туди побічно, а не через церемонію.

AI-архітектор уже знає, що тут відбувається: це load-on-demand context engineering, що надів CLI-шапку. Цікава річ у тому, що це навчає дисципліні інженерів, які не знають, що вона їм потрібна. Через пів року інженер, що щодня використовує OpenSpec і ніколи не читав статті про контекст-інжиніринг, буде контекст-інженером, за звичкою, ніколи не почувши терміна.

Практична нотатка про моделі. OpenSpec працює з двадцятьма п’ятьма+ AI-інструментами, але не працює однаково добре з усіма. Специфікації — це markdown, що потребує міркування для якісного виробництва — назва capability, декомпозиція задач, написання сценаріїв, що покривають крайові випадки — і дешеві моделі виробляють поверхневі специфікації. Консенсус спільноти, що збігається з тим, що я бачив у двох продакшен-кодових базах: Opus 4.7 або Codex 5.5 для propose і apply. Менші моделі справляються з archive і validate. Якщо підключиш Haiku-tier модель до /opsx:propose, отримаєш специфікації, які виглядають правдоподібно й пропускають третій крайовий випадок, щоразу. Плати за міркування там, де міркування важливе.

П’ять правил, які я заробив, відвантажуючи з OpenSpec

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

1. openspec validate блокує CI з першого дня, не «потім». Валідація — це spec-еквівалент type-check. Без неї криво сформовані сценарії прослизають у specs/, і через тиждень у тебе «специфікація», що насправді не парситься, а твій spec-to-eval пайплайн мовчки пропускає половину. Додай openspec validate як обов’язковий крок у pre-commit hook і як блокуючу CI-перевірку у перший день, коли впроваджуєш інструмент. Не у другий. У перший.

2. project.md короткий і конкретний, не довгий і aspirational. Це глобальний контекст, який кожен агент читає першим, на кожній сесії. Кеп — 200 рядків. Назви стек («Next.js 16, Tailwind 5, Postgres, Drizzle ORM»). Назви конвенції («ми використовуємо Result-типи, не throw»). Назви заперечення («не використовувати any у TypeScript; не eval; не прямий DB-доступ із хендлерів»). Пропусти маркетинг. Пропусти team mission statement. Агент — не твій інвестор.

3. Архів незмінний. Ніколи не редагуй openspec/changes/archive/*. Стався до нього як до Git-історії. Якщо минуле рішення треба переглянути — пишеш новий proposal, що його перекриває; новий proposal посилається на старий, і архів росте. День, коли хтось відредагує архівований proposal «просто помилку поправити», — це день, коли історія стає ненадійною, а через кілька місяців ти дебажиш регресію і архів тобі бреше. Не треба.

4. Рев’ю spec-дельту, не код-діфф. Це зміна воркфлоу з найвищим важелем, яку я зробив у 2026, і мені знадобилося три тижні її інтерналізувати. Тіло PR має бути proposal’ом, design-summary і spec-дельтою — це те, що читають люди. Код-діфф — це у кращому разі sanity-check. Якщо spec-дельта правильна і код проходить validator і evals, код правильний; якщо spec-дельта неправильна, код теж неправильний, але код був неправильним, бо специфікація була неправильною, і виправлення коду без виправлення специфікації лише відкладає баг. Рев’юери, які читають spec-дельту першою, відвантажують код краще, ніж рев’юери, що читають код першим.

5. Не використовуй OpenSpec для дослідницької роботи. Це та сама обмовка, що в Spec-Driven Development, з подвійною силою. Не можна заспецифікувати те, чого ще не розумієш. Якщо ти в research-фазі — з’ясовуєш, чи спрацює підхід, накидаєш форми API, вчишся модам відмови — пиши код руками, читай вивід, потім видобувай специфікацію з того, що спрацювало. Spec-after, не spec-first. Помилка, яку роблять нові adopter’и, — хапатися за OpenSpec на першому дні research-spike. Так і виходять п’ятдесятирядкові специфікації на штуку, що через два дні виявиться трьома різними штуками. Використовуй його для відомої роботи, не для невідомої.

Де це все-таки ламається

Чесний облік. Я продавав би тобі інструмент, не методологію, якби зупинився на правилах.

  • Сильно візуальна / animation-heavy робота не вписується в GIVEN / WHEN / THEN чисто. Зберігай visual-regression-сьют. OpenSpec — для поведінкового шару, не естетичного.
  • Research-фаза коду як і раніше краще пишеться руками зі spec-after-extraction. Не борися з цим.
  • Дешеві setup’и моделей дають поверхневі специфікації. Якщо твій AI-бюджет — haiku-tier по всьому фронту, тобі самому доведеться писати сценарії, що ловлять крайові випадки, і інструмент перетворюється на гальмо замість мультиплікатора. Плати за high-reasoning модель там, де це важливо — propose, apply, validate. Економ на archive, якщо треба.
  • Фрагментація екосистеми реальна. SpecKit, Kiro, BMAD, Antigravity, Tessl і OpenSpec усі хочуть бути SDD-фреймворком, який ти впровадиш, і вони не інтероперують чисто. Обери один. Закомить команду на нього. Switching costs вищі, ніж доки визнають; ти не просто вчиш CLI, ти кодуєш усю change-дисципліну команди у форму інструмента.
  • Телеметрія — opt-out, не off-by-default. OpenSpec збирає анонімізовані імена команд і версії, якщо не виставити OPENSPEC_TELEMETRY=0 або DO_NOT_TRACK=1. Більшості команд це норм. Командам у регульованих середовищах або з жорсткими data-handling політиками — це однорядковий конфіг у shell-профіль і CI, але про це треба знати.
  • Brownfield retrofitting працює, але не безкоштовно. Рекламований воркфлоу «попроси AI зворотно-інженерити специфікації з твого коду» працює — я використовував його на кодовій базі у шість тисяч файлів — але перший прохід дає descriptive-специфікації, не prescriptive. Вони кажуть, що код робить, не що має робити. Потім потрібен другий прохід із людиною в петлі, щоб конвертувати descriptive-специфікації в кодуючі реальний намір. Плануй це. Не відвантажуй специфікації першого проходу як джерело істини.

Чесна рамка: OpenSpec — правильний інструмент для дев’яноста відсотків роботи у зрілій 2026-кодовій базі, і ті десять відсотків, що лишаються, важать. Сеньйорний інженер — той, хто вміє розрізняти.

Кар’єрний кут

«Покажи свій eval-сьют» — це питання, яке я почав ставити на AI-інженерних співбесідах цього року. «Покажи свій OpenSpec-воркфлоу» — або SpecKit, або Kiro, але якусь SDD-операційну модель з реальною формою — це питання, що до нього приєдналося в останні два місяці. Якість відповіді каже про кандидата більше, ніж будь-який інший одиничний сигнал.

Ринок ще не запрайсив це. Інженери, здатні артикулювати когерентну spec-driven операційну модель — що живе у project.md, а що ні, де межі змін, як зсувається PR-рев’ю, як інтегруються evals — все ще single-digit відсоток кандидатського пулу, який я бачу. Премія компресуватиметься в міру становлення дисципліни стандартною практикою, тим самим шляхом, що юніт-тестування стандартизувалося між 2005 і 2015. Моя оцінка — вісімнадцять місяців до того, як fluency у якомусь flavor SDD стане table stakes для сеньйорних AI-інженерних ролей.

80/20, якщо не читати більше нічого: візьми продакшен AI-фічу, якою володієш. Впровади OpenSpec на ній цього тижня. Ретрофітни специфікації для існуючої поведінки в два проходи — спочатку descriptive, потім human-edited prescriptive. Прожени один повний proposal-to-archive цикл на реальній зміні. За тиждень виявиш, що у твоєму старому воркфлоу було три місця, де ти гадав — про намір, про скоуп, про те, хто має що верифікувати — і OpenSpec перетворив усі три на файли, на які можна тицьнути пальцем. Це відкриття — увесь навик.

Глибша думка

Урок не в тому, щоб «використовувати OpenSpec». Урок у тому, що коли в методології з’являється такий хороший інструмент, люди, які вже розуміли методологію, компаундять свій важіль удесятеро, а ті, хто не розумів, отримують можливість вивчити методологію, використовуючи інструмент. Ця асиметрія — кар’єрна історія інженерії 2026.

Spec-driven development був філософією три роки тому. Став практикою у 2025. У 2026 стає операційною системою, і OpenSpec — найлегша відвантажена на сьогодні реалізація цієї системи. Цікаве питання більше не «чи варто займатися spec-driven development?». Це «яку SDD-операційну модель я комічу своїй команді, і наскільки швидко можу ретрофітнути кодову базу, яку вже маю?»

Якщо хочеш глибше, курси нижче покривають частини дисципліни, які я викладаю найчастіше: Claude Code Mastery: Agentic Coding for Engineers — щоденний slash-command воркфлоу всередині інструмента, що найкраще париться з OpenSpec, Building Agents with the Claude Agent SDK — побудова агентів, що споживають специфікації як first-class входи й виробляють як виходи, Building MCP Servers & AI Tool Integrations — розширення OpenSpec-воркфлоу через MCP-обслуговувані capability, і Building LLM-Powered Apps: RAG & Agents — проводка GIVEN / WHEN / THEN сценаріїв з твоїх специфікацій у робочий evals-харнес на продакшен-трафіку.

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

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

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

Просунутий 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-ритуали, що приживаються.

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

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

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

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

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

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

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

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

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

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

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

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

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

Побудова LLM-застосунків: RAG та агенти

Будуйте production AI-застосунки на основі великих мовних моделей. Vector databases, RAG, автономні агенти, виклик інструментів, оцінка та патерни деплою.

Дізнатися більше →
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 до інструментів — це найкраще першоджерело.

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