@loom-framework/core 0.1.0-alpha.9 → 0.1.0-alpha.91

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 (447) hide show
  1. package/builtin-skills/antd/SKILL.md +266 -0
  2. package/builtin-skills/antv-g2-chart/SKILL.md +1067 -0
  3. package/builtin-skills/antv-g2-chart/references/animations/g2-animation-intro.md +176 -0
  4. package/builtin-skills/antv-g2-chart/references/animations/g2-animation-keyframe.md +149 -0
  5. package/builtin-skills/antv-g2-chart/references/animations/g2-animation-types.md +253 -0
  6. package/builtin-skills/antv-g2-chart/references/components/g2-comp-annotation.md +237 -0
  7. package/builtin-skills/antv-g2-chart/references/components/g2-comp-axis-config.md +648 -0
  8. package/builtin-skills/antv-g2-chart/references/components/g2-comp-axis-radar.md +219 -0
  9. package/builtin-skills/antv-g2-chart/references/components/g2-comp-label-config.md +174 -0
  10. package/builtin-skills/antv-g2-chart/references/components/g2-comp-legend-category.md +278 -0
  11. package/builtin-skills/antv-g2-chart/references/components/g2-comp-legend-config.md +363 -0
  12. package/builtin-skills/antv-g2-chart/references/components/g2-comp-legend-continuous.md +264 -0
  13. package/builtin-skills/antv-g2-chart/references/components/g2-comp-scrollbar.md +276 -0
  14. package/builtin-skills/antv-g2-chart/references/components/g2-comp-slider.md +333 -0
  15. package/builtin-skills/antv-g2-chart/references/components/g2-comp-title.md +149 -0
  16. package/builtin-skills/antv-g2-chart/references/components/g2-comp-tooltip-config.md +358 -0
  17. package/builtin-skills/antv-g2-chart/references/compositions/g2-comp-facet-circle.md +97 -0
  18. package/builtin-skills/antv-g2-chart/references/compositions/g2-comp-facet-rect.md +241 -0
  19. package/builtin-skills/antv-g2-chart/references/compositions/g2-comp-geo-map.md +210 -0
  20. package/builtin-skills/antv-g2-chart/references/compositions/g2-comp-geoview.md +143 -0
  21. package/builtin-skills/antv-g2-chart/references/compositions/g2-comp-repeat-matrix.md +171 -0
  22. package/builtin-skills/antv-g2-chart/references/compositions/g2-comp-space-flex.md +142 -0
  23. package/builtin-skills/antv-g2-chart/references/compositions/g2-comp-space-layer.md +149 -0
  24. package/builtin-skills/antv-g2-chart/references/compositions/g2-comp-timing-keyframe.md +91 -0
  25. package/builtin-skills/antv-g2-chart/references/compositions/g2-comp-view.md +309 -0
  26. package/builtin-skills/antv-g2-chart/references/concepts/g2-concept-chart-selection.md +235 -0
  27. package/builtin-skills/antv-g2-chart/references/concepts/g2-concept-color-theory.md +287 -0
  28. package/builtin-skills/antv-g2-chart/references/concepts/g2-concept-visual-channels.md +180 -0
  29. package/builtin-skills/antv-g2-chart/references/coordinates/g2-coord-cartesian.md +131 -0
  30. package/builtin-skills/antv-g2-chart/references/coordinates/g2-coord-fisheye.md +131 -0
  31. package/builtin-skills/antv-g2-chart/references/coordinates/g2-coord-helix.md +141 -0
  32. package/builtin-skills/antv-g2-chart/references/coordinates/g2-coord-parallel.md +129 -0
  33. package/builtin-skills/antv-g2-chart/references/coordinates/g2-coord-polar.md +143 -0
  34. package/builtin-skills/antv-g2-chart/references/coordinates/g2-coord-radial.md +214 -0
  35. package/builtin-skills/antv-g2-chart/references/coordinates/g2-coord-theta.md +171 -0
  36. package/builtin-skills/antv-g2-chart/references/coordinates/g2-coord-transpose.md +195 -0
  37. package/builtin-skills/antv-g2-chart/references/core/g2-core-chart-init.md +266 -0
  38. package/builtin-skills/antv-g2-chart/references/core/g2-core-encode-channel.md +197 -0
  39. package/builtin-skills/antv-g2-chart/references/core/g2-core-view-composition.md +224 -0
  40. package/builtin-skills/antv-g2-chart/references/data/g2-data-ema.md +190 -0
  41. package/builtin-skills/antv-g2-chart/references/data/g2-data-fetch.md +167 -0
  42. package/builtin-skills/antv-g2-chart/references/data/g2-data-filter.md +212 -0
  43. package/builtin-skills/antv-g2-chart/references/data/g2-data-fold.md +260 -0
  44. package/builtin-skills/antv-g2-chart/references/data/g2-data-format-tabular.md +280 -0
  45. package/builtin-skills/antv-g2-chart/references/data/g2-data-kde.md +426 -0
  46. package/builtin-skills/antv-g2-chart/references/data/g2-data-log.md +140 -0
  47. package/builtin-skills/antv-g2-chart/references/data/g2-data-slice.md +147 -0
  48. package/builtin-skills/antv-g2-chart/references/data/g2-data-sort.md +251 -0
  49. package/builtin-skills/antv-g2-chart/references/data/g2-data-sortby.md +183 -0
  50. package/builtin-skills/antv-g2-chart/references/data/g2-data-transform-patterns.md +394 -0
  51. package/builtin-skills/antv-g2-chart/references/interactions/g2-interaction-adaptive-filter.md +118 -0
  52. package/builtin-skills/antv-g2-chart/references/interactions/g2-interaction-brush-axis.md +112 -0
  53. package/builtin-skills/antv-g2-chart/references/interactions/g2-interaction-brush-filter.md +122 -0
  54. package/builtin-skills/antv-g2-chart/references/interactions/g2-interaction-brush-x-y-highlight.md +127 -0
  55. package/builtin-skills/antv-g2-chart/references/interactions/g2-interaction-brush-xy.md +118 -0
  56. package/builtin-skills/antv-g2-chart/references/interactions/g2-interaction-brush.md +184 -0
  57. package/builtin-skills/antv-g2-chart/references/interactions/g2-interaction-brushx-filter.md +170 -0
  58. package/builtin-skills/antv-g2-chart/references/interactions/g2-interaction-brushx-highlight.md +186 -0
  59. package/builtin-skills/antv-g2-chart/references/interactions/g2-interaction-brushy-filter.md +170 -0
  60. package/builtin-skills/antv-g2-chart/references/interactions/g2-interaction-brushy-highlight.md +185 -0
  61. package/builtin-skills/antv-g2-chart/references/interactions/g2-interaction-chart-index.md +127 -0
  62. package/builtin-skills/antv-g2-chart/references/interactions/g2-interaction-drilldown.md +149 -0
  63. package/builtin-skills/antv-g2-chart/references/interactions/g2-interaction-element-highlight-by.md +125 -0
  64. package/builtin-skills/antv-g2-chart/references/interactions/g2-interaction-element-highlight.md +235 -0
  65. package/builtin-skills/antv-g2-chart/references/interactions/g2-interaction-element-hover-scale.md +109 -0
  66. package/builtin-skills/antv-g2-chart/references/interactions/g2-interaction-element-point-move.md +152 -0
  67. package/builtin-skills/antv-g2-chart/references/interactions/g2-interaction-element-select-by.md +133 -0
  68. package/builtin-skills/antv-g2-chart/references/interactions/g2-interaction-element-select.md +249 -0
  69. package/builtin-skills/antv-g2-chart/references/interactions/g2-interaction-fisheye.md +117 -0
  70. package/builtin-skills/antv-g2-chart/references/interactions/g2-interaction-legend-filter.md +130 -0
  71. package/builtin-skills/antv-g2-chart/references/interactions/g2-interaction-legend-highlight.md +130 -0
  72. package/builtin-skills/antv-g2-chart/references/interactions/g2-interaction-poptip.md +105 -0
  73. package/builtin-skills/antv-g2-chart/references/interactions/g2-interaction-scrollbar-filter.md +144 -0
  74. package/builtin-skills/antv-g2-chart/references/interactions/g2-interaction-slider-filter.md +231 -0
  75. package/builtin-skills/antv-g2-chart/references/interactions/g2-interaction-slider-wheel.md +138 -0
  76. package/builtin-skills/antv-g2-chart/references/interactions/g2-interaction-tooltip.md +192 -0
  77. package/builtin-skills/antv-g2-chart/references/interactions/g2-interaction-treemap-drilldown.md +152 -0
  78. package/builtin-skills/antv-g2-chart/references/label-transform/g2-label-transform-contrast-reverse.md +170 -0
  79. package/builtin-skills/antv-g2-chart/references/label-transform/g2-label-transform-exceed-adjust.md +146 -0
  80. package/builtin-skills/antv-g2-chart/references/label-transform/g2-label-transform-overflow-hide.md +185 -0
  81. package/builtin-skills/antv-g2-chart/references/label-transform/g2-label-transform-overflow-stroke.md +147 -0
  82. package/builtin-skills/antv-g2-chart/references/label-transform/g2-label-transform-overlap-dodge-y.md +225 -0
  83. package/builtin-skills/antv-g2-chart/references/label-transform/g2-label-transform-overlap-hide.md +213 -0
  84. package/builtin-skills/antv-g2-chart/references/marks/g2-mark-arc-diagram.md +196 -0
  85. package/builtin-skills/antv-g2-chart/references/marks/g2-mark-arc-donut.md +148 -0
  86. package/builtin-skills/antv-g2-chart/references/marks/g2-mark-arc-pie.md +212 -0
  87. package/builtin-skills/antv-g2-chart/references/marks/g2-mark-area-basic.md +168 -0
  88. package/builtin-skills/antv-g2-chart/references/marks/g2-mark-area-stacked.md +150 -0
  89. package/builtin-skills/antv-g2-chart/references/marks/g2-mark-beeswarm.md +134 -0
  90. package/builtin-skills/antv-g2-chart/references/marks/g2-mark-bi-directional-bar.md +297 -0
  91. package/builtin-skills/antv-g2-chart/references/marks/g2-mark-box-boxplot.md +163 -0
  92. package/builtin-skills/antv-g2-chart/references/marks/g2-mark-boxplot.md +340 -0
  93. package/builtin-skills/antv-g2-chart/references/marks/g2-mark-bullet.md +203 -0
  94. package/builtin-skills/antv-g2-chart/references/marks/g2-mark-cell-heatmap.md +370 -0
  95. package/builtin-skills/antv-g2-chart/references/marks/g2-mark-chord.md +341 -0
  96. package/builtin-skills/antv-g2-chart/references/marks/g2-mark-connector.md +126 -0
  97. package/builtin-skills/antv-g2-chart/references/marks/g2-mark-contourline.md +243 -0
  98. package/builtin-skills/antv-g2-chart/references/marks/g2-mark-density.md +457 -0
  99. package/builtin-skills/antv-g2-chart/references/marks/g2-mark-distribution-curve.md +298 -0
  100. package/builtin-skills/antv-g2-chart/references/marks/g2-mark-funnel.md +329 -0
  101. package/builtin-skills/antv-g2-chart/references/marks/g2-mark-gantt.md +208 -0
  102. package/builtin-skills/antv-g2-chart/references/marks/g2-mark-gauge.md +247 -0
  103. package/builtin-skills/antv-g2-chart/references/marks/g2-mark-heatmap.md +130 -0
  104. package/builtin-skills/antv-g2-chart/references/marks/g2-mark-histogram.md +186 -0
  105. package/builtin-skills/antv-g2-chart/references/marks/g2-mark-image.md +129 -0
  106. package/builtin-skills/antv-g2-chart/references/marks/g2-mark-interval-basic.md +528 -0
  107. package/builtin-skills/antv-g2-chart/references/marks/g2-mark-interval-grouped.md +161 -0
  108. package/builtin-skills/antv-g2-chart/references/marks/g2-mark-interval-normalized.md +147 -0
  109. package/builtin-skills/antv-g2-chart/references/marks/g2-mark-interval-stacked.md +183 -0
  110. package/builtin-skills/antv-g2-chart/references/marks/g2-mark-k-chart.md +237 -0
  111. package/builtin-skills/antv-g2-chart/references/marks/g2-mark-line-basic.md +353 -0
  112. package/builtin-skills/antv-g2-chart/references/marks/g2-mark-line-multi.md +156 -0
  113. package/builtin-skills/antv-g2-chart/references/marks/g2-mark-linex-liney.md +176 -0
  114. package/builtin-skills/antv-g2-chart/references/marks/g2-mark-link.md +134 -0
  115. package/builtin-skills/antv-g2-chart/references/marks/g2-mark-liquid.md +125 -0
  116. package/builtin-skills/antv-g2-chart/references/marks/g2-mark-mosaic.md +257 -0
  117. package/builtin-skills/antv-g2-chart/references/marks/g2-mark-pack.md +424 -0
  118. package/builtin-skills/antv-g2-chart/references/marks/g2-mark-parallel.md +195 -0
  119. package/builtin-skills/antv-g2-chart/references/marks/g2-mark-partition.md +275 -0
  120. package/builtin-skills/antv-g2-chart/references/marks/g2-mark-path.md +135 -0
  121. package/builtin-skills/antv-g2-chart/references/marks/g2-mark-point-bubble.md +138 -0
  122. package/builtin-skills/antv-g2-chart/references/marks/g2-mark-point-scatter.md +177 -0
  123. package/builtin-skills/antv-g2-chart/references/marks/g2-mark-polygon.md +130 -0
  124. package/builtin-skills/antv-g2-chart/references/marks/g2-mark-radar.md +231 -0
  125. package/builtin-skills/antv-g2-chart/references/marks/g2-mark-radial-bar.md +226 -0
  126. package/builtin-skills/antv-g2-chart/references/marks/g2-mark-range-rangey.md +253 -0
  127. package/builtin-skills/antv-g2-chart/references/marks/g2-mark-rangex.md +293 -0
  128. package/builtin-skills/antv-g2-chart/references/marks/g2-mark-rect.md +115 -0
  129. package/builtin-skills/antv-g2-chart/references/marks/g2-mark-regression-curve.md +276 -0
  130. package/builtin-skills/antv-g2-chart/references/marks/g2-mark-rose.md +182 -0
  131. package/builtin-skills/antv-g2-chart/references/marks/g2-mark-sankey.md +217 -0
  132. package/builtin-skills/antv-g2-chart/references/marks/g2-mark-shape.md +160 -0
  133. package/builtin-skills/antv-g2-chart/references/marks/g2-mark-spiral.md +257 -0
  134. package/builtin-skills/antv-g2-chart/references/marks/g2-mark-sunburst.md +327 -0
  135. package/builtin-skills/antv-g2-chart/references/marks/g2-mark-text.md +309 -0
  136. package/builtin-skills/antv-g2-chart/references/marks/g2-mark-tree.md +235 -0
  137. package/builtin-skills/antv-g2-chart/references/marks/g2-mark-treemap.md +426 -0
  138. package/builtin-skills/antv-g2-chart/references/marks/g2-mark-vector.md +108 -0
  139. package/builtin-skills/antv-g2-chart/references/marks/g2-mark-venn.md +204 -0
  140. package/builtin-skills/antv-g2-chart/references/marks/g2-mark-violin.md +307 -0
  141. package/builtin-skills/antv-g2-chart/references/marks/g2-mark-wordcloud.md +155 -0
  142. package/builtin-skills/antv-g2-chart/references/palette/g2-palette-category10.md +196 -0
  143. package/builtin-skills/antv-g2-chart/references/palette/g2-palette-category20.md +238 -0
  144. package/builtin-skills/antv-g2-chart/references/patterns/g2-pattern-performance.md +181 -0
  145. package/builtin-skills/antv-g2-chart/references/patterns/g2-pattern-responsive.md +232 -0
  146. package/builtin-skills/antv-g2-chart/references/patterns/g2-pattern-v4-to-v5.md +223 -0
  147. package/builtin-skills/antv-g2-chart/references/scales/g2-scale-band.md +127 -0
  148. package/builtin-skills/antv-g2-chart/references/scales/g2-scale-linear.md +259 -0
  149. package/builtin-skills/antv-g2-chart/references/scales/g2-scale-log.md +226 -0
  150. package/builtin-skills/antv-g2-chart/references/scales/g2-scale-ordinal.md +135 -0
  151. package/builtin-skills/antv-g2-chart/references/scales/g2-scale-point.md +242 -0
  152. package/builtin-skills/antv-g2-chart/references/scales/g2-scale-pow-sqrt.md +124 -0
  153. package/builtin-skills/antv-g2-chart/references/scales/g2-scale-quantile-quantize.md +119 -0
  154. package/builtin-skills/antv-g2-chart/references/scales/g2-scale-sequential.md +267 -0
  155. package/builtin-skills/antv-g2-chart/references/scales/g2-scale-threshold.md +133 -0
  156. package/builtin-skills/antv-g2-chart/references/scales/g2-scale-time.md +159 -0
  157. package/builtin-skills/antv-g2-chart/references/themes/g2-theme-builtin.md +192 -0
  158. package/builtin-skills/antv-g2-chart/references/themes/g2-theme-custom.md +183 -0
  159. package/builtin-skills/antv-g2-chart/references/transforms/g2-transform-bin.md +153 -0
  160. package/builtin-skills/antv-g2-chart/references/transforms/g2-transform-binx.md +133 -0
  161. package/builtin-skills/antv-g2-chart/references/transforms/g2-transform-diffy.md +130 -0
  162. package/builtin-skills/antv-g2-chart/references/transforms/g2-transform-dodgex.md +90 -0
  163. package/builtin-skills/antv-g2-chart/references/transforms/g2-transform-flexx.md +115 -0
  164. package/builtin-skills/antv-g2-chart/references/transforms/g2-transform-group.md +233 -0
  165. package/builtin-skills/antv-g2-chart/references/transforms/g2-transform-groupcolor.md +182 -0
  166. package/builtin-skills/antv-g2-chart/references/transforms/g2-transform-groupx.md +265 -0
  167. package/builtin-skills/antv-g2-chart/references/transforms/g2-transform-groupy.md +167 -0
  168. package/builtin-skills/antv-g2-chart/references/transforms/g2-transform-jitter.md +149 -0
  169. package/builtin-skills/antv-g2-chart/references/transforms/g2-transform-jitterx.md +177 -0
  170. package/builtin-skills/antv-g2-chart/references/transforms/g2-transform-jittery.md +177 -0
  171. package/builtin-skills/antv-g2-chart/references/transforms/g2-transform-normalizey.md +83 -0
  172. package/builtin-skills/antv-g2-chart/references/transforms/g2-transform-pack.md +164 -0
  173. package/builtin-skills/antv-g2-chart/references/transforms/g2-transform-sample.md +143 -0
  174. package/builtin-skills/antv-g2-chart/references/transforms/g2-transform-select.md +147 -0
  175. package/builtin-skills/antv-g2-chart/references/transforms/g2-transform-selectx.md +179 -0
  176. package/builtin-skills/antv-g2-chart/references/transforms/g2-transform-selecty.md +179 -0
  177. package/builtin-skills/antv-g2-chart/references/transforms/g2-transform-sort-color.md +115 -0
  178. package/builtin-skills/antv-g2-chart/references/transforms/g2-transform-sortx.md +285 -0
  179. package/builtin-skills/antv-g2-chart/references/transforms/g2-transform-sorty.md +117 -0
  180. package/builtin-skills/antv-g2-chart/references/transforms/g2-transform-stack-enter.md +158 -0
  181. package/builtin-skills/antv-g2-chart/references/transforms/g2-transform-stacky.md +218 -0
  182. package/builtin-skills/antv-g2-chart/references/transforms/g2-transform-symmetryy.md +122 -0
  183. package/builtin-skills/app-skill/SKILL.md +27 -0
  184. package/builtin-skills/app-skill/references/data-semantics.md +44 -0
  185. package/builtin-skills/app-skill/references/models.md +31 -0
  186. package/builtin-skills/chart-visualization/SKILL.md +101 -0
  187. package/builtin-skills/loom/SKILL.md +168 -0
  188. package/builtin-skills/loom/references/README.md +128 -0
  189. package/builtin-skills/loom/references/dashboard.md +196 -0
  190. package/builtin-skills/loom/references/data-model.md +78 -0
  191. package/dist/adapter-base.d.ts +29 -0
  192. package/dist/adapter-base.d.ts.map +1 -0
  193. package/dist/adapter-base.js +62 -0
  194. package/dist/adapter-base.js.map +1 -0
  195. package/dist/adapter-factory.d.ts +8 -0
  196. package/dist/adapter-factory.d.ts.map +1 -0
  197. package/dist/adapter-factory.js +25 -0
  198. package/dist/adapter-factory.js.map +1 -0
  199. package/dist/adapter-filesystem.d.ts +6 -11
  200. package/dist/adapter-filesystem.d.ts.map +1 -1
  201. package/dist/adapter-filesystem.js +56 -41
  202. package/dist/adapter-filesystem.js.map +1 -1
  203. package/dist/adapter-sqlite.d.ts +6 -23
  204. package/dist/adapter-sqlite.d.ts.map +1 -1
  205. package/dist/adapter-sqlite.js +65 -50
  206. package/dist/adapter-sqlite.js.map +1 -1
  207. package/dist/backend/ai/button-resolver.d.ts +18 -0
  208. package/dist/backend/ai/button-resolver.d.ts.map +1 -0
  209. package/dist/backend/ai/button-resolver.js +58 -0
  210. package/dist/backend/ai/button-resolver.js.map +1 -0
  211. package/dist/backend/ai/engine.d.ts +52 -0
  212. package/dist/backend/ai/engine.d.ts.map +1 -0
  213. package/dist/backend/ai/engine.js +186 -0
  214. package/dist/backend/ai/engine.js.map +1 -0
  215. package/dist/backend/ai/index.d.ts +11 -0
  216. package/dist/backend/ai/index.d.ts.map +1 -0
  217. package/dist/backend/ai/index.js +8 -0
  218. package/dist/backend/ai/index.js.map +1 -0
  219. package/dist/backend/ai/output-parser.d.ts +29 -0
  220. package/dist/backend/ai/output-parser.d.ts.map +1 -0
  221. package/dist/backend/ai/output-parser.js +247 -0
  222. package/dist/backend/ai/output-parser.js.map +1 -0
  223. package/dist/backend/ai/session-manager.d.ts +103 -0
  224. package/dist/backend/ai/session-manager.d.ts.map +1 -0
  225. package/dist/backend/ai/session-manager.js +298 -0
  226. package/dist/backend/ai/session-manager.js.map +1 -0
  227. package/dist/backend/index.d.ts +61 -0
  228. package/dist/backend/index.d.ts.map +1 -0
  229. package/dist/backend/index.js +161 -0
  230. package/dist/backend/index.js.map +1 -0
  231. package/dist/backend/observe/index.d.ts +6 -0
  232. package/dist/backend/observe/index.d.ts.map +1 -0
  233. package/dist/backend/observe/index.js +5 -0
  234. package/dist/backend/observe/index.js.map +1 -0
  235. package/dist/backend/observe/logger.d.ts +28 -0
  236. package/dist/backend/observe/logger.d.ts.map +1 -0
  237. package/dist/backend/observe/logger.js +80 -0
  238. package/dist/backend/observe/logger.js.map +1 -0
  239. package/dist/backend/observe/types.d.ts +26 -0
  240. package/dist/backend/observe/types.d.ts.map +1 -0
  241. package/dist/backend/observe/types.js +7 -0
  242. package/dist/backend/observe/types.js.map +1 -0
  243. package/dist/backend/routes/chat.d.ts +31 -0
  244. package/dist/backend/routes/chat.d.ts.map +1 -0
  245. package/dist/backend/routes/chat.js +426 -0
  246. package/dist/backend/routes/chat.js.map +1 -0
  247. package/dist/backend/routes/data.d.ts +13 -0
  248. package/dist/backend/routes/data.d.ts.map +1 -0
  249. package/dist/backend/routes/data.js +134 -0
  250. package/dist/backend/routes/data.js.map +1 -0
  251. package/dist/backend/routes/health.d.ts +7 -0
  252. package/dist/backend/routes/health.d.ts.map +1 -0
  253. package/dist/backend/routes/health.js +15 -0
  254. package/dist/backend/routes/health.js.map +1 -0
  255. package/dist/backend/routes/index.d.ts +11 -0
  256. package/dist/backend/routes/index.d.ts.map +1 -0
  257. package/dist/backend/routes/index.js +9 -0
  258. package/dist/backend/routes/index.js.map +1 -0
  259. package/dist/backend/routes/skills.d.ts +16 -0
  260. package/dist/backend/routes/skills.d.ts.map +1 -0
  261. package/dist/backend/routes/skills.js +590 -0
  262. package/dist/backend/routes/skills.js.map +1 -0
  263. package/dist/backend/routes/upload.d.ts +24 -0
  264. package/dist/backend/routes/upload.d.ts.map +1 -0
  265. package/dist/backend/routes/upload.js +67 -0
  266. package/dist/backend/routes/upload.js.map +1 -0
  267. package/dist/bin.d.ts +8 -0
  268. package/dist/bin.d.ts.map +1 -0
  269. package/dist/bin.js +12 -0
  270. package/dist/bin.js.map +1 -0
  271. package/dist/capability-generator.d.ts +21 -6
  272. package/dist/capability-generator.d.ts.map +1 -1
  273. package/dist/capability-generator.js +88 -261
  274. package/dist/capability-generator.js.map +1 -1
  275. package/dist/cli/commands/build.d.ts +11 -0
  276. package/dist/cli/commands/build.d.ts.map +1 -0
  277. package/dist/cli/commands/build.js +170 -0
  278. package/dist/cli/commands/build.js.map +1 -0
  279. package/dist/cli/commands/data.d.ts +12 -0
  280. package/dist/cli/commands/data.d.ts.map +1 -0
  281. package/dist/cli/commands/data.js +158 -0
  282. package/dist/cli/commands/data.js.map +1 -0
  283. package/dist/cli/commands/dev.d.ts +9 -0
  284. package/dist/cli/commands/dev.d.ts.map +1 -0
  285. package/dist/cli/commands/dev.js +114 -0
  286. package/dist/cli/commands/dev.js.map +1 -0
  287. package/dist/cli/commands/generate-capabilities.d.ts +8 -0
  288. package/dist/cli/commands/generate-capabilities.d.ts.map +1 -0
  289. package/dist/cli/commands/generate-capabilities.js +40 -0
  290. package/dist/cli/commands/generate-capabilities.js.map +1 -0
  291. package/dist/cli/commands/generate-cli-command.d.ts +8 -0
  292. package/dist/cli/commands/generate-cli-command.d.ts.map +1 -0
  293. package/dist/cli/commands/generate-cli-command.js +64 -0
  294. package/dist/cli/commands/generate-cli-command.js.map +1 -0
  295. package/dist/cli/commands/generate-dashboard.d.ts +9 -0
  296. package/dist/cli/commands/generate-dashboard.d.ts.map +1 -0
  297. package/dist/cli/commands/generate-dashboard.js +466 -0
  298. package/dist/cli/commands/generate-dashboard.js.map +1 -0
  299. package/dist/cli/commands/generate-page.d.ts +9 -0
  300. package/dist/cli/commands/generate-page.d.ts.map +1 -0
  301. package/dist/cli/commands/generate-page.js +352 -0
  302. package/dist/cli/commands/generate-page.js.map +1 -0
  303. package/dist/cli/commands/generate-skill.d.ts +8 -0
  304. package/dist/cli/commands/generate-skill.d.ts.map +1 -0
  305. package/dist/cli/commands/generate-skill.js +75 -0
  306. package/dist/cli/commands/generate-skill.js.map +1 -0
  307. package/dist/cli/commands/generate.d.ts +6 -0
  308. package/dist/cli/commands/generate.d.ts.map +1 -0
  309. package/dist/cli/commands/generate.js +19 -0
  310. package/dist/cli/commands/generate.js.map +1 -0
  311. package/dist/cli/commands/init.d.ts +8 -0
  312. package/dist/cli/commands/init.d.ts.map +1 -0
  313. package/dist/cli/commands/init.js +301 -0
  314. package/dist/cli/commands/init.js.map +1 -0
  315. package/dist/cli/commands/observe.d.ts +9 -0
  316. package/dist/cli/commands/observe.d.ts.map +1 -0
  317. package/dist/cli/commands/observe.js +142 -0
  318. package/dist/cli/commands/observe.js.map +1 -0
  319. package/dist/cli/commands/skill.d.ts +9 -0
  320. package/dist/cli/commands/skill.d.ts.map +1 -0
  321. package/dist/cli/commands/skill.js +186 -0
  322. package/dist/cli/commands/skill.js.map +1 -0
  323. package/dist/cli/generators/capability-generator.d.ts +35 -0
  324. package/dist/cli/generators/capability-generator.d.ts.map +1 -0
  325. package/dist/cli/generators/capability-generator.js +115 -0
  326. package/dist/cli/generators/capability-generator.js.map +1 -0
  327. package/dist/cli/helpers/app-tsx-wiring.d.ts +19 -0
  328. package/dist/cli/helpers/app-tsx-wiring.d.ts.map +1 -0
  329. package/dist/cli/helpers/app-tsx-wiring.js +143 -0
  330. package/dist/cli/helpers/app-tsx-wiring.js.map +1 -0
  331. package/dist/cli/helpers/column-template.d.ts +18 -0
  332. package/dist/cli/helpers/column-template.d.ts.map +1 -0
  333. package/dist/cli/helpers/column-template.js +151 -0
  334. package/dist/cli/helpers/column-template.js.map +1 -0
  335. package/dist/cli/helpers/duration.d.ts +5 -0
  336. package/dist/cli/helpers/duration.d.ts.map +1 -0
  337. package/dist/cli/helpers/duration.js +19 -0
  338. package/dist/cli/helpers/duration.js.map +1 -0
  339. package/dist/cli/helpers/field-template.d.ts +14 -0
  340. package/dist/cli/helpers/field-template.d.ts.map +1 -0
  341. package/dist/cli/helpers/field-template.js +101 -0
  342. package/dist/cli/helpers/field-template.js.map +1 -0
  343. package/dist/cli/helpers/naming.d.ts +12 -0
  344. package/dist/cli/helpers/naming.d.ts.map +1 -0
  345. package/dist/cli/helpers/naming.js +25 -0
  346. package/dist/cli/helpers/naming.js.map +1 -0
  347. package/dist/cli/index.d.ts +9 -0
  348. package/dist/cli/index.d.ts.map +1 -0
  349. package/dist/cli/index.js +33 -0
  350. package/dist/cli/index.js.map +1 -0
  351. package/dist/cli/templates/backend-entry.d.ts +5 -0
  352. package/dist/cli/templates/backend-entry.d.ts.map +1 -0
  353. package/dist/cli/templates/backend-entry.js +17 -0
  354. package/dist/cli/templates/backend-entry.js.map +1 -0
  355. package/dist/cli/templates/frontend-entry.d.ts +11 -0
  356. package/dist/cli/templates/frontend-entry.d.ts.map +1 -0
  357. package/dist/cli/templates/frontend-entry.js +70 -0
  358. package/dist/cli/templates/frontend-entry.js.map +1 -0
  359. package/dist/cli/templates/gitignore.d.ts +5 -0
  360. package/dist/cli/templates/gitignore.d.ts.map +1 -0
  361. package/dist/cli/templates/gitignore.js +13 -0
  362. package/dist/cli/templates/gitignore.js.map +1 -0
  363. package/dist/cli/templates/index.d.ts +12 -0
  364. package/dist/cli/templates/index.d.ts.map +1 -0
  365. package/dist/cli/templates/index.js +12 -0
  366. package/dist/cli/templates/index.js.map +1 -0
  367. package/dist/cli/templates/loom-config.d.ts +10 -0
  368. package/dist/cli/templates/loom-config.d.ts.map +1 -0
  369. package/dist/cli/templates/loom-config.js +31 -0
  370. package/dist/cli/templates/loom-config.js.map +1 -0
  371. package/dist/cli/templates/package-json.d.ts +9 -0
  372. package/dist/cli/templates/package-json.d.ts.map +1 -0
  373. package/dist/cli/templates/package-json.js +40 -0
  374. package/dist/cli/templates/package-json.js.map +1 -0
  375. package/dist/cli/templates/readme.d.ts +9 -0
  376. package/dist/cli/templates/readme.d.ts.map +1 -0
  377. package/dist/cli/templates/readme.js +47 -0
  378. package/dist/cli/templates/readme.js.map +1 -0
  379. package/dist/cli/templates/tsconfig.d.ts +6 -0
  380. package/dist/cli/templates/tsconfig.d.ts.map +1 -0
  381. package/dist/cli/templates/tsconfig.js +41 -0
  382. package/dist/cli/templates/tsconfig.js.map +1 -0
  383. package/dist/cli/templates/vite-config.d.ts +5 -0
  384. package/dist/cli/templates/vite-config.d.ts.map +1 -0
  385. package/dist/cli/templates/vite-config.js +24 -0
  386. package/dist/cli/templates/vite-config.js.map +1 -0
  387. package/dist/cli/utils.d.ts +10 -0
  388. package/dist/cli/utils.d.ts.map +1 -0
  389. package/dist/cli/utils.js +31 -0
  390. package/dist/cli/utils.js.map +1 -0
  391. package/dist/commands.d.ts +1 -5
  392. package/dist/commands.d.ts.map +1 -1
  393. package/dist/commands.js +0 -11
  394. package/dist/commands.js.map +1 -1
  395. package/dist/config.d.ts +21 -52
  396. package/dist/config.d.ts.map +1 -1
  397. package/dist/config.js +8 -9
  398. package/dist/config.js.map +1 -1
  399. package/dist/dashboard-config.d.ts +117 -0
  400. package/dist/dashboard-config.d.ts.map +1 -0
  401. package/dist/dashboard-config.js +59 -0
  402. package/dist/dashboard-config.js.map +1 -0
  403. package/dist/index.d.ts +9 -4
  404. package/dist/index.d.ts.map +1 -1
  405. package/dist/index.js +8 -2
  406. package/dist/index.js.map +1 -1
  407. package/dist/server-bin.d.ts +12 -0
  408. package/dist/server-bin.d.ts.map +1 -0
  409. package/dist/server-bin.js +43 -0
  410. package/dist/server-bin.js.map +1 -0
  411. package/dist/types/adapter.d.ts +28 -0
  412. package/dist/types/adapter.d.ts.map +1 -0
  413. package/dist/types/adapter.js +5 -0
  414. package/dist/types/adapter.js.map +1 -0
  415. package/dist/types/ai.d.ts +52 -0
  416. package/dist/types/ai.d.ts.map +1 -0
  417. package/dist/types/ai.js +5 -0
  418. package/dist/types/ai.js.map +1 -0
  419. package/dist/types/chat.d.ts +46 -0
  420. package/dist/types/chat.d.ts.map +1 -0
  421. package/dist/types/chat.js +5 -0
  422. package/dist/types/chat.js.map +1 -0
  423. package/dist/types/command.d.ts +25 -0
  424. package/dist/types/command.d.ts.map +1 -0
  425. package/dist/types/command.js +5 -0
  426. package/dist/types/command.js.map +1 -0
  427. package/dist/types/config.d.ts +30 -0
  428. package/dist/types/config.d.ts.map +1 -0
  429. package/dist/types/config.js +5 -0
  430. package/dist/types/config.js.map +1 -0
  431. package/dist/types/dashboard.d.ts +42 -0
  432. package/dist/types/dashboard.d.ts.map +1 -0
  433. package/dist/types/dashboard.js +5 -0
  434. package/dist/types/dashboard.js.map +1 -0
  435. package/dist/types/index.d.ts +14 -0
  436. package/dist/types/index.d.ts.map +1 -0
  437. package/dist/types/index.js +8 -0
  438. package/dist/types/index.js.map +1 -0
  439. package/dist/types/model.d.ts +59 -0
  440. package/dist/types/model.d.ts.map +1 -0
  441. package/dist/types/model.js +5 -0
  442. package/dist/types/model.js.map +1 -0
  443. package/dist/types.d.ts +4 -199
  444. package/dist/types.d.ts.map +1 -1
  445. package/dist/types.js +4 -3
  446. package/dist/types.js.map +1 -1
  447. package/package.json +18 -3
