mcp-probe-kit 3.1.0 → 3.3.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 (119) hide show
  1. package/README.md +15 -5
  2. package/build/index.js +5 -2
  3. package/build/lib/__tests__/memory-orchestration.unit.test.js +88 -0
  4. package/build/lib/__tests__/memory-payload.unit.test.js +35 -0
  5. package/build/lib/__tests__/quality-constraints.unit.test.d.ts +1 -0
  6. package/build/lib/__tests__/quality-constraints.unit.test.js +54 -0
  7. package/build/lib/__tests__/spec-validator.unit.test.d.ts +1 -0
  8. package/build/lib/__tests__/spec-validator.unit.test.js +147 -0
  9. package/build/lib/agents-md-template.js +32 -32
  10. package/build/lib/cursor-history-client.d.ts +54 -0
  11. package/build/lib/cursor-history-client.js +240 -0
  12. package/build/lib/memory-orchestration.js +29 -8
  13. package/build/lib/quality-constraints.d.ts +54 -0
  14. package/build/lib/quality-constraints.js +155 -0
  15. package/build/lib/skill-bridge.js +12 -12
  16. package/build/lib/spec-validator.d.ts +36 -0
  17. package/build/lib/spec-validator.js +116 -0
  18. package/build/lib/template-loader.js +223 -61
  19. package/build/lib/tool-annotations.d.ts +30 -0
  20. package/build/lib/tool-annotations.js +55 -0
  21. package/build/lib/toolset-manager.js +2 -0
  22. package/build/resources/ui-ux-data/guidelines/vercel-web-interface.json +1632 -1632
  23. package/build/resources/ui-ux-data/metadata.json +30 -30
  24. package/build/resources/ui-ux-data/shadcn/blocks.json +2541 -2541
  25. package/build/resources/ui-ux-data/shadcn/components.json +997 -997
  26. package/build/resources/ui-ux-data/themes/presets.json +483 -483
  27. package/build/schemas/index.d.ts +22 -0
  28. package/build/schemas/project-tools.d.ts +22 -0
  29. package/build/schemas/project-tools.js +23 -0
  30. package/build/tools/__tests__/cursor-history.unit.test.d.ts +1 -0
  31. package/build/tools/__tests__/cursor-history.unit.test.js +38 -0
  32. package/build/tools/check_spec.d.ts +7 -0
  33. package/build/tools/check_spec.js +81 -0
  34. package/build/tools/code_insight.js +41 -41
  35. package/build/tools/code_review.js +11 -4
  36. package/build/tools/cursor_read_conversation.d.ts +7 -0
  37. package/build/tools/cursor_read_conversation.js +36 -0
  38. package/build/tools/fix_bug.js +161 -161
  39. package/build/tools/gencommit.js +60 -60
  40. package/build/tools/index.d.ts +1 -0
  41. package/build/tools/index.js +1 -0
  42. package/build/tools/init_project_context.js +432 -432
  43. package/build/tools/start_bugfix.js +21 -10
  44. package/build/tools/start_feature.js +46 -11
  45. package/build/tools/start_product.js +1 -1
  46. package/build/tools/start_ui.js +44 -13
  47. package/build/tools/ui-ux-tools.d.ts +3 -0
  48. package/build/tools/ui-ux-tools.js +302 -290
  49. package/build/utils/__tests__/vercel-guidelines-sync.unit.test.js +12 -12
  50. package/build/utils/design-reasoning-engine.d.ts +2 -0
  51. package/build/utils/design-reasoning-engine.js +3 -0
  52. package/build/utils/themes-sync.js +8 -8
  53. package/package.json +4 -3
  54. package/build/resources/index.d.ts +0 -4
  55. package/build/resources/index.js +0 -4
  56. package/build/resources/tool-params-guide.d.ts +0 -571
  57. package/build/resources/tool-params-guide.js +0 -488
  58. package/build/tools/analyze_project.d.ts +0 -1
  59. package/build/tools/analyze_project.js +0 -527
  60. package/build/tools/check_deps.d.ts +0 -13
  61. package/build/tools/check_deps.js +0 -204
  62. package/build/tools/convert.d.ts +0 -13
  63. package/build/tools/convert.js +0 -599
  64. package/build/tools/css_order.d.ts +0 -13
  65. package/build/tools/css_order.js +0 -81
  66. package/build/tools/debug.d.ts +0 -13
  67. package/build/tools/debug.js +0 -131
  68. package/build/tools/design2code.d.ts +0 -20
  69. package/build/tools/design2code.js +0 -426
  70. package/build/tools/detect_shell.d.ts +0 -6
  71. package/build/tools/detect_shell.js +0 -151
  72. package/build/tools/explain.d.ts +0 -13
  73. package/build/tools/explain.js +0 -390
  74. package/build/tools/fix.d.ts +0 -13
  75. package/build/tools/fix.js +0 -303
  76. package/build/tools/gen_mock.d.ts +0 -22
  77. package/build/tools/gen_mock.js +0 -269
  78. package/build/tools/gen_skill.d.ts +0 -13
  79. package/build/tools/gen_skill.js +0 -560
  80. package/build/tools/genapi.d.ts +0 -13
  81. package/build/tools/genapi.js +0 -174
  82. package/build/tools/genchangelog.d.ts +0 -13
  83. package/build/tools/genchangelog.js +0 -250
  84. package/build/tools/gendoc.d.ts +0 -13
  85. package/build/tools/gendoc.js +0 -232
  86. package/build/tools/genpr.d.ts +0 -13
  87. package/build/tools/genpr.js +0 -194
  88. package/build/tools/genreadme.d.ts +0 -13
  89. package/build/tools/genreadme.js +0 -626
  90. package/build/tools/gensql.d.ts +0 -13
  91. package/build/tools/gensql.js +0 -320
  92. package/build/tools/genui.d.ts +0 -13
  93. package/build/tools/genui.js +0 -803
  94. package/build/tools/init_component_catalog.d.ts +0 -22
  95. package/build/tools/init_component_catalog.js +0 -809
  96. package/build/tools/init_setting.d.ts +0 -13
  97. package/build/tools/init_setting.js +0 -47
  98. package/build/tools/perf.d.ts +0 -13
  99. package/build/tools/perf.js +0 -409
  100. package/build/tools/render_ui.d.ts +0 -22
  101. package/build/tools/render_ui.js +0 -384
  102. package/build/tools/resolve_conflict.d.ts +0 -13
  103. package/build/tools/resolve_conflict.js +0 -349
  104. package/build/tools/security_scan.d.ts +0 -22
  105. package/build/tools/security_scan.js +0 -323
  106. package/build/tools/split.d.ts +0 -13
  107. package/build/tools/split.js +0 -599
  108. package/build/tools/start_api.d.ts +0 -13
  109. package/build/tools/start_api.js +0 -193
  110. package/build/tools/start_doc.d.ts +0 -13
  111. package/build/tools/start_doc.js +0 -207
  112. package/build/tools/start_refactor.d.ts +0 -13
  113. package/build/tools/start_refactor.js +0 -188
  114. package/build/tools/start_release.d.ts +0 -13
  115. package/build/tools/start_release.js +0 -167
  116. package/build/tools/start_review.d.ts +0 -13
  117. package/build/tools/start_review.js +0 -175
  118. /package/build/{utils/design-docs-generator.d.ts → lib/__tests__/memory-orchestration.unit.test.d.ts} +0 -0
  119. /package/build/{utils/design-docs-generator.js → lib/__tests__/memory-payload.unit.test.d.ts} +0 -0
