self-evolve-framework 1.0.8 → 1.1.0

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 (122) hide show
  1. package/bin/cli.js +66 -24
  2. package/package.json +1 -1
  3. package/template/rules/CodeGraph.mdc +23 -0
  4. package/template/rules/Svelte_5.mdc +167 -0
  5. package/template/rules/Svelte_Flow.mdc +176 -0
  6. package/template/rules/Tailwind_CSS_v4.mdc +187 -0
  7. package/template/rules/Tauri.mdc +145 -0
  8. package/template/rules/app-error-pattern.mdc +65 -0
  9. package/template/rules/invoke-safe-pattern.mdc +53 -0
  10. package/template/rules/js.mdc +10 -0
  11. package/template/rules/powershell.mdc +9 -0
  12. package/template/rules//346/227/245/345/277/227.mdc +15 -0
  13. package/template/rules//350/257/267/346/261/202.mdc +49 -0
  14. package/template/skills/caveman/SKILL.md +49 -0
  15. package/template/skills/check/SKILL.md +393 -0
  16. package/template/skills/check/agents/reviewer-architecture.md +39 -0
  17. package/template/skills/check/agents/reviewer-security.md +39 -0
  18. package/template/skills/check/references/persona-catalog.md +56 -0
  19. package/template/skills/check/references/project-context.md +120 -0
  20. package/template/skills/check/references/public-reply.md +14 -0
  21. package/template/skills/check/scripts/audit_signals.py +666 -0
  22. package/template/skills/check/scripts/run-tests.sh +19 -0
  23. package/template/skills/design/SKILL.md +173 -0
  24. package/template/skills/design/references/design-aesthetic-quality.md +67 -0
  25. package/template/skills/design/references/design-data-viz.md +34 -0
  26. package/template/skills/design/references/design-reference.md +295 -0
  27. package/template/skills/design/references/design-tokens.md +45 -0
  28. package/template/skills/design/references/design-traps.md +43 -0
  29. package/template/skills/design-an-interface/SKILL.md +94 -0
  30. package/template/skills/diagnose/SKILL.md +117 -0
  31. package/template/skills/diagnose/scripts/hitl-loop.template.sh +41 -0
  32. package/template/skills/edit-article/SKILL.md +14 -0
  33. package/template/skills/git-guardrails-claude-code/SKILL.md +95 -0
  34. package/template/skills/git-guardrails-claude-code/scripts/block-dangerous-git.sh +25 -0
  35. package/template/skills/grill-me/SKILL.md +10 -0
  36. package/template/skills/grill-with-docs/ADR-FORMAT.md +47 -0
  37. package/template/skills/grill-with-docs/CONTEXT-FORMAT.md +60 -0
  38. package/template/skills/grill-with-docs/SKILL.md +88 -0
  39. package/template/skills/handoff/SKILL.md +15 -0
  40. package/template/skills/health/SKILL.md +260 -0
  41. package/template/skills/health/agents/inspector-context.md +119 -0
  42. package/template/skills/health/agents/inspector-control.md +84 -0
  43. package/template/skills/health/agents/inspector-maintainability.md +55 -0
  44. package/template/skills/health/scripts/check-agent-context.sh +5 -0
  45. package/template/skills/health/scripts/check-doc-refs.sh +8 -0
  46. package/template/skills/health/scripts/check-maintainability.sh +8 -0
  47. package/template/skills/health/scripts/check-verifier-output.sh +5 -0
  48. package/template/skills/health/scripts/check_agent_context.py +444 -0
  49. package/template/skills/health/scripts/check_doc_refs.py +110 -0
  50. package/template/skills/health/scripts/check_maintainability.py +635 -0
  51. package/template/skills/health/scripts/check_verifier_output.py +116 -0
  52. package/template/skills/health/scripts/collect-data.sh +751 -0
  53. package/template/skills/hunt/SKILL.md +232 -0
  54. package/template/skills/hunt/references/failure-patterns.md +138 -0
  55. package/template/skills/hunt/references/ime-unicode.md +58 -0
  56. package/template/skills/hunt/references/logging-techniques.md +72 -0
  57. package/template/skills/hunt/references/rendering-debug.md +34 -0
  58. package/template/skills/improve-codebase-architecture/DEEPENING.md +37 -0
  59. package/template/skills/improve-codebase-architecture/HTML-REPORT.md +123 -0
  60. package/template/skills/improve-codebase-architecture/INTERFACE-DESIGN.md +44 -0
  61. package/template/skills/improve-codebase-architecture/LANGUAGE.md +53 -0
  62. package/template/skills/improve-codebase-architecture/SKILL.md +81 -0
  63. package/template/skills/learn/SKILL.md +140 -0
  64. package/template/skills/migrate-to-shoehorn/SKILL.md +118 -0
  65. package/template/skills/obsidian-vault/SKILL.md +59 -0
  66. package/template/skills/prototype/LOGIC.md +79 -0
  67. package/template/skills/prototype/SKILL.md +30 -0
  68. package/template/skills/prototype/UI.md +112 -0
  69. package/template/skills/qa/SKILL.md +130 -0
  70. package/template/skills/read/SKILL.md +141 -0
  71. package/template/skills/read/references/read-methods.md +129 -0
  72. package/template/skills/read/scripts/fetch.sh +106 -0
  73. package/template/skills/read/scripts/fetch_feishu.py +251 -0
  74. package/template/skills/read/scripts/fetch_local.py +218 -0
  75. package/template/skills/read/scripts/fetch_weixin.py +107 -0
  76. package/template/skills/request-refactor-plan/SKILL.md +68 -0
  77. package/template/skills/review/SKILL.md +78 -0
  78. package/template/skills/rust-auto-fix/SKILL.md +94 -0
  79. package/template/skills/scaffold-exercises/SKILL.md +106 -0
  80. package/template/skills/sdd-dev/SKILL.md +114 -0
  81. package/template/skills/setup-matt-pocock-skills/SKILL.md +121 -0
  82. package/template/skills/setup-matt-pocock-skills/domain.md +51 -0
  83. package/template/skills/setup-matt-pocock-skills/issue-tracker-github.md +22 -0
  84. package/template/skills/setup-matt-pocock-skills/issue-tracker-gitlab.md +23 -0
  85. package/template/skills/setup-matt-pocock-skills/issue-tracker-local.md +19 -0
  86. package/template/skills/setup-matt-pocock-skills/triage-labels.md +15 -0
  87. package/template/skills/setup-pre-commit/SKILL.md +91 -0
  88. package/template/skills/svelte-warnings-fix/SKILL.md +94 -0
  89. package/template/skills/tauri-nsis-installer-icon/SKILL.md +92 -0
  90. package/template/skills/tauri-nsis-installer-icon/references/tauri-nsis-schema.md +71 -0
  91. package/template/skills/tb/SKILL.md +62 -0
  92. package/template/skills/tdd/SKILL.md +109 -0
  93. package/template/skills/tdd/deep-modules.md +33 -0
  94. package/template/skills/tdd/interface-design.md +31 -0
  95. package/template/skills/tdd/mocking.md +59 -0
  96. package/template/skills/tdd/refactoring.md +10 -0
  97. package/template/skills/tdd/tests.md +61 -0
  98. package/template/skills/teach/GLOSSARY-FORMAT.md +35 -0
  99. package/template/skills/teach/LEARNING-RECORD-FORMAT.md +46 -0
  100. package/template/skills/teach/MISSION-FORMAT.md +31 -0
  101. package/template/skills/teach/RESOURCES-FORMAT.md +32 -0
  102. package/template/skills/teach/SKILL.md +91 -0
  103. package/template/skills/think/SKILL.md +184 -0
  104. package/template/skills/to-issues/SKILL.md +83 -0
  105. package/template/skills/to-prd/SKILL.md +74 -0
  106. package/template/skills/triage/AGENT-BRIEF.md +168 -0
  107. package/template/skills/triage/OUT-OF-SCOPE.md +101 -0
  108. package/template/skills/triage/SKILL.md +103 -0
  109. package/template/skills/ubiquitous-language/SKILL.md +93 -0
  110. package/template/skills/ver/SKILL.md +62 -0
  111. package/template/skills/write/SKILL.md +209 -0
  112. package/template/skills/write/references/write-en.md +199 -0
  113. package/template/skills/write/references/write-product-localization.md +43 -0
  114. package/template/skills/write/references/write-zh-bilingual.md +59 -0
  115. package/template/skills/write/references/write-zh-prose.md +50 -0
  116. package/template/skills/write/references/write-zh-release-notes.md +40 -0
  117. package/template/skills/write/references/write-zh.md +721 -0
  118. package/template/skills/write-a-skill/SKILL.md +117 -0
  119. package/template/skills/writing-beats/SKILL.md +52 -0
  120. package/template/skills/writing-fragments/SKILL.md +75 -0
  121. package/template/skills/writing-shape/SKILL.md +64 -0
  122. package/template/skills/zoom-out/SKILL.md +7 -0
