PlantUML图表绘制技能Skill plantuml

此技能提供使用PlantUML工具创建各种UML图表和架构图的全面指导,适用于软件开发、系统设计和企业架构。关键词:PlantUML, UML, 图表, 架构图, 软件架构, 企业架构, C4模型, 序列图, 类图, 组件图。

架构设计 0 次安装 0 次浏览 更新于 3/21/2026

name: plantuml description: 提供创建PlantUML图表的全面指南。PlantUML是一个组件,允许通过简单的文本描述创建各种UML图表。从序列图到部署图等,PlantUML提供了创建复杂系统视觉表示的简单方法。PlantUML主要专注于UML标准,适用于UML图表、企业架构、C4模型以及需要精确UML表示法的图表。当用户想要绘制、创建、生成、制作、构建或可视化任何UML图表、架构图或PlantUML支持的图表类型时使用此技能。此技能涵盖所有PlantUML图表类型:UML图表(序列图、用例图、类图、对象图、活动图、组件图、部署图、状态图、时序图),以及非UML图表(JSON/YAML数据、EBNF、正则表达式、网络图、Salt线框图、Archimate、SDL、Ditaa、甘特图、时间线图、思维导图、WBS、数学表示法、ER图、IE图、ER陈氏表示法、C4模型图)。当用户提到PlantUML、UML图表或需要精确UML表示法或C4模型支持的复杂架构图时,始终使用此技能。 license: 完整条款见LICENSE.txt

何时使用此技能

当用户提到以下内容时始终使用此技能:

  • PlantUML、UML图表或明确请求PlantUML语法
  • 复杂架构图、C4模型图或企业级图表
  • 标准UML图表:类图、序列图、组件图、部署图、状态图、活动图、用例图
  • 需要精确UML表示法的架构文档
  • 需要高级定制、样式或布局控制的图表
  • 企业系统架构、微服务架构或分布式系统图
  • 任何请求“用 PlantUML 画图”(用PlantUML绘制)、“用 UML 图”(使用UML图)、“画类图”(绘制类图)、“画组件图”(绘制组件图)

触发短语包括:

  • “用 PlantUML”(使用PlantUML)、“用 PlantUML 画”(用PlantUML绘制)、“PlantUML 语法”(PlantUML语法)
  • “UML 图”(UML图)、“类图”(类图)、“时序图”(序列图)、“组件图”(组件图)、“部署图”(部署图)
  • “C4 模型”(C4模型)、“架构图”(架构图)、“系统架构图”(系统架构图)
  • “活动图”(活动图)、“状态图”(状态图)、“用例图”(用例图)
  • “画 UML”(绘制UML)、“UML 类图”(UML类图)、“UML 时序图”(UML序列图)
  • 任何提及“PlantUML”、“UML”、“class diagram”(类图)、“sequence diagram”(序列图)、“component diagram”(组件图)、“deployment diagram”(部署图)、“C4 model”(C4模型)

重要提示:PlantUML vs Mermaid - 两个不同的图表工具:

PlantUML和Mermaid是两个不同目的的图表工具:

  • PlantUML:一个组件,允许通过简单的文本描述创建各种UML图表。从序列图到部署图等,PlantUML提供了创建复杂系统视觉表示的简单方法。PlantUML主要专注于UML标准,适用于UML图表、企业架构、C4模型以及需要精确UML表示法的图表。输出格式为@startuml/@enduml块或.puml文件。

  • Mermaid:一个基于JavaScript的图表和图表工具,使用Markdown风格的文本定义。主要目的是帮助文档跟上开发进度。Mermaid特别适用于Markdown文档、GitHub、GitLab、维基和博客。输出格式为带mermaid语言标签的围栏Markdown代码块。

当同时匹配PlantUML和Mermaid技能时:

  • 如果用户明确提到“PlantUML”、“UML diagram”(UML图)或“C4 model”(C4模型),使用此技能(PlantUML)
  • 如果用户明确提到“Mermaid”或“Markdown diagram”(Markdown图),则使用Mermaid技能
  • 如果用户参考UML标准或.puml,默认使用PlantUML
  • 如果用户参考Markdown上下文(README、维基、GitHub/GitLab、博客),默认使用Mermaid
  • 如果用户提到两者或都不提,始终询问用户选择:“我可以用PlantUML(@startuml)或Mermaid(Markdown代码块)创建此图表。您更喜欢哪种输出格式?”

如何使用此技能