@@ -0,0 +1,101 @@
1
+ ---
2
+ name: chart-visualization
3
+ description: 将数据可视化为图表。当用户需要生成柱状图、折线图、饼图、散点图、雷达图、桑基图、思维导图、流程图等图表时调用此技能,通过 curl 工具调用 AntV API 生成图表图片
4
+ ---
5
+
6
+ 请根据用户输入的内容,将数据可视化为图表。
7
+
8
+ ## 步骤
9
+ 1. 分析用户数据和需求,选择最合适的图表类型
10
+ 2. 构造符合规范的 JSON 请求体
11
+ 3. 使用 curl 工具调用 API 生成图表图片
12
+ 4. 将返回的图片 URL 以 Markdown 图片格式输出
13
+
14
+ ## 图表选择指南
15
+
16
+ 根据用户的数据特征和需求,选择最合适的图表类型:
17
+
18
+ - **时间序列**:用 `line`(趋势)或 `area`(累计趋势);两个不同量纲用 `dual-axes`
19
+ - **比较类**:用 `bar`(横向分类对比)或 `column`(纵向分类对比);频率分布用 `histogram`
20
+ - **占比类**:用 `pie`(比例构成)或 `treemap`(层级占比)
21
+ - **关系与流程**:用 `scatter`(相关性)、`sankey`(流向)或 `venn`(集合重叠)
22
+ - **层级与树形**:用 `organization-chart` 或 `mind-map`
23
+ - **专用类型**:
24
+ - `radar`:多维度对比
25
+ - `funnel`:流程阶段转化
26
+ - `liquid`:百分比/进度
27
+ - `word-cloud`:文本词频
28
+ - `boxplot` / `violin`:统计分布
29
+ - `network-graph`:复杂节点关系
30
+ - `fishbone-diagram`:因果分析
31
+ - `flow-diagram`:流程图
32
+ - `spreadsheet`:结构化数据表或透视表
33
+
34
+ ## API 接口
35
+
36
+ POST https://antv-studio.alipay.com/api/gpt-vis
37
+
38
+ 请求体为 JSON,必须包含 `type` 和 `source: "chart-visualization-skills"` 字段。
39
+
40
+ 示例:
41
+ ```bash
42
+ curl -X POST https://antv-studio.alipay.com/api/gpt-vis \
43
+ -H "Content-Type: application/json" \
44
+ -d '{"type":"line","source":"chart-visualization-skills","data":[{"time":"2025-01","value":100}],"title":"示例图表"}'
45
+ ```
46
+
47
+ 返回示例:
48
+ ```json
49
+ {"success":true,"resultObj":"https://..."}
50
+ ```
51
+
52
+ 将 `resultObj` 中的 URL 以 Markdown 图片格式输出:`![图表](URL)`
53
+
54
+ ## 支持的图表类型
55
+
56
+ | 分类 | 图表类型 |
57
+ |------|---------|
58
+ | 比较类 | 条形图(bar)、柱状图(column)、瀑布图(waterfall)、双轴图(dual-axes) |
59
+ | 趋势类 | 面积图(area)、折线图(line)、散点图(scatter) |
60
+ | 分布类 | 箱线图(boxplot)、直方图(histogram)、小提琴图(violin)、漏斗图(funnel) |
61
+ | 占比类 | 饼图(pie)、水波图(liquid)、词云(word-cloud) |
62
+ | 层级类 | 组织架构图(organization-chart)、思维导图(mind-map)、矩形树图(treemap)、桑基图(sankey) |
63
+ | 关系类 | 关系图(network-graph)、韦恩图(venn) |
64
+ | 流程类 | 流程图(flow-diagram)、鱼骨图(fishbone-diagram) |
65
+ | 多维类 | 雷达图(radar) |
66
+ | 表格类 | 表格/透视表(spreadsheet) |
67
+
68
+ ## 通用可选参数
69
+
70
+ | 参数 | 类型 | 默认值 | 说明 |
71
+ |------|------|--------|------|
72
+ | theme | string | "default" | 主题:"default" / "academy" / "dark" |
73
+ | width | number | 600 | 图表宽度 |
74
+ | height | number | 400 | 图表高度 |
75
+ | title | string | "" | 图表标题 |
76
+ | style.texture | string | "default" | 纹理:"default" / "rough"(手绘风格) |
77
+
78
+ 带坐标轴的图表还支持:axisXTitle、axisYTitle。
79
+
80
+ ## 各图表 data 格式
81
+
82
+ - **area / line**: `{time: string, value: number, group?: string}[]`,可选 stack: boolean
83
+ - **bar**: `{category: string, value: number, group?: string}[]`,可选 group / stack (默认 stack: true)
84
+ - **column**: `{category: string, value: number, group?: string}[]`,可选 group (默认 true) / stack
85
+ - **scatter**: `{x: number, y: number, group?: string}[]`
86
+ - **pie**: `{category: string, value: number}[]`,可选 innerRadius: number (0-1)
87
+ - **radar**: `{name: string, value: number, group?: string}[]`
88
+ - **funnel**: `{category: string, value: number}[]`
89
+ - **waterfall**: `{category: string, value?: number, isTotal?: boolean, isIntermediateTotal?: boolean}[]`
90
+ - **dual-axes**: categories: string[], series: {type: "column"|"line", data: number[], axisYTitle?: string}[]
91
+ - **histogram**: `number[]`,可选 binNumber: number
92
+ - **boxplot / violin**: `{category: string, value: number, group?: string}[]`
93
+ - **liquid**: percent: number (0-1),可选 shape: "circle"|"rect"|"pin"|"triangle"
94
+ - **word-cloud**: `{text: string, value: number}[]`
95
+ - **sankey**: `{source: string, target: string, value: number}[]`,可选 nodeAlign
96
+ - **treemap**: `{name: string, value: number, children?: ...}[]` (最深 3 层)
97
+ - **venn**: `{sets: string[], value: number, label?: string}[]`
98
+ - **network-graph / flow-diagram**: `{nodes: {name: string}[], edges: {source: string, target: string, name?: string}[]}`
99
+ - **fishbone-diagram / mind-map**: `{name: string, children?: ...}` (最深 3 层)
100
+ - **organization-chart**: `{name: string, description?: string, children?: ...}` (最深 3 层),可选 orient: "horizontal"|"vertical"
101
+ - **spreadsheet**: `Record<string, string | number>[]`,可选 rows / columns / values(透视表字段)
@@ -0,0 +1,168 @@
1
+ ---
2
+ name: Loom
3
+ description: |
4
+ Use this skill when the user asks to "create a new loom project", "用loom开发一个系统",
5
+ "开发一个AI平台应用", "为系统添加页面", "为项目配置 AI 按钮功能", or any Loom framework task.
6
+ Loom is an AI-Native full-stack framework.
7
+ version: 0.1.0
8
+ ---
9
+
10
+ # Loom - AI 原生全栈框架技能
11
+
12
+ ## 框架工作方式
13
+
14
+ Loom 是**配置驱动、自动生成**的框架。工作流程为:
15
+
16
+ 1. **写配置** — 编辑 `loom.config.ts`,定义数据模型和 AI 按钮
17
+ 2. **跑命令** — CLI 读取配置,自动生成页面、API 和路由接线
18
+
19
+ `loom generate page` 会自动生成:CRUD 页面(含 AI 按钮)、App.tsx 路由接线、后端 API + 应用 Skill。
20
+ 生成的页面自带 AI 助手浮动按钮,支持流式对话、多会话和数据自动刷新。
21
+
22
+ 技术架构细节见 `references/README.md`。
23
+
24
+ ## 开发流程
25
+
26
+ **重要:** 始终在项目目录下运行命令(不是 loom monorepo 根目录)。
27
+
28
+ ### 1. 创建项目
29
+
30
+ ```bash
31
+ npx -p @loom-framework/core loom init <name> --description <desc> --adapter <filesystem|sqlite>
32
+ ```
33
+
34
+ 项目初始化时自动安装以下内置 Skill:
35
+
36
+ | Skill | 触发场景 | 说明 |
37
+ |-------|---------|------|
38
+ | **antd** | 开发前端页面、丰富 UI 功能 | 通过 `@ant-design/cli` 查询组件 API、语义化样式、示例;编写前端代码前先用此 Skill 确认用法 |
39
+ | **antv-g2-chart** | 添加自定义可视化图表 | 生成 G2 v5 Spec 代码;配合 `useChartData` / `DashboardChart`,详见 `references/dashboard.md` |
40
+ | **chart-visualization** | 对话中快速生成图表 | 通过 API 生成图表图片返回 Markdown 链接,适合快速展示数据分析结果 |
41
+
42
+ ### 2. 编辑配置
43
+
44
+ 编辑 `loom.config.ts`,定义数据模型(`data.models`)和 AI 按钮(`aiButtons`),Schema 见下方。高级选项见 `references/data-model.md`。
45
+
46
+ ### 3. 生成页面
47
+
48
+ ```bash
49
+ loom generate page <Name> --model <model-name>
50
+ ```
51
+
52
+ 此命令自动生成:CRUD 页面(含 AI 按钮)、App.tsx 路由接线、后端 API、应用 Skill。模型立即可通过 `loom data` CLI 和 AI 对话使用。
53
+
54
+ ### 4. 生成 Dashboard(数据概览)
55
+
56
+ Dashboard 采用**两阶段**工作流:AI 生成配置 → CLI 生成页面。
57
+
58
+ **阶段 1:生成 dashboard.config.json**
59
+
60
+ 根据 `loom.config.ts` 中的数据模型,站在用户角度设计 Dashboard,生成 `dashboard.config.json` 到项目根目录。设计原则和配置 Schema 详见 `references/dashboard.md`。
61
+
62
+ **阶段 2:执行生成命令**
63
+
64
+ ```bash
65
+ loom generate dashboard <name>
66
+ ```
67
+
68
+ 此命令自动生成 Dashboard 页面并接线 App.tsx。
69
+
70
+ ### 5. 完善 AI Skill(必须)
71
+
72
+ 步骤 3 会自动生成应用 Skill(`.claude/skills/<项目名>/SKILL.md`),但需要补充以下 TODO,AI 对话才能正确理解项目业务语义:
73
+
74
+ 1. **frontmatter `description`**:写入用户在 AI 对话中会说的触发短语。格式参考:
75
+ ```
76
+ This skill should be used when the user asks to "创建XXX", "查看XXX", "删除XXX",
77
+ or any request about managing XXX in the <项目名> project.
78
+ ```
79
+ 2. **Overview 部分**:用 2-3 句话描述项目做什么、有哪些数据、用户如何与数据交互
80
+ 3. **Usage Scenarios 部分**:列出 5-10 个典型用户请求,格式为 `- "用户说的话" → 对应的 CLI 命令`
81
+
82
+ 如需添加自定义 Skill:
83
+ - `loom generate skill <name>` — 创建脚手架,然后编辑 `.claude/skills/<name>/SKILL.md`
84
+ - 或直接复制一个已有的 Skill 目录到 `.claude/skills/` 下
85
+
86
+ ### 6. 启动开发
87
+
88
+ ```bash
89
+ loom dev
90
+ ```
91
+
92
+ - 前端:http://localhost:5173
93
+ - 后端:http://localhost:3000
94
+
95
+ ### 迭代:修改配置 → 重新生成
96
+
97
+ 编辑 `loom.config.ts`(添加/修改模型或 AI 按钮)→ 重新执行步骤 3。
98
+
99
+ ### 内置 Skill 使用原则
100
+
101
+ - 涉及前端页面开发 → 先用 `/antd` 查询组件 API,不要凭记忆写代码
102
+ - 需要在 Dashboard 追加图表 → 参考 `references/dashboard.md` + `/antv-g2-chart` 生成代码
103
+ - 对话中需展示数据可视化 → 用 `/chart-visualization` 生成图片
104
+
105
+ ### CLI 命令速查
106
+
107
+ | 命令 | 说明 |
108
+ |------|------|
109
+ | `loom dev` | 启动开发环境(`--skip-generate` `--backend-only` `--frontend-only`) |
110
+ | `loom build` | 生产构建 |
111
+ | `loom generate page <name> --model <model>` | 生成 CRUD 页面 + 应用 Skill(含 aiButtons 则自动集成) |
112
+ | `loom generate dashboard <name>` | 从 dashboard.config.json 生成 Dashboard 数据概览页面 |
113
+ | `loom generate capabilities` | 仅重新生成应用 Skill 的 `references/models.md` |
114
+ | `loom generate skill <name>` | 生成自定义 Skill 脚架 |
115
+
116
+ ## loom.config.ts Schema(核心)
117
+
118
+ ```typescript
119
+ import { defineConfig } from '@loom-framework/core';
120
+
121
+ export default defineConfig({
122
+ project: {
123
+ name: 'my-app', // 必填
124
+ description: '...',', // 可选
125
+ },
126
+ data: {
127
+ defaultAdapter: 'filesystem', // 'filesystem' | 'sqlite'
128
+ models: [{
129
+ name: 'items', // 将作为 React 组件名生成页面,字母开头,字母/数字/下划线
130
+ description: '...',', // 可选:显示在生成页面中
131
+ fields: [{
132
+ name: 'status', // 字母/下划线开头,字母数字下划线
133
+ type: 'string', // 'string' | 'number' | 'boolean' | 'date' | 'string[]' | 'number[]' | 'json'
134
+ required: true, // 可选,默认 false
135
+ description: '...,', // 可选:显示在表单中
136
+ default: 'active', // 可选:写入时自动填充
137
+ enum: ['active', 'inactive'], // 可选:限制可选值
138
+ }],
139
+ }],
140
+ },
141
+ aiButtons: [{ // 可选
142
+ id: 'summarize', // 必填:唯一标识
143
+ label: '总结', // 必填:按钮文本
144
+ prompt: '请总结以下内容', // 必填:支持 {{var}} 引用当前行字段值
145
+ },
146
+ {
147
+ id: 'analyze', // 带变量的示例
148
+ label: '分析',
149
+ prompt: '分析{{questionContent}},错误答案:{{wrongAnswer}}',
150
+ placement: 'wrong_questions', // 可选:限制按钮只出现在指定模型页面,逗号分隔多个模型名;省略则出现在所有页面
151
+ }],
152
+ });
153
+ ```
154
+
155
+ 高级配置(`ai.claudeCode`、`server`、按模型 `adapters`、`indexes`)见 `references/data-model.md`。
156
+
157
+ ## API 路由格式
158
+
159
+ 后端 REST API 路径为 `/api/v1/data/<model-name>`,支持:`GET`(列表)、`GET /:id`(单条)、`POST`(创建)、`PUT /:id`(更新)、`DELETE /:id`(删除)。
160
+ AI 相关:`POST /api/v1/chat`(SSE 流式对话)、`GET /api/v1/sessions`(会话列表)。
161
+ 前端通过 `useData('<model-name>')` 自动访问,无需手动拼接。
162
+
163
+ **注意:** `sqlite` 适配器在 Node.js ≥ 25 时可能因 `better-sqlite3` 原生模块未编译而报错,改用 `filesystem` 即可。
164
+
165
+ ## 常见问题
166
+
167
+ - **better-sqlite3 加载失败**:Node.js 版本缺少预编译包。修复:(1) `cd node_modules/better-sqlite3 && npx node-gyp rebuild`,或 (2) 将 `defaultAdapter` 改为 `'filesystem'`
168
+ - **`loom` 命令报错 "No loom.config.ts found"**:在项目目录下运行命令
@@ -0,0 +1,128 @@
1
+ # Loom - AI-Native Full-Stack Framework
2
+
3
+ 编织 AI 能力为应用织物
4
+
5
+ ## 快速上手
6
+
7
+ ### 1. 安装 npm 包
8
+
9
+ Loom 包含两个包:
10
+
11
+ - `@loom-framework/core` — CLI + 后端(全局安装以使用 `loom` 命令)
12
+ - `@loom-framework/frontend-antd` — 前端组件库(项目运行时依赖,`loom init` 自动添加)
13
+
14
+ ```bash
15
+ npm install -g @loom-framework/core
16
+ ```
17
+
18
+ ### 2. 配置 Skill 到 Claude Code
19
+
20
+ Loom Skill 随 npm 包发布,位于 `builtin-skills/loom/` 目录。复制到 Claude Code 的 skill 目录:
21
+
22
+ ```bash
23
+ # 从全局安装复制
24
+ cp -r $(npm root -g)/@loom-framework/core/builtin-skills/loom ~/.claude/skills/loom
25
+
26
+ # 或从项目内复制
27
+ cp -r node_modules/@loom-framework/core/builtin-skills/loom ~/.claude/skills/loom
28
+ ```
29
+
30
+ ### 3. 打开 Claude Code
31
+
32
+ 启动 Claude Code,Skill 会被自动加载。
33
+
34
+ ### 4. 开始使用
35
+
36
+ 在 Claude Code 中输入以下内容触发 Loom Skill:
37
+
38
+ ### 开始开发
39
+
40
+ 在 Claude Code 中输入以下内容即可触发 Loom Skill:
41
+
42
+ - "用 loom 开发一个 AI 平台"
43
+ - "创建一个 loom 项目"
44
+ - "为系统添加页面"
45
+ - "配置 AI 按钮"
46
+
47
+ 示例对话:
48
+
49
+ ```
50
+ 用户: 用 loom 开发一个笔记管理系统,用 sqlite 存储,
51
+ 需要 AI 总结和翻译功能
52
+ Claude: [读取 SKILL.md] → 运行 loom init → 编辑 config →
53
+ loom generate page → loom dev
54
+ ```
55
+
56
+ ### 开发流程
57
+
58
+ 1. **创建项目**:`npx -p @loom-framework/core loom init <name> --description <desc> --adapter <adapter>`
59
+ 2. **编辑配置**:在 `loom.config.ts` 中定义数据模型和 AI 按钮
60
+ 3. **生成页面**:`loom generate page <Name> --model <model>`
61
+ 4. **启动开发**:`loom dev` → http://localhost:5173
62
+
63
+ ## 核心理念
64
+
65
+ - **Prompt as Code**: 业务逻辑写在 Skill 的 Markdown 中,而非后端代码
66
+ - **Schema-driven**: 一个数据实体定义 → Skill + CLI 命令 + REST API(自动同步)
67
+ - **Zero Backend Logic**: 后端是透明代理,所有智能在 Skill 中
68
+
69
+ ## 三种交互类型
70
+
71
+ | 类型 | 说明 | 用户入口 | 自动化程度 |
72
+ |------|------|---------|-----------|
73
+ | AI Chat | 自然语言对话 | AppShell 右下角浮动按钮 | 开箱即用,无需配置 |
74
+ | AI Buttons | 一键 AI 动作 | CRUD 页面操作列的 AI 下拉菜单 | 配置 aiButtons + generate page,自动集成 |
75
+ | CRUD | 结构化数据管理 | 导航菜单页面 | 配置 model + generate page,自动生成 |
76
+
77
+ ## 组件架构
78
+
79
+ ```
80
+ AppShell
81
+ ├── Layout (Sider + Content)
82
+ └── AIBubble → ChatDrawer → ChatPanel
83
+ ├── LoomChatProvider + useXChat
84
+ ├── MessageContent (thinking / content / tool_call)
85
+ └── Sender (输入框 + 文件上传)
86
+
87
+ AIActionButton → AIContext.triggerAI() → ChatDrawer 自动提交
88
+ useData → 监听 loom:data-changed 事件自动刷新
89
+ ```
90
+
91
+ ### AI 按钮工作流
92
+
93
+ 1. 点击 AI 按钮 → `AIContext.triggerAI({ query, buttonId, context })`
94
+ 2. ChatDrawer 打开并自动提交 prompt
95
+ 3. AI 可能通过工具调用进行 CRUD 操作
96
+ 4. done 事件触发 `loom:data-changed` → useData 自动 refresh
97
+
98
+ ### 前端组件导出
99
+
100
+ | 组件/Hook | 说明 |
101
+ |-----------|------|
102
+ | `AppShell` | 应用布局框架,内含 AIBubble |
103
+ | `ChatDrawer` | AI 对话抽屉(多会话、流式、thinking/tool_call) |
104
+ | `AIBubble` | AI 浮动按钮(imperativeHandle: openWithQuery) |
105
+ | `AIActionButton` | AI 动作按钮(通过 AIContext 触发 ChatDrawer) |
106
+ | `AIContext` | AI 上下文(AppShell 提供 triggerAI) |
107
+ | `useData` | 数据 CRUD hook(自动响应 loom:data-changed 事件) |
108
+
109
+ ## 项目结构
110
+
111
+ ```
112
+ my-loom-app/
113
+ ├── loom.config.ts # 配置源
114
+ ├── frontend/src/components/pages/ # 业务页面
115
+ ├── backend/src/ # Fastify + AI 通信
116
+ ├── .claude/skills/ # Skills
117
+ ├── cli/src/commands/ # CLI 命令扩展
118
+ ├── data/ # 数据存储
119
+ └── .loom/ # 自动生成(gitignore)
120
+ └── sessions/ # AI 会话持久化
121
+ ```
122
+
123
+ ## 两个包
124
+
125
+ | 包 | 说明 |
126
+ |---|---|
127
+ | `@loom-framework/core` | DataAdapter、LoomServer、CLI(loom / loom-server) |
128
+ | `@loom-framework/frontend-antd` | 前端组件库:AppShell、ChatDrawer、AIActionButton、useData、AIContext |
@@ -0,0 +1,196 @@
1
+ # 生成 Dashboard(数据概览页面)
2
+
3
+ Dashboard 采用**两阶段**工作流:AI 设计配置 → 代码生成页面。
4
+
5
+ ## 阶段 1:生成 dashboard.config.json
6
+
7
+ 根据项目的 `loom.config.ts` 中的数据模型,站在用户角度设计 Dashboard,生成 `dashboard.config.json` 到项目根目录。
8
+
9
+ **设计原则:**
10
+ - 统计卡片放第一行(一眼看到关键数字)
11
+ - 分布图表按业务重要性排列
12
+ - 趋势图放最后一行(需要更多空间)
13
+ - 每行不超过 4 个元素
14
+ - 标题用业务语言,不用字段名
15
+
16
+ ### 配置 Schema
17
+
18
+ ```jsonc
19
+ {
20
+ "name": "overview", // 必填:Dashboard 标识(同模型命名规则)
21
+ "description": "数据概览", // 可选:侧边栏展示名
22
+ "models": ["model_a", "model_b"], // 必填:关联的数据模型名列表
23
+ "layout": [ // 必填:布局定义,数组每项代表一行
24
+ {
25
+ "row": [ // 每行包含一组 widget
26
+ {
27
+ "type": "stat", // 图表类型,见下方图表类型表
28
+ "title": "总数", // 业务语言标题
29
+ "model": "model_a", // 数据模型名
30
+ "span": 6, // 可选:Col 宽度(1-24),省略则自动均分
31
+ "aggregate": "count", // 可选:count|sum|avg|min|max|ratio(默认 count)
32
+ "field": "score", // aggregate 为 sum/avg/min/max 时必填:数值字段名
33
+ "filter": { "status": "active" }, // 可选:聚合前筛选条件
34
+ "groupBy": "category", // 可选:分组字段(string/enum/date/boolean)
35
+ "crossGroupBy": "grade", // 可选:第二分组字段,用于二维图表
36
+ "interval": "month" // 可选:date 字段分组粒度 day|week|month(默认 month)
37
+ }
38
+ ]
39
+ }
40
+ ]
41
+ }
42
+ ```
43
+
44
+ ### 字段说明
45
+
46
+ | 字段 | 类型 | 说明 |
47
+ |------|------|------|
48
+ | `aggregate` | `count\|sum\|avg\|min\|max\|ratio` | 聚合方式。`ratio` = 符合 filter 条件的记录数/总记录数,用于 gauge/liquid/stat 百分比 |
49
+ | `field` | string | 聚合目标字段。仅 aggregate 为 sum/avg/min/max 时需要 |
50
+ | `filter` | object | 筛选条件,键值对。如 `{"isMastered": true}` 筛选已掌握的记录 |
51
+ | `groupBy` | string | 主分组字段。string/enum 字段按值分组计数;boolean 字段自动映射为"是/否";date 字段按 interval 分段 |
52
+ | `crossGroupBy` | string | 第二分组维度。配合 groupBy 使用,产生交叉分组数据,用于二维图表 |
53
+ | `interval` | `day\|week\|month` | date 字段的分组粒度,仅 groupBy 指向 date 字段时有效 |
54
+
55
+ ### 图表类型与配置要点
56
+
57
+ #### 数值类 — 展示关键指标
58
+
59
+ | type | 中文名称 | 必填字段 | 典型配置 | 生成效果 |
60
+ |------|---------|---------|---------|---------|
61
+ | `stat` | 统计卡片 | — | `{ aggregate: "count" }` 或 `{ aggregate: "avg", field: "score" }` 或 `{ aggregate: "ratio", filter: { passed: true } }` | Ant Design Statistic 数值卡片 |
62
+ | `gauge` | 仪表盘 | `aggregate: "ratio"` + `filter` | `{ aggregate: "ratio", filter: { isMastered: true } }` | G2 仪表盘(百分比进度) |
63
+ | `liquid` | 水波图 | `aggregate: "ratio"` + `filter` | `{ aggregate: "ratio", filter: { isMastered: true } }` | G2 水波图(百分比进度) |
64
+
65
+ > **说明**:gauge 和 liquid 使用 `aggregate: "ratio"` + `filter` 来计算百分比(如掌握率 = 已掌握数/总数),ratio 自动算出 0-1 之间的值。
66
+
67
+ #### 占比类 — 展示分布构成
68
+
69
+ | type | 中文名称 | 必填字段 | 典型配置 | 生成效果 |
70
+ |------|---------|---------|---------|---------|
71
+ | `pie` | 饼图 | `groupBy` (enum/string) | `{ groupBy: "subject" }` | G2 饼图(分布占比) |
72
+ | `ring` | 环形图 | `groupBy` (boolean/enum) | `{ groupBy: "difficulty" }` 或 `{ groupBy: "isMastered" }` | G2 环形图(占比对比,boolean 自动映射"是/否") |
73
+ | `treemap` | 矩形树图 | `groupBy` + 可选 `crossGroupBy` | `{ groupBy: "subject" }` 或 `{ groupBy: "subject", crossGroupBy: "difficulty" }` | G2 矩形树图(层级占比,有 crossGroupBy 则两层) |
74
+
75
+ #### 对比类 — 跨类别比较
76
+
77
+ | type | 中文名称 | 必填字段 | 典型配置 | 生成效果 |
78
+ |------|---------|---------|---------|---------|
79
+ | `bar` | 条形图 | `groupBy` | `{ groupBy: "errorType" }` | G2 条形图(横向分类对比) |
80
+ | `stacked_bar` | 堆叠条形图 | `groupBy` + `crossGroupBy` | `{ groupBy: "subject", crossGroupBy: "errorType" }` | G2 堆叠条形图(组成+对比) |
81
+ | `grouped_bar` | 分组条形图 | `groupBy` + `crossGroupBy` | `{ groupBy: "subject", crossGroupBy: "difficulty" }` | G2 分组条形图(并列对比) |
82
+ | `radar` | 雷达图 | `groupBy` | `{ groupBy: "subject" }` | G2 雷达图(多维度闭合多边形) |
83
+ | `funnel` | 漏斗图 | `groupBy` | `{ groupBy: "errorType" }` | G2 漏斗图(阶段转化,柱条宽度反映数值) |
84
+
85
+ #### 趋势类 — 时间维度变化
86
+
87
+ | type | 中文名称 | 必填字段 | 典型配置 | 生成效果 |
88
+ |------|---------|---------|---------|---------|
89
+ | `line` | 折线图 | `groupBy` (date 字段) + `interval` | `{ groupBy: "createdAt", interval: "month" }` | G2 折线图(时间趋势) |
90
+ | `area` | 面积图 | `groupBy` (date 字段) + `interval` | `{ groupBy: "createdAt", interval: "month" }` | G2 面积图(累计趋势) |
91
+
92
+ #### 分布类 — 交叉/密度分析
93
+
94
+ | type | 中文名称 | 必填字段 | 典型配置 | 生成效果 |
95
+ |------|---------|---------|---------|---------|
96
+ | `scatter` | 散点图 | `groupBy` | `{ groupBy: "subject" }` | G2 散点图(相关性/分布) |
97
+ | `heatmap` | 热力图 | `groupBy` + `crossGroupBy` | `{ groupBy: "subject", crossGroupBy: "grade" }` | G2 热力图(密度/交叉分析,颜色深浅表示数量) |
98
+
99
+ ## 阶段 2:执行 generate dashboard
100
+
101
+ 用户审查 `dashboard.config.json` 后,运行命令生成页面:
102
+
103
+ ```bash
104
+ loom generate dashboard <name>
105
+ ```
106
+
107
+ 此命令会:
108
+ 1. 读取并校验 `dashboard.config.json`
109
+ 2. 验证引用的模型是否存在于 `loom.config.ts`
110
+ 3. 生成 Dashboard TSX 页面(含 `useData` + `useChartData` + `DashboardChart`)
111
+ 4. 自动接线 App.tsx(添加 import、navItem、switch case)
112
+ 5. 检测 `@antv/g2` 是否已安装,未安装则提示
113
+
114
+ **前置依赖:** Dashboard 使用 @antv/g2 渲染图表,需在 frontend 目录安装:
115
+
116
+ ```bash
117
+ cd frontend && pnpm add @antv/g2
118
+ ```
119
+
120
+ ## 完整配置示例
121
+
122
+ 以小学生错题管理平台为例,展示所有 15 种图表的配置:
123
+
124
+ ```json
125
+ {
126
+ "name": "overview",
127
+ "description": "错题数据概览",
128
+ "models": ["wrong_questions", "review_plans"],
129
+ "layout": [
130
+ {
131
+ "row": [
132
+ { "type": "stat", "title": "错题总数", "model": "wrong_questions", "aggregate": "count", "span": 4 },
133
+ { "type": "stat", "title": "掌握率", "model": "wrong_questions", "aggregate": "ratio", "filter": { "isMastered": true }, "span": 4 },
134
+ { "type": "gauge", "title": "掌握率仪表盘", "model": "wrong_questions", "aggregate": "ratio", "filter": { "isMastered": true }, "span": 6 },
135
+ { "type": "liquid", "title": "掌握率水波图", "model": "wrong_questions", "aggregate": "ratio", "filter": { "isMastered": true }, "span": 5 },
136
+ { "type": "stat", "title": "平均复习次数", "model": "wrong_questions", "aggregate": "avg", "field": "reviewCount", "span": 5 }
137
+ ]
138
+ },
139
+ {
140
+ "row": [
141
+ { "type": "pie", "title": "科目分布", "model": "wrong_questions", "groupBy": "subject", "span": 8 },
142
+ { "type": "ring", "title": "难度分布", "model": "wrong_questions", "groupBy": "difficulty", "span": 8 },
143
+ { "type": "bar", "title": "错误类型分布", "model": "wrong_questions", "groupBy": "errorType", "span": 8 }
144
+ ]
145
+ },
146
+ {
147
+ "row": [
148
+ { "type": "line", "title": "错题录入趋势", "model": "wrong_questions", "groupBy": "createdAt", "interval": "month", "span": 12 },
149
+ { "type": "area", "title": "复习计划趋势", "model": "review_plans", "groupBy": "createdAt", "interval": "month", "span": 12 }
150
+ ]
151
+ },
152
+ {
153
+ "row": [
154
+ { "type": "radar", "title": "各科目概览", "model": "wrong_questions", "groupBy": "subject", "span": 8 },
155
+ { "type": "stacked_bar", "title": "科目×错误类型", "model": "wrong_questions", "groupBy": "subject", "crossGroupBy": "errorType", "span": 8 },
156
+ { "type": "grouped_bar", "title": "科目×难度", "model": "wrong_questions", "groupBy": "subject", "crossGroupBy": "difficulty", "span": 8 }
157
+ ]
158
+ },
159
+ {
160
+ "row": [
161
+ { "type": "scatter", "title": "科目分布散点", "model": "wrong_questions", "groupBy": "subject", "span": 8 },
162
+ { "type": "funnel", "title": "错误类型漏斗", "model": "wrong_questions", "groupBy": "errorType", "span": 8 },
163
+ { "type": "treemap", "title": "科目×难度树图", "model": "wrong_questions", "groupBy": "subject", "crossGroupBy": "difficulty", "span": 8 }
164
+ ]
165
+ },
166
+ {
167
+ "row": [
168
+ { "type": "heatmap", "title": "科目×年级热力图", "model": "wrong_questions", "groupBy": "subject", "crossGroupBy": "grade", "span": 24 }
169
+ ]
170
+ }
171
+ ]
172
+ }
173
+ ```
174
+
175
+ ## 追加自定义图表
176
+
177
+ 生成后的 Dashboard 页面是普通 TSX,可直接编辑追加图表:
178
+
179
+ 1. 使用 `useChartData` / `useCrossGroupChartData` / `useTreemapChartData` 准备数据
180
+ 2. 使用 `/antv-g2-chart` skill 生成 G2 v5 Spec 代码
181
+ 3. 添加 `<DashboardChart spec={...} />` 组件
182
+
183
+ 示例——追加一个科目×年级的堆叠柱状图:
184
+
185
+ ```tsx
186
+ // 在已有的 Dashboard 页面中追加
187
+ const subjectGradeData = useCrossGroupChartData(wrongQuestionsList, { groupBy: 'subject', crossGroupBy: 'grade' });
188
+
189
+ <DashboardChart spec={{
190
+ type: 'interval',
191
+ data: subjectGradeData,
192
+ encode: { x: 'group', y: 'value', color: 'name' },
193
+ coordinate: { transform: [{ type: 'transpose' }] },
194
+ transform: [{ type: 'stackY' }],
195
+ }} />
196
+ ```
@@ -0,0 +1,78 @@
1
+ # Data Model Reference
2
+
3
+ Advanced configuration for `loom.config.ts`. Full type definitions from `packages/core/src/types.ts`.
4
+
5
+ ## FieldDefinition
6
+
7
+ ```typescript
8
+ {
9
+ name: 'status', // ^[a-zA-Z_][a-zA-Z0-9_]*$
10
+ type: 'string', // 'string' | 'number' | 'boolean' | 'date' | 'string[]' | 'number[]' | 'json'
11
+ required: true, // optional, default false
12
+ description: '...', // optional: shown in generated forms
13
+ default: 'active', // optional: auto-filled on write if not provided
14
+ enum: ['active', 'inactive', 'archived'], // optional: restrict string field to allowed values
15
+ }
16
+ ```
17
+
18
+ ## ModelSchema
19
+
20
+ ```typescript
21
+ {
22
+ name: 'orders', // ^[a-zA-Z][a-zA-Z0-9_]*$, will be used as React component name
23
+ description: 'Order records', // optional: shown in generated page heading
24
+ fields: [...],
25
+ indexes?: [{ fields: ['userId', 'status'], unique: false }],
26
+ adapters?: { // optional: per-model adapter override
27
+ filesystem: { dir: 'orders', format: 'json' | 'yaml', datePattern: 'YYYY-MM' },
28
+ sqlite: { table: 'orders' },
29
+ },
30
+ }
31
+ ```
32
+
33
+ ## AIButtonConfig
34
+
35
+ ```typescript
36
+ aiButtons: [{
37
+ id: 'summarize', // required: unique identifier
38
+ label: '总结', // required: button text
39
+ icon: 'FileTextOutlined', // optional: Ant Design icon component name
40
+ prompt: '请总结以下内容', // required: supports {{var}} placeholders, replaced with current row field values
41
+ placement: 'wrong_questions', // optional: limit to specific model pages, comma-separated; omit for all pages
42
+ }]
43
+ ```
44
+
45
+ ## AIConfig
46
+
47
+ ```typescript
48
+ ai: {
49
+ engine: 'claude-code', // default 'claude-code'
50
+ claudeCode: {
51
+ path: '/usr/local/bin/claude', // optional: custom claude binary path
52
+ pluginRoot: '.claude', // optional: plugin root directory
53
+ timeout: 120000, // optional: command timeout in ms
54
+ skipPermissions: false, // optional: skip permission prompts
55
+ },
56
+ }
57
+ ```
58
+
59
+ ## ServerConfig
60
+
61
+ ```typescript
62
+ server: {
63
+ port: 3000, // default 3000
64
+ host: '0.0.0.0',
65
+ cors: true, // default true
66
+ staticDir: './dist/frontend',
67
+ }
68
+ ```
69
+
70
+ ## DataConfig
71
+
72
+ ```typescript
73
+ data: {
74
+ defaultAdapter: 'filesystem' | 'sqlite',
75
+ models: [...],
76
+ sqlite: { filename: 'loom.db' }, // optional, default 'loom.db'
77
+ }
78
+ ```