@@ -0,0 +1,187 @@
1
+ ---
2
+ description: Tailwind CSS v4 项目编码规范(严格遵循官方标准)
3
+ alwaysApply: true
4
+ enabled: true
5
+ updatedAt: 2026-05-13T14:14:00.000Z
6
+ provider:
7
+ ---
8
+
9
+ Tailwind CSS v4 项目编码规范(严格遵循官方标准)
10
+ 完全对齐 Tailwind CSS v4 官方设计理念、书写规范、分层原则、最佳实践,不自定义非标写法、不滥用随意堆砌、不脱离官方语义。适用:Tailwind CSS v4,适配 Svelte5 / Vue / React / Tauri 所有项目。
11
+
12
+ 一、核心原则(官方底层规范)
13
+ 优先原子类,少写自定义 CSS,遵循「工具优先」官方理念。
14
+ 语义化优先:优先用官方内置预设类,不随意造自定义工具类。
15
+ 样式内聚在元素上,尽量不拆冗余全局 CSS。
16
+ 遵循默认设计系统:间距、圆角、阴影、色值严格使用官方预设刻度,不写魔法数值。
17
+ 最小自定义:仅在官方无对应语义时,才扩展主题。
18
+
19
+ 二、项目引入与初始化规范(Tailwind v4 标准)
20
+ 1. 入口引入规范(v4 新语法)
21
+ 全局只引入一次 Tailwind 基础样式
22
+ 禁止多处重复引入、禁止混用 CDN + 本地版
23
+
24
+ css
25
+ /* 全局主样式文件 src/app.css */
26
+ @import "tailwindcss";
27
+ 2. 主题扩展规范(v4 新方式)
28
+ v4 不再使用 tailwind.config.js,改用 CSS @theme 指令
29
+ css
30
+ /* 在全局 CSS 文件中扩展主题 */
31
+ @import "tailwindcss";
32
+
33
+ @theme {
34
+ /* 扩展颜色 */
35
+ --color-brand: #3490dc;
36
+ --color-brand-light: #82c4f8;
37
+
38
+ /* 扩展间距 */
39
+ --spacing-section: 5rem;
40
+
41
+ /* 扩展圆角 */
42
+ --radius-card: 1rem;
43
+ }
44
+ 3. 内容扫描规范(v4 新方式)
45
+ v4 不再使用 tailwind.config.js 的 content 字段,改用 CSS @source 指令
46
+ css
47
+ @import "tailwindcss";
48
+
49
+ /* 指定需要扫描的源文件目录 */
50
+ @source "../src";
51
+ @source "../components";
52
+ 4. 配置文件规范(v4 不再需要)
53
+ v4 默认不需要 tailwind.config.js / tailwind.config.ts 文件
54
+ 所有配置都在 CSS 文件中通过 @theme、@source 等指令完成
55
+ 仅在需要插件或特殊配置时,才创建 tailwind.config.ts
56
+
57
+ 三、类名书写顺序规范(官方推荐排序规则)
58
+ 严格按官方约定顺序书写,固定顺序,便于维护、可读性统一:
59
+ 布局定位:container / fixed / absolute / relative / static
60
+ 盒模型:w-* h-* min-w-* max-h-* m-* p-*
61
+ 弹性 / 网格:flex grid justify-* items-* gap-*
62
+ 边框圆角:border border-* rounded-*
63
+ 背景颜色:bg-*
64
+ 文字排版:text-* font-* leading-* tracking-*
65
+ 阴影层级:shadow-* z-*
66
+ 交互状态:hover: focus: active: disabled:
67
+ 响应式:sm: md: lg: xl: 放最后层叠
68
+
69
+ ✅ 正确示例
70
+ html
71
+ <div class="relative w-full p-4 flex items-center gap-2 rounded-lg bg-white text-gray-700 shadow hover:shadow-md md:p-6"></div>
72
+ ❌ 禁止:随意乱序、状态类穿插在中间。
73
+
74
+ 四、响应式断点规范(官方默认断点不修改)
75
+ 严格使用官方默认断点,不擅自改断点像素:
76
+ sm:640px
77
+ md:768px
78
+ lg:1024px
79
+ xl:1280px
80
+ 2xl:1536px
81
+
82
+ 书写规则:移动端优先,先写默认样式,再逐层加 sm:/md:/lg: 覆盖。
83
+ html
84
+ <div class="text-sm md:text-base lg:text-lg"></div>
85
+
86
+ 五、状态变体规范(官方标准)
87
+ 只使用官方原生变体,不自定义伪类语法:
88
+ 悬浮:hover:
89
+ 聚焦:focus:
90
+ 激活:active:
91
+ 禁用:disabled:
92
+ 子元素:first: last: odd: even:
93
+ 暗黑模式:dark:
94
+
95
+ 写法:变体前缀在前,基础类在后
96
+ html
97
+ <button class="bg-blue-500 hover:bg-blue-600 disabled:opacity-50"></button>
98
+
99
+ 六、颜色使用规范(官方)
100
+ 优先使用官方语义色阶:gray-50 ~ gray-900、blue-500 等
101
+ 禁止随意写十六进制、rgb 魔法色值
102
+ 项目主题色统一在 @theme 的 --color-* 中扩展
103
+ 透明度统一用官方语法:bg-blue-500/50
104
+
105
+ 七、间距、尺寸规范(禁止魔法数字)
106
+ 宽高、内边距、外边距、间距 只用官方预设刻度:
107
+ 0, 0.5, 1, 1.5, 2, 3, 4, 5, 6, 8, 10 …
108
+ 禁止:p-7 m-13 这类非预设非标值
109
+ 必须自定义时,统一在 @theme 的 --spacing-* 中扩展,不直接写任意值
110
+
111
+ 八、复用样式规范(官方三种标准方式)
112
+ 1. 少量样式:直接写原子类,不抽离
113
+ 2. 中等复用:使用 @apply(官方允许)
114
+ css
115
+ @layer components {
116
+ .btn-primary {
117
+ @apply px-4 py-2 rounded-lg bg-blue-500 text-white hover:bg-blue-600;
118
+ }
119
+ }
120
+ 强制规则:@apply 必须放在 @layer components / @layer utilities 内,禁止裸写。
121
+
122
+ 3. 全局通用组件:封装成 Svelte/Vue 组件,不堆砌全局 CSS
123
+ 禁止:动辄写大量自定义全局 class 替代原子类。
124
+
125
+ 九、Layer 分层规范(官方强制层级)
126
+ 严格遵循 Tailwind 三层层级,不打乱优先级:
127
+ @layer base:基础标签默认样式(html、body、h1~h6)
128
+ @layer components:可复用组件样式
129
+ @layer utilities:自定义工具类
130
+
131
+ 禁止不写 @layer 直接全局覆写,避免优先级错乱。
132
+
133
+ 十、暗黑模式规范(官方标准)
134
+ 采用官方 class 模式,不混用 media 模式:
135
+ css
136
+ /* 在 tailwind.config.ts 中配置(如需要) */
137
+ export default {
138
+ darkMode: 'class'
139
+ }
140
+ 页面通过给根元素加 dark 类切换,样式用 dark: 前缀。
141
+
142
+ 十一、禁止与不推荐写法(官方避坑)
143
+ ❌ 禁止
144
+ 大量写自定义原生 CSS 替代原子类
145
+ 随意修改官方默认断点、默认色板
146
+ 滥用任意值语法 w-[123px] 当成常态
147
+ class 名无顺序、杂乱堆砌
148
+ 在组件 style 里写大量非工具类样式
149
+ 使用 tailwind.config.js 的 theme.extend(v4 已废弃)
150
+
151
+ ✅ 允许
152
+ 必要时用 [] 任意值,但尽量少用、统一注释
153
+ 在 @theme 中增量扩展主题
154
+ 合理使用 @apply 做通用组件抽象
155
+
156
+ 十二、适配 Svelte5 / Tauri / Svelte Flow 项目附加规则
157
+ Svelte 组件全部样式优先用 Tailwind 原子类,少用 <style scoped>
158
+ Svelte Flow 自定义节点样式、画布控件统一用 Tailwind,不写冗余原生 CSS
159
+ Tauri 窗口、全局布局全部用 Tailwind 布局类控制
160
+ 所有组件严格遵循「类名排序、响应式 mobile-first、无魔法值」
161
+
162
+ 十三、AI 编码强制约束规则
163
+ 所有样式优先使用 Tailwind v4 官方原子类,不主动生成自定义 CSS;
164
+ class 严格按「布局→盒模型→弹性→边框→背景→文字→阴影→状态→响应式」固定顺序;
165
+ 禁止使用魔法数字、非标间距、随意十六进制色;
166
+ 复用样式优先封装组件,其次 @apply 并放入对应 @layer;
167
+ 响应式严格移动端优先,使用官方默认断点不改动;
168
+ 不滥用 [] 任意值,仅特殊场景少量使用;
169
+ v4 项目必须使用 @import "tailwindcss" 引入,禁止使用旧的 @tailwind 指令。
170
+
171
+ 十四、Tailwind v4 与 v3 主要差异对照表
172
+ | 功能 | Tailwind v3(已废弃) | Tailwind v4(当前使用) |
173
+ |------|---------------------|----------------------|
174
+ | 引入方式 | @tailwind base/components/utilities | @import "tailwindcss" |
175
+ | 配置文件 | tailwind.config.js | 无(改用 CSS @theme) |
176
+ | 内容扫描 | content: [] in config | @source in CSS |
177
+ | 主题扩展 | theme.extend in JS | @theme { } in CSS |
178
+ | 插件注册 | plugins: [] in config | @plugin in CSS |
179
+ | 前缀 | prefix in config | @prefix in CSS |
180
+
181
+ 十五、v4 项目结构示例
182
+ plaintext
183
+ src/
184
+ ├── app.css # 全局样式(包含 @import "tailwindcss" 和 @theme)
185
+ ├── routes/ # 路由页面
186
+ ├── lib/ # 工具、组件、store
187
+ └── tailwind.config.ts # 可选,仅在使用插件时需要
@@ -0,0 +1,145 @@
1
+ ---
2
+ description:
3
+ alwaysApply: true
4
+ enabled: true
5
+ updatedAt: 2026-05-13T04:29:03.207Z
6
+ provider:
7
+ ---
8
+
9
+ Tauri 项目编码规范(严格遵循 Tauri 官方最新规范)
10
+ 完全对齐 Tauri 官方文档、官方最佳实践、安全准则、架构设计与 API 约定,无自定义扩展、无野路子写法。
11
+ 适用:Tauri v2 + Tauri CLI 官方标准,前端可搭配 Svelte / React / Vue / Vanilla。
12
+ 一、核心架构规范(官方强制标准)
13
+ Tauri 官方唯一架构:
14
+ 前端层:Web 技术(HTML/JS/CSS/ 框架)
15
+ 核心层:Rust 后端(src-tauri/)
16
+ IPC 通信:唯一官方通信机制(禁止直接跨域 / 原生调用)
17
+ 命令式 API:前端只能调用 Rust 注册的命令,不能直接操作系统
18
+ 二、项目结构规范(官方固定目录结构)
19
+ plaintext
20
+ 你的项目/
21
+ ├── src/ # 前端源码(官方标准)
22
+ ├── src-tauri/ # Tauri 核心目录(官方固定名称,禁止修改)
23
+ │ ├── build.rs # 官方构建脚本(禁止删除)
24
+ │ ├── Cargo.toml # Rust 配置(严格遵循官方格式)
25
+ │ ├── tauri.conf.json # Tauri 主配置(官方 schema 严格校验)
26
+ │ └── src/
27
+ │ ├── lib.rs # 官方推荐:命令与逻辑入口
28
+ │ └── main.rs # 程序主入口(官方固定代码)
29
+ └── package.json # 前端依赖 + Tauri 脚本
30
+ 三、tauri.conf.json 规范(官方严格 Schema)
31
+ 1. 必须遵守的官方字段规则
32
+ json
33
+ {
34
+ "$schema": "./node_modules/@tauri-apps/cli/schema.json",
35
+ "productName": "你的应用名",
36
+ "version": "0.1.0",
37
+ "identifier": "com.你的域名.应用名",
38
+ "build": {
39
+ "beforeDevCommand": "你的前端启动命令",
40
+ "beforeBuildCommand": "你的前端构建命令",
41
+ "devPath": "http://你的开发地址",
42
+ "distDir": "../dist" // 前端输出目录(官方标准)
43
+ },
44
+ "bundle": {
45
+ "active": true,
46
+ "targets": "all",
47
+ "icon": [
48
+ "icons/32x32.png",
49
+ "icons/128x128.png",
50
+ "icons/256x256.png",
51
+ "icons/512x512.png"
52
+ ]
53
+ }
54
+ }
55
+ 2. 官方强制规则
56
+ 必须包含 $schema 用于校验
57
+ identifier 必须是反向域名格式
58
+ icon 必须提供多尺寸,严格按官方要求
59
+ 禁止添加非官方字段
60
+ 四、Rust 代码规范(官方标准)
61
+ 1. main.rs(官方固定模板)
62
+ rust
63
+ 运行
64
+ // 官方唯一标准写法,禁止修改
65
+ fn main() {
66
+ tauri::Builder::default()
67
+ .run(tauri::generate_context!())
68
+ .expect("error while running tauri application");
69
+ }
70
+ 2. 命令注册规范(官方唯一方式)
71
+ rust
72
+ 运行
73
+ // lib.rs(官方推荐)
74
+ use tauri::command;
75
+
76
+ // 官方标准命令
77
+ #[command]
78
+ fn greet(name: &str) -> String {
79
+ format!("Hello, {}!", name)
80
+ }
81
+
82
+ // 官方标准初始化
83
+ #[tauri::main]
84
+ fn main() {
85
+ tauri::Builder::default()
86
+ .invoke_handler(tauri::generate_handler![greet]) // 命令注册
87
+ .run(tauri::generate_context!())
88
+ .expect("error while running tauri application");
89
+ }
90
+ 3. Rust 调用规范
91
+ 所有前端可调用功能必须用 #[command] 注册
92
+ 禁止无权限、无校验的系统操作
93
+ 错误处理必须使用 Result<T, E>
94
+ 五、IPC / 前端调用规范(官方安全准则)
95
+ 1. 前端调用 Rust 命令(官方唯一 API)
96
+ javascript
97
+ 运行
98
+ import { invoke } from '@tauri-apps/api/core'
99
+
100
+ // 官方标准调用方式
101
+ const result = await invoke('greet', { name: 'Tauri' })
102
+ 2. 官方安全铁律
103
+ 禁止前端直接访问文件系统 / 网络 / 原生能力
104
+ 所有操作必须走 Rust 命令
105
+ 最小权限原则:只声明需要的权限
106
+ 六、权限规范(官方 CSP + 权限白名单)
107
+ 1. tauri.conf.json 权限声明
108
+ json
109
+ "permissions": [
110
+ "path",
111
+ "fs:read",
112
+ "window:allow-close"
113
+ ]
114
+ 只添加业务需要的权限
115
+ 禁止使用 * 通配符
116
+ 严格遵循官方权限列表
117
+ 2. CSP 内容安全策略(官方强制)
118
+ json
119
+ "csp": "default-src 'self'; img-src 'self' data: asset:;"
120
+ 禁止 unsafe-inline、unsafe-eval
121
+ 遵循最小信任原则
122
+ 七、窗口管理规范(官方 API)
123
+ javascript
124
+ 运行
125
+ import { getCurrentWindow } from '@tauri-apps/api/window'
126
+
127
+ // 官方标准用法
128
+ const appWindow = getCurrentWindow()
129
+ await appWindow.maximize()
130
+ await appWindow.setSize({ width: 800, height: 600 })
131
+ 禁止直接操作 DOM window 模拟窗口
132
+ 只使用官方 @tauri-apps/api/window
133
+ 八、插件使用规范(官方)
134
+ 只使用 @tauri-apps/plugin-* 官方插件
135
+ 禁止引入第三方原生桥接库
136
+ 插件必须在 tauri.conf.json 正确配置
137
+ 九、开发与构建命令(官方唯一标准)
138
+ bash
139
+ 运行
140
+ # 开发模式
141
+ tauri dev
142
+
143
+ # 生产构建
144
+ tauri build
145
+ 禁止使用自定义编译脚本绕过官方 CLI。
@@ -0,0 +1,65 @@
1
+ ---
2
+ description: 强制使用 AppError 统一错误类型的规则。
3
+ alwaysApply: true
4
+ ---
5
+
6
+ # AppError Rust 错误规范
7
+
8
+ > SheetFlow 项目特有规则。所有 `#[command]` 必须返回 `Result<T, AppError>`,
9
+ > 使用 `src-tauri/src/error.rs` 中定义的 6 个变体。
10
+
11
+ ## 强制规则
12
+
13
+ ### 所有 #[command] 必须返回 Result<T, AppError>
14
+
15
+ ```rust
16
+ use crate::error::AppError;
17
+
18
+ // ✅ 正确
19
+ #[command]
20
+ fn some_command(input: String) -> Result<String, AppError> {
21
+ Ok(input.trim().to_string())
22
+ }
23
+
24
+ // ❌ 禁止 — 返回 Result<T, String>
25
+ // ❌ 禁止 — 无错误处理
26
+ // ❌ 禁止 — 使用 anyhow::Error
27
+ ```
28
+
29
+ ### AppError 的 6 个变体
30
+
31
+ | 变体 | 用途 | 示例 |
32
+ |------|------|------|
33
+ | `AppError::FileNotFound` | 文件/路径不存在 | `AppError::FileNotFound(path)` |
34
+ | `AppError::Io` | IO 错误 | `AppError::Io(e)` |
35
+ | `AppError::Parse` | 解析失败(JSON/CSV) | `AppError::Parse(msg)` |
36
+ | `AppError::Validation` | 参数校验失败 | `AppError::Validation(msg)` |
37
+ | `AppError::Execution` | 执行时错误 | `AppError::Execution(msg)` |
38
+ | `AppError::Generic` | 其他错误 | `AppError::Generic(msg)` |
39
+
40
+ ```rust
41
+ // ✅ 正确 — 用对应变体
42
+ Err(AppError::Validation("参数不能为空".into()))
43
+
44
+ // ❌ 禁止 — 全部用 Generic
45
+ Err(AppError::Generic("参数不能为空".into()))
46
+ ```
47
+
48
+ ### 前端接收格式
49
+
50
+ `AppError` 使用 `#[serde(tag = "type", content = "message")]`,前端收到:
51
+
52
+ ```json
53
+ { "type": "Validation", "message": "参数不能为空" }
54
+ ```
55
+
56
+ ## Validation 错误特殊处理
57
+
58
+ Validation 类型的错误会 re-throw(不由 invokeSafe 吞掉),供调用方做表单校验反馈。
59
+
60
+ ## 新增命令流程
61
+
62
+ 1. 新建 `.rs` 文件 → `src-tauri/src/commands/`
63
+ 2. 在 `mod.rs` 注册模块 + `lib.rs` 注册命令
64
+ 3. 返回类型用 `Result<T, AppError>`
65
+ 4. 错误用对应的变体,不要全部塞 Generic
@@ -0,0 +1,53 @@
1
+ ---
2
+ description: 强制使用 invokeSafe + INVOKE_ERROR 模式的规则。防止前端 IPC 调用错误处理不一致。
3
+ alwaysApply: true
4
+ ---
5
+
6
+ # invokeSafe 调用规范
7
+
8
+ > SheetFlow 项目特有规则。当 Rust `#[command]` 返回 `Result<T, AppError>` 时,`Ok(())` 会被序列化为 JSON `null`,
9
+ > 导致 `if (!result)` 错误地认为"结果是空"。必须统一使用 `invokeSafe` + `=== INVOKE_ERROR` 判断。
10
+
11
+ ## 强制规则
12
+
13
+ ### 所有 IPC 调用必须使用 invokeSafe
14
+
15
+ ```typescript
16
+ import { invokeSafe, INVOKE_ERROR } from '$lib/utils/invokeSafe'
17
+
18
+ // ✅ 正确
19
+ const result = await invokeSafe('some_command', { param: value })
20
+ if (result === INVOKE_ERROR) return
21
+
22
+ // ❌ 禁止 — 直接 invoke
23
+ const result = await invoke('some_command', { param: value })
24
+
25
+ // ❌ 禁止 — 用 !result 判断错误
26
+ if (!result) // Ok(()) 是 null,会被误判
27
+
28
+ // ❌ 禁止 — 用 result === null 判断
29
+ if (result === null) // 同上
30
+ ```
31
+
32
+ ### 判断错误的唯一正确方式
33
+
34
+ ```typescript
35
+ // ✅ 唯一正确
36
+ if (result === INVOKE_ERROR) { /* 错误处理 */ }
37
+
38
+ // ❌ 禁止的所有写法
39
+ if (!result) // Ok(()) 是 null
40
+ if (result == null) // 宽松比较也会命中 null
41
+ if (result === null) // 明确 null 检查也错
42
+ ```
43
+
44
+ ## 例外
45
+
46
+ 只有不需要返回值的纯 UI 操作(如 `appWindow.close()`)可以不经过 invokeSafe。
47
+
48
+ ## 验证
49
+
50
+ ```typescript
51
+ // commit 前自审:搜索 invoke( 是否被直接使用
52
+ // grep -n "invoke(" src/**/*.svelte src/**/*.ts | grep -v "invokeSafe"
53
+ ```
@@ -0,0 +1,10 @@
1
+ ---
2
+ description:
3
+ alwaysApply: true
4
+ enabled: true
5
+ updatedAt: 2026-05-10T07:40:32.184Z
6
+ provider:
7
+ ---
8
+
9
+ 避免发生 TDZ 问题
10
+ 避免发生 函数 作用域问题
@@ -0,0 +1,9 @@
1
+ ---
2
+ description:
3
+ alwaysApply: true
4
+ enabled: true
5
+ updatedAt: 2026-05-09T11:25:21.078Z
6
+ provider:
7
+ ---
8
+
9
+ 1.使用Get-Content命令时,增加-Encoding UTF8 参数
@@ -0,0 +1,15 @@
1
+ ---
2
+ description:
3
+ alwaysApply: true
4
+ enabled: true
5
+ updatedAt: 2026-05-11T07:40:04.494Z
6
+ provider:
7
+ ---
8
+
9
+ *.rs 文件日志级别使用规范:
10
+ use log::{info, error, debug, warn};
11
+
12
+ info!():用于记录常规的运行信息,如服务启动、命令调用开始、任务执行成功等
13
+ error!():用于记录错误信息,如文件读取失败、数据解析失败、命令执行异常等
14
+ debug!():用于记录调试信息,在开发阶段使用,生产环境可关闭,如参数接收、关键变量打印等
15
+ warn!():用于记录警告信息,如非关键性问题、文件不存在、配置缺失等
@@ -0,0 +1,49 @@
1
+ ---
2
+ description:
3
+ alwaysApply: true
4
+ enabled: true
5
+ updatedAt: 2026-05-11T07:37:36.959Z
6
+ provider:
7
+ ---
8
+
9
+ 你是Tauri + Vue3 + TypeScript + Rust项目的专属助手,所有输出必须严格遵守以下规范:
10
+
11
+ 一、项目基础架构约定
12
+ - 技术栈:Tauri 2 + Vue 3 + TypeScript + Rust
13
+ - 前端:Vue 3 单文件组件,统一使用 <script setup lang="ts"> 组合式API
14
+ - 后端:Rust 命令,使用 #[tauri::command] 宏定义
15
+ - 前后端通信:仅使用 @tauri-apps/api/core 的 invoke 方法调用,禁止使用其他API
16
+
17
+ 二、前端调用格式(强制)
18
+ 1. 必须从 '@tauri-apps/api/core' 导入 invoke
19
+ 2. 必须使用 await 异步调用,入参统一用对象包裹
20
+ 3. 必须添加 try/catch 异常捕获
21
+ 4. 固定模板:
22
+ import { invoke } from '@tauri-apps/api/core'
23
+ try {
24
+ const result = await invoke('rust_command_name', {
25
+ param1: value1,
26
+ param2: value2
27
+ })
28
+ // 成功逻辑
29
+ } catch (err) {
30
+ console.error('调用失败:', err)
31
+ // 错误处理
32
+ }
33
+
34
+ 三、Rust后端命令规范(强制)
35
+ 1. 必须用 #[tauri::command] 标记,函数必须 pub 公开
36
+ 2. 函数参数名与前端 invoke 入参的 key 完全对应(蛇形命名)
37
+ 3. 返回值统一用 Result<T, String>,成功返回 Ok(数据),失败返回 Err("错误信息")
38
+ 4. 命令名与前端 invoke 第一个参数完全一致(蛇形命名)
39
+ 5. 所有文件读写、系统操作、耗时逻辑必须放在 Rust 端,前端只做调用与UI渲染
40
+
41
+ 四、命名与代码规范
42
+ 1. 前端:变量/函数名用小驼峰 camelCase,类型/接口名用 PascalCase
43
+ 2. Rust:函数/变量名用蛇形命名 snake_case,类型名用 PascalCase
44
+ 3. 代码必须添加必要注释,禁止使用 any 类型
45
+ 4. 生成前后端代码时,同时提供:前端调用示例 + Rust 命令实现 + main.rs 注册代码
46
+
47
+ 五、输出要求
48
+ - 所有生成的代码必须可直接复制运行,无需额外修改格式
49
+ - 前后端参数、命名、类型必须完全对齐,避免类型错误
@@ -0,0 +1,49 @@
1
+ ---
2
+ name: caveman
3
+ description: >
4
+ Ultra-compressed communication mode. Cuts token usage ~75% by dropping
5
+ filler, articles, and pleasantries while keeping full technical accuracy.
6
+ Use when user says "caveman mode", "talk like caveman", "use caveman",
7
+ "less tokens", "be brief", or invokes /caveman.
8
+ ---
9
+
10
+ Respond terse like smart caveman. All technical substance stay. Only fluff die.
11
+
12
+ ## Persistence
13
+
14
+ ACTIVE EVERY RESPONSE once triggered. No revert after many turns. No filler drift. Still active if unsure. Off only when user says "stop caveman" or "normal mode".
15
+
16
+ ## Rules
17
+
18
+ Drop: articles (a/an/the), filler (just/really/basically/actually/simply), pleasantries (sure/certainly/of course/happy to), hedging. Fragments OK. Short synonyms (big not extensive, fix not "implement a solution for"). Abbreviate common terms (DB/auth/config/req/res/fn/impl). Strip conjunctions. Use arrows for causality (X -> Y). One word when one word enough.
19
+
20
+ Technical terms stay exact. Code blocks unchanged. Errors quoted exact.
21
+
22
+ Pattern: `[thing] [action] [reason]. [next step].`
23
+
24
+ Not: "Sure! I'd be happy to help you with that. The issue you're experiencing is likely caused by..."
25
+ Yes: "Bug in auth middleware. Token expiry check use `<` not `<=`. Fix:"
26
+
27
+ ### Examples
28
+
29
+ **"Why React component re-render?"**
30
+
31
+ > Inline obj prop -> new ref -> re-render. `useMemo`.
32
+
33
+ **"Explain database connection pooling."**
34
+
35
+ > Pool = reuse DB conn. Skip handshake -> fast under load.
36
+
37
+ ## Auto-Clarity Exception
38
+
39
+ Drop caveman temporarily for: security warnings, irreversible action confirmations, multi-step sequences where fragment order risks misread, user asks to clarify or repeats question. Resume caveman after clear part done.
40
+
41
+ Example -- destructive op:
42
+
43
+ > **Warning:** This will permanently delete all rows in the `users` table and cannot be undone.
44
+ >
45
+ > ```sql
46
+ > DROP TABLE users;
47
+ > ```
48
+ >
49
+ > Caveman resume. Verify backup exist first.