smart-commit-copilot-cli 0.1.4 → 0.1.6

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 (150) hide show
  1. package/CHANGELOG.md +32 -0
  2. package/README.md +41 -11
  3. package/docs/configuration.md +23 -2
  4. package/docs/contracts.md +10 -2
  5. package/docs/getting-started.md +18 -4
  6. package/docs/publish.md +1 -1
  7. package/docs/releases/0.1.5-draft.md +44 -0
  8. package/docs/releases/0.1.6-draft.md +72 -0
  9. package/docs/verification.md +15 -0
  10. package/examples/config/smart-commit.json +3 -1
  11. package/out/cliApp.js +3 -1
  12. package/out/cliApp.js.map +1 -1
  13. package/out/commands/bridge.js +54 -23
  14. package/out/commands/bridge.js.map +1 -1
  15. package/out/commitMessage/index.js +28 -8
  16. package/out/commitMessage/index.js.map +1 -1
  17. package/out/commitMessage/prompt.js +2 -0
  18. package/out/commitMessage/prompt.js.map +1 -1
  19. package/out/commitMessage/protocol.js +122 -8
  20. package/out/commitMessage/protocol.js.map +1 -1
  21. package/out/config/cliArgs.js +12 -0
  22. package/out/config/cliArgs.js.map +1 -1
  23. package/out/config/constants.js +1 -0
  24. package/out/config/constants.js.map +1 -1
  25. package/out/config/env.js +9 -0
  26. package/out/config/env.js.map +1 -1
  27. package/out/config/file.js +10 -0
  28. package/out/config/file.js.map +1 -1
  29. package/out/config/legacySmartCommit.js +14 -0
  30. package/out/config/legacySmartCommit.js.map +1 -1
  31. package/out/config/schema.js +18 -1
  32. package/out/config/schema.js.map +1 -1
  33. package/out/contracts.js +15 -6
  34. package/out/contracts.js.map +1 -1
  35. package/out/llm/responseCorrection.js +32 -0
  36. package/out/llm/responseCorrection.js.map +1 -0
  37. package/out/passHistory/index.js +51 -22
  38. package/out/passHistory/index.js.map +1 -1
  39. package/out/passHistory/store.js +29 -1
  40. package/out/passHistory/store.js.map +1 -1
  41. package/out/passHistory/types.js +23 -1
  42. package/out/passHistory/types.js.map +1 -1
  43. package/out/promptContext.js +19 -3
  44. package/out/promptContext.js.map +1 -1
  45. package/out/renderOutput.js +2 -0
  46. package/out/renderOutput.js.map +1 -1
  47. package/out/reporting/prompt.js +13 -1
  48. package/out/reporting/prompt.js.map +1 -1
  49. package/out/reporting/timeWindow.js +7 -0
  50. package/out/reporting/timeWindow.js.map +1 -1
  51. package/out/reporting/types.js +1 -0
  52. package/out/reporting/types.js.map +1 -1
  53. package/out/review/diffClassifier.js +535 -0
  54. package/out/review/diffClassifier.js.map +1 -0
  55. package/out/review/index.js +27 -11
  56. package/out/review/index.js.map +1 -1
  57. package/out/review/mockProvider.js +157 -8
  58. package/out/review/mockProvider.js.map +1 -1
  59. package/out/review/openaiProvider.js +10 -4
  60. package/out/review/openaiProvider.js.map +1 -1
  61. package/out/review/parser.js +13 -0
  62. package/out/review/parser.js.map +1 -1
  63. package/out/review/prompt.js +76 -4
  64. package/out/review/prompt.js.map +1 -1
  65. package/out/skills/types.js +3 -0
  66. package/out/skills/types.js.map +1 -0
  67. package/package.json +2 -1
  68. package/src/code-review-skills/c-code-review/SKILL.md +165 -0
  69. package/src/code-review-skills/c-code-review/references/build-and-tooling.md +16 -0
  70. package/src/code-review-skills/c-code-review/references/concurrency-and-signals.md +16 -0
  71. package/src/code-review-skills/c-code-review/references/error-handling-and-cleanup.md +16 -0
  72. package/src/code-review-skills/c-code-review/references/macros-headers-and-build-boundaries.md +16 -0
  73. package/src/code-review-skills/c-code-review/references/performance-and-data-movement.md +16 -0
  74. package/src/code-review-skills/c-code-review/references/pointers-memory-and-resource-lifecycle.md +18 -0
  75. package/src/code-review-skills/c-code-review/references/scoring-guide.md +40 -0
  76. package/src/code-review-skills/c-code-review/references/undefined-behavior-and-safety.md +17 -0
  77. package/src/code-review-skills/code-review/SKILL.md +150 -0
  78. package/src/code-review-skills/code-review/references/code-quality-checklist.md +53 -0
  79. package/src/code-review-skills/code-review/references/removal-plan.md +45 -0
  80. package/src/code-review-skills/code-review/references/scoring-guide.md +38 -0
  81. package/src/code-review-skills/code-review/references/security-checklist.md +53 -0
  82. package/src/code-review-skills/code-review/references/solid-checklist.md +55 -0
  83. package/src/code-review-skills/cpp-code-review/SKILL.md +165 -0
  84. package/src/code-review-skills/cpp-code-review/references/build-and-tooling.md +12 -0
  85. package/src/code-review-skills/cpp-code-review/references/concurrency-and-atomics.md +14 -0
  86. package/src/code-review-skills/cpp-code-review/references/exceptions-and-error-model.md +16 -0
  87. package/src/code-review-skills/cpp-code-review/references/memory-raii-and-lifetimes.md +19 -0
  88. package/src/code-review-skills/cpp-code-review/references/performance-and-hot-paths.md +16 -0
  89. package/src/code-review-skills/cpp-code-review/references/scoring-guide.md +41 -0
  90. package/src/code-review-skills/cpp-code-review/references/templates-api-and-abi.md +13 -0
  91. package/src/code-review-skills/cpp-code-review/references/undefined-behavior-and-safety.md +18 -0
  92. package/src/code-review-skills/csharp-code-review/SKILL.md +159 -0
  93. package/src/code-review-skills/csharp-code-review/references/async-and-cancellation.md +16 -0
  94. package/src/code-review-skills/csharp-code-review/references/concurrency.md +15 -0
  95. package/src/code-review-skills/csharp-code-review/references/exceptions-and-api-contracts.md +16 -0
  96. package/src/code-review-skills/csharp-code-review/references/memory-resources-and-interop.md +16 -0
  97. package/src/code-review-skills/csharp-code-review/references/nullable-types-and-patterns.md +15 -0
  98. package/src/code-review-skills/csharp-code-review/references/scoring-guide.md +41 -0
  99. package/src/code-review-skills/csharp-code-review/references/web-data-and-security.md +15 -0
  100. package/src/code-review-skills/frontend-code-review/SKILL.md +143 -0
  101. package/src/code-review-skills/frontend-code-review/references/accessibility-and-semantic-ux.md +33 -0
  102. package/src/code-review-skills/frontend-code-review/references/interaction-and-state-lifecycle.md +39 -0
  103. package/src/code-review-skills/frontend-code-review/references/rendering-performance-and-resource-loading.md +34 -0
  104. package/src/code-review-skills/frontend-code-review/references/scoring-guide.md +38 -0
  105. package/src/code-review-skills/frontend-code-review/references/security-and-data-boundary.md +34 -0
  106. package/src/code-review-skills/golang-code-review/SKILL.md +153 -0
  107. package/src/code-review-skills/golang-code-review/references/api-contract-and-maintainability.md +25 -0
  108. package/src/code-review-skills/golang-code-review/references/concurrency-and-lifecycle.md +25 -0
  109. package/src/code-review-skills/golang-code-review/references/error-handling-and-reliability.md +24 -0
  110. package/src/code-review-skills/golang-code-review/references/performance-and-allocation.md +25 -0
  111. package/src/code-review-skills/golang-code-review/references/scoring-guide.md +40 -0
  112. package/src/code-review-skills/golang-code-review/references/security-and-trust-boundary.md +20 -0
  113. package/src/code-review-skills/java-code-review/SKILL.md +153 -0
  114. package/src/code-review-skills/java-code-review/references/api-contract-and-maintainability.md +22 -0
  115. package/src/code-review-skills/java-code-review/references/concurrency-and-lifecycle.md +27 -0
  116. package/src/code-review-skills/java-code-review/references/error-handling-and-reliability.md +25 -0
  117. package/src/code-review-skills/java-code-review/references/performance-and-resource-usage.md +23 -0
  118. package/src/code-review-skills/java-code-review/references/scoring-guide.md +40 -0
  119. package/src/code-review-skills/java-code-review/references/security-and-trust-boundary.md +20 -0
  120. package/src/code-review-skills/mobile-code-review/SKILL.md +171 -0
  121. package/src/code-review-skills/mobile-code-review/references/async-state-and-side-effects.md +19 -0
  122. package/src/code-review-skills/mobile-code-review/references/lifecycle-and-navigation.md +19 -0
  123. package/src/code-review-skills/mobile-code-review/references/performance-and-resource-management.md +19 -0
  124. package/src/code-review-skills/mobile-code-review/references/resilience-and-device-conditions.md +19 -0
  125. package/src/code-review-skills/mobile-code-review/references/scoring-guide.md +38 -0
  126. package/src/code-review-skills/mobile-code-review/references/storage-permissions-and-security.md +19 -0
  127. package/src/code-review-skills/mobile-code-review/references/testing-and-regression-coverage.md +21 -0
  128. package/src/code-review-skills/php-code-review/SKILL.md +159 -0
  129. package/src/code-review-skills/php-code-review/references/inclusion-superglobals-and-scope.md +21 -0
  130. package/src/code-review-skills/php-code-review/references/language-types-and-autoload.md +19 -0
  131. package/src/code-review-skills/php-code-review/references/oop-magic-and-errors.md +17 -0
  132. package/src/code-review-skills/php-code-review/references/performance-data-access-and-testing.md +16 -0
  133. package/src/code-review-skills/php-code-review/references/request-lifecycle-and-runtime.md +15 -0
  134. package/src/code-review-skills/php-code-review/references/scoring-guide.md +39 -0
  135. package/src/code-review-skills/php-code-review/references/security-and-io-boundary.md +24 -0
  136. package/src/code-review-skills/python-code-review/SKILL.md +147 -0
  137. package/src/code-review-skills/python-code-review/references/exception-and-lifecycle.md +15 -0
  138. package/src/code-review-skills/python-code-review/references/input-and-data-security.md +20 -0
  139. package/src/code-review-skills/python-code-review/references/maintainability-and-testing.md +21 -0
  140. package/src/code-review-skills/python-code-review/references/performance-and-resource-usage.md +21 -0
  141. package/src/code-review-skills/python-code-review/references/scoring-guide.md +38 -0
  142. package/src/code-review-skills/rust-code-review/SKILL.md +165 -0
  143. package/src/code-review-skills/rust-code-review/references/api-traits-and-evolution.md +16 -0
  144. package/src/code-review-skills/rust-code-review/references/cargo-features-and-test-coverage.md +16 -0
  145. package/src/code-review-skills/rust-code-review/references/concurrency-async-and-sync.md +17 -0
  146. package/src/code-review-skills/rust-code-review/references/error-handling-and-reliability.md +17 -0
  147. package/src/code-review-skills/rust-code-review/references/macros-ffi-and-embedded.md +19 -0
  148. package/src/code-review-skills/rust-code-review/references/ownership-borrowing-and-unsafe.md +20 -0
  149. package/src/code-review-skills/rust-code-review/references/performance-and-allocations.md +18 -0
  150. package/src/code-review-skills/rust-code-review/references/scoring-guide.md +41 -0
