7.7 KiB
description, argument-hint, allowed-tools
| description | argument-hint | allowed-tools | ||||
|---|---|---|---|---|---|---|
| Generate Mermaid diagrams from codebase analysis | <type> [context] |
|
Generate System Diagrams
Generate Mermaid diagrams including architecture, database schema, deployment, and security architecture.
Your Task
-
Parse Arguments:
- Extract diagram type from
$ARGUMENTS - Supported types:
er,arch,deployment,security - Extract optional context (remaining arguments)
- Extract diagram type from
-
Validate Diagram Type:
- If type not provided or invalid, show available types
- Exit with helpful message
-
Analyze Codebase (based on diagram type):
For ER Diagrams (
er):- Find ORM model files
- Supported ORMs:
- Python: SQLAlchemy, Django, Tortoise, SQLModel, Peewee
- JS/TS: Prisma, TypeORM, Sequelize, Mongoose
- Other: GORM (Go), ActiveRecord (Ruby)
- Extract:
- Tables/entities
- Columns with types
- Relationships (one-to-one, one-to-many, many-to-many)
- Constraints (PK, FK, unique)
For Architecture Diagrams (
arch):- Identify major components
- Find services, APIs, workers
- Detect queues, caches, databases
- Map data flow between components
- Identify external dependencies
For Deployment Diagrams (
deployment):- Find deployment configs (docker-compose, k8s, etc.)
- Identify services and their relationships
- Map CI/CD pipeline
- Document environment configurations
For Security Diagrams (
security):- Find authentication/authorization code
- Map security boundaries
- Identify data encryption points
- Document security controls
-
Generate Mermaid Diagram:
- Create appropriate Mermaid syntax based on type
- Include meaningful labels and relationships
- Add comments for clarity
- Keep diagram readable (not too complex)
-
Load Template:
- Template location:
commands/docs/templates/ - Select based on diagram type:
er→data-model.mdarch→architecture.mddeployment→deployment.mdsecurity→security.md
- Template location:
-
Populate Template: Replace placeholders:
{{PROJECT_NAME}}- Git repo or directory name{{DATE}}- Current date{{ER_DIAGRAM}}or{{DIAGRAM_CONTENT}}- Generated Mermaid code{{ENTITIES}}or{{COMPONENTS}}- Entity/component descriptions- Other diagram-specific placeholders
-
Create or Update Documentation:
- Output to appropriate file in
docs/ - If file exists, ask before overwriting
- Preserve custom content if possible
- Output to appropriate file in
-
Report Results:
- Show diagram type and output file
- Display summary of what was detected
- Provide next steps
Supported Diagram Types
ER Diagram (er)
Output: docs/data-model.md
Entity-Relationship diagram from database models.
Detects:
- Tables and entities
- Columns with data types
- Primary keys
- Foreign keys
- Relationships
- Constraints
Mermaid syntax:
erDiagram
USER ||--o| PROFILE : "has"
USER {
uuid id PK
string email UK
string password_hash
}
PROFILE {
uuid id PK
uuid user_id FK
string bio
}
Architecture Diagram (arch)
Output: docs/architecture.md
System architecture and component relationships.
Detects:
- Services and modules
- API endpoints
- Databases
- Caches
- Message queues
- External services
Mermaid syntax:
graph TB
Client[Web Client]
API[API Server]
DB[(Database)]
Cache[(Redis)]
Client --> API
API --> DB
API --> Cache
Deployment Diagram (deployment)
Output: docs/deployment.md
Deployment infrastructure and CI/CD.
Detects:
- Docker containers
- Kubernetes resources
- Cloud services
- CI/CD pipeline stages
- Environment configurations
Mermaid syntax:
graph LR
Dev[Development]
CI[CI Pipeline]
Stage[Staging]
Prod[Production]
Dev --> CI
CI --> Stage
Stage --> Prod
Security Diagram (security)
Output: docs/security.md
Security architecture and data flow.
Detects:
- Authentication flows
- Authorization boundaries
- Encryption points
- Security controls
- Trust boundaries
Mermaid syntax:
graph TB
User[User]
Auth[Auth Service]
API[Protected API]
DB[(Encrypted DB)]
User -->|JWT| Auth
Auth -->|Validated| API
API -->|TLS| DB
Usage
Generate specific diagram type:
/docs:diagram er
/docs:diagram arch
/docs:diagram deployment
/docs:diagram security
With additional context:
/docs:diagram er for user and order tables
/docs:diagram arch for microservices architecture
/docs:diagram deployment with Docker and Kubernetes
Show available types:
/docs:diagram
ORM Detection Examples
Python ORMs
# SQLAlchemy
!`find . -name "*models.py" -exec grep -l "Base\|Column\|relationship" {} \; | head -10`
# Django
!`find . -name "models.py" -exec grep -l "models.Model" {} \; | head -10`
# Tortoise ORM
!`find . -name "*.py" -exec grep -l "tortoise.models" {} \; | head -10`
JavaScript/TypeScript ORMs
# Prisma
!`find . -name "schema.prisma"`
# TypeORM
!`find . -name "*.entity.ts" -o -name "*entity.js" | head -10`
# Sequelize
!`find . -name "*.model.js" -o -name "*.model.ts" | head -10`
Architecture Detection Examples
# Find services
!`find . -name "*service*.ts" -o -name "*service*.py" -o -name "*service*.js" | head -15`
# Find API routes
!`find . -name "*router*.ts" -o -name "*routes*.py" -o -name "*controller*.js" | head -15`
# Find configs
!`find . -name "*.config.js" -o -name "*.config.ts" -o -name "config.py" | head -10`
Deployment Detection Examples
# Docker
!`find . -name "Dockerfile" -o -name "docker-compose.yml" -o -name "docker-compose.yaml"`
# Kubernetes
!`find . -name "*.k8s.yaml" -o -name "*.k8s.yml" -o -name "*deployment.yaml"`
# CI/CD
!`find . -name ".github/workflows/*.yml" -o -name ".gitlab-ci.yml" -o -name "Jenkinsfile"`
Important Notes
- Auto-detection: Diagrams generated from actual code
- Mermaid format: Uses GitHub-compatible Mermaid syntax
- Readable diagrams: Limits complexity for clarity
- Incremental: Can regenerate as code evolves
- Template-based: Uses templates for consistent formatting
- Context-aware: Uses optional context to guide generation
Example Output
ER Diagram Generated ✓
Detected: 5 entities, 12 relationships
File: docs/data-model.md
Entities Found:
✓ User (SQLAlchemy model)
✓ Profile (SQLAlchemy model)
✓ Role (SQLAlchemy model)
✓ Permission (SQLAlchemy model)
✓ UserRole (junction table)
Relationships:
✓ User → Profile (one-to-one)
✓ User → UserRole (one-to-many)
✓ Role → UserRole (one-to-many)
✓ Role → Permission (many-to-many)
Next Steps:
1. Review generated ER diagram
2. Add entity descriptions if needed
3. Update when schema changes
4. Reference in architecture docs
When to Run
Run when:
- Database schema has been modified (
er) - Architecture has evolved (
arch) - Deployment configuration changed (
deployment) - Security architecture modified (
security) - Onboarding new team members (all diagrams)
- Documentation review (all diagrams)
Best Practices
- Keep current: Regenerate after significant changes
- Review generated: Always review auto-generated content
- Add context: Supplement with manual descriptions
- Link diagrams: Reference diagrams in related docs
- Version control: Commit diagram updates with code changes
- Simplify: Break complex diagrams into multiple views
Template Location: commands/docs/templates/
Output Directory: docs/