create-yss-spec 2.1.5 → 2.1.6

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 (3257) hide show
  1. package/README.md +1 -1
  2. package/package.json +1 -1
  3. package/template/.agents/skills/yss-audit-log/references/source-index.md +4 -3
  4. package/template/.agents/skills/yss-cache/references/source-index.md +4 -3
  5. package/template/.agents/skills/yss-components/references/frontend-docs.md +1 -1
  6. package/template/.agents/skills/yss-db2mybatis/SKILL.md +6 -5
  7. package/template/.agents/skills/yss-db2mybatis/scripts/db2mybatis.mjs +145 -0
  8. package/template/.agents/skills/yss-db2mybatis/scripts/db2mybatis.test.mjs +32 -0
  9. package/template/.agents/skills/yss-ddd-scaffold-generator/SKILL.md +5 -5
  10. package/template/.agents/skills/yss-ddd-scaffold-generator/references/USAGE_EXAMPLES.md +2 -2
  11. package/template/.agents/skills/yss-ddd-scaffold-generator/scripts/generate_scaffold.mjs +225 -0
  12. package/template/.agents/skills/yss-ddd-scaffold-generator/scripts/run_scaffold_verification.mjs +32 -0
  13. package/template/.agents/skills/yss-ddd-scaffold-generator/scripts/scaffold-generator.test.mjs +26 -0
  14. package/template/.agents/skills/yss-design-system/SKILL.md +2 -2
  15. package/template/.agents/skills/yss-design-system/scripts/validate-frontmatter.mjs +36 -0
  16. package/template/.agents/skills/yss-design-system/scripts/validate-frontmatter.test.mjs +12 -0
  17. package/template/.agents/skills/yss-dictionary/references/source-index.md +25 -25
  18. package/template/.agents/skills/yss-distributed-id/references/source-index.md +6 -6
  19. package/template/.agents/skills/yss-dto/references/source-index.md +7 -4
  20. package/template/.agents/skills/yss-excel-mvc/references/source-index.md +3 -3
  21. package/template/.agents/skills/yss-exception/references/source-index.md +3 -3
  22. package/template/.agents/skills/yss-hook/references/frontend-docs.md +1 -1
  23. package/template/.agents/skills/yss-jdbc/references/source-index.md +3 -3
  24. package/template/.agents/skills/yss-log/references/source-index.md +3 -3
  25. package/template/.agents/skills/yss-mybatis/references/source-index.md +3 -3
  26. package/template/.agents/skills/yss-page-module-development/references/frontend-docs.md +1 -1
  27. package/template/.agents/skills/yss-product-lifecycle/SKILL.md +2 -0
  28. package/template/.agents/skills/yss-resilience4j/references/source-index.md +3 -3
  29. package/template/.agents/skills/yss-security-algorithm/references/source-index.md +3 -3
  30. package/template/.agents/skills/yss-source-index/SKILL.md +3 -3
  31. package/template/.agents/skills/yss-source-index/scripts/refresh-yss-skill-index.mjs +24 -0
  32. package/template/.agents/skills/yss-source-index/scripts/refresh-yss-skill-index.test.mjs +15 -0
  33. package/template/.agents/skills/yss-taskflow/references/source-index.md +3 -3
  34. package/template/.agents/skills/yss-ui/references/frontend-docs.md +1 -1
  35. package/template/.agents/skills/yss-use-table-height/references/frontend-docs.md +1 -1
  36. package/template/.agents/skills/yss-use-tree-height/references/frontend-docs.md +1 -1
  37. package/template/.agents/skills/yss-userinfo/references/source-index.md +3 -3
  38. package/template/.agents/skills/yss-validation/references/source-index.md +5 -24
  39. package/template/.agents/skills/yss-valuation/references/source-index.md +3 -3
  40. package/template/.agents/skills/yss-variable/references/source-index.md +6 -34
  41. package/template/.agents/skills/yss-web-controller/SKILL.md +4 -4
  42. package/template/.agents/skills/yss-web-controller/scripts/generate_controller.mjs +77 -0
  43. package/template/.agents/skills/yss-web-controller/scripts/generate_controller.test.mjs +19 -0
  44. package/template/.claude/skills/yss-audit-log/references/source-index.md +4 -3
  45. package/template/.claude/skills/yss-cache/references/source-index.md +4 -3
  46. package/template/.claude/skills/yss-components/references/frontend-docs.md +1 -1
  47. package/template/.claude/skills/yss-db2mybatis/SKILL.md +6 -5
  48. package/template/.claude/skills/yss-db2mybatis/scripts/db2mybatis.mjs +145 -0
  49. package/template/.claude/skills/yss-db2mybatis/scripts/db2mybatis.test.mjs +32 -0
  50. package/template/.claude/skills/yss-ddd-scaffold-generator/SKILL.md +5 -5
  51. package/template/.claude/skills/yss-ddd-scaffold-generator/references/USAGE_EXAMPLES.md +2 -2
  52. package/template/.claude/skills/yss-ddd-scaffold-generator/scripts/generate_scaffold.mjs +225 -0
  53. package/template/.claude/skills/yss-ddd-scaffold-generator/scripts/run_scaffold_verification.mjs +32 -0
  54. package/template/.claude/skills/yss-ddd-scaffold-generator/scripts/scaffold-generator.test.mjs +26 -0
  55. package/template/.claude/skills/yss-design-system/SKILL.md +2 -2
  56. package/template/.claude/skills/yss-design-system/scripts/validate-frontmatter.mjs +36 -0
  57. package/template/.claude/skills/yss-design-system/scripts/validate-frontmatter.test.mjs +12 -0
  58. package/template/.claude/skills/yss-dictionary/references/source-index.md +25 -25
  59. package/template/.claude/skills/yss-distributed-id/references/source-index.md +6 -6
  60. package/template/.claude/skills/yss-dto/references/source-index.md +7 -4
  61. package/template/.claude/skills/yss-excel-mvc/references/source-index.md +3 -3
  62. package/template/.claude/skills/yss-exception/references/source-index.md +3 -3
  63. package/template/.claude/skills/yss-hook/references/frontend-docs.md +1 -1
  64. package/template/.claude/skills/yss-jdbc/references/source-index.md +3 -3
  65. package/template/.claude/skills/yss-log/references/source-index.md +3 -3
  66. package/template/.claude/skills/yss-mybatis/references/source-index.md +3 -3
  67. package/template/.claude/skills/yss-page-module-development/references/frontend-docs.md +1 -1
  68. package/template/.claude/skills/yss-product-lifecycle/SKILL.md +2 -0
  69. package/template/.claude/skills/yss-resilience4j/references/source-index.md +3 -3
  70. package/template/.claude/skills/yss-security-algorithm/references/source-index.md +3 -3
  71. package/template/.claude/skills/yss-source-index/SKILL.md +3 -3
  72. package/template/.claude/skills/yss-source-index/scripts/refresh-yss-skill-index.mjs +24 -0
  73. package/template/.claude/skills/yss-source-index/scripts/refresh-yss-skill-index.test.mjs +15 -0
  74. package/template/.claude/skills/yss-taskflow/references/source-index.md +3 -3
  75. package/template/.claude/skills/yss-ui/references/frontend-docs.md +1 -1
  76. package/template/.claude/skills/yss-use-table-height/references/frontend-docs.md +1 -1
  77. package/template/.claude/skills/yss-use-tree-height/references/frontend-docs.md +1 -1
  78. package/template/.claude/skills/yss-userinfo/references/source-index.md +3 -3
  79. package/template/.claude/skills/yss-validation/references/source-index.md +5 -24
  80. package/template/.claude/skills/yss-valuation/references/source-index.md +3 -3
  81. package/template/.claude/skills/yss-variable/references/source-index.md +6 -34
  82. package/template/.claude/skills/yss-web-controller/SKILL.md +4 -4
  83. package/template/.claude/skills/yss-web-controller/scripts/generate_controller.mjs +77 -0
  84. package/template/.claude/skills/yss-web-controller/scripts/generate_controller.test.mjs +19 -0
  85. package/template/.codex/skills/yss-audit-log/references/source-index.md +4 -3
  86. package/template/.codex/skills/yss-cache/references/source-index.md +4 -3
  87. package/template/.codex/skills/yss-components/references/frontend-docs.md +1 -1
  88. package/template/.codex/skills/yss-db2mybatis/SKILL.md +6 -5
  89. package/template/.codex/skills/yss-db2mybatis/scripts/db2mybatis.mjs +145 -0
  90. package/template/.codex/skills/yss-db2mybatis/scripts/db2mybatis.test.mjs +32 -0
  91. package/template/.codex/skills/yss-ddd-scaffold-generator/SKILL.md +5 -5
  92. package/template/.codex/skills/yss-ddd-scaffold-generator/references/USAGE_EXAMPLES.md +2 -2
  93. package/template/.codex/skills/yss-ddd-scaffold-generator/scripts/generate_scaffold.mjs +225 -0
  94. package/template/.codex/skills/yss-ddd-scaffold-generator/scripts/run_scaffold_verification.mjs +32 -0
  95. package/template/.codex/skills/yss-ddd-scaffold-generator/scripts/scaffold-generator.test.mjs +26 -0
  96. package/template/.codex/skills/yss-design-system/SKILL.md +2 -2
  97. package/template/.codex/skills/yss-design-system/scripts/validate-frontmatter.mjs +36 -0
  98. package/template/.codex/skills/yss-design-system/scripts/validate-frontmatter.test.mjs +12 -0
  99. package/template/.codex/skills/yss-dictionary/references/source-index.md +25 -25
  100. package/template/.codex/skills/yss-distributed-id/references/source-index.md +6 -6
  101. package/template/.codex/skills/yss-dto/references/source-index.md +7 -4
  102. package/template/.codex/skills/yss-excel-mvc/references/source-index.md +3 -3
  103. package/template/.codex/skills/yss-exception/references/source-index.md +3 -3
  104. package/template/.codex/skills/yss-hook/references/frontend-docs.md +1 -1
  105. package/template/.codex/skills/yss-jdbc/references/source-index.md +3 -3
  106. package/template/.codex/skills/yss-log/references/source-index.md +3 -3
  107. package/template/.codex/skills/yss-mybatis/references/source-index.md +3 -3
  108. package/template/.codex/skills/yss-page-module-development/references/frontend-docs.md +1 -1
  109. package/template/.codex/skills/yss-product-lifecycle/SKILL.md +2 -0
  110. package/template/.codex/skills/yss-resilience4j/references/source-index.md +3 -3
  111. package/template/.codex/skills/yss-security-algorithm/references/source-index.md +3 -3
  112. package/template/.codex/skills/yss-source-index/SKILL.md +3 -3
  113. package/template/.codex/skills/yss-source-index/scripts/refresh-yss-skill-index.mjs +24 -0
  114. package/template/.codex/skills/yss-source-index/scripts/refresh-yss-skill-index.test.mjs +15 -0
  115. package/template/.codex/skills/yss-taskflow/references/source-index.md +3 -3
  116. package/template/.codex/skills/yss-ui/references/frontend-docs.md +1 -1
  117. package/template/.codex/skills/yss-use-table-height/references/frontend-docs.md +1 -1
  118. package/template/.codex/skills/yss-use-tree-height/references/frontend-docs.md +1 -1
  119. package/template/.codex/skills/yss-userinfo/references/source-index.md +3 -3
  120. package/template/.codex/skills/yss-validation/references/source-index.md +5 -24
  121. package/template/.codex/skills/yss-valuation/references/source-index.md +3 -3
  122. package/template/.codex/skills/yss-variable/references/source-index.md +6 -34
  123. package/template/.codex/skills/yss-web-controller/SKILL.md +4 -4
  124. package/template/.codex/skills/yss-web-controller/scripts/generate_controller.mjs +77 -0
  125. package/template/.codex/skills/yss-web-controller/scripts/generate_controller.test.mjs +19 -0
  126. package/template/.github/workflows/template-node-tooling.yml +59 -0
  127. package/template/.hermes/skills/yss-audit-log/references/source-index.md +4 -3
  128. package/template/.hermes/skills/yss-cache/references/source-index.md +4 -3
  129. package/template/.hermes/skills/yss-components/references/frontend-docs.md +1 -1
  130. package/template/.hermes/skills/yss-db2mybatis/SKILL.md +6 -5
  131. package/template/.hermes/skills/yss-db2mybatis/scripts/db2mybatis.mjs +145 -0
  132. package/template/.hermes/skills/yss-db2mybatis/scripts/db2mybatis.test.mjs +32 -0
  133. package/template/.hermes/skills/yss-ddd-scaffold-generator/SKILL.md +5 -5
  134. package/template/.hermes/skills/yss-ddd-scaffold-generator/references/USAGE_EXAMPLES.md +2 -2
  135. package/template/.hermes/skills/yss-ddd-scaffold-generator/scripts/generate_scaffold.mjs +225 -0
  136. package/template/.hermes/skills/yss-ddd-scaffold-generator/scripts/run_scaffold_verification.mjs +32 -0
  137. package/template/.hermes/skills/yss-ddd-scaffold-generator/scripts/scaffold-generator.test.mjs +26 -0
  138. package/template/.hermes/skills/yss-design-system/SKILL.md +2 -2
  139. package/template/.hermes/skills/yss-design-system/scripts/validate-frontmatter.mjs +36 -0
  140. package/template/.hermes/skills/yss-design-system/scripts/validate-frontmatter.test.mjs +12 -0
  141. package/template/.hermes/skills/yss-dictionary/references/source-index.md +25 -25
  142. package/template/.hermes/skills/yss-distributed-id/references/source-index.md +6 -6
  143. package/template/.hermes/skills/yss-dto/references/source-index.md +7 -4
  144. package/template/.hermes/skills/yss-excel-mvc/references/source-index.md +3 -3
  145. package/template/.hermes/skills/yss-exception/references/source-index.md +3 -3
  146. package/template/.hermes/skills/yss-hook/references/frontend-docs.md +1 -1
  147. package/template/.hermes/skills/yss-jdbc/references/source-index.md +3 -3
  148. package/template/.hermes/skills/yss-log/references/source-index.md +3 -3
  149. package/template/.hermes/skills/yss-mybatis/references/source-index.md +3 -3
  150. package/template/.hermes/skills/yss-page-module-development/references/frontend-docs.md +1 -1
  151. package/template/.hermes/skills/yss-product-lifecycle/SKILL.md +2 -0
  152. package/template/.hermes/skills/yss-resilience4j/references/source-index.md +3 -3
  153. package/template/.hermes/skills/yss-security-algorithm/references/source-index.md +3 -3
  154. package/template/.hermes/skills/yss-source-index/SKILL.md +3 -3
  155. package/template/.hermes/skills/yss-source-index/scripts/refresh-yss-skill-index.mjs +24 -0
  156. package/template/.hermes/skills/yss-source-index/scripts/refresh-yss-skill-index.test.mjs +15 -0
  157. package/template/.hermes/skills/yss-taskflow/references/source-index.md +3 -3
  158. package/template/.hermes/skills/yss-ui/references/frontend-docs.md +1 -1
  159. package/template/.hermes/skills/yss-use-table-height/references/frontend-docs.md +1 -1
  160. package/template/.hermes/skills/yss-use-tree-height/references/frontend-docs.md +1 -1
  161. package/template/.hermes/skills/yss-userinfo/references/source-index.md +3 -3
  162. package/template/.hermes/skills/yss-validation/references/source-index.md +5 -24
  163. package/template/.hermes/skills/yss-valuation/references/source-index.md +3 -3
  164. package/template/.hermes/skills/yss-variable/references/source-index.md +6 -34
  165. package/template/.hermes/skills/yss-web-controller/SKILL.md +4 -4
  166. package/template/.hermes/skills/yss-web-controller/scripts/generate_controller.mjs +77 -0
  167. package/template/.hermes/skills/yss-web-controller/scripts/generate_controller.test.mjs +19 -0
  168. package/template/.nvmrc +1 -0
  169. package/template/.pi/skills/yss-audit-log/references/source-index.md +4 -3
  170. package/template/.pi/skills/yss-cache/references/source-index.md +4 -3
  171. package/template/.pi/skills/yss-components/references/frontend-docs.md +1 -1
  172. package/template/.pi/skills/yss-db2mybatis/SKILL.md +6 -5
  173. package/template/.pi/skills/yss-db2mybatis/scripts/db2mybatis.mjs +145 -0
  174. package/template/.pi/skills/yss-db2mybatis/scripts/db2mybatis.test.mjs +32 -0
  175. package/template/.pi/skills/yss-ddd-scaffold-generator/SKILL.md +5 -5
  176. package/template/.pi/skills/yss-ddd-scaffold-generator/references/USAGE_EXAMPLES.md +2 -2
  177. package/template/.pi/skills/yss-ddd-scaffold-generator/scripts/generate_scaffold.mjs +225 -0
  178. package/template/.pi/skills/yss-ddd-scaffold-generator/scripts/run_scaffold_verification.mjs +32 -0
  179. package/template/.pi/skills/yss-ddd-scaffold-generator/scripts/scaffold-generator.test.mjs +26 -0
  180. package/template/.pi/skills/yss-design-system/SKILL.md +2 -2
  181. package/template/.pi/skills/yss-design-system/scripts/validate-frontmatter.mjs +36 -0
  182. package/template/.pi/skills/yss-design-system/scripts/validate-frontmatter.test.mjs +12 -0
  183. package/template/.pi/skills/yss-dictionary/references/source-index.md +25 -25
  184. package/template/.pi/skills/yss-distributed-id/references/source-index.md +6 -6
  185. package/template/.pi/skills/yss-dto/references/source-index.md +7 -4
  186. package/template/.pi/skills/yss-excel-mvc/references/source-index.md +3 -3
  187. package/template/.pi/skills/yss-exception/references/source-index.md +3 -3
  188. package/template/.pi/skills/yss-hook/references/frontend-docs.md +1 -1
  189. package/template/.pi/skills/yss-jdbc/references/source-index.md +3 -3
  190. package/template/.pi/skills/yss-log/references/source-index.md +3 -3
  191. package/template/.pi/skills/yss-mybatis/references/source-index.md +3 -3
  192. package/template/.pi/skills/yss-page-module-development/references/frontend-docs.md +1 -1
  193. package/template/.pi/skills/yss-product-lifecycle/SKILL.md +2 -0
  194. package/template/.pi/skills/yss-resilience4j/references/source-index.md +3 -3
  195. package/template/.pi/skills/yss-security-algorithm/references/source-index.md +3 -3
  196. package/template/.pi/skills/yss-source-index/SKILL.md +3 -3
  197. package/template/.pi/skills/yss-source-index/scripts/refresh-yss-skill-index.mjs +24 -0
  198. package/template/.pi/skills/yss-source-index/scripts/refresh-yss-skill-index.test.mjs +15 -0
  199. package/template/.pi/skills/yss-taskflow/references/source-index.md +3 -3
  200. package/template/.pi/skills/yss-ui/references/frontend-docs.md +1 -1
  201. package/template/.pi/skills/yss-use-table-height/references/frontend-docs.md +1 -1
  202. package/template/.pi/skills/yss-use-tree-height/references/frontend-docs.md +1 -1
  203. package/template/.pi/skills/yss-userinfo/references/source-index.md +3 -3
  204. package/template/.pi/skills/yss-validation/references/source-index.md +5 -24
  205. package/template/.pi/skills/yss-valuation/references/source-index.md +3 -3
  206. package/template/.pi/skills/yss-variable/references/source-index.md +6 -34
  207. package/template/.pi/skills/yss-web-controller/SKILL.md +4 -4
  208. package/template/.pi/skills/yss-web-controller/scripts/generate_controller.mjs +77 -0
  209. package/template/.pi/skills/yss-web-controller/scripts/generate_controller.test.mjs +19 -0
  210. package/template/.qoder/skills/yss-audit-log/references/source-index.md +4 -3
  211. package/template/.qoder/skills/yss-cache/references/source-index.md +4 -3
  212. package/template/.qoder/skills/yss-components/references/frontend-docs.md +1 -1
  213. package/template/.qoder/skills/yss-db2mybatis/SKILL.md +6 -5
  214. package/template/.qoder/skills/yss-db2mybatis/scripts/db2mybatis.mjs +145 -0
  215. package/template/.qoder/skills/yss-db2mybatis/scripts/db2mybatis.test.mjs +32 -0
  216. package/template/.qoder/skills/yss-ddd-scaffold-generator/SKILL.md +5 -5
  217. package/template/.qoder/skills/yss-ddd-scaffold-generator/references/USAGE_EXAMPLES.md +2 -2
  218. package/template/.qoder/skills/yss-ddd-scaffold-generator/scripts/generate_scaffold.mjs +225 -0
  219. package/template/.qoder/skills/yss-ddd-scaffold-generator/scripts/run_scaffold_verification.mjs +32 -0
  220. package/template/.qoder/skills/yss-ddd-scaffold-generator/scripts/scaffold-generator.test.mjs +26 -0
  221. package/template/.qoder/skills/yss-design-system/SKILL.md +2 -2
  222. package/template/.qoder/skills/yss-design-system/scripts/validate-frontmatter.mjs +36 -0
  223. package/template/.qoder/skills/yss-design-system/scripts/validate-frontmatter.test.mjs +12 -0
  224. package/template/.qoder/skills/yss-dictionary/references/source-index.md +25 -25
  225. package/template/.qoder/skills/yss-distributed-id/references/source-index.md +6 -6
  226. package/template/.qoder/skills/yss-dto/references/source-index.md +7 -4
  227. package/template/.qoder/skills/yss-excel-mvc/references/source-index.md +3 -3
  228. package/template/.qoder/skills/yss-exception/references/source-index.md +3 -3
  229. package/template/.qoder/skills/yss-hook/references/frontend-docs.md +1 -1
  230. package/template/.qoder/skills/yss-jdbc/references/source-index.md +3 -3
  231. package/template/.qoder/skills/yss-log/references/source-index.md +3 -3
  232. package/template/.qoder/skills/yss-mybatis/references/source-index.md +3 -3
  233. package/template/.qoder/skills/yss-page-module-development/references/frontend-docs.md +1 -1
  234. package/template/.qoder/skills/yss-product-lifecycle/SKILL.md +2 -0
  235. package/template/.qoder/skills/yss-resilience4j/references/source-index.md +3 -3
  236. package/template/.qoder/skills/yss-security-algorithm/references/source-index.md +3 -3
  237. package/template/.qoder/skills/yss-source-index/SKILL.md +3 -3
  238. package/template/.qoder/skills/yss-source-index/scripts/refresh-yss-skill-index.mjs +24 -0
  239. package/template/.qoder/skills/yss-source-index/scripts/refresh-yss-skill-index.test.mjs +15 -0
  240. package/template/.qoder/skills/yss-taskflow/references/source-index.md +3 -3
  241. package/template/.qoder/skills/yss-ui/references/frontend-docs.md +1 -1
  242. package/template/.qoder/skills/yss-use-table-height/references/frontend-docs.md +1 -1
  243. package/template/.qoder/skills/yss-use-tree-height/references/frontend-docs.md +1 -1
  244. package/template/.qoder/skills/yss-userinfo/references/source-index.md +3 -3
  245. package/template/.qoder/skills/yss-validation/references/source-index.md +5 -24
  246. package/template/.qoder/skills/yss-valuation/references/source-index.md +3 -3
  247. package/template/.qoder/skills/yss-variable/references/source-index.md +6 -34
  248. package/template/.qoder/skills/yss-web-controller/SKILL.md +4 -4
  249. package/template/.qoder/skills/yss-web-controller/scripts/generate_controller.mjs +77 -0
  250. package/template/.qoder/skills/yss-web-controller/scripts/generate_controller.test.mjs +19 -0
  251. package/template/.trae/skills/yss-audit-log/references/source-index.md +4 -3
  252. package/template/.trae/skills/yss-cache/references/source-index.md +4 -3
  253. package/template/.trae/skills/yss-components/references/frontend-docs.md +1 -1
  254. package/template/.trae/skills/yss-db2mybatis/SKILL.md +6 -5
  255. package/template/.trae/skills/yss-db2mybatis/scripts/db2mybatis.mjs +145 -0
  256. package/template/.trae/skills/yss-db2mybatis/scripts/db2mybatis.test.mjs +32 -0
  257. package/template/.trae/skills/yss-ddd-scaffold-generator/SKILL.md +5 -5
  258. package/template/.trae/skills/yss-ddd-scaffold-generator/references/USAGE_EXAMPLES.md +2 -2
  259. package/template/.trae/skills/yss-ddd-scaffold-generator/scripts/generate_scaffold.mjs +225 -0
  260. package/template/.trae/skills/yss-ddd-scaffold-generator/scripts/run_scaffold_verification.mjs +32 -0
  261. package/template/.trae/skills/yss-ddd-scaffold-generator/scripts/scaffold-generator.test.mjs +26 -0
  262. package/template/.trae/skills/yss-design-system/SKILL.md +2 -2
  263. package/template/.trae/skills/yss-design-system/scripts/validate-frontmatter.mjs +36 -0
  264. package/template/.trae/skills/yss-design-system/scripts/validate-frontmatter.test.mjs +12 -0
  265. package/template/.trae/skills/yss-dictionary/references/source-index.md +25 -25
  266. package/template/.trae/skills/yss-distributed-id/references/source-index.md +6 -6
  267. package/template/.trae/skills/yss-dto/references/source-index.md +7 -4
  268. package/template/.trae/skills/yss-excel-mvc/references/source-index.md +3 -3
  269. package/template/.trae/skills/yss-exception/references/source-index.md +3 -3
  270. package/template/.trae/skills/yss-hook/references/frontend-docs.md +1 -1
  271. package/template/.trae/skills/yss-jdbc/references/source-index.md +3 -3
  272. package/template/.trae/skills/yss-log/references/source-index.md +3 -3
  273. package/template/.trae/skills/yss-mybatis/references/source-index.md +3 -3
  274. package/template/.trae/skills/yss-page-module-development/references/frontend-docs.md +1 -1
  275. package/template/.trae/skills/yss-product-lifecycle/SKILL.md +2 -0
  276. package/template/.trae/skills/yss-resilience4j/references/source-index.md +3 -3
  277. package/template/.trae/skills/yss-security-algorithm/references/source-index.md +3 -3
  278. package/template/.trae/skills/yss-source-index/SKILL.md +3 -3
  279. package/template/.trae/skills/yss-source-index/scripts/refresh-yss-skill-index.mjs +24 -0
  280. package/template/.trae/skills/yss-source-index/scripts/refresh-yss-skill-index.test.mjs +15 -0
  281. package/template/.trae/skills/yss-taskflow/references/source-index.md +3 -3
  282. package/template/.trae/skills/yss-ui/references/frontend-docs.md +1 -1
  283. package/template/.trae/skills/yss-use-table-height/references/frontend-docs.md +1 -1
  284. package/template/.trae/skills/yss-use-tree-height/references/frontend-docs.md +1 -1
  285. package/template/.trae/skills/yss-userinfo/references/source-index.md +3 -3
  286. package/template/.trae/skills/yss-validation/references/source-index.md +5 -24
  287. package/template/.trae/skills/yss-valuation/references/source-index.md +3 -3
  288. package/template/.trae/skills/yss-variable/references/source-index.md +6 -34
  289. package/template/.trae/skills/yss-web-controller/SKILL.md +4 -4
  290. package/template/.trae/skills/yss-web-controller/scripts/generate_controller.mjs +77 -0
  291. package/template/.trae/skills/yss-web-controller/scripts/generate_controller.test.mjs +19 -0
  292. package/template/CONTEXT.md +2 -0
  293. package/template/README.md +0 -2
  294. package/template/__yss_dotfile__.gitignore +2 -17
  295. package/template/docs/agents/skills-maintenance.md +2 -0
  296. package/template/docs/architecture/README.md +1 -18
  297. package/template/docs/design/README.md +1 -2
  298. package/template/docs/user-guide//345/244/226/351/203/250/345/221/275/344/273/244/350/241/214/345/267/245/345/205/267/345/256/236/350/267/265/346/214/207/345/215/227.md +1 -1
  299. package/template/docs/user-guide//350/247/204/346/240/274/344/270/216/344/273/273/345/212/241/350/277/201/347/247/273/346/214/207/345/215/227.md +4 -0
  300. package/template/scripts/export-yss-skills +3 -385
  301. package/template/scripts/generate-lifecycle-artifacts +2 -26
  302. package/template/scripts/implementation-path-policy +6 -0
  303. package/template/scripts/lib/export-skills.mjs +186 -0
  304. package/template/scripts/lib/implementation-path-policy.mjs +32 -0
  305. package/template/scripts/lib/lifecycle-registry.mjs +175 -0
  306. package/template/scripts/lib/repository-mode.mjs +39 -0
  307. package/template/scripts/lib/scenario-checks.mjs +54 -0
  308. package/template/scripts/lib/skill-supply-chain.mjs +124 -0
  309. package/template/scripts/node-generate-lifecycle-artifacts.mjs +33 -0
  310. package/template/scripts/node-verify-lifecycle-registry.mjs +61 -0
  311. package/template/scripts/repository-mode +9 -0
  312. package/template/scripts/sync-skills +9 -154
  313. package/template/scripts/update-skill-lock +8 -254
  314. package/template/scripts/vendor/NOTICES.md +45 -0
  315. package/template/scripts/vendor/manifest.json +563 -0
  316. package/template/scripts/vendor/xml.mjs +4103 -0
  317. package/template/scripts/vendor/yaml.mjs +6311 -0
  318. package/template/scripts/verify-governance-release +37 -38
  319. package/template/scripts/verify-implementation-path-scenarios +36 -39
  320. package/template/scripts/verify-lifecycle-registry +2 -67
  321. package/template/scripts/verify-lifecycle-scenarios +4 -694
  322. package/template/scripts/verify-matt-yss-integration-scenarios +3 -801
  323. package/template/scripts/verify-openapi-json-handoff-scenarios +3 -270
  324. package/template/scripts/verify-openapi-yaml-first-scenarios +3 -120
  325. package/template/scripts/verify-prototype-backend-scaffold-scenarios +3 -261
  326. package/template/scripts/verify-scaffold-generator-scenarios +4 -4
  327. package/template/scripts/verify-template +18 -277
  328. package/template/scripts/verify-yss-router-scenarios +3 -942
  329. package/template/scripts/verify-yss-ui-scenarios +54 -65
  330. package/template/skills-lock.json +88 -163
  331. package/template/wiki/raw/README.md +0 -2
  332. package/template/wiki/raw/skills-lock.json +0 -75
  333. package/template.manifest.json +1 -0
  334. package/template.snapshot.json +5 -26
  335. package/template/.agents/skills/beautiful-article/README.md +0 -450
  336. package/template/.agents/skills/beautiful-article/README.zh-CN.md +0 -450
  337. package/template/.agents/skills/beautiful-article/SKILL.md +0 -466
  338. package/template/.agents/skills/beautiful-article/assets/scaffold-template/__yss_dotfile__.npmrc +0 -1
  339. package/template/.agents/skills/beautiful-article/assets/scaffold-template/article/Article.tsx +0 -69
  340. package/template/.agents/skills/beautiful-article/assets/scaffold-template/article/Cover.tsx +0 -172
  341. package/template/.agents/skills/beautiful-article/assets/scaffold-template/article/main.tsx +0 -26
  342. package/template/.agents/skills/beautiful-article/assets/scaffold-template/article/sections/01-opening.tsx +0 -30
  343. package/template/.agents/skills/beautiful-article/assets/scaffold-template/index.html +0 -19
  344. package/template/.agents/skills/beautiful-article/assets/scaffold-template/package.json +0 -26
  345. package/template/.agents/skills/beautiful-article/assets/scaffold-template/tsconfig.json +0 -20
  346. package/template/.agents/skills/beautiful-article/assets/scaffold-template/tsconfig.node.json +0 -11
  347. package/template/.agents/skills/beautiful-article/assets/scaffold-template/vite.config.ts +0 -18
  348. package/template/.agents/skills/beautiful-article/manifest.json +0 -15
  349. package/template/.agents/skills/beautiful-article/references/article-types/briefing.md +0 -32
  350. package/template/.agents/skills/beautiful-article/references/article-types/dialogue.md +0 -30
  351. package/template/.agents/skills/beautiful-article/references/article-types/essay.md +0 -31
  352. package/template/.agents/skills/beautiful-article/references/article-types/explainer.md +0 -32
  353. package/template/.agents/skills/beautiful-article/references/article-types/full-report.md +0 -32
  354. package/template/.agents/skills/beautiful-article/references/article-types/interactive-explainer.md +0 -66
  355. package/template/.agents/skills/beautiful-article/references/article-types/longform.md +0 -32
  356. package/template/.agents/skills/beautiful-article/references/article-types/review.md +0 -32
  357. package/template/.agents/skills/beautiful-article/references/article-types/tutorial.md +0 -30
  358. package/template/.agents/skills/beautiful-article/references/article-types/visual-essay.md +0 -33
  359. package/template/.agents/skills/beautiful-article/references/article-types.md +0 -42
  360. package/template/.agents/skills/beautiful-article/references/asset-policy.md +0 -71
  361. package/template/.agents/skills/beautiful-article/references/component-policy.md +0 -103
  362. package/template/.agents/skills/beautiful-article/references/cover.md +0 -208
  363. package/template/.agents/skills/beautiful-article/references/harness.md +0 -35
  364. package/template/.agents/skills/beautiful-article/references/html-output.md +0 -42
  365. package/template/.agents/skills/beautiful-article/references/information-density.md +0 -50
  366. package/template/.agents/skills/beautiful-article/references/layout.md +0 -46
  367. package/template/.agents/skills/beautiful-article/references/pdf-output.md +0 -208
  368. package/template/.agents/skills/beautiful-article/references/plan-template.md +0 -109
  369. package/template/.agents/skills/beautiful-article/references/raw-policy.md +0 -86
  370. package/template/.agents/skills/beautiful-article/references/repair-policy.md +0 -35
  371. package/template/.agents/skills/beautiful-article/references/review-checklist.md +0 -133
  372. package/template/.agents/skills/beautiful-article/references/scaffold.md +0 -77
  373. package/template/.agents/skills/beautiful-article/references/section-build.md +0 -100
  374. package/template/.agents/skills/beautiful-article/references/source-to-markdown.md +0 -118
  375. package/template/.agents/skills/beautiful-article/references/theme-selection.md +0 -48
  376. package/template/.agents/skills/beautiful-article/scripts/html-to-pdf.sh +0 -160
  377. package/template/.agents/skills/beautiful-article/scripts/pdf-print-overrides.css +0 -192
  378. package/template/.agents/skills/beautiful-article/scripts/scaffold.sh +0 -172
  379. package/template/.agents/skills/beautiful-article/scripts/source-to-markdown-markitdown.py +0 -100
  380. package/template/.agents/skills/beautiful-article/scripts/source-to-markdown.py +0 -174
  381. package/template/.agents/skills/beautiful-article/theme-profiles/andy.md +0 -57
  382. package/template/.agents/skills/beautiful-article/theme-profiles/bayer.md +0 -57
  383. package/template/.agents/skills/beautiful-article/theme-profiles/bodoni.md +0 -57
  384. package/template/.agents/skills/beautiful-article/theme-profiles/freddie.md +0 -57
  385. package/template/.agents/skills/beautiful-article/theme-profiles/fuller.md +0 -56
  386. package/template/.agents/skills/beautiful-article/theme-profiles/index.json +0 -112
  387. package/template/.agents/skills/beautiful-article/theme-profiles/knuth.md +0 -60
  388. package/template/.agents/skills/beautiful-article/theme-profiles/press.md +0 -61
  389. package/template/.agents/skills/beautiful-article/theme-profiles/shannon.md +0 -64
  390. package/template/.agents/skills/beautiful-article/theme-profiles/sottsass.md +0 -57
  391. package/template/.agents/skills/beautiful-article/theme-profiles/tufte.md +0 -64
  392. package/template/.agents/skills/beautiful-article/theme-profiles/vignelli.md +0 -63
  393. package/template/.agents/skills/drawio/.mcp.json +0 -8
  394. package/template/.agents/skills/drawio/CHANGELOG.md +0 -216
  395. package/template/.agents/skills/drawio/SKILL.md +0 -157
  396. package/template/.agents/skills/drawio/agents/interface.yaml +0 -26
  397. package/template/.agents/skills/drawio/agents/openai.yaml +0 -26
  398. package/template/.agents/skills/drawio/assets/catalog/ai-icons.json.gz +0 -0
  399. package/template/.agents/skills/drawio/assets/catalog/shape-catalog.json.gz +0 -0
  400. package/template/.agents/skills/drawio/assets/catalog/shape-index.json.gz +0 -0
  401. package/template/.agents/skills/drawio/assets/examples/login-flow-test.drawio +0 -6
  402. package/template/.agents/skills/drawio/assets/examples/login-flow.drawio +0 -6
  403. package/template/.agents/skills/drawio/assets/examples/microservices.drawio +0 -6
  404. package/template/.agents/skills/drawio/assets/examples/neural-network.drawio +0 -6
  405. package/template/.agents/skills/drawio/assets/licenses/architecture-diagram-generator-MIT.txt +0 -26
  406. package/template/.agents/skills/drawio/assets/licenses/drawio-mcp-shape-index-Apache-2.0.txt +0 -8
  407. package/template/.agents/skills/drawio/assets/licenses/lobe-icons-MIT.txt +0 -26
  408. package/template/.agents/skills/drawio/assets/licenses/lucide-ISC.txt +0 -41
  409. package/template/.agents/skills/drawio/assets/palettes/c4-blue.json +0 -29
  410. package/template/.agents/skills/drawio/assets/palettes/cloud-aws.json +0 -30
  411. package/template/.agents/skills/drawio/assets/palettes/drawio-classic.json +0 -21
  412. package/template/.agents/skills/drawio/assets/palettes/ieee-bw.json +0 -26
  413. package/template/.agents/skills/drawio/assets/palettes/ieee-color.json +0 -17
  414. package/template/.agents/skills/drawio/assets/palettes/journal-jama.json +0 -20
  415. package/template/.agents/skills/drawio/assets/palettes/journal-npg.json +0 -23
  416. package/template/.agents/skills/drawio/assets/palettes/matlab-lines.json +0 -20
  417. package/template/.agents/skills/drawio/assets/palettes/morandi.json +0 -21
  418. package/template/.agents/skills/drawio/assets/palettes/okabe-ito.json +0 -21
  419. package/template/.agents/skills/drawio/assets/palettes/seaborn-colorblind.json +0 -23
  420. package/template/.agents/skills/drawio/assets/palettes/tol-bright.json +0 -20
  421. package/template/.agents/skills/drawio/assets/palettes/tol-high-contrast.json +0 -18
  422. package/template/.agents/skills/drawio/assets/palettes/tol-light-fill.json +0 -22
  423. package/template/.agents/skills/drawio/assets/palettes/tol-muted.json +0 -22
  424. package/template/.agents/skills/drawio/assets/schemas/graph-projection.schema.json +0 -135
  425. package/template/.agents/skills/drawio/assets/schemas/spec.schema.json +0 -620
  426. package/template/.agents/skills/drawio/assets/themes/academic-color.json +0 -299
  427. package/template/.agents/skills/drawio/assets/themes/academic.json +0 -245
  428. package/template/.agents/skills/drawio/assets/themes/arch-dark.json +0 -253
  429. package/template/.agents/skills/drawio/assets/themes/blueprint.json +0 -246
  430. package/template/.agents/skills/drawio/assets/themes/dark-luxury.json +0 -246
  431. package/template/.agents/skills/drawio/assets/themes/dark-terminal.json +0 -244
  432. package/template/.agents/skills/drawio/assets/themes/dark.json +0 -220
  433. package/template/.agents/skills/drawio/assets/themes/high-contrast.json +0 -220
  434. package/template/.agents/skills/drawio/assets/themes/nature.json +0 -220
  435. package/template/.agents/skills/drawio/assets/themes/notion-clean.json +0 -246
  436. package/template/.agents/skills/drawio/assets/themes/tech-blue.json +0 -220
  437. package/template/.agents/skills/drawio/evals/README.md +0 -17
  438. package/template/.agents/skills/drawio/evals/ai-icon-catalog-cases.json +0 -89
  439. package/template/.agents/skills/drawio/evals/baseline-prompts.json +0 -122
  440. package/template/.agents/skills/drawio/evals/darwin-results.tsv +0 -4
  441. package/template/.agents/skills/drawio/evals/evals.json +0 -223
  442. package/template/.agents/skills/drawio/evals/evidence/ai-icon-catalog-desktop.json +0 -134
  443. package/template/.agents/skills/drawio/evals/fixtures/ai-icons-advanced-svg.yaml +0 -25
  444. package/template/.agents/skills/drawio/evals/fixtures/ai-icons-cjk-agent-rag.yaml +0 -55
  445. package/template/.agents/skills/drawio/evals/fixtures/ai-icons-core-aliases.yaml +0 -50
  446. package/template/.agents/skills/drawio/evals/fixtures/ai-icons-current-color.yaml +0 -25
  447. package/template/.agents/skills/drawio/evals/fixtures/ai-icons-gradients.yaml +0 -25
  448. package/template/.agents/skills/drawio/evals/fixtures/import-simple-compressed.drawio +0 -5
  449. package/template/.agents/skills/drawio/evals/fixtures/import-simple.drawio +0 -28
  450. package/template/.agents/skills/drawio/evals/fixtures/industrial-architecture.yaml +0 -239
  451. package/template/.agents/skills/drawio/evals/fixtures/replicate-academic-highlight.svg +0 -13
  452. package/template/.agents/skills/drawio/evals/fixtures/replicate-brand-architecture.svg +0 -14
  453. package/template/.agents/skills/drawio/evals/fixtures/replicate-warm-approval.svg +0 -13
  454. package/template/.agents/skills/drawio/evals/fixtures/vision-tall-workflow.yaml +0 -47
  455. package/template/.agents/skills/drawio/evals/upstream-integration-cases.json +0 -78
  456. package/template/.agents/skills/drawio/evals/vision-preview-cases.json +0 -147
  457. package/template/.agents/skills/drawio/references/docs/agent-diagrams.md +0 -164
  458. package/template/.agents/skills/drawio/references/docs/ah-format.md +0 -322
  459. package/template/.agents/skills/drawio/references/docs/architecture-diagrams.md +0 -159
  460. package/template/.agents/skills/drawio/references/docs/canonical-graph-projection.md +0 -54
  461. package/template/.agents/skills/drawio/references/docs/code-importers.md +0 -53
  462. package/template/.agents/skills/drawio/references/docs/config-importers.md +0 -68
  463. package/template/.agents/skills/drawio/references/docs/design-system/README.md +0 -204
  464. package/template/.agents/skills/drawio/references/docs/design-system/color-guide.md +0 -255
  465. package/template/.agents/skills/drawio/references/docs/design-system/connectors.md +0 -388
  466. package/template/.agents/skills/drawio/references/docs/design-system/formulas.md +0 -196
  467. package/template/.agents/skills/drawio/references/docs/design-system/icons.md +0 -332
  468. package/template/.agents/skills/drawio/references/docs/design-system/shapes.md +0 -269
  469. package/template/.agents/skills/drawio/references/docs/design-system/specification.md +0 -754
  470. package/template/.agents/skills/drawio/references/docs/design-system/themes.md +0 -441
  471. package/template/.agents/skills/drawio/references/docs/design-system/tokens.md +0 -232
  472. package/template/.agents/skills/drawio/references/docs/edge-quality-rules.md +0 -65
  473. package/template/.agents/skills/drawio/references/docs/ieee-network-diagrams.md +0 -145
  474. package/template/.agents/skills/drawio/references/docs/live-snapshots-drift.md +0 -72
  475. package/template/.agents/skills/drawio/references/docs/math-typesetting.md +0 -258
  476. package/template/.agents/skills/drawio/references/docs/mcp-tools.md +0 -85
  477. package/template/.agents/skills/drawio/references/docs/migration-readiness.md +0 -73
  478. package/template/.agents/skills/drawio/references/docs/stencil-library-guide.md +0 -97
  479. package/template/.agents/skills/drawio/references/docs/style-extraction.md +0 -261
  480. package/template/.agents/skills/drawio/references/docs/style-presets.md +0 -126
  481. package/template/.agents/skills/drawio/references/docs/upstream-capability-compatibility.md +0 -61
  482. package/template/.agents/skills/drawio/references/docs/xml-format.md +0 -53
  483. package/template/.agents/skills/drawio/references/examples/README.md +0 -33
  484. package/template/.agents/skills/drawio/references/examples/agentic-rag.yaml +0 -71
  485. package/template/.agents/skills/drawio/references/examples/arch-dark-aws-serverless.yaml +0 -103
  486. package/template/.agents/skills/drawio/references/examples/arch-dark-microservices.yaml +0 -146
  487. package/template/.agents/skills/drawio/references/examples/arch-dark-web-app.yaml +0 -62
  488. package/template/.agents/skills/drawio/references/examples/auto-layout-workflow.yaml +0 -81
  489. package/template/.agents/skills/drawio/references/examples/aws-vpc-topology.yaml +0 -66
  490. package/template/.agents/skills/drawio/references/examples/campus-lan-topology.yaml +0 -89
  491. package/template/.agents/skills/drawio/references/examples/cloud-reference-architecture.yaml +0 -34
  492. package/template/.agents/skills/drawio/references/examples/e-commerce.yaml +0 -141
  493. package/template/.agents/skills/drawio/references/examples/importers/README.md +0 -10
  494. package/template/.agents/skills/drawio/references/examples/importers/live/compose-drift-evidence.json +0 -49
  495. package/template/.agents/skills/drawio/references/examples/importers/live/compose-drift-report.json +0 -300
  496. package/template/.agents/skills/drawio/references/examples/importers/live/compose-drift.spec.yaml +0 -75
  497. package/template/.agents/skills/drawio/references/examples/importers/live/docker-inspect.json +0 -55
  498. package/template/.agents/skills/drawio/references/examples/importers/live/drift-declared-compose.yaml +0 -13
  499. package/template/.agents/skills/drawio/references/examples/importers/live/kubernetes-live.json +0 -71
  500. package/template/.agents/skills/drawio/references/examples/importers/live/terraform-state.json +0 -70
  501. package/template/.agents/skills/drawio/references/examples/importers/schema.sql +0 -10
  502. package/template/.agents/skills/drawio/references/examples/importers/terraform.tf +0 -9
  503. package/template/.agents/skills/drawio/references/examples/login-flow.yaml +0 -65
  504. package/template/.agents/skills/drawio/references/examples/mem0-memory-layer.yaml +0 -63
  505. package/template/.agents/skills/drawio/references/examples/microservices.yaml +0 -58
  506. package/template/.agents/skills/drawio/references/examples/multi-agent-orchestration.yaml +0 -67
  507. package/template/.agents/skills/drawio/references/examples/neural-network.yaml +0 -66
  508. package/template/.agents/skills/drawio/references/examples/onprem-dmz-topology.yaml +0 -62
  509. package/template/.agents/skills/drawio/references/examples/palettes/README.md +0 -29
  510. package/template/.agents/skills/drawio/references/examples/palettes/c4-blue.drawio +0 -6
  511. package/template/.agents/skills/drawio/references/examples/palettes/c4-blue.svg +0 -36
  512. package/template/.agents/skills/drawio/references/examples/palettes/cloud-aws.drawio +0 -6
  513. package/template/.agents/skills/drawio/references/examples/palettes/cloud-aws.svg +0 -36
  514. package/template/.agents/skills/drawio/references/examples/palettes/drawio-classic.drawio +0 -6
  515. package/template/.agents/skills/drawio/references/examples/palettes/drawio-classic.svg +0 -36
  516. package/template/.agents/skills/drawio/references/examples/palettes/ieee-bw.drawio +0 -6
  517. package/template/.agents/skills/drawio/references/examples/palettes/ieee-bw.svg +0 -36
  518. package/template/.agents/skills/drawio/references/examples/palettes/ieee-color.drawio +0 -6
  519. package/template/.agents/skills/drawio/references/examples/palettes/ieee-color.svg +0 -36
  520. package/template/.agents/skills/drawio/references/examples/palettes/journal-jama.drawio +0 -6
  521. package/template/.agents/skills/drawio/references/examples/palettes/journal-jama.svg +0 -36
  522. package/template/.agents/skills/drawio/references/examples/palettes/journal-npg.drawio +0 -6
  523. package/template/.agents/skills/drawio/references/examples/palettes/journal-npg.svg +0 -36
  524. package/template/.agents/skills/drawio/references/examples/palettes/matlab-lines.drawio +0 -6
  525. package/template/.agents/skills/drawio/references/examples/palettes/matlab-lines.svg +0 -36
  526. package/template/.agents/skills/drawio/references/examples/palettes/morandi.drawio +0 -6
  527. package/template/.agents/skills/drawio/references/examples/palettes/morandi.svg +0 -36
  528. package/template/.agents/skills/drawio/references/examples/palettes/okabe-ito.drawio +0 -6
  529. package/template/.agents/skills/drawio/references/examples/palettes/okabe-ito.svg +0 -36
  530. package/template/.agents/skills/drawio/references/examples/palettes/palette-swatch.template.yaml +0 -56
  531. package/template/.agents/skills/drawio/references/examples/palettes/seaborn-colorblind.drawio +0 -6
  532. package/template/.agents/skills/drawio/references/examples/palettes/seaborn-colorblind.svg +0 -36
  533. package/template/.agents/skills/drawio/references/examples/palettes/tol-bright.drawio +0 -6
  534. package/template/.agents/skills/drawio/references/examples/palettes/tol-bright.svg +0 -36
  535. package/template/.agents/skills/drawio/references/examples/palettes/tol-high-contrast.drawio +0 -6
  536. package/template/.agents/skills/drawio/references/examples/palettes/tol-high-contrast.svg +0 -36
  537. package/template/.agents/skills/drawio/references/examples/palettes/tol-light-fill.drawio +0 -6
  538. package/template/.agents/skills/drawio/references/examples/palettes/tol-light-fill.svg +0 -36
  539. package/template/.agents/skills/drawio/references/examples/palettes/tol-muted.drawio +0 -6
  540. package/template/.agents/skills/drawio/references/examples/palettes/tol-muted.svg +0 -36
  541. package/template/.agents/skills/drawio/references/examples/rag-pipeline.yaml +0 -67
  542. package/template/.agents/skills/drawio/references/examples/replicated-brand-flow.yaml +0 -89
  543. package/template/.agents/skills/drawio/references/examples/swimlane-engineering-review.yaml +0 -44
  544. package/template/.agents/skills/drawio/references/examples/tiered-network-topology.yaml +0 -59
  545. package/template/.agents/skills/drawio/references/examples/tool-call-loop.yaml +0 -63
  546. package/template/.agents/skills/drawio/references/examples/vendor-device-mapping.yaml +0 -46
  547. package/template/.agents/skills/drawio/references/official/style-reference.md +0 -936
  548. package/template/.agents/skills/drawio/references/official/xml-reference.md +0 -262
  549. package/template/.agents/skills/drawio/references/palette.schema.json +0 -59
  550. package/template/.agents/skills/drawio/references/theme.schema.json +0 -249
  551. package/template/.agents/skills/drawio/references/upstream/pure-drawio-skill.md +0 -615
  552. package/template/.agents/skills/drawio/references/workflows/create.md +0 -195
  553. package/template/.agents/skills/drawio/references/workflows/edit.md +0 -174
  554. package/template/.agents/skills/drawio/references/workflows/replicate.md +0 -239
  555. package/template/.agents/skills/drawio/references/workflows/visual-review.md +0 -108
  556. package/template/.agents/skills/drawio/reports/output_quality_scorecard.md +0 -106
  557. package/template/.agents/skills/drawio/reports/upstream-port-release-evidence.md +0 -43
  558. package/template/.agents/skills/drawio/scripts/adapters/ci.js +0 -139
  559. package/template/.agents/skills/drawio/scripts/adapters/ci.test.js +0 -41
  560. package/template/.agents/skills/drawio/scripts/adapters/code-common.js +0 -171
  561. package/template/.agents/skills/drawio/scripts/adapters/code-imports.test.js +0 -80
  562. package/template/.agents/skills/drawio/scripts/adapters/code-parsers.integration.test.js +0 -71
  563. package/template/.agents/skills/drawio/scripts/adapters/compose.js +0 -134
  564. package/template/.agents/skills/drawio/scripts/adapters/compose.test.js +0 -54
  565. package/template/.agents/skills/drawio/scripts/adapters/config-adapters.integration.test.js +0 -58
  566. package/template/.agents/skills/drawio/scripts/adapters/config-common.js +0 -131
  567. package/template/.agents/skills/drawio/scripts/adapters/config-common.test.js +0 -32
  568. package/template/.agents/skills/drawio/scripts/adapters/docker-inspect.js +0 -127
  569. package/template/.agents/skills/drawio/scripts/adapters/docker-inspect.test.js +0 -62
  570. package/template/.agents/skills/drawio/scripts/adapters/fixtures/raster-extraction.json +0 -31
  571. package/template/.agents/skills/drawio/scripts/adapters/go-code-adapter.test.js +0 -59
  572. package/template/.agents/skills/drawio/scripts/adapters/go-code.js +0 -168
  573. package/template/.agents/skills/drawio/scripts/adapters/graph-drift.file.test.js +0 -67
  574. package/template/.agents/skills/drawio/scripts/adapters/graph-drift.js +0 -358
  575. package/template/.agents/skills/drawio/scripts/adapters/graph-drift.test.js +0 -272
  576. package/template/.agents/skills/drawio/scripts/adapters/graph-projection.js +0 -335
  577. package/template/.agents/skills/drawio/scripts/adapters/graph-projection.test.js +0 -141
  578. package/template/.agents/skills/drawio/scripts/adapters/identity.js +0 -244
  579. package/template/.agents/skills/drawio/scripts/adapters/identity.test.js +0 -123
  580. package/template/.agents/skills/drawio/scripts/adapters/index.js +0 -489
  581. package/template/.agents/skills/drawio/scripts/adapters/index.test.js +0 -152
  582. package/template/.agents/skills/drawio/scripts/adapters/js-code-adapter.test.js +0 -42
  583. package/template/.agents/skills/drawio/scripts/adapters/js-code.js +0 -141
  584. package/template/.agents/skills/drawio/scripts/adapters/kubernetes-live.test.js +0 -46
  585. package/template/.agents/skills/drawio/scripts/adapters/kubernetes.js +0 -258
  586. package/template/.agents/skills/drawio/scripts/adapters/kubernetes.test.js +0 -81
  587. package/template/.agents/skills/drawio/scripts/adapters/openapi.js +0 -98
  588. package/template/.agents/skills/drawio/scripts/adapters/openapi.test.js +0 -46
  589. package/template/.agents/skills/drawio/scripts/adapters/optional-python-code.js +0 -16
  590. package/template/.agents/skills/drawio/scripts/adapters/optional-python.integration.test.js +0 -32
  591. package/template/.agents/skills/drawio/scripts/adapters/optional-python.js +0 -127
  592. package/template/.agents/skills/drawio/scripts/adapters/optional-python.test.js +0 -55
  593. package/template/.agents/skills/drawio/scripts/adapters/projection-to-spec.js +0 -116
  594. package/template/.agents/skills/drawio/scripts/adapters/projection-to-spec.test.js +0 -139
  595. package/template/.agents/skills/drawio/scripts/adapters/python/code-parser-worker.py +0 -93
  596. package/template/.agents/skills/drawio/scripts/adapters/python/config-parser-worker.py +0 -237
  597. package/template/.agents/skills/drawio/scripts/adapters/python/requirements.txt +0 -2
  598. package/template/.agents/skills/drawio/scripts/adapters/python-code-adapter.test.js +0 -127
  599. package/template/.agents/skills/drawio/scripts/adapters/python-code.js +0 -246
  600. package/template/.agents/skills/drawio/scripts/adapters/raster-extraction.js +0 -258
  601. package/template/.agents/skills/drawio/scripts/adapters/raster-extraction.test.js +0 -308
  602. package/template/.agents/skills/drawio/scripts/adapters/rust-code-adapter.test.js +0 -64
  603. package/template/.agents/skills/drawio/scripts/adapters/rust-code.js +0 -207
  604. package/template/.agents/skills/drawio/scripts/adapters/sql-ddl.js +0 -118
  605. package/template/.agents/skills/drawio/scripts/adapters/sql-ddl.test.js +0 -56
  606. package/template/.agents/skills/drawio/scripts/adapters/terraform-config.js +0 -141
  607. package/template/.agents/skills/drawio/scripts/adapters/terraform-config.test.js +0 -67
  608. package/template/.agents/skills/drawio/scripts/adapters/terraform-state.js +0 -157
  609. package/template/.agents/skills/drawio/scripts/adapters/terraform-state.test.js +0 -69
  610. package/template/.agents/skills/drawio/scripts/cli.js +0 -700
  611. package/template/.agents/skills/drawio/scripts/dsl/ah-to-drawio.js +0 -276
  612. package/template/.agents/skills/drawio/scripts/dsl/ah-to-drawio.test.js +0 -77
  613. package/template/.agents/skills/drawio/scripts/dsl/ai-icon-catalog.js +0 -126
  614. package/template/.agents/skills/drawio/scripts/dsl/ai-icon-catalog.test.js +0 -86
  615. package/template/.agents/skills/drawio/scripts/dsl/auto-layout.js +0 -206
  616. package/template/.agents/skills/drawio/scripts/dsl/auto-layout.test.js +0 -249
  617. package/template/.agents/skills/drawio/scripts/dsl/catalog-ranking.js +0 -54
  618. package/template/.agents/skills/drawio/scripts/dsl/catalog-search.js +0 -58
  619. package/template/.agents/skills/drawio/scripts/dsl/catalog-search.test.js +0 -44
  620. package/template/.agents/skills/drawio/scripts/dsl/document-spec.js +0 -256
  621. package/template/.agents/skills/drawio/scripts/dsl/document-spec.test.js +0 -147
  622. package/template/.agents/skills/drawio/scripts/dsl/drawio-to-spec.js +0 -497
  623. package/template/.agents/skills/drawio/scripts/dsl/examples-baseline.test.js +0 -30
  624. package/template/.agents/skills/drawio/scripts/dsl/icon-mappings.js +0 -65
  625. package/template/.agents/skills/drawio/scripts/dsl/icon-mappings.test.js +0 -19
  626. package/template/.agents/skills/drawio/scripts/dsl/icon-resolver.js +0 -153
  627. package/template/.agents/skills/drawio/scripts/dsl/icon-resolver.test.js +0 -62
  628. package/template/.agents/skills/drawio/scripts/dsl/multi-page.js +0 -224
  629. package/template/.agents/skills/drawio/scripts/dsl/multi-page.test.js +0 -107
  630. package/template/.agents/skills/drawio/scripts/dsl/palette-catalog.test.js +0 -138
  631. package/template/.agents/skills/drawio/scripts/dsl/palette-integration.test.js +0 -182
  632. package/template/.agents/skills/drawio/scripts/dsl/palette-validate.js +0 -91
  633. package/template/.agents/skills/drawio/scripts/dsl/palette.js +0 -302
  634. package/template/.agents/skills/drawio/scripts/dsl/palette.test.js +0 -197
  635. package/template/.agents/skills/drawio/scripts/dsl/shape-catalog.js +0 -89
  636. package/template/.agents/skills/drawio/scripts/dsl/shape-catalog.test.js +0 -21
  637. package/template/.agents/skills/drawio/scripts/dsl/spec-to-drawio.js +0 -3739
  638. package/template/.agents/skills/drawio/scripts/dsl/spec-to-drawio.test.js +0 -3022
  639. package/template/.agents/skills/drawio/scripts/generate-palette-swatches.js +0 -87
  640. package/template/.agents/skills/drawio/scripts/install.bat +0 -64
  641. package/template/.agents/skills/drawio/scripts/install.sh +0 -44
  642. package/template/.agents/skills/drawio/scripts/math/index.js +0 -317
  643. package/template/.agents/skills/drawio/scripts/math/index.test.js +0 -62
  644. package/template/.agents/skills/drawio/scripts/package.json +0 -1
  645. package/template/.agents/skills/drawio/scripts/postprocess/artifacts.js +0 -142
  646. package/template/.agents/skills/drawio/scripts/postprocess/artifacts.test.js +0 -86
  647. package/template/.agents/skills/drawio/scripts/postprocess/cli.js +0 -228
  648. package/template/.agents/skills/drawio/scripts/postprocess/cli.test.js +0 -129
  649. package/template/.agents/skills/drawio/scripts/postprocess/fixtures/bundle.yaml +0 -75
  650. package/template/.agents/skills/drawio/scripts/postprocess/fixtures/legacy.yaml +0 -21
  651. package/template/.agents/skills/drawio/scripts/postprocess/html.js +0 -197
  652. package/template/.agents/skills/drawio/scripts/postprocess/html.test.js +0 -50
  653. package/template/.agents/skills/drawio/scripts/postprocess/index.js +0 -5
  654. package/template/.agents/skills/drawio/scripts/postprocess/input.js +0 -112
  655. package/template/.agents/skills/drawio/scripts/postprocess/input.test.js +0 -73
  656. package/template/.agents/skills/drawio/scripts/postprocess/mutate.js +0 -584
  657. package/template/.agents/skills/drawio/scripts/postprocess/mutate.test.js +0 -193
  658. package/template/.agents/skills/drawio/scripts/postprocess/projection.js +0 -178
  659. package/template/.agents/skills/drawio/scripts/postprocess/projection.test.js +0 -67
  660. package/template/.agents/skills/drawio/scripts/runtime/artifacts.js +0 -283
  661. package/template/.agents/skills/drawio/scripts/runtime/desktop.js +0 -204
  662. package/template/.agents/skills/drawio/scripts/runtime/desktop.test.js +0 -121
  663. package/template/.agents/skills/drawio/scripts/runtime/diagrams-net-url.js +0 -122
  664. package/template/.agents/skills/drawio/scripts/runtime/export-stability.js +0 -75
  665. package/template/.agents/skills/drawio/scripts/runtime/export-stability.test.js +0 -81
  666. package/template/.agents/skills/drawio/scripts/runtime/png-inspection.js +0 -157
  667. package/template/.agents/skills/drawio/scripts/runtime/png-inspection.test.js +0 -120
  668. package/template/.agents/skills/drawio/scripts/runtime/vision-preview.js +0 -77
  669. package/template/.agents/skills/drawio/scripts/runtime/vision-preview.test.js +0 -103
  670. package/template/.agents/skills/drawio/scripts/shared/ai-icon-contract.js +0 -13
  671. package/template/.agents/skills/drawio/scripts/shared/xml-utils.js +0 -241
  672. package/template/.agents/skills/drawio/scripts/svg/drawio-to-svg.js +0 -918
  673. package/template/.agents/skills/drawio/scripts/svg/drawio-to-svg.test.js +0 -763
  674. package/template/.agents/skills/drawio/scripts/tools/build-ai-icon-catalog.js +0 -208
  675. package/template/.agents/skills/drawio/scripts/tools/build-ai-icon-catalog.test.js +0 -107
  676. package/template/.agents/skills/drawio/scripts/tools/build-shape-catalog.js +0 -84
  677. package/template/.agents/skills/drawio/scripts/tools/build-shape-catalog.test.js +0 -43
  678. package/template/.agents/skills/drawio/scripts/tools/fixtures/ai-icons-package/icons/alpha-color.svg +0 -1
  679. package/template/.agents/skills/drawio/scripts/tools/fixtures/ai-icons-package/icons/alpha.svg +0 -1
  680. package/template/.agents/skills/drawio/scripts/tools/fixtures/ai-icons-package/icons/beta-brand-color.svg +0 -1
  681. package/template/.agents/skills/drawio/scripts/tools/fixtures/ai-icons-package/icons/beta.svg +0 -1
  682. package/template/.agents/skills/drawio/scripts/tools/fixtures/ai-icons-package/icons/civitai-text-color.svg +0 -1
  683. package/template/.agents/skills/drawio/scripts/tools/fixtures/ai-icons-package/icons/civitai.svg +0 -1
  684. package/template/.agents/skills/drawio/scripts/tools/fixtures/ai-icons-package/package.json +0 -5
  685. package/template/.agents/skills/drawio/scripts/vendor/elkjs/LICENSE.md +0 -264
  686. package/template/.agents/skills/drawio/scripts/vendor/elkjs/README.md +0 -18
  687. package/template/.agents/skills/drawio/scripts/vendor/elkjs/elk.bundled.cjs +0 -6589
  688. package/template/.agents/skills/drawio/styles/built-in/corporate.json +0 -49
  689. package/template/.agents/skills/drawio/styles/built-in/default.json +0 -49
  690. package/template/.agents/skills/drawio/styles/built-in/handdrawn.json +0 -49
  691. package/template/.agents/skills/drawio/styles/schema.json +0 -112
  692. package/template/.agents/skills/drawio-academic-skills/CHANGELOG.md +0 -67
  693. package/template/.agents/skills/drawio-academic-skills/README.md +0 -103
  694. package/template/.agents/skills/drawio-academic-skills/README_CN.md +0 -103
  695. package/template/.agents/skills/drawio-academic-skills/SKILL.md +0 -161
  696. package/template/.agents/skills/drawio-academic-skills/__yss_dotfile__.gitignore +0 -12
  697. package/template/.agents/skills/drawio-academic-skills/agents/interface.yaml +0 -25
  698. package/template/.agents/skills/drawio-academic-skills/agents/openai.yaml +0 -24
  699. package/template/.agents/skills/drawio-academic-skills/evals/README.md +0 -13
  700. package/template/.agents/skills/drawio-academic-skills/evals/baseline-prompts.json +0 -52
  701. package/template/.agents/skills/drawio-academic-skills/evals/darwin-results.tsv +0 -3
  702. package/template/.agents/skills/drawio-academic-skills/evals/evals.json +0 -228
  703. package/template/.agents/skills/drawio-academic-skills/evals/test-prompts.json +0 -17
  704. package/template/.agents/skills/drawio-academic-skills/references/docs/academic-export-checklist.md +0 -45
  705. package/template/.agents/skills/drawio-academic-skills/references/docs/academic-figure-playbook.md +0 -349
  706. package/template/.agents/skills/drawio-academic-skills/references/docs/publication-overlay.md +0 -206
  707. package/template/.agents/skills/drawio-academic-skills/references/examples/ablation-study-pipeline.yaml +0 -39
  708. package/template/.agents/skills/drawio-academic-skills/references/examples/ieee-network-paper.yaml +0 -44
  709. package/template/.agents/skills/drawio-academic-skills/references/examples/industrial-architecture-cn-paper.yaml +0 -106
  710. package/template/.agents/skills/drawio-academic-skills/references/examples/max-pooling-operation-paper.yaml +0 -75
  711. package/template/.agents/skills/drawio-academic-skills/references/examples/research-pipeline.yaml +0 -54
  712. package/template/.agents/skills/drawio-academic-skills/references/examples/system-architecture-paper.yaml +0 -45
  713. package/template/.agents/skills/drawio-academic-skills/references/examples/technical-roadmap-paper.yaml +0 -54
  714. package/template/.agents/skills/drawio-academic-skills/references/examples/yolo-model-architecture-paper.yaml +0 -118
  715. package/template/.agents/skills/drawio-academic-skills/references/templates/multi-module-system-compact.yaml +0 -251
  716. package/template/.agents/skills/drawio-academic-skills/references/templates/neural-network-architecture-compact.yaml +0 -267
  717. package/template/.agents/skills/excalidraw-diagram-generator/SKILL.md +0 -634
  718. package/template/.agents/skills/excalidraw-diagram-generator/references/element-types.md +0 -497
  719. package/template/.agents/skills/excalidraw-diagram-generator/references/excalidraw-schema.md +0 -350
  720. package/template/.agents/skills/excalidraw-diagram-generator/scripts/README.md +0 -193
  721. package/template/.agents/skills/excalidraw-diagram-generator/scripts/__yss_dotfile__.gitignore +0 -34
  722. package/template/.agents/skills/excalidraw-diagram-generator/scripts/add-arrow.py +0 -315
  723. package/template/.agents/skills/excalidraw-diagram-generator/scripts/add-icon-to-diagram.py +0 -406
  724. package/template/.agents/skills/excalidraw-diagram-generator/scripts/split-excalidraw-library.py +0 -183
  725. package/template/.agents/skills/excalidraw-diagram-generator/templates/business-flow-swimlane-template.excalidraw +0 -334
  726. package/template/.agents/skills/excalidraw-diagram-generator/templates/class-diagram-template.excalidraw +0 -558
  727. package/template/.agents/skills/excalidraw-diagram-generator/templates/data-flow-diagram-template.excalidraw +0 -279
  728. package/template/.agents/skills/excalidraw-diagram-generator/templates/er-diagram-template.excalidraw +0 -662
  729. package/template/.agents/skills/excalidraw-diagram-generator/templates/flowchart-template.excalidraw +0 -179
  730. package/template/.agents/skills/excalidraw-diagram-generator/templates/mindmap-template.excalidraw +0 -244
  731. package/template/.agents/skills/excalidraw-diagram-generator/templates/relationship-template.excalidraw +0 -145
  732. package/template/.agents/skills/excalidraw-diagram-generator/templates/sequence-diagram-template.excalidraw +0 -509
  733. package/template/.agents/skills/kb-retriever/README.md +0 -197
  734. package/template/.agents/skills/kb-retriever/README.zh-CN.md +0 -197
  735. package/template/.agents/skills/kb-retriever/SKILL.md +0 -250
  736. package/template/.agents/skills/kb-retriever/manifest.json +0 -15
  737. package/template/.agents/skills/kb-retriever/references/excel_analysis.md +0 -129
  738. package/template/.agents/skills/kb-retriever/references/excel_reading.md +0 -72
  739. package/template/.agents/skills/kb-retriever/references/pdf_reading.md +0 -362
  740. package/template/.agents/skills/kb-retriever/scripts/convert_pdf_to_images.py +0 -35
  741. package/template/.agents/skills/yss-db2mybatis/requirements.txt +0 -4
  742. package/template/.agents/skills/yss-db2mybatis/scripts/db2mybatis.py +0 -1494
  743. package/template/.agents/skills/yss-ddd-scaffold-generator/scripts/generate_scaffold.py +0 -728
  744. package/template/.agents/skills/yss-ddd-scaffold-generator/scripts/run_scaffold_verification.py +0 -155
  745. package/template/.agents/skills/yss-design-system/scripts/validate-frontmatter.py +0 -50
  746. package/template/.agents/skills/yss-source-index/scripts/refresh-yss-skill-index.py +0 -371
  747. package/template/.agents/skills/yss-web-controller/scripts/generate_controller.py +0 -293
  748. package/template/.agents/skills/yss-web-controller/scripts/test_generate_controller.py +0 -68
  749. package/template/.claude/skills/beautiful-article/README.md +0 -450
  750. package/template/.claude/skills/beautiful-article/README.zh-CN.md +0 -450
  751. package/template/.claude/skills/beautiful-article/SKILL.md +0 -466
  752. package/template/.claude/skills/beautiful-article/assets/scaffold-template/__yss_dotfile__.npmrc +0 -1
  753. package/template/.claude/skills/beautiful-article/assets/scaffold-template/article/Article.tsx +0 -69
  754. package/template/.claude/skills/beautiful-article/assets/scaffold-template/article/Cover.tsx +0 -172
  755. package/template/.claude/skills/beautiful-article/assets/scaffold-template/article/main.tsx +0 -26
  756. package/template/.claude/skills/beautiful-article/assets/scaffold-template/article/sections/01-opening.tsx +0 -30
  757. package/template/.claude/skills/beautiful-article/assets/scaffold-template/index.html +0 -19
  758. package/template/.claude/skills/beautiful-article/assets/scaffold-template/package.json +0 -26
  759. package/template/.claude/skills/beautiful-article/assets/scaffold-template/tsconfig.json +0 -20
  760. package/template/.claude/skills/beautiful-article/assets/scaffold-template/tsconfig.node.json +0 -11
  761. package/template/.claude/skills/beautiful-article/assets/scaffold-template/vite.config.ts +0 -18
  762. package/template/.claude/skills/beautiful-article/manifest.json +0 -15
  763. package/template/.claude/skills/beautiful-article/references/article-types/briefing.md +0 -32
  764. package/template/.claude/skills/beautiful-article/references/article-types/dialogue.md +0 -30
  765. package/template/.claude/skills/beautiful-article/references/article-types/essay.md +0 -31
  766. package/template/.claude/skills/beautiful-article/references/article-types/explainer.md +0 -32
  767. package/template/.claude/skills/beautiful-article/references/article-types/full-report.md +0 -32
  768. package/template/.claude/skills/beautiful-article/references/article-types/interactive-explainer.md +0 -66
  769. package/template/.claude/skills/beautiful-article/references/article-types/longform.md +0 -32
  770. package/template/.claude/skills/beautiful-article/references/article-types/review.md +0 -32
  771. package/template/.claude/skills/beautiful-article/references/article-types/tutorial.md +0 -30
  772. package/template/.claude/skills/beautiful-article/references/article-types/visual-essay.md +0 -33
  773. package/template/.claude/skills/beautiful-article/references/article-types.md +0 -42
  774. package/template/.claude/skills/beautiful-article/references/asset-policy.md +0 -71
  775. package/template/.claude/skills/beautiful-article/references/component-policy.md +0 -103
  776. package/template/.claude/skills/beautiful-article/references/cover.md +0 -208
  777. package/template/.claude/skills/beautiful-article/references/harness.md +0 -35
  778. package/template/.claude/skills/beautiful-article/references/html-output.md +0 -42
  779. package/template/.claude/skills/beautiful-article/references/information-density.md +0 -50
  780. package/template/.claude/skills/beautiful-article/references/layout.md +0 -46
  781. package/template/.claude/skills/beautiful-article/references/pdf-output.md +0 -208
  782. package/template/.claude/skills/beautiful-article/references/plan-template.md +0 -109
  783. package/template/.claude/skills/beautiful-article/references/raw-policy.md +0 -86
  784. package/template/.claude/skills/beautiful-article/references/repair-policy.md +0 -35
  785. package/template/.claude/skills/beautiful-article/references/review-checklist.md +0 -133
  786. package/template/.claude/skills/beautiful-article/references/scaffold.md +0 -77
  787. package/template/.claude/skills/beautiful-article/references/section-build.md +0 -100
  788. package/template/.claude/skills/beautiful-article/references/source-to-markdown.md +0 -118
  789. package/template/.claude/skills/beautiful-article/references/theme-selection.md +0 -48
  790. package/template/.claude/skills/beautiful-article/scripts/html-to-pdf.sh +0 -160
  791. package/template/.claude/skills/beautiful-article/scripts/pdf-print-overrides.css +0 -192
  792. package/template/.claude/skills/beautiful-article/scripts/scaffold.sh +0 -172
  793. package/template/.claude/skills/beautiful-article/scripts/source-to-markdown-markitdown.py +0 -100
  794. package/template/.claude/skills/beautiful-article/scripts/source-to-markdown.py +0 -174
  795. package/template/.claude/skills/beautiful-article/theme-profiles/andy.md +0 -57
  796. package/template/.claude/skills/beautiful-article/theme-profiles/bayer.md +0 -57
  797. package/template/.claude/skills/beautiful-article/theme-profiles/bodoni.md +0 -57
  798. package/template/.claude/skills/beautiful-article/theme-profiles/freddie.md +0 -57
  799. package/template/.claude/skills/beautiful-article/theme-profiles/fuller.md +0 -56
  800. package/template/.claude/skills/beautiful-article/theme-profiles/index.json +0 -112
  801. package/template/.claude/skills/beautiful-article/theme-profiles/knuth.md +0 -60
  802. package/template/.claude/skills/beautiful-article/theme-profiles/press.md +0 -61
  803. package/template/.claude/skills/beautiful-article/theme-profiles/shannon.md +0 -64
  804. package/template/.claude/skills/beautiful-article/theme-profiles/sottsass.md +0 -57
  805. package/template/.claude/skills/beautiful-article/theme-profiles/tufte.md +0 -64
  806. package/template/.claude/skills/beautiful-article/theme-profiles/vignelli.md +0 -63
  807. package/template/.claude/skills/drawio/.mcp.json +0 -8
  808. package/template/.claude/skills/drawio/CHANGELOG.md +0 -216
  809. package/template/.claude/skills/drawio/SKILL.md +0 -157
  810. package/template/.claude/skills/drawio/agents/interface.yaml +0 -26
  811. package/template/.claude/skills/drawio/agents/openai.yaml +0 -26
  812. package/template/.claude/skills/drawio/assets/catalog/ai-icons.json.gz +0 -0
  813. package/template/.claude/skills/drawio/assets/catalog/shape-catalog.json.gz +0 -0
  814. package/template/.claude/skills/drawio/assets/catalog/shape-index.json.gz +0 -0
  815. package/template/.claude/skills/drawio/assets/examples/login-flow-test.drawio +0 -6
  816. package/template/.claude/skills/drawio/assets/examples/login-flow.drawio +0 -6
  817. package/template/.claude/skills/drawio/assets/examples/microservices.drawio +0 -6
  818. package/template/.claude/skills/drawio/assets/examples/neural-network.drawio +0 -6
  819. package/template/.claude/skills/drawio/assets/licenses/architecture-diagram-generator-MIT.txt +0 -26
  820. package/template/.claude/skills/drawio/assets/licenses/drawio-mcp-shape-index-Apache-2.0.txt +0 -8
  821. package/template/.claude/skills/drawio/assets/licenses/lobe-icons-MIT.txt +0 -26
  822. package/template/.claude/skills/drawio/assets/licenses/lucide-ISC.txt +0 -41
  823. package/template/.claude/skills/drawio/assets/palettes/c4-blue.json +0 -29
  824. package/template/.claude/skills/drawio/assets/palettes/cloud-aws.json +0 -30
  825. package/template/.claude/skills/drawio/assets/palettes/drawio-classic.json +0 -21
  826. package/template/.claude/skills/drawio/assets/palettes/ieee-bw.json +0 -26
  827. package/template/.claude/skills/drawio/assets/palettes/ieee-color.json +0 -17
  828. package/template/.claude/skills/drawio/assets/palettes/journal-jama.json +0 -20
  829. package/template/.claude/skills/drawio/assets/palettes/journal-npg.json +0 -23
  830. package/template/.claude/skills/drawio/assets/palettes/matlab-lines.json +0 -20
  831. package/template/.claude/skills/drawio/assets/palettes/morandi.json +0 -21
  832. package/template/.claude/skills/drawio/assets/palettes/okabe-ito.json +0 -21
  833. package/template/.claude/skills/drawio/assets/palettes/seaborn-colorblind.json +0 -23
  834. package/template/.claude/skills/drawio/assets/palettes/tol-bright.json +0 -20
  835. package/template/.claude/skills/drawio/assets/palettes/tol-high-contrast.json +0 -18
  836. package/template/.claude/skills/drawio/assets/palettes/tol-light-fill.json +0 -22
  837. package/template/.claude/skills/drawio/assets/palettes/tol-muted.json +0 -22
  838. package/template/.claude/skills/drawio/assets/schemas/graph-projection.schema.json +0 -135
  839. package/template/.claude/skills/drawio/assets/schemas/spec.schema.json +0 -620
  840. package/template/.claude/skills/drawio/assets/themes/academic-color.json +0 -299
  841. package/template/.claude/skills/drawio/assets/themes/academic.json +0 -245
  842. package/template/.claude/skills/drawio/assets/themes/arch-dark.json +0 -253
  843. package/template/.claude/skills/drawio/assets/themes/blueprint.json +0 -246
  844. package/template/.claude/skills/drawio/assets/themes/dark-luxury.json +0 -246
  845. package/template/.claude/skills/drawio/assets/themes/dark-terminal.json +0 -244
  846. package/template/.claude/skills/drawio/assets/themes/dark.json +0 -220
  847. package/template/.claude/skills/drawio/assets/themes/high-contrast.json +0 -220
  848. package/template/.claude/skills/drawio/assets/themes/nature.json +0 -220
  849. package/template/.claude/skills/drawio/assets/themes/notion-clean.json +0 -246
  850. package/template/.claude/skills/drawio/assets/themes/tech-blue.json +0 -220
  851. package/template/.claude/skills/drawio/evals/README.md +0 -17
  852. package/template/.claude/skills/drawio/evals/ai-icon-catalog-cases.json +0 -89
  853. package/template/.claude/skills/drawio/evals/baseline-prompts.json +0 -122
  854. package/template/.claude/skills/drawio/evals/darwin-results.tsv +0 -4
  855. package/template/.claude/skills/drawio/evals/evals.json +0 -223
  856. package/template/.claude/skills/drawio/evals/evidence/ai-icon-catalog-desktop.json +0 -134
  857. package/template/.claude/skills/drawio/evals/fixtures/ai-icons-advanced-svg.yaml +0 -25
  858. package/template/.claude/skills/drawio/evals/fixtures/ai-icons-cjk-agent-rag.yaml +0 -55
  859. package/template/.claude/skills/drawio/evals/fixtures/ai-icons-core-aliases.yaml +0 -50
  860. package/template/.claude/skills/drawio/evals/fixtures/ai-icons-current-color.yaml +0 -25
  861. package/template/.claude/skills/drawio/evals/fixtures/ai-icons-gradients.yaml +0 -25
  862. package/template/.claude/skills/drawio/evals/fixtures/import-simple-compressed.drawio +0 -5
  863. package/template/.claude/skills/drawio/evals/fixtures/import-simple.drawio +0 -28
  864. package/template/.claude/skills/drawio/evals/fixtures/industrial-architecture.yaml +0 -239
  865. package/template/.claude/skills/drawio/evals/fixtures/replicate-academic-highlight.svg +0 -13
  866. package/template/.claude/skills/drawio/evals/fixtures/replicate-brand-architecture.svg +0 -14
  867. package/template/.claude/skills/drawio/evals/fixtures/replicate-warm-approval.svg +0 -13
  868. package/template/.claude/skills/drawio/evals/fixtures/vision-tall-workflow.yaml +0 -47
  869. package/template/.claude/skills/drawio/evals/upstream-integration-cases.json +0 -78
  870. package/template/.claude/skills/drawio/evals/vision-preview-cases.json +0 -147
  871. package/template/.claude/skills/drawio/references/docs/agent-diagrams.md +0 -164
  872. package/template/.claude/skills/drawio/references/docs/ah-format.md +0 -322
  873. package/template/.claude/skills/drawio/references/docs/architecture-diagrams.md +0 -159
  874. package/template/.claude/skills/drawio/references/docs/canonical-graph-projection.md +0 -54
  875. package/template/.claude/skills/drawio/references/docs/code-importers.md +0 -53
  876. package/template/.claude/skills/drawio/references/docs/config-importers.md +0 -68
  877. package/template/.claude/skills/drawio/references/docs/design-system/README.md +0 -204
  878. package/template/.claude/skills/drawio/references/docs/design-system/color-guide.md +0 -255
  879. package/template/.claude/skills/drawio/references/docs/design-system/connectors.md +0 -388
  880. package/template/.claude/skills/drawio/references/docs/design-system/formulas.md +0 -196
  881. package/template/.claude/skills/drawio/references/docs/design-system/icons.md +0 -332
  882. package/template/.claude/skills/drawio/references/docs/design-system/shapes.md +0 -269
  883. package/template/.claude/skills/drawio/references/docs/design-system/specification.md +0 -754
  884. package/template/.claude/skills/drawio/references/docs/design-system/themes.md +0 -441
  885. package/template/.claude/skills/drawio/references/docs/design-system/tokens.md +0 -232
  886. package/template/.claude/skills/drawio/references/docs/edge-quality-rules.md +0 -65
  887. package/template/.claude/skills/drawio/references/docs/ieee-network-diagrams.md +0 -145
  888. package/template/.claude/skills/drawio/references/docs/live-snapshots-drift.md +0 -72
  889. package/template/.claude/skills/drawio/references/docs/math-typesetting.md +0 -258
  890. package/template/.claude/skills/drawio/references/docs/mcp-tools.md +0 -85
  891. package/template/.claude/skills/drawio/references/docs/migration-readiness.md +0 -73
  892. package/template/.claude/skills/drawio/references/docs/stencil-library-guide.md +0 -97
  893. package/template/.claude/skills/drawio/references/docs/style-extraction.md +0 -261
  894. package/template/.claude/skills/drawio/references/docs/style-presets.md +0 -126
  895. package/template/.claude/skills/drawio/references/docs/upstream-capability-compatibility.md +0 -61
  896. package/template/.claude/skills/drawio/references/docs/xml-format.md +0 -53
  897. package/template/.claude/skills/drawio/references/examples/README.md +0 -33
  898. package/template/.claude/skills/drawio/references/examples/agentic-rag.yaml +0 -71
  899. package/template/.claude/skills/drawio/references/examples/arch-dark-aws-serverless.yaml +0 -103
  900. package/template/.claude/skills/drawio/references/examples/arch-dark-microservices.yaml +0 -146
  901. package/template/.claude/skills/drawio/references/examples/arch-dark-web-app.yaml +0 -62
  902. package/template/.claude/skills/drawio/references/examples/auto-layout-workflow.yaml +0 -81
  903. package/template/.claude/skills/drawio/references/examples/aws-vpc-topology.yaml +0 -66
  904. package/template/.claude/skills/drawio/references/examples/campus-lan-topology.yaml +0 -89
  905. package/template/.claude/skills/drawio/references/examples/cloud-reference-architecture.yaml +0 -34
  906. package/template/.claude/skills/drawio/references/examples/e-commerce.yaml +0 -141
  907. package/template/.claude/skills/drawio/references/examples/importers/README.md +0 -10
  908. package/template/.claude/skills/drawio/references/examples/importers/live/compose-drift-evidence.json +0 -49
  909. package/template/.claude/skills/drawio/references/examples/importers/live/compose-drift-report.json +0 -300
  910. package/template/.claude/skills/drawio/references/examples/importers/live/compose-drift.spec.yaml +0 -75
  911. package/template/.claude/skills/drawio/references/examples/importers/live/docker-inspect.json +0 -55
  912. package/template/.claude/skills/drawio/references/examples/importers/live/drift-declared-compose.yaml +0 -13
  913. package/template/.claude/skills/drawio/references/examples/importers/live/kubernetes-live.json +0 -71
  914. package/template/.claude/skills/drawio/references/examples/importers/live/terraform-state.json +0 -70
  915. package/template/.claude/skills/drawio/references/examples/importers/schema.sql +0 -10
  916. package/template/.claude/skills/drawio/references/examples/importers/terraform.tf +0 -9
  917. package/template/.claude/skills/drawio/references/examples/login-flow.yaml +0 -65
  918. package/template/.claude/skills/drawio/references/examples/mem0-memory-layer.yaml +0 -63
  919. package/template/.claude/skills/drawio/references/examples/microservices.yaml +0 -58
  920. package/template/.claude/skills/drawio/references/examples/multi-agent-orchestration.yaml +0 -67
  921. package/template/.claude/skills/drawio/references/examples/neural-network.yaml +0 -66
  922. package/template/.claude/skills/drawio/references/examples/onprem-dmz-topology.yaml +0 -62
  923. package/template/.claude/skills/drawio/references/examples/palettes/README.md +0 -29
  924. package/template/.claude/skills/drawio/references/examples/palettes/c4-blue.drawio +0 -6
  925. package/template/.claude/skills/drawio/references/examples/palettes/c4-blue.svg +0 -36
  926. package/template/.claude/skills/drawio/references/examples/palettes/cloud-aws.drawio +0 -6
  927. package/template/.claude/skills/drawio/references/examples/palettes/cloud-aws.svg +0 -36
  928. package/template/.claude/skills/drawio/references/examples/palettes/drawio-classic.drawio +0 -6
  929. package/template/.claude/skills/drawio/references/examples/palettes/drawio-classic.svg +0 -36
  930. package/template/.claude/skills/drawio/references/examples/palettes/ieee-bw.drawio +0 -6
  931. package/template/.claude/skills/drawio/references/examples/palettes/ieee-bw.svg +0 -36
  932. package/template/.claude/skills/drawio/references/examples/palettes/ieee-color.drawio +0 -6
  933. package/template/.claude/skills/drawio/references/examples/palettes/ieee-color.svg +0 -36
  934. package/template/.claude/skills/drawio/references/examples/palettes/journal-jama.drawio +0 -6
  935. package/template/.claude/skills/drawio/references/examples/palettes/journal-jama.svg +0 -36
  936. package/template/.claude/skills/drawio/references/examples/palettes/journal-npg.drawio +0 -6
  937. package/template/.claude/skills/drawio/references/examples/palettes/journal-npg.svg +0 -36
  938. package/template/.claude/skills/drawio/references/examples/palettes/matlab-lines.drawio +0 -6
  939. package/template/.claude/skills/drawio/references/examples/palettes/matlab-lines.svg +0 -36
  940. package/template/.claude/skills/drawio/references/examples/palettes/morandi.drawio +0 -6
  941. package/template/.claude/skills/drawio/references/examples/palettes/morandi.svg +0 -36
  942. package/template/.claude/skills/drawio/references/examples/palettes/okabe-ito.drawio +0 -6
  943. package/template/.claude/skills/drawio/references/examples/palettes/okabe-ito.svg +0 -36
  944. package/template/.claude/skills/drawio/references/examples/palettes/palette-swatch.template.yaml +0 -56
  945. package/template/.claude/skills/drawio/references/examples/palettes/seaborn-colorblind.drawio +0 -6
  946. package/template/.claude/skills/drawio/references/examples/palettes/seaborn-colorblind.svg +0 -36
  947. package/template/.claude/skills/drawio/references/examples/palettes/tol-bright.drawio +0 -6
  948. package/template/.claude/skills/drawio/references/examples/palettes/tol-bright.svg +0 -36
  949. package/template/.claude/skills/drawio/references/examples/palettes/tol-high-contrast.drawio +0 -6
  950. package/template/.claude/skills/drawio/references/examples/palettes/tol-high-contrast.svg +0 -36
  951. package/template/.claude/skills/drawio/references/examples/palettes/tol-light-fill.drawio +0 -6
  952. package/template/.claude/skills/drawio/references/examples/palettes/tol-light-fill.svg +0 -36
  953. package/template/.claude/skills/drawio/references/examples/palettes/tol-muted.drawio +0 -6
  954. package/template/.claude/skills/drawio/references/examples/palettes/tol-muted.svg +0 -36
  955. package/template/.claude/skills/drawio/references/examples/rag-pipeline.yaml +0 -67
  956. package/template/.claude/skills/drawio/references/examples/replicated-brand-flow.yaml +0 -89
  957. package/template/.claude/skills/drawio/references/examples/swimlane-engineering-review.yaml +0 -44
  958. package/template/.claude/skills/drawio/references/examples/tiered-network-topology.yaml +0 -59
  959. package/template/.claude/skills/drawio/references/examples/tool-call-loop.yaml +0 -63
  960. package/template/.claude/skills/drawio/references/examples/vendor-device-mapping.yaml +0 -46
  961. package/template/.claude/skills/drawio/references/official/style-reference.md +0 -936
  962. package/template/.claude/skills/drawio/references/official/xml-reference.md +0 -262
  963. package/template/.claude/skills/drawio/references/palette.schema.json +0 -59
  964. package/template/.claude/skills/drawio/references/theme.schema.json +0 -249
  965. package/template/.claude/skills/drawio/references/upstream/pure-drawio-skill.md +0 -615
  966. package/template/.claude/skills/drawio/references/workflows/create.md +0 -195
  967. package/template/.claude/skills/drawio/references/workflows/edit.md +0 -174
  968. package/template/.claude/skills/drawio/references/workflows/replicate.md +0 -239
  969. package/template/.claude/skills/drawio/references/workflows/visual-review.md +0 -108
  970. package/template/.claude/skills/drawio/reports/output_quality_scorecard.md +0 -106
  971. package/template/.claude/skills/drawio/reports/upstream-port-release-evidence.md +0 -43
  972. package/template/.claude/skills/drawio/scripts/adapters/ci.js +0 -139
  973. package/template/.claude/skills/drawio/scripts/adapters/ci.test.js +0 -41
  974. package/template/.claude/skills/drawio/scripts/adapters/code-common.js +0 -171
  975. package/template/.claude/skills/drawio/scripts/adapters/code-imports.test.js +0 -80
  976. package/template/.claude/skills/drawio/scripts/adapters/code-parsers.integration.test.js +0 -71
  977. package/template/.claude/skills/drawio/scripts/adapters/compose.js +0 -134
  978. package/template/.claude/skills/drawio/scripts/adapters/compose.test.js +0 -54
  979. package/template/.claude/skills/drawio/scripts/adapters/config-adapters.integration.test.js +0 -58
  980. package/template/.claude/skills/drawio/scripts/adapters/config-common.js +0 -131
  981. package/template/.claude/skills/drawio/scripts/adapters/config-common.test.js +0 -32
  982. package/template/.claude/skills/drawio/scripts/adapters/docker-inspect.js +0 -127
  983. package/template/.claude/skills/drawio/scripts/adapters/docker-inspect.test.js +0 -62
  984. package/template/.claude/skills/drawio/scripts/adapters/fixtures/raster-extraction.json +0 -31
  985. package/template/.claude/skills/drawio/scripts/adapters/go-code-adapter.test.js +0 -59
  986. package/template/.claude/skills/drawio/scripts/adapters/go-code.js +0 -168
  987. package/template/.claude/skills/drawio/scripts/adapters/graph-drift.file.test.js +0 -67
  988. package/template/.claude/skills/drawio/scripts/adapters/graph-drift.js +0 -358
  989. package/template/.claude/skills/drawio/scripts/adapters/graph-drift.test.js +0 -272
  990. package/template/.claude/skills/drawio/scripts/adapters/graph-projection.js +0 -335
  991. package/template/.claude/skills/drawio/scripts/adapters/graph-projection.test.js +0 -141
  992. package/template/.claude/skills/drawio/scripts/adapters/identity.js +0 -244
  993. package/template/.claude/skills/drawio/scripts/adapters/identity.test.js +0 -123
  994. package/template/.claude/skills/drawio/scripts/adapters/index.js +0 -489
  995. package/template/.claude/skills/drawio/scripts/adapters/index.test.js +0 -152
  996. package/template/.claude/skills/drawio/scripts/adapters/js-code-adapter.test.js +0 -42
  997. package/template/.claude/skills/drawio/scripts/adapters/js-code.js +0 -141
  998. package/template/.claude/skills/drawio/scripts/adapters/kubernetes-live.test.js +0 -46
  999. package/template/.claude/skills/drawio/scripts/adapters/kubernetes.js +0 -258
  1000. package/template/.claude/skills/drawio/scripts/adapters/kubernetes.test.js +0 -81
  1001. package/template/.claude/skills/drawio/scripts/adapters/openapi.js +0 -98
  1002. package/template/.claude/skills/drawio/scripts/adapters/openapi.test.js +0 -46
  1003. package/template/.claude/skills/drawio/scripts/adapters/optional-python-code.js +0 -16
  1004. package/template/.claude/skills/drawio/scripts/adapters/optional-python.integration.test.js +0 -32
  1005. package/template/.claude/skills/drawio/scripts/adapters/optional-python.js +0 -127
  1006. package/template/.claude/skills/drawio/scripts/adapters/optional-python.test.js +0 -55
  1007. package/template/.claude/skills/drawio/scripts/adapters/projection-to-spec.js +0 -116
  1008. package/template/.claude/skills/drawio/scripts/adapters/projection-to-spec.test.js +0 -139
  1009. package/template/.claude/skills/drawio/scripts/adapters/python/code-parser-worker.py +0 -93
  1010. package/template/.claude/skills/drawio/scripts/adapters/python/config-parser-worker.py +0 -237
  1011. package/template/.claude/skills/drawio/scripts/adapters/python/requirements.txt +0 -2
  1012. package/template/.claude/skills/drawio/scripts/adapters/python-code-adapter.test.js +0 -127
  1013. package/template/.claude/skills/drawio/scripts/adapters/python-code.js +0 -246
  1014. package/template/.claude/skills/drawio/scripts/adapters/raster-extraction.js +0 -258
  1015. package/template/.claude/skills/drawio/scripts/adapters/raster-extraction.test.js +0 -308
  1016. package/template/.claude/skills/drawio/scripts/adapters/rust-code-adapter.test.js +0 -64
  1017. package/template/.claude/skills/drawio/scripts/adapters/rust-code.js +0 -207
  1018. package/template/.claude/skills/drawio/scripts/adapters/sql-ddl.js +0 -118
  1019. package/template/.claude/skills/drawio/scripts/adapters/sql-ddl.test.js +0 -56
  1020. package/template/.claude/skills/drawio/scripts/adapters/terraform-config.js +0 -141
  1021. package/template/.claude/skills/drawio/scripts/adapters/terraform-config.test.js +0 -67
  1022. package/template/.claude/skills/drawio/scripts/adapters/terraform-state.js +0 -157
  1023. package/template/.claude/skills/drawio/scripts/adapters/terraform-state.test.js +0 -69
  1024. package/template/.claude/skills/drawio/scripts/cli.js +0 -700
  1025. package/template/.claude/skills/drawio/scripts/dsl/ah-to-drawio.js +0 -276
  1026. package/template/.claude/skills/drawio/scripts/dsl/ah-to-drawio.test.js +0 -77
  1027. package/template/.claude/skills/drawio/scripts/dsl/ai-icon-catalog.js +0 -126
  1028. package/template/.claude/skills/drawio/scripts/dsl/ai-icon-catalog.test.js +0 -86
  1029. package/template/.claude/skills/drawio/scripts/dsl/auto-layout.js +0 -206
  1030. package/template/.claude/skills/drawio/scripts/dsl/auto-layout.test.js +0 -249
  1031. package/template/.claude/skills/drawio/scripts/dsl/catalog-ranking.js +0 -54
  1032. package/template/.claude/skills/drawio/scripts/dsl/catalog-search.js +0 -58
  1033. package/template/.claude/skills/drawio/scripts/dsl/catalog-search.test.js +0 -44
  1034. package/template/.claude/skills/drawio/scripts/dsl/document-spec.js +0 -256
  1035. package/template/.claude/skills/drawio/scripts/dsl/document-spec.test.js +0 -147
  1036. package/template/.claude/skills/drawio/scripts/dsl/drawio-to-spec.js +0 -497
  1037. package/template/.claude/skills/drawio/scripts/dsl/examples-baseline.test.js +0 -30
  1038. package/template/.claude/skills/drawio/scripts/dsl/icon-mappings.js +0 -65
  1039. package/template/.claude/skills/drawio/scripts/dsl/icon-mappings.test.js +0 -19
  1040. package/template/.claude/skills/drawio/scripts/dsl/icon-resolver.js +0 -153
  1041. package/template/.claude/skills/drawio/scripts/dsl/icon-resolver.test.js +0 -62
  1042. package/template/.claude/skills/drawio/scripts/dsl/multi-page.js +0 -224
  1043. package/template/.claude/skills/drawio/scripts/dsl/multi-page.test.js +0 -107
  1044. package/template/.claude/skills/drawio/scripts/dsl/palette-catalog.test.js +0 -138
  1045. package/template/.claude/skills/drawio/scripts/dsl/palette-integration.test.js +0 -182
  1046. package/template/.claude/skills/drawio/scripts/dsl/palette-validate.js +0 -91
  1047. package/template/.claude/skills/drawio/scripts/dsl/palette.js +0 -302
  1048. package/template/.claude/skills/drawio/scripts/dsl/palette.test.js +0 -197
  1049. package/template/.claude/skills/drawio/scripts/dsl/shape-catalog.js +0 -89
  1050. package/template/.claude/skills/drawio/scripts/dsl/shape-catalog.test.js +0 -21
  1051. package/template/.claude/skills/drawio/scripts/dsl/spec-to-drawio.js +0 -3739
  1052. package/template/.claude/skills/drawio/scripts/dsl/spec-to-drawio.test.js +0 -3022
  1053. package/template/.claude/skills/drawio/scripts/generate-palette-swatches.js +0 -87
  1054. package/template/.claude/skills/drawio/scripts/install.bat +0 -64
  1055. package/template/.claude/skills/drawio/scripts/install.sh +0 -44
  1056. package/template/.claude/skills/drawio/scripts/math/index.js +0 -317
  1057. package/template/.claude/skills/drawio/scripts/math/index.test.js +0 -62
  1058. package/template/.claude/skills/drawio/scripts/package.json +0 -1
  1059. package/template/.claude/skills/drawio/scripts/postprocess/artifacts.js +0 -142
  1060. package/template/.claude/skills/drawio/scripts/postprocess/artifacts.test.js +0 -86
  1061. package/template/.claude/skills/drawio/scripts/postprocess/cli.js +0 -228
  1062. package/template/.claude/skills/drawio/scripts/postprocess/cli.test.js +0 -129
  1063. package/template/.claude/skills/drawio/scripts/postprocess/fixtures/bundle.yaml +0 -75
  1064. package/template/.claude/skills/drawio/scripts/postprocess/fixtures/legacy.yaml +0 -21
  1065. package/template/.claude/skills/drawio/scripts/postprocess/html.js +0 -197
  1066. package/template/.claude/skills/drawio/scripts/postprocess/html.test.js +0 -50
  1067. package/template/.claude/skills/drawio/scripts/postprocess/index.js +0 -5
  1068. package/template/.claude/skills/drawio/scripts/postprocess/input.js +0 -112
  1069. package/template/.claude/skills/drawio/scripts/postprocess/input.test.js +0 -73
  1070. package/template/.claude/skills/drawio/scripts/postprocess/mutate.js +0 -584
  1071. package/template/.claude/skills/drawio/scripts/postprocess/mutate.test.js +0 -193
  1072. package/template/.claude/skills/drawio/scripts/postprocess/projection.js +0 -178
  1073. package/template/.claude/skills/drawio/scripts/postprocess/projection.test.js +0 -67
  1074. package/template/.claude/skills/drawio/scripts/runtime/artifacts.js +0 -283
  1075. package/template/.claude/skills/drawio/scripts/runtime/desktop.js +0 -204
  1076. package/template/.claude/skills/drawio/scripts/runtime/desktop.test.js +0 -121
  1077. package/template/.claude/skills/drawio/scripts/runtime/diagrams-net-url.js +0 -122
  1078. package/template/.claude/skills/drawio/scripts/runtime/export-stability.js +0 -75
  1079. package/template/.claude/skills/drawio/scripts/runtime/export-stability.test.js +0 -81
  1080. package/template/.claude/skills/drawio/scripts/runtime/png-inspection.js +0 -157
  1081. package/template/.claude/skills/drawio/scripts/runtime/png-inspection.test.js +0 -120
  1082. package/template/.claude/skills/drawio/scripts/runtime/vision-preview.js +0 -77
  1083. package/template/.claude/skills/drawio/scripts/runtime/vision-preview.test.js +0 -103
  1084. package/template/.claude/skills/drawio/scripts/shared/ai-icon-contract.js +0 -13
  1085. package/template/.claude/skills/drawio/scripts/shared/xml-utils.js +0 -241
  1086. package/template/.claude/skills/drawio/scripts/svg/drawio-to-svg.js +0 -918
  1087. package/template/.claude/skills/drawio/scripts/svg/drawio-to-svg.test.js +0 -763
  1088. package/template/.claude/skills/drawio/scripts/tools/build-ai-icon-catalog.js +0 -208
  1089. package/template/.claude/skills/drawio/scripts/tools/build-ai-icon-catalog.test.js +0 -107
  1090. package/template/.claude/skills/drawio/scripts/tools/build-shape-catalog.js +0 -84
  1091. package/template/.claude/skills/drawio/scripts/tools/build-shape-catalog.test.js +0 -43
  1092. package/template/.claude/skills/drawio/scripts/tools/fixtures/ai-icons-package/icons/alpha-color.svg +0 -1
  1093. package/template/.claude/skills/drawio/scripts/tools/fixtures/ai-icons-package/icons/alpha.svg +0 -1
  1094. package/template/.claude/skills/drawio/scripts/tools/fixtures/ai-icons-package/icons/beta-brand-color.svg +0 -1
  1095. package/template/.claude/skills/drawio/scripts/tools/fixtures/ai-icons-package/icons/beta.svg +0 -1
  1096. package/template/.claude/skills/drawio/scripts/tools/fixtures/ai-icons-package/icons/civitai-text-color.svg +0 -1
  1097. package/template/.claude/skills/drawio/scripts/tools/fixtures/ai-icons-package/icons/civitai.svg +0 -1
  1098. package/template/.claude/skills/drawio/scripts/tools/fixtures/ai-icons-package/package.json +0 -5
  1099. package/template/.claude/skills/drawio/scripts/vendor/elkjs/LICENSE.md +0 -264
  1100. package/template/.claude/skills/drawio/scripts/vendor/elkjs/README.md +0 -18
  1101. package/template/.claude/skills/drawio/scripts/vendor/elkjs/elk.bundled.cjs +0 -6589
  1102. package/template/.claude/skills/drawio/styles/built-in/corporate.json +0 -49
  1103. package/template/.claude/skills/drawio/styles/built-in/default.json +0 -49
  1104. package/template/.claude/skills/drawio/styles/built-in/handdrawn.json +0 -49
  1105. package/template/.claude/skills/drawio/styles/schema.json +0 -112
  1106. package/template/.claude/skills/drawio-academic-skills/CHANGELOG.md +0 -67
  1107. package/template/.claude/skills/drawio-academic-skills/README.md +0 -103
  1108. package/template/.claude/skills/drawio-academic-skills/README_CN.md +0 -103
  1109. package/template/.claude/skills/drawio-academic-skills/SKILL.md +0 -161
  1110. package/template/.claude/skills/drawio-academic-skills/__yss_dotfile__.gitignore +0 -12
  1111. package/template/.claude/skills/drawio-academic-skills/agents/interface.yaml +0 -25
  1112. package/template/.claude/skills/drawio-academic-skills/agents/openai.yaml +0 -24
  1113. package/template/.claude/skills/drawio-academic-skills/evals/README.md +0 -13
  1114. package/template/.claude/skills/drawio-academic-skills/evals/baseline-prompts.json +0 -52
  1115. package/template/.claude/skills/drawio-academic-skills/evals/darwin-results.tsv +0 -3
  1116. package/template/.claude/skills/drawio-academic-skills/evals/evals.json +0 -228
  1117. package/template/.claude/skills/drawio-academic-skills/evals/test-prompts.json +0 -17
  1118. package/template/.claude/skills/drawio-academic-skills/references/docs/academic-export-checklist.md +0 -45
  1119. package/template/.claude/skills/drawio-academic-skills/references/docs/academic-figure-playbook.md +0 -349
  1120. package/template/.claude/skills/drawio-academic-skills/references/docs/publication-overlay.md +0 -206
  1121. package/template/.claude/skills/drawio-academic-skills/references/examples/ablation-study-pipeline.yaml +0 -39
  1122. package/template/.claude/skills/drawio-academic-skills/references/examples/ieee-network-paper.yaml +0 -44
  1123. package/template/.claude/skills/drawio-academic-skills/references/examples/industrial-architecture-cn-paper.yaml +0 -106
  1124. package/template/.claude/skills/drawio-academic-skills/references/examples/max-pooling-operation-paper.yaml +0 -75
  1125. package/template/.claude/skills/drawio-academic-skills/references/examples/research-pipeline.yaml +0 -54
  1126. package/template/.claude/skills/drawio-academic-skills/references/examples/system-architecture-paper.yaml +0 -45
  1127. package/template/.claude/skills/drawio-academic-skills/references/examples/technical-roadmap-paper.yaml +0 -54
  1128. package/template/.claude/skills/drawio-academic-skills/references/examples/yolo-model-architecture-paper.yaml +0 -118
  1129. package/template/.claude/skills/drawio-academic-skills/references/templates/multi-module-system-compact.yaml +0 -251
  1130. package/template/.claude/skills/drawio-academic-skills/references/templates/neural-network-architecture-compact.yaml +0 -267
  1131. package/template/.claude/skills/excalidraw-diagram-generator/SKILL.md +0 -634
  1132. package/template/.claude/skills/excalidraw-diagram-generator/references/element-types.md +0 -497
  1133. package/template/.claude/skills/excalidraw-diagram-generator/references/excalidraw-schema.md +0 -350
  1134. package/template/.claude/skills/excalidraw-diagram-generator/scripts/README.md +0 -193
  1135. package/template/.claude/skills/excalidraw-diagram-generator/scripts/__yss_dotfile__.gitignore +0 -34
  1136. package/template/.claude/skills/excalidraw-diagram-generator/scripts/add-arrow.py +0 -315
  1137. package/template/.claude/skills/excalidraw-diagram-generator/scripts/add-icon-to-diagram.py +0 -406
  1138. package/template/.claude/skills/excalidraw-diagram-generator/scripts/split-excalidraw-library.py +0 -183
  1139. package/template/.claude/skills/excalidraw-diagram-generator/templates/business-flow-swimlane-template.excalidraw +0 -334
  1140. package/template/.claude/skills/excalidraw-diagram-generator/templates/class-diagram-template.excalidraw +0 -558
  1141. package/template/.claude/skills/excalidraw-diagram-generator/templates/data-flow-diagram-template.excalidraw +0 -279
  1142. package/template/.claude/skills/excalidraw-diagram-generator/templates/er-diagram-template.excalidraw +0 -662
  1143. package/template/.claude/skills/excalidraw-diagram-generator/templates/flowchart-template.excalidraw +0 -179
  1144. package/template/.claude/skills/excalidraw-diagram-generator/templates/mindmap-template.excalidraw +0 -244
  1145. package/template/.claude/skills/excalidraw-diagram-generator/templates/relationship-template.excalidraw +0 -145
  1146. package/template/.claude/skills/excalidraw-diagram-generator/templates/sequence-diagram-template.excalidraw +0 -509
  1147. package/template/.claude/skills/kb-retriever/README.md +0 -197
  1148. package/template/.claude/skills/kb-retriever/README.zh-CN.md +0 -197
  1149. package/template/.claude/skills/kb-retriever/SKILL.md +0 -250
  1150. package/template/.claude/skills/kb-retriever/manifest.json +0 -15
  1151. package/template/.claude/skills/kb-retriever/references/excel_analysis.md +0 -129
  1152. package/template/.claude/skills/kb-retriever/references/excel_reading.md +0 -72
  1153. package/template/.claude/skills/kb-retriever/references/pdf_reading.md +0 -362
  1154. package/template/.claude/skills/kb-retriever/scripts/convert_pdf_to_images.py +0 -35
  1155. package/template/.claude/skills/yss-db2mybatis/requirements.txt +0 -4
  1156. package/template/.claude/skills/yss-db2mybatis/scripts/db2mybatis.py +0 -1494
  1157. package/template/.claude/skills/yss-ddd-scaffold-generator/scripts/generate_scaffold.py +0 -728
  1158. package/template/.claude/skills/yss-ddd-scaffold-generator/scripts/run_scaffold_verification.py +0 -155
  1159. package/template/.claude/skills/yss-design-system/scripts/validate-frontmatter.py +0 -50
  1160. package/template/.claude/skills/yss-source-index/scripts/refresh-yss-skill-index.py +0 -371
  1161. package/template/.claude/skills/yss-web-controller/scripts/generate_controller.py +0 -293
  1162. package/template/.claude/skills/yss-web-controller/scripts/test_generate_controller.py +0 -68
  1163. package/template/.codex/skills/beautiful-article/README.md +0 -450
  1164. package/template/.codex/skills/beautiful-article/README.zh-CN.md +0 -450
  1165. package/template/.codex/skills/beautiful-article/SKILL.md +0 -466
  1166. package/template/.codex/skills/beautiful-article/assets/scaffold-template/__yss_dotfile__.npmrc +0 -1
  1167. package/template/.codex/skills/beautiful-article/assets/scaffold-template/article/Article.tsx +0 -69
  1168. package/template/.codex/skills/beautiful-article/assets/scaffold-template/article/Cover.tsx +0 -172
  1169. package/template/.codex/skills/beautiful-article/assets/scaffold-template/article/main.tsx +0 -26
  1170. package/template/.codex/skills/beautiful-article/assets/scaffold-template/article/sections/01-opening.tsx +0 -30
  1171. package/template/.codex/skills/beautiful-article/assets/scaffold-template/index.html +0 -19
  1172. package/template/.codex/skills/beautiful-article/assets/scaffold-template/package.json +0 -26
  1173. package/template/.codex/skills/beautiful-article/assets/scaffold-template/tsconfig.json +0 -20
  1174. package/template/.codex/skills/beautiful-article/assets/scaffold-template/tsconfig.node.json +0 -11
  1175. package/template/.codex/skills/beautiful-article/assets/scaffold-template/vite.config.ts +0 -18
  1176. package/template/.codex/skills/beautiful-article/manifest.json +0 -15
  1177. package/template/.codex/skills/beautiful-article/references/article-types/briefing.md +0 -32
  1178. package/template/.codex/skills/beautiful-article/references/article-types/dialogue.md +0 -30
  1179. package/template/.codex/skills/beautiful-article/references/article-types/essay.md +0 -31
  1180. package/template/.codex/skills/beautiful-article/references/article-types/explainer.md +0 -32
  1181. package/template/.codex/skills/beautiful-article/references/article-types/full-report.md +0 -32
  1182. package/template/.codex/skills/beautiful-article/references/article-types/interactive-explainer.md +0 -66
  1183. package/template/.codex/skills/beautiful-article/references/article-types/longform.md +0 -32
  1184. package/template/.codex/skills/beautiful-article/references/article-types/review.md +0 -32
  1185. package/template/.codex/skills/beautiful-article/references/article-types/tutorial.md +0 -30
  1186. package/template/.codex/skills/beautiful-article/references/article-types/visual-essay.md +0 -33
  1187. package/template/.codex/skills/beautiful-article/references/article-types.md +0 -42
  1188. package/template/.codex/skills/beautiful-article/references/asset-policy.md +0 -71
  1189. package/template/.codex/skills/beautiful-article/references/component-policy.md +0 -103
  1190. package/template/.codex/skills/beautiful-article/references/cover.md +0 -208
  1191. package/template/.codex/skills/beautiful-article/references/harness.md +0 -35
  1192. package/template/.codex/skills/beautiful-article/references/html-output.md +0 -42
  1193. package/template/.codex/skills/beautiful-article/references/information-density.md +0 -50
  1194. package/template/.codex/skills/beautiful-article/references/layout.md +0 -46
  1195. package/template/.codex/skills/beautiful-article/references/pdf-output.md +0 -208
  1196. package/template/.codex/skills/beautiful-article/references/plan-template.md +0 -109
  1197. package/template/.codex/skills/beautiful-article/references/raw-policy.md +0 -86
  1198. package/template/.codex/skills/beautiful-article/references/repair-policy.md +0 -35
  1199. package/template/.codex/skills/beautiful-article/references/review-checklist.md +0 -133
  1200. package/template/.codex/skills/beautiful-article/references/scaffold.md +0 -77
  1201. package/template/.codex/skills/beautiful-article/references/section-build.md +0 -100
  1202. package/template/.codex/skills/beautiful-article/references/source-to-markdown.md +0 -118
  1203. package/template/.codex/skills/beautiful-article/references/theme-selection.md +0 -48
  1204. package/template/.codex/skills/beautiful-article/scripts/html-to-pdf.sh +0 -160
  1205. package/template/.codex/skills/beautiful-article/scripts/pdf-print-overrides.css +0 -192
  1206. package/template/.codex/skills/beautiful-article/scripts/scaffold.sh +0 -172
  1207. package/template/.codex/skills/beautiful-article/scripts/source-to-markdown-markitdown.py +0 -100
  1208. package/template/.codex/skills/beautiful-article/scripts/source-to-markdown.py +0 -174
  1209. package/template/.codex/skills/beautiful-article/theme-profiles/andy.md +0 -57
  1210. package/template/.codex/skills/beautiful-article/theme-profiles/bayer.md +0 -57
  1211. package/template/.codex/skills/beautiful-article/theme-profiles/bodoni.md +0 -57
  1212. package/template/.codex/skills/beautiful-article/theme-profiles/freddie.md +0 -57
  1213. package/template/.codex/skills/beautiful-article/theme-profiles/fuller.md +0 -56
  1214. package/template/.codex/skills/beautiful-article/theme-profiles/index.json +0 -112
  1215. package/template/.codex/skills/beautiful-article/theme-profiles/knuth.md +0 -60
  1216. package/template/.codex/skills/beautiful-article/theme-profiles/press.md +0 -61
  1217. package/template/.codex/skills/beautiful-article/theme-profiles/shannon.md +0 -64
  1218. package/template/.codex/skills/beautiful-article/theme-profiles/sottsass.md +0 -57
  1219. package/template/.codex/skills/beautiful-article/theme-profiles/tufte.md +0 -64
  1220. package/template/.codex/skills/beautiful-article/theme-profiles/vignelli.md +0 -63
  1221. package/template/.codex/skills/drawio/.mcp.json +0 -8
  1222. package/template/.codex/skills/drawio/CHANGELOG.md +0 -216
  1223. package/template/.codex/skills/drawio/SKILL.md +0 -157
  1224. package/template/.codex/skills/drawio/agents/interface.yaml +0 -26
  1225. package/template/.codex/skills/drawio/agents/openai.yaml +0 -26
  1226. package/template/.codex/skills/drawio/assets/catalog/ai-icons.json.gz +0 -0
  1227. package/template/.codex/skills/drawio/assets/catalog/shape-catalog.json.gz +0 -0
  1228. package/template/.codex/skills/drawio/assets/catalog/shape-index.json.gz +0 -0
  1229. package/template/.codex/skills/drawio/assets/examples/login-flow-test.drawio +0 -6
  1230. package/template/.codex/skills/drawio/assets/examples/login-flow.drawio +0 -6
  1231. package/template/.codex/skills/drawio/assets/examples/microservices.drawio +0 -6
  1232. package/template/.codex/skills/drawio/assets/examples/neural-network.drawio +0 -6
  1233. package/template/.codex/skills/drawio/assets/licenses/architecture-diagram-generator-MIT.txt +0 -26
  1234. package/template/.codex/skills/drawio/assets/licenses/drawio-mcp-shape-index-Apache-2.0.txt +0 -8
  1235. package/template/.codex/skills/drawio/assets/licenses/lobe-icons-MIT.txt +0 -26
  1236. package/template/.codex/skills/drawio/assets/licenses/lucide-ISC.txt +0 -41
  1237. package/template/.codex/skills/drawio/assets/palettes/c4-blue.json +0 -29
  1238. package/template/.codex/skills/drawio/assets/palettes/cloud-aws.json +0 -30
  1239. package/template/.codex/skills/drawio/assets/palettes/drawio-classic.json +0 -21
  1240. package/template/.codex/skills/drawio/assets/palettes/ieee-bw.json +0 -26
  1241. package/template/.codex/skills/drawio/assets/palettes/ieee-color.json +0 -17
  1242. package/template/.codex/skills/drawio/assets/palettes/journal-jama.json +0 -20
  1243. package/template/.codex/skills/drawio/assets/palettes/journal-npg.json +0 -23
  1244. package/template/.codex/skills/drawio/assets/palettes/matlab-lines.json +0 -20
  1245. package/template/.codex/skills/drawio/assets/palettes/morandi.json +0 -21
  1246. package/template/.codex/skills/drawio/assets/palettes/okabe-ito.json +0 -21
  1247. package/template/.codex/skills/drawio/assets/palettes/seaborn-colorblind.json +0 -23
  1248. package/template/.codex/skills/drawio/assets/palettes/tol-bright.json +0 -20
  1249. package/template/.codex/skills/drawio/assets/palettes/tol-high-contrast.json +0 -18
  1250. package/template/.codex/skills/drawio/assets/palettes/tol-light-fill.json +0 -22
  1251. package/template/.codex/skills/drawio/assets/palettes/tol-muted.json +0 -22
  1252. package/template/.codex/skills/drawio/assets/schemas/graph-projection.schema.json +0 -135
  1253. package/template/.codex/skills/drawio/assets/schemas/spec.schema.json +0 -620
  1254. package/template/.codex/skills/drawio/assets/themes/academic-color.json +0 -299
  1255. package/template/.codex/skills/drawio/assets/themes/academic.json +0 -245
  1256. package/template/.codex/skills/drawio/assets/themes/arch-dark.json +0 -253
  1257. package/template/.codex/skills/drawio/assets/themes/blueprint.json +0 -246
  1258. package/template/.codex/skills/drawio/assets/themes/dark-luxury.json +0 -246
  1259. package/template/.codex/skills/drawio/assets/themes/dark-terminal.json +0 -244
  1260. package/template/.codex/skills/drawio/assets/themes/dark.json +0 -220
  1261. package/template/.codex/skills/drawio/assets/themes/high-contrast.json +0 -220
  1262. package/template/.codex/skills/drawio/assets/themes/nature.json +0 -220
  1263. package/template/.codex/skills/drawio/assets/themes/notion-clean.json +0 -246
  1264. package/template/.codex/skills/drawio/assets/themes/tech-blue.json +0 -220
  1265. package/template/.codex/skills/drawio/evals/README.md +0 -17
  1266. package/template/.codex/skills/drawio/evals/ai-icon-catalog-cases.json +0 -89
  1267. package/template/.codex/skills/drawio/evals/baseline-prompts.json +0 -122
  1268. package/template/.codex/skills/drawio/evals/darwin-results.tsv +0 -4
  1269. package/template/.codex/skills/drawio/evals/evals.json +0 -223
  1270. package/template/.codex/skills/drawio/evals/evidence/ai-icon-catalog-desktop.json +0 -134
  1271. package/template/.codex/skills/drawio/evals/fixtures/ai-icons-advanced-svg.yaml +0 -25
  1272. package/template/.codex/skills/drawio/evals/fixtures/ai-icons-cjk-agent-rag.yaml +0 -55
  1273. package/template/.codex/skills/drawio/evals/fixtures/ai-icons-core-aliases.yaml +0 -50
  1274. package/template/.codex/skills/drawio/evals/fixtures/ai-icons-current-color.yaml +0 -25
  1275. package/template/.codex/skills/drawio/evals/fixtures/ai-icons-gradients.yaml +0 -25
  1276. package/template/.codex/skills/drawio/evals/fixtures/import-simple-compressed.drawio +0 -5
  1277. package/template/.codex/skills/drawio/evals/fixtures/import-simple.drawio +0 -28
  1278. package/template/.codex/skills/drawio/evals/fixtures/industrial-architecture.yaml +0 -239
  1279. package/template/.codex/skills/drawio/evals/fixtures/replicate-academic-highlight.svg +0 -13
  1280. package/template/.codex/skills/drawio/evals/fixtures/replicate-brand-architecture.svg +0 -14
  1281. package/template/.codex/skills/drawio/evals/fixtures/replicate-warm-approval.svg +0 -13
  1282. package/template/.codex/skills/drawio/evals/fixtures/vision-tall-workflow.yaml +0 -47
  1283. package/template/.codex/skills/drawio/evals/upstream-integration-cases.json +0 -78
  1284. package/template/.codex/skills/drawio/evals/vision-preview-cases.json +0 -147
  1285. package/template/.codex/skills/drawio/references/docs/agent-diagrams.md +0 -164
  1286. package/template/.codex/skills/drawio/references/docs/ah-format.md +0 -322
  1287. package/template/.codex/skills/drawio/references/docs/architecture-diagrams.md +0 -159
  1288. package/template/.codex/skills/drawio/references/docs/canonical-graph-projection.md +0 -54
  1289. package/template/.codex/skills/drawio/references/docs/code-importers.md +0 -53
  1290. package/template/.codex/skills/drawio/references/docs/config-importers.md +0 -68
  1291. package/template/.codex/skills/drawio/references/docs/design-system/README.md +0 -204
  1292. package/template/.codex/skills/drawio/references/docs/design-system/color-guide.md +0 -255
  1293. package/template/.codex/skills/drawio/references/docs/design-system/connectors.md +0 -388
  1294. package/template/.codex/skills/drawio/references/docs/design-system/formulas.md +0 -196
  1295. package/template/.codex/skills/drawio/references/docs/design-system/icons.md +0 -332
  1296. package/template/.codex/skills/drawio/references/docs/design-system/shapes.md +0 -269
  1297. package/template/.codex/skills/drawio/references/docs/design-system/specification.md +0 -754
  1298. package/template/.codex/skills/drawio/references/docs/design-system/themes.md +0 -441
  1299. package/template/.codex/skills/drawio/references/docs/design-system/tokens.md +0 -232
  1300. package/template/.codex/skills/drawio/references/docs/edge-quality-rules.md +0 -65
  1301. package/template/.codex/skills/drawio/references/docs/ieee-network-diagrams.md +0 -145
  1302. package/template/.codex/skills/drawio/references/docs/live-snapshots-drift.md +0 -72
  1303. package/template/.codex/skills/drawio/references/docs/math-typesetting.md +0 -258
  1304. package/template/.codex/skills/drawio/references/docs/mcp-tools.md +0 -85
  1305. package/template/.codex/skills/drawio/references/docs/migration-readiness.md +0 -73
  1306. package/template/.codex/skills/drawio/references/docs/stencil-library-guide.md +0 -97
  1307. package/template/.codex/skills/drawio/references/docs/style-extraction.md +0 -261
  1308. package/template/.codex/skills/drawio/references/docs/style-presets.md +0 -126
  1309. package/template/.codex/skills/drawio/references/docs/upstream-capability-compatibility.md +0 -61
  1310. package/template/.codex/skills/drawio/references/docs/xml-format.md +0 -53
  1311. package/template/.codex/skills/drawio/references/examples/README.md +0 -33
  1312. package/template/.codex/skills/drawio/references/examples/agentic-rag.yaml +0 -71
  1313. package/template/.codex/skills/drawio/references/examples/arch-dark-aws-serverless.yaml +0 -103
  1314. package/template/.codex/skills/drawio/references/examples/arch-dark-microservices.yaml +0 -146
  1315. package/template/.codex/skills/drawio/references/examples/arch-dark-web-app.yaml +0 -62
  1316. package/template/.codex/skills/drawio/references/examples/auto-layout-workflow.yaml +0 -81
  1317. package/template/.codex/skills/drawio/references/examples/aws-vpc-topology.yaml +0 -66
  1318. package/template/.codex/skills/drawio/references/examples/campus-lan-topology.yaml +0 -89
  1319. package/template/.codex/skills/drawio/references/examples/cloud-reference-architecture.yaml +0 -34
  1320. package/template/.codex/skills/drawio/references/examples/e-commerce.yaml +0 -141
  1321. package/template/.codex/skills/drawio/references/examples/importers/README.md +0 -10
  1322. package/template/.codex/skills/drawio/references/examples/importers/live/compose-drift-evidence.json +0 -49
  1323. package/template/.codex/skills/drawio/references/examples/importers/live/compose-drift-report.json +0 -300
  1324. package/template/.codex/skills/drawio/references/examples/importers/live/compose-drift.spec.yaml +0 -75
  1325. package/template/.codex/skills/drawio/references/examples/importers/live/docker-inspect.json +0 -55
  1326. package/template/.codex/skills/drawio/references/examples/importers/live/drift-declared-compose.yaml +0 -13
  1327. package/template/.codex/skills/drawio/references/examples/importers/live/kubernetes-live.json +0 -71
  1328. package/template/.codex/skills/drawio/references/examples/importers/live/terraform-state.json +0 -70
  1329. package/template/.codex/skills/drawio/references/examples/importers/schema.sql +0 -10
  1330. package/template/.codex/skills/drawio/references/examples/importers/terraform.tf +0 -9
  1331. package/template/.codex/skills/drawio/references/examples/login-flow.yaml +0 -65
  1332. package/template/.codex/skills/drawio/references/examples/mem0-memory-layer.yaml +0 -63
  1333. package/template/.codex/skills/drawio/references/examples/microservices.yaml +0 -58
  1334. package/template/.codex/skills/drawio/references/examples/multi-agent-orchestration.yaml +0 -67
  1335. package/template/.codex/skills/drawio/references/examples/neural-network.yaml +0 -66
  1336. package/template/.codex/skills/drawio/references/examples/onprem-dmz-topology.yaml +0 -62
  1337. package/template/.codex/skills/drawio/references/examples/palettes/README.md +0 -29
  1338. package/template/.codex/skills/drawio/references/examples/palettes/c4-blue.drawio +0 -6
  1339. package/template/.codex/skills/drawio/references/examples/palettes/c4-blue.svg +0 -36
  1340. package/template/.codex/skills/drawio/references/examples/palettes/cloud-aws.drawio +0 -6
  1341. package/template/.codex/skills/drawio/references/examples/palettes/cloud-aws.svg +0 -36
  1342. package/template/.codex/skills/drawio/references/examples/palettes/drawio-classic.drawio +0 -6
  1343. package/template/.codex/skills/drawio/references/examples/palettes/drawio-classic.svg +0 -36
  1344. package/template/.codex/skills/drawio/references/examples/palettes/ieee-bw.drawio +0 -6
  1345. package/template/.codex/skills/drawio/references/examples/palettes/ieee-bw.svg +0 -36
  1346. package/template/.codex/skills/drawio/references/examples/palettes/ieee-color.drawio +0 -6
  1347. package/template/.codex/skills/drawio/references/examples/palettes/ieee-color.svg +0 -36
  1348. package/template/.codex/skills/drawio/references/examples/palettes/journal-jama.drawio +0 -6
  1349. package/template/.codex/skills/drawio/references/examples/palettes/journal-jama.svg +0 -36
  1350. package/template/.codex/skills/drawio/references/examples/palettes/journal-npg.drawio +0 -6
  1351. package/template/.codex/skills/drawio/references/examples/palettes/journal-npg.svg +0 -36
  1352. package/template/.codex/skills/drawio/references/examples/palettes/matlab-lines.drawio +0 -6
  1353. package/template/.codex/skills/drawio/references/examples/palettes/matlab-lines.svg +0 -36
  1354. package/template/.codex/skills/drawio/references/examples/palettes/morandi.drawio +0 -6
  1355. package/template/.codex/skills/drawio/references/examples/palettes/morandi.svg +0 -36
  1356. package/template/.codex/skills/drawio/references/examples/palettes/okabe-ito.drawio +0 -6
  1357. package/template/.codex/skills/drawio/references/examples/palettes/okabe-ito.svg +0 -36
  1358. package/template/.codex/skills/drawio/references/examples/palettes/palette-swatch.template.yaml +0 -56
  1359. package/template/.codex/skills/drawio/references/examples/palettes/seaborn-colorblind.drawio +0 -6
  1360. package/template/.codex/skills/drawio/references/examples/palettes/seaborn-colorblind.svg +0 -36
  1361. package/template/.codex/skills/drawio/references/examples/palettes/tol-bright.drawio +0 -6
  1362. package/template/.codex/skills/drawio/references/examples/palettes/tol-bright.svg +0 -36
  1363. package/template/.codex/skills/drawio/references/examples/palettes/tol-high-contrast.drawio +0 -6
  1364. package/template/.codex/skills/drawio/references/examples/palettes/tol-high-contrast.svg +0 -36
  1365. package/template/.codex/skills/drawio/references/examples/palettes/tol-light-fill.drawio +0 -6
  1366. package/template/.codex/skills/drawio/references/examples/palettes/tol-light-fill.svg +0 -36
  1367. package/template/.codex/skills/drawio/references/examples/palettes/tol-muted.drawio +0 -6
  1368. package/template/.codex/skills/drawio/references/examples/palettes/tol-muted.svg +0 -36
  1369. package/template/.codex/skills/drawio/references/examples/rag-pipeline.yaml +0 -67
  1370. package/template/.codex/skills/drawio/references/examples/replicated-brand-flow.yaml +0 -89
  1371. package/template/.codex/skills/drawio/references/examples/swimlane-engineering-review.yaml +0 -44
  1372. package/template/.codex/skills/drawio/references/examples/tiered-network-topology.yaml +0 -59
  1373. package/template/.codex/skills/drawio/references/examples/tool-call-loop.yaml +0 -63
  1374. package/template/.codex/skills/drawio/references/examples/vendor-device-mapping.yaml +0 -46
  1375. package/template/.codex/skills/drawio/references/official/style-reference.md +0 -936
  1376. package/template/.codex/skills/drawio/references/official/xml-reference.md +0 -262
  1377. package/template/.codex/skills/drawio/references/palette.schema.json +0 -59
  1378. package/template/.codex/skills/drawio/references/theme.schema.json +0 -249
  1379. package/template/.codex/skills/drawio/references/upstream/pure-drawio-skill.md +0 -615
  1380. package/template/.codex/skills/drawio/references/workflows/create.md +0 -195
  1381. package/template/.codex/skills/drawio/references/workflows/edit.md +0 -174
  1382. package/template/.codex/skills/drawio/references/workflows/replicate.md +0 -239
  1383. package/template/.codex/skills/drawio/references/workflows/visual-review.md +0 -108
  1384. package/template/.codex/skills/drawio/reports/output_quality_scorecard.md +0 -106
  1385. package/template/.codex/skills/drawio/reports/upstream-port-release-evidence.md +0 -43
  1386. package/template/.codex/skills/drawio/scripts/adapters/ci.js +0 -139
  1387. package/template/.codex/skills/drawio/scripts/adapters/ci.test.js +0 -41
  1388. package/template/.codex/skills/drawio/scripts/adapters/code-common.js +0 -171
  1389. package/template/.codex/skills/drawio/scripts/adapters/code-imports.test.js +0 -80
  1390. package/template/.codex/skills/drawio/scripts/adapters/code-parsers.integration.test.js +0 -71
  1391. package/template/.codex/skills/drawio/scripts/adapters/compose.js +0 -134
  1392. package/template/.codex/skills/drawio/scripts/adapters/compose.test.js +0 -54
  1393. package/template/.codex/skills/drawio/scripts/adapters/config-adapters.integration.test.js +0 -58
  1394. package/template/.codex/skills/drawio/scripts/adapters/config-common.js +0 -131
  1395. package/template/.codex/skills/drawio/scripts/adapters/config-common.test.js +0 -32
  1396. package/template/.codex/skills/drawio/scripts/adapters/docker-inspect.js +0 -127
  1397. package/template/.codex/skills/drawio/scripts/adapters/docker-inspect.test.js +0 -62
  1398. package/template/.codex/skills/drawio/scripts/adapters/fixtures/raster-extraction.json +0 -31
  1399. package/template/.codex/skills/drawio/scripts/adapters/go-code-adapter.test.js +0 -59
  1400. package/template/.codex/skills/drawio/scripts/adapters/go-code.js +0 -168
  1401. package/template/.codex/skills/drawio/scripts/adapters/graph-drift.file.test.js +0 -67
  1402. package/template/.codex/skills/drawio/scripts/adapters/graph-drift.js +0 -358
  1403. package/template/.codex/skills/drawio/scripts/adapters/graph-drift.test.js +0 -272
  1404. package/template/.codex/skills/drawio/scripts/adapters/graph-projection.js +0 -335
  1405. package/template/.codex/skills/drawio/scripts/adapters/graph-projection.test.js +0 -141
  1406. package/template/.codex/skills/drawio/scripts/adapters/identity.js +0 -244
  1407. package/template/.codex/skills/drawio/scripts/adapters/identity.test.js +0 -123
  1408. package/template/.codex/skills/drawio/scripts/adapters/index.js +0 -489
  1409. package/template/.codex/skills/drawio/scripts/adapters/index.test.js +0 -152
  1410. package/template/.codex/skills/drawio/scripts/adapters/js-code-adapter.test.js +0 -42
  1411. package/template/.codex/skills/drawio/scripts/adapters/js-code.js +0 -141
  1412. package/template/.codex/skills/drawio/scripts/adapters/kubernetes-live.test.js +0 -46
  1413. package/template/.codex/skills/drawio/scripts/adapters/kubernetes.js +0 -258
  1414. package/template/.codex/skills/drawio/scripts/adapters/kubernetes.test.js +0 -81
  1415. package/template/.codex/skills/drawio/scripts/adapters/openapi.js +0 -98
  1416. package/template/.codex/skills/drawio/scripts/adapters/openapi.test.js +0 -46
  1417. package/template/.codex/skills/drawio/scripts/adapters/optional-python-code.js +0 -16
  1418. package/template/.codex/skills/drawio/scripts/adapters/optional-python.integration.test.js +0 -32
  1419. package/template/.codex/skills/drawio/scripts/adapters/optional-python.js +0 -127
  1420. package/template/.codex/skills/drawio/scripts/adapters/optional-python.test.js +0 -55
  1421. package/template/.codex/skills/drawio/scripts/adapters/projection-to-spec.js +0 -116
  1422. package/template/.codex/skills/drawio/scripts/adapters/projection-to-spec.test.js +0 -139
  1423. package/template/.codex/skills/drawio/scripts/adapters/python/code-parser-worker.py +0 -93
  1424. package/template/.codex/skills/drawio/scripts/adapters/python/config-parser-worker.py +0 -237
  1425. package/template/.codex/skills/drawio/scripts/adapters/python/requirements.txt +0 -2
  1426. package/template/.codex/skills/drawio/scripts/adapters/python-code-adapter.test.js +0 -127
  1427. package/template/.codex/skills/drawio/scripts/adapters/python-code.js +0 -246
  1428. package/template/.codex/skills/drawio/scripts/adapters/raster-extraction.js +0 -258
  1429. package/template/.codex/skills/drawio/scripts/adapters/raster-extraction.test.js +0 -308
  1430. package/template/.codex/skills/drawio/scripts/adapters/rust-code-adapter.test.js +0 -64
  1431. package/template/.codex/skills/drawio/scripts/adapters/rust-code.js +0 -207
  1432. package/template/.codex/skills/drawio/scripts/adapters/sql-ddl.js +0 -118
  1433. package/template/.codex/skills/drawio/scripts/adapters/sql-ddl.test.js +0 -56
  1434. package/template/.codex/skills/drawio/scripts/adapters/terraform-config.js +0 -141
  1435. package/template/.codex/skills/drawio/scripts/adapters/terraform-config.test.js +0 -67
  1436. package/template/.codex/skills/drawio/scripts/adapters/terraform-state.js +0 -157
  1437. package/template/.codex/skills/drawio/scripts/adapters/terraform-state.test.js +0 -69
  1438. package/template/.codex/skills/drawio/scripts/cli.js +0 -700
  1439. package/template/.codex/skills/drawio/scripts/dsl/ah-to-drawio.js +0 -276
  1440. package/template/.codex/skills/drawio/scripts/dsl/ah-to-drawio.test.js +0 -77
  1441. package/template/.codex/skills/drawio/scripts/dsl/ai-icon-catalog.js +0 -126
  1442. package/template/.codex/skills/drawio/scripts/dsl/ai-icon-catalog.test.js +0 -86
  1443. package/template/.codex/skills/drawio/scripts/dsl/auto-layout.js +0 -206
  1444. package/template/.codex/skills/drawio/scripts/dsl/auto-layout.test.js +0 -249
  1445. package/template/.codex/skills/drawio/scripts/dsl/catalog-ranking.js +0 -54
  1446. package/template/.codex/skills/drawio/scripts/dsl/catalog-search.js +0 -58
  1447. package/template/.codex/skills/drawio/scripts/dsl/catalog-search.test.js +0 -44
  1448. package/template/.codex/skills/drawio/scripts/dsl/document-spec.js +0 -256
  1449. package/template/.codex/skills/drawio/scripts/dsl/document-spec.test.js +0 -147
  1450. package/template/.codex/skills/drawio/scripts/dsl/drawio-to-spec.js +0 -497
  1451. package/template/.codex/skills/drawio/scripts/dsl/examples-baseline.test.js +0 -30
  1452. package/template/.codex/skills/drawio/scripts/dsl/icon-mappings.js +0 -65
  1453. package/template/.codex/skills/drawio/scripts/dsl/icon-mappings.test.js +0 -19
  1454. package/template/.codex/skills/drawio/scripts/dsl/icon-resolver.js +0 -153
  1455. package/template/.codex/skills/drawio/scripts/dsl/icon-resolver.test.js +0 -62
  1456. package/template/.codex/skills/drawio/scripts/dsl/multi-page.js +0 -224
  1457. package/template/.codex/skills/drawio/scripts/dsl/multi-page.test.js +0 -107
  1458. package/template/.codex/skills/drawio/scripts/dsl/palette-catalog.test.js +0 -138
  1459. package/template/.codex/skills/drawio/scripts/dsl/palette-integration.test.js +0 -182
  1460. package/template/.codex/skills/drawio/scripts/dsl/palette-validate.js +0 -91
  1461. package/template/.codex/skills/drawio/scripts/dsl/palette.js +0 -302
  1462. package/template/.codex/skills/drawio/scripts/dsl/palette.test.js +0 -197
  1463. package/template/.codex/skills/drawio/scripts/dsl/shape-catalog.js +0 -89
  1464. package/template/.codex/skills/drawio/scripts/dsl/shape-catalog.test.js +0 -21
  1465. package/template/.codex/skills/drawio/scripts/dsl/spec-to-drawio.js +0 -3739
  1466. package/template/.codex/skills/drawio/scripts/dsl/spec-to-drawio.test.js +0 -3022
  1467. package/template/.codex/skills/drawio/scripts/generate-palette-swatches.js +0 -87
  1468. package/template/.codex/skills/drawio/scripts/install.bat +0 -64
  1469. package/template/.codex/skills/drawio/scripts/install.sh +0 -44
  1470. package/template/.codex/skills/drawio/scripts/math/index.js +0 -317
  1471. package/template/.codex/skills/drawio/scripts/math/index.test.js +0 -62
  1472. package/template/.codex/skills/drawio/scripts/package.json +0 -1
  1473. package/template/.codex/skills/drawio/scripts/postprocess/artifacts.js +0 -142
  1474. package/template/.codex/skills/drawio/scripts/postprocess/artifacts.test.js +0 -86
  1475. package/template/.codex/skills/drawio/scripts/postprocess/cli.js +0 -228
  1476. package/template/.codex/skills/drawio/scripts/postprocess/cli.test.js +0 -129
  1477. package/template/.codex/skills/drawio/scripts/postprocess/fixtures/bundle.yaml +0 -75
  1478. package/template/.codex/skills/drawio/scripts/postprocess/fixtures/legacy.yaml +0 -21
  1479. package/template/.codex/skills/drawio/scripts/postprocess/html.js +0 -197
  1480. package/template/.codex/skills/drawio/scripts/postprocess/html.test.js +0 -50
  1481. package/template/.codex/skills/drawio/scripts/postprocess/index.js +0 -5
  1482. package/template/.codex/skills/drawio/scripts/postprocess/input.js +0 -112
  1483. package/template/.codex/skills/drawio/scripts/postprocess/input.test.js +0 -73
  1484. package/template/.codex/skills/drawio/scripts/postprocess/mutate.js +0 -584
  1485. package/template/.codex/skills/drawio/scripts/postprocess/mutate.test.js +0 -193
  1486. package/template/.codex/skills/drawio/scripts/postprocess/projection.js +0 -178
  1487. package/template/.codex/skills/drawio/scripts/postprocess/projection.test.js +0 -67
  1488. package/template/.codex/skills/drawio/scripts/runtime/artifacts.js +0 -283
  1489. package/template/.codex/skills/drawio/scripts/runtime/desktop.js +0 -204
  1490. package/template/.codex/skills/drawio/scripts/runtime/desktop.test.js +0 -121
  1491. package/template/.codex/skills/drawio/scripts/runtime/diagrams-net-url.js +0 -122
  1492. package/template/.codex/skills/drawio/scripts/runtime/export-stability.js +0 -75
  1493. package/template/.codex/skills/drawio/scripts/runtime/export-stability.test.js +0 -81
  1494. package/template/.codex/skills/drawio/scripts/runtime/png-inspection.js +0 -157
  1495. package/template/.codex/skills/drawio/scripts/runtime/png-inspection.test.js +0 -120
  1496. package/template/.codex/skills/drawio/scripts/runtime/vision-preview.js +0 -77
  1497. package/template/.codex/skills/drawio/scripts/runtime/vision-preview.test.js +0 -103
  1498. package/template/.codex/skills/drawio/scripts/shared/ai-icon-contract.js +0 -13
  1499. package/template/.codex/skills/drawio/scripts/shared/xml-utils.js +0 -241
  1500. package/template/.codex/skills/drawio/scripts/svg/drawio-to-svg.js +0 -918
  1501. package/template/.codex/skills/drawio/scripts/svg/drawio-to-svg.test.js +0 -763
  1502. package/template/.codex/skills/drawio/scripts/tools/build-ai-icon-catalog.js +0 -208
  1503. package/template/.codex/skills/drawio/scripts/tools/build-ai-icon-catalog.test.js +0 -107
  1504. package/template/.codex/skills/drawio/scripts/tools/build-shape-catalog.js +0 -84
  1505. package/template/.codex/skills/drawio/scripts/tools/build-shape-catalog.test.js +0 -43
  1506. package/template/.codex/skills/drawio/scripts/tools/fixtures/ai-icons-package/icons/alpha-color.svg +0 -1
  1507. package/template/.codex/skills/drawio/scripts/tools/fixtures/ai-icons-package/icons/alpha.svg +0 -1
  1508. package/template/.codex/skills/drawio/scripts/tools/fixtures/ai-icons-package/icons/beta-brand-color.svg +0 -1
  1509. package/template/.codex/skills/drawio/scripts/tools/fixtures/ai-icons-package/icons/beta.svg +0 -1
  1510. package/template/.codex/skills/drawio/scripts/tools/fixtures/ai-icons-package/icons/civitai-text-color.svg +0 -1
  1511. package/template/.codex/skills/drawio/scripts/tools/fixtures/ai-icons-package/icons/civitai.svg +0 -1
  1512. package/template/.codex/skills/drawio/scripts/tools/fixtures/ai-icons-package/package.json +0 -5
  1513. package/template/.codex/skills/drawio/scripts/vendor/elkjs/LICENSE.md +0 -264
  1514. package/template/.codex/skills/drawio/scripts/vendor/elkjs/README.md +0 -18
  1515. package/template/.codex/skills/drawio/scripts/vendor/elkjs/elk.bundled.cjs +0 -6589
  1516. package/template/.codex/skills/drawio/styles/built-in/corporate.json +0 -49
  1517. package/template/.codex/skills/drawio/styles/built-in/default.json +0 -49
  1518. package/template/.codex/skills/drawio/styles/built-in/handdrawn.json +0 -49
  1519. package/template/.codex/skills/drawio/styles/schema.json +0 -112
  1520. package/template/.codex/skills/drawio-academic-skills/CHANGELOG.md +0 -67
  1521. package/template/.codex/skills/drawio-academic-skills/README.md +0 -103
  1522. package/template/.codex/skills/drawio-academic-skills/README_CN.md +0 -103
  1523. package/template/.codex/skills/drawio-academic-skills/SKILL.md +0 -161
  1524. package/template/.codex/skills/drawio-academic-skills/__yss_dotfile__.gitignore +0 -12
  1525. package/template/.codex/skills/drawio-academic-skills/agents/interface.yaml +0 -25
  1526. package/template/.codex/skills/drawio-academic-skills/agents/openai.yaml +0 -24
  1527. package/template/.codex/skills/drawio-academic-skills/evals/README.md +0 -13
  1528. package/template/.codex/skills/drawio-academic-skills/evals/baseline-prompts.json +0 -52
  1529. package/template/.codex/skills/drawio-academic-skills/evals/darwin-results.tsv +0 -3
  1530. package/template/.codex/skills/drawio-academic-skills/evals/evals.json +0 -228
  1531. package/template/.codex/skills/drawio-academic-skills/evals/test-prompts.json +0 -17
  1532. package/template/.codex/skills/drawio-academic-skills/references/docs/academic-export-checklist.md +0 -45
  1533. package/template/.codex/skills/drawio-academic-skills/references/docs/academic-figure-playbook.md +0 -349
  1534. package/template/.codex/skills/drawio-academic-skills/references/docs/publication-overlay.md +0 -206
  1535. package/template/.codex/skills/drawio-academic-skills/references/examples/ablation-study-pipeline.yaml +0 -39
  1536. package/template/.codex/skills/drawio-academic-skills/references/examples/ieee-network-paper.yaml +0 -44
  1537. package/template/.codex/skills/drawio-academic-skills/references/examples/industrial-architecture-cn-paper.yaml +0 -106
  1538. package/template/.codex/skills/drawio-academic-skills/references/examples/max-pooling-operation-paper.yaml +0 -75
  1539. package/template/.codex/skills/drawio-academic-skills/references/examples/research-pipeline.yaml +0 -54
  1540. package/template/.codex/skills/drawio-academic-skills/references/examples/system-architecture-paper.yaml +0 -45
  1541. package/template/.codex/skills/drawio-academic-skills/references/examples/technical-roadmap-paper.yaml +0 -54
  1542. package/template/.codex/skills/drawio-academic-skills/references/examples/yolo-model-architecture-paper.yaml +0 -118
  1543. package/template/.codex/skills/drawio-academic-skills/references/templates/multi-module-system-compact.yaml +0 -251
  1544. package/template/.codex/skills/drawio-academic-skills/references/templates/neural-network-architecture-compact.yaml +0 -267
  1545. package/template/.codex/skills/excalidraw-diagram-generator/SKILL.md +0 -634
  1546. package/template/.codex/skills/excalidraw-diagram-generator/references/element-types.md +0 -497
  1547. package/template/.codex/skills/excalidraw-diagram-generator/references/excalidraw-schema.md +0 -350
  1548. package/template/.codex/skills/excalidraw-diagram-generator/scripts/README.md +0 -193
  1549. package/template/.codex/skills/excalidraw-diagram-generator/scripts/__yss_dotfile__.gitignore +0 -34
  1550. package/template/.codex/skills/excalidraw-diagram-generator/scripts/add-arrow.py +0 -315
  1551. package/template/.codex/skills/excalidraw-diagram-generator/scripts/add-icon-to-diagram.py +0 -406
  1552. package/template/.codex/skills/excalidraw-diagram-generator/scripts/split-excalidraw-library.py +0 -183
  1553. package/template/.codex/skills/excalidraw-diagram-generator/templates/business-flow-swimlane-template.excalidraw +0 -334
  1554. package/template/.codex/skills/excalidraw-diagram-generator/templates/class-diagram-template.excalidraw +0 -558
  1555. package/template/.codex/skills/excalidraw-diagram-generator/templates/data-flow-diagram-template.excalidraw +0 -279
  1556. package/template/.codex/skills/excalidraw-diagram-generator/templates/er-diagram-template.excalidraw +0 -662
  1557. package/template/.codex/skills/excalidraw-diagram-generator/templates/flowchart-template.excalidraw +0 -179
  1558. package/template/.codex/skills/excalidraw-diagram-generator/templates/mindmap-template.excalidraw +0 -244
  1559. package/template/.codex/skills/excalidraw-diagram-generator/templates/relationship-template.excalidraw +0 -145
  1560. package/template/.codex/skills/excalidraw-diagram-generator/templates/sequence-diagram-template.excalidraw +0 -509
  1561. package/template/.codex/skills/kb-retriever/README.md +0 -197
  1562. package/template/.codex/skills/kb-retriever/README.zh-CN.md +0 -197
  1563. package/template/.codex/skills/kb-retriever/SKILL.md +0 -250
  1564. package/template/.codex/skills/kb-retriever/manifest.json +0 -15
  1565. package/template/.codex/skills/kb-retriever/references/excel_analysis.md +0 -129
  1566. package/template/.codex/skills/kb-retriever/references/excel_reading.md +0 -72
  1567. package/template/.codex/skills/kb-retriever/references/pdf_reading.md +0 -362
  1568. package/template/.codex/skills/kb-retriever/scripts/convert_pdf_to_images.py +0 -35
  1569. package/template/.codex/skills/yss-db2mybatis/requirements.txt +0 -4
  1570. package/template/.codex/skills/yss-db2mybatis/scripts/db2mybatis.py +0 -1494
  1571. package/template/.codex/skills/yss-ddd-scaffold-generator/scripts/generate_scaffold.py +0 -728
  1572. package/template/.codex/skills/yss-ddd-scaffold-generator/scripts/run_scaffold_verification.py +0 -155
  1573. package/template/.codex/skills/yss-design-system/scripts/validate-frontmatter.py +0 -50
  1574. package/template/.codex/skills/yss-source-index/scripts/refresh-yss-skill-index.py +0 -371
  1575. package/template/.codex/skills/yss-web-controller/scripts/generate_controller.py +0 -293
  1576. package/template/.codex/skills/yss-web-controller/scripts/test_generate_controller.py +0 -68
  1577. package/template/.hermes/skills/beautiful-article/README.md +0 -450
  1578. package/template/.hermes/skills/beautiful-article/README.zh-CN.md +0 -450
  1579. package/template/.hermes/skills/beautiful-article/SKILL.md +0 -466
  1580. package/template/.hermes/skills/beautiful-article/assets/scaffold-template/__yss_dotfile__.npmrc +0 -1
  1581. package/template/.hermes/skills/beautiful-article/assets/scaffold-template/article/Article.tsx +0 -69
  1582. package/template/.hermes/skills/beautiful-article/assets/scaffold-template/article/Cover.tsx +0 -172
  1583. package/template/.hermes/skills/beautiful-article/assets/scaffold-template/article/main.tsx +0 -26
  1584. package/template/.hermes/skills/beautiful-article/assets/scaffold-template/article/sections/01-opening.tsx +0 -30
  1585. package/template/.hermes/skills/beautiful-article/assets/scaffold-template/index.html +0 -19
  1586. package/template/.hermes/skills/beautiful-article/assets/scaffold-template/package.json +0 -26
  1587. package/template/.hermes/skills/beautiful-article/assets/scaffold-template/tsconfig.json +0 -20
  1588. package/template/.hermes/skills/beautiful-article/assets/scaffold-template/tsconfig.node.json +0 -11
  1589. package/template/.hermes/skills/beautiful-article/assets/scaffold-template/vite.config.ts +0 -18
  1590. package/template/.hermes/skills/beautiful-article/manifest.json +0 -15
  1591. package/template/.hermes/skills/beautiful-article/references/article-types/briefing.md +0 -32
  1592. package/template/.hermes/skills/beautiful-article/references/article-types/dialogue.md +0 -30
  1593. package/template/.hermes/skills/beautiful-article/references/article-types/essay.md +0 -31
  1594. package/template/.hermes/skills/beautiful-article/references/article-types/explainer.md +0 -32
  1595. package/template/.hermes/skills/beautiful-article/references/article-types/full-report.md +0 -32
  1596. package/template/.hermes/skills/beautiful-article/references/article-types/interactive-explainer.md +0 -66
  1597. package/template/.hermes/skills/beautiful-article/references/article-types/longform.md +0 -32
  1598. package/template/.hermes/skills/beautiful-article/references/article-types/review.md +0 -32
  1599. package/template/.hermes/skills/beautiful-article/references/article-types/tutorial.md +0 -30
  1600. package/template/.hermes/skills/beautiful-article/references/article-types/visual-essay.md +0 -33
  1601. package/template/.hermes/skills/beautiful-article/references/article-types.md +0 -42
  1602. package/template/.hermes/skills/beautiful-article/references/asset-policy.md +0 -71
  1603. package/template/.hermes/skills/beautiful-article/references/component-policy.md +0 -103
  1604. package/template/.hermes/skills/beautiful-article/references/cover.md +0 -208
  1605. package/template/.hermes/skills/beautiful-article/references/harness.md +0 -35
  1606. package/template/.hermes/skills/beautiful-article/references/html-output.md +0 -42
  1607. package/template/.hermes/skills/beautiful-article/references/information-density.md +0 -50
  1608. package/template/.hermes/skills/beautiful-article/references/layout.md +0 -46
  1609. package/template/.hermes/skills/beautiful-article/references/pdf-output.md +0 -208
  1610. package/template/.hermes/skills/beautiful-article/references/plan-template.md +0 -109
  1611. package/template/.hermes/skills/beautiful-article/references/raw-policy.md +0 -86
  1612. package/template/.hermes/skills/beautiful-article/references/repair-policy.md +0 -35
  1613. package/template/.hermes/skills/beautiful-article/references/review-checklist.md +0 -133
  1614. package/template/.hermes/skills/beautiful-article/references/scaffold.md +0 -77
  1615. package/template/.hermes/skills/beautiful-article/references/section-build.md +0 -100
  1616. package/template/.hermes/skills/beautiful-article/references/source-to-markdown.md +0 -118
  1617. package/template/.hermes/skills/beautiful-article/references/theme-selection.md +0 -48
  1618. package/template/.hermes/skills/beautiful-article/scripts/html-to-pdf.sh +0 -160
  1619. package/template/.hermes/skills/beautiful-article/scripts/pdf-print-overrides.css +0 -192
  1620. package/template/.hermes/skills/beautiful-article/scripts/scaffold.sh +0 -172
  1621. package/template/.hermes/skills/beautiful-article/scripts/source-to-markdown-markitdown.py +0 -100
  1622. package/template/.hermes/skills/beautiful-article/scripts/source-to-markdown.py +0 -174
  1623. package/template/.hermes/skills/beautiful-article/theme-profiles/andy.md +0 -57
  1624. package/template/.hermes/skills/beautiful-article/theme-profiles/bayer.md +0 -57
  1625. package/template/.hermes/skills/beautiful-article/theme-profiles/bodoni.md +0 -57
  1626. package/template/.hermes/skills/beautiful-article/theme-profiles/freddie.md +0 -57
  1627. package/template/.hermes/skills/beautiful-article/theme-profiles/fuller.md +0 -56
  1628. package/template/.hermes/skills/beautiful-article/theme-profiles/index.json +0 -112
  1629. package/template/.hermes/skills/beautiful-article/theme-profiles/knuth.md +0 -60
  1630. package/template/.hermes/skills/beautiful-article/theme-profiles/press.md +0 -61
  1631. package/template/.hermes/skills/beautiful-article/theme-profiles/shannon.md +0 -64
  1632. package/template/.hermes/skills/beautiful-article/theme-profiles/sottsass.md +0 -57
  1633. package/template/.hermes/skills/beautiful-article/theme-profiles/tufte.md +0 -64
  1634. package/template/.hermes/skills/beautiful-article/theme-profiles/vignelli.md +0 -63
  1635. package/template/.hermes/skills/drawio/.mcp.json +0 -8
  1636. package/template/.hermes/skills/drawio/CHANGELOG.md +0 -216
  1637. package/template/.hermes/skills/drawio/SKILL.md +0 -157
  1638. package/template/.hermes/skills/drawio/agents/interface.yaml +0 -26
  1639. package/template/.hermes/skills/drawio/agents/openai.yaml +0 -26
  1640. package/template/.hermes/skills/drawio/assets/catalog/ai-icons.json.gz +0 -0
  1641. package/template/.hermes/skills/drawio/assets/catalog/shape-catalog.json.gz +0 -0
  1642. package/template/.hermes/skills/drawio/assets/catalog/shape-index.json.gz +0 -0
  1643. package/template/.hermes/skills/drawio/assets/examples/login-flow-test.drawio +0 -6
  1644. package/template/.hermes/skills/drawio/assets/examples/login-flow.drawio +0 -6
  1645. package/template/.hermes/skills/drawio/assets/examples/microservices.drawio +0 -6
  1646. package/template/.hermes/skills/drawio/assets/examples/neural-network.drawio +0 -6
  1647. package/template/.hermes/skills/drawio/assets/licenses/architecture-diagram-generator-MIT.txt +0 -26
  1648. package/template/.hermes/skills/drawio/assets/licenses/drawio-mcp-shape-index-Apache-2.0.txt +0 -8
  1649. package/template/.hermes/skills/drawio/assets/licenses/lobe-icons-MIT.txt +0 -26
  1650. package/template/.hermes/skills/drawio/assets/licenses/lucide-ISC.txt +0 -41
  1651. package/template/.hermes/skills/drawio/assets/palettes/c4-blue.json +0 -29
  1652. package/template/.hermes/skills/drawio/assets/palettes/cloud-aws.json +0 -30
  1653. package/template/.hermes/skills/drawio/assets/palettes/drawio-classic.json +0 -21
  1654. package/template/.hermes/skills/drawio/assets/palettes/ieee-bw.json +0 -26
  1655. package/template/.hermes/skills/drawio/assets/palettes/ieee-color.json +0 -17
  1656. package/template/.hermes/skills/drawio/assets/palettes/journal-jama.json +0 -20
  1657. package/template/.hermes/skills/drawio/assets/palettes/journal-npg.json +0 -23
  1658. package/template/.hermes/skills/drawio/assets/palettes/matlab-lines.json +0 -20
  1659. package/template/.hermes/skills/drawio/assets/palettes/morandi.json +0 -21
  1660. package/template/.hermes/skills/drawio/assets/palettes/okabe-ito.json +0 -21
  1661. package/template/.hermes/skills/drawio/assets/palettes/seaborn-colorblind.json +0 -23
  1662. package/template/.hermes/skills/drawio/assets/palettes/tol-bright.json +0 -20
  1663. package/template/.hermes/skills/drawio/assets/palettes/tol-high-contrast.json +0 -18
  1664. package/template/.hermes/skills/drawio/assets/palettes/tol-light-fill.json +0 -22
  1665. package/template/.hermes/skills/drawio/assets/palettes/tol-muted.json +0 -22
  1666. package/template/.hermes/skills/drawio/assets/schemas/graph-projection.schema.json +0 -135
  1667. package/template/.hermes/skills/drawio/assets/schemas/spec.schema.json +0 -620
  1668. package/template/.hermes/skills/drawio/assets/themes/academic-color.json +0 -299
  1669. package/template/.hermes/skills/drawio/assets/themes/academic.json +0 -245
  1670. package/template/.hermes/skills/drawio/assets/themes/arch-dark.json +0 -253
  1671. package/template/.hermes/skills/drawio/assets/themes/blueprint.json +0 -246
  1672. package/template/.hermes/skills/drawio/assets/themes/dark-luxury.json +0 -246
  1673. package/template/.hermes/skills/drawio/assets/themes/dark-terminal.json +0 -244
  1674. package/template/.hermes/skills/drawio/assets/themes/dark.json +0 -220
  1675. package/template/.hermes/skills/drawio/assets/themes/high-contrast.json +0 -220
  1676. package/template/.hermes/skills/drawio/assets/themes/nature.json +0 -220
  1677. package/template/.hermes/skills/drawio/assets/themes/notion-clean.json +0 -246
  1678. package/template/.hermes/skills/drawio/assets/themes/tech-blue.json +0 -220
  1679. package/template/.hermes/skills/drawio/evals/README.md +0 -17
  1680. package/template/.hermes/skills/drawio/evals/ai-icon-catalog-cases.json +0 -89
  1681. package/template/.hermes/skills/drawio/evals/baseline-prompts.json +0 -122
  1682. package/template/.hermes/skills/drawio/evals/darwin-results.tsv +0 -4
  1683. package/template/.hermes/skills/drawio/evals/evals.json +0 -223
  1684. package/template/.hermes/skills/drawio/evals/evidence/ai-icon-catalog-desktop.json +0 -134
  1685. package/template/.hermes/skills/drawio/evals/fixtures/ai-icons-advanced-svg.yaml +0 -25
  1686. package/template/.hermes/skills/drawio/evals/fixtures/ai-icons-cjk-agent-rag.yaml +0 -55
  1687. package/template/.hermes/skills/drawio/evals/fixtures/ai-icons-core-aliases.yaml +0 -50
  1688. package/template/.hermes/skills/drawio/evals/fixtures/ai-icons-current-color.yaml +0 -25
  1689. package/template/.hermes/skills/drawio/evals/fixtures/ai-icons-gradients.yaml +0 -25
  1690. package/template/.hermes/skills/drawio/evals/fixtures/import-simple-compressed.drawio +0 -5
  1691. package/template/.hermes/skills/drawio/evals/fixtures/import-simple.drawio +0 -28
  1692. package/template/.hermes/skills/drawio/evals/fixtures/industrial-architecture.yaml +0 -239
  1693. package/template/.hermes/skills/drawio/evals/fixtures/replicate-academic-highlight.svg +0 -13
  1694. package/template/.hermes/skills/drawio/evals/fixtures/replicate-brand-architecture.svg +0 -14
  1695. package/template/.hermes/skills/drawio/evals/fixtures/replicate-warm-approval.svg +0 -13
  1696. package/template/.hermes/skills/drawio/evals/fixtures/vision-tall-workflow.yaml +0 -47
  1697. package/template/.hermes/skills/drawio/evals/upstream-integration-cases.json +0 -78
  1698. package/template/.hermes/skills/drawio/evals/vision-preview-cases.json +0 -147
  1699. package/template/.hermes/skills/drawio/references/docs/agent-diagrams.md +0 -164
  1700. package/template/.hermes/skills/drawio/references/docs/ah-format.md +0 -322
  1701. package/template/.hermes/skills/drawio/references/docs/architecture-diagrams.md +0 -159
  1702. package/template/.hermes/skills/drawio/references/docs/canonical-graph-projection.md +0 -54
  1703. package/template/.hermes/skills/drawio/references/docs/code-importers.md +0 -53
  1704. package/template/.hermes/skills/drawio/references/docs/config-importers.md +0 -68
  1705. package/template/.hermes/skills/drawio/references/docs/design-system/README.md +0 -204
  1706. package/template/.hermes/skills/drawio/references/docs/design-system/color-guide.md +0 -255
  1707. package/template/.hermes/skills/drawio/references/docs/design-system/connectors.md +0 -388
  1708. package/template/.hermes/skills/drawio/references/docs/design-system/formulas.md +0 -196
  1709. package/template/.hermes/skills/drawio/references/docs/design-system/icons.md +0 -332
  1710. package/template/.hermes/skills/drawio/references/docs/design-system/shapes.md +0 -269
  1711. package/template/.hermes/skills/drawio/references/docs/design-system/specification.md +0 -754
  1712. package/template/.hermes/skills/drawio/references/docs/design-system/themes.md +0 -441
  1713. package/template/.hermes/skills/drawio/references/docs/design-system/tokens.md +0 -232
  1714. package/template/.hermes/skills/drawio/references/docs/edge-quality-rules.md +0 -65
  1715. package/template/.hermes/skills/drawio/references/docs/ieee-network-diagrams.md +0 -145
  1716. package/template/.hermes/skills/drawio/references/docs/live-snapshots-drift.md +0 -72
  1717. package/template/.hermes/skills/drawio/references/docs/math-typesetting.md +0 -258
  1718. package/template/.hermes/skills/drawio/references/docs/mcp-tools.md +0 -85
  1719. package/template/.hermes/skills/drawio/references/docs/migration-readiness.md +0 -73
  1720. package/template/.hermes/skills/drawio/references/docs/stencil-library-guide.md +0 -97
  1721. package/template/.hermes/skills/drawio/references/docs/style-extraction.md +0 -261
  1722. package/template/.hermes/skills/drawio/references/docs/style-presets.md +0 -126
  1723. package/template/.hermes/skills/drawio/references/docs/upstream-capability-compatibility.md +0 -61
  1724. package/template/.hermes/skills/drawio/references/docs/xml-format.md +0 -53
  1725. package/template/.hermes/skills/drawio/references/examples/README.md +0 -33
  1726. package/template/.hermes/skills/drawio/references/examples/agentic-rag.yaml +0 -71
  1727. package/template/.hermes/skills/drawio/references/examples/arch-dark-aws-serverless.yaml +0 -103
  1728. package/template/.hermes/skills/drawio/references/examples/arch-dark-microservices.yaml +0 -146
  1729. package/template/.hermes/skills/drawio/references/examples/arch-dark-web-app.yaml +0 -62
  1730. package/template/.hermes/skills/drawio/references/examples/auto-layout-workflow.yaml +0 -81
  1731. package/template/.hermes/skills/drawio/references/examples/aws-vpc-topology.yaml +0 -66
  1732. package/template/.hermes/skills/drawio/references/examples/campus-lan-topology.yaml +0 -89
  1733. package/template/.hermes/skills/drawio/references/examples/cloud-reference-architecture.yaml +0 -34
  1734. package/template/.hermes/skills/drawio/references/examples/e-commerce.yaml +0 -141
  1735. package/template/.hermes/skills/drawio/references/examples/importers/README.md +0 -10
  1736. package/template/.hermes/skills/drawio/references/examples/importers/live/compose-drift-evidence.json +0 -49
  1737. package/template/.hermes/skills/drawio/references/examples/importers/live/compose-drift-report.json +0 -300
  1738. package/template/.hermes/skills/drawio/references/examples/importers/live/compose-drift.spec.yaml +0 -75
  1739. package/template/.hermes/skills/drawio/references/examples/importers/live/docker-inspect.json +0 -55
  1740. package/template/.hermes/skills/drawio/references/examples/importers/live/drift-declared-compose.yaml +0 -13
  1741. package/template/.hermes/skills/drawio/references/examples/importers/live/kubernetes-live.json +0 -71
  1742. package/template/.hermes/skills/drawio/references/examples/importers/live/terraform-state.json +0 -70
  1743. package/template/.hermes/skills/drawio/references/examples/importers/schema.sql +0 -10
  1744. package/template/.hermes/skills/drawio/references/examples/importers/terraform.tf +0 -9
  1745. package/template/.hermes/skills/drawio/references/examples/login-flow.yaml +0 -65
  1746. package/template/.hermes/skills/drawio/references/examples/mem0-memory-layer.yaml +0 -63
  1747. package/template/.hermes/skills/drawio/references/examples/microservices.yaml +0 -58
  1748. package/template/.hermes/skills/drawio/references/examples/multi-agent-orchestration.yaml +0 -67
  1749. package/template/.hermes/skills/drawio/references/examples/neural-network.yaml +0 -66
  1750. package/template/.hermes/skills/drawio/references/examples/onprem-dmz-topology.yaml +0 -62
  1751. package/template/.hermes/skills/drawio/references/examples/palettes/README.md +0 -29
  1752. package/template/.hermes/skills/drawio/references/examples/palettes/c4-blue.drawio +0 -6
  1753. package/template/.hermes/skills/drawio/references/examples/palettes/c4-blue.svg +0 -36
  1754. package/template/.hermes/skills/drawio/references/examples/palettes/cloud-aws.drawio +0 -6
  1755. package/template/.hermes/skills/drawio/references/examples/palettes/cloud-aws.svg +0 -36
  1756. package/template/.hermes/skills/drawio/references/examples/palettes/drawio-classic.drawio +0 -6
  1757. package/template/.hermes/skills/drawio/references/examples/palettes/drawio-classic.svg +0 -36
  1758. package/template/.hermes/skills/drawio/references/examples/palettes/ieee-bw.drawio +0 -6
  1759. package/template/.hermes/skills/drawio/references/examples/palettes/ieee-bw.svg +0 -36
  1760. package/template/.hermes/skills/drawio/references/examples/palettes/ieee-color.drawio +0 -6
  1761. package/template/.hermes/skills/drawio/references/examples/palettes/ieee-color.svg +0 -36
  1762. package/template/.hermes/skills/drawio/references/examples/palettes/journal-jama.drawio +0 -6
  1763. package/template/.hermes/skills/drawio/references/examples/palettes/journal-jama.svg +0 -36
  1764. package/template/.hermes/skills/drawio/references/examples/palettes/journal-npg.drawio +0 -6
  1765. package/template/.hermes/skills/drawio/references/examples/palettes/journal-npg.svg +0 -36
  1766. package/template/.hermes/skills/drawio/references/examples/palettes/matlab-lines.drawio +0 -6
  1767. package/template/.hermes/skills/drawio/references/examples/palettes/matlab-lines.svg +0 -36
  1768. package/template/.hermes/skills/drawio/references/examples/palettes/morandi.drawio +0 -6
  1769. package/template/.hermes/skills/drawio/references/examples/palettes/morandi.svg +0 -36
  1770. package/template/.hermes/skills/drawio/references/examples/palettes/okabe-ito.drawio +0 -6
  1771. package/template/.hermes/skills/drawio/references/examples/palettes/okabe-ito.svg +0 -36
  1772. package/template/.hermes/skills/drawio/references/examples/palettes/palette-swatch.template.yaml +0 -56
  1773. package/template/.hermes/skills/drawio/references/examples/palettes/seaborn-colorblind.drawio +0 -6
  1774. package/template/.hermes/skills/drawio/references/examples/palettes/seaborn-colorblind.svg +0 -36
  1775. package/template/.hermes/skills/drawio/references/examples/palettes/tol-bright.drawio +0 -6
  1776. package/template/.hermes/skills/drawio/references/examples/palettes/tol-bright.svg +0 -36
  1777. package/template/.hermes/skills/drawio/references/examples/palettes/tol-high-contrast.drawio +0 -6
  1778. package/template/.hermes/skills/drawio/references/examples/palettes/tol-high-contrast.svg +0 -36
  1779. package/template/.hermes/skills/drawio/references/examples/palettes/tol-light-fill.drawio +0 -6
  1780. package/template/.hermes/skills/drawio/references/examples/palettes/tol-light-fill.svg +0 -36
  1781. package/template/.hermes/skills/drawio/references/examples/palettes/tol-muted.drawio +0 -6
  1782. package/template/.hermes/skills/drawio/references/examples/palettes/tol-muted.svg +0 -36
  1783. package/template/.hermes/skills/drawio/references/examples/rag-pipeline.yaml +0 -67
  1784. package/template/.hermes/skills/drawio/references/examples/replicated-brand-flow.yaml +0 -89
  1785. package/template/.hermes/skills/drawio/references/examples/swimlane-engineering-review.yaml +0 -44
  1786. package/template/.hermes/skills/drawio/references/examples/tiered-network-topology.yaml +0 -59
  1787. package/template/.hermes/skills/drawio/references/examples/tool-call-loop.yaml +0 -63
  1788. package/template/.hermes/skills/drawio/references/examples/vendor-device-mapping.yaml +0 -46
  1789. package/template/.hermes/skills/drawio/references/official/style-reference.md +0 -936
  1790. package/template/.hermes/skills/drawio/references/official/xml-reference.md +0 -262
  1791. package/template/.hermes/skills/drawio/references/palette.schema.json +0 -59
  1792. package/template/.hermes/skills/drawio/references/theme.schema.json +0 -249
  1793. package/template/.hermes/skills/drawio/references/upstream/pure-drawio-skill.md +0 -615
  1794. package/template/.hermes/skills/drawio/references/workflows/create.md +0 -195
  1795. package/template/.hermes/skills/drawio/references/workflows/edit.md +0 -174
  1796. package/template/.hermes/skills/drawio/references/workflows/replicate.md +0 -239
  1797. package/template/.hermes/skills/drawio/references/workflows/visual-review.md +0 -108
  1798. package/template/.hermes/skills/drawio/reports/output_quality_scorecard.md +0 -106
  1799. package/template/.hermes/skills/drawio/reports/upstream-port-release-evidence.md +0 -43
  1800. package/template/.hermes/skills/drawio/scripts/adapters/ci.js +0 -139
  1801. package/template/.hermes/skills/drawio/scripts/adapters/ci.test.js +0 -41
  1802. package/template/.hermes/skills/drawio/scripts/adapters/code-common.js +0 -171
  1803. package/template/.hermes/skills/drawio/scripts/adapters/code-imports.test.js +0 -80
  1804. package/template/.hermes/skills/drawio/scripts/adapters/code-parsers.integration.test.js +0 -71
  1805. package/template/.hermes/skills/drawio/scripts/adapters/compose.js +0 -134
  1806. package/template/.hermes/skills/drawio/scripts/adapters/compose.test.js +0 -54
  1807. package/template/.hermes/skills/drawio/scripts/adapters/config-adapters.integration.test.js +0 -58
  1808. package/template/.hermes/skills/drawio/scripts/adapters/config-common.js +0 -131
  1809. package/template/.hermes/skills/drawio/scripts/adapters/config-common.test.js +0 -32
  1810. package/template/.hermes/skills/drawio/scripts/adapters/docker-inspect.js +0 -127
  1811. package/template/.hermes/skills/drawio/scripts/adapters/docker-inspect.test.js +0 -62
  1812. package/template/.hermes/skills/drawio/scripts/adapters/fixtures/raster-extraction.json +0 -31
  1813. package/template/.hermes/skills/drawio/scripts/adapters/go-code-adapter.test.js +0 -59
  1814. package/template/.hermes/skills/drawio/scripts/adapters/go-code.js +0 -168
  1815. package/template/.hermes/skills/drawio/scripts/adapters/graph-drift.file.test.js +0 -67
  1816. package/template/.hermes/skills/drawio/scripts/adapters/graph-drift.js +0 -358
  1817. package/template/.hermes/skills/drawio/scripts/adapters/graph-drift.test.js +0 -272
  1818. package/template/.hermes/skills/drawio/scripts/adapters/graph-projection.js +0 -335
  1819. package/template/.hermes/skills/drawio/scripts/adapters/graph-projection.test.js +0 -141
  1820. package/template/.hermes/skills/drawio/scripts/adapters/identity.js +0 -244
  1821. package/template/.hermes/skills/drawio/scripts/adapters/identity.test.js +0 -123
  1822. package/template/.hermes/skills/drawio/scripts/adapters/index.js +0 -489
  1823. package/template/.hermes/skills/drawio/scripts/adapters/index.test.js +0 -152
  1824. package/template/.hermes/skills/drawio/scripts/adapters/js-code-adapter.test.js +0 -42
  1825. package/template/.hermes/skills/drawio/scripts/adapters/js-code.js +0 -141
  1826. package/template/.hermes/skills/drawio/scripts/adapters/kubernetes-live.test.js +0 -46
  1827. package/template/.hermes/skills/drawio/scripts/adapters/kubernetes.js +0 -258
  1828. package/template/.hermes/skills/drawio/scripts/adapters/kubernetes.test.js +0 -81
  1829. package/template/.hermes/skills/drawio/scripts/adapters/openapi.js +0 -98
  1830. package/template/.hermes/skills/drawio/scripts/adapters/openapi.test.js +0 -46
  1831. package/template/.hermes/skills/drawio/scripts/adapters/optional-python-code.js +0 -16
  1832. package/template/.hermes/skills/drawio/scripts/adapters/optional-python.integration.test.js +0 -32
  1833. package/template/.hermes/skills/drawio/scripts/adapters/optional-python.js +0 -127
  1834. package/template/.hermes/skills/drawio/scripts/adapters/optional-python.test.js +0 -55
  1835. package/template/.hermes/skills/drawio/scripts/adapters/projection-to-spec.js +0 -116
  1836. package/template/.hermes/skills/drawio/scripts/adapters/projection-to-spec.test.js +0 -139
  1837. package/template/.hermes/skills/drawio/scripts/adapters/python/code-parser-worker.py +0 -93
  1838. package/template/.hermes/skills/drawio/scripts/adapters/python/config-parser-worker.py +0 -237
  1839. package/template/.hermes/skills/drawio/scripts/adapters/python/requirements.txt +0 -2
  1840. package/template/.hermes/skills/drawio/scripts/adapters/python-code-adapter.test.js +0 -127
  1841. package/template/.hermes/skills/drawio/scripts/adapters/python-code.js +0 -246
  1842. package/template/.hermes/skills/drawio/scripts/adapters/raster-extraction.js +0 -258
  1843. package/template/.hermes/skills/drawio/scripts/adapters/raster-extraction.test.js +0 -308
  1844. package/template/.hermes/skills/drawio/scripts/adapters/rust-code-adapter.test.js +0 -64
  1845. package/template/.hermes/skills/drawio/scripts/adapters/rust-code.js +0 -207
  1846. package/template/.hermes/skills/drawio/scripts/adapters/sql-ddl.js +0 -118
  1847. package/template/.hermes/skills/drawio/scripts/adapters/sql-ddl.test.js +0 -56
  1848. package/template/.hermes/skills/drawio/scripts/adapters/terraform-config.js +0 -141
  1849. package/template/.hermes/skills/drawio/scripts/adapters/terraform-config.test.js +0 -67
  1850. package/template/.hermes/skills/drawio/scripts/adapters/terraform-state.js +0 -157
  1851. package/template/.hermes/skills/drawio/scripts/adapters/terraform-state.test.js +0 -69
  1852. package/template/.hermes/skills/drawio/scripts/cli.js +0 -700
  1853. package/template/.hermes/skills/drawio/scripts/dsl/ah-to-drawio.js +0 -276
  1854. package/template/.hermes/skills/drawio/scripts/dsl/ah-to-drawio.test.js +0 -77
  1855. package/template/.hermes/skills/drawio/scripts/dsl/ai-icon-catalog.js +0 -126
  1856. package/template/.hermes/skills/drawio/scripts/dsl/ai-icon-catalog.test.js +0 -86
  1857. package/template/.hermes/skills/drawio/scripts/dsl/auto-layout.js +0 -206
  1858. package/template/.hermes/skills/drawio/scripts/dsl/auto-layout.test.js +0 -249
  1859. package/template/.hermes/skills/drawio/scripts/dsl/catalog-ranking.js +0 -54
  1860. package/template/.hermes/skills/drawio/scripts/dsl/catalog-search.js +0 -58
  1861. package/template/.hermes/skills/drawio/scripts/dsl/catalog-search.test.js +0 -44
  1862. package/template/.hermes/skills/drawio/scripts/dsl/document-spec.js +0 -256
  1863. package/template/.hermes/skills/drawio/scripts/dsl/document-spec.test.js +0 -147
  1864. package/template/.hermes/skills/drawio/scripts/dsl/drawio-to-spec.js +0 -497
  1865. package/template/.hermes/skills/drawio/scripts/dsl/examples-baseline.test.js +0 -30
  1866. package/template/.hermes/skills/drawio/scripts/dsl/icon-mappings.js +0 -65
  1867. package/template/.hermes/skills/drawio/scripts/dsl/icon-mappings.test.js +0 -19
  1868. package/template/.hermes/skills/drawio/scripts/dsl/icon-resolver.js +0 -153
  1869. package/template/.hermes/skills/drawio/scripts/dsl/icon-resolver.test.js +0 -62
  1870. package/template/.hermes/skills/drawio/scripts/dsl/multi-page.js +0 -224
  1871. package/template/.hermes/skills/drawio/scripts/dsl/multi-page.test.js +0 -107
  1872. package/template/.hermes/skills/drawio/scripts/dsl/palette-catalog.test.js +0 -138
  1873. package/template/.hermes/skills/drawio/scripts/dsl/palette-integration.test.js +0 -182
  1874. package/template/.hermes/skills/drawio/scripts/dsl/palette-validate.js +0 -91
  1875. package/template/.hermes/skills/drawio/scripts/dsl/palette.js +0 -302
  1876. package/template/.hermes/skills/drawio/scripts/dsl/palette.test.js +0 -197
  1877. package/template/.hermes/skills/drawio/scripts/dsl/shape-catalog.js +0 -89
  1878. package/template/.hermes/skills/drawio/scripts/dsl/shape-catalog.test.js +0 -21
  1879. package/template/.hermes/skills/drawio/scripts/dsl/spec-to-drawio.js +0 -3739
  1880. package/template/.hermes/skills/drawio/scripts/dsl/spec-to-drawio.test.js +0 -3022
  1881. package/template/.hermes/skills/drawio/scripts/generate-palette-swatches.js +0 -87
  1882. package/template/.hermes/skills/drawio/scripts/install.bat +0 -64
  1883. package/template/.hermes/skills/drawio/scripts/install.sh +0 -44
  1884. package/template/.hermes/skills/drawio/scripts/math/index.js +0 -317
  1885. package/template/.hermes/skills/drawio/scripts/math/index.test.js +0 -62
  1886. package/template/.hermes/skills/drawio/scripts/package.json +0 -1
  1887. package/template/.hermes/skills/drawio/scripts/postprocess/artifacts.js +0 -142
  1888. package/template/.hermes/skills/drawio/scripts/postprocess/artifacts.test.js +0 -86
  1889. package/template/.hermes/skills/drawio/scripts/postprocess/cli.js +0 -228
  1890. package/template/.hermes/skills/drawio/scripts/postprocess/cli.test.js +0 -129
  1891. package/template/.hermes/skills/drawio/scripts/postprocess/fixtures/bundle.yaml +0 -75
  1892. package/template/.hermes/skills/drawio/scripts/postprocess/fixtures/legacy.yaml +0 -21
  1893. package/template/.hermes/skills/drawio/scripts/postprocess/html.js +0 -197
  1894. package/template/.hermes/skills/drawio/scripts/postprocess/html.test.js +0 -50
  1895. package/template/.hermes/skills/drawio/scripts/postprocess/index.js +0 -5
  1896. package/template/.hermes/skills/drawio/scripts/postprocess/input.js +0 -112
  1897. package/template/.hermes/skills/drawio/scripts/postprocess/input.test.js +0 -73
  1898. package/template/.hermes/skills/drawio/scripts/postprocess/mutate.js +0 -584
  1899. package/template/.hermes/skills/drawio/scripts/postprocess/mutate.test.js +0 -193
  1900. package/template/.hermes/skills/drawio/scripts/postprocess/projection.js +0 -178
  1901. package/template/.hermes/skills/drawio/scripts/postprocess/projection.test.js +0 -67
  1902. package/template/.hermes/skills/drawio/scripts/runtime/artifacts.js +0 -283
  1903. package/template/.hermes/skills/drawio/scripts/runtime/desktop.js +0 -204
  1904. package/template/.hermes/skills/drawio/scripts/runtime/desktop.test.js +0 -121
  1905. package/template/.hermes/skills/drawio/scripts/runtime/diagrams-net-url.js +0 -122
  1906. package/template/.hermes/skills/drawio/scripts/runtime/export-stability.js +0 -75
  1907. package/template/.hermes/skills/drawio/scripts/runtime/export-stability.test.js +0 -81
  1908. package/template/.hermes/skills/drawio/scripts/runtime/png-inspection.js +0 -157
  1909. package/template/.hermes/skills/drawio/scripts/runtime/png-inspection.test.js +0 -120
  1910. package/template/.hermes/skills/drawio/scripts/runtime/vision-preview.js +0 -77
  1911. package/template/.hermes/skills/drawio/scripts/runtime/vision-preview.test.js +0 -103
  1912. package/template/.hermes/skills/drawio/scripts/shared/ai-icon-contract.js +0 -13
  1913. package/template/.hermes/skills/drawio/scripts/shared/xml-utils.js +0 -241
  1914. package/template/.hermes/skills/drawio/scripts/svg/drawio-to-svg.js +0 -918
  1915. package/template/.hermes/skills/drawio/scripts/svg/drawio-to-svg.test.js +0 -763
  1916. package/template/.hermes/skills/drawio/scripts/tools/build-ai-icon-catalog.js +0 -208
  1917. package/template/.hermes/skills/drawio/scripts/tools/build-ai-icon-catalog.test.js +0 -107
  1918. package/template/.hermes/skills/drawio/scripts/tools/build-shape-catalog.js +0 -84
  1919. package/template/.hermes/skills/drawio/scripts/tools/build-shape-catalog.test.js +0 -43
  1920. package/template/.hermes/skills/drawio/scripts/tools/fixtures/ai-icons-package/icons/alpha-color.svg +0 -1
  1921. package/template/.hermes/skills/drawio/scripts/tools/fixtures/ai-icons-package/icons/alpha.svg +0 -1
  1922. package/template/.hermes/skills/drawio/scripts/tools/fixtures/ai-icons-package/icons/beta-brand-color.svg +0 -1
  1923. package/template/.hermes/skills/drawio/scripts/tools/fixtures/ai-icons-package/icons/beta.svg +0 -1
  1924. package/template/.hermes/skills/drawio/scripts/tools/fixtures/ai-icons-package/icons/civitai-text-color.svg +0 -1
  1925. package/template/.hermes/skills/drawio/scripts/tools/fixtures/ai-icons-package/icons/civitai.svg +0 -1
  1926. package/template/.hermes/skills/drawio/scripts/tools/fixtures/ai-icons-package/package.json +0 -5
  1927. package/template/.hermes/skills/drawio/scripts/vendor/elkjs/LICENSE.md +0 -264
  1928. package/template/.hermes/skills/drawio/scripts/vendor/elkjs/README.md +0 -18
  1929. package/template/.hermes/skills/drawio/scripts/vendor/elkjs/elk.bundled.cjs +0 -6589
  1930. package/template/.hermes/skills/drawio/styles/built-in/corporate.json +0 -49
  1931. package/template/.hermes/skills/drawio/styles/built-in/default.json +0 -49
  1932. package/template/.hermes/skills/drawio/styles/built-in/handdrawn.json +0 -49
  1933. package/template/.hermes/skills/drawio/styles/schema.json +0 -112
  1934. package/template/.hermes/skills/drawio-academic-skills/CHANGELOG.md +0 -67
  1935. package/template/.hermes/skills/drawio-academic-skills/README.md +0 -103
  1936. package/template/.hermes/skills/drawio-academic-skills/README_CN.md +0 -103
  1937. package/template/.hermes/skills/drawio-academic-skills/SKILL.md +0 -161
  1938. package/template/.hermes/skills/drawio-academic-skills/__yss_dotfile__.gitignore +0 -12
  1939. package/template/.hermes/skills/drawio-academic-skills/agents/interface.yaml +0 -25
  1940. package/template/.hermes/skills/drawio-academic-skills/agents/openai.yaml +0 -24
  1941. package/template/.hermes/skills/drawio-academic-skills/evals/README.md +0 -13
  1942. package/template/.hermes/skills/drawio-academic-skills/evals/baseline-prompts.json +0 -52
  1943. package/template/.hermes/skills/drawio-academic-skills/evals/darwin-results.tsv +0 -3
  1944. package/template/.hermes/skills/drawio-academic-skills/evals/evals.json +0 -228
  1945. package/template/.hermes/skills/drawio-academic-skills/evals/test-prompts.json +0 -17
  1946. package/template/.hermes/skills/drawio-academic-skills/references/docs/academic-export-checklist.md +0 -45
  1947. package/template/.hermes/skills/drawio-academic-skills/references/docs/academic-figure-playbook.md +0 -349
  1948. package/template/.hermes/skills/drawio-academic-skills/references/docs/publication-overlay.md +0 -206
  1949. package/template/.hermes/skills/drawio-academic-skills/references/examples/ablation-study-pipeline.yaml +0 -39
  1950. package/template/.hermes/skills/drawio-academic-skills/references/examples/ieee-network-paper.yaml +0 -44
  1951. package/template/.hermes/skills/drawio-academic-skills/references/examples/industrial-architecture-cn-paper.yaml +0 -106
  1952. package/template/.hermes/skills/drawio-academic-skills/references/examples/max-pooling-operation-paper.yaml +0 -75
  1953. package/template/.hermes/skills/drawio-academic-skills/references/examples/research-pipeline.yaml +0 -54
  1954. package/template/.hermes/skills/drawio-academic-skills/references/examples/system-architecture-paper.yaml +0 -45
  1955. package/template/.hermes/skills/drawio-academic-skills/references/examples/technical-roadmap-paper.yaml +0 -54
  1956. package/template/.hermes/skills/drawio-academic-skills/references/examples/yolo-model-architecture-paper.yaml +0 -118
  1957. package/template/.hermes/skills/drawio-academic-skills/references/templates/multi-module-system-compact.yaml +0 -251
  1958. package/template/.hermes/skills/drawio-academic-skills/references/templates/neural-network-architecture-compact.yaml +0 -267
  1959. package/template/.hermes/skills/excalidraw-diagram-generator/SKILL.md +0 -634
  1960. package/template/.hermes/skills/excalidraw-diagram-generator/references/element-types.md +0 -497
  1961. package/template/.hermes/skills/excalidraw-diagram-generator/references/excalidraw-schema.md +0 -350
  1962. package/template/.hermes/skills/excalidraw-diagram-generator/scripts/README.md +0 -193
  1963. package/template/.hermes/skills/excalidraw-diagram-generator/scripts/__yss_dotfile__.gitignore +0 -34
  1964. package/template/.hermes/skills/excalidraw-diagram-generator/scripts/add-arrow.py +0 -315
  1965. package/template/.hermes/skills/excalidraw-diagram-generator/scripts/add-icon-to-diagram.py +0 -406
  1966. package/template/.hermes/skills/excalidraw-diagram-generator/scripts/split-excalidraw-library.py +0 -183
  1967. package/template/.hermes/skills/excalidraw-diagram-generator/templates/business-flow-swimlane-template.excalidraw +0 -334
  1968. package/template/.hermes/skills/excalidraw-diagram-generator/templates/class-diagram-template.excalidraw +0 -558
  1969. package/template/.hermes/skills/excalidraw-diagram-generator/templates/data-flow-diagram-template.excalidraw +0 -279
  1970. package/template/.hermes/skills/excalidraw-diagram-generator/templates/er-diagram-template.excalidraw +0 -662
  1971. package/template/.hermes/skills/excalidraw-diagram-generator/templates/flowchart-template.excalidraw +0 -179
  1972. package/template/.hermes/skills/excalidraw-diagram-generator/templates/mindmap-template.excalidraw +0 -244
  1973. package/template/.hermes/skills/excalidraw-diagram-generator/templates/relationship-template.excalidraw +0 -145
  1974. package/template/.hermes/skills/excalidraw-diagram-generator/templates/sequence-diagram-template.excalidraw +0 -509
  1975. package/template/.hermes/skills/kb-retriever/README.md +0 -197
  1976. package/template/.hermes/skills/kb-retriever/README.zh-CN.md +0 -197
  1977. package/template/.hermes/skills/kb-retriever/SKILL.md +0 -250
  1978. package/template/.hermes/skills/kb-retriever/manifest.json +0 -15
  1979. package/template/.hermes/skills/kb-retriever/references/excel_analysis.md +0 -129
  1980. package/template/.hermes/skills/kb-retriever/references/excel_reading.md +0 -72
  1981. package/template/.hermes/skills/kb-retriever/references/pdf_reading.md +0 -362
  1982. package/template/.hermes/skills/kb-retriever/scripts/convert_pdf_to_images.py +0 -35
  1983. package/template/.hermes/skills/yss-db2mybatis/requirements.txt +0 -4
  1984. package/template/.hermes/skills/yss-db2mybatis/scripts/db2mybatis.py +0 -1494
  1985. package/template/.hermes/skills/yss-ddd-scaffold-generator/scripts/generate_scaffold.py +0 -728
  1986. package/template/.hermes/skills/yss-ddd-scaffold-generator/scripts/run_scaffold_verification.py +0 -155
  1987. package/template/.hermes/skills/yss-design-system/scripts/validate-frontmatter.py +0 -50
  1988. package/template/.hermes/skills/yss-source-index/scripts/refresh-yss-skill-index.py +0 -371
  1989. package/template/.hermes/skills/yss-web-controller/scripts/generate_controller.py +0 -293
  1990. package/template/.hermes/skills/yss-web-controller/scripts/test_generate_controller.py +0 -68
  1991. package/template/.pi/skills/beautiful-article/README.md +0 -450
  1992. package/template/.pi/skills/beautiful-article/README.zh-CN.md +0 -450
  1993. package/template/.pi/skills/beautiful-article/SKILL.md +0 -466
  1994. package/template/.pi/skills/beautiful-article/assets/scaffold-template/__yss_dotfile__.npmrc +0 -1
  1995. package/template/.pi/skills/beautiful-article/assets/scaffold-template/article/Article.tsx +0 -69
  1996. package/template/.pi/skills/beautiful-article/assets/scaffold-template/article/Cover.tsx +0 -172
  1997. package/template/.pi/skills/beautiful-article/assets/scaffold-template/article/main.tsx +0 -26
  1998. package/template/.pi/skills/beautiful-article/assets/scaffold-template/article/sections/01-opening.tsx +0 -30
  1999. package/template/.pi/skills/beautiful-article/assets/scaffold-template/index.html +0 -19
  2000. package/template/.pi/skills/beautiful-article/assets/scaffold-template/package.json +0 -26
  2001. package/template/.pi/skills/beautiful-article/assets/scaffold-template/tsconfig.json +0 -20
  2002. package/template/.pi/skills/beautiful-article/assets/scaffold-template/tsconfig.node.json +0 -11
  2003. package/template/.pi/skills/beautiful-article/assets/scaffold-template/vite.config.ts +0 -18
  2004. package/template/.pi/skills/beautiful-article/manifest.json +0 -15
  2005. package/template/.pi/skills/beautiful-article/references/article-types/briefing.md +0 -32
  2006. package/template/.pi/skills/beautiful-article/references/article-types/dialogue.md +0 -30
  2007. package/template/.pi/skills/beautiful-article/references/article-types/essay.md +0 -31
  2008. package/template/.pi/skills/beautiful-article/references/article-types/explainer.md +0 -32
  2009. package/template/.pi/skills/beautiful-article/references/article-types/full-report.md +0 -32
  2010. package/template/.pi/skills/beautiful-article/references/article-types/interactive-explainer.md +0 -66
  2011. package/template/.pi/skills/beautiful-article/references/article-types/longform.md +0 -32
  2012. package/template/.pi/skills/beautiful-article/references/article-types/review.md +0 -32
  2013. package/template/.pi/skills/beautiful-article/references/article-types/tutorial.md +0 -30
  2014. package/template/.pi/skills/beautiful-article/references/article-types/visual-essay.md +0 -33
  2015. package/template/.pi/skills/beautiful-article/references/article-types.md +0 -42
  2016. package/template/.pi/skills/beautiful-article/references/asset-policy.md +0 -71
  2017. package/template/.pi/skills/beautiful-article/references/component-policy.md +0 -103
  2018. package/template/.pi/skills/beautiful-article/references/cover.md +0 -208
  2019. package/template/.pi/skills/beautiful-article/references/harness.md +0 -35
  2020. package/template/.pi/skills/beautiful-article/references/html-output.md +0 -42
  2021. package/template/.pi/skills/beautiful-article/references/information-density.md +0 -50
  2022. package/template/.pi/skills/beautiful-article/references/layout.md +0 -46
  2023. package/template/.pi/skills/beautiful-article/references/pdf-output.md +0 -208
  2024. package/template/.pi/skills/beautiful-article/references/plan-template.md +0 -109
  2025. package/template/.pi/skills/beautiful-article/references/raw-policy.md +0 -86
  2026. package/template/.pi/skills/beautiful-article/references/repair-policy.md +0 -35
  2027. package/template/.pi/skills/beautiful-article/references/review-checklist.md +0 -133
  2028. package/template/.pi/skills/beautiful-article/references/scaffold.md +0 -77
  2029. package/template/.pi/skills/beautiful-article/references/section-build.md +0 -100
  2030. package/template/.pi/skills/beautiful-article/references/source-to-markdown.md +0 -118
  2031. package/template/.pi/skills/beautiful-article/references/theme-selection.md +0 -48
  2032. package/template/.pi/skills/beautiful-article/scripts/html-to-pdf.sh +0 -160
  2033. package/template/.pi/skills/beautiful-article/scripts/pdf-print-overrides.css +0 -192
  2034. package/template/.pi/skills/beautiful-article/scripts/scaffold.sh +0 -172
  2035. package/template/.pi/skills/beautiful-article/scripts/source-to-markdown-markitdown.py +0 -100
  2036. package/template/.pi/skills/beautiful-article/scripts/source-to-markdown.py +0 -174
  2037. package/template/.pi/skills/beautiful-article/theme-profiles/andy.md +0 -57
  2038. package/template/.pi/skills/beautiful-article/theme-profiles/bayer.md +0 -57
  2039. package/template/.pi/skills/beautiful-article/theme-profiles/bodoni.md +0 -57
  2040. package/template/.pi/skills/beautiful-article/theme-profiles/freddie.md +0 -57
  2041. package/template/.pi/skills/beautiful-article/theme-profiles/fuller.md +0 -56
  2042. package/template/.pi/skills/beautiful-article/theme-profiles/index.json +0 -112
  2043. package/template/.pi/skills/beautiful-article/theme-profiles/knuth.md +0 -60
  2044. package/template/.pi/skills/beautiful-article/theme-profiles/press.md +0 -61
  2045. package/template/.pi/skills/beautiful-article/theme-profiles/shannon.md +0 -64
  2046. package/template/.pi/skills/beautiful-article/theme-profiles/sottsass.md +0 -57
  2047. package/template/.pi/skills/beautiful-article/theme-profiles/tufte.md +0 -64
  2048. package/template/.pi/skills/beautiful-article/theme-profiles/vignelli.md +0 -63
  2049. package/template/.pi/skills/drawio/.mcp.json +0 -8
  2050. package/template/.pi/skills/drawio/CHANGELOG.md +0 -216
  2051. package/template/.pi/skills/drawio/SKILL.md +0 -157
  2052. package/template/.pi/skills/drawio/agents/interface.yaml +0 -26
  2053. package/template/.pi/skills/drawio/agents/openai.yaml +0 -26
  2054. package/template/.pi/skills/drawio/assets/catalog/ai-icons.json.gz +0 -0
  2055. package/template/.pi/skills/drawio/assets/catalog/shape-catalog.json.gz +0 -0
  2056. package/template/.pi/skills/drawio/assets/catalog/shape-index.json.gz +0 -0
  2057. package/template/.pi/skills/drawio/assets/examples/login-flow-test.drawio +0 -6
  2058. package/template/.pi/skills/drawio/assets/examples/login-flow.drawio +0 -6
  2059. package/template/.pi/skills/drawio/assets/examples/microservices.drawio +0 -6
  2060. package/template/.pi/skills/drawio/assets/examples/neural-network.drawio +0 -6
  2061. package/template/.pi/skills/drawio/assets/licenses/architecture-diagram-generator-MIT.txt +0 -26
  2062. package/template/.pi/skills/drawio/assets/licenses/drawio-mcp-shape-index-Apache-2.0.txt +0 -8
  2063. package/template/.pi/skills/drawio/assets/licenses/lobe-icons-MIT.txt +0 -26
  2064. package/template/.pi/skills/drawio/assets/licenses/lucide-ISC.txt +0 -41
  2065. package/template/.pi/skills/drawio/assets/palettes/c4-blue.json +0 -29
  2066. package/template/.pi/skills/drawio/assets/palettes/cloud-aws.json +0 -30
  2067. package/template/.pi/skills/drawio/assets/palettes/drawio-classic.json +0 -21
  2068. package/template/.pi/skills/drawio/assets/palettes/ieee-bw.json +0 -26
  2069. package/template/.pi/skills/drawio/assets/palettes/ieee-color.json +0 -17
  2070. package/template/.pi/skills/drawio/assets/palettes/journal-jama.json +0 -20
  2071. package/template/.pi/skills/drawio/assets/palettes/journal-npg.json +0 -23
  2072. package/template/.pi/skills/drawio/assets/palettes/matlab-lines.json +0 -20
  2073. package/template/.pi/skills/drawio/assets/palettes/morandi.json +0 -21
  2074. package/template/.pi/skills/drawio/assets/palettes/okabe-ito.json +0 -21
  2075. package/template/.pi/skills/drawio/assets/palettes/seaborn-colorblind.json +0 -23
  2076. package/template/.pi/skills/drawio/assets/palettes/tol-bright.json +0 -20
  2077. package/template/.pi/skills/drawio/assets/palettes/tol-high-contrast.json +0 -18
  2078. package/template/.pi/skills/drawio/assets/palettes/tol-light-fill.json +0 -22
  2079. package/template/.pi/skills/drawio/assets/palettes/tol-muted.json +0 -22
  2080. package/template/.pi/skills/drawio/assets/schemas/graph-projection.schema.json +0 -135
  2081. package/template/.pi/skills/drawio/assets/schemas/spec.schema.json +0 -620
  2082. package/template/.pi/skills/drawio/assets/themes/academic-color.json +0 -299
  2083. package/template/.pi/skills/drawio/assets/themes/academic.json +0 -245
  2084. package/template/.pi/skills/drawio/assets/themes/arch-dark.json +0 -253
  2085. package/template/.pi/skills/drawio/assets/themes/blueprint.json +0 -246
  2086. package/template/.pi/skills/drawio/assets/themes/dark-luxury.json +0 -246
  2087. package/template/.pi/skills/drawio/assets/themes/dark-terminal.json +0 -244
  2088. package/template/.pi/skills/drawio/assets/themes/dark.json +0 -220
  2089. package/template/.pi/skills/drawio/assets/themes/high-contrast.json +0 -220
  2090. package/template/.pi/skills/drawio/assets/themes/nature.json +0 -220
  2091. package/template/.pi/skills/drawio/assets/themes/notion-clean.json +0 -246
  2092. package/template/.pi/skills/drawio/assets/themes/tech-blue.json +0 -220
  2093. package/template/.pi/skills/drawio/evals/README.md +0 -17
  2094. package/template/.pi/skills/drawio/evals/ai-icon-catalog-cases.json +0 -89
  2095. package/template/.pi/skills/drawio/evals/baseline-prompts.json +0 -122
  2096. package/template/.pi/skills/drawio/evals/darwin-results.tsv +0 -4
  2097. package/template/.pi/skills/drawio/evals/evals.json +0 -223
  2098. package/template/.pi/skills/drawio/evals/evidence/ai-icon-catalog-desktop.json +0 -134
  2099. package/template/.pi/skills/drawio/evals/fixtures/ai-icons-advanced-svg.yaml +0 -25
  2100. package/template/.pi/skills/drawio/evals/fixtures/ai-icons-cjk-agent-rag.yaml +0 -55
  2101. package/template/.pi/skills/drawio/evals/fixtures/ai-icons-core-aliases.yaml +0 -50
  2102. package/template/.pi/skills/drawio/evals/fixtures/ai-icons-current-color.yaml +0 -25
  2103. package/template/.pi/skills/drawio/evals/fixtures/ai-icons-gradients.yaml +0 -25
  2104. package/template/.pi/skills/drawio/evals/fixtures/import-simple-compressed.drawio +0 -5
  2105. package/template/.pi/skills/drawio/evals/fixtures/import-simple.drawio +0 -28
  2106. package/template/.pi/skills/drawio/evals/fixtures/industrial-architecture.yaml +0 -239
  2107. package/template/.pi/skills/drawio/evals/fixtures/replicate-academic-highlight.svg +0 -13
  2108. package/template/.pi/skills/drawio/evals/fixtures/replicate-brand-architecture.svg +0 -14
  2109. package/template/.pi/skills/drawio/evals/fixtures/replicate-warm-approval.svg +0 -13
  2110. package/template/.pi/skills/drawio/evals/fixtures/vision-tall-workflow.yaml +0 -47
  2111. package/template/.pi/skills/drawio/evals/upstream-integration-cases.json +0 -78
  2112. package/template/.pi/skills/drawio/evals/vision-preview-cases.json +0 -147
  2113. package/template/.pi/skills/drawio/references/docs/agent-diagrams.md +0 -164
  2114. package/template/.pi/skills/drawio/references/docs/ah-format.md +0 -322
  2115. package/template/.pi/skills/drawio/references/docs/architecture-diagrams.md +0 -159
  2116. package/template/.pi/skills/drawio/references/docs/canonical-graph-projection.md +0 -54
  2117. package/template/.pi/skills/drawio/references/docs/code-importers.md +0 -53
  2118. package/template/.pi/skills/drawio/references/docs/config-importers.md +0 -68
  2119. package/template/.pi/skills/drawio/references/docs/design-system/README.md +0 -204
  2120. package/template/.pi/skills/drawio/references/docs/design-system/color-guide.md +0 -255
  2121. package/template/.pi/skills/drawio/references/docs/design-system/connectors.md +0 -388
  2122. package/template/.pi/skills/drawio/references/docs/design-system/formulas.md +0 -196
  2123. package/template/.pi/skills/drawio/references/docs/design-system/icons.md +0 -332
  2124. package/template/.pi/skills/drawio/references/docs/design-system/shapes.md +0 -269
  2125. package/template/.pi/skills/drawio/references/docs/design-system/specification.md +0 -754
  2126. package/template/.pi/skills/drawio/references/docs/design-system/themes.md +0 -441
  2127. package/template/.pi/skills/drawio/references/docs/design-system/tokens.md +0 -232
  2128. package/template/.pi/skills/drawio/references/docs/edge-quality-rules.md +0 -65
  2129. package/template/.pi/skills/drawio/references/docs/ieee-network-diagrams.md +0 -145
  2130. package/template/.pi/skills/drawio/references/docs/live-snapshots-drift.md +0 -72
  2131. package/template/.pi/skills/drawio/references/docs/math-typesetting.md +0 -258
  2132. package/template/.pi/skills/drawio/references/docs/mcp-tools.md +0 -85
  2133. package/template/.pi/skills/drawio/references/docs/migration-readiness.md +0 -73
  2134. package/template/.pi/skills/drawio/references/docs/stencil-library-guide.md +0 -97
  2135. package/template/.pi/skills/drawio/references/docs/style-extraction.md +0 -261
  2136. package/template/.pi/skills/drawio/references/docs/style-presets.md +0 -126
  2137. package/template/.pi/skills/drawio/references/docs/upstream-capability-compatibility.md +0 -61
  2138. package/template/.pi/skills/drawio/references/docs/xml-format.md +0 -53
  2139. package/template/.pi/skills/drawio/references/examples/README.md +0 -33
  2140. package/template/.pi/skills/drawio/references/examples/agentic-rag.yaml +0 -71
  2141. package/template/.pi/skills/drawio/references/examples/arch-dark-aws-serverless.yaml +0 -103
  2142. package/template/.pi/skills/drawio/references/examples/arch-dark-microservices.yaml +0 -146
  2143. package/template/.pi/skills/drawio/references/examples/arch-dark-web-app.yaml +0 -62
  2144. package/template/.pi/skills/drawio/references/examples/auto-layout-workflow.yaml +0 -81
  2145. package/template/.pi/skills/drawio/references/examples/aws-vpc-topology.yaml +0 -66
  2146. package/template/.pi/skills/drawio/references/examples/campus-lan-topology.yaml +0 -89
  2147. package/template/.pi/skills/drawio/references/examples/cloud-reference-architecture.yaml +0 -34
  2148. package/template/.pi/skills/drawio/references/examples/e-commerce.yaml +0 -141
  2149. package/template/.pi/skills/drawio/references/examples/importers/README.md +0 -10
  2150. package/template/.pi/skills/drawio/references/examples/importers/live/compose-drift-evidence.json +0 -49
  2151. package/template/.pi/skills/drawio/references/examples/importers/live/compose-drift-report.json +0 -300
  2152. package/template/.pi/skills/drawio/references/examples/importers/live/compose-drift.spec.yaml +0 -75
  2153. package/template/.pi/skills/drawio/references/examples/importers/live/docker-inspect.json +0 -55
  2154. package/template/.pi/skills/drawio/references/examples/importers/live/drift-declared-compose.yaml +0 -13
  2155. package/template/.pi/skills/drawio/references/examples/importers/live/kubernetes-live.json +0 -71
  2156. package/template/.pi/skills/drawio/references/examples/importers/live/terraform-state.json +0 -70
  2157. package/template/.pi/skills/drawio/references/examples/importers/schema.sql +0 -10
  2158. package/template/.pi/skills/drawio/references/examples/importers/terraform.tf +0 -9
  2159. package/template/.pi/skills/drawio/references/examples/login-flow.yaml +0 -65
  2160. package/template/.pi/skills/drawio/references/examples/mem0-memory-layer.yaml +0 -63
  2161. package/template/.pi/skills/drawio/references/examples/microservices.yaml +0 -58
  2162. package/template/.pi/skills/drawio/references/examples/multi-agent-orchestration.yaml +0 -67
  2163. package/template/.pi/skills/drawio/references/examples/neural-network.yaml +0 -66
  2164. package/template/.pi/skills/drawio/references/examples/onprem-dmz-topology.yaml +0 -62
  2165. package/template/.pi/skills/drawio/references/examples/palettes/README.md +0 -29
  2166. package/template/.pi/skills/drawio/references/examples/palettes/c4-blue.drawio +0 -6
  2167. package/template/.pi/skills/drawio/references/examples/palettes/c4-blue.svg +0 -36
  2168. package/template/.pi/skills/drawio/references/examples/palettes/cloud-aws.drawio +0 -6
  2169. package/template/.pi/skills/drawio/references/examples/palettes/cloud-aws.svg +0 -36
  2170. package/template/.pi/skills/drawio/references/examples/palettes/drawio-classic.drawio +0 -6
  2171. package/template/.pi/skills/drawio/references/examples/palettes/drawio-classic.svg +0 -36
  2172. package/template/.pi/skills/drawio/references/examples/palettes/ieee-bw.drawio +0 -6
  2173. package/template/.pi/skills/drawio/references/examples/palettes/ieee-bw.svg +0 -36
  2174. package/template/.pi/skills/drawio/references/examples/palettes/ieee-color.drawio +0 -6
  2175. package/template/.pi/skills/drawio/references/examples/palettes/ieee-color.svg +0 -36
  2176. package/template/.pi/skills/drawio/references/examples/palettes/journal-jama.drawio +0 -6
  2177. package/template/.pi/skills/drawio/references/examples/palettes/journal-jama.svg +0 -36
  2178. package/template/.pi/skills/drawio/references/examples/palettes/journal-npg.drawio +0 -6
  2179. package/template/.pi/skills/drawio/references/examples/palettes/journal-npg.svg +0 -36
  2180. package/template/.pi/skills/drawio/references/examples/palettes/matlab-lines.drawio +0 -6
  2181. package/template/.pi/skills/drawio/references/examples/palettes/matlab-lines.svg +0 -36
  2182. package/template/.pi/skills/drawio/references/examples/palettes/morandi.drawio +0 -6
  2183. package/template/.pi/skills/drawio/references/examples/palettes/morandi.svg +0 -36
  2184. package/template/.pi/skills/drawio/references/examples/palettes/okabe-ito.drawio +0 -6
  2185. package/template/.pi/skills/drawio/references/examples/palettes/okabe-ito.svg +0 -36
  2186. package/template/.pi/skills/drawio/references/examples/palettes/palette-swatch.template.yaml +0 -56
  2187. package/template/.pi/skills/drawio/references/examples/palettes/seaborn-colorblind.drawio +0 -6
  2188. package/template/.pi/skills/drawio/references/examples/palettes/seaborn-colorblind.svg +0 -36
  2189. package/template/.pi/skills/drawio/references/examples/palettes/tol-bright.drawio +0 -6
  2190. package/template/.pi/skills/drawio/references/examples/palettes/tol-bright.svg +0 -36
  2191. package/template/.pi/skills/drawio/references/examples/palettes/tol-high-contrast.drawio +0 -6
  2192. package/template/.pi/skills/drawio/references/examples/palettes/tol-high-contrast.svg +0 -36
  2193. package/template/.pi/skills/drawio/references/examples/palettes/tol-light-fill.drawio +0 -6
  2194. package/template/.pi/skills/drawio/references/examples/palettes/tol-light-fill.svg +0 -36
  2195. package/template/.pi/skills/drawio/references/examples/palettes/tol-muted.drawio +0 -6
  2196. package/template/.pi/skills/drawio/references/examples/palettes/tol-muted.svg +0 -36
  2197. package/template/.pi/skills/drawio/references/examples/rag-pipeline.yaml +0 -67
  2198. package/template/.pi/skills/drawio/references/examples/replicated-brand-flow.yaml +0 -89
  2199. package/template/.pi/skills/drawio/references/examples/swimlane-engineering-review.yaml +0 -44
  2200. package/template/.pi/skills/drawio/references/examples/tiered-network-topology.yaml +0 -59
  2201. package/template/.pi/skills/drawio/references/examples/tool-call-loop.yaml +0 -63
  2202. package/template/.pi/skills/drawio/references/examples/vendor-device-mapping.yaml +0 -46
  2203. package/template/.pi/skills/drawio/references/official/style-reference.md +0 -936
  2204. package/template/.pi/skills/drawio/references/official/xml-reference.md +0 -262
  2205. package/template/.pi/skills/drawio/references/palette.schema.json +0 -59
  2206. package/template/.pi/skills/drawio/references/theme.schema.json +0 -249
  2207. package/template/.pi/skills/drawio/references/upstream/pure-drawio-skill.md +0 -615
  2208. package/template/.pi/skills/drawio/references/workflows/create.md +0 -195
  2209. package/template/.pi/skills/drawio/references/workflows/edit.md +0 -174
  2210. package/template/.pi/skills/drawio/references/workflows/replicate.md +0 -239
  2211. package/template/.pi/skills/drawio/references/workflows/visual-review.md +0 -108
  2212. package/template/.pi/skills/drawio/reports/output_quality_scorecard.md +0 -106
  2213. package/template/.pi/skills/drawio/reports/upstream-port-release-evidence.md +0 -43
  2214. package/template/.pi/skills/drawio/scripts/adapters/ci.js +0 -139
  2215. package/template/.pi/skills/drawio/scripts/adapters/ci.test.js +0 -41
  2216. package/template/.pi/skills/drawio/scripts/adapters/code-common.js +0 -171
  2217. package/template/.pi/skills/drawio/scripts/adapters/code-imports.test.js +0 -80
  2218. package/template/.pi/skills/drawio/scripts/adapters/code-parsers.integration.test.js +0 -71
  2219. package/template/.pi/skills/drawio/scripts/adapters/compose.js +0 -134
  2220. package/template/.pi/skills/drawio/scripts/adapters/compose.test.js +0 -54
  2221. package/template/.pi/skills/drawio/scripts/adapters/config-adapters.integration.test.js +0 -58
  2222. package/template/.pi/skills/drawio/scripts/adapters/config-common.js +0 -131
  2223. package/template/.pi/skills/drawio/scripts/adapters/config-common.test.js +0 -32
  2224. package/template/.pi/skills/drawio/scripts/adapters/docker-inspect.js +0 -127
  2225. package/template/.pi/skills/drawio/scripts/adapters/docker-inspect.test.js +0 -62
  2226. package/template/.pi/skills/drawio/scripts/adapters/fixtures/raster-extraction.json +0 -31
  2227. package/template/.pi/skills/drawio/scripts/adapters/go-code-adapter.test.js +0 -59
  2228. package/template/.pi/skills/drawio/scripts/adapters/go-code.js +0 -168
  2229. package/template/.pi/skills/drawio/scripts/adapters/graph-drift.file.test.js +0 -67
  2230. package/template/.pi/skills/drawio/scripts/adapters/graph-drift.js +0 -358
  2231. package/template/.pi/skills/drawio/scripts/adapters/graph-drift.test.js +0 -272
  2232. package/template/.pi/skills/drawio/scripts/adapters/graph-projection.js +0 -335
  2233. package/template/.pi/skills/drawio/scripts/adapters/graph-projection.test.js +0 -141
  2234. package/template/.pi/skills/drawio/scripts/adapters/identity.js +0 -244
  2235. package/template/.pi/skills/drawio/scripts/adapters/identity.test.js +0 -123
  2236. package/template/.pi/skills/drawio/scripts/adapters/index.js +0 -489
  2237. package/template/.pi/skills/drawio/scripts/adapters/index.test.js +0 -152
  2238. package/template/.pi/skills/drawio/scripts/adapters/js-code-adapter.test.js +0 -42
  2239. package/template/.pi/skills/drawio/scripts/adapters/js-code.js +0 -141
  2240. package/template/.pi/skills/drawio/scripts/adapters/kubernetes-live.test.js +0 -46
  2241. package/template/.pi/skills/drawio/scripts/adapters/kubernetes.js +0 -258
  2242. package/template/.pi/skills/drawio/scripts/adapters/kubernetes.test.js +0 -81
  2243. package/template/.pi/skills/drawio/scripts/adapters/openapi.js +0 -98
  2244. package/template/.pi/skills/drawio/scripts/adapters/openapi.test.js +0 -46
  2245. package/template/.pi/skills/drawio/scripts/adapters/optional-python-code.js +0 -16
  2246. package/template/.pi/skills/drawio/scripts/adapters/optional-python.integration.test.js +0 -32
  2247. package/template/.pi/skills/drawio/scripts/adapters/optional-python.js +0 -127
  2248. package/template/.pi/skills/drawio/scripts/adapters/optional-python.test.js +0 -55
  2249. package/template/.pi/skills/drawio/scripts/adapters/projection-to-spec.js +0 -116
  2250. package/template/.pi/skills/drawio/scripts/adapters/projection-to-spec.test.js +0 -139
  2251. package/template/.pi/skills/drawio/scripts/adapters/python/code-parser-worker.py +0 -93
  2252. package/template/.pi/skills/drawio/scripts/adapters/python/config-parser-worker.py +0 -237
  2253. package/template/.pi/skills/drawio/scripts/adapters/python/requirements.txt +0 -2
  2254. package/template/.pi/skills/drawio/scripts/adapters/python-code-adapter.test.js +0 -127
  2255. package/template/.pi/skills/drawio/scripts/adapters/python-code.js +0 -246
  2256. package/template/.pi/skills/drawio/scripts/adapters/raster-extraction.js +0 -258
  2257. package/template/.pi/skills/drawio/scripts/adapters/raster-extraction.test.js +0 -308
  2258. package/template/.pi/skills/drawio/scripts/adapters/rust-code-adapter.test.js +0 -64
  2259. package/template/.pi/skills/drawio/scripts/adapters/rust-code.js +0 -207
  2260. package/template/.pi/skills/drawio/scripts/adapters/sql-ddl.js +0 -118
  2261. package/template/.pi/skills/drawio/scripts/adapters/sql-ddl.test.js +0 -56
  2262. package/template/.pi/skills/drawio/scripts/adapters/terraform-config.js +0 -141
  2263. package/template/.pi/skills/drawio/scripts/adapters/terraform-config.test.js +0 -67
  2264. package/template/.pi/skills/drawio/scripts/adapters/terraform-state.js +0 -157
  2265. package/template/.pi/skills/drawio/scripts/adapters/terraform-state.test.js +0 -69
  2266. package/template/.pi/skills/drawio/scripts/cli.js +0 -700
  2267. package/template/.pi/skills/drawio/scripts/dsl/ah-to-drawio.js +0 -276
  2268. package/template/.pi/skills/drawio/scripts/dsl/ah-to-drawio.test.js +0 -77
  2269. package/template/.pi/skills/drawio/scripts/dsl/ai-icon-catalog.js +0 -126
  2270. package/template/.pi/skills/drawio/scripts/dsl/ai-icon-catalog.test.js +0 -86
  2271. package/template/.pi/skills/drawio/scripts/dsl/auto-layout.js +0 -206
  2272. package/template/.pi/skills/drawio/scripts/dsl/auto-layout.test.js +0 -249
  2273. package/template/.pi/skills/drawio/scripts/dsl/catalog-ranking.js +0 -54
  2274. package/template/.pi/skills/drawio/scripts/dsl/catalog-search.js +0 -58
  2275. package/template/.pi/skills/drawio/scripts/dsl/catalog-search.test.js +0 -44
  2276. package/template/.pi/skills/drawio/scripts/dsl/document-spec.js +0 -256
  2277. package/template/.pi/skills/drawio/scripts/dsl/document-spec.test.js +0 -147
  2278. package/template/.pi/skills/drawio/scripts/dsl/drawio-to-spec.js +0 -497
  2279. package/template/.pi/skills/drawio/scripts/dsl/examples-baseline.test.js +0 -30
  2280. package/template/.pi/skills/drawio/scripts/dsl/icon-mappings.js +0 -65
  2281. package/template/.pi/skills/drawio/scripts/dsl/icon-mappings.test.js +0 -19
  2282. package/template/.pi/skills/drawio/scripts/dsl/icon-resolver.js +0 -153
  2283. package/template/.pi/skills/drawio/scripts/dsl/icon-resolver.test.js +0 -62
  2284. package/template/.pi/skills/drawio/scripts/dsl/multi-page.js +0 -224
  2285. package/template/.pi/skills/drawio/scripts/dsl/multi-page.test.js +0 -107
  2286. package/template/.pi/skills/drawio/scripts/dsl/palette-catalog.test.js +0 -138
  2287. package/template/.pi/skills/drawio/scripts/dsl/palette-integration.test.js +0 -182
  2288. package/template/.pi/skills/drawio/scripts/dsl/palette-validate.js +0 -91
  2289. package/template/.pi/skills/drawio/scripts/dsl/palette.js +0 -302
  2290. package/template/.pi/skills/drawio/scripts/dsl/palette.test.js +0 -197
  2291. package/template/.pi/skills/drawio/scripts/dsl/shape-catalog.js +0 -89
  2292. package/template/.pi/skills/drawio/scripts/dsl/shape-catalog.test.js +0 -21
  2293. package/template/.pi/skills/drawio/scripts/dsl/spec-to-drawio.js +0 -3739
  2294. package/template/.pi/skills/drawio/scripts/dsl/spec-to-drawio.test.js +0 -3022
  2295. package/template/.pi/skills/drawio/scripts/generate-palette-swatches.js +0 -87
  2296. package/template/.pi/skills/drawio/scripts/install.bat +0 -64
  2297. package/template/.pi/skills/drawio/scripts/install.sh +0 -44
  2298. package/template/.pi/skills/drawio/scripts/math/index.js +0 -317
  2299. package/template/.pi/skills/drawio/scripts/math/index.test.js +0 -62
  2300. package/template/.pi/skills/drawio/scripts/package.json +0 -1
  2301. package/template/.pi/skills/drawio/scripts/postprocess/artifacts.js +0 -142
  2302. package/template/.pi/skills/drawio/scripts/postprocess/artifacts.test.js +0 -86
  2303. package/template/.pi/skills/drawio/scripts/postprocess/cli.js +0 -228
  2304. package/template/.pi/skills/drawio/scripts/postprocess/cli.test.js +0 -129
  2305. package/template/.pi/skills/drawio/scripts/postprocess/fixtures/bundle.yaml +0 -75
  2306. package/template/.pi/skills/drawio/scripts/postprocess/fixtures/legacy.yaml +0 -21
  2307. package/template/.pi/skills/drawio/scripts/postprocess/html.js +0 -197
  2308. package/template/.pi/skills/drawio/scripts/postprocess/html.test.js +0 -50
  2309. package/template/.pi/skills/drawio/scripts/postprocess/index.js +0 -5
  2310. package/template/.pi/skills/drawio/scripts/postprocess/input.js +0 -112
  2311. package/template/.pi/skills/drawio/scripts/postprocess/input.test.js +0 -73
  2312. package/template/.pi/skills/drawio/scripts/postprocess/mutate.js +0 -584
  2313. package/template/.pi/skills/drawio/scripts/postprocess/mutate.test.js +0 -193
  2314. package/template/.pi/skills/drawio/scripts/postprocess/projection.js +0 -178
  2315. package/template/.pi/skills/drawio/scripts/postprocess/projection.test.js +0 -67
  2316. package/template/.pi/skills/drawio/scripts/runtime/artifacts.js +0 -283
  2317. package/template/.pi/skills/drawio/scripts/runtime/desktop.js +0 -204
  2318. package/template/.pi/skills/drawio/scripts/runtime/desktop.test.js +0 -121
  2319. package/template/.pi/skills/drawio/scripts/runtime/diagrams-net-url.js +0 -122
  2320. package/template/.pi/skills/drawio/scripts/runtime/export-stability.js +0 -75
  2321. package/template/.pi/skills/drawio/scripts/runtime/export-stability.test.js +0 -81
  2322. package/template/.pi/skills/drawio/scripts/runtime/png-inspection.js +0 -157
  2323. package/template/.pi/skills/drawio/scripts/runtime/png-inspection.test.js +0 -120
  2324. package/template/.pi/skills/drawio/scripts/runtime/vision-preview.js +0 -77
  2325. package/template/.pi/skills/drawio/scripts/runtime/vision-preview.test.js +0 -103
  2326. package/template/.pi/skills/drawio/scripts/shared/ai-icon-contract.js +0 -13
  2327. package/template/.pi/skills/drawio/scripts/shared/xml-utils.js +0 -241
  2328. package/template/.pi/skills/drawio/scripts/svg/drawio-to-svg.js +0 -918
  2329. package/template/.pi/skills/drawio/scripts/svg/drawio-to-svg.test.js +0 -763
  2330. package/template/.pi/skills/drawio/scripts/tools/build-ai-icon-catalog.js +0 -208
  2331. package/template/.pi/skills/drawio/scripts/tools/build-ai-icon-catalog.test.js +0 -107
  2332. package/template/.pi/skills/drawio/scripts/tools/build-shape-catalog.js +0 -84
  2333. package/template/.pi/skills/drawio/scripts/tools/build-shape-catalog.test.js +0 -43
  2334. package/template/.pi/skills/drawio/scripts/tools/fixtures/ai-icons-package/icons/alpha-color.svg +0 -1
  2335. package/template/.pi/skills/drawio/scripts/tools/fixtures/ai-icons-package/icons/alpha.svg +0 -1
  2336. package/template/.pi/skills/drawio/scripts/tools/fixtures/ai-icons-package/icons/beta-brand-color.svg +0 -1
  2337. package/template/.pi/skills/drawio/scripts/tools/fixtures/ai-icons-package/icons/beta.svg +0 -1
  2338. package/template/.pi/skills/drawio/scripts/tools/fixtures/ai-icons-package/icons/civitai-text-color.svg +0 -1
  2339. package/template/.pi/skills/drawio/scripts/tools/fixtures/ai-icons-package/icons/civitai.svg +0 -1
  2340. package/template/.pi/skills/drawio/scripts/tools/fixtures/ai-icons-package/package.json +0 -5
  2341. package/template/.pi/skills/drawio/scripts/vendor/elkjs/LICENSE.md +0 -264
  2342. package/template/.pi/skills/drawio/scripts/vendor/elkjs/README.md +0 -18
  2343. package/template/.pi/skills/drawio/scripts/vendor/elkjs/elk.bundled.cjs +0 -6589
  2344. package/template/.pi/skills/drawio/styles/built-in/corporate.json +0 -49
  2345. package/template/.pi/skills/drawio/styles/built-in/default.json +0 -49
  2346. package/template/.pi/skills/drawio/styles/built-in/handdrawn.json +0 -49
  2347. package/template/.pi/skills/drawio/styles/schema.json +0 -112
  2348. package/template/.pi/skills/drawio-academic-skills/CHANGELOG.md +0 -67
  2349. package/template/.pi/skills/drawio-academic-skills/README.md +0 -103
  2350. package/template/.pi/skills/drawio-academic-skills/README_CN.md +0 -103
  2351. package/template/.pi/skills/drawio-academic-skills/SKILL.md +0 -161
  2352. package/template/.pi/skills/drawio-academic-skills/__yss_dotfile__.gitignore +0 -12
  2353. package/template/.pi/skills/drawio-academic-skills/agents/interface.yaml +0 -25
  2354. package/template/.pi/skills/drawio-academic-skills/agents/openai.yaml +0 -24
  2355. package/template/.pi/skills/drawio-academic-skills/evals/README.md +0 -13
  2356. package/template/.pi/skills/drawio-academic-skills/evals/baseline-prompts.json +0 -52
  2357. package/template/.pi/skills/drawio-academic-skills/evals/darwin-results.tsv +0 -3
  2358. package/template/.pi/skills/drawio-academic-skills/evals/evals.json +0 -228
  2359. package/template/.pi/skills/drawio-academic-skills/evals/test-prompts.json +0 -17
  2360. package/template/.pi/skills/drawio-academic-skills/references/docs/academic-export-checklist.md +0 -45
  2361. package/template/.pi/skills/drawio-academic-skills/references/docs/academic-figure-playbook.md +0 -349
  2362. package/template/.pi/skills/drawio-academic-skills/references/docs/publication-overlay.md +0 -206
  2363. package/template/.pi/skills/drawio-academic-skills/references/examples/ablation-study-pipeline.yaml +0 -39
  2364. package/template/.pi/skills/drawio-academic-skills/references/examples/ieee-network-paper.yaml +0 -44
  2365. package/template/.pi/skills/drawio-academic-skills/references/examples/industrial-architecture-cn-paper.yaml +0 -106
  2366. package/template/.pi/skills/drawio-academic-skills/references/examples/max-pooling-operation-paper.yaml +0 -75
  2367. package/template/.pi/skills/drawio-academic-skills/references/examples/research-pipeline.yaml +0 -54
  2368. package/template/.pi/skills/drawio-academic-skills/references/examples/system-architecture-paper.yaml +0 -45
  2369. package/template/.pi/skills/drawio-academic-skills/references/examples/technical-roadmap-paper.yaml +0 -54
  2370. package/template/.pi/skills/drawio-academic-skills/references/examples/yolo-model-architecture-paper.yaml +0 -118
  2371. package/template/.pi/skills/drawio-academic-skills/references/templates/multi-module-system-compact.yaml +0 -251
  2372. package/template/.pi/skills/drawio-academic-skills/references/templates/neural-network-architecture-compact.yaml +0 -267
  2373. package/template/.pi/skills/excalidraw-diagram-generator/SKILL.md +0 -634
  2374. package/template/.pi/skills/excalidraw-diagram-generator/references/element-types.md +0 -497
  2375. package/template/.pi/skills/excalidraw-diagram-generator/references/excalidraw-schema.md +0 -350
  2376. package/template/.pi/skills/excalidraw-diagram-generator/scripts/README.md +0 -193
  2377. package/template/.pi/skills/excalidraw-diagram-generator/scripts/__yss_dotfile__.gitignore +0 -34
  2378. package/template/.pi/skills/excalidraw-diagram-generator/scripts/add-arrow.py +0 -315
  2379. package/template/.pi/skills/excalidraw-diagram-generator/scripts/add-icon-to-diagram.py +0 -406
  2380. package/template/.pi/skills/excalidraw-diagram-generator/scripts/split-excalidraw-library.py +0 -183
  2381. package/template/.pi/skills/excalidraw-diagram-generator/templates/business-flow-swimlane-template.excalidraw +0 -334
  2382. package/template/.pi/skills/excalidraw-diagram-generator/templates/class-diagram-template.excalidraw +0 -558
  2383. package/template/.pi/skills/excalidraw-diagram-generator/templates/data-flow-diagram-template.excalidraw +0 -279
  2384. package/template/.pi/skills/excalidraw-diagram-generator/templates/er-diagram-template.excalidraw +0 -662
  2385. package/template/.pi/skills/excalidraw-diagram-generator/templates/flowchart-template.excalidraw +0 -179
  2386. package/template/.pi/skills/excalidraw-diagram-generator/templates/mindmap-template.excalidraw +0 -244
  2387. package/template/.pi/skills/excalidraw-diagram-generator/templates/relationship-template.excalidraw +0 -145
  2388. package/template/.pi/skills/excalidraw-diagram-generator/templates/sequence-diagram-template.excalidraw +0 -509
  2389. package/template/.pi/skills/kb-retriever/README.md +0 -197
  2390. package/template/.pi/skills/kb-retriever/README.zh-CN.md +0 -197
  2391. package/template/.pi/skills/kb-retriever/SKILL.md +0 -250
  2392. package/template/.pi/skills/kb-retriever/manifest.json +0 -15
  2393. package/template/.pi/skills/kb-retriever/references/excel_analysis.md +0 -129
  2394. package/template/.pi/skills/kb-retriever/references/excel_reading.md +0 -72
  2395. package/template/.pi/skills/kb-retriever/references/pdf_reading.md +0 -362
  2396. package/template/.pi/skills/kb-retriever/scripts/convert_pdf_to_images.py +0 -35
  2397. package/template/.pi/skills/yss-db2mybatis/requirements.txt +0 -4
  2398. package/template/.pi/skills/yss-db2mybatis/scripts/db2mybatis.py +0 -1494
  2399. package/template/.pi/skills/yss-ddd-scaffold-generator/scripts/generate_scaffold.py +0 -728
  2400. package/template/.pi/skills/yss-ddd-scaffold-generator/scripts/run_scaffold_verification.py +0 -155
  2401. package/template/.pi/skills/yss-design-system/scripts/validate-frontmatter.py +0 -50
  2402. package/template/.pi/skills/yss-source-index/scripts/refresh-yss-skill-index.py +0 -371
  2403. package/template/.pi/skills/yss-web-controller/scripts/generate_controller.py +0 -293
  2404. package/template/.pi/skills/yss-web-controller/scripts/test_generate_controller.py +0 -68
  2405. package/template/.qoder/skills/beautiful-article/README.md +0 -450
  2406. package/template/.qoder/skills/beautiful-article/README.zh-CN.md +0 -450
  2407. package/template/.qoder/skills/beautiful-article/SKILL.md +0 -466
  2408. package/template/.qoder/skills/beautiful-article/assets/scaffold-template/__yss_dotfile__.npmrc +0 -1
  2409. package/template/.qoder/skills/beautiful-article/assets/scaffold-template/article/Article.tsx +0 -69
  2410. package/template/.qoder/skills/beautiful-article/assets/scaffold-template/article/Cover.tsx +0 -172
  2411. package/template/.qoder/skills/beautiful-article/assets/scaffold-template/article/main.tsx +0 -26
  2412. package/template/.qoder/skills/beautiful-article/assets/scaffold-template/article/sections/01-opening.tsx +0 -30
  2413. package/template/.qoder/skills/beautiful-article/assets/scaffold-template/index.html +0 -19
  2414. package/template/.qoder/skills/beautiful-article/assets/scaffold-template/package.json +0 -26
  2415. package/template/.qoder/skills/beautiful-article/assets/scaffold-template/tsconfig.json +0 -20
  2416. package/template/.qoder/skills/beautiful-article/assets/scaffold-template/tsconfig.node.json +0 -11
  2417. package/template/.qoder/skills/beautiful-article/assets/scaffold-template/vite.config.ts +0 -18
  2418. package/template/.qoder/skills/beautiful-article/manifest.json +0 -15
  2419. package/template/.qoder/skills/beautiful-article/references/article-types/briefing.md +0 -32
  2420. package/template/.qoder/skills/beautiful-article/references/article-types/dialogue.md +0 -30
  2421. package/template/.qoder/skills/beautiful-article/references/article-types/essay.md +0 -31
  2422. package/template/.qoder/skills/beautiful-article/references/article-types/explainer.md +0 -32
  2423. package/template/.qoder/skills/beautiful-article/references/article-types/full-report.md +0 -32
  2424. package/template/.qoder/skills/beautiful-article/references/article-types/interactive-explainer.md +0 -66
  2425. package/template/.qoder/skills/beautiful-article/references/article-types/longform.md +0 -32
  2426. package/template/.qoder/skills/beautiful-article/references/article-types/review.md +0 -32
  2427. package/template/.qoder/skills/beautiful-article/references/article-types/tutorial.md +0 -30
  2428. package/template/.qoder/skills/beautiful-article/references/article-types/visual-essay.md +0 -33
  2429. package/template/.qoder/skills/beautiful-article/references/article-types.md +0 -42
  2430. package/template/.qoder/skills/beautiful-article/references/asset-policy.md +0 -71
  2431. package/template/.qoder/skills/beautiful-article/references/component-policy.md +0 -103
  2432. package/template/.qoder/skills/beautiful-article/references/cover.md +0 -208
  2433. package/template/.qoder/skills/beautiful-article/references/harness.md +0 -35
  2434. package/template/.qoder/skills/beautiful-article/references/html-output.md +0 -42
  2435. package/template/.qoder/skills/beautiful-article/references/information-density.md +0 -50
  2436. package/template/.qoder/skills/beautiful-article/references/layout.md +0 -46
  2437. package/template/.qoder/skills/beautiful-article/references/pdf-output.md +0 -208
  2438. package/template/.qoder/skills/beautiful-article/references/plan-template.md +0 -109
  2439. package/template/.qoder/skills/beautiful-article/references/raw-policy.md +0 -86
  2440. package/template/.qoder/skills/beautiful-article/references/repair-policy.md +0 -35
  2441. package/template/.qoder/skills/beautiful-article/references/review-checklist.md +0 -133
  2442. package/template/.qoder/skills/beautiful-article/references/scaffold.md +0 -77
  2443. package/template/.qoder/skills/beautiful-article/references/section-build.md +0 -100
  2444. package/template/.qoder/skills/beautiful-article/references/source-to-markdown.md +0 -118
  2445. package/template/.qoder/skills/beautiful-article/references/theme-selection.md +0 -48
  2446. package/template/.qoder/skills/beautiful-article/scripts/html-to-pdf.sh +0 -160
  2447. package/template/.qoder/skills/beautiful-article/scripts/pdf-print-overrides.css +0 -192
  2448. package/template/.qoder/skills/beautiful-article/scripts/scaffold.sh +0 -172
  2449. package/template/.qoder/skills/beautiful-article/scripts/source-to-markdown-markitdown.py +0 -100
  2450. package/template/.qoder/skills/beautiful-article/scripts/source-to-markdown.py +0 -174
  2451. package/template/.qoder/skills/beautiful-article/theme-profiles/andy.md +0 -57
  2452. package/template/.qoder/skills/beautiful-article/theme-profiles/bayer.md +0 -57
  2453. package/template/.qoder/skills/beautiful-article/theme-profiles/bodoni.md +0 -57
  2454. package/template/.qoder/skills/beautiful-article/theme-profiles/freddie.md +0 -57
  2455. package/template/.qoder/skills/beautiful-article/theme-profiles/fuller.md +0 -56
  2456. package/template/.qoder/skills/beautiful-article/theme-profiles/index.json +0 -112
  2457. package/template/.qoder/skills/beautiful-article/theme-profiles/knuth.md +0 -60
  2458. package/template/.qoder/skills/beautiful-article/theme-profiles/press.md +0 -61
  2459. package/template/.qoder/skills/beautiful-article/theme-profiles/shannon.md +0 -64
  2460. package/template/.qoder/skills/beautiful-article/theme-profiles/sottsass.md +0 -57
  2461. package/template/.qoder/skills/beautiful-article/theme-profiles/tufte.md +0 -64
  2462. package/template/.qoder/skills/beautiful-article/theme-profiles/vignelli.md +0 -63
  2463. package/template/.qoder/skills/drawio/.mcp.json +0 -8
  2464. package/template/.qoder/skills/drawio/CHANGELOG.md +0 -216
  2465. package/template/.qoder/skills/drawio/SKILL.md +0 -157
  2466. package/template/.qoder/skills/drawio/agents/interface.yaml +0 -26
  2467. package/template/.qoder/skills/drawio/agents/openai.yaml +0 -26
  2468. package/template/.qoder/skills/drawio/assets/catalog/ai-icons.json.gz +0 -0
  2469. package/template/.qoder/skills/drawio/assets/catalog/shape-catalog.json.gz +0 -0
  2470. package/template/.qoder/skills/drawio/assets/catalog/shape-index.json.gz +0 -0
  2471. package/template/.qoder/skills/drawio/assets/examples/login-flow-test.drawio +0 -6
  2472. package/template/.qoder/skills/drawio/assets/examples/login-flow.drawio +0 -6
  2473. package/template/.qoder/skills/drawio/assets/examples/microservices.drawio +0 -6
  2474. package/template/.qoder/skills/drawio/assets/examples/neural-network.drawio +0 -6
  2475. package/template/.qoder/skills/drawio/assets/licenses/architecture-diagram-generator-MIT.txt +0 -26
  2476. package/template/.qoder/skills/drawio/assets/licenses/drawio-mcp-shape-index-Apache-2.0.txt +0 -8
  2477. package/template/.qoder/skills/drawio/assets/licenses/lobe-icons-MIT.txt +0 -26
  2478. package/template/.qoder/skills/drawio/assets/licenses/lucide-ISC.txt +0 -41
  2479. package/template/.qoder/skills/drawio/assets/palettes/c4-blue.json +0 -29
  2480. package/template/.qoder/skills/drawio/assets/palettes/cloud-aws.json +0 -30
  2481. package/template/.qoder/skills/drawio/assets/palettes/drawio-classic.json +0 -21
  2482. package/template/.qoder/skills/drawio/assets/palettes/ieee-bw.json +0 -26
  2483. package/template/.qoder/skills/drawio/assets/palettes/ieee-color.json +0 -17
  2484. package/template/.qoder/skills/drawio/assets/palettes/journal-jama.json +0 -20
  2485. package/template/.qoder/skills/drawio/assets/palettes/journal-npg.json +0 -23
  2486. package/template/.qoder/skills/drawio/assets/palettes/matlab-lines.json +0 -20
  2487. package/template/.qoder/skills/drawio/assets/palettes/morandi.json +0 -21
  2488. package/template/.qoder/skills/drawio/assets/palettes/okabe-ito.json +0 -21
  2489. package/template/.qoder/skills/drawio/assets/palettes/seaborn-colorblind.json +0 -23
  2490. package/template/.qoder/skills/drawio/assets/palettes/tol-bright.json +0 -20
  2491. package/template/.qoder/skills/drawio/assets/palettes/tol-high-contrast.json +0 -18
  2492. package/template/.qoder/skills/drawio/assets/palettes/tol-light-fill.json +0 -22
  2493. package/template/.qoder/skills/drawio/assets/palettes/tol-muted.json +0 -22
  2494. package/template/.qoder/skills/drawio/assets/schemas/graph-projection.schema.json +0 -135
  2495. package/template/.qoder/skills/drawio/assets/schemas/spec.schema.json +0 -620
  2496. package/template/.qoder/skills/drawio/assets/themes/academic-color.json +0 -299
  2497. package/template/.qoder/skills/drawio/assets/themes/academic.json +0 -245
  2498. package/template/.qoder/skills/drawio/assets/themes/arch-dark.json +0 -253
  2499. package/template/.qoder/skills/drawio/assets/themes/blueprint.json +0 -246
  2500. package/template/.qoder/skills/drawio/assets/themes/dark-luxury.json +0 -246
  2501. package/template/.qoder/skills/drawio/assets/themes/dark-terminal.json +0 -244
  2502. package/template/.qoder/skills/drawio/assets/themes/dark.json +0 -220
  2503. package/template/.qoder/skills/drawio/assets/themes/high-contrast.json +0 -220
  2504. package/template/.qoder/skills/drawio/assets/themes/nature.json +0 -220
  2505. package/template/.qoder/skills/drawio/assets/themes/notion-clean.json +0 -246
  2506. package/template/.qoder/skills/drawio/assets/themes/tech-blue.json +0 -220
  2507. package/template/.qoder/skills/drawio/evals/README.md +0 -17
  2508. package/template/.qoder/skills/drawio/evals/ai-icon-catalog-cases.json +0 -89
  2509. package/template/.qoder/skills/drawio/evals/baseline-prompts.json +0 -122
  2510. package/template/.qoder/skills/drawio/evals/darwin-results.tsv +0 -4
  2511. package/template/.qoder/skills/drawio/evals/evals.json +0 -223
  2512. package/template/.qoder/skills/drawio/evals/evidence/ai-icon-catalog-desktop.json +0 -134
  2513. package/template/.qoder/skills/drawio/evals/fixtures/ai-icons-advanced-svg.yaml +0 -25
  2514. package/template/.qoder/skills/drawio/evals/fixtures/ai-icons-cjk-agent-rag.yaml +0 -55
  2515. package/template/.qoder/skills/drawio/evals/fixtures/ai-icons-core-aliases.yaml +0 -50
  2516. package/template/.qoder/skills/drawio/evals/fixtures/ai-icons-current-color.yaml +0 -25
  2517. package/template/.qoder/skills/drawio/evals/fixtures/ai-icons-gradients.yaml +0 -25
  2518. package/template/.qoder/skills/drawio/evals/fixtures/import-simple-compressed.drawio +0 -5
  2519. package/template/.qoder/skills/drawio/evals/fixtures/import-simple.drawio +0 -28
  2520. package/template/.qoder/skills/drawio/evals/fixtures/industrial-architecture.yaml +0 -239
  2521. package/template/.qoder/skills/drawio/evals/fixtures/replicate-academic-highlight.svg +0 -13
  2522. package/template/.qoder/skills/drawio/evals/fixtures/replicate-brand-architecture.svg +0 -14
  2523. package/template/.qoder/skills/drawio/evals/fixtures/replicate-warm-approval.svg +0 -13
  2524. package/template/.qoder/skills/drawio/evals/fixtures/vision-tall-workflow.yaml +0 -47
  2525. package/template/.qoder/skills/drawio/evals/upstream-integration-cases.json +0 -78
  2526. package/template/.qoder/skills/drawio/evals/vision-preview-cases.json +0 -147
  2527. package/template/.qoder/skills/drawio/references/docs/agent-diagrams.md +0 -164
  2528. package/template/.qoder/skills/drawio/references/docs/ah-format.md +0 -322
  2529. package/template/.qoder/skills/drawio/references/docs/architecture-diagrams.md +0 -159
  2530. package/template/.qoder/skills/drawio/references/docs/canonical-graph-projection.md +0 -54
  2531. package/template/.qoder/skills/drawio/references/docs/code-importers.md +0 -53
  2532. package/template/.qoder/skills/drawio/references/docs/config-importers.md +0 -68
  2533. package/template/.qoder/skills/drawio/references/docs/design-system/README.md +0 -204
  2534. package/template/.qoder/skills/drawio/references/docs/design-system/color-guide.md +0 -255
  2535. package/template/.qoder/skills/drawio/references/docs/design-system/connectors.md +0 -388
  2536. package/template/.qoder/skills/drawio/references/docs/design-system/formulas.md +0 -196
  2537. package/template/.qoder/skills/drawio/references/docs/design-system/icons.md +0 -332
  2538. package/template/.qoder/skills/drawio/references/docs/design-system/shapes.md +0 -269
  2539. package/template/.qoder/skills/drawio/references/docs/design-system/specification.md +0 -754
  2540. package/template/.qoder/skills/drawio/references/docs/design-system/themes.md +0 -441
  2541. package/template/.qoder/skills/drawio/references/docs/design-system/tokens.md +0 -232
  2542. package/template/.qoder/skills/drawio/references/docs/edge-quality-rules.md +0 -65
  2543. package/template/.qoder/skills/drawio/references/docs/ieee-network-diagrams.md +0 -145
  2544. package/template/.qoder/skills/drawio/references/docs/live-snapshots-drift.md +0 -72
  2545. package/template/.qoder/skills/drawio/references/docs/math-typesetting.md +0 -258
  2546. package/template/.qoder/skills/drawio/references/docs/mcp-tools.md +0 -85
  2547. package/template/.qoder/skills/drawio/references/docs/migration-readiness.md +0 -73
  2548. package/template/.qoder/skills/drawio/references/docs/stencil-library-guide.md +0 -97
  2549. package/template/.qoder/skills/drawio/references/docs/style-extraction.md +0 -261
  2550. package/template/.qoder/skills/drawio/references/docs/style-presets.md +0 -126
  2551. package/template/.qoder/skills/drawio/references/docs/upstream-capability-compatibility.md +0 -61
  2552. package/template/.qoder/skills/drawio/references/docs/xml-format.md +0 -53
  2553. package/template/.qoder/skills/drawio/references/examples/README.md +0 -33
  2554. package/template/.qoder/skills/drawio/references/examples/agentic-rag.yaml +0 -71
  2555. package/template/.qoder/skills/drawio/references/examples/arch-dark-aws-serverless.yaml +0 -103
  2556. package/template/.qoder/skills/drawio/references/examples/arch-dark-microservices.yaml +0 -146
  2557. package/template/.qoder/skills/drawio/references/examples/arch-dark-web-app.yaml +0 -62
  2558. package/template/.qoder/skills/drawio/references/examples/auto-layout-workflow.yaml +0 -81
  2559. package/template/.qoder/skills/drawio/references/examples/aws-vpc-topology.yaml +0 -66
  2560. package/template/.qoder/skills/drawio/references/examples/campus-lan-topology.yaml +0 -89
  2561. package/template/.qoder/skills/drawio/references/examples/cloud-reference-architecture.yaml +0 -34
  2562. package/template/.qoder/skills/drawio/references/examples/e-commerce.yaml +0 -141
  2563. package/template/.qoder/skills/drawio/references/examples/importers/README.md +0 -10
  2564. package/template/.qoder/skills/drawio/references/examples/importers/live/compose-drift-evidence.json +0 -49
  2565. package/template/.qoder/skills/drawio/references/examples/importers/live/compose-drift-report.json +0 -300
  2566. package/template/.qoder/skills/drawio/references/examples/importers/live/compose-drift.spec.yaml +0 -75
  2567. package/template/.qoder/skills/drawio/references/examples/importers/live/docker-inspect.json +0 -55
  2568. package/template/.qoder/skills/drawio/references/examples/importers/live/drift-declared-compose.yaml +0 -13
  2569. package/template/.qoder/skills/drawio/references/examples/importers/live/kubernetes-live.json +0 -71
  2570. package/template/.qoder/skills/drawio/references/examples/importers/live/terraform-state.json +0 -70
  2571. package/template/.qoder/skills/drawio/references/examples/importers/schema.sql +0 -10
  2572. package/template/.qoder/skills/drawio/references/examples/importers/terraform.tf +0 -9
  2573. package/template/.qoder/skills/drawio/references/examples/login-flow.yaml +0 -65
  2574. package/template/.qoder/skills/drawio/references/examples/mem0-memory-layer.yaml +0 -63
  2575. package/template/.qoder/skills/drawio/references/examples/microservices.yaml +0 -58
  2576. package/template/.qoder/skills/drawio/references/examples/multi-agent-orchestration.yaml +0 -67
  2577. package/template/.qoder/skills/drawio/references/examples/neural-network.yaml +0 -66
  2578. package/template/.qoder/skills/drawio/references/examples/onprem-dmz-topology.yaml +0 -62
  2579. package/template/.qoder/skills/drawio/references/examples/palettes/README.md +0 -29
  2580. package/template/.qoder/skills/drawio/references/examples/palettes/c4-blue.drawio +0 -6
  2581. package/template/.qoder/skills/drawio/references/examples/palettes/c4-blue.svg +0 -36
  2582. package/template/.qoder/skills/drawio/references/examples/palettes/cloud-aws.drawio +0 -6
  2583. package/template/.qoder/skills/drawio/references/examples/palettes/cloud-aws.svg +0 -36
  2584. package/template/.qoder/skills/drawio/references/examples/palettes/drawio-classic.drawio +0 -6
  2585. package/template/.qoder/skills/drawio/references/examples/palettes/drawio-classic.svg +0 -36
  2586. package/template/.qoder/skills/drawio/references/examples/palettes/ieee-bw.drawio +0 -6
  2587. package/template/.qoder/skills/drawio/references/examples/palettes/ieee-bw.svg +0 -36
  2588. package/template/.qoder/skills/drawio/references/examples/palettes/ieee-color.drawio +0 -6
  2589. package/template/.qoder/skills/drawio/references/examples/palettes/ieee-color.svg +0 -36
  2590. package/template/.qoder/skills/drawio/references/examples/palettes/journal-jama.drawio +0 -6
  2591. package/template/.qoder/skills/drawio/references/examples/palettes/journal-jama.svg +0 -36
  2592. package/template/.qoder/skills/drawio/references/examples/palettes/journal-npg.drawio +0 -6
  2593. package/template/.qoder/skills/drawio/references/examples/palettes/journal-npg.svg +0 -36
  2594. package/template/.qoder/skills/drawio/references/examples/palettes/matlab-lines.drawio +0 -6
  2595. package/template/.qoder/skills/drawio/references/examples/palettes/matlab-lines.svg +0 -36
  2596. package/template/.qoder/skills/drawio/references/examples/palettes/morandi.drawio +0 -6
  2597. package/template/.qoder/skills/drawio/references/examples/palettes/morandi.svg +0 -36
  2598. package/template/.qoder/skills/drawio/references/examples/palettes/okabe-ito.drawio +0 -6
  2599. package/template/.qoder/skills/drawio/references/examples/palettes/okabe-ito.svg +0 -36
  2600. package/template/.qoder/skills/drawio/references/examples/palettes/palette-swatch.template.yaml +0 -56
  2601. package/template/.qoder/skills/drawio/references/examples/palettes/seaborn-colorblind.drawio +0 -6
  2602. package/template/.qoder/skills/drawio/references/examples/palettes/seaborn-colorblind.svg +0 -36
  2603. package/template/.qoder/skills/drawio/references/examples/palettes/tol-bright.drawio +0 -6
  2604. package/template/.qoder/skills/drawio/references/examples/palettes/tol-bright.svg +0 -36
  2605. package/template/.qoder/skills/drawio/references/examples/palettes/tol-high-contrast.drawio +0 -6
  2606. package/template/.qoder/skills/drawio/references/examples/palettes/tol-high-contrast.svg +0 -36
  2607. package/template/.qoder/skills/drawio/references/examples/palettes/tol-light-fill.drawio +0 -6
  2608. package/template/.qoder/skills/drawio/references/examples/palettes/tol-light-fill.svg +0 -36
  2609. package/template/.qoder/skills/drawio/references/examples/palettes/tol-muted.drawio +0 -6
  2610. package/template/.qoder/skills/drawio/references/examples/palettes/tol-muted.svg +0 -36
  2611. package/template/.qoder/skills/drawio/references/examples/rag-pipeline.yaml +0 -67
  2612. package/template/.qoder/skills/drawio/references/examples/replicated-brand-flow.yaml +0 -89
  2613. package/template/.qoder/skills/drawio/references/examples/swimlane-engineering-review.yaml +0 -44
  2614. package/template/.qoder/skills/drawio/references/examples/tiered-network-topology.yaml +0 -59
  2615. package/template/.qoder/skills/drawio/references/examples/tool-call-loop.yaml +0 -63
  2616. package/template/.qoder/skills/drawio/references/examples/vendor-device-mapping.yaml +0 -46
  2617. package/template/.qoder/skills/drawio/references/official/style-reference.md +0 -936
  2618. package/template/.qoder/skills/drawio/references/official/xml-reference.md +0 -262
  2619. package/template/.qoder/skills/drawio/references/palette.schema.json +0 -59
  2620. package/template/.qoder/skills/drawio/references/theme.schema.json +0 -249
  2621. package/template/.qoder/skills/drawio/references/upstream/pure-drawio-skill.md +0 -615
  2622. package/template/.qoder/skills/drawio/references/workflows/create.md +0 -195
  2623. package/template/.qoder/skills/drawio/references/workflows/edit.md +0 -174
  2624. package/template/.qoder/skills/drawio/references/workflows/replicate.md +0 -239
  2625. package/template/.qoder/skills/drawio/references/workflows/visual-review.md +0 -108
  2626. package/template/.qoder/skills/drawio/reports/output_quality_scorecard.md +0 -106
  2627. package/template/.qoder/skills/drawio/reports/upstream-port-release-evidence.md +0 -43
  2628. package/template/.qoder/skills/drawio/scripts/adapters/ci.js +0 -139
  2629. package/template/.qoder/skills/drawio/scripts/adapters/ci.test.js +0 -41
  2630. package/template/.qoder/skills/drawio/scripts/adapters/code-common.js +0 -171
  2631. package/template/.qoder/skills/drawio/scripts/adapters/code-imports.test.js +0 -80
  2632. package/template/.qoder/skills/drawio/scripts/adapters/code-parsers.integration.test.js +0 -71
  2633. package/template/.qoder/skills/drawio/scripts/adapters/compose.js +0 -134
  2634. package/template/.qoder/skills/drawio/scripts/adapters/compose.test.js +0 -54
  2635. package/template/.qoder/skills/drawio/scripts/adapters/config-adapters.integration.test.js +0 -58
  2636. package/template/.qoder/skills/drawio/scripts/adapters/config-common.js +0 -131
  2637. package/template/.qoder/skills/drawio/scripts/adapters/config-common.test.js +0 -32
  2638. package/template/.qoder/skills/drawio/scripts/adapters/docker-inspect.js +0 -127
  2639. package/template/.qoder/skills/drawio/scripts/adapters/docker-inspect.test.js +0 -62
  2640. package/template/.qoder/skills/drawio/scripts/adapters/fixtures/raster-extraction.json +0 -31
  2641. package/template/.qoder/skills/drawio/scripts/adapters/go-code-adapter.test.js +0 -59
  2642. package/template/.qoder/skills/drawio/scripts/adapters/go-code.js +0 -168
  2643. package/template/.qoder/skills/drawio/scripts/adapters/graph-drift.file.test.js +0 -67
  2644. package/template/.qoder/skills/drawio/scripts/adapters/graph-drift.js +0 -358
  2645. package/template/.qoder/skills/drawio/scripts/adapters/graph-drift.test.js +0 -272
  2646. package/template/.qoder/skills/drawio/scripts/adapters/graph-projection.js +0 -335
  2647. package/template/.qoder/skills/drawio/scripts/adapters/graph-projection.test.js +0 -141
  2648. package/template/.qoder/skills/drawio/scripts/adapters/identity.js +0 -244
  2649. package/template/.qoder/skills/drawio/scripts/adapters/identity.test.js +0 -123
  2650. package/template/.qoder/skills/drawio/scripts/adapters/index.js +0 -489
  2651. package/template/.qoder/skills/drawio/scripts/adapters/index.test.js +0 -152
  2652. package/template/.qoder/skills/drawio/scripts/adapters/js-code-adapter.test.js +0 -42
  2653. package/template/.qoder/skills/drawio/scripts/adapters/js-code.js +0 -141
  2654. package/template/.qoder/skills/drawio/scripts/adapters/kubernetes-live.test.js +0 -46
  2655. package/template/.qoder/skills/drawio/scripts/adapters/kubernetes.js +0 -258
  2656. package/template/.qoder/skills/drawio/scripts/adapters/kubernetes.test.js +0 -81
  2657. package/template/.qoder/skills/drawio/scripts/adapters/openapi.js +0 -98
  2658. package/template/.qoder/skills/drawio/scripts/adapters/openapi.test.js +0 -46
  2659. package/template/.qoder/skills/drawio/scripts/adapters/optional-python-code.js +0 -16
  2660. package/template/.qoder/skills/drawio/scripts/adapters/optional-python.integration.test.js +0 -32
  2661. package/template/.qoder/skills/drawio/scripts/adapters/optional-python.js +0 -127
  2662. package/template/.qoder/skills/drawio/scripts/adapters/optional-python.test.js +0 -55
  2663. package/template/.qoder/skills/drawio/scripts/adapters/projection-to-spec.js +0 -116
  2664. package/template/.qoder/skills/drawio/scripts/adapters/projection-to-spec.test.js +0 -139
  2665. package/template/.qoder/skills/drawio/scripts/adapters/python/code-parser-worker.py +0 -93
  2666. package/template/.qoder/skills/drawio/scripts/adapters/python/config-parser-worker.py +0 -237
  2667. package/template/.qoder/skills/drawio/scripts/adapters/python/requirements.txt +0 -2
  2668. package/template/.qoder/skills/drawio/scripts/adapters/python-code-adapter.test.js +0 -127
  2669. package/template/.qoder/skills/drawio/scripts/adapters/python-code.js +0 -246
  2670. package/template/.qoder/skills/drawio/scripts/adapters/raster-extraction.js +0 -258
  2671. package/template/.qoder/skills/drawio/scripts/adapters/raster-extraction.test.js +0 -308
  2672. package/template/.qoder/skills/drawio/scripts/adapters/rust-code-adapter.test.js +0 -64
  2673. package/template/.qoder/skills/drawio/scripts/adapters/rust-code.js +0 -207
  2674. package/template/.qoder/skills/drawio/scripts/adapters/sql-ddl.js +0 -118
  2675. package/template/.qoder/skills/drawio/scripts/adapters/sql-ddl.test.js +0 -56
  2676. package/template/.qoder/skills/drawio/scripts/adapters/terraform-config.js +0 -141
  2677. package/template/.qoder/skills/drawio/scripts/adapters/terraform-config.test.js +0 -67
  2678. package/template/.qoder/skills/drawio/scripts/adapters/terraform-state.js +0 -157
  2679. package/template/.qoder/skills/drawio/scripts/adapters/terraform-state.test.js +0 -69
  2680. package/template/.qoder/skills/drawio/scripts/cli.js +0 -700
  2681. package/template/.qoder/skills/drawio/scripts/dsl/ah-to-drawio.js +0 -276
  2682. package/template/.qoder/skills/drawio/scripts/dsl/ah-to-drawio.test.js +0 -77
  2683. package/template/.qoder/skills/drawio/scripts/dsl/ai-icon-catalog.js +0 -126
  2684. package/template/.qoder/skills/drawio/scripts/dsl/ai-icon-catalog.test.js +0 -86
  2685. package/template/.qoder/skills/drawio/scripts/dsl/auto-layout.js +0 -206
  2686. package/template/.qoder/skills/drawio/scripts/dsl/auto-layout.test.js +0 -249
  2687. package/template/.qoder/skills/drawio/scripts/dsl/catalog-ranking.js +0 -54
  2688. package/template/.qoder/skills/drawio/scripts/dsl/catalog-search.js +0 -58
  2689. package/template/.qoder/skills/drawio/scripts/dsl/catalog-search.test.js +0 -44
  2690. package/template/.qoder/skills/drawio/scripts/dsl/document-spec.js +0 -256
  2691. package/template/.qoder/skills/drawio/scripts/dsl/document-spec.test.js +0 -147
  2692. package/template/.qoder/skills/drawio/scripts/dsl/drawio-to-spec.js +0 -497
  2693. package/template/.qoder/skills/drawio/scripts/dsl/examples-baseline.test.js +0 -30
  2694. package/template/.qoder/skills/drawio/scripts/dsl/icon-mappings.js +0 -65
  2695. package/template/.qoder/skills/drawio/scripts/dsl/icon-mappings.test.js +0 -19
  2696. package/template/.qoder/skills/drawio/scripts/dsl/icon-resolver.js +0 -153
  2697. package/template/.qoder/skills/drawio/scripts/dsl/icon-resolver.test.js +0 -62
  2698. package/template/.qoder/skills/drawio/scripts/dsl/multi-page.js +0 -224
  2699. package/template/.qoder/skills/drawio/scripts/dsl/multi-page.test.js +0 -107
  2700. package/template/.qoder/skills/drawio/scripts/dsl/palette-catalog.test.js +0 -138
  2701. package/template/.qoder/skills/drawio/scripts/dsl/palette-integration.test.js +0 -182
  2702. package/template/.qoder/skills/drawio/scripts/dsl/palette-validate.js +0 -91
  2703. package/template/.qoder/skills/drawio/scripts/dsl/palette.js +0 -302
  2704. package/template/.qoder/skills/drawio/scripts/dsl/palette.test.js +0 -197
  2705. package/template/.qoder/skills/drawio/scripts/dsl/shape-catalog.js +0 -89
  2706. package/template/.qoder/skills/drawio/scripts/dsl/shape-catalog.test.js +0 -21
  2707. package/template/.qoder/skills/drawio/scripts/dsl/spec-to-drawio.js +0 -3739
  2708. package/template/.qoder/skills/drawio/scripts/dsl/spec-to-drawio.test.js +0 -3022
  2709. package/template/.qoder/skills/drawio/scripts/generate-palette-swatches.js +0 -87
  2710. package/template/.qoder/skills/drawio/scripts/install.bat +0 -64
  2711. package/template/.qoder/skills/drawio/scripts/install.sh +0 -44
  2712. package/template/.qoder/skills/drawio/scripts/math/index.js +0 -317
  2713. package/template/.qoder/skills/drawio/scripts/math/index.test.js +0 -62
  2714. package/template/.qoder/skills/drawio/scripts/package.json +0 -1
  2715. package/template/.qoder/skills/drawio/scripts/postprocess/artifacts.js +0 -142
  2716. package/template/.qoder/skills/drawio/scripts/postprocess/artifacts.test.js +0 -86
  2717. package/template/.qoder/skills/drawio/scripts/postprocess/cli.js +0 -228
  2718. package/template/.qoder/skills/drawio/scripts/postprocess/cli.test.js +0 -129
  2719. package/template/.qoder/skills/drawio/scripts/postprocess/fixtures/bundle.yaml +0 -75
  2720. package/template/.qoder/skills/drawio/scripts/postprocess/fixtures/legacy.yaml +0 -21
  2721. package/template/.qoder/skills/drawio/scripts/postprocess/html.js +0 -197
  2722. package/template/.qoder/skills/drawio/scripts/postprocess/html.test.js +0 -50
  2723. package/template/.qoder/skills/drawio/scripts/postprocess/index.js +0 -5
  2724. package/template/.qoder/skills/drawio/scripts/postprocess/input.js +0 -112
  2725. package/template/.qoder/skills/drawio/scripts/postprocess/input.test.js +0 -73
  2726. package/template/.qoder/skills/drawio/scripts/postprocess/mutate.js +0 -584
  2727. package/template/.qoder/skills/drawio/scripts/postprocess/mutate.test.js +0 -193
  2728. package/template/.qoder/skills/drawio/scripts/postprocess/projection.js +0 -178
  2729. package/template/.qoder/skills/drawio/scripts/postprocess/projection.test.js +0 -67
  2730. package/template/.qoder/skills/drawio/scripts/runtime/artifacts.js +0 -283
  2731. package/template/.qoder/skills/drawio/scripts/runtime/desktop.js +0 -204
  2732. package/template/.qoder/skills/drawio/scripts/runtime/desktop.test.js +0 -121
  2733. package/template/.qoder/skills/drawio/scripts/runtime/diagrams-net-url.js +0 -122
  2734. package/template/.qoder/skills/drawio/scripts/runtime/export-stability.js +0 -75
  2735. package/template/.qoder/skills/drawio/scripts/runtime/export-stability.test.js +0 -81
  2736. package/template/.qoder/skills/drawio/scripts/runtime/png-inspection.js +0 -157
  2737. package/template/.qoder/skills/drawio/scripts/runtime/png-inspection.test.js +0 -120
  2738. package/template/.qoder/skills/drawio/scripts/runtime/vision-preview.js +0 -77
  2739. package/template/.qoder/skills/drawio/scripts/runtime/vision-preview.test.js +0 -103
  2740. package/template/.qoder/skills/drawio/scripts/shared/ai-icon-contract.js +0 -13
  2741. package/template/.qoder/skills/drawio/scripts/shared/xml-utils.js +0 -241
  2742. package/template/.qoder/skills/drawio/scripts/svg/drawio-to-svg.js +0 -918
  2743. package/template/.qoder/skills/drawio/scripts/svg/drawio-to-svg.test.js +0 -763
  2744. package/template/.qoder/skills/drawio/scripts/tools/build-ai-icon-catalog.js +0 -208
  2745. package/template/.qoder/skills/drawio/scripts/tools/build-ai-icon-catalog.test.js +0 -107
  2746. package/template/.qoder/skills/drawio/scripts/tools/build-shape-catalog.js +0 -84
  2747. package/template/.qoder/skills/drawio/scripts/tools/build-shape-catalog.test.js +0 -43
  2748. package/template/.qoder/skills/drawio/scripts/tools/fixtures/ai-icons-package/icons/alpha-color.svg +0 -1
  2749. package/template/.qoder/skills/drawio/scripts/tools/fixtures/ai-icons-package/icons/alpha.svg +0 -1
  2750. package/template/.qoder/skills/drawio/scripts/tools/fixtures/ai-icons-package/icons/beta-brand-color.svg +0 -1
  2751. package/template/.qoder/skills/drawio/scripts/tools/fixtures/ai-icons-package/icons/beta.svg +0 -1
  2752. package/template/.qoder/skills/drawio/scripts/tools/fixtures/ai-icons-package/icons/civitai-text-color.svg +0 -1
  2753. package/template/.qoder/skills/drawio/scripts/tools/fixtures/ai-icons-package/icons/civitai.svg +0 -1
  2754. package/template/.qoder/skills/drawio/scripts/tools/fixtures/ai-icons-package/package.json +0 -5
  2755. package/template/.qoder/skills/drawio/scripts/vendor/elkjs/LICENSE.md +0 -264
  2756. package/template/.qoder/skills/drawio/scripts/vendor/elkjs/README.md +0 -18
  2757. package/template/.qoder/skills/drawio/scripts/vendor/elkjs/elk.bundled.cjs +0 -6589
  2758. package/template/.qoder/skills/drawio/styles/built-in/corporate.json +0 -49
  2759. package/template/.qoder/skills/drawio/styles/built-in/default.json +0 -49
  2760. package/template/.qoder/skills/drawio/styles/built-in/handdrawn.json +0 -49
  2761. package/template/.qoder/skills/drawio/styles/schema.json +0 -112
  2762. package/template/.qoder/skills/drawio-academic-skills/CHANGELOG.md +0 -67
  2763. package/template/.qoder/skills/drawio-academic-skills/README.md +0 -103
  2764. package/template/.qoder/skills/drawio-academic-skills/README_CN.md +0 -103
  2765. package/template/.qoder/skills/drawio-academic-skills/SKILL.md +0 -161
  2766. package/template/.qoder/skills/drawio-academic-skills/__yss_dotfile__.gitignore +0 -12
  2767. package/template/.qoder/skills/drawio-academic-skills/agents/interface.yaml +0 -25
  2768. package/template/.qoder/skills/drawio-academic-skills/agents/openai.yaml +0 -24
  2769. package/template/.qoder/skills/drawio-academic-skills/evals/README.md +0 -13
  2770. package/template/.qoder/skills/drawio-academic-skills/evals/baseline-prompts.json +0 -52
  2771. package/template/.qoder/skills/drawio-academic-skills/evals/darwin-results.tsv +0 -3
  2772. package/template/.qoder/skills/drawio-academic-skills/evals/evals.json +0 -228
  2773. package/template/.qoder/skills/drawio-academic-skills/evals/test-prompts.json +0 -17
  2774. package/template/.qoder/skills/drawio-academic-skills/references/docs/academic-export-checklist.md +0 -45
  2775. package/template/.qoder/skills/drawio-academic-skills/references/docs/academic-figure-playbook.md +0 -349
  2776. package/template/.qoder/skills/drawio-academic-skills/references/docs/publication-overlay.md +0 -206
  2777. package/template/.qoder/skills/drawio-academic-skills/references/examples/ablation-study-pipeline.yaml +0 -39
  2778. package/template/.qoder/skills/drawio-academic-skills/references/examples/ieee-network-paper.yaml +0 -44
  2779. package/template/.qoder/skills/drawio-academic-skills/references/examples/industrial-architecture-cn-paper.yaml +0 -106
  2780. package/template/.qoder/skills/drawio-academic-skills/references/examples/max-pooling-operation-paper.yaml +0 -75
  2781. package/template/.qoder/skills/drawio-academic-skills/references/examples/research-pipeline.yaml +0 -54
  2782. package/template/.qoder/skills/drawio-academic-skills/references/examples/system-architecture-paper.yaml +0 -45
  2783. package/template/.qoder/skills/drawio-academic-skills/references/examples/technical-roadmap-paper.yaml +0 -54
  2784. package/template/.qoder/skills/drawio-academic-skills/references/examples/yolo-model-architecture-paper.yaml +0 -118
  2785. package/template/.qoder/skills/drawio-academic-skills/references/templates/multi-module-system-compact.yaml +0 -251
  2786. package/template/.qoder/skills/drawio-academic-skills/references/templates/neural-network-architecture-compact.yaml +0 -267
  2787. package/template/.qoder/skills/excalidraw-diagram-generator/SKILL.md +0 -634
  2788. package/template/.qoder/skills/excalidraw-diagram-generator/references/element-types.md +0 -497
  2789. package/template/.qoder/skills/excalidraw-diagram-generator/references/excalidraw-schema.md +0 -350
  2790. package/template/.qoder/skills/excalidraw-diagram-generator/scripts/README.md +0 -193
  2791. package/template/.qoder/skills/excalidraw-diagram-generator/scripts/__yss_dotfile__.gitignore +0 -34
  2792. package/template/.qoder/skills/excalidraw-diagram-generator/scripts/add-arrow.py +0 -315
  2793. package/template/.qoder/skills/excalidraw-diagram-generator/scripts/add-icon-to-diagram.py +0 -406
  2794. package/template/.qoder/skills/excalidraw-diagram-generator/scripts/split-excalidraw-library.py +0 -183
  2795. package/template/.qoder/skills/excalidraw-diagram-generator/templates/business-flow-swimlane-template.excalidraw +0 -334
  2796. package/template/.qoder/skills/excalidraw-diagram-generator/templates/class-diagram-template.excalidraw +0 -558
  2797. package/template/.qoder/skills/excalidraw-diagram-generator/templates/data-flow-diagram-template.excalidraw +0 -279
  2798. package/template/.qoder/skills/excalidraw-diagram-generator/templates/er-diagram-template.excalidraw +0 -662
  2799. package/template/.qoder/skills/excalidraw-diagram-generator/templates/flowchart-template.excalidraw +0 -179
  2800. package/template/.qoder/skills/excalidraw-diagram-generator/templates/mindmap-template.excalidraw +0 -244
  2801. package/template/.qoder/skills/excalidraw-diagram-generator/templates/relationship-template.excalidraw +0 -145
  2802. package/template/.qoder/skills/excalidraw-diagram-generator/templates/sequence-diagram-template.excalidraw +0 -509
  2803. package/template/.qoder/skills/kb-retriever/README.md +0 -197
  2804. package/template/.qoder/skills/kb-retriever/README.zh-CN.md +0 -197
  2805. package/template/.qoder/skills/kb-retriever/SKILL.md +0 -250
  2806. package/template/.qoder/skills/kb-retriever/manifest.json +0 -15
  2807. package/template/.qoder/skills/kb-retriever/references/excel_analysis.md +0 -129
  2808. package/template/.qoder/skills/kb-retriever/references/excel_reading.md +0 -72
  2809. package/template/.qoder/skills/kb-retriever/references/pdf_reading.md +0 -362
  2810. package/template/.qoder/skills/kb-retriever/scripts/convert_pdf_to_images.py +0 -35
  2811. package/template/.qoder/skills/yss-db2mybatis/requirements.txt +0 -4
  2812. package/template/.qoder/skills/yss-db2mybatis/scripts/db2mybatis.py +0 -1494
  2813. package/template/.qoder/skills/yss-ddd-scaffold-generator/scripts/generate_scaffold.py +0 -728
  2814. package/template/.qoder/skills/yss-ddd-scaffold-generator/scripts/run_scaffold_verification.py +0 -155
  2815. package/template/.qoder/skills/yss-design-system/scripts/validate-frontmatter.py +0 -50
  2816. package/template/.qoder/skills/yss-source-index/scripts/refresh-yss-skill-index.py +0 -371
  2817. package/template/.qoder/skills/yss-web-controller/scripts/generate_controller.py +0 -293
  2818. package/template/.qoder/skills/yss-web-controller/scripts/test_generate_controller.py +0 -68
  2819. package/template/.trae/skills/beautiful-article/README.md +0 -450
  2820. package/template/.trae/skills/beautiful-article/README.zh-CN.md +0 -450
  2821. package/template/.trae/skills/beautiful-article/SKILL.md +0 -466
  2822. package/template/.trae/skills/beautiful-article/assets/scaffold-template/__yss_dotfile__.npmrc +0 -1
  2823. package/template/.trae/skills/beautiful-article/assets/scaffold-template/article/Article.tsx +0 -69
  2824. package/template/.trae/skills/beautiful-article/assets/scaffold-template/article/Cover.tsx +0 -172
  2825. package/template/.trae/skills/beautiful-article/assets/scaffold-template/article/main.tsx +0 -26
  2826. package/template/.trae/skills/beautiful-article/assets/scaffold-template/article/sections/01-opening.tsx +0 -30
  2827. package/template/.trae/skills/beautiful-article/assets/scaffold-template/index.html +0 -19
  2828. package/template/.trae/skills/beautiful-article/assets/scaffold-template/package.json +0 -26
  2829. package/template/.trae/skills/beautiful-article/assets/scaffold-template/tsconfig.json +0 -20
  2830. package/template/.trae/skills/beautiful-article/assets/scaffold-template/tsconfig.node.json +0 -11
  2831. package/template/.trae/skills/beautiful-article/assets/scaffold-template/vite.config.ts +0 -18
  2832. package/template/.trae/skills/beautiful-article/manifest.json +0 -15
  2833. package/template/.trae/skills/beautiful-article/references/article-types/briefing.md +0 -32
  2834. package/template/.trae/skills/beautiful-article/references/article-types/dialogue.md +0 -30
  2835. package/template/.trae/skills/beautiful-article/references/article-types/essay.md +0 -31
  2836. package/template/.trae/skills/beautiful-article/references/article-types/explainer.md +0 -32
  2837. package/template/.trae/skills/beautiful-article/references/article-types/full-report.md +0 -32
  2838. package/template/.trae/skills/beautiful-article/references/article-types/interactive-explainer.md +0 -66
  2839. package/template/.trae/skills/beautiful-article/references/article-types/longform.md +0 -32
  2840. package/template/.trae/skills/beautiful-article/references/article-types/review.md +0 -32
  2841. package/template/.trae/skills/beautiful-article/references/article-types/tutorial.md +0 -30
  2842. package/template/.trae/skills/beautiful-article/references/article-types/visual-essay.md +0 -33
  2843. package/template/.trae/skills/beautiful-article/references/article-types.md +0 -42
  2844. package/template/.trae/skills/beautiful-article/references/asset-policy.md +0 -71
  2845. package/template/.trae/skills/beautiful-article/references/component-policy.md +0 -103
  2846. package/template/.trae/skills/beautiful-article/references/cover.md +0 -208
  2847. package/template/.trae/skills/beautiful-article/references/harness.md +0 -35
  2848. package/template/.trae/skills/beautiful-article/references/html-output.md +0 -42
  2849. package/template/.trae/skills/beautiful-article/references/information-density.md +0 -50
  2850. package/template/.trae/skills/beautiful-article/references/layout.md +0 -46
  2851. package/template/.trae/skills/beautiful-article/references/pdf-output.md +0 -208
  2852. package/template/.trae/skills/beautiful-article/references/plan-template.md +0 -109
  2853. package/template/.trae/skills/beautiful-article/references/raw-policy.md +0 -86
  2854. package/template/.trae/skills/beautiful-article/references/repair-policy.md +0 -35
  2855. package/template/.trae/skills/beautiful-article/references/review-checklist.md +0 -133
  2856. package/template/.trae/skills/beautiful-article/references/scaffold.md +0 -77
  2857. package/template/.trae/skills/beautiful-article/references/section-build.md +0 -100
  2858. package/template/.trae/skills/beautiful-article/references/source-to-markdown.md +0 -118
  2859. package/template/.trae/skills/beautiful-article/references/theme-selection.md +0 -48
  2860. package/template/.trae/skills/beautiful-article/scripts/html-to-pdf.sh +0 -160
  2861. package/template/.trae/skills/beautiful-article/scripts/pdf-print-overrides.css +0 -192
  2862. package/template/.trae/skills/beautiful-article/scripts/scaffold.sh +0 -172
  2863. package/template/.trae/skills/beautiful-article/scripts/source-to-markdown-markitdown.py +0 -100
  2864. package/template/.trae/skills/beautiful-article/scripts/source-to-markdown.py +0 -174
  2865. package/template/.trae/skills/beautiful-article/theme-profiles/andy.md +0 -57
  2866. package/template/.trae/skills/beautiful-article/theme-profiles/bayer.md +0 -57
  2867. package/template/.trae/skills/beautiful-article/theme-profiles/bodoni.md +0 -57
  2868. package/template/.trae/skills/beautiful-article/theme-profiles/freddie.md +0 -57
  2869. package/template/.trae/skills/beautiful-article/theme-profiles/fuller.md +0 -56
  2870. package/template/.trae/skills/beautiful-article/theme-profiles/index.json +0 -112
  2871. package/template/.trae/skills/beautiful-article/theme-profiles/knuth.md +0 -60
  2872. package/template/.trae/skills/beautiful-article/theme-profiles/press.md +0 -61
  2873. package/template/.trae/skills/beautiful-article/theme-profiles/shannon.md +0 -64
  2874. package/template/.trae/skills/beautiful-article/theme-profiles/sottsass.md +0 -57
  2875. package/template/.trae/skills/beautiful-article/theme-profiles/tufte.md +0 -64
  2876. package/template/.trae/skills/beautiful-article/theme-profiles/vignelli.md +0 -63
  2877. package/template/.trae/skills/drawio/.mcp.json +0 -8
  2878. package/template/.trae/skills/drawio/CHANGELOG.md +0 -216
  2879. package/template/.trae/skills/drawio/SKILL.md +0 -157
  2880. package/template/.trae/skills/drawio/agents/interface.yaml +0 -26
  2881. package/template/.trae/skills/drawio/agents/openai.yaml +0 -26
  2882. package/template/.trae/skills/drawio/assets/catalog/ai-icons.json.gz +0 -0
  2883. package/template/.trae/skills/drawio/assets/catalog/shape-catalog.json.gz +0 -0
  2884. package/template/.trae/skills/drawio/assets/catalog/shape-index.json.gz +0 -0
  2885. package/template/.trae/skills/drawio/assets/examples/login-flow-test.drawio +0 -6
  2886. package/template/.trae/skills/drawio/assets/examples/login-flow.drawio +0 -6
  2887. package/template/.trae/skills/drawio/assets/examples/microservices.drawio +0 -6
  2888. package/template/.trae/skills/drawio/assets/examples/neural-network.drawio +0 -6
  2889. package/template/.trae/skills/drawio/assets/licenses/architecture-diagram-generator-MIT.txt +0 -26
  2890. package/template/.trae/skills/drawio/assets/licenses/drawio-mcp-shape-index-Apache-2.0.txt +0 -8
  2891. package/template/.trae/skills/drawio/assets/licenses/lobe-icons-MIT.txt +0 -26
  2892. package/template/.trae/skills/drawio/assets/licenses/lucide-ISC.txt +0 -41
  2893. package/template/.trae/skills/drawio/assets/palettes/c4-blue.json +0 -29
  2894. package/template/.trae/skills/drawio/assets/palettes/cloud-aws.json +0 -30
  2895. package/template/.trae/skills/drawio/assets/palettes/drawio-classic.json +0 -21
  2896. package/template/.trae/skills/drawio/assets/palettes/ieee-bw.json +0 -26
  2897. package/template/.trae/skills/drawio/assets/palettes/ieee-color.json +0 -17
  2898. package/template/.trae/skills/drawio/assets/palettes/journal-jama.json +0 -20
  2899. package/template/.trae/skills/drawio/assets/palettes/journal-npg.json +0 -23
  2900. package/template/.trae/skills/drawio/assets/palettes/matlab-lines.json +0 -20
  2901. package/template/.trae/skills/drawio/assets/palettes/morandi.json +0 -21
  2902. package/template/.trae/skills/drawio/assets/palettes/okabe-ito.json +0 -21
  2903. package/template/.trae/skills/drawio/assets/palettes/seaborn-colorblind.json +0 -23
  2904. package/template/.trae/skills/drawio/assets/palettes/tol-bright.json +0 -20
  2905. package/template/.trae/skills/drawio/assets/palettes/tol-high-contrast.json +0 -18
  2906. package/template/.trae/skills/drawio/assets/palettes/tol-light-fill.json +0 -22
  2907. package/template/.trae/skills/drawio/assets/palettes/tol-muted.json +0 -22
  2908. package/template/.trae/skills/drawio/assets/schemas/graph-projection.schema.json +0 -135
  2909. package/template/.trae/skills/drawio/assets/schemas/spec.schema.json +0 -620
  2910. package/template/.trae/skills/drawio/assets/themes/academic-color.json +0 -299
  2911. package/template/.trae/skills/drawio/assets/themes/academic.json +0 -245
  2912. package/template/.trae/skills/drawio/assets/themes/arch-dark.json +0 -253
  2913. package/template/.trae/skills/drawio/assets/themes/blueprint.json +0 -246
  2914. package/template/.trae/skills/drawio/assets/themes/dark-luxury.json +0 -246
  2915. package/template/.trae/skills/drawio/assets/themes/dark-terminal.json +0 -244
  2916. package/template/.trae/skills/drawio/assets/themes/dark.json +0 -220
  2917. package/template/.trae/skills/drawio/assets/themes/high-contrast.json +0 -220
  2918. package/template/.trae/skills/drawio/assets/themes/nature.json +0 -220
  2919. package/template/.trae/skills/drawio/assets/themes/notion-clean.json +0 -246
  2920. package/template/.trae/skills/drawio/assets/themes/tech-blue.json +0 -220
  2921. package/template/.trae/skills/drawio/evals/README.md +0 -17
  2922. package/template/.trae/skills/drawio/evals/ai-icon-catalog-cases.json +0 -89
  2923. package/template/.trae/skills/drawio/evals/baseline-prompts.json +0 -122
  2924. package/template/.trae/skills/drawio/evals/darwin-results.tsv +0 -4
  2925. package/template/.trae/skills/drawio/evals/evals.json +0 -223
  2926. package/template/.trae/skills/drawio/evals/evidence/ai-icon-catalog-desktop.json +0 -134
  2927. package/template/.trae/skills/drawio/evals/fixtures/ai-icons-advanced-svg.yaml +0 -25
  2928. package/template/.trae/skills/drawio/evals/fixtures/ai-icons-cjk-agent-rag.yaml +0 -55
  2929. package/template/.trae/skills/drawio/evals/fixtures/ai-icons-core-aliases.yaml +0 -50
  2930. package/template/.trae/skills/drawio/evals/fixtures/ai-icons-current-color.yaml +0 -25
  2931. package/template/.trae/skills/drawio/evals/fixtures/ai-icons-gradients.yaml +0 -25
  2932. package/template/.trae/skills/drawio/evals/fixtures/import-simple-compressed.drawio +0 -5
  2933. package/template/.trae/skills/drawio/evals/fixtures/import-simple.drawio +0 -28
  2934. package/template/.trae/skills/drawio/evals/fixtures/industrial-architecture.yaml +0 -239
  2935. package/template/.trae/skills/drawio/evals/fixtures/replicate-academic-highlight.svg +0 -13
  2936. package/template/.trae/skills/drawio/evals/fixtures/replicate-brand-architecture.svg +0 -14
  2937. package/template/.trae/skills/drawio/evals/fixtures/replicate-warm-approval.svg +0 -13
  2938. package/template/.trae/skills/drawio/evals/fixtures/vision-tall-workflow.yaml +0 -47
  2939. package/template/.trae/skills/drawio/evals/upstream-integration-cases.json +0 -78
  2940. package/template/.trae/skills/drawio/evals/vision-preview-cases.json +0 -147
  2941. package/template/.trae/skills/drawio/references/docs/agent-diagrams.md +0 -164
  2942. package/template/.trae/skills/drawio/references/docs/ah-format.md +0 -322
  2943. package/template/.trae/skills/drawio/references/docs/architecture-diagrams.md +0 -159
  2944. package/template/.trae/skills/drawio/references/docs/canonical-graph-projection.md +0 -54
  2945. package/template/.trae/skills/drawio/references/docs/code-importers.md +0 -53
  2946. package/template/.trae/skills/drawio/references/docs/config-importers.md +0 -68
  2947. package/template/.trae/skills/drawio/references/docs/design-system/README.md +0 -204
  2948. package/template/.trae/skills/drawio/references/docs/design-system/color-guide.md +0 -255
  2949. package/template/.trae/skills/drawio/references/docs/design-system/connectors.md +0 -388
  2950. package/template/.trae/skills/drawio/references/docs/design-system/formulas.md +0 -196
  2951. package/template/.trae/skills/drawio/references/docs/design-system/icons.md +0 -332
  2952. package/template/.trae/skills/drawio/references/docs/design-system/shapes.md +0 -269
  2953. package/template/.trae/skills/drawio/references/docs/design-system/specification.md +0 -754
  2954. package/template/.trae/skills/drawio/references/docs/design-system/themes.md +0 -441
  2955. package/template/.trae/skills/drawio/references/docs/design-system/tokens.md +0 -232
  2956. package/template/.trae/skills/drawio/references/docs/edge-quality-rules.md +0 -65
  2957. package/template/.trae/skills/drawio/references/docs/ieee-network-diagrams.md +0 -145
  2958. package/template/.trae/skills/drawio/references/docs/live-snapshots-drift.md +0 -72
  2959. package/template/.trae/skills/drawio/references/docs/math-typesetting.md +0 -258
  2960. package/template/.trae/skills/drawio/references/docs/mcp-tools.md +0 -85
  2961. package/template/.trae/skills/drawio/references/docs/migration-readiness.md +0 -73
  2962. package/template/.trae/skills/drawio/references/docs/stencil-library-guide.md +0 -97
  2963. package/template/.trae/skills/drawio/references/docs/style-extraction.md +0 -261
  2964. package/template/.trae/skills/drawio/references/docs/style-presets.md +0 -126
  2965. package/template/.trae/skills/drawio/references/docs/upstream-capability-compatibility.md +0 -61
  2966. package/template/.trae/skills/drawio/references/docs/xml-format.md +0 -53
  2967. package/template/.trae/skills/drawio/references/examples/README.md +0 -33
  2968. package/template/.trae/skills/drawio/references/examples/agentic-rag.yaml +0 -71
  2969. package/template/.trae/skills/drawio/references/examples/arch-dark-aws-serverless.yaml +0 -103
  2970. package/template/.trae/skills/drawio/references/examples/arch-dark-microservices.yaml +0 -146
  2971. package/template/.trae/skills/drawio/references/examples/arch-dark-web-app.yaml +0 -62
  2972. package/template/.trae/skills/drawio/references/examples/auto-layout-workflow.yaml +0 -81
  2973. package/template/.trae/skills/drawio/references/examples/aws-vpc-topology.yaml +0 -66
  2974. package/template/.trae/skills/drawio/references/examples/campus-lan-topology.yaml +0 -89
  2975. package/template/.trae/skills/drawio/references/examples/cloud-reference-architecture.yaml +0 -34
  2976. package/template/.trae/skills/drawio/references/examples/e-commerce.yaml +0 -141
  2977. package/template/.trae/skills/drawio/references/examples/importers/README.md +0 -10
  2978. package/template/.trae/skills/drawio/references/examples/importers/live/compose-drift-evidence.json +0 -49
  2979. package/template/.trae/skills/drawio/references/examples/importers/live/compose-drift-report.json +0 -300
  2980. package/template/.trae/skills/drawio/references/examples/importers/live/compose-drift.spec.yaml +0 -75
  2981. package/template/.trae/skills/drawio/references/examples/importers/live/docker-inspect.json +0 -55
  2982. package/template/.trae/skills/drawio/references/examples/importers/live/drift-declared-compose.yaml +0 -13
  2983. package/template/.trae/skills/drawio/references/examples/importers/live/kubernetes-live.json +0 -71
  2984. package/template/.trae/skills/drawio/references/examples/importers/live/terraform-state.json +0 -70
  2985. package/template/.trae/skills/drawio/references/examples/importers/schema.sql +0 -10
  2986. package/template/.trae/skills/drawio/references/examples/importers/terraform.tf +0 -9
  2987. package/template/.trae/skills/drawio/references/examples/login-flow.yaml +0 -65
  2988. package/template/.trae/skills/drawio/references/examples/mem0-memory-layer.yaml +0 -63
  2989. package/template/.trae/skills/drawio/references/examples/microservices.yaml +0 -58
  2990. package/template/.trae/skills/drawio/references/examples/multi-agent-orchestration.yaml +0 -67
  2991. package/template/.trae/skills/drawio/references/examples/neural-network.yaml +0 -66
  2992. package/template/.trae/skills/drawio/references/examples/onprem-dmz-topology.yaml +0 -62
  2993. package/template/.trae/skills/drawio/references/examples/palettes/README.md +0 -29
  2994. package/template/.trae/skills/drawio/references/examples/palettes/c4-blue.drawio +0 -6
  2995. package/template/.trae/skills/drawio/references/examples/palettes/c4-blue.svg +0 -36
  2996. package/template/.trae/skills/drawio/references/examples/palettes/cloud-aws.drawio +0 -6
  2997. package/template/.trae/skills/drawio/references/examples/palettes/cloud-aws.svg +0 -36
  2998. package/template/.trae/skills/drawio/references/examples/palettes/drawio-classic.drawio +0 -6
  2999. package/template/.trae/skills/drawio/references/examples/palettes/drawio-classic.svg +0 -36
  3000. package/template/.trae/skills/drawio/references/examples/palettes/ieee-bw.drawio +0 -6
  3001. package/template/.trae/skills/drawio/references/examples/palettes/ieee-bw.svg +0 -36
  3002. package/template/.trae/skills/drawio/references/examples/palettes/ieee-color.drawio +0 -6
  3003. package/template/.trae/skills/drawio/references/examples/palettes/ieee-color.svg +0 -36
  3004. package/template/.trae/skills/drawio/references/examples/palettes/journal-jama.drawio +0 -6
  3005. package/template/.trae/skills/drawio/references/examples/palettes/journal-jama.svg +0 -36
  3006. package/template/.trae/skills/drawio/references/examples/palettes/journal-npg.drawio +0 -6
  3007. package/template/.trae/skills/drawio/references/examples/palettes/journal-npg.svg +0 -36
  3008. package/template/.trae/skills/drawio/references/examples/palettes/matlab-lines.drawio +0 -6
  3009. package/template/.trae/skills/drawio/references/examples/palettes/matlab-lines.svg +0 -36
  3010. package/template/.trae/skills/drawio/references/examples/palettes/morandi.drawio +0 -6
  3011. package/template/.trae/skills/drawio/references/examples/palettes/morandi.svg +0 -36
  3012. package/template/.trae/skills/drawio/references/examples/palettes/okabe-ito.drawio +0 -6
  3013. package/template/.trae/skills/drawio/references/examples/palettes/okabe-ito.svg +0 -36
  3014. package/template/.trae/skills/drawio/references/examples/palettes/palette-swatch.template.yaml +0 -56
  3015. package/template/.trae/skills/drawio/references/examples/palettes/seaborn-colorblind.drawio +0 -6
  3016. package/template/.trae/skills/drawio/references/examples/palettes/seaborn-colorblind.svg +0 -36
  3017. package/template/.trae/skills/drawio/references/examples/palettes/tol-bright.drawio +0 -6
  3018. package/template/.trae/skills/drawio/references/examples/palettes/tol-bright.svg +0 -36
  3019. package/template/.trae/skills/drawio/references/examples/palettes/tol-high-contrast.drawio +0 -6
  3020. package/template/.trae/skills/drawio/references/examples/palettes/tol-high-contrast.svg +0 -36
  3021. package/template/.trae/skills/drawio/references/examples/palettes/tol-light-fill.drawio +0 -6
  3022. package/template/.trae/skills/drawio/references/examples/palettes/tol-light-fill.svg +0 -36
  3023. package/template/.trae/skills/drawio/references/examples/palettes/tol-muted.drawio +0 -6
  3024. package/template/.trae/skills/drawio/references/examples/palettes/tol-muted.svg +0 -36
  3025. package/template/.trae/skills/drawio/references/examples/rag-pipeline.yaml +0 -67
  3026. package/template/.trae/skills/drawio/references/examples/replicated-brand-flow.yaml +0 -89
  3027. package/template/.trae/skills/drawio/references/examples/swimlane-engineering-review.yaml +0 -44
  3028. package/template/.trae/skills/drawio/references/examples/tiered-network-topology.yaml +0 -59
  3029. package/template/.trae/skills/drawio/references/examples/tool-call-loop.yaml +0 -63
  3030. package/template/.trae/skills/drawio/references/examples/vendor-device-mapping.yaml +0 -46
  3031. package/template/.trae/skills/drawio/references/official/style-reference.md +0 -936
  3032. package/template/.trae/skills/drawio/references/official/xml-reference.md +0 -262
  3033. package/template/.trae/skills/drawio/references/palette.schema.json +0 -59
  3034. package/template/.trae/skills/drawio/references/theme.schema.json +0 -249
  3035. package/template/.trae/skills/drawio/references/upstream/pure-drawio-skill.md +0 -615
  3036. package/template/.trae/skills/drawio/references/workflows/create.md +0 -195
  3037. package/template/.trae/skills/drawio/references/workflows/edit.md +0 -174
  3038. package/template/.trae/skills/drawio/references/workflows/replicate.md +0 -239
  3039. package/template/.trae/skills/drawio/references/workflows/visual-review.md +0 -108
  3040. package/template/.trae/skills/drawio/reports/output_quality_scorecard.md +0 -106
  3041. package/template/.trae/skills/drawio/reports/upstream-port-release-evidence.md +0 -43
  3042. package/template/.trae/skills/drawio/scripts/adapters/ci.js +0 -139
  3043. package/template/.trae/skills/drawio/scripts/adapters/ci.test.js +0 -41
  3044. package/template/.trae/skills/drawio/scripts/adapters/code-common.js +0 -171
  3045. package/template/.trae/skills/drawio/scripts/adapters/code-imports.test.js +0 -80
  3046. package/template/.trae/skills/drawio/scripts/adapters/code-parsers.integration.test.js +0 -71
  3047. package/template/.trae/skills/drawio/scripts/adapters/compose.js +0 -134
  3048. package/template/.trae/skills/drawio/scripts/adapters/compose.test.js +0 -54
  3049. package/template/.trae/skills/drawio/scripts/adapters/config-adapters.integration.test.js +0 -58
  3050. package/template/.trae/skills/drawio/scripts/adapters/config-common.js +0 -131
  3051. package/template/.trae/skills/drawio/scripts/adapters/config-common.test.js +0 -32
  3052. package/template/.trae/skills/drawio/scripts/adapters/docker-inspect.js +0 -127
  3053. package/template/.trae/skills/drawio/scripts/adapters/docker-inspect.test.js +0 -62
  3054. package/template/.trae/skills/drawio/scripts/adapters/fixtures/raster-extraction.json +0 -31
  3055. package/template/.trae/skills/drawio/scripts/adapters/go-code-adapter.test.js +0 -59
  3056. package/template/.trae/skills/drawio/scripts/adapters/go-code.js +0 -168
  3057. package/template/.trae/skills/drawio/scripts/adapters/graph-drift.file.test.js +0 -67
  3058. package/template/.trae/skills/drawio/scripts/adapters/graph-drift.js +0 -358
  3059. package/template/.trae/skills/drawio/scripts/adapters/graph-drift.test.js +0 -272
  3060. package/template/.trae/skills/drawio/scripts/adapters/graph-projection.js +0 -335
  3061. package/template/.trae/skills/drawio/scripts/adapters/graph-projection.test.js +0 -141
  3062. package/template/.trae/skills/drawio/scripts/adapters/identity.js +0 -244
  3063. package/template/.trae/skills/drawio/scripts/adapters/identity.test.js +0 -123
  3064. package/template/.trae/skills/drawio/scripts/adapters/index.js +0 -489
  3065. package/template/.trae/skills/drawio/scripts/adapters/index.test.js +0 -152
  3066. package/template/.trae/skills/drawio/scripts/adapters/js-code-adapter.test.js +0 -42
  3067. package/template/.trae/skills/drawio/scripts/adapters/js-code.js +0 -141
  3068. package/template/.trae/skills/drawio/scripts/adapters/kubernetes-live.test.js +0 -46
  3069. package/template/.trae/skills/drawio/scripts/adapters/kubernetes.js +0 -258
  3070. package/template/.trae/skills/drawio/scripts/adapters/kubernetes.test.js +0 -81
  3071. package/template/.trae/skills/drawio/scripts/adapters/openapi.js +0 -98
  3072. package/template/.trae/skills/drawio/scripts/adapters/openapi.test.js +0 -46
  3073. package/template/.trae/skills/drawio/scripts/adapters/optional-python-code.js +0 -16
  3074. package/template/.trae/skills/drawio/scripts/adapters/optional-python.integration.test.js +0 -32
  3075. package/template/.trae/skills/drawio/scripts/adapters/optional-python.js +0 -127
  3076. package/template/.trae/skills/drawio/scripts/adapters/optional-python.test.js +0 -55
  3077. package/template/.trae/skills/drawio/scripts/adapters/projection-to-spec.js +0 -116
  3078. package/template/.trae/skills/drawio/scripts/adapters/projection-to-spec.test.js +0 -139
  3079. package/template/.trae/skills/drawio/scripts/adapters/python/code-parser-worker.py +0 -93
  3080. package/template/.trae/skills/drawio/scripts/adapters/python/config-parser-worker.py +0 -237
  3081. package/template/.trae/skills/drawio/scripts/adapters/python/requirements.txt +0 -2
  3082. package/template/.trae/skills/drawio/scripts/adapters/python-code-adapter.test.js +0 -127
  3083. package/template/.trae/skills/drawio/scripts/adapters/python-code.js +0 -246
  3084. package/template/.trae/skills/drawio/scripts/adapters/raster-extraction.js +0 -258
  3085. package/template/.trae/skills/drawio/scripts/adapters/raster-extraction.test.js +0 -308
  3086. package/template/.trae/skills/drawio/scripts/adapters/rust-code-adapter.test.js +0 -64
  3087. package/template/.trae/skills/drawio/scripts/adapters/rust-code.js +0 -207
  3088. package/template/.trae/skills/drawio/scripts/adapters/sql-ddl.js +0 -118
  3089. package/template/.trae/skills/drawio/scripts/adapters/sql-ddl.test.js +0 -56
  3090. package/template/.trae/skills/drawio/scripts/adapters/terraform-config.js +0 -141
  3091. package/template/.trae/skills/drawio/scripts/adapters/terraform-config.test.js +0 -67
  3092. package/template/.trae/skills/drawio/scripts/adapters/terraform-state.js +0 -157
  3093. package/template/.trae/skills/drawio/scripts/adapters/terraform-state.test.js +0 -69
  3094. package/template/.trae/skills/drawio/scripts/cli.js +0 -700
  3095. package/template/.trae/skills/drawio/scripts/dsl/ah-to-drawio.js +0 -276
  3096. package/template/.trae/skills/drawio/scripts/dsl/ah-to-drawio.test.js +0 -77
  3097. package/template/.trae/skills/drawio/scripts/dsl/ai-icon-catalog.js +0 -126
  3098. package/template/.trae/skills/drawio/scripts/dsl/ai-icon-catalog.test.js +0 -86
  3099. package/template/.trae/skills/drawio/scripts/dsl/auto-layout.js +0 -206
  3100. package/template/.trae/skills/drawio/scripts/dsl/auto-layout.test.js +0 -249
  3101. package/template/.trae/skills/drawio/scripts/dsl/catalog-ranking.js +0 -54
  3102. package/template/.trae/skills/drawio/scripts/dsl/catalog-search.js +0 -58
  3103. package/template/.trae/skills/drawio/scripts/dsl/catalog-search.test.js +0 -44
  3104. package/template/.trae/skills/drawio/scripts/dsl/document-spec.js +0 -256
  3105. package/template/.trae/skills/drawio/scripts/dsl/document-spec.test.js +0 -147
  3106. package/template/.trae/skills/drawio/scripts/dsl/drawio-to-spec.js +0 -497
  3107. package/template/.trae/skills/drawio/scripts/dsl/examples-baseline.test.js +0 -30
  3108. package/template/.trae/skills/drawio/scripts/dsl/icon-mappings.js +0 -65
  3109. package/template/.trae/skills/drawio/scripts/dsl/icon-mappings.test.js +0 -19
  3110. package/template/.trae/skills/drawio/scripts/dsl/icon-resolver.js +0 -153
  3111. package/template/.trae/skills/drawio/scripts/dsl/icon-resolver.test.js +0 -62
  3112. package/template/.trae/skills/drawio/scripts/dsl/multi-page.js +0 -224
  3113. package/template/.trae/skills/drawio/scripts/dsl/multi-page.test.js +0 -107
  3114. package/template/.trae/skills/drawio/scripts/dsl/palette-catalog.test.js +0 -138
  3115. package/template/.trae/skills/drawio/scripts/dsl/palette-integration.test.js +0 -182
  3116. package/template/.trae/skills/drawio/scripts/dsl/palette-validate.js +0 -91
  3117. package/template/.trae/skills/drawio/scripts/dsl/palette.js +0 -302
  3118. package/template/.trae/skills/drawio/scripts/dsl/palette.test.js +0 -197
  3119. package/template/.trae/skills/drawio/scripts/dsl/shape-catalog.js +0 -89
  3120. package/template/.trae/skills/drawio/scripts/dsl/shape-catalog.test.js +0 -21
  3121. package/template/.trae/skills/drawio/scripts/dsl/spec-to-drawio.js +0 -3739
  3122. package/template/.trae/skills/drawio/scripts/dsl/spec-to-drawio.test.js +0 -3022
  3123. package/template/.trae/skills/drawio/scripts/generate-palette-swatches.js +0 -87
  3124. package/template/.trae/skills/drawio/scripts/install.bat +0 -64
  3125. package/template/.trae/skills/drawio/scripts/install.sh +0 -44
  3126. package/template/.trae/skills/drawio/scripts/math/index.js +0 -317
  3127. package/template/.trae/skills/drawio/scripts/math/index.test.js +0 -62
  3128. package/template/.trae/skills/drawio/scripts/package.json +0 -1
  3129. package/template/.trae/skills/drawio/scripts/postprocess/artifacts.js +0 -142
  3130. package/template/.trae/skills/drawio/scripts/postprocess/artifacts.test.js +0 -86
  3131. package/template/.trae/skills/drawio/scripts/postprocess/cli.js +0 -228
  3132. package/template/.trae/skills/drawio/scripts/postprocess/cli.test.js +0 -129
  3133. package/template/.trae/skills/drawio/scripts/postprocess/fixtures/bundle.yaml +0 -75
  3134. package/template/.trae/skills/drawio/scripts/postprocess/fixtures/legacy.yaml +0 -21
  3135. package/template/.trae/skills/drawio/scripts/postprocess/html.js +0 -197
  3136. package/template/.trae/skills/drawio/scripts/postprocess/html.test.js +0 -50
  3137. package/template/.trae/skills/drawio/scripts/postprocess/index.js +0 -5
  3138. package/template/.trae/skills/drawio/scripts/postprocess/input.js +0 -112
  3139. package/template/.trae/skills/drawio/scripts/postprocess/input.test.js +0 -73
  3140. package/template/.trae/skills/drawio/scripts/postprocess/mutate.js +0 -584
  3141. package/template/.trae/skills/drawio/scripts/postprocess/mutate.test.js +0 -193
  3142. package/template/.trae/skills/drawio/scripts/postprocess/projection.js +0 -178
  3143. package/template/.trae/skills/drawio/scripts/postprocess/projection.test.js +0 -67
  3144. package/template/.trae/skills/drawio/scripts/runtime/artifacts.js +0 -283
  3145. package/template/.trae/skills/drawio/scripts/runtime/desktop.js +0 -204
  3146. package/template/.trae/skills/drawio/scripts/runtime/desktop.test.js +0 -121
  3147. package/template/.trae/skills/drawio/scripts/runtime/diagrams-net-url.js +0 -122
  3148. package/template/.trae/skills/drawio/scripts/runtime/export-stability.js +0 -75
  3149. package/template/.trae/skills/drawio/scripts/runtime/export-stability.test.js +0 -81
  3150. package/template/.trae/skills/drawio/scripts/runtime/png-inspection.js +0 -157
  3151. package/template/.trae/skills/drawio/scripts/runtime/png-inspection.test.js +0 -120
  3152. package/template/.trae/skills/drawio/scripts/runtime/vision-preview.js +0 -77
  3153. package/template/.trae/skills/drawio/scripts/runtime/vision-preview.test.js +0 -103
  3154. package/template/.trae/skills/drawio/scripts/shared/ai-icon-contract.js +0 -13
  3155. package/template/.trae/skills/drawio/scripts/shared/xml-utils.js +0 -241
  3156. package/template/.trae/skills/drawio/scripts/svg/drawio-to-svg.js +0 -918
  3157. package/template/.trae/skills/drawio/scripts/svg/drawio-to-svg.test.js +0 -763
  3158. package/template/.trae/skills/drawio/scripts/tools/build-ai-icon-catalog.js +0 -208
  3159. package/template/.trae/skills/drawio/scripts/tools/build-ai-icon-catalog.test.js +0 -107
  3160. package/template/.trae/skills/drawio/scripts/tools/build-shape-catalog.js +0 -84
  3161. package/template/.trae/skills/drawio/scripts/tools/build-shape-catalog.test.js +0 -43
  3162. package/template/.trae/skills/drawio/scripts/tools/fixtures/ai-icons-package/icons/alpha-color.svg +0 -1
  3163. package/template/.trae/skills/drawio/scripts/tools/fixtures/ai-icons-package/icons/alpha.svg +0 -1
  3164. package/template/.trae/skills/drawio/scripts/tools/fixtures/ai-icons-package/icons/beta-brand-color.svg +0 -1
  3165. package/template/.trae/skills/drawio/scripts/tools/fixtures/ai-icons-package/icons/beta.svg +0 -1
  3166. package/template/.trae/skills/drawio/scripts/tools/fixtures/ai-icons-package/icons/civitai-text-color.svg +0 -1
  3167. package/template/.trae/skills/drawio/scripts/tools/fixtures/ai-icons-package/icons/civitai.svg +0 -1
  3168. package/template/.trae/skills/drawio/scripts/tools/fixtures/ai-icons-package/package.json +0 -5
  3169. package/template/.trae/skills/drawio/scripts/vendor/elkjs/LICENSE.md +0 -264
  3170. package/template/.trae/skills/drawio/scripts/vendor/elkjs/README.md +0 -18
  3171. package/template/.trae/skills/drawio/scripts/vendor/elkjs/elk.bundled.cjs +0 -6589
  3172. package/template/.trae/skills/drawio/styles/built-in/corporate.json +0 -49
  3173. package/template/.trae/skills/drawio/styles/built-in/default.json +0 -49
  3174. package/template/.trae/skills/drawio/styles/built-in/handdrawn.json +0 -49
  3175. package/template/.trae/skills/drawio/styles/schema.json +0 -112
  3176. package/template/.trae/skills/drawio-academic-skills/CHANGELOG.md +0 -67
  3177. package/template/.trae/skills/drawio-academic-skills/README.md +0 -103
  3178. package/template/.trae/skills/drawio-academic-skills/README_CN.md +0 -103
  3179. package/template/.trae/skills/drawio-academic-skills/SKILL.md +0 -161
  3180. package/template/.trae/skills/drawio-academic-skills/__yss_dotfile__.gitignore +0 -12
  3181. package/template/.trae/skills/drawio-academic-skills/agents/interface.yaml +0 -25
  3182. package/template/.trae/skills/drawio-academic-skills/agents/openai.yaml +0 -24
  3183. package/template/.trae/skills/drawio-academic-skills/evals/README.md +0 -13
  3184. package/template/.trae/skills/drawio-academic-skills/evals/baseline-prompts.json +0 -52
  3185. package/template/.trae/skills/drawio-academic-skills/evals/darwin-results.tsv +0 -3
  3186. package/template/.trae/skills/drawio-academic-skills/evals/evals.json +0 -228
  3187. package/template/.trae/skills/drawio-academic-skills/evals/test-prompts.json +0 -17
  3188. package/template/.trae/skills/drawio-academic-skills/references/docs/academic-export-checklist.md +0 -45
  3189. package/template/.trae/skills/drawio-academic-skills/references/docs/academic-figure-playbook.md +0 -349
  3190. package/template/.trae/skills/drawio-academic-skills/references/docs/publication-overlay.md +0 -206
  3191. package/template/.trae/skills/drawio-academic-skills/references/examples/ablation-study-pipeline.yaml +0 -39
  3192. package/template/.trae/skills/drawio-academic-skills/references/examples/ieee-network-paper.yaml +0 -44
  3193. package/template/.trae/skills/drawio-academic-skills/references/examples/industrial-architecture-cn-paper.yaml +0 -106
  3194. package/template/.trae/skills/drawio-academic-skills/references/examples/max-pooling-operation-paper.yaml +0 -75
  3195. package/template/.trae/skills/drawio-academic-skills/references/examples/research-pipeline.yaml +0 -54
  3196. package/template/.trae/skills/drawio-academic-skills/references/examples/system-architecture-paper.yaml +0 -45
  3197. package/template/.trae/skills/drawio-academic-skills/references/examples/technical-roadmap-paper.yaml +0 -54
  3198. package/template/.trae/skills/drawio-academic-skills/references/examples/yolo-model-architecture-paper.yaml +0 -118
  3199. package/template/.trae/skills/drawio-academic-skills/references/templates/multi-module-system-compact.yaml +0 -251
  3200. package/template/.trae/skills/drawio-academic-skills/references/templates/neural-network-architecture-compact.yaml +0 -267
  3201. package/template/.trae/skills/excalidraw-diagram-generator/SKILL.md +0 -634
  3202. package/template/.trae/skills/excalidraw-diagram-generator/references/element-types.md +0 -497
  3203. package/template/.trae/skills/excalidraw-diagram-generator/references/excalidraw-schema.md +0 -350
  3204. package/template/.trae/skills/excalidraw-diagram-generator/scripts/README.md +0 -193
  3205. package/template/.trae/skills/excalidraw-diagram-generator/scripts/__yss_dotfile__.gitignore +0 -34
  3206. package/template/.trae/skills/excalidraw-diagram-generator/scripts/add-arrow.py +0 -315
  3207. package/template/.trae/skills/excalidraw-diagram-generator/scripts/add-icon-to-diagram.py +0 -406
  3208. package/template/.trae/skills/excalidraw-diagram-generator/scripts/split-excalidraw-library.py +0 -183
  3209. package/template/.trae/skills/excalidraw-diagram-generator/templates/business-flow-swimlane-template.excalidraw +0 -334
  3210. package/template/.trae/skills/excalidraw-diagram-generator/templates/class-diagram-template.excalidraw +0 -558
  3211. package/template/.trae/skills/excalidraw-diagram-generator/templates/data-flow-diagram-template.excalidraw +0 -279
  3212. package/template/.trae/skills/excalidraw-diagram-generator/templates/er-diagram-template.excalidraw +0 -662
  3213. package/template/.trae/skills/excalidraw-diagram-generator/templates/flowchart-template.excalidraw +0 -179
  3214. package/template/.trae/skills/excalidraw-diagram-generator/templates/mindmap-template.excalidraw +0 -244
  3215. package/template/.trae/skills/excalidraw-diagram-generator/templates/relationship-template.excalidraw +0 -145
  3216. package/template/.trae/skills/excalidraw-diagram-generator/templates/sequence-diagram-template.excalidraw +0 -509
  3217. package/template/.trae/skills/kb-retriever/README.md +0 -197
  3218. package/template/.trae/skills/kb-retriever/README.zh-CN.md +0 -197
  3219. package/template/.trae/skills/kb-retriever/SKILL.md +0 -250
  3220. package/template/.trae/skills/kb-retriever/manifest.json +0 -15
  3221. package/template/.trae/skills/kb-retriever/references/excel_analysis.md +0 -129
  3222. package/template/.trae/skills/kb-retriever/references/excel_reading.md +0 -72
  3223. package/template/.trae/skills/kb-retriever/references/pdf_reading.md +0 -362
  3224. package/template/.trae/skills/kb-retriever/scripts/convert_pdf_to_images.py +0 -35
  3225. package/template/.trae/skills/yss-db2mybatis/requirements.txt +0 -4
  3226. package/template/.trae/skills/yss-db2mybatis/scripts/db2mybatis.py +0 -1494
  3227. package/template/.trae/skills/yss-ddd-scaffold-generator/scripts/generate_scaffold.py +0 -728
  3228. package/template/.trae/skills/yss-ddd-scaffold-generator/scripts/run_scaffold_verification.py +0 -155
  3229. package/template/.trae/skills/yss-design-system/scripts/validate-frontmatter.py +0 -50
  3230. package/template/.trae/skills/yss-source-index/scripts/refresh-yss-skill-index.py +0 -371
  3231. package/template/.trae/skills/yss-web-controller/scripts/generate_controller.py +0 -293
  3232. package/template/.trae/skills/yss-web-controller/scripts/test_generate_controller.py +0 -68
  3233. package/template/docs/adr/0004-split-lifecycle-and-router-registry-domains.md +0 -5
  3234. package/template/docs/adr/0005-cross-repository-ecosystem-release-manifest.md +0 -5
  3235. package/template/docs/adr/0007-separate-skill-routing-registry-from-integrity-lock.md +0 -5
  3236. package/template/docs/implementation/create-yss-spec-repository-mode-contract.md +0 -90
  3237. package/template/docs/process/harness-optimization-backlog.md +0 -9
  3238. package/template/docs/process/harness-work-unit-map.md +0 -16
  3239. package/template/docs/releases/next-major-template-governance.md +0 -32
  3240. package/template/docs/reviews/lifecycle-registry-phase0-1-red-green-2026-08-17.md +0 -61
  3241. package/template/docs/reviews/matt-yss-p0-ticket-review-git-red-green-2026-08-17.md +0 -91
  3242. package/template/docs/reviews/openapi-skill-primary-source-research-2026-08-16.md +0 -76
  3243. package/template/docs/reviews/openapi-yaml-first-independent-review-2026-08-16.md +0 -121
  3244. package/template/docs/reviews/openapi-yaml-first-pressure-scenarios-2026-08-16.md +0 -191
  3245. package/template/docs/reviews/openapi-yaml-first-red-green-2026-08-16.md +0 -76
  3246. package/template/docs/reviews/openapi-yaml-json-output-independent-review-2026-08-16.md +0 -30
  3247. package/template/docs/reviews/openapi-yaml-json-output-scope-red-green-2026-08-16.md +0 -154
  3248. package/template/docs/reviews/research-create-yss-spec-2026-08-10.md +0 -141
  3249. package/template/docs/reviews/research-create-yss-spec-refresh-2026-08-16.md +0 -164
  3250. package/template/docs/reviews/security-permission-lifecycle-simplification-red-green-2026-08-16.md +0 -43
  3251. package/template/docs/reviews/template-release-review-remediation-red-green-2026-08-17.md +0 -41
  3252. package/template/docs/reviews/yss-local-tracker-red-green-2026-08-10.md +0 -50
  3253. package/template/docs/user-guide//345/233/276/347/244/272/347/224/237/346/210/220/345/231/250/344/275/277/347/224/250/346/214/207/345/215/227.md +0 -143
  3254. package/template/scripts/implementation-path-policy.rb +0 -50
  3255. package/template/scripts/lifecycle-registry.rb +0 -194
  3256. package/template/scripts/test-export-yss-skills.rb +0 -132
  3257. package/template/scripts/test-lifecycle-registry.rb +0 -74
@@ -1,3022 +0,0 @@
1
- /**
2
- * spec-to-drawio.test.js
3
- * Unit tests for the Design System specification converter
4
- * Uses Node.js built-in test runner
5
- */
6
-
7
- import { describe, it } from 'node:test'
8
- import assert from 'node:assert'
9
- import {
10
- specToDrawioXml,
11
- parseSpecYaml,
12
- detectSemanticType,
13
- getNodeSize,
14
- snapToGrid,
15
- calculateLayout,
16
- generateNodeStyle,
17
- generateConnectorStyle,
18
- generateModuleStyle,
19
- checkComplexity,
20
- loadTheme,
21
- resolveIconShape,
22
- deriveNodeIcon,
23
- validateXml,
24
- validateSpec,
25
- validateColorScheme,
26
- validateLayoutConsistency,
27
- validateShapeReferences,
28
- validateAcademicProfile,
29
- validateSchemaDrift,
30
- computeLayoutQualityMetrics,
31
- SHAPE_STYLES
32
- } from './spec-to-drawio.js'
33
- import { resolveImageIconStyle } from './icon-resolver.js'
34
- import { resolveShapeNameKind } from './shape-catalog.js'
35
- import { drawioToSpec } from './drawio-to-spec.js'
36
- import { createDrawioFileContent } from '../runtime/artifacts.js'
37
-
38
- // ============================================================================
39
- // Semantic Type Detection Tests
40
- // ============================================================================
41
-
42
- describe('detectSemanticType', () => {
43
- it('should return explicit type when provided', () => {
44
- assert.strictEqual(detectSemanticType('API Gateway', 'service'), 'service')
45
- assert.strictEqual(detectSemanticType('Users', 'database'), 'database')
46
- })
47
-
48
- it('should detect database from label keywords', () => {
49
- assert.strictEqual(detectSemanticType('User Database', null), 'database')
50
- assert.strictEqual(detectSemanticType('PostgreSQL', null), 'database')
51
- assert.strictEqual(detectSemanticType('Redis Cache', null), 'database')
52
- assert.strictEqual(detectSemanticType('Data Storage', null), 'database')
53
- })
54
-
55
- it('should detect decision from label keywords', () => {
56
- assert.strictEqual(detectSemanticType('Is Valid?', null), 'decision')
57
- assert.strictEqual(detectSemanticType('Check Condition', null), 'decision')
58
- assert.strictEqual(detectSemanticType('Decision Point', null), 'decision')
59
- })
60
-
61
- it('should detect terminal from label keywords', () => {
62
- assert.strictEqual(detectSemanticType('Start', null), 'terminal')
63
- assert.strictEqual(detectSemanticType('End Process', null), 'terminal')
64
- assert.strictEqual(detectSemanticType('Begin Flow', null), 'terminal')
65
- })
66
-
67
- it('should detect queue from label keywords', () => {
68
- assert.strictEqual(detectSemanticType('Message Queue', null), 'queue')
69
- assert.strictEqual(detectSemanticType('Kafka Topic', null), 'queue')
70
- assert.strictEqual(detectSemanticType('SQS Queue', null), 'queue')
71
- })
72
-
73
- it('should detect formula from official delimiters', () => {
74
- assert.strictEqual(detectSemanticType('$$E = mc^2$$', null), 'formula')
75
- assert.strictEqual(detectSemanticType('Linear: \\(y = mx + b\\)', null), 'formula')
76
- assert.strictEqual(detectSemanticType('Simple relation: `x^2 + y^2`', null), 'formula')
77
- })
78
-
79
- it('should detect standalone unlabeled equations as formula without converting mixed prose labels', () => {
80
- assert.strictEqual(detectSemanticType('E = mc^2', null), 'formula')
81
- assert.strictEqual(detectSemanticType('\\sum_{i=1}^{n} x_i', null), 'formula')
82
- assert.strictEqual(detectSemanticType('Linear: y = mx + b', null), 'service')
83
- })
84
-
85
- it('should not treat discouraged delimiters as official formula signals', () => {
86
- assert.strictEqual(detectSemanticType('\\[E = mc^2\\]', null), 'service')
87
- })
88
-
89
- it('should default to service for unknown labels', () => {
90
- assert.strictEqual(detectSemanticType('API Gateway', null), 'service')
91
- assert.strictEqual(detectSemanticType('Unknown Component', null), 'service')
92
- })
93
-
94
- // Deep learning type detection tests
95
- it('should detect deep learning temporal types', () => {
96
- assert.strictEqual(detectSemanticType('LSTM Layer', null), 'temporal')
97
- assert.strictEqual(detectSemanticType('BiLSTM', null), 'temporal')
98
- assert.strictEqual(detectSemanticType('GRU Cell', null), 'temporal')
99
- assert.strictEqual(detectSemanticType('RNN Block', null), 'temporal')
100
- })
101
-
102
- it('should detect deep learning attention types', () => {
103
- assert.strictEqual(detectSemanticType('Self-Attention', null), 'attention')
104
- assert.strictEqual(detectSemanticType('Multi-Head Attention', null), 'attention')
105
- assert.strictEqual(detectSemanticType('Transformer Block', null), 'attention')
106
- assert.strictEqual(detectSemanticType('Softmax Layer', null), 'attention')
107
- })
108
-
109
- it('should detect deep learning feature extraction types', () => {
110
- assert.strictEqual(detectSemanticType('Feature Extractor', null), 'feature')
111
- assert.strictEqual(detectSemanticType('Encoder Block', null), 'feature')
112
- assert.strictEqual(detectSemanticType('Conv2D Layer', null), 'conv')
113
- assert.strictEqual(detectSemanticType('Convolutional Block', null), 'conv')
114
- })
115
-
116
- it('should detect deep learning normalization types', () => {
117
- assert.strictEqual(detectSemanticType('BatchNorm', null), 'norm')
118
- assert.strictEqual(detectSemanticType('LayerNorm', null), 'norm')
119
- assert.strictEqual(detectSemanticType('Normalization', null), 'norm')
120
- })
121
-
122
- it('should detect deep learning graph types', () => {
123
- assert.strictEqual(detectSemanticType('GCN Layer', null), 'graph')
124
- assert.strictEqual(detectSemanticType('Graph Conv', null), 'graph')
125
- assert.strictEqual(detectSemanticType('GNN Block', null), 'graph')
126
- })
127
-
128
- it('should detect deep learning matrix operation types', () => {
129
- assert.strictEqual(detectSemanticType('MatMul', null), 'matrix')
130
- assert.strictEqual(detectSemanticType('Linear Layer', null), 'matrix')
131
- assert.strictEqual(detectSemanticType('FC Layer', null), 'matrix')
132
- assert.strictEqual(detectSemanticType('Dense Layer', null), 'matrix')
133
- })
134
-
135
- it('should detect network topology types', () => {
136
- assert.strictEqual(detectSemanticType('Core Router', null), 'router')
137
- assert.strictEqual(detectSemanticType('Access Switch', null), 'switch')
138
- assert.strictEqual(detectSemanticType('Edge Firewall', null), 'firewall')
139
- assert.strictEqual(detectSemanticType('Wireless AP', null), 'ap')
140
- })
141
-
142
- it('should preserve legacy decision inference for bare "Switch" labels', () => {
143
- assert.strictEqual(detectSemanticType('Switch', null), 'decision')
144
- assert.strictEqual(detectSemanticType('Switch', 'switch'), 'switch')
145
- })
146
-
147
- it('should respect network.device metadata for semantic type', () => {
148
- assert.strictEqual(detectSemanticType('Gateway', null, { device: 'router' }), 'router')
149
- })
150
- })
151
-
152
- // ============================================================================
153
- // Grid Snapping Tests
154
- // ============================================================================
155
-
156
- describe('snapToGrid', () => {
157
- it('should snap values to 8px grid', () => {
158
- assert.strictEqual(snapToGrid(0), 0)
159
- assert.strictEqual(snapToGrid(4), 8)
160
- assert.strictEqual(snapToGrid(7), 8)
161
- assert.strictEqual(snapToGrid(8), 8)
162
- assert.strictEqual(snapToGrid(12), 16)
163
- assert.strictEqual(snapToGrid(100), 104)
164
- })
165
-
166
- it('should support custom grid sizes', () => {
167
- assert.strictEqual(snapToGrid(5, 10), 10)
168
- assert.strictEqual(snapToGrid(7, 4), 8)
169
- })
170
- })
171
-
172
- // ============================================================================
173
- // Node Size Tests
174
- // ============================================================================
175
-
176
- describe('getNodeSize', () => {
177
- it('should return correct preset sizes', () => {
178
- assert.deepStrictEqual(getNodeSize('tiny'), { width: 32, height: 32 })
179
- assert.deepStrictEqual(getNodeSize('small'), { width: 80, height: 40 })
180
- assert.deepStrictEqual(getNodeSize('medium'), { width: 120, height: 60 })
181
- assert.deepStrictEqual(getNodeSize('large'), { width: 160, height: 80 })
182
- assert.deepStrictEqual(getNodeSize('xl'), { width: 200, height: 100 })
183
- })
184
-
185
- it('should return correct tensor3d preset sizes', () => {
186
- assert.deepStrictEqual(getNodeSize('tensor_sm'), { width: 40, height: 48 })
187
- assert.deepStrictEqual(getNodeSize('tensor_md'), { width: 60, height: 72 })
188
- assert.deepStrictEqual(getNodeSize('tensor_lg'), { width: 80, height: 96 })
189
- assert.deepStrictEqual(getNodeSize('tensor_xl'), { width: 100, height: 120 })
190
- })
191
-
192
- it('should default to medium for unknown sizes', () => {
193
- assert.deepStrictEqual(getNodeSize(), { width: 120, height: 60 })
194
- assert.deepStrictEqual(getNodeSize('unknown'), { width: 120, height: 60 })
195
- })
196
-
197
- it('should use type-based default size when no explicit size', () => {
198
- // Operator nodes should default to tiny (32x32)
199
- assert.deepStrictEqual(getNodeSize(null, 'operator'), { width: 32, height: 32 })
200
- assert.deepStrictEqual(getNodeSize(undefined, 'operator'), { width: 32, height: 32 })
201
- // Decision nodes default to medium
202
- assert.deepStrictEqual(getNodeSize(null, 'decision'), { width: 120, height: 60 })
203
- // tensor3d nodes default to tensor_md
204
- assert.deepStrictEqual(getNodeSize(null, 'tensor3d'), { width: 60, height: 72 })
205
- })
206
-
207
- it('should prioritize explicit size over type default', () => {
208
- // Even if operator defaults to tiny, explicit large should be used
209
- assert.deepStrictEqual(getNodeSize('large', 'operator'), { width: 160, height: 80 })
210
- assert.deepStrictEqual(getNodeSize('small', 'operator'), { width: 80, height: 40 })
211
- })
212
-
213
- it('fits text node width to content when no explicit size is given', () => {
214
- // Short CJK label should be far narrower than the old fixed medium width (120)
215
- const shortText = getNodeSize(null, 'text', '有效频带')
216
- assert.ok(shortText.width < 120, 'short CJK text should be narrower than the medium default')
217
- assert.ok(shortText.width >= 48, 'width should respect the minimum')
218
- // Longer labels widen, but width is capped so the box wraps instead of overflowing
219
- const longText = getNodeSize(null, 'text', 'Conv1D-ResNet + FiLM + Cross-Attention')
220
- assert.ok(longText.width > shortText.width, 'longer label should produce a wider box')
221
- assert.ok(getNodeSize(null, 'text', 'x'.repeat(200)).width <= 320, 'width is clamped at 320')
222
- // Explicit size and the no-label fallback keep their existing behavior
223
- assert.deepStrictEqual(getNodeSize('large', 'text', '短'), { width: 160, height: 80 })
224
- assert.deepStrictEqual(getNodeSize(null, 'text'), { width: 120, height: 60 })
225
- })
226
- })
227
-
228
- // ============================================================================
229
- // Style Generation Tests
230
- // ============================================================================
231
-
232
- describe('generateNodeStyle', () => {
233
- const theme = {
234
- node: {
235
- default: {
236
- fillColor: '#DBEAFE',
237
- strokeColor: '#2563EB',
238
- strokeWidth: 1.5,
239
- fontColor: '#1E293B',
240
- fontSize: 13
241
- },
242
- database: {
243
- fillColor: '#D1FAE5',
244
- strokeColor: '#059669'
245
- }
246
- },
247
- typography: {
248
- fontFamily: { primary: 'Inter, sans-serif' }
249
- }
250
- }
251
-
252
- it('should generate style for service node', () => {
253
- const style = generateNodeStyle({ id: 'n1', label: 'API Gateway', type: 'service' }, theme)
254
- assert.ok(style.includes('rounded=1'), 'should contain rounded=1')
255
- assert.ok(style.includes('fillColor=#DBEAFE'), 'should contain fillColor=#DBEAFE')
256
- assert.ok(style.includes('strokeColor=#2563EB'), 'should contain strokeColor=#2563EB')
257
- })
258
-
259
- it('should generate style for database node', () => {
260
- const style = generateNodeStyle({ id: 'n2', label: 'User DB', type: 'database' }, theme)
261
- assert.ok(style.includes('shape=cylinder3'), 'should contain shape=cylinder3')
262
- assert.ok(style.includes('fillColor=#D1FAE5'), 'should contain fillColor=#D1FAE5')
263
- assert.ok(style.includes('strokeColor=#059669'), 'should contain strokeColor=#059669')
264
- })
265
-
266
- it('should allow style overrides', () => {
267
- const style = generateNodeStyle(
268
- {
269
- id: 'n3',
270
- label: 'Custom',
271
- style: { fillColor: '#FF0000' }
272
- },
273
- theme
274
- )
275
- assert.ok(style.includes('fillColor=#FF0000'), 'should contain custom fillColor')
276
- })
277
-
278
- it('uses theme typography for generic diagrams and Times New Roman when the theme has none', () => {
279
- const style = generateNodeStyle({ id: 'n4', label: 'API Gateway', type: 'service' }, theme)
280
- assert.ok(style.includes('fontFamily=Inter, sans-serif'), 'themed diagrams should use theme typography')
281
- const bare = generateNodeStyle({ id: 'n4b', label: 'API Gateway', type: 'service' }, { node: {} })
282
- assert.ok(bare.includes('fontFamily=Times New Roman'), 'themes without typography fall back to Times New Roman')
283
- })
284
-
285
- it('keeps text nodes transparent with no label background', () => {
286
- const style = generateNodeStyle({ id: 'n5', label: '有效频带', type: 'text' }, theme)
287
- assert.ok(style.includes('fillColor=none'), 'text fill should be transparent')
288
- assert.ok(style.includes('labelBackgroundColor=none'), 'text should have no white label halo')
289
- assert.ok(!style.includes('fillColor=#FFFFFF'), 'text should not use a white fill')
290
- })
291
- })
292
-
293
- describe('generateConnectorStyle', () => {
294
- const theme = {
295
- connector: {
296
- primary: { strokeColor: '#1E293B', strokeWidth: 2, dashed: false, endArrow: 'open', endFill: false },
297
- data: {
298
- strokeColor: '#1E293B',
299
- strokeWidth: 2,
300
- dashed: true,
301
- dashPattern: '6 4',
302
- endArrow: 'open',
303
- endFill: false
304
- },
305
- optional: {
306
- strokeColor: '#64748B',
307
- strokeWidth: 1,
308
- dashed: true,
309
- dashPattern: '2 2',
310
- endArrow: 'open',
311
- endFill: false
312
- }
313
- }
314
- }
315
-
316
- it('should generate primary connector style', () => {
317
- const style = generateConnectorStyle({ from: 'a', to: 'b', type: 'primary' }, theme)
318
- assert.ok(style.includes('strokeWidth=2'), 'should contain strokeWidth=2')
319
- assert.ok(style.includes('endArrow=open'), 'should contain endArrow=open')
320
- assert.ok(!style.includes('dashed=1'), 'should not contain dashed=1')
321
- })
322
-
323
- it('should generate data connector style with dashes', () => {
324
- const style = generateConnectorStyle({ from: 'a', to: 'b', type: 'data' }, theme)
325
- assert.ok(style.includes('dashed=1'), 'should contain dashed=1')
326
- assert.ok(style.includes('dashPattern=6 4'), 'should contain dashPattern=6 4')
327
- })
328
-
329
- it('should generate optional connector style', () => {
330
- const style = generateConnectorStyle({ from: 'a', to: 'b', type: 'optional' }, theme)
331
- assert.ok(style.includes('strokeWidth=1'), 'should contain strokeWidth=1')
332
- assert.ok(style.includes('endArrow=open'), 'should contain endArrow=open')
333
- assert.ok(style.includes('endFill=0'), 'should contain endFill=0')
334
- })
335
- })
336
-
337
- // ============================================================================
338
- // Module Style Tests (IEEE dashed border support)
339
- // ============================================================================
340
-
341
- describe('generateModuleStyle', () => {
342
- it('should generate solid border by default', () => {
343
- const theme = {
344
- module: {
345
- fillColor: '#F8FAFC',
346
- strokeColor: '#E2E8F0',
347
- strokeWidth: 1,
348
- rounded: 12,
349
- dashed: false
350
- }
351
- }
352
- const style = generateModuleStyle({ id: 'm1', label: 'Module' }, theme)
353
- assert.ok(style.includes('fillColor=#F8FAFC'), 'should contain fillColor')
354
- assert.ok(!style.includes('dashed=1'), 'should not contain dashed=1')
355
- })
356
-
357
- it('should generate dashed border for IEEE style', () => {
358
- const theme = {
359
- module: {
360
- fillColor: '#FAFAFA',
361
- strokeColor: '#BDBDBD',
362
- strokeWidth: 1.5,
363
- rounded: 8,
364
- dashed: true,
365
- dashPattern: '8 4'
366
- }
367
- }
368
- const style = generateModuleStyle({ id: 'm1', label: 'TDE Module' }, theme)
369
- assert.ok(style.includes('dashed=1'), 'should contain dashed=1')
370
- assert.ok(style.includes('dashPattern=8 4'), 'should contain dashPattern=8 4')
371
- })
372
-
373
- it('should allow module-level style override', () => {
374
- const theme = {
375
- module: {
376
- fillColor: '#FAFAFA',
377
- strokeColor: '#BDBDBD',
378
- dashed: false
379
- }
380
- }
381
- const moduleWithStyle = {
382
- id: 'm1',
383
- label: 'Custom Module',
384
- style: {
385
- dashed: true,
386
- dashPattern: '4 2'
387
- }
388
- }
389
- const style = generateModuleStyle(moduleWithStyle, theme)
390
- assert.ok(style.includes('dashed=1'), 'should contain dashed=1 from module style')
391
- assert.ok(style.includes('dashPattern=4 2'), 'should use module dashPattern')
392
- })
393
-
394
- it('should resolve theme tokens in module color fields', () => {
395
- const theme = {
396
- colors: {
397
- accentLight: '#EDE9FE',
398
- accent: '#7C3AED',
399
- text: '#1E293B'
400
- },
401
- module: {
402
- fillColor: '#FAFAFA',
403
- strokeColor: '#BDBDBD',
404
- labelFontColor: '#111827'
405
- }
406
- }
407
- const style = generateModuleStyle(
408
- {
409
- id: 'm1',
410
- label: 'Token Module',
411
- color: '$accentLight',
412
- style: {
413
- strokeColor: '$accent',
414
- fontColor: '$text'
415
- }
416
- },
417
- theme
418
- )
419
- assert.ok(style.includes('fillColor=#EDE9FE'), 'module fill should resolve token values')
420
- assert.ok(style.includes('strokeColor=#7C3AED'), 'module stroke should resolve token values')
421
- assert.ok(style.includes('fontColor=#1E293B'), 'module font color should resolve token values')
422
- })
423
-
424
- it('defaults module titles to Times New Roman when no explicit font is provided', () => {
425
- const theme = {
426
- module: {
427
- fillColor: '#FAFAFA',
428
- strokeColor: '#BDBDBD'
429
- }
430
- }
431
- const style = generateModuleStyle({ id: 'm1', label: 'Backend Layer' }, theme)
432
- assert.ok(style.includes('fontFamily=Times New Roman'), 'module titles should default to Times New Roman')
433
- })
434
- })
435
-
436
- // ============================================================================
437
- // Layout Tests
438
- // ============================================================================
439
-
440
- describe('calculateLayout', () => {
441
- it('should calculate horizontal layout positions', () => {
442
- const spec = {
443
- meta: { layout: 'horizontal' },
444
- nodes: [
445
- { id: 'n1', label: 'Node 1' },
446
- { id: 'n2', label: 'Node 2' }
447
- ]
448
- }
449
- const theme = { canvas: { gridSize: 8 }, module: { padding: 24 } }
450
- const { positions } = calculateLayout(spec, theme)
451
-
452
- assert.strictEqual(positions.has('n1'), true, 'should have position for n1')
453
- assert.strictEqual(positions.has('n2'), true, 'should have position for n2')
454
-
455
- const pos1 = positions.get('n1')
456
- const pos2 = positions.get('n2')
457
-
458
- // Both should be grid-aligned
459
- assert.strictEqual(pos1.x % 8, 0, 'n1.x should be grid-aligned')
460
- assert.strictEqual(pos1.y % 8, 0, 'n1.y should be grid-aligned')
461
- assert.strictEqual(pos2.x % 8, 0, 'n2.x should be grid-aligned')
462
- assert.strictEqual(pos2.y % 8, 0, 'n2.y should be grid-aligned')
463
- })
464
-
465
- it('should calculate star layout with a central network node', () => {
466
- const spec = {
467
- meta: { layout: 'star' },
468
- nodes: [
469
- { id: 'core', label: 'Core Switch', type: 'switch' },
470
- { id: 'fw', label: 'Firewall', type: 'firewall' },
471
- { id: 'ap', label: 'Wireless AP', type: 'ap' }
472
- ]
473
- }
474
- const theme = { canvas: { gridSize: 8 }, module: { padding: 24 } }
475
- const { positions } = calculateLayout(spec, theme)
476
-
477
- const core = positions.get('core')
478
- const fw = positions.get('fw')
479
- const ap = positions.get('ap')
480
- assert.ok(core.x > fw.x, 'core should not be placed left of every spoke')
481
- assert.ok(core.x < ap.x || core.y !== ap.y, 'core should act as central anchor')
482
- })
483
-
484
- it('should calculate mesh layout with dispersed nodes', () => {
485
- const spec = {
486
- meta: { layout: 'mesh' },
487
- nodes: [
488
- { id: 'a', label: 'Node A' },
489
- { id: 'b', label: 'Node B' },
490
- { id: 'c', label: 'Node C' },
491
- { id: 'd', label: 'Node D' }
492
- ]
493
- }
494
- const theme = { canvas: { gridSize: 8 }, module: { padding: 24 } }
495
- const { positions } = calculateLayout(spec, theme)
496
-
497
- const xs = [...positions.values()].map((pos) => pos.x)
498
- const ys = [...positions.values()].map((pos) => pos.y)
499
- assert.ok(new Set(xs).size > 2, 'mesh layout should spread x positions')
500
- assert.ok(new Set(ys).size > 2, 'mesh layout should spread y positions')
501
- })
502
-
503
- it('should calculate module containers for star layouts', () => {
504
- const spec = {
505
- meta: { layout: 'star' },
506
- modules: [{ id: 'vpc', label: 'AWS VPC' }],
507
- nodes: [
508
- { id: 'internet', label: 'Internet Gateway', type: 'internet', module: 'vpc' },
509
- { id: 'core', label: 'Core Switch', type: 'switch', module: 'vpc' },
510
- { id: 'app', label: 'App Server', type: 'server', module: 'vpc' }
511
- ]
512
- }
513
- const theme = { canvas: { gridSize: 8 }, module: { padding: 24 } }
514
- const { positions, modulePositions } = calculateLayout(spec, theme)
515
-
516
- assert.ok(modulePositions.has('vpc'), 'star layout should include module bounds')
517
- const modulePos = modulePositions.get('vpc')
518
- const nodeBounds = ['internet', 'core', 'app'].map((id) => positions.get(id))
519
- assert.ok(modulePos.width > 0, 'module width should be positive')
520
- assert.ok(modulePos.height > 0, 'module height should be positive')
521
- assert.ok(modulePos.x <= Math.min(...nodeBounds.map((pos) => pos.x)), 'module should start before child nodes')
522
- assert.ok(modulePos.y <= Math.min(...nodeBounds.map((pos) => pos.y)), 'module should start above child nodes')
523
- })
524
-
525
- it('should calculate module containers for mesh layouts with manual nodes', () => {
526
- const spec = {
527
- meta: { layout: 'mesh' },
528
- modules: [
529
- { id: 'dmz', label: 'DMZ' },
530
- { id: 'internal', label: 'Internal Network' }
531
- ],
532
- nodes: [
533
- { id: 'fw', label: 'Perimeter Firewall', type: 'firewall', module: 'dmz' },
534
- { id: 'proxy', label: 'Reverse Proxy', type: 'load_balancer', module: 'dmz' },
535
- { id: 'app', label: 'App Server', type: 'server', module: 'internal' },
536
- { id: 'db', label: 'Database Segment', type: 'subnet', module: 'internal', position: { x: 520, y: 240 } }
537
- ]
538
- }
539
- const theme = { canvas: { gridSize: 8 }, module: { padding: 24 } }
540
- const { positions, modulePositions } = calculateLayout(spec, theme)
541
-
542
- assert.ok(modulePositions.has('dmz'), 'mesh layout should include DMZ module bounds')
543
- assert.ok(modulePositions.has('internal'), 'mesh layout should include Internal module bounds')
544
- const internalPos = modulePositions.get('internal')
545
- const dbPos = positions.get('db')
546
- assert.ok(internalPos.x <= dbPos.x, 'internal module should include manually positioned nodes')
547
- assert.ok(internalPos.y <= dbPos.y, 'internal module should extend above manually positioned nodes')
548
- })
549
- })
550
-
551
- // ============================================================================
552
- // Complexity Check Tests
553
- // ============================================================================
554
-
555
- describe('checkComplexity', () => {
556
- it('should warn when node count exceeds threshold', () => {
557
- const spec = {
558
- nodes: Array(41)
559
- .fill(null)
560
- .map((_, i) => ({ id: `n${i}`, label: `Node ${i}` })),
561
- edges: []
562
- }
563
- const warnings = checkComplexity(spec)
564
- assert.ok(
565
- warnings.some((w) => w.level === 'warning' && w.message.includes('nodes')),
566
- 'should have warning about nodes'
567
- )
568
- })
569
-
570
- it('should error when node count is very high', () => {
571
- const spec = {
572
- nodes: Array(61)
573
- .fill(null)
574
- .map((_, i) => ({ id: `n${i}`, label: `Node ${i}` })),
575
- edges: []
576
- }
577
- const warnings = checkComplexity(spec)
578
- assert.ok(
579
- warnings.some((w) => w.level === 'error' && w.message.includes('nodes')),
580
- 'should have error about nodes'
581
- )
582
- })
583
-
584
- it('should warn about long labels', () => {
585
- const spec = {
586
- nodes: [{ id: 'n1', label: 'This is a very long label that exceeds the recommended length' }],
587
- edges: []
588
- }
589
- const warnings = checkComplexity(spec)
590
- assert.ok(
591
- warnings.some((w) => w.level === 'info' && w.message.includes('abbreviation') && w.message.includes('"n1"')),
592
- 'should have info about long labels'
593
- )
594
- })
595
-
596
- it('should return empty array for simple diagrams', () => {
597
- const spec = {
598
- nodes: [
599
- { id: 'n1', label: 'Node 1' },
600
- { id: 'n2', label: 'Node 2' }
601
- ],
602
- edges: [{ from: 'n1', to: 'n2' }]
603
- }
604
- const warnings = checkComplexity(spec)
605
- assert.strictEqual(warnings.length, 0, 'should have no warnings')
606
- })
607
- })
608
-
609
- // ============================================================================
610
- // XML Generation Tests
611
- // ============================================================================
612
-
613
- describe('specToDrawioXml', () => {
614
- it('should generate valid XML from simple spec', () => {
615
- const spec = {
616
- meta: { theme: 'tech-blue' },
617
- nodes: [
618
- { id: 'n1', label: 'API Gateway', type: 'service' },
619
- { id: 'n2', label: 'Database', type: 'database' }
620
- ],
621
- edges: [{ from: 'n1', to: 'n2', type: 'data', label: 'Query' }]
622
- }
623
-
624
- const xml = specToDrawioXml(spec)
625
-
626
- assert.ok(xml.includes('<mxGraphModel'), 'should contain mxGraphModel')
627
- assert.ok(xml.includes('gridSize="8"'), 'should contain gridSize=8')
628
- assert.ok(xml.includes('math="1"'), 'should contain math=1')
629
- assert.ok(xml.includes('API Gateway'), 'should contain API Gateway')
630
- assert.ok(xml.includes('Database'), 'should contain Database')
631
- assert.ok(xml.includes('Query'), 'should contain Query')
632
- })
633
-
634
- it('should use explicit meta.canvas dimensions as minimum page size', () => {
635
- const spec = {
636
- meta: { theme: 'tech-blue', canvas: '1200x800' },
637
- nodes: [{ id: 'n1', label: 'Reference Node', bounds: { x: 40, y: 40, width: 160, height: 80 } }]
638
- }
639
-
640
- const xml = specToDrawioXml(spec)
641
-
642
- assert.ok(xml.includes('pageWidth="1200"'), 'should use explicit canvas width')
643
- assert.ok(xml.includes('pageHeight="800"'), 'should use explicit canvas height')
644
- })
645
-
646
- it('should expand beyond explicit meta.canvas when content exceeds the page', () => {
647
- const spec = {
648
- meta: { theme: 'tech-blue', canvas: '400x300' },
649
- nodes: [{ id: 'n1', label: 'Wide Reference Node', bounds: { x: 440, y: 360, width: 160, height: 80 } }]
650
- }
651
-
652
- const xml = specToDrawioXml(spec)
653
-
654
- assert.ok(xml.includes('pageWidth="680"'), 'content width should expand beyond explicit canvas')
655
- assert.ok(xml.includes('pageHeight="520"'), 'content height should expand beyond explicit canvas')
656
- })
657
-
658
- it('should throw error for invalid spec', () => {
659
- assert.throws(() => specToDrawioXml(null), 'should throw for null')
660
- assert.throws(() => specToDrawioXml({}), 'should throw for empty object')
661
- assert.throws(() => specToDrawioXml({ nodes: [] }), 'should throw for empty nodes')
662
- })
663
-
664
- it('should generate network edge labels from metadata', () => {
665
- const spec = {
666
- meta: { theme: 'tech-blue', layout: 'star' },
667
- nodes: [
668
- { id: 'fw', label: 'Firewall', type: 'firewall' },
669
- { id: 'core', label: 'Core Switch', type: 'switch' }
670
- ],
671
- edges: [
672
- {
673
- from: 'fw',
674
- to: 'core',
675
- srcInterface: 'ge-0/0/0',
676
- dstInterface: 'ge-0/0/1',
677
- vlan: 10,
678
- bandwidth: '1G'
679
- }
680
- ]
681
- }
682
-
683
- const xml = specToDrawioXml(spec)
684
- assert.ok(xml.includes('ge-0/0/0 ↔ ge-0/0/1'), 'should include derived interface label')
685
- assert.ok(xml.includes('VLAN 10'), 'should include VLAN label')
686
- assert.ok(xml.includes('1G'), 'should include bandwidth label')
687
- })
688
-
689
- it('should emit module containers for star and mesh topology examples', () => {
690
- const starSpec = {
691
- meta: { theme: 'tech-blue', layout: 'star' },
692
- modules: [{ id: 'vpc', label: 'AWS VPC' }],
693
- nodes: [
694
- { id: 'internet', label: 'Internet Gateway', type: 'internet', module: 'vpc' },
695
- { id: 'core', label: 'Core Switch', type: 'switch', module: 'vpc' },
696
- { id: 'app', label: 'App Server', type: 'server', module: 'vpc' }
697
- ],
698
- edges: [{ from: 'internet', to: 'core' }]
699
- }
700
- const starXml = specToDrawioXml(starSpec)
701
- const starModuleId = starXml.match(/<mxCell id="(\d+)" value="AWS VPC"[^>]*parent="1">/)?.[1]
702
- assert.ok(starModuleId, 'star layout should render AWS VPC module cell')
703
- assert.match(
704
- starXml,
705
- new RegExp(`<mxCell id="\\d+" value="App Server"[^>]*parent="${starModuleId}">`),
706
- 'star layout should parent module nodes under the module cell'
707
- )
708
-
709
- const meshSpec = {
710
- meta: { theme: 'tech-blue', layout: 'mesh' },
711
- modules: [{ id: 'dmz', label: 'DMZ' }],
712
- nodes: [
713
- { id: 'fw', label: 'Perimeter Firewall', type: 'firewall', module: 'dmz' },
714
- { id: 'proxy', label: 'Reverse Proxy', type: 'load_balancer', module: 'dmz' }
715
- ],
716
- edges: [{ from: 'fw', to: 'proxy' }]
717
- }
718
- const meshXml = specToDrawioXml(meshSpec)
719
- assert.ok(meshXml.includes('value="DMZ"'), 'mesh layout should render DMZ module cell')
720
- })
721
-
722
- it('should resolve Cisco icon prefixes', () => {
723
- assert.strictEqual(resolveIconShape('cisco.firewalls.firewall'), 'mxgraph.cisco.firewalls.firewall')
724
- })
725
-
726
- it('should resolve documented icon aliases', () => {
727
- assert.strictEqual(resolveIconShape('aws.alb'), 'mxgraph.aws4.application_load_balancer')
728
- assert.strictEqual(resolveIconShape('aws.ec2'), 'mxgraph.aws4.ec2')
729
- assert.strictEqual(resolveIconShape('aws.ec2_instance'), 'mxgraph.aws4.ec2')
730
- assert.strictEqual(resolveIconShape('cisco.ap'), 'mxgraph.cisco.misc.access_point')
731
- })
732
-
733
- it('should derive node icons from network vendor/device metadata', () => {
734
- assert.strictEqual(
735
- deriveNodeIcon({ network: { vendor: 'aws', device: 'load_balancer' } }),
736
- 'aws.application_load_balancer'
737
- )
738
- assert.strictEqual(
739
- deriveNodeIcon({ network: { vendor: 'cisco', device: 'firewall' } }),
740
- 'mxgraph.cisco.security.firewall'
741
- )
742
- })
743
-
744
- it('should generate vendor-derived icon shapes when icon field is absent', () => {
745
- const theme = {
746
- node: {
747
- default: { fillColor: '#DBEAFE', strokeColor: '#2563EB', strokeWidth: 1.5, fontColor: '#1E293B', fontSize: 13 }
748
- },
749
- typography: { fontFamily: { primary: 'Inter, sans-serif' } }
750
- }
751
- const style = generateNodeStyle(
752
- {
753
- id: 'fw',
754
- label: 'Cisco Firewall',
755
- type: 'firewall',
756
- network: { vendor: 'cisco', device: 'firewall' }
757
- },
758
- theme
759
- )
760
- assert.ok(style.includes('shape=mxgraph.cisco.security.firewall'), 'should use vendor-derived stencil shape')
761
- })
762
-
763
- it('default behavior: 25 nodes returns a string (no error)', () => {
764
- const nodes = Array.from({ length: 25 }, (_, i) => ({ id: `n${i}`, label: `Node ${i}` }))
765
- const spec = { meta: { theme: 'tech-blue' }, nodes, edges: [] }
766
- const result = specToDrawioXml(spec)
767
- assert.strictEqual(typeof result, 'string', 'should return a string')
768
- assert.ok(result.includes('<mxGraphModel'), 'should contain mxGraphModel')
769
- })
770
-
771
- it('strict mode with 61 nodes: should throw containing "Complexity check failed"', () => {
772
- const nodes = Array.from({ length: 61 }, (_, i) => ({ id: `n${i}`, label: `Node ${i}` }))
773
- const spec = { meta: { theme: 'tech-blue' }, nodes, edges: [] }
774
- assert.throws(
775
- () => specToDrawioXml(spec, { strict: true }),
776
- (err) => {
777
- assert.ok(err instanceof Error)
778
- assert.ok(
779
- err.message.includes('Complexity check failed'),
780
- `Expected "Complexity check failed" in: ${err.message}`
781
- )
782
- return true
783
- }
784
- )
785
- })
786
-
787
- it('strict mode with 2 nodes: should NOT throw', () => {
788
- const spec = {
789
- meta: { theme: 'tech-blue' },
790
- nodes: [
791
- { id: 'n1', label: 'API' },
792
- { id: 'n2', label: 'DB' }
793
- ],
794
- edges: []
795
- }
796
- assert.doesNotThrow(() => specToDrawioXml(spec, { strict: true }))
797
- })
798
-
799
- it('returnWarnings with 41 nodes: returns { xml, warnings } with warning-level items', () => {
800
- const nodes = Array.from({ length: 41 }, (_, i) => ({ id: `n${i}`, label: `Node ${i}` }))
801
- const spec = { meta: { theme: 'tech-blue' }, nodes, edges: [] }
802
- const result = specToDrawioXml(spec, { returnWarnings: true })
803
- assert.ok(result && typeof result === 'object', 'should return an object')
804
- assert.ok(typeof result.xml === 'string', 'result.xml should be a string')
805
- assert.ok(Array.isArray(result.warnings), 'result.warnings should be an array')
806
- assert.ok(result.warnings.length > 0, 'should have at least one warning')
807
- assert.ok(
808
- result.warnings.every((w) => w.level === 'warning' || w.level === 'error'),
809
- 'warnings should have level field'
810
- )
811
- })
812
-
813
- it('returnWarnings with 2 nodes: returns { xml, warnings } where warnings.length === 0', () => {
814
- const spec = {
815
- meta: { theme: 'tech-blue' },
816
- nodes: [
817
- { id: 'n1', label: 'API' },
818
- { id: 'n2', label: 'DB' }
819
- ],
820
- edges: []
821
- }
822
- const result = specToDrawioXml(spec, { returnWarnings: true })
823
- assert.ok(result && typeof result === 'object', 'should return an object')
824
- assert.ok(typeof result.xml === 'string', 'result.xml should be a string')
825
- assert.ok(Array.isArray(result.warnings), 'result.warnings should be an array')
826
- assert.strictEqual(result.warnings.length, 0, 'warnings should be empty for simple spec')
827
- })
828
- })
829
-
830
- // ============================================================================
831
- // YAML Parser Tests
832
- // ============================================================================
833
-
834
- describe('parseSpecYaml', () => {
835
- it('should parse simple YAML specification', () => {
836
- const yaml = `
837
- meta:
838
- theme: tech-blue
839
- layout: horizontal
840
-
841
- nodes:
842
- - id: n1
843
- label: API Gateway
844
- type: service
845
- - id: n2
846
- label: Database
847
- type: database
848
-
849
- edges:
850
- - from: n1
851
- to: n2
852
- type: data
853
- `
854
- const spec = parseSpecYaml(yaml)
855
-
856
- assert.strictEqual(spec.meta.theme, 'tech-blue', 'theme should be tech-blue')
857
- assert.strictEqual(spec.meta.layout, 'horizontal', 'layout should be horizontal')
858
- assert.strictEqual(spec.nodes.length, 2, 'should have 2 nodes')
859
- assert.strictEqual(spec.nodes[0].id, 'n1', 'first node id should be n1')
860
- assert.strictEqual(spec.edges.length, 1, 'should have 1 edge')
861
- })
862
-
863
- it('should parse nested style object on a node', () => {
864
- const yamlText = `
865
- nodes:
866
- - id: n1
867
- label: Box
868
- style:
869
- fillColor: "#FF0000"
870
- strokeColor: "#000000"
871
- `
872
- const spec = parseSpecYaml(yamlText)
873
- assert.strictEqual(spec.nodes[0].style.fillColor, '#FF0000', 'fillColor should be #FF0000')
874
- assert.strictEqual(spec.nodes[0].style.strokeColor, '#000000', 'strokeColor should be #000000')
875
- })
876
-
877
- it('should parse nested position object on a node', () => {
878
- const yamlText = `
879
- nodes:
880
- - id: n1
881
- label: Box
882
- position:
883
- x: 100
884
- y: 200
885
- `
886
- const spec = parseSpecYaml(yamlText)
887
- assert.strictEqual(spec.nodes[0].position.x, 100, 'x should be 100')
888
- assert.strictEqual(spec.nodes[0].position.y, 200, 'y should be 200')
889
- })
890
-
891
- it('should parse nested meta.grid object', () => {
892
- const yamlText = `
893
- meta:
894
- theme: tech-blue
895
- grid:
896
- size: 8
897
- snap: true
898
- `
899
- const spec = parseSpecYaml(yamlText)
900
- assert.strictEqual(spec.meta.grid.size, 8, 'grid.size should be 8')
901
- assert.strictEqual(spec.meta.grid.snap, true, 'grid.snap should be true')
902
- })
903
-
904
- it('should parse replication metadata for replicated specs', () => {
905
- const yamlText = `
906
- meta:
907
- source: replicated
908
- theme: tech-blue
909
- replication:
910
- colorMode: preserve-original
911
- background: "#FFF7ED"
912
- palette:
913
- - hex: "#FDBA74"
914
- role: service fill
915
- appliesTo: nodes
916
- confidence: high
917
- confidenceNotes:
918
- - "Flattened a gradient footer into a solid background"
919
- nodes:
920
- - id: n1
921
- label: Box
922
- `
923
- const spec = parseSpecYaml(yamlText)
924
- assert.strictEqual(spec.meta.source, 'replicated')
925
- assert.strictEqual(spec.meta.replication.colorMode, 'preserve-original')
926
- assert.strictEqual(spec.meta.replication.palette[0].hex, '#FDBA74')
927
- })
928
-
929
- it('should parse explicit canvas metadata', () => {
930
- const yamlText = `
931
- meta:
932
- canvas: 1200x800
933
- nodes:
934
- - id: n1
935
- label: Box
936
- `
937
- const spec = parseSpecYaml(yamlText)
938
- assert.strictEqual(spec.meta.canvas, '1200x800')
939
- })
940
-
941
- it('should return default empty spec for empty string', () => {
942
- const spec = parseSpecYaml('')
943
- assert.deepStrictEqual(spec.meta, {}, 'meta should be empty object')
944
- assert.deepStrictEqual(spec.nodes, [], 'nodes should be empty array')
945
- assert.deepStrictEqual(spec.edges, [], 'edges should be empty array')
946
- assert.deepStrictEqual(spec.modules, [], 'modules should be empty array')
947
- })
948
-
949
- it('should throw TypeError for null input', () => {
950
- assert.throws(() => parseSpecYaml(null), TypeError, 'should throw TypeError for null')
951
- })
952
-
953
- it('should throw Error for invalid YAML', () => {
954
- assert.throws(() => parseSpecYaml('key: [unclosed'), Error, 'should throw Error for invalid YAML')
955
- })
956
-
957
- it('should reject invalid replication color modes', () => {
958
- const yamlText = `
959
- meta:
960
- source: replicated
961
- replication:
962
- colorMode: rainbow
963
- nodes:
964
- - id: n1
965
- label: Box
966
- `
967
- assert.throws(
968
- () => parseSpecYaml(yamlText),
969
- /meta\.replication\.colorMode/,
970
- 'invalid replication color modes should be rejected'
971
- )
972
- })
973
-
974
- it('should reject invalid canvas metadata', () => {
975
- const yamlText = `
976
- meta:
977
- canvas: wide
978
- nodes:
979
- - id: n1
980
- label: Box
981
- `
982
- assert.throws(
983
- () => parseSpecYaml(yamlText),
984
- /Invalid meta\.canvas "wide": use "auto" or WIDTHxHEIGHT/,
985
- 'invalid canvas metadata should be rejected'
986
- )
987
- })
988
- })
989
-
990
- // ============================================================================
991
- // loadTheme Tests
992
- // ============================================================================
993
-
994
- describe('loadTheme', () => {
995
- it('loadTheme("tech-blue") returns object with name: "tech-blue"', () => {
996
- const theme = loadTheme('tech-blue')
997
- assert.strictEqual(theme.name, 'tech-blue', 'should have name tech-blue')
998
- })
999
-
1000
- it('loadTheme("academic") returns object with Times New Roman font family', () => {
1001
- const theme = loadTheme('academic')
1002
- assert.ok(
1003
- theme.typography.fontFamily.primary.includes('Times New Roman'),
1004
- 'academic theme should use Times New Roman'
1005
- )
1006
- })
1007
-
1008
- it('loadTheme("dark") returns object with dark background color', () => {
1009
- const theme = loadTheme('dark')
1010
- assert.ok(
1011
- theme.colors.background === '#0F172A' || theme.canvas?.background === '#0F172A',
1012
- 'dark theme should have dark background'
1013
- )
1014
- })
1015
-
1016
- it('loadTheme("nonexistent") returns DEFAULT_THEME fallback', () => {
1017
- const theme = loadTheme('nonexistent')
1018
- assert.strictEqual(theme.name, 'tech-blue', 'fallback should be tech-blue DEFAULT_THEME')
1019
- })
1020
-
1021
- it('loadTheme() with no args returns tech-blue theme', () => {
1022
- const theme = loadTheme()
1023
- assert.strictEqual(theme.name, 'tech-blue', 'no-arg call should return tech-blue theme')
1024
- })
1025
- })
1026
-
1027
- // ============================================================================
1028
- // Integration: specToDrawioXml respects theme selection
1029
- // ============================================================================
1030
-
1031
- describe('specToDrawioXml theme integration', () => {
1032
- it('specifying meta.theme: "academic" produces XML that does NOT contain tech-blue primary color #2563EB', () => {
1033
- const spec = {
1034
- meta: { theme: 'academic' },
1035
- nodes: [
1036
- { id: 'n1', label: 'Service A', type: 'service' },
1037
- { id: 'n2', label: 'Service B', type: 'service' }
1038
- ],
1039
- edges: [{ from: 'n1', to: 'n2' }]
1040
- }
1041
- const xml = specToDrawioXml(spec)
1042
- assert.ok(!xml.includes('#2563EB'), 'academic theme XML should not contain tech-blue primary color #2563EB')
1043
- })
1044
- })
1045
-
1046
- // ============================================================================
1047
- // Phase 1.4: DEFAULT_THEME loaded from tech-blue.json
1048
- // ============================================================================
1049
-
1050
- describe('Phase 1.4: DEFAULT_THEME from tech-blue.json', () => {
1051
- it('loadTheme("tech-blue") returns full structure from tech-blue.json including canvas.gridColor', () => {
1052
- const theme = loadTheme('tech-blue')
1053
- assert.strictEqual(theme.name, 'tech-blue', 'should have name tech-blue')
1054
- assert.ok(theme.canvas, 'should have canvas section')
1055
- assert.strictEqual(theme.canvas.gridSize, 8, 'should have canvas.gridSize = 8')
1056
- assert.ok(theme.canvas.gridColor, 'should have canvas.gridColor from tech-blue.json (not in hardcoded fallback)')
1057
- assert.strictEqual(theme.module.padding, 24, 'should have module.padding = 24')
1058
- })
1059
- })
1060
-
1061
- // ============================================================================
1062
- // Phase 2.1: startArrow/startFill rendering
1063
- // ============================================================================
1064
-
1065
- describe('Phase 2.1: startArrow/startFill rendering', () => {
1066
- it('bidirectional edge with academic-color theme should contain startArrow=block', () => {
1067
- const theme = loadTheme('academic-color')
1068
- const style = generateConnectorStyle({ from: 'a', to: 'b', type: 'bidirectional' }, theme)
1069
- assert.ok(style.includes('startArrow=block'), 'should contain startArrow=block')
1070
- assert.ok(style.includes('startFill=1'), 'should contain startFill=1')
1071
- })
1072
-
1073
- it('primary edge should NOT contain startArrow', () => {
1074
- const theme = loadTheme('tech-blue')
1075
- const style = generateConnectorStyle({ from: 'a', to: 'b', type: 'primary' }, theme)
1076
- assert.ok(!style.includes('startArrow'), 'primary edge should not contain startArrow')
1077
- })
1078
-
1079
- it('edge with style override for startArrow should use it', () => {
1080
- const theme = loadTheme('tech-blue')
1081
- const style = generateConnectorStyle(
1082
- {
1083
- from: 'a',
1084
- to: 'b',
1085
- type: 'primary',
1086
- style: { startArrow: 'oval', startFill: false }
1087
- },
1088
- theme
1089
- )
1090
- assert.ok(style.includes('startArrow=oval'), 'should contain startArrow=oval')
1091
- assert.ok(style.includes('startFill=0'), 'should contain startFill=0')
1092
- })
1093
- })
1094
-
1095
- // ============================================================================
1096
- // Phase 2.2: Manual node positioning
1097
- // ============================================================================
1098
-
1099
- describe('Phase 2.2: manual node positioning', () => {
1100
- it('node with position should be snapped to grid at specified coordinates', () => {
1101
- const spec = {
1102
- meta: { layout: 'horizontal' },
1103
- nodes: [{ id: 'n1', label: 'Manual Node', position: { x: 100, y: 200 } }]
1104
- }
1105
- const theme = { canvas: { gridSize: 8 }, module: { padding: 24 } }
1106
- const { positions } = calculateLayout(spec, theme)
1107
-
1108
- assert.ok(positions.has('n1'), 'should have position for n1')
1109
- const pos = positions.get('n1')
1110
- assert.strictEqual(pos.x, 24, 'x should be snapped to 24 (center - grown width/2)')
1111
- assert.strictEqual(pos.y, 168, 'y should be snapped to 168 (center - height/2 snapped)')
1112
- })
1113
-
1114
- it('mixed manual and auto-positioned nodes both get positions', () => {
1115
- const spec = {
1116
- meta: { layout: 'horizontal' },
1117
- nodes: [
1118
- { id: 'n1', label: 'Manual', position: { x: 300, y: 400 } },
1119
- { id: 'n2', label: 'Auto Node' }
1120
- ]
1121
- }
1122
- const theme = { canvas: { gridSize: 8 }, module: { padding: 24 } }
1123
- const { positions } = calculateLayout(spec, theme)
1124
-
1125
- assert.ok(positions.has('n1'), 'should have position for manual n1')
1126
- assert.ok(positions.has('n2'), 'should have position for auto n2')
1127
- const pos1 = positions.get('n1')
1128
- assert.strictEqual(pos1.x, 240, 'manual n1 x should be snapped to 240 (center - width/2)')
1129
- assert.strictEqual(pos1.y, 368, 'manual n1 y should be snapped to 368 (center - height/2 snapped)')
1130
- })
1131
-
1132
- it('node without position property is auto-laid out as usual', () => {
1133
- const spec = {
1134
- meta: { layout: 'horizontal' },
1135
- nodes: [{ id: 'n1', label: 'Auto Only' }]
1136
- }
1137
- const theme = { canvas: { gridSize: 8 }, module: { padding: 24 } }
1138
- const { positions } = calculateLayout(spec, theme)
1139
- const pos = positions.get('n1')
1140
- assert.ok(pos.x % 8 === 0, 'auto position x should be grid-aligned')
1141
- assert.ok(pos.y % 8 === 0, 'auto position y should be grid-aligned')
1142
- })
1143
- })
1144
-
1145
- // ============================================================================
1146
- // Phase 2.3: Edge label position
1147
- // ============================================================================
1148
-
1149
- describe('Phase 2.3: edge labelPosition', () => {
1150
- it('edge with labelPosition "start" should produce x="0.2" in XML', () => {
1151
- const spec = {
1152
- meta: { theme: 'tech-blue' },
1153
- nodes: [
1154
- { id: 'n1', label: 'A' },
1155
- { id: 'n2', label: 'B' }
1156
- ],
1157
- edges: [{ from: 'n1', to: 'n2', label: 'flow', labelPosition: 'start' }]
1158
- }
1159
- const xml = specToDrawioXml(spec)
1160
- assert.ok(xml.includes('x="0.2"'), 'should contain x="0.2" for start labelPosition')
1161
- })
1162
-
1163
- it('edge with labelPosition "end" should produce x="0.8" in XML', () => {
1164
- const spec = {
1165
- meta: { theme: 'tech-blue' },
1166
- nodes: [
1167
- { id: 'n1', label: 'A' },
1168
- { id: 'n2', label: 'B' }
1169
- ],
1170
- edges: [{ from: 'n1', to: 'n2', label: 'flow', labelPosition: 'end' }]
1171
- }
1172
- const xml = specToDrawioXml(spec)
1173
- assert.ok(xml.includes('x="0.8"'), 'should contain x="0.8" for end labelPosition')
1174
- })
1175
-
1176
- it('edge with no labelPosition should produce x="0.5" in XML', () => {
1177
- const spec = {
1178
- meta: { theme: 'tech-blue' },
1179
- nodes: [
1180
- { id: 'n1', label: 'A' },
1181
- { id: 'n2', label: 'B' }
1182
- ],
1183
- edges: [{ from: 'n1', to: 'n2', label: 'flow' }]
1184
- }
1185
- const xml = specToDrawioXml(spec)
1186
- assert.ok(xml.includes('x="0.5"'), 'should contain x="0.5" for default center labelPosition')
1187
- })
1188
- })
1189
-
1190
- // ============================================================================
1191
- // Phase 2.3b: Text fidelity
1192
- // ============================================================================
1193
-
1194
- describe('Phase 2.3b: text fidelity', () => {
1195
- it('should preserve explicit bounds for standalone text nodes and text styling', () => {
1196
- const spec = {
1197
- meta: { theme: 'academic' },
1198
- nodes: [
1199
- {
1200
- id: 'title',
1201
- label: 'World Model',
1202
- type: 'text',
1203
- bounds: { x: 24, y: 32, width: 180, height: 36 },
1204
- style: {
1205
- fontFamily: 'Times New Roman, serif',
1206
- fontSize: 16,
1207
- italic: true,
1208
- align: 'left',
1209
- verticalAlign: 'top',
1210
- spacingLeft: 4,
1211
- spacingTop: 2
1212
- }
1213
- }
1214
- ]
1215
- }
1216
-
1217
- const xml = specToDrawioXml(spec)
1218
- assert.ok(xml.includes('style="text;'), 'text nodes should use the text shape')
1219
- assert.ok(xml.includes('x="24" y="32" width="180" height="36"'), 'text nodes should preserve explicit bounds')
1220
- assert.ok(xml.includes('fontFamily=Times New Roman, serif'), 'text nodes should preserve font family')
1221
- assert.ok(xml.includes('fontStyle=2'), 'italic text should be exported with the italic fontStyle bit')
1222
- assert.ok(xml.includes('align=left'), 'text nodes should preserve horizontal alignment')
1223
- assert.ok(xml.includes('verticalAlign=top'), 'text nodes should preserve vertical alignment')
1224
- assert.ok(xml.includes('spacingLeft=4'), 'text nodes should preserve left spacing')
1225
- })
1226
-
1227
- it('should keep formula nodes as dedicated annotations with explicit font styling', () => {
1228
- const spec = {
1229
- meta: { theme: 'academic' },
1230
- nodes: [
1231
- {
1232
- id: 'formula',
1233
- label: '$$h(t)=f(z(t))$$',
1234
- type: 'formula',
1235
- bounds: { x: 260, y: 48, width: 220, height: 56 },
1236
- style: {
1237
- fontFamily: 'Times New Roman, serif',
1238
- fontSize: 15,
1239
- italic: true,
1240
- align: 'center',
1241
- verticalAlign: 'middle'
1242
- }
1243
- }
1244
- ]
1245
- }
1246
-
1247
- const xml = specToDrawioXml(spec)
1248
- assert.ok(
1249
- xml.includes('shape=text') || /rounded=[01]/.test(xml),
1250
- 'formula nodes should remain dedicated annotation nodes'
1251
- )
1252
- assert.ok(xml.includes('fontFamily=Times New Roman, serif'), 'formula nodes should preserve serif typography')
1253
- assert.ok(xml.includes('fontStyle=2'), 'formula nodes should preserve italic styling')
1254
- })
1255
-
1256
- it('should export explicit edge label offsets away from the connector line', () => {
1257
- const spec = {
1258
- meta: { theme: 'tech-blue' },
1259
- nodes: [
1260
- { id: 'h', label: 'h(t)', bounds: { x: 48, y: 80, width: 96, height: 40 } },
1261
- { id: 'z', label: 'z(t)', bounds: { x: 300, y: 80, width: 96, height: 40 } }
1262
- ],
1263
- edges: [
1264
- {
1265
- from: 'h',
1266
- to: 'z',
1267
- label: 's(t)',
1268
- labelPosition: 'center',
1269
- labelOffset: { x: 0, y: -18 }
1270
- }
1271
- ]
1272
- }
1273
-
1274
- const xml = specToDrawioXml(spec)
1275
- assert.ok(xml.includes('<mxPoint x="0" y="-18" as="offset"/>'), 'edge labels should preserve the explicit offset')
1276
- assert.match(
1277
- xml,
1278
- /<mxCell id="\d+" value="" style="[^"]*" edge="1"/,
1279
- 'parent edge cell should not store duplicate label text'
1280
- )
1281
- assert.equal((xml.match(/value="s\(t\)"/g) || []).length, 1, 'edge label text should be stored once')
1282
- assert.ok(
1283
- xml.includes('fontFamily=Inter, Roboto, system-ui, -apple-system, sans-serif'),
1284
- 'edge labels should emit the theme typography font family'
1285
- )
1286
- })
1287
-
1288
- it('should force all covered text surfaces from meta.font and override node-level fontFamily', () => {
1289
- const spec = {
1290
- meta: {
1291
- theme: 'tech-blue',
1292
- font: {
1293
- primary: 'Times New Roman',
1294
- cjk: 'Simsun',
1295
- formula: 'Cambria Math'
1296
- }
1297
- },
1298
- modules: [{ id: 'm1', label: 'Module Title' }],
1299
- nodes: [
1300
- {
1301
- id: 'n1',
1302
- label: 'English Label',
1303
- module: 'm1',
1304
- style: { fontFamily: 'Arial' }
1305
- },
1306
- {
1307
- id: 'n2',
1308
- label: '$$h(t)=f(z(t))$$',
1309
- type: 'formula'
1310
- }
1311
- ],
1312
- edges: [{ from: 'n1', to: 'n2', label: 'flow' }]
1313
- }
1314
-
1315
- const xml = specToDrawioXml(spec)
1316
- assert.ok(xml.includes('fontFamily=Times New Roman'), 'primary text surfaces should use meta.font.primary')
1317
- assert.ok(!xml.includes('fontFamily=Arial'), 'node-level fontFamily should be overridden by meta.font')
1318
- assert.ok(xml.includes('fontFamily=Cambria Math'), 'formula surfaces should use meta.font.formula')
1319
- })
1320
-
1321
- it('should fall back to a Times New Roman + SimSun stack for Chinese text when meta.font is absent', () => {
1322
- const spec = {
1323
- meta: {
1324
- theme: 'academic',
1325
- title: 'Test Figure',
1326
- description: 'Test description',
1327
- figureType: 'architecture'
1328
- },
1329
- modules: [{ id: 'm1', label: '中文模块' }],
1330
- nodes: [
1331
- { id: 'n1', label: '中文标签', module: 'm1' },
1332
- { id: 'n2', label: 'English Label' }
1333
- ],
1334
- edges: [{ from: 'n1', to: 'n2', label: '中文连线' }]
1335
- }
1336
-
1337
- const xml = specToDrawioXml(spec)
1338
- assert.ok(
1339
- xml.includes('fontFamily=Times New Roman, SimSun'),
1340
- 'academic Chinese surfaces should use the theme Times New Roman + SimSun stack'
1341
- )
1342
- assert.ok(
1343
- xml.includes('fontFamily=Times New Roman, Georgia, serif'),
1344
- 'non-CJK academic surfaces should keep the theme serif stack'
1345
- )
1346
-
1347
- const generalXml = specToDrawioXml({
1348
- meta: { theme: 'tech-blue' },
1349
- nodes: [{ id: 'n1', label: '中文标签' }],
1350
- edges: []
1351
- })
1352
- assert.ok(
1353
- generalXml.includes('fontFamily=Times New Roman,SimSun'),
1354
- 'general-profile Chinese text should use the built-in Times New Roman,SimSun policy'
1355
- )
1356
- })
1357
-
1358
- it('should validate meta.font as a complete safe object', () => {
1359
- assert.throws(
1360
- () =>
1361
- validateSpec({
1362
- meta: { font: { primary: 'Times New Roman', cjk: 'Simsun' } },
1363
- nodes: [{ id: 'n1', label: 'Note' }],
1364
- edges: [],
1365
- modules: []
1366
- }),
1367
- /meta\.font\.formula must be a safe font-family string/
1368
- )
1369
-
1370
- assert.throws(
1371
- () =>
1372
- validateSpec({
1373
- meta: { font: { primary: 'Times;Roman', cjk: 'Simsun', formula: 'Cambria Math' } },
1374
- nodes: [{ id: 'n1', label: 'Note' }],
1375
- edges: [],
1376
- modules: []
1377
- }),
1378
- /meta\.font\.primary must be a safe font-family string/
1379
- )
1380
- })
1381
-
1382
- it('should validate explicit text bounds and label offsets', () => {
1383
- assert.throws(
1384
- () =>
1385
- validateSpec({
1386
- meta: {},
1387
- nodes: [{ id: 'n1', label: 'Note', bounds: { x: 10, y: 10, width: 0, height: 20 } }],
1388
- edges: [],
1389
- modules: []
1390
- }),
1391
- /bounds width and height must be greater than 0/
1392
- )
1393
-
1394
- assert.throws(
1395
- () =>
1396
- validateSpec({
1397
- meta: {},
1398
- nodes: [{ id: 'n1', label: 'Note' }],
1399
- edges: [{ from: 'n1', to: 'n2', label: 'flow', labelOffset: { x: 'bad', y: 8 } }],
1400
- modules: []
1401
- }),
1402
- /labelOffset must have numeric x and y/
1403
- )
1404
-
1405
- assert.throws(
1406
- () =>
1407
- validateSpec({
1408
- meta: { canvas: '0x600' },
1409
- nodes: [{ id: 'n1', label: 'Note' }],
1410
- edges: [],
1411
- modules: []
1412
- }),
1413
- /Invalid meta\.canvas "0x600": width and height must be positive integers/
1414
- )
1415
- })
1416
- })
1417
-
1418
- // ============================================================================
1419
- // Phase 2.4: Icon support
1420
- // ============================================================================
1421
-
1422
- describe('Phase 2.4: resolveIconShape', () => {
1423
- it('should resolve aws.lambda to mxgraph.aws4.lambda', () => {
1424
- assert.strictEqual(resolveIconShape('aws.lambda'), 'mxgraph.aws4.lambda')
1425
- })
1426
-
1427
- it('should resolve gcp.functions to mxgraph.gcp2.functions', () => {
1428
- assert.strictEqual(resolveIconShape('gcp.functions'), 'mxgraph.gcp2.functions')
1429
- })
1430
-
1431
- it('should resolve azure.vm to mxgraph.azure.vm', () => {
1432
- assert.strictEqual(resolveIconShape('azure.vm'), 'mxgraph.azure.vm')
1433
- })
1434
-
1435
- it('should resolve k8s.pod to the kubernetes icon2 parameter family', () => {
1436
- assert.strictEqual(resolveIconShape('k8s.pod'), 'mxgraph.kubernetes.icon2:prIcon=pod')
1437
- })
1438
-
1439
- it('should pass through mxgraph. prefix directly', () => {
1440
- assert.strictEqual(resolveIconShape('mxgraph.custom.shape'), 'mxgraph.custom.shape')
1441
- })
1442
-
1443
- it('should return null for null/undefined', () => {
1444
- assert.strictEqual(resolveIconShape(null), null)
1445
- assert.strictEqual(resolveIconShape(undefined), null)
1446
- })
1447
-
1448
- it('should resolve supported image icons to self-contained data URI styles', () => {
1449
- assert.strictEqual(resolveIconShape('brand.openai'), null)
1450
- const supported = [
1451
- 'brand.openai',
1452
- 'brand.redis',
1453
- 'openai',
1454
- 'redis',
1455
- 'lobe.openai',
1456
- 'lobe.claude',
1457
- 'lobe.gemini',
1458
- 'lobe.chatgpt',
1459
- 'lobe.open-ai',
1460
- 'ai.anthropic',
1461
- 'lucide.alarm-clock',
1462
- 'lucide.bot',
1463
- 'lucide.brain-circuit',
1464
- 'lucide.cloud',
1465
- 'lucide.cpu',
1466
- 'lucide.database',
1467
- 'lucide.database-zap',
1468
- 'lucide.file-text',
1469
- 'lucide.layers',
1470
- 'lucide.network',
1471
- 'lucide.search',
1472
- 'lucide.server',
1473
- 'lucide.server-cog',
1474
- 'lucide.shield',
1475
- 'lucide.ai',
1476
- 'lucide.cache',
1477
- 'lucide.workflow'
1478
- ]
1479
- for (const icon of supported) {
1480
- const style = resolveImageIconStyle(icon)
1481
- assert.match(style, /^shape=image;.*image=data:image\/svg\+xml,/, `${icon} should be embedded`)
1482
- assert.doesNotMatch(style, /https?:\/\//, `${icon} should not require network access`)
1483
- }
1484
- })
1485
-
1486
- it('should reject unsupported image icon names', () => {
1487
- assert.strictEqual(resolveImageIconStyle('lobe.definitely-not-a-catalog-brand'), null)
1488
- assert.strictEqual(resolveImageIconStyle('lobe.definitely-not-real'), null)
1489
- assert.strictEqual(resolveImageIconStyle('brand.not-real'), null)
1490
- assert.strictEqual(resolveImageIconStyle('lucide.not-a-real-icon'), null)
1491
- })
1492
-
1493
- it('should treat unknown prefix as direct shape reference', () => {
1494
- assert.strictEqual(resolveIconShape('customShape'), 'customShape')
1495
- })
1496
- })
1497
-
1498
- describe('Phase 2.4: generateNodeStyle with icon', () => {
1499
- const theme = {
1500
- node: {
1501
- default: {
1502
- fillColor: '#DBEAFE',
1503
- strokeColor: '#2563EB',
1504
- strokeWidth: 1.5,
1505
- fontColor: '#1E293B',
1506
- fontSize: 13
1507
- }
1508
- },
1509
- typography: {
1510
- fontFamily: { primary: 'Inter, sans-serif' }
1511
- }
1512
- }
1513
-
1514
- it('node with icon aws.lambda should emit the aws4 resourceIcon compound style', () => {
1515
- const style = generateNodeStyle({ id: 'n1', label: 'Lambda', icon: 'aws.lambda' }, theme)
1516
- assert.ok(
1517
- style.includes('shape=mxgraph.aws4.resourceIcon;resIcon=mxgraph.aws4.lambda'),
1518
- 'resource-only aws4 icons must use shape=resourceIcon;resIcon=<name>'
1519
- )
1520
- assert.ok(style.includes('verticalLabelPosition=bottom'), 'should contain verticalLabelPosition=bottom')
1521
- assert.ok(style.includes('labelBackgroundColor=none'), 'should contain labelBackgroundColor=none')
1522
- })
1523
-
1524
- it('node with icon gcp.functions should have shape=mxgraph.gcp2.functions in style', () => {
1525
- const style = generateNodeStyle({ id: 'n1', label: 'Functions', icon: 'gcp.functions' }, theme)
1526
- assert.ok(style.includes('shape=mxgraph.gcp2.functions'), 'should contain shape=mxgraph.gcp2.functions')
1527
- })
1528
-
1529
- it('node with icon k8s.pod should emit the kubernetes icon2 compound style', () => {
1530
- const style = generateNodeStyle({ id: 'pod', label: 'Pod', icon: 'k8s.pod' }, theme)
1531
- assert.match(style, /shape=mxgraph\.kubernetes\.icon2;prIcon=pod;aspect=fixed/)
1532
- })
1533
-
1534
- it('imports kubernetes icon2 compound styles back to k8s.<prIcon> syntax', () => {
1535
- const xml = specToDrawioXml(
1536
- { meta: { title: 'K8s' }, nodes: [{ id: 'pod1', label: 'Pod', icon: 'k8s.pod' }], edges: [] },
1537
- { silent: true }
1538
- )
1539
- const roundTripped = drawioToSpec(createDrawioFileContent(xml))
1540
- assert.equal(roundTripped.nodes.find((node) => node.label === 'Pod')?.icon, 'k8s.pod')
1541
- })
1542
-
1543
- it('node with icon brand.openai should emit a Lobe Icons image style', () => {
1544
- const style = generateNodeStyle({ id: 'n1', label: 'OpenAI', icon: 'brand.openai' }, theme)
1545
- assert.ok(style.includes('shape=image'), 'should render brand icons as draw.io image cells')
1546
- assert.ok(style.includes('image=data:image/svg+xml,'), 'OpenAI should resolve through embedded normalized Lobe SVG')
1547
- assert.ok(style.includes('verticalLabelPosition=bottom'), 'should label image icons below the icon')
1548
- })
1549
-
1550
- it('node with icon lobe.gemini should emit a Lobe Icons image style', () => {
1551
- const style = generateNodeStyle({ id: 'n1', label: 'Gemini', icon: 'lobe.gemini' }, theme)
1552
- assert.ok(style.includes('shape=image'), 'should render lobe icons as draw.io image cells')
1553
- assert.ok(style.includes('image=data:image/svg+xml,'))
1554
- })
1555
-
1556
- it('node with icon lucide.database-zap should emit an embedded image style', () => {
1557
- const style = generateNodeStyle({ id: 'n1', label: 'Cache', icon: 'lucide.database-zap' }, theme)
1558
- assert.ok(style.includes('shape=image'), 'should render lucide icons as draw.io image cells')
1559
- assert.ok(style.includes('image=data:image/svg+xml,'), 'lucide icon should be self-contained SVG data')
1560
- })
1561
-
1562
- it('node with icon lucide.server-cog should resolve from the bundled icon set', () => {
1563
- const style = generateNodeStyle({ id: 'n1', label: 'Server Ops', icon: 'lucide.server-cog' }, theme)
1564
- assert.ok(style.includes('shape=image'), 'should render bundled Lucide icons as draw.io image cells')
1565
- assert.ok(style.includes('image=data:image/svg+xml,'), 'should embed the bundled SVG content')
1566
- assert.ok(style.includes('%231E293B'), 'should use the normalized draw.io icon color')
1567
- })
1568
-
1569
- it('node without icon should NOT contain shape=mxgraph', () => {
1570
- const style = generateNodeStyle({ id: 'n1', label: 'API Gateway', type: 'service' }, theme)
1571
- assert.ok(!style.includes('shape=mxgraph'), 'should not contain shape=mxgraph for non-icon node')
1572
- })
1573
- })
1574
-
1575
- // ============================================================================
1576
- // Phase 4.3: validateXml
1577
- // ============================================================================
1578
-
1579
- describe('validateXml', () => {
1580
- const VALID_XML =
1581
- '<mxGraphModel>' +
1582
- '<root>' +
1583
- '<mxCell id="0"/>' +
1584
- '<mxCell id="1" parent="0"/>' +
1585
- '<mxCell id="2" value="A" style="" vertex="1" parent="1">' +
1586
- '<mxGeometry x="40" y="40" width="120" height="60" as="geometry"/>' +
1587
- '</mxCell>' +
1588
- '<mxCell id="3" value="B" style="" vertex="1" parent="1">' +
1589
- '<mxGeometry x="200" y="40" width="120" height="60" as="geometry"/>' +
1590
- '</mxCell>' +
1591
- '<mxCell id="4" style="" edge="1" parent="1" source="2" target="3">' +
1592
- '<mxGeometry relative="1" as="geometry"/>' +
1593
- '</mxCell>' +
1594
- '</root>' +
1595
- '</mxGraphModel>'
1596
-
1597
- it('should return valid:true and empty errors for well-formed XML', () => {
1598
- const result = validateXml(VALID_XML)
1599
- assert.strictEqual(result.valid, true, 'should be valid')
1600
- assert.deepStrictEqual(result.errors, [], 'should have no errors')
1601
- })
1602
-
1603
- it('should return errors when root cells are missing', () => {
1604
- const xml =
1605
- '<mxGraphModel>' +
1606
- '<root>' +
1607
- '<mxCell id="2" value="A" vertex="1" parent="1">' +
1608
- '<mxGeometry as="geometry"/>' +
1609
- '</mxCell>' +
1610
- '</root>' +
1611
- '</mxGraphModel>'
1612
- const result = validateXml(xml)
1613
- assert.strictEqual(result.valid, false, 'should be invalid')
1614
- assert.ok(
1615
- result.errors.some((e) => e.includes('id="0"')),
1616
- 'should report missing id=0 cell'
1617
- )
1618
- assert.ok(
1619
- result.errors.some((e) => e.includes('id="1"')),
1620
- 'should report missing id=1 cell'
1621
- )
1622
- })
1623
-
1624
- it('should return errors for duplicate cell IDs', () => {
1625
- const xml =
1626
- '<mxGraphModel>' +
1627
- '<root>' +
1628
- '<mxCell id="0"/>' +
1629
- '<mxCell id="1" parent="0"/>' +
1630
- '<mxCell id="2" value="A" vertex="1" parent="1"><mxGeometry as="geometry"/></mxCell>' +
1631
- '<mxCell id="2" value="B" vertex="1" parent="1"><mxGeometry as="geometry"/></mxCell>' +
1632
- '</root>' +
1633
- '</mxGraphModel>'
1634
- const result = validateXml(xml)
1635
- assert.strictEqual(result.valid, false, 'should be invalid')
1636
- assert.ok(
1637
- result.errors.some((e) => e.includes('Duplicate') && e.includes('"2"')),
1638
- 'should report duplicate ID 2'
1639
- )
1640
- })
1641
-
1642
- it('should return errors when edge references nonexistent source', () => {
1643
- const xml =
1644
- '<mxGraphModel>' +
1645
- '<root>' +
1646
- '<mxCell id="0"/>' +
1647
- '<mxCell id="1" parent="0"/>' +
1648
- '<mxCell id="2" value="A" vertex="1" parent="1"><mxGeometry as="geometry"/></mxCell>' +
1649
- '<mxCell id="4" style="" edge="1" parent="1" source="999" target="2">' +
1650
- '<mxGeometry relative="1" as="geometry"/>' +
1651
- '</mxCell>' +
1652
- '</root>' +
1653
- '</mxGraphModel>'
1654
- const result = validateXml(xml)
1655
- assert.strictEqual(result.valid, false, 'should be invalid')
1656
- assert.ok(
1657
- result.errors.some((e) => e.includes('source') && e.includes('"999"')),
1658
- 'should report nonexistent source ID'
1659
- )
1660
- })
1661
-
1662
- it('should reject a full-page embedded image cell', () => {
1663
- const xml =
1664
- '<mxGraphModel pageWidth="1200" pageHeight="800">' +
1665
- '<root>' +
1666
- '<mxCell id="0"/>' +
1667
- '<mxCell id="1" parent="0"/>' +
1668
- '<mxCell id="2" value="" style="shape=image;image=data:image/png;base64,abc;" vertex="1" parent="1">' +
1669
- '<mxGeometry x="0" y="0" width="1200" height="800" as="geometry"/>' +
1670
- '</mxCell>' +
1671
- '</root>' +
1672
- '</mxGraphModel>'
1673
- const result = validateXml(xml)
1674
- assert.strictEqual(result.valid, false, 'full-page image should be invalid')
1675
- assert.ok(
1676
- result.errors.some((e) => e.includes('full-page embedded image')),
1677
- 'should report full-page embedded image'
1678
- )
1679
- })
1680
-
1681
- it('should allow small embedded image icon cells', () => {
1682
- const xml =
1683
- '<mxGraphModel pageWidth="1200" pageHeight="800">' +
1684
- '<root>' +
1685
- '<mxCell id="0"/>' +
1686
- '<mxCell id="1" parent="0"/>' +
1687
- '<mxCell id="2" value="" style="shape=image;image=data:image/png;base64,abc;" vertex="1" parent="1">' +
1688
- '<mxGeometry x="40" y="40" width="80" height="80" as="geometry"/>' +
1689
- '</mxCell>' +
1690
- '</root>' +
1691
- '</mxGraphModel>'
1692
- const result = validateXml(xml)
1693
- assert.strictEqual(result.valid, true, 'small image icon should be valid')
1694
- })
1695
- })
1696
-
1697
- // ============================================================================
1698
- // Additional loadTheme Tests
1699
- // ============================================================================
1700
-
1701
- describe('loadTheme additional themes', () => {
1702
- it('loadTheme("nature") returns object with green primary color', () => {
1703
- const theme = loadTheme('nature')
1704
- assert.strictEqual(theme.name, 'nature', 'should have name nature')
1705
- assert.ok(
1706
- theme.colors.primary === '#059669' || theme.node?.default?.strokeColor === '#059669',
1707
- 'nature theme should have green primary color #059669'
1708
- )
1709
- })
1710
-
1711
- it('loadTheme("academic-color") returns object with skip, residual, and attention connector types', () => {
1712
- const theme = loadTheme('academic-color')
1713
- assert.ok(theme.connector.skip, 'should have skip connector type')
1714
- assert.ok(theme.connector.residual, 'should have residual connector type')
1715
- assert.ok(theme.connector.attention, 'should have attention connector type')
1716
- })
1717
- })
1718
-
1719
- // ============================================================================
1720
- // Additional calculateLayout Tests
1721
- // ============================================================================
1722
-
1723
- describe('calculateLayout additional layouts', () => {
1724
- it('vertical layout: 2 nodes in separate modules have different Y positions', () => {
1725
- // In vertical layout, modules are stacked vertically (different Y per module group)
1726
- const spec = {
1727
- meta: { layout: 'vertical' },
1728
- modules: [
1729
- { id: 'm1', label: 'Module 1' },
1730
- { id: 'm2', label: 'Module 2' }
1731
- ],
1732
- nodes: [
1733
- { id: 'n1', label: 'Node 1', module: 'm1' },
1734
- { id: 'n2', label: 'Node 2', module: 'm2' }
1735
- ]
1736
- }
1737
- const theme = { canvas: { gridSize: 8 }, module: { padding: 24 } }
1738
- const { positions } = calculateLayout(spec, theme)
1739
-
1740
- const pos1 = positions.get('n1')
1741
- const pos2 = positions.get('n2')
1742
-
1743
- assert.ok(pos1, 'should have position for n1')
1744
- assert.ok(pos2, 'should have position for n2')
1745
- // In vertical layout, modules are stacked: Y values differ between modules
1746
- assert.notStrictEqual(
1747
- pos1.y,
1748
- pos2.y,
1749
- 'vertical layout nodes in different modules should have different Y positions'
1750
- )
1751
- })
1752
-
1753
- it('hierarchical layout: 4 nodes are arranged in a grid pattern', () => {
1754
- const spec = {
1755
- meta: { layout: 'hierarchical' },
1756
- nodes: [
1757
- { id: 'n1', label: 'Node 1' },
1758
- { id: 'n2', label: 'Node 2' },
1759
- { id: 'n3', label: 'Node 3' },
1760
- { id: 'n4', label: 'Node 4' }
1761
- ]
1762
- }
1763
- const theme = { canvas: { gridSize: 8 }, module: { padding: 24 } }
1764
- const { positions } = calculateLayout(spec, theme)
1765
-
1766
- assert.ok(positions.has('n1'), 'should have position for n1')
1767
- assert.ok(positions.has('n2'), 'should have position for n2')
1768
- assert.ok(positions.has('n3'), 'should have position for n3')
1769
- assert.ok(positions.has('n4'), 'should have position for n4')
1770
-
1771
- // All positions should be grid-aligned
1772
- for (const [, pos] of positions) {
1773
- assert.strictEqual(pos.x % 8, 0, 'x should be grid-aligned')
1774
- assert.strictEqual(pos.y % 8, 0, 'y should be grid-aligned')
1775
- }
1776
-
1777
- // Should have at least 2 distinct X or Y values (grid pattern)
1778
- const xs = new Set([...positions.values()].map((p) => p.x))
1779
- const ys = new Set([...positions.values()].map((p) => p.y))
1780
- assert.ok(xs.size > 1 || ys.size > 1, 'hierarchical layout should use multiple X or Y positions')
1781
- })
1782
- })
1783
-
1784
- // ============================================================================
1785
- // Additional specToDrawioXml Integration Tests
1786
- // ============================================================================
1787
-
1788
- describe('specToDrawioXml additional integration tests', () => {
1789
- it('nature theme produces XML with green stroke color (#059669) not tech-blue (#2563EB)', () => {
1790
- const spec = {
1791
- meta: { theme: 'nature' },
1792
- nodes: [
1793
- { id: 'n1', label: 'Service A', type: 'service' },
1794
- { id: 'n2', label: 'Service B', type: 'service' }
1795
- ],
1796
- edges: [{ from: 'n1', to: 'n2' }]
1797
- }
1798
- const xml = specToDrawioXml(spec)
1799
- assert.ok(xml.includes('#059669'), 'nature theme XML should contain green color #059669')
1800
- assert.ok(!xml.includes('#2563EB'), 'nature theme XML should not contain tech-blue color #2563EB')
1801
- })
1802
-
1803
- it('dark theme produces XML with dark background color (#0F172A)', () => {
1804
- const spec = {
1805
- meta: { theme: 'dark' },
1806
- nodes: [{ id: 'n1', label: 'Service A', type: 'service' }],
1807
- edges: []
1808
- }
1809
- const xml = specToDrawioXml(spec)
1810
- assert.ok(xml.includes('#0F172A'), 'dark theme XML should contain dark background color #0F172A')
1811
- })
1812
-
1813
- it('modules produce XML containing module container with correct label', () => {
1814
- const spec = {
1815
- meta: { theme: 'tech-blue' },
1816
- modules: [{ id: 'm1', label: 'MyBackend' }],
1817
- nodes: [{ id: 'n1', label: 'Service', module: 'm1' }],
1818
- edges: []
1819
- }
1820
- const xml = specToDrawioXml(spec)
1821
- assert.ok(xml.includes('MyBackend'), 'XML should contain module label MyBackend')
1822
- })
1823
-
1824
- it('each of the 5 connector types produces the correct endArrow in XML', () => {
1825
- // tech-blue theme defaults: primary=open, data=open, optional=open, dependency=diamond, bidirectional=none
1826
- const edgeTypes = [
1827
- { type: 'primary', expectedArrow: 'endArrow=open' },
1828
- { type: 'data', expectedArrow: 'endArrow=open' },
1829
- { type: 'optional', expectedArrow: 'endArrow=open' },
1830
- { type: 'dependency', expectedArrow: 'endArrow=diamond' },
1831
- { type: 'bidirectional', expectedArrow: 'endArrow=none' }
1832
- ]
1833
-
1834
- for (const { type, expectedArrow } of edgeTypes) {
1835
- const spec = {
1836
- meta: { theme: 'tech-blue' },
1837
- nodes: [
1838
- { id: 'n1', label: 'A' },
1839
- { id: 'n2', label: 'B' }
1840
- ],
1841
- edges: [{ from: 'n1', to: 'n2', type }]
1842
- }
1843
- const xml = specToDrawioXml(spec)
1844
- assert.ok(xml.includes(expectedArrow), `edge type "${type}" should produce "${expectedArrow}" in XML`)
1845
- }
1846
- })
1847
- })
1848
-
1849
- // ============================================================================
1850
- // Edge label presence/absence in XML
1851
- // ============================================================================
1852
-
1853
- describe('edge label in XML', () => {
1854
- it('edge with label produces XML containing that label text', () => {
1855
- const spec = {
1856
- meta: { theme: 'tech-blue' },
1857
- nodes: [
1858
- { id: 'n1', label: 'A' },
1859
- { id: 'n2', label: 'B' }
1860
- ],
1861
- edges: [{ from: 'n1', to: 'n2', label: 'MyEdgeLabel' }]
1862
- }
1863
- const xml = specToDrawioXml(spec)
1864
- assert.ok(xml.includes('MyEdgeLabel'), 'XML should contain edge label text "MyEdgeLabel"')
1865
- assert.match(xml, /<mxCell id="\d+" value="" style="[^"]*" edge="1"/, 'parent edge cell should keep value empty')
1866
- assert.equal((xml.match(/value="MyEdgeLabel"/g) || []).length, 1, 'edge label should not be duplicated in XML')
1867
- })
1868
-
1869
- it('edge without label does NOT produce edgeLabel cell in XML', () => {
1870
- const spec = {
1871
- meta: { theme: 'tech-blue' },
1872
- nodes: [
1873
- { id: 'n1', label: 'A' },
1874
- { id: 'n2', label: 'B' }
1875
- ],
1876
- edges: [{ from: 'n1', to: 'n2' }]
1877
- }
1878
- const xml = specToDrawioXml(spec)
1879
- assert.ok(!xml.includes('edgeLabel'), 'XML should NOT contain edgeLabel when edge has no label')
1880
- })
1881
- })
1882
-
1883
- // ============================================================================
1884
- // validateColorScheme — color validation
1885
- // ============================================================================
1886
-
1887
- describe('validateColorScheme', () => {
1888
- const theme = loadTheme('tech-blue')
1889
-
1890
- it('returns no warnings for a spec with no style overrides', () => {
1891
- const spec = {
1892
- nodes: [{ id: 'n1', label: 'Node' }],
1893
- edges: [],
1894
- modules: []
1895
- }
1896
- assert.deepStrictEqual(validateColorScheme(spec, theme), [])
1897
- })
1898
-
1899
- it('returns no warnings for valid hex color overrides (#RGB)', () => {
1900
- const spec = {
1901
- nodes: [{ id: 'n1', label: 'Node', style: { fillColor: '#ABC', strokeColor: '#123456' } }],
1902
- edges: [],
1903
- modules: []
1904
- }
1905
- assert.deepStrictEqual(validateColorScheme(spec, theme), [])
1906
- })
1907
-
1908
- it('returns no warnings for valid hex color overrides (#RRGGBB)', () => {
1909
- const spec = {
1910
- nodes: [{ id: 'n1', label: 'Node', style: { fillColor: '#DBEAFE', strokeColor: '#2563EB' } }],
1911
- edges: [],
1912
- modules: []
1913
- }
1914
- assert.deepStrictEqual(validateColorScheme(spec, theme), [])
1915
- })
1916
-
1917
- it('returns no warnings for valid theme token overrides', () => {
1918
- const spec = {
1919
- nodes: [{ id: 'n1', label: 'Node', style: { fillColor: '$primaryLight', strokeColor: '$primary' } }],
1920
- edges: [],
1921
- modules: []
1922
- }
1923
- assert.deepStrictEqual(validateColorScheme(spec, theme), [])
1924
- })
1925
-
1926
- it('returns a warning for an invalid color value on a node', () => {
1927
- const spec = {
1928
- nodes: [{ id: 'n1', label: 'Node', style: { fillColor: 'blue' } }],
1929
- edges: [],
1930
- modules: []
1931
- }
1932
- const warnings = validateColorScheme(spec, theme)
1933
- assert.strictEqual(warnings.length, 1)
1934
- assert.ok(warnings[0].includes('node "n1"'), 'warning should identify the node')
1935
- assert.ok(warnings[0].includes('"blue"'), 'warning should quote the invalid value')
1936
- })
1937
-
1938
- it('returns a warning for an invalid strokeColor on an edge', () => {
1939
- const spec = {
1940
- nodes: [
1941
- { id: 'n1', label: 'A' },
1942
- { id: 'n2', label: 'B' }
1943
- ],
1944
- edges: [{ from: 'n1', to: 'n2', style: { strokeColor: 'red' } }],
1945
- modules: []
1946
- }
1947
- const warnings = validateColorScheme(spec, theme)
1948
- assert.strictEqual(warnings.length, 1)
1949
- assert.ok(warnings[0].includes('n1→n2'), 'warning should identify the edge')
1950
- })
1951
-
1952
- it('returns a warning for an invalid color on a module', () => {
1953
- const spec = {
1954
- nodes: [{ id: 'n1', label: 'A' }],
1955
- edges: [],
1956
- modules: [{ id: 'm1', label: 'Mod', style: { fillColor: 'not-a-color' } }]
1957
- }
1958
- const warnings = validateColorScheme(spec, theme)
1959
- assert.strictEqual(warnings.length, 1)
1960
- assert.ok(warnings[0].includes('module "m1"'), 'warning should identify the module')
1961
- })
1962
-
1963
- it('returns no warnings for valid module.color token values', () => {
1964
- const spec = {
1965
- nodes: [{ id: 'n1', label: 'A' }],
1966
- edges: [],
1967
- modules: [{ id: 'm1', label: 'Mod', color: '$accent' }]
1968
- }
1969
- assert.deepStrictEqual(validateColorScheme(spec, theme), [])
1970
- })
1971
-
1972
- it('returns multiple warnings for multiple invalid values', () => {
1973
- const spec = {
1974
- nodes: [{ id: 'n1', label: 'A', style: { fillColor: 'bad1', strokeColor: 'bad2' } }],
1975
- edges: [],
1976
- modules: []
1977
- }
1978
- const warnings = validateColorScheme(spec, theme)
1979
- assert.strictEqual(warnings.length, 2)
1980
- })
1981
-
1982
- it('ignores undefined / null style color values without warning', () => {
1983
- const spec = {
1984
- nodes: [{ id: 'n1', label: 'Node', style: { fillColor: null, strokeColor: undefined } }],
1985
- edges: [],
1986
- modules: []
1987
- }
1988
- assert.deepStrictEqual(validateColorScheme(spec, theme), [])
1989
- })
1990
-
1991
- it('validates replication metadata colors', () => {
1992
- const spec = {
1993
- meta: {
1994
- source: 'replicated',
1995
- replication: {
1996
- background: '#FFF7ED',
1997
- palette: [
1998
- { hex: '#FDBA74', role: 'node fill', appliesTo: 'nodes', confidence: 'high' },
1999
- { hex: '#7C2D12', role: 'connector stroke', appliesTo: 'edges', confidence: 'medium' }
2000
- ]
2001
- }
2002
- },
2003
- nodes: [{ id: 'n1', label: 'A' }],
2004
- edges: [],
2005
- modules: []
2006
- }
2007
- assert.deepStrictEqual(validateColorScheme(spec, theme), [])
2008
- })
2009
-
2010
- it('warns when replication palette colors are not flat hex values', () => {
2011
- const spec = {
2012
- meta: {
2013
- source: 'replicated',
2014
- replication: {
2015
- background: '#FFF7ED',
2016
- palette: [{ hex: '$primary', role: 'bad extracted color', appliesTo: 'nodes' }]
2017
- }
2018
- },
2019
- nodes: [{ id: 'n1', label: 'A' }],
2020
- edges: [],
2021
- modules: []
2022
- }
2023
- const warnings = validateColorScheme(spec, theme)
2024
- assert.strictEqual(warnings.length, 1)
2025
- assert.ok(warnings[0].includes('meta.replication.palette[0].hex'))
2026
- })
2027
- })
2028
-
2029
- // ============================================================================
2030
- // validateLayoutConsistency — coordinate / layout direction checks
2031
- // ============================================================================
2032
-
2033
- describe('validateLayoutConsistency', () => {
2034
- it('returns no warnings when fewer than 2 positioned nodes', () => {
2035
- const spec = {
2036
- meta: { layout: 'horizontal' },
2037
- nodes: [{ id: 'n1', label: 'A', position: { x: 100, y: 100 } }]
2038
- }
2039
- assert.deepStrictEqual(validateLayoutConsistency(spec), [])
2040
- })
2041
-
2042
- it('returns no warnings when layout and positions are consistent (horizontal)', () => {
2043
- const spec = {
2044
- meta: { layout: 'horizontal' },
2045
- nodes: [
2046
- { id: 'n1', label: 'A', position: { x: 100, y: 100 } },
2047
- { id: 'n2', label: 'B', position: { x: 400, y: 120 } }
2048
- ]
2049
- }
2050
- // xRange=300, yRange=20 — clearly horizontal
2051
- assert.deepStrictEqual(validateLayoutConsistency(spec), [])
2052
- })
2053
-
2054
- it('returns no warnings when layout and positions are consistent (vertical)', () => {
2055
- const spec = {
2056
- meta: { layout: 'vertical' },
2057
- nodes: [
2058
- { id: 'n1', label: 'A', position: { x: 100, y: 100 } },
2059
- { id: 'n2', label: 'B', position: { x: 110, y: 500 } }
2060
- ]
2061
- }
2062
- // xRange=10, yRange=400 — clearly vertical
2063
- assert.deepStrictEqual(validateLayoutConsistency(spec), [])
2064
- })
2065
-
2066
- it('warns when horizontal layout has disproportionately large vertical span', () => {
2067
- const spec = {
2068
- meta: { layout: 'horizontal' },
2069
- nodes: [
2070
- { id: 'n1', label: 'A', position: { x: 100, y: 100 } },
2071
- { id: 'n2', label: 'B', position: { x: 120, y: 800 } }
2072
- ]
2073
- }
2074
- // xRange=20, yRange=700 — vertical span >> horizontal
2075
- const warnings = validateLayoutConsistency(spec)
2076
- assert.strictEqual(warnings.length, 1)
2077
- assert.ok(warnings[0].includes('"horizontal"'), 'warning should mention layout direction')
2078
- })
2079
-
2080
- it('warns when vertical layout has disproportionately large horizontal span', () => {
2081
- const spec = {
2082
- meta: { layout: 'vertical' },
2083
- nodes: [
2084
- { id: 'n1', label: 'A', position: { x: 100, y: 100 } },
2085
- { id: 'n2', label: 'B', position: { x: 900, y: 120 } }
2086
- ]
2087
- }
2088
- // xRange=800, yRange=20 — horizontal span >> vertical
2089
- const warnings = validateLayoutConsistency(spec)
2090
- assert.strictEqual(warnings.length, 1)
2091
- assert.ok(warnings[0].includes('"vertical"'), 'warning should mention layout direction')
2092
- })
2093
-
2094
- it('warns when two positioned nodes are too close together (overlap)', () => {
2095
- const spec = {
2096
- meta: { layout: 'horizontal' },
2097
- nodes: [
2098
- { id: 'n1', label: 'A', position: { x: 100, y: 100 } },
2099
- { id: 'n2', label: 'B', position: { x: 105, y: 105 } }
2100
- ]
2101
- }
2102
- const warnings = validateLayoutConsistency(spec)
2103
- const overlapWarning = warnings.find((w) => w.includes('overlap'))
2104
- assert.ok(overlapWarning, 'should warn about node overlap')
2105
- assert.ok(overlapWarning.includes('"n1"') && overlapWarning.includes('"n2"'))
2106
- })
2107
-
2108
- it('does not warn when nodes are sufficiently separated', () => {
2109
- const spec = {
2110
- meta: { layout: 'horizontal' },
2111
- nodes: [
2112
- { id: 'n1', label: 'A', position: { x: 100, y: 100 } },
2113
- { id: 'n2', label: 'B', position: { x: 300, y: 100 } }
2114
- ]
2115
- }
2116
- // distance = 200px — well above MIN_CLEARANCE
2117
- const warnings = validateLayoutConsistency(spec).filter((w) => w.includes('overlap'))
2118
- assert.deepStrictEqual(warnings, [])
2119
- })
2120
-
2121
- it('skips overlap check when nodes exceed 30 (performance guard)', () => {
2122
- const nodes = Array.from({ length: 31 }, (_, i) => ({
2123
- id: `n${i}`,
2124
- label: `N${i}`,
2125
- position: { x: i * 5, y: i * 5 } // would overlap if checked
2126
- }))
2127
- const spec = { meta: { layout: 'horizontal' }, nodes }
2128
- const warnings = validateLayoutConsistency(spec).filter((w) => w.includes('overlap'))
2129
- assert.deepStrictEqual(warnings, [], 'overlap check should be skipped for > 30 nodes')
2130
- })
2131
- })
2132
-
2133
- // ============================================================================
2134
- // specToDrawioXml validation integration
2135
- // ============================================================================
2136
-
2137
- describe('specToDrawioXml validation integration', () => {
2138
- it('includes color warnings in returnWarnings output', () => {
2139
- const spec = {
2140
- meta: { theme: 'tech-blue' },
2141
- nodes: [
2142
- { id: 'n1', label: 'A', style: { fillColor: 'invalid-color' } },
2143
- { id: 'n2', label: 'B' }
2144
- ]
2145
- }
2146
- const result = specToDrawioXml(spec, { returnWarnings: true, silent: true })
2147
- assert.ok(result.xml, 'should still produce XML despite warnings')
2148
- const colorWarning = result.warnings.find((w) => w.message?.includes('invalid-color'))
2149
- assert.ok(colorWarning, 'should include color warning in returned warnings')
2150
- })
2151
-
2152
- it('throws in strict mode when color validation fails', () => {
2153
- const spec = {
2154
- meta: { theme: 'tech-blue' },
2155
- nodes: [
2156
- { id: 'n1', label: 'A', style: { fillColor: 'not-a-color' } },
2157
- { id: 'n2', label: 'B' }
2158
- ]
2159
- }
2160
- assert.throws(
2161
- () => specToDrawioXml(spec, { strict: true, silent: true }),
2162
- /Spec validation failed/,
2163
- 'strict mode should throw on invalid color'
2164
- )
2165
- })
2166
-
2167
- it('does not throw in non-strict mode with invalid colors', () => {
2168
- const spec = {
2169
- meta: { theme: 'tech-blue' },
2170
- nodes: [
2171
- { id: 'n1', label: 'A', style: { fillColor: 'not-a-color' } },
2172
- { id: 'n2', label: 'B' }
2173
- ]
2174
- }
2175
- assert.doesNotThrow(
2176
- () => specToDrawioXml(spec, { silent: true }),
2177
- 'non-strict mode should not throw on invalid color'
2178
- )
2179
- })
2180
- })
2181
-
2182
- // ============================================================================
2183
- // Theme Style Fidelity Tests (rounded corners, typography, shape catalog)
2184
- // ============================================================================
2185
-
2186
- describe('theme style fidelity', () => {
2187
- const academic = loadTheme('academic')
2188
- const techBlue = loadTheme('tech-blue')
2189
-
2190
- it('academic theme renders service nodes with square corners', () => {
2191
- const style = generateNodeStyle({ id: 's1', label: 'Encoder', type: 'service' }, academic)
2192
- assert.ok(style.includes('rounded=0'), 'academic service nodes should be square')
2193
- assert.ok(!style.includes('arcSize='), 'square corners should not carry an arcSize')
2194
- })
2195
-
2196
- it('academic theme renders modules with square corners', () => {
2197
- const style = generateModuleStyle({ id: 'm1', label: 'Encoder Stack' }, academic)
2198
- assert.ok(style.includes('rounded=0'), 'academic modules should be square (module.rounded: 0)')
2199
- assert.ok(!style.includes('arcSize='), 'square modules should not carry an arcSize')
2200
- })
2201
-
2202
- it('terminal stadium shapes keep their semantic rounding under square themes', () => {
2203
- const style = generateNodeStyle({ id: 't1', label: 'Start', type: 'terminal' }, academic)
2204
- assert.ok(style.includes('arcSize=50'), 'stadium rounding is shape semantics, not decoration')
2205
- })
2206
-
2207
- it('tech-blue theme rounded token overrides SHAPE_STYLES arcSize', () => {
2208
- const style = generateNodeStyle({ id: 's2', label: 'API Gateway', type: 'service' }, techBlue)
2209
- assert.ok(style.includes('rounded=1'), 'tech-blue keeps rounded corners')
2210
- assert.ok(style.includes('arcSize=8'), 'tech-blue node.default.rounded=8 should win over the hardcoded 20')
2211
- })
2212
-
2213
- it('theme typography supplies node fonts with meta.font staying strongest', () => {
2214
- const themed = generateNodeStyle({ id: 'f1', label: 'API Gateway', type: 'service' }, techBlue)
2215
- assert.ok(themed.includes('fontFamily=Inter, Roboto, system-ui, -apple-system, sans-serif'))
2216
-
2217
- const formula = generateNodeStyle({ id: 'f2', label: '$$y=mx+b$$', type: 'formula' }, academic)
2218
- assert.ok(
2219
- formula.includes('fontFamily=Latin Modern, STIX Two Math, Times New Roman, serif'),
2220
- 'academic formula nodes should use the theme formula stack'
2221
- )
2222
-
2223
- const xml = specToDrawioXml(
2224
- {
2225
- meta: { theme: 'tech-blue', font: { primary: 'Georgia', cjk: 'SimHei', formula: 'STIX Two Math' } },
2226
- nodes: [{ id: 'n1', label: 'Gateway' }],
2227
- edges: [],
2228
- modules: []
2229
- },
2230
- { silent: true }
2231
- )
2232
- assert.ok(xml.includes('fontFamily=Georgia'), 'meta.font must override theme typography')
2233
- assert.ok(!xml.includes('fontFamily=Inter'), 'meta.font leaves no theme font on covered surfaces')
2234
- })
2235
-
2236
- it('maps aws subnet devices to the swimlane group instead of an RDS icon', () => {
2237
- assert.strictEqual(deriveNodeIcon({ network: { vendor: 'aws', device: 'subnet' } }), null)
2238
- const style = generateNodeStyle(
2239
- { id: 'sn1', label: 'Public Subnet', network: { vendor: 'aws', device: 'subnet' } },
2240
- techBlue
2241
- )
2242
- assert.ok(style.includes('swimlane'), 'subnet nodes should render as swimlane group boxes')
2243
- assert.ok(!style.includes('rds_instance'), 'subnet must not map to the RDS icon')
2244
- })
2245
-
2246
- it('emits aws4 resource icons through the compound resourceIcon style', () => {
2247
- const style = generateNodeStyle(
2248
- { id: 'ec1', label: 'App Server', network: { vendor: 'aws', device: 'ec2' } },
2249
- techBlue
2250
- )
2251
- assert.ok(
2252
- style.includes('shape=mxgraph.aws4.resourceIcon;resIcon=mxgraph.aws4.ec2;aspect=fixed'),
2253
- 'aws4 resource-only icons need shape=resourceIcon;resIcon=<name>'
2254
- )
2255
- })
2256
-
2257
- it('keeps every SHAPE_STYLES stencil reference inside the shape catalog', () => {
2258
- for (const [type, style] of Object.entries(SHAPE_STYLES)) {
2259
- const match = /(?:^|;)shape=([^;]+)/.exec(style)
2260
- if (!match) continue
2261
- const kind = resolveShapeNameKind(match[1])
2262
- assert.ok(
2263
- kind === 'stencil' || kind === 'builtin' || kind === 'unchecked',
2264
- `SHAPE_STYLES.${type} emits unknown shape "${match[1]}" (${kind})`
2265
- )
2266
- }
2267
- })
2268
-
2269
- it('reports errors with search suggestions for unknown covered shape names', () => {
2270
- const result = validateShapeReferences({
2271
- nodes: [
2272
- { id: 'bad', label: 'Broken', icon: 'cisco.wireless.access_point' },
2273
- { id: 'good', label: 'DB', icon: 'aws.rds' },
2274
- { id: 'brand', label: 'OpenAI', icon: 'brand.openai' },
2275
- { id: 'lucide', label: 'Cache', icon: 'lucide.database-zap' },
2276
- { id: 'badLobe', label: 'Missing Lobe', icon: 'lobe.opnai' },
2277
- { id: 'badBrand', label: 'Missing Brand', icon: 'brand.not-real' },
2278
- { id: 'badLucide', label: 'Missing Lucide', icon: 'lucide.not-a-real-icon' }
2279
- ]
2280
- })
2281
- assert.equal(result.errors.length, 1, 'covered stencil names should be errors')
2282
- assert.equal(result.warnings.length, 3, 'uncovered image names should remain warnings')
2283
- assert.match(result.errors[0], /unknown shape "mxgraph\.cisco\.wireless\.access_point"/)
2284
- assert.match(result.errors[0], /Did you mean:/)
2285
- assert.match(result.warnings[0], /unknown AI icon "lobe\.opnai"/)
2286
- assert.match(result.warnings[0], /icon: lobe\.openai/)
2287
- assert.match(result.warnings[1], /unknown shape "brand\.not-real"/)
2288
- assert.match(result.warnings[2], /unknown shape "lucide\.not-a-real-icon"/)
2289
- })
2290
-
2291
- it('rejects unknown covered stencil names by default and allows an explicit downgrade', () => {
2292
- const spec = {
2293
- nodes: [
2294
- { id: 'badAws', label: 'Bad AWS', icon: 'aws.s3_bucket_magic' },
2295
- { id: 'badK8s', label: 'Bad Kubernetes', icon: 'k8s.podd' }
2296
- ]
2297
- }
2298
- assert.throws(
2299
- () => specToDrawioXml(spec, { silent: true }),
2300
- (error) => error.validationErrors?.length === 2 && /k8s\.pod/.test(error.message)
2301
- )
2302
- const result = specToDrawioXml(spec, { silent: true, returnWarnings: true, allowUnknownShapes: true })
2303
- assert.equal(typeof result.xml, 'string')
2304
- assert.equal(result.warnings.filter((warning) => warning.level === 'warning').length, 2)
2305
- })
2306
-
2307
- it('validates and renders canonical SysML and BPMN stencil icons through the existing pipeline', () => {
2308
- const spec = {
2309
- nodes: [
2310
- { id: 'port', label: 'Flow Port', icon: 'mxgraph.sysml.port' },
2311
- { id: 'task', label: 'Review', icon: 'mxgraph.bpmn.task2' }
2312
- ],
2313
- edges: [{ from: 'port', to: 'task' }],
2314
- modules: []
2315
- }
2316
-
2317
- assert.doesNotThrow(() => validateSpec(spec))
2318
- assert.deepEqual(validateShapeReferences(spec), { errors: [], warnings: [] })
2319
- const xml = specToDrawioXml(spec, { silent: true })
2320
- assert.match(xml, /shape=mxgraph\.sysml\.port/)
2321
- assert.match(xml, /shape=mxgraph\.bpmn\.task2/)
2322
- })
2323
- })
2324
-
2325
- describe('academic consistency', () => {
2326
- const academicMeta = {
2327
- profile: 'academic-paper',
2328
- theme: 'academic',
2329
- figureType: 'architecture',
2330
- title: 'Figure',
2331
- description: 'Test figure'
2332
- }
2333
-
2334
- it('exempts explicit text nodes from the verbose-label warning', () => {
2335
- const spec = {
2336
- meta: { ...academicMeta },
2337
- nodes: [
2338
- {
2339
- id: 'legend',
2340
- type: 'text',
2341
- label: 'Solid: data flow / Dashed: gradients / Dotted: control / Bold: main path / Thin: aux path'
2342
- }
2343
- ],
2344
- edges: []
2345
- }
2346
- const warnings = validateAcademicProfile(spec)
2347
- assert.ok(!warnings.some((w) => w.includes('concise')), 'text nodes must be exempt from the verbose-label rule')
2348
- })
2349
-
2350
- it('measures label verbosity by visible length, not raw TeX source length', () => {
2351
- const spec = {
2352
- meta: { ...academicMeta },
2353
- nodes: [
2354
- { id: 'math', label: String.raw`$$\mathbf{X} \in \mathbb{R}^{B \times D \times L}$$` },
2355
- { id: 'plain', label: 'A genuinely verbose plain-text label that keeps going well past forty characters' }
2356
- ],
2357
- edges: []
2358
- }
2359
- const verbose = validateAcademicProfile(spec).find((w) => w.includes('concise'))
2360
- assert.ok(verbose, 'plain long label still warns')
2361
- assert.ok(verbose.includes('"plain"'), 'plain node is named')
2362
- assert.ok(!verbose.includes('"math"'), 'TeX label with short visible text is not flagged')
2363
- })
2364
-
2365
- it('no longer emits the academic density warning (checkComplexity owns density)', () => {
2366
- const spec = {
2367
- meta: { ...academicMeta },
2368
- nodes: Array.from({ length: 30 }, (_, i) => ({ id: `n${i}`, label: `N${i}` })),
2369
- edges: []
2370
- }
2371
- assert.ok(!validateAcademicProfile(spec).some((w) => w.includes('dense')))
2372
- })
2373
-
2374
- it('warns when a wide canvas drops labels below 8pt at single-column width', () => {
2375
- const spec = {
2376
- meta: { ...academicMeta, canvas: '1600x900' },
2377
- nodes: [{ id: 'a', label: 'A', style: { fontSize: 10 } }],
2378
- edges: []
2379
- }
2380
- const sizeWarning = validateAcademicProfile(spec).find((w) => w.includes('252pt'))
2381
- assert.ok(sizeWarning, 'expected layout-size warning for 1600px canvas')
2382
- assert.ok(sizeWarning.includes('1600px'), 'mentions canvas width')
2383
- assert.ok(sizeWarning.includes('>= 51'), 'prescribes ceil(1600 / 31.5) = 51')
2384
- })
2385
-
2386
- it('keeps existing-scale canvases (<= 1500px) silent', () => {
2387
- const spec = {
2388
- meta: { ...academicMeta, canvas: '1200x800' },
2389
- nodes: [{ id: 'a', label: 'A', style: { fontSize: 10 } }],
2390
- edges: []
2391
- }
2392
- assert.ok(!validateAcademicProfile(spec).some((w) => w.includes('252pt')))
2393
- })
2394
-
2395
- it('flags unknown meta keys but accepts template metadata', () => {
2396
- const warnings = validateSchemaDrift({
2397
- meta: { title: 't', template: 'compact', canvasSize: '1200x800', gridSize: 8 },
2398
- nodes: [{ id: 'n1', label: 'L' }]
2399
- })
2400
- assert.equal(warnings.length, 1)
2401
- assert.ok(warnings[0].includes('"canvasSize"'))
2402
- assert.ok(warnings[0].includes('"gridSize"'))
2403
- assert.ok(!warnings[0].includes('"template"'))
2404
- })
2405
-
2406
- it('flags unknown node.style keys such as shape and rounded', () => {
2407
- const warnings = validateSchemaDrift({
2408
- meta: { title: 't' },
2409
- nodes: [{ id: 'n1', label: 'L', style: { shape: 'box', rounded: false, fillColor: '#FFFFFF' } }]
2410
- })
2411
- assert.equal(warnings.length, 1)
2412
- assert.ok(warnings[0].includes('"n1"'))
2413
- assert.ok(warnings[0].includes('"shape"'))
2414
- assert.ok(warnings[0].includes('"rounded"'))
2415
- assert.ok(!warnings[0].includes('"fillColor"'))
2416
- })
2417
-
2418
- it('flags unknown module keys such as bounds', () => {
2419
- const warnings = validateSchemaDrift({
2420
- meta: { title: 't' },
2421
- nodes: [{ id: 'n1', label: 'L' }],
2422
- modules: [{ id: 'm1', label: 'M', bounds: { x: 0, y: 0, width: 100, height: 100 } }]
2423
- })
2424
- assert.equal(warnings.length, 1)
2425
- assert.ok(warnings[0].includes('"m1"'))
2426
- assert.ok(warnings[0].includes('"bounds"'))
2427
- })
2428
-
2429
- it('fails strict conversion when schema drift is present', () => {
2430
- const spec = {
2431
- meta: { title: 't', canvasSize: '1200x800' },
2432
- nodes: [{ id: 'n1', label: 'L' }],
2433
- edges: []
2434
- }
2435
- assert.throws(() => specToDrawioXml(spec, { strict: true, silent: true }), /canvasSize/)
2436
- assert.doesNotThrow(() => specToDrawioXml(spec, { silent: true }))
2437
- })
2438
-
2439
- it('aggregates long-label infos and keeps the 200-char fatal per node', () => {
2440
- const longLabel = 'This label is definitely longer than fourteen characters'
2441
- const spec = {
2442
- nodes: [
2443
- { id: 'a', label: longLabel },
2444
- { id: 'b', label: longLabel },
2445
- { id: 'c', label: longLabel },
2446
- { id: 'd', label: longLabel },
2447
- { id: 'e', label: 'x'.repeat(201) }
2448
- ],
2449
- edges: []
2450
- }
2451
- const warnings = checkComplexity(spec)
2452
- const infos = warnings.filter((w) => w.level === 'info')
2453
- assert.equal(infos.length, 1)
2454
- assert.ok(infos[0].message.includes('4 node label(s)'))
2455
- assert.ok(infos[0].message.includes('"a", "b", "c" +1 more'))
2456
- const fatals = warnings.filter((w) => w.level === 'fatal')
2457
- assert.equal(fatals.length, 1)
2458
- assert.ok(fatals[0].message.includes('"e"'))
2459
- })
2460
- })
2461
-
2462
- describe('tiered layout and centered slots', () => {
2463
- it('places network tiers in North-South rows', () => {
2464
- const spec = {
2465
- meta: { layout: 'tiered' },
2466
- nodes: [
2467
- { id: 'net', label: 'Internet', network: { role: 'internet' } },
2468
- { id: 'fw', label: 'Edge FW', network: { role: 'firewall' } },
2469
- { id: 'core', label: 'Core SW', network: { role: 'core' } },
2470
- { id: 'dist', label: 'Dist SW', network: { role: 'distribution' } },
2471
- { id: 'acc1', label: 'Access 1', network: { role: 'access' } },
2472
- { id: 'acc2', label: 'Access 2', network: { role: 'access' } },
2473
- { id: 'srv', label: 'App Server', network: { role: 'server' } }
2474
- ],
2475
- edges: []
2476
- }
2477
- const layout = calculateLayout(spec, loadTheme('tech-blue'))
2478
- const y = (id) => layout.positions.get(id).y
2479
- assert.ok(y('net') < y('fw'))
2480
- assert.ok(y('fw') < y('core'))
2481
- assert.ok(y('core') < y('dist'))
2482
- assert.ok(y('dist') < y('acc1'))
2483
- assert.equal(y('acc1'), y('acc2'))
2484
- assert.ok(y('acc1') < y('srv'))
2485
- })
2486
-
2487
- it('keeps explicitly positioned nodes untouched in tiered layout', () => {
2488
- const spec = {
2489
- meta: { layout: 'tiered' },
2490
- nodes: [
2491
- {
2492
- id: 'pinned',
2493
- label: 'Pinned',
2494
- bounds: { x: 500, y: 500, width: 100, height: 40 },
2495
- network: { role: 'core' }
2496
- },
2497
- { id: 'auto', label: 'Auto', network: { role: 'access' } }
2498
- ],
2499
- edges: []
2500
- }
2501
- const layout = calculateLayout(spec, loadTheme('tech-blue'))
2502
- assert.deepEqual(layout.positions.get('pinned'), { x: 500, y: 500, width: 100, height: 40 })
2503
- })
2504
-
2505
- it('validateSpec accepts tiered and still rejects unknown layouts', () => {
2506
- assert.doesNotThrow(() =>
2507
- validateSpec({ meta: { layout: 'tiered' }, nodes: [{ id: 'a', label: 'A' }], edges: [], modules: [] })
2508
- )
2509
- assert.throws(() =>
2510
- validateSpec({ meta: { layout: 'diagonal' }, nodes: [{ id: 'a', label: 'A' }], edges: [], modules: [] })
2511
- )
2512
- })
2513
-
2514
- it('centers the connection point when a face has a single edge', () => {
2515
- const spec = {
2516
- meta: { layout: 'horizontal' },
2517
- modules: [{ id: 'm1', label: 'M1' }],
2518
- nodes: [
2519
- { id: 'a', label: 'A', module: 'm1' },
2520
- { id: 'b', label: 'B' }
2521
- ],
2522
- edges: [{ from: 'a', to: 'b' }]
2523
- }
2524
- const xml = specToDrawioXml(spec, { silent: true })
2525
- assert.ok(xml.includes('exitY=0.5'), 'single-edge source face centers at 0.5')
2526
- assert.ok(xml.includes('entryY=0.5'), 'single-edge target face centers at 0.5')
2527
- assert.ok(!xml.includes('exitY=0.25'))
2528
- })
2529
-
2530
- it('distributes multiple edges on a shared face across slots', () => {
2531
- const spec = {
2532
- meta: { layout: 'horizontal' },
2533
- nodes: [
2534
- { id: 'a', label: 'A', position: { x: 100, y: 200 } },
2535
- { id: 'b', label: 'B', position: { x: 400, y: 100 } },
2536
- { id: 'c', label: 'C', position: { x: 400, y: 300 } }
2537
- ],
2538
- edges: [
2539
- { from: 'a', to: 'b' },
2540
- { from: 'a', to: 'c' }
2541
- ]
2542
- }
2543
- const xml = specToDrawioXml(spec, { silent: true })
2544
- // Slots keep the legacy 0.25-first order but dodge to the next slot that
2545
- // honors the 30px corridor rule (0.5 on a 60px face is only 15px away).
2546
- assert.ok(xml.includes('exitY=0.25'))
2547
- assert.ok(xml.includes('exitY=0.75'))
2548
- })
2549
- })
2550
-
2551
- describe('layout quality metrics', () => {
2552
- it('counts an edge cutting through an unrelated node', () => {
2553
- const spec = {
2554
- meta: { layout: 'horizontal' },
2555
- nodes: [
2556
- { id: 'a', label: 'A', bounds: { x: 40, y: 100, width: 80, height: 40 } },
2557
- { id: 'mid', label: 'Mid', bounds: { x: 240, y: 100, width: 80, height: 40 } },
2558
- { id: 'c', label: 'C', bounds: { x: 440, y: 100, width: 80, height: 40 } }
2559
- ],
2560
- edges: [{ from: 'a', to: 'c' }]
2561
- }
2562
- const metrics = computeLayoutQualityMetrics(spec)
2563
- assert.equal(metrics.edgeNodeCrossings, 1)
2564
- assert.equal(metrics.edgeEdgeCrossings, 0)
2565
- assert.equal(metrics.totalEdgeLength, 320)
2566
- })
2567
-
2568
- it('counts crossing edge pairs and stays silent for clean layouts', () => {
2569
- const crossing = {
2570
- meta: { layout: 'horizontal' },
2571
- nodes: [
2572
- { id: 'a', label: 'A', bounds: { x: 40, y: 40, width: 80, height: 40 } },
2573
- { id: 'b', label: 'B', bounds: { x: 40, y: 240, width: 80, height: 40 } },
2574
- { id: 'c', label: 'C', bounds: { x: 440, y: 40, width: 80, height: 40 } },
2575
- { id: 'd', label: 'D', bounds: { x: 440, y: 240, width: 80, height: 40 } }
2576
- ],
2577
- edges: [
2578
- { from: 'a', to: 'd' },
2579
- { from: 'b', to: 'c' }
2580
- ]
2581
- }
2582
- assert.equal(computeLayoutQualityMetrics(crossing).edgeEdgeCrossings, 1)
2583
-
2584
- const clean = {
2585
- meta: { layout: 'horizontal' },
2586
- nodes: [
2587
- { id: 'a', label: 'A', bounds: { x: 40, y: 40, width: 80, height: 40 } },
2588
- { id: 'b', label: 'B', bounds: { x: 240, y: 40, width: 80, height: 40 } }
2589
- ],
2590
- edges: [{ from: 'a', to: 'b' }]
2591
- }
2592
- const metrics = computeLayoutQualityMetrics(clean)
2593
- assert.equal(metrics.edgeNodeCrossings, 0)
2594
- assert.equal(metrics.edgeEdgeCrossings, 0)
2595
- assert.equal(metrics.totalEdgeLength, 120)
2596
- })
2597
- })
2598
-
2599
- describe('straight orthogonal routing', () => {
2600
- function extractEdges(xml) {
2601
- const edges = []
2602
- const re = /<mxCell [^>]*style="([^"]*)"[^>]*edge="1"[^>]*>/g
2603
- let match
2604
- while ((match = re.exec(xml)) !== null) {
2605
- const style = match[1]
2606
- const get = (key) => {
2607
- const found = new RegExp(`${key}=(-?[0-9.]+)`).exec(style)
2608
- return found ? Number(found[1]) : undefined
2609
- }
2610
- edges.push({
2611
- style,
2612
- exitX: get('exitX'),
2613
- exitY: get('exitY'),
2614
- entryX: get('entryX'),
2615
- entryY: get('entryY')
2616
- })
2617
- }
2618
- return edges
2619
- }
2620
-
2621
- it('aligns a vertical edge between different-width boxes into one straight line', () => {
2622
- const spec = {
2623
- meta: {},
2624
- nodes: [
2625
- { id: 'wide', label: 'Wide', bounds: { x: 80, y: 40, width: 880, height: 64 } },
2626
- { id: 'narrow', label: 'Narrow', bounds: { x: 120, y: 280, width: 344, height: 64 } }
2627
- ],
2628
- edges: [{ from: 'narrow', to: 'wide' }]
2629
- }
2630
- const xml = specToDrawioXml(spec, { silent: true })
2631
- const [edge] = extractEdges(xml)
2632
- const absExit = 120 + edge.exitX * 344
2633
- const absEntry = 80 + edge.entryX * 880
2634
- assert.ok(Math.abs(absExit - absEntry) < 0.1, `expected collinear, delta=${Math.abs(absExit - absEntry)}`)
2635
- assert.equal(absExit, 120 + 344 / 2)
2636
- assert.equal(edge.exitY, 0)
2637
- assert.equal(edge.entryY, 1)
2638
- })
2639
-
2640
- it('keeps multiple edges into a wide bar aligned with each counterpart center', () => {
2641
- const spec = {
2642
- meta: {},
2643
- nodes: [
2644
- { id: 'bar', label: 'Bar', bounds: { x: 80, y: 400, width: 880, height: 56 } },
2645
- { id: 'a', label: 'A', bounds: { x: 120, y: 560, width: 160, height: 48 } },
2646
- { id: 'b', label: 'B', bounds: { x: 600, y: 560, width: 160, height: 48 } }
2647
- ],
2648
- edges: [
2649
- { from: 'a', to: 'bar' },
2650
- { from: 'b', to: 'bar' }
2651
- ]
2652
- }
2653
- const xml = specToDrawioXml(spec, { silent: true })
2654
- const edges = extractEdges(xml)
2655
- const coords = []
2656
- for (const [index, source] of [
2657
- [0, { x: 120, width: 160 }],
2658
- [1, { x: 600, width: 160 }]
2659
- ]) {
2660
- const edge = edges[index]
2661
- const absExit = source.x + edge.exitX * source.width
2662
- const absEntry = 80 + edge.entryX * 880
2663
- assert.ok(Math.abs(absExit - absEntry) < 0.1, `edge ${index} not collinear`)
2664
- assert.equal(absExit, source.x + source.width / 2)
2665
- coords.push(absExit)
2666
- }
2667
- assert.ok(Math.abs(coords[0] - coords[1]) >= 30)
2668
- })
2669
-
2670
- it('separates a bidirectional pair into two parallel straight lines', () => {
2671
- const spec = {
2672
- meta: {},
2673
- nodes: [
2674
- { id: 'top', label: 'Top', bounds: { x: 100, y: 0, width: 300, height: 60 } },
2675
- { id: 'bottom', label: 'Bottom', bounds: { x: 100, y: 240, width: 300, height: 60 } }
2676
- ],
2677
- edges: [
2678
- { from: 'top', to: 'bottom' },
2679
- { from: 'bottom', to: 'top' }
2680
- ]
2681
- }
2682
- const xml = specToDrawioXml(spec, { silent: true })
2683
- const edges = extractEdges(xml)
2684
- const downCoord = 100 + edges[0].exitX * 300
2685
- const downEntry = 100 + edges[0].entryX * 300
2686
- const upCoord = 100 + edges[1].exitX * 300
2687
- const upEntry = 100 + edges[1].entryX * 300
2688
- assert.ok(Math.abs(downCoord - downEntry) < 0.1, 'downward edge must stay straight')
2689
- assert.ok(Math.abs(upCoord - upEntry) < 0.1, 'upward edge must stay straight')
2690
- assert.ok(Math.abs(downCoord - upCoord) >= 29.9, `parallel pair too close: ${Math.abs(downCoord - upCoord)}`)
2691
- })
2692
-
2693
- it('falls back to face slots when no collinear interval exists', () => {
2694
- const spec = {
2695
- meta: {},
2696
- nodes: [
2697
- { id: 'a', label: 'A', bounds: { x: 0, y: 0, width: 100, height: 60 } },
2698
- { id: 'b', label: 'B', bounds: { x: 300, y: 200, width: 100, height: 60 } }
2699
- ],
2700
- edges: [{ from: 'a', to: 'b' }]
2701
- }
2702
- const xml = specToDrawioXml(spec, { silent: true })
2703
- const [edge] = extractEdges(xml)
2704
- assert.equal(edge.exitX, 1)
2705
- assert.equal(edge.exitY, 0.5)
2706
- assert.equal(edge.entryX, 0)
2707
- assert.equal(edge.entryY, 0.5)
2708
- })
2709
-
2710
- it('keeps explicit user connection points untouched', () => {
2711
- const spec = {
2712
- meta: {},
2713
- nodes: [
2714
- { id: 'wide', label: 'Wide', bounds: { x: 80, y: 40, width: 880, height: 64 } },
2715
- { id: 'narrow', label: 'Narrow', bounds: { x: 120, y: 280, width: 344, height: 64 } }
2716
- ],
2717
- edges: [
2718
- {
2719
- from: 'narrow',
2720
- to: 'wide',
2721
- style: { exitX: 0.25, exitY: 0, entryX: 0.75, entryY: 1, exitDx: 0, exitDy: 0, entryDx: 0, entryDy: 0 }
2722
- }
2723
- ]
2724
- }
2725
- const xml = specToDrawioXml(spec, { silent: true })
2726
- const [edge] = extractEdges(xml)
2727
- assert.equal(edge.exitX, 0.25)
2728
- assert.equal(edge.entryX, 0.75)
2729
- })
2730
-
2731
- it('routes overlapping wide/narrow boxes vertically instead of through their bodies', () => {
2732
- const spec = {
2733
- meta: {},
2734
- nodes: [
2735
- { id: 'browser', label: 'Browser', bounds: { x: 80, y: 40, width: 880, height: 64 } },
2736
- { id: 'web', label: 'Web', bounds: { x: 600, y: 280, width: 360, height: 64 } }
2737
- ],
2738
- edges: [{ from: 'browser', to: 'web' }]
2739
- }
2740
- const { warnings } = specToDrawioXml(spec, { silent: true, returnWarnings: true })
2741
- const xml = specToDrawioXml(spec, { silent: true })
2742
- const [edge] = extractEdges(xml)
2743
- assert.equal(edge.exitY, 1, 'edge should leave the bottom face')
2744
- assert.equal(edge.entryY, 0, 'edge should enter the top face')
2745
- const segmentWarnings = warnings.filter((w) => String(w.message || w).includes('short final segment'))
2746
- assert.equal(segmentWarnings.length, 0)
2747
- })
2748
-
2749
- it('warns when explicit points bend an edge that could be straight', () => {
2750
- const spec = {
2751
- meta: {},
2752
- nodes: [
2753
- { id: 'top', label: 'Top', bounds: { x: 100, y: 0, width: 300, height: 60 } },
2754
- { id: 'bottom', label: 'Bottom', bounds: { x: 100, y: 240, width: 300, height: 60 } }
2755
- ],
2756
- edges: [
2757
- {
2758
- from: 'top',
2759
- to: 'bottom',
2760
- style: { exitX: 0.2, exitY: 1, entryX: 0.8, entryY: 0, exitDx: 0, exitDy: 0, entryDx: 0, entryDy: 0 }
2761
- }
2762
- ]
2763
- }
2764
- const { warnings } = specToDrawioXml(spec, { silent: true, returnWarnings: true })
2765
- const bendWarnings = warnings.filter((w) => String(w.message || w).includes('off a straight vertical line'))
2766
- assert.equal(bendWarnings.length, 1)
2767
- })
2768
- })
2769
-
2770
- describe('replicate quality gates', () => {
2771
- it('forces plain text nodes transparent even when the spec asks for white', () => {
2772
- const spec = {
2773
- meta: {},
2774
- nodes: [
2775
- {
2776
- id: 'note',
2777
- label: 'note',
2778
- type: 'text',
2779
- bounds: { x: 0, y: 0, width: 120, height: 40 },
2780
- style: { fillColor: '#FFFFFF', strokeColor: '#FF0000' }
2781
- }
2782
- ],
2783
- edges: []
2784
- }
2785
- const { xml, warnings } = specToDrawioXml(spec, { silent: true, returnWarnings: true })
2786
- const styleMatch = /<mxCell[^>]*value="note"[^>]*style="([^"]*)"/.exec(xml)
2787
- assert.ok(styleMatch, 'text cell should exist')
2788
- assert.match(styleMatch[1], /fillColor=none/)
2789
- assert.match(styleMatch[1], /strokeColor=none/)
2790
- assert.match(styleMatch[1], /labelBackgroundColor=none/)
2791
- assert.ok(!styleMatch[1].includes('overflow=hidden'), 'text nodes must not clip their content')
2792
- const overrideWarnings = warnings.filter((w) => String(w.message || w).includes('always render transparent'))
2793
- assert.equal(overrideWarnings.length, 2)
2794
- })
2795
-
2796
- it('warns when text bounds are smaller than the content estimate', () => {
2797
- const spec = {
2798
- meta: {},
2799
- nodes: [
2800
- {
2801
- id: 'clipped',
2802
- label: '过程数据报表汇总说明',
2803
- type: 'text',
2804
- bounds: { x: 0, y: 0, width: 40, height: 16 }
2805
- }
2806
- ],
2807
- edges: []
2808
- }
2809
- const { warnings } = specToDrawioXml(spec, { silent: true, returnWarnings: true })
2810
- const clipWarnings = warnings.filter((w) => String(w.message || w).includes('smaller than the estimated content size'))
2811
- assert.equal(clipWarnings.length, 1)
2812
- })
2813
-
2814
- it('adds a bold default endSize to default (open) and explicit block arrows, honoring overrides', () => {
2815
- const theme = loadTheme('tech-blue')
2816
- const defaultStyle = generateConnectorStyle({ from: 'a', to: 'b' }, theme)
2817
- assert.match(defaultStyle, /endArrow=open/)
2818
- assert.match(defaultStyle, /endSize=12/)
2819
- const blockStyle = generateConnectorStyle({ from: 'a', to: 'b', style: { endArrow: 'block' } }, theme)
2820
- assert.match(blockStyle, /endArrow=block/)
2821
- assert.match(blockStyle, /endSize=12/)
2822
- const overridden = generateConnectorStyle({ from: 'a', to: 'b', style: { endSize: 6 } }, theme)
2823
- assert.match(overridden, /endSize=6/)
2824
- })
2825
-
2826
- it('converts label newlines to <br> so vertical CJK labels survive XML attributes', () => {
2827
- const spec = {
2828
- meta: {},
2829
- nodes: [
2830
- { id: 'v', label: '可\n视\n化', type: 'text', bounds: { x: 0, y: 0, width: 32, height: 80 } },
2831
- { id: 'a', label: 'A', bounds: { x: 100, y: 200, width: 80, height: 40 } },
2832
- { id: 'b', label: 'B', bounds: { x: 100, y: 400, width: 80, height: 40 } }
2833
- ],
2834
- edges: [{ from: 'a', to: 'b', label: '上\n位' }]
2835
- }
2836
- const xml = specToDrawioXml(spec, { silent: true })
2837
- assert.ok(xml.includes('可&lt;br&gt;视&lt;br&gt;化'), 'node label newlines become <br>')
2838
- assert.ok(xml.includes('上&lt;br&gt;位'), 'edge label newlines become <br>')
2839
- })
2840
-
2841
- it('keeps math labels free of injected <br> tags', () => {
2842
- const spec = {
2843
- meta: {},
2844
- nodes: [{ id: 'f', label: '$$a=b\nc=d$$', type: 'formula', bounds: { x: 0, y: 0, width: 120, height: 60 } }],
2845
- edges: []
2846
- }
2847
- const xml = specToDrawioXml(spec, { silent: true })
2848
- assert.ok(!xml.includes('&lt;br&gt;'), 'math labels keep raw newlines')
2849
- })
2850
-
2851
- it('reports floating edges and arrow-shape connectors as validateXml warnings', () => {
2852
- const xml =
2853
- '<mxGraphModel><root>' +
2854
- '<mxCell id="0"/>' +
2855
- '<mxCell id="1" parent="0"/>' +
2856
- '<mxCell id="2" value="A" style="rounded=1" vertex="1" parent="1"><mxGeometry x="0" y="0" width="80" height="40" as="geometry"/></mxCell>' +
2857
- '<mxCell id="3" value="" style="edgeStyle=orthogonalEdgeStyle" edge="1" parent="1"><mxGeometry relative="1" as="geometry"/></mxCell>' +
2858
- '<mxCell id="4" value="" style="shape=singleArrow;fillColor=#000000" vertex="1" parent="1"><mxGeometry x="100" y="0" width="60" height="20" as="geometry"/></mxCell>' +
2859
- '<mxCell id="5" value="t" style="text;html=1;fillColor=#FFFFFF" vertex="1" parent="1"><mxGeometry x="0" y="100" width="60" height="20" as="geometry"/></mxCell>' +
2860
- '</root></mxGraphModel>'
2861
- const result = validateXml(xml)
2862
- assert.equal(result.valid, true)
2863
- const floating = result.warnings.filter((w) => w.includes('not bound to nodes'))
2864
- const arrowShapes = result.warnings.filter((w) => w.includes('arrow shape'))
2865
- const whiteText = result.warnings.filter((w) => w.includes('white background'))
2866
- assert.equal(floating.length, 1)
2867
- assert.equal(arrowShapes.length, 1)
2868
- assert.equal(whiteText.length, 1)
2869
- })
2870
-
2871
- it('flags edge labels that sit on their own connector', () => {
2872
- const spec = {
2873
- meta: {},
2874
- nodes: [
2875
- { id: 'a', label: 'A', bounds: { x: 100, y: 0, width: 120, height: 40 } },
2876
- { id: 'b', label: 'B', bounds: { x: 100, y: 300, width: 120, height: 40 } }
2877
- ],
2878
- edges: [{ from: 'a', to: 'b', label: '很长的水平标签文字', labelOffset: { x: 0, y: 0 } }]
2879
- }
2880
- const { warnings } = specToDrawioXml(spec, { silent: true, returnWarnings: true })
2881
- const onLine = warnings.filter((w) => String(w.message || w).includes('sits on its own connector'))
2882
- assert.equal(onLine.length, 1)
2883
- })
2884
-
2885
- it('accepts none as an explicit transparent module fill', () => {
2886
- const spec = {
2887
- meta: {},
2888
- modules: [{ id: 'm', label: 'M', style: { fillColor: 'none', strokeColor: '#000000' } }],
2889
- nodes: [{ id: 'a', label: 'A', module: 'm', bounds: { x: 0, y: 0, width: 80, height: 40 } }],
2890
- edges: []
2891
- }
2892
- const { warnings } = specToDrawioXml(spec, { silent: true, returnWarnings: true })
2893
- const colorWarnings = warnings.filter((w) => String(w.message || w).includes('Invalid color "none"'))
2894
- assert.equal(colorWarnings.length, 0)
2895
- })
2896
- })
2897
-
2898
- // ============================================================================
2899
- // Font ladder, content-aware sizing, class shrink, and print gate
2900
- // ============================================================================
2901
-
2902
- describe('font ladder and fit system', () => {
2903
- const academicMeta = {
2904
- profile: 'academic-paper',
2905
- figureType: 'architecture',
2906
- theme: 'academic',
2907
- title: 'T',
2908
- description: 'D'
2909
- }
2910
-
2911
- it('materializes the ladder (module 22 / node 20 / edge 18) and keeps author YAML untouched', () => {
2912
- const spec = {
2913
- meta: { ...academicMeta },
2914
- modules: [{ id: 'm1', label: '服务接口层' }],
2915
- nodes: [
2916
- { id: 'a', label: '训练服务\n独立子进程 · GPU绑定', type: 'service', module: 'm1' },
2917
- { id: 'b', label: 'Training API', type: 'service', module: 'm1' }
2918
- ],
2919
- edges: [{ from: 'a', to: 'b', label: '操作请求' }]
2920
- }
2921
- const xml = specToDrawioXml(spec, { silent: true })
2922
- assert.ok(xml.includes('fontSize=22'), 'module titles should use the 22px ladder value')
2923
- assert.ok(xml.includes('fontSize=20'), 'node labels should use the 20px ladder value')
2924
- assert.ok(xml.includes('fontSize=18'), 'edge labels should use the 18px ladder value')
2925
- assert.strictEqual(spec.nodes[0].style, undefined, 'font planning must not mutate the author spec')
2926
- })
2927
-
2928
- it('grows preset boxes to fit long labels only in content-aware mode', () => {
2929
- const label = 'APScheduler 单实例(周期触发 · 任务登记 · 作业库持久化)'
2930
- const grown = getNodeSize(null, 'service', label, { contentAware: true, fontSize: 20 })
2931
- assert.ok(grown.width > 400, `long CJK label should grow the box, got ${grown.width}`)
2932
- const legacy = getNodeSize(null, 'service', label)
2933
- assert.deepStrictEqual(legacy, { width: 120, height: 60 }, 'without options the preset is unchanged')
2934
- const operator = getNodeSize(null, 'operator', 'max', { contentAware: true, fontSize: 20 })
2935
- assert.deepStrictEqual(operator, { width: 32, height: 32 }, 'operators keep their size-coded preset')
2936
- })
2937
-
2938
- it('shrinks a class uniformly to the tightest explicit bounds', () => {
2939
- const spec = {
2940
- meta: { ...academicMeta },
2941
- nodes: [
2942
- { id: 'n1', label: '统一调度层核心组件', type: 'service', bounds: { x: 0, y: 0, width: 180, height: 48 } },
2943
- { id: 'n2', label: '短标签', type: 'service', bounds: { x: 0, y: 100, width: 300, height: 48 } }
2944
- ],
2945
- edges: []
2946
- }
2947
- const xml = specToDrawioXml(spec, { silent: true })
2948
- const sizes = [...xml.matchAll(/fontSize=(\d+)/g)].map((m) => Number(m[1]))
2949
- assert.deepStrictEqual(sizes, [18, 18], 'both class members should share the shrunk size')
2950
- })
2951
-
2952
- it('clamps the shrink at the floor and reports the leftover overflow', () => {
2953
- const spec = {
2954
- meta: { ...academicMeta },
2955
- nodes: [
2956
- { id: 'x', label: '超长中文标签放不下这个盒子的情况', type: 'service', bounds: { x: 0, y: 0, width: 90, height: 30 } }
2957
- ],
2958
- edges: []
2959
- }
2960
- const { xml, warnings } = specToDrawioXml(spec, { returnWarnings: true, silent: true })
2961
- assert.ok(xml.includes('fontSize=12'), 'shrink should stop at the 12px floor')
2962
- assert.ok(
2963
- warnings.some((w) => String(w.message).includes('label needs')),
2964
- 'validateLabelFit should report the overflow left at the floor'
2965
- )
2966
- })
2967
-
2968
- it('keeps explicit style.fontSize overrides on nodes and edges', () => {
2969
- const spec = {
2970
- meta: { theme: 'tech-blue' },
2971
- nodes: [
2972
- { id: 'e1', label: '固定字号', type: 'service', style: { fontSize: 9 } },
2973
- { id: 'e2', label: 'B', type: 'service' }
2974
- ],
2975
- edges: [{ from: 'e1', to: 'e2', label: 'flow', style: { fontSize: 10 } }]
2976
- }
2977
- const xml = specToDrawioXml(spec, { silent: true })
2978
- assert.ok(xml.includes('fontSize=9;'), 'node override should survive font planning')
2979
- assert.ok(xml.includes('fontSize=10;'), 'edge override should survive font planning')
2980
- })
2981
-
2982
- it('meta.print drives the print-readability warning', () => {
2983
- const spec = {
2984
- meta: { ...academicMeta, canvas: '1900x900', print: { target: 'cn-thesis' } },
2985
- modules: [],
2986
- nodes: [{ id: 'p1', label: '节点', type: 'service' }],
2987
- edges: []
2988
- }
2989
- const { warnings } = specToDrawioXml(spec, { returnWarnings: true, silent: true })
2990
- const printWarning = warnings.map((w) => String(w.message)).find((m) => m.includes('prints at'))
2991
- assert.ok(printWarning, 'wide canvas with cn-thesis target should warn')
2992
- assert.ok(printWarning.includes('440'), 'warning should use the cn-thesis 440pt width')
2993
- assert.ok(printWarning.includes('9pt floor'), 'warning should use the cn-thesis 9pt floor')
2994
- })
2995
-
2996
- it('validates meta.print shape', () => {
2997
- const base = { nodes: [{ id: 'n1', label: 'Note' }], edges: [], modules: [] }
2998
- assert.throws(
2999
- () => validateSpec({ ...base, meta: { print: { target: 'a4' } } }),
3000
- /Invalid meta\.print\.target/
3001
- )
3002
- assert.throws(
3003
- () => validateSpec({ ...base, meta: { print: { target: 'cn-thesis', widthPt: -1 } } }),
3004
- /meta\.print\.widthPt must be a positive number/
3005
- )
3006
- assert.throws(() => validateSpec({ ...base, meta: { print: {} } }), /meta\.print requires target or widthPt/)
3007
- })
3008
-
3009
- it('no longer warns about 8-10pt labels on the academic profile', () => {
3010
- const spec = {
3011
- meta: { ...academicMeta },
3012
- modules: [],
3013
- nodes: [{ id: 'n1', label: 'Node', type: 'service', style: { fontSize: 20 } }],
3014
- edges: []
3015
- }
3016
- const { warnings } = specToDrawioXml(spec, { returnWarnings: true, silent: true })
3017
- assert.ok(
3018
- warnings.every((w) => !String(w.message).includes('8-10pt')),
3019
- 'the misleading 8-10pt gate should be gone'
3020
- )
3021
- })
3022
- })