@@ -0,0 +1,159 @@
1
+ ---
2
+ name: php-code-reviewer
3
+ review-domain: php
4
+ description: "PHP 专项代码审查技能,用于开发者在 commit 前审查 PHP 应用、库与测试改动。结合语言特性(类型、自动加载、超全局、魔法方法)、安全边界与请求生命周期,识别真实缺陷并给出可执行修复建议。默认只输出审查结论,不直接修改代码。"
5
+ ---
6
+
7
+ # PHP 代码审查
8
+
9
+ ## 问题门槛
10
+
11
+ 每条问题必须满足以下三点,否则不输出:
12
+
13
+ 1. **可定位**:能指向具体文件和新增行号
14
+ 2. **可自证**:仅凭当前 diff 和可见上下文即可成立,不依赖 diff 之外的假设
15
+ 3. **可修复**:给出具体修复方案,而非泛泛建议
16
+
17
+ 同一根因的多处表现合并为一条,不重复列举。
18
+
19
+ ## 审查模式
20
+
21
+ 你会收到一段共享的 diff 类型识别结果。
22
+
23
+ - 当识别结果为 `php` 且与当前 skill 匹配时,按本 skill 的 PHP 专项标准审查
24
+ - 当识别结果与当前 skill 不匹配时,不要提示用户选错了 skill,也不要中止审查
25
+ - 不匹配时继续使用同一输出格式,但按现有通用 `code-review` 审查基线做稳妥审查
26
+ - 不匹配时减少对 PHP 版本、框架与运行拓扑的特有假设
27
+
28
+ ## 严重级别
29
+
30
+ | 等级 | 含义 | 处理 |
31
+ |------|------|------|
32
+ | **P0** | 安全漏洞、数据损坏、必现 crash、核心路径不可用 | 必须修复后才能提交 |
33
+ | **P1** | 逻辑错误、功能异常、明显性能/可靠性回退 | 提交前修复 |
34
+ | **P2** | 可维护性问题、测试不足、非阻塞设计问题 | 当前批次修复或登记后续任务 |
35
+ | **P3** | 次要改进 | 可选 |
36
+
37
+ ## 工作流
38
+
39
+ ### 1) 确认审查范围
40
+
41
+ 先关注共享分类结果、`changedFiles` 与 diff 本身,再决定本次是否使用 PHP 专项视角。
42
+
43
+ - 当前 diff 主要是 `.php`/`.phtml`、Composer、PHPUnit 配置或典型 PHP 项目路径改动时,使用 PHP 专项视角
44
+ - 当前 diff 若明显偏前端、Java、Golang、Python 或类型不匹配,则直接回到通用稳妥审查
45
+ - 不因为用户选择了 PHP skill 就强行输出 PHP 专属问题
46
+
47
+ ### 2) 代码分析
48
+
49
+ #### a) 语言类型与自动加载
50
+
51
+ 加载 `references/language-types-and-autoload.md`,检查严格类型、属性与返回值、枚举、命名空间与 Composer 自动加载边界。
52
+
53
+ #### b) 包含、超全局与作用域
54
+
55
+ 加载 `references/inclusion-superglobals-and-scope.md`,检查 include/require 路径、`$_GET` 等超全局使用、错误抑制与可变调用风险。
56
+
57
+ #### c) OOP、魔法方法与错误语义
58
+
59
+ 加载 `references/oop-magic-and-errors.md`,检查魔法方法、序列化钩子、异常捕获范围与错误信息泄露。
60
+
61
+ #### d) 安全与 I/O 边界
62
+
63
+ 加载 `references/security-and-io-boundary.md`,检查 SQL、XSS、路径与上传、反序列化、会话与命令/网络出口。
64
+
65
+ #### e) 请求生命周期与运行时
66
+
67
+ 加载 `references/request-lifecycle-and-runtime.md`,检查 FPM 下全局状态、析构与 shutdown 路径、以及常驻运行时差异。
68
+
69
+ #### f) 性能、数据访问与测试
70
+
71
+ 加载 `references/performance-data-access-and-testing.md`,检查性能回退、数据访问模式与测试质量。
72
+
73
+ #### g) 通用工程基线补充
74
+
75
+ 完成 PHP 专项检查后,补充对通用 `code-review` 的以下基线检查:架构与设计,以及当 diff 包含删除时的冗余与残留引用。PHP 专项维度只负责语言特性、运行时与 I/O 边界风险,不替代通用工程审查。
76
+
77
+ ### 3) 整理问题列表
78
+
79
+ 确认每条问题满足门槛(可定位、可自证、可修复)。同一根因的多处表现合并为一条。不为凑数量降低标准。
80
+
81
+ ### 4) 评分
82
+
83
+ 加载 `references/scoring-guide.md`,**每次审查必须根据该指南给出具体评分**:先按最严重问题确定基准区间,再按影响广度、问题数量、可逆性在区间内微调,最终输出一个具体分值(如 8.5、7.0),不得只写区间或省略评分;纯文件删除时记为 N/A。
84
+
85
+ ### 5) 输出格式
86
+
87
+ 按以下格式输出:
88
+
89
+ ```markdown
90
+ ## 审查摘要
91
+
92
+ **审查范围**:X 个文件,Y 行新增
93
+
94
+ **评分**:X / 10(必须为具体分值,如 8.5;仅纯删除时为 N/A)
95
+
96
+ **提交建议**:✅ 可以提交 / ✅ 可以提交,跟进修复 / 🔧 修复后提交 / 🚫 禁止提交
97
+
98
+ **问题统计**:P0 × 个 / P1 × 个 / P2 × 个 / P3 × 个
99
+
100
+ ---
101
+
102
+ ## 各维度结果
103
+
104
+ | # | 维度 | 结论 |
105
+ |---|------|------|
106
+ | 1 | 语言类型与自动加载 | ✅ 无问题 / ⚠️ 存在问题(简述) |
107
+ | 2 | 包含、超全局与作用域 | ✅ 无问题 / ⚠️ 存在问题(简述) |
108
+ | 3 | OOP、魔法方法与错误语义 | ✅ 无问题 / ⚠️ 存在问题(简述) |
109
+ | 4 | 安全与 I/O 边界 | ✅ 无问题 / ⚠️ 存在问题(简述) |
110
+ | 5 | 请求生命周期与运行时 | ✅ 无问题 / ⚠️ 存在问题(简述) |
111
+ | 6 | 性能、数据访问与测试 | ✅ 无问题 / ⚠️ 存在问题(简述) |
112
+
113
+ ---
114
+
115
+ ## 问题列表
116
+
117
+ ### P0 🔴 严重
118
+
119
+
120
+ ### P1 🟠 高
121
+ 1. **[文件:行号] 问题标题**
122
+ - **问题**:一句话说明是什么问题
123
+ - **影响**:一句话说明会导致什么后果
124
+ - **修复**:具体方案
125
+
126
+ ### P2 🟡 中
127
+
128
+
129
+ ### P3 🟢 低
130
+
131
+
132
+ ---
133
+
134
+ ## 总体评价
135
+
136
+ 2-3 句话说明是否建议提交,以及还需要哪些修复或跟进。
137
+ ```
138
+
139
+ **输出规则:**
140
+
141
+ - 每次审查必须在「审查摘要」中给出根据 `references/scoring-guide.md` 计算的具体评分(X / 10),不得省略。
142
+ - 直接给问题,不写前言铺垫。
143
+ - 每条问题写清楚:位置、问题是什么、影响是什么、如何修复。
144
+ - 只在有明确代码路径支撑时输出问题,不猜 PHP 小版本、部署拓扑或业务规则。
145
+ - 如果共享分类结果提示应回到通用审查,则按通用基线保守审查,但仍然使用本 skill 的统一输出结构。
146
+ - 禁止在模板之外添加"亮点"、"优点"、"表扬"等额外章节。
147
+ - `## 总体评价` 只写 2-3 句连续段落,不用列表或子标题。
148
+
149
+ ## 参考文件
150
+
151
+ | 文件 | 用途 |
152
+ |------|------|
153
+ | `language-types-and-autoload.md` | 严格类型、属性/枚举、命名空间与 Composer 自动加载 |
154
+ | `inclusion-superglobals-and-scope.md` | include 路径、超全局、错误抑制与可变调用 |
155
+ | `oop-magic-and-errors.md` | 魔法方法、序列化、异常与错误语义 |
156
+ | `security-and-io-boundary.md` | SQL、XSS、文件路径、上传、反序列化、会话与命令执行 |
157
+ | `request-lifecycle-and-runtime.md` | FPM、常驻运行时、shutdown 与跨请求状态检查项 |
158
+ | `performance-data-access-and-testing.md` | 性能、数据访问、框架可见层与测试检查项 |
159
+ | `scoring-guide.md` | 评分模型、区间规则和提交建议 |
@@ -0,0 +1,21 @@
1
+ # 包含、超全局与作用域
2
+
3
+ ## include / require
4
+
5
+ - `include` vs `require` 语义:失败时是否应中断;是否在循环中重复包含。
6
+ - 路径是否基于 `__DIR__` / `__FILE__` 解析,避免依赖当前工作目录。
7
+ - `include_once` / `require_once` 在可变路径场景下是否仍可能重复加载逻辑。
8
+
9
+ ## 超全局与输入
10
+
11
+ - `$_GET`、`$_POST`、`$_REQUEST`、`$_SERVER`、`$_FILES`、`$_COOKIE` 的使用:是否未校验即进入业务逻辑或拼接查询。
12
+ - `filter_input` / 框架 Request 抽象与原生超全局混用是否绕过统一校验。
13
+
14
+ ## 作用域与错误抑制
15
+
16
+ - 全局变量、静态属性是否在 FPM 请求间泄漏状态(见专项「请求生命周期」交叉项)。
17
+ - `@` 抑制错误是否掩盖安全或逻辑失败;是否应改为显式处理。
18
+
19
+ ## 可变调用
20
+
21
+ - `$fn()`、`$class::$method`、`call_user_func` 与来自外部的类名/方法名字符串是否可投毒。
@@ -0,0 +1,19 @@
1
+ # 语言类型与自动加载
2
+
3
+ 审查 diff 中可见的 PHP 语法与工程边界,不臆测未出现的版本号。
4
+
5
+ ## 类型与声明
6
+
7
+ - `declare(strict_types=1)` 与文件内标量/返回值类型是否一致;可空、联合类型(8.0+)、`mixed`、`never` 使用是否合理。
8
+ - 属性类型、提升属性(constructor promotion)、只读属性(8.2+ `readonly`)是否与构造与序列化路径冲突。
9
+ - `enum`(8.1+)分支是否穷尽; backed enum 与外部输入互转是否校验。
10
+
11
+ ## 命名空间与 use
12
+
13
+ - `namespace` / `use` 是否引入歧义或错误别名;类名解析是否与自动加载约定一致。
14
+ - 同一符号多次 `use`、条件 `class_exists` 与动态 `new $class` 的可控性。
15
+
16
+ ## Composer 与自动加载
17
+
18
+ - `composer.json` / `composer.lock` 变更:约束范围、最低版本、废弃包、autoload `files` 过度加载。
19
+ - PSR-4 路径与真实目录是否可能错位(审查 diff 中可见路径即可)。
@@ -0,0 +1,17 @@
1
+ # OOP、魔法方法与错误语义
2
+
3
+ ## 魔法方法
4
+
5
+ - `__get` / `__set` / `__isset` / `__unset`:是否造成无限递归、意外懒加载副作用或绕过类型约束。
6
+ - `__call` / `__callStatic`:是否将不可信方法名转发到危险操作。
7
+ - `__toString`:是否抛异常(PHP 7.4+ 前行为差异)、是否触发重逻辑或 I/O。
8
+ - `__destruct`:是否抛异常、是否依赖已销毁资源、是否在请求结束时做非幂等写操作。
9
+
10
+ ## 序列化
11
+
12
+ - `__sleep` / `__wakeup` / `__serialize` / `__unserialize`:与 `Serializable` 遗留接口混用风险;反序列化入口是否暴露给不可信数据。
13
+
14
+ ## 异常与错误
15
+
16
+ - `try/catch/finally` 是否吞掉应向上传播的异常;`Throwable` vs `Exception` 捕获范围是否过宽。
17
+ - 用户错误(TypeError、ArgumentCountError)与业务异常是否区分;错误消息是否泄露内部路径或查询。
@@ -0,0 +1,16 @@
1
+ # 性能、数据访问与测试检查清单
2
+
3
+ ## 性能与数据访问
4
+
5
+ - 循环内查询、N+1、大数组物化与 `array_*` 在大集合上的复杂度是否明显退化。
6
+ - OPcache 无关的明显低效是否出现在 diff 中,例如重复文件读取、同步远程调用无超时或重复序列化。
7
+
8
+ ## 框架可见层(仅 diff 可支撑时)
9
+
10
+ - Laravel:`Route` 闭包过重、中间件顺序、`Eloquent` 批量赋值、`$guarded`/`$fillable`、N+1 与 `lazy` 是否合理。
11
+ - Symfony:DI 配置、Form 与 CSRF、EntityManager flush 边界是否引入明显风险。
12
+
13
+ ## 测试
14
+
15
+ - PHPUnit / Pest:断言是否稳定;`Mockery` 期望未验证;测试污染全局(`$_SERVER` 等)是否恢复。
16
+ - 关键失败路径、异常分支与跨请求状态回归是否有最小测试或可复现用例。
@@ -0,0 +1,15 @@
1
+ # 请求生命周期与运行时检查清单
2
+
3
+ ## FPM 与跨请求状态
4
+
5
+ - 单例、静态缓存、进程级全局是否持有用户或请求级数据导致串扰。
6
+ - `register_shutdown_function`、析构阶段写库、发请求或补偿逻辑是否依赖不稳定的进程退出时机。
7
+
8
+ ## 常驻运行时(仅当 diff 体现 Swoole/RoadRunner/ReactPHP 等)
9
+
10
+ - Worker、协程、连接池、定时器与容器对象是否在请求结束后正确重置,避免状态泄漏到下一次请求。
11
+ - 不要在通用 PHP-FPM 假设上强行审查常驻运行时;仅在 diff 可见时指出相关问题。
12
+
13
+ ## 边界判断
14
+
15
+ - 仅在 diff 可明确体现运行时模型、请求生命周期与全局状态路径时输出正式问题,避免猜测部署拓扑。
@@ -0,0 +1,39 @@
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
+ - 跨请求状态污染或 FPM/Worker 全局残留导致用户数据串扰 -> 评分上限 2.5
28
+ - 硬编码真实 credentials 或 secret 泄露 -> 评分上限 2.0
29
+ - 纯文件删除(无逻辑变更)-> 评分记为 N/A
30
+ - 测试文件的问题 -> 最高计为 P2,不纳入 P0/P1 计数
31
+
32
+ ## 评分语义
33
+
34
+ | 分值 | 提交建议 | 含义 |
35
+ |------|---------|------|
36
+ | 9.0-10.0 | ✅ 可以提交 | 无明显问题 |
37
+ | 7.5-9.0 | ✅ 可以提交,跟进修复 | 有轻微问题,不影响提交 |
38
+ | 4.0-7.0 | 🔧 修复后提交 | 存在 P1 问题,影响广取下限,影响窄取上限 |
39
+ | 1.0-3.5 | 🚫 禁止提交 | 存在 P0 问题,必须修复 |
@@ -0,0 +1,24 @@
1
+ # 安全与 I/O 边界
2
+
3
+ ## SQL
4
+
5
+ - 字符串拼接 SQL;预处理语句占位与动态列名/表名白名单。
6
+ - 多语句、存储过程调用与权限最小化(diff 可见时)。
7
+
8
+ ## 输出与 XSS
9
+
10
+ - `echo` / 模板输出是否转义;Blade `{!! !!}`、Twig `|raw` 等未转义出口是否与用户可控数据结合。
11
+
12
+ ## 路径与文件
13
+
14
+ - `file_get_contents`、`fopen`、`include` 路径是否穿越(`..`)或来自用户输入未规范化。
15
+ - 上传:`$_FILES` 类型与扩展名、MIME、存储路径、可执行扩展名。
16
+
17
+ ## 反序列化与会话
18
+
19
+ - `unserialize` 对不可信数据;`allowed_classes` 选项是否使用。
20
+ - `session_*` 配置、固定会话、Cookie 参数(`httponly`、`secure`、`samesite`)在 diff 可见时的合理性。
21
+
22
+ ## 命令与网络
23
+
24
+ - `shell_exec`、`proc_open`、`passthru` 与参数注入;`curl` / `file_get_contents` 对 URL 的 SSRF 面。
@@ -0,0 +1,147 @@
1
+ ---
2
+ name: python-code-reviewer
3
+ review-domain: python
4
+ description: "Python 专项代码审查技能,用于开发者在 commit 前审查 Python 应用、脚本与测试改动。重点识别真实缺陷、异常处理遗漏、安全漏洞、性能回退与可维护性问题,给出可执行修复建议。默认只输出审查结论,不直接修改代码。"
5
+ ---
6
+
7
+ # Python 代码审查
8
+
9
+ ## 问题门槛
10
+
11
+ 每条问题必须满足以下三点,否则不输出:
12
+
13
+ 1. **可定位**:能指向具体文件和新增行号
14
+ 2. **可自证**:仅凭当前 diff 和可见上下文即可成立,不依赖 diff 之外的假设
15
+ 3. **可修复**:给出具体修复方案,而非泛泛建议
16
+
17
+ 同一根因的多处表现合并为一条,不重复列举。
18
+
19
+ ## 审查模式
20
+
21
+ 你会收到一段共享的 diff 类型识别结果。
22
+
23
+ - 当识别结果为 `python` 且与当前 skill 匹配时,按本 skill 的 Python 专项标准审查
24
+ - 当识别结果与当前 skill 不匹配时,不要提示用户选错了 skill,也不要中止审查
25
+ - 不匹配时继续使用同一输出格式,但按现有通用 `code-review` 审查基线做稳妥审查
26
+ - 不匹配时减少对 Python 框架和运行环境的特有假设
27
+
28
+ ## 严重级别
29
+
30
+ | 等级 | 含义 | 处理 |
31
+ |------|------|------|
32
+ | **P0** | 安全漏洞、数据损坏、必现 crash、核心路径不可用 | 必须修复后才能提交 |
33
+ | **P1** | 逻辑错误、功能异常、明显性能/可靠性回退 | 提交前修复 |
34
+ | **P2** | 可维护性问题、测试不足、非阻塞设计问题 | 当前批次修复或登记后续任务 |
35
+ | **P3** | 次要改进 | 可选 |
36
+
37
+ ## 工作流
38
+
39
+ ### 1) 确认审查范围
40
+
41
+ 先关注共享分类结果、`changedFiles` 与 diff 本身,再决定本次是否使用 Python 专项视角。
42
+
43
+ - 当前 diff 主要是 `.py`、Python 依赖与项目配置改动时,使用 Python 专项视角
44
+ - 当前 diff 若明显偏前端、Java、Golang 或类型不匹配,则直接回到通用稳妥审查
45
+ - 不因为用户选择了 Python skill 就强行输出 Python 专属问题
46
+
47
+ ### 2) 代码分析
48
+
49
+ #### a) 异常与资源生命周期
50
+
51
+ 加载 `references/exception-and-lifecycle.md`,检查异常传播、错误语义一致性、资源释放、上下文管理与并发生命周期边界。
52
+
53
+ #### b) 输入与数据安全
54
+
55
+ 加载 `references/input-and-data-security.md`,重点关注命令执行、反序列化、路径处理、鉴权边界、敏感数据泄露与注入风险。
56
+
57
+ #### c) 性能与资源效率
58
+
59
+ 加载 `references/performance-and-resource-usage.md`,检查算法复杂度、循环开销、I/O、数据库访问模式、并发模型与内存占用。
60
+
61
+ #### d) 可维护性与测试策略
62
+
63
+ 加载 `references/maintainability-and-testing.md`,检查职责边界、命名与可读性、接口演进、类型提示与测试覆盖质量。
64
+
65
+ #### e) 通用工程基线补充
66
+
67
+ 完成 Python 专项检查后,补充对通用 `code-review` 的以下基线检查:架构与设计,以及当 diff 包含删除时的冗余与残留引用。Python 专项维度负责语言、运行时与服务端边界风险,不替代通用工程审查。
68
+
69
+ ### 3) 整理问题列表
70
+
71
+ 确认每条问题满足门槛(可定位、可自证、可修复)。同一根因的多处表现合并为一条。不为凑数量降低标准。
72
+
73
+ ### 4) 评分
74
+
75
+ 加载 `references/scoring-guide.md`,**每次审查必须根据该指南给出具体评分**:先按最严重问题确定基准区间,再按影响广度、问题数量、可逆性在区间内微调,最终输出一个具体分值(如 8.5、7.0),不得只写区间或省略评分;纯文件删除时记为 N/A。
76
+
77
+ ### 5) 输出格式
78
+
79
+ 按以下格式输出:
80
+
81
+ ```markdown
82
+ ## 审查摘要
83
+
84
+ **审查范围**:X 个文件,Y 行新增
85
+
86
+ **评分**:X / 10(必须为具体分值,如 8.5;仅纯删除时为 N/A)
87
+
88
+ **提交建议**:✅ 可以提交 / ✅ 可以提交,跟进修复 / 🔧 修复后提交 / 🚫 禁止提交
89
+
90
+ **问题统计**:P0 × 个 / P1 × 个 / P2 × 个 / P3 × 个
91
+
92
+ ---
93
+
94
+ ## 各维度结果
95
+
96
+ | # | 维度 | 结论 |
97
+ |---|------|------|
98
+ | 1 | 异常与资源生命周期 | ✅ 无问题 / ⚠️ 存在问题(简述) |
99
+ | 2 | 输入与数据安全 | ✅ 无问题 / ⚠️ 存在问题(简述) |
100
+ | 3 | 性能与资源效率 | ✅ 无问题 / ⚠️ 存在问题(简述) |
101
+ | 4 | 可维护性与测试策略 | ✅ 无问题 / ⚠️ 存在问题(简述) |
102
+
103
+ ---
104
+
105
+ ## 问题列表
106
+
107
+ ### P0 🔴 严重
108
+
109
+
110
+ ### P1 🟠 高
111
+ 1. **[文件:行号] 问题标题**
112
+ - **问题**:一句话说明是什么问题
113
+ - **影响**:一句话说明会导致什么后果
114
+ - **修复**:具体方案
115
+
116
+ ### P2 🟡 中
117
+
118
+
119
+ ### P3 🟢 低
120
+
121
+
122
+ ---
123
+
124
+ ## 总体评价
125
+
126
+ 2-3 句话说明是否建议提交,以及还需要哪些修复或跟进。
127
+ ```
128
+
129
+ **输出规则:**
130
+
131
+ - 每次审查必须在「审查摘要」中给出根据 `references/scoring-guide.md` 计算的具体评分(X / 10),不得省略。
132
+ - 直接给问题,不写前言铺垫。
133
+ - 每条问题写清楚:位置、问题是什么、影响是什么、如何修复。
134
+ - 只在有明确代码路径支撑时输出问题,不猜项目框架、运行环境或业务规则。
135
+ - 如果共享分类结果提示应回到通用审查,则按通用基线保守审查,但仍然使用本 skill 的统一输出结构。
136
+ - 禁止在模板之外添加"亮点"、"优点"、"表扬"等额外章节。
137
+ - `## 总体评价` 只写 2-3 句连续段落,不用列表或子标题。
138
+
139
+ ## 参考文件
140
+
141
+ | 文件 | 用途 |
142
+ |------|------|
143
+ | `exception-and-lifecycle.md` | 异常传播、资源释放、上下文管理与生命周期风险检查项 |
144
+ | `input-and-data-security.md` | 输入校验、注入风险、鉴权边界与敏感数据保护检查项 |
145
+ | `performance-and-resource-usage.md` | 算法复杂度、I/O 模式、并发模型与资源效率检查项 |
146
+ | `maintainability-and-testing.md` | 可读性、职责拆分、接口演进与测试策略检查项 |
147
+ | `scoring-guide.md` | 评分模型、区间规则和提交建议 |
@@ -0,0 +1,15 @@
1
+ # 异常与资源生命周期检查清单
2
+
3
+ ## 异常传播与错误语义
4
+
5
+ - 输入参数、空值、边界值是否有明确处理。
6
+ - 返回值类型和错误语义是否一致,避免吞异常或误捕获。
7
+ - 时间、时区、编码、浮点比较等边界是否处理正确。
8
+ - 异常链路是否可观测,日志是否保留定位信息且不泄露敏感数据。
9
+
10
+ ## 资源管理与生命周期
11
+
12
+ - 文件、网络、数据库连接是否保证关闭(context manager/finally)。
13
+ - 重试、超时、熔断策略是否合理,避免无限重试与资源放大。
14
+ - 并发场景下共享状态、锁和竞态条件是否被正确处理。
15
+ - 协程/线程池任务是否可取消、可收敛,避免泄漏与悬挂任务。
@@ -0,0 +1,20 @@
1
+ # 输入与数据安全检查清单
2
+
3
+ ## 输入与注入风险
4
+
5
+ - 是否直接拼接用户输入到 SQL、命令行、模板或解释器执行语句。
6
+ - 子进程调用是否避免 `shell=True`,参数是否做白名单校验。
7
+ - 路径处理是否防止目录穿越(如 `../`)和任意文件访问。
8
+ - 反序列化是否使用安全格式,避免加载不可信 pickle/yaml 对象。
9
+
10
+ ## 鉴权与权限边界
11
+
12
+ - 鉴权逻辑是否在服务端强制执行,避免仅前端控制。
13
+ - 权限边界是否正确,是否存在越权读写。
14
+ - 错误信息是否暴露内部实现细节、堆栈或敏感配置。
15
+
16
+ ## 敏感数据保护
17
+
18
+ - token、密钥、凭据是否被硬编码或写入日志。
19
+ - 敏感字段是否最小化收集、传输和存储。
20
+ - 临时文件、缓存和调试输出是否可能泄露个人信息或商业机密。
@@ -0,0 +1,21 @@
1
+ # 可维护性与测试策略检查清单
2
+
3
+ ## 可维护性与设计边界
4
+
5
+ - 函数和类职责是否清晰,是否存在过长函数和隐式副作用。
6
+ - 命名是否表达意图,是否避免单字母变量和歧义缩写。
7
+ - 复杂分支是否可读,是否适合拆分为可测试单元。
8
+ - 新增公共接口是否有最小必要注释与类型提示。
9
+
10
+ ## 接口演进与兼容性
11
+
12
+ - 公开 API 的输入输出契约是否清晰且保持兼容。
13
+ - 默认值、可选参数和异常语义是否与历史行为一致。
14
+ - 配置项、环境变量和开关语义是否明确,避免隐式破坏。
15
+
16
+ ## 测试策略与回归防护
17
+
18
+ - 新增逻辑是否有对应单测,关键分支是否覆盖。
19
+ - 异常分支和失败路径是否有测试。
20
+ - 测试是否稳定且无随机失败风险。
21
+ - 关键回归场景是否具备最小可复现用例。
@@ -0,0 +1,21 @@
1
+ # 性能与资源效率检查清单
2
+
3
+ ## 算法与数据结构
4
+
5
+ - 是否在热点路径使用了明显低效的数据结构或算法。
6
+ - 循环内是否有可外提的重复计算。
7
+ - 列表/字典构建是否存在不必要拷贝或重复转换。
8
+
9
+ ## I/O 与外部依赖
10
+
11
+ - 数据库调用是否存在 N+1 查询或重复请求。
12
+ - 文件与网络 I/O 是否批量化,是否避免阻塞关键路径。
13
+ - 大对象读取是否使用流式处理,避免一次性加载。
14
+ - 重试策略是否导致雪崩或资源放大。
15
+
16
+ ## 并发与资源效率
17
+
18
+ - CPU 密集任务是否错误放在单线程串行路径。
19
+ - 协程/线程池使用是否合理,是否存在饥饿或泄漏风险。
20
+ - 内存占用是否受控,缓存是否有淘汰策略。
21
+ - 临时对象生命周期是否过长,是否可能导致峰值内存抖动。
@@ -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
+ - 硬编码真实 credentials 或 secret 泄露 -> 评分上限 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 问题,必须修复 |