pdd-skills 3.0.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.
Files changed (261) hide show
  1. package/README.md +1478 -0
  2. package/bin/pdd.js +354 -0
  3. package/config/bpmn-rules.yaml +166 -0
  4. package/config/checkstyle.xml +105 -0
  5. package/config/eslint.config.js +48 -0
  6. package/config/pmd.xml +91 -0
  7. package/config/prd-rules.yaml +113 -0
  8. package/config/ruff.toml +45 -0
  9. package/config/sqlfluff.cfg +82 -0
  10. package/hooks/hook-executor.js +332 -0
  11. package/index.js +43 -0
  12. package/lib/api-routes.js +750 -0
  13. package/lib/api-server.js +408 -0
  14. package/lib/cache/cache-config.js +209 -0
  15. package/lib/cache/system-cache.js +852 -0
  16. package/lib/config-manager.js +373 -0
  17. package/lib/generate.js +528 -0
  18. package/lib/grpc/grpc-routes.js +1134 -0
  19. package/lib/grpc/grpc-server.js +912 -0
  20. package/lib/grpc/proto-definitions.js +1033 -0
  21. package/lib/init.js +172 -0
  22. package/lib/iteration/auto-fixer.js +1025 -0
  23. package/lib/iteration/auto-reviewer.js +923 -0
  24. package/lib/iteration/controller.js +577 -0
  25. package/lib/list.js +130 -0
  26. package/lib/mcp-server.js +548 -0
  27. package/lib/openclaw/api-integration.js +535 -0
  28. package/lib/openclaw/cli-integration.js +567 -0
  29. package/lib/openclaw/data-sync.js +845 -0
  30. package/lib/openclaw/openclaw-adapter.js +783 -0
  31. package/lib/plugin/example-plugins/code-stats/index.js +332 -0
  32. package/lib/plugin/example-plugins/code-stats/plugin.json +1 -0
  33. package/lib/plugin/example-plugins/custom-linter/index.js +472 -0
  34. package/lib/plugin/example-plugins/custom-linter/plugin.json +1 -0
  35. package/lib/plugin/example-plugins/hello-world/index.js +86 -0
  36. package/lib/plugin/example-plugins/hello-world/plugin.json +1 -0
  37. package/lib/plugin/plugin-manager.js +655 -0
  38. package/lib/plugin/plugin-sdk.js +565 -0
  39. package/lib/plugin/sandbox.js +627 -0
  40. package/lib/quality/rules/maintainability.js +418 -0
  41. package/lib/quality/rules/performance.js +498 -0
  42. package/lib/quality/rules/readability.js +441 -0
  43. package/lib/quality/rules/robustness.js +504 -0
  44. package/lib/quality/rules/security.js +444 -0
  45. package/lib/quality/scorer.js +576 -0
  46. package/lib/report.js +669 -0
  47. package/lib/sdk-base.js +301 -0
  48. package/lib/sdk-js.js +446 -0
  49. package/lib/sdk-python/README.md +546 -0
  50. package/lib/sdk-python/examples/basic_usage.py +450 -0
  51. package/lib/sdk-python/pdd_sdk/__init__.py +180 -0
  52. package/lib/sdk-python/pdd_sdk/client.py +1170 -0
  53. package/lib/sdk-python/pdd_sdk/events.py +423 -0
  54. package/lib/sdk-python/pdd_sdk/exceptions.py +158 -0
  55. package/lib/sdk-python/pdd_sdk/models.py +518 -0
  56. package/lib/sdk-python/pdd_sdk/utils.py +759 -0
  57. package/lib/token/budget-alert.js +367 -0
  58. package/lib/token/budget-manager.js +485 -0
  59. package/lib/update.js +54 -0
  60. package/lib/utils/logger.js +88 -0
  61. package/lib/verify.js +741 -0
  62. package/lib/version.js +52 -0
  63. package/lib/vm/README.md +102 -0
  64. package/lib/vm/dashboard/api-routes.js +669 -0
  65. package/lib/vm/dashboard/server.js +391 -0
  66. package/lib/vm/dashboard/sse.js +358 -0
  67. package/lib/vm/dashboard/static/css/dashboard.css +1378 -0
  68. package/lib/vm/dashboard/static/index.html +118 -0
  69. package/lib/vm/dashboard/static/js/app.js +949 -0
  70. package/lib/vm/dashboard/static/js/charts.js +913 -0
  71. package/lib/vm/dashboard/static/js/kanban-view.js +1053 -0
  72. package/lib/vm/dashboard/static/js/pipeline-view.js +463 -0
  73. package/lib/vm/dashboard/static/js/quality-view.js +598 -0
  74. package/lib/vm/dashboard/static/js/system-view.js +1021 -0
  75. package/lib/vm/data-provider.js +1191 -0
  76. package/lib/vm/event-bus.js +402 -0
  77. package/lib/vm/hooks/extract-hook.js +307 -0
  78. package/lib/vm/hooks/generate-hook.js +374 -0
  79. package/lib/vm/hooks/hook-interface.js +458 -0
  80. package/lib/vm/hooks/report-hook.js +331 -0
  81. package/lib/vm/hooks/verify-hook.js +454 -0
  82. package/lib/vm/models.js +1003 -0
  83. package/lib/vm/reconciler.js +855 -0
  84. package/lib/vm/scanner.js +988 -0
  85. package/lib/vm/state-schema.js +955 -0
  86. package/lib/vm/state-store.js +733 -0
  87. package/lib/vm/tui/components/card.js +339 -0
  88. package/lib/vm/tui/components/progress-bar.js +368 -0
  89. package/lib/vm/tui/components/sparkline.js +327 -0
  90. package/lib/vm/tui/components/status-light.js +294 -0
  91. package/lib/vm/tui/components/table.js +370 -0
  92. package/lib/vm/tui/input.js +335 -0
  93. package/lib/vm/tui/renderer.js +548 -0
  94. package/lib/vm/tui/screens/kanban-screen.js +397 -0
  95. package/lib/vm/tui/screens/overview-screen.js +357 -0
  96. package/lib/vm/tui/screens/quality-screen.js +336 -0
  97. package/lib/vm/tui/screens/system-screen.js +379 -0
  98. package/lib/vm/tui/tui.js +805 -0
  99. package/package.json +1 -0
  100. package/scripts/cso-analyzer.js +198 -0
  101. package/scripts/eval-runner.js +359 -0
  102. package/scripts/i18n-checker.js +109 -0
  103. package/scripts/linter/activiti-linter.js +272 -0
  104. package/scripts/linter/prd-linter.js +162 -0
  105. package/scripts/linter/report-generator.js +207 -0
  106. package/scripts/linter/run-linters.js +285 -0
  107. package/scripts/linter/sql-linter.js +166 -0
  108. package/scripts/token-analyzer.js +162 -0
  109. package/scripts/vm-test.js +180 -0
  110. package/skills/core/official-doc-writer/LICENSE +21 -0
  111. package/skills/core/official-doc-writer/README.md +232 -0
  112. package/skills/core/official-doc-writer/SKILL.md +475 -0
  113. package/skills/core/official-doc-writer/_meta.json +1 -0
  114. package/skills/core/official-doc-writer/document_generator.py +580 -0
  115. package/skills/core/official-doc-writer/evals/default-evals.json +1 -0
  116. package/skills/core/official-doc-writer/examples.md +150 -0
  117. package/skills/core/official-doc-writer/fonts/FONTS_LIST.md +45 -0
  118. package/skills/core/official-doc-writer/fonts/README.md +141 -0
  119. package/skills/core/official-doc-writer/fonts/SIMFANG.TTF +0 -0
  120. package/skills/core/official-doc-writer/fonts/SIMHEI.TTF +0 -0
  121. package/skills/core/official-doc-writer/fonts/SIMKAI.TTF +0 -0
  122. package/skills/core/official-doc-writer/fonts/SIMSUN.TTC +0 -0
  123. package/skills/core/official-doc-writer/fonts//346/226/271/346/255/243/345/260/217/346/240/207/345/256/213GBK.TTF +0 -0
  124. package/skills/core/official-doc-writer/references/GBT_9704-2012_/345/205/232/346/224/277/346/234/272/345/205/263/345/205/254/346/226/207/346/240/274/345/274/217.md +422 -0
  125. package/skills/core/official-doc-writer/scripts/__pycache__/generate_official_doc.cpython-313.pyc +0 -0
  126. package/skills/core/official-doc-writer/scripts/dialog_manager.py +564 -0
  127. package/skills/core/official-doc-writer/scripts/generate_official_doc.py +252 -0
  128. package/skills/core/official-doc-writer/scripts/install_fonts.py +390 -0
  129. package/skills/core/official-doc-writer/scripts/smart_prompts.py +363 -0
  130. package/skills/core/pdd-ba/SKILL.md +305 -0
  131. package/skills/core/pdd-ba/_meta.json +1 -0
  132. package/skills/core/pdd-ba/evals/default-evals.json +1 -0
  133. package/skills/core/pdd-code-reviewer/SKILL.md +378 -0
  134. package/skills/core/pdd-code-reviewer/_meta.json +1 -0
  135. package/skills/core/pdd-code-reviewer/evals/default-evals.json +1 -0
  136. package/skills/core/pdd-doc-change/SKILL.md +350 -0
  137. package/skills/core/pdd-doc-change/_meta.json +1 -0
  138. package/skills/core/pdd-doc-change/evals/default-evals.json +1 -0
  139. package/skills/core/pdd-doc-gardener/SKILL.md +248 -0
  140. package/skills/core/pdd-doc-gardener/_meta.json +1 -0
  141. package/skills/core/pdd-doc-gardener/evals/default-evals.json +1 -0
  142. package/skills/core/pdd-entropy-reduction/SKILL.md +360 -0
  143. package/skills/core/pdd-entropy-reduction/_meta.json +1 -0
  144. package/skills/core/pdd-entropy-reduction/evals/default-evals.json +1 -0
  145. package/skills/core/pdd-entropy-reduction/references/entropy-report-template.md +287 -0
  146. package/skills/core/pdd-entropy-reduction/references/golden-principles.md +573 -0
  147. package/skills/core/pdd-entropy-reduction/scripts/entropy_scan.py +712 -0
  148. package/skills/core/pdd-extract-features/SKILL.md +320 -0
  149. package/skills/core/pdd-extract-features/_meta.json +1 -0
  150. package/skills/core/pdd-extract-features/evals/default-evals.json +1 -0
  151. package/skills/core/pdd-generate-spec/SKILL.md +418 -0
  152. package/skills/core/pdd-generate-spec/_meta.json +1 -0
  153. package/skills/core/pdd-generate-spec/evals/default-evals.json +1 -0
  154. package/skills/core/pdd-implement-feature/SKILL.md +332 -0
  155. package/skills/core/pdd-implement-feature/_meta.json +1 -0
  156. package/skills/core/pdd-implement-feature/evals/default-evals.json +1 -0
  157. package/skills/core/pdd-main/SKILL.md +540 -0
  158. package/skills/core/pdd-main/_meta.json +1 -0
  159. package/skills/core/pdd-main/evals/default-evals.json +1 -0
  160. package/skills/core/pdd-main/evals/evals.json +215 -0
  161. package/skills/core/pdd-verify-feature/SKILL.md +474 -0
  162. package/skills/core/pdd-verify-feature/_meta.json +1 -0
  163. package/skills/core/pdd-verify-feature/evals/default-evals.json +1 -0
  164. package/skills/core/pdd-vm/evals/default-evals.json +1 -0
  165. package/skills/core/traffic-accident-assessor/LICENSE +29 -0
  166. package/skills/core/traffic-accident-assessor/SKILL.md +439 -0
  167. package/skills/core/traffic-accident-assessor/evals/evals.json +1 -0
  168. package/skills/core/traffic-accident-assessor/references/accident-types.md +369 -0
  169. package/skills/core/traffic-accident-assessor/references/liability-rules.md +287 -0
  170. package/skills/core/traffic-accident-assessor/references/traffic-laws.md +226 -0
  171. package/skills/core/traffic-accident-assessor/references//351/253/230/345/260/224/345/244/253/350/257/264/346/230/216/344/271/246.pdf +32576 -106
  172. package/skills/core/traffic-accident-assessor/scripts/generate_official_statement.py +588 -0
  173. package/skills/core/traffic-accident-assessor/scripts/generate_report.py +495 -0
  174. package/skills/core/traffic-accident-assessor/scripts/generate_statement.py +528 -0
  175. package/skills/core/traffic-accident-assessor.zip +0 -0
  176. package/skills/entropy/expert-arch-enforcer/SKILL.md +292 -0
  177. package/skills/entropy/expert-arch-enforcer/_meta.json +1 -0
  178. package/skills/entropy/expert-arch-enforcer/evals/default-evals.json +1 -0
  179. package/skills/entropy/expert-auto-refactor/SKILL.md +327 -0
  180. package/skills/entropy/expert-auto-refactor/_meta.json +1 -0
  181. package/skills/entropy/expert-auto-refactor/evals/default-evals.json +1 -0
  182. package/skills/entropy/expert-code-quality/SKILL.md +468 -0
  183. package/skills/entropy/expert-code-quality/_meta.json +1 -0
  184. package/skills/entropy/expert-code-quality/evals/default-evals.json +1 -0
  185. package/skills/entropy/expert-code-quality/evals/evals.json +109 -0
  186. package/skills/entropy/expert-code-quality/references/code-smells.md +605 -0
  187. package/skills/entropy/expert-code-quality/references/design-patterns.md +1111 -0
  188. package/skills/entropy/expert-code-quality/references/refactoring-catalog.md +1281 -0
  189. package/skills/entropy/expert-code-quality/references/solid-principles.md +524 -0
  190. package/skills/entropy/expert-entropy-auditor/SKILL.md +276 -0
  191. package/skills/entropy/expert-entropy-auditor/_meta.json +1 -0
  192. package/skills/entropy/expert-entropy-auditor/evals/default-evals.json +1 -0
  193. package/skills/expert/expert-activiti/SKILL.md +497 -0
  194. package/skills/expert/expert-activiti/_meta.json +1 -0
  195. package/skills/expert/expert-mysql/SKILL.md +832 -0
  196. package/skills/expert/expert-mysql/_meta.json +1 -0
  197. package/skills/expert/expert-performance/SKILL.md +379 -0
  198. package/skills/expert/expert-performance/_meta.json +1 -0
  199. package/skills/expert/expert-performance/evals/default-evals.json +1 -0
  200. package/skills/expert/expert-ruoyi/SKILL.md +472 -0
  201. package/skills/expert/expert-ruoyi/_meta.json +1 -0
  202. package/skills/expert/expert-security/SKILL.md +1341 -0
  203. package/skills/expert/expert-security/_meta.json +1 -0
  204. package/skills/expert/expert-security/evals/default-evals.json +1 -0
  205. package/skills/expert/software-architect/SKILL.md +350 -0
  206. package/skills/expert/software-architect/_meta.json +1 -0
  207. package/skills/expert/software-engineer/SKILL.md +437 -0
  208. package/skills/expert/software-engineer/_meta.json +1 -0
  209. package/skills/expert/software-engineer/architecture.md +130 -0
  210. package/skills/expert/software-engineer/patterns.md +151 -0
  211. package/skills/expert/software-engineer/testing.md +135 -0
  212. package/skills/expert/system-architect/SKILL.md +628 -0
  213. package/skills/expert/system-architect/_meta.json +1 -0
  214. package/skills/expert/system-architect/assets/templates/ARCHITECTURE.md +25 -0
  215. package/skills/expert/system-architect/assets/templates/README.md +44 -0
  216. package/skills/expert/system-architect/references/js-ts-standards.md +18 -0
  217. package/skills/expert/system-architect/references/python-standards.md +19 -0
  218. package/skills/expert/system-architect/references/scaffolding.md +61 -0
  219. package/skills/expert/system-architect/references/security-checklist.md +21 -0
  220. package/skills/openspec/openspec-apply-change/SKILL.md +156 -0
  221. package/skills/openspec/openspec-apply-change/_meta.json +1 -0
  222. package/skills/openspec/openspec-archive-change/SKILL.md +114 -0
  223. package/skills/openspec/openspec-archive-change/_meta.json +1 -0
  224. package/skills/openspec/openspec-bulk-archive-change/SKILL.md +246 -0
  225. package/skills/openspec/openspec-bulk-archive-change/_meta.json +1 -0
  226. package/skills/openspec/openspec-continue-change/SKILL.md +118 -0
  227. package/skills/openspec/openspec-continue-change/_meta.json +1 -0
  228. package/skills/openspec/openspec-explore/SKILL.md +288 -0
  229. package/skills/openspec/openspec-explore/_meta.json +1 -0
  230. package/skills/openspec/openspec-ff-change/SKILL.md +101 -0
  231. package/skills/openspec/openspec-ff-change/_meta.json +1 -0
  232. package/skills/openspec/openspec-new-change/SKILL.md +74 -0
  233. package/skills/openspec/openspec-new-change/_meta.json +1 -0
  234. package/skills/openspec/openspec-onboard/SKILL.md +554 -0
  235. package/skills/openspec/openspec-onboard/_meta.json +1 -0
  236. package/skills/openspec/openspec-sync-specs/SKILL.md +138 -0
  237. package/skills/openspec/openspec-sync-specs/_meta.json +1 -0
  238. package/skills/openspec/openspec-verify-change/SKILL.md +168 -0
  239. package/skills/openspec/openspec-verify-change/_meta.json +1 -0
  240. package/skills/pr/pdd-multi-review/SKILL.md +534 -0
  241. package/skills/pr/pdd-multi-review/_meta.json +1 -0
  242. package/skills/pr/pdd-pr-batch/SKILL.md +303 -0
  243. package/skills/pr/pdd-pr-batch/_meta.json +1 -0
  244. package/skills/pr/pdd-pr-create/SKILL.md +344 -0
  245. package/skills/pr/pdd-pr-create/_meta.json +1 -0
  246. package/skills/pr/pdd-pr-merge/SKILL.md +286 -0
  247. package/skills/pr/pdd-pr-merge/_meta.json +1 -0
  248. package/skills/pr/pdd-pr-review/SKILL.md +217 -0
  249. package/skills/pr/pdd-pr-review/_meta.json +1 -0
  250. package/skills/pr/pdd-task-manager/SKILL.md +636 -0
  251. package/skills/pr/pdd-task-manager/_meta.json +1 -0
  252. package/skills/pr/pdd-template-engine/SKILL.md +306 -0
  253. package/skills/pr/pdd-template-engine/_meta.json +1 -0
  254. package/templates/behavior-shaping/iron-law-template.md +87 -0
  255. package/templates/behavior-shaping/rationalization-template.md +62 -0
  256. package/templates/behavior-shaping/red-flags-template.md +70 -0
  257. package/templates/bilingual-template.md +139 -0
  258. package/templates/config/default.yaml +47 -0
  259. package/templates/project/default/README.md +31 -0
  260. package/templates/project/frontend/README.md +46 -0
  261. package/templates/project/java/README.md +48 -0