@@ -139,8 +139,8 @@ function generateDevGuide(docs) {
139
139
  result += `\n### ${category}\n${items.join('\n')}\n`;
140
140
  }
141
141
  }
142
- result += `\n### 理解代码图谱
143
- - **代码图谱洞察**: [latest.md](./graph-insights/latest.md) - 需要快速理解模块依赖、调用链、影响面时优先查看
142
+ result += `\n### 理解代码图谱
143
+ - **代码图谱洞察**: [latest.md](./graph-insights/latest.md) - 需要快速理解模块依赖、调用链、影响面时优先查看
144
144
  `;
145
145
  return result || '\n### 开发指南\n查看上面的文档导航,根据需要选择对应的文档。\n';
146
146
  }
@@ -306,16 +306,16 @@ async function generateProjectContext(layout, projectRoot) {
306
306
  projectContextExists: modularExists,
307
307
  },
308
308
  };
309
- return okStructured(`${header}${guide}
310
-
311
- ## AGENTS.md 终稿(finalize-agents-md 使用 fsWrite 写入 \`${layout.indexPath}\`)
312
-
313
- \`\`\`markdown
314
- ${mergedAgents.content}
315
- \`\`\`
316
-
317
- ## delegated plan
318
- ${renderPlanSteps(plan.steps)}
309
+ return okStructured(`${header}${guide}
310
+
311
+ ## AGENTS.md 终稿(finalize-agents-md 使用 fsWrite 写入 \`${layout.indexPath}\`)
312
+
313
+ \`\`\`markdown
314
+ ${mergedAgents.content}
315
+ \`\`\`
316
+
317
+ ## delegated plan
318
+ ${renderPlanSteps(plan.steps)}
319
319
  `, structuredData, {
320
320
  schema: (await import("../schemas/output/project-tools.js")).ProjectContextSchema,
321
321
  });