关键提示:PlantUML是一个专注于UML的图表工具。当用户明确提到PlantUML、UML图表或需要具有精确UML表示法的复杂架构图时,应触发此技能。

触发此技能当您看到:

  • 用户说“用 PlantUML”(使用PlantUML)、“PlantUML 画图”(用PlantUML绘制)、“UML 图”(UML图)
  • 用户提到UML图表类型:类图、序列图、组件图、部署图等
  • 用户需要C4模型图或企业架构图
  • 用户明确请求PlantUML语法或提到PlantUML
  • 用户需要具有精确UML表示法或标准UML合规性的图表

当同时匹配PlantUML和Mermaid时,始终询问用户选择输出格式或工具,因为它们是两个不同目的的图表工具。

创建PlantUML图表:

  1. 从用户请求中识别图表类型

    UML图表:

    • 序列图/时序图 → @startuml@endumlparticipantactor
    • 用例图/用例图 → @startuml@endumlactorusecase
    • 类图/类图 → @startuml@endumlclass
    • 对象图/对象图 → @startuml@endumlobject
    • 活动图/活动图 → @startuml@endumlstartstopifwhile
    • 组件图/组件图 → @startuml@endumlcomponentinterfacepackage
    • 部署图/部署图 → @startuml@endumlnodedatabasecloud
    • 状态图/状态图 → @startuml@endumlstate[*]
    • 时序图/时序图 → @startuml@endumlconciserobust

    非UML图表:

    • JSON数据/JSON 数据图 → @startjson@endjson
    • YAML数据/YAML 数据图 → @startyaml@endyaml
    • EBNF(扩展巴科斯-瑙尔范式)/EBNF 图 → @startebnf@endebnf
    • 正则表达式/正则表达式图 → @startregex@endregex
    • 网络图(nwdiag)/网络图 → @startuml@enduml 带网络元素
    • Salt(线框图图形界面)/线框图 → @startsalt@endsalt
    • Archimate图/架构图 → @startuml@enduml 带Archimate元素
    • SDL(规范描述语言)/SDL 图 → @startsdl@endsdl
    • Ditaa图/Ditaa 图 → @startditaa@endditaa
    • 甘特图/甘特图 → @startgantt@endgantt
    • 时间线图/时间线图 → @startuml@enduml 带时间线语法
    • 思维导图/思维导图 → @startmindmap@endmindmap
    • WBS(工作分解结构)/工作分解结构图 → @startwbs@endwbs
    • 数学表示法(AsciiMath、JLaTeXMath)/数学公式图 → @startmath@endmath@startlatex@endlatex
    • 实体关系(ER)图/实体关系图 → @startuml@endumlentity
    • 信息工程(IE)图/信息工程图 → @startuml@enduml 带IE表示法
    • 实体关系(ER)图(陈氏表示法)/ER 图(陈氏表示法) → @startuml@enduml 带陈氏表示法
    • C4图/C4 模型图 → @startuml@enduml 带C4-PlantUML库
  2. examples/ 目录加载适当的示例文件

    UML图表:

    • examples/sequence.md - 用于显示交互的序列图
    • examples/use-case.md - 用于用例图
    • examples/class.md - 用于类图和面向对象设计
    • examples/object.md - 用于对象图
    • examples/activity.md - 用于活动图和工作流
    • examples/component.md - 用于组件图和系统架构
    • examples/deployment.md - 用于部署图和基础设施
    • examples/state.md - 用于状态图和状态机
    • examples/timing.md - 用于时序图

    非UML图表:

    • examples/json-yaml.md - 用于JSON/YAML数据可视化
    • examples/ebnf.md - 用于EBNF语法图
    • examples/regex.md - 用于正则表达式图
    • examples/network.md - 用于网络图(nwdiag)
    • examples/salt.md - 用于Salt线框图和UI原型
    • examples/archimate.md - 用于Archimate架构图
    • examples/sdl.md - 用于SDL(规范描述语言)图
    • examples/ditaa.md - 用于Ditaa ASCII艺术图
    • examples/gantt.md - 用于甘特图和项目时间线
    • examples/chronology.md - 用于时间线图
    • examples/mindmap.md - 用于思维导图
    • examples/wbs.md - 用于工作分解结构图
    • examples/math.md - 用于数学表示法(AsciiMath、LaTeX)
    • examples/er.md - 用于实体关系图
    • examples/ie.md - 用于信息工程图
    • examples/er-chen.md - 用于使用陈氏表示法的ER图
    • examples/c4.md - 用于C4模型架构图
  3. 遵循该示例文件中的具体说明,了解语法、结构和最佳实践

    重要注意事项:

    • PlantUML需要Java运行时环境和Graphviz(或PlantUML服务器)进行渲染
    • 所有PlantUML图表必须包裹在 @startuml@enduml(或特定图表的开始/结束标签)中
    • 使用 !include 指令包含外部文件或库(例如C4-PlantUML)
    • 使用 !define!include 用于可重用组件和主题
    • PlantUML支持通过 skinparam 指令进行广泛样式设置
    • 对于C4图,使用 !include https://raw.githubusercontent.com/plantuml-stdlib/C4-PlantUML/master/C4_Container.puml
  4. 生成PlantUML代码,包裹在具有适当语法高亮的Markdown代码块中:

    重要提示:始终将PlantUML代码包裹在带有 plantuml 语言标签的Markdown代码块中。这确保用户在复制内容时格式得以保留。

    示例格式(使用实际的PlantUML语法,而不是占位符):

    @startuml
    Alice -> Bob: Hello
    Bob -> Alice: Hi
    @enduml
    

    输出格式要求:

    • 始终使用三重反引号(```)带有 plantuml 语言标签
    • 切勿输出没有代码块标记的原始PlantUML代码
    • 代码块必须完整且格式正确
    • 使用实际有效的PlantUML语法,而不是 <diagram-type>...diagram content... 等占位符
    • 始终包含 @startuml@enduml 标签(或特定图表的开始/结束标签)
    • 这确保用户可以复制代码而不丢失格式
  5. 在需要时包含样式和配置

    • 使用 skinparam 指令进行全局样式设置
    • 使用 skinparam <element> { } 进行元素特定样式设置
    • 使用 !theme 指令用于预定义主题
    • 使用 !define 用于自定义颜色和样式
    • 使用 !include 用于外部库和组件
  6. 验证语法

    • 确保所有必需元素存在
    • 检查 @startuml@enduml 标签是否正确配对
    • 验证关系和连接是否正确定义
    • 对于类图:检查可见性修饰符(+-#~
    • 对于序列图:验证参与者声明和消息语法
    • 对于活动图:确保正确的控制流语法
    • 对于组件图:验证组件和接口定义
    • 对于C4图:确保包含C4-PlantUML库
  7. 将图表保存到项目目录

    • 默认行为:当生成PlantUML图表时,将其保存到当前项目目录
    • 推荐位置
      • docs/diagrams/ - 用于文档图表
      • docs/ - 用于一般文档
      • diagrams/ - 用于独立图表文件
      • 当前目录(.) - 如果没有特定目录结构存在
    • 文件命名:使用描述性名称,如 system-architecture.pumluser-flow.pumldatabase-schema.puml
    • 文件格式:保存为 .puml 文件(PlantUML标准扩展名)
    • 示例:如果用户请求系统架构图,将其保存为 docs/diagrams/system-architecture.pumldiagrams/system-architecture.puml
    • 必要时询问:如果项目结构不明确,询问用户他们希望图表保存在哪里,但如果不存在,默认创建 docs/diagrams/ 目录

输出格式和文件保存:

生成图表时,遵循此响应结构:

  1. 先保存文件:在项目目录中创建图表文件(例如 docs/diagrams/system-architecture.puml

  2. 通知用户:告诉他们文件保存在哪里

  3. 显示图表:在带有 plantuml 语言标签的适当格式化的Markdown代码块中显示PlantUML代码

示例响应结构:

  • 第一行:“我已创建PlantUML图表并将其保存到 docs/diagrams/system-architecture.puml。”
  • 然后显示包裹在代码块中的图表:
    • 开始:三重反引号 + plantuml + 换行
    • 然后是PlantUML代码(带 @startuml@enduml 标签)
    • 结束:三重反引号 + 换行

关键要求:

  • PlantUML代码块必须始终用三重反引号(```)和 plantuml 语言标签正确格式化
  • 切勿输出没有代码块标记的原始PlantUML代码
  • 代码块必须完整(开始和结束反引号)
  • 始终包含 @startuml@enduml 标签(或特定图表的开始/结束标签)
  • 这确保用户可以复制代码而不丢失格式
  • 始终将图表文件保存到当前项目目录(默认:docs/diagrams/diagrams/
  • 对PlantUML文件使用 .puml 文件扩展名

如果图表类型不匹配任何现有示例,请参考PlantUML文档(https://plantuml.com/zh/)或询问用户澄清所需的可视化。

PlantUML vs Mermaid - 主要区别

PlantUML(此技能):

  • 目的:通过简单文本描述创建各种UML图表的组件
  • 主要用例:从序列图到部署图等,PlantUML提供了创建复杂系统视觉表示的简单方法
  • 专注点:主要专注于UML标准
  • 最佳适用于:
    • 需要精确表示法的复杂UML图表(类图、组件图、部署图)
    • 企业架构图和C4模型图
    • 标准UML合规性要求
    • 需要高级定制、样式或布局控制的图表
    • 当用户明确请求PlantUML或UML图表时

Mermaid(不同技能):

  • 目的:一个基于JavaScript的图表和图表工具,使用Markdown风格的文本定义
  • 主要用例:帮助文档跟上开发进度
  • 专注点:Markdown文档和Markdown渲染器
  • 最佳适用于:
    • Markdown文档、GitHub、GitLab、维基、博客
    • 在Markdown渲染器中直接渲染的快速图表
    • 简单流程图、序列图、基本图表
    • 快速原型设计和迭代
    • 当用户明确请求Mermaid或需要Markdown兼容图表时

当两个技能都匹配时:

  • 始终询问用户选择:“我可以用PlantUML或Mermaid创建此图表。PlantUML专注于UML图表和企业架构。Mermaid是一个基于JavaScript的工具,设计用于Markdown文档并在GitHub/GitLab中直接渲染。您更喜欢哪个?”
  • 这是两个不同目的的图表工具 - 不要自动选择
  • 如果用户明确提到一个工具,使用那个工具
  • 如果用户提到两者或都不提,询问用户根据他们的需求选择

资源

最佳实践

  1. 始终使用代码块:将所有PlantUML代码包裹在带有 plantuml 语言标签的Markdown代码块中
  2. 包含正确标签:始终包含 @startuml@enduml(或特定图表标签)
  3. 使用包含库:使用 !include 用于C4-PlantUML和其他标准库
  4. 组织文件:将图表保存在适当目录(docs/diagrams/diagrams/
  5. 使用描述性名称:清晰地命名图表文件(例如 system-architecture.pumluser-flow.puml
  6. 利用样式:使用 skinparam 和主题进行一致样式设置
  7. 验证语法:在保存前检查PlantUML语法以确保正确渲染
  8. 考虑渲染:注意PlantUML需要Java和Graphviz(或PlantUML服务器)进行渲染

关键词

英文关键词: plantuml, UML, class diagram, sequence diagram, use case diagram, activity diagram, component diagram, state diagram, deployment diagram, object diagram, timing diagram, network diagram, Archimate diagram, Gantt chart, mindmap, WBS diagram, JSON diagram, YAML diagram, EBNF, regex, regular expression, Salt wireframe, SDL, Ditaa, chronology diagram, mathematical notation, AsciiMath, LaTeX, ER diagram, entity relationship diagram, IE diagram, information engineering diagram, Chen’s notation, C4 model, C4 diagram, architecture diagram, system architecture, enterprise architecture, microservices architecture, draw, create, generate, make, build, visualize, visualization, drawing, UML notation, standard UML

中文关键词(中文关键词): PlantUML, UML, 类图, 时序图, 用例图, 活动图, 组件图, 状态图, 部署图, 对象图, 时序图, 网络图, 架构图, 甘特图, 思维导图, 工作分解结构图, JSON 图, YAML 图, EBNF 图, 正则表达式图, 线框图, SDL 图, Ditaa 图, 时间线图, 数学公式图, 实体关系图, ER 图, 信息工程图, IE 图, 陈氏表示法, C4 模型, C4 图, 架构图, 系统架构图, 企业架构图, 微服务架构图, 画图, 绘图, 生成图, 创建图, 制作图, 画类图, 画时序图, 画组件图, 画部署图, 画活动图, 画状态图, 画用例图, 画对象图, 画网络图, 画线框图, 画 ER 图, 用 PlantUML, PlantUML 语法, UML 图, UML 类图, UML 时序图, 可视化, 图表, 图形, 示意图, 设计图, 系统图, 用图表示, 画出来, 给我画, 帮我画, 画一个, 创建一个图, 生成一个图, 画个图说明, 用图表展示, 可视化展示