AI 개발 원칙 매니페스트 참조
GitLab v19.4요약
원칙 동기화는 .ai/principles/manifest.yml 을 읽어 어떤 원칙을 생성할지, 각 원칙이 어떤 소스 파일에서 파생되는지, 자동 생성 머지 리퀘스트를 어떻게 열지 결정합니다. 온보딩 흐름은 AI 개발 원칙을 참고합니다.
원칙 동기화는
.ai/principles/manifest.yml
을 읽어 어떤 원칙을 생성할지, 각 원칙이 어떤 소스 파일에서 파생되는지,
자동 생성 머지 리퀘스트를 어떻게 열지 결정합니다.
온보딩 흐름은 AI 개발 원칙을 참고합니다.
최상위 키#
| 키 | 타입 | 필수 여부 | 설명 |
|---|---|---|---|
auto_mr |
map | 예 | 예약된 동기화에서 열리는 머지 리퀘스트 설정. |
principles |
map | 예 | 원칙 슬러그에서 원칙 항목으로의 맵. 원칙 항목을 참고합니다. |
static_entries |
list | 아니요 | 에이전트 컨텍스트 로딩 스킬에 포함되는, 수동으로 관리되는 파일 목록. |
원칙 항목#
principles: 아래의 각 키는 슬러그입니다. 값은 다음 키를 가진
맵입니다.
| 키 | 타입 | 필수 여부 | 설명 |
|---|---|---|---|
description |
string | 예 | 에이전트 라우팅 테이블에 사용되는 한 줄 요약. 대문자로 시작하고 마침표로 끝내지 않습니다. |
group |
string | 예 | 라우팅 테이블에서 관련 원칙을 묶는 데 사용되는 그룹 레이블. 예: Database, Backend, Frontend. |
sources |
list of maps | 예 | 원칙의 소스 문서 파일 목록. 소스 항목을 참고합니다. |
file_filters |
list of strings | 아니요 | 원칙이 적용되는 리포지터리 경로를 식별하는 Glob 패턴. 동기화는 이를 사용해 드리프트 탐지 범위를 지정합니다. |
baseline |
string | 아니요 | 수작업으로 관리하는 규칙이 담긴 파일 경로. 디스틸러는 baseline 콘텐츠를 원문 그대로 보존합니다. Baseline 파일을 참고합니다. |
prerequisite |
boolean | 아니요 | true 이면 라우팅 테이블이 이 원칙을 같은 그룹의 다른 모든 원칙에 대한 사전 요구 사항으로 표시하고, 디스틸러는 해당 그룹에서 사전 요구 사항이 아닌 모든 디스틸 파일 앞에 이를 참조하는 노트를 추가합니다. 기본값: false. |
owner_team |
string | 아니요 | 소스 문서를 소유한 팀의 CODEOWNERS 핸들. 동기화는 이 값으로 원칙을 묶고, 팀마다 머지 리퀘스트를 하나씩 열며, CODEOWNERS를 통해 이 팀으로 승인을 라우팅합니다. |
secondary_teams |
list of strings | 아니요 | 소스 문서가 둘 이상의 팀에 걸쳐 있을 때 추가하는 CODEOWNERS 핸들. 머지 리퀘스트가 이 그룹에 알림을 보내지 않도록 "Request a review from" 섹션에 인라인 코드로 표시됩니다. |
fallback_ping_team |
boolean | 아니요 | 소스 문서 작성자가 어떤 사용자로도 확인되지 않을 때의 대체 핑 동작. true(기본값)이면 머지 리퀘스트 요약에서 owner_team 핸들을 멘션합니다. false 이면 실행할 때마다 대규모 그룹에 알림이 가지 않도록 멘션되지 않는 팀 슬러그를 사용합니다. |
team_slug |
string | 아니요 | 팀별 브랜치와 머지 리퀘스트 제목에 사용되는 짧고 URL에 안전한 이름. 기본값은 owner_team의 마지막 경로 세그먼트입니다. 마지막 세그먼트가 일반적인 값(예: approvers)이어서 팀 간에 충돌할 수 있으면 이 값을 설정합니다. |
소스 항목#
sources:의 각 항목은 다음 키를 가진 맵입니다.
| 키 | 타입 | 필수 여부 | 설명 |
|---|---|---|---|
path |
string | 예 | 리포지터리 루트를 기준으로 한 소스 문서 파일의 리포지터리 경로. |
url |
string | 예 | 소스 파일의 docs.gitlab.com 표준 URL. 디스틸된 파일이 이 URL로 다시 링크되므로 리뷰어가 게시된 문서와 규칙을 대조할 수 있습니다. |
자동 머지 리퀘스트 설정#
auto_mr: 맵은 예약된 동기화가 머지 리퀘스트를 여는 방식을 제어합니다.
| 키 | 타입 | 필수 여부 | 설명 |
|---|---|---|---|
branch_prefix |
string | 예 | 소스 브랜치 이름의 접두사. 동기화는 열려 있는 팀 또는 툴링 브랜치를 재사용하거나, 새로 만들 때 실행 날짜를 덧붙입니다. |
title_template |
string | 예 | 머지 리퀘스트 제목 템플릿. %{date} 보간을 지원합니다. |
labels |
list of strings | 예 | 머지 리퀘스트에 적용되는 레이블. |
remove_source_branch |
boolean | 예 | true 이면 머지 리퀘스트가 머지된 후 소스 브랜치가 삭제됩니다. |
머지 리퀘스트 리뷰어#
팀별 머지 리퀘스트는 해당 원칙을 마지막으로 디스틸한 이후 소스 문서를 변경한 사람에게 핑을 보냅니다. 동기화는 이전 디스틸 시점과 대상 브랜치 사이 구간의 커밋 작성자를 GitLab GraphQL API로 조회하고, 연결된 GitLab 사용자를 머지 리퀘스트 요약에서 멘션합니다. 이는 공개 이메일뿐 아니라 계정에 연결된 모든 확인된 이메일을 기준으로 대조합니다. 디스틸러는 선언된 모든 SSOT 경로에 걸쳐 기여자별 최신 커밋을 유지하고 그 날짜로 기여자의 순위를 매긴 다음, 최대 4명의 리뷰어를 선정합니다. 동기화는 봇 계정, 알려진 서비스 계정의 소규모 거부 목록에 해당하는 작성자, 커밋 이메일이 어떤 GitLab 계정에도 연결되지 않은 작성자를 건너뜁니다.
어떤 작성자도 사용자로 확인되지 않으면 요약은 owner_team에 대한
fallback_ping_team 동작으로 대체됩니다. 승인은 항상 CODEOWNERS를 통해
owner_team으로 라우팅되므로, 연락이 닿지 않는 작성자 때문에 머지 리퀘스트가
막히는 일은 없습니다.
정적 항목#
static_entries: 아래에 나열된 파일은 에이전트 컨텍스트 로딩 스킬에서 참조하지만
동기화가 생성하지는 않습니다. 소스 문서에서 파생되지 않고 .ai/ 아래에서 수작업으로
관리하는 주제별 모듈에 이 목록을 사용합니다.
| 키 | 타입 | 필수 여부 | 설명 |
|---|---|---|---|
description |
string | 예 | 로딩을 트리거하는 작업 설명. 예: Git, commits, or branches. |
path |
string | 예 | 리포지터리 루트를 기준으로 한 파일의 리포지터리 경로. |
예시#
최소 원칙 항목#
principles:
rest-api:
description: REST API design and conventions
group: API
sources:
- path: doc/development/api_styleguide.md
url: https://docs.gitlab.com/development/api_styleguide/
모든 필드를 포함한 원칙 항목#
principles:
database-migrations:
description: Database migration patterns and zero-downtime safety
group: Database
prerequisite: false
file_filters:
- 'db/migrate/**/*.rb'
- 'db/post_migrate/**/*.rb'
baseline: .ai/principles/baselines/database-migrations.md
sources:
- path: doc/development/migration_style_guide.md
url: https://docs.gitlab.com/development/migration_style_guide/
- path: doc/development/database/avoiding_downtime_in_migrations.md
url: https://docs.gitlab.com/development/database/avoiding_downtime_in_migrations/
자동 머지 리퀘스트 블록#
auto_mr:
branch_prefix: docs-sync/principles
title_template: "Update AI development principles from SSOT (%{date})"
labels:
- ai-agent
- documentation
- type::maintenance
remove_source_branch: true
정적 항목 블록#
static_entries:
- description: Git, commits, or branches
path: .ai/git.md
검증#
디스틸러는 로드 시점에 매니페스트를 검증하며 다음 경우에 오류와 함께 중단합니다.
auto_mr:블록이 없거나 필수 키 중 하나가 빠진 경우.- 원칙에
sources:키가 없거나sources:가 비어 있는 경우.
이 검증은 머지 시점이 아니라 동기화 시점에 실행됩니다. 즉, 잘못된 매니페스트 항목은 이를 도입한 머지 리퀘스트를 막는 것이 아니라 다음 예약(또는 수동) 동기화 실행을 실패시킵니다.
관련 주제#
- 온보딩 흐름은 AI 개발 원칙을 참고합니다.
- 실제 매니페스트는
.ai/principles/manifest.yml을 참고합니다. - 매니페스트를 사용하는 gem은
gems/gitlab-ai-principles-distiller를 참고합니다.