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.
- package/README.md +1478 -0
- package/bin/pdd.js +354 -0
- package/config/bpmn-rules.yaml +166 -0
- package/config/checkstyle.xml +105 -0
- package/config/eslint.config.js +48 -0
- package/config/pmd.xml +91 -0
- package/config/prd-rules.yaml +113 -0
- package/config/ruff.toml +45 -0
- package/config/sqlfluff.cfg +82 -0
- package/hooks/hook-executor.js +332 -0
- package/index.js +43 -0
- package/lib/api-routes.js +750 -0
- package/lib/api-server.js +408 -0
- package/lib/cache/cache-config.js +209 -0
- package/lib/cache/system-cache.js +852 -0
- package/lib/config-manager.js +373 -0
- package/lib/generate.js +528 -0
- package/lib/grpc/grpc-routes.js +1134 -0
- package/lib/grpc/grpc-server.js +912 -0
- package/lib/grpc/proto-definitions.js +1033 -0
- package/lib/init.js +172 -0
- package/lib/iteration/auto-fixer.js +1025 -0
- package/lib/iteration/auto-reviewer.js +923 -0
- package/lib/iteration/controller.js +577 -0
- package/lib/list.js +130 -0
- package/lib/mcp-server.js +548 -0
- package/lib/openclaw/api-integration.js +535 -0
- package/lib/openclaw/cli-integration.js +567 -0
- package/lib/openclaw/data-sync.js +845 -0
- package/lib/openclaw/openclaw-adapter.js +783 -0
- package/lib/plugin/example-plugins/code-stats/index.js +332 -0
- package/lib/plugin/example-plugins/code-stats/plugin.json +1 -0
- package/lib/plugin/example-plugins/custom-linter/index.js +472 -0
- package/lib/plugin/example-plugins/custom-linter/plugin.json +1 -0
- package/lib/plugin/example-plugins/hello-world/index.js +86 -0
- package/lib/plugin/example-plugins/hello-world/plugin.json +1 -0
- package/lib/plugin/plugin-manager.js +655 -0
- package/lib/plugin/plugin-sdk.js +565 -0
- package/lib/plugin/sandbox.js +627 -0
- package/lib/quality/rules/maintainability.js +418 -0
- package/lib/quality/rules/performance.js +498 -0
- package/lib/quality/rules/readability.js +441 -0
- package/lib/quality/rules/robustness.js +504 -0
- package/lib/quality/rules/security.js +444 -0
- package/lib/quality/scorer.js +576 -0
- package/lib/report.js +669 -0
- package/lib/sdk-base.js +301 -0
- package/lib/sdk-js.js +446 -0
- package/lib/sdk-python/README.md +546 -0
- package/lib/sdk-python/examples/basic_usage.py +450 -0
- package/lib/sdk-python/pdd_sdk/__init__.py +180 -0
- package/lib/sdk-python/pdd_sdk/client.py +1170 -0
- package/lib/sdk-python/pdd_sdk/events.py +423 -0
- package/lib/sdk-python/pdd_sdk/exceptions.py +158 -0
- package/lib/sdk-python/pdd_sdk/models.py +518 -0
- package/lib/sdk-python/pdd_sdk/utils.py +759 -0
- package/lib/token/budget-alert.js +367 -0
- package/lib/token/budget-manager.js +485 -0
- package/lib/update.js +54 -0
- package/lib/utils/logger.js +88 -0
- package/lib/verify.js +741 -0
- package/lib/version.js +52 -0
- package/lib/vm/README.md +102 -0
- package/lib/vm/dashboard/api-routes.js +669 -0
- package/lib/vm/dashboard/server.js +391 -0
- package/lib/vm/dashboard/sse.js +358 -0
- package/lib/vm/dashboard/static/css/dashboard.css +1378 -0
- package/lib/vm/dashboard/static/index.html +118 -0
- package/lib/vm/dashboard/static/js/app.js +949 -0
- package/lib/vm/dashboard/static/js/charts.js +913 -0
- package/lib/vm/dashboard/static/js/kanban-view.js +1053 -0
- package/lib/vm/dashboard/static/js/pipeline-view.js +463 -0
- package/lib/vm/dashboard/static/js/quality-view.js +598 -0
- package/lib/vm/dashboard/static/js/system-view.js +1021 -0
- package/lib/vm/data-provider.js +1191 -0
- package/lib/vm/event-bus.js +402 -0
- package/lib/vm/hooks/extract-hook.js +307 -0
- package/lib/vm/hooks/generate-hook.js +374 -0
- package/lib/vm/hooks/hook-interface.js +458 -0
- package/lib/vm/hooks/report-hook.js +331 -0
- package/lib/vm/hooks/verify-hook.js +454 -0
- package/lib/vm/models.js +1003 -0
- package/lib/vm/reconciler.js +855 -0
- package/lib/vm/scanner.js +988 -0
- package/lib/vm/state-schema.js +955 -0
- package/lib/vm/state-store.js +733 -0
- package/lib/vm/tui/components/card.js +339 -0
- package/lib/vm/tui/components/progress-bar.js +368 -0
- package/lib/vm/tui/components/sparkline.js +327 -0
- package/lib/vm/tui/components/status-light.js +294 -0
- package/lib/vm/tui/components/table.js +370 -0
- package/lib/vm/tui/input.js +335 -0
- package/lib/vm/tui/renderer.js +548 -0
- package/lib/vm/tui/screens/kanban-screen.js +397 -0
- package/lib/vm/tui/screens/overview-screen.js +357 -0
- package/lib/vm/tui/screens/quality-screen.js +336 -0
- package/lib/vm/tui/screens/system-screen.js +379 -0
- package/lib/vm/tui/tui.js +805 -0
- package/package.json +1 -0
- package/scripts/cso-analyzer.js +198 -0
- package/scripts/eval-runner.js +359 -0
- package/scripts/i18n-checker.js +109 -0
- package/scripts/linter/activiti-linter.js +272 -0
- package/scripts/linter/prd-linter.js +162 -0
- package/scripts/linter/report-generator.js +207 -0
- package/scripts/linter/run-linters.js +285 -0
- package/scripts/linter/sql-linter.js +166 -0
- package/scripts/token-analyzer.js +162 -0
- package/scripts/vm-test.js +180 -0
- package/skills/core/official-doc-writer/LICENSE +21 -0
- package/skills/core/official-doc-writer/README.md +232 -0
- package/skills/core/official-doc-writer/SKILL.md +475 -0
- package/skills/core/official-doc-writer/_meta.json +1 -0
- package/skills/core/official-doc-writer/document_generator.py +580 -0
- package/skills/core/official-doc-writer/evals/default-evals.json +1 -0
- package/skills/core/official-doc-writer/examples.md +150 -0
- package/skills/core/official-doc-writer/fonts/FONTS_LIST.md +45 -0
- package/skills/core/official-doc-writer/fonts/README.md +141 -0
- package/skills/core/official-doc-writer/fonts/SIMFANG.TTF +0 -0
- package/skills/core/official-doc-writer/fonts/SIMHEI.TTF +0 -0
- package/skills/core/official-doc-writer/fonts/SIMKAI.TTF +0 -0
- package/skills/core/official-doc-writer/fonts/SIMSUN.TTC +0 -0
- 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
- 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
- package/skills/core/official-doc-writer/scripts/__pycache__/generate_official_doc.cpython-313.pyc +0 -0
- package/skills/core/official-doc-writer/scripts/dialog_manager.py +564 -0
- package/skills/core/official-doc-writer/scripts/generate_official_doc.py +252 -0
- package/skills/core/official-doc-writer/scripts/install_fonts.py +390 -0
- package/skills/core/official-doc-writer/scripts/smart_prompts.py +363 -0
- package/skills/core/pdd-ba/SKILL.md +305 -0
- package/skills/core/pdd-ba/_meta.json +1 -0
- package/skills/core/pdd-ba/evals/default-evals.json +1 -0
- package/skills/core/pdd-code-reviewer/SKILL.md +378 -0
- package/skills/core/pdd-code-reviewer/_meta.json +1 -0
- package/skills/core/pdd-code-reviewer/evals/default-evals.json +1 -0
- package/skills/core/pdd-doc-change/SKILL.md +350 -0
- package/skills/core/pdd-doc-change/_meta.json +1 -0
- package/skills/core/pdd-doc-change/evals/default-evals.json +1 -0
- package/skills/core/pdd-doc-gardener/SKILL.md +248 -0
- package/skills/core/pdd-doc-gardener/_meta.json +1 -0
- package/skills/core/pdd-doc-gardener/evals/default-evals.json +1 -0
- package/skills/core/pdd-entropy-reduction/SKILL.md +360 -0
- package/skills/core/pdd-entropy-reduction/_meta.json +1 -0
- package/skills/core/pdd-entropy-reduction/evals/default-evals.json +1 -0
- package/skills/core/pdd-entropy-reduction/references/entropy-report-template.md +287 -0
- package/skills/core/pdd-entropy-reduction/references/golden-principles.md +573 -0
- package/skills/core/pdd-entropy-reduction/scripts/entropy_scan.py +712 -0
- package/skills/core/pdd-extract-features/SKILL.md +320 -0
- package/skills/core/pdd-extract-features/_meta.json +1 -0
- package/skills/core/pdd-extract-features/evals/default-evals.json +1 -0
- package/skills/core/pdd-generate-spec/SKILL.md +418 -0
- package/skills/core/pdd-generate-spec/_meta.json +1 -0
- package/skills/core/pdd-generate-spec/evals/default-evals.json +1 -0
- package/skills/core/pdd-implement-feature/SKILL.md +332 -0
- package/skills/core/pdd-implement-feature/_meta.json +1 -0
- package/skills/core/pdd-implement-feature/evals/default-evals.json +1 -0
- package/skills/core/pdd-main/SKILL.md +540 -0
- package/skills/core/pdd-main/_meta.json +1 -0
- package/skills/core/pdd-main/evals/default-evals.json +1 -0
- package/skills/core/pdd-main/evals/evals.json +215 -0
- package/skills/core/pdd-verify-feature/SKILL.md +474 -0
- package/skills/core/pdd-verify-feature/_meta.json +1 -0
- package/skills/core/pdd-verify-feature/evals/default-evals.json +1 -0
- package/skills/core/pdd-vm/evals/default-evals.json +1 -0
- package/skills/core/traffic-accident-assessor/LICENSE +29 -0
- package/skills/core/traffic-accident-assessor/SKILL.md +439 -0
- package/skills/core/traffic-accident-assessor/evals/evals.json +1 -0
- package/skills/core/traffic-accident-assessor/references/accident-types.md +369 -0
- package/skills/core/traffic-accident-assessor/references/liability-rules.md +287 -0
- package/skills/core/traffic-accident-assessor/references/traffic-laws.md +226 -0
- 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
- package/skills/core/traffic-accident-assessor/scripts/generate_official_statement.py +588 -0
- package/skills/core/traffic-accident-assessor/scripts/generate_report.py +495 -0
- package/skills/core/traffic-accident-assessor/scripts/generate_statement.py +528 -0
- package/skills/core/traffic-accident-assessor.zip +0 -0
- package/skills/entropy/expert-arch-enforcer/SKILL.md +292 -0
- package/skills/entropy/expert-arch-enforcer/_meta.json +1 -0
- package/skills/entropy/expert-arch-enforcer/evals/default-evals.json +1 -0
- package/skills/entropy/expert-auto-refactor/SKILL.md +327 -0
- package/skills/entropy/expert-auto-refactor/_meta.json +1 -0
- package/skills/entropy/expert-auto-refactor/evals/default-evals.json +1 -0
- package/skills/entropy/expert-code-quality/SKILL.md +468 -0
- package/skills/entropy/expert-code-quality/_meta.json +1 -0
- package/skills/entropy/expert-code-quality/evals/default-evals.json +1 -0
- package/skills/entropy/expert-code-quality/evals/evals.json +109 -0
- package/skills/entropy/expert-code-quality/references/code-smells.md +605 -0
- package/skills/entropy/expert-code-quality/references/design-patterns.md +1111 -0
- package/skills/entropy/expert-code-quality/references/refactoring-catalog.md +1281 -0
- package/skills/entropy/expert-code-quality/references/solid-principles.md +524 -0
- package/skills/entropy/expert-entropy-auditor/SKILL.md +276 -0
- package/skills/entropy/expert-entropy-auditor/_meta.json +1 -0
- package/skills/entropy/expert-entropy-auditor/evals/default-evals.json +1 -0
- package/skills/expert/expert-activiti/SKILL.md +497 -0
- package/skills/expert/expert-activiti/_meta.json +1 -0
- package/skills/expert/expert-mysql/SKILL.md +832 -0
- package/skills/expert/expert-mysql/_meta.json +1 -0
- package/skills/expert/expert-performance/SKILL.md +379 -0
- package/skills/expert/expert-performance/_meta.json +1 -0
- package/skills/expert/expert-performance/evals/default-evals.json +1 -0
- package/skills/expert/expert-ruoyi/SKILL.md +472 -0
- package/skills/expert/expert-ruoyi/_meta.json +1 -0
- package/skills/expert/expert-security/SKILL.md +1341 -0
- package/skills/expert/expert-security/_meta.json +1 -0
- package/skills/expert/expert-security/evals/default-evals.json +1 -0
- package/skills/expert/software-architect/SKILL.md +350 -0
- package/skills/expert/software-architect/_meta.json +1 -0
- package/skills/expert/software-engineer/SKILL.md +437 -0
- package/skills/expert/software-engineer/_meta.json +1 -0
- package/skills/expert/software-engineer/architecture.md +130 -0
- package/skills/expert/software-engineer/patterns.md +151 -0
- package/skills/expert/software-engineer/testing.md +135 -0
- package/skills/expert/system-architect/SKILL.md +628 -0
- package/skills/expert/system-architect/_meta.json +1 -0
- package/skills/expert/system-architect/assets/templates/ARCHITECTURE.md +25 -0
- package/skills/expert/system-architect/assets/templates/README.md +44 -0
- package/skills/expert/system-architect/references/js-ts-standards.md +18 -0
- package/skills/expert/system-architect/references/python-standards.md +19 -0
- package/skills/expert/system-architect/references/scaffolding.md +61 -0
- package/skills/expert/system-architect/references/security-checklist.md +21 -0
- package/skills/openspec/openspec-apply-change/SKILL.md +156 -0
- package/skills/openspec/openspec-apply-change/_meta.json +1 -0
- package/skills/openspec/openspec-archive-change/SKILL.md +114 -0
- package/skills/openspec/openspec-archive-change/_meta.json +1 -0
- package/skills/openspec/openspec-bulk-archive-change/SKILL.md +246 -0
- package/skills/openspec/openspec-bulk-archive-change/_meta.json +1 -0
- package/skills/openspec/openspec-continue-change/SKILL.md +118 -0
- package/skills/openspec/openspec-continue-change/_meta.json +1 -0
- package/skills/openspec/openspec-explore/SKILL.md +288 -0
- package/skills/openspec/openspec-explore/_meta.json +1 -0
- package/skills/openspec/openspec-ff-change/SKILL.md +101 -0
- package/skills/openspec/openspec-ff-change/_meta.json +1 -0
- package/skills/openspec/openspec-new-change/SKILL.md +74 -0
- package/skills/openspec/openspec-new-change/_meta.json +1 -0
- package/skills/openspec/openspec-onboard/SKILL.md +554 -0
- package/skills/openspec/openspec-onboard/_meta.json +1 -0
- package/skills/openspec/openspec-sync-specs/SKILL.md +138 -0
- package/skills/openspec/openspec-sync-specs/_meta.json +1 -0
- package/skills/openspec/openspec-verify-change/SKILL.md +168 -0
- package/skills/openspec/openspec-verify-change/_meta.json +1 -0
- package/skills/pr/pdd-multi-review/SKILL.md +534 -0
- package/skills/pr/pdd-multi-review/_meta.json +1 -0
- package/skills/pr/pdd-pr-batch/SKILL.md +303 -0
- package/skills/pr/pdd-pr-batch/_meta.json +1 -0
- package/skills/pr/pdd-pr-create/SKILL.md +344 -0
- package/skills/pr/pdd-pr-create/_meta.json +1 -0
- package/skills/pr/pdd-pr-merge/SKILL.md +286 -0
- package/skills/pr/pdd-pr-merge/_meta.json +1 -0
- package/skills/pr/pdd-pr-review/SKILL.md +217 -0
- package/skills/pr/pdd-pr-review/_meta.json +1 -0
- package/skills/pr/pdd-task-manager/SKILL.md +636 -0
- package/skills/pr/pdd-task-manager/_meta.json +1 -0
- package/skills/pr/pdd-template-engine/SKILL.md +306 -0
- package/skills/pr/pdd-template-engine/_meta.json +1 -0
- package/templates/behavior-shaping/iron-law-template.md +87 -0
- package/templates/behavior-shaping/rationalization-template.md +62 -0
- package/templates/behavior-shaping/red-flags-template.md +70 -0
- package/templates/bilingual-template.md +139 -0
- package/templates/config/default.yaml +47 -0
- package/templates/project/default/README.md +31 -0
- package/templates/project/frontend/README.md +46 -0
- package/templates/project/java/README.md +48 -0
|
@@ -0,0 +1,286 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: pdd-pr-merge
|
|
3
|
+
description: |
|
|
4
|
+
合并 PR 并触发归档流程。当用户需要合并已审查通过的 PR、完成功能点交付、完成交付时调用此Skill。支持 GitHub 模式和本地模式。即使用户只说"合并PR"、"完成交付"、"merge"、"合并",也应触发此Skill。
|
|
5
|
+
license: MIT
|
|
6
|
+
compatibility: 需要 OpenSpec Change ID 或 PR 编号
|
|
7
|
+
metadata:
|
|
8
|
+
author: "neuqik@hotmail.com"
|
|
9
|
+
version: "1.0"
|
|
10
|
+
parent: pdd-main
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
# pdd-pr-merge
|
|
14
|
+
|
|
15
|
+
**Description**: 合并 PR 并触发归档流程。支持 GitHub 模式和本地模式。
|
|
16
|
+
|
|
17
|
+
**Details**: 合并 PR 并触发归档
|
|
18
|
+
|
|
19
|
+
**Input**: OpenSpec Change ID 或 PR 编号
|
|
20
|
+
|
|
21
|
+
## 执行流程
|
|
22
|
+
|
|
23
|
+
### 1. 前置检查
|
|
24
|
+
|
|
25
|
+
```
|
|
26
|
+
1. 获取 PR 状态
|
|
27
|
+
├── GitHub 模式: 从 GitHub API 获取
|
|
28
|
+
└── 本地模式: 从 pr-record.md 获取
|
|
29
|
+
|
|
30
|
+
2. 确认 PR 状态为 Open
|
|
31
|
+
└── 已合并/已关闭的 PR 无法再次合并
|
|
32
|
+
|
|
33
|
+
3. 确认无 Blocking 问题
|
|
34
|
+
├── 有 Blocking → 提示用户修复
|
|
35
|
+
└── force=true → 跳过检查
|
|
36
|
+
|
|
37
|
+
4. 确认用户有合并权限
|
|
38
|
+
└── 本地模式: 跳过权限检查
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
### 2. 合并 PR
|
|
42
|
+
|
|
43
|
+
```
|
|
44
|
+
GitHub 模式:
|
|
45
|
+
├── 执行 GitHub Merge
|
|
46
|
+
│ ├── squash=true → Squash and merge
|
|
47
|
+
│ └── squash=false → Merge commit
|
|
48
|
+
├── 添加合并记录
|
|
49
|
+
└── 更新 PR 状态为 merged
|
|
50
|
+
|
|
51
|
+
本地模式:
|
|
52
|
+
├── 切换到 main 分支
|
|
53
|
+
├── 合并 Feature Branch
|
|
54
|
+
│ ├── squash=true → git merge --squash
|
|
55
|
+
│ └── squash=false → git merge
|
|
56
|
+
├── 提交合并
|
|
57
|
+
└── 更新 pr-record.md 状态
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
### 3. 清理分支
|
|
61
|
+
|
|
62
|
+
```
|
|
63
|
+
GitHub 模式:
|
|
64
|
+
├── 删除远程 Feature Branch
|
|
65
|
+
└── 删除本地 Feature Branch
|
|
66
|
+
|
|
67
|
+
本地模式:
|
|
68
|
+
└── 删除本地 Feature Branch
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
### 4. 触发归档
|
|
72
|
+
|
|
73
|
+
```
|
|
74
|
+
根据来源触发归档:
|
|
75
|
+
|
|
76
|
+
OpenSpec Change:
|
|
77
|
+
├── 执行 /openspec-archive-change {change-id}
|
|
78
|
+
└── 移动到 archive 目录
|
|
79
|
+
|
|
80
|
+
PDD 功能点:
|
|
81
|
+
├── 更新功能点状态为 completed
|
|
82
|
+
└── 更新功能点矩阵
|
|
83
|
+
|
|
84
|
+
批量 PR:
|
|
85
|
+
├── 逐个归档所有 Change
|
|
86
|
+
└── 更新批量 PR 记录
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
### 5. 推送到远程
|
|
90
|
+
|
|
91
|
+
```
|
|
92
|
+
GitHub 模式:
|
|
93
|
+
└── 自动推送(已通过 GitHub API)
|
|
94
|
+
|
|
95
|
+
本地模式:
|
|
96
|
+
├── 不自动推送(等网络通后人工 push)
|
|
97
|
+
├── 只提交到本地 Git
|
|
98
|
+
└── 提示用户手动推送命令
|
|
99
|
+
```
|
|
100
|
+
|
|
101
|
+
### 6. 生成合并报告
|
|
102
|
+
|
|
103
|
+
```
|
|
104
|
+
输出:
|
|
105
|
+
├── 合并摘要
|
|
106
|
+
├── 变更统计
|
|
107
|
+
├── 归档状态
|
|
108
|
+
└── 后续操作
|
|
109
|
+
```
|
|
110
|
+
|
|
111
|
+
## 输出格式
|
|
112
|
+
|
|
113
|
+
### GitHub 模式
|
|
114
|
+
|
|
115
|
+
```markdown
|
|
116
|
+
## PR 合并完成
|
|
117
|
+
|
|
118
|
+
**PR 编号**: #123
|
|
119
|
+
**Change ID**: c-001-xxx
|
|
120
|
+
**合并方式**: Squash
|
|
121
|
+
**合并时间**: 2026-03-21 15:30:00
|
|
122
|
+
|
|
123
|
+
### 合并内容
|
|
124
|
+
|
|
125
|
+
- 提交数: 3
|
|
126
|
+
- 文件变更: 5
|
|
127
|
+
- 新增行数: +150
|
|
128
|
+
- 删除行数: -20
|
|
129
|
+
|
|
130
|
+
### 归档状态
|
|
131
|
+
|
|
132
|
+
- OpenSpec Change: ✅ 已归档
|
|
133
|
+
- 归档路径: `openspec/changes/archive/2026-03-21-c-001-xxx/`
|
|
134
|
+
|
|
135
|
+
### 后续操作
|
|
136
|
+
|
|
137
|
+
- 查看归档内容: `openspec/changes/archive/2026-03-21-c-001-xxx/`
|
|
138
|
+
- 查看主规格: `openspec/specs/workflow-permission-control/spec.md`
|
|
139
|
+
```
|
|
140
|
+
|
|
141
|
+
### 本地模式
|
|
142
|
+
|
|
143
|
+
```markdown
|
|
144
|
+
## PR 合并完成(本地模式)
|
|
145
|
+
|
|
146
|
+
**Change ID**: c-001-xxx
|
|
147
|
+
**分支**: change/c-001-xxx → main
|
|
148
|
+
**合并方式**: Squash
|
|
149
|
+
**合并时间**: 2026-03-21 15:30:00
|
|
150
|
+
|
|
151
|
+
### 合并内容
|
|
152
|
+
|
|
153
|
+
- 文件变更: 5
|
|
154
|
+
- 新增行数: +150
|
|
155
|
+
- 删除行数: -20
|
|
156
|
+
|
|
157
|
+
### 归档状态
|
|
158
|
+
|
|
159
|
+
- OpenSpec Change: ✅ 已归档
|
|
160
|
+
- 归档路径: `openspec/changes/archive/2026-03-21-c-001-xxx/`
|
|
161
|
+
|
|
162
|
+
### ⚠️ 推送提醒
|
|
163
|
+
|
|
164
|
+
本地模式已合并到本地 main 分支,**未推送到远程**。
|
|
165
|
+
|
|
166
|
+
网络恢复后请手动推送:
|
|
167
|
+
```bash
|
|
168
|
+
git push origin main
|
|
169
|
+
```
|
|
170
|
+
|
|
171
|
+
### 后续操作
|
|
172
|
+
|
|
173
|
+
- 查看归档内容: `openspec/changes/archive/2026-03-21-c-001-xxx/`
|
|
174
|
+
```
|
|
175
|
+
|
|
176
|
+
## 参数
|
|
177
|
+
|
|
178
|
+
| 参数 | 类型 | 必需 | 默认值 | 描述 |
|
|
179
|
+
|------|------|------|--------|------|
|
|
180
|
+
| `change_id` | string | 否 | - | OpenSpec Change ID |
|
|
181
|
+
| `pr_number` | number | 否 | - | GitHub PR 编号 |
|
|
182
|
+
| `force` | boolean | 否 | false | 强制合并(忽略 Warning) |
|
|
183
|
+
| `squash` | boolean | 否 | true | 是否 Squash 合并 |
|
|
184
|
+
|
|
185
|
+
## 错误处理
|
|
186
|
+
|
|
187
|
+
### 有 Blocking 问题
|
|
188
|
+
|
|
189
|
+
```
|
|
190
|
+
❌ 存在 Blocking 问题,无法合并
|
|
191
|
+
|
|
192
|
+
**Blocking 问题**:
|
|
193
|
+
1. [B-001] 单元测试失败
|
|
194
|
+
2. [B-002] 测试覆盖率不足
|
|
195
|
+
|
|
196
|
+
请修复问题后重新审查: `/pdd-pr-create c-001-xxx --re-review`
|
|
197
|
+
|
|
198
|
+
如需强制合并: `/pdd-pr-merge c-001-xxx --force`
|
|
199
|
+
```
|
|
200
|
+
|
|
201
|
+
### PR 已合并
|
|
202
|
+
|
|
203
|
+
```
|
|
204
|
+
❌ PR 已合并
|
|
205
|
+
|
|
206
|
+
**PR 编号**: #123
|
|
207
|
+
**合并时间**: 2026-03-21 14:00:00
|
|
208
|
+
|
|
209
|
+
该 PR 已经合并,无需重复操作。
|
|
210
|
+
```
|
|
211
|
+
|
|
212
|
+
### 推送失败(本地模式)
|
|
213
|
+
|
|
214
|
+
```
|
|
215
|
+
⚠️ 推送到远程失败
|
|
216
|
+
|
|
217
|
+
**错误**: Network error
|
|
218
|
+
|
|
219
|
+
请手动推送:
|
|
220
|
+
```bash
|
|
221
|
+
git push origin main
|
|
222
|
+
```
|
|
223
|
+
|
|
224
|
+
推送后确认归档完成。
|
|
225
|
+
```
|
|
226
|
+
|
|
227
|
+
## 与其他技能的协作
|
|
228
|
+
|
|
229
|
+
```
|
|
230
|
+
pdd-pr-merge
|
|
231
|
+
│
|
|
232
|
+
├── 被调用方
|
|
233
|
+
│ ├── pdd-pr-review (确认后调用)
|
|
234
|
+
│ └── 用户直接调用
|
|
235
|
+
│
|
|
236
|
+
└── 调用方
|
|
237
|
+
└── openspec-archive-change (触发归档)
|
|
238
|
+
```
|
|
239
|
+
|
|
240
|
+
## 合并策略
|
|
241
|
+
|
|
242
|
+
### Squash Merge(默认)
|
|
243
|
+
|
|
244
|
+
```
|
|
245
|
+
优点:
|
|
246
|
+
├── 保持 main 分支历史整洁
|
|
247
|
+
├── 每个 Change 对应一个提交
|
|
248
|
+
└── 便于回滚整个 Change
|
|
249
|
+
|
|
250
|
+
缺点:
|
|
251
|
+
├── 丢失详细提交历史
|
|
252
|
+
└── 不适合多人协作的 Change
|
|
253
|
+
```
|
|
254
|
+
|
|
255
|
+
### Merge Commit
|
|
256
|
+
|
|
257
|
+
```
|
|
258
|
+
优点:
|
|
259
|
+
├── 保留完整提交历史
|
|
260
|
+
├── 便于追踪每个小改动
|
|
261
|
+
└── 适合多人协作
|
|
262
|
+
|
|
263
|
+
缺点:
|
|
264
|
+
├── main 分支历史复杂
|
|
265
|
+
└── 回滚需要多个操作
|
|
266
|
+
```
|
|
267
|
+
|
|
268
|
+
---
|
|
269
|
+
|
|
270
|
+
## PR管理规范
|
|
271
|
+
|
|
272
|
+
详见 [pdd-pr-create SKILL.md](./pdd-pr-create/SKILL.md#pr管理规范)
|
|
273
|
+
|
|
274
|
+
### 归档时机
|
|
275
|
+
|
|
276
|
+
- **归档**: 用户手动触发
|
|
277
|
+
- **命令**: `/openspec-archive-change [change-id]`
|
|
278
|
+
- **前提条件**:
|
|
279
|
+
- PR已合并
|
|
280
|
+
- 用户确认归档
|
|
281
|
+
|
|
282
|
+
---
|
|
283
|
+
|
|
284
|
+
## PDD实施规范引用
|
|
285
|
+
|
|
286
|
+
本Skill遵循PDD框架实施规范,详见 [pdd-framework-design.md 第9章](../docs/pdd-framework-design.md#9-pdd-实施规范)。
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"name": "pdd-pr-merge", "version": "1.0.0", "category": "pr", "description": "PR merge coordinator managing safe merge operations with conflict detection and CI gate verification. Call when merging pull requests to main branch.", "triggers": ["合并PR", "merge PR", "合并代码"]}
|
|
@@ -0,0 +1,217 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: pdd-pr-review
|
|
3
|
+
description: |
|
|
4
|
+
汇总审查结果,给出建议操作。当用户需要查看 PR 审查状态、获取合并建议、查看审查报告时调用此Skill。支持 GitHub 模式和本地模式。即使用户只说"查看PR状态"、"审查结果"或"PR怎么样",也应触发此Skill。
|
|
5
|
+
license: MIT
|
|
6
|
+
compatibility: 需要 OpenSpec Change ID 或 PR 编号
|
|
7
|
+
metadata:
|
|
8
|
+
author: "neuqik@hotmail.com"
|
|
9
|
+
version: "1.0"
|
|
10
|
+
parent: pdd-main
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
# pdd-pr-review
|
|
14
|
+
|
|
15
|
+
**Description**: 汇总审查结果,给出建议操作。支持 GitHub 模式和本地模式。
|
|
16
|
+
|
|
17
|
+
**Details**: 查看 PR 审查结果和建议
|
|
18
|
+
|
|
19
|
+
**Input**: OpenSpec Change ID 或 PR 编号
|
|
20
|
+
|
|
21
|
+
## 执行流程
|
|
22
|
+
|
|
23
|
+
### 1. 获取 PR 状态
|
|
24
|
+
|
|
25
|
+
```
|
|
26
|
+
GitHub 模式:
|
|
27
|
+
├── 从 GitHub API 获取 PR 信息
|
|
28
|
+
├── 获取 PR 状态、评论、检查结果
|
|
29
|
+
└── 获取关联的 Change ID
|
|
30
|
+
|
|
31
|
+
本地模式:
|
|
32
|
+
├── 读取 pr-record.md
|
|
33
|
+
├── 解析审查记录
|
|
34
|
+
└── 获取 Change ID
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
### 2. 读取审查报告
|
|
38
|
+
|
|
39
|
+
```
|
|
40
|
+
读取: openspec/changes/{change-id}/review-report.md
|
|
41
|
+
|
|
42
|
+
解析:
|
|
43
|
+
├── Blocking 问题数量
|
|
44
|
+
├── Warning 问题数量
|
|
45
|
+
├── Suggestion 数量
|
|
46
|
+
├── 测试覆盖率
|
|
47
|
+
└── 各检查项状态
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
### 3. 汇总审查结果
|
|
51
|
+
|
|
52
|
+
```
|
|
53
|
+
统计:
|
|
54
|
+
├── Blocking 问题: 0 → ✅ 可合并
|
|
55
|
+
├── Warning 问题: ≤3 → ⚠️ 建议修复后合并
|
|
56
|
+
└── Warning 问题: >3 → ❌ 建议修复
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
### 4. 生成建议
|
|
60
|
+
|
|
61
|
+
```
|
|
62
|
+
判断逻辑:
|
|
63
|
+
├── 无 Blocking + Warning ≤ 3 → 建议: 通过
|
|
64
|
+
├── 有 Blocking → 建议: 需修复
|
|
65
|
+
└── Warning > 3 → 建议: 建议修复
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
### 5. 输出结果
|
|
69
|
+
|
|
70
|
+
```
|
|
71
|
+
输出:
|
|
72
|
+
├── 审查结果汇总表
|
|
73
|
+
├── 问题列表(可选详细模式)
|
|
74
|
+
├── 建议操作
|
|
75
|
+
└── 等待用户决策
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
## 输出格式
|
|
79
|
+
|
|
80
|
+
### 简洁模式(默认)
|
|
81
|
+
|
|
82
|
+
```markdown
|
|
83
|
+
## PR 审查报告
|
|
84
|
+
|
|
85
|
+
**PR 编号**: #123
|
|
86
|
+
**Change ID**: c-001-xxx
|
|
87
|
+
**标题**: feat(workflow): 添加权限控制
|
|
88
|
+
|
|
89
|
+
### 审查结果汇总
|
|
90
|
+
|
|
91
|
+
| 级别 | 数量 | 状态 |
|
|
92
|
+
|------|------|------|
|
|
93
|
+
| 🔴 Blocking | 0 | ✅ |
|
|
94
|
+
| 🟡 Warning | 2 | ⚠️ |
|
|
95
|
+
| 💡 Suggestion | 3 | ℹ️ |
|
|
96
|
+
|
|
97
|
+
### 建议操作
|
|
98
|
+
|
|
99
|
+
**✅ 可以合并** - 无 Blocking 问题,Warning 数量在可接受范围内
|
|
100
|
+
|
|
101
|
+
### 操作选项
|
|
102
|
+
|
|
103
|
+
- 确认合并: `/pdd-pr-merge c-001-xxx`
|
|
104
|
+
- 修复后重新审查: 修复问题后执行 `/pdd-pr-create c-001-xxx --re-review`
|
|
105
|
+
- 查看详细问题: `/pdd-pr-review c-001-xxx --detail`
|
|
106
|
+
```
|
|
107
|
+
|
|
108
|
+
### 详细模式(--detail)
|
|
109
|
+
|
|
110
|
+
```markdown
|
|
111
|
+
## PR 审查报告(详细)
|
|
112
|
+
|
|
113
|
+
**PR 编号**: #123
|
|
114
|
+
**Change ID**: c-001-xxx
|
|
115
|
+
**标题**: feat(workflow): 添加权限控制
|
|
116
|
+
|
|
117
|
+
### 审查结果汇总
|
|
118
|
+
|
|
119
|
+
| 级别 | 数量 | 状态 |
|
|
120
|
+
|------|------|------|
|
|
121
|
+
| 🔴 Blocking | 0 | ✅ |
|
|
122
|
+
| 🟡 Warning | 2 | ⚠️ |
|
|
123
|
+
| 💡 Suggestion | 3 | ℹ️ |
|
|
124
|
+
|
|
125
|
+
### 🟡 Warning 问题
|
|
126
|
+
|
|
127
|
+
#### [W-001] 方法参数命名不一致
|
|
128
|
+
|
|
129
|
+
- **文件**: WorkflowController.java:45
|
|
130
|
+
- **描述**: 参数名 `userId` 与其他方法不一致
|
|
131
|
+
- **建议**: 统一使用 `user_id` 或 `userId`
|
|
132
|
+
|
|
133
|
+
#### [W-002] 缺少 JavaDoc 注释
|
|
134
|
+
|
|
135
|
+
- **文件**: WorkflowService.java:78
|
|
136
|
+
- **描述**: 公共方法缺少文档注释
|
|
137
|
+
- **建议**: 添加方法功能说明和参数说明
|
|
138
|
+
|
|
139
|
+
### 💡 Suggestion
|
|
140
|
+
|
|
141
|
+
#### [S-001] 可优化循环逻辑
|
|
142
|
+
|
|
143
|
+
- **文件**: WorkflowService.java:102
|
|
144
|
+
- **描述**: 可使用 Stream API 简化代码
|
|
145
|
+
- **建议**: `list.stream().filter(...).collect(...)`
|
|
146
|
+
|
|
147
|
+
### 测试覆盖详情
|
|
148
|
+
|
|
149
|
+
| 模块 | 覆盖率 | 状态 |
|
|
150
|
+
|------|--------|------|
|
|
151
|
+
| asset-admin | 85% | ✅ |
|
|
152
|
+
| asset-system | 72% | ✅ |
|
|
153
|
+
|
|
154
|
+
### 建议操作
|
|
155
|
+
|
|
156
|
+
**✅ 可以合并**
|
|
157
|
+
|
|
158
|
+
### 操作选项
|
|
159
|
+
|
|
160
|
+
- 确认合并: `/pdd-pr-merge c-001-xxx`
|
|
161
|
+
- 修复后重新审查: 修复问题后执行 `/pdd-pr-create c-001-xxx --re-review`
|
|
162
|
+
```
|
|
163
|
+
|
|
164
|
+
## 参数
|
|
165
|
+
|
|
166
|
+
| 参数 | 类型 | 必需 | 默认值 | 描述 |
|
|
167
|
+
|------|------|------|--------|------|
|
|
168
|
+
| `change_id` | string | 否 | - | OpenSpec Change ID |
|
|
169
|
+
| `pr_number` | number | 否 | - | GitHub PR 编号 |
|
|
170
|
+
| `detail` | boolean | 否 | false | 是否显示详细问题列表 |
|
|
171
|
+
|
|
172
|
+
## 错误处理
|
|
173
|
+
|
|
174
|
+
### PR 不存在
|
|
175
|
+
|
|
176
|
+
```
|
|
177
|
+
❌ PR 不存在
|
|
178
|
+
|
|
179
|
+
**Change ID**: c-001-xxx
|
|
180
|
+
|
|
181
|
+
请先创建 PR: `/pdd-pr-create c-001-xxx`
|
|
182
|
+
```
|
|
183
|
+
|
|
184
|
+
### 本地模式无记录
|
|
185
|
+
|
|
186
|
+
```
|
|
187
|
+
❌ 本地 PR 记录不存在
|
|
188
|
+
|
|
189
|
+
**Change ID**: c-001-xxx
|
|
190
|
+
|
|
191
|
+
请先创建 PR: `/pdd-pr-create c-001-xxx`
|
|
192
|
+
```
|
|
193
|
+
|
|
194
|
+
## 与其他技能的协作
|
|
195
|
+
|
|
196
|
+
```
|
|
197
|
+
pdd-pr-review
|
|
198
|
+
│
|
|
199
|
+
├── 被调用方
|
|
200
|
+
│ ├── pdd-pr-create (创建后查看)
|
|
201
|
+
│ └── 用户直接调用
|
|
202
|
+
│
|
|
203
|
+
└── 调用方
|
|
204
|
+
└── pdd-pr-merge (合并前查看)
|
|
205
|
+
```
|
|
206
|
+
|
|
207
|
+
---
|
|
208
|
+
|
|
209
|
+
## PR管理规范
|
|
210
|
+
|
|
211
|
+
详见 [pdd-pr-create SKILL.md](./pdd-pr-create/SKILL.md#pr管理规范)
|
|
212
|
+
|
|
213
|
+
---
|
|
214
|
+
|
|
215
|
+
## PDD实施规范引用
|
|
216
|
+
|
|
217
|
+
本Skill遵循PDD框架实施规范,详见 [pdd-framework-design.md 第9章](../docs/pdd-framework-design.md#9-pdd-实施规范)。
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"name": "pdd-pr-review", "version": "1.0.0", "category": "pr", "description": "PR review agent providing systematic code review on pull requests with quality gates and spec compliance checks. Invoke when reviewing PR code changes.", "triggers": ["审查PR", "review PR", "代码审查"]}
|