@bovinphang/frontend-craft 2.6.0 → 2.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (110) hide show
  1. package/.claude-plugin/marketplace.json +3 -3
  2. package/.claude-plugin/plugin.json +1 -1
  3. package/CHANGELOG.md +38 -1
  4. package/CHANGELOG.zh-CN.md +37 -1
  5. package/README.md +10 -6
  6. package/README.openclaw.md +3 -1
  7. package/README.openclaw.zh-CN.md +3 -1
  8. package/README.zh-CN.md +10 -6
  9. package/agents/fec-typescript-reviewer.md +1 -1
  10. package/docs/example-prompts.md +81 -69
  11. package/docs/ja-JP/README.md +56 -52
  12. package/docs/ko-KR/README.md +45 -41
  13. package/docs/project-structure.md +8 -4
  14. package/docs/superpowers/plans/2026-05-29-fec-debug.md +491 -0
  15. package/docs/superpowers/specs/2026-05-29-fec-debug-design.md +340 -0
  16. package/docs/zh-CN/example-prompts.md +81 -69
  17. package/docs/zh-CN/project-structure.md +8 -4
  18. package/docs/zh-TW/README.md +33 -29
  19. package/openclaw.plugin.json +1 -1
  20. package/package.json +3 -3
  21. package/skills/eval_queries.json +154 -56
  22. package/skills/fec-backend-requirements-handoff/SKILL.md +45 -0
  23. package/skills/fec-code-review/SKILL.md +1 -1
  24. package/skills/fec-drawio-studio/SKILL.md +69 -0
  25. package/skills/fec-drawio-studio/data/THIRD_PARTY_NOTICES.md +10 -0
  26. package/skills/fec-drawio-studio/data/brand-icons.json +878 -0
  27. package/skills/fec-drawio-studio/data/shape-index.json.gz +0 -0
  28. package/skills/fec-drawio-studio/references/data-residency.md +27 -0
  29. package/skills/fec-drawio-studio/references/diagram-patterns.md +41 -0
  30. package/skills/fec-drawio-studio/references/layout-and-export.md +57 -0
  31. package/skills/fec-drawio-studio/references/troubleshooting.md +29 -0
  32. package/skills/fec-drawio-studio/references/xml-and-mermaid.md +54 -0
  33. package/skills/fec-drawio-studio/scripts/brand-symbols.mjs +99 -0
  34. package/skills/fec-drawio-studio/scripts/diagram-lint.mjs +143 -0
  35. package/skills/fec-drawio-studio/scripts/diagram-url.mjs +102 -0
  36. package/skills/fec-drawio-studio/scripts/layout-graph.mjs +107 -0
  37. package/skills/fec-drawio-studio/scripts/png-embed-fix.mjs +26 -0
  38. package/skills/fec-drawio-studio/scripts/scan-go-packages.mjs +36 -0
  39. package/skills/fec-drawio-studio/scripts/scan-js-modules.mjs +52 -0
  40. package/skills/fec-drawio-studio/scripts/scan-python-classes.mjs +30 -0
  41. package/skills/fec-drawio-studio/scripts/scan-python-modules.mjs +55 -0
  42. package/skills/fec-drawio-studio/scripts/scan-rust-modules.mjs +35 -0
  43. package/skills/fec-drawio-studio/scripts/scan-ts-modules.mjs +7 -0
  44. package/skills/fec-drawio-studio/scripts/shape-query.mjs +81 -0
  45. package/skills/fec-drawio-studio/scripts/studio-core.mjs +139 -0
  46. package/skills/fec-drawio-studio/styles/built-in/corporate.json +49 -0
  47. package/skills/fec-drawio-studio/styles/built-in/default.json +49 -0
  48. package/skills/fec-drawio-studio/styles/built-in/handdrawn.json +49 -0
  49. package/skills/fec-drawio-studio/styles/schema.json +112 -0
  50. package/skills/fec-e2e-testing/SKILL.md +3 -1
  51. package/skills/fec-e2e-testing/references/e2e-ci-reporting.md +62 -0
  52. package/skills/fec-e2e-testing/references/e2e-special-scenarios.md +52 -0
  53. package/skills/fec-e2e-testing/references/e2e-visual-regression.md +60 -0
  54. package/skills/fec-image-generation/SKILL.md +56 -0
  55. package/skills/fec-image-generation/references/artifact-routing.md +80 -0
  56. package/skills/fec-image-generation/references/diagram-workflows.md +43 -0
  57. package/skills/fec-image-generation/references/png-qa-autofix.md +30 -0
  58. package/skills/fec-image-generation/scripts/png-qa.mjs +431 -0
  59. package/skills/fec-implement-from-design/SKILL.md +7 -0
  60. package/skills/fec-legacy-to-modern-migration/SKILL.md +24 -168
  61. package/skills/fec-legacy-to-modern-migration/references/migration-execution-checklist.md +110 -0
  62. package/skills/fec-legacy-to-modern-migration/references/migration-strategy-and-mapping.md +48 -0
  63. package/skills/fec-motion-interaction/SKILL.md +7 -0
  64. package/skills/fec-nextjs-project-standard/SKILL.md +7 -1
  65. package/skills/fec-performance-optimization/SKILL.md +5 -1
  66. package/skills/fec-performance-optimization/references/framework-performance-patterns.md +38 -0
  67. package/skills/fec-performance-optimization/references/report-template.md +6 -0
  68. package/skills/fec-react-project-standard/SKILL.md +11 -3
  69. package/skills/fec-react-project-standard/references/react-performance-patterns.md +35 -0
  70. package/skills/fec-react-project-standard/references/react-project-structure.md +197 -0
  71. package/skills/fec-react-project-standard/references/react-quality-patterns.md +131 -0
  72. package/skills/fec-react-project-standard/references/react-runtime-patterns.md +293 -0
  73. package/skills/fec-responsive-layout/references/responsive-layout-patterns.md +11 -0
  74. package/skills/fec-source-driven-development/SKILL.md +26 -0
  75. package/skills/fec-tailwind-design-system/references/tailwind-system-patterns.md +5 -1
  76. package/skills/fec-typescript-project-standard/SKILL.md +54 -0
  77. package/skills/{fec-typescript-type-safety → fec-typescript-project-standard}/references/type-safety-patterns.md +1 -1
  78. package/skills/{fec-typescript-type-safety/SKILL.md → fec-typescript-project-standard/references/type-safety.md} +1 -10
  79. package/skills/fec-ui-design/SKILL.md +26 -8
  80. package/skills/fec-ui-design/data/style-archetypes.json +40 -0
  81. package/skills/fec-ui-design/data/ux-quality-rules.json +35 -0
  82. package/skills/fec-ui-design/references/design-intelligence.md +66 -6
  83. package/skills/fec-ui-design/references/pre-delivery-checklist.md +6 -0
  84. package/skills/fec-ui-design/scripts/design-system.mjs +119 -1
  85. package/skills/fec-vue3-project-standard/SKILL.md +11 -2
  86. package/skills/fec-vue3-project-standard/references/vue3-composables-routing.md +163 -0
  87. package/skills/fec-vue3-project-standard/references/vue3-performance-patterns.md +13 -0
  88. package/skills/fec-vue3-project-standard/references/vue3-project-structure.md +177 -0
  89. package/skills/fec-vue3-project-standard/references/vue3-state-api-quality.md +216 -0
  90. package/skills/fec-web-video-presentation/SKILL.md +61 -0
  91. package/skills/fec-web-video-presentation/data/starter-themes.json +59 -0
  92. package/skills/fec-web-video-presentation/references/chapter-craft.md +37 -0
  93. package/skills/fec-web-video-presentation/references/content-plan.md +38 -0
  94. package/skills/fec-web-video-presentation/references/recording-and-audio.md +33 -0
  95. package/skills/fec-web-video-presentation/references/theme-system.md +36 -0
  96. package/skills/fec-web-video-presentation/scripts/create-video-presentation.mjs +430 -0
  97. package/skills/metadata.json +340 -164
  98. package/skills/relations.json +116 -25
  99. package/templates/shared/rules/fec-ci-cd.md +20 -108
  100. package/templates/shared/rules/fec-design-system.md +47 -223
  101. package/templates/shared/rules/fec-error-handling.md +35 -179
  102. package/templates/shared/rules/fec-i18n.md +43 -91
  103. package/templates/shared/rules/fec-refactoring.md +4 -0
  104. package/templates/shared/rules/fec-rendering-patterns.md +28 -171
  105. package/templates/shared/rules/fec-responsive-design.md +34 -211
  106. package/templates/shared/rules/fec-state-management.md +41 -144
  107. package/templates/shared/rules/fec-typescript.md +47 -290
  108. package/skills/fec-e2e-testing/references/e2e-advanced.md +0 -176
  109. package/skills/fec-react-project-standard/references/react-project-details.md +0 -642
  110. package/skills/fec-vue3-project-standard/references/vue3-project-details.md +0 -547
