c4-architecture
작성자 softaworksc4-architecture는 Markdown에 잘 맞는 소프트웨어 아키텍처 문서를 Mermaid C4 다이어그램으로 만들 수 있도록 돕는 스킬입니다. Context, Container, Component, Deployment, Dynamic 뷰를 생성할 수 있고, 명확한 작업 흐름을 따르며, 흔한 모델링 실수를 줄이고, 버전 관리되는 문서 중심의 Technical Writing까지 지원합니다.
이 스킬은 80/100점으로, 처음부터 직접 설계하는 것보다 적은 프롬프팅으로 Mermaid 기반 C4 아키텍처 문서를 생성하고 싶은 사용자에게 충분히 탄탄한 디렉터리 항목입니다. 사용 시점이 명확하고, 문서량이 많으며, 참고 자료도 실용적이라는 장점이 있습니다. 다만 설치 방식과 출력 규칙에 대한 정보는 비교적 가벼운 편이어서, 실제 실행 관례 일부는 사용자가 직접 정해야 한다는 점은 감안해야 합니다.
- 트리거가 매우 분명합니다. `SKILL.md`와 `README`에 사용 시점이 명시되어 있고, "architecture diagram", "container diagram" 같은 구체적인 트리거 문구도 포함되어 있습니다.
- 실무 활용에 적합한 구조입니다. 4단계 워크플로를 정의하고, Context·Container·Component·Deployment·Dynamic 다이어그램을 어떤 대상 독자와 용도에 맞춰 선택할지 안내합니다.
- 보조 레퍼런스가 탄탄합니다. 문법, 고급 패턴, 자주 하는 실수 가이드가 함께 제공되어 복잡한 시스템의 Mermaid C4 다이어그램을 만들 때 시행착오를 줄여줍니다.
- 설치 명령어나 도구 연동 방식이 제시되지 않아, 실제 에이전트 환경에서 어떻게 호출할지는 사용자가 직접 판단해야 합니다.
- 워크플로에는 코드베이스 분석과 Markdown 파일 작성이 포함되지만, 실제 저장소 기준의 파일명·출력 규칙이나 엔드투엔드 예시는 확인되지 않습니다.
c4-architecture skill 개요
c4-architecture skill은 단순히 박스를 그리는 도구가 아니라, 소프트웨어 아키텍처 문서를 Mermaid C4 다이어그램으로 체계적으로 만들어 주는 데 초점이 있습니다. 특히 엔지니어, 테크니컬 라이터, 스태프 아키텍트, 그리고 독자 수준에 맞는 설명형 아키텍처 문서가 필요한 팀에 잘 맞습니다. 예를 들어 넓은 독자층에는 context, 기술 이해관계자에게는 container, 개발자에게는 component, 운영 관점에는 deployment 뷰처럼 적절한 수준으로 시스템을 설명할 수 있게 도와줍니다.
c4-architecture가 적합한 작업
실제 필요한 일이 코드베이스, 서비스 지형도, 혹은 대략적인 시스템 설명을 구조화된 아키텍처 문서로 바꾸는 것이라면 c4-architecture를 쓰는 편이 좋습니다. 특히 일회성 화이트보드 내보내기가 아니라, Markdown 안에서 살아 있고 버전 관리까지 가능한 다이어그램이 필요할 때 유용합니다.
c4-architecture skill의 최적 사용 사례
이 c4-architecture skill은 다음과 같은 경우에 특히 잘 맞습니다.
- 온보딩을 위해 기존 repo를 문서화할 때
- ADR이나 기술 문서를 위한 system context / container view를 만들 때
- 마이크로서비스, 이벤트 기반 시스템, 외부 의존성을 설명할 때
- 문서 사이트, 위키, pull request에 넣을 아키텍처 다이어그램을 만들 때
- Technical Writing 워크플로에서 아키텍처 콘텐츠를 작성할 때
일반적인 다이어그램 프롬프트와 다른 점
보통 프롬프트로도 다이어그램처럼 보이는 결과는 만들 수 있습니다. 하지만 이 skill은 워크플로가 더 분명하고 기본값도 더 실무적입니다.
- C4 모델을 중심에 두기 때문에 추상화 수준이 더 깔끔하게 유지됩니다
Context와Container를 선택 옵션이 아니라 기본 출발점으로 다룹니다- Mermaid C4 다이어그램 문법 가이드를 함께 제공합니다
- 잘못된 문서를 배포하기 전에 흔한 모델링 실수를 먼저 짚어 줍니다
- 마이크로서비스나 더 복잡한 시스템을 위한 고급 패턴도 포함합니다
사용자가 설치 전에 가장 먼저 확인하는 것
대부분의 사용자는 c4-architecture를 설치하거나 호출하기 전에 아래를 먼저 궁금해합니다.
- 시스템을 완전히 이해하지 못한 상태에서도 도움이 되나? 예. 액터, 주요 서비스, 데이터 저장소, 외부 시스템 정도를 제공할 수 있으면 충분히 유용합니다.
- Markdown 중심 문서화에 맞나? 예. Mermaid 출력이 이 skill의 핵심 가치입니다.
- 아키텍처 전문성이 깊지 않은 테크니컬 라이터에게도 유용한가? 예. 수준 구분과 흔한 실수 방지에 대해 명확한 기준을 갖고 있습니다.
- 심층 아키텍처 리뷰를 대체하나? 아니요. 초안 작성과 구조화된 문서화 속도는 높여 주지만, 시스템의 정확성은 여전히 입력 정보에 달려 있습니다.
c4-architecture skill 사용 방법
skills 환경에 c4-architecture 설치하기
에이전트가 이 저장소에서 사용하는 skills CLI 패턴을 지원한다면, 다음으로 설치합니다.
npx skills add softaworks/agent-toolkit --skill c4-architecture
대신 클론한 저장소에서 skills를 로드하는 환경이라면, 다음 경로의 skill을 사용하면 됩니다.
skills/c4-architecture
처음 쓰기 전에 먼저 읽어야 할 파일
빠르게 핵심을 파악하는 c4-architecture guide가 필요하다면, 다음 순서로 읽는 것이 좋습니다.
skills/c4-architecture/SKILL.mdskills/c4-architecture/references/common-mistakes.mdskills/c4-architecture/references/c4-syntax.mdskills/c4-architecture/references/advanced-patterns.mdskills/c4-architecture/README.md
이 순서가 효과적인 이유는 다음과 같습니다.
SKILL.md는 의도된 작업 흐름을 먼저 잡아 줍니다common-mistakes.md는 가장 흔한 모델링 오류를 초기에 막아 줍니다c4-syntax.md는 Mermaid 출력 문제를 빠르게 디버깅하는 데 도움이 됩니다advanced-patterns.md는 시스템이 단순한 모놀리식 구조가 아닐 때 중요해집니다
프롬프트 전에 올바른 C4 레벨부터 고르기
c4-architecture usage에서 결과 품질을 가장 크게 좌우하는 요소는 독자에 맞는 레벨을 고르는 일입니다.
C4Context: 항상 여기서 시작합니다. 사용자와 외부 시스템을 보여 줍니다C4Container: 대개 필수입니다. 앱, 데이터베이스, 큐, 서비스를 보여 줍니다C4Component: 내부 구조가 실제로 독자 이해에 도움이 될 때만 추가합니다C4Deployment: 런타임/인프라 관점이 중요할 때 사용합니다C4Dynamic: 중요한 요청 흐름이나 이벤트 흐름을 보여 줄 때 사용합니다
자주 나오는 실패 패턴은 시스템 경계를 이해시키기도 전에 곧바로 component로 내려가서, 독자에게는 복잡하기만 한 다이어그램을 만드는 것입니다.
skill이 실제로 필요로 하는 최소 입력만 주기
완벽한 아키텍처 노트가 꼭 필요한 것은 아닙니다. 하지만 토폴로지를 지어내지 않게 하려면 최소한의 구조는 있어야 합니다. 좋은 입력 예시는 다음과 같습니다.
- 시스템 이름과 목적
- 주요 사용자 또는 외부 액터
- 핵심 서비스 / 앱 / 데이터 저장소
- 외부 시스템 또는 벤더
- 주요 관계와 프로토콜
- 대상 독자
- 원하는 다이어그램 레벨
- 출력 파일 또는 문서 위치
“우리 앱 C4 다이어그램 만들어 줘” 정도만 말하면, 결과도 그만큼 일반적일 가능성이 높습니다.
대충 쓴 요청을 강한 c4-architecture 프롬프트로 바꾸기
약한 프롬프트:
Create a C4 diagram for our platform.
더 강한 프롬프트:
Use the
c4-architectureskill to document our B2B analytics platform. Audience: engineering and product. CreateC4ContextandC4Containerdiagrams in Mermaid plus brief Markdown explanations. System boundary: Analytics Platform. Actors: Customer Admin, Analyst. External systems: Okta, Stripe, Snowflake, SendGrid. Internal containers: React web app, API gateway, Python ingestion service, dbt transform jobs, PostgreSQL app DB, Redis cache. Show key relationships and protocols. Avoid component-level detail unless necessary.
두 번째 프롬프트가 더 나은 이유는 독자, 범위, 경계, 액터, 내부 컨테이너, 외부 의존성을 모두 명시해 결과를 훨씬 구체적으로 만들기 때문입니다.
한 번에 끝내려 하지 말고 실무형 워크플로로 쓰기
c4-architecture install을 실제로 도입할지 판단할 때는, 워크플로가 문서 작성 현실에 맞는지가 중요합니다. 실무에서는 보통 이렇게 진행합니다.
- 먼저 context diagram을 요청합니다
- 빠진 액터와 외부 시스템을 검토합니다
- container diagram을 생성합니다
- 독자에게 필요한 경우에만 component 또는 deployment view를 추가합니다
- 다이어그램을 짧은 설명과 함께 Markdown에 저장합니다
이 단계적 접근은 한 번에 다이어그램 5종을 모두 요청하는 것보다 낫습니다. Level 1, 2에서 생긴 오류는 그 아래 레벨 다이어그램 전체로 연쇄적으로 퍼지기 때문입니다.
Technical Writing에서 c4-architecture를 잘 활용하는 법
c4-architecture for Technical Writing은 읽기 쉽고, 유지보수 가능하며, 코드와 함께 버전 관리되는 아키텍처 문서가 필요한 경우 특히 잘 맞습니다. 이 skill은 Markdown에 바로 포함할 수 있는 다이어그램과 짧은 설명문을 함께 만드는 데 강점이 있습니다.
테크니컬 라이팅 작업이라면 다음 정보를 포함하세요.
- 목표 독자 수준: executive, mixed technical, developer, ops
- 용어집 또는 승인된 제품명
- 서비스와 팀에 대해 선호하는 명칭
- 문서 위치, 예:
/docs/architecture/ - 각 다이어그램의 존재 이유까지 설명해야 하는지 여부
이렇게 해야 다이어그램은 기술적으로 그럴듯하지만 문서 톤이나 정보 구조와는 어긋나는 흔한 문제를 줄일 수 있습니다.
결과 품질에 가장 큰 영향을 주는 모델링 규칙
저장소의 mistake 가이드는 특히 중요한 규칙 몇 가지를 강조합니다.
- containers는 클래스가 아니라 배포/실행 단위입니다
- components는 container 내부의 구성 요소입니다
- 비공식적인 C4 레벨을 임의로 만들지 마세요
- 하나의 다이어그램 안에서는 추상화 수준을 일관되게 유지하세요
- 독자의 판단에 도움이 되는 정보만 추가하세요
하나만 기억해야 한다면 이것입니다. 나쁜 C4 다이어그램의 대부분은 문법이 아니라 레벨을 섞어서 망가집니다.
Mermaid 출력이 깨질 때는 reference 문서를 바로 보기
생성된 다이어그램이 렌더링되지 않거나 구조적으로 이상해 보인다면 다음부터 확인하세요.
- 올바른 C4 Mermaid 선언과 요소는
references/c4-syntax.md - 먼저 relationship 문법과 boundary 문법
C4Container와C4Component처럼 올바른 다이어그램 타입을 썼는지
이 skill이 일반 프롬프트보다 실용적인 이유 중 하나는, 문법 reference 덕분에 문제를 고치는 경로가 명확하다는 점입니다.
언제 advanced patterns가 필요한가
아키텍처에 다음 요소가 포함된다면 references/advanced-patterns.md를 열어 보는 것이 좋습니다.
- 여러 서비스 경계를 가진 마이크로서비스
- API gateway
- 이벤트 기반 또는 큐 중심 워크플로
- 둘 이상의 소유권 경계
- 실제 노드와 환경을 표현해야 하는 인프라 / 배포 뷰
특히 “하나의 시스템, 하나의 앱, 하나의 데이터베이스” 식의 단순한 사고방식으로는 오해를 부를 문서를 만들 위험이 있을 때 이 파일이 유용합니다.
c4-architecture skill FAQ
c4-architecture는 입문자에게도 괜찮은가요?
예. 시스템을 평이한 언어로 설명할 수 있다면 특히 좋습니다. 이 skill의 워크플로와 실수 가이드는 흔한 C4 오류를 줄여 줍니다. 입문자라면 Context와 Container부터 시작하고, 시스템 경계가 안정되기 전에는 Component 다이어그램은 피하는 것이 좋습니다.
언제 c4-architecture를 쓰지 않는 편이 좋은가요?
빠른 비공식 스케치만 필요하거나, 픽셀 단위로 맞춘 디자인 산출물, 또는 UML 중심의 내부 설계 모델이 필요한 경우라면 c4-architecture는 굳이 맞지 않을 수 있습니다. 이 skill은 Mermaid 기반의 유지 가능한 아키텍처 문서화에 강점이 있지, 구현 설계를 빠짐없이 표현하는 데 최적화된 도구는 아닙니다.
AI에게 바로 Mermaid 다이어그램을 요청하는 것보다 낫나요?
대체로 아키텍처 문서화에는 더 낫습니다. 일반 프롬프트도 Mermaid는 출력할 수 있지만, c4-architecture는 레벨 선택, 모델링 규율, 문법 reference, 알려진 안티패턴까지 포함한 더 강한 구조를 제공합니다. 그래서 다른 사람이 읽고 유지해야 하는 문서에서는 더 믿고 쓰기 좋습니다.
c4-architecture는 모놀리스와 마이크로서비스 모두에 맞나요?
예. 모놀리스에서는 context, container, 선택적 component view를 분리하는 데 도움이 됩니다. 마이크로서비스에서는 서비스들을 container로 보여 줄지, 더 큰 시스템 경계로 묶어 보여 줄지 판단할 때 advanced patterns reference가 특히 유용합니다.
전체 코드베이스에 접근해야 하나요?
아니요. 다만 입력 자료가 좋을수록 결과도 좋아집니다. 이 skill은 아키텍처 노트, repo 구조, 서비스 목록, API 문서, 배포 매니페스트, 이해관계자 설명만으로도 동작할 수 있습니다. 입력이 부분적이라면, 가정을 명시해서 표시하도록 요청하는 것이 좋습니다.
c4-architecture로 deployment와 runtime view도 만들 수 있나요?
예. 이 skill은 C4Deployment와 동적 흐름 다이어그램도 지원합니다. 다만 런타임 토폴로지나 요청 흐름이 독자에게 중요한 경우에만 쓰는 편이 좋습니다. 그렇지 않으면 오히려 잡음이 늘어날 수 있습니다.
c4-architecture skill 개선 방법
추론된 구조보다 사실 목록부터 제공하기
c4-architecture 결과를 가장 빨리 개선하는 방법은, 다이어그램을 요청하기 전에 사실 목록을 먼저 주는 것입니다.
- 사용자
- 시스템 경계
- 배포 가능한 단위
- 데이터 저장소
- 외부 의존성
- 프로토콜
- 환경 또는 호스팅 모델
이렇게 하면 그럴듯하지만 틀린 관계를 줄일 수 있습니다.
가정을 명시적으로 나열하게 요청하기
가치가 큰 프롬프트 추가 문구는 다음과 같습니다.
If any element is uncertain, list assumptions before generating the final Mermaid.
상속받은 시스템을 문서화하거나, 부분적인 노트만으로 이 skill을 쓸 때 특히 유용합니다.
더 깊이 들어가기 전에 context와 container 결과를 먼저 검토하기
context와 container 계층이 맞지 않으면 component 다이어그램을 받아들이지 마세요. container 모델이 틀리면, component 세부 정보는 문서를 더 정교해 보이게만 할 뿐 실제로는 부정확한 상태를 고착시킵니다.
추상화 수준 오류는 강하게 바로잡기
결과물에서 클래스, 패키지, 엔드포인트가 container로 표시된다면, 그 지점에서 멈추고 먼저 수정해야 합니다. common-mistakes.md의 가이드가 중요한 이유는, 추상화 수준이 틀리면 문서 전체의 신뢰도가 떨어지기 때문입니다.
유용한 수정 프롬프트 예시는 다음과 같습니다.
Revise this as a true
C4Containerdiagram. Only include deployable applications, services, data stores, and external systems. Move internal modules to a later component view.
중요한 요청에는 항상 독자를 명시하기
독자에 따라 “좋은 결과”의 기준이 달라집니다.
- executives는 context, 결과, 외부 의존성을 원합니다
- engineers는 containers, 프로토콜, 책임 경계를 원합니다
- developers는 하나의 container 내부 component 수준 세부 정보가 필요할 수 있습니다
- ops 팀은 deployment node와 환경 정보가 필요합니다
독자 정보가 없으면 문법이 맞더라도 세부 수준이 빗나갈 수 있습니다.
다이어그램에 짧은 설명문을 함께 붙이기
각 다이어그램 아래에 2~5개의 bullet을 붙이도록 요청하면 이 skill의 활용도가 크게 올라갑니다. 예를 들면 다음을 포함하면 좋습니다.
- 이 다이어그램이 무엇을 보여 주는지
- 왜 이 레벨을 선택했는지
- 핵심 상호작용이 무엇인지
- 의도적으로 제외한 것이 무엇인지
이 작은 추가만으로도 문서와 리뷰 스레드에서 결과물이 훨씬 쓰기 좋아집니다.
전체 재작성보다 목표가 분명한 수정으로 반복하기
첫 결과 이후에는 “처음부터 다시”보다, 아래처럼 초점을 좁힌 수정 요청이 품질을 더 빨리 끌어올립니다.
- 빠진 외부 시스템 추가
- 제품 용어에 맞게 container 이름 변경
- 과하게 많은 역할을 가진 서비스 하나를 두 개의 container로 분리
- relationship에 프로토콜 추가
- container view에서 component 수준 세부 정보 제거
- 운영 환경만 대상으로 deployment view 생성
이런 식의 타깃형 반복은 이미 괜찮은 구조를 살리면서 더 빨리 수렴합니다.
c4-architecture를 단순 생성기가 아니라 문서화 체계로 쓰기
장기적으로 가장 좋은 c4-architecture skill 활용법은 repo 안의 아키텍처 문서 방식을 표준화하는 것입니다. Mermaid 다이어그램을 코드나 문서 가까이에 두고, pull request에서 함께 리뷰하고, 서비스나 경계가 바뀔 때마다 업데이트하세요. 바로 이 지점에서 이 skill은 즉흥적인 프롬프트보다 강해집니다. 반복 가능하고 Markdown 친화적인 아키텍처 문서화 체계를 뒷받침하기 때문입니다.
