Skip to content

Конфигурация проекта (config.yaml) ​

Каждое поле openspec/config.yaml: схема, контекст и правила, по которым планируется работа в этом проекте.

Расположение ​

Каждый проект OpenSpec хранит свой файл конфигурации в openspec/config.yaml, в корне проекта.

Поля ​

КлючТипОбязательноДействие
schemastringДаСхема рабочего процесса, которой следуют изменения в этом проекте
contextstringНетВнедряется в каждый артефакт, apply и archive
rulesmap: artifact ID → list of stringsНетДополнительные правила, добавляемые к встроенным рекомендациям одного артефакта
operationsmap: operation → guidance listНетРекомендации о том, как выполняется работа apply и archive
storestringНетРезервный корень OpenSpec, когда этот openspec/ содержит только конфигурацию
referenceslistНетХранилища, спецификации которых индексируются в инструкции

Некорректные поля никогда не приводят к ошибке команды. Каждое поле валидируется отдельно, а неверное значение отбрасывается с предупреждением. Файл, который невозможно прочитать или который не является корректным YAML, игнорируется с предупреждением, за исключением openspec validate, которая завершается с кодом 1, чтобы CI мог это обнаружить.

Что писать в этих полях, описано в разделе Конфигурация проекта.

schema ​

Схема рабочего процесса, которой следует каждое изменение в этом проекте. Допустимые значения — spec-driven или имя схемы, определённой проектом. Чтобы получить список доступных имён схем, выполните openspec schemas.

context ​

Свободный текст, внедряемый в инструкции каждого артефакта и передаваемый в apply и archive. Ограничение — 50 КБ; значение большего размера игнорируется с предупреждением.

rules ​

Дополнительные правила для одного артефакта, добавляемые к встроенным рекомендациям схемы:

yaml
rules:
  proposal:
    - Keep proposals under 500 words

Идентификаторы артефактов не ограничены встроенными именами, поэтому артефакты из пользовательских схем также работают как ключи.

operations ​

Рекомендации о том, как выполняется работа apply и archive, отдельно от правил артефактов:

yaml
operations:
  apply:
    guidance:
      - Keep test summaries concise

Читаются только apply и archive.

store ​

Идентификатор хранилища, используемый как корень OpenSpec; учитывается только тогда, когда этот каталог openspec/ содержит лишь конфигурацию (нет specs/ или changes/). Это резервный вариант, а не переопределение. Полная последовательность описана в разделе Определение корня.

references ​

Идентификаторы хранилищ, спецификации которых использует работа этого проекта. Индекс спецификаций каждого хранилища (id, сводка, команда получения) добавляется в вывод инструкций. Содержимое спецификаций никогда не встраивается, и определение корня никогда не затрагивается. Запись — это идентификатор хранилища либо map с id и необязательным источником клонирования remote:

yaml
references:
  - platform-specs
  - id: billing-specs
    remote: git@github.com:acme/billing-specs.git

Пример ​

Заполненный config.yaml:

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.