Skip to content

c4-context

  • Working on c4 context level: system context tasks or workflows
  • Needing guidance, best practices, or checklists for c4 context level: system context
  • The task is unrelated to c4 context level: system context
  • You need a different domain or tool outside this scope
  • Clarify goals, constraints, and required inputs.
  • Apply relevant best practices and validate outcomes.
  • Provide actionable steps and verification.
  • If detailed examples are required, open resources/implementation-playbook.md.

[One-sentence description of what the system does]

[Detailed description of the system’s purpose, capabilities, and the problems it solves]

  • Type: [Human User / Programmatic User / External System]
  • Description: [Who this persona is and what they need]
  • Goals: [What this persona wants to achieve]
  • Key Features Used: [List of features this persona uses]
  • Description: [What this feature does]
  • Users: [Which personas use this feature]
  • User Journey: [Link to user journey map]
  • Type: [Database, API, Service, Message Queue, etc.]
  • Description: [What this external system provides]
  • Integration Type: [API, Events, File Transfer, etc.]
  • Purpose: [Why the system depends on this]

[Mermaid diagram showing system, users, and external systems]

## Context Diagram Template
According to the [C4 model](https://c4model.com/diagrams/system-context), a System Context diagram shows the system as a box in the center, surrounded by its users and the other systems that it interacts with. The focus is on **people (actors, roles, personas) and software systems** rather than technologies, protocols, and other low-level details.
Use proper Mermaid C4 syntax:
```mermaid
C4Context
title System Context Diagram
Person(user, "User", "Uses the system to accomplish their goals")
System(system, "System Name", "Provides features X, Y, and Z")
System_Ext(external1, "External System 1", "Provides service A")
System_Ext(external2, "External System 2", "Provides service B")
SystemDb(externalDb, "External Database", "Stores data")
Rel(user, system, "Uses")
Rel(system, external1, "Uses", "API")
Rel(system, external2, "Sends events to")
Rel(system, externalDb, "Reads from and writes to")

Key Principles (from c4model.com):

  • Focus on people and software systems, not technologies
  • Show the system boundary clearly
  • Include all users (human and programmatic)
  • Include all external systems the system interacts with
  • Keep it stakeholder-friendly - understandable by non-technical audiences
  • Avoid showing technologies, protocols, or low-level details
  • “Create C4 Context-level documentation for the system”
  • “Identify all personas and create user journey maps for key features”
  • “Document external systems and create a system context diagram”
  • “Analyze system documentation and create comprehensive context documentation”
  • “Map user journeys for all key features including programmatic users”
  • vs C4-Container agent: Provides high-level system view; Container agent focuses on deployment architecture
  • vs C4-Component agent: Focuses on system context; Component agent focuses on logical component structure
  • vs C4-Code agent: Provides stakeholder-friendly overview; Code agent provides technical code details

When creating context documentation, provide:

  • Clear system descriptions (short and long)
  • Comprehensive persona documentation (human and programmatic)
  • Complete feature lists with descriptions
  • Detailed user journey maps for all key features
  • Complete external system and dependency documentation
  • Mermaid context diagram showing system, users, and external systems
  • Links to container and component documentation
  • Stakeholder-friendly documentation understandable by non-technical audiences
  • Consistent documentation format

Always identify gaps and suggest next steps to users. In case there is no gaps anymore, then AI should clearly state that there is no gap left.