@@ -68,6 +68,29 @@
68
68
  "PWA Service Worker 缓存接口"
69
69
  ]
70
70
  },
71
+ "fec-backend-requirements-handoff": {
72
+ "should_trigger": [
73
+ "帮我把这个页面的数据需求整理给后端",
74
+ "写一份前端视角的后端需求交接文档",
75
+ "这个 dashboard 需要哪些后端数据,帮我列给 API 团队",
76
+ "不要设计接口,只描述 UI 需要展示什么和能做什么",
77
+ "前后端联调前先梳理用户动作、空态和错误态",
78
+ "把订单详情页的权限和业务规则问题整理成后端问题清单",
79
+ "frontend-to-backend requirements handoff for this feature",
80
+ "document backend data needs for the checkout UI",
81
+ "我需要向后端说明这个列表页的筛选、分页和状态需求"
82
+ ],
83
+ "should_not_trigger": [
84
+ "实现 typed API client 和错误映射",
85
+ "给接口封装 refresh token 队列",
86
+ "设计数据库表结构和索引",
87
+ "写后端 controller 和 service",
88
+ "修复 React 组件里的 loading 状态",
89
+ "做一次完整代码审查",
90
+ "同步 README 里的脚本说明",
91
+ "配置 Vite dev server proxy"
92
+ ]
93
+ },
71
94
  "fec-browser-storage": {
72
95
  "should_trigger": [
73
96
  "localStorage 里该怎么存用户偏好",
@@ -224,6 +247,32 @@
224
247
  "实现 API client 错误映射"
225
248
  ]
226
249
  },
