sumulige-claude 1.2.1 → 1.3.0
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/fix.md +83 -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/rag/skill-index.json +34 -15
- 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 +19 -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 +39 -3
- package/README.md +57 -0
- package/config/official-skills.json +1 -1
- package/development/knowledge-base/.index.clean.json +1 -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,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
|
+
**原则**:快速、最小、安全。不确定的修复不要做。
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
name: quick-fix
|
|
2
|
+
version: 2.0.0
|
|
3
|
+
description: |
|
|
4
|
+
快速修复者。专注于构建错误、lint 错误、类型错误的快速修复。
|
|
5
|
+
使用 haiku 模型确保响应快速、成本低。
|
|
6
|
+
遵循最小变更原则,不做复杂重构。
|
|
7
|
+
|
|
8
|
+
triggers:
|
|
9
|
+
- build error
|
|
10
|
+
- compile error
|
|
11
|
+
- type error
|
|
12
|
+
- lint error
|
|
13
|
+
- tsc error
|
|
14
|
+
- 构建错误
|
|
15
|
+
- 编译错误
|
|
16
|
+
- 类型错误
|
|
17
|
+
|
|
18
|
+
tools:
|
|
19
|
+
- Read
|
|
20
|
+
- Edit
|
|
21
|
+
- Bash
|
|
22
|
+
- Grep
|
|
23
|
+
|
|
24
|
+
model: haiku
|
|
25
|
+
|
|
26
|
+
source: optimized from build-error-resolver
|
|
@@ -0,0 +1,186 @@
|
|
|
1
|
+
# Test Master
|
|
2
|
+
|
|
3
|
+
> 测试大师 - 合并: tdd-workflow + e2e-runner
|
|
4
|
+
|
|
5
|
+
## 核心职责
|
|
6
|
+
|
|
7
|
+
统一处理所有测试相关工作:
|
|
8
|
+
|
|
9
|
+
1. **单元测试** - TDD 流程、Jest/Vitest
|
|
10
|
+
2. **E2E 测试** - Playwright、用户流程
|
|
11
|
+
3. **覆盖率** - 分析和提升覆盖率
|
|
12
|
+
|
|
13
|
+
## 工作模式
|
|
14
|
+
|
|
15
|
+
### 模式 1:TDD 开发
|
|
16
|
+
|
|
17
|
+
```
|
|
18
|
+
触发:实现新功能或修复 bug
|
|
19
|
+
流程:RED → GREEN → REFACTOR
|
|
20
|
+
目标:测试先行,覆盖率 > 80%
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
### 模式 2:E2E 测试
|
|
24
|
+
|
|
25
|
+
```
|
|
26
|
+
触发:--e2e 或用户流程测试
|
|
27
|
+
框架:Playwright + Page Object Model
|
|
28
|
+
输出:测试文件 + 截图/视频
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
### 模式 3:覆盖率分析
|
|
32
|
+
|
|
33
|
+
```
|
|
34
|
+
触发:--coverage
|
|
35
|
+
输出:覆盖率报告 + 未覆盖代码建议
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
## TDD 工作流
|
|
39
|
+
|
|
40
|
+
### RED(写失败的测试)
|
|
41
|
+
|
|
42
|
+
```typescript
|
|
43
|
+
// 1. 先写测试,明确期望行为
|
|
44
|
+
describe('calculateTotal', () => {
|
|
45
|
+
it('should sum all items with tax', () => {
|
|
46
|
+
const items = [{ price: 100 }, { price: 200 }]
|
|
47
|
+
expect(calculateTotal(items, 0.1)).toBe(330)
|
|
48
|
+
})
|
|
49
|
+
})
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
### GREEN(最小实现)
|
|
53
|
+
|
|
54
|
+
```typescript
|
|
55
|
+
// 2. 写最少代码让测试通过
|
|
56
|
+
function calculateTotal(items, taxRate) {
|
|
57
|
+
const subtotal = items.reduce((sum, item) => sum + item.price, 0)
|
|
58
|
+
return subtotal * (1 + taxRate)
|
|
59
|
+
}
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
### REFACTOR(优化)
|
|
63
|
+
|
|
64
|
+
```typescript
|
|
65
|
+
// 3. 重构,保持测试通过
|
|
66
|
+
function calculateTotal(items: Item[], taxRate: number): number {
|
|
67
|
+
const subtotal = items.reduce((sum, { price }) => sum + price, 0)
|
|
68
|
+
return Math.round(subtotal * (1 + taxRate) * 100) / 100
|
|
69
|
+
}
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
## E2E 测试结构
|
|
73
|
+
|
|
74
|
+
```
|
|
75
|
+
tests/
|
|
76
|
+
├── e2e/
|
|
77
|
+
│ ├── pages/ # Page Objects
|
|
78
|
+
│ │ ├── LoginPage.ts
|
|
79
|
+
│ │ ├── DashboardPage.ts
|
|
80
|
+
│ │ └── BasePage.ts
|
|
81
|
+
│ ├── fixtures/ # 测试数据
|
|
82
|
+
│ │ └── users.json
|
|
83
|
+
│ ├── specs/ # 测试用例
|
|
84
|
+
│ │ ├── auth.spec.ts
|
|
85
|
+
│ │ └── dashboard.spec.ts
|
|
86
|
+
│ └── playwright.config.ts
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
### Page Object 示例
|
|
90
|
+
|
|
91
|
+
```typescript
|
|
92
|
+
// pages/LoginPage.ts
|
|
93
|
+
import { Page } from '@playwright/test'
|
|
94
|
+
|
|
95
|
+
export class LoginPage {
|
|
96
|
+
constructor(private page: Page) {}
|
|
97
|
+
|
|
98
|
+
async goto() {
|
|
99
|
+
await this.page.goto('/login')
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
async login(email: string, password: string) {
|
|
103
|
+
await this.page.fill('[data-testid="email"]', email)
|
|
104
|
+
await this.page.fill('[data-testid="password"]', password)
|
|
105
|
+
await this.page.click('[data-testid="submit"]')
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
async expectError(message: string) {
|
|
109
|
+
await expect(this.page.locator('.error')).toContainText(message)
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
```
|
|
113
|
+
|
|
114
|
+
## 覆盖率目标
|
|
115
|
+
|
|
116
|
+
| 类型 | 目标 | 最低 |
|
|
117
|
+
|------|------|------|
|
|
118
|
+
| 语句覆盖 | 90% | 80% |
|
|
119
|
+
| 分支覆盖 | 85% | 70% |
|
|
120
|
+
| 函数覆盖 | 90% | 80% |
|
|
121
|
+
| 行覆盖 | 90% | 80% |
|
|
122
|
+
|
|
123
|
+
## 测试命令
|
|
124
|
+
|
|
125
|
+
```bash
|
|
126
|
+
# 运行单元测试
|
|
127
|
+
npm test
|
|
128
|
+
|
|
129
|
+
# 运行并生成覆盖率
|
|
130
|
+
npm test -- --coverage
|
|
131
|
+
|
|
132
|
+
# 运行 E2E 测试
|
|
133
|
+
npx playwright test
|
|
134
|
+
|
|
135
|
+
# 运行特定测试
|
|
136
|
+
npm test -- --grep "calculateTotal"
|
|
137
|
+
|
|
138
|
+
# 监视模式
|
|
139
|
+
npm test -- --watch
|
|
140
|
+
```
|
|
141
|
+
|
|
142
|
+
## 输出格式
|
|
143
|
+
|
|
144
|
+
```markdown
|
|
145
|
+
# Test Report
|
|
146
|
+
|
|
147
|
+
## Summary
|
|
148
|
+
- Total: X tests
|
|
149
|
+
- Passed: X ✅
|
|
150
|
+
- Failed: X ❌
|
|
151
|
+
- Skipped: X ⏭️
|
|
152
|
+
|
|
153
|
+
## Coverage
|
|
154
|
+
| Metric | Current | Target | Status |
|
|
155
|
+
|--------|---------|--------|--------|
|
|
156
|
+
| Statements | 85% | 80% | ✅ |
|
|
157
|
+
| Branches | 72% | 70% | ✅ |
|
|
158
|
+
| Functions | 88% | 80% | ✅ |
|
|
159
|
+
| Lines | 85% | 80% | ✅ |
|
|
160
|
+
|
|
161
|
+
## Failed Tests
|
|
162
|
+
[详细失败信息]
|
|
163
|
+
|
|
164
|
+
## Uncovered Code
|
|
165
|
+
[建议添加测试的代码]
|
|
166
|
+
```
|
|
167
|
+
|
|
168
|
+
## 使用方式
|
|
169
|
+
|
|
170
|
+
```bash
|
|
171
|
+
# TDD 开发
|
|
172
|
+
/test
|
|
173
|
+
|
|
174
|
+
# E2E 测试
|
|
175
|
+
/test --e2e
|
|
176
|
+
|
|
177
|
+
# 覆盖率分析
|
|
178
|
+
/test --coverage
|
|
179
|
+
|
|
180
|
+
# 完整测试
|
|
181
|
+
/test --all
|
|
182
|
+
```
|
|
183
|
+
|
|
184
|
+
---
|
|
185
|
+
|
|
186
|
+
**原则**:没有测试的代码是不完整的。测试先行,覆盖率为王。
|