@@ -0,0 +1,303 @@
1
+ ---
2
+ name: pdd-pr-batch
3
+ description: |
4
+ 批量合并多个 Change 为一个 PR。当用户需要将多个小改动打包发布、相关功能点一起上线、或批量更新配置文件和文档时调用此Skill。即使用户只说"批量合并PR"、"打包发布"或"多个change合并",也应触发此Skill。
5
+ license: MIT
6
+ compatibility: 需要多个 OpenSpec Change ID
7
+ metadata:
8
+ author: "neuqik@hotmail.com"
9
+ version: "1.0"
10
+ parent: pdd-main
11
+ ---
12
+
13
+ # pdd-pr-batch
14
+
15
+ **Description**: 批量合并多个 Change 为一个 PR。适用于多个小改动打包发布的场景。
16
+
17
+ **Details**: 批量合并多个 Change 为一个 PR
18
+
19
+ **Input**: 多个 OpenSpec Change ID
20
+
21
+ ## 使用场景
22
+
23
+ ```
24
+ 适用场景:
25
+ ├── 多个小修复打包发布
26
+ ├── 相关功能点一起上线
27
+ ├── 配置文件批量更新
28
+ └── 文档批量更新
29
+
30
+ 不适用场景:
31
+ ├── Change 之间有依赖冲突
32
+ ├── 需要独立回滚的 Change
33
+ └── 不同优先级的 Change
34
+ ```
35
+
36
+ ## 执行流程
37
+
38
+ ### 1. 验证所有 Change
39
+
40
+ ```
41
+ for each change_id in change_ids:
42
+ ├── 检查 Change 目录存在
43
+ ├── 读取 tasks.md 确认完成
44
+ ├── 检查代码已提交
45
+ └── 记录 Change 信息
46
+ ```
47
+
48
+ ### 2. 创建批量分支
49
+
50
+ ```
51
+ 分支命名: batch/{date}
52
+
53
+ 示例: batch/2026-03-21
54
+
55
+ 操作:
56
+ ├── git checkout main
57
+ ├── git pull origin main
58
+ └── git checkout -b batch/2026-03-21
59
+ ```
60
+
61
+ ### 3. 合并代码
62
+
63
+ ```
64
+ for each change_id in change_ids:
65
+ ├── 找到 Change 对应的 Feature Branch
66
+ ├── cherry-pick 或 merge 该分支的提交
67
+ ├── 解决可能的冲突
68
+ └── 记录合并结果
69
+ ```
70
+
71
+ ### 4. 批量审查
72
+
73
+ ```
74
+ 运行所有 Change 的测试:
75
+ ├── 汇总所有测试用例
76
+ ├── 批量运行测试
77
+ ├── 汇总测试覆盖率
78
+ └── 生成批量审查报告
79
+
80
+ 审查报告: openspec/batch/{date}/review-report.md
81
+ ```
82
+
83
+ ### 5. 创建批量 PR
84
+
85
+ ```
86
+ GitHub 模式:
87
+ ├── 推送批量分支到远程
88
+ ├── 创建 GitHub PR
89
+ │ ├── 标题: batch: {title} ({n} changes)
90
+ │ ├── 描述: 列出所有 Change
91
+ │ └── 标签: batch
92
+ └── 记录 PR 编号
93
+
94
+ 本地模式:
95
+ ├── 创建批量 PR 记录
96
+ │ └── openspec/batch/{date}/pr-record.md
97
+ └── 记录所有 Change ID
98
+ ```
99
+
100
+ ### 6. 输出结果
101
+
102
+ ```
103
+ 输出:
104
+ ├── PR 编号 / 本地记录路径
105
+ ├── 包含的 Change 列表
106
+ ├── 批量审查结果
107
+ └── 等待确认
108
+ ```
109
+
110
+ ## 输出格式
111
+
112
+ ```markdown
113
+ ## 批量 PR 创建完成
114
+
115
+ **PR 编号**: #125
116
+ **分支**: batch/2026-03-21 → main
117
+ **包含变更**: 3 个
118
+
119
+ ### 变更列表
120
+
121
+ | Change ID | 标题 | 状态 | 审查结果 |
122
+ |-----------|------|------|---------|
123
+ | c-001-xxx | 权限控制 | ✅ 完成 | ✅ 通过 |
124
+ | c-002-yyy | 日志记录 | ✅ 完成 | ⚠️ 1 Warning |
125
+ | c-003-zzz | 参数校验 | ✅ 完成 | ✅ 通过 |
126
+
127
+ ### 批量审查结果
128
+
129
+ | 检查项 | 状态 | 详情 |
130
+ |--------|------|------|
131
+ | 单元测试 | ✅ 通过 | 45/45 用例通过 |
132
+ | 测试覆盖率 | ✅ 82% | 阈值: 70% |
133
+ | 代码质量 | ⚠️ 3 Warning | 详情见报告 |
134
+ | 冲突检查 | ✅ 无冲突 | - |
135
+
136
+ ### 审查报告
137
+
138
+ 详细报告: `openspec/batch/2026-03-21/review-report.md`
139
+
140
+ ### 下一步操作
141
+
142
+ - 确认合并: `/pdd-pr-merge --pr-number 125`
143
+ - 查看详情: `/pdd-pr-review --pr-number 125`
144
+ - 单独处理某个 Change: `/pdd-pr-review c-001-xxx`
145
+ ```
146
+
147
+ ## 参数
148
+
149
+ | 参数 | 类型 | 必需 | 默认值 | 描述 |
150
+ |------|------|------|--------|------|
151
+ | `change_ids` | array | 是 | - | OpenSpec Change ID 列表 |
152
+ | `title` | string | 否 | - | PR 标题 |
153
+ | `draft` | boolean | 否 | true | 是否创建为 Draft PR |
154
+
155
+ ## 冲突处理
156
+
157
+ ### 检测到冲突
158
+
159
+ ```
160
+ ⚠️ 检测到代码冲突
161
+
162
+ **冲突文件**:
163
+ - src/main/java/WorkflowController.java
164
+
165
+ **冲突 Change**:
166
+ - c-001-xxx: 修改了第 45 行
167
+ - c-002-yyy: 修改了第 45 行
168
+
169
+ ### 解决方案
170
+
171
+ 1. 手动解决冲突:
172
+ - 编辑冲突文件
173
+ - git add .
174
+ - git commit
175
+
176
+ 2. 跳过冲突 Change:
177
+ - `/pdd-pr-batch c-001-xxx,c-003-zzz` (排除 c-002-yyy)
178
+
179
+ 3. 分开处理:
180
+ - 先合并 c-001-xxx
181
+ - 再合并 c-002-yyy
182
+ ```
183
+
184
+ ## 批量归档
185
+
186
+ 合并批量 PR 后,会逐个归档所有 Change:
187
+
188
+ ```
189
+ pdd-pr-merge (批量 PR)
190
+
191
+ └── for each change_id:
192
+
193
+ ├── openspec-archive-change {change-id}
194
+
195
+ └── 更新 Change 状态
196
+ ```
197
+
198
+ ### 批量归档输出
199
+
200
+ ```markdown
201
+ ## 批量 PR 合并完成
202
+
203
+ **PR 编号**: #125
204
+ **合并时间**: 2026-03-21 16:00:00
205
+
206
+ ### 归档状态
207
+
208
+ | Change ID | 归档状态 | 归档路径 |
209
+ |-----------|---------|---------|
210
+ | c-001-xxx | ✅ 已归档 | archive/2026-03-21-c-001-xxx/ |
211
+ | c-002-yyy | ✅ 已归档 | archive/2026-03-21-c-002-yyy/ |
212
+ | c-003-zzz | ✅ 已归档 | archive/2026-03-21-c-003-zzz/ |
213
+
214
+ ### 后续操作
215
+
216
+ - 查看批量归档: `openspec/batch/2026-03-21/`
217
+ ```
218
+
219
+ ## 目录结构
220
+
221
+ ```
222
+ openspec/
223
+ ├── changes/
224
+ │ ├── c-001-xxx/
225
+ │ ├── c-002-yyy/
226
+ │ └── c-003-zzz/
227
+ ├── batch/
228
+ │ └── 2026-03-21/
229
+ │ ├── pr-record.md
230
+ │ ├── review-report.md
231
+ │ └── merge-report.md
232
+ └── archive/
233
+ ├── 2026-03-21-c-001-xxx/
234
+ ├── 2026-03-21-c-002-yyy/
235
+ └── 2026-03-21-c-003-zzz/
236
+ ```
237
+
238
+ ## 错误处理
239
+
240
+ ### 有未完成的 Change
241
+
242
+ ```
243
+ ❌ 部分 Change 未完成
244
+
245
+ **未完成列表**:
246
+ - c-002-yyy: 2/10 任务未完成
247
+
248
+ 请先完成所有 Change 后再执行批量操作。
249
+ ```
250
+
251
+ ### Change 不存在
252
+
253
+ ```
254
+ ❌ Change 不存在
255
+
256
+ **无效 ID**: c-004-xxx
257
+
258
+ 请确认 Change ID 正确:
259
+ - c-001-xxx ✅
260
+ - c-002-yyy ✅
261
+ - c-003-zzz ✅
262
+ - c-004-xxx ❌ 不存在
263
+ ```
264
+
265
+ ## 与其他技能的协作
266
+
267
+ ```
268
+ pdd-pr-batch
269
+
270
+ ├── 被调用方
271
+ │ └── 用户直接调用
272
+
273
+ └── 调用方
274
+ ├── pdd-pr-review (查看批量审查)
275
+ └── pdd-pr-merge (批量合并)
276
+ ```
277
+
278
+ ## 最佳实践
279
+
280
+ ### 推荐批量场景
281
+
282
+ 1. **同类型修复**: 多个 Bug 修复一起发布
283
+ 2. **配置更新**: 多个配置文件修改
284
+ 3. **文档更新**: 多个文档修改
285
+ 4. **依赖升级**: 多个依赖版本更新
286
+
287
+ ### 不推荐批量场景
288
+
289
+ 1. **跨模块修改**: 可能影响其他模块
290
+ 2. **紧急修复**: 应该单独快速发布
291
+ 3. **大改动**: 应该独立审查和回滚
292
+
293
+ ---
294
+
295
+ ## PR管理规范
296
+
297
+ 详见 [pdd-pr-create SKILL.md](./pdd-pr-create/SKILL.md#pr管理规范)
298
+
299
+ ---
300
+
301
+ ## PDD实施规范引用
302
+
303
+ 本Skill遵循PDD框架实施规范,详见 [pdd-framework-design.md 第9章](../docs/pdd-framework-design.md#9-pdd-实施规范)。
@@ -0,0 +1 @@
1
+ {"name": "pdd-pr-batch", "version": "1.0.0", "category": "pr", "description": "Batch PR manager handling multiple pull requests in parallel with unified status tracking. Use when processing several PRs simultaneously.", "triggers": ["批量PR", "batch PR", "批量处理"]}
@@ -0,0 +1,344 @@
1
+ ---
2
+ name: pdd-pr-create
3
+ description: |
4
+ 创建 PR 并执行自动化审查。当用户需要提交代码审查、创建 Pull Request、发起合并请求时调用此Skill。支持 GitHub 模式和本地模式。即使用户只说"创建PR"、"提交审查"或"发起PR",也应触发此Skill。
5
+ license: MIT
6
+ compatibility: 需要 OpenSpec Change ID 或功能点 ID
7
+ metadata:
8
+ author: "neuqik@hotmail.com"
9
+ version: "1.0"
10
+ parent: pdd-main
11
+ ---
12
+
13
+ # pdd-pr-create
14
+
15
+ **Description**: 创建 PR 并执行自动化审查。支持 GitHub 模式和本地模式(GitHub 不可访问时自动降级)。
16
+
17
+ **Details**: 创建 PR 并执行自动化审查
18
+
19
+ **Input**: OpenSpec Change ID 或功能点 ID
20
+
21
+ ## 执行流程
22
+
23
+ ### 1. 模式检测
24
+
25
+ ```
26
+ 启动时检测:
27
+ ├── 尝试连接 GitHub API (gh auth status)
28
+ ├── 成功 → GitHub 模式
29
+ └── 失败 → 本地模式(提示用户)
30
+ ```
31
+
32
+ ### 2. 准备阶段
33
+
34
+ ```
35
+ 1. 解析参数
36
+ ├── 获取 change_id
37
+ └── 确认 Change 目录存在
38
+
39
+ 2. 检查 Change 状态
40
+ ├── 读取 tasks.md
41
+ ├── 确认所有任务已完成
42
+ └── 如有未完成任务,提示用户
43
+
44
+ 3. 检查当前分支状态
45
+ ├── 确认在正确的分支
46
+ ├── 确认所有代码已提交
47
+ └── 如有未提交代码,提示用户
48
+ ```
49
+
50
+ ### 3. 分支管理
51
+
52
+ ```
53
+ GitHub 模式:
54
+ ├── 创建 Feature Branch: change/{change-id}
55
+ ├── 推送到远程仓库
56
+ └── 创建 GitHub PR (Draft)
57
+
58
+ 本地模式:
59
+ ├── 创建 Feature Branch: change/{change-id}
60
+ ├── 记录分支信息到 pr-record.md
61
+ └── 不推送(等待用户手动推送)
62
+ ```
63
+
64
+ ### 4. 自动化审查
65
+
66
+ ```
67
+ 1. 运行单元测试
68
+ ├── Java: mvn test -pl {module}
69
+ ├── Node.js: npm test
70
+ └── 记录测试结果
71
+
72
+ 2. 检查测试覆盖率
73
+ ├── Java: JaCoCo report
74
+ ├── Node.js: Jest coverage
75
+ └── 与阈值比较
76
+
77
+ 3. 运行代码质量检查
78
+ ├── Java: SonarQube / SpotBugs
79
+ ├── Node.js: ESLint
80
+ └── 记录问题列表
81
+
82
+ 4. 检查文档完整性
83
+ ├── 确认 spec.md 存在
84
+ ├── 确认 tasks.md 已更新
85
+ └── 记录检查结果
86
+
87
+ 5. 安全扫描(可选)
88
+ └── 检查敏感信息泄露
89
+ ```
90
+
91
+ ### 5. 生成审查报告
92
+
93
+ ```
94
+ 创建: openspec/changes/{change-id}/review-report.md
95
+
96
+ 内容:
97
+ ├── 审查摘要
98
+ ├── Blocking 问题列表
99
+ ├── Warning 问题列表
100
+ ├── Suggestion 列表
101
+ ├── 测试覆盖详情
102
+ └── 建议操作
103
+ ```
104
+
105
+ ### 6. 创建 PR 记录
106
+
107
+ ```
108
+ GitHub 模式:
109
+ ├── 创建 GitHub PR
110
+ ├── 设置标题: feat(xxx): {change-name}
111
+ ├── 设置描述: 包含 Change 链接、审查摘要
112
+ └── 添加标签: change-id, priority
113
+
114
+ 本地模式:
115
+ ├── 创建 pr-record.md
116
+ ├── 记录分支信息
117
+ ├── 记录审查结果
118
+ └── 记录创建时间
119
+ ```
120
+
121
+ ### 7. 输出结果
122
+
123
+ ```
124
+ 输出摘要:
125
+ ├── PR 编号 / 本地记录路径
126
+ ├── 分支信息
127
+ ├── 审查结果摘要表
128
+ ├── 审查报告路径
129
+ └── 下一步操作提示
130
+ ```
131
+
132
+ ## 输出格式
133
+
134
+ ### GitHub 模式
135
+
136
+ ```markdown
137
+ ## PR 创建完成
138
+
139
+ **PR 编号**: #123
140
+ **分支**: change/c-001-xxx → main
141
+ **状态**: Draft
142
+
143
+ ### 自动化审查结果
144
+
145
+ | 检查项 | 状态 | 详情 |
146
+ |--------|------|------|
147
+ | 单元测试 | ✅ 通过 | 15/15 用例通过 |
148
+ | 测试覆盖率 | ✅ 85% | 阈值: 70% |
149
+ | 代码质量 | ⚠️ 2 Warning | 详情见报告 |
150
+ | 安全扫描 | ✅ 通过 | 无漏洞 |
151
+ | 文档完整性 | ✅ 通过 | spec.md 已更新 |
152
+
153
+ ### 审查报告
154
+
155
+ 详细报告: `openspec/changes/c-001-xxx/review-report.md`
156
+
157
+ ### 下一步操作
158
+
159
+ - 确认通过: `/pdd-pr-merge c-001-xxx`
160
+ - 查看详情: `/pdd-pr-review c-001-xxx`
161
+ - 修复问题后重新审查: `/pdd-pr-create c-001-xxx --re-review`
162
+ ```
163
+
164
+ ### 本地模式
165
+
166
+ ```markdown
167
+ ## PR 创建完成(本地模式)
168
+
169
+ ⚠️ GitHub 不可访问,已切换到本地模式
170
+
171
+ **Change ID**: c-001-xxx
172
+ **分支**: change/c-001-xxx → main
173
+ **状态**: 等待审查
174
+
175
+ ### 自动化审查结果
176
+
177
+ | 检查项 | 状态 | 详情 |
178
+ |--------|------|------|
179
+ | 单元测试 | ✅ 通过 | 15/15 用例通过 |
180
+ | 测试覆盖率 | ✅ 85% | 阈值: 70% |
181
+ | 代码质量 | ⚠️ 2 Warning | 详情见报告 |
182
+
183
+ ### PR 记录
184
+
185
+ 已创建: `openspec/changes/c-001-xxx/pr-record.md`
186
+
187
+ ### 下一步操作
188
+
189
+ - 确认合并: `/pdd-pr-merge c-001-xxx`
190
+ - 查看详情: `/pdd-pr-review c-001-xxx`
191
+ - 网络恢复后推送: `git push origin change/c-001-xxx`
192
+ ```
193
+
194
+ ## 参数
195
+
196
+ | 参数 | 类型 | 必需 | 默认值 | 描述 |
197
+ |------|------|------|--------|------|
198
+ | `change_id` | string | 是 | - | OpenSpec Change ID |
199
+ | `draft` | boolean | 否 | true | 是否创建为 Draft PR |
200
+ | `coverage_threshold` | number | 否 | 70 | 测试覆盖率阈值 |
201
+ | `re_review` | boolean | 否 | false | 是否重新审查 |
202
+
203
+ ## 审查检查项
204
+
205
+ ### 🔴 Blocking(必须通过)
206
+
207
+ | 检查项 | 描述 | 失败条件 |
208
+ |--------|------|---------|
209
+ | `unit_test` | 单元测试通过 | 有测试失败 |
210
+ | `coverage` | 测试覆盖率达标 | 覆盖率 < 阈值 |
211
+ | `critical_issues` | 无 Critical 问题 | 有 Critical 问题 |
212
+ | `build` | 构建成功 | 构建失败 |
213
+
214
+ ### 🟡 Warning(警告)
215
+
216
+ | 检查项 | 描述 | 触发条件 |
217
+ |--------|------|---------|
218
+ | `lint` | 代码风格 | 有 lint 问题 |
219
+ | `documentation` | 文档完整性 | spec.md 未更新 |
220
+ | `coverage_warning` | 覆盖率警告 | 覆盖率 < 90% 但 ≥ 70% |
221
+
222
+ ### 💡 Suggestion(建议)
223
+
224
+ | 检查项 | 描述 |
225
+ |--------|------|
226
+ | `optimization` | 可优化的代码模式 |
227
+ | `performance` | 潜在的性能问题 |
228
+ | `naming` | 更好的命名建议 |
229
+
230
+ ## 错误处理
231
+
232
+ ### Change 未完成
233
+
234
+ ```
235
+ ❌ Change 任务未完成
236
+
237
+ **Change ID**: c-001-xxx
238
+ **未完成任务**: 2/10
239
+
240
+ 请先完成所有任务:
241
+ - [ ] 4.1 Code Review
242
+ - [ ] 5.1 运行单元测试
243
+
244
+ 完成后再执行 `/pdd-pr-create c-001-xxx`
245
+ ```
246
+
247
+ ### 有未提交代码
248
+
249
+ ```
250
+ ❌ 有未提交的代码变更
251
+
252
+ **文件**:
253
+ - src/main/java/Example.java (modified)
254
+ - src/test/java/ExampleTest.java (new)
255
+
256
+ 请先提交代码:
257
+ git add .
258
+ git commit -m "feat: xxx"
259
+
260
+ 然后再执行 `/pdd-pr-create c-001-xxx`
261
+ ```
262
+
263
+ ### 有 Blocking 问题
264
+
265
+ ```
266
+ ❌ 存在 Blocking 问题,无法创建 PR
267
+
268
+ **Blocking 问题**:
269
+ 1. [B-001] 单元测试失败: testAddMethod
270
+ 2. [B-002] 测试覆盖率不足: 45% < 70%
271
+
272
+ 请修复这些问题后重新执行 `/pdd-pr-create c-001-xxx`
273
+ ```
274
+
275
+ ## 与其他技能的协作
276
+
277
+ ```
278
+ pdd-pr-create
279
+
280
+ ├── 被调用方
281
+ │ ├── openspec-apply-change (完成后可选调用)
282
+ │ ├── pdd-implement-feature (每个功能点完成后调用)
283
+ │ └── 用户直接调用
284
+
285
+ └── 调用方
286
+ ├── pdd-pr-review (查看审查结果)
287
+ └── pdd-pr-merge (合并 PR)
288
+ ```
289
+
290
+ ---
291
+
292
+ ## PR管理规范
293
+
294
+ ### 触发时机
295
+
296
+ - **创建PR**: 用户手动触发
297
+ - **命令**: `/pdd-pr-create [change-id]`
298
+ - **前提条件**:
299
+ - 模块所有功能点验证通过
300
+ - 质量改进任务已处理(如有)
301
+
302
+ ### PR粒度
303
+
304
+ - **标准**: 一个Change一个PR
305
+ - **Change定义**:
306
+ - 功能点的逻辑分组
307
+ - 通常对应一个完整的业务功能
308
+ - 包含相关的前后端代码、SQL、配置等
309
+
310
+ ### 归档时机
311
+
312
+ - **归档**: 用户手动触发
313
+ - **命令**: `/openspec-archive-change [change-id]`
314
+ - **前提条件**:
315
+ - PR已合并
316
+ - 用户确认归档
317
+
318
+ ---
319
+
320
+ ## PDD实施规范引用
321
+
322
+ 本Skill遵循PDD框架实施规范,详见 [pdd-framework-design.md 第9章](../docs/pdd-framework-design.md#9-pdd-实施规范)。
323
+
324
+ ---
325
+
326
+ ## 配置
327
+
328
+ ```yaml
329
+ # .trae/config/pr-config.yaml
330
+ pr:
331
+ coverage_threshold: 70
332
+ warning_threshold: 3
333
+
334
+ blocking_checks:
335
+ - unit_test
336
+ - coverage
337
+ - critical_issues
338
+ - build
339
+
340
+ warning_checks:
341
+ - lint
342
+ - documentation
343
+ - coverage_warning
344
+ ```
@@ -0,0 +1 @@
1
+ {"name": "pdd-pr-create", "version": "1.0.0", "category": "pr", "description": "PR creation agent generating well-structured pull requests from feature implementations with proper descriptions and metadata. Call when submitting code changes.", "triggers": ["创建PR", "create PR", "提交代码"]}