250
+ "fec-drawio-studio": {
251
+ "should_trigger": [
252
+ "生成一个可编辑的 draw.io 架构图并导出 PNG",
253
+ "把这个微服务系统画成 .drawio 文件",
254
+ "用 diagrams.net 做 ER 图,要求后续能编辑",
255
+ "查一下 AWS Lambda 在 draw.io 里的官方 shape style",
256
+ "给这个 TypeScript 项目生成模块依赖图并自动布局",
257
+ "生成 UML 类图并用 draw.io CLI 导出 SVG",
258
+ "draw.io 自动布局一个超过 20 个节点的服务拓扑",
259
+ "用 Graphviz 布局后生成 diagrams.net 编辑链接",
260
+ "制作可编辑序列图并检查 .drawio 是否有断边",
261
+ "create an editable drawio architecture diagram with official cloud shapes"
262
+ ],
263
+ "should_not_trigger": [
264
+ "生成一张产品宣传海报图片",
265
+ "编辑这张照片并替换背景",
266
+ "实现 Three.js 交互式 3D 拓扑图",
267
+ "给 SVG logo 加路径描边动画",
268
+ "只写 Mermaid 到 README 中",
269
+ "按 Figma 设计稿实现页面",
270
+ "检查 dashboard 的按钮 hover 状态",
271
+ "用 Playwright 截图做视觉回归",
272
+ "优化 Canvas 粒子动画性能",
273
+ "生成漫画头像和品牌板"
274
+ ]
275
+ },
227
276
  "fec-doc-sync": {
228
277
  "should_trigger": [
229
278
  "同步 README 中的 skill 和 agent 数量",
@@ -290,6 +339,31 @@
290
339
  "Vue 组件架构设计"
291
340
  ]
292
341
  },
