smart-commit-copilot-cli 0.1.5 → 0.1.7

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 (168) hide show
  1. package/CHANGELOG.md +37 -0
  2. package/README.md +55 -7
  3. package/docs/configuration.md +55 -2
  4. package/docs/contracts.md +15 -2
  5. package/docs/getting-started.md +18 -4
  6. package/docs/publish.md +1 -1
  7. package/docs/releases/0.1.6-draft.md +72 -0
  8. package/docs/releases/0.1.7-draft.md +55 -0
  9. package/docs/roadmap.md +1 -1
  10. package/docs/verification.md +15 -0
  11. package/examples/config/smart-commit.json +10 -1
  12. package/out/cliApp.js +11 -1
  13. package/out/cliApp.js.map +1 -1
  14. package/out/commands/bridge.js +160 -17
  15. package/out/commands/bridge.js.map +1 -1
  16. package/out/commitMessage/index.js +30 -9
  17. package/out/commitMessage/index.js.map +1 -1
  18. package/out/commitMessage/prompt.js +60 -10
  19. package/out/commitMessage/prompt.js.map +1 -1
  20. package/out/commitMessage/protocol.js +283 -22
  21. package/out/commitMessage/protocol.js.map +1 -1
  22. package/out/config/cliArgs.js +33 -0
  23. package/out/config/cliArgs.js.map +1 -1
  24. package/out/config/constants.js +9 -0
  25. package/out/config/constants.js.map +1 -1
  26. package/out/config/env.js +30 -0
  27. package/out/config/env.js.map +1 -1
  28. package/out/config/file.js +36 -0
  29. package/out/config/file.js.map +1 -1
  30. package/out/config/legacySmartCommit.js +41 -1
  31. package/out/config/legacySmartCommit.js.map +1 -1
  32. package/out/config/merge.js +4 -0
  33. package/out/config/merge.js.map +1 -1
  34. package/out/config/schema.js +35 -1
  35. package/out/config/schema.js.map +1 -1
  36. package/out/contracts.js +44 -9
  37. package/out/contracts.js.map +1 -1
  38. package/out/llm/responseCorrection.js +32 -0
  39. package/out/llm/responseCorrection.js.map +1 -0
  40. package/out/passHistory/index.js +51 -22
  41. package/out/passHistory/index.js.map +1 -1
  42. package/out/passHistory/store.js +29 -1
  43. package/out/passHistory/store.js.map +1 -1
  44. package/out/passHistory/types.js +23 -1
  45. package/out/passHistory/types.js.map +1 -1
  46. package/out/promptContext.js +19 -3
  47. package/out/promptContext.js.map +1 -1
  48. package/out/pullRequestSummary/index.js +53 -0
  49. package/out/pullRequestSummary/index.js.map +1 -0
  50. package/out/pullRequestSummary/mockProvider.js +24 -0
  51. package/out/pullRequestSummary/mockProvider.js.map +1 -0
  52. package/out/pullRequestSummary/openaiProvider.js +19 -0
  53. package/out/pullRequestSummary/openaiProvider.js.map +1 -0
  54. package/out/pullRequestSummary/prompt.js +122 -0
  55. package/out/pullRequestSummary/prompt.js.map +1 -0
  56. package/out/pullRequestSummary/provider.js +3 -0
  57. package/out/pullRequestSummary/provider.js.map +1 -0
  58. package/out/pullRequestSummary/render.js +74 -0
  59. package/out/pullRequestSummary/render.js.map +1 -0
  60. package/out/renderOutput.js +8 -1
  61. package/out/renderOutput.js.map +1 -1
  62. package/out/reporting/prompt.js +13 -1
  63. package/out/reporting/prompt.js.map +1 -1
  64. package/out/reporting/timeWindow.js +7 -0
  65. package/out/reporting/timeWindow.js.map +1 -1
  66. package/out/reporting/types.js +1 -0
  67. package/out/reporting/types.js.map +1 -1
  68. package/out/review/diffClassifier.js +535 -0
  69. package/out/review/diffClassifier.js.map +1 -0
  70. package/out/review/index.js +27 -11
  71. package/out/review/index.js.map +1 -1
  72. package/out/review/mockProvider.js +157 -8
  73. package/out/review/mockProvider.js.map +1 -1
  74. package/out/review/openaiProvider.js +10 -4
  75. package/out/review/openaiProvider.js.map +1 -1
  76. package/out/review/parser.js +13 -0
  77. package/out/review/parser.js.map +1 -1
  78. package/out/review/prompt.js +76 -4
  79. package/out/review/prompt.js.map +1 -1
  80. package/out/skills/types.js +3 -0
  81. package/out/skills/types.js.map +1 -0
  82. package/package.json +2 -1
  83. package/src/code-review-skills/c-code-review/SKILL.md +165 -0
  84. package/src/code-review-skills/c-code-review/references/build-and-tooling.md +16 -0
  85. package/src/code-review-skills/c-code-review/references/concurrency-and-signals.md +16 -0
  86. package/src/code-review-skills/c-code-review/references/error-handling-and-cleanup.md +16 -0
  87. package/src/code-review-skills/c-code-review/references/macros-headers-and-build-boundaries.md +16 -0
  88. package/src/code-review-skills/c-code-review/references/performance-and-data-movement.md +16 -0
  89. package/src/code-review-skills/c-code-review/references/pointers-memory-and-resource-lifecycle.md +18 -0
  90. package/src/code-review-skills/c-code-review/references/scoring-guide.md +40 -0
  91. package/src/code-review-skills/c-code-review/references/undefined-behavior-and-safety.md +17 -0
  92. package/src/code-review-skills/code-review/SKILL.md +150 -0
  93. package/src/code-review-skills/code-review/references/code-quality-checklist.md +53 -0
  94. package/src/code-review-skills/code-review/references/removal-plan.md +45 -0
  95. package/src/code-review-skills/code-review/references/scoring-guide.md +38 -0
  96. package/src/code-review-skills/code-review/references/security-checklist.md +53 -0
  97. package/src/code-review-skills/code-review/references/solid-checklist.md +55 -0
  98. package/src/code-review-skills/cpp-code-review/SKILL.md +165 -0
  99. package/src/code-review-skills/cpp-code-review/references/build-and-tooling.md +12 -0
  100. package/src/code-review-skills/cpp-code-review/references/concurrency-and-atomics.md +14 -0
  101. package/src/code-review-skills/cpp-code-review/references/exceptions-and-error-model.md +16 -0
  102. package/src/code-review-skills/cpp-code-review/references/memory-raii-and-lifetimes.md +19 -0
  103. package/src/code-review-skills/cpp-code-review/references/performance-and-hot-paths.md +16 -0
  104. package/src/code-review-skills/cpp-code-review/references/scoring-guide.md +41 -0
  105. package/src/code-review-skills/cpp-code-review/references/templates-api-and-abi.md +13 -0
  106. package/src/code-review-skills/cpp-code-review/references/undefined-behavior-and-safety.md +18 -0
  107. package/src/code-review-skills/csharp-code-review/SKILL.md +159 -0
  108. package/src/code-review-skills/csharp-code-review/references/async-and-cancellation.md +16 -0
  109. package/src/code-review-skills/csharp-code-review/references/concurrency.md +15 -0
  110. package/src/code-review-skills/csharp-code-review/references/exceptions-and-api-contracts.md +16 -0
  111. package/src/code-review-skills/csharp-code-review/references/memory-resources-and-interop.md +16 -0
  112. package/src/code-review-skills/csharp-code-review/references/nullable-types-and-patterns.md +15 -0
  113. package/src/code-review-skills/csharp-code-review/references/scoring-guide.md +41 -0
  114. package/src/code-review-skills/csharp-code-review/references/web-data-and-security.md +15 -0
  115. package/src/code-review-skills/frontend-code-review/SKILL.md +143 -0
  116. package/src/code-review-skills/frontend-code-review/references/accessibility-and-semantic-ux.md +33 -0
  117. package/src/code-review-skills/frontend-code-review/references/interaction-and-state-lifecycle.md +39 -0
  118. package/src/code-review-skills/frontend-code-review/references/rendering-performance-and-resource-loading.md +34 -0
  119. package/src/code-review-skills/frontend-code-review/references/scoring-guide.md +38 -0
  120. package/src/code-review-skills/frontend-code-review/references/security-and-data-boundary.md +34 -0
  121. package/src/code-review-skills/golang-code-review/SKILL.md +153 -0
  122. package/src/code-review-skills/golang-code-review/references/api-contract-and-maintainability.md +25 -0
  123. package/src/code-review-skills/golang-code-review/references/concurrency-and-lifecycle.md +25 -0
  124. package/src/code-review-skills/golang-code-review/references/error-handling-and-reliability.md +24 -0
  125. package/src/code-review-skills/golang-code-review/references/performance-and-allocation.md +25 -0
  126. package/src/code-review-skills/golang-code-review/references/scoring-guide.md +40 -0
  127. package/src/code-review-skills/golang-code-review/references/security-and-trust-boundary.md +20 -0
  128. package/src/code-review-skills/java-code-review/SKILL.md +153 -0
  129. package/src/code-review-skills/java-code-review/references/api-contract-and-maintainability.md +22 -0
  130. package/src/code-review-skills/java-code-review/references/concurrency-and-lifecycle.md +27 -0
  131. package/src/code-review-skills/java-code-review/references/error-handling-and-reliability.md +25 -0
  132. package/src/code-review-skills/java-code-review/references/performance-and-resource-usage.md +23 -0
  133. package/src/code-review-skills/java-code-review/references/scoring-guide.md +40 -0
  134. package/src/code-review-skills/java-code-review/references/security-and-trust-boundary.md +20 -0
  135. package/src/code-review-skills/mobile-code-review/SKILL.md +171 -0
  136. package/src/code-review-skills/mobile-code-review/references/async-state-and-side-effects.md +19 -0
  137. package/src/code-review-skills/mobile-code-review/references/lifecycle-and-navigation.md +19 -0
  138. package/src/code-review-skills/mobile-code-review/references/performance-and-resource-management.md +19 -0
  139. package/src/code-review-skills/mobile-code-review/references/resilience-and-device-conditions.md +19 -0
  140. package/src/code-review-skills/mobile-code-review/references/scoring-guide.md +38 -0
  141. package/src/code-review-skills/mobile-code-review/references/storage-permissions-and-security.md +19 -0
  142. package/src/code-review-skills/mobile-code-review/references/testing-and-regression-coverage.md +21 -0
  143. package/src/code-review-skills/php-code-review/SKILL.md +159 -0
  144. package/src/code-review-skills/php-code-review/references/inclusion-superglobals-and-scope.md +21 -0
  145. package/src/code-review-skills/php-code-review/references/language-types-and-autoload.md +19 -0
  146. package/src/code-review-skills/php-code-review/references/oop-magic-and-errors.md +17 -0
  147. package/src/code-review-skills/php-code-review/references/performance-data-access-and-testing.md +16 -0
  148. package/src/code-review-skills/php-code-review/references/request-lifecycle-and-runtime.md +15 -0
  149. package/src/code-review-skills/php-code-review/references/scoring-guide.md +39 -0
  150. package/src/code-review-skills/php-code-review/references/security-and-io-boundary.md +24 -0
  151. package/src/code-review-skills/python-code-review/SKILL.md +147 -0
  152. package/src/code-review-skills/python-code-review/references/exception-and-lifecycle.md +15 -0
  153. package/src/code-review-skills/python-code-review/references/input-and-data-security.md +20 -0
  154. package/src/code-review-skills/python-code-review/references/maintainability-and-testing.md +21 -0
  155. package/src/code-review-skills/python-code-review/references/performance-and-resource-usage.md +21 -0
  156. package/src/code-review-skills/python-code-review/references/scoring-guide.md +38 -0
  157. package/src/code-review-skills/rust-code-review/SKILL.md +165 -0
  158. package/src/code-review-skills/rust-code-review/references/api-traits-and-evolution.md +16 -0
  159. package/src/code-review-skills/rust-code-review/references/cargo-features-and-test-coverage.md +16 -0
  160. package/src/code-review-skills/rust-code-review/references/concurrency-async-and-sync.md +17 -0
  161. package/src/code-review-skills/rust-code-review/references/error-handling-and-reliability.md +17 -0
  162. package/src/code-review-skills/rust-code-review/references/macros-ffi-and-embedded.md +19 -0
  163. package/src/code-review-skills/rust-code-review/references/ownership-borrowing-and-unsafe.md +20 -0
  164. package/src/code-review-skills/rust-code-review/references/performance-and-allocations.md +18 -0
  165. package/src/code-review-skills/rust-code-review/references/scoring-guide.md +41 -0
  166. package/src/git-commit-message-skills/conventional/SKILL.md +3 -3
  167. package/src/git-commit-message-skills/gitmoji/SKILL.md +3 -3
  168. package/src/git-commit-message-skills/semantic/SKILL.md +3 -3
