add-coder 0.1.12 → 0.1.14

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 (45) hide show
  1. package/dist/index.js +26 -6
  2. package/package.json +1 -1
  3. package/templates/core/agents/add-flow-guardian.md +6 -6
  4. package/templates/core/agents/add-orchestrator.md +2 -2
  5. package/templates/core/hooks/doc-format-guard.sh +17 -0
  6. package/templates/core/hooks/lib/context-inject.sh +96 -0
  7. package/templates/core/hooks/lib/state-detect.sh +104 -0
  8. package/templates/core/hooks/lib/vocabulary.sh +49 -0
  9. package/templates/core/hooks/notification.sh +9 -0
  10. package/templates/core/hooks/permission-gate.sh +18 -0
  11. package/templates/core/hooks/post-tool-failure.sh +10 -0
  12. package/templates/core/hooks/post-tool-use.sh +18 -0
  13. package/templates/core/hooks/pre-compact.sh +14 -0
  14. package/templates/core/hooks/pre-tool-use.sh +28 -0
  15. package/templates/core/hooks/prompt-submit.sh +16 -0
  16. package/templates/core/hooks/review-checklist.sh +10 -0
  17. package/templates/core/hooks/session-start.sh +23 -0
  18. package/templates/core/hooks/stop-check.sh +10 -0
  19. package/templates/core/hooks/subagent-guard.sh +15 -0
  20. package/templates/core/plans/2026-07/08/{farm-agent-add-coder-npm-package-add-route-v1.md → add-coder-npm-package-add-route-v1.md} +9 -9
  21. package/templates/core/plans/2026-07/08/{farm-agent-add-coder-npm-package-handoff-v1.md → add-coder-npm-package-handoff-v1.md} +43 -43
  22. package/templates/core/plans/2026-07/08/{farm-agent-add-coder-npm-package-plan-v1.md → add-coder-npm-package-plan-v1.md} +47 -47
  23. package/templates/core/reports/REPORT-WORKFLOW.md +2 -2
  24. package/templates/core/reports/index.md +1 -1
  25. package/templates/core/rules/project_rules.md +29 -29
  26. package/templates/core/scripts/mcp-server.ts +17 -17
  27. package/templates/core/skills/add-paradigm/SKILL.md +18 -16
  28. package/templates/core/skills/session-init/SKILL.md +3 -3
  29. package/templates/core/specs/{farm-agent-add-coder-npm-package → add-coder-npm-package}/checklist.md +7 -7
  30. package/templates/core/specs/{farm-agent-add-coder-npm-package → add-coder-npm-package}/spec.md +12 -12
  31. package/templates/core/specs/{farm-agent-add-coder-npm-package → add-coder-npm-package}/tasks.md +17 -17
  32. package/templates/core/templates/01-/346/236/266/346/236/204//343/200/212ADD/345/274/200/345/217/221/345/267/245/344/275/234/350/267/257/345/276/204/344/270/216/346/226/207/346/241/243/345/215/217/345/220/214/350/247/204/350/214/203/343/200/213.md +25 -25
  33. package/templates/core/templates/TERMINOLOGY.md +1 -1
  34. package/templates/core/templates/checklist-template.md +1 -1
  35. package/templates/core/templates/handoff-multi-round-template.md +10 -10
  36. package/templates/core/templates/handoff-single-round-template.md +1 -1
  37. package/templates/core/templates/index.md +5 -1
  38. package/templates/core/templates/prd-incremental-template.md +103 -0
  39. package/templates/core/templates/prd-incremental-template.schema.json +32 -0
  40. package/templates/core/templates/prd-standard-template.md +219 -0
  41. package/templates/core/templates/prd-standard-template.schema.json +27 -0
  42. package/templates/core/templates/simple-plan-template.md +2 -2
  43. package/templates/core/templates/standard-plan-template.md +9 -9
  44. package/templates/core/tools/README.md +2 -2
  45. package/templates/core/vocabulary/add-governance-vocabulary.md +28 -26
@@ -38,13 +38,13 @@ AI 助手必须先恢复到基线、找到对应的 SKILL 文件并按步骤执
38
38
 
39
39
  ### ADD 词汇→操作映射(L1 预埋)
40
40
 
41
- > **完整词汇表已独立维护**:`.qoder/vocabulary/add-governance-vocabulary.md`
41
+ > **完整词汇表已独立维护**:`{{magicDir}}/vocabulary/add-governance-vocabulary.md`
42
42
  > **六类分类**: A.文档类型 / B.ADD阶段 / C.门禁/闸门 / D.MCP工具 / E.Skills/Subagents / F.核心概念
43
43
  > **消费者**: IDE 侧 LLM + 未来治理 AI。领域触发词汇(面向 {{projectName}} 运行时用户 LLM)另有独立路径。
44
44
 
45
45
  ### 理论→实践映射
46
46
 
47
- > 完整结构化映射:`.qoder/rules/theory-practice-map.toml`(可被脚本解析验证)
47
+ > 完整结构化映射:`{{magicDir}}/rules/theory-practice-map.toml`(可被脚本解析验证)
48
48
 
49
49
  | 规则 | 实践位置 | 触发时机 |
50
50
  |------|---------|---------|
@@ -73,7 +73,7 @@ AI 助手必须先恢复到基线、找到对应的 SKILL 文件并按步骤执
73
73
 
74
74
  **触发条件**:每次新对话启动时,作为第一个操作执行。
75
75
 
76
- SKILL 文件位于 `.qoder/skills/session-init/SKILL.md`,包含 4 个步骤:
76
+ SKILL 文件位于 `{{magicDir}}/skills/session-init/SKILL.md`,包含 4 个步骤:
77
77
  1. 查询 `query_audit_logs({})` 获取最近的开发操作记录
78
78
  2. 分析审计日志推断上下文
79
79
  3. 构建上下文摘要
@@ -87,7 +87,7 @@ SKILL 文件位于 `.qoder/skills/session-init/SKILL.md`,包含 4 个步骤:
87
87
 
88
88
  **触发条件**:用户提出任何功能开发、Bug 修复、系统修改需求时。
89
89
 
90
- SKILL 文件位于 `.qoder/skills/add-paradigm/SKILL.md`,包含 10 个阶段(Step 0 - Step 9),每个阶段包含若干子步骤:
90
+ SKILL 文件位于 `{{magicDir}}/skills/add-paradigm/SKILL.md`,包含 10 个阶段(Step 0 - Step 9),每个阶段包含若干子步骤:
91
91
  0. 文档先行(Documentation First — 在编写任何代码之前更新项目文档 + 验收后回看架构文档)
92
92
  1. 功能分析与审计阶段定义
93
93
  2. 审计基础设施实现