342
+ "fec-image-generation": {
343
+ "should_trigger": [
344
+ "帮我生成一张技术架构图并导出 PNG,还要检查标签有没有重叠",
345
+ "生成 ER 图、UML 类图和序列图的可编辑源与图片",
346
+ "给这个产品做一组海报和品牌板视觉探索",
347
+ "请生成一个 UI 样机图并自检导出的 PNG 是否裁切",
348
+ "把这张图片做编辑工作流,保留主体但替换背景",
349
+ "制作 ML 模型结构图,标清 tensor shape 并避免连线堆叠",
350
+ "生成信息图和学术图,导出后自动修复标签截断",
351
+ "为这个故事生成漫画分镜和头像资产",
352
+ "run PNG QA on this generated architecture diagram",
353
+ "image generation workflow for posters, product shots, and mockups"
354
+ ],
355
+ "should_not_trigger": [
356
+ "只打磨现有 dashboard 的间距和 hover 状态",
357
+ "按 Figma 像素还原页面",
358
+ "实现 Three.js 交互式 3D 场景",
359
+ "给 SVG 图标加 reduced-motion 动画",
360
+ "检查按钮 aria-label 和键盘焦点",
361
+ "修复 React Query 缓存失效",
362
+ "写 Playwright 登录 E2E",
363
+ "配置 Tailwind token 和 dark mode",
364
+ "优化虚拟列表滚动性能"
365
+ ]
366
+ },
293
367
  "fec-implement-from-design": {
294
368
  "should_trigger": [
295
369
  "按 Figma 设计稿实现这个页面",
@@ -554,28 +628,6 @@
554
628
  "迁移 jQuery 到 React"
555
629
  ]
556
630
  },
557
- "fec-route-protection": {
558
- "should_trigger": [
559
- "实现未登录跳转登录页",
560
- "RBAC 权限路由怎么设计",
561
- "React Router 私有路由守卫",
562
- "Next middleware 鉴权和 redirect",
563
- "Vue Router beforeEach 权限判断",
564
- "Nuxt route middleware 登录态",
565
- "防止 open redirect",
566
- "route guard with roles"
567
- ],
568
- "should_not_trigger": [
569
- "审查 token 是否安全存储",
570
- "设计 React 项目结构",
571
- "配置 TanStack Query",
572
- "写 E2E 登录流程",
573
- "表单校验",
574
- "PWA 离线缓存",
575
- "普通菜单键盘可访问性",
576
- "jQuery 迁移"
577
- ]
578
- },
579
631
  "fec-responsive-layout": {
580
632
  "should_trigger": [
581
633
  "这个页面 375px 下横向溢出,帮我做响应式布局",
@@ -598,6 +650,28 @@
598
650
  "升级依赖版本"
599
651
  ]
600
652
  },
653
+ "fec-route-protection": {
654
+ "should_trigger": [
655
+ "实现未登录跳转登录页",
656
+ "RBAC 权限路由怎么设计",
657
+ "React Router 私有路由守卫",
658
+ "Next middleware 鉴权和 redirect",
659
+ "Vue Router beforeEach 权限判断",
660
+ "Nuxt route middleware 登录态",
661
+ "防止 open redirect",
662
+ "route guard with roles"
663
+ ],
664
+ "should_not_trigger": [
665
+ "审查 token 是否安全存储",
666
+ "设计 React 项目结构",
667
+ "配置 TanStack Query",
668
+ "写 E2E 登录流程",
669
+ "表单校验",
670
+ "PWA 离线缓存",
671
+ "普通菜单键盘可访问性",
672
+ "jQuery 迁移"
673
+ ]
674
+ },
601
675
  "fec-security-review": {
602
676
  "should_trigger": [
603
677
  "检查 dangerouslySetInnerHTML 是否安全",
@@ -686,28 +760,6 @@
686
760
  "jQuery 迁移"
687
761
  ]
688
762
  },
689
- "fec-tailwind-design-system": {
690
- "should_trigger": [
691
- "设计 Tailwind token 和 theme.extend",
692
- "这个组件库的 class 太散,想整理成 variants",
693
- "Tailwind 暗色模式怎么和 CSS 变量对齐",
694
- "检查动态 class 是否会被 purge 掉",
695
- "用 CVA 设计 Button 的 size 和 tone",
696
- "Tailwind safelist 应该怎么治理",
697
- "build a Tailwind design system for this app",
698
- "把硬编码颜色迁移到 Tailwind 语义 token"
699
- ],
700
- "should_not_trigger": [
701
- "纯 CSS Grid 响应式布局溢出",
702
- "按 Figma 像素还原页面",
703
- "写组件 RTL 单测",
704
- "审查接口 401 错误映射",
705
- "修复 TypeScript 类型错误",
706
- "配置路由权限守卫",
707
- "升级 npm 依赖",
708
- "做通用前端 PR review"
709
- ]
710
- },
711
763
  "fec-svg-animation": {
712
764
  "should_trigger": [
713
765
  "SVG 路径描边动画",
@@ -730,6 +782,28 @@
730
782
  "虚拟列表性能"
731
783
  ]
732
784
  },
