Навыки
Каждый навык OpenSpec: аргументы, что он создаёт и что он возвращает.
Навыки поставляются в двух наборах:
- Core: устанавливаются по умолчанию, основной цикл планирования.
- Optional: устанавливаются только при добавлении через Профили.
Каждый навык ожидает, что проект уже использует OpenSpec. Перед первым шагом, который что-либо записывает, навык проверяет наличие определённого корня. Что происходит, если его нет, зависит от того, как был вызван навык:
- Автоматический выбор: ваш агент выбрал навык самостоятельно, без упоминания OpenSpec. Он отключает OpenSpec и отвечает на ваш запрос обычным образом, так же, как если бы OpenSpec не был установлен.
- Явный запрос OpenSpec: вы упомянули OpenSpec, назвали навык или выполнили его команду. Он останавливается перед записью и спрашивает, как поступить: выполнить
openspec initздесь, указать store через--store <id>или продолжить без OpenSpec. Он ждёт вашего ответа.
Команды всегда относятся ко второму случаю. Проект, чей openspec/config.yaml указывает на store, который эта машина не может определить (не зарегистрирован или некорректная строка store:), не считается неинициализированным: навык останавливается и показывает ошибку 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>/ со всеми артефактами, определёнными схемой, в порядке зависимостей (spec-driven: предложение, дельта-спецификации, дизайн, задачи). Никогда не пишет код. |
| Ответ | Созданные артефакты, готовые к проверке, и следующий шаг. На этом останавливается; реализация ждёт openspec-apply-change. |
openspec-apply-change
Реализуйте задачи предложения изменений, прорабатывая список до завершения или блокировки.
| Контракт | Описание |
|---|---|
| Аргументы | Название предложения изменений (add-auth), необязательно. Если цель неоднозначна, выводит список активных предложений изменений и просит выбрать. |
| Создаёт | Код: минимальные изменения, которых требует каждая задача, в файлах вашего проекта. В предложении изменений отмечает каждую завершённую задачу (- [ ] → - [x]) в отслеживаемом файле, идентифицируемом по sourcePath и номеру строки line (нумерация с единицы). Схема может отслеживать задачи в нескольких файлах. |
| Ответ | Прогресс по каждой задаче, затем общий счётчик (N/M задач выполнено). Все выполнены: предлагает openspec-archive-change. Заблокировано из-за отсутствующих артефактов: указывает на openspec-continue-change или на openspec status и openspec instructions, если этот навык не установлен (в профиле core он отсутствует). Нечёткие задачи или ошибки: приостанавливается и задаёт вопросы. |
openspec-update-change
Пересмотрите существующие артефакты планирования предложения изменений и обеспечьте их согласованность.
| Контракт | Описание |
|---|---|
| Аргументы | Название предложения изменений, необязательно, плюс требуемая ревизия. Если ревизия не указана, запускает проверку согласованности: артефакты сверяются друг с другом на предмет противоречий, пробелов и дублирования. |
| Создаёт | Редактирует уже существующие файлы артефактов. Одно исключение: для артефакта, записанного как glob, например specs/**/*.md, у которого уже есть хотя бы один файл, может добавить отсутствующий сопутствующий файл после подтверждения пути. Артефакт без файлов — это задача openspec-continue-change. Без этого навыка (в профиле core он отсутствует) указывает на 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>/ и все артефакты планирования, необходимые для реализации, в порядке зависимостей (spec-driven: предложение, спецификации, дизайн, задачи), исключая только артефакты, отмеченные как пропущенные или условные. Никогда не пишет код. |
| Ответ | Название и расположение предложения изменений, каждый созданный артефакт и пропущенные условные артефакты с указанием причин. На этом останавливается; реализация ждёт 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 минут. |