Приклади та рецепти
Реальні зміни, від початку до кінця. Кожен рецепт показує команди, які ви вводите, і те, що ви побачите у відповідь, щоб ви могли зіставити свою ситуацію з шаблоном і скопіювати його. Тут використовуються стандартні основні команди (propose, explore, apply, update, sync, archive); там, де допомагає розширений набір, це зазначено.
Нагадування перед початком: слеш-команди, як-от /opsx:propose, вводяться у чат AI-асистента, а команди openspec — у терміналі. Якщо це для вас нове, спочатку прочитайте Як працюють команди. У наведених нижче транскриптах You: і AI: — це чат, а рядки, що починаються з $, — термінал.
Ще не впевнені, що саме будуєте? Більшість цих рецептів стають гострішими, якщо спочатку скористатися
/opsx:explore, щоб обміркувати ідею. Рецепт 3 показує це в дії, а посібник Спочатку дослідіть наводить усі аргументи.
Рецепт 1: Невелика функція, швидкий шлях
Коли використовувати: ви знаєте, чого хочете, і це автономний шматок роботи. Це найпоширеніший рецепт.
Весь процес — це три команди. Запропонуйте, реалізуйте, заархівуйте.
You: /opsx:propose add-logout-button
AI: Створено openspec/changes/add-logout-button/
✓ proposal.md — чому і що
✓ specs/ — нова вимога та її сценарії
✓ design.md — технічний підхід
✓ tasks.md — контрольний список реалізації
Готово до реалізації. Запустіть /opsx:apply.Тепер прочитайте план. Відкрийте пропозицію та дельта-специфікацію. Це саме той момент, для якого створено OpenSpec: виявити неправильне припущення, поки воно ще є одним абзацом, а не 400 рядками коду. Якщо щось не так, відредагуйте будь-який артефакт безпосередньо, а потім продовжуйте.
You: /opsx:apply
AI: Виконую завдання...
✓ 1.1 Додати кнопку виходу до заголовка
✓ 1.2 Очищати сесію після натискання
✓ 1.3 Додати діалог підтвердження
Усі завдання виконано!
You: /opsx:archive
AI: Архівую add-logout-button...
✓ Специфікації об'єднано в openspec/specs/auth/spec.md
✓ Переміщено до openspec/changes/archive/2026-06-22-add-logout-button/
Готово. Можна братися за наступну зміну.Ось і все. Поведінка виходу тепер є частиною ваших специфікацій, а зміна з усім контекстом зберігається в архіві.
Рецепт 2: Виправлення помилки
Коли використовувати: щось зламалося, і ви хочете, щоб виправлення було задокументовано як свідому зміну поведінки, а не як незрозумілий коміт.
Виправлення помилок працюють так само, як функції. Різниця в тому, як ви формулюєте пропозицію: опишіть правильну поведінку, а не просто «виправити помилку».
You: /opsx:propose fix-login-redirect-loop
AI: Створено openspec/changes/fix-login-redirect-loop/
Пропозиція фіксує поточну неправильну поведінку та бажану
поведінку. Дельта-специфікація МОДИФІКУЄ вимогу до
перенаправлення, роблячи її точною та придатною для тестування.
Готово до реалізації.Оскільки виправлення потрапляє як MODIFIED вимога з новим сценарієм, наступна людина (або наступний AI-сеанс) бачить не лише те, що ви виправили, а й що означає «правильно». Потім /opsx:apply та /opsx:archive як зазвичай.
Порада: для виправлення гарний сценарій — це регресійний тест, описаний прозою. «GIVEN незалогінений користувач, WHEN він надсилає дійсні облікові дані, THEN він потрапляє на панель керування і не перенаправляється знову». Напишіть це, і реалізація отримає чітку ціль.
Рецепт 3: Дослідження перед тим, як взятися до роботи
Коли використовувати: у вас є проблема, але ще немає плану. Ви не впевнені, що будувати, або який підхід правильний.
Почніть із /opsx:explore. Це партнер для роздумів без жодної структури та створення артефактів. Він читає вашу кодову базу і допомагає вирішити.
You: /opsx:explore
AI: Що ви хочете дослідити?
You: Завантаження сторінок здається повільним, але я не знаю, куди йде час.
AI: Давайте подивимося... Я знайшов три ймовірні причини:
1. Великі неоптимізовані зображення на сторінці списку товарів
2. Синхронне отримання даних, яке блокує рендеринг
3. Повторні рендеринги, спричинені змінами контексту
З якої почати?
You: З отримання даних.
You: /opsx:propose optimize-product-list-fetching
AI: Створено зміну з пропозицією, яка враховує те, що ми щойно
знайшли. Готово до реалізації.Дослідження прояснює ваше мислення до того, як ви витратите на це окрему зміну. Коли розуміння викристалізується, запропонуйте, і AI перенесе контекст далі.
Рецепт 4: Жонглювання двома змінами одночасно
Коли використовувати: ви в середині функції, а термінове виправлення перестрибує чергу.
Зміни — це незалежні папки, тому паралельна робота не конфліктує. Почніть виправлення, відвантажте його, а потім поверніться до функції там, де зупинилися.
You: Я на півдорозі до add-dark-mode, але зараз потрібно виправити помилку входу.
You: /opsx:propose fix-login-redirect
AI: Створено openspec/changes/fix-login-redirect/. Готово до реалізації.
You: /opsx:apply
AI: Виправлення реалізовано. Усі завдання виконано.
You: /opsx:archive
AI: ✓ Заархівовано fix-login-redirect.
You: Повертаюся до темної теми.
You: /opsx:apply add-dark-mode
AI: Відновлюю add-dark-mode. Продовжую з завдання 2.3: Оновити заголовок...Вказуючи назву зміни в /opsx:apply add-dark-mode, ви спрямовуєте AI на конкретну зміну, коли їх активно кілька. Оскільки завдання відстежують завершення в tasks.md, AI точно знає, на чому ви зупинилися.
Коли кілька змін завершуються одночасно, розширена команда /opsx:bulk-archive архівує їх разом і вирішує конфлікти специфікацій, перевіряючи, що фактично реалізовано. Див. Робочі процеси.
Рецепт 5: Рефакторинг без зміни поведінки
Коли використовувати: ви переструктуровуєте код, а зовнішньо видима поведінка повинна залишатися незмінною.
Це цікавий випадок, оскільки чистий рефакторинг нічого не додає до ваших специфікацій. Контракт поведінки не змінюється; змінюється лише реалізація. Тому робота зосереджується в дизайні та завданнях, а дельта-специфікація порожня або відсутня.
You: /opsx:propose refactor-payment-module
AI: Створено зміну. Пропозиція визначає мету (розділити
платіжний модуль, без зміни поведінки), а дизайн фіксує
нову структуру. Жодних змін специфікацій, оскільки поведінка ідентична.
Готово до реалізації.Оголосіть порожню дельту явно, встановивши skip_specs: true у .openspec.yaml зміни:
schema: spec-driven
skip_specs: trueБез цього маркера openspec validate відхиляє зміну з нульовою кількістю дельт (тому пропущений етап специфікацій все одно буде виявлено); з ним валідація проходить, а openspec status показує етап специфікацій як явно пропущений, а не як очікуваний. Якщо з'ясується, що рефакторинг все ж змінює поведінку, видаліть skip_specs з .openspec.yaml і напишіть дельта-специфікації — валідація розглядає маркер разом з файлами специфікацій як конфлікт, тому застарілий маркер не може залишатися непоміченим.
Архівування зміни з маркером не потребує додаткових прапорців (немає дельт для об'єднання). Незалежно від цього, прапорець --skip-specs вказує термінальній команді явно пропустити крок специфікацій:
$ openspec archive refactor-payment-module --skip-specsЦей самий прапорець стане в пригоді для інструментів, CI та змін лише в документації. Принцип: специфікації описують поведінку, тому якщо поведінка не змінилася, специфікація теж не повинна. Див. Концепції.
Рецепт 6: Покроковий контроль (розширені команди)
Коли використовувати: складна або ризикована зміна, де ви хочете переглянути кожен артефакт перед тим, як рухатися далі.
Основна команда /opsx:propose формує чернетку всього одразу. Якщо ви віддаєте перевагу проходити крок за кроком, увімкніть розширені команди:
$ openspec config profile # вибрати розширені робочі процеси
$ openspec update # застосувати їх до цього проєктуТепер ви можете створювати каркас і будувати поступово:
You: /opsx:new add-2fa
AI: Створено openspec/changes/add-2fa/. Готово до створення: proposal.
You: /opsx:continue
AI: Створено proposal.md. Тепер доступні: specs, design.
You: /opsx:continue
AI: Створено specs/auth/spec.md. Тепер доступний: design.Переглядайте кожен артефакт одразу після створення, вільно редагуйте та продовжуйте, коли задоволені. Якщо ви хочете, щоб решта артефактів планування була створена однією командою, /opsx:ff прискорено проходить через них. Перед архівуванням /opsx:verify перевіряє, чи реалізація дійсно відповідає специфікаціям. Див. Робочі процеси.
Рецепт 7: Практичне вивчення всього циклу
Коли використовувати: ви встановили OpenSpec і хочете відчути робочий процес на власному коді, а не на іграшковому прикладі.
Увімкніть розширені команди (див. Рецепт 6), а потім:
You: /opsx:onboard
AI: Ласкаво просимо до OpenSpec! Я проведу вас через повну зміну,
використовуючи вашу реальну кодову базу. Дозвольте мені пошукати
невелике, безпечне покращення, яке ми можемо зробити разом.../opsx:onboard знаходить реальне (невелике) покращення, створює для нього зміну, реалізує та архівує її, розповідаючи про кожен крок. Це займає від 15 до 30 хвилин і залишає вам реальну зміну, яку можна зберегти або відкинути. Це найм'якший спосіб навчитися. Див. Команди.
Перевірка роботи з терміналу
У будь-який час з терміналу ви можете перевірити стан справ:
$ openspec list # активні зміни
$ openspec show add-dark-mode # одна зміна в деталях
$ openspec validate add-dark-mode # перевірити структуру
$ openspec view # інтерактивна панельЦе інструменти для читання та перевірки. Пропонування та реалізація, як і раніше, відбуваються через слеш-команди в чаті. Детальніше — у довідці CLI.
Куди йти далі
- Спочатку дослідіть: рекомендований спосіб почати, коли ви не впевнені
- Робочі процеси: шаблони вище з порадами, коли який використовувати
- Команди: кожна слеш-команда детально
- Початок роботи: канонічний покроковий приклад першої зміни
- Концепції: чому частини поєднуються саме так