claude-code-workflow 6.3.22 → 6.3.24

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.
Files changed (42) hide show
  1. package/.claude/agents/issue-plan-agent.md +10 -5
  2. package/.claude/commands/issue/plan.md +1 -1
  3. package/.claude/skills/review-code/SKILL.md +170 -0
  4. package/.claude/skills/review-code/phases/actions/action-collect-context.md +139 -0
  5. package/.claude/skills/review-code/phases/actions/action-complete.md +115 -0
  6. package/.claude/skills/review-code/phases/actions/action-deep-review.md +302 -0
  7. package/.claude/skills/review-code/phases/actions/action-generate-report.md +263 -0
  8. package/.claude/skills/review-code/phases/actions/action-quick-scan.md +164 -0
  9. package/.claude/skills/review-code/phases/orchestrator.md +251 -0
  10. package/.claude/skills/review-code/phases/state-manager.md +752 -0
  11. package/.claude/skills/review-code/phases/state-schema.md +174 -0
  12. package/.claude/skills/review-code/specs/issue-classification.md +228 -0
  13. package/.claude/skills/review-code/specs/quality-standards.md +214 -0
  14. package/.claude/skills/review-code/specs/review-dimensions.md +337 -0
  15. package/.claude/skills/review-code/specs/rules/architecture-rules.json +63 -0
  16. package/.claude/skills/review-code/specs/rules/correctness-rules.json +60 -0
  17. package/.claude/skills/review-code/specs/rules/index.md +140 -0
  18. package/.claude/skills/review-code/specs/rules/performance-rules.json +59 -0
  19. package/.claude/skills/review-code/specs/rules/readability-rules.json +60 -0
  20. package/.claude/skills/review-code/specs/rules/security-rules.json +58 -0
  21. package/.claude/skills/review-code/specs/rules/testing-rules.json +59 -0
  22. package/.claude/skills/review-code/templates/issue-template.md +186 -0
  23. package/.claude/skills/review-code/templates/review-report.md +173 -0
  24. package/.claude/skills/skill-generator/SKILL.md +56 -17
  25. package/.claude/skills/skill-generator/templates/autonomous-orchestrator.md +10 -0
  26. package/.claude/skills/skill-generator/templates/sequential-phase.md +9 -0
  27. package/.claude/skills/skill-generator/templates/skill-md.md +84 -5
  28. package/.claude/workflows/cli-templates/schemas/solution-schema.json +3 -3
  29. package/ccw/src/templates/dashboard-js/views/issue-manager.js +8 -0
  30. package/package.json +1 -1
  31. package/.claude/skills/code-reviewer/README.md +0 -340
  32. package/.claude/skills/code-reviewer/SKILL.md +0 -308
  33. package/.claude/skills/code-reviewer/phases/01-code-discovery.md +0 -246
  34. package/.claude/skills/code-reviewer/phases/02-security-analysis.md +0 -442
  35. package/.claude/skills/code-reviewer/phases/03-best-practices-review.md +0 -36
  36. package/.claude/skills/code-reviewer/phases/04-report-generation.md +0 -278
  37. package/.claude/skills/code-reviewer/specs/best-practices-requirements.md +0 -346
  38. package/.claude/skills/code-reviewer/specs/quality-standards.md +0 -252
  39. package/.claude/skills/code-reviewer/specs/security-requirements.md +0 -243
  40. package/.claude/skills/code-reviewer/templates/best-practice-finding.md +0 -234
  41. package/.claude/skills/code-reviewer/templates/report-template.md +0 -316
  42. package/.claude/skills/code-reviewer/templates/security-finding.md +0 -161
