sumulige-claude 1.2.1 → 1.3.1
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.
- package/.claude/.kickoff-hint.txt +1 -1
- package/.claude/AGENTS.md +6 -6
- package/.claude/USAGE.md +175 -0
- package/.claude/commands/audit.md +147 -0
- package/.claude/commands/fix.md +83 -0
- package/.claude/commands/gha.md +136 -0
- package/.claude/commands/handoff.md +93 -0
- package/.claude/commands/plan.md +88 -0
- package/.claude/commands/refactor.md +102 -0
- package/.claude/hooks/pre-push.cjs +3 -2
- package/.claude/rules/coding-style.md +119 -0
- package/.claude/rules/hooks.md +288 -0
- package/.claude/rules/performance.md +78 -0
- package/.claude/rules/security.md +56 -0
- package/.claude/rules/testing.md +89 -0
- package/.claude/settings.local.json +24 -1
- package/.claude/skills/design-brain/SKILL.md +190 -0
- package/.claude/skills/design-brain/metadata.yaml +26 -0
- package/.claude/skills/quality-guard/SKILL.md +138 -0
- package/.claude/skills/quality-guard/metadata.yaml +27 -0
- package/.claude/skills/quick-fix/SKILL.md +138 -0
- package/.claude/skills/quick-fix/metadata.yaml +26 -0
- package/.claude/skills/test-master/SKILL.md +186 -0
- package/.claude/skills/test-master/metadata.yaml +29 -0
- package/AGENTS.md +25 -7
- package/CHANGELOG.md +64 -3
- package/README.md +57 -0
- package/cli.js +4 -0
- package/config/official-skills.json +1 -1
- package/development/knowledge-base/.index.clean.json +1 -0
- package/lib/commands.js +51 -0
- package/lib/permission-audit.js +255 -0
- package/package.json +1 -1
- package/.claude/skills/123-skill/SKILL.md +0 -61
- package/.claude/skills/123-skill/examples/basic.md +0 -3
- package/.claude/skills/123-skill/metadata.yaml +0 -30
- package/.claude/skills/123-skill/templates/default.md +0 -3
- package/.claude/skills/api-tester/SKILL.md +0 -90
- package/.claude/skills/api-tester/examples/basic.md +0 -3
- package/.claude/skills/api-tester/metadata.yaml +0 -30
- package/.claude/skills/api-tester/templates/default.md +0 -3
- package/.claude/skills/code-reviewer-123/SKILL.md +0 -61
- package/.claude/skills/code-reviewer-123/examples/basic.md +0 -3
- package/.claude/skills/code-reviewer-123/metadata.yaml +0 -30
- package/.claude/skills/code-reviewer-123/templates/default.md +0 -3
- package/.claude/skills/my-skill/SKILL.md +0 -61
- package/.claude/skills/my-skill/examples/basic.md +0 -3
- package/.claude/skills/my-skill/metadata.yaml +0 -30
- package/.claude/skills/my-skill/templates/default.md +0 -3
- package/.claude/skills/template/SKILL.md +0 -6
- package/.claude/skills/template/metadata.yaml +0 -30
- package/.claude/skills/test-skill-name/SKILL.md +0 -61
- package/.claude/skills/test-skill-name/examples/basic.md +0 -3
- package/.claude/skills/test-skill-name/metadata.yaml +0 -30
- package/.claude/skills/test-skill-name/templates/default.md +0 -3
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
# Security Rules
|
|
2
|
+
|
|
3
|
+
> 安全规则 - 所有提交必须遵守
|
|
4
|
+
|
|
5
|
+
## 提交前强制检查
|
|
6
|
+
|
|
7
|
+
每次提交代码前必须确认:
|
|
8
|
+
|
|
9
|
+
- [ ] **无硬编码密钥** - API keys, passwords, tokens 必须用环境变量
|
|
10
|
+
- [ ] **输入验证** - 所有用户输入已验证和清理
|
|
11
|
+
- [ ] **SQL 注入防护** - 使用参数化查询
|
|
12
|
+
- [ ] **XSS 防护** - HTML 输出已转义
|
|
13
|
+
- [ ] **CSRF 保护** - 表单提交有 token 验证
|
|
14
|
+
- [ ] **认证授权** - 敏感操作有权限检查
|
|
15
|
+
- [ ] **速率限制** - API 端点有请求限制
|
|
16
|
+
- [ ] **错误信息** - 不泄露敏感数据
|
|
17
|
+
|
|
18
|
+
## 密钥管理
|
|
19
|
+
|
|
20
|
+
```typescript
|
|
21
|
+
// ❌ 永远不要这样做
|
|
22
|
+
const apiKey = "sk-proj-xxxxx"
|
|
23
|
+
const password = "admin123"
|
|
24
|
+
|
|
25
|
+
// ✅ 正确方式
|
|
26
|
+
const apiKey = process.env.OPENAI_API_KEY
|
|
27
|
+
if (!apiKey) {
|
|
28
|
+
throw new Error('OPENAI_API_KEY not configured')
|
|
29
|
+
}
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
## 安全响应协议
|
|
33
|
+
|
|
34
|
+
发现安全问题时:
|
|
35
|
+
|
|
36
|
+
1. **立即停止** 当前工作
|
|
37
|
+
2. **调用** security-reviewer skill
|
|
38
|
+
3. **修复** CRITICAL 问题后才能继续
|
|
39
|
+
4. **轮换** 任何已暴露的密钥
|
|
40
|
+
5. **审查** 整个代码库是否有类似问题
|
|
41
|
+
|
|
42
|
+
## 敏感文件
|
|
43
|
+
|
|
44
|
+
以下文件永远不应提交:
|
|
45
|
+
|
|
46
|
+
```
|
|
47
|
+
.env
|
|
48
|
+
.env.local
|
|
49
|
+
.env.production
|
|
50
|
+
*.pem
|
|
51
|
+
*.key
|
|
52
|
+
credentials.json
|
|
53
|
+
secrets.yaml
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
确保 `.gitignore` 包含这些模式。
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
# Testing Rules
|
|
2
|
+
|
|
3
|
+
> 测试规则 - 所有代码必须遵守
|
|
4
|
+
|
|
5
|
+
## 核心原则
|
|
6
|
+
|
|
7
|
+
**测试先于代码**:使用 TDD 工作流,先写测试再实现。
|
|
8
|
+
|
|
9
|
+
## 覆盖率要求
|
|
10
|
+
|
|
11
|
+
| 代码类型 | 最低覆盖率 |
|
|
12
|
+
|---------|-----------|
|
|
13
|
+
| 普通业务逻辑 | 80% |
|
|
14
|
+
| 金融计算 | 100% |
|
|
15
|
+
| 认证逻辑 | 100% |
|
|
16
|
+
| 安全相关代码 | 100% |
|
|
17
|
+
|
|
18
|
+
## 提交前检查
|
|
19
|
+
|
|
20
|
+
每次提交前必须:
|
|
21
|
+
|
|
22
|
+
- [ ] 所有测试通过
|
|
23
|
+
- [ ] 覆盖率达标(80%+)
|
|
24
|
+
- [ ] 新功能有单元测试
|
|
25
|
+
- [ ] API 有集成测试
|
|
26
|
+
- [ ] 关键流程有 E2E 测试
|
|
27
|
+
|
|
28
|
+
```bash
|
|
29
|
+
# 提交前运行
|
|
30
|
+
npm test && npm run lint
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
## 测试类型要求
|
|
34
|
+
|
|
35
|
+
### 单元测试 (必须)
|
|
36
|
+
|
|
37
|
+
- 每个公共函数都有测试
|
|
38
|
+
- 测试边界情况(null, empty, max)
|
|
39
|
+
- 测试错误路径
|
|
40
|
+
|
|
41
|
+
### 集成测试 (必须)
|
|
42
|
+
|
|
43
|
+
- 每个 API 端点都有测试
|
|
44
|
+
- 测试正常响应和错误响应
|
|
45
|
+
- Mock 外部依赖
|
|
46
|
+
|
|
47
|
+
### E2E 测试 (关键流程)
|
|
48
|
+
|
|
49
|
+
- 登录/认证流程
|
|
50
|
+
- 核心业务流程
|
|
51
|
+
- 支付/金融流程
|
|
52
|
+
|
|
53
|
+
## 测试反模式 (禁止)
|
|
54
|
+
|
|
55
|
+
❌ **测试实现细节**
|
|
56
|
+
```typescript
|
|
57
|
+
// 不要测试内部状态
|
|
58
|
+
expect(component.state.count).toBe(5)
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
❌ **测试相互依赖**
|
|
62
|
+
```typescript
|
|
63
|
+
// 每个测试必须独立
|
|
64
|
+
test('creates user', () => { ... })
|
|
65
|
+
test('updates same user', () => { ... }) // 依赖前一个
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
❌ **固定等待**
|
|
69
|
+
```typescript
|
|
70
|
+
// 不要用固定时间等待
|
|
71
|
+
await page.waitForTimeout(5000)
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
## CI 集成
|
|
75
|
+
|
|
76
|
+
CI 流水线必须:
|
|
77
|
+
|
|
78
|
+
1. 运行所有单元测试
|
|
79
|
+
2. 运行所有集成测试
|
|
80
|
+
3. 运行 E2E 测试(关键流程)
|
|
81
|
+
4. 检查覆盖率阈值
|
|
82
|
+
5. 上传测试报告
|
|
83
|
+
|
|
84
|
+
## 相关命令
|
|
85
|
+
|
|
86
|
+
- `/tdd` - 测试驱动开发流程
|
|
87
|
+
- `/e2e` - E2E 测试生成
|
|
88
|
+
- `/test` - 运行测试
|
|
89
|
+
- `/test-coverage` - 覆盖率分析
|
|
@@ -105,7 +105,30 @@
|
|
|
105
105
|
"WebFetch(domain:docs.bigmodel.cn)",
|
|
106
106
|
"WebFetch(domain:docs.z.ai)",
|
|
107
107
|
"Bash(CLAUDE_PROJECT_DIR=/Users/sumulige/Documents/Antigravity/talos node:*)",
|
|
108
|
-
"Bash(npm run test:coverage:*)"
|
|
108
|
+
"Bash(npm run test:coverage:*)",
|
|
109
|
+
"Bash(/opt/homebrew/bin/smc ultrathink)",
|
|
110
|
+
"Bash(fnm list:*)",
|
|
111
|
+
"Bash(zsh:*)",
|
|
112
|
+
"Bash(/opt/homebrew/bin/node:*)",
|
|
113
|
+
"mcp__zread__get_repo_structure",
|
|
114
|
+
"mcp__zread__search_doc",
|
|
115
|
+
"mcp__zread__read_file",
|
|
116
|
+
"Bash(printf:*)",
|
|
117
|
+
"Bash(export PATH=\"/opt/homebrew/bin:/usr/local/bin:$PATH\")",
|
|
118
|
+
"Bash(/usr/local/bin/node:*)",
|
|
119
|
+
"Bash(export PATH=\"/opt/homebrew/Cellar/node/25.3.0/bin:$PATH\")",
|
|
120
|
+
"Bash(/opt/homebrew/Cellar/node/25.3.0/bin/node --version)",
|
|
121
|
+
"Bash(/opt/homebrew/Cellar/node/25.3.0/bin/npm test)",
|
|
122
|
+
"Bash(/opt/homebrew/Cellar/node/25.3.0/bin/node -e \"const idx = require\\(''./.claude/rag/skill-index.json''\\); console.log\\(''Skills 数量:'', idx.skills.length\\); console.log\\(''\\\\n模型策略:''\\); idx.model_strategy.rules.forEach\\(r => console.log\\('' -'', r.pattern, ''→'', r.model, ''\\('' + r.reason + ''\\)''\\)\\);\")",
|
|
123
|
+
"Bash(/opt/homebrew/Cellar/node/25.3.0/bin/node -e \"const fs=require\\(''fs''\\); let d=''''; process.stdin.on\\(''data'',c=>d+=c\\); process.stdin.on\\(''end'',\\(\\)=>{const j=JSON.parse\\(d\\); console.log\\(''Skills:'', j.skills.length\\); console.log\\(''Model strategy:'', JSON.stringify\\(j.model_strategy, null, 2\\)\\);}\\)\")",
|
|
124
|
+
"Bash(/opt/homebrew/Cellar/node/25.3.0/bin/npm version 1.3.0 --no-git-tag-version)",
|
|
125
|
+
"Bash(git tag:*)",
|
|
126
|
+
"Bash(/opt/homebrew/Cellar/node/25.3.0/bin/npm publish)",
|
|
127
|
+
"Bash(/opt/homebrew/Cellar/node/25.3.0/bin/npm view sumulige-claude version)",
|
|
128
|
+
"Bash(/opt/homebrew/Cellar/node/25.3.0/bin/npm view sumulige-claude versions --json)",
|
|
129
|
+
"Bash(/opt/homebrew/Cellar/node/25.3.0/bin/npx sumulige-claude@1.3.0 sync)",
|
|
130
|
+
"WebFetch(domain:raw.githubusercontent.com)",
|
|
131
|
+
"Bash(/opt/homebrew/Cellar/node/25.3.0/bin/npm version 1.3.1 --no-git-tag-version)"
|
|
109
132
|
]
|
|
110
133
|
},
|
|
111
134
|
"hooks": {
|
|
@@ -0,0 +1,190 @@
|
|
|
1
|
+
# Design Brain
|
|
2
|
+
|
|
3
|
+
> 设计大脑 - 合并: planner + architect-design
|
|
4
|
+
|
|
5
|
+
## 核心职责
|
|
6
|
+
|
|
7
|
+
统一处理设计和规划工作:
|
|
8
|
+
|
|
9
|
+
1. **需求分析** - 理解和澄清需求
|
|
10
|
+
2. **架构设计** - 系统设计、技术选型
|
|
11
|
+
3. **实现规划** - 步骤分解、风险评估
|
|
12
|
+
|
|
13
|
+
## 工作模式
|
|
14
|
+
|
|
15
|
+
### 模式 1:快速规划(默认)
|
|
16
|
+
|
|
17
|
+
```
|
|
18
|
+
触发:一般任务
|
|
19
|
+
输出:简洁的实现步骤
|
|
20
|
+
耗时:< 2 分钟
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
### 模式 2:深度设计
|
|
24
|
+
|
|
25
|
+
```
|
|
26
|
+
触发:--deep 或复杂架构决策
|
|
27
|
+
输出:完整设计文档
|
|
28
|
+
耗时:5-10 分钟
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
## 快速规划流程
|
|
32
|
+
|
|
33
|
+
```
|
|
34
|
+
1. 理解需求(30s)
|
|
35
|
+
- 核心目标是什么?
|
|
36
|
+
- 有哪些约束?
|
|
37
|
+
|
|
38
|
+
2. 识别依赖(30s)
|
|
39
|
+
- 需要修改哪些文件?
|
|
40
|
+
- 需要什么外部包?
|
|
41
|
+
|
|
42
|
+
3. 制定步骤(1min)
|
|
43
|
+
- 分解为可验证的小步骤
|
|
44
|
+
- 确定步骤顺序
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
## 深度设计流程
|
|
48
|
+
|
|
49
|
+
```
|
|
50
|
+
1. 需求分析(2min)
|
|
51
|
+
- 功能需求
|
|
52
|
+
- 非功能需求(性能、安全、可用性)
|
|
53
|
+
- 边界条件
|
|
54
|
+
|
|
55
|
+
2. 架构设计(3min)
|
|
56
|
+
- 组件划分
|
|
57
|
+
- 接口定义
|
|
58
|
+
- 数据流设计
|
|
59
|
+
|
|
60
|
+
3. 技术选型(2min)
|
|
61
|
+
- 框架/库选择
|
|
62
|
+
- 权衡分析
|
|
63
|
+
|
|
64
|
+
4. 实现规划(3min)
|
|
65
|
+
- 详细步骤
|
|
66
|
+
- 风险评估
|
|
67
|
+
- 测试策略
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
## 输出格式
|
|
71
|
+
|
|
72
|
+
### 快速规划
|
|
73
|
+
|
|
74
|
+
```markdown
|
|
75
|
+
# Plan: [功能名称]
|
|
76
|
+
|
|
77
|
+
## Goal
|
|
78
|
+
[一句话描述]
|
|
79
|
+
|
|
80
|
+
## Steps
|
|
81
|
+
1. [ ] [步骤 1]
|
|
82
|
+
2. [ ] [步骤 2]
|
|
83
|
+
3. [ ] [步骤 3]
|
|
84
|
+
|
|
85
|
+
## Files
|
|
86
|
+
- `path/to/file.ts` - [修改内容]
|
|
87
|
+
|
|
88
|
+
## Risk
|
|
89
|
+
- [主要风险] → [缓解策略]
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
### 深度设计
|
|
93
|
+
|
|
94
|
+
```markdown
|
|
95
|
+
# Design: [系统/功能名称]
|
|
96
|
+
|
|
97
|
+
## Overview
|
|
98
|
+
[背景和目标]
|
|
99
|
+
|
|
100
|
+
## Architecture
|
|
101
|
+
|
|
102
|
+
### Components
|
|
103
|
+
```
|
|
104
|
+
┌─────────────┐ ┌─────────────┐
|
|
105
|
+
│ Component A │────▶│ Component B │
|
|
106
|
+
└─────────────┘ └─────────────┘
|
|
107
|
+
```
|
|
108
|
+
|
|
109
|
+
### Data Flow
|
|
110
|
+
[数据如何流动]
|
|
111
|
+
|
|
112
|
+
## Technical Decisions
|
|
113
|
+
|
|
114
|
+
### Decision 1: [名称]
|
|
115
|
+
- **Choice**: [选择]
|
|
116
|
+
- **Reason**: [原因]
|
|
117
|
+
- **Alternatives**: [备选方案]
|
|
118
|
+
- **Trade-offs**: [权衡]
|
|
119
|
+
|
|
120
|
+
## Implementation Plan
|
|
121
|
+
|
|
122
|
+
### Phase 1: [阶段名]
|
|
123
|
+
1. [ ] Step 1
|
|
124
|
+
2. [ ] Step 2
|
|
125
|
+
|
|
126
|
+
### Phase 2: [阶段名]
|
|
127
|
+
...
|
|
128
|
+
|
|
129
|
+
## Risks
|
|
130
|
+
| Risk | Impact | Mitigation |
|
|
131
|
+
|------|--------|------------|
|
|
132
|
+
|
|
133
|
+
## Success Criteria
|
|
134
|
+
- [ ] 标准 1
|
|
135
|
+
- [ ] 标准 2
|
|
136
|
+
```
|
|
137
|
+
|
|
138
|
+
## 设计原则
|
|
139
|
+
|
|
140
|
+
### 1. 简单优于复杂
|
|
141
|
+
|
|
142
|
+
```
|
|
143
|
+
能用简单方案就不要复杂化
|
|
144
|
+
避免过度设计
|
|
145
|
+
YAGNI - 不需要的就不做
|
|
146
|
+
```
|
|
147
|
+
|
|
148
|
+
### 2. 最小变更
|
|
149
|
+
|
|
150
|
+
```
|
|
151
|
+
优先复用现有代码
|
|
152
|
+
避免不必要的重构
|
|
153
|
+
保持向后兼容
|
|
154
|
+
```
|
|
155
|
+
|
|
156
|
+
### 3. 可测试性
|
|
157
|
+
|
|
158
|
+
```
|
|
159
|
+
每个步骤都可验证
|
|
160
|
+
定义清晰的成功标准
|
|
161
|
+
考虑自动化测试
|
|
162
|
+
```
|
|
163
|
+
|
|
164
|
+
## 常用设计模式
|
|
165
|
+
|
|
166
|
+
| 场景 | 推荐模式 |
|
|
167
|
+
|------|---------|
|
|
168
|
+
| 数据访问 | Repository |
|
|
169
|
+
| 业务逻辑 | Service Layer |
|
|
170
|
+
| 对象创建 | Factory |
|
|
171
|
+
| 算法切换 | Strategy |
|
|
172
|
+
| 事件驱动 | Observer |
|
|
173
|
+
| UI 组件 | Compound Components |
|
|
174
|
+
|
|
175
|
+
## 使用方式
|
|
176
|
+
|
|
177
|
+
```bash
|
|
178
|
+
# 快速规划(默认)
|
|
179
|
+
/plan
|
|
180
|
+
|
|
181
|
+
# 深度设计
|
|
182
|
+
/plan --deep
|
|
183
|
+
|
|
184
|
+
# 仅架构设计
|
|
185
|
+
/plan --arch
|
|
186
|
+
```
|
|
187
|
+
|
|
188
|
+
---
|
|
189
|
+
|
|
190
|
+
**原则**:好的设计是演进出来的。保持简单,按需扩展。先规划后动手。
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
name: design-brain
|
|
2
|
+
version: 2.0.0
|
|
3
|
+
description: |
|
|
4
|
+
设计大脑。合并了规划和架构设计功能。
|
|
5
|
+
支持快速规划和深度设计两种模式。
|
|
6
|
+
仅在复杂任务时使用 opus 模型,日常规划使用 sonnet。
|
|
7
|
+
|
|
8
|
+
triggers:
|
|
9
|
+
- plan
|
|
10
|
+
- design
|
|
11
|
+
- architecture
|
|
12
|
+
- system design
|
|
13
|
+
- technical decision
|
|
14
|
+
- 规划
|
|
15
|
+
- 设计
|
|
16
|
+
- 架构
|
|
17
|
+
|
|
18
|
+
tools:
|
|
19
|
+
- Read
|
|
20
|
+
- Grep
|
|
21
|
+
- Glob
|
|
22
|
+
- Task
|
|
23
|
+
|
|
24
|
+
model: opus
|
|
25
|
+
|
|
26
|
+
source: merged from planner + architect-design
|
|
@@ -0,0 +1,138 @@
|
|
|
1
|
+
# Quality Guard
|
|
2
|
+
|
|
3
|
+
> 代码质量守护者 - 合并: code-reviewer + security-reviewer + refactor-cleaner
|
|
4
|
+
|
|
5
|
+
## 核心职责
|
|
6
|
+
|
|
7
|
+
统一处理代码质量的三个维度:
|
|
8
|
+
|
|
9
|
+
1. **代码审查** - 可读性、可维护性、最佳实践
|
|
10
|
+
2. **安全检查** - OWASP Top 10、漏洞检测
|
|
11
|
+
3. **代码清理** - 死代码、重复代码、未使用依赖
|
|
12
|
+
|
|
13
|
+
## 工作模式
|
|
14
|
+
|
|
15
|
+
### 模式 1:快速审查(默认)
|
|
16
|
+
|
|
17
|
+
```
|
|
18
|
+
触发:代码变更后
|
|
19
|
+
范围:变更文件
|
|
20
|
+
输出:问题列表 + 严重程度
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
### 模式 2:安全深扫
|
|
24
|
+
|
|
25
|
+
```
|
|
26
|
+
触发:--security 或处理认证/支付/用户输入
|
|
27
|
+
范围:相关模块
|
|
28
|
+
输出:安全报告 + 修复建议
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
### 模式 3:代码清理
|
|
32
|
+
|
|
33
|
+
```
|
|
34
|
+
触发:--clean 或明确要求清理
|
|
35
|
+
范围:整个项目
|
|
36
|
+
输出:可删除项列表 + 风险评级
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
## 审查清单
|
|
40
|
+
|
|
41
|
+
### 代码质量(HIGH)
|
|
42
|
+
|
|
43
|
+
- [ ] 函数 < 50 行
|
|
44
|
+
- [ ] 文件 < 800 行
|
|
45
|
+
- [ ] 嵌套深度 < 4 层
|
|
46
|
+
- [ ] 命名清晰、语义化
|
|
47
|
+
- [ ] 无 console.log 语句
|
|
48
|
+
- [ ] 无硬编码魔法值
|
|
49
|
+
- [ ] 错误处理完善
|
|
50
|
+
|
|
51
|
+
### 安全检查(CRITICAL)
|
|
52
|
+
|
|
53
|
+
- [ ] 无硬编码凭证(API keys, passwords, tokens)
|
|
54
|
+
- [ ] 无 SQL 注入风险
|
|
55
|
+
- [ ] 无 XSS 漏洞
|
|
56
|
+
- [ ] 输入验证完整
|
|
57
|
+
- [ ] 无不安全依赖(npm audit)
|
|
58
|
+
- [ ] 无路径遍历风险
|
|
59
|
+
- [ ] 认证/授权正确实现
|
|
60
|
+
|
|
61
|
+
### 代码清理(MEDIUM)
|
|
62
|
+
|
|
63
|
+
- [ ] 无未使用的导出
|
|
64
|
+
- [ ] 无未使用的依赖
|
|
65
|
+
- [ ] 无重复代码块
|
|
66
|
+
- [ ] 无死代码分支
|
|
67
|
+
- [ ] 无过时的 TODO/FIXME
|
|
68
|
+
|
|
69
|
+
## 分析工具
|
|
70
|
+
|
|
71
|
+
```bash
|
|
72
|
+
# 代码质量
|
|
73
|
+
npx eslint . --report-unused-disable-directives
|
|
74
|
+
|
|
75
|
+
# 安全检查
|
|
76
|
+
npm audit
|
|
77
|
+
npx snyk test
|
|
78
|
+
|
|
79
|
+
# 死代码检测
|
|
80
|
+
npx knip # 未使用的文件、导出、依赖
|
|
81
|
+
npx depcheck # 未使用的 npm 依赖
|
|
82
|
+
npx ts-prune # 未使用的 TypeScript 导出
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
## 输出格式
|
|
86
|
+
|
|
87
|
+
```markdown
|
|
88
|
+
# Quality Guard Report
|
|
89
|
+
|
|
90
|
+
## Summary
|
|
91
|
+
- 🔴 CRITICAL: X issues
|
|
92
|
+
- 🟠 HIGH: X issues
|
|
93
|
+
- 🟡 MEDIUM: X issues
|
|
94
|
+
|
|
95
|
+
## Security Issues
|
|
96
|
+
| File | Line | Issue | Fix |
|
|
97
|
+
|------|------|-------|-----|
|
|
98
|
+
|
|
99
|
+
## Code Quality Issues
|
|
100
|
+
| File | Line | Issue | Fix |
|
|
101
|
+
|------|------|-------|-----|
|
|
102
|
+
|
|
103
|
+
## Cleanup Suggestions
|
|
104
|
+
| Item | Type | Risk | Action |
|
|
105
|
+
|------|------|------|--------|
|
|
106
|
+
|
|
107
|
+
## Verdict
|
|
108
|
+
✅ APPROVED / ⚠️ NEEDS ATTENTION / ❌ BLOCKED
|
|
109
|
+
```
|
|
110
|
+
|
|
111
|
+
## 严重程度
|
|
112
|
+
|
|
113
|
+
| 级别 | 类别 | 处理 |
|
|
114
|
+
|------|------|------|
|
|
115
|
+
| 🔴 CRITICAL | 安全漏洞 | 必须修复,阻止提交 |
|
|
116
|
+
| 🟠 HIGH | 代码质量 | 应该修复 |
|
|
117
|
+
| 🟡 MEDIUM | 清理建议 | 建议修复 |
|
|
118
|
+
| 🟢 LOW | 风格建议 | 可选修复 |
|
|
119
|
+
|
|
120
|
+
## 使用方式
|
|
121
|
+
|
|
122
|
+
```bash
|
|
123
|
+
# 快速审查(默认)
|
|
124
|
+
/review
|
|
125
|
+
|
|
126
|
+
# 安全深扫
|
|
127
|
+
/review --security
|
|
128
|
+
|
|
129
|
+
# 代码清理
|
|
130
|
+
/review --clean
|
|
131
|
+
|
|
132
|
+
# 完整审查
|
|
133
|
+
/review --all
|
|
134
|
+
```
|
|
135
|
+
|
|
136
|
+
---
|
|
137
|
+
|
|
138
|
+
**原则**:质量是不可妥协的。安全问题必须立即修复。
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
name: quality-guard
|
|
2
|
+
version: 2.0.0
|
|
3
|
+
description: |
|
|
4
|
+
代码质量守护者。合并了代码审查、安全检查、死代码清理三大功能。
|
|
5
|
+
支持快速审查、安全深扫、代码清理三种模式。
|
|
6
|
+
自动在代码变更后触发,确保代码质量和安全性。
|
|
7
|
+
|
|
8
|
+
triggers:
|
|
9
|
+
- code review
|
|
10
|
+
- security check
|
|
11
|
+
- clean code
|
|
12
|
+
- dead code
|
|
13
|
+
- refactor
|
|
14
|
+
- vulnerability
|
|
15
|
+
- 代码审查
|
|
16
|
+
- 安全检查
|
|
17
|
+
- 清理代码
|
|
18
|
+
|
|
19
|
+
tools:
|
|
20
|
+
- Read
|
|
21
|
+
- Grep
|
|
22
|
+
- Glob
|
|
23
|
+
- Bash
|
|
24
|
+
|
|
25
|
+
model: sonnet
|
|
26
|
+
|
|
27
|
+
source: merged from code-reviewer + security-reviewer + refactor-cleaner
|
|
@@ -0,0 +1,138 @@
|
|
|
1
|
+
# Quick Fix
|
|
2
|
+
|
|
3
|
+
> 快速修复者 - 优化版 build-error-resolver
|
|
4
|
+
|
|
5
|
+
## 核心职责
|
|
6
|
+
|
|
7
|
+
快速修复常见的开发问题:
|
|
8
|
+
|
|
9
|
+
1. **构建错误** - TypeScript 编译错误
|
|
10
|
+
2. **Lint 错误** - ESLint/Prettier 问题
|
|
11
|
+
3. **类型错误** - 类型不匹配、缺少类型
|
|
12
|
+
|
|
13
|
+
## 设计理念
|
|
14
|
+
|
|
15
|
+
**轻量 + 快速 + 最小变更**
|
|
16
|
+
|
|
17
|
+
使用 haiku 模型,确保响应快速,成本低。
|
|
18
|
+
|
|
19
|
+
## 工作流程
|
|
20
|
+
|
|
21
|
+
### 1. 错误捕获
|
|
22
|
+
|
|
23
|
+
```bash
|
|
24
|
+
# 获取构建错误
|
|
25
|
+
npm run build 2>&1 | head -100
|
|
26
|
+
|
|
27
|
+
# 获取类型错误
|
|
28
|
+
npx tsc --noEmit 2>&1 | head -50
|
|
29
|
+
|
|
30
|
+
# 获取 lint 错误
|
|
31
|
+
npx eslint . --format json 2>&1 | head -100
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
### 2. 错误分类
|
|
35
|
+
|
|
36
|
+
| 类型 | 示例 | 处理策略 |
|
|
37
|
+
|------|------|---------|
|
|
38
|
+
| 类型错误 | `TS2345: Argument of type...` | 添加类型断言或修复类型 |
|
|
39
|
+
| 导入错误 | `Cannot find module...` | 检查路径或安装依赖 |
|
|
40
|
+
| 语法错误 | `Unexpected token...` | 修复语法 |
|
|
41
|
+
| Lint 错误 | `no-unused-vars` | 删除或使用变量 |
|
|
42
|
+
|
|
43
|
+
### 3. 增量修复
|
|
44
|
+
|
|
45
|
+
```
|
|
46
|
+
原则:每次只修复一个错误
|
|
47
|
+
流程:
|
|
48
|
+
1. 读取第一个错误
|
|
49
|
+
2. 定位问题文件和行号
|
|
50
|
+
3. 应用最小修复
|
|
51
|
+
4. 重新编译验证
|
|
52
|
+
5. 如果仍有错误,重复步骤 1
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
## 常见修复模式
|
|
56
|
+
|
|
57
|
+
### 类型错误
|
|
58
|
+
|
|
59
|
+
```typescript
|
|
60
|
+
// 错误: Type 'string | undefined' is not assignable to type 'string'
|
|
61
|
+
// 修复 1: 非空断言
|
|
62
|
+
const value = maybeString!
|
|
63
|
+
|
|
64
|
+
// 修复 2: 默认值
|
|
65
|
+
const value = maybeString ?? ''
|
|
66
|
+
|
|
67
|
+
// 修复 3: 类型守卫
|
|
68
|
+
if (maybeString) {
|
|
69
|
+
const value = maybeString
|
|
70
|
+
}
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
### 导入错误
|
|
74
|
+
|
|
75
|
+
```typescript
|
|
76
|
+
// 错误: Cannot find module './utils'
|
|
77
|
+
// 检查 1: 文件是否存在
|
|
78
|
+
// 检查 2: 路径是否正确
|
|
79
|
+
// 检查 3: 扩展名是否需要
|
|
80
|
+
|
|
81
|
+
// 修复: 更正路径
|
|
82
|
+
import { helper } from './utils/helpers'
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
### Lint 错误
|
|
86
|
+
|
|
87
|
+
```typescript
|
|
88
|
+
// 错误: 'foo' is defined but never used
|
|
89
|
+
// 修复 1: 删除未使用的变量
|
|
90
|
+
// 修复 2: 如果需要保留,使用 _ 前缀
|
|
91
|
+
const _foo = unused
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
## 输出格式
|
|
95
|
+
|
|
96
|
+
```markdown
|
|
97
|
+
# Quick Fix Report
|
|
98
|
+
|
|
99
|
+
## Errors Found: X
|
|
100
|
+
## Fixed: Y
|
|
101
|
+
## Remaining: Z
|
|
102
|
+
|
|
103
|
+
## Fixes Applied
|
|
104
|
+
| File | Line | Error | Fix |
|
|
105
|
+
|------|------|-------|-----|
|
|
106
|
+
| src/app.ts | 42 | TS2345 | Added type assertion |
|
|
107
|
+
| src/utils.ts | 15 | no-unused-vars | Removed unused import |
|
|
108
|
+
|
|
109
|
+
## Build Status
|
|
110
|
+
✅ SUCCESS / ❌ FAILED (X errors remaining)
|
|
111
|
+
```
|
|
112
|
+
|
|
113
|
+
## 使用方式
|
|
114
|
+
|
|
115
|
+
```bash
|
|
116
|
+
# 修复构建错误
|
|
117
|
+
/fix --build
|
|
118
|
+
|
|
119
|
+
# 修复 lint 错误
|
|
120
|
+
/fix --lint
|
|
121
|
+
|
|
122
|
+
# 修复类型错误
|
|
123
|
+
/fix --type
|
|
124
|
+
|
|
125
|
+
# 自动修复所有
|
|
126
|
+
/fix --all
|
|
127
|
+
```
|
|
128
|
+
|
|
129
|
+
## 限制
|
|
130
|
+
|
|
131
|
+
- 不处理复杂的架构问题
|
|
132
|
+
- 不重构代码
|
|
133
|
+
- 仅做最小必要的修改
|
|
134
|
+
- 如果错误过于复杂,建议使用 `/plan` 先规划
|
|
135
|
+
|
|
136
|
+
---
|
|
137
|
+
|
|
138
|
+
**原则**:快速、最小、安全。不确定的修复不要做。
|