mirror of
https://github.com/github/awesome-copilot.git
synced 2026-04-13 19:55:56 +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
225 lines
13 KiB
Plaintext
225 lines
13 KiB
Plaintext
<mxfile host="Electron" modified="2026-03-25T00:00:00.000Z" version="26.0.0">
|
|
<diagram id="uml-class" name="UML Class Diagram">
|
|
<mxGraphModel dx="1422" dy="762" grid="1" gridSize="10" guides="1"
|
|
tooltips="1" connect="1" arrows="1" fold="1"
|
|
page="1" pageScale="1" pageWidth="1169" pageHeight="827"
|
|
math="0" shadow="0">
|
|
<root>
|
|
<mxCell id="0" />
|
|
<mxCell id="1" parent="0" />
|
|
|
|
<!-- TITLE -->
|
|
<mxCell id="2" value="UML Class Diagram"
|
|
style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;fontSize=18;fontStyle=1;"
|
|
vertex="1" parent="1">
|
|
<mxGeometry x="334" y="20" width="500" height="40" as="geometry" />
|
|
</mxCell>
|
|
|
|
<!-- ====== INTERFACE: IOrderRepository ====== -->
|
|
<mxCell id="iface1" value="«interface»
IOrderRepository"
|
|
style="swimlane;fontStyle=3;align=center;startSize=40;fillColor=#f5f5f5;strokeColor=#666666;fontColor=#333333;fontSize=13;"
|
|
vertex="1" parent="1">
|
|
<mxGeometry x="400" y="80" width="260" height="170" as="geometry" />
|
|
</mxCell>
|
|
<mxCell id="iface1_div" value=""
|
|
style="swimlane;startSize=0;fillColor=none;strokeColor=#666666;"
|
|
vertex="1" parent="iface1">
|
|
<mxGeometry y="40" width="260" height="1" as="geometry" />
|
|
</mxCell>
|
|
<mxCell id="iface1_m1" value="+ findById(id: UUID): Order"
|
|
style="text;html=1;align=left;verticalAlign=top;spacingLeft=5;whiteSpace=wrap;overflow=hidden;rotatable=0;"
|
|
vertex="1" parent="iface1">
|
|
<mxGeometry y="50" width="260" height="30" as="geometry" />
|
|
</mxCell>
|
|
<mxCell id="iface1_m2" value="+ findByUserId(userId: UUID): Order[]"
|
|
style="text;html=1;align=left;verticalAlign=top;spacingLeft=5;whiteSpace=wrap;overflow=hidden;rotatable=0;"
|
|
vertex="1" parent="iface1">
|
|
<mxGeometry y="80" width="260" height="30" as="geometry" />
|
|
</mxCell>
|
|
<mxCell id="iface1_m3" value="+ save(order: Order): Order"
|
|
style="text;html=1;align=left;verticalAlign=top;spacingLeft=5;whiteSpace=wrap;overflow=hidden;rotatable=0;"
|
|
vertex="1" parent="iface1">
|
|
<mxGeometry y="110" width="260" height="30" as="geometry" />
|
|
</mxCell>
|
|
<mxCell id="iface1_m4" value="+ delete(id: UUID): void"
|
|
style="text;html=1;align=left;verticalAlign=top;spacingLeft=5;whiteSpace=wrap;overflow=hidden;rotatable=0;"
|
|
vertex="1" parent="iface1">
|
|
<mxGeometry y="140" width="260" height="30" as="geometry" />
|
|
</mxCell>
|
|
|
|
<!-- ====== CLASS: Order ====== -->
|
|
<mxCell id="cls_order" value="Order"
|
|
style="swimlane;fontStyle=1;align=center;startSize=40;fillColor=#dae8fc;strokeColor=#6c8ebf;fontSize=13;"
|
|
vertex="1" parent="1">
|
|
<mxGeometry x="80" y="370" width="280" height="290" as="geometry" />
|
|
</mxCell>
|
|
<!-- Attributes section divider -->
|
|
<mxCell id="cls_order_d1" value=""
|
|
style="swimlane;startSize=0;fillColor=none;strokeColor=#6c8ebf;"
|
|
vertex="1" parent="cls_order">
|
|
<mxGeometry y="40" width="280" height="1" as="geometry" />
|
|
</mxCell>
|
|
<mxCell id="cls_order_a1" value="- id: UUID"
|
|
style="text;html=1;align=left;verticalAlign=top;spacingLeft=5;whiteSpace=wrap;overflow=hidden;rotatable=0;"
|
|
vertex="1" parent="cls_order">
|
|
<mxGeometry y="50" width="280" height="25" as="geometry" />
|
|
</mxCell>
|
|
<mxCell id="cls_order_a2" value="- userId: UUID"
|
|
style="text;html=1;align=left;verticalAlign=top;spacingLeft=5;whiteSpace=wrap;overflow=hidden;rotatable=0;"
|
|
vertex="1" parent="cls_order">
|
|
<mxGeometry y="75" width="280" height="25" as="geometry" />
|
|
</mxCell>
|
|
<mxCell id="cls_order_a3" value="- items: OrderItem[]"
|
|
style="text;html=1;align=left;verticalAlign=top;spacingLeft=5;whiteSpace=wrap;overflow=hidden;rotatable=0;"
|
|
vertex="1" parent="cls_order">
|
|
<mxGeometry y="100" width="280" height="25" as="geometry" />
|
|
</mxCell>
|
|
<mxCell id="cls_order_a4" value="- status: OrderStatus"
|
|
style="text;html=1;align=left;verticalAlign=top;spacingLeft=5;whiteSpace=wrap;overflow=hidden;rotatable=0;"
|
|
vertex="1" parent="cls_order">
|
|
<mxGeometry y="125" width="280" height="25" as="geometry" />
|
|
</mxCell>
|
|
<mxCell id="cls_order_a5" value="- total: Decimal"
|
|
style="text;html=1;align=left;verticalAlign=top;spacingLeft=5;whiteSpace=wrap;overflow=hidden;rotatable=0;"
|
|
vertex="1" parent="cls_order">
|
|
<mxGeometry y="150" width="280" height="25" as="geometry" />
|
|
</mxCell>
|
|
<!-- Methods divider -->
|
|
<mxCell id="cls_order_d2" value=""
|
|
style="swimlane;startSize=0;fillColor=none;strokeColor=#6c8ebf;"
|
|
vertex="1" parent="cls_order">
|
|
<mxGeometry y="175" width="280" height="1" as="geometry" />
|
|
</mxCell>
|
|
<mxCell id="cls_order_m1" value="+ addItem(item: OrderItem): void"
|
|
style="text;html=1;align=left;verticalAlign=top;spacingLeft=5;whiteSpace=wrap;overflow=hidden;rotatable=0;"
|
|
vertex="1" parent="cls_order">
|
|
<mxGeometry y="185" width="280" height="25" as="geometry" />
|
|
</mxCell>
|
|
<mxCell id="cls_order_m2" value="+ removeItem(itemId: UUID): void"
|
|
style="text;html=1;align=left;verticalAlign=top;spacingLeft=5;whiteSpace=wrap;overflow=hidden;rotatable=0;"
|
|
vertex="1" parent="cls_order">
|
|
<mxGeometry y="210" width="280" height="25" as="geometry" />
|
|
</mxCell>
|
|
<mxCell id="cls_order_m3" value="+ calculateTotal(): Decimal"
|
|
style="text;html=1;align=left;verticalAlign=top;spacingLeft=5;whiteSpace=wrap;overflow=hidden;rotatable=0;"
|
|
vertex="1" parent="cls_order">
|
|
<mxGeometry y="235" width="280" height="25" as="geometry" />
|
|
</mxCell>
|
|
<mxCell id="cls_order_m4" value="+ confirm(): void"
|
|
style="text;html=1;align=left;verticalAlign=top;spacingLeft=5;whiteSpace=wrap;overflow=hidden;rotatable=0;"
|
|
vertex="1" parent="cls_order">
|
|
<mxGeometry y="260" width="280" height="25" as="geometry" />
|
|
</mxCell>
|
|
|
|
<!-- ====== CLASS: OrderItem ====== -->
|
|
<mxCell id="cls_item" value="OrderItem"
|
|
style="swimlane;fontStyle=1;align=center;startSize=40;fillColor=#d5e8d4;strokeColor=#82b366;fontSize=13;"
|
|
vertex="1" parent="1">
|
|
<mxGeometry x="480" y="370" width="280" height="230" as="geometry" />
|
|
</mxCell>
|
|
<mxCell id="cls_item_d1" value=""
|
|
style="swimlane;startSize=0;fillColor=none;strokeColor=#82b366;"
|
|
vertex="1" parent="cls_item">
|
|
<mxGeometry y="40" width="280" height="1" as="geometry" />
|
|
</mxCell>
|
|
<mxCell id="cls_item_a1" value="- id: UUID"
|
|
style="text;html=1;align=left;verticalAlign=top;spacingLeft=5;whiteSpace=wrap;overflow=hidden;rotatable=0;"
|
|
vertex="1" parent="cls_item">
|
|
<mxGeometry y="50" width="280" height="25" as="geometry" />
|
|
</mxCell>
|
|
<mxCell id="cls_item_a2" value="- productName: string"
|
|
style="text;html=1;align=left;verticalAlign=top;spacingLeft=5;whiteSpace=wrap;overflow=hidden;rotatable=0;"
|
|
vertex="1" parent="cls_item">
|
|
<mxGeometry y="75" width="280" height="25" as="geometry" />
|
|
</mxCell>
|
|
<mxCell id="cls_item_a3" value="- quantity: int"
|
|
style="text;html=1;align=left;verticalAlign=top;spacingLeft=5;whiteSpace=wrap;overflow=hidden;rotatable=0;"
|
|
vertex="1" parent="cls_item">
|
|
<mxGeometry y="100" width="280" height="25" as="geometry" />
|
|
</mxCell>
|
|
<mxCell id="cls_item_a4" value="- unitPrice: Decimal"
|
|
style="text;html=1;align=left;verticalAlign=top;spacingLeft=5;whiteSpace=wrap;overflow=hidden;rotatable=0;"
|
|
vertex="1" parent="cls_item">
|
|
<mxGeometry y="125" width="280" height="25" as="geometry" />
|
|
</mxCell>
|
|
<mxCell id="cls_item_d2" value=""
|
|
style="swimlane;startSize=0;fillColor=none;strokeColor=#82b366;"
|
|
vertex="1" parent="cls_item">
|
|
<mxGeometry y="150" width="280" height="1" as="geometry" />
|
|
</mxCell>
|
|
<mxCell id="cls_item_m1" value="+ subtotal(): Decimal"
|
|
style="text;html=1;align=left;verticalAlign=top;spacingLeft=5;whiteSpace=wrap;overflow=hidden;rotatable=0;"
|
|
vertex="1" parent="cls_item">
|
|
<mxGeometry y="160" width="280" height="25" as="geometry" />
|
|
</mxCell>
|
|
<mxCell id="cls_item_m2" value="+ validate(): boolean"
|
|
style="text;html=1;align=left;verticalAlign=top;spacingLeft=5;whiteSpace=wrap;overflow=hidden;rotatable=0;"
|
|
vertex="1" parent="cls_item">
|
|
<mxGeometry y="185" width="280" height="25" as="geometry" />
|
|
</mxCell>
|
|
|
|
<!-- ====== ENUM: OrderStatus ====== -->
|
|
<mxCell id="enum1" value="«enumeration»
OrderStatus"
|
|
style="swimlane;fontStyle=3;align=center;startSize=40;fillColor=#fff2cc;strokeColor=#d6b656;fontSize=13;"
|
|
vertex="1" parent="1">
|
|
<mxGeometry x="820" y="370" width="200" height="170" as="geometry" />
|
|
</mxCell>
|
|
<mxCell id="enum1_d1" value=""
|
|
style="swimlane;startSize=0;fillColor=none;strokeColor=#d6b656;"
|
|
vertex="1" parent="enum1">
|
|
<mxGeometry y="40" width="200" height="1" as="geometry" />
|
|
</mxCell>
|
|
<mxCell id="enum1_v1" value="PENDING"
|
|
style="text;html=1;align=left;verticalAlign=top;spacingLeft=5;whiteSpace=wrap;overflow=hidden;rotatable=0;"
|
|
vertex="1" parent="enum1">
|
|
<mxGeometry y="50" width="200" height="25" as="geometry" />
|
|
</mxCell>
|
|
<mxCell id="enum1_v2" value="CONFIRMED"
|
|
style="text;html=1;align=left;verticalAlign=top;spacingLeft=5;whiteSpace=wrap;overflow=hidden;rotatable=0;"
|
|
vertex="1" parent="enum1">
|
|
<mxGeometry y="75" width="200" height="25" as="geometry" />
|
|
</mxCell>
|
|
<mxCell id="enum1_v3" value="SHIPPED"
|
|
style="text;html=1;align=left;verticalAlign=top;spacingLeft=5;whiteSpace=wrap;overflow=hidden;rotatable=0;"
|
|
vertex="1" parent="enum1">
|
|
<mxGeometry y="100" width="200" height="25" as="geometry" />
|
|
</mxCell>
|
|
<mxCell id="enum1_v4" value="DELIVERED"
|
|
style="text;html=1;align=left;verticalAlign=top;spacingLeft=5;whiteSpace=wrap;overflow=hidden;rotatable=0;"
|
|
vertex="1" parent="enum1">
|
|
<mxGeometry y="125" width="200" height="25" as="geometry" />
|
|
</mxCell>
|
|
<mxCell id="enum1_v5" value="CANCELLED"
|
|
style="text;html=1;align=left;verticalAlign=top;spacingLeft=5;whiteSpace=wrap;overflow=hidden;rotatable=0;"
|
|
vertex="1" parent="enum1">
|
|
<mxGeometry y="150" width="200" height="25" as="geometry" />
|
|
</mxCell>
|
|
|
|
<!-- ====== RELATIONSHIPS ====== -->
|
|
|
|
<!-- Order REALIZES IOrderRepository (dashed + open triangle) -->
|
|
<mxCell id="rel_realize" value=""
|
|
style="edgeStyle=orthogonalEdgeStyle;html=1;endArrow=block;endFill=0;dashed=1;exitX=0.5;exitY=0;exitDx=0;exitDy=0;entryX=0.5;entryY=1;entryDx=0;entryDy=0;"
|
|
edge="1" source="cls_order" target="iface1" parent="1">
|
|
<mxGeometry relative="1" as="geometry" />
|
|
</mxCell>
|
|
|
|
<!-- Order COMPOSITION OrderItem (filled diamond on Order side) -->
|
|
<mxCell id="rel_compose" value="1 *"
|
|
style="edgeStyle=orthogonalEdgeStyle;html=1;startArrow=ERmandOne;endArrow=ERmany;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;"
|
|
edge="1" source="cls_order" target="cls_item" parent="1">
|
|
<mxGeometry relative="1" as="geometry" />
|
|
</mxCell>
|
|
|
|
<!-- Order USES OrderStatus (dashed dependency) -->
|
|
<mxCell id="rel_dep" value="«use»"
|
|
style="edgeStyle=orthogonalEdgeStyle;html=1;endArrow=open;startArrow=none;dashed=1;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;"
|
|
edge="1" source="cls_order" target="enum1" parent="1">
|
|
<mxGeometry relative="1" as="geometry" />
|
|
</mxCell>
|
|
|
|
</root>
|
|
</mxGraphModel>
|
|
</diagram>
|
|
</mxfile>
|