pdd-skills 3.1.0 → 3.1.2
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/bin/pdd.js +106 -0
- package/config/bug-patterns.yaml +135 -3
- package/docs/pdd-skills-v3-/346/225/264/344/275/223/345/210/206/346/236/220/346/212/245/345/221/212.md +367 -0
- package/docs/plans/2026-04-26-pdd-quality-improvement-design.md +574 -0
- package/lib/contract-discovery/index.js +472 -0
- package/lib/dependency-chain/api-scanner.js +140 -0
- package/lib/dependency-chain/controller-scanner.js +174 -0
- package/lib/dependency-chain/index.js +287 -0
- package/lib/dependency-chain/status-scanner.js +175 -0
- package/package.json +1 -1
- package/scripts/linter/gate-engine.js +5 -0
- package/skills/core/pdd-code-reviewer/SKILL.md +20 -0
- package/skills/core/pdd-implement-feature/SKILL.md +8 -0
- package/skills/core/pdd-main/SKILL.md +68 -3
- package/skills/expert/expert-bug-fixer/SKILL.md +350 -0
- package/skills/expert/expert-ruoyi/SKILL.md +128 -1
- package/skills/expert/expert-ruoyi-permission/SKILL.md +302 -0
- package/skills/expert/expert-ruoyi-permission/references/permission-guide.md +316 -0
- package/skills/expert/expert-springcloud/SKILL.md +134 -0
- package/skills/expert/expert-testcases/LICENSE +21 -0
- package/skills/expert/expert-testcases/SKILL.md +298 -0
- package/skills/expert/expert-testcases/_meta.json +1 -0
- package/skills/expert/expert-testcases/evals/coverage_targets.md +158 -0
- package/skills/expert/expert-testcases/evals/quality_rubric.md +128 -0
- package/skills/expert/expert-testcases/examples/zccz-1-equity-transfer/snapshot-input.md +91 -0
- package/skills/expert/expert-testcases/examples/zccz-1-equity-transfer/snapshot-output.md +165 -0
- package/skills/expert/expert-testcases/references/api-testing-patterns.md +80 -0
- package/skills/expert/expert-testcases/references/coverage-best-practices.md +66 -0
- package/skills/expert/expert-testcases/references/methodology.md +111 -0
- package/skills/expert/expert-testcases/references/ruoyi-testing-guide.md +101 -0
- package/skills/expert/expert-testcases/references/workflow-testing-patterns.md +95 -0
- package/skills/expert/expert-testcases/scripts/analyze_source.py +178 -0
- package/skills/expert/expert-testcases/scripts/build_matrix.py +192 -0
- package/skills/expert/expert-testcases/scripts/extract_api.py +197 -0
- package/skills/expert/expert-testcases/scripts/validate_output.py +225 -0
- package/skills/expert/expert-testcases/templates/code/python/api_helper.py.j2 +109 -0
- package/skills/expert/expert-testcases/templates/code/python/config.py.j2 +24 -0
- package/skills/expert/expert-testcases/templates/code/python/conftest.py.j2 +151 -0
- package/skills/expert/expert-testcases/templates/code/python/pytest.ini.j2 +19 -0
- package/skills/expert/expert-testcases/templates/code/python/requirements.txt.j2 +10 -0
- package/skills/expert/expert-testcases/templates/code/python/test_approval.py.j2 +80 -0
- package/skills/expert/expert-testcases/templates/code/python/test_boundary.py.j2 +152 -0
- package/skills/expert/expert-testcases/templates/code/python/test_crud.py.j2 +48 -0
- package/skills/expert/expert-testcases/templates/code/python/test_e2e.py.j2 +110 -0
- package/skills/expert/expert-testcases/templates/code/python/test_integration.py.j2 +90 -0
- package/skills/expert/expert-testcases/templates/code/python/test_performance.py.j2 +107 -0
- package/skills/expert/expert-testcases/templates/data/test-data.yaml.j2 +105 -0
- package/skills/expert/expert-testcases/templates/data/users.yaml.j2 +43 -0
- package/skills/expert/expert-testcases/templates/docs/api-testcase.md.j2 +72 -0
- package/skills/expert/expert-testcases/templates/docs/boundary-testcase.md.j2 +52 -0
- package/skills/expert/expert-testcases/templates/docs/e2e-testcase.md.j2 +56 -0
- package/skills/expert/expert-testcases/templates/docs/integration-testcase.md.j2 +56 -0
- package/skills/expert/expert-testcases/templates/docs/performance-testcase.md.j2 +61 -0
- package/skills/expert/expert-testcases/templates/docs/readme.md.j2 +110 -0
- package/skills/expert/expert-testcases/templates/docs/ui-testcase.md.j2 +59 -0
- package/skills/expert/expert-vue3/SKILL.md +184 -0
- package/templates/release-patch-template.md +76 -0
package/bin/pdd.js
CHANGED
|
@@ -371,4 +371,110 @@ vmCmd
|
|
|
371
371
|
|
|
372
372
|
program.addCommand(vmCmd);
|
|
373
373
|
|
|
374
|
+
// === deps 子命令组 (依赖链感知引擎) ===
|
|
375
|
+
const depsCmd = new Command()
|
|
376
|
+
.name('deps')
|
|
377
|
+
.description('依赖链感知引擎 - 分析前后端依赖关系 / Dependency Chain Engine');
|
|
378
|
+
|
|
379
|
+
depsCmd
|
|
380
|
+
.command('scan')
|
|
381
|
+
.description('扫描项目文件关系 / Scan project file relationships')
|
|
382
|
+
.option('-d, --dir <path>', '项目目录', '.')
|
|
383
|
+
.option('--backend-dir <path>', '后端源码目录', 'src/main/java')
|
|
384
|
+
.option('--frontend-api-dir <path>', '前端API目录', 'src/api')
|
|
385
|
+
.option('--json', 'JSON格式输出')
|
|
386
|
+
.action(async (options) => {
|
|
387
|
+
const { DependencyChainEngine } = await import('../lib/dependency-chain/index.js');
|
|
388
|
+
const engine = new DependencyChainEngine(options.dir, {
|
|
389
|
+
backendDir: options.backendDir,
|
|
390
|
+
frontendApiDir: options.frontendApiDir
|
|
391
|
+
});
|
|
392
|
+
const graph = await engine.scan();
|
|
393
|
+
if (options.json) {
|
|
394
|
+
console.log(engine.toJSON());
|
|
395
|
+
} else {
|
|
396
|
+
console.log(chalk.bold('\n🔗 依赖链扫描结果\n'));
|
|
397
|
+
console.log(` 后端端点: ${graph.controllers.length}`);
|
|
398
|
+
console.log(` 前端API调用: ${graph.frontendApis.length}`);
|
|
399
|
+
console.log(` 状态映射: ${graph.statusMaps.length}`);
|
|
400
|
+
console.log(` 依赖边: ${graph.edges.length}`);
|
|
401
|
+
console.log(`\n 孤立API: ${engine.findOrphanedApis().length} (可能的PATTERN-R008)`);
|
|
402
|
+
console.log(` 不完整状态映射: ${engine.findIncompleteStatusMaps().length} (可能的PATTERN-R011)`);
|
|
403
|
+
}
|
|
404
|
+
});
|
|
405
|
+
|
|
406
|
+
depsCmd
|
|
407
|
+
.command('impact <file>')
|
|
408
|
+
.description('分析修改某文件的影响范围 / Analyze impact of modifying a file')
|
|
409
|
+
.option('-d, --dir <path>', '项目目录', '.')
|
|
410
|
+
.action(async (file, options) => {
|
|
411
|
+
const { DependencyChainEngine } = await import('../lib/dependency-chain/index.js');
|
|
412
|
+
const engine = new DependencyChainEngine(options.dir);
|
|
413
|
+
await engine.scan();
|
|
414
|
+
const result = engine.analyzeImpact(file);
|
|
415
|
+
console.log(chalk.bold(`\n📊 修改 ${file} 的影响分析\n`));
|
|
416
|
+
if (result.impactedFiles.length === 0) {
|
|
417
|
+
console.log(chalk.yellow(' 未发现直接依赖关系'));
|
|
418
|
+
} else {
|
|
419
|
+
result.impactedFiles.forEach((item, i) => {
|
|
420
|
+
console.log(` ${i + 1}. ${chalk.cyan(item.file)}`);
|
|
421
|
+
item.reasons.forEach(r => console.log(` └── ${r}`));
|
|
422
|
+
});
|
|
423
|
+
}
|
|
424
|
+
console.log(`\n 总影响文件数: ${result.totalImpacted}`);
|
|
425
|
+
});
|
|
426
|
+
|
|
427
|
+
depsCmd
|
|
428
|
+
.command('orphans')
|
|
429
|
+
.description('查找孤立的前端API调用 / Find orphaned frontend API calls')
|
|
430
|
+
.option('-d, --dir <path>', '项目目录', '.')
|
|
431
|
+
.action(async (options) => {
|
|
432
|
+
const { DependencyChainEngine } = await import('../lib/dependency-chain/index.js');
|
|
433
|
+
const engine = new DependencyChainEngine(options.dir);
|
|
434
|
+
await engine.scan();
|
|
435
|
+
const orphans = engine.findOrphanedApis();
|
|
436
|
+
console.log(chalk.bold(`\n⚠️ 孤立API调用 (可能的PATTERN-R008)\n`));
|
|
437
|
+
if (orphans.length === 0) {
|
|
438
|
+
console.log(chalk.green(' 无孤立API,所有前端调用都有对应后端端点'));
|
|
439
|
+
} else {
|
|
440
|
+
orphans.forEach((api, i) => {
|
|
441
|
+
console.log(` ${i + 1}. ${chalk.red(api.url)} (${api.method})`);
|
|
442
|
+
console.log(` 文件: ${api.file}:${api.line}`);
|
|
443
|
+
});
|
|
444
|
+
}
|
|
445
|
+
});
|
|
446
|
+
|
|
447
|
+
program.addCommand(depsCmd);
|
|
448
|
+
|
|
449
|
+
// === contract 子命令 (契约自动发现引擎) ===
|
|
450
|
+
program
|
|
451
|
+
.command('contract')
|
|
452
|
+
.description('契约自动发现 - AST级前后端契约分析 / Contract Discovery - AST-level analysis')
|
|
453
|
+
.option('-d, --dir <path>', '项目目录', '.')
|
|
454
|
+
.option('--backend-dir <path>', '后端源码目录', 'src/main/java')
|
|
455
|
+
.option('--frontend-api-dir <path>', '前端API目录', 'src/api')
|
|
456
|
+
.option('-o, --output <path>', '输出报告路径')
|
|
457
|
+
.option('--json', 'JSON格式输出')
|
|
458
|
+
.action(async (options) => {
|
|
459
|
+
const { ContractDiscovery } = await import('../lib/contract-discovery/index.js');
|
|
460
|
+
const discovery = new ContractDiscovery(options.dir, {
|
|
461
|
+
backendDir: options.backendDir,
|
|
462
|
+
frontendApiDir: options.frontendApiDir
|
|
463
|
+
});
|
|
464
|
+
const result = await discovery.analyze();
|
|
465
|
+
|
|
466
|
+
if (options.json) {
|
|
467
|
+
console.log(JSON.stringify(result, null, 2));
|
|
468
|
+
} else {
|
|
469
|
+
const report = discovery.generateContractReport();
|
|
470
|
+
if (options.output) {
|
|
471
|
+
const fs = await import('fs');
|
|
472
|
+
fs.writeFileSync(options.output, report, 'utf-8');
|
|
473
|
+
console.log(chalk.green(`\n✅ 契约报告已生成: ${options.output}`));
|
|
474
|
+
} else {
|
|
475
|
+
console.log(report);
|
|
476
|
+
}
|
|
477
|
+
}
|
|
478
|
+
});
|
|
479
|
+
|
|
374
480
|
program.parse();
|
package/config/bug-patterns.yaml
CHANGED
|
@@ -14,9 +14,9 @@
|
|
|
14
14
|
# - 未来脚手架: PATTERN-JNNN (Java/Spring), PATTERN-GNNN (Go) 等
|
|
15
15
|
|
|
16
16
|
meta:
|
|
17
|
-
version: "1.
|
|
18
|
-
last_updated: "2026-04-
|
|
19
|
-
source: "资产评估处置管理系统首次项目实践复盘"
|
|
17
|
+
version: "1.1.0"
|
|
18
|
+
last_updated: "2026-04-28"
|
|
19
|
+
source: "资产评估处置管理系统首次项目实践复盘 + 共识Bug分析报告"
|
|
20
20
|
maintainers: ["pdd-skills-v3"]
|
|
21
21
|
|
|
22
22
|
categories:
|
|
@@ -291,3 +291,135 @@ categories:
|
|
|
291
291
|
public AjaxResult remove(@PathVariable Long[] ids) { ... }
|
|
292
292
|
related_rules: []
|
|
293
293
|
tags: ["ruoyi", "audit", "logging"]
|
|
294
|
+
|
|
295
|
+
- id: PATTERN-R013
|
|
296
|
+
name: @DataScope注解缺失
|
|
297
|
+
description: 导致跨部门数据泄露
|
|
298
|
+
trigger: 实现select*List() Mapper方法
|
|
299
|
+
prevention: 所有列表查询必须添加注解
|
|
300
|
+
severity: critical
|
|
301
|
+
detection: [3种检测方式]
|
|
302
|
+
fix_example: [❌错误 vs ✅正确 代码示例]
|
|
303
|
+
related_rules: ["dm-permission-matrix"]
|
|
304
|
+
tags: ["ruoyi", "data-scope", "security"]
|
|
305
|
+
|
|
306
|
+
- id: PATTERN-R008
|
|
307
|
+
name: "API路径拼接断层"
|
|
308
|
+
name_en: "API path concatenation mismatch"
|
|
309
|
+
description: "前端API路径遗漏了Controller类级别的@RequestMapping路径段,导致请求404"
|
|
310
|
+
trigger: "新增前端API调用或修改后端Controller路径"
|
|
311
|
+
prevention: "前端API路径 = Controller类@RequestMapping + 方法@XXXMapping,编写前必须完整拼接"
|
|
312
|
+
severity: critical
|
|
313
|
+
detection:
|
|
314
|
+
- "前端请求返回404 Not Found"
|
|
315
|
+
- "前端API路径与后端Controller完整路径不一致"
|
|
316
|
+
- "Controller类有多级@RequestMapping但前端只取了方法级路径"
|
|
317
|
+
fix_example: |
|
|
318
|
+
# ❌ 错误: 遗漏了类级别路径 /evaluation/approval
|
|
319
|
+
request({ url: '/review/manage/detail/' + id })
|
|
320
|
+
# ✅ 正确: 完整拼接类级别 + 方法级别
|
|
321
|
+
request({ url: '/evaluation/approval/review/manage/detail/' + id })
|
|
322
|
+
related_rules: []
|
|
323
|
+
tags: ["ruoyi", "api", "frontend-backend", "404"]
|
|
324
|
+
|
|
325
|
+
- id: PATTERN-R009
|
|
326
|
+
name: "附件入参类型错误"
|
|
327
|
+
name_en: "File upload parameter type mismatch"
|
|
328
|
+
description: "前端已通过通用上传接口获取文件URL,但后端业务接口仍使用MultipartFile接收,导致参数解析异常"
|
|
329
|
+
trigger: "实现包含文件附件的业务接口"
|
|
330
|
+
prevention: "若前端使用了通用上传(/common/upload),后端业务接口必须使用List<String>接收URL列表,不要用MultipartFile"
|
|
331
|
+
severity: critical
|
|
332
|
+
detection:
|
|
333
|
+
- "后端报Content-Type不支持或参数解析异常"
|
|
334
|
+
- "前端已调用/common/upload但业务接口仍声明MultipartFile参数"
|
|
335
|
+
- "前端传递的是文件URL字符串但后端期望的是文件流"
|
|
336
|
+
fix_example: |
|
|
337
|
+
// ❌ 错误: 前端已通过通用上传获取URL,不应再用MultipartFile
|
|
338
|
+
@PostMapping
|
|
339
|
+
public AjaxResult add(@RequestParam("files") MultipartFile[] files, EvalProject project) { ... }
|
|
340
|
+
// ✅ 正确: 接收URL列表
|
|
341
|
+
@PostMapping
|
|
342
|
+
public AjaxResult add(@Validated @RequestBody EvalProjectBo bo) {
|
|
343
|
+
// bo.getAttachments() 返回 List<String>,每项为文件URL
|
|
344
|
+
}
|
|
345
|
+
related_rules: []
|
|
346
|
+
tags: ["ruoyi", "file-upload", "parameter", "frontend-backend"]
|
|
347
|
+
|
|
348
|
+
- id: PATTERN-R010
|
|
349
|
+
name: "状态流转审批日志遗漏"
|
|
350
|
+
name_en: "Missing approval log during state transition"
|
|
351
|
+
description: "状态变更操作未在同一事务中记录审批日志,导致审批历史中缺少某个节点的记录"
|
|
352
|
+
trigger: "实现涉及status字段变更的业务方法"
|
|
353
|
+
prevention: "涉及状态流转的方法必须添加@Transactional,并在同方法内插入审批记录"
|
|
354
|
+
severity: critical
|
|
355
|
+
detection:
|
|
356
|
+
- "审批历史页面中缺少某个节点的审批记录"
|
|
357
|
+
- "状态变更方法中无审批日志插入语句"
|
|
358
|
+
- "状态变更和日志记录不在同一个@Transactional事务中"
|
|
359
|
+
fix_example: |
|
|
360
|
+
// ❌ 错误: 只改状态未记录审批日志
|
|
361
|
+
public void approve(Long id) {
|
|
362
|
+
project.setStatus("approved");
|
|
363
|
+
projectMapper.updateById(project);
|
|
364
|
+
}
|
|
365
|
+
// ✅ 正确: 同一事务中记录审批日志
|
|
366
|
+
@Transactional
|
|
367
|
+
public void approve(Long id) {
|
|
368
|
+
project.setStatus("approved");
|
|
369
|
+
projectMapper.updateById(project);
|
|
370
|
+
// 记录审批日志
|
|
371
|
+
EvalApprovalRecord record = new EvalApprovalRecord();
|
|
372
|
+
record.setProjectId(id);
|
|
373
|
+
record.setAction("approve");
|
|
374
|
+
record.setOperator(SecurityUtils.getUsername());
|
|
375
|
+
approvalRecordMapper.insert(record);
|
|
376
|
+
}
|
|
377
|
+
related_rules: []
|
|
378
|
+
tags: ["ruoyi", "approval", "transaction", "audit"]
|
|
379
|
+
|
|
380
|
+
- id: PATTERN-R011
|
|
381
|
+
name: "状态字典映射不完整"
|
|
382
|
+
name_en: "Incomplete status dictionary mapping"
|
|
383
|
+
description: "新增状态值后,未在所有包含状态映射的文件中同步添加,导致状态显示为英文原文或标签颜色异常"
|
|
384
|
+
trigger: "新增或修改业务状态值"
|
|
385
|
+
prevention: "新增状态值时,必须全局搜索所有getStatusLabel/getNodeLabel/getStatusTagType方法并同步更新"
|
|
386
|
+
severity: warning
|
|
387
|
+
detection:
|
|
388
|
+
- "状态值在页面上显示为英文原文(如'approved'而非'已通过')"
|
|
389
|
+
- "状态标签颜色异常(如显示为默认灰色或红色)"
|
|
390
|
+
- "部分页面状态翻译正确但另一些页面不正确"
|
|
391
|
+
fix_example: |
|
|
392
|
+
// ❌ 错误: 在A页面加了新状态映射但B页面没加
|
|
393
|
+
// fileA.vue
|
|
394
|
+
getStatusLabel(status) {
|
|
395
|
+
const map = { draft: '草稿', pending: '待审批', approved: '已通过', rejected: '已驳回' }
|
|
396
|
+
return map[status] || status
|
|
397
|
+
}
|
|
398
|
+
// fileB.vue - 缺少 rejected 状态
|
|
399
|
+
getStatusLabel(status) {
|
|
400
|
+
const map = { draft: '草稿', pending: '待审批', approved: '已通过' }
|
|
401
|
+
return map[status] || status // rejected 会显示英文原文
|
|
402
|
+
}
|
|
403
|
+
// ✅ 正确: 抽离到统一的 constants.js
|
|
404
|
+
// src/utils/constants.js
|
|
405
|
+
export const STATUS_MAP = { draft: '草稿', pending: '待审批', approved: '已通过', rejected: '已驳回' }
|
|
406
|
+
// 所有页面引用同一份映射
|
|
407
|
+
related_rules: ["dm-enum-convention"]
|
|
408
|
+
tags: ["ruoyi", "status", "dictionary", "frontend"]
|
|
409
|
+
|
|
410
|
+
- id: PATTERN-R012
|
|
411
|
+
name: "MyBatis多参数@Param缺失"
|
|
412
|
+
name_en: "Missing @Param annotation for MyBatis multi-parameter methods"
|
|
413
|
+
description: "Mapper方法有多个参数但未使用@Param注解,导致MyBatis参数绑定异常"
|
|
414
|
+
trigger: "Mapper接口方法有2个以上参数"
|
|
415
|
+
prevention: "Mapper方法有2个以上参数时,每个参数必须添加@Param注解"
|
|
416
|
+
severity: critical
|
|
417
|
+
detection:
|
|
418
|
+
- "运行时报MyBatis参数绑定异常(BindingException)"
|
|
419
|
+
- "Mapper方法有多个参数但无@Param注解"
|
|
420
|
+
- "XML中的#{param}无法匹配到方法参数"
|
|
421
|
+
fix_example: |
|
|
422
|
+
// ❌ 错误: 多参数未加@Param
|
|
423
|
+
List<EvalProject> selectByStatusAndDept(String status, Long deptId);
|
|
424
|
+
// ✅ 正确: 每个参数加@Param
|
|
425
|
+
List<EvalProject> selectByStatusAndDept(@Param("status") String status, @Param("deptId") Long deptId);
|
|
@@ -0,0 +1,367 @@
|
|
|
1
|
+
# PDD-Skills-v3 整体分析报告
|
|
2
|
+
|
|
3
|
+
> 分析日期:2026-04-28
|
|
4
|
+
> 分析范围:项目架构、技能体系、代码实现、实战效果
|
|
5
|
+
> 分析基础:项目源码全量审阅 + 《ZCPG-3 共识 Bug 分析报告》实战数据
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## 一、项目概览
|
|
10
|
+
|
|
11
|
+
### 1.1 项目定位
|
|
12
|
+
PDD-Skills-v3 是一个 **PRD 驱动的 AI 原生软件开发工作流框架**,核心理念是以产品需求文档 (PRD) 为驱动,通过编排一系列 AI 技能 (Skill),实现从需求分析到代码交付的全链路自动化。
|
|
13
|
+
|
|
14
|
+
### 1.2 技术栈
|
|
15
|
+
- **运行时**:Node.js >= 18 (ESM)
|
|
16
|
+
- **依赖**:极简(仅 commander + chalk + fs-extra + yaml)
|
|
17
|
+
- **协议**:REST API + MCP + gRPC + SSE
|
|
18
|
+
- **SDK**:JavaScript + Python
|
|
19
|
+
|
|
20
|
+
### 1.3 规模统计
|
|
21
|
+
|
|
22
|
+
| 维度 | 数量 | 说明 |
|
|
23
|
+
|------|------|------|
|
|
24
|
+
| 技能总数 | 41+ | 核心(12) + 专家(10) + 熵减(4) + OpenSpec(10) + PR(7) |
|
|
25
|
+
| 代码文件 (lib/) | 23 文件 + 10 子目录 | CLI、API、SDK、缓存、插件、质量引擎等 |
|
|
26
|
+
| 配置文件 | 9 个 | bug-patterns / prd-rules / linter configs |
|
|
27
|
+
| Bug 模式 | 14 个 | 7 通用 + 7 若依专用 |
|
|
28
|
+
| PRD 规则 | 30 条 | 6 大类 |
|
|
29
|
+
| 脚手架模板 | 2 个 | Python Fullstack + 若依 RuoYi |
|
|
30
|
+
|
|
31
|
+
---
|
|
32
|
+
|
|
33
|
+
## 二、架构分析
|
|
34
|
+
|
|
35
|
+
### 2.1 目录结构图
|
|
36
|
+
|
|
37
|
+
```
|
|
38
|
+
pdd-skills-v3/
|
|
39
|
+
├── bin/pdd.js # CLI 入口(13KB,所有命令注册)
|
|
40
|
+
├── index.js # SDK 导出入口
|
|
41
|
+
├── package.json # v3.1.2
|
|
42
|
+
│
|
|
43
|
+
├── skills/ # ⭐ 核心资产:AI 技能定义
|
|
44
|
+
│ ├── core/ # 12 个核心流程技能
|
|
45
|
+
│ │ ├── pdd-main/ # 主编排器
|
|
46
|
+
│ │ ├── pdd-ba/ # 业务分析
|
|
47
|
+
│ │ ├── pdd-extract-features/
|
|
48
|
+
│ │ ├── pdd-generate-spec/
|
|
49
|
+
│ │ ├── pdd-implement-feature/
|
|
50
|
+
│ │ ├── pdd-code-reviewer/
|
|
51
|
+
│ │ ├── pdd-verify-feature/
|
|
52
|
+
│ │ ├── pdd-doc-change/
|
|
53
|
+
│ │ ├── pdd-doc-gardener/
|
|
54
|
+
│ │ ├── pdd-entropy-reduction/
|
|
55
|
+
│ │ ├── pdd-vm/
|
|
56
|
+
│ │ └── official-doc-writer/
|
|
57
|
+
│ ├── expert/ # 10 个专家技能
|
|
58
|
+
│ │ ├── expert-ruoyi/
|
|
59
|
+
│ │ ├── expert-activiti/
|
|
60
|
+
│ │ ├── expert-mysql/
|
|
61
|
+
│ │ ├── expert-security/
|
|
62
|
+
│ │ ├── expert-performance/
|
|
63
|
+
│ │ ├── expert-testcases/
|
|
64
|
+
│ │ ├── expert-ruoyi-permission/
|
|
65
|
+
│ │ ├── software-architect/
|
|
66
|
+
│ │ ├── software-engineer/
|
|
67
|
+
│ │ └── system-architect/
|
|
68
|
+
│ ├── entropy/ # 4 个熵减技能
|
|
69
|
+
│ ├── openspec/ # 10 个 OpenSpec 变更管理技能
|
|
70
|
+
│ └── pr/ # 7 个 PR 管理技能
|
|
71
|
+
│
|
|
72
|
+
├── config/ # 配置中心
|
|
73
|
+
│ ├── bug-patterns.yaml # 14 个 Bug 模式库
|
|
74
|
+
│ ├── prd-rules.yaml # 30 条 PRD 规则
|
|
75
|
+
│ ├── checkstyle.xml # Java Linter
|
|
76
|
+
│ ├── eslint.config.js # JS Linter
|
|
77
|
+
│ ├── pmd.xml # Java 静态分析
|
|
78
|
+
│ ├── ruff.toml # Python Linter
|
|
79
|
+
│ ├── sqlfluff.cfg # SQL Linter
|
|
80
|
+
│ ├── bpmn-rules.yaml # BPMN 流程规则
|
|
81
|
+
│ └── gate-config.yaml # 质量门控配置
|
|
82
|
+
│
|
|
83
|
+
├── lib/ # 运行时实现
|
|
84
|
+
│ ├── api-server.js # HTTP 服务器
|
|
85
|
+
│ ├── api-routes.js # REST API 路由
|
|
86
|
+
│ ├── mcp-server.js # MCP 协议服务
|
|
87
|
+
│ ├── generate.js # 代码生成引擎
|
|
88
|
+
│ ├── verify.js # 验证引擎
|
|
89
|
+
│ ├── report.js # 报告生成器
|
|
90
|
+
│ ├── sdk-base.js / sdk-js.js # JS SDK
|
|
91
|
+
│ ├── cache/ # 三级缓存系统
|
|
92
|
+
│ ├── grpc/ # gRPC 兼容层
|
|
93
|
+
│ ├── iteration/ # 多轮迭代优化
|
|
94
|
+
│ ├── plugin/ # 插件系统
|
|
95
|
+
│ ├── quality/ # 五维质量评分
|
|
96
|
+
│ ├── token/ # Token 预算管理
|
|
97
|
+
│ ├── vm/ # Visual Manager 数据层
|
|
98
|
+
│ ├── openclaw/ # OpenClaw 集成
|
|
99
|
+
│ └── sdk-python/ # Python SDK
|
|
100
|
+
│
|
|
101
|
+
├── templates/ # 模板资源
|
|
102
|
+
├── scaffolds/ # 项目脚手架
|
|
103
|
+
│ ├── python-fullstack/ # Python+Vue3 全栈模板
|
|
104
|
+
│ └── ruoyi/ # 若依框架模板
|
|
105
|
+
├── hooks/ # 钩子系统
|
|
106
|
+
├── scripts/ # 脚本工具
|
|
107
|
+
├── testcases/ # 评估测试
|
|
108
|
+
├── ui/ # Web Dashboard + TUI
|
|
109
|
+
└── docs/ # 文档
|
|
110
|
+
```
|
|
111
|
+
|
|
112
|
+
### 2.2 架构层次
|
|
113
|
+
|
|
114
|
+
```
|
|
115
|
+
┌────────────────────────────────────────────────────────┐
|
|
116
|
+
│ 展示层 (Presentation) │
|
|
117
|
+
│ CLI (bin/pdd.js) │ Web Dashboard (ui/) │ TUI │
|
|
118
|
+
├────────────────────────────────────────────────────────┤
|
|
119
|
+
│ 接口层 (Interface) │
|
|
120
|
+
│ REST API │ MCP Protocol │ gRPC │ SSE │ SDK │
|
|
121
|
+
├────────────────────────────────────────────────────────┤
|
|
122
|
+
│ 编排层 (Orchestration) │
|
|
123
|
+
│ pdd-main(技能调度)│ Hook 系统 │ 状态管理 │ 断点续传 │
|
|
124
|
+
├────────────────────────────────────────────────────────┤
|
|
125
|
+
│ 技能层 (Skills) │
|
|
126
|
+
│ 核心技能(12) │ 专家技能(10) │ 熵减(4) │ OpenSpec(10) │
|
|
127
|
+
├────────────────────────────────────────────────────────┤
|
|
128
|
+
│ 基础设施层 (Infrastructure) │
|
|
129
|
+
│ 缓存系统 │ Token管理 │ 质量引擎 │ Linter │ 插件沙箱 │
|
|
130
|
+
├────────────────────────────────────────────────────────┤
|
|
131
|
+
│ 配置层 (Configuration) │
|
|
132
|
+
│ bug-patterns.yaml │ prd-rules.yaml │ gate-config.yaml │
|
|
133
|
+
└────────────────────────────────────────────────────────┘
|
|
134
|
+
```
|
|
135
|
+
|
|
136
|
+
---
|
|
137
|
+
|
|
138
|
+
## 三、能力评估
|
|
139
|
+
|
|
140
|
+
### 3.1 核心优势 ✅
|
|
141
|
+
|
|
142
|
+
| 优势 | 说明 | 评价 |
|
|
143
|
+
|------|------|------|
|
|
144
|
+
| **完整的全量开发流水线** | PRD → BA → 特征提取 → 规格生成 → 代码实现 → 审查 → 验证,6 阶段闭环 | ⭐⭐⭐⭐⭐ 业界领先 |
|
|
145
|
+
| **行为塑造三层防御** | Iron Law(铁律)+ Rationalization Table(合理化防御)+ Red Flags(红旗警告),有效约束 AI 行为 | ⭐⭐⭐⭐⭐ 独创 |
|
|
146
|
+
| **Bug 模式库机制** | 集中式 `bug-patterns.yaml`,14 个已知模式,代码审查时自动匹配 | ⭐⭐⭐⭐ 实用 |
|
|
147
|
+
| **中英双语全覆盖** | 所有核心 Skill 都有完整的中英文版本 | ⭐⭐⭐⭐ 覆盖国际化场景 |
|
|
148
|
+
| **极简依赖** | 仅 4 个 npm 依赖,零外部服务依赖 | ⭐⭐⭐⭐ 部署友好 |
|
|
149
|
+
| **多协议接入** | REST + MCP + gRPC + SSE,适配不同 AI Agent | ⭐⭐⭐⭐ 灵活 |
|
|
150
|
+
| **MVP 分层交付策略** | 骨架层 → 功能层 → 体验层,避免黑盒开发 | ⭐⭐⭐⭐ 务实 |
|
|
151
|
+
| **上下文注入机制** | `pdd-implement-feature` Step 1.5 在代码生成前扫描已有代码 | ⭐⭐⭐ 方向正确但不够深入 |
|
|
152
|
+
|
|
153
|
+
### 3.2 核心短板 ❌
|
|
154
|
+
|
|
155
|
+
| 短板 | 严重程度 | 影响 | 实战证据 |
|
|
156
|
+
|------|---------|------|---------|
|
|
157
|
+
| **缺少增量修改/Bug修复流程** | 🔴 致命 | 72% 的 Bug 发生在"修改已有代码"场景,但框架无任何专属 Skill | 共识报告:48 次修改中 38 次是迭代式修复 |
|
|
158
|
+
| **缺少变更传播感知** | 🔴 严重 | AI 修改后端时不会自动检查前端是否需要同步修改 | A1/A2/A5 类 Bug(前后端参数/路径/结构不一致) |
|
|
159
|
+
| **缺少打版/部署变更记录** | 🟡 中等 | 修复 Bug 后无法自动生成运维友好的变更清单 | 上线系统每次修复都需要手动整理变更文件 |
|
|
160
|
+
| **状态/字典管理无规范** | 🟡 中等 | AI 在每个 Vue 文件中重复硬编码状态映射 | A4/A7/A17/A21 类 Bug(状态映射不完整/横向不一致) |
|
|
161
|
+
| **前后端契约关系不可见** | 🟡 中等 | 上下文注入只扫描 models/schemas/routes,不扫描 Controller↔API 的映射关系 | A5 类 Bug(API 路径 404) |
|
|
162
|
+
| **空目录过多** | 🟢 轻微 | `system/`、`framework/`、`common/` 均为空目录,占位但未实现 | 项目结构存在"规划过度、实现不足"的情况 |
|
|
163
|
+
| **Skill 粒度不均匀** | 🟢 轻微 | `pdd-main` 613 行 vs `pdd-doc-gardener` 可能很短;部分专家 Skill 功能重叠 | expert-ruoyi 与 expert-ruoyi-permission 边界不清 |
|
|
164
|
+
|
|
165
|
+
### 3.3 设计意图 vs 实际使用的错配
|
|
166
|
+
|
|
167
|
+
```
|
|
168
|
+
设计意图(全量开发流水线) 实际使用场景分布
|
|
169
|
+
┌──────────────────────┐ ┌──────────────────────┐
|
|
170
|
+
│ PRD → BA → 规格 → │ │ │
|
|
171
|
+
│ 代码生成 → 审查 → 验证 │ ~28% │ 全量新功能开发 │ ~28%
|
|
172
|
+
│ │ │ │
|
|
173
|
+
├──────────────────────┤ ├──────────────────────┤
|
|
174
|
+
│ │ │ 增量修改/Bug修复 │
|
|
175
|
+
│ (无对应 Skill) │ ~0% │ "改一下这个接口" │ ~72%
|
|
176
|
+
│ │ │ "这里显示不对" │
|
|
177
|
+
└──────────────────────┘ └──────────────────────┘
|
|
178
|
+
|
|
179
|
+
⬆ 框架覆盖 ⬆ 实际需求
|
|
180
|
+
```
|
|
181
|
+
|
|
182
|
+
> **核心洞察**:pdd-skills-v3 在"从 0 到 1"的全量开发上做到了业界顶尖水平,但在"从 1 到 1.1"的增量维护上几乎是空白。这是最大的战略短板。
|
|
183
|
+
|
|
184
|
+
---
|
|
185
|
+
|
|
186
|
+
## 四、逐模块细评
|
|
187
|
+
|
|
188
|
+
### 4.1 核心技能 (skills/core/)
|
|
189
|
+
|
|
190
|
+
| 技能 | 成熟度 | 优点 | 不足 |
|
|
191
|
+
|------|--------|------|------|
|
|
192
|
+
| `pdd-main` | ⭐⭐⭐⭐⭐ | 613 行,编排逻辑清晰,Phase 明确,断点续传 | 仅支持全量开发流程,无增量修改入口 |
|
|
193
|
+
| `pdd-implement-feature` | ⭐⭐⭐⭐ | Step 1.5 上下文注入是亮点,微验证机制好 | 上下文注入不够深:缺少前后端契约扫描和状态映射扫描 |
|
|
194
|
+
| `pdd-code-reviewer` | ⭐⭐⭐⭐ | Bug 模式库匹配 + UX 一致性审查 + 明确的职责边界 | Bug 模式库缺少前后端契约类模式(R008-R013) |
|
|
195
|
+
| `pdd-doc-change` | ⭐⭐⭐ | 文档变更管理完善 | 仅管理规格文档变更,不管理代码变更和部署记录 |
|
|
196
|
+
| `pdd-ba` | ⭐⭐⭐⭐ | 5W1H/MECE 方法论体系化 | — |
|
|
197
|
+
| `pdd-generate-spec` | ⭐⭐⭐⭐ | 自动生成 spec.md + checklist.md | — |
|
|
198
|
+
| `pdd-verify-feature` | ⭐⭐⭐ | 验收驱动 | — |
|
|
199
|
+
|
|
200
|
+
### 4.2 专家技能 (skills/expert/)
|
|
201
|
+
|
|
202
|
+
| 技能 | 成熟度 | 优点 | 不足 |
|
|
203
|
+
|------|--------|------|------|
|
|
204
|
+
| `expert-ruoyi` | ⭐⭐⭐⭐ | 548 行,覆盖权限/菜单/数据权限/代码生成/常见问题 | 缺少前后端联调规范(API路径拼接/附件模式/响应解析/页面生命周期) |
|
|
205
|
+
| `software-engineer` | ⭐⭐⭐⭐ | 代码质量规范完善,分层架构示例好 | 定位是通用工程师,缺少"Bug 修复"的专属模式 |
|
|
206
|
+
| `software-architect` | ⭐⭐⭐ | 架构决策模板 | — |
|
|
207
|
+
| `expert-security` | ⭐⭐⭐⭐ | OWASP Top 10 完整覆盖 | — |
|
|
208
|
+
| `expert-performance` | ⭐⭐⭐ | HikariCP/Redis/GC 调优 | — |
|
|
209
|
+
|
|
210
|
+
### 4.3 基础设施 (lib/)
|
|
211
|
+
|
|
212
|
+
| 模块 | 成熟度 | 说明 |
|
|
213
|
+
|------|--------|------|
|
|
214
|
+
| `cache/` (三级缓存) | ⭐⭐⭐⭐ | L1/L2/L3 分层,LRU/LFU 策略,O(1) 操作 |
|
|
215
|
+
| `quality/` (五维评分) | ⭐⭐⭐⭐ | 可读性/可维护性/健壮性/性能/安全,31 条规则 |
|
|
216
|
+
| `token/` (预算管理) | ⭐⭐⭐ | 五阶段分配模型 |
|
|
217
|
+
| `plugin/` (插件系统) | ⭐⭐⭐ | 沙箱隔离,3 个示例 |
|
|
218
|
+
| `vm/` (可视化) | ⭐⭐⭐ | Dashboard + TUI 双形态 |
|
|
219
|
+
| `api-server.js` | ⭐⭐⭐⭐ | 零依赖 HTTP,Rate Limiting + CORS |
|
|
220
|
+
| `mcp-server.js` | ⭐⭐⭐⭐ | JSON-RPC 2.0 标准 |
|
|
221
|
+
|
|
222
|
+
### 4.4 配置中心 (config/)
|
|
223
|
+
|
|
224
|
+
| 配置 | 成熟度 | 说明 |
|
|
225
|
+
|------|--------|------|
|
|
226
|
+
| `bug-patterns.yaml` | ⭐⭐⭐ | 14 个模式,但缺少前后端契约类(R008-R013) |
|
|
227
|
+
| `prd-rules.yaml` | ⭐⭐⭐⭐ | 30 条规则,6 大类 |
|
|
228
|
+
| Linter 配置集 | ⭐⭐⭐⭐ | Java/JS/Python/SQL/BPMN 全覆盖 |
|
|
229
|
+
|
|
230
|
+
### 4.5 空壳模块
|
|
231
|
+
|
|
232
|
+
| 目录 | 状态 | 建议 |
|
|
233
|
+
|------|------|------|
|
|
234
|
+
| `system/` | 空 | 移除或明确用途 |
|
|
235
|
+
| `framework/` | 空 | 移除或明确用途 |
|
|
236
|
+
| `common/` | 空 | 移除或明确用途 |
|
|
237
|
+
|
|
238
|
+
---
|
|
239
|
+
|
|
240
|
+
## 五、修改建议
|
|
241
|
+
|
|
242
|
+
### 5.1 高优先级 (P0) — 填补战略空白
|
|
243
|
+
|
|
244
|
+
#### 建议 1:新增 `expert-bug-fixer` 技能
|
|
245
|
+
|
|
246
|
+
**路径**:`skills/expert/expert-bug-fixer/SKILL.md`
|
|
247
|
+
|
|
248
|
+
**理由**:框架最大的短板是缺少增量修改/Bug 修复流程。72% 的实际工作落在这个场景,但无任何 Skill 支持。
|
|
249
|
+
|
|
250
|
+
**核心设计**:
|
|
251
|
+
- 四步 SOP:定位复现 → 五维影响分析 → 精准修复 → 生成变更发布单
|
|
252
|
+
- 强制输出"影响范围声明",在修改代码前列出所有受影响文件并等待用户确认
|
|
253
|
+
- 修复完成后自动生成包含 DB/后端/前端/部署指引的标准变更发布单
|
|
254
|
+
- 与 `bug-patterns.yaml` 联动,修复时自检不引入已知 Bug 模式
|
|
255
|
+
|
|
256
|
+
#### 建议 2:扩充 `bug-patterns.yaml` (+6 模式)
|
|
257
|
+
|
|
258
|
+
新增 PATTERN-R008 至 R013:
|
|
259
|
+
- R008: API 路径拼接断层
|
|
260
|
+
- R009: 附件入参类型错误
|
|
261
|
+
- R010: 状态流转审批日志遗漏
|
|
262
|
+
- R011: 状态字典映射不完整
|
|
263
|
+
- R012: MyBatis 多参数 @Param 缺失
|
|
264
|
+
- R013: Service 接口方法未同步声明
|
|
265
|
+
|
|
266
|
+
### 5.2 中优先级 (P1) — 补强现有能力
|
|
267
|
+
|
|
268
|
+
#### 建议 3:增强 `expert-ruoyi`
|
|
269
|
+
|
|
270
|
+
在现有 SKILL.md 中追加三节规范:
|
|
271
|
+
- §6.3 前后端契约规范(API 路径拼接规则 + 附件处理标准模式 + 响应解析约定)
|
|
272
|
+
- §6.4 页面生命周期规范(列表→详情→返回的标准流程 + 状态字典统一管理)
|
|
273
|
+
- §6.5 状态流转规范(审批日志强制记录 + 状态判断优先查表而非推断)
|
|
274
|
+
|
|
275
|
+
#### 建议 4:增强 `pdd-implement-feature` 上下文注入
|
|
276
|
+
|
|
277
|
+
在 Step 1.5 中追加两项扫描:
|
|
278
|
+
- 扫描前后端契约关系(Controller @RequestMapping → 前端 API 调用 URL 的映射表)
|
|
279
|
+
- 扫描状态映射关系(所有包含 getStatusLabel/statusMap 等方法的文件列表)
|
|
280
|
+
|
|
281
|
+
#### 建议 5:新增变更发布单模板
|
|
282
|
+
|
|
283
|
+
**路径**:`templates/release-patch-template.md`
|
|
284
|
+
|
|
285
|
+
标准化的部署交付物模板,包含 DB 脚本、后端变更清单、前端变更清单、部署指引和回滚方案。
|
|
286
|
+
|
|
287
|
+
### 5.3 低优先级 (P2) — 治理技术债
|
|
288
|
+
|
|
289
|
+
#### 建议 6:清理空壳目录
|
|
290
|
+
|
|
291
|
+
删除或赋予实际用途:`system/`、`framework/`、`common/`
|
|
292
|
+
|
|
293
|
+
#### 建议 7:合并重叠的专家技能
|
|
294
|
+
|
|
295
|
+
评估 `expert-ruoyi` 和 `expert-ruoyi-permission` 的边界,考虑合并。
|
|
296
|
+
|
|
297
|
+
#### 建议 8:增强 `pdd-code-reviewer`
|
|
298
|
+
|
|
299
|
+
Bug 模式库匹配章节中追加 R008-R013 的检查项,与 `bug-patterns.yaml` 保持同步。
|
|
300
|
+
|
|
301
|
+
---
|
|
302
|
+
|
|
303
|
+
## 六、功能修改路线图
|
|
304
|
+
|
|
305
|
+
```
|
|
306
|
+
2026 Q2 (4-6月) 2026 Q3 (7-9月) 2026 Q4 (10-12月)
|
|
307
|
+
┌─────────────────────┐ ┌─────────────────────┐ ┌─────────────────────┐
|
|
308
|
+
│ Phase A: 补短板 │ │ Phase B: 深化增强 │ │ Phase C: 生态扩展 │
|
|
309
|
+
│ │ │ │ │ │
|
|
310
|
+
│ ① 新增 │ │ ④ 依赖链感知引擎 │ │ ⑦ 项目契约自动发现 │
|
|
311
|
+
│ expert-bug-fixer │───────────▶│ (轻量级索引) │───────────▶│ (AST解析) │
|
|
312
|
+
│ │ │ │ │ │
|
|
313
|
+
│ ② 扩充 │ │ ⑤ pdd-main 分叉 │ │ ⑧ 多框架专家扩展 │
|
|
314
|
+
│ bug-patterns.yaml │ │ 开发模式/维护模式 │ │ SpringCloud │
|
|
315
|
+
│ (+6 模式) │ │ 的入口区分 │ │ 微服务 │
|
|
316
|
+
│ │ │ │ │ │
|
|
317
|
+
│ ③ 增强 │ │ ⑥ 自动化回归验证 │ │ ⑨ AI Agent 自治 │
|
|
318
|
+
│ expert-ruoyi │ │ 修复后自动触发 │ │ 循环 │
|
|
319
|
+
│ pdd-implement │ │ 相关测试 │ │ (修复→验证→发布) │
|
|
320
|
+
│ pdd-code-reviewer │ │ │ │ │
|
|
321
|
+
│ │ │ │ │ │
|
|
322
|
+
│ 预期效果: │ │ 预期效果: │ │ 预期效果: │
|
|
323
|
+
│ Bug减少 30-40% │ │ Bug减少 55-65% │ │ Bug减少 70-80% │
|
|
324
|
+
│ 迭代轮次降低 30% │ │ 迭代轮次降低 50% │ │ 迭代轮次降低 60% │
|
|
325
|
+
└─────────────────────┘ └─────────────────────┘ └─────────────────────┘
|
|
326
|
+
```
|
|
327
|
+
|
|
328
|
+
### Phase A: 补短板(2026 Q2,工作量 ~1-2 天)
|
|
329
|
+
|
|
330
|
+
| 序号 | 任务 | 优先级 | 工作量 | 预期收益 |
|
|
331
|
+
|------|------|--------|--------|---------|
|
|
332
|
+
| ① | 新增 `expert-bug-fixer` SKILL.md | P0 | 2-3 小时 | 增量修改场景从无到有 |
|
|
333
|
+
| ② | 扩充 `bug-patterns.yaml` (+6 模式) | P0 | 30 分钟 | 自动拦截 6 类已知 Bug |
|
|
334
|
+
| ③-a | 增强 `expert-ruoyi` (+3 节规范) | P1 | 1 小时 | 减少前后端联调 Bug |
|
|
335
|
+
| ③-b | 增强 `pdd-implement-feature` 上下文注入 | P1 | 30 分钟 | 提升代码生成精准度 |
|
|
336
|
+
| ③-c | 增强 `pdd-code-reviewer` 审查维度 | P2 | 15 分钟 | 审查覆盖面扩大 |
|
|
337
|
+
| ③-d | 新增 `templates/release-patch-template.md` | P1 | 15 分钟 | 标准化打版交付物 |
|
|
338
|
+
|
|
339
|
+
### Phase B: 深化增强(2026 Q3,工作量 ~1 周)
|
|
340
|
+
|
|
341
|
+
| 序号 | 任务 | 说明 |
|
|
342
|
+
|------|------|------|
|
|
343
|
+
| ④ | 依赖链感知引擎 | 在 lib/ 中实现轻量级的文件关系索引器,扫描 Controller↔API、状态映射等关系 |
|
|
344
|
+
| ⑤ | pdd-main 模式分叉 | 在 pdd-main 中区分"开发模式"(全量流水线)和"维护模式"(增量修复),维护模式直接调用 expert-bug-fixer |
|
|
345
|
+
| ⑥ | 自动化回归验证 | Bug 修复完成后自动触发 `pdd-verify-feature` 对受影响的功能点进行回归验证 |
|
|
346
|
+
|
|
347
|
+
### Phase C: 生态扩展(2026 Q4,工作量 ~2 周)
|
|
348
|
+
|
|
349
|
+
| 序号 | 任务 | 说明 |
|
|
350
|
+
|------|------|------|
|
|
351
|
+
| ⑦ | 项目契约自动发现 | 基于 AST 解析自动构建"后端接口 → 前端调用"的契约图,替代手工维护 |
|
|
352
|
+
| ⑧ | 多框架专家扩展 | 增加 expert-springcloud、expert-nextjs 等,扩大适用范围 |
|
|
353
|
+
| ⑨ | AI Agent 自治循环 | 实现"发现 Bug → 分析根因 → 生成补丁 → 运行测试 → 生成发布单"的全自动闭环 |
|
|
354
|
+
|
|
355
|
+
---
|
|
356
|
+
|
|
357
|
+
## 七、总结
|
|
358
|
+
|
|
359
|
+
### 一句话评价
|
|
360
|
+
|
|
361
|
+
> **PDD-Skills-v3 是一个在"全量开发"方向上做到极致的 AI 开发框架,但在"增量维护"这个占据日常工作 72% 的场景上几乎是空白——补上这个短板,它将从优秀变为卓越。**
|
|
362
|
+
|
|
363
|
+
### 关键行动项
|
|
364
|
+
|
|
365
|
+
1. **立即做**:新增 `expert-bug-fixer` + 扩充 `bug-patterns.yaml`(工作量 ~3 小时,收益最高)
|
|
366
|
+
2. **本月做**:增强 `expert-ruoyi` / `pdd-implement-feature` / `pdd-code-reviewer`(工作量 ~2 小时)
|
|
367
|
+
3. **下季度做**:依赖链感知引擎 + pdd-main 模式分叉(工作量 ~1 周)
|