785
+ "fec-tailwind-design-system": {
786
+ "should_trigger": [
787
+ "设计 Tailwind token 和 theme.extend",
788
+ "这个组件库的 class 太散,想整理成 variants",
789
+ "Tailwind 暗色模式怎么和 CSS 变量对齐",
790
+ "检查动态 class 是否会被 purge 掉",
791
+ "用 CVA 设计 Button 的 size 和 tone",
792
+ "Tailwind safelist 应该怎么治理",
793
+ "build a Tailwind design system for this app",
794
+ "把硬编码颜色迁移到 Tailwind 语义 token"
795
+ ],
796
+ "should_not_trigger": [
797
+ "纯 CSS Grid 响应式布局溢出",
798
+ "按 Figma 像素还原页面",
799
+ "写组件 RTL 单测",
800
+ "审查接口 401 错误映射",
801
+ "修复 TypeScript 类型错误",
802
+ "配置路由权限守卫",
803
+ "升级 npm 依赖",
804
+ "做通用前端 PR review"
805
+ ]
806
+ },
733
807
  "fec-tdd-workflow": {
734
808
  "should_trigger": [
735
809
  "用 TDD 实现这个 hook",
@@ -774,26 +848,28 @@
774
848
  "优化虚拟列表滚动性能"
775
849
  ]
776
850
  },
777
- "fec-typescript-type-safety": {
851
+ "fec-typescript-project-standard": {
778
852
  "should_trigger": [
853
+ "TypeScript 项目 tsconfig strict 怎么配置",
779
854
  "审查这些 DTO 和 view model 类型边界",
780
855
  "这个泛型组件类型怎么设计更安全",
781
856
  "用 type guard 收窄 unknown 输入",
782
- "检查不安全的 as 和非空断言",
783
857
  "设计判别联合表达异步状态",
784
- "给公共 utility type 加类型测试",
785
858
  "TypeScript 类型建模和泛型约束 review",
786
- "API 响应类型和运行时校验怎么对齐"
859
+ "TS SDK 的 package exports 和 d.ts 怎么发布",
860
+ "monorepo package 的 project references 怎么配置",
861
+ "public API 类型和声明文件一致性怎么检查",
862
+ "Node CLI 的 moduleResolution 和类型声明怎么设"
787
863
  ],
788
864
  "should_not_trigger": [
789
- "做整个前端 PR 综合评审",
790
- "只修复 tsc 编译失败",
791
- "写 React 组件 UI",
792
- "检查按钮键盘焦点",
793
- "配置 Vite env 变量",
794
- "写 Playwright E2E",
795
- "选择全局 store 方案",
796
- "审查 CSP 和 XSS"
865
+ "React 项目组件目录怎么分层",
866
+ "Vue composable 和 Pinia store 怎么组织",
867
+ "Vite dev server proxy 怎么配置",
868
+ "TanStack Query queryKey 怎么设计",
869
+ "表单校验错误怎么展示",
870
+ "检查弹窗键盘焦点和 aria",
871
+ "写 Playwright 登录流程",
872
+ "优化虚拟列表滚动性能"
797
873
  ]
798
874
  },
799
875
  "fec-ui-design": {
@@ -890,6 +966,28 @@
890
966
  "XSS 安全审查"
891
967
  ]
892
968
  },
