Skip to content

프로젝트 구성 (config.yaml) ​

openspec/config.yaml의 모든 필드: 이 프로젝트가 계획하는 스키마, 컨텍스트 및 규칙.

위치 ​

각 OpenSpec 프로젝트는 프로젝트 루트의 openspec/config.yaml에 구성 파일을 유지합니다.

필드 ​

키타입필수효과
schemastring예이 프로젝트의 변경 사항이 따르는 워크플로 스키마
contextstring아니오모든 아티팩트, 적용 및 아카이브에 주입됨
rulesmap: 아티팩트 ID → 문자열 목록아니오하나의 아티팩트에 대한 기본 제공 안내에 추가되는 추가 규칙
operationsmap: 작업 → 안내 목록아니오적용 및 아카이브 작업에 대한 권고 안내
storestring아니오이 openspec/이 구성 전용일 때의 대체 OpenSpec 루트
referenceslist아니오사양이 지침에 인덱싱되는 저장소

유효하지 않은 필드는 명령이 실패하지 않습니다. 각 필드는 개별적으로 검증되며, 잘못된 값은 경고와 함께 삭제됩니다. 읽을 수 없거나 유효한 YAML이 아닌 파일은 경고와 함께 무시되지만, openspec validate는 CI가 감지할 수 있도록 1로 종료됩니다.

이러한 필드에 무엇을 작성해야 하는지는 프로젝트 구성에서 다룹니다.

schema ​

이 프로젝트의 모든 변경 사항이 따르는 워크플로 스키마. 유효한 값은 spec-driven 또는 프로젝트가 정의하는 스키마 이름입니다. openspec schemas를 실행하여 사용 가능한 스키마 이름을 나열합니다.

context ​

모든 아티팩트의 지침에 주입되고 적용 및 아카이브에 제공되는 자유 텍스트입니다. 제한은 50KB이며, 더 큰 값은 경고와 함께 무시됩니다.

rules ​

스키마의 기본 제공 안내에 추가되는 하나의 아티팩트에 대한 추가 규칙:

yaml
rules:
  proposal:
    - Keep proposals under 500 words

아티팩트 ID는 기본 제공 이름으로 제한되지 않으므로 사용자 지정 스키마의 아티팩트도 키로 사용할 수 있습니다.

operations ​

아티팩트 규칙과 별개로 적용 및 아카이브 작업이 수행되는 방법에 대한 권고 안내:

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

apply와 archive만 읽힙니다.

store ​

OpenSpec 루트로 사용되는 저장소 ID로, 이 openspec/ 디렉토리가 구성 전용(변경/ 또는 specs/ 없음)일 때만 참조됩니다. 이는 대체이며 절대 재정의가 아닙니다. 전체 단계는 루트 확인에 있습니다.

references ​

이 프로젝트의 작업이 참조하는 사양을 가진 저장소 ID입니다. 각 저장소 사양의 인덱스(ID, 요약, 가져오기 명령)가 지침 출력에 추가됩니다. 사양 내용은 절대 인라인되지 않으며 루트 확인에도 영향을 주지 않습니다. 항목은 저장소 ID 또는 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

레거시 이름 ​

config.yaml이 존재하지 않을 때 openspec/config.yml이 별칭으로 읽힙니다. 두 파일이 모두 존재하면 config.yaml이 우선하고 config.yml은 무시됩니다. openspec init은 config.yaml을 생성합니다.