@ppdocs/mcp 3.2.29 → 3.2.31
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/dist/cli.js +50 -28
- package/package.json +1 -1
- package/templates/cursorrules.md +47 -0
- package/templates/kiro-rules/ppdocs.md +47 -0
package/dist/cli.js
CHANGED
|
@@ -486,37 +486,53 @@ function installClaudeTemplates(cwd) {
|
|
|
486
486
|
fs.writeFileSync(settingsPath, JSON.stringify(mergedSettings, null, 2));
|
|
487
487
|
console.log(`✅ Configured .claude/settings.json hooks (${process.platform})`);
|
|
488
488
|
console.log(`✅ Added ${mcpPermissions.length} MCP method permissions`);
|
|
489
|
-
// 4.
|
|
489
|
+
// 4. 生成 CLAUDE.md 全局规则 (Claude Code 官方标准)
|
|
490
|
+
installGlobalRules(cwd, 'CLAUDE.md');
|
|
491
|
+
// 5. 安装工作流到 .agents/workflows/ (全平台通用)
|
|
490
492
|
installWorkflows(cwd);
|
|
491
493
|
}
|
|
492
494
|
/** 安装 Codex 模板 (生成 AGENTS.md + 工作流) */
|
|
493
495
|
function installCodexTemplates(cwd) {
|
|
494
|
-
|
|
496
|
+
installGlobalRules(cwd, 'AGENTS.md');
|
|
495
497
|
installWorkflows(cwd);
|
|
496
498
|
}
|
|
497
|
-
/**
|
|
498
|
-
|
|
499
|
-
|
|
500
|
-
|
|
501
|
-
|
|
502
|
-
|
|
503
|
-
|
|
499
|
+
/**
|
|
500
|
+
* 生成全局规则文件 (各平台统一内容, 不同文件名)
|
|
501
|
+
* Claude Code → CLAUDE.md | Codex → AGENTS.md | Gemini → GEMINI.md
|
|
502
|
+
*/
|
|
503
|
+
function installGlobalRules(cwd, filename) {
|
|
504
|
+
const srcRules = path.join(TEMPLATES_DIR, 'cursorrules.md');
|
|
505
|
+
const destFile = path.join(cwd, filename);
|
|
506
|
+
if (fs.existsSync(srcRules)) {
|
|
507
|
+
// 总是覆盖写入最新版全局规则
|
|
508
|
+
fs.copyFileSync(srcRules, destFile);
|
|
509
|
+
console.log(`✅ Installed ${filename} (global rules)`);
|
|
504
510
|
}
|
|
505
|
-
else
|
|
506
|
-
console.log(`⚠️
|
|
511
|
+
else {
|
|
512
|
+
console.log(`⚠️ Global rules template not found`);
|
|
507
513
|
}
|
|
508
514
|
}
|
|
509
515
|
/** 安装 Cursor 模板 */
|
|
510
516
|
function installCursorTemplates(cwd, apiUrl, user) {
|
|
511
517
|
createMcpConfigAt(path.join(cwd, '.cursor', 'mcp.json'), apiUrl, { user });
|
|
512
|
-
// 2. 生成 .cursorrules
|
|
518
|
+
// 2. 生成 .cursor/rules/ppdocs.md (官方标准, .cursorrules 已废弃)
|
|
519
|
+
const cursorRulesDir = path.join(cwd, '.cursor', 'rules');
|
|
520
|
+
if (!fs.existsSync(cursorRulesDir)) {
|
|
521
|
+
fs.mkdirSync(cursorRulesDir, { recursive: true });
|
|
522
|
+
}
|
|
513
523
|
const srcRules = path.join(TEMPLATES_DIR, 'cursorrules.md');
|
|
514
|
-
const destRules = path.join(
|
|
515
|
-
if (fs.existsSync(srcRules)
|
|
524
|
+
const destRules = path.join(cursorRulesDir, 'ppdocs.md');
|
|
525
|
+
if (fs.existsSync(srcRules)) {
|
|
516
526
|
fs.copyFileSync(srcRules, destRules);
|
|
517
|
-
console.log(`✅
|
|
527
|
+
console.log(`✅ Installed .cursor/rules/ppdocs.md`);
|
|
518
528
|
}
|
|
519
|
-
// 3.
|
|
529
|
+
// 3. 清理废弃的 .cursorrules 文件
|
|
530
|
+
const legacyCursorrules = path.join(cwd, '.cursorrules');
|
|
531
|
+
if (fs.existsSync(legacyCursorrules)) {
|
|
532
|
+
fs.unlinkSync(legacyCursorrules);
|
|
533
|
+
console.log(`🗑️ Removed deprecated .cursorrules`);
|
|
534
|
+
}
|
|
535
|
+
// 4. 安装工作流到 .agents/workflows/
|
|
520
536
|
installWorkflows(cwd);
|
|
521
537
|
}
|
|
522
538
|
// ========================================================================
|
|
@@ -590,8 +606,8 @@ function installWorkflows(cwd, extraDirs = []) {
|
|
|
590
606
|
function installAntigravityTemplates(cwd, apiUrl, user) {
|
|
591
607
|
// Antigravity 由 gemini CLI 注册 env,文件配置不注入避免冲突
|
|
592
608
|
createMcpConfigAt(path.join(cwd, '.gemini', 'settings.json'), apiUrl, { noEnv: true, user });
|
|
593
|
-
// 2. 生成
|
|
594
|
-
|
|
609
|
+
// 2. 生成 GEMINI.md 全局规则 (Gemini CLI 官方标准)
|
|
610
|
+
installGlobalRules(cwd, 'GEMINI.md');
|
|
595
611
|
// 3. Antigravity 全局 workflows 目录 (额外安装目标)
|
|
596
612
|
const homeDir = process.env.USERPROFILE || process.env.HOME || '';
|
|
597
613
|
const globalWorkflowDir = path.join(homeDir, '.gemini', 'antigravity', 'global_workflows');
|
|
@@ -604,18 +620,24 @@ function installAntigravityTemplates(cwd, apiUrl, user) {
|
|
|
604
620
|
/** 安装 Kiro 模板 */
|
|
605
621
|
function installKiroTemplates(cwd, apiUrl, user) {
|
|
606
622
|
createMcpConfigAt(path.join(cwd, '.kiro', 'settings', 'mcp.json'), apiUrl, { user });
|
|
607
|
-
// 2. 生成 Kiro
|
|
608
|
-
const
|
|
609
|
-
if (!fs.existsSync(
|
|
610
|
-
fs.mkdirSync(
|
|
623
|
+
// 2. 生成 Kiro Steering 文件 (官方标准: .kiro/steering/ 而非 rules/)
|
|
624
|
+
const steeringDir = path.join(cwd, '.kiro', 'steering');
|
|
625
|
+
if (!fs.existsSync(steeringDir)) {
|
|
626
|
+
fs.mkdirSync(steeringDir, { recursive: true });
|
|
611
627
|
}
|
|
612
628
|
const srcRules = path.join(TEMPLATES_DIR, 'kiro-rules', 'ppdocs.md');
|
|
613
|
-
const
|
|
614
|
-
if (fs.existsSync(srcRules)
|
|
615
|
-
fs.copyFileSync(srcRules,
|
|
616
|
-
console.log(`✅
|
|
617
|
-
}
|
|
618
|
-
// 3.
|
|
629
|
+
const destSteering = path.join(steeringDir, 'ppdocs.md');
|
|
630
|
+
if (fs.existsSync(srcRules)) {
|
|
631
|
+
fs.copyFileSync(srcRules, destSteering);
|
|
632
|
+
console.log(`✅ Installed .kiro/steering/ppdocs.md`);
|
|
633
|
+
}
|
|
634
|
+
// 3. 清理废弃的 .kiro/rules/ 旧路径
|
|
635
|
+
const legacyRules = path.join(cwd, '.kiro', 'rules', 'ppdocs.md');
|
|
636
|
+
if (fs.existsSync(legacyRules)) {
|
|
637
|
+
fs.unlinkSync(legacyRules);
|
|
638
|
+
console.log(`🗑️ Removed deprecated .kiro/rules/ppdocs.md`);
|
|
639
|
+
}
|
|
640
|
+
// 4. 安装工作流到 .agents/workflows/
|
|
619
641
|
installWorkflows(cwd);
|
|
620
642
|
}
|
|
621
643
|
/** 检测当前工作区包含的 IDE */
|
package/package.json
CHANGED
package/templates/cursorrules.md
CHANGED
|
@@ -26,6 +26,53 @@ kg_discuss(action:"list") → 检查待回复讨论
|
|
|
26
26
|
|
|
27
27
|
---
|
|
28
28
|
|
|
29
|
+
## 方案制定 (第一性原理)
|
|
30
|
+
|
|
31
|
+
**任何需求,先设计逻辑流程,再写代码。禁止跳过设计直接编码。**
|
|
32
|
+
|
|
33
|
+
### Phase A: 第一性原理分析
|
|
34
|
+
```
|
|
35
|
+
1. 拆解需求本质: 这个功能的核心目的是什么?
|
|
36
|
+
2. 识别输入/输出: 进什么 → 出什么?
|
|
37
|
+
3. 查图谱现状: kg_flowchart(get) → 哪些模块已存在可复用?
|
|
38
|
+
4. 最小化依赖: 能否用最少的模块、最短的路径实现?
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
### Phase B: 逻辑流程设计
|
|
42
|
+
```
|
|
43
|
+
用 ASCII 流程图画出完整逻辑:
|
|
44
|
+
|
|
45
|
+
+----------+ +----------+ +----------+
|
|
46
|
+
| 输入 | --> | 处理逻辑 | --> | 输出 |
|
|
47
|
+
+----------+ +----+-----+ +----------+
|
|
48
|
+
|
|
|
49
|
+
+----v-----+
|
|
50
|
+
| 异常分支 |
|
|
51
|
+
+----------+
|
|
52
|
+
|
|
53
|
+
向用户展示流程图,确认逻辑正确后再继续。
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
### Phase C: 细化逻辑节点
|
|
57
|
+
```
|
|
58
|
+
对流程图中每个节点,依次向下细化:
|
|
59
|
+
1. 定义接口: 输入参数 + 返回值
|
|
60
|
+
2. 选择实现: 复用现有 / 新建模块
|
|
61
|
+
3. 标注依赖: 上游数据来源 + 下游消费者
|
|
62
|
+
4. 异常处理: 每个节点的失败路径
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
### Phase D: 按流程执行 + 审查
|
|
66
|
+
```
|
|
67
|
+
按 Phase B 确认的逻辑流程,逐节点实现:
|
|
68
|
+
使用 Step 3 的逐步执行循环 (执行→验证→记录→回写)
|
|
69
|
+
|
|
70
|
+
全部完成后:
|
|
71
|
+
对照逻辑流程图进行审查,确保实现与设计一致
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
---
|
|
75
|
+
|
|
29
76
|
## 标准执行流程
|
|
30
77
|
|
|
31
78
|
### Step 1: 知识锚定 (理解需求时)
|
|
@@ -26,6 +26,53 @@ kg_discuss(action:"list") → 检查待回复讨论
|
|
|
26
26
|
|
|
27
27
|
---
|
|
28
28
|
|
|
29
|
+
## 方案制定 (第一性原理)
|
|
30
|
+
|
|
31
|
+
**任何需求,先设计逻辑流程,再写代码。禁止跳过设计直接编码。**
|
|
32
|
+
|
|
33
|
+
### Phase A: 第一性原理分析
|
|
34
|
+
```
|
|
35
|
+
1. 拆解需求本质: 这个功能的核心目的是什么?
|
|
36
|
+
2. 识别输入/输出: 进什么 → 出什么?
|
|
37
|
+
3. 查图谱现状: kg_flowchart(get) → 哪些模块已存在可复用?
|
|
38
|
+
4. 最小化依赖: 能否用最少的模块、最短的路径实现?
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
### Phase B: 逻辑流程设计
|
|
42
|
+
```
|
|
43
|
+
用 ASCII 流程图画出完整逻辑:
|
|
44
|
+
|
|
45
|
+
+----------+ +----------+ +----------+
|
|
46
|
+
| 输入 | --> | 处理逻辑 | --> | 输出 |
|
|
47
|
+
+----------+ +----+-----+ +----------+
|
|
48
|
+
|
|
|
49
|
+
+----v-----+
|
|
50
|
+
| 异常分支 |
|
|
51
|
+
+----------+
|
|
52
|
+
|
|
53
|
+
向用户展示流程图,确认逻辑正确后再继续。
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
### Phase C: 细化逻辑节点
|
|
57
|
+
```
|
|
58
|
+
对流程图中每个节点,依次向下细化:
|
|
59
|
+
1. 定义接口: 输入参数 + 返回值
|
|
60
|
+
2. 选择实现: 复用现有 / 新建模块
|
|
61
|
+
3. 标注依赖: 上游数据来源 + 下游消费者
|
|
62
|
+
4. 异常处理: 每个节点的失败路径
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
### Phase D: 按流程执行 + 审查
|
|
66
|
+
```
|
|
67
|
+
按 Phase B 确认的逻辑流程,逐节点实现:
|
|
68
|
+
使用 Step 3 的逐步执行循环 (执行→验证→记录→回写)
|
|
69
|
+
|
|
70
|
+
全部完成后:
|
|
71
|
+
对照逻辑流程图进行审查,确保实现与设计一致
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
---
|
|
75
|
+
|
|
29
76
|
## 标准执行流程
|
|
30
77
|
|
|
31
78
|
### Step 1: 知识锚定 (理解需求时)
|