--- name: drawio-diagram-forge description: Generate draw.io editable diagrams (.drawio, .drawio.svg) from text, images, or Excel. Orchestrates 3-agent workflow (Analysis → Manifest → SVG generation) with quality gates. Use when creating architecture diagrams, flowcharts, sequence diagrams, or converting existing images to editable format. Supports Azure/AWS cloud icons. license: CC BY-NC-SA 4.0 metadata: author: yamapan (https://github.com/aktsmm) --- # Draw.io Diagram Forge Generate **draw.io editable diagrams** using AI-powered orchestrated workflow. ## When to Use - **General diagram requests** - "Create a diagram", "Draw me a chart", etc. - Creating architecture diagrams (Azure, AWS, on-premises) - Converting flowcharts, system diagrams from text descriptions - Transforming existing images/screenshots into editable draw.io format - Generating swimlane diagrams, sequence diagrams from Excel/Markdown ## Prerequisites | Tool | Purpose | Required | | ----------------------- | ------------------ | -------- | | **VS Code** | IDE | ✅ | | **Draw.io Integration** | Edit .drawio files | ✅ | | **GitHub Copilot** | AI generation | ✅ | **Install extension**: [Draw.io Integration](https://marketplace.visualstudio.com/items?itemName=hediet.vscode-drawio) ## Quick Start ### Basic Usage ``` Create a login flow diagram ``` ``` Generate an Azure architecture diagram with Hub-Spoke topology ``` ``` Convert this Excel file to a flowchart ``` ### With Input Files ``` From inputs/requirements.md, create a system architecture diagram ``` ``` Recreate this image (inputs/architecture.png) as an editable draw.io file ``` ## Output Formats | Extension | Description | When to Use | | -------------- | ---------------------- | -------------------------------- | | `*.drawio` | Native draw.io format | ⭐ **Recommended** - Most stable | | `*.drawio.svg` | SVG + draw.io metadata | Embedding in Markdown/Web | | `*.drawio.png` | PNG + draw.io metadata | Image with edit capability | **Output directory**: `outputs/` ## Workflow Overview ``` USER INPUT │ ▼ ┌─────────────────────────────────────────────────┐ │ FLOW ORCHESTRATOR │ │ ┌─────────────────────────────────────────┐ │ │ │ Internal Modules: │ │ │ │ • Analysis (input classification) │ │ │ │ • Review (quality scoring) │ │ │ │ • State (context management) │ │ │ │ • Timeout (watchdog) │ │ │ └─────────────────────────────────────────┘ │ └─────────────────────────────────────────────────┘ │ ├──► MANIFEST GATEWAY (create manifest) │ └──► SVG FORGE (generate diagram + validation) │ ▼ COMPLETED (.drawio file) ``` ### Quality Gates | Score | Action | Description | | ------ | ----------- | -------------------------- | | 90-100 | ✅ Proceed | High quality, continue | | 85-89 | ⚠️ Note | Minor issues noted | | 70-84 | 🔄 Fix | Auto-fix and retry | | 50-69 | 📉 Simplify | Reduce complexity | | 30-49 | 📦 Partial | Deliver partial result | | 0-29 | ❌ Escalate | Ask user for clarification | ### Iteration Limits | Limit | Value | On Exceed | | ----------------- | ----- | -------------------------- | | Manifest revision | 2 | Force proceed with warning | | SVG revision | 2 | Partial success | | Total revisions | 4 | Partial success | | Total timeout | 45min | Checkpoint-based decision | ## Advanced: Agent Delegation For complex diagrams, explicitly invoke the orchestrator: ``` @flow-orchestrator Create a detailed microservices architecture from inputs/requirements.md ``` This triggers the full manifest → review → generation → review cycle. ## Cloud Icon Usage When generating cloud architecture diagrams, follow this **icon selection logic**: ### Step 1: Detect Cloud Provider Scan input for provider-specific keywords: | Provider | Keywords | | -------- | --------------------------------------------------------------------------------- | | Azure | `Azure`, `Microsoft Cloud`, `App Service`, `Azure AD`, `VNET`, `AKS`, `Key Vault` | | AWS | `AWS`, `Amazon`, `EC2`, `Lambda`, `S3`, `RDS`, `VPC`, `EKS`, `DynamoDB` | | GCP | `GCP`, `Google Cloud`, `Cloud Run`, `BigQuery`, `GKE`, `Cloud Functions` | | Alibaba | `Alibaba Cloud`, `Aliyun`, `ECS` (Alibaba context), `OSS`, `MaxCompute` | | IBM | `IBM Cloud`, `IBM Watson`, `IBM OpenShift` | | Cisco | `Cisco`, `Meraki`, `ACI`, `Nexus`, `ISE` | ### Step 2: Search for Matching Icon For each cloud service mentioned: 1. **Search** the appropriate icon library for a matching icon 2. **If found**: Use the provider-specific format (see below) 3. **If not found**: Use a generic shape with the service name as label ### Step 3: Apply Provider-Specific Format | Provider | Icon Format | Library Path | | ----------- | ------------------------------------------------------------- | ---------------------------------------------------------------------------------- | | **Azure** | `image=img/lib/azure2/{category}/{Icon}.svg` | [azure2](https://github.com/jgraph/drawio/tree/dev/src/main/webapp/img/lib/azure2) | | **AWS** | `shape=mxgraph.aws4.resourceIcon;resIcon=mxgraph.aws4.{icon}` | mxgraph.aws4.\* | | **GCP** | `shape=mxgraph.gcp2.{icon}` | mxgraph.gcp2.\* | | **Alibaba** | `shape=mxgraph.alibabacloud.{icon}` | mxgraph.alibabacloud.\* | | **IBM** | `image=img/lib/ibm/{category}/{icon}.svg` | [ibm](https://github.com/jgraph/drawio/tree/dev/src/main/webapp/img/lib/ibm) | | **Cisco** | `shape=mxgraph.cisco19.{icon}` | mxgraph.cisco19.\* | ### Step 4: Fallback for Unknown Services If no matching icon exists: ```xml ``` ### ⚠️ Critical: Azure Format ```xml ``` **Refer to** [cloud-icons.md](references/cloud-icons.md) for detailed SVG paths and style examples. ## Resources ### References | File | Description | | ----------------------------------------------------- | -------------------------------- | | [mxcell-structure.md](references/mxcell-structure.md) | mxCell XML structure for draw.io | | [cloud-icons.md](references/cloud-icons.md) | Azure/AWS icon usage guide | | [style-guide.md](references/style-guide.md) | Node colors, edge styles | ### Scripts | File | Description | | ------------------------------------------------ | ------------------------- | | [validate_drawio.py](scripts/validate_drawio.py) | Validate mxCell structure | ## Cloud Icons (Azure/AWS) To enable cloud icons in generated diagrams: 1. Open generated `.drawio` file in VS Code 2. Click **"+ More Shapes"** (bottom-left) 3. Enable: ✅ **Azure**, ✅ **AWS** 4. Click **Apply** ## Troubleshooting | Issue | Cause | Solution | | ----------------- | --------------------- | ------------------------- | | Blank in draw.io | Missing mxCell | Check `content` attribute | | Edges not visible | Invalid source/target | Verify node IDs | | Icons missing | Library not enabled | Enable Azure/AWS shapes | ## Technical Details ### How It Works AI generates **XML/SVG text** that renders as editable diagrams: ``` Natural Language → XML/mxGraphModel → Rendered Diagram ↑ ↑ ↑ Human input AI generates SVG rendering ``` ### mxCell Completeness Rule ``` Required mxCells >= 2 + nodes + edges ``` - `mxCell id="0"` (root) - `mxCell id="1"` (default parent) - One mxCell per node (`vertex="1"`) - One mxCell per edge (`edge="1"`)