aodw-skill 0.7.18 → 0.7.22

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 (141) hide show
  1. package/.aodw-next/01-core/ai-project-overview-rules.md +5 -5
  2. package/.aodw-next/01-core/csf-thinking-framework.md +1 -1
  3. package/.aodw-next/02-workflow/rt-manager.md +22 -1
  4. package/.aodw-next/02-workflow/ui-workflow-rules.md +0 -3
  5. package/.aodw-next/05-tooling/ai-tools-init-rules.md +2 -2
  6. package/.aodw-next/README.md +0 -1
  7. package/.aodw-next/SKILL.md +5 -5
  8. package/.aodw-next/manifest.yaml +0 -5
  9. package/AODW_Adapters/README.md +24 -31
  10. package/README.md +10 -15
  11. package/bin/aodw.js +53 -123
  12. package/bin/processors/index.js +1 -35
  13. package/bin/update-adapters-from-template.js +1 -15
  14. package/package.json +4 -4
  15. package/.aodw-next/01-core/ai-interaction-rules-summary.md +0 -37
  16. package/.aodw-next/01-core/ai-knowledge-rules-summary.md +0 -25
  17. package/.aodw-next/01-core/git-discipline-summary.md +0 -36
  18. package/.aodw-next/02-workflow/rt-id-generation-rules.md +0 -24
  19. package/.aodw-next/02-workflow/rt-manager-summary.md +0 -15
  20. package/.aodw-next/02-workflow/ui-workflow-rules-summary.md +0 -39
  21. package/.aodw-next/03-standards/stacks/rust-axum/ai-coding-rules-backend.md +0 -134
  22. package/.aodw-next/06-project/README.md +0 -16
  23. package/.aodw-next/07-optimization/token-usage-analysis.md +0 -253
  24. package/.aodw-next/templates/TEMPLATE-APPLICATION-GUIDE.md +0 -110
  25. package/.aodw-next/templates/audit-report-template.md +0 -232
  26. package/.aodw-next/templates/changelog-template.md +0 -16
  27. package/.aodw-next/templates/checklists/coding-standards-template.md +0 -130
  28. package/.aodw-next/templates/csf-review-template.md +0 -201
  29. package/.aodw-next/templates/impact-template.md +0 -17
  30. package/.aodw-next/templates/invariants-template.md +0 -12
  31. package/.aodw-next/templates/plan-lite-template.md +0 -20
  32. package/.aodw-next/templates/rt-decision-template.md +0 -13
  33. package/.aodw-next/templates/rt-intake-template.md +0 -33
  34. package/.aodw-next/templates/spec-lite-template.md +0 -26
  35. package/.aodw-next/templates/tests-template.md +0 -13
  36. package/.aodw-next/templates/tools-config/README.md +0 -112
  37. package/AODW_Adapters/_backup/v3.1.0-pre-refactor/antigravity/.agent/rules/aodw-check.md +0 -7
  38. package/AODW_Adapters/_backup/v3.1.0-pre-refactor/antigravity/.agent/rules/aodw-done.md +0 -7
  39. package/AODW_Adapters/_backup/v3.1.0-pre-refactor/antigravity/.agent/rules/aodw-full.md +0 -7
  40. package/AODW_Adapters/_backup/v3.1.0-pre-refactor/antigravity/.agent/rules/aodw-governance.md +0 -7
  41. package/AODW_Adapters/_backup/v3.1.0-pre-refactor/antigravity/.agent/rules/aodw-impact.md +0 -7
  42. package/AODW_Adapters/_backup/v3.1.0-pre-refactor/antigravity/.agent/rules/aodw-init.md +0 -7
  43. package/AODW_Adapters/_backup/v3.1.0-pre-refactor/antigravity/.agent/rules/aodw-invariants.md +0 -7
  44. package/AODW_Adapters/_backup/v3.1.0-pre-refactor/antigravity/.agent/rules/aodw-lite.md +0 -7
  45. package/AODW_Adapters/_backup/v3.1.0-pre-refactor/antigravity/.agent/rules/aodw-module.md +0 -7
  46. package/AODW_Adapters/_backup/v3.1.0-pre-refactor/antigravity/.agent/rules/aodw-new.md +0 -7
  47. package/AODW_Adapters/_backup/v3.1.0-pre-refactor/antigravity/.agent/rules/aodw-open.md +0 -7
  48. package/AODW_Adapters/_backup/v3.1.0-pre-refactor/antigravity/.agent/rules/aodw-pause.md +0 -7
  49. package/AODW_Adapters/_backup/v3.1.0-pre-refactor/antigravity/.agent/rules/aodw-resume.md +0 -7
  50. package/AODW_Adapters/_backup/v3.1.0-pre-refactor/antigravity/.agent/rules/aodw-tests.md +0 -7
  51. package/AODW_Adapters/_backup/v3.1.0-pre-refactor/antigravity/.agent/rules/aodw-upgrade.md +0 -7
  52. package/AODW_Adapters/_backup/v3.1.0-pre-refactor/antigravity/.agent/rules/aodw.md +0 -35
  53. package/AODW_Adapters/_backup/v3.1.0-pre-refactor/antigravity/global_workflows/aodw-check.md +0 -16
  54. package/AODW_Adapters/_backup/v3.1.0-pre-refactor/antigravity/global_workflows/aodw-done.md +0 -16
  55. package/AODW_Adapters/_backup/v3.1.0-pre-refactor/antigravity/global_workflows/aodw-full.md +0 -14
  56. package/AODW_Adapters/_backup/v3.1.0-pre-refactor/antigravity/global_workflows/aodw-governance.md +0 -13
  57. package/AODW_Adapters/_backup/v3.1.0-pre-refactor/antigravity/global_workflows/aodw-impact.md +0 -13
  58. package/AODW_Adapters/_backup/v3.1.0-pre-refactor/antigravity/global_workflows/aodw-init.md +0 -13
  59. package/AODW_Adapters/_backup/v3.1.0-pre-refactor/antigravity/global_workflows/aodw-invariants.md +0 -13
  60. package/AODW_Adapters/_backup/v3.1.0-pre-refactor/antigravity/global_workflows/aodw-lite.md +0 -14
  61. package/AODW_Adapters/_backup/v3.1.0-pre-refactor/antigravity/global_workflows/aodw-module.md +0 -13
  62. package/AODW_Adapters/_backup/v3.1.0-pre-refactor/antigravity/global_workflows/aodw-new.md +0 -30
  63. package/AODW_Adapters/_backup/v3.1.0-pre-refactor/antigravity/global_workflows/aodw-open.md +0 -10
  64. package/AODW_Adapters/_backup/v3.1.0-pre-refactor/antigravity/global_workflows/aodw-pause.md +0 -12
  65. package/AODW_Adapters/_backup/v3.1.0-pre-refactor/antigravity/global_workflows/aodw-resume.md +0 -12
  66. package/AODW_Adapters/_backup/v3.1.0-pre-refactor/antigravity/global_workflows/aodw-tests.md +0 -13
  67. package/AODW_Adapters/_backup/v3.1.0-pre-refactor/antigravity/global_workflows/aodw-upgrade.md +0 -12
  68. package/AODW_Adapters/_backup/v3.1.0-pre-refactor/antigravity/global_workflows/aodw.md +0 -18
  69. package/AODW_Adapters/_backup/v3.1.0-pre-refactor/claude/CLAUDE.md +0 -17
  70. package/AODW_Adapters/_backup/v3.1.0-pre-refactor/cursor/.cursor/commands/aodw-check.md +0 -30
  71. package/AODW_Adapters/_backup/v3.1.0-pre-refactor/cursor/.cursor/commands/aodw-done.md +0 -52
  72. package/AODW_Adapters/_backup/v3.1.0-pre-refactor/cursor/.cursor/commands/aodw-full.md +0 -31
  73. package/AODW_Adapters/_backup/v3.1.0-pre-refactor/cursor/.cursor/commands/aodw-governance.md +0 -34
  74. package/AODW_Adapters/_backup/v3.1.0-pre-refactor/cursor/.cursor/commands/aodw-impact.md +0 -25
  75. package/AODW_Adapters/_backup/v3.1.0-pre-refactor/cursor/.cursor/commands/aodw-init.md +0 -75
  76. package/AODW_Adapters/_backup/v3.1.0-pre-refactor/cursor/.cursor/commands/aodw-invariants.md +0 -29
  77. package/AODW_Adapters/_backup/v3.1.0-pre-refactor/cursor/.cursor/commands/aodw-lite.md +0 -23
  78. package/AODW_Adapters/_backup/v3.1.0-pre-refactor/cursor/.cursor/commands/aodw-module.md +0 -24
  79. package/AODW_Adapters/_backup/v3.1.0-pre-refactor/cursor/.cursor/commands/aodw-new.md +0 -70
  80. package/AODW_Adapters/_backup/v3.1.0-pre-refactor/cursor/.cursor/commands/aodw-open.md +0 -19
  81. package/AODW_Adapters/_backup/v3.1.0-pre-refactor/cursor/.cursor/commands/aodw-pause.md +0 -19
  82. package/AODW_Adapters/_backup/v3.1.0-pre-refactor/cursor/.cursor/commands/aodw-resume.md +0 -20
  83. package/AODW_Adapters/_backup/v3.1.0-pre-refactor/cursor/.cursor/commands/aodw-tests.md +0 -26
  84. package/AODW_Adapters/_backup/v3.1.0-pre-refactor/cursor/.cursor/commands/aodw-upgrade.md +0 -27
  85. package/AODW_Adapters/_backup/v3.1.0-pre-refactor/cursor/.cursor/commands/aodw.md +0 -69
  86. package/AODW_Adapters/_backup/v3.1.0-pre-refactor/cursor/.cursor/commands/deploypromote.md +0 -20
  87. package/AODW_Adapters/_backup/v3.1.0-pre-refactor/cursor/.cursor/commands/featuretotester.md +0 -32
  88. package/AODW_Adapters/_backup/v3.1.0-pre-refactor/cursor/.cursor/deploy/feature_to_master_push_test_local.sh +0 -390
  89. package/AODW_Adapters/_backup/v3.1.0-pre-refactor/cursor/.cursor/deploy/promote_only.sh +0 -210
  90. package/AODW_Adapters/_backup/v3.1.0-pre-refactor/cursor/.cursor/deploy/rollback_prod.sh +0 -99
  91. package/AODW_Adapters/_backup/v3.1.0-pre-refactor/cursor/.cursor/rules/aodw.mdc +0 -26
  92. package/AODW_Adapters/_backup/v3.1.0-pre-refactor/gemini/.agent/rules/aodw-check.md +0 -29
  93. package/AODW_Adapters/_backup/v3.1.0-pre-refactor/gemini/.agent/rules/aodw-done.md +0 -52
  94. package/AODW_Adapters/_backup/v3.1.0-pre-refactor/gemini/.agent/rules/aodw-full.md +0 -30
  95. package/AODW_Adapters/_backup/v3.1.0-pre-refactor/gemini/.agent/rules/aodw-governance.md +0 -33
  96. package/AODW_Adapters/_backup/v3.1.0-pre-refactor/gemini/.agent/rules/aodw-impact.md +0 -24
  97. package/AODW_Adapters/_backup/v3.1.0-pre-refactor/gemini/.agent/rules/aodw-init.md +0 -75
  98. package/AODW_Adapters/_backup/v3.1.0-pre-refactor/gemini/.agent/rules/aodw-invariants.md +0 -28
  99. package/AODW_Adapters/_backup/v3.1.0-pre-refactor/gemini/.agent/rules/aodw-lite.md +0 -22
  100. package/AODW_Adapters/_backup/v3.1.0-pre-refactor/gemini/.agent/rules/aodw-module.md +0 -23
  101. package/AODW_Adapters/_backup/v3.1.0-pre-refactor/gemini/.agent/rules/aodw-new.md +0 -92
  102. package/AODW_Adapters/_backup/v3.1.0-pre-refactor/gemini/.agent/rules/aodw-open.md +0 -18
  103. package/AODW_Adapters/_backup/v3.1.0-pre-refactor/gemini/.agent/rules/aodw-pause.md +0 -18
  104. package/AODW_Adapters/_backup/v3.1.0-pre-refactor/gemini/.agent/rules/aodw-resume.md +0 -19
  105. package/AODW_Adapters/_backup/v3.1.0-pre-refactor/gemini/.agent/rules/aodw-tests.md +0 -25
  106. package/AODW_Adapters/_backup/v3.1.0-pre-refactor/gemini/.agent/rules/aodw-upgrade.md +0 -26
  107. package/AODW_Adapters/_backup/v3.1.0-pre-refactor/gemini/.agent/rules/aodw.md +0 -68
  108. package/AODW_Adapters/_backup/v3.1.0-pre-refactor/gemini/GEMINI.md +0 -17
  109. package/AODW_Adapters/_backup/v4.0.0-simplified/antigravity/.agent/rules/aodw-analyze.md +0 -15
  110. package/AODW_Adapters/_backup/v4.0.0-simplified/antigravity/.agent/rules/aodw-complete.md +0 -15
  111. package/AODW_Adapters/_backup/v4.0.0-simplified/antigravity/.agent/rules/aodw-control.md +0 -14
  112. package/AODW_Adapters/_backup/v4.0.0-simplified/antigravity/.agent/rules/aodw-decide.md +0 -16
  113. package/AODW_Adapters/_backup/v4.0.0-simplified/antigravity/.agent/rules/aodw-governance.md +0 -7
  114. package/AODW_Adapters/_backup/v4.0.0-simplified/antigravity/.agent/rules/aodw-implement.md +0 -16
  115. package/AODW_Adapters/_backup/v4.0.0-simplified/antigravity/.agent/rules/aodw-init.md +0 -7
  116. package/AODW_Adapters/_backup/v4.0.0-simplified/antigravity/.agent/rules/aodw-intake.md +0 -15
  117. package/AODW_Adapters/_backup/v4.0.0-simplified/antigravity/.agent/rules/aodw-open.md +0 -7
  118. package/AODW_Adapters/_backup/v4.0.0-simplified/antigravity/.agent/rules/aodw-simplified.md +0 -107
  119. package/AODW_Adapters/_backup/v4.0.0-simplified/antigravity/.agent/rules/aodw-verify.md +0 -14
  120. package/AODW_Adapters/_backup/v4.0.0-simplified/antigravity/global_workflows/aodw-analyze.md +0 -24
  121. package/AODW_Adapters/_backup/v4.0.0-simplified/antigravity/global_workflows/aodw-complete.md +0 -23
  122. package/AODW_Adapters/_backup/v4.0.0-simplified/antigravity/global_workflows/aodw-control.md +0 -21
  123. package/AODW_Adapters/_backup/v4.0.0-simplified/antigravity/global_workflows/aodw-decide.md +0 -26
  124. package/AODW_Adapters/_backup/v4.0.0-simplified/antigravity/global_workflows/aodw-governance.md +0 -13
  125. package/AODW_Adapters/_backup/v4.0.0-simplified/antigravity/global_workflows/aodw-implement.md +0 -21
  126. package/AODW_Adapters/_backup/v4.0.0-simplified/antigravity/global_workflows/aodw-init.md +0 -13
  127. package/AODW_Adapters/_backup/v4.0.0-simplified/antigravity/global_workflows/aodw-intake.md +0 -28
  128. package/AODW_Adapters/_backup/v4.0.0-simplified/antigravity/global_workflows/aodw-open.md +0 -10
  129. package/AODW_Adapters/_backup/v4.0.0-simplified/antigravity/global_workflows/aodw-verify.md +0 -20
  130. package/AODW_Adapters/_backup/v4.0.0-simplified/antigravity/global_workflows/aodw.md +0 -18
  131. package/AODW_Adapters/gemini/.agent/rules/aodw-next.md +0 -70
  132. package/AODW_Adapters/gemini/GEMINI.md +0 -18
  133. package/AODW_Adapters/general/.github/copilot-instructions.md +0 -34
  134. package/AODW_Adapters/general/AGENTS.md +0 -70
  135. package/docs/README.md +0 -26
  136. package/docs/adapter-evaluation.md +0 -55
  137. package/docs/backend-guidelines.md +0 -335
  138. package/docs/frontend-guidelines.md +0 -266
  139. package/docs/installation-variants.md +0 -88
  140. package/docs/migration-guide-0.2.0.md +0 -250
  141. package/docs/platform-matrix.md +0 -83
