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.
- package/README.md +33 -23
- package/bin/cli.js +24 -67
- package/package.json +1 -1
- package/template/rules/knowledge/README.md +56 -0
- package/template/rules/knowledge/ant-design-vue.mdc +54 -0
- package/template/rules/knowledge/general.mdc +56 -0
- package/template/rules/knowledge/rust.mdc +55 -0
- package/template/rules/knowledge/shadcn-svelte.mdc +64 -0
- package/template/rules/knowledge/svelte.mdc +135 -0
- package/template/rules/knowledge/tailwind.mdc +66 -0
- package/template/rules/knowledge/tauri.mdc +65 -0
- package/template/rules/knowledge/typescript.mdc +41 -0
- package/template/rules/knowledge/vue.mdc +48 -0
- package/template/rules/ponytail.mdc +23 -98
- package/template/rules/self-evolve.mdc +24 -0
- package/template/skills/impeccable/SKILL.md +47 -174
- package/template/skills/skillopt-sleep/SKILL.md +32 -88
- package/template/skills/impeccable/agents/impeccable_asset_producer.toml +0 -92
- package/template/skills/impeccable/agents/impeccable_manual_edit_applier.toml +0 -95
- package/template/skills/impeccable/agents/openai.yaml +0 -4
- package/template/skills/impeccable/reference/adapt.md +0 -311
- package/template/skills/impeccable/reference/animate.md +0 -201
- package/template/skills/impeccable/reference/audit.md +0 -133
- package/template/skills/impeccable/reference/bolder.md +0 -113
- package/template/skills/impeccable/reference/brand.md +0 -108
- package/template/skills/impeccable/reference/clarify.md +0 -288
- package/template/skills/impeccable/reference/codex.md +0 -105
- package/template/skills/impeccable/reference/colorize.md +0 -257
- package/template/skills/impeccable/reference/craft.md +0 -123
- package/template/skills/impeccable/reference/critique.md +0 -790
- package/template/skills/impeccable/reference/delight.md +0 -302
- package/template/skills/impeccable/reference/distill.md +0 -111
- package/template/skills/impeccable/reference/document.md +0 -429
- package/template/skills/impeccable/reference/extract.md +0 -69
- package/template/skills/impeccable/reference/harden.md +0 -347
- package/template/skills/impeccable/reference/hooks.md +0 -90
- package/template/skills/impeccable/reference/init.md +0 -172
- package/template/skills/impeccable/reference/interaction-design.md +0 -189
- package/template/skills/impeccable/reference/layout.md +0 -161
- package/template/skills/impeccable/reference/live.md +0 -720
- package/template/skills/impeccable/reference/onboard.md +0 -234
- package/template/skills/impeccable/reference/optimize.md +0 -258
- package/template/skills/impeccable/reference/overdrive.md +0 -130
- package/template/skills/impeccable/reference/polish.md +0 -241
- package/template/skills/impeccable/reference/product.md +0 -60
- package/template/skills/impeccable/reference/quieter.md +0 -99
- package/template/skills/impeccable/reference/shape.md +0 -165
- package/template/skills/impeccable/reference/typeset.md +0 -279
- package/template/skills/impeccable/scripts/command-metadata.json +0 -94
- package/template/skills/impeccable/scripts/context-signals.mjs +0 -225
- package/template/skills/impeccable/scripts/context.mjs +0 -961
- package/template/skills/impeccable/scripts/critique-storage.mjs +0 -242
- package/template/skills/impeccable/scripts/detect-csp.mjs +0 -198
- package/template/skills/impeccable/scripts/detect.mjs +0 -21
- package/template/skills/impeccable/scripts/detector/browser/injected/index.mjs +0 -1937
- package/template/skills/impeccable/scripts/detector/cli/main.mjs +0 -290
- package/template/skills/impeccable/scripts/detector/design-system.mjs +0 -750
- package/template/skills/impeccable/scripts/detector/detect-antipatterns-browser.js +0 -5138
- package/template/skills/impeccable/scripts/detector/detect-antipatterns.mjs +0 -50
- package/template/skills/impeccable/scripts/detector/engines/browser/detect-url.mjs +0 -277
- package/template/skills/impeccable/scripts/detector/engines/regex/detect-text.mjs +0 -568
- package/template/skills/impeccable/scripts/detector/engines/static-html/css-cascade.mjs +0 -1015
- package/template/skills/impeccable/scripts/detector/engines/static-html/detect-html.mjs +0 -234
- package/template/skills/impeccable/scripts/detector/engines/visual/screenshot-contrast.mjs +0 -189
- package/template/skills/impeccable/scripts/detector/findings.mjs +0 -12
- package/template/skills/impeccable/scripts/detector/node/file-system.mjs +0 -198
- package/template/skills/impeccable/scripts/detector/profile/profiler.mjs +0 -166
- package/template/skills/impeccable/scripts/detector/registry/antipatterns.mjs +0 -448
- package/template/skills/impeccable/scripts/detector/rules/checks.mjs +0 -2671
- package/template/skills/impeccable/scripts/detector/shared/color.mjs +0 -124
- package/template/skills/impeccable/scripts/detector/shared/constants.mjs +0 -101
- package/template/skills/impeccable/scripts/detector/shared/inline-ignores.mjs +0 -148
- package/template/skills/impeccable/scripts/detector/shared/page.mjs +0 -7
- package/template/skills/impeccable/scripts/hook-admin.mjs +0 -661
- package/template/skills/impeccable/scripts/hook-before-edit.mjs +0 -476
- package/template/skills/impeccable/scripts/hook-lib.mjs +0 -1632
- package/template/skills/impeccable/scripts/hook.mjs +0 -61
- package/template/skills/impeccable/scripts/lib/design-parser.mjs +0 -842
- package/template/skills/impeccable/scripts/lib/impeccable-config.mjs +0 -638
- package/template/skills/impeccable/scripts/lib/impeccable-paths.mjs +0 -128
- package/template/skills/impeccable/scripts/lib/is-generated.mjs +0 -69
- package/template/skills/impeccable/scripts/lib/target-args.mjs +0 -42
- package/template/skills/impeccable/scripts/live/browser-script-parts.mjs +0 -49
- package/template/skills/impeccable/scripts/live/completion.mjs +0 -19
- package/template/skills/impeccable/scripts/live/event-validation.mjs +0 -137
- package/template/skills/impeccable/scripts/live/insert-ui.mjs +0 -458
- package/template/skills/impeccable/scripts/live/manual-apply.mjs +0 -939
- package/template/skills/impeccable/scripts/live/manual-edit-routes.mjs +0 -357
- package/template/skills/impeccable/scripts/live/manual-edits-buffer.mjs +0 -152
- package/template/skills/impeccable/scripts/live/session-store.mjs +0 -289
- package/template/skills/impeccable/scripts/live/svelte-component.mjs +0 -826
- package/template/skills/impeccable/scripts/live/sveltekit-adapter.mjs +0 -274
- package/template/skills/impeccable/scripts/live/ui-core.mjs +0 -180
- package/template/skills/impeccable/scripts/live/vocabulary.mjs +0 -36
- package/template/skills/impeccable/scripts/live-accept.mjs +0 -812
- package/template/skills/impeccable/scripts/live-browser-dom.js +0 -146
- package/template/skills/impeccable/scripts/live-browser-session.js +0 -123
- package/template/skills/impeccable/scripts/live-browser.js +0 -11173
- package/template/skills/impeccable/scripts/live-commit-manual-edits.mjs +0 -1241
- package/template/skills/impeccable/scripts/live-complete.mjs +0 -75
- package/template/skills/impeccable/scripts/live-copy-edit-agent.mjs +0 -683
- package/template/skills/impeccable/scripts/live-discard-manual-edits.mjs +0 -51
- package/template/skills/impeccable/scripts/live-inject.mjs +0 -583
- package/template/skills/impeccable/scripts/live-insert.mjs +0 -272
- package/template/skills/impeccable/scripts/live-manual-edit-evidence.mjs +0 -363
- package/template/skills/impeccable/scripts/live-poll.mjs +0 -384
- package/template/skills/impeccable/scripts/live-resume.mjs +0 -94
- package/template/skills/impeccable/scripts/live-server.mjs +0 -1135
- package/template/skills/impeccable/scripts/live-status.mjs +0 -61
- package/template/skills/impeccable/scripts/live-target.mjs +0 -30
- package/template/skills/impeccable/scripts/live-wrap.mjs +0 -894
- package/template/skills/impeccable/scripts/live.mjs +0 -297
- package/template/skills/impeccable/scripts/modern-screenshot.umd.js +0 -14
- package/template/skills/impeccable/scripts/palette.mjs +0 -633
- package/template/skills/impeccable/scripts/pin.mjs +0 -214
- package/template/skills/skillopt-sleep/configs/_base_/default.yaml +0 -103
- package/template/skills/skillopt-sleep/configs/alfworld/default.yaml +0 -29
- package/template/skills/skillopt-sleep/configs/docvqa/default.yaml +0 -28
- package/template/skills/skillopt-sleep/configs/features/soft_gate.yaml +0 -47
- package/template/skills/skillopt-sleep/configs/livemathematicianbench/default.yaml +0 -22
- package/template/skills/skillopt-sleep/configs/officeqa/default.yaml +0 -34
- package/template/skills/skillopt-sleep/configs/searchqa/default.yaml +0 -32
- package/template/skills/skillopt-sleep/configs/spreadsheetbench/default.yaml +0 -34
- package/template/skills/skillopt-sleep/scripts/framework/skillopt/__init__.py +0 -28
- package/template/skills/skillopt-sleep/scripts/framework/skillopt/config.py +0 -282
- package/template/skills/skillopt-sleep/scripts/framework/skillopt/datasets/__init__.py +0 -7
- package/template/skills/skillopt-sleep/scripts/framework/skillopt/datasets/base.py +0 -512
- package/template/skills/skillopt-sleep/scripts/framework/skillopt/engine/__init__.py +0 -9
- package/template/skills/skillopt-sleep/scripts/framework/skillopt/engine/trainer.py +0 -2379
- package/template/skills/skillopt-sleep/scripts/framework/skillopt/envs/__init__.py +0 -1
- package/template/skills/skillopt-sleep/scripts/framework/skillopt/envs/_template/README.md +0 -43
- package/template/skills/skillopt-sleep/scripts/framework/skillopt/envs/_template/config_template.yaml +0 -55
- package/template/skills/skillopt-sleep/scripts/framework/skillopt/envs/_template/env_template.py +0 -151
- package/template/skills/skillopt-sleep/scripts/framework/skillopt/envs/_template/loader_template.py +0 -87
- package/template/skills/skillopt-sleep/scripts/framework/skillopt/envs/alfworld/__init__.py +0 -5
- package/template/skills/skillopt-sleep/scripts/framework/skillopt/envs/alfworld/adapter.py +0 -428
- package/template/skills/skillopt-sleep/scripts/framework/skillopt/envs/alfworld/dataloader.py +0 -123
- package/template/skills/skillopt-sleep/scripts/framework/skillopt/envs/alfworld/prompts/analyst_error.md +0 -55
- package/template/skills/skillopt-sleep/scripts/framework/skillopt/envs/alfworld/prompts/analyst_success.md +0 -33
- package/template/skills/skillopt-sleep/scripts/framework/skillopt/envs/alfworld/prompts/rollout_no_history.md +0 -8
- package/template/skills/skillopt-sleep/scripts/framework/skillopt/envs/alfworld/prompts/rollout_with_history.md +0 -9
- package/template/skills/skillopt-sleep/scripts/framework/skillopt/envs/alfworld/prompts/rollout_with_memory.md +0 -16
- package/template/skills/skillopt-sleep/scripts/framework/skillopt/envs/alfworld/reflect.py +0 -4
- package/template/skills/skillopt-sleep/scripts/framework/skillopt/envs/alfworld/rollout.py +0 -366
- package/template/skills/skillopt-sleep/scripts/framework/skillopt/envs/alfworld/skills/initial.md +0 -45
- package/template/skills/skillopt-sleep/scripts/framework/skillopt/envs/alfworld/vendor/__init__.py +0 -9
- package/template/skills/skillopt-sleep/scripts/framework/skillopt/envs/alfworld/vendor/alfworld_envs.py +0 -221
- package/template/skills/skillopt-sleep/scripts/framework/skillopt/envs/alfworld/vendor/alfworld_projection.py +0 -60
- package/template/skills/skillopt-sleep/scripts/framework/skillopt/envs/alfworld/vendor/alfworld_prompts.py +0 -8
- package/template/skills/skillopt-sleep/scripts/framework/skillopt/envs/alfworld/vendor/config_tw.yaml +0 -145
- package/template/skills/skillopt-sleep/scripts/framework/skillopt/envs/alfworld/vendor/env_base.py +0 -84
- package/template/skills/skillopt-sleep/scripts/framework/skillopt/envs/alfworld/vendor/env_manager.py +0 -139
- package/template/skills/skillopt-sleep/scripts/framework/skillopt/envs/alfworld/vendor/memory.py +0 -87
- package/template/skills/skillopt-sleep/scripts/framework/skillopt/envs/base.py +0 -329
- package/template/skills/skillopt-sleep/scripts/framework/skillopt/envs/docvqa/__init__.py +0 -1
- package/template/skills/skillopt-sleep/scripts/framework/skillopt/envs/docvqa/adapter.py +0 -90
- package/template/skills/skillopt-sleep/scripts/framework/skillopt/envs/docvqa/dataloader.py +0 -61
- package/template/skills/skillopt-sleep/scripts/framework/skillopt/envs/docvqa/evaluator.py +0 -113
- package/template/skills/skillopt-sleep/scripts/framework/skillopt/envs/docvqa/prompts/analyst_error.md +0 -35
- package/template/skills/skillopt-sleep/scripts/framework/skillopt/envs/docvqa/prompts/analyst_success.md +0 -24
- package/template/skills/skillopt-sleep/scripts/framework/skillopt/envs/docvqa/prompts/rollout_system.md +0 -12
- package/template/skills/skillopt-sleep/scripts/framework/skillopt/envs/docvqa/rollout.py +0 -391
- package/template/skills/skillopt-sleep/scripts/framework/skillopt/envs/docvqa/skills/initial.md +0 -11
- package/template/skills/skillopt-sleep/scripts/framework/skillopt/envs/livemathematicianbench/__init__.py +0 -1
- package/template/skills/skillopt-sleep/scripts/framework/skillopt/envs/livemathematicianbench/adapter.py +0 -129
- package/template/skills/skillopt-sleep/scripts/framework/skillopt/envs/livemathematicianbench/dataloader.py +0 -308
- package/template/skills/skillopt-sleep/scripts/framework/skillopt/envs/livemathematicianbench/evaluator.py +0 -62
- package/template/skills/skillopt-sleep/scripts/framework/skillopt/envs/livemathematicianbench/prompts/analyst_error.md +0 -37
- package/template/skills/skillopt-sleep/scripts/framework/skillopt/envs/livemathematicianbench/prompts/analyst_success.md +0 -25
- package/template/skills/skillopt-sleep/scripts/framework/skillopt/envs/livemathematicianbench/prompts/rollout_system.md +0 -12
- package/template/skills/skillopt-sleep/scripts/framework/skillopt/envs/livemathematicianbench/reflect.py +0 -4
- package/template/skills/skillopt-sleep/scripts/framework/skillopt/envs/livemathematicianbench/rollout.py +0 -434
- package/template/skills/skillopt-sleep/scripts/framework/skillopt/envs/livemathematicianbench/skills/initial.md +0 -16
- package/template/skills/skillopt-sleep/scripts/framework/skillopt/envs/officeqa/__init__.py +0 -1
- package/template/skills/skillopt-sleep/scripts/framework/skillopt/envs/officeqa/adapter.py +0 -112
- package/template/skills/skillopt-sleep/scripts/framework/skillopt/envs/officeqa/dataloader.py +0 -71
- package/template/skills/skillopt-sleep/scripts/framework/skillopt/envs/officeqa/evaluator.py +0 -46
- package/template/skills/skillopt-sleep/scripts/framework/skillopt/envs/officeqa/prompts/analyst_error.md +0 -37
- package/template/skills/skillopt-sleep/scripts/framework/skillopt/envs/officeqa/prompts/analyst_success.md +0 -25
- package/template/skills/skillopt-sleep/scripts/framework/skillopt/envs/officeqa/prompts/rollout_system.md +0 -15
- package/template/skills/skillopt-sleep/scripts/framework/skillopt/envs/officeqa/rollout.py +0 -799
- package/template/skills/skillopt-sleep/scripts/framework/skillopt/envs/officeqa/skills/initial.md +0 -15
- package/template/skills/skillopt-sleep/scripts/framework/skillopt/envs/officeqa/tool_runtime.py +0 -552
- package/template/skills/skillopt-sleep/scripts/framework/skillopt/envs/searchqa/__init__.py +0 -1
- package/template/skills/skillopt-sleep/scripts/framework/skillopt/envs/searchqa/adapter.py +0 -96
- package/template/skills/skillopt-sleep/scripts/framework/skillopt/envs/searchqa/dataloader.py +0 -42
- package/template/skills/skillopt-sleep/scripts/framework/skillopt/envs/searchqa/evaluator.py +0 -100
- package/template/skills/skillopt-sleep/scripts/framework/skillopt/envs/searchqa/prompts/analyst_error.md +0 -46
- package/template/skills/skillopt-sleep/scripts/framework/skillopt/envs/searchqa/prompts/analyst_success.md +0 -32
- package/template/skills/skillopt-sleep/scripts/framework/skillopt/envs/searchqa/prompts/rollout_system.md +0 -13
- package/template/skills/skillopt-sleep/scripts/framework/skillopt/envs/searchqa/reflect.py +0 -4
- package/template/skills/skillopt-sleep/scripts/framework/skillopt/envs/searchqa/rollout.py +0 -494
- package/template/skills/skillopt-sleep/scripts/framework/skillopt/envs/searchqa/skills/initial.md +0 -3
- package/template/skills/skillopt-sleep/scripts/framework/skillopt/envs/spreadsheetbench/__init__.py +0 -5
- package/template/skills/skillopt-sleep/scripts/framework/skillopt/envs/spreadsheetbench/adapter.py +0 -159
- package/template/skills/skillopt-sleep/scripts/framework/skillopt/envs/spreadsheetbench/codegen_agent.py +0 -731
- package/template/skills/skillopt-sleep/scripts/framework/skillopt/envs/spreadsheetbench/dataloader.py +0 -37
- package/template/skills/skillopt-sleep/scripts/framework/skillopt/envs/spreadsheetbench/evaluator.py +0 -158
- package/template/skills/skillopt-sleep/scripts/framework/skillopt/envs/spreadsheetbench/executor.py +0 -67
- package/template/skills/skillopt-sleep/scripts/framework/skillopt/envs/spreadsheetbench/prompts/analyst_error.md +0 -46
- package/template/skills/skillopt-sleep/scripts/framework/skillopt/envs/spreadsheetbench/prompts/analyst_success.md +0 -32
- package/template/skills/skillopt-sleep/scripts/framework/skillopt/envs/spreadsheetbench/prompts/codegen_system.md +0 -1
- package/template/skills/skillopt-sleep/scripts/framework/skillopt/envs/spreadsheetbench/prompts/critical_rules.md +0 -9
- package/template/skills/skillopt-sleep/scripts/framework/skillopt/envs/spreadsheetbench/prompts/react_system.md +0 -21
- package/template/skills/skillopt-sleep/scripts/framework/skillopt/envs/spreadsheetbench/react_agent.py +0 -395
- package/template/skills/skillopt-sleep/scripts/framework/skillopt/envs/spreadsheetbench/reflect.py +0 -4
- package/template/skills/skillopt-sleep/scripts/framework/skillopt/envs/spreadsheetbench/rollout.py +0 -979
- package/template/skills/skillopt-sleep/scripts/framework/skillopt/envs/spreadsheetbench/skills/initial.md +0 -56
- package/template/skills/skillopt-sleep/scripts/framework/skillopt/evaluation/__init__.py +0 -13
- package/template/skills/skillopt-sleep/scripts/framework/skillopt/evaluation/gate.py +0 -148
- package/template/skills/skillopt-sleep/scripts/framework/skillopt/gradient/__init__.py +0 -15
- package/template/skills/skillopt-sleep/scripts/framework/skillopt/gradient/aggregate.py +0 -253
- package/template/skills/skillopt-sleep/scripts/framework/skillopt/gradient/reflect.py +0 -635
- package/template/skills/skillopt-sleep/scripts/framework/skillopt/model/__init__.py +0 -514
- package/template/skills/skillopt-sleep/scripts/framework/skillopt/model/azure_openai.py +0 -915
- package/template/skills/skillopt-sleep/scripts/framework/skillopt/model/backend_config.py +0 -185
- package/template/skills/skillopt-sleep/scripts/framework/skillopt/model/claude_backend.py +0 -371
- package/template/skills/skillopt-sleep/scripts/framework/skillopt/model/codex_backend.py +0 -666
- package/template/skills/skillopt-sleep/scripts/framework/skillopt/model/codex_harness.py +0 -1057
- package/template/skills/skillopt-sleep/scripts/framework/skillopt/model/common.py +0 -229
- package/template/skills/skillopt-sleep/scripts/framework/skillopt/model/minimax_backend.py +0 -277
- package/template/skills/skillopt-sleep/scripts/framework/skillopt/model/qwen_backend.py +0 -456
- package/template/skills/skillopt-sleep/scripts/framework/skillopt/model/router.py +0 -236
- package/template/skills/skillopt-sleep/scripts/framework/skillopt/optimizer/__init__.py +0 -15
- package/template/skills/skillopt-sleep/scripts/framework/skillopt/optimizer/appendix.py +0 -156
- package/template/skills/skillopt-sleep/scripts/framework/skillopt/optimizer/clip.py +0 -109
- package/template/skills/skillopt-sleep/scripts/framework/skillopt/optimizer/lr_autonomous.py +0 -108
- package/template/skills/skillopt-sleep/scripts/framework/skillopt/optimizer/meta_skill.py +0 -79
- package/template/skills/skillopt-sleep/scripts/framework/skillopt/optimizer/rewrite.py +0 -59
- package/template/skills/skillopt-sleep/scripts/framework/skillopt/optimizer/scheduler.py +0 -127
- package/template/skills/skillopt-sleep/scripts/framework/skillopt/optimizer/select.py +0 -4
- package/template/skills/skillopt-sleep/scripts/framework/skillopt/optimizer/skill.py +0 -201
- package/template/skills/skillopt-sleep/scripts/framework/skillopt/optimizer/skill_aware.py +0 -206
- package/template/skills/skillopt-sleep/scripts/framework/skillopt/optimizer/slow_update.py +0 -396
- package/template/skills/skillopt-sleep/scripts/framework/skillopt/optimizer/update_modes.py +0 -135
- package/template/skills/skillopt-sleep/scripts/framework/skillopt/prompts/__init__.py +0 -63
- package/template/skills/skillopt-sleep/scripts/framework/skillopt/prompts/analyst_error.md +0 -41
- package/template/skills/skillopt-sleep/scripts/framework/skillopt/prompts/analyst_error_full_rewrite.md +0 -32
- package/template/skills/skillopt-sleep/scripts/framework/skillopt/prompts/analyst_error_rewrite.md +0 -44
- package/template/skills/skillopt-sleep/scripts/framework/skillopt/prompts/analyst_success.md +0 -36
- package/template/skills/skillopt-sleep/scripts/framework/skillopt/prompts/analyst_success_full_rewrite.md +0 -30
- package/template/skills/skillopt-sleep/scripts/framework/skillopt/prompts/analyst_success_rewrite.md +0 -33
- package/template/skills/skillopt-sleep/scripts/framework/skillopt/prompts/lr_autonomous.md +0 -20
- package/template/skills/skillopt-sleep/scripts/framework/skillopt/prompts/merge_failure.md +0 -30
- package/template/skills/skillopt-sleep/scripts/framework/skillopt/prompts/merge_failure_full_rewrite.md +0 -28
- package/template/skills/skillopt-sleep/scripts/framework/skillopt/prompts/merge_failure_rewrite.md +0 -26
- package/template/skills/skillopt-sleep/scripts/framework/skillopt/prompts/merge_final.md +0 -33
- package/template/skills/skillopt-sleep/scripts/framework/skillopt/prompts/merge_final_full_rewrite.md +0 -28
- package/template/skills/skillopt-sleep/scripts/framework/skillopt/prompts/merge_final_rewrite.md +0 -25
- package/template/skills/skillopt-sleep/scripts/framework/skillopt/prompts/merge_success.md +0 -28
- package/template/skills/skillopt-sleep/scripts/framework/skillopt/prompts/merge_success_full_rewrite.md +0 -28
- package/template/skills/skillopt-sleep/scripts/framework/skillopt/prompts/merge_success_rewrite.md +0 -25
- package/template/skills/skillopt-sleep/scripts/framework/skillopt/prompts/meta_skill.md +0 -40
- package/template/skills/skillopt-sleep/scripts/framework/skillopt/prompts/ranking.md +0 -20
- package/template/skills/skillopt-sleep/scripts/framework/skillopt/prompts/ranking_rewrite.md +0 -15
- package/template/skills/skillopt-sleep/scripts/framework/skillopt/prompts/rewrite_skill.md +0 -25
- package/template/skills/skillopt-sleep/scripts/framework/skillopt/prompts/slow_update.md +0 -60
- package/template/skills/skillopt-sleep/scripts/framework/skillopt/scheduler/__init__.py +0 -8
- package/template/skills/skillopt-sleep/scripts/framework/skillopt/types.py +0 -306
- package/template/skills/skillopt-sleep/scripts/framework/skillopt/utils/__init__.py +0 -4
- package/template/skills/skillopt-sleep/scripts/framework/skillopt/utils/json_utils.py +0 -172
- package/template/skills/skillopt-sleep/scripts/framework/skillopt/utils/scoring.py +0 -28
- package/template/skills/skillopt-sleep/scripts/python/__init__.py +0 -20
- package/template/skills/skillopt-sleep/scripts/python/__main__.py +0 -343
- package/template/skills/skillopt-sleep/scripts/python/backend.py +0 -1371
- package/template/skills/skillopt-sleep/scripts/python/budget.py +0 -75
- package/template/skills/skillopt-sleep/scripts/python/config.py +0 -162
- package/template/skills/skillopt-sleep/scripts/python/consolidate.py +0 -238
- package/template/skills/skillopt-sleep/scripts/python/cycle.py +0 -291
- package/template/skills/skillopt-sleep/scripts/python/dream.py +0 -138
- package/template/skills/skillopt-sleep/scripts/python/experiments/__init__.py +0 -1
- package/template/skills/skillopt-sleep/scripts/python/experiments/gbrain_bench.py +0 -119
- package/template/skills/skillopt-sleep/scripts/python/experiments/personas.py +0 -86
- package/template/skills/skillopt-sleep/scripts/python/experiments/report.py +0 -132
- package/template/skills/skillopt-sleep/scripts/python/experiments/run_experiment.py +0 -178
- package/template/skills/skillopt-sleep/scripts/python/experiments/run_gbrain.py +0 -209
- package/template/skills/skillopt-sleep/scripts/python/experiments/run_transfer.py +0 -155
- package/template/skills/skillopt-sleep/scripts/python/experiments/sweep.py +0 -164
- package/template/skills/skillopt-sleep/scripts/python/gate.py +0 -50
- package/template/skills/skillopt-sleep/scripts/python/harvest.py +0 -304
- package/template/skills/skillopt-sleep/scripts/python/harvest_codex.py +0 -253
- package/template/skills/skillopt-sleep/scripts/python/harvest_sources.py +0 -41
- package/template/skills/skillopt-sleep/scripts/python/judges.py +0 -84
- package/template/skills/skillopt-sleep/scripts/python/llm_miner.py +0 -134
- package/template/skills/skillopt-sleep/scripts/python/memory.py +0 -129
- package/template/skills/skillopt-sleep/scripts/python/mine.py +0 -312
- package/template/skills/skillopt-sleep/scripts/python/replay.py +0 -146
- package/template/skills/skillopt-sleep/scripts/python/rollout.py +0 -153
- package/template/skills/skillopt-sleep/scripts/python/scheduler.py +0 -138
- package/template/skills/skillopt-sleep/scripts/python/slow_update.py +0 -142
- package/template/skills/skillopt-sleep/scripts/python/staging.py +0 -103
- package/template/skills/skillopt-sleep/scripts/python/state.py +0 -96
- package/template/skills/skillopt-sleep/scripts/python/tasks_file.py +0 -81
- package/template/skills/skillopt-sleep/scripts/python/types.py +0 -146
- package/template/skills/skillopt-sleep/scripts/shell/__init__.py +0 -0
- package/template/skills/skillopt-sleep/scripts/shell/eval_only.py +0 -466
- package/template/skills/skillopt-sleep/scripts/shell/materialize_searchqa.py +0 -148
- package/template/skills/skillopt-sleep/scripts/shell/run_alfworld.sh +0 -60
- package/template/skills/skillopt-sleep/scripts/shell/run_searchqa.sh +0 -40
- package/template/skills/skillopt-sleep/scripts/shell/run_spreadsheetbench.sh +0 -39
- package/template/skills/skillopt-sleep/scripts/shell/train.py +0 -556
|
@@ -0,0 +1,135 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Svelte 5 框架层编码规则与多发问题(runes/$props/插槽/事件修饰符/节点参数同步/弹窗/Store 响应式循环/模板字面量/拖拽)
|
|
3
|
+
alwaysApply: false
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Svelte 5 知识库
|
|
7
|
+
|
|
8
|
+
> 仅涉及 Svelte 5 框架层的约束与多发问题。后端见 `rust.mdc` / `tauri.mdc`,样式见 `tailwind.mdc`,通用见 `general.mdc`。
|
|
9
|
+
|
|
10
|
+
## 一、响应式与语法(runes)
|
|
11
|
+
|
|
12
|
+
- 响应式只用 runes:`$state` / `$derived` / `$effect`,**禁止** `$:` 语法(Svelte 4 废弃)与第三方响应式库(mobx / valtio)
|
|
13
|
+
- 对象 / 数组用 `$state({...})` 即可自动深度响应,无需 `$state.raw`
|
|
14
|
+
- 全局共享状态:在 `*.svelte.ts` 文件中用 `$state` 导出,**禁止**第三方状态管理库
|
|
15
|
+
- 生命周期:挂载一次用 `onMount`;响应式副作用用 `$effect`;清理用 `$effect(() => () => {...})`,**禁止** `beforeUpdate` / `onDestroy`
|
|
16
|
+
|
|
17
|
+
```svelte
|
|
18
|
+
<script lang="ts">
|
|
19
|
+
let { id }: { id: string } = $props(); // 禁止 export let
|
|
20
|
+
let count = $state(0);
|
|
21
|
+
const double = $derived(count * 2);
|
|
22
|
+
</script>
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
### F-svelte-1. Props 用 `$props()`,禁止 `export let`
|
|
26
|
+
Svelte 5 标准写法 `let { x = def } = $props<{ x?: T }>()`。`export let` 仅兼容不推荐。
|
|
27
|
+
|
|
28
|
+
### F-svelte-2. 事件修饰符 `|` 语法禁止
|
|
29
|
+
`onclick|stopPropagation` / `onsubmit|preventDefault` 在 Svelte 5 已废弃,改为显式调用:
|
|
30
|
+
|
|
31
|
+
```svelte
|
|
32
|
+
<form onsubmit={(e) => { e.preventDefault(); handleSubmit(); }}>...</form>
|
|
33
|
+
<div onclick={(e) => e.stopPropagation()}>...</div>
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
### F-svelte-3. 插槽用 `{#snippet}` + `{@render}`,禁止 `<slot />`
|
|
37
|
+
```svelte
|
|
38
|
+
<!-- 子组件 -->
|
|
39
|
+
{#snippet children()}
|
|
40
|
+
{@render children()}
|
|
41
|
+
{/snippet}
|
|
42
|
+
<!-- 父组件 -->
|
|
43
|
+
<Component>
|
|
44
|
+
{#snippet children()}<p>内容</p>{/snippet}
|
|
45
|
+
</Component>
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
### F-svelte-4. 组件名大驼峰 + 大小写敏感
|
|
49
|
+
`<Button>...</Button>` 必须配对,混用 `<Button>...</button>` 编译报 `element_invalid_closing_tag`。所有文件用 `<script lang="ts">`,**禁止** `any`,Props / 事件 / 返回值必须强类型。
|
|
50
|
+
|
|
51
|
+
## 二、节点参数同步(工作流编辑器高发区)
|
|
52
|
+
|
|
53
|
+
### F-svelte-5. 节点参数同步禁止 `$effect` 调 `setParam`
|
|
54
|
+
`$effect` 内调用 `flowStore.setParam()` 读写同一 `$state` 会触发 `effect_update_depth_exceeded`。正确做法:用 `oninput` / `onchange` / `onclick` 显式调用 + `onMount` 初始化;或优先用 composable:
|
|
55
|
+
|
|
56
|
+
```ts
|
|
57
|
+
// 扁平参数
|
|
58
|
+
let p = useNodeParams(id, { key1: 'default' });
|
|
59
|
+
oninput={(e) => p.syncParam('key1', e.target.value)};
|
|
60
|
+
|
|
61
|
+
// 数组参数
|
|
62
|
+
const arr = useArrayParam(id, 'rules', [defaultRule]);
|
|
63
|
+
let rules = $derived(arr.items); // 必须通过 arr.items / $derived 访问,禁止解构 items
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
> `flowStore.setParam` 内部已用 `untrack()` 包裹防止被 `$effect` 误追踪。
|
|
67
|
+
|
|
68
|
+
## 三、多发问题处理模式
|
|
69
|
+
|
|
70
|
+
### P-svelte-1. 确认弹窗不要 `window.confirm()`
|
|
71
|
+
Tauri v2 WebView 中 `window.confirm()` 被 dialog 插件拦截报 `dialog.confirm not allowed`。统一用 `@tauri-apps/plugin-dialog` 的 `confirm`(异步,函数必须 `async` + `await`):
|
|
72
|
+
|
|
73
|
+
```ts
|
|
74
|
+
import { confirm } from '@tauri-apps/plugin-dialog';
|
|
75
|
+
const ok = await confirm('确定删除?', { title: '确认', kind: 'warning' });
|
|
76
|
+
if (!ok) return;
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
### P-svelte-2. Store 展开写未变仍建新引用 → 响应式死循环
|
|
80
|
+
`{...this.xxx}` 展开写 `$state` 即使值相同也会生成新引用,触发 `effect_update_depth_exceeded`。**赋值前先比较,相同则 `return`**,并用 `untrack()` 包裹:
|
|
81
|
+
|
|
82
|
+
```ts
|
|
83
|
+
setNodeColumns(nodeId: string, cols: string[]) {
|
|
84
|
+
untrack(() => {
|
|
85
|
+
const existing = this.columns[nodeId];
|
|
86
|
+
if (existing && existing.length === cols.length && existing.every((v, i) => v === cols[i])) return;
|
|
87
|
+
this.columns = { ...this.columns, [nodeId]: cols };
|
|
88
|
+
});
|
|
89
|
+
}
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
### P-svelte-3. 模板 `{'${expr}'}` 被误解析为 JS 模板字面量插值
|
|
93
|
+
Svelte 5 把 `{'${value}'}` 当作模板字面量插值,若 `value` 作用域未定义抛 `ReferenceError`。显示占位符文本(如 Rust `evalexpr` 的 `${value}`)用拼接写法:
|
|
94
|
+
|
|
95
|
+
```svelte
|
|
96
|
+
<!-- ❌ -->
|
|
97
|
+
<span>{'${value}'}</span>
|
|
98
|
+
<!-- ✅ -->
|
|
99
|
+
<span>{'$'}{value}</span>
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
### P-svelte-4. 自定义下拉菜单 `wheel` 冒泡触发画布缩放
|
|
103
|
+
下拉选项列表滚动时 `wheel` 事件冒泡到 Svelte Flow 画布触发缩放。所有自定义下拉容器必须 `onwheel stopPropagation`(原生 `<select>` 的 OS 弹窗无需处理):
|
|
104
|
+
|
|
105
|
+
```svelte
|
|
106
|
+
<div class="dropdown-menu" onwheel={(e) => e.stopPropagation()}>...</div>
|
|
107
|
+
```
|
|
108
|
+
|
|
109
|
+
### P-svelte-5. Svelte Flow 节点禁止直接变异 `nodes`/`edges` 数组
|
|
110
|
+
`nodes.push()` / `splice()` / `nodes[i] = x` 违反不可变约定。用不可变替换:`nodes = [...nodes, n]` / `nodes = nodes.map(n => ...)`。节点组件内只渲染 `Handle + UI`,不写业务逻辑、不修改全局状态。
|
|
111
|
+
|
|
112
|
+
### P-svelte-6. Svelte Flow `Handle` 用 `position:absolute` 绝对定位
|
|
113
|
+
`<Handle>` 内部 `position: absolute`,**不能**用 flex/grid 排列。多 Handle 必须手动算 `top`(`style="top: {CONTENT_OFFSET + i*HANDLE_STEP}px !important"`),且左右 Handle 用同一公式保证对齐。`!important` 范围严格限制 `top` 一个属性。
|
|
114
|
+
|
|
115
|
+
### P-svelte-7. 前后端参数类型契约必须一一对应
|
|
116
|
+
前端 store 类型(TS)必须与 Rust `#[derive(Deserialize)]` 字段类型对应,否则运行时 deserialize 失败(新增节点最常见错误):
|
|
117
|
+
|
|
118
|
+
| Rust | 前端 |
|
|
119
|
+
|------|------|
|
|
120
|
+
| `Vec<String>` | `string[]` |
|
|
121
|
+
| `Vec<Struct>` | `{ field: type }[]` |
|
|
122
|
+
| `Option<String>` | `string \| undefined` |
|
|
123
|
+
| `bool` / `String` | `boolean` / `string` |
|
|
124
|
+
| `serde_json::Value` | `any` |
|
|
125
|
+
|
|
126
|
+
新增/改字段时前端(flow.ts)与后端(types.rs)**两处同步**,禁止单侧修改。
|
|
127
|
+
|
|
128
|
+
### P-svelte-8. 新增节点前后端都要注册
|
|
129
|
+
前端:`node-types.ts` + `node-categories.ts`;后端:`nodes/mod.rs`(pub use)+ `scheduler.rs` 的 `execute_single_node` 分支。缺任一注册则节点不可用。Rust 处理函数推荐按文件拆分(`executor/nodes/xxx.rs`)。
|
|
130
|
+
|
|
131
|
+
### P-svelte-9. 表单 `<label>` 必须关联控件
|
|
132
|
+
否则 Svelte 编译器警告 `A form label must be associated with a control`:用 `<label>名称 <input/></label>` 包裹,或 `<label for="x">` + `<input id="x">`。
|
|
133
|
+
|
|
134
|
+
## 四、与进化飞轮衔接
|
|
135
|
+
命中上述规则/模式 → 写入记忆;同类 ≥2 次 → 固化规则并回流知识库。
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Tailwind CSS v4 框架层编码规则与多发问题(@import/@theme/@source、禁止魔法色值与魔法数字、桌面尺寸 Token、@layer 分层)
|
|
3
|
+
alwaysApply: false
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Tailwind CSS v4 知识库
|
|
7
|
+
|
|
8
|
+
> 仅涉及 Tailwind v4 样式框架的约束与多发问题。前端框架层见 `vue.mdc` / `svelte.mdc`,桌面尺寸标准见 `general.mdc` 与 Svelte/Vue 分库。
|
|
9
|
+
|
|
10
|
+
## 一、v4 语法迁移(与 v3 不兼容)
|
|
11
|
+
|
|
12
|
+
| 功能 | v3(废弃) | v4(当前) |
|
|
13
|
+
|------|----------|----------|
|
|
14
|
+
| 引入方式 | `@tailwind base/components/utilities` | `@import "tailwindcss"` |
|
|
15
|
+
| 配置文件 | `tailwind.config.js` | `@theme {}` in CSS |
|
|
16
|
+
| 内容扫描 | `content: []` | `@source` in CSS |
|
|
17
|
+
| 主题扩展 | `theme.extend` in JS | `@theme { --color-*: ... }` |
|
|
18
|
+
| 插件注册 | `plugins: []` | `@plugin` in CSS |
|
|
19
|
+
|
|
20
|
+
### F-tailwind-1. 引入与主题用 v4 语法
|
|
21
|
+
`@import "tailwindcss"`,禁止 `@tailwind` 旧指令;主题扩展写在 `@theme {}` 块内(CSS 中),不再用 `tailwind.config.js`(仅需要插件时才建)。
|
|
22
|
+
|
|
23
|
+
### F-tailwind-2. 内容扫描用 `@source`
|
|
24
|
+
在 CSS 中用 `@source "../src/**/*.{svelte,vue,ts}"` 声明扫描路径,禁止 v3 的 `content: []` 数组。
|
|
25
|
+
|
|
26
|
+
## 二、强制规则
|
|
27
|
+
|
|
28
|
+
### F-tailwind-3. 禁止魔法十六进制色值
|
|
29
|
+
优先用官方语义色阶(`gray-50`-`gray-900`、`blue-500` 等),主题色统一在 `@theme` 的 `--color-*` 扩展;透明度用 `bg-blue-500/50` 语法。魔法色值(`#334155` 等)仅限组件特有 `<style scoped>` 中少量使用。
|
|
30
|
+
|
|
31
|
+
### F-tailwind-4. 间距 / 尺寸 / 圆角只用官方刻度
|
|
32
|
+
宽高、内外边距、间距只用预设刻度(`0, 0.5, 1, 1.5, 2, 3, 4, 5, 6, 8, 10, 12, 16...`),禁止 `p-7` / `m-13` 等非标值;必须自定义时在 `@theme` 的 `--spacing-*` 扩展。
|
|
33
|
+
|
|
34
|
+
### F-tailwind-5. `@apply` 必须放在 `@layer` 内
|
|
35
|
+
复用样式用 `@apply` 指令,且必须在 `@layer components` / `@layer utilities` 内;禁止不写 `@layer` 直接全局覆写。
|
|
36
|
+
|
|
37
|
+
### F-tailwind-6. 状态变体 / 响应式只用官方
|
|
38
|
+
状态变体只用 `hover:` / `focus:` / `active:` / `disabled:` / `first:` / `last:` / `dark:`;响应式移动端优先(先默认样式,再逐层 `sm:` / `md:` / `lg:`)。暗黑模式用 `class` 策略(根元素加 `dark` 类)。
|
|
39
|
+
|
|
40
|
+
## 三、多发问题处理模式
|
|
41
|
+
|
|
42
|
+
### P-tailwind-1. 桌面 UI 尺寸对齐 Ant Design Token 标准
|
|
43
|
+
项目中控件尺寸已对齐 Ant Design 设计 Token,新增 UI 时复用而非自造:
|
|
44
|
+
|
|
45
|
+
| 元素 | 尺寸 / Token | 对应 |
|
|
46
|
+
|------|-------------|------|
|
|
47
|
+
| 弹窗圆角 | `rounded-xl` = 12px | — |
|
|
48
|
+
| 基础控件圆角 | `rounded-lg` = 6px | borderRadius = 6 |
|
|
49
|
+
| 小元素圆角 | `rounded-md` = 4px | borderRadiusSM = 4 |
|
|
50
|
+
| 正文 | `text-base` = 14px | fontSize |
|
|
51
|
+
| 小标题 | `text-lg` = 16px / 600 | fontSizeHeading5 |
|
|
52
|
+
| 辅助文字 | `text-sm` = 12px | fontSizeSM |
|
|
53
|
+
| 常规按钮 | `h-10 px-5` | — |
|
|
54
|
+
| 小按钮 | `h-8 px-3` | — |
|
|
55
|
+
| 输入框高度 | 统一 `h-10` | — |
|
|
56
|
+
| 顶部栏高度 | `h-14` / `h-16` | — |
|
|
57
|
+
| 侧边栏宽度 | `w-56` / `w-64` | — |
|
|
58
|
+
|
|
59
|
+
### P-tailwind-2. 节点 / 组件内禁止散落大量相同 Tailwind 类
|
|
60
|
+
重复的类组合优先封装成通用组件(如 shadcn-svelte 的 `<Button>` / `<Input>` / `<Select>`)或 UI 组件,避免在每个节点组件里重复大量原子类。
|
|
61
|
+
|
|
62
|
+
### P-tailwind-3. 自定义下拉 / 弹窗样式必须考虑画布交互
|
|
63
|
+
若下拉菜单位于 Svelte Flow 画布内,需 `onwheel stopPropagation` 防止滚动冒泡缩放(见 `svelte.mdc` P-svelte-4);弹窗统一用 Modal 外壳组件,禁止手写遮罩。
|
|
64
|
+
|
|
65
|
+
## 四、与进化飞轮衔接
|
|
66
|
+
命中上述规则/模式 → 写入记忆;同类 ≥2 次 → 固化规则并回流知识库。
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Tauri 2 框架层编码规则与多发问题(IPC 通信、TS-Rust 命名桥接、WebView2 落盘、Dialog API、双配置同步、配置字段校验)
|
|
3
|
+
alwaysApply: false
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Tauri 2 知识库
|
|
7
|
+
|
|
8
|
+
> 仅涉及 Tauri 框架层的约束与多发问题。后端语言层见 `rust.mdc`,前端框架见 `vue.mdc`。
|
|
9
|
+
|
|
10
|
+
## 一、前后端通信(IPC)
|
|
11
|
+
|
|
12
|
+
- 前端调用:`invoke("command-name", params)`(`@tauri-apps/api/core`)
|
|
13
|
+
- 后端注册:`#[tauri::command("command-name")]`,函数 `pub`
|
|
14
|
+
- 参数:统一用 `{ key: value }` 对象包裹
|
|
15
|
+
- 必须 `await` + `try/catch`
|
|
16
|
+
- 通信**只**用 IPC invoke + Event,**禁止** HTTP / WebSocket / axios / fetch(纯桌面应用无后端服务)
|
|
17
|
+
- 所有文件读写 / 系统操作放 Rust 端
|
|
18
|
+
|
|
19
|
+
### TS ↔ Rust 命令命名桥接
|
|
20
|
+
- 简单参数:Rust 用 `snake_case`,前端用 `camelCase`,Tauri **自动转换**
|
|
21
|
+
```rust
|
|
22
|
+
#[tauri::command] fn load_workflow(workflow_id: String) {}
|
|
23
|
+
// 前端:invoke('load_workflow', { workflowId: 'x' }) // workflowId 自动映射到 workflow_id
|
|
24
|
+
```
|
|
25
|
+
- 结构体参数:外层 key 匹配 Rust 参数名,内层字段用 `#[serde(rename_all = "camelCase")]`
|
|
26
|
+
```rust
|
|
27
|
+
#[derive(Deserialize)]
|
|
28
|
+
#[serde(rename_all = "camelCase")]
|
|
29
|
+
struct SomeRequest { user_name: String }
|
|
30
|
+
// 前端:invoke('save_data', { req: { userName: 'x' } })
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
### AppError + invokeSafe 错误处理(前端侧)
|
|
34
|
+
所有 `#[command]` 返回 `Result<T, AppError>`,`AppError` 用 `#[serde(tag = "type", content = "message")]`(6 变体:`FileNotFound`/`Io`/`Parse`/`Validation`/`Execution`/`Generic`)。前端统一用 `invokeSafe`,错误 sentinel 是 `INVOKE_ERROR = Symbol('invoke_error')`,**判断错误用 `=== INVOKE_ERROR`,禁止 `=== null` 或 `!result`**(Rust `Ok(())` 序列化为 `null` 会被误判)。
|
|
35
|
+
|
|
36
|
+
## 二、强制规则
|
|
37
|
+
|
|
38
|
+
### F9. 文件/目录选择走原生 Dialog API
|
|
39
|
+
**禁止** HTML `<input type="file">` / `webkitdirectory`(WebView2 各版本行为不一致,`file.path` 兼容性不稳)。
|
|
40
|
+
用 `@tauri-apps/plugin-dialog` 的 `open({ multiple, filters })` / `open({ directory: true })`。
|
|
41
|
+
|
|
42
|
+
### F10. 文件落盘走 Tauri Dialog + Rust 写文件
|
|
43
|
+
WebView2 不处理 JS 触发的 `<a download>` 下载,`XLSX.writeFile(wb, name)` 等浏览器下载方法**无法保存**。
|
|
44
|
+
正确:`save()` 原生对话框取路径 → `XLSX.write(wb, { type: 'array' })` 生成 Uint8Array → 通过 Rust 命令(base64 编码后 invoke)写入文件。所有保存操作统一走此链路。
|
|
45
|
+
|
|
46
|
+
## 三、多发问题处理模式
|
|
47
|
+
|
|
48
|
+
### P5. Tauri 配置双文件必须同步
|
|
49
|
+
项目有 `tauri.conf.json`(开发)与 `tauri.prod.conf.json`(生产/调试构建)两个配置,`tb`/`tb-fast` 用后者。改 bundle 配置(resources、icon 等)必须同步改两个文件,否则构建出的安装包缺资源。
|
|
50
|
+
|
|
51
|
+
### P6. 修改 Tauri 配置字段先 cargo check
|
|
52
|
+
`tauri.conf.json` 加了 `tauri-build` crate 不支持的字段,构建报 `unknown field`。改配置前跑 `cargo check` / `npm run cargo:check` 验证字段合法性。
|
|
53
|
+
附带:`languages` 数组用 NSIS `.nlf` 文件名(如 `"SimpChinese"`),**不**用 locale 代码(如 `"zh-CN"`)——schema 通过但 NSIS 运行时因找不到 `.nlf` 报错。
|
|
54
|
+
|
|
55
|
+
### P-tauri-1. 前端文件保存绕过浏览器机制
|
|
56
|
+
任何"导出/下载"功能都不要依赖 WebView2 的浏览器下载能力(不稳定/无效)。统一:Dialog 选路径 → Rust 写文件(见 F10)。
|
|
57
|
+
|
|
58
|
+
### P-tauri-2. 确认弹窗用 Tauri dialog(前端侧)
|
|
59
|
+
`window.confirm()` 在 Tauri v2 WebView 报 `dialog.confirm not allowed`。统一用 `@tauri-apps/plugin-dialog` 的 `confirm`(async/await),前端运行时节详见 `svelte.mdc` P-svelte-1。
|
|
60
|
+
|
|
61
|
+
### P-tauri-3. Tauri 配置多文件必须同步
|
|
62
|
+
除开发 `tauri.conf.json` 外常有多份覆写(如 `tauri.prod.conf.json` 生产/调试、`tauri.win7.conf.json` Win7 兼容)。改 bundle 配置(resources、icon 等)或新增覆写字段时,必须同步所有配置变体,否则对应构建出的安装包缺资源或字段不生效。
|
|
63
|
+
|
|
64
|
+
## 四、与进化飞轮衔接
|
|
65
|
+
命中上述规则/模式 → 写入记忆;同类 ≥2 次 → 固化规则并回流知识库。
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: TypeScript/JavaScript 前端语言层编码规则与多发问题(类型命名、strict、禁用 any、双栏命名、注释语法、依赖安装)
|
|
3
|
+
alwaysApply: false
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# TypeScript / JavaScript 知识库
|
|
7
|
+
|
|
8
|
+
> 仅涉及 TS/JS 语言层的约束与多发问题。跨语言通用见 `general.mdc`,Vue 框架见 `vue.mdc`。
|
|
9
|
+
|
|
10
|
+
## 一、命名与类型约定
|
|
11
|
+
|
|
12
|
+
- 变量 / 函数 / 方法:`camelCase`(首字母小写,后续单词首字母大写)
|
|
13
|
+
- 类 / 构造函数 / 组件:`PascalCase`(首字母大写)
|
|
14
|
+
- 接口 / 类型(TS):`PascalCase`,推荐前缀 `I`
|
|
15
|
+
- 常量:`UPPER_SNAKE_CASE`
|
|
16
|
+
- 前端 composable 函数:`use` + `PascalCase`(如 `usePolling()`、`useAuth()`)
|
|
17
|
+
- 前端文件夹 / 资源文件:小写连字符 `kebab-case`
|
|
18
|
+
- HTML 标签 / 类名 / ID:小写连字符 `kebab-case`(BEM)
|
|
19
|
+
- CSS / SCSS / Less 变量:小写连字符 `kebab-case`
|
|
20
|
+
|
|
21
|
+
## 二、强制规则
|
|
22
|
+
|
|
23
|
+
### F-ts-1. strict 模式 + 禁用 any
|
|
24
|
+
TypeScript 启用 `strict: true`,**禁止**使用 `any` 类型。不确定类型用 `unknown` + 类型收窄。
|
|
25
|
+
|
|
26
|
+
### F13. 注释语法约束(SFC)
|
|
27
|
+
Vue SFC `<script>` 块**禁止** `///` 三斜线注释(TS 三斜线指令语法,普通 `<script setup>` 下导致构建失败),只用 `//` 或 `/* */`。
|
|
28
|
+
|
|
29
|
+
### F6. 样式走 token(前端侧)
|
|
30
|
+
颜色 / 圆角 / 间距 / 字体用 `var(--xxx)` CSS 变量,禁止硬编码(详见 `general.mdc` F6)。
|
|
31
|
+
|
|
32
|
+
## 三、多发问题处理模式
|
|
33
|
+
|
|
34
|
+
### P7. 前端 import 的 npm 包必须先装
|
|
35
|
+
源码 `import` 的包未 `npm install` 写入 `package.json.dependencies`,生产构建(`vite build` / Rolldown)因无法解析失败。任何新增 import 必须先安装并确认进入 `dependencies`。
|
|
36
|
+
|
|
37
|
+
### P-ts-1. 双栏命名不一致
|
|
38
|
+
前端 HTML 用 `kebab-case`、CSS 变量用 `kebab-case`、TS 标识符用 `camelCase`——三者不可混用(如模板写 ` userName `、CSS 写 `--UserName`)。新建文件/类名/变量严格按层对应风格。
|
|
39
|
+
|
|
40
|
+
## 四、与进化飞轮衔接
|
|
41
|
+
命中上述规则/模式 → 写入记忆;同类 ≥2 次 → 固化规则并回流知识库。
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Vue 3 框架层编码规则与多发问题(组件命名、v-model、响应式、弹窗懒加载、DOM 时序)
|
|
3
|
+
alwaysApply: false
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Vue 3 知识库
|
|
7
|
+
|
|
8
|
+
> 仅涉及 Vue 框架层的约束与多发问题。语言层见 `typescript.mdc`,通用见 `general.mdc`。
|
|
9
|
+
|
|
10
|
+
## 一、组件命名约定
|
|
11
|
+
|
|
12
|
+
- 组件文件:`PascalCase`(SFC,如 `CSVProcessor.vue`)
|
|
13
|
+
- 模板中组件名:`kebab-case`(如 `<csv-processor>`)
|
|
14
|
+
- Props:小驼峰;自定义事件名:小写 + 连字符(`update:model-value`)
|
|
15
|
+
- 原子化拆分:偏好大量小组件
|
|
16
|
+
|
|
17
|
+
## 二、强制规则
|
|
18
|
+
|
|
19
|
+
### F2. 组件 v-model 禁止本地 ref + 双 watch 同步
|
|
20
|
+
子组件实现 `v-model` **禁止** `const local = ref(props.modelValue)` + `watch(props.modelValue)` + `watch(local)` 同步写法。
|
|
21
|
+
正确:模板 `:checked="modelValue.includes(x)"`,`@change` 时直接 `emit('update:modelValue', 新数组)`,不经过本地 ref。
|
|
22
|
+
根因:造成 父→子→父→子 循环触发,页面卡顿(已多次复现)。
|
|
23
|
+
|
|
24
|
+
### F7. 响应式强制
|
|
25
|
+
所有页面适配 ≤820px(侧栏折叠、网格变单列)与 ≤480px。用 Grid/Flexbox 弹性布局,禁止 px 固定宽度。每个新组件必须验证 820px / 480px 显示效果。
|
|
26
|
+
|
|
27
|
+
### F8. 弹窗懒加载 / 异步渲染
|
|
28
|
+
- 弹窗先 `visible/open = true` 再加载数据;用 `setTimeout(() => loadData(), 0)` 推迟到下一宏任务,确保弹窗动画优先渲染。
|
|
29
|
+
- **禁止**弹窗打开前 `await` 等数据就绪(阻塞显示)。表格设 `:loading`,大数据用虚拟滚动(`:scroll`),默认每页 ≤50 条。
|
|
30
|
+
|
|
31
|
+
### F12. DOM 时序
|
|
32
|
+
- 获取 DOM 尺寸前加 `setTimeout(..., 50)` 确保 WebView2 渲染完成;不要在 `onMounted` 立即读 `offsetHeight/Width`(容器可能未布局)。
|
|
33
|
+
- 受 `v-show` + `v-if` 时序影响的子组件宽度,用 `nextTick` 延迟加载 + `min-width` 兜底。
|
|
34
|
+
|
|
35
|
+
### F6. 样式走 token(Vue 侧)
|
|
36
|
+
`:root` 集中定义设计令牌,页面引用 `var(--xxx)`(详见 `general.mdc` F6)。新增 token 加到 `:root`,禁止 scoped 内新增。
|
|
37
|
+
|
|
38
|
+
## 三、多发问题处理模式
|
|
39
|
+
|
|
40
|
+
### P-vue-1. 数据刷新竞态
|
|
41
|
+
导入/删除成功后数据选择卡片不自动刷新,需手动刷新页面。在明确的完成事件回调里调用 `refresh()`;注意新表首次创建时 `table_exists` 竞态(导入期间查询可能返回 false)。
|
|
42
|
+
|
|
43
|
+
### P11. 图表空数据 / 大数据量渲染失败
|
|
44
|
+
日期范围变大或数据为空时 ECharts 渲染失败、空白或报错(空数据分支语法错、try/catch 静默后继续跑空数据、`initChart` 创建实例时即设 option 导致后续不更新)。
|
|
45
|
+
处理:`initChart` 只创建实例不设 option;空数据分支声明移出对象字面量;loading watch 加 `nextTick`;大数据用 `dataZoom` 动态适配,对 `null/undefined` 兜底。
|
|
46
|
+
|
|
47
|
+
## 四、与进化飞轮衔接
|
|
48
|
+
命中上述规则/模式 → 写入记忆;同类 ≥2 次 → 固化规则并回流知识库。
|
|
@@ -1,108 +1,33 @@
|
|
|
1
1
|
---
|
|
2
|
-
description:
|
|
3
|
-
Ponytail — 懒人高级开发者模式。强制写最少、最安全的代码。
|
|
4
|
-
每次对话 always 激活,用户说"stop ponytail"退出。
|
|
2
|
+
description: Ponytail - 懒人高级开发者模式。写最少、最安全的代码。
|
|
5
3
|
alwaysApply: true
|
|
6
4
|
---
|
|
7
5
|
|
|
8
|
-
|
|
6
|
+
## Ponytail 核心规则
|
|
9
7
|
|
|
10
|
-
|
|
11
|
-
seen every over-engineered codebase and been paged at 3am for one. The best
|
|
12
|
-
code is the code never written.
|
|
8
|
+
在写任何代码之前,先停在能解决问题的**最低台阶**上,按优先级检查:
|
|
13
9
|
|
|
14
|
-
|
|
10
|
+
1. **这东西真的需要建吗?**(YAGNI)不需要就跳过
|
|
11
|
+
2. **标准库已经提供了吗?** 直接用它
|
|
12
|
+
3. **平台/框架原生功能能覆盖吗?** 直接用它
|
|
13
|
+
4. **已安装的依赖能解决吗?** 直接用它
|
|
14
|
+
5. **能一行搞定吗?** 就写一行
|
|
15
|
+
6. **以上都不行?** 才写最少工作的代码
|
|
15
16
|
|
|
16
|
-
|
|
17
|
-
unsure. Off only: "stop ponytail" / "normal mode". Default: **full**.
|
|
18
|
-
Switch: `ponytail lite|full|ultra`.
|
|
17
|
+
## 执行规则
|
|
19
18
|
|
|
20
|
-
|
|
19
|
+
- 不要创建未经明确要求的抽象
|
|
20
|
+
- 能不引入新依赖就别引入
|
|
21
|
+
- 不要写没人要的样板代码
|
|
22
|
+
- 删除优于添加,无聊优于花哨,文件数量越少越好
|
|
23
|
+
- 质疑复杂需求:"你真的需要 X,还是 Y 可以覆盖?"
|
|
24
|
+
- 当两种方法长度相同时,选边界情况更正确的那一个
|
|
25
|
+
- 有意的简化用 `ponytail:` 注释标注,写明已知上限和升级路径
|
|
21
26
|
|
|
22
|
-
|
|
27
|
+
## 不偷懒的地方(必须认真对待)
|
|
23
28
|
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
6. **Can it be one line?** One line.
|
|
30
|
-
7. **Only then:** the minimum code that works.
|
|
31
|
-
|
|
32
|
-
The ladder is a reflex, not a research project — but it runs *after* you
|
|
33
|
-
understand the problem, not instead of it. Read the task and the code it
|
|
34
|
-
touches first, trace the real flow end to end, then climb. Two rungs work →
|
|
35
|
-
take the higher one and move on. The first lazy solution that works is the
|
|
36
|
-
right one — once you actually know what the change has to touch.
|
|
37
|
-
|
|
38
|
-
**Bug fix = root cause, not symptom.** A report names a symptom. Before you
|
|
39
|
-
edit, grep every caller of the function you're about to touch. The lazy fix IS
|
|
40
|
-
the root-cause fix: one guard in the shared function is a smaller diff than a
|
|
41
|
-
guard in every caller — and patching only the path the ticket names leaves
|
|
42
|
-
every sibling caller still broken. Fix it once, where all callers route through.
|
|
43
|
-
|
|
44
|
-
## Rules
|
|
45
|
-
|
|
46
|
-
- No unrequested abstractions: no interface with one implementation, no factory for one product, no config for a value that never changes.
|
|
47
|
-
- No boilerplate, no scaffolding "for later", later can scaffold for itself.
|
|
48
|
-
- Deletion over addition. Boring over clever, clever is what someone decodes at 3am.
|
|
49
|
-
- Fewest files possible. Shortest working diff wins — but only once you understand the problem. The smallest change in the wrong place isn't lazy, it's a second bug.
|
|
50
|
-
- Complex request? Ship the lazy version and question it in the same response, "Did X; Y covers it. Need full X? Say so." Never stall on an answer you can default.
|
|
51
|
-
- Two stdlib options, same size? Take the one that's correct on edge cases. Lazy means writing less code, not picking the flimsier algorithm.
|
|
52
|
-
- Mark deliberate simplifications with a `ponytail:` comment (`// ponytail: this exists`), simple reads as intent, not ignorance. Shortcut with a known ceiling (global lock, O(n²) scan, naive heuristic)? The comment names the ceiling and the upgrade path: `# ponytail: global lock, per-account locks if throughput matters`.
|
|
53
|
-
|
|
54
|
-
## Output
|
|
55
|
-
|
|
56
|
-
Code first. Then at most three short lines: what was skipped, when to add it.
|
|
57
|
-
No essays, no feature tours, no design notes. If the explanation is longer
|
|
58
|
-
than the code, delete the explanation, every paragraph defending a
|
|
59
|
-
simplification is complexity smuggled back in as prose. Explanation the user
|
|
60
|
-
explicitly asked for (a report, a walkthrough, per-phase notes) is not debt,
|
|
61
|
-
give it in full, the rule is only against unrequested prose.
|
|
62
|
-
|
|
63
|
-
Pattern: `[code] → skipped: [X], add when [Y].`
|
|
64
|
-
|
|
65
|
-
## Intensity
|
|
66
|
-
|
|
67
|
-
| Level | What change |
|
|
68
|
-
|-------|------------|
|
|
69
|
-
| **lite** | Build what's asked, but name the lazier alternative in one line. User picks. |
|
|
70
|
-
| **full** | The ladder enforced. Stdlib and native first. Shortest diff, shortest explanation. Default. |
|
|
71
|
-
| **ultra** | YAGNI extremist. Deletion before addition. Ship the one-liner and challenge the rest of the requirement in the same breath. |
|
|
72
|
-
|
|
73
|
-
Example: "Add a cache for these API responses."
|
|
74
|
-
- lite: "Done, cache added. FYI: `functools.lru_cache` covers this in one line if you'd rather not own a cache class."
|
|
75
|
-
- full: "`@lru_cache(maxsize=1000)` on the fetch function. Skipped custom cache class, add when lru_cache measurably falls short."
|
|
76
|
-
- ultra: "No cache until a profiler says so. When it does: `@lru_cache`. A hand-rolled TTL cache class is a bug farm with a hit rate."
|
|
77
|
-
|
|
78
|
-
## When NOT to be lazy
|
|
79
|
-
|
|
80
|
-
Never simplify away: input validation at trust boundaries, error handling
|
|
81
|
-
that prevents data loss, security measures, accessibility basics, anything
|
|
82
|
-
explicitly requested. User insists on the full version → build it, no
|
|
83
|
-
re-arguing.
|
|
84
|
-
|
|
85
|
-
Never lazy about understanding the problem. The ladder shortens the
|
|
86
|
-
solution, never the reading. Trace the whole thing first — every file the
|
|
87
|
-
change touches, the actual flow — before picking a rung. Laziness that skips
|
|
88
|
-
comprehension to ship a small diff is the dangerous kind: it dresses up as
|
|
89
|
-
efficiency and ships a confident wrong fix. Read fully, then be lazy.
|
|
90
|
-
|
|
91
|
-
Hardware is never the ideal on paper: a real clock drifts, a real sensor
|
|
92
|
-
reads off, a PCA9685 runs a few percent fast. Leave the calibration knob, not
|
|
93
|
-
just less code, the physical world needs tuning a minimal model can't see.
|
|
94
|
-
|
|
95
|
-
Lazy code without its check is unfinished. Non-trivial logic (a branch, a
|
|
96
|
-
loop, a parser, a money/security path) leaves ONE runnable check behind, the
|
|
97
|
-
smallest thing that fails if the logic breaks: an `assert`-based
|
|
98
|
-
`demo()`/`__main__` self-check or one small `test_*.py`. No frameworks, no
|
|
99
|
-
fixtures, no per-function suites unless asked. Trivial one-liners need no
|
|
100
|
-
test, YAGNI applies to tests too.
|
|
101
|
-
|
|
102
|
-
## Boundaries
|
|
103
|
-
|
|
104
|
-
Ponytail governs what you build, not how you talk (pair with Caveman for
|
|
105
|
-
terse prose). "stop ponytail" / "normal mode": revert. Level persists until
|
|
106
|
-
changed or session end.
|
|
107
|
-
|
|
108
|
-
The shortest path to done is the right path.
|
|
29
|
+
- 输入校验
|
|
30
|
+
- 错误处理
|
|
31
|
+
- 安全性
|
|
32
|
+
- 可访问性
|
|
33
|
+
- 任何明确要求的事情
|
|
@@ -12,6 +12,7 @@ alwaysApply: true
|
|
|
12
12
|
```
|
|
13
13
|
self-evolve.mdc(编排层 — 当前文件)
|
|
14
14
|
├── ponytail.mdc → 代码最小化检查(每个操作前)
|
|
15
|
+
├── knowledge/ → 经验知识库(按语言/框架分目录,见下)
|
|
15
16
|
├── CodeGraph MCP → 依赖图分析(重构/调 bug 时)
|
|
16
17
|
├── 核心边界审计 → 删/改功能前确认承重墙(本文件内联)
|
|
17
18
|
├── Impeccable → 设计质量审计(前端修改后自动触发)
|
|
@@ -20,6 +21,29 @@ self-evolve.mdc(编排层 — 当前文件)
|
|
|
20
21
|
post-edit 验证闭环 ← ⭐ 核心
|
|
21
22
|
```
|
|
22
23
|
|
|
24
|
+
## 📚 经验知识库(knowledge/ 目录)
|
|
25
|
+
|
|
26
|
+
> 按**语言 / 框架 / 组件库**分目录组织的经验沉淀。完整索引与归属约定见 `knowledge/README.md`。每次动手前先对照相关知识库自查。
|
|
27
|
+
|
|
28
|
+
```
|
|
29
|
+
knowledge/
|
|
30
|
+
├── general.mdc ← 跨语言通用约束(always 激活)
|
|
31
|
+
├── typescript.mdc ← TS/JS 前端语言层(按需)
|
|
32
|
+
├── vue.mdc ← Vue 框架层(按需)
|
|
33
|
+
├── ant-design-vue.mdc← ant-design-vue 组件库层(按需)
|
|
34
|
+
├── svelte.mdc ← Svelte 5 框架层(按需)
|
|
35
|
+
├── tailwind.mdc ← Tailwind CSS v4 框架层(按需)
|
|
36
|
+
├── shadcn-svelte.mdc← shadcn-svelte 组件库层(按需)
|
|
37
|
+
├── rust.mdc ← Rust 后端层(按需)
|
|
38
|
+
└── tauri.mdc ← Tauri 框架层(按需)
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
- **改代码前 / 遇 bug 时**:命中某条强制规则(F 系列)或已知多发模式(P 系列)→ 直接按既定方案执行,不重复踩坑。
|
|
42
|
+
- 例:组件 v-model 禁止双 watch(vue F2)、文件落盘走 Dialog+Rust(tauri F10)、XLSX 用工厂函数(rust F11)、同一字段 AND 筛选=零行(general P1)、SQLite 中文列名需双引号(general P2)、Svelte `$effect` 调 setParam 死循环(svelte P-svelte-2)、Tauri confirm 替代 window.confirm(svelte P-svelte-1)、Tailwind 禁魔法色值(tailwind F-tailwind-3)、shadcn Select 在画布节点内需 `.nodrag` + `onwheel` 防误触(shadcn F-shadcn-4)、antd 分页走 a-table :pagination 配置(antd F-antd-3)。
|
|
43
|
+
- **按需加载**:`general.mdc` 常驻;语言/框架专项 `alwaysApply: false`,由 description 语义检索在对应代码上下文自动加载,避免一次性注入全部 context。
|
|
44
|
+
- **命中即记录**:凡触发强制规则或命中多发模式,把「命中 + 处理方式」写入记忆。
|
|
45
|
+
- **≥2 次同模式仍无专门规则** → 在 `.codebuddy/rules/` 下新建 `{pattern}.mdc` 固化,并回流到知识库保持单一真源。
|
|
46
|
+
|
|
23
47
|
## 🔄 核心工作流:Post-Edit 验证闭环
|
|
24
48
|
|
|
25
49
|
**每次修改代码后必须执行以下流程:**
|