@@ -332,155 +332,155 @@ function generateGuideText(detection, projectInfo, docs, layout, projectRoot, op
332
332
  const timestamp = new Date().toISOString();
333
333
  const docsDir = layout.contextRoot;
334
334
  const projectContextExists = options?.modularExists === true;
335
- return `# 项目上下文文档生成指导
336
-
337
- ## 📊 项目信息
338
-
339
- - **项目名称**: ${projectInfo.name}
340
- - **版本**: ${projectInfo.version}
341
- - **语言**: ${detection.language}
342
- - **框架**: ${detection.framework || '未检测到'}
343
- - **类型**: ${detection.category}
344
- - **置信度**: ${detection.confidence}%
345
-
346
- ## 🔎 当前状态
347
-
348
- - **${layout.indexPath}**: Agent 入口(finalize-agents-md 写入,mcp-probe 块置顶)
349
- - **${layout.legacyIndexPath}**: ${projectContextExists ? '已存在(将保留分类文档)' : '将随分类文档一并生成'}
350
- - **图谱文档**: 需要确保 ${layout.latestMarkdownPath} 与 ${layout.latestJsonPath} 可用
351
-
352
- ## 📋 需要生成的文档
353
-
354
- 请按照以下结构生成 **${docs.length + 1}** 个上下文文档,并为图谱文档预留入口:
355
-
356
- \`\`\`
357
- ${docsDir}/
358
- ├── project-context.md # 索引文件(必须首先生成)
359
- └── project-context/ # 分类文档目录
360
- ${docs.map(doc => ` ├── ${doc.file.padEnd(28)} # ${doc.title}`).join('\n')}
361
- \n${docsDir}/graph-insights/
362
- ├── latest.md # 最近一次 code_insight 的 Markdown 摘要
363
- └── latest.json # 最近一次 code_insight 的结构化结果
364
- \`\`\`
365
-
366
- ---
367
-
368
- ## 🎯 生成步骤
369
-
335
+ return `# 项目上下文文档生成指导
336
+
337
+ ## 📊 项目信息
338
+
339
+ - **项目名称**: ${projectInfo.name}
340
+ - **版本**: ${projectInfo.version}
341
+ - **语言**: ${detection.language}
342
+ - **框架**: ${detection.framework || '未检测到'}
343
+ - **类型**: ${detection.category}
344
+ - **置信度**: ${detection.confidence}%
345
+
346
+ ## 🔎 当前状态
347
+
348
+ - **${layout.indexPath}**: Agent 入口(finalize-agents-md 写入,mcp-probe 块置顶)
349
+ - **${layout.legacyIndexPath}**: ${projectContextExists ? '已存在(将保留分类文档)' : '将随分类文档一并生成'}
350
+ - **图谱文档**: 需要确保 ${layout.latestMarkdownPath} 与 ${layout.latestJsonPath} 可用
351
+
352
+ ## 📋 需要生成的文档
353
+
354
+ 请按照以下结构生成 **${docs.length + 1}** 个上下文文档,并为图谱文档预留入口:
355
+
356
+ \`\`\`
357
+ ${docsDir}/
358
+ ├── project-context.md # 索引文件(必须首先生成)
359
+ └── project-context/ # 分类文档目录
360
+ ${docs.map(doc => ` ├── ${doc.file.padEnd(28)} # ${doc.title}`).join('\n')}
361
+ \n${docsDir}/graph-insights/
362
+ ├── latest.md # 最近一次 code_insight 的 Markdown 摘要
363
+ └── latest.json # 最近一次 code_insight 的结构化结果
364
+ \`\`\`
365
+
366
+ ---
367
+
368
+ ## 🎯 生成步骤
369
+
370
370
  ${projectContextExists
371
- ? `### 已存在项目上下文(仅补图谱)
372
-
373
- 检测到 \`${docsDir}/project-context.md\` 已存在:
374
-
375
- - **不要重写** 现有 \`${docsDir}/project-context.md\`
376
- - **不要重写** \`${docsDir}/project-context/\` 下已有分类文档
377
- - 直接调用 \`code_insight\` 补齐 \`${docsDir}/graph-insights/latest.md\` 与 \`${docsDir}/graph-insights/latest.json\`
378
- - 仅在 \`project-context.md\` 中补充或刷新图谱入口
379
-
380
- ---
371
+ ? `### 已存在项目上下文(仅补图谱)
372
+
373
+ 检测到 \`${docsDir}/project-context.md\` 已存在:
374
+
375
+ - **不要重写** 现有 \`${docsDir}/project-context.md\`
376
+ - **不要重写** \`${docsDir}/project-context/\` 下已有分类文档
377
+ - 直接调用 \`code_insight\` 补齐 \`${docsDir}/graph-insights/latest.md\` 与 \`${docsDir}/graph-insights/latest.json\`
378
+ - 仅在 \`project-context.md\` 中补充或刷新图谱入口
379
+
380
+ ---
381
381
  `
382
- : ''}
383
-
384
- ### 第一步:生成索引文件(最重要!)
385
-
386
- **文件**: \`${docsDir}/project-context.md\`
387
-
388
- 这是项目上下文的**灵魂**,必须首先生成。它是所有文档的入口和导航中心。
389
-
390
- **模板**:
391
-
392
- \`\`\`markdown
393
- # ${projectInfo.name} - 项目上下文
394
-
395
- > 本文档是项目上下文的索引文件,提供项目概览和文档导航。
396
-
397
- ## 📊 项目概览
398
-
399
- | 属性 | 值 |
400
- |------|-----|
401
- | 项目名称 | ${projectInfo.name} |
402
- | 版本 | ${projectInfo.version} |
403
- | 语言 | ${detection.language} |
404
- | 框架 | ${detection.framework || '无'} |
405
- | 类型 | ${detection.category} |
406
- | 描述 | ${projectInfo.description || '待补充'} |
407
-
408
- ## 📚 文档导航
409
-
410
- ${docs.map(doc => `### [${doc.title}](./project-context/${doc.file})
411
- ${doc.purpose}
412
- `).join('\n')}
413
- ### [代码图谱洞察](./graph-insights/latest.md)
414
- 最近一次 code_insight 分析结果,包含模块依赖、调用链和影响面摘要
415
-
416
- ## 🚀 快速开始
417
-
418
- 1. 阅读 [技术栈](./project-context/tech-stack.md) 了解项目使用的技术
419
- 2. 阅读 [架构设计](./project-context/architecture.md) 了解项目结构
420
- 3. 阅读 [代码图谱洞察](./graph-insights/latest.md) 快速理解模块依赖与调用链
421
- 4. 根据需要查看具体的操作指南
422
-
423
- ## 💡 开发时查看对应文档
424
-
425
- 根据你要做的事情,查看对应的文档:
426
-
427
- ${generateDevGuide(docs)}
428
-
429
- ---
430
- *生成时间: ${timestamp}*
431
- *生成工具: MCP Probe Kit - init_project_context v2.1*
432
- \`\`\`
433
-
434
- ${projectContextExists ? '**如果该文件已存在,跳过此步骤,不要覆盖**' : '**使用 fsWrite 创建此文件**'}
435
-
436
- ---
437
-
438
- ### 第二步:生成分类文档
439
-
440
- ${docs.map((doc, index) => generateDocTemplate(doc, index + 2, projectInfo, detection, docsDir)).join('\n\n---\n\n')}
441
-
442
- ---
443
-
444
- ## ✅ 完成标准
445
-
446
- 请确认:
447
-
448
- - [ ] ${projectContextExists ? '保留现有 project-context 及分类文档,不做覆盖' : `已使用 fsWrite 创建 **${docs.length + 1}** 个文件`}
449
- - [ ] 索引文件 \`project-context.md\` ${projectContextExists ? '已存在并保留' : '已创建(最重要!)'}
450
- - [ ] 索引文件已包含 \`graph-insights/latest.md\` 的入口
451
- - [ ] 所有文档都包含**真实的文件路径**(不是 [xxx] 占位符)
452
- - [ ] 所有文档都包含**实际的代码示例**(从项目中复制)
453
- - [ ] 所有步骤都具体可操作
454
- - [ ] 所有示例都来自项目实际代码
455
-
456
- ---
457
-
458
- ## 🔄 完成文档骨架后立即执行
459
-
460
- 1. 调用 \`code_insight\`
461
- \`\`\`json
462
- {
463
- "mode": "auto",
464
- "project_root": "${toPosixPath(projectRoot)}",
465
- "docs_dir": "${docsDir}"
466
- }
467
- \`\`\`
468
- 2. 严格执行 \`code_insight\` 返回的 delegated plan
469
- 3. 确保 \`${docsDir}/graph-insights/latest.md\` 和 \`${docsDir}/graph-insights/latest.json\` 已写入
470
- 4. 若已有旧图谱,按 delegated plan 归档时间戳版本
471
-
472
- ---
473
-
474
- **重要提示**:
475
- 1. **必须从项目中提取真实示例** - 不要编造代码
476
- 2. **路径必须真实存在** - 检查文件是否存在
477
- 3. **步骤必须具体** - 不要写"根据需要修改"这种模糊的话
478
- 4. **代码必须完整** - 不要用 ... 省略
479
-
480
- ---
481
-
482
- *工具: MCP Probe Kit - init_project_context*
483
- *版本: 2.1.0*
382
+ : ''}
383
+
384
+ ### 第一步:生成索引文件(最重要!)
385
+
386
+ **文件**: \`${docsDir}/project-context.md\`
387
+
388
+ 这是项目上下文的**灵魂**,必须首先生成。它是所有文档的入口和导航中心。
389
+
390
+ **模板**:
391
+
392
+ \`\`\`markdown
393
+ # ${projectInfo.name} - 项目上下文
394
+
395
+ > 本文档是项目上下文的索引文件,提供项目概览和文档导航。
396
+
397
+ ## 📊 项目概览
398
+
399
+ | 属性 | 值 |
400
+ |------|-----|
401
+ | 项目名称 | ${projectInfo.name} |
402
+ | 版本 | ${projectInfo.version} |
403
+ | 语言 | ${detection.language} |
404
+ | 框架 | ${detection.framework || '无'} |
405
+ | 类型 | ${detection.category} |
406
+ | 描述 | ${projectInfo.description || '待补充'} |
407
+
408
+ ## 📚 文档导航
409
+
410
+ ${docs.map(doc => `### [${doc.title}](./project-context/${doc.file})
411
+ ${doc.purpose}
412
+ `).join('\n')}
413
+ ### [代码图谱洞察](./graph-insights/latest.md)
414
+ 最近一次 code_insight 分析结果,包含模块依赖、调用链和影响面摘要
415
+
416
+ ## 🚀 快速开始
417
+
418
+ 1. 阅读 [技术栈](./project-context/tech-stack.md) 了解项目使用的技术
419
+ 2. 阅读 [架构设计](./project-context/architecture.md) 了解项目结构
420
+ 3. 阅读 [代码图谱洞察](./graph-insights/latest.md) 快速理解模块依赖与调用链
421
+ 4. 根据需要查看具体的操作指南
422
+
423
+ ## 💡 开发时查看对应文档
424
+
425
+ 根据你要做的事情,查看对应的文档:
426
+
427
+ ${generateDevGuide(docs)}
428
+
429
+ ---
430
+ *生成时间: ${timestamp}*
431
+ *生成工具: MCP Probe Kit - init_project_context v2.1*
432
+ \`\`\`
433
+
434
+ ${projectContextExists ? '**如果该文件已存在,跳过此步骤,不要覆盖**' : '**使用 fsWrite 创建此文件**'}
435
+
436
+ ---
437
+
438
+ ### 第二步:生成分类文档
439
+
440
+ ${docs.map((doc, index) => generateDocTemplate(doc, index + 2, projectInfo, detection, docsDir)).join('\n\n---\n\n')}
441
+
442
+ ---
443
+
444
+ ## ✅ 完成标准
445
+
446
+ 请确认:
447
+
448
+ - [ ] ${projectContextExists ? '保留现有 project-context 及分类文档,不做覆盖' : `已使用 fsWrite 创建 **${docs.length + 1}** 个文件`}
449
+ - [ ] 索引文件 \`project-context.md\` ${projectContextExists ? '已存在并保留' : '已创建(最重要!)'}
450
+ - [ ] 索引文件已包含 \`graph-insights/latest.md\` 的入口
451
+ - [ ] 所有文档都包含**真实的文件路径**(不是 [xxx] 占位符)
452
+ - [ ] 所有文档都包含**实际的代码示例**(从项目中复制)
453
+ - [ ] 所有步骤都具体可操作
454
+ - [ ] 所有示例都来自项目实际代码
455
+
456
+ ---
457
+
458
+ ## 🔄 完成文档骨架后立即执行
459
+
460
+ 1. 调用 \`code_insight\`
461
+ \`\`\`json
462
+ {
463
+ "mode": "auto",
464
+ "project_root": "${toPosixPath(projectRoot)}",
465
+ "docs_dir": "${docsDir}"
466
+ }
467
+ \`\`\`
468
+ 2. 严格执行 \`code_insight\` 返回的 delegated plan
469
+ 3. 确保 \`${docsDir}/graph-insights/latest.md\` 和 \`${docsDir}/graph-insights/latest.json\` 已写入
470
+ 4. 若已有旧图谱,按 delegated plan 归档时间戳版本
471
+
472
+ ---
473
+
474
+ **重要提示**:
475
+ 1. **必须从项目中提取真实示例** - 不要编造代码
476
+ 2. **路径必须真实存在** - 检查文件是否存在
477
+ 3. **步骤必须具体** - 不要写"根据需要修改"这种模糊的话
478
+ 4. **代码必须完整** - 不要用 ... 省略
479
+
480
+ ---
481
+
482
+ *工具: MCP Probe Kit - init_project_context*
483
+ *版本: 2.1.0*
484
484
  `;