@@ -193,7 +193,7 @@ Recommended: A(理由:...)
193
193
 
194
194
  ### 自动检测的内容
195
195
  ```markdown
196
- <!-- AUTO-DETECTED: 以下内容由 aodw-skill init-overview 自动检测 -->
196
+ <!-- AUTO-DETECTED: 以下内容由 aodw-skill init 自动检测 -->
197
197
  - 前端:React 18.3.0
198
198
  - 后端:FastAPI 0.104.0
199
199
  <!-- END AUTO-DETECTED -->
@@ -249,18 +249,18 @@ Recommended: A(理由:...)
249
249
  2. **逐步完善**:不要一次性要求用户完善所有信息,可以分步骤进行
250
250
  3. **提供建议**:AI 应该基于代码分析提供建议,而不是只询问用户
251
251
  4. **格式规范**:确保生成的内容符合 `ai-overview.md` 的模板格式
252
- 5. **及时更新**:当项目结构发生变化时,提醒用户运行 `aodw-skill init-overview` 更新
252
+ 5. **及时更新**:当项目结构发生重大变化时,可以运行 `aodw-skill init` 重新检测(会保留用户手动添加的内容)
253
253
 
254
254
  ---
255
255
 
256
256
  ## 8. 与 CLI 命令的关系
257
257
 
258
- - **CLI 命令**(`aodw-skill init-overview`):负责自动检测和生成基础信息
258
+ - **CLI 命令**(`aodw-skill init`):负责自动检测和生成基础信息
259
259
  - **AI 规则**(本文件):负责引导用户完善复杂信息(架构描述、模块职责等)
260
260
 
261
261
  两者配合使用:
262
- 1. 用户运行 `aodw-skill init-overview` 生成基础信息
263
- 2. 用户运行"初始化项目概览"命令,AI 引导完善详细信息
262
+ 1. 用户运行 `aodw-skill init` 自动生成基础项目信息
263
+ 2. 用户通过 AI 对话进一步完善详细信息(架构描述、模块职责等)
264
264
 
265
265
 
266
266
 
@@ -362,7 +362,7 @@ CSF 思维框架与 AODW 核心原则完全兼容:
362
362
 
363
363
  ### 10.2 工具支持
364
364
 
365
- - 创建 CSF 审查模板(`.aodw-next/templates/csf-review-template.md`)
365
+ - 使用 RT 目录中的审查文档记录 CSF 结果(无需依赖内置模板文件)
366
366
  - 在平台适配器中添加 CSF 审查触发规则(如 `aodw-csf-review.md`)
367
367
  - 在相关流程文档中引用 CSF 审查要求
368
368
 
@@ -57,7 +57,7 @@ RT-Manager 统一管理全局状态机更新。
57
57
  - 重构
58
58
 
59
59
  ### 3.2 执行步骤
60
- 1. 生成 RT-ID(使用本地生成或远程获取)
60
+ 1. 生成 RT-ID(固定本地生成)
61
61
  2. 创建 RT 目录结构
62
62
  3. 执行交互式澄清(选项化提问)
63
63
  4. 记录立项信息到 `intake.md`
@@ -126,3 +126,24 @@ AI 根据决策结果,加载对应的 Profile:
126
126
  - `01-core/git-discipline.md`(分支与提交规范)
127
127
  - `01-core/ai-interaction-rules.md`(交互规范)
128
128
  - `01-core/ai-knowledge-rules.md`(知识同步规范)
129
+
130
+ ---
131
+
132
+ ## 9. RT-ID 本地生成规则
133
+
134
+ ### 9.1 强制策略
135
+
136
+ AODW 使用本地生成 RT-ID,不依赖远程服务。
137
+
138
+ ### 9.2 生成逻辑
139
+
140
+ 1. 扫描项目 `RT/` 目录下所有 `RT-XXX` 格式的目录
141
+ 2. 找到最大序号 `N`
142
+ 3. 生成新 ID:`RT-{N+1}`(补零到 3 位,如 `RT-001`, `RT-002`)
143
+ 4. 如果生成的 ID 对应目录已存在:递增序号直到找到可用 ID
144
+
145
+ ### 9.3 检查清单
146
+
147
+ - [ ] 已扫描 `RT/` 目录找到最大序号
148
+ - [ ] 已生成 `RT-{N+1}` 格式的 ID
149
+ - [ ] 已确认该 ID 对应目录不存在
@@ -61,9 +61,6 @@
61
61
 
62
62
  ## 3. 配置模板位置
63
63
 
64
- **HTML 原型模板**:
65
- - 位置:`.aodw-next/templates/ui-prototype.template.html`
66
-
67
64
  **前端工具配置**:
68
65
  - ESLint 配置模板:`.aodw-next/templates/tools-config/frontend/eslint.config.template.json`
69
66
  - TypeScript 配置模板:`.aodw-next/templates/tools-config/frontend/tsconfig.paths.template.json`
@@ -32,8 +32,8 @@
32
32
 
33
33
  **如果文件不存在或不完整**:
34
34
  - AI 必须停止当前流程。
35
- - AI 必须提示用户:"**检测到项目概览尚未初始化。为了更准确地配置工具,请先执行项目概览初始化。**"
36
- - 建议运行命令:"初始化项目概览"(`aodw-skill init-overview`)。
35
+ - AI 必须提示用户:"**检测到项目概览尚未初始化。为了更准确地配置工具,请先运行 `aodw-skill init` 重新初始化项目。**"
36
+ - 说明:项目概览会在 `aodw-skill init` 时自动生成,无需额外命令。
37
37
 
38
38
  ### Step 2: 读取项目配置
39
39
 
@@ -17,7 +17,6 @@
17
17
  - `spec-full-profile.md` — Spec-Full 执行规范(复杂变更)
18
18
  - `spec-lite-profile.md` — Spec-Lite 执行规范(简单变更)
19
19
  - `ui-workflow-rules.md` — UI 专项开发流程
20
- - `rt-id-generation-rules.md` — RT ID 本地生成规则
21
20
 
22
21
  ### 03-standards(编码规范)
23
22
  - `ai-coding-rules.md` — 通用编码规范
@@ -9,17 +9,17 @@ description: AODW (AI-Orchestrated Development Workflow) — 完整的 AI 协作
9
9
 
10
10
  ## 加载顺序(渐进式披露,优先读 summary)
11
11
 
12
- 1. **总是加载**:`01-core/aodw-constitution-summary.md`(最高行为准则)
12
+ 1. **总是加载**:`01-core/aodw-constitution.md`(最高行为准则)
13
13
  2. **按场景追加**(优先读 `*-summary.md`,需要细节时再读完整版):
14
14
 
15
15
  | 场景 | 追加加载 |
16
16
  |------|---------|
17
- | 立项 / 创建 RT | `rt-manager-summary.md` + `ai-interaction-rules-summary.md` + `rt-id-generation-rules.md` |
18
- | Spec-Lite 执行 | `spec-lite-profile-summary.md` + `git-discipline-summary.md` |
19
- | Spec-Full 执行 | `spec-full-profile-summary.md` + `ai-coding-rules.md`(按技术栈) |
17
+ | 立项 / 创建 RT | `rt-manager.md` + `ai-interaction-rules.md` |
18
+ | Spec-Lite 执行 | `spec-lite-profile.md` + `git-discipline.md` |
19
+ | Spec-Full 执行 | `spec-full-profile.md` + `ai-coding-rules.md`(按技术栈) |
20
20
  | Git 操作 / 合并 | `git-discipline.md`(完整版) |
21
21
  | 审计 | `04-auditors/aodw-requirement-auditor-rules.md` |
22
- | 知识同步 | `ai-knowledge-rules-summary.md` |
22
+ | 知识同步 | `ai-knowledge-rules.md` |
23
23
 
24
24
  ## 核心概念
25
25
 
@@ -79,11 +79,6 @@ rules:
79
79
  description: Rules for initializing and maintaining project overview file.
80
80
  path: 01-core/ai-project-overview-rules.md
81
81
 
82
- - id: rt-id-generation-rules
83
- name: RT ID Generation Rules
84
- description: Rules for generating and managing RT sequence IDs locally.
85
- path: 02-workflow/rt-id-generation-rules.md
86
-
87
82
  - id: ai-tools-init-rules
88
83
  name: AI Tools Init Rules
89
84
  description: Rules for initializing and verifying development tooling (ESLint, Prettier, Ruff, Black, etc.).
@@ -6,22 +6,19 @@
6
6
 
7
7
  ### `cursor/`
8
8
  **Cursor IDE 适配器**
9
- - `.cursor/` - Cursor 配置目录
10
- - 包含规则文件、命令定义等
11
-
12
- ### `gemini/`
13
- **Google Gemini 适配器**
14
- - `.agent/` - Gemini Agent 配置
15
- - `GEMINI.md` - Gemini 专用提示词
9
+ - `.cursor/rules/aodw-next.mdc` - Cursor 规则文件
10
+ - 使用 Cursor 的 `.mdc` (Markdown Component) 格式
11
+ - 支持命令索引和上下文加载指令
16
12
 
17
13
  ### `claude/`
18
14
  **Anthropic Claude 适配器**
19
- - `CLAUDE.md` - Claude 专用提示词
15
+ - `CLAUDE.md` - Claude Code 项目指令文件
16
+ - 适用于 claude.ai/code 和 Claude Code VSCode 扩展
20
17
 
21
- ### `general/`
22
- **通用适配器**
23
- - `AGENTS.md` - 所有工具通用的说明文档
24
- - 不依赖特定工具的配置
18
+ ### `antigravity/`
19
+ **Google Gemini Antigravity 适配器**
20
+ - `.agent/rules/aodw-next.md` - Gemini Agent 规则文件
21
+ - 适用于 Antigravity AI 平台
25
22
 
26
23
  ## 🚀 使用方法
27
24
 
@@ -30,7 +27,7 @@
30
27
  用户**不应该**直接使用此目录,而是通过 CLI 工具自动安装:
31
28
 
32
29
  ```bash
