Skill: leslietong2046-ship-it/swimlane-arch-skill (version 1.1.6)

--- name: swimlane-arch description: | 业务流程图×系统架构图，一句话出图。支持横向泳道、竖向泳道和分层架构图，输出Draw.io XML格式直接可编辑。 触发关键词：泳道图、架构图、流程图、swimlane、一句话出图、画个图、业务流程、系统架构 version: 1.1.5 metadata: openclaw: requires: env: [] bins: [] primaryEnv: "" emoji: "🗺️" --- # 泳道图架构图一句话生成 > 业务流程图 × 系统架构图，一句话出图 **版本**: 1.1.4 --- ## ⚡ 30秒体验 对你的Agent说： > "画个政务审批泳道图" 一句话生成Draw.io XML — 横向/竖向泳道、分层架构，直接打开就能编辑，配色专业美观。 ## 技能定位 泳道图架构图一句话生成 是一款智能图表生成器，一句话就能生成专业的 Draw.io XML 图表。 ### 核心能力 - **泳道图（Swimlane）**：支持横向泳道和竖向泳道两种方向，多角色/多部门清晰展示跨角色业务流转，政务场景友好 - **架构图（Architecture）**：分层架构（用户层→应用层→服务层→数据层→基础设施层），支持微服务/API/数据库等组件 - **双格式输出**： - **Draw.io XML**（`.drawio`）：默认格式，直接在 [diagrams.net](https://app.diagrams.net) 打开编辑 - **ProcessOn**（需配置 API Key）：如检测到 `PROCESSON_API_KEY`，自动调用 ProcessOn API 生成更精美的云端图表 - **自然语言交互**：无需了解图表语法，用日常语言描述即可 --- ## 泳道图（Swimlane Diagram）规范 ### 结构规范 #### 方向选择 | 方向 | 适用场景 | 触发关键词 | |------|---------|-----------| | **横向泳道**（默认） | 角色少、流程步骤多、强调时序推进 | 默认，或"横向""水平" | | **竖向泳道** | 角色多、流程步骤少、强调角色分工对比 | "竖向""纵向""竖版""垂直" | #### 横向泳道 1. **泳道方向**：横向泳道，每个泳道代表一个角色/部门/系统 2. **排列顺序**：泳道从上到下排列，角色名在左侧标签区 3. **流程节点**：节点在对应泳道内，用箭头连接 4. **起止标识**： - 起始节点：实心圆（绿色，#82b366） - 结束节点：圆环+实心圆（红色，#d9574a） #### 竖向泳道 1. **泳道方向**：竖向泳道，每个泳道代表一个角色/部门/系统 2. **排列顺序**：泳道从左到右排列，角色名在顶部标签区 3. **流程节点**：节点在对应泳道内，从上到下流转 4. **起止标识**： - 起始节点：实心圆（绿色，#82b366） - 结束节点：圆环+实心圆（红色，#d9574a） 5. **适用场景**： - 多角色并行对比（如多个部门各自流程并排展示） - 角色分工明确但流程不长的场景（如政务审批多部门会签） - 需要强调角色间横向交互的场景 ### 竖向泳道 XML 生成规范 竖向泳道的 Draw.io XML 关键差异： ```xml <!-- 竖向泳道：使用 horizontal=0 或在 style 中指定方向 --> <mxCell id="swimlane1" value="角色名称" style="swimlane;horizontal=0;fillColor=#f5f5f5;strokeColor=#666666;fontSize=14;fontStyle=1;startSize=40;" vertex="1" parent="1"> <mxGeometry x="0" y="0" width="300" height="800" as="geometry" /> </mxCell> ``` 关键参数： - `horizontal=0`：泳道竖向排列（角色标签在顶部） - `startSize=40`：顶部标签区高度 - 泳道宽度固定（约300px），高度随流程步骤增加 - 节点在泳道内从上到下排列，y坐标递增 - 跨泳道箭头为水平方向连接 ### 节点类型与样式 | 节点类型 | 形状 | 填充色 | 边框色 | |---------|------|-------|--------| | 开始/结束 | 圆形 | #82b366 / #d9574a | #333333 | | 活动节点 | 圆角矩形 | #dae8fc | #6c8ebf | | 判断节点 | 菱形 | #fff2cc | #d6b656 | | 子流程 | 双边框矩形 | #f8cecc | #b85450 | | 数据/文档 | 波浪底矩形 | #f5f5f5 | #666666 | ### 箭头规范 | 路径类型 | 线型 | 颜色 | 标注 | |---------|------|------|------| | 主流程 | 实线箭头 | 黑色 #333333 | 无 | | 判断"是" | 实线箭头 | 绿色 #82b366 | 是 | | 判断"否" | 虚线箭头 | 红色 #d9574a | 否 | | 跨泳道连接（横向泳道） | 垂直箭头 | 黑色 #333333 | 交互说明 | | 跨泳道连接（竖向泳道） | 水平箭头 | 黑色 #333333 | 交互说明 | ### 样式参数 - **泳道标题区**：深色背景（#f5f5f5），加粗文字，14px - **泳道内容区**：白色背景 - **整体尺寸**：宽度自适应，最小 1200px - **泳道高度**：每条至少 200px - **字体**：微软雅黑，节点内 12px - **节点内边距**：上下 8px，左右 12px ### 政务场景常见角色 - 申请人/群众 - 窗口受理人员 - 部门审批人员 - 领导决策 - 系统自动处理 - 第三方机构 --- ## 架构图（Architecture Diagram）规范 ### 分层架构规范 从下到上依次为： 1. **基础设施层**（最底层） 2. **数据层** 3. **服务层** 4. **应用层** 5. **用户层**（最顶层） ### 节点样式 | 层级 | 形状 | 填充色 | 边框色 | |------|------|-------|--------| | 用户层 | 圆角矩形 | #d5e8d4 | #82b366 | | 应用层 | 圆角矩形 | #dae8fc | #6c8ebf | | 服务层 | 圆角矩形 | #fff2cc | #d6b656 | | 数据层 | 圆柱体形状 | #e1d5e7 | #9673a6 | | 基础设施层 | 矩形 | #f5f5f5 | #666666 | ### 特殊节点 - **数据库**：圆柱体形状（style 包含 `shape=cylinder3`） - **外部系统**：虚线边框矩形（dashed=1） - **API/网关**：六边形（hexagon） - **微服务**：带云图标边框 ### 连接线规范 | 关系类型 | 线型 | 说明 | |---------|------|------| | 同步调用 | 实线箭头 | 标准服务调用 | | 异步消息 | 虚线箭头 | 消息队列场景 | | 数据流 | 实线+标注 | 带数据说明 | | 依赖关系 | 箭头 | A→B 表示 A 依赖 B | --- ## 输出格式说明 ### Draw.io XML（默认） 生成 `.drawio` 文件，可在 [diagrams.net](https://app.diagrams.net) 直接打开编辑，无需任何账号。 ```xml <?xml version="1.0" encoding="UTF-8"?> <mxGraphModel dx="900" dy="900" grid="1" gridSize="10" guides="1" ...> <root> <mxCell id="0" /> <mxCell id="1" parent="0" /> <!-- 泳道和节点定义 --> </root> </mxGraphModel> ``` ### ProcessOn（需配置 API Key） 如用户配置了 ProcessOn API Key（环境变量 `PROCESSON_API_KEY`），则优先调用 ProcessOn API： 1. 将图表转换为 ProcessOn 支持的格式 2. 调用 `POST https://open.pingcode.com/v1/graph` 上传并生成图片 3. 返回 ProcessOn 在线链接，支持更多人协作 若未配置 ProcessOn API Key，默认输出 Draw.io XML 格式。 --- ## 生成流程 ### Step 1: 理解需求 从用户描述中提取： - **泳道图**：角色列表、流程步骤、所属角色、判断分支、跨角色交互 - **架构图**：架构层次、各层组件、组件调用关系、数据流向 ### Step 2: 结构化解析 **泳道图解析逻辑**： ``` 输入描述 → 识别角色 → 梳理流程 → 标记判断 → 确定交互 ``` **架构图解析逻辑**： ``` 输入描述 → 识别层次 → 梳理组件 → 确定关系 → 标注流向 ``` ### Step 3: 生成 Draw.io XML 必须遵循的 XML 规范： 1. 使用 mxGraphModel 作为根元素 2. 每个元素使用 mxCell 定义，id 必须唯一 3. 泳道使用 `swimlane` 关键字标识 4. 箭头使用 edge 类型，source/target 指向节点 id 5. 合理计算坐标位置，避免重叠 ### Step 4: 保存文件 - 文件路径：`{工作目录}/{用户指定名称或自动生成名称}.drawio` - 编码：UTF-8 --- ## XML 生成关键规范 ### 节点定义示例 ```xml <mxCell id="node1" value="开始" style="ellipse;fillColor=#82b366;strokeColor=#333333;fontColor=#000000;" vertex="1" parent="1"> <mxGeometry x="100" y="100" width="80" height="80" as="geometry" /> </mxCell> ``` ### 泳道定义示例 **横向泳道**（默认）： ```xml <mxCell id="swimlane1" value="角色名称" style="swimlane;fillColor=#f5f5f5;strokeColor=#666666;fontSize=14;fontStyle=1;" vertex="1" parent="1"> <mxGeometry x="0" y="0" width="400" height="300" as="geometry" /> </mxCell> ``` **竖向泳道**： ```xml <mxCell id="swimlane1" value="角色名称" style="swimlane;horizontal=0;fillColor=#f5f5f5;strokeColor=#666666;fontSize=14;fontStyle=1;startSize=40;" vertex="1" parent="1"> <mxGeometry x="0" y="0" width="300" height="800" as="geometry" /> </mxCell> ``` ### 箭头定义示例 ```xml <mxCell id="edge1" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;arrowColor=#333333;" edge="1" parent="1" source="node1" target="node2"> <mxGeometry relative="1" as="geometry" /> </mxCell> ``` --- ## 交互规范 ### 用户交互方式 用户只需用自然语言描述流程或架构，例如： - "画一个用户注册登录的泳道图" - "生成政务服务事项办理流程图" - "做一个微服务架构图" ### 自动识别逻辑 1. **图类型判断**： - 提到"角色"、"流程"、"办理" → 泳道图 - 提到"架构"、"层"、"服务"、"系统" → 架构图 - 混合描述时，优先泳道图（更常用） 2. **泳道方向判断**： - 用户提到"竖向""纵向""竖版""垂直" → 竖向泳道 - 角色数量≥4且流程步骤≤6 → 自动推荐竖向泳道 - 其他情况 → 横向泳道（默认） 2. **信息补全**： - 如果用户描述的信息不足以生成完整图，列出需要补充的点 - 但不要逐个追问，一次性列出所有缺失信息 ### 输出提示 生成完成后告知： 1. 文件保存路径 2. 提醒可在 diagrams.net 打开编辑 3. 如有自定义需求可继续调整 --- ## 文件路径 - 主文件：`泳道图架构图一句话生成/SKILL.md` - 参考模板： - `泳道图架构图一句话生成/references/swimlane-template.xml` - `泳道图架构图一句话生成/references/arch-template.xml` --- ## 完整生成示例 ### 示例：电商订单处理泳道图 **用户输入**： > 画一个电商订单处理流程图，包含用户、订单系统、库存系统、支付系统4个角色，从下单到发货的完整流程 **生成步骤**： 1. **识别角色**：用户、订单系统、库存系统、支付系统 2. **识别流程**： - 用户 → 提交订单 → 订单系统 - 订单系统 → 扣减库存 → 库存系统 - 订单系统 → 请求支付 → 支付系统 - 支付成功 → 发货 → 用户 3. **判断分支**：支付成功/失败 4. **泳道方向**：横向（4个角色，流程步骤适中） **生成输出**： ```xml <?xml version="1.0" encoding="UTF-8"?> <mxGraphModel dx="1200" dy="800" grid="1" gridSize="10" guides="1" tools="ext"> <root> <mxCell id="0" /> <mxCell id="1" parent="0" /> <!-- 泳道1：用户 --> <mxCell id="swimlane1" value="用户" style="swimlane;fillColor=#f5f5f5;strokeColor=#666666;fontSize=14;fontStyle=1;" vertex="1" parent="1"> <mxGeometry x="0" y="0" width="300" height="600" as="geometry" /> </mxCell> <!-- 开始节点 --> <mxCell id="node1" value="开始下单" style="ellipse;fillColor=#82b366;strokeColor=#333333;fontColor=#000000;" vertex="1" parent="swimlane1"> <mxGeometry x="100" y="50" width="100" height="60" as="geometry" /> </mxCell> <!-- 订单系统泳道 --> <mxCell id="swimlane2" value="订单系统" style="swimlane;fillColor=#f5f5f5;strokeColor=#666666;fontSize=14;fontStyle=1;" vertex="1" parent="1"> <mxGeometry x="300" y="0" width="300" height="600" as="geometry" /> </mxCell> <!-- 库存系统泳道 --> <mxCell id="swimlane3" value="库存系统" style="swimlane;fillColor=#f5f5f5;strokeColor=#666666;fontSize=14;fontStyle=1;" vertex="1" parent="1"> <mxGeometry x="600" y="0" width="300" height="600" as="geometry" /> </mxCell> <!-- 支付系统泳道 --> <mxCell id="swimlane4" value="支付系统" style="swimlane;fillColor=#f5f5f5;strokeColor=#666666;fontSize=14;fontStyle=1;" vertex="1" parent="1"> <mxGeometry x="900" y="0" width="300" height="600" as="geometry" /> </mxCell> <!-- 结束节点 --> <mxCell id="node8" value="收到货物" style="ellipse;fillColor=#d9574a;strokeColor=#333333;fontColor=#000000;" vertex="1" parent="swimlane1"> <mxGeometry x="100" y="500" width="100" height="60" as="geometry" /> </mxCell> </root> </mxGraphModel> ``` **保存路径**：`电商订单处理流程.drawio` **用户提示**： > 泳道图已生成！保存在 `电商订单处理流程.drawio`，可在 [diagrams.net](https://app.diagrams.net) 打开编辑。如需调整角色、流程步骤或添加判断分支，请告诉我。


Security scan verdicts — ClawScan: clean | static analysis: clean | VirusTotal: clean | SkillSpector: suspicious (HIGH)