@@ -148,7 +148,7 @@ ADD 是**开发阶段**的编程范式,不是运行时范式。
148
148
  | 架构文档 | `docs/*/knowledge/01-架构/` 或 `02-架构/` | 架构说明书、系统设计、模块定义 |
149
149
  | 规范文档 | `docs/*/knowledge/02-规范/` 或 `03-规范/` | 开发规范、AI 核心规范、状态机规范 |
150
150
 
151
- **此外,ADD 工作流的核心产物由 `.qoder/templates/` 下的 11 个模板定义**,这些模板不是参考资料,而是每次变更必须产出的文档骨架。分析变更影响范围时,必须同步确认需要创建/更新哪些模板产物:
151
+ **此外,ADD 工作流的核心产物由 `{{magicDir}}/templates/` 下的 11 个模板定义**,这些模板不是参考资料,而是每次变更必须产出的文档骨架。分析变更影响范围时,必须同步确认需要创建/更新哪些模板产物:
152
152
 
153
153
  | 模板 | 用途 | 对应阶段 |
154
154
  |------|------|---------|
@@ -425,7 +425,7 @@ reason: 中文/英文说明本次改动的目的
425
425
  正确示例:
426
426
  - ✅ `src/middleware.ts`({{projectName}} workspace 内)
427
427
  - ✅ `agrisynapse/src/api/agent/types.ts`(跨项目时带项目名前缀)
428
- - ✅ `.qoder/plans/{{projectName}}-agrisynapse-integration-plan-v1.md`(.qoder 内文件)
428
+ - ✅ `{{magicDir}}/plans/{{projectName}}-agrisynapse-integration-plan-v1.md`(.qoder 内文件)
429
429
 
430
430
  原因:`query_audit_logs({ targetId })` 做精确匹配,绝对路径和相对路径是两条不同的记录,导致漏查。
431
431
 
@@ -447,13 +447,13 @@ ADD 开发流程产生多种产物(方案、拆分、交接、评审、spec)
447
447
  | `docs/哲学理论/` | 哲学理论基础文章 | 公开 |
448
448
  | `{{docsDir}}/` | 项目文档(需求/架构/规范) | 公开 |
449
449
  | `TODO/` | 开源协作 TODO,与 docs/ 平级 | 公开 |
450
- | `.qoder/plans/` | 需求方案(plan)+ 任务拆分(execution)+ 轮间交接手册(handoff) | 开发内部 |
451
- | `.qoder/reviews/` | 方案评审 + 逐轮 spec 评审 | 开发内部 |
452
- | `.qoder/specs/` | 每轮 spec + tasks + checklist(三件套) | 开发内部 |
453
- | `.qoder/templates/` | 文档模板(plan/spec/tasks/checklist/review) | 开发内部 |
454
- | `.qoder/rules/` | 项目规则文件 | 开发内部 |
455
- | `.qoder/skills/` | SKILL 行为定义 | 开发内部 |
456
- | `.qoder/scripts/` | 工具脚本 + MCP 服务器 | 开发内部 |
450
+ | `{{magicDir}}/plans/` | 需求方案(plan)+ 任务拆分(execution)+ 轮间交接手册(handoff) | 开发内部 |
451
+ | `{{magicDir}}/reviews/` | 方案评审 + 逐轮 spec 评审 | 开发内部 |
452
+ | `{{magicDir}}/specs/` | 每轮 spec + tasks + checklist(三件套) | 开发内部 |
453
+ | `{{magicDir}}/templates/` | 文档模板(plan/spec/tasks/checklist/review) | 开发内部 |
454
+ | `{{magicDir}}/rules/` | 项目规则文件 | 开发内部 |
455
+ | `{{magicDir}}/skills/` | SKILL 行为定义 | 开发内部 |
456
+ | `{{magicDir}}/scripts/` | 工具脚本 + MCP 服务器 | 开发内部 |
457
457
 
458
458
  ### 命名规范
459
459
 
@@ -466,31 +466,31 @@ ADD 开发流程产生多种产物(方案、拆分、交接、评审、spec)
466
466
  ### ADD 工作流三大阶段与目录对应
467
467
 
468
468
  ```
469
- 需求理解 + 任务拆分 → .qoder/plans/ (plan + execution + handoff)
469
+ 需求理解 + 任务拆分 → {{magicDir}}/plans/ (plan + execution + handoff)
470
470
 
471
- Review(强制关卡) → .qoder/reviews/ (plan-review + roundN-spec-review)
471
+ Review(强制关卡) → {{magicDir}}/reviews/ (plan-review + roundN-spec-review)
472
472
 
473
- Spec 执行 → .qoder/specs/ (三件套:spec + tasks + checklist)
473
+ Spec 执行 → {{magicDir}}/specs/ (三件套:spec + tasks + checklist)
474
474
  ```
475
475
 
476
476
  **Review 强制关卡约束**:每轮计划在实际代码改动之前,必须先生成 Review 文件并通过评审。
477
477
  - Review 是 **spec → 代码** 之间的强制关卡,未通过 Review 不得写代码
478
478
  - Review 至少包含:元信息(对象/方案/时间/类型)、问题复现、方案对比、决策结论
479
- - 每轮的 Review 文件路径:`.qoder/reviews/{需求域名}-round{N}-{核心内容}-spec-review-v{版本}.md`
479
+ - 每轮的 Review 文件路径:`{{magicDir}}/reviews/{需求域名}-round{N}-{核心内容}-spec-review-v{版本}.md`
480
480
 
481
481
  ### 文档产出物模板
482
482
 
483
- ADD 开发流程产生五类文档,模板文件位于 `.qoder/templates/`:
483
+ ADD 开发流程产生五类文档,模板文件位于 `{{magicDir}}/templates/`:
484
484
 
485
485
  | 模板 | 文件路径 | 说明 |
486
486
  |------|---------|------|
