AgentSkillsCN

c4-architecture-documentation

采用C4模型记录系统架构:通过ARCHITECTURE.md文件,以上下文、容器、组件和代码图的形式,全面展现系统的设计与运行逻辑。

SKILL.md
--- frontmatter
name: c4-architecture-documentation
description: Document system architecture using C4 model: context, container, component, code diagrams per ARCHITECTURE.md
license: Apache-2.0

C4 Architecture Documentation Skill

Purpose

Document CIA platform architecture using C4 model for different abstraction levels.

When to Use

  • ✅ Documenting system architecture
  • ✅ Onboarding new developers
  • ✅ Architecture decision records
  • ✅ Security architecture reviews

C4 Model Levels

Level 1: System Context

code
[External Users] --uses--> [CIA Platform] --uses--> [Riksdagen API]
[CIA Platform] --uses--> [World Bank API]
[CIA Platform] --uses--> [PostgreSQL Database]

Level 2: Container Diagram

code
[Web Browser] --HTTPS--> [Spring MVC App] --JDBC--> [PostgreSQL]
[Spring MVC App] --HTTPS--> [External APIs]
[Spring MVC App] --uses--> [Redis Cache]

Level 3: Component Diagram

java
// Service Layer Components
@Component PoliticianService --uses--> @Repository PoliticianRepository
@Component VotingAnalysisService --uses--> @Repository VotingRecordRepository
@Component RiksdagenClient --calls--> [External Riksdagen API]

Level 4: Code

java
// Detailed class design
public class PoliticianService {
    private final PoliticianRepository repository;
    private final RiksdagenClient riksdagenClient;
    // Implementation details...
}

PlantUML Diagrams

plantuml
@startuml
!include https://raw.githubusercontent.com/plantuml-stdlib/C4-PlantUML/master/C4_Container.puml

Person(user, "Citizen", "Wants political transparency")
System_Boundary(cia, "CIA Platform") {
    Container(web, "Web Application", "Spring MVC, Vaadin 8", "Provides UI")
    ContainerDb(db, "Database", "PostgreSQL", "Stores data")
}
System_Ext(riksdagen, "Riksdagen API", "Government data")

Rel(user, web, "Uses", "HTTPS")
Rel(web, db, "Reads/Writes", "JDBC")
Rel(web, riksdagen, "Fetches data", "HTTPS/REST")
@enduml

References