B技

baoyu-diagram 技能评测

bestskills 评测组
2026/05/6

来自技术达人宝玉(baoyu)的画图神器 skill,支持架构图、流程图、时序图、脑图等多种图形生成。本期评测会拆解它背后的设计逻辑与可优化空间,帮你快速判断这项技能是否值得上手。


总体评分

维度得分状态
规范(20%)18/20PASS
效果(40%)38/40PASS
安全(30%)28/30PASS
精简(10%)7/10WARN
总分91/100优秀

等级说明:

  • 90-100:优秀 - 可直接使用或发布
  • 70-89:良好 - 有少量但实际存在的优化空间
  • 50-69:一般 - 需要重要修订
  • <50:不合格 - 需要大幅重写

Skill 亮点

  1. [效果] 视觉系统定义得非常完整 - 证据:主文件不仅规定了颜色、字体和组件样式,还把图层顺序、遮罩矩形、marker、边界留白和 viewBox 规则都写清楚了。对于 SVG 生成类技能来说,这种细节密度非常有价值。
  2. [效果] 图类型覆盖面广,而且部分类型有专门参考文件 - 证据:它支持架构图、流程图、时序图、结构图、思维导图、时间线、状态机和数据流图,其中架构图、流程图、时序图、结构图都有独立 references/*.md
  3. [安全] 输出和交付链路比较明确 - 证据:技能要求输出单个自包含 SVG,并在保存后调用脚本导出 @2x PNG。这让结果不只是“生成一段代码”,而是包含了一个相对完整的交付闭环。
  4. [规范] 布局流程比很多画图提示更工程化 - 证据:Identify type -> Read reference -> Plan layout -> Write SVG -> Verify spacing -> Export PNG 这一串步骤,让技能执行更稳定,也更容易复查。

在这个 SKILL.md 文档的最底部,明确地向大模型指明了绘图的流程:

1. Identify the diagram type from the user's request
2. Read the relevant reference file if one exists for that type
3. Plan the layout: list all components, determine grouping and flow direction, calculate positions
4. Write the SVG following the layering order above
5. Verify spacing rules — no overlaps, legends outside boundaries, viewBox large enough
6. Save the SVG file
7. Run ${BUN_X} {baseDir}/scripts/main.ts <svg-path> to generate @2x PNG
8. Present both files to the user

同时,SKILL.md 文件也对输出做了明确严格的限制,甚至考虑到中文字体显示的问题。

- Output a single .svg file — no external dependencies except the Google Fonts import
- Set viewBox to fit all content with 30px padding; do NOT set fixed width/height attributes (let the SVG scale responsively)
- Include xmlns="http://www.w3.org/2000/svg" on the root <svg> element
- Put all <style>, <defs>, markers, and patterns at the top of the SVG
- Use text-anchor="middle" for centered labels; ensure text doesn't overflow boxes
- Chinese text support: When labels contain Chinese characters, use font-family: 'JetBrains Mono', 'Noto Sans SC', 'PingFang SC', sans-serif' and increase box widths — CJK characters are wider
- Save location: If the input is a file, save to {inputFileDir}/diagram/. Otherwise save to {projectDir}/diagram/{topic-slug}/. Create the directory if it doesn't exist

Skill 优化点

  1. [精简] 主文件信息量很大,运行时扫描成本偏高 - 证据:颜色系统、排版规则、图形元件、分层顺序、输出规则、脚本调用和流程都集中在一个文件里。好处是完整,代价是第一次阅读时会显得很重。
  2. [效果] 图类型支持与参考文档覆盖并不完全对齐 - 证据:技能声明支持思维导图、时间线、状态机和数据流图,但 references/ 里目前主要覆盖 architecture、flowchart、sequence、structural。其余类型更多依赖主文件中的通用说明,稳定性可能会略受影响。
  3. [安全] 对运行环境有一定隐含前提 - 证据:PNG 导出依赖 bunnpx -y bun,同时默认允许外部字体导入。对本地环境较严格或离线场景来说,这一步会带来失败的风险。

从这个 Skill 中获得的启发

  1. 如果一个技能的输出目标是“视觉交付物”,那就应该把视觉系统、排版布局和组件规范一起定义清楚,而不是只告诉模型“画一个图”。
  2. 同一类技能里,主文档负责共性规则,参考文档负责图种差异,这种结构比把所有布局策略塞进一个文件里更利于维护。
  3. SVG 生成质量往往不取决于语法本身,而取决于是否提前规定了间距、图层和文本密度这些容易被忽略的设计约束。

逐项问题清单

[中等] 精简 - 主文件过长

  • 位置:SKILL.md 主体
  • 描述:视觉规范、组件模板、输出规则和脚本说明全部堆在一起,导致扫描负担较高。
  • 建议:可以把稳定不常变的视觉元件片段进一步下沉到 references/ 或单独规范文件里。

[中等] 效果 - 部分图种缺少同等深度的专用布局说明

  • 位置:图类型支持与 references/
  • 描述:思维导图、时间线、状态机和数据流图目前主要依赖主文件概述,没有像架构图和时序图那样的细分布局算法。
  • 建议:为剩余图种补齐专门的参考文档,减少跨图种输出时的随机性。

[轻微] 安全 - 导出链路对外部依赖敏感

  • 位置:脚本执行阶段
  • 描述:PNG 转换依赖 bun 运行时和网络字体资源,部分环境下可能增加失败的风险。
  • 建议:补充离线字体或降级策略,并给出无 bun 时的备用执行方案。

改进建议(按优先级排序)

  1. [必须] 给剩余图种补齐更细的参考文档,保持“支持范围”和“布局规则”一致。
  2. [建议] 在主文件顶部加入一个更短的运行时摘要,降低高频使用时的扫描压力。
  3. [可选] 为 PNG 导出补充更稳妥的离线兼容方案,减少环境摩擦。