Skip to content

Commit e380015

Browse files
Merge branch '3.6.x' into bugfix-thread-error-exit
2 parents 3493a9f + a74353d commit e380015

File tree

980 files changed

+13935
-91407
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

980 files changed

+13935
-91407
lines changed

.claude/README.md

Lines changed: 221 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,221 @@
1+
# FIT Framework - Claude Code 配置
2+
3+
本目录包含 FIT Framework 项目的 Claude Code 配置文件。
4+
5+
## 📁 目录结构
6+
7+
```
8+
.claude/
9+
├── README.md # 本文件
10+
├── project-rules.md # 项目规则和规范(Claude 会自动遵循)
11+
└── commands/ # 自定义 Slash Commands
12+
├── pr.md # 创建 PR
13+
├── pr-update.md # 更新 PR 描述
14+
├── commit.md # 提交变更
15+
├── upgrade-dep.md # 升级依赖
16+
├── review.md # 审查 PR
17+
└── fix-permissions.md # 检查和修复文件权限
18+
```
19+
20+
## 📋 项目规则
21+
22+
`project-rules.md` 文件定义了 Claude 在处理本项目时必须遵循的规则:
23+
24+
### 规则 1: 文件权限管理
25+
- 所有新建/修改的文件必须设置正确的所有者权限
26+
- 动态从 `README.md` 等参考文件获取权限信息
27+
- README.md 是通用文件,适用于所有语言的项目
28+
- 避免硬编码用户名和用户组
29+
30+
### 规则 2: PR 提交规范
31+
- **必须**先读取 `.github/pull_request_template.md`
32+
- **必须**查看最近 3 个 merged PR 作为参考
33+
- PR 描述必须完整填写所有必填项
34+
- 结尾添加 Claude Code 签名
35+
36+
## 🚀 Slash Commands 使用指南
37+
38+
### 创建 Pull Request
39+
40+
```bash
41+
# 创建 PR 到默认分支(3.6.x)
42+
/pr
43+
44+
# 创建 PR 到 main 分支
45+
/pr main
46+
47+
# 创建 PR 到指定分支
48+
/pr develop
49+
```
50+
51+
**工作流程:**
52+
1. 自动读取 PR 模板
53+
2. 查看最近的 PR 示例
54+
3. 分析当前分支的变更
55+
4. 按模板格式创建 PR
56+
57+
### 更新现有 PR
58+
59+
```bash
60+
# 更新 PR #369 的描述
61+
/pr-update 369
62+
```
63+
64+
### 提交变更
65+
66+
```bash
67+
# 交互式提交(会询问提交信息)
68+
/commit
69+
70+
# 使用指定消息提交
71+
/commit "feat: add new feature"
72+
```
73+
74+
### 升级依赖
75+
76+
```bash
77+
# 升级 swagger-ui 从 5.30.0 到 5.30.2
78+
/upgrade-dep swagger-ui 5.30.0 5.30.2
79+
```
80+
81+
**自动化流程:**
82+
1. 创建功能分支
83+
2. 更新依赖文件
84+
3. 运行编译测试
85+
4. 提交变更
86+
5. 创建 PR
87+
88+
### 审查 PR
89+
90+
```bash
91+
# 审查 PR #369
92+
/review 369
93+
```
94+
95+
**审查内容:**
96+
- PR 标题和描述是否符合规范
97+
- 代码变更的合理性
98+
- 安全问题检查
99+
- 测试覆盖情况
100+
- 生成审查报告
101+
102+
### 检查和修复权限
103+
104+
```bash
105+
# 检查并修复所有文件和目录权限
106+
/fix-permissions
107+
```
108+
109+
**自动化流程:**
110+
1. 从 README.md 获取正确的所有者信息
111+
2. 扫描所有文件和目录
112+
3. 识别权限不一致的文件
113+
4. 自动修复为正确的所有者
114+
5. 生成检查报告
115+
116+
## 🎯 最佳实践
117+
118+
### 1. 使用 Slash Commands
119+
优先使用自定义命令,而不是手动描述任务:
120+
-`/pr 3.5.x`
121+
- ❌ "请帮我创建一个PR到3.5.x分支"
122+
123+
### 2. PR 创建流程
124+
始终使用 `/pr` 命令,确保:
125+
- 自动遵循项目规范
126+
- 完整填写 PR 模板
127+
- 参考最近的 PR 格式
128+
129+
### 3. 依赖升级
130+
使用 `/upgrade-dep` 命令,自动化整个流程:
131+
- 创建分支
132+
- 更新文件
133+
- 测试验证
134+
- 提交并创建 PR
135+
136+
## 🔧 参数传递规则
137+
138+
Slash commands 支持参数,参数规则:
139+
140+
1. **单个参数**
141+
```bash
142+
/pr main
143+
```
144+
- `main` 是目标分支参数
145+
146+
2. **多个参数**
147+
```bash
148+
/upgrade-dep swagger-ui 5.30.0 5.30.2
149+
```
150+
- `swagger-ui` - 包名
151+
- `5.30.0` - 原版本
152+
- `5.30.2` - 新版本
153+
154+
3. **带空格的参数**
155+
```bash
156+
/commit "feat: add new feature"
157+
```
158+
- 使用引号包裹
159+
160+
## 📝 项目信息
161+
162+
- **项目名称**: FIT Framework
163+
- **主分支**: main
164+
- **开发分支**: 3.5.x
165+
- **仓库**: https://github.com/ModelEngine-Group/fit-framework
166+
167+
## 🔗 相关文件
168+
169+
- **PR 模板**: `.github/pull_request_template.md`
170+
- **贡献指南**: `CONTRIBUTING.md`
171+
- **项目规则**: `.claude/project-rules.md`
172+
173+
## ⚙️ 常用命令
174+
175+
```bash
176+
# 编译项目
177+
mvn clean install
178+
179+
# 快速编译(跳过测试)
180+
mvn -B clean package -Dmaven.test.skip=true
181+
182+
# 运行测试
183+
mvn test
184+
185+
# 启动应用
186+
./fit start
187+
188+
# 查看 Git 状态
189+
git status
190+
191+
# 查看 PR 列表
192+
gh pr list
193+
194+
# 查看某个 PR
195+
gh pr view 369
196+
```
197+
198+
## 🆘 故障排除
199+
200+
### 问题:Claude 没有遵循 PR 模板
201+
**解决方案**:使用 `/pr` 命令而不是手动描述
202+
203+
### 问题:PR 描述格式不对
204+
**解决方案**:使用 `/pr-update <pr-number>` 命令更新
205+
206+
### 问题:文件权限错误
207+
**解决方案**:使用 `/fix-permissions` 命令自动检查和修复
208+
209+
### 问题:想要自定义命令
210+
**解决方案**:在 `.claude/commands/` 目录创建新的 `.md` 文件
211+
212+
## 📚 扩展阅读
213+
214+
- [Claude Code 文档](https://docs.claude.com/claude-code)
215+
- [Slash Commands 指南](https://docs.claude.com/claude-code/slash-commands)
216+
- [项目配置最佳实践](https://docs.claude.com/claude-code/project-setup)
217+
218+
---
219+
220+
**最后更新**: 2025-11-10
221+
**配置版本**: 1.0.0

.claude/commands/commit.md

Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
提交当前变更到 Git。
2+
3+
**用法:**
4+
- `/commit` - 交互式提交(会询问提交信息)
5+
- `/commit <message>` - 直接提交并使用指定消息
6+
7+
**执行步骤:**
8+
9+
1. **查看当前变更**
10+
```
11+
git status
12+
git diff --stat
13+
```
14+
15+
2. **如果有未追踪的文件,询问用户是否添加**
16+
- 列出所有 untracked 文件
17+
- 排除 `.claude/` 目录
18+
- 让用户确认要添加哪些文件
19+
20+
3. **添加文件到暂存区**
21+
```
22+
git add <files>
23+
```
24+
25+
4. **创建提交**
26+
- 如果用户提供了消息,使用该消息
27+
- 如果没有消息,根据变更内容生成合适的提交消息
28+
- 提交消息格式遵循项目规范
29+
- 添加 Co-Authored-By 签名
30+
31+
```
32+
git commit -m "$(cat <<'EOF'
33+
<提交消息>
34+
35+
🤖 Generated with [Claude Code](https://claude.com/claude-code)
36+
37+
Co-Authored-By: Claude <[email protected]>
38+
EOF
39+
)"
40+
```
41+
42+
5. **显示提交结果**
43+
```
44+
git log -1 --stat
45+
git status
46+
```
47+
48+
**注意事项:**
49+
- 不要提交包含敏感信息的文件(.env, credentials 等)
50+
- 确保提交消息清晰描述了变更内容
51+
- 遵循项目的 commit message 规范
Lines changed: 88 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,88 @@
1+
检查并修复项目中所有文件和文件夹的权限,确保符合项目规范。
2+
3+
**用法:**
4+
- `/fix-permissions` - 检查并自动修复所有权限问题
5+
6+
**执行步骤:**
7+
8+
1. **获取参考文件的所有者信息**
9+
```bash
10+
ls -l README.md | awk '{print $3":"$4}'
11+
```
12+
- 从项目根目录的 `README.md` 动态获取正确的所有者信息
13+
- README.md 是所有项目都有的通用文件
14+
- 不硬编码用户名和用户组
15+
16+
2. **统计当前文件权限分布**
17+
```bash
18+
# 检查所有文件的所有者分布
19+
find . -type f -print0 2>/dev/null | xargs -0 ls -l 2>/dev/null | awk '{print $3":"$4}' | sort | uniq -c | sort -rn
20+
21+
# 检查所有目录的所有者分布
22+
find . -type d -print0 2>/dev/null | xargs -0 ls -ld 2>/dev/null | awk '{print $3":"$4}' | sort | uniq -c | sort -rn
23+
```
24+
25+
3. **识别权限不一致的文件**
26+
```bash
27+
# 找出所有者不是参考用户的文件
28+
find . -type f -print0 2>/dev/null | xargs -0 ls -l 2>/dev/null | awk '$3 == "root" {print $9}'
29+
30+
# 找出所有者不是参考用户的目录
31+
find . -type d -print0 2>/dev/null | xargs -0 ls -ld 2>/dev/null | awk '$3 == "root" {print $9}'
32+
```
33+
34+
4. **修复文件权限**
35+
```bash
36+
# 获取正确的所有者信息
37+
OWNER_GROUP=$(ls -l README.md | awk '{print $3":"$4}')
38+
39+
# 修复所有文件权限
40+
find . -type f -print0 2>/dev/null | xargs -0 ls -l 2>/dev/null | awk '$3 == "root" {print $9}' | xargs sudo chown $OWNER_GROUP
41+
42+
# 修复所有目录权限
43+
find . -type d -print0 2>/dev/null | xargs -0 ls -ld 2>/dev/null | awk '$3 == "root" {print $9}' | xargs sudo chown $OWNER_GROUP
44+
```
45+
46+
5. **最终验证**
47+
```bash
48+
# 统计修复后的权限分布
49+
find . \( -type f -o -type d \) -print0 2>/dev/null | xargs -0 ls -ld 2>/dev/null | awk '{print $3":"$4}' | sort | uniq -c | sort -rn
50+
51+
# 抽查几个之前有问题的文件
52+
ls -ld ./.claude/settings.local.json ./framework/.claude/settings.local.json
53+
```
54+
55+
6. **生成检查报告**
56+
- 显示参考所有者信息
57+
- 显示发现的问题文件和目录数量
58+
- 显示修复的文件和目录列表
59+
- 显示最终验证结果
60+
61+
**规范说明:**
62+
63+
根据 `.claude/project-rules.md` 中的规则 1:
64+
- 所有文件必须设置正确的所有者权限
65+
- 不要硬编码用户名和用户组
66+
- 动态从 `README.md` 等参考文件获取权限信息
67+
- README.md 是通用文件,适用于所有语言的项目
68+
- 确保用户可以自主修改所有文件
69+
70+
**常见问题:**
71+
72+
**为什么有些文件是 root 所有者?**
73+
- 可能是使用 `sudo` 创建的文件或目录
74+
- Git 操作时使用了 sudo 权限
75+
- Claude Code 创建文件时权限设置不当
76+
77+
**修复后会影响 Git 吗?**
78+
- 不会影响 Git 历史和提交
79+
- 只改变文件系统级别的所有者
80+
- Git 内容和状态保持不变
81+
82+
**需要 sudo 权限吗?**
83+
- 修复 root 所有者的文件时需要 sudo
84+
- 确保当前用户在 sudoers 列表中
85+
86+
**参考文档:**
87+
- 项目规则:`.claude/project-rules.md` (规则 1)
88+
- 动态获取权限方法的详细说明

0 commit comments

Comments
 (0)