487
- | Plan | `.qoder/templates/plan-template.md` | 元信息 + 背景目标 + 方案选型 + 架构设计 + 实施步骤 + 验收标准 + 关联文档 |
488
- | Spec | `.qoder/templates/spec-template.md` | Why + What Changes + Impact + Requirements(WHEN/THEN) |
489
- | Tasks | `.qoder/templates/tasks-template.md` | Phase → Task → SubTask 层级 |
490
- | Checklist | `.qoder/templates/checklist-template.md` | Phase 检查项 + ADD 规则合规检查 |
491
- | Review | `.qoder/templates/review-template.md` | 元信息 + 问题复现 + 方案对比 + 决策结论 + 影响评估 |
492
- | Handoff(单轮) | `.qoder/templates/handoff-single-round-template.md` | 单轮变更 Handoff 基础格式(9 章节) |
493
- | Handoff(多轮) | `.qoder/templates/handoff-multi-round-template.md` | 多轮原子事务 Handoff(全局结构 + 13 子章节 + 收敛规则 + 启动模板) |
487
+ | Plan | `{{magicDir}}/templates/plan-template.md` | 元信息 + 背景目标 + 方案选型 + 架构设计 + 实施步骤 + 验收标准 + 关联文档 |
488
+ | Spec | `{{magicDir}}/templates/spec-template.md` | Why + What Changes + Impact + Requirements(WHEN/THEN) |
489
+ | Tasks | `{{magicDir}}/templates/tasks-template.md` | Phase → Task → SubTask 层级 |
490
+ | Checklist | `{{magicDir}}/templates/checklist-template.md` | Phase 检查项 + ADD 规则合规检查 |
491
+ | Review | `{{magicDir}}/templates/review-template.md` | 元信息 + 问题复现 + 方案对比 + 决策结论 + 影响评估 |
492
+ | Handoff(单轮) | `{{magicDir}}/templates/handoff-single-round-template.md` | 单轮变更 Handoff 基础格式(9 章节) |
493
+ | Handoff(多轮) | `{{magicDir}}/templates/handoff-multi-round-template.md` | 多轮原子事务 Handoff(全局结构 + 13 子章节 + 收敛规则 + 启动模板) |
494
494
 
495
495
  使用时直接复制模板文件到目标路径,将 `{...}` 占位符替换为实际内容。
496
496
 
@@ -571,7 +571,7 @@ Handoff 分两种场景,格式要求不同:
571
571
  | 2 | **上游已完成** | ✅ | 列表:上游本轮依赖的能力/文件/状态(不允许靠记忆,必须写清楚) |
572
572
  | 3 | **恢复上下文审计查询** | ✅ | MCP 工具调用列表,按"第一步搜索代码 → 第二步搜索文档 → 第三步按行动词"组织。每个 `query_audit_logs` 写清楚预期命中数和返回内容摘要 |
573
573
  | 4 | **原子事务目标** | ✅ | 一句话概括本轮目标;覆盖父 Plan 的哪个 Step |
574
- | 5 | **spec 文件** | ✅ | `.qoder/specs/{spec-name}/spec.md` + `tasks.md` + `checklist.md` 三件套路径 |
574
+ | 5 | **spec 文件** | ✅ | `{{magicDir}}/specs/{spec-name}/spec.md` + `tasks.md` + `checklist.md` 三件套路径 |
575
575
  | 6 | **架构文档** | ✅ | 关联的 `docs/` 下架构/技术文档路径 + 对应章节号 |
576
576
  | 7 | **你要改的文件** | ✅ | 表格:文件路径 + 操作(新建/修改)+ 改什么(一句话) |
577
577
  | 8 | **核心设计** | 🔶 | 本轮最关键的代码片段/设计要点,不超过 10 行 |
@@ -827,12 +827,12 @@ AI 助手遵循"调用工具 → 获得结果 → 编码 → 验证"的闭环流
827
827
 
828
828
  ### MCP-5:稀疏推理恢复(Sparse Inference Recovery)
829
829
 
830
- AI 助手在**每次新对话启动时**,必须先执行 `.qoder/skills/session-init/SKILL.md`(SKILL-1 会话初始化),作为**不可跳过的前置操作**。
830
+ AI 助手在**每次新对话启动时**,必须先执行 `{{magicDir}}/skills/session-init/SKILL.md`(SKILL-1 会话初始化),作为**不可跳过的前置操作**。
831
831
 
832
832
  `session-init` SKILL 的 Step 1 要求调用 `query_audit_logs` 工具查询开发操作审计记录,以恢复开发上下文。
833
833
 
834
834
  **执行顺序**(新对话启动时的首个操作):
835
- 1. 定位并执行 `session-init` SKILL(`.qoder/skills/session-init/SKILL.md`)
835
+ 1. 定位并执行 `session-init` SKILL(`{{magicDir}}/skills/session-init/SKILL.md`)
836
836
  2. 按 SKILL 的 Step 1 调用 `query_audit_logs({})` 查询
837
837
  3. 按 SKILL 的 Step 2 分析推断上下文
838
838
  4. 按 SKILL 的 Step 3 构建摘要
