1- # RustFS.com 项目 Cursor Rules
1+ # RustFS.com 项目开发规范
22
3- ## 核心目标
4- 这套 Cursor rule 适用于所有编程任务,要求工程师以**高级工程师的视角**,严格按照流程执行任务,确保代码改动精准、高效,且不会引入问题或不必要的复杂性。
3+ ## 📋 项目概述
54
6- ## 规则的五个关键步骤
5+ RustFS.com 是一个基于 Next.js 的现代化分布式存储系统官网,采用 TypeScript + Tailwind CSS 技术栈,支持深色模式和响应式设计。
76
8- ### 1. 明确任务范围
9- - 在写代码前,先分析任务,明确目标
10- - 制定清晰的计划,列出需要修改的函数、模块或组件,并说明原因
11- - 只有在计划清晰且经过深思熟虑后,才开始写代码
7+ ## 🎯 核心开发原则
128
13- ### 2. 精准定位代码修改点
14- - 确定需要修改的具体文件和代码行
15- - 避免无关文件的改动,若涉及多个文件,需明确说明每个文件的改动理由
16- - 除非任务明确要求,否则不创建新抽象或重构代码
9+ ### 五大执行步骤
1710
18- ### 3. 最小化、隔离化的代码改动
19- - 只编写任务直接所需的代码
20- - 避免添加不必要的日志、注释、测试、待办事项或错误处理
21- - 不要进行"顺手"的额外修改,确保新代码不干扰现有功能
11+ #### 1. 任务分析与规划
12+ - **明确目标**:在开始编码前,深入理解任务需求和预期结果
13+ - **制定计划**:列出需要修改的具体文件、组件和函数,说明修改原因
14+ - **风险评估**:评估改动对现有功能的影响,制定回滚方案
2215
23- ### 4. 严格检查代码
24- - 检查代码的正确性、是否符合任务范围,以及是否会引发副作用
25- - 确保代码与现有代码风格一致,防止破坏已有功能
26- - 评估改动是否会影响下游系统
16+ #### 2. 精准代码定位
17+ - **文件识别**:确定需要修改的具体文件和代码行号
18+ - **影响分析**:避免无关文件的改动,明确每个文件的修改理由
19+ - **最小化原则**:除非任务明确要求,否则不创建新的抽象层或重构现有代码
2720
28- ### 5. 清晰交付成果
29- - 总结改动的具体内容和原因
30- - 列出所有修改的文件及其具体变更
31- - 说明任何假设或潜在风险,供他人审查
21+ #### 3. 最小化代码改动
22+ - **专注核心**:只编写任务直接所需的代码
23+ - **避免冗余**:不添加不必要的日志、注释、测试或错误处理
24+ - **隔离性**:确保新代码不会干扰现有功能,保持代码的独立性
3225
33- ## 核心原则
34- - **不即兴发挥**:严格按照任务要求执行,不随意创新
35- - **不过度设计**:避免复杂化,只做必要的工作
36- - **不偏离规则**:始终遵循这套流程,确保代码安全、可靠
26+ #### 4. 严格代码审查
27+ - **正确性检查**:验证代码逻辑的正确性和完整性
28+ - **风格一致性**:确保代码符合项目既定的编码风格
29+ - **副作用评估**:评估改动对下游系统的影响
30+
31+ #### 5. 清晰交付文档
32+ - **变更总结**:详细说明所有修改的内容和原因
33+ - **文件清单**:列出所有修改的文件及其具体变更
34+ - **风险说明**:标注任何假设或潜在风险点
35+
36+ ### 核心原则
37+ - **🎯 精准执行**:严格按照任务要求执行,不随意创新
38+ - **⚡ 高效开发**:避免过度设计,只做必要的工作
39+ - **🛡️ 安全可靠**:始终遵循开发流程,确保代码质量和系统稳定性
40+ - **🔒 谨慎修改**:明确知道需要修改才改,没把握就不要动已有的代码
3741
3842---
3943
40- ## 项目技术规范
44+ ## 🛠️ 技术栈规范
4145
42- ### 技术栈
46+ ### 核心技术
4347- **框架**: Next.js 15.3.4 (App Router)
44- - **语言**: TypeScript (ES2017+)
45- - **UI **: Tailwind CSS 4 + shadcn/ui
48+ - **语言**: TypeScript (ES2017+, 严格模式 )
49+ - **样式 **: Tailwind CSS 4 + shadcn/ui
4650- **图标**: Lucide React
47- - **主题**: next-themes (支持深色模式 )
51+ - **主题**: next-themes (深色模式支持 )
4852- **动画**: motion + tw-animate-css
4953- **国际化**: 中文为主 (lang="zh-CN")
5054
51- ### 项目结构约定
55+ ### 项目目录结构
5256```
53- app/ # Next.js App Router 目录
54- ├── components/ # 页面级组件
55- │ ├── buttons/ # 按钮组件
56- │ └── *.tsx # 功能组件
57- ├── layout.tsx # 根布局
58- ├── page.tsx # 首页
59- └── globals.css # 全局样式
60-
61- components/ # 通用组件库
62- ├── ui/ # shadcn/ui 组件
63- └── magicui/ # 自定义 UI 组件
64-
65- data/ # 静态数据
66- ├── features.tsx # 产品功能数据
67- ├── reviews.json # 用户评价
68- └── *.json # 其他配置数据
69-
70- lib/ # 工具函数
71- └── utils.ts # Tailwind merge 等工具
72-
73- public/ # 静态资源
74- ├── images/ # 图片资源
75- └── svgs/ # SVG 图标
57+ rustfs.com/
58+ ├── app/ # Next.js App Router 目录
59+ │ ├── components/ # 页面级组件
60+ │ │ ├── buttons/ # 按钮组件集合
61+ │ │ └── *.tsx # 功能组件
62+ │ ├── download/ # 下载页面
63+ │ ├── layout.tsx # 根布局
64+ │ ├── page.tsx # 首页
65+ │ └── globals.css # 全局样式
66+ ├── components/ # 通用组件库
67+ │ ├── ui/ # shadcn/ui 组件
68+ │ └── magicui/ # 自定义 UI 组件
69+ ├── data/ # 静态数据
70+ │ ├── features.tsx # 产品功能数据
71+ │ ├── reviews.json # 用户评价
72+ │ └── *.json # 其他配置数据
73+ ├── lib/ # 工具函数
74+ │ └── utils.ts # Tailwind merge 等工具
75+ └── public/ # 静态资源
76+ ├── images/ # 图片资源
77+ └── svgs/ # SVG 图标
7678```
7779
78- ### 代码风格规范
80+ ---
81+
82+ ## 📝 编码规范
83+
84+ ### TypeScript 规范
85+ - **严格模式**: 启用 `"strict": true` 配置
86+ - **语法版本**: 优先使用 ES2017+ 语法特性
87+ - **组件定义**: 使用箭头函数或 `export default function`
88+ - **类型导入**: 使用 `import type { }` 语法
7989
80- #### TypeScript 约定
81- - 使用严格模式 (`"strict": true`)
82- - 优先使用 ES2017+ 语法
83- - 函数组件使用箭头函数或 `export default function`
84- - 类型导入使用 `import type { }`
90+ ### React 组件规范
8591
86- #### React 组件规范
92+ #### 标准组件结构
8793```typescript
88- // ✅ 推荐的组件结构
89- 'use client' // 客户端组件需要标注
94+ 'use client' // 客户端组件必须标注
9095
9196import { ComponentProps } from 'react'
9297import { cn } from '@/lib/utils'
@@ -109,42 +114,11 @@ export default function ComponentName({
109114}
110115```
111116
112- #### Tailwind CSS 规范
113- - 使用 `cn()` 函数合并类名
114- - 优先使用 Tailwind 类,避免自定义 CSS
115- - 响应式设计:`sm:` `md:` `lg:` `xl:`
116- - 深色模式:`dark:` 前缀
117- - 主题色彩:`primary` `secondary` `muted-foreground` 等语义化颜色
118-
119- #### 样式约定
120- ```typescript
121- // ✅ 正确的样式写法
122- className={cn(
123- "base-classes",
124- "responsive sm:class md:class lg:class",
125- "dark:class dark:hover:class",
126- conditionalClass && "conditional-class",
127- className // 允许外部覆盖
128- )}
129- ```
130-
131- ### 内容规范
132- - **语言**: 所有用户界面文本使用中文
133- - **术语**: 统一使用 "RustFS" (不是 rustfs 或 Rustfs)
134- - **链接**: 文档链接统一指向 `https://docs.rustfs.com`
135- - **品牌**: 保持与分布式存储系统的专业形象一致
136-
137- ### 文件命名约定
138- - 组件文件:`kebab-case.tsx` (如 `app-header.tsx`)
139- - 数据文件:`kebab-case.json` 或 `.tsx`
140- - 工具函数:`camelCase.ts`
141- - 页面文件:遵循 Next.js App Router 约定
142-
143- ### 导入顺序
117+ #### 导入顺序规范
144118```typescript
145119// 1. React 相关
146120import React from 'react'
147- import { useState } from 'react'
121+ import { useState, useEffect } from 'react'
148122
149123// 2. Next.js 相关
150124import Link from 'next/link'
@@ -162,38 +136,101 @@ import { Button } from '@/components/ui/button'
162136import type { ComponentProps } from 'react'
163137```
164138
165- ### 性能要求
166- - 图片使用 Next.js `Image` 组件优化
167- - 客户端组件最小化,优先服务端渲染
168- - 懒加载大型组件和数据
169- - 避免不必要的重渲染
170-
171- ### 禁止事项
172- - ❌ 不要修改 `components.json` shadcn/ui 配置
173- - ❌ 不要在组件中硬编码数据,使用 `data/` 目录
174- - ❌ 不要破坏现有的深色模式支持
175- - ❌ 不要使用内联样式,统一使用 Tailwind
176- - ❌ 不要忽略 TypeScript 类型错误
177- - ❌ 不要修改已有的 API 接口和配置结构
178-
179- ### 提交要求
180- - 每次修改需要说明影响的组件和页面
181- - 确保深色模式正常工作
182- - 确保响应式布局不被破坏
183- - 验证中文内容显示正确
139+ ### Tailwind CSS 规范
140+
141+ #### 样式编写约定
142+ ```typescript
143+ // ✅ 推荐的样式写法
144+ className={cn(
145+ "base-classes",
146+ "responsive sm:class md:class lg:class",
147+ "dark:class dark:hover:class",
148+ conditionalClass && "conditional-class",
149+ className // 允许外部覆盖
150+ )}
151+ ```
152+
153+ #### 响应式设计
154+ - **断点**: `sm:` (640px) `md:` (768px) `lg:` (1024px) `xl:` (1280px)
155+ - **深色模式**: 使用 `dark:` 前缀
156+ - **主题色彩**: 使用语义化颜色 `primary` `secondary` `muted-foreground`
157+
158+ ### 文件命名规范
159+ - **组件文件**: `kebab-case.tsx` (如 `app-header.tsx`)
160+ - **数据文件**: `kebab-case.json` 或 `.tsx`
161+ - **工具函数**: `camelCase.ts`
162+ - **页面文件**: 遵循 Next.js App Router 约定
163+
164+ ---
165+
166+ ## 🎨 内容与品牌规范
167+
168+ ### 语言与术语
169+ - **界面语言**: 所有用户界面文本使用中文
170+ - **品牌名称**: 统一使用 "RustFS" (首字母大写)
171+ - **文档链接**: 统一指向 `https://docs.rustfs.com`
172+ - **品牌形象**: 保持分布式存储系统的专业形象
173+
174+ ### 性能优化要求
175+ - **图片优化**: 使用 Next.js `Image` 组件
176+ - **服务端渲染**: 优先使用 SSR,最小化客户端组件
177+ - **懒加载**: 对大型组件和数据实施懒加载
178+ - **重渲染优化**: 避免不必要的组件重渲染
184179
185180---
186181
187- ## 执行检查清单
182+ ## ⚠️ 禁止事项
188183
189- 在每次代码改动前,请确认:
190- 1. ✅ 已明确理解任务目标和范围
191- 2. ✅ 已制定清晰的修改计划
192- 3. ✅ 代码符合项目技术规范
193- 4. ✅ 遵循组件和样式约定
194- 5. ✅ 不会破坏现有功能
195- 6. ✅ 通过 TypeScript 类型检查
196- 7. ✅ 响应式和深色模式兼容
197- 8. ✅ 中文内容正确显示
184+ ### 严格禁止
185+ - ❌ 修改 `components.json` shadcn/ui 配置文件
186+ - ❌ 在组件中硬编码数据,必须使用 `data/` 目录
187+ - ❌ 破坏现有的深色模式支持
188+ - ❌ 使用内联样式,统一使用 Tailwind CSS
189+ - ❌ 忽略 TypeScript 类型错误
190+ - ❌ 修改已有的 API 接口和配置结构
191+
192+ ### 开发注意事项
193+ - ❌ 不要进行"顺手"的额外修改
194+ - ❌ 不要添加不必要的日志或注释
195+ - ❌ 不要创建任务范围外的抽象层
196+ - ❌ **不要修改已有代码,除非明确知道需要修改**
197+ - ✅ **只有在明确知道需要修改且有把握的情况下才改动现有代码**
198+
199+ ---
200+
201+ ## 📋 质量检查清单
202+
203+ ### 代码改动前检查
204+ 1. ✅ **任务理解**: 已明确理解任务目标和范围
205+ 2. ✅ **计划制定**: 已制定清晰的修改计划
206+ 3. ✅ **技术规范**: 代码符合项目技术规范
207+ 4. ✅ **编码风格**: 遵循组件和样式约定
208+ 5. ✅ **功能保护**: 不会破坏现有功能
209+ 6. ✅ **类型安全**: 通过 TypeScript 类型检查
210+ 7. ✅ **响应式兼容**: 响应式布局和深色模式兼容
211+ 8. ✅ **内容正确**: 中文内容显示正确
212+ 9. ✅ **修改必要性**: 明确知道需要修改且有把握
213+
214+ ### 提交前验证
215+ - ✅ 所有修改的文件已列出
216+ - ✅ 深色模式功能正常
217+ - ✅ 响应式布局无异常
218+ - ✅ 中文内容显示正确
219+ - ✅ 无 TypeScript 错误
220+ - ✅ 无控制台警告
221+
222+ ---
223+
224+ ## 🎯 核心要求
225+
226+ **精准、高效、不引入复杂性** - 这是我们的开发准则。
227+
228+ 每次代码改动都应该:
229+ - 🎯 **精准**: 只修改任务要求的代码
230+ - ⚡ **高效**: 避免不必要的复杂化
231+ - 🛡️ **安全**: 确保系统稳定性和代码质量
232+ - 🔒 **谨慎**: 明确知道需要修改才改,没把握就不要动已有的代码
233+
234+ ---
198235
199- 记住:**精准、高效、不引入复杂性** 是我们的核心要求。
236+ *最后更新: 2024年12月*
0 commit comments