self-evolve-framework 1.6.0 → 1.6.1

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 (301) hide show
  1. package/README.md +33 -23
  2. package/bin/cli.js +24 -67
  3. package/package.json +1 -1
  4. package/template/rules/knowledge/README.md +56 -0
  5. package/template/rules/knowledge/ant-design-vue.mdc +54 -0
  6. package/template/rules/knowledge/general.mdc +56 -0
  7. package/template/rules/knowledge/rust.mdc +55 -0
  8. package/template/rules/knowledge/shadcn-svelte.mdc +64 -0
  9. package/template/rules/knowledge/svelte.mdc +135 -0
  10. package/template/rules/knowledge/tailwind.mdc +66 -0
  11. package/template/rules/knowledge/tauri.mdc +65 -0
  12. package/template/rules/knowledge/typescript.mdc +41 -0
  13. package/template/rules/knowledge/vue.mdc +48 -0
  14. package/template/rules/ponytail.mdc +23 -98
  15. package/template/rules/self-evolve.mdc +24 -0
  16. package/template/skills/impeccable/SKILL.md +47 -174
  17. package/template/skills/skillopt-sleep/SKILL.md +32 -88
  18. package/template/skills/impeccable/agents/impeccable_asset_producer.toml +0 -92
  19. package/template/skills/impeccable/agents/impeccable_manual_edit_applier.toml +0 -95
  20. package/template/skills/impeccable/agents/openai.yaml +0 -4
  21. package/template/skills/impeccable/reference/adapt.md +0 -311
  22. package/template/skills/impeccable/reference/animate.md +0 -201
  23. package/template/skills/impeccable/reference/audit.md +0 -133
  24. package/template/skills/impeccable/reference/bolder.md +0 -113
  25. package/template/skills/impeccable/reference/brand.md +0 -108
  26. package/template/skills/impeccable/reference/clarify.md +0 -288
  27. package/template/skills/impeccable/reference/codex.md +0 -105
  28. package/template/skills/impeccable/reference/colorize.md +0 -257
  29. package/template/skills/impeccable/reference/craft.md +0 -123
  30. package/template/skills/impeccable/reference/critique.md +0 -790
  31. package/template/skills/impeccable/reference/delight.md +0 -302
  32. package/template/skills/impeccable/reference/distill.md +0 -111
  33. package/template/skills/impeccable/reference/document.md +0 -429
  34. package/template/skills/impeccable/reference/extract.md +0 -69
  35. package/template/skills/impeccable/reference/harden.md +0 -347
  36. package/template/skills/impeccable/reference/hooks.md +0 -90
  37. package/template/skills/impeccable/reference/init.md +0 -172
  38. package/template/skills/impeccable/reference/interaction-design.md +0 -189
  39. package/template/skills/impeccable/reference/layout.md +0 -161
  40. package/template/skills/impeccable/reference/live.md +0 -720
  41. package/template/skills/impeccable/reference/onboard.md +0 -234
  42. package/template/skills/impeccable/reference/optimize.md +0 -258
  43. package/template/skills/impeccable/reference/overdrive.md +0 -130
  44. package/template/skills/impeccable/reference/polish.md +0 -241
  45. package/template/skills/impeccable/reference/product.md +0 -60
  46. package/template/skills/impeccable/reference/quieter.md +0 -99
  47. package/template/skills/impeccable/reference/shape.md +0 -165
  48. package/template/skills/impeccable/reference/typeset.md +0 -279
  49. package/template/skills/impeccable/scripts/command-metadata.json +0 -94
  50. package/template/skills/impeccable/scripts/context-signals.mjs +0 -225
  51. package/template/skills/impeccable/scripts/context.mjs +0 -961
  52. package/template/skills/impeccable/scripts/critique-storage.mjs +0 -242
  53. package/template/skills/impeccable/scripts/detect-csp.mjs +0 -198
  54. package/template/skills/impeccable/scripts/detect.mjs +0 -21
  55. package/template/skills/impeccable/scripts/detector/browser/injected/index.mjs +0 -1937
  56. package/template/skills/impeccable/scripts/detector/cli/main.mjs +0 -290
  57. package/template/skills/impeccable/scripts/detector/design-system.mjs +0 -750
  58. package/template/skills/impeccable/scripts/detector/detect-antipatterns-browser.js +0 -5138
  59. package/template/skills/impeccable/scripts/detector/detect-antipatterns.mjs +0 -50
  60. package/template/skills/impeccable/scripts/detector/engines/browser/detect-url.mjs +0 -277
  61. package/template/skills/impeccable/scripts/detector/engines/regex/detect-text.mjs +0 -568
  62. package/template/skills/impeccable/scripts/detector/engines/static-html/css-cascade.mjs +0 -1015
  63. package/template/skills/impeccable/scripts/detector/engines/static-html/detect-html.mjs +0 -234
  64. package/template/skills/impeccable/scripts/detector/engines/visual/screenshot-contrast.mjs +0 -189
  65. package/template/skills/impeccable/scripts/detector/findings.mjs +0 -12
  66. package/template/skills/impeccable/scripts/detector/node/file-system.mjs +0 -198
  67. package/template/skills/impeccable/scripts/detector/profile/profiler.mjs +0 -166
  68. package/template/skills/impeccable/scripts/detector/registry/antipatterns.mjs +0 -448
  69. package/template/skills/impeccable/scripts/detector/rules/checks.mjs +0 -2671
  70. package/template/skills/impeccable/scripts/detector/shared/color.mjs +0 -124
  71. package/template/skills/impeccable/scripts/detector/shared/constants.mjs +0 -101
  72. package/template/skills/impeccable/scripts/detector/shared/inline-ignores.mjs +0 -148
  73. package/template/skills/impeccable/scripts/detector/shared/page.mjs +0 -7
  74. package/template/skills/impeccable/scripts/hook-admin.mjs +0 -661
  75. package/template/skills/impeccable/scripts/hook-before-edit.mjs +0 -476
  76. package/template/skills/impeccable/scripts/hook-lib.mjs +0 -1632
  77. package/template/skills/impeccable/scripts/hook.mjs +0 -61
  78. package/template/skills/impeccable/scripts/lib/design-parser.mjs +0 -842
  79. package/template/skills/impeccable/scripts/lib/impeccable-config.mjs +0 -638
  80. package/template/skills/impeccable/scripts/lib/impeccable-paths.mjs +0 -128
  81. package/template/skills/impeccable/scripts/lib/is-generated.mjs +0 -69
  82. package/template/skills/impeccable/scripts/lib/target-args.mjs +0 -42
  83. package/template/skills/impeccable/scripts/live/browser-script-parts.mjs +0 -49
  84. package/template/skills/impeccable/scripts/live/completion.mjs +0 -19
  85. package/template/skills/impeccable/scripts/live/event-validation.mjs +0 -137
  86. package/template/skills/impeccable/scripts/live/insert-ui.mjs +0 -458
  87. package/template/skills/impeccable/scripts/live/manual-apply.mjs +0 -939
  88. package/template/skills/impeccable/scripts/live/manual-edit-routes.mjs +0 -357
  89. package/template/skills/impeccable/scripts/live/manual-edits-buffer.mjs +0 -152
  90. package/template/skills/impeccable/scripts/live/session-store.mjs +0 -289
  91. package/template/skills/impeccable/scripts/live/svelte-component.mjs +0 -826
  92. package/template/skills/impeccable/scripts/live/sveltekit-adapter.mjs +0 -274
  93. package/template/skills/impeccable/scripts/live/ui-core.mjs +0 -180
  94. package/template/skills/impeccable/scripts/live/vocabulary.mjs +0 -36
  95. package/template/skills/impeccable/scripts/live-accept.mjs +0 -812
  96. package/template/skills/impeccable/scripts/live-browser-dom.js +0 -146
  97. package/template/skills/impeccable/scripts/live-browser-session.js +0 -123
  98. package/template/skills/impeccable/scripts/live-browser.js +0 -11173
  99. package/template/skills/impeccable/scripts/live-commit-manual-edits.mjs +0 -1241
  100. package/template/skills/impeccable/scripts/live-complete.mjs +0 -75
  101. package/template/skills/impeccable/scripts/live-copy-edit-agent.mjs +0 -683
  102. package/template/skills/impeccable/scripts/live-discard-manual-edits.mjs +0 -51
  103. package/template/skills/impeccable/scripts/live-inject.mjs +0 -583
  104. package/template/skills/impeccable/scripts/live-insert.mjs +0 -272
  105. package/template/skills/impeccable/scripts/live-manual-edit-evidence.mjs +0 -363
  106. package/template/skills/impeccable/scripts/live-poll.mjs +0 -384
  107. package/template/skills/impeccable/scripts/live-resume.mjs +0 -94
  108. package/template/skills/impeccable/scripts/live-server.mjs +0 -1135
  109. package/template/skills/impeccable/scripts/live-status.mjs +0 -61
  110. package/template/skills/impeccable/scripts/live-target.mjs +0 -30
  111. package/template/skills/impeccable/scripts/live-wrap.mjs +0 -894
  112. package/template/skills/impeccable/scripts/live.mjs +0 -297
  113. package/template/skills/impeccable/scripts/modern-screenshot.umd.js +0 -14
  114. package/template/skills/impeccable/scripts/palette.mjs +0 -633
  115. package/template/skills/impeccable/scripts/pin.mjs +0 -214
  116. package/template/skills/skillopt-sleep/configs/_base_/default.yaml +0 -103
  117. package/template/skills/skillopt-sleep/configs/alfworld/default.yaml +0 -29
  118. package/template/skills/skillopt-sleep/configs/docvqa/default.yaml +0 -28
  119. package/template/skills/skillopt-sleep/configs/features/soft_gate.yaml +0 -47
  120. package/template/skills/skillopt-sleep/configs/livemathematicianbench/default.yaml +0 -22
  121. package/template/skills/skillopt-sleep/configs/officeqa/default.yaml +0 -34
  122. package/template/skills/skillopt-sleep/configs/searchqa/default.yaml +0 -32
  123. package/template/skills/skillopt-sleep/configs/spreadsheetbench/default.yaml +0 -34
  124. package/template/skills/skillopt-sleep/scripts/framework/skillopt/__init__.py +0 -28
  125. package/template/skills/skillopt-sleep/scripts/framework/skillopt/config.py +0 -282
  126. package/template/skills/skillopt-sleep/scripts/framework/skillopt/datasets/__init__.py +0 -7
  127. package/template/skills/skillopt-sleep/scripts/framework/skillopt/datasets/base.py +0 -512
  128. package/template/skills/skillopt-sleep/scripts/framework/skillopt/engine/__init__.py +0 -9
  129. package/template/skills/skillopt-sleep/scripts/framework/skillopt/engine/trainer.py +0 -2379
  130. package/template/skills/skillopt-sleep/scripts/framework/skillopt/envs/__init__.py +0 -1
  131. package/template/skills/skillopt-sleep/scripts/framework/skillopt/envs/_template/README.md +0 -43
  132. package/template/skills/skillopt-sleep/scripts/framework/skillopt/envs/_template/config_template.yaml +0 -55
  133. package/template/skills/skillopt-sleep/scripts/framework/skillopt/envs/_template/env_template.py +0 -151
  134. package/template/skills/skillopt-sleep/scripts/framework/skillopt/envs/_template/loader_template.py +0 -87
  135. package/template/skills/skillopt-sleep/scripts/framework/skillopt/envs/alfworld/__init__.py +0 -5
  136. package/template/skills/skillopt-sleep/scripts/framework/skillopt/envs/alfworld/adapter.py +0 -428
  137. package/template/skills/skillopt-sleep/scripts/framework/skillopt/envs/alfworld/dataloader.py +0 -123
  138. package/template/skills/skillopt-sleep/scripts/framework/skillopt/envs/alfworld/prompts/analyst_error.md +0 -55
  139. package/template/skills/skillopt-sleep/scripts/framework/skillopt/envs/alfworld/prompts/analyst_success.md +0 -33
  140. package/template/skills/skillopt-sleep/scripts/framework/skillopt/envs/alfworld/prompts/rollout_no_history.md +0 -8
  141. package/template/skills/skillopt-sleep/scripts/framework/skillopt/envs/alfworld/prompts/rollout_with_history.md +0 -9
  142. package/template/skills/skillopt-sleep/scripts/framework/skillopt/envs/alfworld/prompts/rollout_with_memory.md +0 -16
  143. package/template/skills/skillopt-sleep/scripts/framework/skillopt/envs/alfworld/reflect.py +0 -4
  144. package/template/skills/skillopt-sleep/scripts/framework/skillopt/envs/alfworld/rollout.py +0 -366
  145. package/template/skills/skillopt-sleep/scripts/framework/skillopt/envs/alfworld/skills/initial.md +0 -45
  146. package/template/skills/skillopt-sleep/scripts/framework/skillopt/envs/alfworld/vendor/__init__.py +0 -9
  147. package/template/skills/skillopt-sleep/scripts/framework/skillopt/envs/alfworld/vendor/alfworld_envs.py +0 -221
  148. package/template/skills/skillopt-sleep/scripts/framework/skillopt/envs/alfworld/vendor/alfworld_projection.py +0 -60
  149. package/template/skills/skillopt-sleep/scripts/framework/skillopt/envs/alfworld/vendor/alfworld_prompts.py +0 -8
  150. package/template/skills/skillopt-sleep/scripts/framework/skillopt/envs/alfworld/vendor/config_tw.yaml +0 -145
  151. package/template/skills/skillopt-sleep/scripts/framework/skillopt/envs/alfworld/vendor/env_base.py +0 -84
  152. package/template/skills/skillopt-sleep/scripts/framework/skillopt/envs/alfworld/vendor/env_manager.py +0 -139
  153. package/template/skills/skillopt-sleep/scripts/framework/skillopt/envs/alfworld/vendor/memory.py +0 -87
  154. package/template/skills/skillopt-sleep/scripts/framework/skillopt/envs/base.py +0 -329
  155. package/template/skills/skillopt-sleep/scripts/framework/skillopt/envs/docvqa/__init__.py +0 -1
  156. package/template/skills/skillopt-sleep/scripts/framework/skillopt/envs/docvqa/adapter.py +0 -90
  157. package/template/skills/skillopt-sleep/scripts/framework/skillopt/envs/docvqa/dataloader.py +0 -61
  158. package/template/skills/skillopt-sleep/scripts/framework/skillopt/envs/docvqa/evaluator.py +0 -113
  159. package/template/skills/skillopt-sleep/scripts/framework/skillopt/envs/docvqa/prompts/analyst_error.md +0 -35
  160. package/template/skills/skillopt-sleep/scripts/framework/skillopt/envs/docvqa/prompts/analyst_success.md +0 -24
  161. package/template/skills/skillopt-sleep/scripts/framework/skillopt/envs/docvqa/prompts/rollout_system.md +0 -12
  162. package/template/skills/skillopt-sleep/scripts/framework/skillopt/envs/docvqa/rollout.py +0 -391
  163. package/template/skills/skillopt-sleep/scripts/framework/skillopt/envs/docvqa/skills/initial.md +0 -11
  164. package/template/skills/skillopt-sleep/scripts/framework/skillopt/envs/livemathematicianbench/__init__.py +0 -1
  165. package/template/skills/skillopt-sleep/scripts/framework/skillopt/envs/livemathematicianbench/adapter.py +0 -129
  166. package/template/skills/skillopt-sleep/scripts/framework/skillopt/envs/livemathematicianbench/dataloader.py +0 -308
  167. package/template/skills/skillopt-sleep/scripts/framework/skillopt/envs/livemathematicianbench/evaluator.py +0 -62
  168. package/template/skills/skillopt-sleep/scripts/framework/skillopt/envs/livemathematicianbench/prompts/analyst_error.md +0 -37
  169. package/template/skills/skillopt-sleep/scripts/framework/skillopt/envs/livemathematicianbench/prompts/analyst_success.md +0 -25
  170. package/template/skills/skillopt-sleep/scripts/framework/skillopt/envs/livemathematicianbench/prompts/rollout_system.md +0 -12
  171. package/template/skills/skillopt-sleep/scripts/framework/skillopt/envs/livemathematicianbench/reflect.py +0 -4
  172. package/template/skills/skillopt-sleep/scripts/framework/skillopt/envs/livemathematicianbench/rollout.py +0 -434
  173. package/template/skills/skillopt-sleep/scripts/framework/skillopt/envs/livemathematicianbench/skills/initial.md +0 -16
  174. package/template/skills/skillopt-sleep/scripts/framework/skillopt/envs/officeqa/__init__.py +0 -1
  175. package/template/skills/skillopt-sleep/scripts/framework/skillopt/envs/officeqa/adapter.py +0 -112
  176. package/template/skills/skillopt-sleep/scripts/framework/skillopt/envs/officeqa/dataloader.py +0 -71
  177. package/template/skills/skillopt-sleep/scripts/framework/skillopt/envs/officeqa/evaluator.py +0 -46
  178. package/template/skills/skillopt-sleep/scripts/framework/skillopt/envs/officeqa/prompts/analyst_error.md +0 -37
  179. package/template/skills/skillopt-sleep/scripts/framework/skillopt/envs/officeqa/prompts/analyst_success.md +0 -25
  180. package/template/skills/skillopt-sleep/scripts/framework/skillopt/envs/officeqa/prompts/rollout_system.md +0 -15
  181. package/template/skills/skillopt-sleep/scripts/framework/skillopt/envs/officeqa/rollout.py +0 -799
  182. package/template/skills/skillopt-sleep/scripts/framework/skillopt/envs/officeqa/skills/initial.md +0 -15
  183. package/template/skills/skillopt-sleep/scripts/framework/skillopt/envs/officeqa/tool_runtime.py +0 -552
  184. package/template/skills/skillopt-sleep/scripts/framework/skillopt/envs/searchqa/__init__.py +0 -1
  185. package/template/skills/skillopt-sleep/scripts/framework/skillopt/envs/searchqa/adapter.py +0 -96
  186. package/template/skills/skillopt-sleep/scripts/framework/skillopt/envs/searchqa/dataloader.py +0 -42
  187. package/template/skills/skillopt-sleep/scripts/framework/skillopt/envs/searchqa/evaluator.py +0 -100
  188. package/template/skills/skillopt-sleep/scripts/framework/skillopt/envs/searchqa/prompts/analyst_error.md +0 -46
  189. package/template/skills/skillopt-sleep/scripts/framework/skillopt/envs/searchqa/prompts/analyst_success.md +0 -32
  190. package/template/skills/skillopt-sleep/scripts/framework/skillopt/envs/searchqa/prompts/rollout_system.md +0 -13
  191. package/template/skills/skillopt-sleep/scripts/framework/skillopt/envs/searchqa/reflect.py +0 -4
  192. package/template/skills/skillopt-sleep/scripts/framework/skillopt/envs/searchqa/rollout.py +0 -494
  193. package/template/skills/skillopt-sleep/scripts/framework/skillopt/envs/searchqa/skills/initial.md +0 -3
  194. package/template/skills/skillopt-sleep/scripts/framework/skillopt/envs/spreadsheetbench/__init__.py +0 -5
  195. package/template/skills/skillopt-sleep/scripts/framework/skillopt/envs/spreadsheetbench/adapter.py +0 -159
  196. package/template/skills/skillopt-sleep/scripts/framework/skillopt/envs/spreadsheetbench/codegen_agent.py +0 -731
  197. package/template/skills/skillopt-sleep/scripts/framework/skillopt/envs/spreadsheetbench/dataloader.py +0 -37
  198. package/template/skills/skillopt-sleep/scripts/framework/skillopt/envs/spreadsheetbench/evaluator.py +0 -158
  199. package/template/skills/skillopt-sleep/scripts/framework/skillopt/envs/spreadsheetbench/executor.py +0 -67
  200. package/template/skills/skillopt-sleep/scripts/framework/skillopt/envs/spreadsheetbench/prompts/analyst_error.md +0 -46
  201. package/template/skills/skillopt-sleep/scripts/framework/skillopt/envs/spreadsheetbench/prompts/analyst_success.md +0 -32
  202. package/template/skills/skillopt-sleep/scripts/framework/skillopt/envs/spreadsheetbench/prompts/codegen_system.md +0 -1
  203. package/template/skills/skillopt-sleep/scripts/framework/skillopt/envs/spreadsheetbench/prompts/critical_rules.md +0 -9
  204. package/template/skills/skillopt-sleep/scripts/framework/skillopt/envs/spreadsheetbench/prompts/react_system.md +0 -21
  205. package/template/skills/skillopt-sleep/scripts/framework/skillopt/envs/spreadsheetbench/react_agent.py +0 -395
  206. package/template/skills/skillopt-sleep/scripts/framework/skillopt/envs/spreadsheetbench/reflect.py +0 -4
  207. package/template/skills/skillopt-sleep/scripts/framework/skillopt/envs/spreadsheetbench/rollout.py +0 -979
  208. package/template/skills/skillopt-sleep/scripts/framework/skillopt/envs/spreadsheetbench/skills/initial.md +0 -56
  209. package/template/skills/skillopt-sleep/scripts/framework/skillopt/evaluation/__init__.py +0 -13
  210. package/template/skills/skillopt-sleep/scripts/framework/skillopt/evaluation/gate.py +0 -148
  211. package/template/skills/skillopt-sleep/scripts/framework/skillopt/gradient/__init__.py +0 -15
  212. package/template/skills/skillopt-sleep/scripts/framework/skillopt/gradient/aggregate.py +0 -253
  213. package/template/skills/skillopt-sleep/scripts/framework/skillopt/gradient/reflect.py +0 -635
  214. package/template/skills/skillopt-sleep/scripts/framework/skillopt/model/__init__.py +0 -514
  215. package/template/skills/skillopt-sleep/scripts/framework/skillopt/model/azure_openai.py +0 -915
  216. package/template/skills/skillopt-sleep/scripts/framework/skillopt/model/backend_config.py +0 -185
  217. package/template/skills/skillopt-sleep/scripts/framework/skillopt/model/claude_backend.py +0 -371
  218. package/template/skills/skillopt-sleep/scripts/framework/skillopt/model/codex_backend.py +0 -666
  219. package/template/skills/skillopt-sleep/scripts/framework/skillopt/model/codex_harness.py +0 -1057
  220. package/template/skills/skillopt-sleep/scripts/framework/skillopt/model/common.py +0 -229
  221. package/template/skills/skillopt-sleep/scripts/framework/skillopt/model/minimax_backend.py +0 -277
  222. package/template/skills/skillopt-sleep/scripts/framework/skillopt/model/qwen_backend.py +0 -456
  223. package/template/skills/skillopt-sleep/scripts/framework/skillopt/model/router.py +0 -236
  224. package/template/skills/skillopt-sleep/scripts/framework/skillopt/optimizer/__init__.py +0 -15
  225. package/template/skills/skillopt-sleep/scripts/framework/skillopt/optimizer/appendix.py +0 -156
  226. package/template/skills/skillopt-sleep/scripts/framework/skillopt/optimizer/clip.py +0 -109
  227. package/template/skills/skillopt-sleep/scripts/framework/skillopt/optimizer/lr_autonomous.py +0 -108
  228. package/template/skills/skillopt-sleep/scripts/framework/skillopt/optimizer/meta_skill.py +0 -79
  229. package/template/skills/skillopt-sleep/scripts/framework/skillopt/optimizer/rewrite.py +0 -59
  230. package/template/skills/skillopt-sleep/scripts/framework/skillopt/optimizer/scheduler.py +0 -127
  231. package/template/skills/skillopt-sleep/scripts/framework/skillopt/optimizer/select.py +0 -4
  232. package/template/skills/skillopt-sleep/scripts/framework/skillopt/optimizer/skill.py +0 -201
  233. package/template/skills/skillopt-sleep/scripts/framework/skillopt/optimizer/skill_aware.py +0 -206
  234. package/template/skills/skillopt-sleep/scripts/framework/skillopt/optimizer/slow_update.py +0 -396
  235. package/template/skills/skillopt-sleep/scripts/framework/skillopt/optimizer/update_modes.py +0 -135
  236. package/template/skills/skillopt-sleep/scripts/framework/skillopt/prompts/__init__.py +0 -63
  237. package/template/skills/skillopt-sleep/scripts/framework/skillopt/prompts/analyst_error.md +0 -41
  238. package/template/skills/skillopt-sleep/scripts/framework/skillopt/prompts/analyst_error_full_rewrite.md +0 -32
  239. package/template/skills/skillopt-sleep/scripts/framework/skillopt/prompts/analyst_error_rewrite.md +0 -44
  240. package/template/skills/skillopt-sleep/scripts/framework/skillopt/prompts/analyst_success.md +0 -36
  241. package/template/skills/skillopt-sleep/scripts/framework/skillopt/prompts/analyst_success_full_rewrite.md +0 -30
  242. package/template/skills/skillopt-sleep/scripts/framework/skillopt/prompts/analyst_success_rewrite.md +0 -33
  243. package/template/skills/skillopt-sleep/scripts/framework/skillopt/prompts/lr_autonomous.md +0 -20
  244. package/template/skills/skillopt-sleep/scripts/framework/skillopt/prompts/merge_failure.md +0 -30
  245. package/template/skills/skillopt-sleep/scripts/framework/skillopt/prompts/merge_failure_full_rewrite.md +0 -28
  246. package/template/skills/skillopt-sleep/scripts/framework/skillopt/prompts/merge_failure_rewrite.md +0 -26
  247. package/template/skills/skillopt-sleep/scripts/framework/skillopt/prompts/merge_final.md +0 -33
  248. package/template/skills/skillopt-sleep/scripts/framework/skillopt/prompts/merge_final_full_rewrite.md +0 -28
  249. package/template/skills/skillopt-sleep/scripts/framework/skillopt/prompts/merge_final_rewrite.md +0 -25
  250. package/template/skills/skillopt-sleep/scripts/framework/skillopt/prompts/merge_success.md +0 -28
  251. package/template/skills/skillopt-sleep/scripts/framework/skillopt/prompts/merge_success_full_rewrite.md +0 -28
  252. package/template/skills/skillopt-sleep/scripts/framework/skillopt/prompts/merge_success_rewrite.md +0 -25
  253. package/template/skills/skillopt-sleep/scripts/framework/skillopt/prompts/meta_skill.md +0 -40
  254. package/template/skills/skillopt-sleep/scripts/framework/skillopt/prompts/ranking.md +0 -20
  255. package/template/skills/skillopt-sleep/scripts/framework/skillopt/prompts/ranking_rewrite.md +0 -15
  256. package/template/skills/skillopt-sleep/scripts/framework/skillopt/prompts/rewrite_skill.md +0 -25
  257. package/template/skills/skillopt-sleep/scripts/framework/skillopt/prompts/slow_update.md +0 -60
  258. package/template/skills/skillopt-sleep/scripts/framework/skillopt/scheduler/__init__.py +0 -8
  259. package/template/skills/skillopt-sleep/scripts/framework/skillopt/types.py +0 -306
  260. package/template/skills/skillopt-sleep/scripts/framework/skillopt/utils/__init__.py +0 -4
  261. package/template/skills/skillopt-sleep/scripts/framework/skillopt/utils/json_utils.py +0 -172
  262. package/template/skills/skillopt-sleep/scripts/framework/skillopt/utils/scoring.py +0 -28
  263. package/template/skills/skillopt-sleep/scripts/python/__init__.py +0 -20
  264. package/template/skills/skillopt-sleep/scripts/python/__main__.py +0 -343
  265. package/template/skills/skillopt-sleep/scripts/python/backend.py +0 -1371
  266. package/template/skills/skillopt-sleep/scripts/python/budget.py +0 -75
  267. package/template/skills/skillopt-sleep/scripts/python/config.py +0 -162
  268. package/template/skills/skillopt-sleep/scripts/python/consolidate.py +0 -238
  269. package/template/skills/skillopt-sleep/scripts/python/cycle.py +0 -291
  270. package/template/skills/skillopt-sleep/scripts/python/dream.py +0 -138
  271. package/template/skills/skillopt-sleep/scripts/python/experiments/__init__.py +0 -1
  272. package/template/skills/skillopt-sleep/scripts/python/experiments/gbrain_bench.py +0 -119
  273. package/template/skills/skillopt-sleep/scripts/python/experiments/personas.py +0 -86
  274. package/template/skills/skillopt-sleep/scripts/python/experiments/report.py +0 -132
  275. package/template/skills/skillopt-sleep/scripts/python/experiments/run_experiment.py +0 -178
  276. package/template/skills/skillopt-sleep/scripts/python/experiments/run_gbrain.py +0 -209
  277. package/template/skills/skillopt-sleep/scripts/python/experiments/run_transfer.py +0 -155
  278. package/template/skills/skillopt-sleep/scripts/python/experiments/sweep.py +0 -164
  279. package/template/skills/skillopt-sleep/scripts/python/gate.py +0 -50
  280. package/template/skills/skillopt-sleep/scripts/python/harvest.py +0 -304
  281. package/template/skills/skillopt-sleep/scripts/python/harvest_codex.py +0 -253
  282. package/template/skills/skillopt-sleep/scripts/python/harvest_sources.py +0 -41
  283. package/template/skills/skillopt-sleep/scripts/python/judges.py +0 -84
  284. package/template/skills/skillopt-sleep/scripts/python/llm_miner.py +0 -134
  285. package/template/skills/skillopt-sleep/scripts/python/memory.py +0 -129
  286. package/template/skills/skillopt-sleep/scripts/python/mine.py +0 -312
  287. package/template/skills/skillopt-sleep/scripts/python/replay.py +0 -146
  288. package/template/skills/skillopt-sleep/scripts/python/rollout.py +0 -153
  289. package/template/skills/skillopt-sleep/scripts/python/scheduler.py +0 -138
  290. package/template/skills/skillopt-sleep/scripts/python/slow_update.py +0 -142
  291. package/template/skills/skillopt-sleep/scripts/python/staging.py +0 -103
  292. package/template/skills/skillopt-sleep/scripts/python/state.py +0 -96
  293. package/template/skills/skillopt-sleep/scripts/python/tasks_file.py +0 -81
  294. package/template/skills/skillopt-sleep/scripts/python/types.py +0 -146
  295. package/template/skills/skillopt-sleep/scripts/shell/__init__.py +0 -0
  296. package/template/skills/skillopt-sleep/scripts/shell/eval_only.py +0 -466
  297. package/template/skills/skillopt-sleep/scripts/shell/materialize_searchqa.py +0 -148
  298. package/template/skills/skillopt-sleep/scripts/shell/run_alfworld.sh +0 -60
  299. package/template/skills/skillopt-sleep/scripts/shell/run_searchqa.sh +0 -40
  300. package/template/skills/skillopt-sleep/scripts/shell/run_spreadsheetbench.sh +0 -39
  301. package/template/skills/skillopt-sleep/scripts/shell/train.py +0 -556
