Configuration du projet (config.yaml)
Chaque champ de openspec/config.yaml : le schéma, le contexte et les règles avec lesquels ce projet fonctionne.
Emplacement
Chaque projet OpenSpec conserve son fichier de configuration à openspec/config.yaml, à la racine du projet.
Champs
| Clé | Type | Obligatoire | Effet |
|---|---|---|---|
schema | string | Oui | Le schéma de workflow suivi par les changements de ce projet |
context | string | Non | Injecté dans chaque artefact, apply et archive |
rules | map : ID d'artefact → liste de chaînes | Non | Règles supplémentaires ajoutées aux instructions intégrées d'un artefact |
operations | map : opération → liste d'orientations | Non | Orientations consultatives pour le travail d'apply et d'archive |
store | string | Non | Racine OpenSpec de secours lorsque ce répertoire openspec/ est uniquement de configuration |
references | list | Non | Stores dont les specs sont indexées dans les instructions |
Les champs invalides ne font jamais échouer une commande. Chaque champ est validé individuellement, et une valeur incorrecte est ignorée avec un avertissement. Un fichier qui ne peut pas être lu ou qui n'est pas un YAML valide est ignoré avec un avertissement, sauf par openspec validate, qui quitte avec le code 1 pour que la CI le détecte.
Ce qu'il faut écrire dans ces champs est couvert dans Configuration du projet.
schema
Le schéma de workflow suivi par chaque changement de ce projet. Les valeurs valides sont spec-driven ou un nom de schéma défini par le projet. Exécutez openspec schemas pour lister les noms de schémas disponibles.
context
Texte libre injecté dans les instructions de chaque artefact et fourni à apply et archive. La limite est de 50 Ko, et une valeur plus grande est ignorée avec un avertissement.
rules
Règles supplémentaires pour un artefact, ajoutées aux instructions intégrées du schéma :
rules:
proposal:
- Keep proposals under 500 wordsLes ID d'artefact ne sont pas restreints aux noms intégrés, donc les artefacts de schémas personnalisés fonctionnent comme clés.
operations
Orientations consultatives sur la manière dont le travail d'apply et d'archive est conduit, distinctes des règles d'artefact :
operations:
apply:
guidance:
- Keep test summaries conciseSeuls apply et archive sont lus.
store
Un identifiant de store utilisé comme racine OpenSpec, consulté uniquement lorsque ce répertoire openspec/ est uniquement de configuration (pas de specs/ ni changes/). C'est un repli, jamais une substitution. La hiérarchie complète est Résolution de la racine.
references
Identifiants de stores dont les specs sont utilisées par le travail de ce projet. Un index des specs de chaque store (id, résumé, commande de récupération) est ajouté aux instructions produites. Le contenu des specs n'est jamais inclus en ligne, et la résolution de la racine n'est jamais affectée. Une entrée est un identifiant de store ou une map avec id et une source de clone remote facultative :
references:
- platform-specs
- id: billing-specs
remote: git@github.com:acme/billing-specs.gitExemple
Un config.yaml rempli :
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 finishingAnciens noms
openspec/config.yml est lu comme alias lorsque config.yaml n'existe pas. Lorsque les deux fichiers existent, config.yaml est prioritaire et config.yml est ignoré. openspec init crée config.yaml.