Back to skills
SkillHub ClubShip Full StackFull Stack

maintain-architecture-map

Imported from https://github.com/dudusoar/VRP-Toolkit.

Packaged view

This page reorganizes the original catalog entry around fit, installability, and workflow context first. The original raw source lives below.

Stars
1
Hot score
77
Updated
March 20, 2026
Overall rating
C2.7
Composite score
2.7
Best-practice grade
B78.7

Install command

npx @skill-hub/cli install dudusoar-vrp-toolkit-maintain-architecture-map

Repository

dudusoar/VRP-Toolkit

Skill path: .claude/skills/maintain-architecture-map

Imported from https://github.com/dudusoar/VRP-Toolkit.

Open repository

Best for

Primary workflow: Ship Full Stack.

Technical facets: Full Stack.

Target audience: everyone.

License: Unknown.

Original source

Catalog source: SkillHub Club.

Repository owner: dudusoar.

This is still a mirrored public skill entry. Review the repository before installing into production workflows.

What it helps with

  • Install maintain-architecture-map into Claude Code, Codex CLI, Gemini CLI, or OpenCode workflows
  • Review https://github.com/dudusoar/VRP-Toolkit before adding maintain-architecture-map to shared team environments
  • Use maintain-architecture-map for development workflows

Works across

Claude CodeCodex CLIGemini CLIOpenCode

Favorites: 0.

Sub-skills: 0.

Aggregator: No.

Original source / Raw SKILL.md

---
name: maintain-architecture-map
description: Maintain system architecture documentation (ARCHITECTURE_MAP.md) showing module structure, data flows, and entry points. Use this skill when architecture changes, modules are added, or system overview needs updating.
version: 1.0.0
tags: [project, architecture, documentation, system-design]
---

# Maintain Architecture Map Skill

Maintain a living architecture document that shows the system's big picture: modules, data flows, entry points, and dependencies.

## Goal

Keep **ARCHITECTURE_MAP.md** and related architecture docs synchronized with the actual codebase, providing:
1. **Module Overview:** What modules exist and what they do
2. **Data Flows:** How data moves through the system (Instance → Solver → Solution → Visualizer)
3. **Entry Points:** Where to start when using the toolkit
4. **Dependencies:** How modules depend on each other

## Relationship to Other Skills

**Complementary to maintain-data-structures:**
- **maintain-data-structures:** Focuses on **what** (data structure definitions, attributes, methods, formats)
- **maintain-architecture-map:** Focuses on **how** (module structure, data flows, system pipelines)

**Example:**
- `maintain-data-structures` documents: `PDPTWInstance` has attributes `n`, `order_table`, `distance_matrix`
- `maintain-architecture-map` documents: `PDPTWInstance` is created in Data layer, consumed by Algorithm layer, visualized by Visualization layer

## When to Use This Skill

Trigger this skill when:
- [ ] New module added (e.g., new problem type, new algorithm)
- [ ] Module structure changes (files moved, packages reorganized)
- [ ] New entry point created (new public API)
- [ ] Data flow changes (new pipeline stage added)
- [ ] Major refactoring completed (architecture evolution)
- [ ] Preparing for playground development (need system overview)
- [ ] User asks "how does the system work?"

## Workflow

### Step 1: Scan Project Structure

**Identify current module organization:**

Reference: `references/scanning_scripts.md` for automation ideas

**Key directories to scan:**
```
vrp_toolkit/
├── problems/          # Problem definitions (PDPTW, VRP, etc.)
├── algorithms/        # Solving algorithms (ALNS, GA, etc.)
├── data/             # Data generation and loading
├── visualization/    # Plotting and visualization
└── utils/            # Common utilities
```

**For each module, extract:**
- Module purpose (from `__init__.py` docstring or README)
- Public classes (classes exported in `__init__.py`)
- Public functions (functions exported in `__init__.py`)
- Dependencies (imports from other modules)

### Step 2: Identify Entry Points

**Entry points are where users start using the toolkit:**

**Common entry point types:**
1. **Problem creation:**
   - `PDPTWInstance(order_table)` - Create problem from data
   - `generate_pdptw_instance(...)` - Generate synthetic problem

2. **Algorithm execution:**
   - `ALNSSolver.solve(problem)` - Solve using ALNS
   - `greedy_insertion_initial_solution(...)` - Generate initial solution