969
+ "fec-web-video-presentation": {
970
+ "should_trigger": [
971
+ "把这篇文章做成可以录屏的 16:9 网页视频演示",
972
+ "我有一段口播稿,帮我规划成点击推进的动态网页 presentation",
973
+ "为这个产品 demo 做一个 step-driven browser recording deck",
974
+ "把课程大纲转成像视频一样播放的 React 演示页面",
975
+ "生成网页视频脚手架,支持主题 token 和录屏",
976
+ "把技术分享拆成 script、outline 和可录制章节",
977
+ "做一个每次按空格推进一个口播节拍的 16:9 演示",
978
+ "create a recordable web video presentation from this talk script"
979
+ ],
980
+ "should_not_trigger": [
981
+ "普通 landing page 视觉打磨",
982
+ "从 Figma 节点实现一个按钮组件",
983
+ "生成一张系统架构图 PNG",
984
+ "修复 Vite 构建错误",
985
+ "给 React 表单写组件测试",
986
+ "检查 dashboard 的 WCAG 对比度",
987
+ "把 jQuery 页面迁移到 Vue",
988
+ "规划 API 鉴权刷新流程"
989
+ ]
990
+ },
893
991
  "fec-web-workers": {
894
992
  "should_trigger": [
895
993
  "大 JSON 解析阻塞主线程",
@@ -0,0 +1,45 @@
1
+ ---
2
+ name: fec-backend-requirements-handoff
3
+ description: Use when frontend work needs to communicate data, action, state, permission, validation, or business-rule needs to backend teams without dictating endpoint design, field names, database shape, or implementation details; Chinese triggers include 前后端需求交接, 后端需求, API 需求澄清, 数据需求说明.
4
+ ---
5
+
6
+ # 前后端需求交接
7
+
8
+ ## Purpose
9
+
10
+ 把前端页面和交互所需的数据、动作、状态和疑问整理成后端可讨论的需求说明。
11
+
12
+ ## Procedure
13
+
14
+ 1. 明确功能上下文
15
+ - 说明页面、流程或组件是什么,面向哪类用户,以及用户完成任务的成功状态。
16
+ - 如果已有设计稿、路由、用户故事或权限角色,先把它们作为事实来源。
17
+
18
+ 2. 描述前端展示需求
19
+ - 按屏幕或组件列出需要展示的信息、信息之间的关系、排序/过滤/分页需求和可见性规则。
20
+ - 使用业务语言描述“需要展示什么”,不要提前规定 endpoint、字段名、DTO、数据库表或响应嵌套结构。
21
+
22
+ 3. 描述用户动作和结果
23
+ - 列出用户能执行的动作、期望结果、成功反馈、失败反馈和是否需要乐观更新。
24
+ - 标出幂等性、撤销、确认、危险操作、批量操作或长任务进度等对 UI 有影响的行为。
25
+
26
+ 4. 补齐状态和业务规则
27
+ - 覆盖 loading、empty、error、partial、permission denied、expired、conflict、offline 和 retrying 等状态。
28
+ - 记录影响 UI 的权限、生命周期、金额/时区/枚举、校验、可编辑条件和边界规则。
29
+
30
+ 5. 输出讨论文档
31
+ - 默认写到 `docs/backend-requirements/<feature-name>.md`;若仓库已有需求文档目录,沿用现有位置。
32
+ - 文档包含 Context、Screens/Components、Data Needs、User Actions、UI States、Business Rules、Uncertainties、Questions for Backend 和 Decision Log。
33
+ - 若用户只需要聊天回复,可以直接输出同样结构的 Markdown,不创建文件。
34
+
35
+ ## Constraints
36
+
37
+ - 不替后端规定 URL、HTTP 方法、字段名、数据库 schema、缓存实现或服务拆分。
38
+ - 不把前端猜测写成事实;不确定的业务规则必须进入 Uncertainties 或 Questions。
39
+ - 不忽略错误、空态、权限和部分数据;这些状态决定接口协作质量。
40
+ - 不把内部错误栈、数据库字段或敏感实现细节要求暴露给 UI。
41
+ - 不与 API 集成流程重复:本 skill 描述需求,客户端边界、类型来源和错误映射实现应在后续实现阶段处理。
42
+
43
+ ## Expected Output
44
+
45
+ 产出一份前端视角的后端需求交接说明,清楚描述 UI 需要什么数据和行为、哪些规则仍需确认,以及后续前后端需要共同决定的问题。
@@ -24,7 +24,7 @@ description: Use when the user asks for general frontend code review, PR review,
24
24
 
25
25
  | 维度 | 触发条件 | 分流边界 |
26
26
  | ------------------- | ---------------------------------------------------- | ------------------------------------ |
27
- | TypeScript 类型安全 | DTO、泛型、公共类型、类型守卫、`any`、断言 | 深入类型建模交给类型安全专项流程 |
27
+ | TypeScript 工程与类型契约 | DTO、泛型、公共类型、类型守卫、`any`、断言、tsconfig | 深入类型建模和 TS 配置交给 TypeScript 流程 |
28
28
  | 状态管理 | 状态归属、全局 store、URL 状态、派生状态、跨页面同步 | 状态选型与迁移交给状态管理专项流程 |
29
29
  | 安全 | 用户输入、HTML 渲染、token、上传、第三方脚本 | 漏洞级分析交给安全专项流程 |
30
30
  | 无障碍 | 弹窗、菜单、表单、键盘操作、焦点管理 | WCAG 细查交给无障碍专项流程 |
@@ -0,0 +1,69 @@
1
+ ---
2
+ name: fec-drawio-studio
3
+ description: Use when creating editable technical diagrams with draw.io / diagrams.net sources, including architecture diagrams, ERD, UML, sequence diagrams, flowcharts, ML model diagrams, official shape lookup, brand symbols, Graphviz auto-layout, codebase structure maps, .drawio validation, or draw.io CLI export fallback. Do not use for ordinary raster image generation, freehand sketches, interactive canvas/Three.js scenes, or decorative SVG animation. Chinese triggers include draw.io, diagrams.net, 可编辑架构图, .drawio, ER 图, UML, 序列图, 自动布局, 形状检索, 代码结构图.
4
+ ---
5
+
6
+ # 可编辑技术图表工作流
7
+
8
+ ## Purpose
9
+
10
+ 生成、校验和导出可继续编辑的 draw.io / diagrams.net 技术图表。
11
+
12
+ ## Procedure
13
+
14
+ 1. 判断图表路线
15
+ - 需要长期维护在 Markdown 中的简单图,优先 Mermaid。
16
+ - 需要官方图标、泳道、复杂布局、层/标签/元数据、可编辑 PNG/SVG/PDF 或 `.drawio` 源时,使用本工作流。
17
+ - 需要快速浏览器打开或分享时,用 [diagram-url.mjs](scripts/diagram-url.mjs) 生成 URL;需要本地可审计交付时,始终保存 `.drawio` 源。
18
+ - 用户已经有 Mermaid 或 CSV 内容时,可用 `diagram-url.mjs --create --type mermaid|csv` 交给 diagrams.net 导入;需要长期维护或精确形状时,再转成 XML。
19
+ - 如果当前宿主已经配置 draw.io MCP App/Tool,可把它作为预览或编辑入口;本 skill 不要求安装 MCP server。
20
+ - 需要照片、海报、视觉概念或位图编辑时,走图片生成路线。
21
+
22
+ 2. 建立图表规格
23
+ - 明确图表类型、受众、输出格式、节点清单、关系、层级分组和保存位置。
24
+ - 用户指定 ERD、UML、Sequence、Architecture、ML/DL 或 Flowchart 时,读取 [diagram-patterns.md](references/diagram-patterns.md)。
25
+ - 需要选择 XML、Mermaid、CSV、容器、层、标签、metadata 或暗色模式策略时,读取 [xml-and-mermaid.md](references/xml-and-mermaid.md)。
26
+ - 需要特定厂商/云/网络/流程图形状时,运行 [shape-query.mjs](scripts/shape-query.mjs);需要 AI、数据库或基础设施品牌符号时,运行 [brand-symbols.mjs](scripts/brand-symbols.mjs)。
27
+
28
+ 3. 生成 `.drawio` 源
29
+ - 小图可手工生成 draw.io XML,保持节点坐标、尺寸和连线清晰。
30
+ - 超过约 15 个节点、依赖图或代码结构图时,先生成 graph JSON,再用 [layout-graph.mjs](scripts/layout-graph.mjs) 自动布局。
31
+ - 代码结构图可先用 [scan-js-modules.mjs](scripts/scan-js-modules.mjs)、[scan-ts-modules.mjs](scripts/scan-ts-modules.mjs)、[scan-python-modules.mjs](scripts/scan-python-modules.mjs)、[scan-go-packages.mjs](scripts/scan-go-packages.mjs)、[scan-rust-modules.mjs](scripts/scan-rust-modules.mjs) 或 [scan-python-classes.mjs](scripts/scan-python-classes.mjs) 生成 graph JSON。
32
+
33
+ 4. 校验和预览
34
+ - 每次生成 `.drawio` 后运行:
35
+ ```bash
36
+ node skills/fec-drawio-studio/scripts/diagram-lint.mjs diagram.drawio --format markdown
37
+ ```
38
+ - 若本机有 draw.io desktop CLI,导出预览 PNG 时不要嵌入 XML,并控制宽度:
39
+ ```bash
40
+ drawio -x -f png --width 2000 -o diagram.png diagram.drawio
41
+ ```
42
+ - 若 CLI 不可用,用 [diagram-url.mjs](scripts/diagram-url.mjs) 生成 diagrams.net viewer/editor URL;严格离线或数据驻留敏感时先读取 [data-residency.md](references/data-residency.md)。
43
+
44
+ 5. 交付最终产物
45
+ - 保存 `.drawio` 源文件和用户需要的 PNG/SVG/PDF/JPG。
46
+ - 最终 PNG 若使用 draw.io `-e` 嵌入 XML,导出后运行:
47
+ ```bash
48
+ node skills/fec-drawio-studio/scripts/png-embed-fix.mjs diagram.drawio.png
49
+ ```
50
+ - 报告源文件、导出文件、校验结果和无法自动验证的外部依赖。
51
+
52
+ ## Tool Resources
53
+
54
+ 工具脚本共享 [studio-core.mjs](scripts/studio-core.mjs)。离线查询使用 [shape-index.json.gz](data/shape-index.json.gz) 与 [brand-icons.json](data/brand-icons.json),样式预设资源包括 [schema.json](styles/schema.json)、[default.json](styles/built-in/default.json)、[corporate.json](styles/built-in/corporate.json) 和 [handdrawn.json](styles/built-in/handdrawn.json)。
55
+
56
+ ## Constraints
57
+
58
+ - 不把 draw.io 用作普通图片模型;文本密集或结构化图必须保留可编辑源。
59
+ - 不猜测复杂 `shape=mxgraph.*` 样式;优先用形状查询工具获取官方样式。
60
+ - 不为 draw.io 工作流引入 MCP server 运行时依赖;MCP App/Tool 只作为用户环境已有时的可选互操作入口。
61
+ - Mermaid/CSV URL 是导入捷径,不替代 `.drawio` 源文件、lint 和可编辑交付。
62
+ - 不在预览 PNG 中嵌入 XML;嵌入只用于最终交付。
63
+ - Graphviz、draw.io desktop 和联网品牌图标都是可选外部能力;缺失时必须降级而不是反复重试。
64
+ - 品牌图标和第三方形状索引遵循 [THIRD_PARTY_NOTICES.md](data/THIRD_PARTY_NOTICES.md) 中的来源与许可说明。
65
+ - 参考外部 draw.io MCP 生态时,只吸收路线、约束和互操作经验,不复制其服务实现或长篇提示词。
66
+
67
+ ## Expected Output
68
+
69
+ 交付可编辑 `.drawio` 源和所需导出格式,并给出结构校验结果。图表应节点完整、连线可追踪、标签不截断、布局不重叠,外部工具缺失时提供可打开的 diagrams.net fallback。
@@ -0,0 +1,10 @@
1
+ # Third Party Notices
2
+
3
+ This skill includes compact indexes and manifests used to produce editable diagrams.
4
+
5
+ - `shape-index.json.gz` contains draw.io shape metadata used for local style lookup. Shape names, dimensions and style strings come from the draw.io / diagrams.net shape ecosystem and remain subject to their upstream terms.
6
+ - `brand-icons.json` is a manifest for lobe-icons CDN assets. lobe-icons is MIT licensed; individual logos and names may be trademarks of their respective owners.
7
+ - `brand-symbols.mjs` may reference simple-icons CDN slugs for selected infrastructure and database symbols. simple-icons metadata and icons are available under their upstream license; brand trademarks remain owned by their respective holders.
8
+ - The workflow documents mention optional interoperability with external draw.io MCP App/Tool deployments. Those services are not bundled, vendored or required by this package.
9
+
10
+ These resources are used only to identify and render diagram symbols. Keep this notice with redistributed packages.