@@ -867,7 +867,7 @@ AI 助手在**每次新对话启动时**,必须先执行 `.qoder/skills/sessio
867
867
 
868
868
  ### MCP 配置
869
869
 
870
- MCP 服务器配置在 `.qoder/mcp.json`,通过 `npx tsx .qoder/scripts/mcp-server.ts` 启动。
870
+ MCP 服务器配置在 `{{magicDir}}/mcp.json`,通过 `npx tsx {{magicDir}}/scripts/mcp-server.ts` 启动。
871
871
  Trae IDE 加载项目时自动连接 MCP 服务器。
872
872
 
873
873
  ### 附录
@@ -394,7 +394,7 @@ server.registerTool(
394
394
 
395
395
  // ADD 工作流产物目录
396
396
  parts.push(`=== ${MAGIC_DIR}/ ADD 工作流产物 ===`)
397
- const qoderDirs = [
397
+ const magicDirs = [
398
398
  { dir: "templates", desc: "ADD 文档模板(11 个)" },
399
399
  { dir: "specs", desc: "specs 三元组(spec+tasks+checklist)" },
400
400
  { dir: "reviews", desc: "方案审查 + 实现审查 + 运行时审查" },
@@ -403,7 +403,7 @@ server.registerTool(
403
403
  { dir: "skills", desc: "SKILL 行为定义(add-paradigm / session-init)" },
404
404
  { dir: "scripts", desc: "工具脚本 + MCP 服务器" },
405
405
  ]
406
- for (const { dir, desc } of qoderDirs) {
406
+ for (const { dir, desc } of magicDirs) {
407
407
  const fullPath = join(PROJECT_ROOT, MAGIC_DIR, dir)
408
408
  if (existsSync(fullPath)) {
409
409
  const entries = await readdir(fullPath)
@@ -981,7 +981,7 @@ export async function record${featureName}Audit(record: ${featureName}AuditRecor
981
981
  server.registerTool(
982
982
  "query_audit_logs",
983
983
  {
984
- description: "稀疏查询开发操作审计日志(DevOperation 表,MCP-5 稀疏推理恢复)。支持多维度检索,AI 可在不同对话会话中通过任意维度组合查询之前的开发操作记录,实现跨会话的上下文恢复。\n\n典型用法:\n- query_audit_logs({ targetType: \"API_ROUTE\" }) — 查所有 API 路由改动\n- query_audit_logs({ targetId: \"src/app/api/knowledge/route.ts\" }) — 查特定文件改动\n- query_audit_logs({ keyword: \"pagination\" }) — 按关键词搜索\n- query_audit_logs({ planKeyword: \"add-qoder\" }) — 按 Plan 关键词查该 Plan 下所有 devlog\n- query_audit_logs({}) — 查最近的记录(session-init 会话恢复)",
984
+ description: "稀疏查询开发操作审计日志(DevOperation 表,MCP-5 稀疏推理恢复)。支持多维度检索,AI 可在不同对话会话中通过任意维度组合查询之前的开发操作记录,实现跨会话的上下文恢复。\n\n典型用法:\n- query_audit_logs({ targetType: \"API_ROUTE\" }) — 查所有 API 路由改动\n- query_audit_logs({ targetId: \"src/app/api/knowledge/route.ts\" }) — 查特定文件改动\n- query_audit_logs({ keyword: \"pagination\" }) — 按关键词搜索\n- query_audit_logs({ planKeyword: \"add-coder\" }) — 按 Plan 关键词查该 Plan 下所有 devlog\n- query_audit_logs({}) — 查最近的记录(session-init 会话恢复)",
985
985
  inputSchema: {
986
986
  targetType: z.string().optional().describe("按目标类型精确过滤"),
987
987
  action: z.string().optional().describe("按操作类型精确过滤"),
@@ -1223,7 +1223,7 @@ server.registerTool(
1223
1223
  }
1224
1224
 
1225
1225
  // ${MAGIC_DIR}/ 产物类别映射
1226
- const qoderCategoryMap: Record<string, string> = {
1226
+ const magicCategoryMap: Record<string, string> = {
1227
1227
  plans: "plan",
1228
1228
  specs: "spec",
1229
1229
  reviews: "review",
@@ -1232,7 +1232,7 @@ server.registerTool(
1232
1232
  // 收集所有 Markdown 文件
1233
1233
  const allFiles: Array<{ path: string; relativePath: string; category: string }> = []
1234
1234
 
1235
- const walkDir = async (dir: string, relativeDir: string, sourceType: "docs" | "qoder" = "docs"): Promise<void> => {
1235
+ const walkDir = async (dir: string, relativeDir: string, sourceType: "docs" | "magic" = "docs"): Promise<void> => {
1236
1236
  try {
1237
1237
  const entries = await readdir(dir, { withFileTypes: true })
1238
1238
  for (const entry of entries) {
@@ -1242,10 +1242,10 @@ server.registerTool(
1242
1242
  await walkDir(fullPath, relPath, sourceType)
1243
1243
  } else if (entry.isFile() && (entry.name.endsWith(".md") || entry.name.endsWith(".html"))) {
1244
1244
  let docCategory = "unknown"
1245
- if (sourceType === "qoder") {
1245
+ if (sourceType === "magic") {
1246
1246
  // ${MAGIC_DIR}/ 产物按目录分类
1247
1247
  const topDir = relPath.split("/")[0]
1248
- docCategory = qoderCategoryMap[topDir] || "unknown"
1248
+ docCategory = magicCategoryMap[topDir] || "unknown"
1249
1249
  // handoff 文件特殊识别(存放在 plans/ 下但含 handoff 关键词)
1250
1250
  if (topDir === "plans" && entry.name.includes("handoff")) {
1251
1251
  docCategory = "handoff"
@@ -1274,11 +1274,11 @@ server.registerTool(
1274
1274
  // 搜索 docs/ 目录
1275
1275
  await walkDir(docsDir, "", "docs")
1276
1276
  // 搜索 ${MAGIC_DIR}/ 产物目录(plans/specs/reviews)
1277
- const qoderSearchDirs = ["plans", "specs", "reviews"]
1278
- for (const qDir of qoderSearchDirs) {
1279
- const qPath = join(PROJECT_ROOT, MAGIC_DIR, qDir)
1280
- if (existsSync(qPath)) {
1281
- await walkDir(qPath, qDir, "qoder")
1277
+ const magicSearchDirs = ["plans", "specs", "reviews"]
1278
+ for (const mDir of magicSearchDirs) {
1279
+ const mPath = join(PROJECT_ROOT, MAGIC_DIR, mDir)
1280
+ if (existsSync(mPath)) {
1281
+ await walkDir(mPath, mDir, "magic")
1282
1282
  }
1283
1283
  }
1284
1284
 
@@ -2127,12 +2127,12 @@ server.registerTool(
2127
2127
  const planContent = await readFileSafe(planPath)
2128
2128
  let specDirName = ""
2129
2129
  if (planContent) {
2130
- const specMatch = planContent.match(/Spec:\s*\.qoder\/specs\/([^/\s]+)/)
2130
+ const specMatch = planContent.match(/Spec:\s*\.(qoder|claude|add|vscode)\/specs\/([^/\s]+)/)
2131
2131
  if (specMatch) specDirName = specMatch[1]
2132
2132
  }
2133
2133
  if (!specDirName) {
2134
2134
  // 退而求其次:从 tasks.md 引用提取
2135
- const taskMatch = planContent?.match(/Tasks:\s*\.qoder\/specs\/([^/\s]+)/)
2135
+ const taskMatch = planContent?.match(/Tasks:\s*\.(qoder|claude|add|vscode)\/specs\/([^/\s]+)/)
2136
2136
  if (taskMatch) specDirName = taskMatch[1]
2137
2137
  }
2138
2138
  if (!specDirName) {
@@ -2809,7 +2809,7 @@ server.registerTool(
2809
2809
  if (existsSync(reviewsDir)) {
2810
2810
  const reviewFiles = await readdir(reviewsDir)
2811
2811
  // 从 Plan 全文提取所有 Review 引用,优先匹配含 planKeyword 的
2812
- const allReviewRefs = Array.from(planContent.matchAll(/\.qoder\/reviews\/([^\s)]+\.md)/g))
2812
+ const allReviewRefs = Array.from(planContent.matchAll(/\.(qoder|claude|add|vscode)\/reviews\/([^\s)]+\.md)/g))
2813
2813
  .map(m => m[1].split("/").pop() || "")
2814
2814
  .filter(Boolean)
2815
2815
  // 策略1: 在所有引用中优先选含 planKeyword 的
@@ -2837,10 +2837,10 @@ server.registerTool(
2837
2837
  let specContent = ""
2838
2838
  let tasksContent = ""
2839
2839
  // 从 Plan 绑定或 §7 提取
2840
- const specRef = planContent.match(/Spec:\s*\.qoder\/specs\/([^/\s]+)/)
2840
+ const specRef = planContent.match(/Spec:\s*\.(qoder|claude|add|vscode)\/specs\/([^/\s]+)/)
2841
2841
  if (specRef) specDirName = specRef[1]
2842
2842
  if (!specDirName) {
2843
- const taskRef = planContent.match(/Tasks:\s*\.qoder\/specs\/([^/\s]+)/)
2843
+ const taskRef = planContent.match(/Tasks:\s*\.(qoder|claude|add|vscode)\/specs\/([^/\s]+)/)
2844
2844
  if (taskRef) specDirName = taskRef[1]
2845
2845
  }
2846
2846
  if (!specDirName) {
@@ -7,12 +7,12 @@ description: "Audit-Driven Development paradigm workflow. Invoke when starting a
7
7
 
8
8
  本 Skill 引导你按照 ADD 范式完成功能开发。每次开始新功能、修复 Bug、或修改系统行为时,必须按此工作流执行。
9
9
 
10
- **范式边界**(定义在 `.qoder/rules/project_rules.md` ADD-0):
10
+ **范式边界**(定义在 `{{magicDir}}/rules/project_rules.md` ADD-0):
11
11
  - ADD 是开发阶段编程范式,不是运行时范式
12
12
  - 反馈闭环消费者:IDE 中的 AI 助手 + 编程人员
13
13
  - 运行时范式(裁决层/能力模型)是独立的下一步演化
14
14
 
15
- **核心原则**(始终生效,定义在 `.qoder/rules/project_rules.md`):
15
+ **核心原则**(始终生效,定义在 `{{magicDir}}/rules/project_rules.md`):
16
16
  - ADD-0:范式边界与消费者定义
17
17
  - ADD-0.1:广义文档先行(Documentation First)— Plan → Review → Spec → Code → Checklist → runtime-review → 回归校准。详细流程约束见 ADD-9~ADD-12
18
18
  - ADD-1:可观测性优先于功能实现
@@ -47,7 +47,7 @@ description: "Audit-Driven Development paradigm workflow. Invoke when starting a
47
47
  > **Plan 是后续 ADD 工作流的输入。** 生成 plan 后如需执行,才启动下方 Step 0。
48
48
 
49
49
  1. **读取模板**:读 `plan-template.md`,禁止凭记忆
50
- 2. **命名规范**:`{项目名}-{功能名}-plan-v1.md` → `.qoder/plans/{YYYY-MM}/{DD}/`(按当天日期创建子目录)
50
+ 2. **命名规范**:`{项目名}-{功能名}-plan-v1.md` → `{{magicDir}}/plans/{YYYY-MM}/{DD}/`(按当天日期创建子目录)
51
51
  3. **必含章节**:
52
52
  - 元信息(名称/时间/关联文档/ADD-7审计策略表)
53
53
  - 一、背景与目标
@@ -84,10 +84,12 @@ description: "Audit-Driven Development paradigm workflow. Invoke when starting a
84
84
  | 规范文档 | `docs/*/knowledge/02-规范/` 或 `03-规范/` | 开发规范、状态机规范、核心规范 |
85
85
  | AI 核心文档 | `docs/*/knowledge/03-规范/` | AI 智能体核心规范 |
86
86
 
87
- **此外,ADD 工作流的核心产物由 `.qoder/templates/` 下的 11 个模板定义**,这些模板不是参考资料,而是每次变更必须产出的文档骨架。分析变更影响范围时,必须同步确认需要创建/更新哪些模板产物:
87
+ **此外,ADD 工作流的核心产物由 `{{magicDir}}/templates/` 下的 13 个模板定义**,这些模板不是参考资料,而是每次变更必须产出的文档骨架。分析变更影响范围时,必须同步确认需要创建/更新哪些模板产物:
88
88
 
89
89
  | 模板 | 用途 | 对应阶段 |
90
90
  |------|------|---------|
91
+ | `prd-standard-template.md` | 产品/系统需求文档(新建):背景目标 + 用户场景 + 功能需求 + 非功能需求 + 验收标准 | 需求定义 |
92
+ | `prd-incremental-template.md` | 产品/系统需求文档(增量):在已有 PRD 基础上追加/修改/删除 | 需求变更 |
91
93
  | `plan-template.md` | 需求方案:元信息 + 背景目标 + 方案选型 + 架构设计 + 实施步骤 + 验收标准 + ADD-7审计策略 | 需求理解 |
92
94
  | `add-route-template.md` | Plan→ADD 十阶段执行映射:Step 0-9 具体动作 + Task 映射表 + 审计阶段清单 + 依赖拓扑 | Step 0 |
93
95
  | `spec-template.md` | 功能规格:Why / What Changes / Impact / WHEN-THEN Requirements | Step 0~1 |
@@ -100,7 +102,7 @@ description: "Audit-Driven Development paradigm workflow. Invoke when starting a
100
102
  | `handoff-single-round-template.md` | 单轮交接:9 章节(含恢复上下文审计查询) | 单轮变更完成后 |
101
103
  | `handoff-multi-round-template.md` | 多轮交接:全局拓扑 + 每轮 13 子章节 + 收敛规则 + 启动模板 | 多轮原子事务完成后 |
102
104
 
103
- > **AI 首次学习 ADD 范式时,必须读取上述全部 11 个模板文件。遗漏模板 = 遗漏范式全貌。**
105
+ > **AI 首次学习 ADD 范式时,必须读取上述全部 13 个模板文件。遗漏模板 = 遗漏范式全貌。**
104
106
  >
105
107
  > **每次根据模板生成文档时(plan/spec/review/handoff),MUST 先重新读取对应的模板文件,再填充内容。禁止凭记忆生成——模板可能已在迭代中更新,记忆中的版本可能不完整。**
106
108
 
@@ -147,7 +149,7 @@ find_related_docs({ query: "功能关键词" })
147
149
  4. **ADD-7 审计策略**:从 Plan 元信息 ADD-7 策略表复制,逐文件填写 targetType/action/beforeState/afterState
148
150
  5. **文件清单**:汇总所有涉及文件的 targetType 和操作类型
149
151
 
150
- **命名**:`{需求域名}-{核心内容}-add-route-v1.md` → `.qoder/plans/{YYYY-MM}/{DD}/`(与 Plan 同目录)
152
+ **命名**:`{需求域名}-{核心内容}-add-route-v1.md` → `{{magicDir}}/plans/{YYYY-MM}/{DD}/`(与 Plan 同目录)
151
153
 
152
154
  **关键约束**:
153
155
  - [ ] add-route 必须先于任何代码变更生成(Step 1 依赖 add-route 中的审计阶段清单)
@@ -173,7 +175,7 @@ find_related_docs({ query: "功能关键词" })
173
175
  > **核心原则**:Review 是诊断报告,Plan 是治疗方案。诊断报告的结论必须写进治疗方案,病人才能按修正后的方案治疗。
174
176
 
175
177
  **什么时候触发**:
176
- - Plan Review 已生成(`.qoder/reviews/{需求域名}-*review-v{n}.md` 存在)
178
+ - Plan Review 已生成(`{{magicDir}}/reviews/{需求域名}-*review-v{n}.md` 存在)
177
179
  - Review 中有 P0/P1/P2 问题清单
178
180
  - 人类已确认 Review 结论(通过评审)
179
181
 
@@ -332,7 +334,7 @@ Plan 级闭包: {业务功能描述}
332
334
 
333
335
  ## 附录 A:协作文档规范(命名、格式与交互规则)
334
336
 
335
- > **目标**:确保 `.qoder/specs/`、`.qoder/reviews/` 下的 spec/review/handoff 文件遵循统一的命名和格式约定,使后续 AI Session 能快速定位和恢复上下文。
337
+ > **目标**:确保 `{{magicDir}}/specs/`、`{{magicDir}}/reviews/` 下的 spec/review/handoff 文件遵循统一的命名和格式约定,使后续 AI Session 能快速定位和恢复上下文。
336
338
 
337
339
  **在编写任何代码之前,必须先确认本附录中的文件结构已就位。**
338
340
 
@@ -340,9 +342,9 @@ Plan 级闭包: {业务功能描述}
340
342
 
341
343
  | 文档类型 | 命名规则 | 示例 | 存放位置 |
342
344
  |---------|---------|------|---------|
343
- | 开发任务(specs 三元组) | `项目名-任务名/` | `{{projectName}}-response-strategy/` | `.qoder/specs/` |
344
- | review 文件 | `项目名-任务名-round{N}-review.md` | `{{projectName}}-response-strategy-round2-review.md` | `.qoder/reviews/` |
345
- | handoff 文件 | `项目名-需求名-handoff.md` | `{{projectName}}-co-agent-handoff.md` | `.qoder/plans/{YYYY-MM}/{DD}/`(与 Plan 同目录) |
345
+ | 开发任务(specs 三元组) | `项目名-任务名/` | `{{projectName}}-response-strategy/` | `{{magicDir}}/specs/` |
346
+ | review 文件 | `项目名-任务名-round{N}-review.md` | `{{projectName}}-response-strategy-round2-review.md` | `{{magicDir}}/reviews/` |
347
+ | handoff 文件 | `项目名-需求名-handoff.md` | `{{projectName}}-co-agent-handoff.md` | `{{magicDir}}/plans/{YYYY-MM}/{DD}/`(与 Plan 同目录) |
346
348
 
347
349
  **命名规则说明**:
348
350
 
@@ -357,7 +359,7 @@ Plan 级闭包: {业务功能描述}
357
359
  每个 spec 目录 MUST 包含三个文件,形成"需求→执行→验收"闭环:
358
360
 
359
361
  ```
