@loom-framework/core 0.1.0-alpha.14 → 0.1.0-alpha.140

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 (463) 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 +213 -0
  188. package/builtin-skills/loom/references/README.md +211 -0
  189. package/builtin-skills/loom/references/dashboard.md +257 -0
  190. package/builtin-skills/loom/references/data-model.md +196 -0
  191. package/dist/adapter-base.d.ts +31 -0
  192. package/dist/adapter-base.d.ts.map +1 -0
  193. package/dist/adapter-base.js +69 -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 +25 -11
  200. package/dist/adapter-filesystem.d.ts.map +1 -1
  201. package/dist/adapter-filesystem.js +230 -52
  202. package/dist/adapter-filesystem.js.map +1 -1
  203. package/dist/adapter-sqlite.d.ts +9 -23
  204. package/dist/adapter-sqlite.d.ts.map +1 -1
  205. package/dist/adapter-sqlite.js +94 -55
  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 +60 -0
  212. package/dist/backend/ai/engine.d.ts.map +1 -0
  213. package/dist/backend/ai/engine.js +205 -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 +166 -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/ai-config.d.ts +13 -0
  244. package/dist/backend/routes/ai-config.d.ts.map +1 -0
  245. package/dist/backend/routes/ai-config.js +170 -0
  246. package/dist/backend/routes/ai-config.js.map +1 -0
  247. package/dist/backend/routes/chat.d.ts +31 -0
  248. package/dist/backend/routes/chat.d.ts.map +1 -0
  249. package/dist/backend/routes/chat.js +428 -0
  250. package/dist/backend/routes/chat.js.map +1 -0
  251. package/dist/backend/routes/data.d.ts +14 -0
  252. package/dist/backend/routes/data.d.ts.map +1 -0
  253. package/dist/backend/routes/data.js +357 -0
  254. package/dist/backend/routes/data.js.map +1 -0
  255. package/dist/backend/routes/health.d.ts +7 -0
  256. package/dist/backend/routes/health.d.ts.map +1 -0
  257. package/dist/backend/routes/health.js +15 -0
  258. package/dist/backend/routes/health.js.map +1 -0
  259. package/dist/backend/routes/index.d.ts +12 -0
  260. package/dist/backend/routes/index.d.ts.map +1 -0
  261. package/dist/backend/routes/index.js +10 -0
  262. package/dist/backend/routes/index.js.map +1 -0
  263. package/dist/backend/routes/skills.d.ts +16 -0
  264. package/dist/backend/routes/skills.d.ts.map +1 -0
  265. package/dist/backend/routes/skills.js +590 -0
  266. package/dist/backend/routes/skills.js.map +1 -0
  267. package/dist/backend/routes/upload.d.ts +24 -0
  268. package/dist/backend/routes/upload.d.ts.map +1 -0
  269. package/dist/backend/routes/upload.js +99 -0
  270. package/dist/backend/routes/upload.js.map +1 -0
  271. package/dist/bin.d.ts +8 -0
  272. package/dist/bin.d.ts.map +1 -0
  273. package/dist/bin.js +12 -0
  274. package/dist/bin.js.map +1 -0
  275. package/dist/capability-generator.d.ts +21 -6
  276. package/dist/capability-generator.d.ts.map +1 -1
  277. package/dist/capability-generator.js +88 -261
  278. package/dist/capability-generator.js.map +1 -1
  279. package/dist/cli/commands/build.d.ts +11 -0
  280. package/dist/cli/commands/build.d.ts.map +1 -0
  281. package/dist/cli/commands/build.js +170 -0
  282. package/dist/cli/commands/build.js.map +1 -0
  283. package/dist/cli/commands/data.d.ts +12 -0
  284. package/dist/cli/commands/data.d.ts.map +1 -0
  285. package/dist/cli/commands/data.js +158 -0
  286. package/dist/cli/commands/data.js.map +1 -0
  287. package/dist/cli/commands/dev.d.ts +9 -0
  288. package/dist/cli/commands/dev.d.ts.map +1 -0
  289. package/dist/cli/commands/dev.js +114 -0
  290. package/dist/cli/commands/dev.js.map +1 -0
  291. package/dist/cli/commands/generate-capabilities.d.ts +8 -0
  292. package/dist/cli/commands/generate-capabilities.d.ts.map +1 -0
  293. package/dist/cli/commands/generate-capabilities.js +40 -0
  294. package/dist/cli/commands/generate-capabilities.js.map +1 -0
  295. package/dist/cli/commands/generate-cli-command.d.ts +8 -0
  296. package/dist/cli/commands/generate-cli-command.d.ts.map +1 -0
  297. package/dist/cli/commands/generate-cli-command.js +64 -0
  298. package/dist/cli/commands/generate-cli-command.js.map +1 -0
  299. package/dist/cli/commands/generate-dashboard.d.ts +9 -0
  300. package/dist/cli/commands/generate-dashboard.d.ts.map +1 -0
  301. package/dist/cli/commands/generate-dashboard.js +560 -0
  302. package/dist/cli/commands/generate-dashboard.js.map +1 -0
  303. package/dist/cli/commands/generate-page.d.ts +9 -0
  304. package/dist/cli/commands/generate-page.d.ts.map +1 -0
  305. package/dist/cli/commands/generate-page.js +542 -0
  306. package/dist/cli/commands/generate-page.js.map +1 -0
  307. package/dist/cli/commands/generate-skill.d.ts +8 -0
  308. package/dist/cli/commands/generate-skill.d.ts.map +1 -0
  309. package/dist/cli/commands/generate-skill.js +75 -0
  310. package/dist/cli/commands/generate-skill.js.map +1 -0
  311. package/dist/cli/commands/generate.d.ts +6 -0
  312. package/dist/cli/commands/generate.d.ts.map +1 -0
  313. package/dist/cli/commands/generate.js +19 -0
  314. package/dist/cli/commands/generate.js.map +1 -0
  315. package/dist/cli/commands/init.d.ts +8 -0
  316. package/dist/cli/commands/init.d.ts.map +1 -0
  317. package/dist/cli/commands/init.js +320 -0
  318. package/dist/cli/commands/init.js.map +1 -0
  319. package/dist/cli/commands/observe.d.ts +9 -0
  320. package/dist/cli/commands/observe.d.ts.map +1 -0
  321. package/dist/cli/commands/observe.js +142 -0
  322. package/dist/cli/commands/observe.js.map +1 -0
  323. package/dist/cli/commands/skill.d.ts +9 -0
  324. package/dist/cli/commands/skill.d.ts.map +1 -0
  325. package/dist/cli/commands/skill.js +186 -0
  326. package/dist/cli/commands/skill.js.map +1 -0
  327. package/dist/cli/generators/capability-generator.d.ts +35 -0
  328. package/dist/cli/generators/capability-generator.d.ts.map +1 -0
  329. package/dist/cli/generators/capability-generator.js +115 -0
  330. package/dist/cli/generators/capability-generator.js.map +1 -0
  331. package/dist/cli/helpers/app-tsx-wiring.d.ts +22 -0
  332. package/dist/cli/helpers/app-tsx-wiring.d.ts.map +1 -0
  333. package/dist/cli/helpers/app-tsx-wiring.js +293 -0
  334. package/dist/cli/helpers/app-tsx-wiring.js.map +1 -0
  335. package/dist/cli/helpers/backup.d.ts +16 -0
  336. package/dist/cli/helpers/backup.d.ts.map +1 -0
  337. package/dist/cli/helpers/backup.js +37 -0
  338. package/dist/cli/helpers/backup.js.map +1 -0
  339. package/dist/cli/helpers/column-template.d.ts +18 -0
  340. package/dist/cli/helpers/column-template.d.ts.map +1 -0
  341. package/dist/cli/helpers/column-template.js +158 -0
  342. package/dist/cli/helpers/column-template.js.map +1 -0
  343. package/dist/cli/helpers/duration.d.ts +5 -0
  344. package/dist/cli/helpers/duration.d.ts.map +1 -0
  345. package/dist/cli/helpers/duration.js +19 -0
  346. package/dist/cli/helpers/duration.js.map +1 -0
  347. package/dist/cli/helpers/field-template.d.ts +14 -0
  348. package/dist/cli/helpers/field-template.d.ts.map +1 -0
  349. package/dist/cli/helpers/field-template.js +108 -0
  350. package/dist/cli/helpers/field-template.js.map +1 -0
  351. package/dist/cli/helpers/naming.d.ts +12 -0
  352. package/dist/cli/helpers/naming.d.ts.map +1 -0
  353. package/dist/cli/helpers/naming.js +25 -0
  354. package/dist/cli/helpers/naming.js.map +1 -0
  355. package/dist/cli/index.d.ts +9 -0
  356. package/dist/cli/index.d.ts.map +1 -0
  357. package/dist/cli/index.js +33 -0
  358. package/dist/cli/index.js.map +1 -0
  359. package/dist/cli/templates/backend-entry.d.ts +5 -0
  360. package/dist/cli/templates/backend-entry.d.ts.map +1 -0
  361. package/dist/cli/templates/backend-entry.js +17 -0
  362. package/dist/cli/templates/backend-entry.js.map +1 -0
  363. package/dist/cli/templates/claude-md.d.ts +20 -0
  364. package/dist/cli/templates/claude-md.d.ts.map +1 -0
  365. package/dist/cli/templates/claude-md.js +123 -0
  366. package/dist/cli/templates/claude-md.js.map +1 -0
  367. package/dist/cli/templates/frontend-entry.d.ts +11 -0
  368. package/dist/cli/templates/frontend-entry.d.ts.map +1 -0
  369. package/dist/cli/templates/frontend-entry.js +97 -0
  370. package/dist/cli/templates/frontend-entry.js.map +1 -0
  371. package/dist/cli/templates/gitignore.d.ts +5 -0
  372. package/dist/cli/templates/gitignore.d.ts.map +1 -0
  373. package/dist/cli/templates/gitignore.js +13 -0
  374. package/dist/cli/templates/gitignore.js.map +1 -0
  375. package/dist/cli/templates/index.d.ts +13 -0
  376. package/dist/cli/templates/index.d.ts.map +1 -0
  377. package/dist/cli/templates/index.js +13 -0
  378. package/dist/cli/templates/index.js.map +1 -0
  379. package/dist/cli/templates/loom-config.d.ts +13 -0
  380. package/dist/cli/templates/loom-config.d.ts.map +1 -0
  381. package/dist/cli/templates/loom-config.js +50 -0
  382. package/dist/cli/templates/loom-config.js.map +1 -0
  383. package/dist/cli/templates/package-json.d.ts +9 -0
  384. package/dist/cli/templates/package-json.d.ts.map +1 -0
  385. package/dist/cli/templates/package-json.js +41 -0
  386. package/dist/cli/templates/package-json.js.map +1 -0
  387. package/dist/cli/templates/readme.d.ts +9 -0
  388. package/dist/cli/templates/readme.d.ts.map +1 -0
  389. package/dist/cli/templates/readme.js +47 -0
  390. package/dist/cli/templates/readme.js.map +1 -0
  391. package/dist/cli/templates/tsconfig.d.ts +6 -0
  392. package/dist/cli/templates/tsconfig.d.ts.map +1 -0
  393. package/dist/cli/templates/tsconfig.js +41 -0
  394. package/dist/cli/templates/tsconfig.js.map +1 -0
  395. package/dist/cli/templates/vite-config.d.ts +5 -0
  396. package/dist/cli/templates/vite-config.d.ts.map +1 -0
  397. package/dist/cli/templates/vite-config.js +24 -0
  398. package/dist/cli/templates/vite-config.js.map +1 -0
  399. package/dist/cli/utils.d.ts +10 -0
  400. package/dist/cli/utils.d.ts.map +1 -0
  401. package/dist/cli/utils.js +31 -0
  402. package/dist/cli/utils.js.map +1 -0
  403. package/dist/commands.d.ts +1 -5
  404. package/dist/commands.d.ts.map +1 -1
  405. package/dist/commands.js +0 -11
  406. package/dist/commands.js.map +1 -1
  407. package/dist/config.d.ts +439 -69
  408. package/dist/config.d.ts.map +1 -1
  409. package/dist/config.js +51 -14
  410. package/dist/config.js.map +1 -1
  411. package/dist/dashboard-config.d.ts +149 -0
  412. package/dist/dashboard-config.d.ts.map +1 -0
  413. package/dist/dashboard-config.js +40 -0
  414. package/dist/dashboard-config.js.map +1 -0
  415. package/dist/index.d.ts +10 -4
  416. package/dist/index.d.ts.map +1 -1
  417. package/dist/index.js +10 -2
  418. package/dist/index.js.map +1 -1
  419. package/dist/server-bin.d.ts +12 -0
  420. package/dist/server-bin.d.ts.map +1 -0
  421. package/dist/server-bin.js +43 -0
  422. package/dist/server-bin.js.map +1 -0
  423. package/dist/types/adapter.d.ts +30 -0
  424. package/dist/types/adapter.d.ts.map +1 -0
  425. package/dist/types/adapter.js +5 -0
  426. package/dist/types/adapter.js.map +1 -0
  427. package/dist/types/ai.d.ts +66 -0
  428. package/dist/types/ai.d.ts.map +1 -0
  429. package/dist/types/ai.js +5 -0
  430. package/dist/types/ai.js.map +1 -0
  431. package/dist/types/chat.d.ts +46 -0
  432. package/dist/types/chat.d.ts.map +1 -0
  433. package/dist/types/chat.js +5 -0
  434. package/dist/types/chat.js.map +1 -0
  435. package/dist/types/command.d.ts +25 -0
  436. package/dist/types/command.d.ts.map +1 -0
  437. package/dist/types/command.js +5 -0
  438. package/dist/types/command.js.map +1 -0
  439. package/dist/types/config.d.ts +59 -0
  440. package/dist/types/config.d.ts.map +1 -0
  441. package/dist/types/config.js +5 -0
  442. package/dist/types/config.js.map +1 -0
  443. package/dist/types/dashboard.d.ts +59 -0
  444. package/dist/types/dashboard.d.ts.map +1 -0
  445. package/dist/types/dashboard.js +5 -0
  446. package/dist/types/dashboard.js.map +1 -0
  447. package/dist/types/index.d.ts +16 -0
  448. package/dist/types/index.d.ts.map +1 -0
  449. package/dist/types/index.js +8 -0
  450. package/dist/types/index.js.map +1 -0
  451. package/dist/types/locale.d.ts +21 -0
  452. package/dist/types/locale.d.ts.map +1 -0
  453. package/dist/types/locale.js +36 -0
  454. package/dist/types/locale.js.map +1 -0
  455. package/dist/types/model.d.ts +69 -0
  456. package/dist/types/model.d.ts.map +1 -0
  457. package/dist/types/model.js +5 -0
  458. package/dist/types/model.js.map +1 -0
  459. package/dist/types.d.ts +4 -199
  460. package/dist/types.d.ts.map +1 -1
  461. package/dist/types.js +4 -3
  462. package/dist/types.js.map +1 -1
  463. 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,213 @@