@@ -0,0 +1,251 @@
1
+ # Orchestrator
2
+
3
+ 根据当前状态选择并执行下一个审查动作。
4
+
5
+ ## Role
6
+
7
+ Code Review 编排器,负责:
8
+ 1. 读取当前审查状态
9
+ 2. 根据状态选择下一个动作
10
+ 3. 执行动作并更新状态
11
+ 4. 循环直到审查完成
12
+
13
+ ## Dependencies
14
+
15
+ - **State Manager**: [state-manager.md](./state-manager.md) - 提供原子化状态操作、自动备份、验证和回滚功能
16
+
17
+ ## State Management
18
+
19
+ 本模块使用 StateManager 进行所有状态操作,确保:
20
+ - **原子更新** - 写入临时文件后重命名,防止损坏
21
+ - **自动备份** - 每次更新前自动创建备份
22
+ - **回滚能力** - 失败时可从备份恢复
23
+ - **结构验证** - 确保状态结构完整性
24
+
25
+ ### StateManager API (from state-manager.md)
26
+
27
+ ```javascript
28
+ // 初始化状态
29
+ StateManager.initState(workDir)
30
+
31
+ // 读取当前状态
32
+ StateManager.getState(workDir)
33
+
34
+ // 更新状态(原子操作,自动备份)
35
+ StateManager.updateState(workDir, updates)
36
+
37
+ // 获取下一个待审查维度
38
+ StateManager.getNextDimension(state)
39
+
40
+ // 标记维度完成
41
+ StateManager.markDimensionComplete(workDir, dimension)
42
+
43
+ // 记录错误
44
+ StateManager.recordError(workDir, action, message)
45
+
46
+ // 从备份恢复
47
+ StateManager.restoreState(workDir)
48
+ ```
49
+
50
+ ## Decision Logic
51
+
52
+ ```javascript
53
+ function selectNextAction(state) {
54
+ // 1. 终止条件检查
55
+ if (state.status === 'completed') return null;
56
+ if (state.status === 'user_exit') return null;
57
+ if (state.error_count >= 3) return 'action-abort';
58
+
59
+ // 2. 初始化阶段
60
+ if (state.status === 'pending' || !state.context) {
61
+ return 'action-collect-context';
62
+ }
63
+
64
+ // 3. 快速扫描阶段
65
+ if (!state.scan_completed) {
66
+ return 'action-quick-scan';
67
+ }
68
+
69
+ // 4. 深入审查阶段 - 使用 StateManager 获取下一个维度
70
+ const nextDimension = StateManager.getNextDimension(state);
71
+ if (nextDimension) {
72
+ return 'action-deep-review'; // 传递 dimension 参数
73
+ }
74
+
75
+ // 5. 报告生成阶段
76
+ if (!state.report_generated) {
77
+ return 'action-generate-report';
78
+ }
79
+
80
+ // 6. 完成
81
+ return 'action-complete';
82
+ }
83
+ ```
84
+
85
+ ## Execution Loop
86
+
87
+ ```javascript
88
+ async function runOrchestrator() {
89
+ console.log('=== Code Review Orchestrator Started ===');
90
+
91
+ let iteration = 0;
92
+ const MAX_ITERATIONS = 20; // 6 dimensions + overhead
93
+
94
+ // 初始化状态(如果尚未初始化)
95
+ let state = StateManager.getState(workDir);
96
+ if (!state) {
97
+ state = StateManager.initState(workDir);
98
+ }
99
+
100
+ while (iteration < MAX_ITERATIONS) {
101
+ iteration++;
102
+
103
+ // 1. 读取当前状态(使用 StateManager)
104
+ state = StateManager.getState(workDir);
105
+ if (!state) {
106
+ console.error('[Orchestrator] Failed to read state, attempting recovery...');
107
+ state = StateManager.restoreState(workDir);
108
+ if (!state) {
109
+ console.error('[Orchestrator] Recovery failed, aborting.');
110
+ break;
111
+ }
112
+ }
113
+ console.log(`[Iteration ${iteration}] Status: ${state.status}`);
114
+
115
+ // 2. 选择下一个动作
116
+ const actionId = selectNextAction(state);
117
+
118
+ if (!actionId) {
119
+ console.log('Review completed, terminating.');
120
+ break;
121
+ }
122
+
123
+ console.log(`[Iteration ${iteration}] Executing: ${actionId}`);
124
+
125
+ // 3. 更新状态:当前动作(使用 StateManager)
126
+ StateManager.updateState(workDir, { current_action: actionId });
127
+
128
+ // 4. 执行动作
129
+ try {
130
+ const actionPrompt = Read(`phases/actions/${actionId}.md`);
131
+
132
+ // 确定当前需要审查的维度(使用 StateManager)
133
+ const currentDimension = StateManager.getNextDimension(state);
134
+
135
+ const result = await Task({
136
+ subagent_type: 'universal-executor',
137
+ run_in_background: false,
138
+ prompt: `
139
+ [WORK_DIR]
140
+ ${workDir}
141
+
142
+ [STATE]
143
+ ${JSON.stringify(state, null, 2)}
144
+
145
+ [CURRENT_DIMENSION]
146
+ ${currentDimension || 'N/A'}
147
+
148
+ [ACTION]
149
+ ${actionPrompt}
150
+
151
+ [SPECS]
152
+ Review Dimensions: specs/review-dimensions.md
153
+ Issue Classification: specs/issue-classification.md
154
+
155
+ [RETURN]
156
+ Return JSON with stateUpdates field containing updates to apply to state.
157
+ `
158
+ });
159
+
160
+ const actionResult = JSON.parse(result);
161
+
162
+ // 5. 更新状态:动作完成(使用 StateManager)
163
+ StateManager.updateState(workDir, {
164
+ current_action: null,
165
+ completed_actions: [...(state.completed_actions || []), actionId],
166
+ ...actionResult.stateUpdates
167
+ });
168
+
169
+ // 如果是深入审查动作,标记维度完成
170
+ if (actionId === 'action-deep-review' && currentDimension) {
171
+ StateManager.markDimensionComplete(workDir, currentDimension);
172
+ }
173
+
174
+ } catch (error) {
175
+ // 错误处理(使用 StateManager.recordError)
176
+ console.error(`[Orchestrator] Action failed: ${error.message}`);
177
+ StateManager.recordError(workDir, actionId, error.message);
178
+
179
+ // 清除当前动作
180
+ StateManager.updateState(workDir, { current_action: null });
181
+
182
+ // 检查是否需要恢复状态
183
+ const updatedState = StateManager.getState(workDir);
184
+ if (updatedState && updatedState.error_count >= 3) {
185
+ console.error('[Orchestrator] Too many errors, attempting state recovery...');
186
+ StateManager.restoreState(workDir);
187
+ }
188
+ }
189
+ }
190
+
191
+ console.log('=== Code Review Orchestrator Finished ===');
192
+ }
193
+ ```
194
+
195
+ ## Action Catalog
196
+
197
+ | Action | Purpose | Preconditions |
198
+ |--------|---------|---------------|
199
+ | [action-collect-context](actions/action-collect-context.md) | 收集审查目标上下文 | status === 'pending' |
200
+ | [action-quick-scan](actions/action-quick-scan.md) | 快速扫描识别风险区域 | context !== null |
201
+ | [action-deep-review](actions/action-deep-review.md) | 深入审查指定维度 | scan_completed === true |
202
+ | [action-generate-report](actions/action-generate-report.md) | 生成结构化审查报告 | all dimensions reviewed |
203
+ | [action-complete](actions/action-complete.md) | 完成审查,保存结果 | report_generated === true |
204
+
205
+ ## Termination Conditions
206
+
207
+ - `state.status === 'completed'` - 审查正常完成
208
+ - `state.status === 'user_exit'` - 用户主动退出
209
+ - `state.error_count >= 3` - 错误次数超限(由 StateManager.recordError 自动处理)
210
+ - `iteration >= MAX_ITERATIONS` - 迭代次数超限
211
+
212
+ ## Error Recovery
213
+
214
+ 本模块利用 StateManager 提供的错误恢复机制:
215
+
216
+ | Error Type | Recovery Strategy | StateManager Function |
217
+ |------------|-------------------|----------------------|
218
+ | 状态读取失败 | 从备份恢复 | `restoreState(workDir)` |
219
+ | 动作执行失败 | 记录错误,累计超限后自动失败 | `recordError(workDir, action, message)` |
220
+ | 状态不一致 | 验证并恢复 | `getState()` 内置验证 |
221
+ | 用户中止 | 保存当前进度 | `updateState(workDir, { status: 'user_exit' })` |
222
+
223
+ ### 错误处理流程
224
+
225
+ ```
226
+ 1. 动作执行失败
227
+ |
228
+ 2. StateManager.recordError() 记录错误
229
+ |
230
+ 3. 检查 error_count
231
+ |
232
+ +-- < 3: 继续下一次迭代
233
+ +-- >= 3: StateManager 自动设置 status='failed'
234
+ |
235
+ Orchestrator 检测到 status 变化
236
+ |
237
+ 尝试 restoreState() 恢复到上一个稳定状态
238
+ ```
239
+
240
+ ### 状态备份时机
241
+
242
+ StateManager 在以下时机自动创建备份:
243
+ - 每次 `updateState()` 调用前
244
+ - 可通过 `backupState(workDir, suffix)` 手动创建命名备份
245
+
246
+ ### 历史追踪
247
+
248
+ 所有状态变更记录在 `state-history.json`,便于调试和审计:
249
+ - 初始化事件
250
+ - 每次更新的字段变更
251
+ - 恢复操作记录