360
- .qoder/specs/{任务名}/
362
+ {{magicDir}}/specs/{任务名}/
361
363
  ├── spec.md # 需求定义:Why / What Changes / Impact / Boundaries / Requirements
362
364
  ├── tasks.md # 执行拆分:Preconditions / Forbidden / Tasks / Dependencies / Verification
363
365
  └── checklist.md # 验收清单:编号验证项,每条可追溯到 tasks.md 的 Task
@@ -747,7 +749,7 @@ check_add_route_completeness({ planKeyword: "<Plan 核心关键词>" })
747
749
 
748
750
  ### 3.5.1 运行 spec checklist
749
751
 
750
- 检查 `.qoder/specs/{task}/checklist.md` 中的所有检查项:
752
+ 检查 `{{magicDir}}/specs/{task}/checklist.md` 中的所有检查项:
751
753
 
752
754
  - `[T]` 编译期验证项:逐项执行并勾选
753
755
  - `[R]` 运行时验证项:保持 `[ ]`,将自动流转到 review-runtime.md
@@ -774,7 +776,7 @@ check_add_route_completeness({ planKeyword: "<Plan 核心关键词>" })
774
776
  当所有 `[T]` 项均通过后:
775
777
 
776
778
  1. 读取 `review-runtime-template.md`