33
- npx create-aodw init
30
+ npx aodw-skill init
34
31
  ```
35
32
 
36
33
  CLI 会根据选择自动将对应的适配器文件复制到项目根目录。
@@ -55,8 +52,8 @@ CLI 会根据选择自动将对应的适配器文件复制到项目根目录。
55
52
  choices: [
56
53
  { name: 'All (Install all adapters)', value: 'all' },
57
54
  { name: 'Cursor', value: 'cursor', checked: true },
58
- { name: 'Google Gemini', value: 'gemini' },
59
55
  { name: 'Anthropic Claude', value: 'claude' },
56
+ { name: 'Google Gemini (Antigravity)', value: 'antigravity' },
60
57
  { name: 'VS Code', value: 'vscode' } // 新增
61
58
  ]
62
59
  ```
@@ -64,8 +61,8 @@ CLI 会根据选择自动将对应的适配器文件复制到项目根目录。
64
61
  4. **更新逻辑**:
65
62
  确保 `toolsToInstall` 逻辑包含新工具:
66
63
  ```javascript
67
- const toolsToInstall = tools.includes('all')
68
- ? ['cursor', 'gemini', 'claude', 'vscode'] // 新增
64
+ const toolsToInstall = tools.includes('all')
65
+ ? ['cursor', 'claude', 'antigravity', 'vscode'] // 新增
69
66
  : tools;
70
67
  ```