@@ -0,0 +1,153 @@
1
+ ---
2
+ name: java-code-reviewer
3
+ review-domain: java
4
+ description: "Java 专项代码审查技能,用于开发者在 commit 前审查 Java/Kotlin 服务、库与测试改动。重点识别并发与事务边界、异常与资源生命周期、接口与 API 契约、安全边界与性能回退,给出可执行修复建议。默认只输出审查结论,不直接修改代码。"
5
+ ---
6
+
7
+ # Java 代码审查
8
+
9
+ ## 问题门槛
10
+
11
+ 每条问题必须满足以下三点,否则不输出:
12
+
13
+ 1. **可定位**:能指向具体文件和新增行号
14
+ 2. **可自证**:仅凭当前 diff 和可见上下文即可成立,不依赖 diff 之外的假设
15
+ 3. **可修复**:给出具体修复方案,而非泛泛建议
16
+
17
+ 同一根因的多处表现合并为一条,不重复列举。
18
+
19
+ ## 审查模式
20
+
21
+ 你会收到一段共享的 diff 类型识别结果。
22
+
23
+ - 当识别结果为 `java` 且与当前 skill 匹配时,按本 skill 的 Java 专项标准审查
24
+ - 当识别结果与当前 skill 不匹配时,不要提示用户选错了 skill,也不要中止审查
25
+ - 不匹配时继续使用同一输出格式,但按现有通用 `code-review` 审查基线做稳妥审查
26
+ - 不匹配时减少对 JVM、Spring 生态与部署拓扑的特有假设
27
+
28
+ ## 严重级别
29
+
30
+ | 等级 | 含义 | 处理 |
31
+ |------|------|------|
32
+ | **P0** | 安全漏洞、数据损坏、必现崩溃、核心路径不可用 | 必须修复后才能提交 |
33
+ | **P1** | 逻辑错误、功能异常、并发/资源泄漏、明显性能/可靠性回退 | 提交前修复 |
34
+ | **P2** | 可维护性问题、测试不足、非阻塞设计问题 | 当前批次修复或登记后续任务 |
35
+ | **P3** | 次要改进 | 可选 |
36
+
37
+ ## 工作流
38
+
39
+ ### 1) 确认审查范围
40
+
41
+ 先关注共享分类结果、`changedFiles` 与 diff 本身,再决定本次是否使用 Java 专项视角。
42
+
43
+ - 当前 diff 主要是 `.java`、`.kt`、典型 Maven/Gradle 配置或 JVM 相关改动时,使用 Java 专项视角
44
+ - 当前 diff 若明显偏前端、Python、Golang 或类型不匹配,则直接回到通用稳妥审查
45
+ - 不因为用户选择了 Java skill 就强行输出 Java 专属问题
46
+
47
+ ### 2) 代码分析
48
+
49
+ #### a) 并发与资源生命周期
50
+
51
+ 加载 `references/concurrency-and-lifecycle.md`,检查线程安全、锁与可见性、`ExecutorService` 生命周期、异步回调中的上下文、I/O 与连接关闭。
52
+
53
+ #### b) 异常处理与可靠性
54
+
55
+ 加载 `references/error-handling-and-reliability.md`,重点关注异常语义、错误传播、可恢复与不可恢复边界、日志与可观测性、超时与重试。
56
+
57
+ #### c) 接口契约与可维护性
58
+
59
+ 加载 `references/api-contract-and-maintainability.md`,检查公开 API 兼容性、null 与 Optional 使用、DTO 与序列化边界、Spring/Web 层契约与可读性。
60
+
61
+ #### d) 安全与信任边界
62
+
63
+ 加载 `references/security-and-trust-boundary.md`,检查鉴权边界、注入、SSRF、敏感日志与多租户/跨租户数据访问风险。
64
+
65
+ #### e) 性能与资源效率
66
+
67
+ 加载 `references/performance-and-resource-usage.md`,检查集合与 Stream 使用、数据库访问模式、缓存一致性、大对象与热路径开销。
68
+
69
+ #### f) 通用工程基线补充
70
+
71
+ 完成 Java 专项检查后,补充对通用 `code-review` 的以下基线检查:架构与设计,以及当 diff 包含删除时的冗余与残留引用。Java 专项维度只负责 JVM、服务边界与序列化相关风险,不替代通用工程审查。
72
+
73
+ ### 3) 整理问题列表
74
+
75
+ 确认每条问题满足门槛(可定位、可自证、可修复)。同一根因的多处表现合并为一条。不为凑数量降低标准。
76
+
77
+ ### 4) 评分
78
+
79
+ 加载 `references/scoring-guide.md`,**每次审查必须根据该指南给出具体评分**:先按最严重问题确定基准区间,再按影响广度、问题数量、可逆性在区间内微调,最终输出一个具体分值(如 8.5、7.0),不得只写区间或省略评分;纯文件删除时记为 N/A。
80
+
81
+ ### 5) 输出格式
82
+
83
+ 按以下格式输出:
84
+
85
+ ```markdown
86
+ ## 审查摘要
87
+
88
+ **审查范围**:X 个文件,Y 行新增
89
+
90
+ **评分**:X / 10(必须为具体分值,如 8.5;仅纯删除时为 N/A)
91
+
92
+ **提交建议**:✅ 可以提交 / ✅ 可以提交,跟进修复 / 🔧 修复后提交 / 🚫 禁止提交
93
+
94
+ **问题统计**:P0 × 个 / P1 × 个 / P2 × 个 / P3 × 个
95
+
96
+ ---
97
+
98
+ ## 各维度结果
99
+
100
+ | # | 维度 | 结论 |
101
+ |---|------|------|
102
+ | 1 | 并发与资源生命周期 | ✅ 无问题 / ⚠️ 存在问题(简述) |
103
+ | 2 | 异常处理与可靠性 | ✅ 无问题 / ⚠️ 存在问题(简述) |
104
+ | 3 | 接口契约与可维护性 | ✅ 无问题 / ⚠️ 存在问题(简述) |
105
+ | 4 | 安全与信任边界 | ✅ 无问题 / ⚠️ 存在问题(简述) |
106
+ | 5 | 性能与资源效率 | ✅ 无问题 / ⚠️ 存在问题(简述) |
107
+
108
+ ---
109
+
110
+ ## 问题列表
111
+
112
+ ### P0 🔴 严重
113
+
114
+
115
+ ### P1 🟠 高
116
+ 1. **[文件:行号] 问题标题**
117
+ - **问题**:一句话说明是什么问题
118
+ - **影响**:一句话说明会导致什么后果
119
+ - **修复**:具体方案
120
+
121
+ ### P2 🟡 中
122
+
123
+
124
+ ### P3 🟢 低
125
+
126
+
127
+ ---
128
+
129
+ ## 总体评价
130
+
131
+ 2-3 句话说明是否建议提交,以及还需要哪些修复或跟进。
132
+ ```
133
+
134
+ **输出规则:**
135
+
136
+ - 每次审查必须在「审查摘要」中给出根据 `references/scoring-guide.md` 计算的具体评分(X / 10),不得省略。
137
+ - 直接给问题,不写前言铺垫。
138
+ - 每条问题写清楚:位置、问题是什么、影响是什么、如何修复。
139
+ - 只在有明确代码路径支撑时输出问题,不猜项目框架、运行环境或业务规则。
140
+ - 如果共享分类结果提示应回到通用审查,则按通用基线保守审查,但仍然使用本 skill 的统一输出结构。
141
+ - 禁止在模板之外添加"亮点"、"优点"、"表扬"等额外章节。
142
+ - `## 总体评价` 只写 2-3 句连续段落,不用列表或子标题。
143
+
144
+ ## 参考文件
145
+
146
+ | 文件 | 用途 |
147
+ |------|------|
148
+ | `concurrency-and-lifecycle.md` | 线程安全、锁、异步任务与资源关闭检查项 |
149
+ | `error-handling-and-reliability.md` | 异常语义、超时重试与可观测性检查项 |
150
+ | `api-contract-and-maintainability.md` | API 契约、null、序列化与可读性检查项 |
151
+ | `security-and-trust-boundary.md` | 鉴权、注入、SSRF 与敏感数据边界检查项 |
152
+ | `performance-and-resource-usage.md` | 集合、数据库与缓存相关性能检查项 |
153
+ | `scoring-guide.md` | 评分模型、区间规则和提交建议 |
@@ -0,0 +1,22 @@
1
+ # Java 接口契约与可维护性检查清单
2
+
3
+ ## 公开 API 与兼容性
4
+
5
+ - 对外接口(REST path、请求/响应 DTO、公开库 API)变更是否破坏向后兼容(删除字段、改语义、改 HTTP 状态约定)。
6
+ - 序列化边界(JSON/XML)是否与 `record`/getter 命名、注解一致,避免静默字段丢失。
7
+
8
+ ## Spring / Web 层(仅当 diff 呈现相关注解或类型时)
9
+
10
+ - 控制器方法参数校验是否缺失(`@Valid`、`@NotNull` 等与 DTO 是否匹配)。
11
+ - `GET` 是否误带 body;`POST` 幂等与安全头是否在明显错误时出现。
12
+ - 路径变量与查询参数是否与权限注解或业务假设一致(仅当 diff 可证时)。
13
+
14
+ ## 可读性与职责
15
+
16
+ - 方法过长或类职责过多是否在本次变更中明显恶化。
17
+ - 魔法数字与字符串是否应在常量或配置中集中(仅当重复或高风险时指出)。
18
+
19
+ ## 测试与可维护性
20
+
21
+ - 关键分支或回归点是否在 diff 中缺少对应测试更新。
22
+ - 测试是否依赖顺序、全局可变状态或真实外部服务且无隔离(diff 可见时)。
@@ -0,0 +1,27 @@
1
+ # Java 并发与资源生命周期检查清单
2
+
3
+ ## 线程安全与可见性
4
+
5
+ - 共享可变状态是否在无同步或错误同步下被多线程访问;`volatile` 是否误用于复合操作。
6
+ - 单例或缓存是否为双重检查锁定等模式正确发布;`static` 可变集合是否被并发修改。
7
+ - `synchronized` / `ReentrantLock` 临界区是否过大、是否存在锁顺序反转导致死锁的路径。
8
+
9
+ ## 异步与执行器
10
+
11
+ - `ExecutorService`、`ScheduledExecutorService` 是否在应用生命周期内正确关闭,避免线程泄漏。
12
+ - `CompletableFuture` 链是否指定合适执行器,避免在公共线程池上阻塞 I/O。
13
+ - 异步回调中是否误用已结束的请求上下文(如已关闭的 `HttpServletRequest` 属性)。
14
+
15
+ ## 事务与边界(仅在 diff 可见时判断)
16
+
17
+ - 长耗时或外部 I/O 是否被包在事务边界内导致连接占用过长(仅当代码明确呈现事务注解或模板用法时指出)。
18
+ - 同类内自调用是否绕过代理导致事务失效(仅当 diff 能体现该结构时指出)。
19
+
20
+ ## 资源关闭
21
+
22
+ - `InputStream` / `OutputStream` / `Connection` / `Statement` 等是否在异常路径上关闭;优先检查 `try-with-resources` 是否覆盖所有出口。
23
+ - 实现 `AutoCloseable` 的客户端是否在 `finally` 或 try-with-resources 中关闭。
24
+
25
+ ## 可观测性
26
+
27
+ - 并发失败路径是否保留可关联的 trace/request id(不泄露敏感载荷)。
@@ -0,0 +1,25 @@
1
+ # Java 异常处理与可靠性检查清单
2
+
3
+ ## 异常语义
4
+
5
+ - `catch (Exception)` 或 `catch (Throwable)` 是否吞掉关键错误或未重新抛出合适类型。
6
+ - 业务异常与系统异常是否混淆,导致调用方无法区分可重试与不可重试失败。
7
+ - 是否在不该抛出 checked exception 的层向上泄漏实现细节。
8
+
9
+ ## 错误传播与包装
10
+
11
+ - 链式 cause 是否在包装时保留(`initCause` / 构造传入 cause),避免丢失根因栈。
12
+ - 是否在日志中重复记录同一异常(同一请求路径多层 `log.error`)。
13
+
14
+ ## 超时与重试
15
+
16
+ - 对外部调用(HTTP、消息、DB)是否在 diff 中呈现无限等待或缺失超时配置。
17
+ - 重试是否缺少退避或幂等前提,可能导致重复副作用(仅当 diff 能支撑该结论时指出)。
18
+
19
+ ## 日志与敏感数据
20
+
21
+ - 是否在异常或日志中输出 token、密码、完整 PII;堆栈是否在生产配置下泄露内部路径。
22
+
23
+ ## Optional 与 null
24
+
25
+ - 是否对可能为 null 的返回值在未校验下解引用;`Optional` 是否用作字段或方法参数反模式(仅当明显时指出)。
@@ -0,0 +1,23 @@
1
+ # Java 性能与资源效率检查清单
2
+
3
+ ## 集合与算法
4
+
5
+ - 是否在热路径上对 `List` 做线性 `contains`/`remove`,应考虑 `Set`/`Map`(diff 能体现规模或循环时)。
6
+ - 是否在循环内创建可避免的大对象或重复编译 Pattern。
7
+
8
+ ## Stream 与惰性
9
+
10
+ - Stream 链是否在需要短路或限制处缺少 `limit`;是否在并行流上误用阻塞 I/O。
11
+
12
+ ## 数据访问
13
+
14
+ - 是否在循环中执行查询或远程调用(N+1),diff 呈现明显嵌套调用时指出。
15
+ - 批量操作是否误用逐条 insert/update;连接是否长时间持有。
16
+
17
+ ## 缓存
18
+
19
+ - 缓存 key 是否可能冲突;失效策略是否与写路径一致(仅当 diff 呈现缓存读写时)。
20
+
21
+ ## 内存与 I/O
22
+
23
+ - 是否一次性加载过大集合或文件到内存;大响应是否缺少流式处理(diff 可见时)。
@@ -0,0 +1,40 @@
1
+ # 评分指南
2
+
3
+ 评分由**最严重的已确认问题**决定基准区间,再在区间内微调。
4
+
5
+ ## 第一步:确定基准区间
6
+
7
+ | 最严重问题 | 分值区间 |
8
+ |-----------|---------|
9
+ | 无问题 | 9.0-10.0 |
10
+ | 仅 P2/P3 | 7.5-9.0 |
11
+ | P1 | 4.0-7.0 |
12
+ | P0(崩溃、数据损坏) | 2.0-3.5 |
13
+ | P0(安全漏洞、权限绕过) | 1.0-2.5 |
14
+
15
+ ## 第二步:在区间内调整
16
+
17
+ - **影响广度**:影响全量请求或核心链路取下限,仅边界场景触发取上限,差距约 0.5-1.0 分
18
+ - **问题数量**:每多一个独立同级别问题,向下移约 0.3-0.5 分
19
+ - **可逆性**:可快速定位、低风险修复的问题可上浮 0.3-0.5 分
20
+
21
+ > 多个问题时取区间下限附近;单个问题且影响有限时取区间上限附近。
22
+
23
+ ## Java 语境硬上限
24
+
25
+ - 有任意 P0 -> 评分上限 3.5
26
+ - 核心服务主路径不可用 -> 评分上限 2.5
27
+ - 线程/连接池明确泄漏且会持续放大 -> 评分上限 3.0
28
+ - Web/API 层可证的注入、越权、SSRF 或开放重定向 -> 评分上限 2.5
29
+ - 硬编码真实 credentials 或 secret 泄露 -> 评分上限 2.0
30
+ - 纯文件删除(无逻辑变更)-> 评分记为 N/A
31
+ - 测试文件的问题 -> 最高计为 P2,不纳入 P0/P1 计数
32
+
33
+ ## 评分语义
34
+
35
+ | 分值 | 提交建议 | 含义 |
36
+ |------|---------|------|
37
+ | 9.0-10.0 | ✅ 可以提交 | 无明显问题 |
38
+ | 7.5-9.0 | ✅ 可以提交,跟进修复 | 有轻微问题,不影响提交 |
39
+ | 4.0-7.0 | 🔧 修复后提交 | 存在 P1 问题,影响广取下限,影响窄取上限 |
40
+ | 1.0-3.5 | 🚫 禁止提交 | 存在 P0 问题,必须修复 |
@@ -0,0 +1,20 @@
1
+ # Java 安全与信任边界检查清单
2
+
3
+ ## 鉴权与租户边界
4
+
5
+ - 控制器、服务层、批处理任务与异步消费者是否在服务端强制执行鉴权、资源归属或租户隔离校验。
6
+ - Repository 查询、缓存键、批量更新与导出路径是否遗漏租户/用户范围约束,导致越权或跨租户读取。
7
+
8
+ ## 输入、注入与外部调用
9
+
10
+ - SQL、JPQL、SpEL、命令、模板或路径拼接是否引入注入风险;动态查询是否仍保持参数化。
11
+ - 对外部 URL、Webhook、回调地址、对象存储重定向或代理目标的访问是否可能引入 SSRF 或开放重定向。
12
+
13
+ ## 序列化、日志与敏感信息
14
+
15
+ - JSON/XML 反序列化配置是否扩大攻击面;多态类型、默认 typing 或未知字段处理是否带来不可信输入风险。
16
+ - 日志、异常、trace 属性或审计事件是否写入 token、密钥、完整 PII 或受保护业务字段。
17
+
18
+ ## 边界判断
19
+
20
+ - 仅在 diff 可明确体现信任边界、输入来源与输出路径时输出正式安全问题,避免脱离上下文猜测部署拓扑或 Spring 默认配置。
@@ -0,0 +1,171 @@
1
+ ---
2
+ name: mobile-code-reviewer
3
+ review-domain: mobile
4
+ description: "移动端专项代码审查技能,用于开发者在 commit 前审查 Android、iOS、Flutter、React Native、UniApp 等客户端与跨平台改动。重点识别生命周期、导航、异步副作用、权限与存储、性能与资源释放、弱网与设备状态下的真实缺陷,给出可执行修复建议。默认只输出审查结论,不直接修改代码。"
5
+ ---
6
+
7
+ # 移动端代码审查
8
+
9
+ ## 问题门槛
10
+
11
+ 每条问题必须满足以下三点,否则不输出:
12
+
13
+ 1. **可定位**:能指向具体文件和新增行号
14
+ 2. **可自证**:仅凭当前 diff 和可见上下文即可成立,不依赖 diff 之外的假设
15
+ 3. **可修复**:给出具体修复方案,而非泛泛建议
16
+
17
+ 同一根因的多处表现合并为一条,不重复列举。
18
+
19
+ ## 审查模式
20
+
21
+ 你会收到一段共享的 diff 类型识别结果。
22
+
23
+ - 当识别结果为 `mobile` 且与当前 skill 匹配时,按本 skill 的移动端专项标准审查
24
+ - 当识别结果与当前 skill 不匹配时,不要提示用户选错了 skill,也不要中止审查
25
+ - 不匹配时继续使用同一输出格式,但按现有通用 `code-review` 审查基线做稳妥审查
26
+ - 不匹配时减少对 DOM、hydration、浏览器运行时、服务端渲染以及特定平台框架细节的假设
27
+
28
+ ## 适用范围
29
+
30
+ 本 skill 适用于以下客户端与跨平台改动:
31
+
32
+ - Android 原生
33
+ - iOS 原生
34
+ - Flutter
35
+ - React Native
36
+ - UniApp
37
+
38
+ 优先关注用户可见功能、页面栈与导航、应用生命周期、异步状态、端侧存储、权限边界、崩溃风险与设备条件变化。
39
+
40
+ ## 严重级别
41
+
42
+ | 等级 | 含义 | 处理 |
43
+ |------|------|------|
44
+ | **P0** | 安全漏洞、数据损坏、必现 crash、核心页面不可用、权限边界明显失守 | 必须修复后才能提交 |
45
+ | **P1** | 主流程功能错误、状态恢复或导航失效、明显性能或稳定性回退、弱网下高概率失败 | 提交前修复 |
46
+ | **P2** | 可维护性问题、测试不足、次级设备条件边界缺失、非阻塞设计问题 | 当前批次修复或登记后续任务 |
47
+ | **P3** | 次要改进 | 可选 |
48
+
49
+ ## 工作流
50
+
51
+ ### 1) 确认审查范围
52
+
53
+ 先关注共享分类结果、`changedFiles` 与 diff 本身,再决定本次是否使用移动端专项视角。
54
+
55
+ - 当前 diff 主要是 Android/iOS/Flutter/RN/UniApp 页面、导航、生命周期、权限、存储或端侧资源管理改动时,使用移动端专项视角
56
+ - 当前 diff 若明显偏 Web 前端、后端、数据库或语言类型不匹配,则直接回到通用稳妥审查
57
+ - 不因为用户选择了移动端 skill 就强行输出移动端专属问题
58
+
59
+ ### 2) 代码分析
60
+
61
+ #### a) 生命周期与导航
62
+
63
+ 加载 `references/lifecycle-and-navigation.md`,检查页面挂载/卸载、前后台切换、订阅与监听释放、页面栈/返回栈、深链与路由状态是否一致。
64
+
65
+ #### b) 异步状态与副作用
66
+
67
+ 加载 `references/async-state-and-side-effects.md`,重点关注请求竞态、取消与去重、重复提交、组件销毁后回调、状态回写时序与副作用泄漏。
68
+
69
+ #### c) 存储、权限与安全边界
70
+
71
+ 加载 `references/storage-permissions-and-security.md`,检查本地存储、token/敏感信息、权限申请与拒绝分支、WebView/bridge、文件与剪贴板等边界。
72
+
73
+ #### d) 性能与资源管理
74
+
75
+ 加载 `references/performance-and-resource-management.md`,检查列表与图片、线程/协程/定时器、重渲染、内存占用、资源释放、电量与启动开销。
76
+
77
+ #### e) 设备条件与稳健性
78
+
79
+ 加载 `references/resilience-and-device-conditions.md`,检查弱网、离线、系统回收、屏幕旋转、应用恢复、不同设备能力与异常恢复路径。
80
+
81
+ #### f) 测试与回归防护
82
+
83
+ 加载 `references/testing-and-regression-coverage.md`,检查主导航、权限拒绝、弱网/离线、恢复流程与关键回归路径是否具备最小测试防护。
84
+
85
+ #### g) 通用工程基线补充
86
+
87
+ 完成移动端专项检查后,补充对通用 `code-review` 的以下基线检查:架构与设计、测试质量,以及当 diff 包含删除时的冗余与残留引用。移动端专项维度只负责客户端生命周期、端侧状态与设备条件风险,不替代通用工程审查。
88
+
89
+ ### 3) 整理问题列表
90
+
91
+ 确认每条问题满足门槛(可定位、可自证、可修复)。同一根因的多处表现合并为一条。不为凑数量降低标准。
92
+
93
+ ### 4) 评分
94
+
95
+ 加载 `references/scoring-guide.md`,**每次审查必须根据该指南给出具体评分**:先按最严重问题确定基准区间,再按影响广度、问题数量、可逆性在区间内微调,最终输出一个具体分值(如 8.5、7.0),不得只写区间或省略评分;纯文件删除时记为 N/A。
96
+
97
+ ### 5) 输出格式
98
+
99
+ 按以下格式输出:
100
+
101
+ ```markdown
102
+ ## 审查摘要
103
+
104
+ **审查范围**:X 个文件,Y 行新增
105
+
106
+ **评分**:X / 10(必须为具体分值,如 8.5;仅纯删除时为 N/A)
107
+
108
+ **提交建议**:✅ 可以提交 / ✅ 可以提交,跟进修复 / 🔧 修复后提交 / 🚫 禁止提交
109
+
110
+ **问题统计**:P0 × 个 / P1 × 个 / P2 × 个 / P3 × 个
111
+
112
+ ---
113
+
114
+ ## 各维度结果
115
+
116
+ | # | 维度 | 结论 |
117
+ |---|------|------|
118
+ | 1 | 生命周期与导航 | ✅ 无问题 / ⚠️ 存在问题(简述) |
119
+ | 2 | 异步状态与副作用 | ✅ 无问题 / ⚠️ 存在问题(简述) |
120
+ | 3 | 存储、权限与安全边界 | ✅ 无问题 / ⚠️ 存在问题(简述) |
121
+ | 4 | 性能与资源管理 | ✅ 无问题 / ⚠️ 存在问题(简述) |
122
+ | 5 | 设备条件与稳健性 | ✅ 无问题 / ⚠️ 存在问题(简述) |
123
+ | 6 | 测试与回归防护 | ✅ 无问题 / ⚠️ 存在问题(简述) |
124
+
125
+ ---
126
+
127
+ ## 问题列表
128
+
129
+ ### P0 🔴 严重
130
+
131
+
132
+ ### P1 🟠 高
133
+ 1. **[文件:行号] 问题标题**
134
+ - **问题**:一句话说明是什么问题
135
+ - **影响**:一句话说明会导致什么后果
136
+ - **修复**:具体方案
137
+
138
+ ### P2 🟡 中
139
+
140
+
141
+ ### P3 🟢 低
142
+
143
+
144
+ ---
145
+
146
+ ## 总体评价
147
+
148
+ 2-3 句话说明是否建议提交,以及还需要哪些修复或跟进。
149
+ ```
150
+
151
+ **输出规则:**
152
+
153
+ - 每次审查必须在「审查摘要」中给出根据 `references/scoring-guide.md` 计算的具体评分(X / 10),不得省略。
154
+ - 直接给问题,不写前言铺垫。
155
+ - 每条问题写清楚:位置、问题是什么、影响是什么、如何修复。
156
+ - 只在有明确代码路径支撑时输出问题,不猜项目框架、运行环境或业务规则。
157
+ - 如果共享分类结果提示应回到通用审查,则按通用基线保守审查,但仍然使用本 skill 的统一输出结构。
158
+ - 禁止在模板之外添加"亮点"、"优点"、"表扬"等额外章节。
159
+ - `## 总体评价` 只写 2-3 句连续段落,不用列表或子标题。
160
+
161
+ ## 参考文件
162
+
163
+ | 文件 | 用途 |
164
+ |------|------|
165
+ | `lifecycle-and-navigation.md` | 生命周期、导航栈、订阅清理与页面一致性检查项 |
166
+ | `async-state-and-side-effects.md` | 请求竞态、取消、重复提交与状态回写检查项 |
167
+ | `storage-permissions-and-security.md` | 存储、权限、敏感数据与桥接边界检查项 |
168
+ | `performance-and-resource-management.md` | 性能、内存、线程/协程、图片与资源释放检查项 |
169
+ | `resilience-and-device-conditions.md` | 弱网、离线、恢复、设备条件变化与异常恢复检查项 |
170
+ | `testing-and-regression-coverage.md` | 导航、权限、弱网与恢复路径的测试防护检查项 |
171
+ | `scoring-guide.md` | 评分模型、区间规则和提交建议 |
@@ -0,0 +1,19 @@
1
+ # 移动端异步状态与副作用检查清单
2
+
3
+ ## 请求与竞态
4
+
5
+ - 同一操作是否可能被重复点击、重复触发或并发触发,导致重复提交、重复导航或状态覆盖。
6
+ - 新请求开始后,旧请求结果是否仍可能回写到当前页面,造成数据倒灌或闪烁。
7
+ - 取消、超时、重试与失败分支是否区分处理,而不是全部吞掉或统一提示成功。
8
+
9
+ ## 状态一致性
10
+
11
+ - loading、disabled、error、empty、success 等状态切换是否完整,是否存在缺少兜底恢复的路径。
12
+ - 组件卸载后是否仍调用 `setState`、`notifyListeners`、`emit`、`setData` 或等价更新操作。
13
+ - 本地 optimistic update 失败后,是否正确回滚而不是把错误状态留在界面上。
14
+
15
+ ## 副作用管理
16
+
17
+ - effect、hook、watcher、listener、coroutine、task 是否会因为依赖变化或多次进入页面而重复注册。
18
+ - 副作用是否依赖过期闭包、旧参数或旧上下文,导致回调使用陈旧数据。
19
+ - 异步链路中的异常是否被记录并反馈给用户,而不是静默失败。
@@ -0,0 +1,19 @@
1
+ # 移动端生命周期与导航检查清单
2
+
3
+ ## 生命周期
4
+
5
+ - 页面、组件、Activity、ViewController 或订阅对象销毁后,是否仍可能收到异步回调并继续更新状态。
6
+ - 监听器、通知、广播、事件总线、定时器、observer、stream subscription 是否在卸载时清理。
7
+ - 前后台切换、系统回收、热重载或页面重建后,状态是否会丢失、重复初始化或重复触发副作用。
8
+
9
+ ## 导航与页面栈
10
+
11
+ - push / replace / pop / dismiss / navigateBack 之后,页面栈是否与业务预期一致。
12
+ - 返回手势、物理返回键、导航栏返回与自定义关闭动作是否保持一致。
13
+ - 深链、路由参数、tab 切换或嵌套路由下,是否存在必需参数缺失、空值或错误恢复路径。
14
+
15
+ ## 可见性与页面恢复
16
+
17
+ - 页面重新显示时,是否错误复用旧数据或漏掉必要刷新。
18
+ - 页面不可见后仍持续占用资源(摄像头、定位、蓝牙、音频、动画、轮询)。
19
+ - 系统中断后恢复时,是否保留了错误的 loading、禁用态或半完成表单状态。
@@ -0,0 +1,19 @@
1
+ # 移动端性能与资源管理检查清单
2
+
3
+ ## 渲染与交互性能
4
+
5
+ - 长列表、图片墙、动画与手势是否缺少分页、虚拟化、节流、防抖或缓存,导致明显掉帧。
6
+ - 是否在热路径重复创建大对象、重复序列化、重复计算样式或重复触发昂贵渲染。
7
+ - 图片、视频、Lottie、地图等重资源是否有尺寸控制、懒加载、占位和失败回退。
8
+
9
+ ## 资源释放
10
+
11
+ - 定时器、协程、线程、handler、notification observer、stream、subscription、camera、location 等是否及时释放。
12
+ - 页面退出后是否仍保留大对象引用、闭包或 context,导致内存泄漏。
13
+ - 后台任务与前台 UI 生命周期是否正确解绑,避免页面销毁后仍占用 CPU、电量或网络。
14
+
15
+ ## 启动与稳定性
16
+
17
+ - 初始化逻辑是否被放到首屏关键路径,导致冷启动明显变慢。
18
+ - 异步初始化失败时是否会卡住启动流程、白屏或无限 loading。
19
+ - 资源加载失败时是否存在降级策略,而不是直接阻塞整个页面。
@@ -0,0 +1,19 @@
1
+ # 移动端设备条件与稳健性检查清单
2
+
3
+ ## 弱网与离线
4
+
5
+ - 请求超时、断网、半连接、DNS 失败或服务端错误时,是否有清晰提示、重试或降级策略。
6
+ - 是否把瞬时失败误当成功处理,导致 UI 状态与真实服务端状态不一致。
7
+ - 离线缓存、重放队列或草稿箱存在时,是否处理了重复提交和冲突恢复。
8
+
9
+ ## 设备与系统状态
10
+
11
+ - 屏幕旋转、分屏、折叠态、字体缩放、深色模式、低内存回收后,页面是否还能恢复到有效状态。
12
+ - 应用从后台恢复、被系统杀死后重建、收到推送或外部分享唤起时,是否会进入非法页面状态。
13
+ - 日期、时区、语言环境变化是否会破坏格式化、排序、缓存键或本地判断逻辑。
14
+
15
+ ## 兼容性与异常恢复
16
+
17
+ - 不同平台分支或条件编译是否遗漏默认分支,导致某个平台直接不可用。
18
+ - 新增能力是否假设设备一定支持传感器、相机、权限或系统 API,而没有可用性判断。
19
+ - 捕获异常后是否真正恢复了可继续操作的状态,而不是仅记录日志后把页面留在坏状态。
@@ -0,0 +1,38 @@
1
+ # 评分指南
2
+
3
+ 评分由**最严重的已确认问题**决定基准区间,再在区间内微调。
4
+
5
+ ## 第一步:确定基准区间
6
+
7
+ | 最严重问题 | 分值区间 |
8
+ |-----------|---------|
9
+ | 无问题 | 9.0-10.0 |
10
+ | 仅 P2/P3 | 7.5-9.0 |
11
+ | P1 | 4.0-7.0 |
12
+ | P0(主流程 crash、核心导航失效、权限失守) | 2.0-3.5 |
13
+ | P0(敏感数据泄露、认证边界失守) | 1.0-2.5 |
14
+
15
+ ## 第二步:在区间内调整
16
+
17
+ - **影响广度**:影响所有用户或常见机型取下限,仅边界设备或少数状态触发取上限,差距约 0.5-1.0 分
18
+ - **问题数量**:每多一个独立同级别问题,向下移约 0.3-0.5 分
19
+ - **可逆性**:问题是否容易恢复;若崩溃后可自动重试或快速回滚,可在区间内上浮 0.3-0.5 分
20
+
21
+ > 多个问题时取区间下限附近;单个问题且影响有限时取区间上限附近。
22
+
23
+ ## 硬上限
24
+
25
+ - 有任意 P0 -> 评分上限 3.5
26
+ - 核心页面或主导航完全失效 -> 评分上限 2.5
27
+ - 明文写入真实 secret、token 或隐私敏感数据 -> 评分上限 2.0
28
+ - 纯文件删除(无逻辑变更)-> 评分记为 N/A
29
+ - 仅测试代码中的问题 -> 最高计为 P2,不纳入 P0/P1 计数
30
+
31
+ ## 评分语义
32
+
33
+ | 分值 | 提交建议 | 含义 |
34
+ |------|---------|------|
35
+ | 9.0-10.0 | ✅ 可以提交 | 无明显问题 |
36
+ | 7.5-9.0 | ✅ 可以提交,跟进修复 | 有轻微问题,不影响提交 |
37
+ | 4.0-7.0 | 🔧 修复后提交 | 存在 P1 问题,影响广取下限,影响窄取上限 |
38
+ | 1.0-3.5 | 🚫 禁止提交 | 存在 P0 问题,必须修复 |
@@ -0,0 +1,19 @@
1
+ # 移动端存储、权限与安全边界检查清单
2
+
3
+ ## 本地存储与敏感数据
4
+
5
+ - token、手机号、身份证号、地理位置、密钥等敏感数据是否被明文写入普通存储、日志、剪贴板或可导出文件。
6
+ - 缓存读写失败、版本升级或数据迁移失败时,是否有回退与兼容路径。
7
+ - 是否把服务端可信数据和本地可篡改数据混用,导致客户端权限判断被绕过。
8
+
9
+ ## 权限申请与拒绝处理
10
+
11
+ - 相机、相册、定位、麦克风、通知、蓝牙、文件访问等权限是否仅在真正需要时申请。
12
+ - 权限被拒绝、永久拒绝或系统关闭时,是否提供明确反馈和可恢复路径,而不是直接崩溃或卡死。
13
+ - 权限结果是否与当前页面生命周期同步,避免页面退出后继续弹框或继续执行危险操作。
14
+
15
+ ## 桥接与边界
16
+
17
+ - WebView、JS bridge、原生模块桥接、文件分享入口是否校验输入来源和参数范围。
18
+ - 外部 URL、intent、scheme、deeplink、分享回调是否校验合法性,避免跳转到未预期页面。
19
+ - 调试日志、埋点和错误上报是否暴露了隐私字段、认证信息或内部错误细节。
@@ -0,0 +1,21 @@
1
+ # 移动端测试与回归防护检查清单
2
+
3
+ ## 主流程与导航回归
4
+
5
+ - 页面栈、返回栈、深链唤起与关键跳转路径是否有最小可复现用例或自动化覆盖。
6
+ - 导航参数、前后台恢复与系统回收后重建的主流程是否至少覆盖一条稳定回归路径。
7
+
8
+ ## 权限、失败与弱网场景
9
+
10
+ - 权限拒绝、取消授权、重复申请与降级路径是否有测试或明确可验证的回归手段。
11
+ - 弱网、超时、离线、服务端失败与重试路径是否覆盖 UI 状态回退、去重与错误提示。
12
+
13
+ ## 状态恢复与副作用
14
+
15
+ - 关键异步流程是否覆盖重复点击、竞态回写、页面销毁后回调等高风险路径。
16
+ - 本次改动若引入本地存储、缓存、草稿箱或恢复逻辑,是否有对应测试防止状态串写或恢复失败。
17
+
18
+ ## 测试质量
19
+
20
+ - 测试是否只断言实现细节而未覆盖用户可见结果;是否容易因定时器、随机值或真实网络产生脆弱失败。
21
+ - 如果当前仓库缺少自动化测试,也应确认是否至少补充了清晰的人工回归清单或最小复现步骤。