mirror of
https://github.com/github/awesome-copilot.git
synced 2026-04-11 18:55:55 +00:00
* Add draw-io diagram generator skill for awesome github copilot * Add comprehensive shape libraries and style reference documentation for draw.io - Introduced a new markdown file for draw.io shape libraries detailing various built-in shapes, their style keys, and usage. - Added a complete style reference for `<mxCell>` elements, including universal style keys, shape-specific keys, edge styles, and color palettes. - Included examples for common styles and shapes to aid users in creating diagrams effectively. * Add draw-io diagram validation and shape addition scripts * Add new diagram templates for flowchart, sequence, and UML class diagrams - Created a flowchart template with a structured layout including start, steps, decision points, and end. - Added a sequence diagram template illustrating interactions between a client, API server, and database with activation boxes and message arrows. - Introduced a UML class diagram template featuring an interface, classes, attributes, methods, and relationships, including composition and realization. * Add draw-io diagram generator skill to README with detailed usage instructions and bundled assets * Add draw.io instructions with workflow, XML structure rules, style conventions, and validation checklist * Add draw.io diagram standards to README instructions for enhanced diagram creation and editing * Moving diagram templates to assets/ to follow agentskills structure - Moved flowchart template with start, steps, decision points, and end nodes. - Moved sequence diagram template illustrating interactions between a client, API server, and database. - Moved UML class diagram template featuring an interface, classes, attributes, methods, and relationships. * Clarify installation instructions for draw.io VS Code extension in SKILL.md
145 lines
5.9 KiB
Markdown
145 lines
5.9 KiB
Markdown
---
|
||
description: "Use when creating, editing, or reviewing draw.io diagrams and mxGraph XML in .drawio, .drawio.svg, or .drawio.png files."
|
||
applyTo: "**/*.drawio,**/*.drawio.svg,**/*.drawio.png"
|
||
---
|
||
|
||
# draw.io Diagram Standards
|
||
|
||
> **Skill**: Load `.github/skills/draw-io/SKILL.md` for full workflow, XML recipes, and troubleshooting before generating or editing any `.drawio` file.
|
||
|
||
---
|
||
|
||
## Required Workflow
|
||
|
||
Follow these steps for every draw.io task:
|
||
|
||
1. **Identify** the diagram type (flowchart / architecture / sequence / ER / UML / network / BPMN)
|
||
2. **Select** the matching template from `.github/skills/draw-io/templates/` and adapt it, or start from the minimal skeleton
|
||
3. **Plan** the layout on paper before writing XML — define tiers, actors, or entities first
|
||
4. **Generate** valid mxGraph XML following the rules below
|
||
5. **Validate** using `python .github/skills/draw-io/scripts/validate-drawio.py <file>`
|
||
6. **Confirm** the file renders by opening it in VS Code with the draw.io extension (`hediet.vscode-drawio`)
|
||
|
||
---
|
||
|
||
## XML Structure Rules (Non-Negotiable)
|
||
|
||
```xml
|
||
<!-- Set modified to the current ISO 8601 timestamp when generating a new file -->
|
||
<mxfile host="Electron" modified="" version="26.0.0">
|
||
<diagram id="unique-id" name="Page Name">
|
||
<mxGraphModel ...>
|
||
<root>
|
||
<mxCell id="0" /> <!-- REQUIRED: always first -->
|
||
<mxCell id="1" parent="0" /> <!-- REQUIRED: always second -->
|
||
<!-- all other cells go here -->
|
||
</root>
|
||
</mxGraphModel>
|
||
</diagram>
|
||
</mxfile>
|
||
```
|
||
|
||
- `id="0"` and `id="1"` **must** be present and must be the first two cells — no exceptions
|
||
- Every cell `id` must be **unique** within the diagram
|
||
- Every vertex (`vertex="1"`) must have a child `<mxGeometry x y width height as="geometry">`
|
||
- Every edge (`edge="1"`) must have `source`/`target` pointing to existing vertex ids — **exception**: floating edges (sequence diagram lifelines) use `<mxPoint as="sourcePoint">` and `<mxPoint as="targetPoint">` inside `<mxGeometry>` instead of `source`/`target` attributes
|
||
- Every cell except id=0 must have `parent` pointing to an existing id
|
||
- Children of a container (swimlane) use **coordinates relative to their parent**, not the canvas
|
||
|
||
---
|
||
|
||
## Mandatory Style Conventions
|
||
|
||
### Semantic Color Palette — Use consistently across the project
|
||
|
||
| Role | fillColor | strokeColor |
|
||
|---|---|---|
|
||
| Primary / Info (default) | `#dae8fc` | `#6c8ebf` |
|
||
| Success / Start / Positive | `#d5e8d4` | `#82b366` |
|
||
| Warning / Decision | `#fff2cc` | `#d6b656` |
|
||
| Error / End / Danger | `#f8cecc` | `#b85450` |
|
||
| Neutral / Interface | `#f5f5f5` | `#666666` |
|
||
| External / Partner | `#e1d5e7` | `#9673a6` |
|
||
|
||
### Always include on vertex shapes
|
||
|
||
```
|
||
whiteSpace=wrap;html=1;
|
||
```
|
||
|
||
### Use `html=1` whenever a label contains HTML tags (`<b>`, `<i>`, `<br>`)
|
||
|
||
### Standard connectors
|
||
|
||
```
|
||
edgeStyle=orthogonalEdgeStyle;html=1;
|
||
```
|
||
|
||
---
|
||
|
||
## Diagram-Type Quick Reference
|
||
|
||
| Type | Container | Key shapes | Connector style |
|
||
|---|---|---|---|
|
||
| Flowchart | None | `ellipse` (start/end), `rounded=1` (process), `rhombus` (decision) | `orthogonalEdgeStyle` |
|
||
| Architecture | `swimlane` per tier | `rounded=1` services, cloud/DB shapes | `orthogonalEdgeStyle` with labels |
|
||
| Sequence | None | `mxgraph.uml.actor`, dashed lifeline edges | `endArrow=block` (sync), `endArrow=open;dashed=1` (return) |
|
||
| ER Diagram | `shape=table;childLayout=tableLayout` | `shape=tableRow`, `shape=partialRectangle` | `entityRelationEdgeStyle;endArrow=ERmany;startArrow=ERone` |
|
||
| UML Class | `swimlane` per class | text rows for attributes/methods | `endArrow=block;endFill=0` (inherit), `dashed=1` (realize) |
|
||
|
||
---
|
||
|
||
## Layout Best Practices
|
||
|
||
- Align all coordinates to the **10 px grid** (values divisible by 10)
|
||
- **Horizontal**: 40–60 px gap between same-row shapes
|
||
- **Vertical**: 80–120 px gap between tier rows
|
||
- Standard shape size: `120 × 60` px (process), `200 × 100` px (decision diamond)
|
||
- Default canvas: A4 landscape `1169 × 827` px
|
||
- Maximum **40 cells per page** — split into multiple pages for larger diagrams
|
||
- Add a **title text cell** at top of every page:
|
||
```
|
||
style="text;strokeColor=none;fillColor=none;fontSize=18;fontStyle=1;align=center;"
|
||
```
|
||
|
||
---
|
||
|
||
## File and Naming Conventions
|
||
|
||
- Extension: `.drawio` for version-controlled diagrams, `.drawio.svg` for files embedded in Markdown
|
||
- Naming: `kebab-case` — e.g. `order-flow.drawio`, `database-schema.drawio`
|
||
- Location: `docs/` or `architecture/` alongside the code they document
|
||
- Multi-page: use one `<diagram>` element per logical view within the same `<mxfile>`
|
||
|
||
---
|
||
|
||
## Validation Checklist (run before every commit)
|
||
|
||
- [ ] `<mxCell id="0" />` and `<mxCell id="1" parent="0" />` are the first two cells
|
||
- [ ] All cell ids are unique within their diagram
|
||
- [ ] All edge `source`/`target` ids resolve to existing vertices
|
||
- [ ] All vertex cells have `<mxGeometry as="geometry">`
|
||
- [ ] All cells (except id=0) have a valid `parent`
|
||
- [ ] XML is well-formed — no unclosed tags, no bare `&`, `<`, `>` in attribute values
|
||
- [ ] Semantic color palette used consistently
|
||
- [ ] Title cell present on every page
|
||
|
||
```bash
|
||
# Run automated validation
|
||
python .github/skills/draw-io/scripts/validate-drawio.py <file.drawio>
|
||
```
|
||
|
||
---
|
||
|
||
## Reference Files
|
||
|
||
| File | Use For |
|
||
|---|---|
|
||
| `.github/skills/draw-io/SKILL.md` | Full agent workflow, recipes, troubleshooting |
|
||
| `.github/skills/draw-io/references/drawio-xml-schema.md` | Complete mxCell attribute reference |
|
||
| `.github/skills/draw-io/references/style-reference.md` | All style keys, shape names, edge types |
|
||
| `.github/skills/draw-io/references/shape-libraries.md` | Shape library catalog with style strings |
|
||
| `.github/skills/draw-io/templates/` | Ready-to-use `.drawio` templates per diagram type |
|
||
| `.github/skills/draw-io/scripts/validate-drawio.py` | XML structure validator |
|
||
| `.github/skills/draw-io/scripts/add-shape.py` | CLI: add a shape to an existing diagram |
|