package/README.md CHANGED
@@ -42,17 +42,23 @@ npx self-evolve-framework init --skip-impeccable
42
42
  ```
43
43
  .codebuddy/
44
44
  ├── rules/
45
- │ ├── self-evolve.mdc ← 进化编排(always 激活)
46
- └── ponytail.mdc ← 代码最小化原则
45
+ │ ├── self-evolve.mdc ← 编排层(always 激活)
46
+ ├── ponytail.mdc ← 代码最小化原则
47
+ │ └── knowledge/ ← 经验知识库(按语言/框架分目录)
48
+ │ ├── general.mdc ← 跨语言通用约束(always)
49
+ │ ├── typescript.mdc ← TS/JS 前端语言层(按需)
50
+ │ ├── vue.mdc ← Vue 框架层(按需)
51
+ │ ├── ant-design-vue.mdc← ant-design-vue 组件库层(按需)
52
+ │ ├── svelte.mdc ← Svelte 5 框架层(按需)
53
+ │ ├── tailwind.mdc ← Tailwind CSS v4 框架层(按需)
54
+ │ ├── shadcn-svelte.mdc← shadcn-svelte 组件库层(按需)
55
+ │ ├── rust.mdc ← Rust 后端层(按需)
56
+ │ └── tauri.mdc ← Tauri 框架层(按需)
47
57
  ├── skills/
48
- │ ├── skillopt-sleep/ ← 离线进化分析
49
- ├── impeccable/ 设计质量审计(含脚本和参考文档)
50
- ├── ponytail/ ← 代码最小化主 skill
51
- ├── ponytail-audit/ 代码审计
52
- │ ├── ponytail-debt/ ← 技术债分析
53
- │ ├── ponytail-gain/ ← 收益分析
54
- │ ├── ponytail-help/ ← 帮助文档
55
- │ └── ponytail-review/ ← 代码审查
58
+ │ ├── skillopt-sleep/
59
+ │ └── SKILL.md 离线进化分析
60
+ └── impeccable/
61
+ └── SKILL.md 设计质量审计
56
62
  CLAUDE.md ← 追加自我进化章节
57
63
  ```