777
- 2. 复制为 `.qoder/reviews/{project}-review-runtime.md`
779
+ 2. 复制为 `{{magicDir}}/reviews/{project}-review-runtime.md`
778
780
  3. 替换占位符(标题、关联文档路径)
779
781
  4. §1 发现列表初始化为"尚无运行时发现"
780
782
  5. §1 末尾自动插入所有 `[R]` 项的"待运行时验证"清单
@@ -1019,7 +1021,7 @@ LIMIT 10;
1019
1021
  - **§9 后置确认**:逐项确认 tsc/ADD 合规/审计落库
1020
1022
  3. **审计查询语句必须可执行**:`query_audit_logs({ targetId: "..." })` 调用参数来自 `record_dev_operation` 落库的 targetId
1021
1023
  4. **双向链接**:handoff 文件内必须包含指向对应 plan + review 的链接;review 文件内必须包含指向 handoff 的链接
1022
- 5. **写入位置**:`{项目名}-{需求名}-handoff.md` → `.qoder/plans/`
1024
+ 5. **写入位置**:`{项目名}-{需求名}-handoff.md` → `{{magicDir}}/plans/`
1023
1025
 
1024
1026
  ### 未收敛
1025
1027
 
@@ -1038,7 +1040,7 @@ LIMIT 10;
1038
1040
 
1039
1041
  ### 9.1 读取 report-handoff 模板
1040
1042
 
1041
- 读取 `.qoder/templates/report-handoff-template.md`,按模板格式在 handoff 中追加 Report Closure 章节。
1043
+ 读取 `{{magicDir}}/templates/report-handoff-template.md`,按模板格式在 handoff 中追加 Report Closure 章节。
1042
1044
 
1043
1045
  ### 9.2 在 handoff 中追加 Report Closure 章节
1044
1046
 
@@ -39,7 +39,7 @@ description: "会话上下文恢复(稀疏推理)。每次新对话启动时
39
39
  ### 1.1 搜索 review-runtime.md 文件
40
40
 
41
41
  ```bash
42
- find .qoder/reviews/ -name "*review-runtime*" -type f 2>/dev/null
42
+ find {{magicDir}}/reviews/ -name "*review-runtime*" -type f 2>/dev/null
43
43
  ```
44
44
 
45
45
  ### 1.2 逐文件检查未关闭发现
@@ -100,7 +100,7 @@ query_audit_logs({ action: "RUNTIME_ERROR" }) // ADD-11: 运行时异
100
100
  ### 2.4 加载 Plan 索引(L2 操作惯性 — index.md 预载)