1
+ ---
2
+ name: Loom
3
+ description: |
4
+ Use this skill when the user asks to "create a new loom project", "用loom开发一个系统",
5
+ "开发一个AI平台应用", "为系统添加页面", "为项目配置 AI 按钮功能",
6
+ "添加功能", "新增功能", "添加管理", "新增管理", "添加页面", "新增页面",
7
+ "生成页面", "添加数据模型", "新增数据模型", or any Loom framework task.
8
+ Loom is an AI-Native full-stack framework.
9
+ version: 0.1.0
10
+ ---
11
+
12
+ # Loom - AI 原生全栈框架技能
13
+
14
+ ## 框架工作方式
15
+
16
+ Loom 是**配置驱动、自动生成**的框架。工作流程为:
17
+
18
+ 1. **写配置** — 编辑 `loom.config.ts`,定义数据模型和 AI 按钮
19
+ 2. **跑命令** — CLI 读取配置,自动生成页面、API 和路由接线
20
+
21
+ `loom generate page` 会自动生成:CRUD 页面(含 AI 按钮)、App.tsx 路由接线、后端 API + 应用 Skill。
22
+ 生成的页面自带 AI 助手浮动按钮,支持流式对话、多会话和数据自动刷新。
23
+
24
+ 技术架构细节见 `references/README.md`。
25
+
26
+ ## 开发流程
27
+
28
+ **重要:** 始终在项目目录下运行命令(不是 loom monorepo 根目录)。
29
+
30
+ ### 1. 创建项目
31
+
32
+ ```bash
33
+ npx -p @loom-framework/core loom init <name> --description <desc> --adapter <filesystem|sqlite>
34
+ ```
35
+
36
+ 项目初始化时自动创建 `CLAUDE.md`(项目根目录),Claude Code 会自动加载此文件作为 system prompt 上下文,提升 AI 对话效果。同时自动安装以下内置 Skill:
37
+
38
+ | Skill | 触发场景 | 说明 |
39
+ |-------|---------|------|
40
+ | **antd** | 开发前端页面、丰富 UI 功能 | 通过 `@ant-design/cli` 查询组件 API、语义化样式、示例;编写前端代码前先用此 Skill 确认用法 |
41
+ | **antv-g2-chart** | 添加自定义可视化图表 | 生成 G2 v5 Spec 代码;配合 `useChartData` / `DashboardChart`,详见 `references/dashboard.md` |
42
+ | **chart-visualization** | 对话中快速生成图表 | 通过 API 生成图表图片返回 Markdown 链接,适合快速展示数据分析结果 |
43
+
44
+ ### 2. 编辑配置
45
+
46
+ 编辑 `loom.config.ts`,定义数据模型(`data.models`)和 AI 按钮(`aiButtons`),Schema 见下方。高级选项见 `references/data-model.md`。
47
+
48
+ ### 3. 生成页面
49
+
50
+ ```bash
51
+ loom generate page <Name> --model <model-name>
52
+ ```
53
+
54
+ 此命令自动生成:CRUD 页面(含 AI 按钮)、App.tsx 路由接线、后端 API、应用 Skill。模型立即可通过 `loom data` CLI 和 AI 对话使用。
55
+
56
+ ### 4. 生成 Dashboard(数据概览)
57
+
58
+ Dashboard 配置在 `loom.config.ts` 的 `dashboards` 字段中定义。设计原则和配置 Schema 详见 `references/dashboard.md`。
59
+
60
+ ```bash
61
+ loom generate dashboard <name>
62
+ ```
63
+
64
+ 此命令从 `loom.config.ts` 的 `dashboards` 字段读取配置,自动生成 Dashboard 页面并接线 App.tsx。
65
+
66
+ ### 5. 完善 AI Skill(必须)
67
+
68
+ 步骤 3 会自动生成应用 Skill(`.claude/skills/<项目名>/SKILL.md`),但需要补充以下 TODO,AI 对话才能正确理解项目业务语义:
69
+
70
+ 1. **frontmatter `description`**:写入用户在 AI 对话中会说的触发短语。格式参考:
71
+ ```
72
+ This skill should be used when the user asks to "创建XXX", "查看XXX", "删除XXX",
73
+ or any request about managing XXX in the <项目名> project.
74
+ ```
75
+ 2. **Overview 部分**:用 2-3 句话描述项目做什么、有哪些数据、用户如何与数据交互
76
+ 3. **Usage Scenarios 部分**:列出 5-10 个典型用户请求,格式为 `- "用户说的话" → 对应的 CLI 命令`
77
+
78
+ 如需添加自定义 Skill:
79
+ - `loom generate skill <name>` — 创建脚手架,然后编辑 `.claude/skills/<name>/SKILL.md`
80
+ - 或直接复制一个已有的 Skill 目录到 `.claude/skills/` 下
81
+
82
+ ### 重启服务前必须询问用户
83
+
84
+ 修改 `loom.config.ts` 后如果需要重启后端服务(如增删 AI 按钮、修改 enum 值、新增模型等场景),**必须先询问用户是否可以重启**,得到确认后再执行 `loom dev` 或停止/重启服务。不要自动重启,因为用户可能正在使用页面或调试中。
85
+
86
+ ### 6. 启动开发
87
+
88
+ ```bash
89
+ loom dev
90
+ ```
91
+
92
+ - 前端:http://localhost:5173
93
+ - 后端:http://localhost:3000
94
+
95
+ ### 迭代:修改配置后的处理
96
+
97
+ 不同类型的配置变更,处理方式不同:
98
+
99
+ | 变更类型 | 需要改页面吗 | 怎么做 |
100
+ |---------|------------|--------|
101
+ | 增删 AI 按钮 | 不需要 | 改配置 → 重启后端,按钮自动出现/消失 |
102
+ | 修改 enum 值 | 不需要 | 改配置 → 重启后端,筛选和下拉自动更新 |
103
+ | 新增数据模型 | 需要生成新页面 | 改配置 → `loom generate page <Name> --model <model>` → 重启后端 |
104
+ | 新增/删除字段 | 需要 | 改配置 → `--force` 重建(默认,最快)或 AI 增量更新(有定制时保留修改)→ 更新CLAUDE.md |
105
+
106
+ **`--force` 重建(默认)**:字段变更时直接 `--force` 重建页面,是最快最干净的方式,页面与配置立即同步。`--force` 会自动将旧页面备份到 `.loom/backup/<时间戳>/` 目录,如需恢复直接复制回来即可。
107
+
108
+ **AI 增量更新(有定制时)**:如果用户说"保留我的定制"或明确表示页面有手动修改过,才让 AI 增量更新。告诉 AI 你改了什么(如"我在配置里加了一个学期字段"),AI 会精确添加新字段的列和表单项,保留定制代码。如果AI进行了定制化开发,务必将定制化开发内容更新到CLAUDE.md,使得后续新启动会话时Claude Code可掌握项目定制化情况。
109
+
110
+ ```bash
111
+ # 只改了 AI 按钮或 enum → 重启后端即可
112
+ # 加了新字段 → --force 重建(默认)
113
+ # 加了新字段,要保留页面定制 → 让 AI 增量更新
114
+ loom generate page <Name> --model <model-name> --force
115
+ ```
116
+
117
+ **恢复备份**:`--force` 覆盖的文件自动备份到项目 `.loom/backup/<时间戳>/` 目录(每次 --force 生成独立时间戳目录,同一天多次执行互不影响),如需恢复:`cp .loom/backup/<时间戳>/XXX.tsx frontend/src/components/pages/XXX.tsx`
118
+
119
+ ### 内置 Skill 使用原则
120
+
121
+ - 涉及前端页面开发 → 先用 `/antd` 查询组件 API,不要凭记忆写代码
122
+ - 需要在 Dashboard 追加图表 → 参考 `references/dashboard.md` + `/antv-g2-chart` 生成代码
123
+ - 对话中需展示数据可视化 → 用 `/chart-visualization` 生成图片
124
+
125
+ ### CLI 命令速查
126
+
127
+ | 命令 | 说明 |
128
+ |------|------|
129
+ | `loom dev` | 启动开发环境(`--skip-generate` `--backend-only` `--frontend-only`) |
130
+ | `loom build` | 生产构建 |
131
+ | `loom generate page <name> --model <model>` | 生成 CRUD 页面 + 应用 Skill(含 aiButtons 则自动集成) |
132
+ | `loom generate page <name> --model <model> --force` | 重建页面(默认方式,自动备份旧文件到 `.loom/backup/`) |
133
+ | `loom generate dashboard <name>` | 从 loom.config.ts dashboards 生成 Dashboard 页面 |
134
+ | `loom generate dashboard <name> --force` | 重建 Dashboard 页面(自动备份旧文件到 `.loom/backup/`) |
135
+ | `loom generate capabilities` | 仅重新生成应用 Skill 的 `references/models.md` |
136
+ | `loom generate skill <name>` | 生成自定义 Skill 脚架 |
137
+
138
+ ## loom.config.ts Schema(核心)
139
+
140
+ ```typescript
141
+ import { defineConfig } from '@loom-framework/core';
142
+
143
+ export default defineConfig({
144
+ project: {
145
+ name: 'my-app', // 必填
146
+ description: { 'zh-CN': '我的应用', 'en-US': 'My App' }, // 可选,支持多语言
147
+ },
148
+ data: {
149
+ defaultAdapter: 'filesystem', // 'filesystem' | 'sqlite'
150
+ models: [{
151
+ name: 'items', // 将作为 React 组件名生成页面,字母开头,字母/数字/下划线
152
+ description: { 'zh-CN': '数据项', 'en-US': 'Items' }, // 可选:支持多语言
153
+ fields: [{
154
+ name: 'status', // 字母/下划线开头,字母数字下划线
155
+ type: 'string', // 'string' | 'number' | 'boolean' | 'date' | 'string[]' | 'number[]' | 'json'
156
+ required: true, // 可选,默认 false
157
+ description: { 'zh-CN': '状态', 'en-US': 'Status' }, // 可选:支持多语言
158
+ default: 'active', // 可选:写入时自动填充
159
+ enum: ['active', 'inactive'], // 可选:限制可选值(存储值,不随语言变化)
160
+ enumLabels: { // 可选:enum 值的多语言显示标签
161
+ active: { 'zh-CN': '激活', 'en-US': 'Active' },
162
+ inactive: { 'zh-CN': '停用', 'en-US': 'Inactive' },
163
+ },
164
+ }],
165
+ }],
166
+ },
167
+ aiButtons: [{ // 可选
168
+ id: 'summarize', // 必填:唯一标识
169
+ label: { 'zh-CN': '总结', 'en-US': 'Summarize' }, // 必填:支持多语言
170
+ prompt: '请总结以下内容', // 必填:支持 {{var}} 引用当前行字段值
171
+ },
172
+ {
173
+ id: 'analyze', // 带变量的示例
174
+ label: { 'zh-CN': '分析', 'en-US': 'Analyze' },
175
+ prompt: '分析{{questionContent}},错误答案:{{wrongAnswer}}',
176
+ placement: 'wrong_questions', // 可选:限制按钮只出现在指定模型页面,逗号分隔多个模型名;省略则出现在所有页面
177
+ }],
178
+ dashboards: [{ // 可选:Dashboard 定义,完整配置见 references/dashboard.md
179
+ name: 'overview', // 必填:唯一标识,同命名规则
180
+ description: { 'zh-CN': '数据概览', 'en-US': 'Overview' }, // 可选
181
+ models: ['items'], // 必填:关联的数据模型
182
+ defaultDateField: 'createdAt', // 可选:启用日期范围筛选
183
+ filterDimensions: [], // 可选:启用下拉筛选,见 references/dashboard.md
184
+ layout: [{ row: [{ type: 'stat', title: { 'zh-CN': '总数', 'en-US': 'Total' }, model: 'items', aggregate: 'count', span: 6 }] }],
185
+ }],
186
+ });
187
+ ```
188
+
189
+ ### 多语言(i18n)
190
+
191
+ 所有面向用户的展示字段均支持 `LocaleString` 格式:`string | Record<string, string>`。
192
+
193
+ - **简单写法**:`description: '科目'` — 所有语言显示相同文本
194
+ - **多语言写法**:`description: { 'zh-CN': '科目', 'en-US': 'Subject' }` — 切换语言时自动翻译
195
+ - **enum 值**:`enum` 始终是存储值(不分语言),显示文本通过 `enumLabels` 翻译
196
+ - **回退规则**:请求的 locale → `'zh-CN'` → 第一个可用值
197
+
198
+ 支持的 LocaleString 字段:`project.description`、`ModelSchema.description`、`FieldDefinition.description`、`AIButtonConfig.label`、`DashboardConfig.description`、`DashboardWidget.title`、`RelationConfig.label`
199
+
200
+ 生成页面会自动通过 `registerMessages()` 注册 i18n key,并使用 `t()` 调用引用,无需手动处理。
201
+
202
+ 高级配置(`ai.claudeCode`、`server`、按模型 `adapters`、`indexes`)见 `references/data-model.md`。
203
+
204
+ ## API 路由格式
205
+
206
+ 后端 REST API 路径为 `/api/v1/data/<model-name>`,支持:`GET`(列表)、`GET /:id`(单条)、`POST`(创建)、`PUT /:id`(更新)、`DELETE /:id`(删除)、`GET /schema`(模型 Schema + AI 按钮)。
207
+ AI 相关:`POST /api/v1/chat`(SSE 流式对话)、`GET /api/v1/sessions`(会话列表)。
208
+ 前端通过 `useData('<model-name>')` 自动访问,无需手动拼接。`useSchema('<model-name>')` 获取模型字段和 AI 按钮定义,自动根据当前 locale 请求服务端 resolved 数据。`filterOptions(schema, fieldName)` 和 `selectOptions(schema, fieldName)` 将 enum 值转为 antd 组件格式(使用 resolved 的 enumLabels)。`enumLabel(schema, fieldName, value)` 获取单个 enum 值的显示标签。
209
+
210
+ ## 常见问题
211
+
212
+ - **better-sqlite3 加载失败**:Node.js 版本缺少预编译包。修复:(1) `cd node_modules/better-sqlite3 && npx node-gyp rebuild`,或 (2) 将 `defaultAdapter` 改为 `'filesystem'`
213
+ - **`loom` 命令报错 "No loom.config.ts found"**:在项目目录下运行命令
@@ -0,0 +1,211 @@
1
+ # 用 Loom 开发 AI 平台
2
+
3
+ ## 30 秒理解 Loom
4
+
5
+ 你写一个配置文件描述你的数据模型和 AI 按钮,Loom 生成一个可运行的平台。然后你和 AI 一起迭代它。
6
+
7
+ ```
8
+ 你写的 Loom 生成的 你和 AI 继续做的
9
+ loom.config.ts → 页面 + API + AI 对话 → 改布局、加功能、调样式
10
+ ```
11
+
12
+ ## 开发方式
13
+
14
+ Loom 项目的主要交互方式是**和 AI 对话**。你告诉 AI 想要什么,AI 通过 Loom Skill 知道怎么用 Loom 实现它。
15
+
16
+ 两个入口,同一个 AI:
17
+
18
+ - **终端 Claude Code** — 适合搭建阶段、大范围代码修改
19
+ - **页面内对话框** — 适合日常操作数据、小范围页面调整
20
+
21
+ 两个入口背后是同一个 Claude Code 引擎、同一套项目上下文。在哪边改都行。
22
+
23
+ ## 第一个项目
24
+
25
+ 假设你要做一个**错题管理平台**。
26
+
27
+ ### 第 1 步:告诉 AI 你的想法
28
+
29
+ 在 Claude Code 中说:
30
+
31
+ > 用 loom 创建一个错题管理平台,项目名 wrong-questions,filesystem 适配器。
32
+ > 需要两个模型:错题记录(科目、题目内容、错误答案、正确答案、错误类型、是否掌握)和复习计划(错题ID、计划日期、状态)。
33
+ > AI 按钮要能分析错因和出类似题。
34
+
35
+ AI 会读取 Loom Skill,自动执行:
36
+
37
+ 1. `loom init wrong-questions --adapter filesystem` — 创建项目
38
+ 2. 编写 `loom.config.ts` — 把你的需求转成配置
39
+ 3. `loom generate page` — 生成页面
40
+ 4. `loom generate dashboard` — 生成数据概览
41
+ 5. 补充项目级 AI Skill — 让 AI 理解你的业务语义
42
+
43
+ 你也可以自己跑命令,但通过 Loom Skill 让 AI 来做更省事 — 它知道每一步该做什么。
44
+
45
+ ### 第 2 步:看看效果
46
+
47
+ ```bash
48
+ cd wrong-questions
49
+ loom dev
50
+ ```
51
+
52
+ 打开 http://localhost:5173 ,你的平台已经能用了:
53
+ - 左侧导航有「错题记录」和「复习计划」页面
54
+ - 每个页面有新增、编辑、删除、筛选
55
+ - 错题记录每行有 AI 按钮:分析错因、出类似题
56
+ - 右下角有 AI 对话框,可以自然语言操作数据
57
+
58
+ ### 第 3 步:继续和 AI 聊
59
+
60
+ 平台跑起来后,你主要的工作方式是对 AI 说需求:
61
+
62
+ | 你说的 | AI 做的 |
63
+ |-------|--------|
64
+ | "帮我记一道数学错题,3+5=7,正确答案是8" | 用 `loom data write` 创建记录 |
65
+ | "看看哪些错题还没掌握" | 查数据并展示 |
66
+ | "把这个页面改成卡片布局" | 修改页面 TSX |
67
+ | "加一个学期字段" | 改 loom.config.ts + 改页面 + 更新 Skill references |
68
+ | "加一个科目分布的饼图" | 修改 Dashboard 页面 |
69
+
70
+ 这些操作在终端 Claude Code 和页面对话框里都能做。
71
+
72
+ ## 配置变更与迭代
73
+
74
+ 改了 `loom.config.ts` 后,不同类型的变更需要不同的处理方式:
75
+
76
+ | 变更类型 | 页面需要改吗 | 怎么做 |
77
+ |---------|------------|--------|
78
+ | 增删 AI 按钮 | 不需要 | 改配置 → 重启后端,按钮自动出现在页面 |
79
+ | 修改 enum 值 | 不需要 | 改配置 → 重启后端,筛选和下拉自动更新 |
80
+ | 新增数据模型 | 需要生成新页面 | 改配置 → `loom generate page <Name> --model <model>` → 重启后端 |
81
+ | 新增/删除字段 | 需要 | 改配置 → `--force` 重建(默认,最快)或 AI 增量更新(有定制时保留修改) |
82
+
83
+ **`--force` 重建(默认)**:字段变更时直接 `--force` 重建页面,是最快最干净的方式,页面与配置立即同步。`--force` 会自动将旧页面备份到 `.loom/backup/<时间戳>/` 目录(每次 --force 生成独立时间戳目录,同一天多次执行互不影响),如需恢复直接复制回来即可。
84
+
85
+ **AI 增量更新(有定制时)**:如果用户说"保留我的定制"或明确表示页面有手动修改过,才让 AI 增量更新。告诉 AI 你改了什么(比如"我在配置里加了一个学期字段"),AI 会在页面中精确添加新字段的列和表单项,**保留你之前做的视觉定制代码**。
86
+
87
+ ```bash
88
+ # 只改了 AI 按钮或 enum → 重启后端即可,不用碰页面
89
+ # 加了新字段 → --force 重建(默认)
90
+ # 加了新字段,要保留页面定制 → 让 AI 增量更新
91
+ loom generate page WrongQuestions --model wrong_questions --force
92
+ ```
93
+
94
+ **恢复备份**:`--force` 覆盖的文件自动备份到 `.loom/backup/<时间戳>/` 目录,如需恢复:`cp .loom/backup/<时间戳>/XXX.tsx frontend/src/components/pages/XXX.tsx`
95
+
96
+ 页面不存在时直接 `loom generate page` 即可,不需要 `--force`。
97
+
98
+ ## 配置写法
99
+
100
+ `loom.config.ts` 是唯一配置源,包含数据模型、AI 按钮和 Dashboard 定义。完整的字段类型和高级选项见 `references/data-model.md`。
101
+
102
+ ```typescript
103
+ import { defineConfig } from '@loom-framework/core';
104
+
105
+ export default defineConfig({
106
+ project: { name: 'my-app', description: '我的应用' },
107
+ data: {
108
+ defaultAdapter: 'filesystem',
109
+ models: [{
110
+ name: 'tasks',
111
+ description: '任务管理',
112
+ fields: [
113
+ { name: 'title', type: 'string', required: true, description: '任务标题' },
114
+ { name: 'status', type: 'string', enum: ['待办', '进行中', '已完成'], default: '待办' },
115
+ { name: 'priority', type: 'string', enum: ['低', '中', '高'] },
116
+ ],
117
+ }],
118
+ },
119
+ aiButtons: [{
120
+ id: 'breakdown',
121
+ label: '拆解任务',
122
+ prompt: '请将这个任务拆解为可执行的子步骤:{{title}}',
123
+ placement: 'tasks',
124
+ }],
125
+ dashboards: [{
126
+ name: 'overview',
127
+ description: '数据概览',
128
+ models: ['tasks'],
129
+ layout: [
130
+ { row: [
131
+ { type: 'stat', title: '任务总数', model: 'tasks', aggregate: 'count', span: 6 },
132
+ { type: 'pie', title: '状态分布', model: 'tasks', groupBy: 'status', span: 8 },
133
+ { type: 'bar', title: '优先级分布', model: 'tasks', groupBy: 'priority', span: 8 },
134
+ ]}
135
+ ],
136
+ }],
137
+ });
138
+ ```
139
+
140
+ - AI 按钮的 `prompt` 支持 `{{fieldName}}` 插值,运行时替换为当前行的字段值
141
+ - `placement` 限制按钮只出现在指定模型页面,省略则全局显示
142
+ - Dashboard 的 15 种图表类型和配置 Schema 见 `references/dashboard.md`
143
+
144
+ ## 项目级 AI Skill
145
+
146
+ 每个项目的 `.claude/skills/<项目名>/SKILL.md` 是 AI 理解你业务的入口。`loom generate page` 会自动生成骨架,但需要你补充三个地方:
147
+
148
+ 1. **description**:写用户会说的话,如 `"记录错题", "查看错题", "分析错因"`
149
+ 2. **Overview**:2-3 句话描述平台做什么
150
+ 3. **Usage Scenarios**:5-10 个典型用户请求及对应的 `loom data` 命令
151
+
152
+ 补充后,AI 在终端和对话框里都能理解"帮我查数学错题"这类业务请求。
153
+
154
+ ## 数据操作
155
+
156
+ 不打开页面也能操作数据。你可以自己跑命令,也可以让 AI 跑:
157
+
158
+ ```bash
159
+ loom data read wrong_questions --filter '{"subject":"数学"}' --limit 10
160
+ loom data write wrong_questions --data '{"subject":"数学","questionContent":"3+5=?","wrongAnswer":"7","correctAnswer":"8"}'
161
+ loom data update wrong_questions --id rec_xxx --data '{"isMastered":true}'
162
+ loom data delete wrong_questions --id rec_xxx
163
+ loom data schema wrong_questions # 查看字段结构
164
+ ```
165
+
166
+ ## 后端扩展
167
+
168
+ 需要自定义 API 路由时,编辑 `backend/src/index.ts`:
169
+
170
+ ```typescript
171
+ import { LoomServer } from '@loom-framework/core';
172
+
173
+ const server = new LoomServer({
174
+ projectRoot,
175
+ hooks: {
176
+ afterInit({ app, adapter }) {
177
+ app.get('/api/v1/stats/trend', async (req, reply) => { ... });
178
+ },
179
+ },
180
+ });
181
+ await server.initialize();
182
+ await server.start();
183
+ ```
184
+
185
+ 不需要时就是原来的 3 行。
186
+
187
+ ## 常见问题
188
+
189
+ **loom 命令报错 "No loom.config.ts found"**
190
+ 在项目根目录下运行。
191
+
192
+ **better-sqlite3 加载失败**
193
+ `defaultAdapter` 改为 `'filesystem'`,或者 `cd node_modules/better-sqlite3 && npx node-gyp rebuild`。
194
+
195
+ **改了 loom.config.ts 页面没变**
196
+ 取决于改了什么:AI 按钮和 enum 值变更是自动生效的(重启后端即可);字段增删需要让 AI 更新页面或 `--force` 重建。详见上方「配置变更与迭代」。
197
+
198
+ **改了配置后 AI 按钮没出现**
199
+ 需要重启后端(`loom dev` 会自动重载,如果没生效就停掉重新 `loom dev`)。
200
+
201
+ **删除了配置中的字段,旧数据怎么办**
202
+ 数据文件中的旧字段值不会删除,只是页面不再展示。如果之后加回同名字段,旧数据会自动恢复显示。
203
+
204
+ **--force 会丢掉我的页面定制吗**
205
+ 会。`--force` 全量覆盖页面文件,但会自动将旧文件备份到 `.loom/backup/<时间戳>/` 目录。如果页面有定制且需要保留,用 AI 增量更新;如果页面没有定制,直接 `--force` 即可,是最快的方式。
206
+
207
+ **对话框里的 AI 能改代码吗**
208
+ 能。和终端 Claude Code 是同一个引擎,在哪边改都行。
209
+
210
+ **如何部署到生产环境**
211
+ `loom build` 构建前端和后端,然后 `node dist/backend/src/index.js` 启动后端。