Skip to content

Configurazione del progetto (config.yaml) ​

Ogni campo di openspec/config.yaml: lo schema, il contesto e le regole con cui questo progetto opera.

Posizione ​

Ogni progetto OpenSpec mantiene il proprio file di configurazione in openspec/config.yaml, nella radice del progetto.

Campi ​

ChiaveTipoObbligatorioEffetto
schemastringSìLo schema di flusso di lavoro seguito dalle modifiche di questo progetto
contextstringNoIniettato in ogni artefatto, apply e archive
rulesmap: artifact ID → list of stringsNoRegole aggiuntive alla guida integrata di un artefatto
operationsmap: operation → guidance listNoGuida consulenziale per il lavoro di apply e archive
storestringNoRoot OpenSpec di riserva quando questo openspec/ è solo configurazione
referenceslistNoStore le cui specifiche sono indicizzate nelle istruzioni

I campi non validi non causano mai il fallimento di un comando. Ogni campo viene validato singolarmente e un valore errato viene scartato con un avviso. Un file che non può essere letto o che non è YAML valido viene ignorato con un avviso, tranne che da openspec validate, che termina con codice 1 affinché la CI lo rilevi.

Cosa scrivere in questi campi è trattato in Configurazione del progetto.

schema ​

Lo schema di flusso di lavoro seguito da ogni modifica in questo progetto. I valori validi sono spec-driven o un nome di schema definito dal progetto. Esegui openspec schemas per elencare i nomi di schema disponibili.

context ​

Testo libero iniettato nelle istruzioni di ogni artefatto e fornito ad apply e archive. Il limite è 50KB e un valore più grande viene ignorato con un avviso.

rules ​

Regole aggiuntive per un artefatto, aggiunte alla guida integrata dello schema:

yaml
rules:
  proposal:
    - Keep proposals under 500 words

Gli ID degli artefatti non sono limitati ai nomi integrati, quindi gli artefatti di schemi personalizzati funzionano come chiavi.

operations ​

Guida consulenziale su come viene condotto il lavoro di apply e archive, separata dalle regole degli artefatti:

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

Vengono letti solo apply e archive.

store ​

Uno store id usato come root OpenSpec, consultato solo quando questa directory openspec/ è solo configurazione (nessuna specs/ o changes/). È una riserva, mai una sostituzione. La sequenza completa è Root resolution.

references ​

Store id le cui specifiche sono utilizzate dal lavoro di questo progetto. Un indice delle specifiche di ogni store (id, riepilogo, comando di recupero) viene aggiunto all'output delle istruzioni. Il contenuto delle specifiche non viene mai inserito inline e la risoluzione della root non viene mai influenzata. Una voce è uno store id o una mappa con id e una sorgente di clone remote opzionale:

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

Esempio ​

Un config.yaml compilato:

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

Nomi legacy ​

openspec/config.yml viene letto come alias quando config.yaml non esiste. Quando entrambi i file esistono, config.yaml ha la precedenza e config.yml viene ignorato. openspec init crea config.yaml.