Files
gh-bradleyboehmke-brads-mar…/skills/diagram-analysis.md
2025-11-29 18:01:55 +08:00

2.2 KiB

title, description, tags
title description tags
Diagram Analysis Understanding system architecture to choose appropriate diagram types
analysis
diagrams
architecture
visualization

Diagram Analysis

Metadata

Purpose: Analyze systems to determine best diagram type and content Version: 1.0.0


Analysis Steps

1. Understand the Goal

Ask:

  • What story needs to be told?
  • Who is the audience?
  • What decisions will this support?
  • What level of detail is needed?

2. Identify Architecture Type

Common patterns:

  • Monolithic - Single application, internal modules
  • Microservices - Multiple services, APIs, message queues
  • Data pipeline - Data flow from sources to outputs
  • ML system - Training vs inference pipelines
  • Library/Framework - Class hierarchies, modules

3. Choose Diagram Type

For system overview: C4 Context For service architecture: C4 Container or Flowchart For internal structure: C4 Component or Class Diagram For interactions: Sequence Diagram For data models: ER Diagram For processes: Flowchart For state changes: State Diagram

4. Determine Scope

Include:

  • Essential components for the story
  • Key relationships and dependencies
  • Technology choices (if relevant to audience)

Exclude:

  • Implementation details (unless that's the focus)
  • Everything not needed for this specific diagram
  • Redundant information

Discovery Commands

System boundaries:

# Find services/modules
ls -d */  | head -10
find . -name "docker-compose.yml" -o -name "Dockerfile"

Interactions:

# Find API definitions
find . -name "*api*.py" -o -name "*route*.py"

# Check for message queues
grep -r "kafka\|rabbitmq\|redis\|celery" pyproject.toml requirements.txt

Data flow:

# Find data sources
find . -name "*data*" -o -name "*extract*" -o -name "*load*"

# Check databases
grep -i "postgres\|mysql\|mongo\|sqlite" pyproject.toml requirements.txt

Diagram Planning

Start simple:

  1. List main components
  2. Identify key relationships
  3. Choose direction (TD/LR)
  4. Add labels
  5. Refine as needed

Validate:

  • Does it tell the right story?
  • Is it too complex?
  • Is anything missing?
  • Will the audience understand it?