71
68
 
@@ -79,7 +76,7 @@ CLI 会根据选择自动将对应的适配器文件复制到项目根目录。
79
76
 
80
77
  1. 修改对应目录下的文件
81
78
  2. 运行 `cli/publish.sh patch` 发布补丁版本
82
- 3. 用户运行 `npx create-aodw update` 即可获得更新
79
+ 3. 用户运行 `npx aodw-skill update` 即可获得更新
83
80
 
84
81
  ## 🏗️ 设计原则
85
82
 
@@ -89,7 +86,7 @@ CLI 会根据选择自动将对应的适配器文件复制到项目根目录。
89
86
 
90
87
  ❌ **错误做法** - 在适配器中重复规范内容:
91
88
  ```markdown
92
- <!-- GEMINI.md -->
89
+ <!-- CLAUDE.md -->
93
90
  # AODW 规范
94
91
  ## RT 管理
95
92
  RT-ID 格式为 RT-XXX...(大量重复 .aodw 中的内容)
@@ -97,7 +94,7 @@ RT-ID 格式为 RT-XXX...(大量重复 .aodw 中的内容)
97
94
 
98
95
  ✅ **正确做法** - 引导 AI 阅读核心规范:
99
96
  ```markdown
100
- <!-- GEMINI.md -->
97
+ <!-- CLAUDE.md -->
101
98
  你正在一个 AODW 项目中工作。
