프로젝트 구성 (config.yaml)
openspec/config.yaml의 모든 필드: 이 프로젝트가 계획하는 스키마, 컨텍스트 및 규칙.
위치
각 OpenSpec 프로젝트는 프로젝트 루트의 openspec/config.yaml에 구성 파일을 유지합니다.
필드
| 키 | 타입 | 필수 | 효과 |
|---|---|---|---|
schema | string | 예 | 이 프로젝트의 변경 사항이 따르는 워크플로 스키마 |
context | string | 아니오 | 모든 아티팩트, 적용 및 아카이브에 주입됨 |
rules | map: 아티팩트 ID → 문자열 목록 | 아니오 | 하나의 아티팩트에 대한 기본 제공 안내에 추가되는 추가 규칙 |
operations | map: 작업 → 안내 목록 | 아니오 | 적용 및 아카이브 작업에 대한 권고 안내 |
store | string | 아니오 | 이 openspec/이 구성 전용일 때의 대체 OpenSpec 루트 |
references | list | 아니오 | 사양이 지침에 인덱싱되는 저장소 |
유효하지 않은 필드는 명령이 실패하지 않습니다. 각 필드는 개별적으로 검증되며, 잘못된 값은 경고와 함께 삭제됩니다. 읽을 수 없거나 유효한 YAML이 아닌 파일은 경고와 함께 무시되지만, openspec validate는 CI가 감지할 수 있도록 1로 종료됩니다.
이러한 필드에 무엇을 작성해야 하는지는 프로젝트 구성에서 다룹니다.
schema
이 프로젝트의 모든 변경 사항이 따르는 워크플로 스키마. 유효한 값은 spec-driven 또는 프로젝트가 정의하는 스키마 이름입니다. openspec schemas를 실행하여 사용 가능한 스키마 이름을 나열합니다.
context
모든 아티팩트의 지침에 주입되고 적용 및 아카이브에 제공되는 자유 텍스트입니다. 제한은 50KB이며, 더 큰 값은 경고와 함께 무시됩니다.
rules
스키마의 기본 제공 안내에 추가되는 하나의 아티팩트에 대한 추가 규칙:
rules:
proposal:
- Keep proposals under 500 words아티팩트 ID는 기본 제공 이름으로 제한되지 않으므로 사용자 지정 스키마의 아티팩트도 키로 사용할 수 있습니다.
operations
아티팩트 규칙과 별개로 적용 및 아카이브 작업이 수행되는 방법에 대한 권고 안내:
operations:
apply:
guidance:
- Keep test summaries conciseapply와 archive만 읽힙니다.
store
OpenSpec 루트로 사용되는 저장소 ID로, 이 openspec/ 디렉토리가 구성 전용(변경/ 또는 specs/ 없음)일 때만 참조됩니다. 이는 대체이며 절대 재정의가 아닙니다. 전체 단계는 루트 확인에 있습니다.
references
이 프로젝트의 작업이 참조하는 사양을 가진 저장소 ID입니다. 각 저장소 사양의 인덱스(ID, 요약, 가져오기 명령)가 지침 출력에 추가됩니다. 사양 내용은 절대 인라인되지 않으며 루트 확인에도 영향을 주지 않습니다. 항목은 저장소 ID 또는 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레거시 이름
config.yaml이 존재하지 않을 때 openspec/config.yml이 별칭으로 읽힙니다. 두 파일이 모두 존재하면 config.yaml이 우선하고 config.yml은 무시됩니다. openspec init은 config.yaml을 생성합니다.