云
8 天以前 ea77833c7bf4446a06975f0d5157934641374579
chore(claude): 添加 Claude 助手配置与开发规则

- 添加数据库迁移与功能开发工作流命令
- 添加接口变更前端文档生成规则
- 配置项目身份信息与开发约定
- 添加安全护栏规则以防止常见漏洞
- 配置本地执行权限与工具白名单
已添加7个文件
301 ■■■■■ 文件已修改
.claude/commands/database-migration.md 34 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.claude/commands/feature-development.md 32 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.claude/identity.json 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.claude/rules/frontend-docs.md 63 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.claude/rules/security-guardrails.md 37 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.claude/settings.local.json 75 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.claude/skills/project-conventions.md 51 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.claude/commands/database-migration.md
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,34 @@
# /数据库迁移
在进行**数据库迁移**时使用此工作流。
## ç›®æ ‡
安全的数据库迁移工作流
## å¸¸ç”¨æ–‡ä»¶
- `migrations/*`
- `schemas/*`
- `**/models/**`
- `**/db/**`
## å»ºè®®æ­¥éª¤
1. æŸ¥çœ‹çŽ°æœ‰è¿ç§»ä»¥äº†è§£æ¨¡å¼ã€‚
2. åˆ›å»ºå¸¦æœ‰æ—¶é—´æˆ³å‰ç¼€çš„æ–°è¿ç§»æ–‡ä»¶ã€‚
3. ç¼–写支持回滚的迁移。
4. åœ¨æœ¬åœ°çŽ¯å¢ƒä¸­æµ‹è¯•è¿ç§»ã€‚
5. è®°å½•任何破坏性变更。
## å…¸åž‹æäº¤ä¿¡æ¯
- ä¸º[功能]添加迁移
- ä¿®å¤è¿ç§»[描述]
- æ›´æ–°æž¶æž„文档
## æ³¨æ„äº‹é¡¹
- å§‹ç»ˆåœ¨å‰¯æœ¬ä¸Šæµ‹è¯•迁移。
- ç¡®ä¿å›žæ»šè„šæœ¬ä¹Ÿç»è¿‡æµ‹è¯•ã€‚
- æ²¡æœ‰å¤‡ä»½çš„æƒ…况下避免破坏性操作。
.claude/commands/feature-development.md
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,32 @@
# /功能开发
在进行**功能开发**时使用此工作流。
## ç›®æ ‡
标准化功能实现工作流
## å¸¸ç”¨æ–‡ä»¶
- `manifests/*`
- `schemas/*`
- `**/*.test.*`
- `**/api/**`
## å»ºè®®æ­¥éª¤
1. åœ¨ç¼–辑前了解当前状态和失败模式。
2. è¿›è¡Œæœ€å°ä¸”连贯的更改以满足工作流目标。
3. å¯¹ä¿®æ”¹çš„æ–‡ä»¶è¿è¡Œæœ€ç›¸å…³çš„验证。
4. æ€»ç»“更改内容以及仍需审查的部分。
## å…¸åž‹æäº¤ä¿¡æ¯
- æ·»åŠ åŠŸèƒ½å®žçŽ°
- ä¸ºåŠŸèƒ½æ·»åŠ æµ‹è¯•
- æ›´æ–°æ–‡æ¡£
## æ³¨æ„äº‹é¡¹
- å°†æ­¤è§†ä¸ºè„šæ‰‹æž¶ï¼Œè€Œéžç¡¬ç¼–ç è„šæœ¬ã€‚
- å¦‚果工作流有重大变化,更新此命令。
.claude/identity.json
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,9 @@
{
  "name": "product-inventory-management",
  "description": "Product inventory management system with JDK 25+",
  "language": "Java",
  "framework": "Spring Boot",
  "database": "MySQL",
  "orm": "MyBatis",
  "javaVersion": "25"
}
.claude/rules/frontend-docs.md
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,63 @@
# æŽ¥å£å˜æ›´å‰ç«¯æ–‡æ¡£è§„则
## è§„则
- æ¯æ¬¡æ¶‰åŠæŽ¥å£å˜æ›´ï¼ˆæ–°å¢žæŽ¥å£ã€ä¿®æ”¹è¯·æ±‚参数、修改响应结构)时,必须输出一份前端修改文档到 `docs/` ç›®å½•。
- æ–‡æ¡£ä»¥ Markdown æ ¼å¼ç¼–写,文件名使用小写字母和下划线,如 `docs/customer_handover.md`。
- æ–‡æ¡£å†…容至少包含:API è¯´æ˜Žï¼ˆè·¯å¾„、方法、请求参数、响应格式)、涉及的前端页面、具体的修改代码示例。
## æ–‡æ¡£æ¨¡æ¿
```markdown
# åŠŸèƒ½åç§°
## æ¶‰åŠé¡µé¢
- é¡µé¢1
- é¡µé¢2
## API
| æ–¹æ³• | è·¯å¾„ | è¯´æ˜Ž |
|------|------|------|
| POST | /xxx/xxx | è¯´æ˜Ž |
**请求参数:**
| å‚æ•° | ç±»åž‹ | å¿…å¡« | è¯´æ˜Ž |
|------|------|------|------|
| xxx | String | æ˜¯ | xxx |
**响应:** `{ "code": 200, "msg": "操作成功" }`
## å‰ç«¯ä¿®æ”¹ç‚¹
### 1. æŒ‰é’®/弹窗/表格等
\`\`\`html
<el-button>xxx</el-button>
\`\`\`
### 2. data æ•°æ®
\`\`\`js
data() {
  return {
    xxx: '',
  }
}
\`\`\`
### 3. æ–¹æ³•
\`\`\`js
handleXxx() {
  // ...
}
\`\`\`
## æ³¨æ„äº‹é¡¹
- æ³¨æ„äº‹é¡¹1
- æ³¨æ„äº‹é¡¹2
```
.claude/rules/security-guardrails.md
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,37 @@
# å®‰å…¨æŠ¤æ 
## SQL æ³¨å…¥é˜²æŠ¤
- æ°¸è¿œä¸è¦å°†ç”¨æˆ·è¾“入直接拼接到 SQL æŸ¥è¯¢ä¸­ã€‚
- å§‹ç»ˆä½¿ç”¨å‚数化查询或 ORM æ–¹æ³•。
- åœ¨æ•°æ®åº“操作前验证和清理所有输入。
## XSS é˜²æŠ¤
- åœ¨ HTML ä¸­æ¸²æŸ“前转义所有用户生成的内容。
- ä½¿ç”¨æ¨¡æ¿è‡ªåŠ¨è½¬ä¹‰åŠŸèƒ½ã€‚
- åœ¨å®¢æˆ·ç«¯å’ŒæœåŠ¡å™¨ç«¯éƒ½è¿›è¡Œè¾“å…¥éªŒè¯å’Œæ¸…ç†ã€‚
## å¯†é’¥ç®¡ç†
- æ°¸è¿œä¸è¦åœ¨æºä»£ç ä¸­ç¡¬ç¼–码密钥、API å¯†é’¥æˆ–密码。
- ä½¿ç”¨çŽ¯å¢ƒå˜é‡æˆ–å®‰å…¨ä¿é™©åº“å­˜å‚¨æ•æ„Ÿæ•°æ®ã€‚
- å®šæœŸè½®æ¢å¯†é’¥ï¼Œé¿å…åœ¨æ—¥å¿—中记录它们。
## è¾“入验证
- åœ¨ç³»ç»Ÿè¾¹ç•Œå¤„验证所有输入。
- ä½¿ç”¨ç™½åå•而非黑名单进行验证。
- åœ¨å¤„理上传前检查文件类型和大小。
## é”™è¯¯å¤„理
- ä¸è¦åœ¨é”™è¯¯æ¶ˆæ¯ä¸­æš´éœ²æ•æ„Ÿä¿¡æ¯ã€‚
- åœ¨å†…部记录详细错误,向用户返回通用消息。
- å¤„理所有异常以防止信息泄露。
## ä¾èµ–管理
- ä¿æŒä¾èµ–项更新。
- å®¡è®¡ä¾èµ–项中的已知漏洞。
- å›ºå®šç‰ˆæœ¬ä»¥é¿å…æ„å¤–的破坏性变更。
.claude/settings.local.json
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,75 @@
{
  "permissions": {
    "allow": [
      "Read",
      "Glob",
      "Grep",
      "Write",
      "Edit",
      "Bash(git status)",
      "Bash(git diff)",
      "Bash(npm test)",
      "Bash(npm run build)",
      "Bash(pytest *)",
      "Skill(feature-development)",
      "Bash(mvn compile *)",
      "mcp__mcp_server_mysql__mysql_query",
      "Read(//d/牛马/南通/**)",
      "Read(//d/牛马/南通/前端/**)",
      "Bash(mvn -q -o compile -DskipTests)",
      "Bash(node patch_script_tmp.js)",
      "Bash(sed -n '278,320p' \"D:/牛马/南通/前端/product-inventory-management/src/views/collaborativeApproval/approvalProcess/components/approvalDia.vue\")",
      "Bash(sed -n '450,470p' \"D:/牛马/南通/前端/product-inventory-management/src/views/collaborativeApproval/approvalProcess/components/approvalDia.vue\")",
      "Bash(sed -n '486,505p' \"D:/牛马/南通/前端/product-inventory-management/src/views/collaborativeApproval/approvalProcess/components/approvalDia.vue\")",
      "Bash(node *)",
      "Bash(npm run *)",
      "Bash(sed -n '176,192p' \"D:/牛马/南通/后端/product-inventory-management-after/src/main/java/com/ruoyi/approve/service/impl/ApproveNodeServiceImpl.java\")",
      "Bash(sed -n '379,390p' \"D:/牛马/南通/后端/product-inventory-management-after/src/main/java/com/ruoyi/approve/service/impl/ApproveNodeServiceImpl.java\")",
      "Bash(sed -n '416,435p' \"D:/牛马/南通/后端/product-inventory-management-after/src/main/java/com/ruoyi/approve/service/impl/ApproveNodeServiceImpl.java\")",
      "Bash(sed -n '144,150p' \"D:/牛马/南通/前端/product-inventory-management/src/views/collaborativeApproval/approvalProcess/index.vue\")",
      "Bash(sed -n '85,92p' \"D:/牛马/南通/前端/product-inventory-management/src/views/safeProduction/safeWorkApproval/index.vue\")",
      "Bash(mvn -q compile -o)",
      "Bash(git *)",
      "mcp__playwright__browser_click",
      "mcp__playwright__browser_find",
      "mcp__playwright__browser_type",
      "mcp__playwright__browser_network_requests",
      "mcp__playwright__browser_network_request",
      "mcp__playwright__browser_navigate",
      "mcp__playwright__browser_run_code_unsafe",
      "mcp__playwright__browser_snapshot",
      "mcp__playwright__browser_fill_form",
      "mcp__playwright__browser_evaluate",
      "Bash(mvn -v)",
      "Bash(tasklist //FI \"IMAGENAME eq java.exe\")",
      "Bash(netstat -ano)",
      "Bash(tasklist //FI \"PID eq 35852\")",
      "Bash(wmic process *)",
      "Bash(find . -name \"shipping_list_page.json\" -path \"*tool-results*\")",
      "Bash(ls -la \"C:\\\\Users\\\\云\\\\.claude\\\\projects\\\\D-----------product-inventory-management-after\\\\4b43dbe7-8e77-4504-b2ce-b513ae35867c\\\\tool-results\\\\shipping_list_page.json\")",
      "mcp__playwright__browser_hover",
      "mcp__playwright__browser_wait_for",
      "Bash(rm \"C:/Users/云/.claude/projects/D-----------product-inventory-management-after/memory/MEMORY.md\" \"C:/Users/云/.claude/projects/D-----------product-inventory-management-after/memory/reference_frontend_project.md\")",
      "Bash(python -c \"import openpyxl\")",
      "Bash(timeout 5 bash -c 'cat < /dev/null > /dev/tcp/36.134.76.201/3306')",
      "Bash(awk -F'|' 'NR>2 && $2!~/合计/ && NF>5 {gsub\\(/^ +| +$/,\"\",$7\\); print $7}' tableConvert.com_67wfto.md)",
      "Bash(awk -F'|' 'NR>2 && $2!~/合计/ && NF>5 {gsub\\(/^ +| +$/,\"\",$4\\); print $4}' tableConvert.com_67wfto.md)",
      "Bash(awk -F'|' 'NR>2 && $2!~/合计/ && NF>5 {gsub\\(/^ +| +$/,\"\",$16\\); print $16}' tableConvert.com_67wfto.md)",
      "Bash(awk -F'|' 'NR>2 && $2!~/合计/ && NF>5 {gsub\\(/^ +| +$/,\"\",$8\\); print $8}' tableConvert.com_67wfto.md)",
      "Bash(echo \"单据数: $\\(awk -F'|' 'NR>2 && $2!~/合计/ && NF>5 {gsub\\(/^ +| +$/,\"\",$8\\); print $8}' tableConvert.com_67wfto.md)",
      "Bash(awk -F'|' 'NR>2 && $2!~/合计/ && NF>5 {gsub\\(/^ +| +$/,\"\",$10\\); gsub\\(/^ +| +$/,\"\",$11\\); print $10\" | \"$11}' tableConvert.com_67wfto.md)",
      "Bash(awk -F'|' 'NR>2 && $2!~/合计/ && NF>5 {c=$4; d=$7; n=$8; a=$15; gsub\\(/^ +| +$/,\"\",c\\); gsub\\(/^ +| +$/,\"\",d\\); gsub\\(/^ +| +$/,\"\",n\\); gsub\\(/^ +| +$/,\"\",a\\); gsub\\(/,/,\"\",a\\); s[n]+=a; cust[n]=c; dt[n]=d} END {for \\(k in s\\) printf \"%s\\\\t%s\\\\t%s\\\\t%.2f\\\\n\", k, cust[k], dt[k], s[k]}' tableConvert.com_67wfto.md)",
      "Bash(awk -F'|' 'NR>2 && $2!~/合计/ && NF>5 {d=$7; n=$8; a=$15; gsub\\(/^ +| +$/,\"\",d\\); gsub\\(/^ +| +$/,\"\",n\\); gsub\\(/^ +| +$/,\"\",a\\); gsub\\(/,/,\"\",a\\); s[n]+=a; dt[n]=d} END {for \\(k in s\\) printf \"SELECT '\\\\''%s'\\\\'' AS doc_no, '\\\\''%s'\\\\'' AS d, %.2f AS amt UNION ALL\\\\n\", k, dt[k], s[k]}' tableConvert.com_67wfto.md)",
      "Bash(sort -t\"'\" -k4)",
      "Bash(awk -F'|' 'NR>2 && $2!~/合计/ && NF>5 {d=$7; n=$8; a=$15; gsub\\(/^ +| +$/,\"\",d\\); gsub\\(/^ +| +$/,\"\",n\\); gsub\\(/^ +| +$/,\"\",a\\); gsub\\(/,/,\"\",a\\); s[n]+=a; dt[n]=d} END {for \\(k in s\\) printf \"SELECT '\\\\''%s'\\\\'' AS doc_no, '\\\\''%s'\\\\'' AS d, %.2f AS amt UNION ALL \", k, dt[k], s[k]}' tableConvert.com_67wfto.md)",
      "Bash(awk -F'|' 'NR>2 && $2!~/合计/ && NF>5 {a=$15; gsub\\(/^ +| +$/,\"\",a\\); gsub\\(/,/,\"\",a\\); s+=a; c++} END {printf \"Excel行数=%d æ˜Žç»†åˆè®¡=%.2f\\\\n\", c, s}' tableConvert.com_67wfto.md)",
      "Bash(awk -F'|' 'NR>2 && $2!~/合计/ && NF>5 {d=$7; n=$8; a=$15; gsub\\(/^ +| +$/,\"\",d\\); gsub\\(/^ +| +$/,\"\",n\\); gsub\\(/^ +| +$/,\"\",a\\); gsub\\(/,/,\"\",a\\); s[n]+=a; dt[n]=d} END {for \\(k in s\\) printf \"SELECT '\\\\''%s'\\\\'' AS d, %.2f AS amt UNION ALL \", dt[k], s[k]}' tableConvert.com_67wfto.md)"
    ],
    "deny": [
      "Bash(rm -rf *)",
      "Bash(curl * | bash)",
      "Bash(git push --force *)",
      "Bash(sudo *)"
    ]
  }
}
.claude/skills/project-conventions.md
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,51 @@
# é¡¹ç›®å¼€å‘约定
## æ¦‚è¿°
此技能定义了本项目的开发模式和约定。
## æŠ€æœ¯æ ˆ
- **主要语言**: Java (JDK 25+)
- **架构**: Spring Boot + MyBatis
- **测试位置**: `src/test/java`
## æäº¤çº¦å®š
遵循约定式提交格式:
### ä½¿ç”¨çš„前缀
- `feat` - æ–°åŠŸèƒ½
- `fix` - é”™è¯¯ä¿®å¤
- `docs` - æ–‡æ¡£å˜æ›´
- `test` - æµ‹è¯•添加或更新
- `refactor` - ä»£ç é‡æž„
- `style` - ä»£ç é£Žæ ¼å˜æ›´ï¼ˆæ ¼å¼åŒ–、分号等)
- `chore` - æž„建过程或辅助工具变更
### æ¶ˆæ¯è§„范
- ä¿æŒç¬¬ä¸€è¡Œç®€æ´ä¸”有描述性(少于 70 ä¸ªå­—符)
- ä½¿ç”¨ç¥ˆä½¿è¯­æ°”("添加功能"而非"添加了功能")
- ç›¸å…³æ—¶åŒ…含范围:`feat(范围): æè¿°`
## ä»£ç é£Žæ ¼
- éµå¾ª Java å‘½åçº¦å®š
- ä½¿ç”¨æœ‰æ„ä¹‰çš„变量和方法名
- ä¸ºå…¬å…± API æ·»åŠ  Javadoc
- ä¿æŒæ–¹æ³•专注且单一职责
## æµ‹è¯•
- ä¸ºä¸šåŠ¡é€»è¾‘ç¼–å†™å•å…ƒæµ‹è¯•
- ä¸ºæ•°æ®åº“操作使用集成测试
- ä¿æŒæµ‹è¯•覆盖率在 80% ä»¥ä¸Š
## åˆå¹¶è¯·æ±‚规范
- ä¿æŒåˆå¹¶è¯·æ±‚专注且小
- ä¸ºæ–°åŠŸèƒ½åŒ…å«æµ‹è¯•
- æ ¹æ®éœ€è¦æ›´æ–°æ–‡æ¡£
- åˆå¹¶å‰å®¡æŸ¥ä»£ç 