Конфигурация проекта (config.yaml)
Каждое поле openspec/config.yaml: схема, контекст и правила, по которым планируется работа в этом проекте.
Расположение
Каждый проект OpenSpec хранит свой файл конфигурации в openspec/config.yaml, в корне проекта.
Поля
| Ключ | Тип | Обязательно | Действие |
|---|---|---|---|
schema | string | Да | Схема рабочего процесса, которой следуют изменения в этом проекте |
context | string | Нет | Внедряется в каждый артефакт, apply и archive |
rules | map: artifact ID → list of strings | Нет | Дополнительные правила, добавляемые к встроенным рекомендациям одного артефакта |
operations | map: operation → guidance list | Нет | Рекомендации о том, как выполняется работа apply и archive |
store | string | Нет | Резервный корень OpenSpec, когда этот openspec/ содержит только конфигурацию |
references | list | Нет | Хранилища, спецификации которых индексируются в инструкции |
Некорректные поля никогда не приводят к ошибке команды. Каждое поле валидируется отдельно, а неверное значение отбрасывается с предупреждением. Файл, который невозможно прочитать или который не является корректным YAML, игнорируется с предупреждением, за исключением openspec validate, которая завершается с кодом 1, чтобы CI мог это обнаружить.
Что писать в этих полях, описано в разделе Конфигурация проекта.
schema
Схема рабочего процесса, которой следует каждое изменение в этом проекте. Допустимые значения — spec-driven или имя схемы, определённой проектом. Чтобы получить список доступных имён схем, выполните openspec schemas.
context
Свободный текст, внедряемый в инструкции каждого артефакта и передаваемый в apply и archive. Ограничение — 50 КБ; значение большего размера игнорируется с предупреждением.
rules
Дополнительные правила для одного артефакта, добавляемые к встроенным рекомендациям схемы:
rules:
proposal:
- Keep proposals under 500 wordsИдентификаторы артефактов не ограничены встроенными именами, поэтому артефакты из пользовательских схем также работают как ключи.
operations
Рекомендации о том, как выполняется работа apply и archive, отдельно от правил артефактов:
operations:
apply:
guidance:
- Keep test summaries conciseЧитаются только apply и archive.
store
Идентификатор хранилища, используемый как корень OpenSpec; учитывается только тогда, когда этот каталог openspec/ содержит лишь конфигурацию (нет specs/ или changes/). Это резервный вариант, а не переопределение. Полная последовательность описана в разделе Определение корня.
references
Идентификаторы хранилищ, спецификации которых использует работа этого проекта. Индекс спецификаций каждого хранилища (id, сводка, команда получения) добавляется в вывод инструкций. Содержимое спецификаций никогда не встраивается, и определение корня никогда не затрагивается. Запись — это идентификатор хранилища либо map с id и необязательным источником клонирования remote:
references:
- platform-specs
- id: billing-specs
remote: git@github.com:acme/billing-specs.gitПример
Заполненный config.yaml:
schema: spec-driven
context: |
Designs and tasks must cover Windows, macOS, and Linux
Write all artifacts in Spanish
rules:
proposal:
- Keep proposals under 500 words
- Always state what is out of scope
tasks:
- Break tasks into chunks of max 2 hours
operations:
apply:
guidance:
- Keep test summaries concise
archive:
guidance:
- Summarize the archive outcome before finishingУстаревшие имена
openspec/config.yml читается как псевдоним, когда config.yaml не существует. Если существуют оба файла, побеждает config.yaml, а config.yml игнорируется. openspec init создаёт config.yaml.