485
485
  }
486
486
  /**
@@ -490,286 +490,286 @@ function generateDocTemplate(doc, step, projectInfo, detection, docsDir) {
490
490
  const timestamp = new Date().toISOString();
491
491
  // 根据文档类型生成不同的模板
492
492
  const templates = {
493
- 'tech-stack.md': `**文件**: \`${docsDir}/project-context/${doc.file}\`
494
-
495
- **用途**: ${doc.purpose}
496
-
497
- **模板**:
498
-
499
- \`\`\`markdown
500
- # 技术栈
501
-
502
- > 本文档描述 ${projectInfo.name} 的技术栈信息。
503
-
504
- ## 基本信息
505
-
506
- | 属性 | 值 |
507
- |------|-----|
508
- | 项目名称 | ${projectInfo.name} |
509
- | 版本 | ${projectInfo.version} |
510
- | 语言 | ${detection.language} |
511
- | 框架 | ${detection.framework || '无'} |
512
-
513
- ## 技术栈详情
514
-
515
- ### 核心技术
516
-
517
- | 类别 | 技术 | 版本 |
518
- |------|------|------|
519
- | 语言 | [从 package.json 或配置文件中提取] | [版本] |
520
- | 运行时 | [Node.js/Python/Java 等] | [版本] |
521
- | 框架 | [主要框架] | [版本] |
522
-
523
- ### 开发工具
524
-
525
- | 类别 | 工具 | 用途 |
526
- |------|------|------|
527
- | 构建工具 | [如 TypeScript, Webpack] | [用途] |
528
- | 测试框架 | [如 Jest, Vitest] | [用途] |
529
- | 代码检查 | [如 ESLint, Prettier] | [用途] |
530
-
531
- ### 主要依赖
532
-
533
- 列出 5-10 个最重要的依赖包及其用途。
534
-
535
- ---
536
- *返回索引: [../project-context.md](../project-context.md)*
537
- \`\`\`
538
-
539
- **填写指导**:
540
- 1. 读取 \`package.json\` 获取依赖信息
541
- 2. 读取 \`tsconfig.json\` 或其他配置文件
542
- 3. 列出最重要的 5-10 个依赖包
493
+ 'tech-stack.md': `**文件**: \`${docsDir}/project-context/${doc.file}\`
494
+
495
+ **用途**: ${doc.purpose}
496
+
497
+ **模板**:
498
+
499
+ \`\`\`markdown
500
+ # 技术栈
501
+
502
+ > 本文档描述 ${projectInfo.name} 的技术栈信息。
503
+
504
+ ## 基本信息
505
+
506
+ | 属性 | 值 |
507
+ |------|-----|
508
+ | 项目名称 | ${projectInfo.name} |
509
+ | 版本 | ${projectInfo.version} |
510
+ | 语言 | ${detection.language} |
511
+ | 框架 | ${detection.framework || '无'} |
512
+
513
+ ## 技术栈详情
514
+
515
+ ### 核心技术
516
+
517
+ | 类别 | 技术 | 版本 |
518
+ |------|------|------|
519
+ | 语言 | [从 package.json 或配置文件中提取] | [版本] |
520
+ | 运行时 | [Node.js/Python/Java 等] | [版本] |
521
+ | 框架 | [主要框架] | [版本] |
522
+
523
+ ### 开发工具
524
+
525
+ | 类别 | 工具 | 用途 |
526
+ |------|------|------|
527
+ | 构建工具 | [如 TypeScript, Webpack] | [用途] |
528
+ | 测试框架 | [如 Jest, Vitest] | [用途] |
529
+ | 代码检查 | [如 ESLint, Prettier] | [用途] |
530
+
531
+ ### 主要依赖
532
+
533
+ 列出 5-10 个最重要的依赖包及其用途。
534
+
535
+ ---
536
+ *返回索引: [../project-context.md](../project-context.md)*
537
+ \`\`\`
538
+
539
+ **填写指导**:
540
+ 1. 读取 \`package.json\` 获取依赖信息
541
+ 2. 读取 \`tsconfig.json\` 或其他配置文件
542
+ 3. 列出最重要的 5-10 个依赖包
543
543
  4. 说明每个依赖的用途`,
544
- 'architecture.md': `**文件**: \`${docsDir}/project-context/${doc.file}\`
545
-
546
- **用途**: ${doc.purpose}
547
-
548
- **模板**:
549
-
550
- \`\`\`markdown
551
- # 架构设计
552
-
553
- > 本文档描述 ${projectInfo.name} 的架构和项目结构。
554
-
555
- ## 项目结构
556
-
557
- \`\`\`
558
- [使用 listDirectory 工具生成目录树,深度 2-3 层]
559
- \`\`\`
560
-
561
- ## 主要目录说明
562
-
563
- | 目录 | 用途 |
564
- |------|------|
565
- | [目录名] | [从实际项目中分析得出] |
566
-
567
- ## 入口文件
568
-
569
- - **主入口**: \`[实际的入口文件路径,如 src/index.ts]\`
570
- - **配置文件**: \`[如 package.json, tsconfig.json]\`
571
-
572
- ## 架构模式
573
-
574
- - **项目类型**: ${detection.category}
575
- - **设计模式**: [从代码中识别,如 MVC, 工具集合, 插件系统等]
576
- - **模块划分**: [说明主要模块及其职责]
577
-
578
- ## 核心模块
579
-
580
- ### [模块名称]
581
- - **位置**: \`[实际路径]\`
582
- - **职责**: [模块功能]
583
- - **主要文件**: [列出 2-3 个关键文件]
584
-
585
- ---
586
- *返回索引: [../project-context.md](../project-context.md)*
587
- \`\`\`
588
-
589
- **填写指导**:
590
- 1. 使用 listDirectory 工具查看项目结构
591
- 2. 读取主要目录下的文件
592
- 3. 识别项目的组织方式
544
+ 'architecture.md': `**文件**: \`${docsDir}/project-context/${doc.file}\`
545
+
546
+ **用途**: ${doc.purpose}
547
+
548
+ **模板**:
549
+
550
+ \`\`\`markdown
551
+ # 架构设计
552
+
553
+ > 本文档描述 ${projectInfo.name} 的架构和项目结构。
554
+
555
+ ## 项目结构
556
+
557
+ \`\`\`
558
+ [使用 listDirectory 工具生成目录树,深度 2-3 层]
559
+ \`\`\`
560
+
561
+ ## 主要目录说明
562
+
563
+ | 目录 | 用途 |
564
+ |------|------|
565
+ | [目录名] | [从实际项目中分析得出] |
566
+
567
+ ## 入口文件
568
+
569
+ - **主入口**: \`[实际的入口文件路径,如 src/index.ts]\`
570
+ - **配置文件**: \`[如 package.json, tsconfig.json]\`
571
+
572
+ ## 架构模式
573
+
574
+ - **项目类型**: ${detection.category}
575
+ - **设计模式**: [从代码中识别,如 MVC, 工具集合, 插件系统等]
576
+ - **模块划分**: [说明主要模块及其职责]
577
+
578
+ ## 核心模块
579
+
580
+ ### [模块名称]
581
+ - **位置**: \`[实际路径]\`
582
+ - **职责**: [模块功能]
583
+ - **主要文件**: [列出 2-3 个关键文件]
584
+
585
+ ---
586
+ *返回索引: [../project-context.md](../project-context.md)*
587
+ \`\`\`
588
+
589
+ **填写指导**:
590
+ 1. 使用 listDirectory 工具查看项目结构
591
+ 2. 读取主要目录下的文件
592
+ 3. 识别项目的组织方式
593
593
  4. 找出核心模块和关键文件`,
594
- 'how-to-add-api.md': `**文件**: \`${docsDir}/project-context/${doc.file}\`
595
-
596
- **用途**: ${doc.purpose}
597
-
598
- **模板**:
599
-
600
- \`\`\`markdown
601
- # 如何添加新接口
602
-
603
- > 本文档指导如何在 ${projectInfo.name} 中添加新的 API 接口。
604
-
605
- ## 第一步:找到路由定义位置
606
-
607
- 项目的路由定义在:\`[实际路径,如 src/routes/, src/api/]\`
608
-
609
- **现有示例**(从项目中找一个真实的路由文件):
610
- \`\`\`[语言]
611
- [复制一个实际的路由定义代码]
612
- \`\`\`
613
-
614
- ## 第二步:创建新路由
615
-
616
- 1. 在 \`[路径]\` 目录下创建文件 \`[命名规范].ts\`
617
- 2. 定义路由:
618
-
619
- \`\`\`[语言]
620
- [基于项目实际代码风格的示例]
621
- \`\`\`
622
-
623
- ## 第三步:实现业务逻辑
624
-
625
- 业务逻辑通常在:\`[实际路径,如 src/controllers/, src/services/]\`
626
-
627
- **现有示例**:
628
- \`\`\`[语言]
629
- [复制一个实际的 controller/service 代码]
630
- \`\`\`
631
-
632
- ## 第四步:数据验证
633
-
634
- 项目使用 [验证库名称] 进行数据验证。
635
-
636
- **示例**:
637
- \`\`\`[语言]
638
- [从项目中找一个验证示例]
639
- \`\`\`
640
-
641
- ## 第五步:注册路由
642
-
643
- 在 \`[实际文件路径]\` 中注册新路由:
644
-
645
- \`\`\`[语言]
646
- [实际的路由注册代码]
647
- \`\`\`
648
-
649
- ## 第六步:测试
650
-
651
- 运行测试命令:\`[实际命令,如 npm test]\`
652
-
653
- ---
654
- *返回索引: [../project-context.md](../project-context.md)*
655
- \`\`\`
656
-
657
- **填写指导**:
658
- 1. 搜索 src/routes, src/api, src/controllers 等目录
659
- 2. 找 2-3 个现有的 API 接口作为参考
660
- 3. 复制实际的代码示例(不要编造)
594
+ 'how-to-add-api.md': `**文件**: \`${docsDir}/project-context/${doc.file}\`
595
+
596
+ **用途**: ${doc.purpose}
597
+
598
+ **模板**:
599
+
600
+ \`\`\`markdown
601
+ # 如何添加新接口
602
+
603
+ > 本文档指导如何在 ${projectInfo.name} 中添加新的 API 接口。
604
+
605
+ ## 第一步:找到路由定义位置
606
+
607
+ 项目的路由定义在:\`[实际路径,如 src/routes/, src/api/]\`
608
+
609
+ **现有示例**(从项目中找一个真实的路由文件):
610
+ \`\`\`[语言]
611
+ [复制一个实际的路由定义代码]
612
+ \`\`\`
613
+
614
+ ## 第二步:创建新路由
615
+
616
+ 1. 在 \`[路径]\` 目录下创建文件 \`[命名规范].ts\`
617
+ 2. 定义路由:
618
+
619
+ \`\`\`[语言]
620
+ [基于项目实际代码风格的示例]
621
+ \`\`\`
622
+
623
+ ## 第三步:实现业务逻辑
624
+
625
+ 业务逻辑通常在:\`[实际路径,如 src/controllers/, src/services/]\`
626
+
627
+ **现有示例**:
628
+ \`\`\`[语言]
629
+ [复制一个实际的 controller/service 代码]
630
+ \`\`\`
631
+
632
+ ## 第四步:数据验证
633
+
634
+ 项目使用 [验证库名称] 进行数据验证。
635
+
636
+ **示例**:
637
+ \`\`\`[语言]
638
+ [从项目中找一个验证示例]
639
+ \`\`\`
640
+
641
+ ## 第五步:注册路由
642
+
643
+ 在 \`[实际文件路径]\` 中注册新路由:
644
+
645
+ \`\`\`[语言]
646
+ [实际的路由注册代码]
647
+ \`\`\`
648
+
649
+ ## 第六步:测试
650
+
651
+ 运行测试命令:\`[实际命令,如 npm test]\`
652
+
653
+ ---
654
+ *返回索引: [../project-context.md](../project-context.md)*
655
+ \`\`\`
656
+
657
+ **填写指导**:
658
+ 1. 搜索 src/routes, src/api, src/controllers 等目录
659
+ 2. 找 2-3 个现有的 API 接口作为参考
660
+ 3. 复制实际的代码示例(不要编造)
661
661
  4. 说明项目特定的命名和组织方式`,
662
- 'how-to-new-page.md': `**文件**: \`${docsDir}/project-context/${doc.file}\`
663
-
664
- **用途**: ${doc.purpose}
665
-
666
- **模板**:
667
-
668
- \`\`\`markdown
669
- # 如何创建新页面
670
-
671
- > 本文档指导如何在 ${projectInfo.name} 中创建新的页面组件。
672
-
673
- ## 第一步:找到页面目录
674
-
675
- 项目的页面组件在:\`[实际路径,如 src/pages/, src/views/, app/]\`
676
-
677
- **现有示例**(从项目中找一个真实的页面):
678
- \`\`\`[语言]
679
- [复制一个实际的页面组件代码]
680
- \`\`\`
681
-
682
- ## 第二步:创建页面文件
683
-
684
- 1. 在 \`[路径]\` 目录下创建 \`[命名规范].tsx\`
685
- 2. 定义组件:
686
-
687
- \`\`\`[语言]
688
- [基于项目实际代码风格的示例]
689
- \`\`\`
690
-
691
- ## 第三步:配置路由
692
-
693
- 项目使用 [路由库名称]。
694
-
695
- **路由配置位置**: \`[实际文件路径]\`
696
-
697
- **示例**:
698
- \`\`\`[语言]
699
- [从项目中找路由配置示例]
700
- \`\`\`
701
-
702
- ## 第四步:获取数据
703
-
704
- 项目使用 [数据获取方式,如 useEffect, getServerSideProps, loader]。
705
-
706
- **示例**:
707
- \`\`\`[语言]
708
- [从项目中找数据获取示例]
709
- \`\`\`
710
-
711
- ## 第五步:编写样式
712
-
713
- 项目使用 [样式方案,如 CSS Modules, Tailwind, styled-components]。
714
-
715
- **示例**:
716
- \`\`\`[语言]
717
- [从项目中找样式示例]
718
- \`\`\`
719
-
720
- ---
721
- *返回索引: [../project-context.md](../project-context.md)*
722
- \`\`\`
723
-
724
- **填写指导**:
725
- 1. 搜索 src/pages, src/views, app 等目录
726
- 2. 找 1-2 个现有页面作为参考
727
- 3. 复制实际的组件代码
662
+ 'how-to-new-page.md': `**文件**: \`${docsDir}/project-context/${doc.file}\`
663
+
664
+ **用途**: ${doc.purpose}
665
+
666
+ **模板**:
667
+
668
+ \`\`\`markdown
669
+ # 如何创建新页面
670
+
671
+ > 本文档指导如何在 ${projectInfo.name} 中创建新的页面组件。
672
+
673
+ ## 第一步:找到页面目录
674
+
675
+ 项目的页面组件在:\`[实际路径,如 src/pages/, src/views/, app/]\`
676
+
677
+ **现有示例**(从项目中找一个真实的页面):
678
+ \`\`\`[语言]
679
+ [复制一个实际的页面组件代码]
680
+ \`\`\`
681
+
682
+ ## 第二步:创建页面文件
683
+
684
+ 1. 在 \`[路径]\` 目录下创建 \`[命名规范].tsx\`
685
+ 2. 定义组件:
686
+
687
+ \`\`\`[语言]
688
+ [基于项目实际代码风格的示例]
689
+ \`\`\`
690
+
691
+ ## 第三步:配置路由
692
+
693
+ 项目使用 [路由库名称]。
694
+
695
+ **路由配置位置**: \`[实际文件路径]\`
696
+
697
+ **示例**:
698
+ \`\`\`[语言]
699
+ [从项目中找路由配置示例]
700
+ \`\`\`
701
+
702
+ ## 第四步:获取数据
703
+
704
+ 项目使用 [数据获取方式,如 useEffect, getServerSideProps, loader]。
705
+
706
+ **示例**:
707
+ \`\`\`[语言]
708
+ [从项目中找数据获取示例]
709
+ \`\`\`
710
+
711
+ ## 第五步:编写样式
712
+
713
+ 项目使用 [样式方案,如 CSS Modules, Tailwind, styled-components]。
714
+
715
+ **示例**:
716
+ \`\`\`[语言]
717
+ [从项目中找样式示例]
718
+ \`\`\`
719
+
720
+ ---
721
+ *返回索引: [../project-context.md](../project-context.md)*
722
+ \`\`\`
723
+
724
+ **填写指导**:
725
+ 1. 搜索 src/pages, src/views, app 等目录
726
+ 2. 找 1-2 个现有页面作为参考
727
+ 3. 复制实际的组件代码
728
728
  4. 说明路由配置方式`
729
729
  };
730
730
  // 如果没有特定模板,使用通用模板
731
- const template = templates[doc.file] || `**文件**: \`${docsDir}/project-context/${doc.file}\`
732
-
733
- **用途**: ${doc.purpose}
734
-
735
- **模板**:
736
-
737
- \`\`\`markdown
738
- # ${doc.title}
739
-
740
- > 本文档描述 ${projectInfo.name} 的 ${doc.title.toLowerCase()}。
741
-
742
- ## 概述
743
-
744
- [简要说明本文档的内容]
745
-
746
- ## 详细步骤
747
-
748
- ### 第一步:[步骤名称]
749
-
750
- [具体说明]
751
-
752
- **示例**:
753
- \`\`\`[语言]
754
- [从项目中提取的实际代码]
755
- \`\`\`
756
-
757
- ### 第二步:[步骤名称]
758
-
759
- [具体说明]
760
-
761
- ---
762
- *返回索引: [../project-context.md](../project-context.md)*
763
- \`\`\`
764
-
765
- **填写指导**:
766
- 1. 分析项目相关代码
767
- 2. 提取真实示例
731
+ const template = templates[doc.file] || `**文件**: \`${docsDir}/project-context/${doc.file}\`
732
+
733
+ **用途**: ${doc.purpose}
734
+
735
+ **模板**:
736
+
737
+ \`\`\`markdown
738
+ # ${doc.title}
739
+
740
+ > 本文档描述 ${projectInfo.name} 的 ${doc.title.toLowerCase()}。
741
+
742
+ ## 概述
743
+
744
+ [简要说明本文档的内容]
745
+
746
+ ## 详细步骤
747
+
748
+ ### 第一步:[步骤名称]
749
+
750
+ [具体说明]
751
+
752
+ **示例**:
753
+ \`\`\`[语言]
754
+ [从项目中提取的实际代码]
755
+ \`\`\`
756
+
757
+ ### 第二步:[步骤名称]
758
+
759
+ [具体说明]
760
+
761
+ ---
762
+ *返回索引: [../project-context.md](../project-context.md)*
763
+ \`\`\`
764
+
765
+ **填写指导**:
766
+ 1. 分析项目相关代码
767
+ 2. 提取真实示例
768
768
  3. 编写具体步骤`;
769
- return `### 第${step}步:${doc.title}
770
-
771
- ${template}
772
-
769
+ return `### 第${step}步:${doc.title}
770
+
771
+ ${template}
772
+
773
773
  **使用 fsWrite 创建此文件**`;
774
774
  }
775
775
  /**