chore(claude): 添加 Claude 助手配置与开发规则
- 添加数据库迁移与功能开发工作流命令
- 添加接口变更前端文档生成规则
- 配置项目身份信息与开发约定
- 添加安全护栏规则以防止常见漏洞
- 配置本地执行权限与工具白名单
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | # /æ°æ®åºè¿ç§» |
| | | |
| | | å¨è¿è¡**æ°æ®åºè¿ç§»**æ¶ä½¿ç¨æ¤å·¥ä½æµã |
| | | |
| | | ## ç®æ |
| | | |
| | | å®å
¨çæ°æ®åºè¿ç§»å·¥ä½æµ |
| | | |
| | | ## å¸¸ç¨æä»¶ |
| | | |
| | | - `migrations/*` |
| | | - `schemas/*` |
| | | - `**/models/**` |
| | | - `**/db/**` |
| | | |
| | | ## 建议æ¥éª¤ |
| | | |
| | | 1. æ¥çç°æè¿ç§»ä»¥äºè§£æ¨¡å¼ã |
| | | 2. åå»ºå¸¦ææ¶é´æ³åç¼çæ°è¿ç§»æä»¶ã |
| | | 3. ç¼åæ¯æåæ»çè¿ç§»ã |
| | | 4. 卿¬å°ç¯å¢ä¸æµè¯è¿ç§»ã |
| | | 5. è®°å½ä»»ä½ç ´åæ§åæ´ã |
| | | |
| | | ## å
¸åæäº¤ä¿¡æ¯ |
| | | |
| | | - 为[åè½]æ·»å è¿ç§» |
| | | - ä¿®å¤è¿ç§»[æè¿°] |
| | | - æ´æ°æ¶æææ¡£ |
| | | |
| | | ## 注æäºé¡¹ |
| | | |
| | | - å§ç»å¨å¯æ¬ä¸æµè¯è¿ç§»ã |
| | | - ç¡®ä¿åæ»èæ¬ä¹ç»è¿æµè¯ã |
| | | - 没æå¤ä»½çæ
åµä¸é¿å
ç ´åæ§æä½ã |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | # /åè½å¼å |
| | | |
| | | å¨è¿è¡**åè½å¼å**æ¶ä½¿ç¨æ¤å·¥ä½æµã |
| | | |
| | | ## ç®æ |
| | | |
| | | æ åååè½å®ç°å·¥ä½æµ |
| | | |
| | | ## å¸¸ç¨æä»¶ |
| | | |
| | | - `manifests/*` |
| | | - `schemas/*` |
| | | - `**/*.test.*` |
| | | - `**/api/**` |
| | | |
| | | ## 建议æ¥éª¤ |
| | | |
| | | 1. å¨ç¼è¾åäºè§£å½åç¶æå失败模å¼ã |
| | | 2. è¿è¡æå°ä¸è¿è´¯çæ´æ¹ä»¥æ»¡è¶³å·¥ä½æµç®æ ã |
| | | 3. 对修æ¹çæä»¶è¿è¡æç¸å
³çéªè¯ã |
| | | 4. æ»ç»æ´æ¹å
容以åä»é审æ¥çé¨åã |
| | | |
| | | ## å
¸åæäº¤ä¿¡æ¯ |
| | | |
| | | - æ·»å åè½å®ç° |
| | | - 为åè½æ·»å æµè¯ |
| | | - æ´æ°ææ¡£ |
| | | |
| | | ## 注æäºé¡¹ |
| | | |
| | | - å°æ¤è§ä¸ºèææ¶ï¼èé硬ç¼ç èæ¬ã |
| | | - 妿工使µæé大ååï¼æ´æ°æ¤å½ä»¤ã |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | { |
| | | "name": "product-inventory-management", |
| | | "description": "Product inventory management system with JDK 25+", |
| | | "language": "Java", |
| | | "framework": "Spring Boot", |
| | | "database": "MySQL", |
| | | "orm": "MyBatis", |
| | | "javaVersion": "25" |
| | | } |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | # æ¥å£åæ´åç«¯ææ¡£è§å |
| | | |
| | | ## è§å |
| | | |
| | | - æ¯æ¬¡æ¶åæ¥å£åæ´ï¼æ°å¢æ¥å£ãä¿®æ¹è¯·æ±åæ°ãä¿®æ¹ååºç»æï¼æ¶ï¼å¿
é¡»è¾åºä¸ä»½åç«¯ä¿®æ¹ææ¡£å° `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 |
| | | ``` |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | # å®å
¨æ¤æ |
| | | |
| | | ## SQL 注å
¥é²æ¤ |
| | | |
| | | - æ°¸è¿ä¸è¦å°ç¨æ·è¾å
¥ç´æ¥æ¼æ¥å° SQL æ¥è¯¢ä¸ã |
| | | - å§ç»ä½¿ç¨åæ°åæ¥è¯¢æ ORM æ¹æ³ã |
| | | - 卿°æ®åºæä½åéªè¯åæ¸
çææè¾å
¥ã |
| | | |
| | | ## XSS 鲿¤ |
| | | |
| | | - å¨ HTML 䏿¸²æåè½¬ä¹ææç¨æ·çæçå
容ã |
| | | - ä½¿ç¨æ¨¡æ¿èªå¨è½¬ä¹åè½ã |
| | | - å¨å®¢æ·ç«¯åæå¡å¨ç«¯é½è¿è¡è¾å
¥éªè¯åæ¸
çã |
| | | |
| | | ## å¯é¥ç®¡ç |
| | | |
| | | - æ°¸è¿ä¸è¦å¨æºä»£ç ä¸ç¡¬ç¼ç å¯é¥ãAPI å¯é¥æå¯ç ã |
| | | - 使ç¨ç¯å¢åéæå®å
¨ä¿é©åºåå¨æææ°æ®ã |
| | | - å®æè½®æ¢å¯é¥ï¼é¿å
卿¥å¿ä¸è®°å½å®ä»¬ã |
| | | |
| | | ## è¾å
¥éªè¯ |
| | | |
| | | - å¨ç³»ç»è¾¹çå¤éªè¯ææè¾å
¥ã |
| | | - 使ç¨ç½ååèéé»ååè¿è¡éªè¯ã |
| | | - å¨å¤çä¸ä¼ åæ£æ¥æä»¶ç±»åå大å°ã |
| | | |
| | | ## é误å¤ç |
| | | |
| | | - ä¸è¦å¨éè¯¯æ¶æ¯ä¸æ´é²ææä¿¡æ¯ã |
| | | - å¨å
é¨è®°å½è¯¦ç»é误ï¼åç¨æ·è¿åéç¨æ¶æ¯ã |
| | | - å¤çææå¼å¸¸ä»¥é²æ¢ä¿¡æ¯æ³é²ã |
| | | |
| | | ## ä¾èµç®¡ç |
| | | |
| | | - ä¿æä¾èµé¡¹æ´æ°ã |
| | | - 审计ä¾èµé¡¹ä¸çå·²ç¥æ¼æ´ã |
| | | - åºå®çæ¬ä»¥é¿å
æå¤çç ´åæ§åæ´ã |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | { |
| | | "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 *)" |
| | | ] |
| | | } |
| | | } |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | # 项ç®å¼åçº¦å® |
| | | |
| | | ## æ¦è¿° |
| | | |
| | | æ¤æè½å®ä¹äºæ¬é¡¹ç®çå¼å模å¼å约å®ã |
| | | |
| | | ## ææ¯æ |
| | | |
| | | - **主è¦è¯è¨**: Java (JDK 25+) |
| | | - **æ¶æ**: Spring Boot + MyBatis |
| | | - **æµè¯ä½ç½®**: `src/test/java` |
| | | |
| | | ## æäº¤çº¦å® |
| | | |
| | | éµå¾ªçº¦å®å¼æäº¤æ ¼å¼ï¼ |
| | | |
| | | ### 使ç¨çåç¼ |
| | | |
| | | - `feat` - æ°åè½ |
| | | - `fix` - éè¯¯ä¿®å¤ |
| | | - `docs` - ææ¡£åæ´ |
| | | - `test` - æµè¯æ·»å ææ´æ° |
| | | - `refactor` - 代ç éæ |
| | | - `style` - 代ç 飿 ¼åæ´ï¼æ ¼å¼åãåå·çï¼ |
| | | - `chore` - æå»ºè¿ç¨æè¾
å©å·¥å
·åæ´ |
| | | |
| | | ### æ¶æ¯è§è |
| | | |
| | | - ä¿æç¬¬ä¸è¡ç®æ´ä¸ææè¿°æ§ï¼å°äº 70 个åç¬¦ï¼ |
| | | - 使ç¨ç¥ä½¿è¯æ°ï¼"æ·»å åè½"èé"æ·»å äºåè½"ï¼ |
| | | - ç¸å
³æ¶å
å«èå´ï¼`feat(èå´): æè¿°` |
| | | |
| | | ## 代ç 飿 ¼ |
| | | |
| | | - éµå¾ª Java å½åçº¦å® |
| | | - ä½¿ç¨ææä¹çåéåæ¹æ³å |
| | | - 为å
Œ
± API æ·»å Javadoc |
| | | - ä¿ææ¹æ³ä¸æ³¨ä¸åä¸èè´£ |
| | | |
| | | ## æµè¯ |
| | | |
| | | - 为ä¸å¡é»è¾ç¼ååå
æµè¯ |
| | | - ä¸ºæ°æ®åºæä½ä½¿ç¨éææµè¯ |
| | | - ä¿ææµè¯è¦ççå¨ 80% ä»¥ä¸ |
| | | |
| | | ## å并请æ±è§è |
| | | |
| | | - ä¿æå并请æ±ä¸æ³¨ä¸å° |
| | | - 为æ°åè½å
嫿µè¯ |
| | | - æ ¹æ®éè¦æ´æ°ææ¡£ |
| | | - åå¹¶å审æ¥ä»£ç |