102
99
  请优先阅读 `.aodw-next/01-core/aodw-constitution.md` 了解核心规范。
103
100
  当处理 RT 时,参考 `.aodw-next/02-workflow/rt-manager.md`。
@@ -114,25 +111,21 @@ RT-ID 格式为 RT-XXX...(大量重复 .aodw 中的内容)
114
111
  AODW_Adapters/
115
112
  ├── README.md # 本文件
116
113
  ├── cursor/
117
- ├── .cursor/
118
- │ ├── aodw_all.mdc
119
- │ ├── rules/
120
- │ │ └── commands/
121
- │ └── CLAUDE_lite.md
122
- ├── gemini/
123
- │ ├── .agent/
124
- │ │ └── rules/
125
- │ └── GEMINI.md
114
+ └── .cursor/
115
+ └── rules/
116
+ └── aodw-next.mdc
126
117
  ├── claude/
127
118
  │ └── CLAUDE.md
128
- └── general/
129
- └── AGENTS.md
119
+ └── antigravity/
120
+ └── .agent/
121
+ └── rules/
122
+ └── aodw-next.md
130
123
  ```
131
124
 
132
125
  ## 🔄 版本同步
133
126
 
134
127
  适配器版本与 AODW 核心规范保持同步:
135
- - 当 `.aodw` 更新时,适配器也应相应调整
128
+ - 当 `.aodw-next/` 更新时,适配器也应相应调整
136
129
  - CLI 的 `update` 命令会同时更新核心和适配器
137
130
 
138
131
  ## 🤝 贡献
package/README.md CHANGED
@@ -20,8 +20,9 @@ npx aodw-skill
20
20
 
21
21
  该命令会:
22
22
  1. 安装 AODW-Next 核心规范(`.aodw-next` 目录)
23
- 2. 根据您的选择安装对应的 AI 工具适配器(Cursor / Gemini / Claude / General)
24
- 3. 初始化 `RT` 目录用于管理开发任务
23
+ 2. 自动检测项目信息(技术栈、架构、模块结构)
24
+ 3. 生成项目概览文档(`ai-overview.md` `modules-index.yaml`)
25
+ 4. 根据您的选择安装对应的 AI 工具适配器(Cursor / Claude / Antigravity)
25
26
 
26
27
  ## 使用方法
27
28
 
@@ -36,8 +37,6 @@ npx aodw-skill
36
37
  - ✓ Cursor (IDE with AI)
37
38
  - ✓ Antigravity (Google Gemini)
38
39
  - ✓ Anthropic Claude
39
- - ✓ Gemini (Web / API)
40
- - ✓ General Agents (OpenAI, etc.)
41
40
 
42
41
  根据您的选择,工具会自动安装相应的配置文件。
43
42
 
@@ -93,21 +92,11 @@ your-project/
93
92
  ## 支持的 AI 工具
94
93
 
95
94
  - **Cursor**: 安装 `.cursor` 目录和 `aodw-next.mdc`
96
- - **Antigravity**: 安装 `.agent` 目录
95
+ - **Antigravity (Google Gemini)**: 安装 `.agent` 目录
97
96
  - **Anthropic Claude**: 安装 `.claude/CLAUDE.md`
98
- - **Gemini**: 安装 `.agent` 目录和 `.gemini/GEMINI.md`
99
- - **General**: 安装通用适配器(如 `.github/copilot-instructions.md`)
100
97
 
101
98
  ## 更多命令
102
99
 
103
- ### 项目概览初始化
104
-
105
- ```bash
106
- npx aodw-skill init-overview
107
- ```
108
-
109
- 自动检测项目的技术栈、架构和模块结构,生成项目概览文档。
110
-
111
100
  ### 工具初始化
112
101
 
113
102
  ```bash