101
101
 
102
102
  ```
103
- 读取 .qoder/plans/index.md
103
+ 读取 {{magicDir}}/plans/index.md
104
104
  ```
105
105
 
106
106
  **预期产出**:
@@ -208,7 +208,7 @@ get_project_context({ scope: "add-state" })
208
208
 
209
209
  ## 本 SKILL 的执行检查清单
210
210
 
211
- - [ ] Step 1: 已扫描 `.qoder/reviews/*review-runtime*` 并汇总未关闭发现
211
+ - [ ] Step 1: 已扫描 `{{magicDir}}/reviews/*review-runtime*` 并汇总未关闭发现
212
212
  - [ ] Step 2: 已调用 `query_audit_logs({})`(含 `RUNTIME_ERROR` 查询)
213
213
  - [ ] Step 3: 已分析审计日志推断上下文
214
214
  - [ ] Step 4: 已构建上下文摘要
@@ -35,9 +35,9 @@
35
35
  - [ ] [E] `.claude/settings.json` 含 hook 配置,matcher 使用标准工具名(`Write`, `Edit`, `Bash`)
36
36
  - [ ] [E] `.claude/mcp.json` 存在且格式正确
37
37
  - [ ] [E] `.claude/hooks/` 下 12 个脚本存在且可执行
38
- - [ ] [T] `npx add-coder init --adapter qoder` 生成正确的 `.qoder/` 目录 — 证据: (待填写)|审计: (待填写)
39
- - [ ] [E] `.qoder/settings.json` matcher 使用双套工具名(`Write|write_to_file`, `Edit|edit_file`, `Bash`)
40
- - [ ] [E] `.qoder/hooks/` 下 12 个脚本 + `lib/` 存在
38
+ - [ ] [T] `npx add-coder init --adapter qoder` 生成正确的 `{{magicDir}}/` 目录 — 证据: (待填写)|审计: (待填写)
39
+ - [ ] [E] `{{magicDir}}/settings.json` matcher 使用双套工具名(`Write|write_to_file`, `Edit|edit_file`, `Bash`)
40
+ - [ ] [E] `{{magicDir}}/hooks/` 下 12 个脚本 + `lib/` 存在
41
41
  - [ ] [T] `npx add-coder init --adapter vscode` 生成正确的 `.vscode/` 目录 — 证据: (待填写)|审计: (待填写)
42
42
  - [ ] [E] `.vscode/settings.json`、`launch.json`、`tasks.json`、`extensions.json` 存在
43
43
 
@@ -74,7 +74,7 @@
74
74
  - [ ] [T] `--force` 和 `--yes` 互斥,同时指定时报错 — 证据: (待填写)|审计: (待填写)
75
75
  - [ ] [T] `add-coder sync` 只同步缺失文件 — 证据: (待填写)|审计: (待填写)
76
76
  - [ ] [T] `add-coder status` 检查完整性 — 证据: (待填写)|审计: (待填写)
77
- - [ ] [T] 已有 `.qoder/settings.json` 时 `init` 不覆盖,展示 diff 并交互确认 — 证据: (待填写)|审计: (待填写)
77
+ - [ ] [T] 已有 `{{magicDir}}/settings.json` 时 `init` 不覆盖,展示 diff 并交互确认 — 证据: (待填写)|审计: (待填写)
78
78
  - [ ] [T] 单元测试:`renderer.ts`、`config-loader.ts`、`detect.ts`、`writer.ts` 全部通过 — 证据: (待填写)|审计: (待填写)
79
79
 
80
80
  ---
@@ -90,7 +90,7 @@
90
90
 
91
91
  > ADD 用双层报告替代传统 E2E:代码审查报告(review-implementation.md + review-runtime.md)覆盖实现质量,
92
92
  > Runtime Report 体系(gateway.md + boundary-runtime-report.md)覆盖边界合约持续监测。
93
- > 参考: `policy-update-loop.ts` 的持续反馈闭环模式 + `.qoder/reports/REPORT-WORKFLOW.md`。
93
+ > 参考: `policy-update-loop.ts` 的持续反馈闭环模式 + `{{magicDir}}/reports/REPORT-WORKFLOW.md`。
94
94
 
95
95
  - [ ] [T] `review-implementation.md` 已生成,覆盖全部 9 个 Task 的变更范围 — 证据: (待填写)|审计: (待填写)
96
96
  - [ ] [T] `review-runtime.md` 已生成(含本 checklist 全部 `[R]` 项清单) — 证据: (待填写)|审计: (待填写)
@@ -108,7 +108,7 @@
108
108
  - [ ] [E] Plan/Spec 一致性 — 证据: `check_spec_sync` 结果|审计: (待填写)
109
109
  - [ ] [E] Plan/Spec 修订记录 — 证据: `record_dev_operation` 审计 ID|审计: (待填写)
110
110
  - [ ] [E] 无新增依赖(模板引擎等) — 证据: `git diff package.json` 无新增 dependency|审计: (待填写)
111
- - [ ] [E] 不改 farm-agent 业务代码 — 证据: 仅改动 `packages/add-coder/`|审计: (待填写)
111
+ - [ ] [E] 不改 add-coder 业务代码 — 证据: 仅改动 `packages/add-coder/`|审计: (待填写)
112
112
  - [ ] [E] 审计日志记录完整 — 证据: `query_audit_logs` 回查确认|审计: (待填写)
113
113
 
114
114
  ---
@@ -118,7 +118,7 @@
118
118
  > 当所有 `[T]` 和 `[E]` 编译期检查项均为 `[x]` 时(`[R]` 和 `[H]` 项可保持 `[ ]`),AI 必须执行:
119
119
  >
120
120
  > 1. **读取** `review-implementation-template.md`,逐项填写实现审查内容
121
- > 2. **读取** `review-runtime-template.md`,复制为 `.qoder/reviews/{project}-review-runtime.md`
121
+ > 2. **读取** `review-runtime-template.md`,复制为 `{{magicDir}}/reviews/{project}-review-runtime.md`
122
122
  > - 替换占位符(标题、关联文档路径)
123
123
  > - §1 发现列表初始化为 "尚无运行时发现"
124
124
  > - §1 末尾自动插入本 checklist 中所有 `[R]` 项的清单,标记为 "待运行时验证"
@@ -4,7 +4,7 @@
4
4
 
5
5
  当前 `packages/add-coder/` 是一个不可发布的半成品:
6
6
 