58
64
 
@@ -80,9 +86,6 @@ skillopt-sleep adopt → 采纳建议
80
86
  impeccable audit → 设计质量技术审计
81
87
  impeccable critique → 设计评审
82
88
  impeccable polish → 页面润色
83
- ponytail → 代码最小化懒人模式
84
- ponytail audit → 代码审计
85
- ponytail review → 代码审查
86
89
  ```
87
90
 
88
91
  ### 设计上下文
@@ -103,16 +106,23 @@ self-evolve-framework/
103
106
  ├── bin/cli.js # CLI 安装工具
104
107
  ├── template/
105
108
  │ ├── rules/
106
- │ │ ├── self-evolve.mdc ← 进化编排
107
- │ │ └── ponytail.mdc ← 代码最小化原则
109
+ │ │ ├── self-evolve.mdc ← 编排层(含 Impeccable 集成 + 知识库调度)
110
+ │ │ ├── ponytail.mdc ← 代码最小化原则
111
+ │ │ └── knowledge/ ← 经验知识库(按语言/框架分目录,源自 Tauri 等项目沉淀)
112
+ │ │ ├── README.md ← 索引 + 归属约定 + 编号体系
113
+ │ │ ├── general.mdc ← 跨语言通用约束(always)
114
+ │ │ ├── typescript.mdc ← TS/JS 前端语言层(按需)
115
+ │ │ ├── vue.mdc ← Vue 框架层(按需)
116
+ │ │ ├── ant-design-vue.mdc← ant-design-vue 组件库层(按需)
117
+ │ │ ├── svelte.mdc ← Svelte 5 框架层(按需)
118
+ │ │ ├── tailwind.mdc ← Tailwind CSS v4 框架层(按需)
119
+ │ │ ├── shadcn-svelte.mdc← shadcn-svelte 组件库层(按需)
120
+ │ │ ├── rust.mdc ← Rust 后端层(按需)
121
+ │ │ └── tauri.mdc ← Tauri 框架层(按需)
108
122
  │ └── skills/
109
- │ ├── skillopt-sleep/ ← 离线进化引擎
110
- ├── impeccable/ 设计质量审计(含脚本)
111
- ├── ponytail/ ← 代码最小化主 skill
112
- ├── ponytail-audit/ 代码审计
113
- │ ├── ponytail-debt/ ← 技术债分析
114
- │ ├── ponytail-gain/ ← 收益分析
115
- │ ├── ponytail-help/ ← 帮助
116
- │ └── ponytail-review/ ← 代码审查
123
+ │ ├── skillopt-sleep/
124
+ │ └── SKILL.md 离线进化引擎(含设计质量分析)
125
+ └── impeccable/
126
+ └── SKILL.md 设计质量审计 skill
117
127
  └── README.md
118
128
  ```
