LikeC4 C4 다이어그램은(는) 무엇을 하나요?
구두 설명이나 코드베이스로부터 LikeC4 DSL로 유효한 C4 다이어그램을 생성하고, CLI로 검증한 후 전달합니다. 참조 문서는 관심사별로 나뉘어 있습니다 — 작업에 필요한 부분만 그 부분을 작성하기 전에 읽고, 구문을 추측하지 마십시오.
여기에 있는 모든 내용은 likec4 1.59.2에 대해 검증되었습니다 (핀고정 및 업그레이드 절차는 references/setup-and-validation.md 참조).
엄격한 규칙 (두 가지뿐)
- 전달하기 전에 검증하십시오. 프로젝트에서
likec4 validate를 실행하고 종료 코드 0인 경우에만 전달하십시오. CLI를 전혀 사용할 수 없는 경우 → 문서화된 자체 점검을 수행하고 이를 공개하십시오. 절차:references/setup-and-validation.md. - DSL 구문을 절대 추측하지 마십시오. 확실하지 않으면 관련 참조를 열고, 여전히 확실하지 않으면 https://likec4.dev/dsl/ 을 참조하십시오.
설정 (첫 번째 작업, 세션당 한 번)
LC4="npx -y [email protected]"
v="$(likec4 --version 2>/dev/null | grep -oE '^[0-9]+\.[0-9]+\.[0-9]+' | tail -1)"
[ -n "$v" ] && [ "$(printf '%s\n1.53.0\n' "$v" | sort -V | head -1)" = "1.53.0" ] && LC4=likec4
설치된 CLI는 >= 1.53.0인 경우에만 사용됩니다 — 그 이전 버전은 format 명령어가 없고 1.52.0은 유효하지 않은 모델에서도 종료 코드 0을 반환하므로 아래 두 게이트가 모두 조용히 통과됩니다. 전역 설치는 필요하지 않습니다 — npx -y [email protected]는 Node 22+와 네트워크가 있는 모든 환경에서 작동합니다 (첫 실행 시 다운로드, 이후 캐시됨). 사용자가 유지 관리하는 프로젝트의 경우 npm install --save-dev [email protected]를 권장합니다. 세부 사항, 버전 하한선, 오프라인 폴백 및 오류 카탈로그: references/setup-and-validation.md.
작업 → 읽을 것
| 현재 작업 | 읽을 것 |
|---|---|
| 시스템 컨텍스트 / 랜드스케이프 ("누가 사용하는지, 무엇과 통신하는지") | references/levels/l1-context.md |
| 컨테이너 ("내부에서 실행되는 것", 기술 선택) | references/levels/l2-container.md |
| 컴포넌트 (하나의 컨테이너 내부) | references/levels/l3-component.md |
| 코드 레벨 — 하나의 컴포넌트에 대한 클래스/인터페이스 | references/levels/l4-code.md |
| 데이터 흐름 / 시나리오 / 시퀀스 (로그인, 체크아웃, 파이프라인) | references/levels/flows-dynamic.md |
| 인프라스트럭처 / "어디에서 실행되는가" | references/levels/deployment.md |
| 모든 DSL 관련 질문 (spec, model, FQN, extend, predicates) | references/syntax-core.md |
| 색상, 모양, 아이콘, 범례, 레이아웃 | references/styling.md |
| 리포지토리 / 소스 코드가 주어진 경우 | references/code-to-diagram.md |
| 설치, 검증, 포맷, 오류, 미리보기/내보내기/CI | references/setup-and-validation.md |
작업에 맞게 구조 조정
- 간단한 요청 (하나의 시스템, 빠른 컨텍스트/컨테이너 그림):
templates/minimal/에서 시작 — 3개 파일 (spec.c4,model.c4,views.c4). 이를 위해 여러 폴더 프로젝트를 구축하지 마십시오. - 실제 시스템 (2개 이상의 레벨, 여러 시스템, 배포, 흐름):
templates/full/레이아웃을 사용 — 파일을 복사하고 내용 이름을 변경하십시오:
architecture/
├── spec.c4 # 유일한 specification 블록: 모든 종류
├── model/
│ ├── landscape.c4 # 최상위 시스템 + 행위자
│ ├── <system>.c4 # 시스템당 하나의 파일, extend <system> { … } 사용
│ └── externals.c4 # externalSystem 요소
├── deployment/prod.c4 # nodes + instanceOf (종류는 spec.c4에 유지)
└── views/
├── context.c4 # 레벨 1 (뷰 인덱스)
├── <system>-views.c4 # 드릴다운이 있는 레벨 2/3 뷰
└── dynamic-flows.c4 # 동적 + 배포 뷰
파일을 추가하여 확장하고 (새 시스템 → 새 model/<s>.c4), 모델을 뷰와 분리하고, specification을 하나의 파일에 유지하십시오. 폴더 아래의 모든 .c4 파일은 자동으로 하나의 모델로 병합됩니다.
템플릿은 내장 테마 색상만 사용합니다 (범위 내 = primary, 외부 = externalSystem 종류를 통한 gray, 사람 = indigo) — 사용자 정의 색상이나 태그는 없습니다. 이는 C4 규칙을 유지하고 밝은/어두운 테마에 적응합니다.
워크플로우
- 범위 지정 — 시스템, 행위자, 외부 시스템을 식별하고 레벨을 선택합니다. 기본값: 컨텍스트 + 컨테이너; 중요하지 않은 컨테이너의 경우 컴포넌트; 각 주요 시나리오에 대한 동적 뷰 (권장); 인프라가 중요한 경우 배포; 명시적 요청 또는 명확한 정당성이 있는 경우에만 레벨 4 (
references/levels/l4-code.md— 기본 대체는 소스 링크). 리포지토리가 입력인 경우 →references/code-to-diagram.md. 진정으로 모호한 범위 → 한 가지 질문을 하고, 그렇지 않으면 진행하고 가정을 명시하십시오. - 설정 — 일치하는 템플릿을 복사하고 위의
LC4라인을 실행합니다. - 모델, 그 다음 뷰 — 모델 파일을 작성하고, 각 다이어그램에 대한 레벨 파일을 읽으면서 드릴다운 (
view of,navigateTo)으로 뷰를 작성합니다. - 검증, 그 다음 포맷 —
$LC4 validate <dir>실행; 종료 코드 0이 될 때까지Line N:오류를 수정합니다 (카탈로그는setup-and-validation.md에 있음). 그런 다음$LC4 format <dir>을 실행하고 재검증하여 파일이 사용자 자신의 도구가 생성하는 표준 스타일과 일치하도록 합니다. - 전달 — 파일 트리, 검증 결과, 다이어그램 보는 방법 (
$LC4 start <dir>; 내보내기/CI 옵션은setup-and-validation.md에 있음)을 보여줍니다.
품질 기준 (전달 전 확인)
-
likec4 validate종료 코드 0 (또는 공개된 자체 점검), stderr 깨끗함. -
likec4 format <dir> --check종료 코드 0 — 파일이 표준 형식임. - 모든 요소에 설명이 있음; 모든 컨테이너/컴포넌트에
technology가 있음; 모든 관계에 방향성 레이블 (무엇을 + 어떻게)이 있음. - 모든 뷰에
title이 있음; 뷰당 약 ≤20개 요소 — 혼잡한 뷰는 분할. - 레벨이 연결됨: 컨텍스트 → 컨테이너 → 컴포넌트가
view of/navigateTo를 통해 연결됨.