Configuração do projeto (config.yaml)
Cada campo do openspec/config.yaml: o esquema, contexto e regras com os quais este projeto planeja.
Localização
Cada projeto OpenSpec mantém seu arquivo de configuração em openspec/config.yaml, na raiz do projeto.
Campos
| Chave | Tipo | Obrigatório | Efeito |
|---|---|---|---|
schema | string | Sim | O esquema de fluxo de trabalho que as alterações deste projeto seguem |
context | string | Não | Injetado em cada artefato, aplicação e arquivamento |
rules | mapa: ID do artefato → lista de strings | Não | Regras extras adicionadas às orientações incorporadas de um artefato |
operations | mapa: operação → lista de orientações | Não | Orientação consultiva para trabalhos de aplicação e arquivamento |
store | string | Não | Raiz OpenSpec de fallback quando este openspec/ é apenas de configuração |
references | lista | Não | Armazéns cujas especificações são indexadas nas instruções |
Campos inválidos nunca causam falha em um comando. Cada campo é validado isoladamente, e um valor inválido é descartado com um aviso. Um arquivo que não pode ser lido ou não é YAML válido é ignorado com um aviso, exceto pelo comando openspec validate, que sai com código 1 para que a CI o detecte.
O que escrever nesses campos está coberto em Configuração do projeto.
schema
O esquema de fluxo de trabalho que cada alteração neste projeto segue. Os valores válidos são spec-driven ou um nome de esquema que o projeto define. Execute openspec schemas para listar os nomes de esquema disponíveis.
context
Texto livre injetado nas instruções de cada artefato e fornecido para aplicação e arquivamento. O limite é de 50 KB, e um valor maior é ignorado com um aviso.
rules
Regras extras para um artefato, adicionadas às orientações incorporadas do esquema:
rules:
proposal:
- Keep proposals under 500 wordsOs IDs de artefato não estão restritos aos nomes incorporados, portanto artefatos de esquemas personalizados também funcionam como chaves.
operations
Orientação consultiva sobre como o trabalho de aplicação e arquivamento é conduzido, separada das regras de artefato:
operations:
apply:
guidance:
- Keep test summaries conciseApenas apply e archive são lidos.
store
Um ID de armazém usado como raiz OpenSpec, consultado apenas quando este diretório openspec/ é apenas de configuração (sem specs/ ou changes/). É um fallback, nunca uma substituição. A escada completa é Resolução de raiz.
references
IDs de armazéns cujas especificações o trabalho do projeto utiliza. Um índice das especificações de cada armazém (id, resumo, comando de obtenção) é adicionado à saída das instruções. O conteúdo da especificação nunca é incorporado, e a resolução de raiz nunca é afetada. Uma entrada pode ser um ID de armazém ou um mapa com id e uma fonte remote opcional para clone:
references:
- platform-specs
- id: billing-specs
remote: git@github.com:acme/billing-specs.gitExemplo
Um config.yaml preenchido:
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 finishingNomes legados
openspec/config.yml é lido como um alias quando config.yaml não existe. Quando ambos os arquivos existem, config.yaml prevalece e config.yml é ignorado. O comando openspec init cria config.yaml.