@@ -144,6 +133,12 @@ npm whoami
144
133
 
145
134
  3. 发布到 npm
146
135
 
136
+ - 先检查实际入包文件(推荐):
137
+
138
+ ```bash
139
+ npm run pack:check
140
+ ```
141
+
147
142
  - OTP 模式(账号策略要求 2FA):
148
143
 
149
144
  ```bash
package/bin/aodw.js CHANGED
@@ -11,18 +11,21 @@ import { fileURLToPath } from 'url';
11
11
  import {
12
12
  AntigravityProcessor,
13
13
  CursorProcessor,
14
- CopilotProcessor,
15
14
  ClaudeProcessor,
16
- GeminiProcessor,
17
- GeneralProcessor,
18
15
  BaseProcessor
19
16
  } from './processors/index.js';
20
17
 
21
18
  import { serve } from './commands/serve.js';
22
19
  import { createNewRT } from './commands/new.js';
23
20
  import { initTools } from './commands/init-tools.js';
24
- import { initOverview } from './commands/init-overview.js';
25
21
  import { saveProjectConfig, saveUserConfig, getProjectConfig, getUserConfig } from './utils/config.js';
22
+ import {
23
+ detectTechStack,
24
+ analyzeDirectoryStructure,
25
+ detectModules,
26
+ generateOverviewFile,
27
+ generateModulesIndex
28
+ } from './commands/init-overview.js';
26
29
 
27
30
  const require = createRequire(import.meta.url);
28
31
  const packageJson = require('../package.json');
@@ -37,10 +40,6 @@ const PACKAGE_NAME = packageJson.name || 'aodw-skill';
37
40
  process.env.AODW_CORE_DIR = CORE_DIRNAME;
38
41
  process.env.AODW_PACKAGE_NAME = PACKAGE_NAME;
39
42
 
40
- const GEMINI_RULE_FILES = [
41
- 'aodw-next.md'
42
- ];
43
-
44
43
  // Define source paths (Next version - fixed paths)
45
44
  // Support both development (from source) and production (from npm package) environments
46
45
  function getSourcePaths() {
@@ -49,22 +48,19 @@ function getSourcePaths() {
49
48
  // Try npm package paths first (production)
50
49
  const npmCore = path.join(packageRoot, '.aodw-next');
51
50
  const npmAdapters = path.join(packageRoot, 'AODW_Adapters');
52
- const npmDocs = path.join(packageRoot, 'docs');
53
-
51
+
54
52
  // Try development paths (from source)
55
53
  const devCore = path.join(packageRoot, '../templates/.aodw-next');
56
54
  const devAdapters = path.join(packageRoot, '../templates/AODW_Adapters');
57
- const devDocs = path.join(packageRoot, '../templates/docs');
58
-
55
+
59
56
  // Use npm package paths if they exist, otherwise use development paths
60
57
  const SOURCE_CORE = fs.existsSync(npmCore) ? npmCore : devCore;
61
58
  const SOURCE_ADAPTERS = fs.existsSync(npmAdapters) ? npmAdapters : devAdapters;
62
- const SOURCE_DOCS = fs.existsSync(npmDocs) ? npmDocs : devDocs;
63
-
64
- return { SOURCE_CORE, SOURCE_ADAPTERS, SOURCE_DOCS };
59
+
60
+ return { SOURCE_CORE, SOURCE_ADAPTERS };
65
61
  }
66
62
 
67
- const { SOURCE_CORE, SOURCE_ADAPTERS, SOURCE_DOCS } = getSourcePaths();
63
+ const { SOURCE_CORE, SOURCE_ADAPTERS } = getSourcePaths();
68
64
  const SOURCE_TEMPLATE = path.join(SOURCE_CORE, 'templates/aodw-kernel-loader-template.md');
69
65
 
70
66
  program
@@ -280,9 +276,7 @@ async function runInit() {
280
276
  choices: [
281
277
  { name: 'Cursor (IDE with AI)', value: 'cursor', checked: true },
282
278
  { name: 'Antigravity (Google Gemini)', value: 'antigravity', checked: true },
283
- { name: 'Claude Desktop', value: 'claude', checked: false },
284
- { name: 'Gemini (Web / API)', value: 'gemini', checked: false },
285
- { name: 'General Agents (OpenAI, etc.)', value: 'general', checked: false }
279
+ { name: 'Claude Desktop', value: 'claude', checked: false }
286
280
  ],
287
281
  validate: (answer) => {
288
282
  if (answer.length < 1) {
@@ -305,35 +299,46 @@ async function runInit() {
305
299
  await fs.copy(SOURCE_CORE, targetCore);
306
300
  }
307
301
 
308
- // 2. Initialize project files from templates (first time only)
309
- if (!isUpdate) {
310
- console.log(chalk.blue('正在初始化项目文件...'));
311
- const projectDir = path.join(targetCore, '06-project');
312
- const templateDir = path.join(SOURCE_CORE, 'templates');
313
-
314
- // Check if project files need to be initialized
315
- const aiOverviewExists = fs.existsSync(path.join(projectDir, 'ai-overview.md'));
316
- const modulesIndexExists = fs.existsSync(path.join(projectDir, 'modules-index.yaml'));
317
-
318
- if (!aiOverviewExists && !modulesIndexExists) {
319
- // Copy templates from templates/ directory
320
- if (fs.existsSync(templateDir)) {
321
- const aiOverviewTemplate = path.join(templateDir, 'ai-overview.template.md');
322
- const modulesIndexTemplate = path.join(templateDir, 'modules-index.template.yaml');
323
-
324
- if (fs.existsSync(aiOverviewTemplate)) {
325
- await fs.copy(aiOverviewTemplate, path.join(projectDir, 'ai-overview.md'));
326
- console.log(chalk.yellow(' • 已生成 ai-overview.md(模板)'));
327
- }
328
- if (fs.existsSync(modulesIndexTemplate)) {
329
- await fs.copy(modulesIndexTemplate, path.join(projectDir, 'modules-index.yaml'));
330
- console.log(chalk.yellow(' • 已生成 modules-index.yaml(模板)'));
331
- }
332
- }
333
- console.log(chalk.gray(' 💡 运行 "aodw-skill init-overview" 来自动填充项目信息'));
334
- } else {
335
- console.log(chalk.gray(' 项目文件已存在,跳过初始化'));
302
+ // 2. Initialize project files from templates (for both init and update)
303
+ console.log(chalk.blue('正在初始化项目文件...'));
304
+ const projectDir = path.join(targetCore, '06-project');
305
+ const aiOverviewPath = path.join(projectDir, 'ai-overview.md');
306
+ const modulesIndexPath = path.join(projectDir, 'modules-index.yaml');
307
+
308
+ // Regenerate files when they are missing OR still template placeholders
309
+ const aiOverviewExists = fs.existsSync(aiOverviewPath);
310
+ const modulesIndexExists = fs.existsSync(modulesIndexPath);
311
+ const aiOverviewIsTemplate = aiOverviewExists ? await isTemplateFile(aiOverviewPath) : true;
312
+ const modulesIndexIsTemplate = modulesIndexExists ? await isTemplateFile(modulesIndexPath) : true;
313
+ const shouldGenerateProjectFiles =
314
+ !aiOverviewExists || !modulesIndexExists || aiOverviewIsTemplate || modulesIndexIsTemplate;
315
+
316
+ if (shouldGenerateProjectFiles) {
317
+ // Auto-detect project info and generate files
318
+ console.log(chalk.blue('正在检测项目信息...'));
319
+ const techStack = await detectTechStack();
320
+ const directoryStructure = await analyzeDirectoryStructure();
321
+ const modules = await detectModules();
322
+
323
+ console.log(chalk.green(' • 技术栈检测完成'));
324
+ const techStackSummary = [];
325
+ if (techStack.frontend.length > 0) techStackSummary.push(`前端: ${techStack.frontend.join(', ')}`);
326
+ if (techStack.backend.length > 0) techStackSummary.push(`后端: ${techStack.backend.join(', ')}`);
327
+ if (techStack.database.length > 0) techStackSummary.push(`数据库: ${techStack.database.join(', ')}`);
328
+ if (techStackSummary.length > 0) {
329
+ console.log(chalk.gray(` 检测到: ${techStackSummary.join(' | ')}`));
336
330
  }
331
+
332
+ console.log(chalk.green(' • 目录结构分析完成'));
333
+ console.log(chalk.green(' • 模块识别完成'));
334
+
335
+ // Generate files with detected info
336
+ await generateOverviewFile({ techStack, directoryStructure, modules }, null, modules);
337
+ await generateModulesIndex(modules);
338
+ console.log(chalk.yellow(' • 已生成 ai-overview.md(自动检测)'));
339
+ console.log(chalk.yellow(' • 已生成 modules-index.yaml(自动检测)'));
340
+ } else {
341
+ console.log(chalk.gray(' • 项目文件已存在且为用户内容,跳过初始化'));
337
342
  }
338
343
 
339
344
  // 3. Install Adapters based on selected platforms
@@ -403,55 +408,6 @@ async function runInit() {
403
408
  }
404
409
  }
405
410
 
406
- // Gemini
407
- if (platforms.includes('gemini')) {
408
- console.log(chalk.yellow(' • 安装 Gemini 适配器...'));
409
- const targetGeminiRules = path.join(process.cwd(), '.agent/rules');
410
- await fs.ensureDir(targetGeminiRules);
411
- if (fs.existsSync(SOURCE_TEMPLATE)) {
412
- await installFile(SOURCE_TEMPLATE, path.join(targetGeminiRules, 'aodw-next.md'), GeminiProcessor);
413
- } else {
414
- const sourceGeminiRules = path.join(SOURCE_ADAPTERS, 'gemini/.agent/rules');
415
- if (fs.existsSync(sourceGeminiRules)) {
416
- await copyRecursive(sourceGeminiRules, targetGeminiRules, AntigravityProcessor);
417
- }
418
- }
419
- const sourceGemini = path.join(SOURCE_ADAPTERS, 'gemini/GEMINI.md');
420
- if (fs.existsSync(sourceGemini)) {
421
- await installFile(
422
- sourceGemini,
423
- path.join(process.cwd(), `.gemini/GEMINI.md`),
424
- BaseProcessor
425
- );
426
- }
427
- }
428
-
429
- // General
430
- if (platforms.includes('general')) {
431
- console.log(chalk.yellow(' • 安装通用适配器 (General)...'));
432
- if (fs.existsSync(SOURCE_TEMPLATE)) {
433
- await installFile(
434
- SOURCE_TEMPLATE,
435
- path.join(process.cwd(), CORE_DIRNAME, 'AGENTS.md'),
436
- GeneralProcessor
437
- );
438
- } else {
439
- await installFile(
440
- path.join(SOURCE_ADAPTERS, 'general/AGENTS.md'),
441
- path.join(process.cwd(), CORE_DIRNAME, 'AGENTS.md'),
442
- BaseProcessor
443
- );
444
- }
445
- const sourceCopilot = path.join(SOURCE_ADAPTERS, 'general/.github/copilot-instructions.md');
446
- if (fs.existsSync(sourceCopilot)) {
447
- await installFile(
448
- sourceCopilot,
449
- path.join(process.cwd(), `.github/copilot-instructions.md`),
450
- BaseProcessor
451
- );
452
- }
453
- }
454
-
455
411
  console.log(chalk.green('\n✅ AODW-Next 初始化成功!'));
456
412
  console.log(chalk.white(`项目: ${projectName}`));
457
413
 
@@ -487,22 +443,12 @@ async function runUninstall() {
487
443
  // Cursor
488
444
  await removeIfExists(path.join(cwd, '.cursor/rules', 'aodw-next.mdc'));
489
445
 
490
- // Antigravity
446
+ // Antigravity (Gemini)
491
447
  await removeIfExists(path.join(cwd, '.agent/rules', 'aodw-next.md'));
492
448
 
493
449
  // Claude
494
450
  await removeIfExists(path.join(cwd, '.claude', 'CLAUDE.md'));
495
451
 
496
- // Gemini rules
497
- for (const ruleFile of GEMINI_RULE_FILES) {
498
- await removeIfExists(path.join(cwd, '.agent/rules', ruleFile));
499
- }
500
- await removeIfExists(path.join(cwd, '.gemini', 'GEMINI.md'));
501
-
502
- // General
503
- await removeIfExists(path.join(cwd, CORE_DIRNAME, 'AGENTS.md'));
504
- await removeIfExists(path.join(cwd, '.github', 'copilot-instructions.md'));
505
-
506
452
  console.log(chalk.green('✅ AODW-Next 已卸载。'));
507
453
  }
508
454
  }
@@ -744,22 +690,6 @@ program
744
690
  .description('Initialize development tools (ESLint, Prettier, Ruff, Black, etc.)')
745
691
  .action(initTools);
746
692
 
747
- program
748
- .command('init-overview')
749
- .alias('overview')
750
- .description('Initialize or update project overview (tech stack, architecture, modules)')
751
- .option('--update', 'Update mode: only update changed parts (default)', true)
752
- .option('--force', 'Force mode: full rescan and update', false)
753
- .option('--scan-only', 'Scan only: detect changes without updating files', false)
754
- .option('--no-interactive', 'Non-interactive mode: skip confirmations', false)
755
- .action((options) => {
756
- initOverview({
757
- update: options.update !== false,
758
- force: options.force || false,
759
- scanOnly: options.scanOnly || false,
760
- interactive: options.interactive !== false,
761
- });
762
- });
763
693
 
764
694
  // Main Entry Point
765
695
  if (!process.argv.slice(2).length) {
@@ -61,7 +61,7 @@ export class CursorProcessor extends BaseProcessor {
61
61
  let processed = content.replace(/\{\{REF_PREFIX\}\}/g, '@');
62
62
  // Replace AODW_DIR placeholder (Next version - fixed to .aodw-next)
63
63
  processed = processed.replace(/\{\{AODW_DIR\}\}/g, '.aodw-next');
64
-
64
+
65
65
  // For Rules (.mdc): Inject globs and alwaysApply
66
66
  if (this.targetPath.endsWith('.mdc')) {
67
67
  processed = this.injectFrontmatter(processed, 'globs', '*');
@@ -73,18 +73,6 @@ export class CursorProcessor extends BaseProcessor {
73
73
  }
74
74
  }
75
75
 
76
- export class CopilotProcessor extends BaseProcessor {
77
- transform(content) {
78
- // For Prompts: Inject model and mode
79
- if (this.targetPath.endsWith('.prompt.md')) {
80
- let newContent = this.injectFrontmatter(content, 'model', 'gpt-4o');
81
- newContent = this.injectFrontmatter(newContent, 'mode', 'chat');
82
- return newContent;
83
- }
84
- return content;
85
- }
86
- }
87
-
88
76
  export class ClaudeProcessor extends BaseProcessor {
89
77
  transform(content) {
90
78
  // Replace template placeholders: empty for Claude
@@ -95,25 +83,3 @@ export class ClaudeProcessor extends BaseProcessor {
95
83
  return processed;
96
84
  }
97
85
  }
98
-
99
- export class GeminiProcessor extends BaseProcessor {
100
- transform(content) {
101
- // Replace template placeholders: empty for Gemini
102
- let processed = content.replace(/\{\{REF_PREFIX\}\}/g, '');
103
- // Replace AODW_DIR placeholder (Next version - fixed to .aodw-next)
104
- processed = processed.replace(/\{\{AODW_DIR\}\}/g, '.aodw-next');
105
- // Gemini uses standard markdown, no frontmatter needed
106
- return processed;
107
- }
108
- }
109
-
110
- export class GeneralProcessor extends BaseProcessor {
111
- transform(content) {
112
- // Replace template placeholders: empty for General
113
- let processed = content.replace(/\{\{REF_PREFIX\}\}/g, '');
114
- // Replace AODW_DIR placeholder (Next version - fixed to .aodw-next)
115
- processed = processed.replace(/\{\{AODW_DIR\}\}/g, '.aodw-next');
116
- // General uses standard markdown, no frontmatter needed
117
- return processed;
118
- }
119
- }
@@ -16,9 +16,7 @@ import { fileURLToPath } from 'url';
16
16
  import {
17
17
  AntigravityProcessor,
18
18
  CursorProcessor,
19
- ClaudeProcessor,
20
- GeminiProcessor,
21
- GeneralProcessor
19
+ ClaudeProcessor
22
20
  } from './processors/index.js';
23
21
 
24
22
  const __dirname = path.dirname(fileURLToPath(import.meta.url));
@@ -66,18 +64,6 @@ async function updateAdapters() {
66
64
  await fs.ensureDir(path.dirname(claudeTarget));
67
65
  await installFile(SOURCE_TEMPLATE, claudeTarget, ClaudeProcessor);
68
66
 
69
- // Gemini
70
- console.log('\n📦 Updating Gemini adapter...');
71
- const geminiTarget = path.join(TARGET_ADAPTERS, 'gemini/.agent/rules/aodw-next.md');
72
- await fs.ensureDir(path.dirname(geminiTarget));
73
- await installFile(SOURCE_TEMPLATE, geminiTarget, GeminiProcessor);
74
-
75
- // General
76
- console.log('\n📦 Updating General adapter...');
77
- const generalTarget = path.join(TARGET_ADAPTERS, 'general/AGENTS.md');
78
- await fs.ensureDir(path.dirname(generalTarget));
79
- await installFile(SOURCE_TEMPLATE, generalTarget, GeneralProcessor);
80
-
81
67
  console.log('\n✅ All adapters updated successfully!');
82
68
  console.log('\n📝 Note: These files are fallback files for CLI installation.');
83
69
  console.log(' CLI will use the template directly if available.');