prd-workflow-cli 1.3.4 → 1.4.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.
@@ -0,0 +1,614 @@
1
+ {
2
+ "$schema": "./schemas/rules.schema.json",
3
+ "version": "1.0.0",
4
+ "lastUpdated": "2024-12-29",
5
+ "categories": {
6
+ "G": {
7
+ "name": "全局红线",
8
+ "nameEn": "Global Critical"
9
+ },
10
+ "D": {
11
+ "name": "文档状态",
12
+ "nameEn": "Document State"
13
+ },
14
+ "F": {
15
+ "name": "流程顺序",
16
+ "nameEn": "Flow Order"
17
+ },
18
+ "S": {
19
+ "name": "需求范围",
20
+ "nameEn": "Scope Control"
21
+ },
22
+ "V": {
23
+ "name": "A2UI可视化",
24
+ "nameEn": "Visualization"
25
+ },
26
+ "I": {
27
+ "name": "分段保存",
28
+ "nameEn": "Incremental Save"
29
+ },
30
+ "U": {
31
+ "name": "用户角度",
32
+ "nameEn": "User Perspective"
33
+ },
34
+ "C": {
35
+ "name": "完整性检查",
36
+ "nameEn": "Completeness Check"
37
+ },
38
+ "W": {
39
+ "name": "工作启动",
40
+ "nameEn": "Session Start"
41
+ }
42
+ },
43
+ "rules": [
44
+ {
45
+ "id": "G001",
46
+ "category": "G",
47
+ "severity": "CRITICAL",
48
+ "scope": [
49
+ "global"
50
+ ],
51
+ "description": "所有回复必须使用简体中文",
52
+ "validatorType": "ai-self-check",
53
+ "validator": null,
54
+ "examples": {
55
+ "correct": "使用中文回复用户的问题",
56
+ "wrong": "Reply in English without user request"
57
+ }
58
+ },
59
+ {
60
+ "id": "G002",
61
+ "category": "G",
62
+ "severity": "CRITICAL",
63
+ "scope": [
64
+ "global"
65
+ ],
66
+ "description": "禁止未经对话就填充文档,必须通过提问引导 PM 填写",
67
+ "validatorType": "ai-self-check",
68
+ "validator": null,
69
+ "examples": {
70
+ "correct": "AI: 请告诉我这个功能的目标用户是谁?",
71
+ "wrong": "AI: 我帮你填好了所有内容..."
72
+ }
73
+ },
74
+ {
75
+ "id": "G003",
76
+ "category": "G",
77
+ "severity": "CRITICAL",
78
+ "scope": [
79
+ "global"
80
+ ],
81
+ "description": "禁止替 PM 做决策(优先级/范围/目标由 PM 决定)",
82
+ "validatorType": "ai-self-check",
83
+ "validator": null,
84
+ "examples": {
85
+ "correct": "AI: 这个需求的优先级您定为高还是中?",
86
+ "wrong": "AI: 这个需求优先级应该定为高"
87
+ }
88
+ },
89
+ {
90
+ "id": "G004",
91
+ "category": "G",
92
+ "severity": "CRITICAL",
93
+ "scope": [
94
+ "global"
95
+ ],
96
+ "description": "禁止'快速完成'跳过流程,每个阶段都要充分对话和审视",
97
+ "validatorType": "ai-self-check",
98
+ "validator": null,
99
+ "examples": {
100
+ "correct": "逐步引导 PM 完成每个阶段",
101
+ "wrong": "AI: 让我快速帮您跳过这些步骤..."
102
+ }
103
+ },
104
+ {
105
+ "id": "D001",
106
+ "category": "D",
107
+ "severity": "CRITICAL",
108
+ "scope": [
109
+ "plan",
110
+ "version"
111
+ ],
112
+ "description": "禁止修改已冻结的 B3 文档",
113
+ "validatorType": "program",
114
+ "validator": "frozen-check",
115
+ "checkLogic": "检查 .prd-config.json 的 planning.frozen 状态"
116
+ },
117
+ {
118
+ "id": "D002",
119
+ "category": "D",
120
+ "severity": "CRITICAL",
121
+ "scope": [
122
+ "version"
123
+ ],
124
+ "description": "禁止修改已冻结的 C3 文档",
125
+ "validatorType": "program",
126
+ "validator": "frozen-check",
127
+ "checkLogic": "检查 .prd-config.json 的 version.frozen 状态"
128
+ },
129
+ {
130
+ "id": "D003",
131
+ "category": "D",
132
+ "severity": "CRITICAL",
133
+ "scope": [
134
+ "plan"
135
+ ],
136
+ "description": "B3 冻结后,禁止修改 B1、B2",
137
+ "validatorType": "program",
138
+ "validator": "frozen-check",
139
+ "checkLogic": "若 planning.frozen=true,拦截对 B1/B2 的写入"
140
+ },
141
+ {
142
+ "id": "D004",
143
+ "category": "D",
144
+ "severity": "CRITICAL",
145
+ "scope": [
146
+ "version"
147
+ ],
148
+ "description": "C3 冻结后,禁止修改 C0、C1",
149
+ "validatorType": "program",
150
+ "validator": "frozen-check",
151
+ "checkLogic": "若 version.frozen=true,拦截对 C0/C1 的写入"
152
+ },
153
+ {
154
+ "id": "D005",
155
+ "category": "D",
156
+ "severity": "HIGH",
157
+ "scope": [
158
+ "global"
159
+ ],
160
+ "description": "文档状态变更后必须同步更新 .prd-config.json",
161
+ "validatorType": "program",
162
+ "validator": "config-sync-check",
163
+ "checkLogic": "对比文件修改时间与 config 更新时间"
164
+ },
165
+ {
166
+ "id": "F001",
167
+ "category": "F",
168
+ "severity": "CRITICAL",
169
+ "scope": [
170
+ "plan"
171
+ ],
172
+ "description": "禁止跳过 R1 审视(B2 后必须 R1 才能冻结 B3)",
173
+ "validatorType": "program",
174
+ "validator": "flow-order-check",
175
+ "checkLogic": "冻结 B3 前检查是否存在 R1 审视报告文件"
176
+ },
177
+ {
178
+ "id": "F002",
179
+ "category": "F",
180
+ "severity": "CRITICAL",
181
+ "scope": [
182
+ "version"
183
+ ],
184
+ "description": "禁止跳过 R2 审视(C1 后必须 R2 才能冻结 C3)",
185
+ "validatorType": "program",
186
+ "validator": "flow-order-check",
187
+ "checkLogic": "冻结 C3 前检查是否存在 R2 审视报告文件"
188
+ },
189
+ {
190
+ "id": "F003",
191
+ "category": "F",
192
+ "severity": "HIGH",
193
+ "scope": [
194
+ "iteration"
195
+ ],
196
+ "description": "禁止创建迭代后直接创建 B1,必须先做 R1 启动检查",
197
+ "validatorType": "program",
198
+ "validator": "flow-order-check",
199
+ "checkLogic": "创建 B1 前检查是否存在 R1 启动检查记录"
200
+ },
201
+ {
202
+ "id": "F004",
203
+ "category": "F",
204
+ "severity": "CRITICAL",
205
+ "scope": [
206
+ "r1"
207
+ ],
208
+ "description": "R1 禁止直接输出'通过',必须有 5 维度分析 + 评估矩阵",
209
+ "validatorType": "hybrid",
210
+ "validator": "r1-content-check",
211
+ "checkLogic": "检查 R1 文件是否包含 5 维度章节标题"
212
+ },
213
+ {
214
+ "id": "F005",
215
+ "category": "F",
216
+ "severity": "HIGH",
217
+ "scope": [
218
+ "version"
219
+ ],
220
+ "description": "每个批次必须走完整 C0→C1→R2→C3 流程,禁止跳过",
221
+ "validatorType": "hybrid",
222
+ "validator": "batch-flow-check",
223
+ "checkLogic": "检查版本目录结构完整性"
224
+ },
225
+ {
226
+ "id": "S001",
227
+ "category": "S",
228
+ "severity": "CRITICAL",
229
+ "scope": [
230
+ "c1"
231
+ ],
232
+ "description": "禁止在 C1 阶段加入新需求,新需求只能暂存到 A2",
233
+ "validatorType": "hybrid",
234
+ "validator": "scope-check",
235
+ "checkLogic": "对比 C1 需求列表与 B3 范围,发现新增时告警"
236
+ },
237
+ {
238
+ "id": "S002",
239
+ "category": "S",
240
+ "severity": "CRITICAL",
241
+ "scope": [
242
+ "c0"
243
+ ],
244
+ "description": "C0 只能包含 B2 规划的首批需求(如有多批次)",
245
+ "validatorType": "program",
246
+ "validator": "scope-check",
247
+ "checkLogic": "解析 B2 的批次划分,对比 C0 范围"
248
+ },
249
+ {
250
+ "id": "S003",
251
+ "category": "S",
252
+ "severity": "HIGH",
253
+ "scope": [
254
+ "c1"
255
+ ],
256
+ "description": "C1 需求必须在 B3 范围内,禁止超出",
257
+ "validatorType": "program",
258
+ "validator": "scope-check",
259
+ "checkLogic": "对比 C1 需求 ID 与 B3 需求列表"
260
+ },
261
+ {
262
+ "id": "S004",
263
+ "category": "S",
264
+ "severity": "HIGH",
265
+ "scope": [
266
+ "global"
267
+ ],
268
+ "description": "新需求正确流程:暂存 A2 → 新迭代 → B1 处理",
269
+ "validatorType": "ai-self-check",
270
+ "validator": null
271
+ },
272
+ {
273
+ "id": "V001",
274
+ "category": "V",
275
+ "severity": "HIGH",
276
+ "scope": [
277
+ "p0",
278
+ "b1",
279
+ "b2"
280
+ ],
281
+ "description": "PM 描述系统结构时,必须生成 A2UI 架构图",
282
+ "validatorType": "ai-self-check",
283
+ "validator": null,
284
+ "triggers": [
285
+ "系统模块",
286
+ "功能结构",
287
+ "前端后端",
288
+ "技术架构",
289
+ "干系人"
290
+ ]
291
+ },
292
+ {
293
+ "id": "V002",
294
+ "category": "V",
295
+ "severity": "HIGH",
296
+ "scope": [
297
+ "c1"
298
+ ],
299
+ "description": "PM 描述界面/表单时,必须生成 A2UI 界面原型",
300
+ "validatorType": "ai-self-check",
301
+ "validator": null,
302
+ "triggers": [
303
+ "页面",
304
+ "表单",
305
+ "按钮",
306
+ "界面",
307
+ "用户看到"
308
+ ]
309
+ },
310
+ {
311
+ "id": "V003",
312
+ "category": "V",
313
+ "severity": "CRITICAL",
314
+ "scope": [
315
+ "a2ui"
316
+ ],
317
+ "description": "A2UI JSON 必须写入 .a2ui/current.json,禁止只打印到对话",
318
+ "validatorType": "program",
319
+ "validator": "a2ui-file-check",
320
+ "checkLogic": "检查 .a2ui/current.json 是否存在且最近被修改"
321
+ },
322
+ {
323
+ "id": "V004",
324
+ "category": "V",
325
+ "severity": "CRITICAL",
326
+ "scope": [
327
+ "c1"
328
+ ],
329
+ "description": "PM 确认原型后,必须保存 .json + .html 两个文件",
330
+ "validatorType": "program",
331
+ "validator": "a2ui-pair-check",
332
+ "checkLogic": "检查 C1_UI原型 目录下文件是否成对存在"
333
+ },
334
+ {
335
+ "id": "V005",
336
+ "category": "V",
337
+ "severity": "HIGH",
338
+ "scope": [
339
+ "c1"
340
+ ],
341
+ "description": "原型命名规范:REQ-XXX-名称.json/html",
342
+ "validatorType": "program",
343
+ "validator": "a2ui-naming-check",
344
+ "checkLogic": "正则 /^REQ-\\d{3}-[\\u4e00-\\u9fa5a-zA-Z0-9_-]+\\.(json|html)$/"
345
+ },
346
+ {
347
+ "id": "V006",
348
+ "category": "V",
349
+ "severity": "HIGH",
350
+ "scope": [
351
+ "c1"
352
+ ],
353
+ "description": "保存原型后必须更新 index.md 索引",
354
+ "validatorType": "program",
355
+ "validator": "a2ui-index-check",
356
+ "checkLogic": "检查 index.md 是否包含新文件的链接"
357
+ },
358
+ {
359
+ "id": "V007",
360
+ "category": "V",
361
+ "severity": "MEDIUM",
362
+ "scope": [
363
+ "a2ui"
364
+ ],
365
+ "description": "只能使用 A2UI 定义的组件,禁止编造新组件类型",
366
+ "validatorType": "program",
367
+ "validator": "a2ui-schema-check",
368
+ "checkLogic": "使用 JSON Schema 校验组件类型"
369
+ },
370
+ {
371
+ "id": "I001",
372
+ "category": "I",
373
+ "severity": "CRITICAL",
374
+ "scope": [
375
+ "global"
376
+ ],
377
+ "description": "确认一个需求,立即写入文件(铁律)",
378
+ "validatorType": "ai-self-check",
379
+ "validator": null
380
+ },
381
+ {
382
+ "id": "I002",
383
+ "category": "I",
384
+ "severity": "CRITICAL",
385
+ "scope": [
386
+ "global"
387
+ ],
388
+ "description": "禁止聊完全部需求后一次性写入",
389
+ "validatorType": "ai-self-check",
390
+ "validator": null
391
+ },
392
+ {
393
+ "id": "I003",
394
+ "category": "I",
395
+ "severity": "HIGH",
396
+ "scope": [
397
+ "global"
398
+ ],
399
+ "description": "完成章节/确认 3 个需求项/10 轮对话后必须保存",
400
+ "validatorType": "ai-self-check",
401
+ "validator": null,
402
+ "savePoints": [
403
+ "完成章节",
404
+ "确认 3 个需求",
405
+ "10 轮对话",
406
+ "PM说'确定了'",
407
+ "切换主题"
408
+ ]
409
+ },
410
+ {
411
+ "id": "I004",
412
+ "category": "I",
413
+ "severity": "HIGH",
414
+ "scope": [
415
+ "global"
416
+ ],
417
+ "description": "切换讨论主题前必须保存当前内容",
418
+ "validatorType": "ai-self-check",
419
+ "validator": null
420
+ },
421
+ {
422
+ "id": "U001",
423
+ "category": "U",
424
+ "severity": "HIGH",
425
+ "scope": [
426
+ "b2"
427
+ ],
428
+ "description": "B2 讨论需求时,必须从用户角度提出至少 3 个质疑",
429
+ "validatorType": "ai-self-check",
430
+ "validator": null,
431
+ "questionTemplates": [
432
+ "用户真的需要这个功能吗?",
433
+ "用户会怎么使用?",
434
+ "用户会满意吗?"
435
+ ]
436
+ },
437
+ {
438
+ "id": "U002",
439
+ "category": "U",
440
+ "severity": "HIGH",
441
+ "scope": [
442
+ "c1"
443
+ ],
444
+ "description": "C1 记录需求前,必须审计是否站在用户角度",
445
+ "validatorType": "ai-self-check",
446
+ "validator": null,
447
+ "checkItems": [
448
+ "需求背景反映真实用户痛点",
449
+ "使用用户语言而非技术语言",
450
+ "验收标准考虑用户体验"
451
+ ]
452
+ },
453
+ {
454
+ "id": "U003",
455
+ "category": "U",
456
+ "severity": "HIGH",
457
+ "scope": [
458
+ "b2",
459
+ "c1"
460
+ ],
461
+ "description": "禁止直接记录 PM 说的内容而不质疑",
462
+ "validatorType": "ai-self-check",
463
+ "validator": null
464
+ },
465
+ {
466
+ "id": "C001",
467
+ "category": "C",
468
+ "severity": "CRITICAL",
469
+ "scope": [
470
+ "b2",
471
+ "c1"
472
+ ],
473
+ "description": "PM 说'需求完成'时,必须从 5 维度检查功能闭环",
474
+ "validatorType": "ai-self-check",
475
+ "validator": null,
476
+ "dimensions": [
477
+ "用户",
478
+ "技术",
479
+ "管理",
480
+ "产品逻辑",
481
+ "体验"
482
+ ]
483
+ },
484
+ {
485
+ "id": "C002",
486
+ "category": "C",
487
+ "severity": "HIGH",
488
+ "scope": [
489
+ "b2",
490
+ "c1"
491
+ ],
492
+ "description": "5 维度具体内容:用户/技术/管理/产品逻辑/体验",
493
+ "validatorType": "ai-self-check",
494
+ "validator": null,
495
+ "dimensionDetails": {
496
+ "用户": "用户如何触发、看到什么、操作后发生什么",
497
+ "技术": "数据来源、存储、接口",
498
+ "管理": "谁配置、谁管理、后台需求",
499
+ "产品逻辑": "业务规则、状态流转、异常处理",
500
+ "体验": "等待反馈、成功/失败提示"
501
+ }
502
+ },
503
+ {
504
+ "id": "C003",
505
+ "category": "C",
506
+ "severity": "HIGH",
507
+ "scope": [
508
+ "global"
509
+ ],
510
+ "description": "禁止'只记录 PM 说的,不追问遗漏的'",
511
+ "validatorType": "ai-self-check",
512
+ "validator": null
513
+ },
514
+ {
515
+ "id": "W001",
516
+ "category": "W",
517
+ "severity": "HIGH",
518
+ "scope": [
519
+ "global"
520
+ ],
521
+ "description": "开始工作前,必须查看 .prd-config.json 了解项目状态",
522
+ "validatorType": "ai-self-check",
523
+ "validator": null
524
+ },
525
+ {
526
+ "id": "W002",
527
+ "category": "W",
528
+ "severity": "HIGH",
529
+ "scope": [
530
+ "global"
531
+ ],
532
+ "description": "开始工作前,必须确认哪些文档已冻结",
533
+ "validatorType": "program",
534
+ "validator": "frozen-status-output",
535
+ "checkLogic": "CLI 启动时自动输出冻结状态"
536
+ }
537
+ ],
538
+ "validators": {
539
+ "frozen-check": {
540
+ "description": "检查文档冻结状态",
541
+ "implementedIn": "validators/frozen-check.js",
542
+ "status": "planned"
543
+ },
544
+ "config-sync-check": {
545
+ "description": "检查 config 同步状态",
546
+ "implementedIn": "validators/config-sync-check.js",
547
+ "status": "planned"
548
+ },
549
+ "flow-order-check": {
550
+ "description": "检查流程顺序",
551
+ "implementedIn": "validators/flow-order-check.js",
552
+ "status": "planned"
553
+ },
554
+ "scope-check": {
555
+ "description": "检查需求范围",
556
+ "implementedIn": "validators/scope-check.js",
557
+ "status": "planned"
558
+ },
559
+ "a2ui-pair-check": {
560
+ "description": "检查 A2UI 文件是否成对",
561
+ "implementedIn": "validators/a2ui-pair-check.js",
562
+ "status": "planned"
563
+ },
564
+ "a2ui-naming-check": {
565
+ "description": "检查 A2UI 文件命名",
566
+ "implementedIn": "validators/a2ui-naming-check.js",
567
+ "status": "planned"
568
+ },
569
+ "a2ui-index-check": {
570
+ "description": "检查 A2UI 索引更新",
571
+ "implementedIn": "validators/a2ui-index-check.js",
572
+ "status": "planned"
573
+ },
574
+ "a2ui-schema-check": {
575
+ "description": "A2UI JSON Schema 校验",
576
+ "implementedIn": "validators/a2ui-schema-check.js",
577
+ "status": "planned"
578
+ },
579
+ "a2ui-file-check": {
580
+ "description": "检查 A2UI 文件是否写入",
581
+ "implementedIn": "validators/a2ui-file-check.js",
582
+ "status": "planned"
583
+ },
584
+ "r1-content-check": {
585
+ "description": "检查 R1 内容完整性",
586
+ "implementedIn": "validators/r1-content-check.js",
587
+ "status": "planned"
588
+ },
589
+ "batch-flow-check": {
590
+ "description": "检查批次流程完整性",
591
+ "implementedIn": "validators/batch-flow-check.js",
592
+ "status": "planned"
593
+ },
594
+ "frozen-status-output": {
595
+ "description": "输出冻结状态",
596
+ "implementedIn": "validators/frozen-status-output.js",
597
+ "status": "planned"
598
+ }
599
+ },
600
+ "scopeMapping": {
601
+ "global": "所有阶段",
602
+ "p0": "P0 项目信息",
603
+ "b1": "B1 规划草案",
604
+ "b2": "B2 规划拆解",
605
+ "plan": "B 类文档(规划)",
606
+ "c0": "C0 版本范围",
607
+ "c1": "C1 需求清单",
608
+ "version": "C 类文档(版本)",
609
+ "r1": "R1 规划审视",
610
+ "r2": "R2 版本审视",
611
+ "iteration": "迭代管理",
612
+ "a2ui": "A2UI 可视化"
613
+ }
614
+ }