3. **Data generation:**
   - `OrderGenerator.generate()` - Generate order data
   - `RealMap(...)` - Create synthetic map

4. **Visualization:**
   - `PDPTWVisualizer.visualize(solution)` - Plot routes

**Document in ARCHITECTURE_MAP.md with:**
- Function signature
- One-sentence purpose
- Example usage (1-2 lines)

### Step 3: Map Data Flows

**Trace how data moves through the system:**

**Primary data flow (Problem → Solution):**
```
1. Data Layer:      Generate/load data
                    ↓
2. Problem Layer:   Create Instance (PDPTWInstance)
                    ↓
3. Algorithm Layer: Solve Instance → Solution (ALNSSolver.solve())
                    ↓
4. Visualization:   Visualize Solution (PDPTWVisualizer.visualize())
```

**Secondary data flows:**
- **Configuration:** User params → ALNSConfig → ALNSSolver
- **Evaluation:** Solution → Objective function → Cost metric
- **Validation:** Solution → Feasibility checker → Constraint violations

Reference: Create `.claude/docs/data_flows.md` for detailed flow diagrams

### Step 4: Document Module Dependencies

**Map which modules depend on which:**

**Dependency rules (VRP-Toolkit architecture):**
- ✅ **Algorithm** can depend on **Problem** (solvers need instances)
- ✅ **Visualization** can depend on **Problem** and **Algorithm** (visualizers need instances and solutions)
- ✅ **Data** can depend on **Problem** (generators create instances)
- ❌ **Problem** should NOT depend on **Algorithm** (instances are algorithm-agnostic)

**Create dependency graph:**
```
Data ────────┐
             ↓
Problem ←────┘
   ↓
Algorithm
   ↓
Visualization
```

Reference: Create `.claude/docs/module_dependencies.md` for full dependency map

### Step 5: Update ARCHITECTURE_MAP.md

**Use the template from `references/architecture_template.md`:**

**Required sections:**
1. **System Overview** - 2-3 paragraph summary
2. **Three-Layer Architecture** - Problem/Algorithm/Data layer descriptions
3. **Module Guide** - One subsection per module with purpose and key exports
4. **Entry Points** - How to start using the toolkit
5. **Data Flows** - Visual diagram + text description
6. **Key Abstractions** - VRPProblem, VRPSolution, Solver interfaces
7. **Extension Guide** - How to add new problems/algorithms
8. **Quick Reference** - Cheat sheet of common operations

**Formatting guidelines:**
- Keep it concise (aim for <500 lines total)
- Use diagrams (ASCII art or mermaid)
- Include code examples (1-3 lines each)
- Link to detailed docs (maintain-data-structures references)

### Step 6: Update Supporting Docs

**Create/update `.claude/docs/` as needed:**

**data_flows.md** - Detailed data flow diagrams
- Problem creation flow
- Algorithm execution flow
- Visualization flow
- Configuration flow

**module_dependencies.md** - Dependency graph
- Import graph (module → imported modules)
- Circular dependency checks
- Layer violations (if any)

**extension_guide.md** - How to extend the system
- Adding a new problem type
- Adding a new algorithm
- Adding a new operator
- Adding a new visualization

## Architecture Template

### Minimal ARCHITECTURE_MAP.md Structure

```markdown
# VRP-Toolkit Architecture Map

**Last Updated:** YYYY-MM-DD
**Version:** 0.1.0

## System Overview

[2-3 paragraphs describing the toolkit]

## Three-Layer Architecture

### 1. Problem Layer (vrp_toolkit/problems/)
[Description + key classes]

### 2. Algorithm Layer (vrp_toolkit/algorithms/)
[Description + key classes]

### 3. Data Layer (vrp_toolkit/data/)
[Description + key classes]

### 4. Visualization Layer (vrp_toolkit/visualization/)
[Description + key classes]

## Module Guide

### problems/
**Purpose:** [One sentence]
**Key Exports:**
- `PDPTWInstance` - [Purpose]
- `VRPProblem` - [Purpose]

[Repeat for each module]

## Entry Points

### 1. Create a Problem
```python
from vrp_toolkit.problems.pdptw import PDPTWInstance
instance = PDPTWInstance(order_table=df)
```

### 2. Solve the Problem
```python
from vrp_toolkit.algorithms.alns import ALNSSolver
solver = ALNSSolver(config)
solution = solver.solve(instance)
```

[Continue for main workflows]

## Data Flows

[ASCII diagram or mermaid]

## Key Abstractions

[Describe VRPProblem, VRPSolution, Solver interfaces]

## Extension Guide

[How to add new problems/algorithms]

## Quick Reference

[Cheat sheet table]
```

