Навички
Усі навички OpenSpec: аргументи, що вони створюють і що повертають.
Навички поділяються на два набори:
- Core: встановлюються за замовчуванням, є основним циклом планування.
- Optional: встановлюються лише тоді, коли ви додаєте їх через Профілі.
Кожна навичка очікує, що проект уже використовує OpenSpec. Перед першим кроком, який щось записує, навичка перевіряє наявність визначеного кореня. Те, що станеться, якщо його немає, залежить від того, як було викликано навичку:
- Автовибір: ваш агент самостійно обрав цю навичку без прямого згадування OpenSpec вами. Він ігнорує OpenSpec і відповідає на ваше запитання у звичайному режимі, ніби OpenSpec не встановлено.
- Явне звернення до OpenSpec: ви згадали OpenSpec, назвали конкретну навичку або запустили її команду. Вона зупиняється перед записом і запитує, як продовжити: запустити
openspec initтут, вказати сховище за допомогою--store <id>або продовжити без OpenSpec. Вона чекає на вашу відповідь.
Команди завжди потрапляють у другий випадок. Проект, у якому openspec/config.yaml вказує сховище, яке цей комп’ютер не може розпізнати (не зареєстроване або рядок store: має неправильний формат), не вважається неініціалізованим: навичка зупиняється і показує помилку сховища разом із підказкою щодо виправлення. Жодна навичка сама по собі не створює каталог openspec/ у жодному з цих випадків. Нижче описано, що робить кожна навичка, коли корень вже налаштовано.
| Навичка | Завдання | Тип |
|---|---|---|
| openspec-explore | Проаналізувати ідею перед тим, як вона стане пропозицією зміни | Core |
| openspec-propose | Створити пропозицію зміни зі всіма артефактами планування за один крок | Core |
| openspec-apply-change | Реалізувати завдання з пропозиції зміни | Core |
| openspec-update-change | Оновити план пропозиції зміни | Core |
| openspec-sync-specs | Об’єднати оновлення специфікацій із пропозиції зміни в specs/ | Core |
| openspec-archive-change | Перемістити завершену пропозицію зміни до архіву | Core |
| openspec-new-change | Почати пропозицію зміни як порожній каркас | Optional |
| openspec-continue-change | Створити наступний артефакт планування по одному | Optional |
| openspec-ff-change | Створити пропозицію зміни з усіма артефактами, необхідними для реалізації, за один прохід | Optional |
| openspec-verify-change | Перевірити, чи реалізація відповідає плану | Optional |
| openspec-bulk-archive-change | Архівувати кілька пропозицій зміни одночасно | Optional |
| openspec-onboard | Опанувати робочий процес, виконавши одну реальну пропозицію зміни від початку до кінця | Optional |
Кожен нижче наведений пункт називає навичку, яка відповідає за наступний крок. Якщо ваш профіль не включає цю навичку, встановлені файли ніколи не згадують її: передача виконання відбувається через еквівалентну команду openspec або простий запит до вас, а рядок, який існує лише для вказівки на відсутню навичку, взагалі не пишеться. Тому ваші навички завжди передають виконання іншим наявним у вас навичкам. Який саме набір ви отримаєте, залежить від Профілів.
openspec-explore
Обміркуйте ідею, перш ніж вона стане пропозицією змін.
| Контракт | Опис |
|---|---|
| Аргументи | Тема: ідея, проблема, порівняння або назва наявної пропозиції змін, яку потрібно дослідити в контексті. Якщо нічого не надано, переходить у режим дослідження. |
| Створює | За замовчуванням нічого. Лише читає й досліджує. На запит фіксує висновки: нову пропозицію змін у openspec/changes/<name>/ або оновлення пропозиції, дизайну, специфікацій чи завдань наявної пропозиції змін. Ніколи не створює код. |
| Відповідь | Відкрита розмова без обов’язкового результату. Коли думки набувають чіткості, підсумовує проблему, підхід, відкриті питання й наступні кроки та пропонує їх зафіксувати. Ви вирішуєте. Реалізація ніколи не починається тут. |
openspec-propose
Створіть пропозицію змін і згенеруйте всі її артефакти планування за один крок.
| Контракт | Опис |
|---|---|
| Аргументи | Назва в kebab-case (add-dark-mode) або простий опис. Якщо ви не надали ні назви, ні опису, запитує. |
| Створює | openspec/changes/<name>/ з усіма артефактами, які визначає схема, у порядку залежностей (керований специфікаціями: пропозиція, дельти специфікацій, дизайн, завдання). Ніколи не створює код. |
| Відповідь | Створені артефакти, готові до перегляду, і наступний крок. На цьому зупиняється; реалізація чекає на openspec-apply-change. |
openspec-apply-change
Реалізуйте завдання пропозиції змін, просуваючись списком, доки їх не буде виконано або не виникне блокування.
| Контракт | Опис |
|---|---|
| Аргументи | Назва пропозиції змін (add-auth), необов’язково. Якщо ціль неоднозначна, перелічує активні пропозиції змін і просить вибрати. |
| Створює | Код: мінімальні зміни, потрібні для кожного завдання, у файлах вашого проєкту. У пропозиції змін позначає кожне виконане завдання (- [ ] на - [x]) у відстежуваному файлі, визначеному sourcePath і line з відліком від одиниці. Схема може відстежувати завдання в кількох файлах. |
| Відповідь | Прогрес за кожним завданням, потім загальний підсумок (N/M завдань виконано). Усе виконано: пропонує openspec-archive-change. Заблоковано через відсутні артефакти: вказує на openspec-continue-change або на openspec status та openspec instructions, якщо цей скіл не встановлено (базовий профіль його не включає). Нечіткі завдання або помилки: зупиняється й запитує. |
openspec-update-change
Перегляньте наявні артефакти планування пропозиції змін і підтримуйте їхню узгодженість між собою.
| Контракт | Опис |
|---|---|
| Аргументи | Назва пропозиції змін, необов’язково, а також бажана редакція. Якщо редакцію не вказано, виконує перевірку узгодженості: артефакти перевіряються один проти одного на суперечності, прогалини й дублювання. |
| Створює | Редагує файли артефактів, які вже існують. Один виняток: для артефакту, записаного як glob, наприклад specs/**/*.md, який уже має принаймні один файл, може додати відсутній супутній файл після вашого підтвердження шляху. Артефакт, що ще не має файлів, — це завдання для openspec-continue-change. Без цього скіла (базовий профіль його не включає) вказує на openspec status та openspec instructions. Ніколи не створює код. |
| Відповідь | Показує кожну запропоновану редакцію й записує її лише після вашого підтвердження, по одному артефакту за раз. Завершується описом того, що було відредаговано, і наступним кроком; реалізація чекає на openspec-apply-change. |
openspec-sync-specs
Об’єднайте оновлення специфікацій пропозиції змін із specs/, не архівуючи її.
| Контракт | Опис |
|---|---|
| Аргументи | Назва пропозиції змін, необов’язково. Також можна вказати підмножину її дельт специфікацій, і синхронізуватимуться лише вони. |
| Створює | Редагує або створює openspec/specs/<capability-path>/spec.md для кожної дельти специфікації, об’єднуючи додані, змінені, вилучені й перейменовані вимоги в основну специфікацію. Ніколи не створює код. |
| Відповідь | Підсумок за кожною можливістю щодо доданих, змінених, вилучених або перейменованих вимог після валідації оновлених специфікацій. Пропозиція змін залишається активною; архівування чекає на openspec-archive-change. |
openspec-archive-change
Перемістіть завершену пропозицію змін до архіву.
| Контракт | Опис |
|---|---|
| Аргументи | Назва пропозиції змін, необов’язково. |
| Створює | Переміщує папку пропозиції змін до openspec/changes/archive/YYYY-MM-DD-<name>/ (дата не додається, якщо назва вже починається з неї). З вашого схвалення спершу синхронізує незавершені дельти специфікацій. Якщо openspec-sync-specs встановлено, запускає цей робочий процес. Інакше сам об’єднує дельти специфікацій в основні специфікації. Ніколи не створює код. |
| Відповідь | Попереджає й запитує перед архівуванням із незавершеними артефактами або завданнями, а також запитує, чи синхронізувати, якщо є дельти специфікацій. Завершується підсумком: назва, схема, місце архівування, стан синхронізації специфікацій і будь-які попередження. |
openspec-new-change
Розпочніть пропозицію змін як порожній каркас.
| Контракт | Опис |
|---|---|
| Аргументи | Назва в kebab-case (add-user-auth) або простий опис, а також назва схеми лише для робочого процесу, відмінного від типового. Якщо ви не надали ні назви, ні опису, запитує, що ви хочете створити. |
| Створює | openspec/changes/<name>/ як порожній каркас: артефактів ще немає, код ніколи не створюється. |
| Відповідь | Назва й розташування каркаса, послідовність артефактів робочого процесу, стан (0/N виконано) і шаблон першого артефакту. Підготовка артефактів чекає на openspec-continue-change. |
openspec-continue-change
Створіть наступний артефакт планування в пропозиції змін, по одному за раз.
| Контракт | Опис |
|---|---|
| Аргументи | Назва пропозиції змін, необов’язково. Якщо все ще неоднозначно, просить вибрати з-поміж тих, що змінювалися останніми. |
| Створює | Єдиний наступний готовий артефакт у послідовності схеми, записаний у папку пропозиції змін. Один артефакт за запуск, код ніколи не створюється. |
| Відповідь | Створений артефакт, прогрес (N з M виконано) і артефакти, які це розблокувало. Коли планування завершено, повідомляє про це; реалізація переходить до openspec-apply-change. |
openspec-ff-change
Створіть пропозицію змін і всі артефакти планування, потрібні для реалізації, за один прохід.
| Контракт | Опис |
|---|---|
| Аргументи | Назва в kebab-case або простий опис. Якщо ви не надали ні назви, ні опису, запитує. Якщо названа пропозиція змін уже існує, пропонує натомість продовжити її. |
| Створює | openspec/changes/<name>/ і всі артефакти планування, потрібні для реалізації, у порядку залежностей (керований специфікаціями: пропозиція, специфікації, дизайн, завдання), пропускаючи лише артефакти, позначені як пропущені або умовні. Код ніколи не створюється. |
| Відповідь | Назва й розташування пропозиції змін, кожен створений артефакт, а також будь-який пропущений умовний артефакт і причина. На цьому зупиняється; реалізація чекає на openspec-apply-change. |
openspec-verify-change
Перевірте, чи відповідає реалізація артефактам пропозиції змін.
| Контракт | Опис |
|---|---|
| Аргументи | Назва пропозиції змін, необов’язково. Якщо неоднозначно, запитує, перелічуючи пропозиції змін, які мають артефакт завдань. |
| Створює | Нічого. Читає артефакти пропозиції змін і кодову базу. Перевірка лише формує звіт. |
| Відповідь | Звіт: картка оцінки за Повнотою, Правильністю й Узгодженістю, потім проблеми рівня CRITICAL, WARNING і SUGGESTION з рекомендаціями та підсумкова оцінка готовності до архівування. Нічого не змінює й не архівує. |
openspec-bulk-archive-change
Архівуйте кілька пропозицій змін одночасно.
| Контракт | Опис |
|---|---|
| Аргументи | Немає. Перелічує активні пропозиції змін і просить вибрати будь-яку кількість, з опцією «усі». Якщо активних немає, повідомляє про це й зупиняється. |
| Створює | openspec/changes/archive/YYYY-MM-DD-<name>/ для кожної архівованої пропозиції змін (назви, що вже мають дату, зберігають свій префікс). Дельти специфікацій кожної спершу синхронізуються через openspec-sync-specs. Код ніколи не створюється. |
| Відповідь | Таблиця стану для кожної пропозиції змін і одне підтвердження для всього пакета, потім підсумок архівованих, пропущених і невдалих, а також результати синхронізації специфікацій. Коли дві пропозиції змін торкаються однієї специфікації, перевіряє кодову базу й синхронізує реалізовані дельти від найстаріших до найновіших. |
openspec-onboard
Опануйте робочий процес, виконавши одну реальну пропозицію змін від початку до кінця.
| Контракт | Опис |
|---|---|
| Аргументи | Немає. Сканує вашу кодову базу на невеликі початкові завдання й просить вибрати одне або описати власне. |
| Створює | Реальну пропозицію змін для вибраного завдання, по одному артефакту за раз, потім реальний код після вашого підтвердження реалізації. Наприкінці архівує пропозицію змін. |
| Відповідь | Покроковий огляд із поясненнями повного циклу з паузами для вашого введення: дослідження, створення, побудова кожного артефакту, реалізація, архівування. Завершується коротким підсумком і посиланням на openspec-propose. Займає приблизно 15–20 хвилин. |