7
- 1. **模板硬编码**:`templates/` 下所有文件直接来自 farm-agent 项目,包含数据库密码、项目名、特定路径等不可移植内容
7
+ 1. **模板硬编码**:`templates/` 下所有文件直接来自 add-coder 项目,包含数据库密码、项目名、特定路径等不可移植内容
8
8
  2. **CLI 纯搬运**:`bin/add-coder.js`(113 行 CommonJS)只有 `init/sync/status` 三个命令,全是 `fs.copyFileSync`,无参数化渲染、无配置合并
9
9
  3. **无适配层抽象**:`.qoder` 和 `.vscode` 是两套独立静态模板,无共享逻辑。加 Claude 适配需要再复制一套
10
10
  4. **VS Code 无 hook 层**:`.vscode/` 只有 MCP 配置,缺少 Qoder 的 11 个 hook 等价物
@@ -75,14 +75,14 @@
75
75
  ## Impact
76
76
 
77
77
  - Affected specs: 无(本 Plan 为全新举措)
78
- - Affected code: `packages/add-coder/`(约 90 个文件变更),不修改 farm-agent 业务代码
79
- - 父 Plan: `.qoder/plans/2026-07/08/farm-agent-add-coder-npm-package-plan-v1.md`
78
+ - Affected code: `packages/add-coder/`(约 90 个文件变更),不修改 add-coder 业务代码
79
+ - 父 Plan: `{{magicDir}}/plans/2026-07/08/add-coder-add-coder-npm-package-plan-v1.md`
80
80
  - 依赖: 无
81
81
  - 后续依赖: 无
82
82
 
83
83
  ## Boundaries
84
84
 
85
- - 本次只改造 `packages/add-coder/` 目录,不修改 farm-agent 业务代码
85
+ - 本次只改造 `packages/add-coder/` 目录,不修改 add-coder 业务代码
86
86
  - 本次不新增 AgentAuditPhase 字面量(npm 包工程化,无业务逻辑审计点)
87
87
  - 审计通过 `record_dev_operation`(ADD-7)落库 DevOperation 表
88
88
  - 模板引擎不引入第三方依赖(Handlebars/EJS 等),用 TypeScript 原生字符串替换
@@ -121,7 +121,7 @@
121
121
 
122
122
  ### Requirement: 模板参数化(硬编码清理)
123
123
 
124
- 系统 SHALL 将 `templates/` 下所有文件中的 farm-agent 硬编码替换为 `{{placeholder}}` 占位符。
124
+ 系统 SHALL 将 `templates/` 下所有文件中的 add-coder 硬编码替换为 `{{placeholder}}` 占位符。
125
125
 
126
126
  #### Scenario: 占位符语法
127
127
 
@@ -174,11 +174,11 @@
174
174
  #### Scenario: 三目录部署(core 内容同步到 IDE magic path)
175
175
 
176
176
  - **WHEN** 执行 `init` 渲染 core 模板后
177
- - **THEN** `templates/core/` 的所有文件 SHALL 同时写入 `.add/`、`.qoder/`、`.claude/` 三个目标目录
177
+ - **THEN** `templates/core/` 的所有文件 SHALL 同时写入 `.add/`、`{{magicDir}}/`、`.claude/` 三个目标目录
178
178
  - **AND** adapter renderers SHALL 只处理 adapter 专属文件(hooks/mcp.json/settings.json/sync-policy.json),不再单独渲染 core 内容
179
179
 
180
180
  **改造步骤**:
181
- 1. `src/core/renderer.ts`:`renderCore()` 返回值改为输出三份文件的映射(`.add/` + `.qoder/` + `.claude/`)
181
+ 1. `src/core/renderer.ts`:`renderCore()` 返回值改为输出三份文件的映射(`.add/` + `{{magicDir}}/` + `.claude/`)
182
182
  2. `src/cli/commands/init.ts`:写入阶段对三目录同名文件去重(内容相同则 skip)
183
183
  3. `src/adapters/{claude,qoder,vscode}/renderer.ts`:删除 core 渲染逻辑,只保留 hooks + mcp + settings 等 adapter 专属文件
184
184
 
@@ -201,7 +201,7 @@
201
201
  #### Scenario: Qoder 适配器
202
202
 
203
203
  - **WHEN** 执行 `npx add-coder init --adapter qoder`
204
- - **THEN** 生成正确的 `.qoder/` 目录,hook 配置 matcher 适配双套工具名(`Write|write_to_file`, `Edit|edit_file`, `Bash`)
204
+ - **THEN** 生成正确的 `{{magicDir}}/` 目录,hook 配置 matcher 适配双套工具名(`Write|write_to_file`, `Edit|edit_file`, `Bash`)
205
205
 
206
206
  #### Scenario: VS Code 适配器
207
207
 
@@ -272,7 +272,7 @@
272
272
 
273
273
  #### Scenario: JSON 合并
274
274
 
275
- - **WHEN** 用户已有 `.qoder/settings.json` 或 `.vscode/settings.json`
275
+ - **WHEN** 用户已有 `{{magicDir}}/settings.json` 或 `.vscode/settings.json`
276
276
  - **THEN** deep merge,已有 `hooks` 数组追加新 hook 而非全量替换
277
277
 
278
278
  ---
@@ -331,12 +331,12 @@
331
331
  #### Scenario: 空项目 init
332
332
 
333
333
  - **WHEN** 在空白项目中执行 `npx add-coder init`
334
- - **THEN** `.add/` `.qoder/` `.claude/` 三目录均含完整 ADD 内容(agents/skills/templates/rules/vocabulary/scripts/hooks/plans/specs/reports/tools),`.vscode/` 含 IDE 配置
334
+ - **THEN** `.add/` `{{magicDir}}/` `.claude/` 三目录均含完整 ADD 内容(agents/skills/templates/rules/vocabulary/scripts/hooks/plans/specs/reports/tools),`.vscode/` 含 IDE 配置
335
335
 
336
336
  #### Scenario: plans/specs 示例
337
337
 
338
338
  - **WHEN** 用户首次 init
339
- - **THEN** `.qoder/plans/` 含 add-coder 6轮范例,`.qoder/specs/` 含 spec/tasks/checklist 范例
339
+ - **THEN** `{{magicDir}}/plans/` 含 add-coder 6轮范例,`{{magicDir}}/specs/` 含 spec/tasks/checklist 范例
340
340
 
341
341
  #### Scenario: 三端兼容
342
342
 
@@ -345,7 +345,7 @@
345
345
 
346
346
  #### Scenario: 已有配置不覆盖
347
347
 
348
- - **WHEN** 用户已有 `.qoder/settings.json` 时执行 `init`
348
+ - **WHEN** 用户已有 `{{magicDir}}/settings.json` 时执行 `init`
349
349
  - **THEN** 不覆盖已有配置,展示 diff 并交互确认
350
350
 
351
351
  #### Scenario: Prisma 迁移幂等