Full template: `references/architecture_template.md`

## Automation Helpers

### Script: Scan Module Structure

```python
# scripts/scan_modules.py
from pathlib import Path
import importlib

def scan_module(module_path):
    """Scan a module and extract public API."""
    init_file = module_path / "__init__.py"

    if not init_file.exists():
        return None

    # Read __init__.py
    content = init_file.read_text()

    # Extract __all__ if present
    if "__all__" in content:
        # Parse __all__ list
        pass

    # Extract docstring
    # Extract classes/functions

    return {
        'name': module_path.name,
        'docstring': '...',
        'exports': [...]
    }

def scan_all_modules():
    """Scan all vrp_toolkit modules."""
    toolkit_path = Path("vrp-toolkit/vrp_toolkit")
    modules = []

    for module_dir in toolkit_path.iterdir():
        if module_dir.is_dir() and not module_dir.name.startswith('_'):
            info = scan_module(module_dir)
            if info:
                modules.append(info)

    return modules
```

Reference: See `references/scanning_scripts.md` for full scripts

## Quality Checklist

Before marking ARCHITECTURE_MAP.md as up-to-date:

- [ ] **Accuracy:** All listed modules/classes exist in codebase
- [ ] **Completeness:** All major modules documented
- [ ] **Entry points:** At least 3-5 entry points with examples
- [ ] **Data flows:** At least 1 visual diagram
- [ ] **Dependencies:** Dependency graph present
- [ ] **Layer compliance:** No violations of three-layer architecture
- [ ] **Links:** Cross-references to maintain-data-structures docs work
- [ ] **Freshness:** "Last Updated" date is current
- [ ] **Brevity:** Total length < 500 lines (main file)

## Integration with Other Skills

**Works with:**
- **maintain-data-structures:** Link to data structure references for details
- **create-playground:** Playground references ARCHITECTURE_MAP for integration patterns
- **migrate-module:** After migration, update architecture docs
- **build-session-context:** Reads ARCHITECTURE_MAP for project overview

**Maintains:**
- `.claude/ARCHITECTURE_MAP.md` - Main architecture document
- `.claude/docs/data_flows.md` - Data flow diagrams
- `.claude/docs/module_dependencies.md` - Dependency graph

## Common Patterns

### Pattern 1: Document a New Module

When adding a new module (e.g., `vrp_toolkit/algorithms/genetic/`):

1. Add entry to "Module Guide" section:
   ```markdown
   ### algorithms/genetic/
   **Purpose:** Genetic algorithm solver for VRP problems
   **Key Exports:**
   - `GeneticSolver` - Main GA solver implementing Solver interface
   - `GAConfig` - Configuration for genetic parameters
   ```

2. Update "Entry Points" if new public API:
   ```markdown
   ### 3. Solve with Genetic Algorithm
   ```python
   from vrp_toolkit.algorithms.genetic import GeneticSolver
   solver = GeneticSolver(config)
   solution = solver.solve(instance)
   ```
   ```

3. Update dependency graph if needed

### Pattern 2: Document Data Flow

When documenting a new data flow (e.g., "How does configuration work?"):

1. Create ASCII diagram:
   ```
   User Input
      ↓
   UI Widgets (Streamlit)
      ↓
   ALNSConfig (dataclass)
      ↓
   ALNSSolver.__init__(config)
      ↓
   ALNS.run() uses config params
   ```

2. Add text explanation

3. Link from ARCHITECTURE_MAP.md to detailed docs

### Pattern 3: Update After Refactoring

When architecture changes (e.g., "Split ALNS into solver.py and operators.py"):

1. Update module structure in "Module Guide"
2. Update imports in code examples
3. Update dependency graph
4. Verify no broken cross-references

## References

- `references/architecture_template.md` - Full ARCHITECTURE_MAP.md template
- `references/scanning_scripts.md` - Automation scripts for module scanning
- `maintain-data-structures/` skill - For detailed data structure docs

---

**Remember:** ARCHITECTURE_MAP.md is for the big picture. For detailed class/function documentation, use maintain-data-structures skill.
maintain-architecture-map | SkillHub