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