package/bin/cli.js CHANGED
@@ -1,6 +1,6 @@
1
1
  #!/usr/bin/env node
2
2
 
3
- import { readFileSync, writeFileSync, existsSync, mkdirSync, cpSync, readdirSync, statSync } from "fs"
3
+ import { readFileSync, writeFileSync, existsSync, mkdirSync, cpSync } from "fs"
4
4
  import { join, resolve } from "path"
5
5
  import { fileURLToPath } from "url"
6
6
 
@@ -9,17 +9,13 @@ const TEMPLATE_DIR = resolve(__dirname, "../template")
9
9
 
10
10
  const COMMANDS = {
11
11
  init: {
12
- desc: "一键安装全部 CodeBuddy skill + 规则到当前项目",
12
+ desc: "安装自我进化飞轮到当前项目",
13
13
  run: async (args) => init(args),
14
14
  },
15
15
  sync: {
16
- desc: "从框架项目同步最新的 skill + 规则到当前项目",
16
+ desc: "从源项目同步配置到当前项目",
17
17
  run: async (args) => sync(args),
18
18
  },
19
- list: {
20
- desc: "列出模板中包含的所有 skill 和规则",
21
- run: () => listSkills(),
22
- },
23
19
  help: {
24
20
  desc: "显示帮助信息",
25
21
  run: () => showHelp(),
@@ -31,49 +27,22 @@ function showHelp() {
31
27
  self-evolve — CodeBuddy 自我进化飞轮安装工具
32
28
 
33
29
  用法:
34
- npx self-evolve-framework init 一键安装全部 skill + 规则
35
- npx self-evolve-framework list 列出模板中包含的所有 skill
36
- npx self-evolve-framework sync 从框架同步最新版本
30
+ npx self-evolve-framework init 安装到当前项目
31
+ npx self-evolve-framework sync 从源项目同步
37
32
 
38
33
  选项:
39
34
  --project <path> 指定目标项目路径(默认当前目录)
40
35
  --skip-claude-md 跳过更新 CLAUDE.md
41
- --skip-impeccable 跳过 Impeccable 设计质量 skill
36
+ --skip-impeccable 跳过复制 Impeccable skill
42
37
  --dry-run 预览要复制的文件,不实际写入
43
38
 
44
39
  示例:
45
40
  npx self-evolve-framework init
46
41
  npx self-evolve-framework init --project ./my-app
47
- npx self-evolve-framework init --skip-claude-md --dry-run
42
+ npx self-evolve-framework init --skip-claude-md --skip-impeccable --dry-run
48
43
  `)
49
44
  }
50
45
 
51
- function listSkills() {
52
- const rulesDir = resolve(TEMPLATE_DIR, "rules")
53
- const skillsDir = resolve(TEMPLATE_DIR, "skills")
54
- console.log("\n📦 模板中包含的规则:")
55
- if (existsSync(rulesDir)) {
56
- for (const f of readdirSync(rulesDir).filter(f => f.endsWith(".mdc")).sort()) {
57
- console.log(` rules/${f}`)
58
- }
59
- }
60
- console.log("\n🧠 模板中包含的技能:")
61
- if (existsSync(skillsDir)) {
62
- for (const d of readdirSync(skillsDir).filter(f => statSync(join(skillsDir, f)).isDirectory()).sort()) {
63
- const skillMd = join(skillsDir, d, "SKILL.md")
64
- let desc = ""
65
- if (existsSync(skillMd)) {
66
- const firstLine = readFileSync(skillMd, "utf-8").split("\n").find(l => l.startsWith("description:"))
67
- if (firstLine) desc = firstLine.replace("description: ", "").trim()
68
- }
69
- console.log(` ${d}/ ${desc ? "— " + desc : ""}`)
70
- }
71
- }
72
- if (!existsSync(rulesDir) && !existsSync(skillsDir)) {
73
- console.log(" (模板目录为空)")
74
- }
75
- }
76
-
77
46
  async function init(args) {
78
47
  const baseDir = resolve(args["--project"] || process.cwd())
79
48
  const dryRun = !!args["--dry-run"]
@@ -83,35 +52,25 @@ async function init(args) {
83
52
  console.log(`📍 项目路径: ${baseDir}`)
84
53
  console.log(`🧪 ${dryRun ? "DRY RUN — 不写入文件" : "执行中..."}\n`)
85
54
 
86
- let count = 0
55
+ // 要复制的目录映射:{ 源相对路径 → 目标相对路径 }
56
+ const dirs = [
57
+ { src: "rules", dest: ".codebuddy/rules" },
58
+ { src: "skills/skillopt-sleep", dest: ".codebuddy/skills/skillopt-sleep" },
59
+ ]
87
60
 
88
- // 复制 rules(排除 .mdc 文件可以在以后细化)
89
- const rulesSrc = resolve(TEMPLATE_DIR, "rules")
90
- if (existsSync(rulesSrc)) {
91
- if (!dryRun) {
92
- mkdirSync(resolve(baseDir, ".codebuddy/rules"), { recursive: true })
93
- cpSync(rulesSrc, resolve(baseDir, ".codebuddy/rules"), { recursive: true, force: true })
94
- }
95
- const ruleFiles = readdirSync(rulesSrc).filter(f => f.endsWith(".mdc"))
96
- console.log(` ${dryRun ? "🔍 将复制" : "✅ 复制"} rules/ → .codebuddy/rules/(${ruleFiles.length} 个规则)`)
97
- count++
61
+ // 默认复制 impeccable skill(除非 --skip-impeccable)
62
+ if (!skipImpeccable) {
63
+ dirs.push({ src: "skills/impeccable", dest: ".codebuddy/skills/impeccable" })
98
64
  }
99
65
 
100
- // 复制 skills(排除 impeccable 如果 --skip-impeccable)
101
- const skillsSrc = resolve(TEMPLATE_DIR, "skills")
102
- if (existsSync(skillsSrc)) {
103
- const skillDirs = readdirSync(skillsSrc).filter(f =>
104
- statSync(join(skillsSrc, f)).isDirectory() &&
105
- !(skipImpeccable && f === "impeccable")
106
- )
107
- const skillsDest = resolve(baseDir, ".codebuddy/skills")
108
- if (!dryRun) {
109
- mkdirSync(skillsDest, { recursive: true })
110
- for (const dir of skillDirs) {
111
- cpSync(join(skillsSrc, dir), join(skillsDest, dir), { recursive: true, force: true })
112
- }
113
- }
114
- console.log(` ${dryRun ? "🔍 将复制" : "✅ 复制"} skills/ → .codebuddy/skills/(${skillDirs.length} 个技能)`)
66
+ let count = 0
67
+ for (const { src, dest } of dirs) {
68
+ const srcDir = resolve(TEMPLATE_DIR, src)
69
+ const destDir = resolve(baseDir, dest)
70
+ if (!existsSync(srcDir)) continue
71
+ if (!dryRun) mkdirSync(destDir, { recursive: true })
72
+ console.log(`${dryRun ? " 🔍 将复制" : " ✅ 复制"} ${src}/ → ${dest}/`)
73
+ if (!dryRun) cpSync(srcDir, destDir, { recursive: true, force: true })
115
74
  count++
116
75
  }
117
76
 
@@ -146,13 +105,11 @@ async function init(args) {
146
105
  }
147
106
 
148
107
  console.log(`\n${dryRun ? `🔍 预览完成,共 ${count} 项操作` : `✅ 已完成 ${count} 项操作 — 下次对话即可生效`}`)
149
- if (!dryRun && count > 0) {
108
+ if (!dryRun) {
150
109
  console.log("\n📖 使用指南(在 CodeBuddy 对话中输入):")
151
110
  console.log(" skillopt-sleep dry-run → 每日健康检查")
152
111
  console.log(" skillopt-sleep run → 周改进提案")
153
112
  console.log(" impeccable audit/critique → 设计质量审查")
154
- console.log(" ponytail → 代码最小化(懒人模式)")
155
- console.log(" npx self-evolve-framework list → 查看所有可用 skill")
156
113
  }
157
114
  }
158
115
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "self-evolve-framework",
3
- "version": "1.6.0",
3
+ "version": "1.6.1",
4
4
  "description": "CodeBuddy 自我进化飞轮 — 仅适用于 CodeBuddy IDE。Post-Edit 验证闭环 + 规则自动推荐 + 离线进化分析",
5
5
  "type": "module",
6
6
  "bin": {
@@ -0,0 +1,56 @@
1
+ # 知识库(Knowledge Base)
2
+
3
+ > 经验知识库按**语言 / 框架 / 组件库**分目录组织,源自长期项目(Tauri 2 + Vue 3 + ant-design-vue + Svelte 5 + shadcn-svelte + Rust 桌面应用等)的踩坑沉淀。
4
+ > 由 `self-evolve.mdc` 编排层统一调度,是「post-edit 验证 → 错误记忆 → 规则推荐」飞轮的经验支撑层。
5
+
6
+ ## 目录结构
7
+
8
+ ```
9
+ knowledge/
10
+ ├── README.md ← 本文件:索引 + 维护约定
11
+ ├── general.mdc ← 跨语言通用约束(always 激活)
12
+ ├── typescript.mdc ← TS/JS 前端语言层(按需加载)
13
+ ├── vue.mdc ← Vue 框架层(按需加载)
14
+ ├── ant-design-vue.mdc ← ant-design-vue 组件库层(按需加载)
15
+ ├── svelte.mdc ← Svelte 5 框架层(按需加载)
16
+ ├── tailwind.mdc ← Tailwind CSS v4 框架层(按需加载)
17
+ ├── shadcn-svelte.mdc ← shadcn-svelte 组件库层(按需加载)
18
+ ├── rust.mdc ← Rust 后端层(按需加载)
19
+ └── tauri.mdc ← Tauri 框架层(按需加载)
20
+ ```
21
+
22
+ ## 加载策略
23
+
24
+ | 文件 | 激活方式 | 原因 |
25
+ |------|----------|------|
26
+ | `general.mdc` | `alwaysApply: true` | 跨项目通用,任何代码改动都适用 |
27
+ | 语言/框架专项 | `alwaysApply: false` | 仅在涉及对应语言/框架代码时由 description 语义检索加载,避免一次性注入全部 context 导致膨胀 |
28
+
29
+ ## 编号体系
30
+
31
+ 全库统一编号,跨文件引用不冲突:
32
+
33
+ - **F1–F13**:强制规则(违反即返工)
34
+ - **P1–P15**:多发问题处理模式(同类 bug 反复出现,按模式处理)
35
+
36
+ 新增规则时延续当前最大编号;若某类问题膨胀(如 Rust 专项超过 ~8 条),可在对应专项文件内用 `F-rust-1` / `P-rust-1` 子编号,保持主线编号稳定。
37
+
38
+ ## 归属判断(新增知识放哪)
39
+
40
+ 1. 跨语言/跨框架通用(命名总原则、错误友好、文档漂移、DB 通用坑)→ `general.mdc`
41
+ 2. 仅 TS/JS 语言层(strict、类型命名、import 安装)→ `typescript.mdc`
42
+ 3. 仅 Vue 框架(v-model、响应式、弹窗、组件命名)→ `vue.mdc`
43
+ 4. 仅 Svelte 5 框架(runes、Props、插槽、节点参数同步、画布交互)→ `svelte.mdc`
44
+ 5. 仅 Tailwind CSS(v4 语法、魔法值、尺寸 Token、@layer)→ `tailwind.mdc`
45
+ 6. 仅 shadcn-svelte(组件引入、API、尺寸/Portal/下拉防误触、重复弹窗抽壳)→ `shadcn-svelte.mdc`
46
+ 7. 仅 Rust 语言层(ownership、DB 读取、XLSX、命令注册、AppError)→ `rust.mdc`
47
+ 8. 仅 Tauri 框架(IPC 通信、WebView2 特性、配置、Dialog API、AppError 前端侧)→ `tauri.mdc`
48
+ 9. 仅 ant-design-vue(组件引入、ConfigProvider token、优先用组件替代原生、a-table 分页、骨架屏、CSS-in-JS 特异性)→ `ant-design-vue.mdc`
49
+
50
+ > 一条知识涉及多层时,放在"最通用且最不易过期"的那一层,其余层用一句话引用。
51
+
52
+ ## 与进化飞轮的衔接
53
+
54
+ - 命中任意强制规则 / 多发模式 → 把「命中 + 处理方式」写入记忆(`update_memory`)。
55
+ - 同类问题(P 系列任一类)累计 **≥2 次** 仍无专门规则 → 在 `.codebuddy/rules/` 下新建 `{pattern}.mdc` 固化,并回流到本知识库保持单一真源。
56
+ - 调整任何强制规则 → 同步回流本知识库,避免规则散落多处导致漂移。
@@ -0,0 +1,54 @@
1
+ ---
2
+ description: ant-design-vue 组件库层编码规则与多发问题(全局引入、ConfigProvider token、优先用组件替代原生、a-table 分页、骨架屏、CSS-in-JS 特异性)
3
+ alwaysApply: false
4
+ ---
5
+
6
+ # ant-design-vue 知识库
7
+
8
+ > 仅涉及 ant-design-vue(Vue 3 UI 组件库)的约束与多发问题。框架层见 `vue.mdc`,样式 token 见 `general.mdc` F6。
9
+
10
+ ## 一、引入与机制
11
+
12
+ - 安装:Vue 3 用 `ant-design-vue@^4`(v4 基于 `@ant-design/cssinjs`)。
13
+ - 全量注册:在 `main.js` 用 `app.use(Antd)` 注册全部组件,并 `import 'ant-design-vue/dist/reset.css'`(v4 用 reset.css,非旧版 antd.css)。
14
+ - 按需引入:若改用按需,需配置 `unplugin-vue-components` + `unplugin-auto-import` 的 `AntDesignVueResolver`;未配置好前不要零散 `import` 单组件(易漏样式或 tree-shaking 不全)。
15
+ - 图标:`@ant-design/icons-vue` 单独安装,按需引入具体图标组件。
16
+
17
+ ## 二、强制规则
18
+
19
+ ### F-antd-1. 主题尺寸走 ConfigProvider token 统一控制
20
+ 在根组件用 `<a-config-provider :theme="{ token: { ... } }">` 统一 `fontSize` / `controlHeight` / `borderRadius` / `colorPrimary` 等。
21
+ 禁止各页面单独设控件高度/字号(避免尺寸与主题不统一)。主题切换时同步更新 token,而非改组件 `style`。
22
+
23
+ ### F-antd-2. 优先用 antd 组件替代原生 HTML
24
+ 按钮用 `<a-button>`、输入框用 `<a-input>`、卡片用 `<a-card>`、表单用 `<a-form>`/`<a-form-item>`、布局用 `<a-row>`/`<a-col>`/`<a-space>`、日期选择用 `<a-date-picker>`。
25
+ 禁止大段手写重复的按钮/卡片/输入框 CSS,禁止原生 `<button>/<input>/<div>` 自行布局(否则主题切换时视觉不一致)。
26
+ 重构原生页面时:原生按钮→`a-button`(含 loading/disabled)、原生输入框→`a-input`、容器→`a-card`、进度→`a-progress`、状态提示→`a-alert`/`a-tag`;替换后删除不再需要的自定义 CSS。
27
+
28
+ ### F-antd-3. 分页用 a-table :pagination 配置对象
29
+ 表格分页通过 `<a-table :pagination="paginationConfig">` 配置(pageSize / showSizeChanger / showQuickJumper / showTotal 等),事件走 `<a-table @change>` 统一管理。
30
+ 禁止自定义 `<a-pagination>` 组件单独渲染(a-table 内部已渲染 Pagination)。分页参数抽到共享配置对象复用,避免每页重复。
31
+
32
+ ### F-antd-4. 加载状态用 antd 原语,骨架屏结构对齐
33
+ 骨架屏用 `<a-skeleton>` 独立占位;**禁止**用 `<a-spin>` 包裹整个卡片/列表。
34
+ 骨架屏的容器结构、内部嵌套、高度必须与真实卡片完全一致,避免加载完成瞬间布局跳跃、颜色跳变。过渡动画同时包裹 loading 与实际内容分支。
35
+
36
+ ## 三、多发问题处理模式
37
+
38
+ ### P-antd-1. 全局 CSS 重置 / !important 会破坏 antd 样式(CSS-in-JS 特异性)
39
+ antd v4 用 `@ant-design/cssinjs`(CSS-in-JS),组件样式以 `<style>` 注入,选择器权重约 **0,1,0(一个类)**。
40
+ - 全局 `* { margin: 0; padding: 0 }`(权重 0,0,0)**不会**覆盖组件默认样式,无需为"覆盖 antd"而额外处理。
41
+ - 但全局 `.xxx { ... !important }` 会覆盖组件样式,是分页/按钮 hover 错位的高频根因。
42
+ 需微调 antd 内部样式时,用组件 scoped 样式 `:deep(.ant-xxx)` 精确反覆盖(选择器权重高于组件样式),**禁止**用全局 `!important` 强改。
43
+
44
+ ### P-antd-2. 不为单一交互引入额外 antd 组件依赖
45
+ 评估每个组件的必要性;仅为某处小交互就引入整套/大组件会造成体积膨胀。能用现有组件组合(`a-space` / `a-button`)实现的,不新增依赖。
46
+
47
+ ### P-antd-3. 先确认是否全局 CSS 干扰,再精准修复
48
+ a-table 分页 hover/垂直居中异常时,先经源码确认组件默认样式优先级,确认是全局 CSS 干扰后再用 `:deep()` 精准反覆盖;不要修复"不存在的 bug"(优先级不足以覆盖时无需加冗余覆盖)。
49
+
50
+ ### P-antd-4. 主题 token 与项目 CSS 变量体系对齐
51
+ 若项目另有一套 `:root` CSS 变量主题体系,确保 ConfigProvider token(colorPrimary 等)与各主题主色同步,使 antd 组件与自定义元素切换主题时一致。
52
+
53
+ ## 四、与进化飞轮衔接
54
+ 命中上述规则/模式 → 写入记忆;同类 ≥2 次 → 固化规则并回流知识库。
@@ -0,0 +1,56 @@
1
+ ---
2
+ description: 跨语言通用编码约束与多发问题(命名总原则、友好错误、受保护组件、CSS token、筛选/SQLite/文档漂移等),任何项目都适用
3
+ alwaysApply: true
4
+ ---
5
+
6
+ # 通用约束知识库(General)
7
+
8
+ > 跨语言 / 跨框架的通用约束与多发问题。语言/框架专项见 `knowledge/` 下的 `typescript` / `vue` / `rust` / `tauri`。
9
+
10
+ ## 一、命名总原则(跨语言桥接)
11
+
12
+ | 层 | 约定 |
13
+ |----|------|
14
+ | 前端 HTML 标签 / 类名 / ID | 小写连字符 `kebab-case`(BEM) |
15
+ | CSS / SCSS / Less 变量 | 小写连字符 `kebab-case` |
16
+ | TS/JS 变量·函数·方法 | 小驼峰 `camelCase` |
17
+ | TS/JS 类·组件·接口(I 前缀) | 大驼峰 `PascalCase` |
18
+ | TS 常量 | 全大写下划线 `UPPER_SNAKE_CASE` |
19
+ | 前端文件夹 / 图片 / 资源 | 小写连字符 `kebab-case` |
20
+ | Rust 函数·变量·方法 | 蛇形 `snake_case` |
21
+ | Rust 类型·Trait | 大驼峰 `PascalCase` |
22
+ | Rust 常量·静态 | 大蛇形 `UPPER_SNAKE_CASE` |
23
+ | Rust 文件 / 文件夹 | 小写蛇形 `snake_case` |
24
+
25
+ **TS ↔ Rust IPC 命名桥接**:前端 invoke command 名与参数 key 用短横线 `get-user-list`;后端 `#[tauri::command("get-user-list")]` 接收函数用蛇形 `get_user_list`。(详见 `tauri.mdc`)
26
+
27
+ ## 二、强制规则(F 系列)
28
+
29
+ ### F1. 修改前最小性检查(Ponytail 门)
30
+ 改动能否用更少代码实现?是否 >3 文件(能缩小吗)?是否新增依赖(有更轻量吗)?是否仅为"可读性"大段改写(放弃)?→ 详见 `ponytail.mdc`。
31
+
32
+ ### F3. 错误消息必须友好中文
33
+ 用户可见错误用友好中文,**禁止**直接拼接原始异常对象。原始异常走 `console.error` 保留线索,不静默忽略。弹窗说明「原因 + 建议操作」,不暴露系统细节。
34
+
35
+ ### F5. 受保护组件 / 配置文件禁改
36
+ 标记为「禁止修改」的组件与配置文件,**未经用户明确同意不得改动**。改前先确认是否落入保护范围。
37
+
38
+ ### F6. 样式统一走 token
39
+ 颜色 / 圆角 / 间距 / 字体等一律用 `:root` CSS 变量(`var(--xxx)`),**禁止**硬编码 hex。设计变更只改 `:root`,各页面自动继承。新增 token 加到 `:root`,禁止在 scoped 新增 token。
40
+
41
+ ## 三、多发问题处理模式(P 系列)
42
+
43
+ ### P1. 同一字段多筛选条件用 AND → 必然零行
44
+ 同一字段设两个"等于"条件且用 AND 连接 → 逻辑上不可能同时成立,必然返回零行。遇此配置主动提醒用户是否应改为 OR(同字段多值取并集)。
45
+
46
+ ### P2. SQLite 中文列名必须用双引号包裹
47
+ 跨模块查中文字段(如 `线名`/`车站名`/`道岔编号`)的 SQL,列名用双引号包裹:`SELECT "线名", "车站名" FROM dao_cha`。否则 SQLite 把中文当标识符报语法错误。
48
+
49
+ ### P3. SQLite 不支持 TRUNCATE
50
+ 执行 `TRUNCATE TABLE` 报语法错误。改用 `DROP TABLE IF EXISTS` + `CREATE TABLE`(自动重置自增 ID、修复 schema,比 `DELETE FROM` 彻底)。
51
+
52
+ ### P15. 文档 / 代码漂移
53
+ 文档声称某功能/composable 已完成,实际代码库零引用(如声称抽出的 `useAuth/usePolling` 实际未建)。写/改文档时核对代码实际引用;声称"已完成"前用搜索确认有真实调用方,避免自我指涉的虚假进度。
54
+
55
+ ## 四、与进化飞轮衔接
56
+ 命中上述任意规则/模式 → 写入记忆;同类问题 ≥2 次仍无专门规则 → 固化到 `.codebuddy/rules/` 并回流本知识库。
@@ -0,0 +1,55 @@
1
+ ---
2
+ description: Rust 后端编码规则与多发问题(命名、数据库类型容错、XLSX 工厂、MutexGuard、invoke_handler 单宏、全局状态、连接诊断)
3
+ alwaysApply: false
4
+ ---
5
+
6
+ # Rust 知识库
7
+
8
+ > 仅涉及 Rust 语言/后端的约束与多发问题。框架层(IPC/WebView2/配置)见 `tauri.mdc`,通用见 `general.mdc`。
9
+
10
+ ## 一、命名约定
11
+
12
+ - 函数 / 变量 / 方法:蛇形 `snake_case`
13
+ - 结构体 / 枚举 / Trait / 类型:大驼峰 `PascalCase`
14
+ - 常量 / 静态变量:大蛇形 `UPPER_SNAKE_CASE`
15
+ - 文件 / 文件夹:小写蛇形 `snake_case`
16
+
17
+ ## 二、强制规则
18
+
19
+ ### F-rust-2. 所有 `#[command]` 返回 `Result<T, AppError>`
20
+ Tauri 命令统一返回 `Result<T, AppError>`(6 变体:`FileNotFound`/`Io`/`Parse`/`Validation`/`Execution`/`Generic`),用 `#[serde(tag = "type", content = "message")]` 序列化,前端按 `type` 字段差异化处理(前端侧见 `tauri.mdc`)。`validation` 类错误 re-throw 给调用方高亮字段,其余弹 toast。
21
+
22
+ ### F4. 数据库读取按类型容错
23
+ `rusqlite::Row` 读取字段,除非 100% 确定类型一致,否则**禁止** `row.get_unwrap::<_, T>()`。
24
+ 用 `row.get::<_, rusqlite::types::Value>(idx)` + `match Value::Integer / Value::Text`。同一字段在 API / seed.sql / 手动导入中可能以 INTEGER 或 TEXT 存储。
25
+
26
+ ### F11. XLSX 样式用工厂函数
27
+ 新增 xlsx 导出模块优先用 `cell_format()` / `header_format()` 工厂函数,禁止自造 `Format::new()` 重复样式;需微调时在工厂返回的 Format 上链式 `set_*()`。
28
+ 列宽用统一 `display_width()`(中文字符算 2 宽度);数值检测用 `value.parse::<f64>()`,禁止自造 `is_numeric_string()`。
29
+ 写入日期单元格时继承 `data_fmt.clone().set_num_format("yyyy/mm/dd")`,避免 `Format::new()` 丢失 `data_fmt` 样式导致日期格式丢失。
30
+
31
+ ## 三、多发问题处理模式
32
+
33
+ ### P4. async 中 MutexGuard 必须在 .await 前 drop
34
+ `std::sync::Mutex` 在 async 函数里加锁后跨 `.await`,Future 不满足 `Send` trait 编译失败。用 `{ /* 加锁区 */ }` 块包围加锁逻辑,确保 MutexGuard 在 `.await` 前被 drop。
35
+
36
+ ### P8. Tauri invoke_handler 单宏约束
37
+ 多次调用 `.invoke_handler()` 只有最后一次生效(后续覆盖前次)。所有 `#[tauri::command]` 必须在唯一一个 `generate_handler![]` 宏中注册;函数实现留在各自模块,lib.rs 只做注册中转。
38
+
39
+ ### P13. 全局状态访问用统一入口
40
+ 散落多处直接持有全局指针 / 各自读配置 → 迁移困难、易不一致。全局状态通过统一 `get()` 入口(如 `app_state::get()`)访问;配置读写、DB 路径、桌面路径等提取为单一工具函数,禁止重复实现。
41
+
42
+ ### P14. 数据库连接诊断不泄露密码
43
+ 前端仅显示 `pass_len=N`(密码长度);后端连接前做空密码前置校验,错误按关键词分类返回,便于前端精确诊断(前端部分见 Tauri/Vue 层)。
44
+
45
+ ### P-rust-2. 节点处理函数按文件拆分
46
+ 工作流类项目把每个节点的后端处理函数拆到独立文件(`executor/nodes/xxx.rs`),在 `mod.rs` 用 `pub use` 暴露,调度器 `scheduler.rs` 的 `execute_single_node` 用 `"xxx" =>` 分支分发。新增节点须前后端都注册(前端见 `svelte.mdc` P-svelte-8)。
47
+
48
+ ### P-rust-3. `evalexpr` 公式占位符 `${value}` 解析
49
+ 公式引擎用 `evalexpr` 时,`${value}` 是变量占位符语法(如 `=B1 公式 · 或 ${value}`)。前端模板显示该占位符须用拼接写法(见 `svelte.mdc` P-svelte-3),避免被 Svelte 编译器误解析。
50
+
51
+ ### P-rust-1. 日志解析误判(后端侧)
52
+ 同一逻辑的正常/警告日志被前端日志解析误判为错误(如 SQLite 导入成功却弹"有部分错误")。刷新/成功判定应由明确业务事件/返回值驱动,**不**依赖日志文本解析;确需解析时按数据源分别处理(前端侧见 `vue.mdc` P-vue-1)。
53
+
54
+ ## 四、与进化飞轮衔接
55
+ 命中上述规则/模式 → 写入记忆;同类 ≥2 次 → 固化规则并回流知识库。
@@ -0,0 +1,64 @@
1
+ # shadcn-svelte 组件库层(按需加载)
2
+
3
+ > 仅当项目使用 **shadcn-svelte**(Svelte 5 + Tailwind v4 的 UI 组件库)时激活。
4
+ > 组件以**源码形式**生成到 `src/lib/components/ui/`,可完全自定义样式;与 `svelte.mdc`(语言/框架层)、`tailwind.mdc`(样式层)协同,不与二者重叠。
5
+
6
+ ## 一、引入与机制
7
+
8
+ - 添加组件:`npx shadcn-svelte@latest add button input select dialog sonner ...`(源码生成到 `src/lib/components/ui/<comp>/`)
9
+ - 提供 `cn()` 工具(clsx + tailwind-merge)合并 className;组件统一用 `class` 而非 `className`
10
+ - 每个组件可能带来额外底层依赖(`@melt-ui/svelte` / `@zag-js`),引入前评估包体积
11
+ - 引入后清理未使用的旧 UI 库死依赖(如已用 shadcn 则 `npm uninstall bits-ui`),避免样式冲突
12
+ - 通过 barrel export(`$lib/components/ui/index.js`)统一导入:`import { Button, Input, Select } from '$lib/components/ui'`
13
+
14
+ ## 二、通用组件 API 约定
15
+
16
+ | 组件 | 关键 API | 说明 |
17
+ |------|---------|------|
18
+ | `<Button>` | `variant="default\|outline\|destructive\|ghost\|link"`,`size="default\|sm\|lg\|icon"` | 圆角 `rounded-md`、中文场景用 `size="sm"` |
19
+ | `<Input>` | `class` 控制尺寸 | 统一文本框外观,禁用原生 `<input>` 手写样式 |
20
+ | `<Select>` | `<SelectItem>` 动态生成选项;`value` / `onValueChange` | **自定义渲染,非原生 `<select>`**,无 `appearance-none` 箭头 |
21
+ | `<Sonner>` | 全局 `<Toaster>`,配合 `toastStore.success/error/warning/info` | 替换自制 Toast |
22
+ | 弹窗外壳 | 封装 `ModalShell` 模式:遮罩 + 容器 + ✕ + Escape + Portal | 集成 Svelte Flow `use:portal`,消除每处重复 |
23
+
24
+ ## 三、强制规则
25
+
26
+ ### F-shadcn-1. 通用 UI 控件优先用 shadcn 组件
27
+ 新增输入/下拉/按钮/弹窗,**优先**用 `<Input>`/`<Select>`/`<Button>`/统一弹窗外壳。禁止大段手写 Tailwind 类模拟同款控件、禁止每个节点重复粘贴相同原子类组合(可读性差且易漂移)。仅在精确 flex 尺寸 / 绝对定位 / 节点联锁布局等特有场景才保留本地 `<style>`。
28
+
29
+ ### F-shadcn-2. 节点 / 紧凑 UI 统一尺寸与宽度
30
+ shadcn 默认 `h-10`,节点内紧凑 UI 统一 `size="sm"`(`h-8`)+ `text-xs`;**禁止同一组内混用不同高度控件**。节点内输入控件统一固定宽度(`w-14`≈56px / `w-20` / `w-28`),**禁止 `width:100%`、禁止自定义 `flex:0 0 Npx`**(易撑宽画布/容器导致节点 max-width 变形)。
31
+
32
+ ### F-shadcn-3. 弹窗必须 Portal + 统一外壳
33
+ 画布 / Svelte Flow 节点内的弹窗必须 `portal`(兼容 transform 定位);**所有弹窗统一用封装外壳**,禁止手写遮罩层 + 容器 + 关闭按钮 + Escape 逻辑。超出默认 `max-w-lg` 的宽度用 `contentClass` / `width` prop 配置(小配置 `w-[400px]`、标准 `w-[600px]`、数据预览 `w-[80vw]`)。
34
+
35
+ ### F-shadcn-4. 下拉 / Select 在画布节点内防误触
36
+ - `<Select>` 是组合组件,**不自动继承**画布的 `noDragClassName`,必须置于 `.nodrag` 容器内防拖拽误触发
37
+ - 自定义下拉菜单容器必须 `onwheel={(e) => e.stopPropagation()}`,防止滚动选项冒泡到画布触发缩放(原生 `<select>` 的 option 是 OS 弹窗,无需处理)
38
+ - 详见 `svelte.mdc` P-svelte-4(画布交互)
39
+
40
+ ### F-shadcn-5. 避免为单一交互引入额外组件依赖
41
+ 仅需简单开关(如 AND/OR 切换)时,用 Tailwind 自写 Segmented/Switch 控件,**不引入** shadcn `switch` 等额外依赖,控制包体积。
42
+
43
+ ## 四、多发模式
44
+
45
+ ### P-shadcn-1. 引入 shadcn 后清理死依赖
46
+ 原项目若已有未使用 UI 库(bits-ui 等),`npx shadcn-svelte init` 后 `npm uninstall` 移除;且需确认 shadcn 的 CSS 变量主题与项目现有 `@theme`(`--color-background` 等)不冲突。
47
+
48
+ ### P-shadcn-2. 默认值差异导致视觉不一致
49
+ shadcn 默认 `h-10`、圆角、字号与项目紧凑设计不符 → 全局用 `size="sm"` 或覆写组件默认值;替换后**逐页验证**按钮/输入框高度、弹窗宽度一致,重点核对工具栏与节点内添加/删除按钮。
50
+
51
+ ### P-shadcn-3. 重复弹窗逻辑必须抽公共外壳
52
+ 多个弹窗各自维护遮罩/关闭/Escape/Portal(8 处合计 ~200 行重复 CSS)→ 抽 `ModalShell` 后每处模板从 ~14 行降到 0 行、消除全部重复。**新增弹窗一律走外壳**,不回头手写。
53
+
54
+ ### P-shadcn-4. 控件响应式解构陷阱(与 svelte 联动)
55
+ 数组参数用 `useArrayParam` 时,`let { items } = useArrayParam()` 解构会断开 `$state` 响应式 → 改用 `let arr = useArrayParam(); let items = $derived(arr.items)`。详见 `svelte.mdc` F-svelte-5。
56
+
57
+ ### P-shadcn-5. 条件组 / 列表控件统一风格
58
+ 多行规则(筛选、排序、清洗等)使用统一:容器(`bg-*-50` + `border` + `rounded-lg`)、序号(大写字母 A/B/C)、添加按钮(虚线橙边 `outline` + `size="sm"` + `border-dashed`)、删除按钮(`secondary` + `size="icon"` + `text-rose-500`)。避免每节点各自维护一套不一致的高度/字号/颜色。
59
+
60
+ ### P-shadcn-6. Toast 迁移适配现有 store 接口
61
+ 替换为 `<Sonner>` 时需适配项目既有 `toastStore.success/error/warning/info` 调用接口,保留方法签名、仅替换底层渲染,避免改动所有调用点。
62
+
63
+ ### P-shadcn-7. 不要为高风险的统一外壳做全量替换
64
+ 节点外壳(NodeShell)等高耦合关键交互组件**不要**为套用 shadcn `Card` 而全量替换(阴影/Handle 定位/圆角兼容性风险高),保持原结构、内部控件仍可用 shadcn。