ccg-workflow 1.3.7 → 1.4.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/cli.mjs CHANGED
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env node
2
2
  import cac from 'cac';
3
3
  import ansis from 'ansis';
4
- import { r as readCcgConfig, b as initI18n, s as showMainMenu, i as init, a as i18n } from './shared/ccg-workflow.MFY9c1yE.mjs';
4
+ import { r as readCcgConfig, b as initI18n, s as showMainMenu, i as init, a as i18n } from './shared/ccg-workflow.DaI-Qubz.mjs';
5
5
  import 'inquirer';
6
6
  import 'node:os';
7
7
  import 'pathe';
@@ -13,7 +13,7 @@ import 'smol-toml';
13
13
  import 'node:child_process';
14
14
  import 'node:util';
15
15
 
16
- const version = "1.3.7";
16
+ const version = "1.4.1";
17
17
 
18
18
  function customizeHelp(sections) {
19
19
  sections.unshift({
package/dist/index.d.mts CHANGED
@@ -150,6 +150,30 @@ declare function installAceTool(config: AceToolConfig): Promise<{
150
150
  configPath?: string;
151
151
  }>;
152
152
 
153
+ /**
154
+ * Migration utilities for v1.4.0
155
+ * Handles automatic migration from old directory structure to new one
156
+ */
157
+ interface MigrationResult {
158
+ success: boolean;
159
+ migratedFiles: string[];
160
+ errors: string[];
161
+ skipped: string[];
162
+ }
163
+ /**
164
+ * Migrate from v1.3.x to v1.4.0
165
+ *
166
+ * Changes:
167
+ * 1. ~/.ccg/ → ~/.claude/.ccg/
168
+ * 2. ~/.claude/prompts/ccg/ → ~/.claude/.ccg/prompts/
169
+ * 3. ~/.claude/commands/ccg/_config.md → ~/.claude/.ccg/shared-config.md
170
+ */
171
+ declare function migrateToV1_4_0(): Promise<MigrationResult>;
172
+ /**
173
+ * Check if migration is needed
174
+ */
175
+ declare function needsMigration(): Promise<boolean>;
176
+
153
177
  /**
154
178
  * Get current installed version from package.json
155
179
  */
@@ -172,5 +196,5 @@ declare function checkForUpdates(): Promise<{
172
196
  latestVersion: string | null;
173
197
  }>;
174
198
 
175
- export { changeLanguage, checkForUpdates, compareVersions, createDefaultConfig, createDefaultRouting, getCcgDir, getConfigPath, getCurrentVersion, getLatestVersion, getWorkflowById, getWorkflowConfigs, i18n, init, initI18n, installAceTool, installWorkflows, readCcgConfig, showMainMenu, uninstallAceTool, uninstallWorkflows, update, writeCcgConfig };
199
+ export { changeLanguage, checkForUpdates, compareVersions, createDefaultConfig, createDefaultRouting, getCcgDir, getConfigPath, getCurrentVersion, getLatestVersion, getWorkflowById, getWorkflowConfigs, i18n, init, initI18n, installAceTool, installWorkflows, migrateToV1_4_0, needsMigration, readCcgConfig, showMainMenu, uninstallAceTool, uninstallWorkflows, update, writeCcgConfig };
176
200
  export type { AceToolConfig, CcgConfig, CliOptions, CollaborationMode, InitOptions, InstallResult, ModelRouting, ModelType, RoutingStrategy, SupportedLang, WorkflowConfig };
package/dist/index.d.ts CHANGED
@@ -150,6 +150,30 @@ declare function installAceTool(config: AceToolConfig): Promise<{
150
150
  configPath?: string;
151
151
  }>;
152
152
 
153
+ /**
154
+ * Migration utilities for v1.4.0
155
+ * Handles automatic migration from old directory structure to new one
156
+ */
157
+ interface MigrationResult {
158
+ success: boolean;
159
+ migratedFiles: string[];
160
+ errors: string[];
161
+ skipped: string[];
162
+ }
163
+ /**
164
+ * Migrate from v1.3.x to v1.4.0
165
+ *
166
+ * Changes:
167
+ * 1. ~/.ccg/ → ~/.claude/.ccg/
168
+ * 2. ~/.claude/prompts/ccg/ → ~/.claude/.ccg/prompts/
169
+ * 3. ~/.claude/commands/ccg/_config.md → ~/.claude/.ccg/shared-config.md
170
+ */
171
+ declare function migrateToV1_4_0(): Promise<MigrationResult>;
172
+ /**
173
+ * Check if migration is needed
174
+ */
175
+ declare function needsMigration(): Promise<boolean>;
176
+
153
177
  /**
154
178
  * Get current installed version from package.json
155
179
  */
@@ -172,5 +196,5 @@ declare function checkForUpdates(): Promise<{
172
196
  latestVersion: string | null;
173
197
  }>;
174
198
 
175
- export { changeLanguage, checkForUpdates, compareVersions, createDefaultConfig, createDefaultRouting, getCcgDir, getConfigPath, getCurrentVersion, getLatestVersion, getWorkflowById, getWorkflowConfigs, i18n, init, initI18n, installAceTool, installWorkflows, readCcgConfig, showMainMenu, uninstallAceTool, uninstallWorkflows, update, writeCcgConfig };
199
+ export { changeLanguage, checkForUpdates, compareVersions, createDefaultConfig, createDefaultRouting, getCcgDir, getConfigPath, getCurrentVersion, getLatestVersion, getWorkflowById, getWorkflowConfigs, i18n, init, initI18n, installAceTool, installWorkflows, migrateToV1_4_0, needsMigration, readCcgConfig, showMainMenu, uninstallAceTool, uninstallWorkflows, update, writeCcgConfig };
176
200
  export type { AceToolConfig, CcgConfig, CliOptions, CollaborationMode, InitOptions, InstallResult, ModelRouting, ModelType, RoutingStrategy, SupportedLang, WorkflowConfig };
package/dist/index.mjs CHANGED
@@ -1,4 +1,4 @@
1
- export { c as changeLanguage, q as checkForUpdates, t as compareVersions, d as createDefaultConfig, e as createDefaultRouting, g as getCcgDir, f as getConfigPath, o as getCurrentVersion, p as getLatestVersion, j as getWorkflowById, h as getWorkflowConfigs, a as i18n, i as init, b as initI18n, l as installAceTool, k as installWorkflows, r as readCcgConfig, s as showMainMenu, n as uninstallAceTool, m as uninstallWorkflows, u as update, w as writeCcgConfig } from './shared/ccg-workflow.MFY9c1yE.mjs';
1
+ export { c as changeLanguage, v as checkForUpdates, x as compareVersions, d as createDefaultConfig, e as createDefaultRouting, g as getCcgDir, f as getConfigPath, q as getCurrentVersion, t as getLatestVersion, j as getWorkflowById, h as getWorkflowConfigs, a as i18n, i as init, b as initI18n, l as installAceTool, k as installWorkflows, o as migrateToV1_4_0, p as needsMigration, r as readCcgConfig, s as showMainMenu, n as uninstallAceTool, m as uninstallWorkflows, u as update, w as writeCcgConfig } from './shared/ccg-workflow.DaI-Qubz.mjs';
2
2
  import 'ansis';
3
3
  import 'inquirer';
4
4
  import 'node:os';
@@ -352,7 +352,7 @@ async function changeLanguage(lang) {
352
352
  await i18n.changeLanguage(lang);
353
353
  }
354
354
 
355
- const CCG_DIR = join(homedir(), ".ccg");
355
+ const CCG_DIR = join(homedir(), ".claude", ".ccg");
356
356
  const CONFIG_FILE = join(CCG_DIR, "config.toml");
357
357
  function getCcgDir() {
358
358
  return CCG_DIR;
@@ -381,7 +381,7 @@ async function writeCcgConfig(config) {
381
381
  function createDefaultConfig(options) {
382
382
  return {
383
383
  general: {
384
- version: "1.3.5",
384
+ version: "1.4.0",
385
385
  language: options.language,
386
386
  createdAt: (/* @__PURE__ */ new Date()).toISOString()
387
387
  },
@@ -391,7 +391,8 @@ function createDefaultConfig(options) {
391
391
  },
392
392
  paths: {
393
393
  commands: join(homedir(), ".claude", "commands", "ccg"),
394
- prompts: join(homedir(), ".claude", "prompts", "ccg"),
394
+ prompts: join(CCG_DIR, "prompts"),
395
+ // v1.4.0: 移到配置目录
395
396
  backup: join(CCG_DIR, "backup")
396
397
  },
397
398
  mcp: {
@@ -667,8 +668,10 @@ async function installWorkflows(workflowIds, installDir, force = false) {
667
668
  configPath: ""
668
669
  };
669
670
  const commandsDir = join(installDir, "commands", "ccg");
670
- const promptsDir = join(installDir, "prompts", "ccg");
671
+ const ccgConfigDir = join(installDir, ".ccg");
672
+ const promptsDir = join(ccgConfigDir, "prompts");
671
673
  await fs.ensureDir(commandsDir);
674
+ await fs.ensureDir(ccgConfigDir);
672
675
  await fs.ensureDir(promptsDir);
673
676
  const templateDir = join(PACKAGE_ROOT$1, "templates");
674
677
  for (const workflowId of workflowIds) {
@@ -706,11 +709,11 @@ ${workflow.description}
706
709
  }
707
710
  }
708
711
  }
709
- const configSrcFile = join(templateDir, "commands", "_config.md");
710
- const configDestFile = join(commandsDir, "_config.md");
711
- if (await fs.pathExists(configSrcFile)) {
712
- if (force || !await fs.pathExists(configDestFile)) {
713
- await fs.copy(configSrcFile, configDestFile);
712
+ const sharedConfigSrcFile = join(templateDir, "config", "shared-config.md");
713
+ const sharedConfigDestFile = join(ccgConfigDir, "shared-config.md");
714
+ if (await fs.pathExists(sharedConfigSrcFile)) {
715
+ if (force || !await fs.pathExists(sharedConfigDestFile)) {
716
+ await fs.copy(sharedConfigSrcFile, sharedConfigDestFile);
714
717
  }
715
718
  }
716
719
  const agentsSrcDir = join(templateDir, "commands", "agents");
@@ -936,6 +939,108 @@ async function installAceTool(config) {
936
939
  }
937
940
  }
938
941
 
942
+ async function migrateToV1_4_0() {
943
+ const result = {
944
+ success: true,
945
+ migratedFiles: [],
946
+ errors: [],
947
+ skipped: []
948
+ };
949
+ const oldCcgDir = join(homedir(), ".ccg");
950
+ const newCcgDir = join(homedir(), ".claude", ".ccg");
951
+ const oldPromptsDir = join(homedir(), ".claude", "prompts", "ccg");
952
+ const newPromptsDir = join(newCcgDir, "prompts");
953
+ const oldConfigFile = join(homedir(), ".claude", "commands", "ccg", "_config.md");
954
+ const newConfigFile = join(newCcgDir, "shared-config.md");
955
+ try {
956
+ await fs.ensureDir(newCcgDir);
957
+ if (await fs.pathExists(oldCcgDir)) {
958
+ const files = await fs.readdir(oldCcgDir);
959
+ for (const file of files) {
960
+ const srcFile = join(oldCcgDir, file);
961
+ const destFile = join(newCcgDir, file);
962
+ try {
963
+ if (await fs.pathExists(destFile)) {
964
+ result.skipped.push(`~/.ccg/${file} (already exists in new location)`);
965
+ continue;
966
+ }
967
+ await fs.copy(srcFile, destFile);
968
+ result.migratedFiles.push(`~/.ccg/${file} \u2192 ~/.claude/.ccg/${file}`);
969
+ } catch (error) {
970
+ result.errors.push(`Failed to migrate ${file}: ${error}`);
971
+ result.success = false;
972
+ }
973
+ }
974
+ try {
975
+ const remaining = await fs.readdir(oldCcgDir);
976
+ if (remaining.length === 0) {
977
+ await fs.remove(oldCcgDir);
978
+ result.migratedFiles.push("Removed old ~/.ccg/ directory");
979
+ } else {
980
+ result.skipped.push(`~/.ccg/ (not empty, keeping for safety)`);
981
+ }
982
+ } catch (error) {
983
+ result.skipped.push(`~/.ccg/ (could not remove: ${error})`);
984
+ }
985
+ } else {
986
+ result.skipped.push("~/.ccg/ (does not exist, nothing to migrate)");
987
+ }
988
+ if (await fs.pathExists(oldPromptsDir)) {
989
+ try {
990
+ if (await fs.pathExists(newPromptsDir)) {
991
+ result.skipped.push("~/.claude/prompts/ccg/ (already exists in new location)");
992
+ } else {
993
+ await fs.copy(oldPromptsDir, newPromptsDir);
994
+ result.migratedFiles.push("~/.claude/prompts/ccg/ \u2192 ~/.claude/.ccg/prompts/");
995
+ await fs.remove(oldPromptsDir);
996
+ result.migratedFiles.push("Removed old ~/.claude/prompts/ccg/ directory");
997
+ const promptsParentDir = join(homedir(), ".claude", "prompts");
998
+ const remaining = await fs.readdir(promptsParentDir);
999
+ if (remaining.length === 0) {
1000
+ await fs.remove(promptsParentDir);
1001
+ result.migratedFiles.push("Removed empty ~/.claude/prompts/ directory");
1002
+ }
1003
+ }
1004
+ } catch (error) {
1005
+ result.errors.push(`Failed to migrate prompts: ${error}`);
1006
+ result.success = false;
1007
+ }
1008
+ } else {
1009
+ result.skipped.push("~/.claude/prompts/ccg/ (does not exist, nothing to migrate)");
1010
+ }
1011
+ if (await fs.pathExists(oldConfigFile)) {
1012
+ try {
1013
+ if (await fs.pathExists(newConfigFile)) {
1014
+ result.skipped.push("_config.md (already exists in new location)");
1015
+ } else {
1016
+ await fs.copy(oldConfigFile, newConfigFile);
1017
+ result.migratedFiles.push("~/.claude/commands/ccg/_config.md \u2192 ~/.claude/.ccg/shared-config.md");
1018
+ await fs.remove(oldConfigFile);
1019
+ result.migratedFiles.push("Removed old _config.md from commands directory");
1020
+ }
1021
+ } catch (error) {
1022
+ result.errors.push(`Failed to migrate _config.md: ${error}`);
1023
+ result.success = false;
1024
+ }
1025
+ } else {
1026
+ result.skipped.push("_config.md (does not exist, nothing to migrate)");
1027
+ }
1028
+ } catch (error) {
1029
+ result.errors.push(`Migration failed: ${error}`);
1030
+ result.success = false;
1031
+ }
1032
+ return result;
1033
+ }
1034
+ async function needsMigration() {
1035
+ const oldCcgDir = join(homedir(), ".ccg");
1036
+ const oldPromptsDir = join(homedir(), ".claude", "prompts", "ccg");
1037
+ const oldConfigFile = join(homedir(), ".claude", "commands", "ccg", "_config.md");
1038
+ const hasOldCcgDir = await fs.pathExists(oldCcgDir);
1039
+ const hasOldPromptsDir = await fs.pathExists(oldPromptsDir);
1040
+ const hasOldConfigFile = await fs.pathExists(oldConfigFile);
1041
+ return hasOldCcgDir || hasOldPromptsDir || hasOldConfigFile;
1042
+ }
1043
+
939
1044
  async function init(options = {}) {
940
1045
  console.log();
941
1046
  console.log(ansis.cyan.bold(` CCG - Claude + Codex + Gemini`));
@@ -1131,6 +1236,34 @@ async function init(options = {}) {
1131
1236
  }
1132
1237
  const spinner = ora(i18n.t("init:installing")).start();
1133
1238
  try {
1239
+ if (await needsMigration()) {
1240
+ spinner.text = "Migrating from v1.3.x to v1.4.0...";
1241
+ const migrationResult = await migrateToV1_4_0();
1242
+ if (migrationResult.migratedFiles.length > 0) {
1243
+ spinner.info(ansis.cyan("Migration completed:"));
1244
+ console.log();
1245
+ for (const file of migrationResult.migratedFiles) {
1246
+ console.log(` ${ansis.green("\u2713")} ${file}`);
1247
+ }
1248
+ if (migrationResult.skipped.length > 0) {
1249
+ console.log();
1250
+ console.log(ansis.gray(" Skipped:"));
1251
+ for (const file of migrationResult.skipped) {
1252
+ console.log(` ${ansis.gray("\u25CB")} ${file}`);
1253
+ }
1254
+ }
1255
+ console.log();
1256
+ spinner.start(i18n.t("init:installing"));
1257
+ }
1258
+ if (migrationResult.errors.length > 0) {
1259
+ spinner.warn(ansis.yellow("Migration completed with errors:"));
1260
+ for (const error of migrationResult.errors) {
1261
+ console.log(` ${ansis.red("\u2717")} ${error}`);
1262
+ }
1263
+ console.log();
1264
+ spinner.start(i18n.t("init:installing"));
1265
+ }
1266
+ }
1134
1267
  await ensureCcgDir();
1135
1268
  const config = createDefaultConfig({
1136
1269
  language,
@@ -1516,4 +1649,4 @@ async function uninstall() {
1516
1649
  console.log();
1517
1650
  }
1518
1651
 
1519
- export { i18n as a, initI18n as b, changeLanguage as c, createDefaultConfig as d, createDefaultRouting as e, getConfigPath as f, getCcgDir as g, getWorkflowConfigs as h, init as i, getWorkflowById as j, installWorkflows as k, installAceTool as l, uninstallWorkflows as m, uninstallAceTool as n, getCurrentVersion as o, getLatestVersion as p, checkForUpdates as q, readCcgConfig as r, showMainMenu as s, compareVersions as t, update as u, writeCcgConfig as w };
1652
+ export { i18n as a, initI18n as b, changeLanguage as c, createDefaultConfig as d, createDefaultRouting as e, getConfigPath as f, getCcgDir as g, getWorkflowConfigs as h, init as i, getWorkflowById as j, installWorkflows as k, installAceTool as l, uninstallWorkflows as m, uninstallAceTool as n, migrateToV1_4_0 as o, needsMigration as p, getCurrentVersion as q, readCcgConfig as r, showMainMenu as s, getLatestVersion as t, update as u, checkForUpdates as v, writeCcgConfig as w, compareVersions as x };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ccg-workflow",
3
- "version": "1.3.7",
3
+ "version": "1.4.1",
4
4
  "description": "Claude-Codex-Gemini 多模型协作系统 - 智能路由多模型开发工作流",
5
5
  "type": "module",
6
6
  "packageManager": "pnpm@10.17.1",
@@ -13,7 +13,7 @@ description: 多模型技术分析(根据配置并行),交叉验证后综
13
13
  - Configured models provide perspectives for cross-validation.
14
14
 
15
15
  ## 配置
16
- **首先读取 `~/.ccg/config.toml` 获取模型配置**:
16
+ **首先读取 `~/.claude/.ccg/config.toml` 获取模型配置**:
17
17
  ```toml
18
18
  [routing.frontend]
19
19
  models = ["gemini", "codex"]
@@ -34,7 +34,7 @@ You are the **Analysis Coordinator** orchestrating multi-model research. You dir
34
34
 
35
35
  ### Step 1: 读取配置 + 上下文检索
36
36
 
37
- 1. **读取 `~/.ccg/config.toml`** 获取模型配置
37
+ 1. **读取 `~/.claude/.ccg/config.toml`** 获取模型配置
38
38
  2. 合并 `routing.frontend.models` 和 `routing.backend.models` 获取分析模型列表
39
39
  3. 如果配置不存在,默认使用 `["codex", "gemini"]`
40
40
  4. Call `mcp__ace-tool__search_context` to understand relevant code:
@@ -51,7 +51,7 @@ You are the **Analysis Coordinator** orchestrating multi-model research. You dir
51
51
  ```bash
52
52
  # Codex 技术分析
53
53
  codeagent-wrapper --backend codex - $PROJECT_DIR <<'EOF'
54
- ROLE_FILE: ~/.claude/prompts/ccg/codex/analyzer.md
54
+ ROLE_FILE: ~/.claude/.ccg/prompts/codex/analyzer.md
55
55
 
56
56
  <TASK>
57
57
  分析任务: {{分析问题或任务}}
@@ -65,7 +65,7 @@ EOF
65
65
  ```bash
66
66
  # Gemini 技术分析
67
67
  codeagent-wrapper --backend gemini - $PROJECT_DIR <<'EOF'
68
- ROLE_FILE: ~/.claude/prompts/ccg/gemini/analyzer.md
68
+ ROLE_FILE: ~/.claude/.ccg/prompts/gemini/analyzer.md
69
69
 
70
70
  <TASK>
71
71
  分析任务: {{分析问题或任务}}
@@ -96,7 +96,7 @@ Present unified analysis combining all perspectives.
96
96
  5. **Recommendations** – actionable next steps
97
97
 
98
98
  ## 注意事项
99
- - **首先读取 `~/.ccg/config.toml` 获取模型配置**
99
+ - **首先读取 `~/.claude/.ccg/config.toml` 获取模型配置**
100
100
  - This command is for analysis only, no code changes
101
101
  - **Use `run_in_background: true` for parallel execution** to avoid blocking
102
102
  - 多模型结果交叉验证,取长补短
@@ -13,7 +13,7 @@ description: 后端/逻辑/算法任务,自动路由到配置的后端模型
13
13
  - Default authority for algorithms, APIs, and business logic.
14
14
 
15
15
  ## 配置
16
- **首先读取 `~/.ccg/config.toml` 获取模型路由配置**:
16
+ **首先读取 `~/.claude/.ccg/config.toml` 获取模型路由配置**:
17
17
  ```toml
18
18
  [routing.backend]
19
19
  models = ["codex", "gemini"] # 用户配置的后端模型列表
@@ -30,7 +30,7 @@ You are the **Backend Orchestrator** specializing in server-side logic. You coor
30
30
  ## 流程
31
31
 
32
32
  ### Step 1: 读取配置
33
- 1. Read `~/.ccg/config.toml` to get backend model configuration
33
+ 1. Read `~/.claude/.ccg/config.toml` to get backend model configuration
34
34
  2. Identify which models to use based on `routing.backend.models`
35
35
  3. If config doesn't exist, default to `codex`
36
36
 
@@ -52,7 +52,7 @@ You are the **Backend Orchestrator** specializing in server-side logic. You coor
52
52
  ```bash
53
53
  # Codex 后端原型示例
54
54
  codeagent-wrapper --backend codex - $PROJECT_DIR <<'EOF'
55
- ROLE_FILE: ~/.claude/prompts/ccg/codex/architect.md
55
+ ROLE_FILE: ~/.claude/.ccg/prompts/codex/architect.md
56
56
 
57
57
  <TASK>
58
58
  实现后端功能: {{后端任务描述}}
@@ -66,7 +66,7 @@ EOF
66
66
  ```bash
67
67
  # Gemini 后端原型示例(如配置中包含)
68
68
  codeagent-wrapper --backend gemini - $PROJECT_DIR <<'EOF'
69
- ROLE_FILE: ~/.claude/prompts/ccg/gemini/analyzer.md
69
+ ROLE_FILE: ~/.claude/.ccg/prompts/gemini/analyzer.md
70
70
 
71
71
  <TASK>
72
72
  实现后端功能: {{后端任务描述}}
@@ -107,6 +107,6 @@ Call configured backend model(s) to review the final implementation:
107
107
  ## 注意事项
108
108
  - Codex excels at complex logic and debugging
109
109
  - Codex uses read-only sandbox by default
110
- - Read `~/.ccg/config.toml` at start of execution
110
+ - Read `~/.claude/.ccg/config.toml` at start of execution
111
111
  - Always request Unified Diff Patch format
112
112
  - Use HEREDOC syntax (`<<'EOF'`) to avoid shell escaping issues
@@ -29,7 +29,7 @@ description: 质量门控修复(双模型交叉验证,90%+ 通过)
29
29
  ```bash
30
30
  # Codex 后端诊断修复
31
31
  codeagent-wrapper --backend codex - $PROJECT_DIR <<'EOF'
32
- ROLE_FILE: ~/.claude/prompts/ccg/codex/architect.md
32
+ ROLE_FILE: ~/.claude/.ccg/prompts/codex/architect.md
33
33
 
34
34
  <TASK>
35
35
  Bug 修复: {{Bug 描述}}
@@ -43,7 +43,7 @@ EOF
43
43
  ```bash
44
44
  # Gemini 前端诊断修复
45
45
  codeagent-wrapper --backend gemini - $PROJECT_DIR <<'EOF'
46
- ROLE_FILE: ~/.claude/prompts/ccg/gemini/frontend.md
46
+ ROLE_FILE: ~/.claude/.ccg/prompts/gemini/frontend.md
47
47
 
48
48
  <TASK>
49
49
  Bug 修复: {{Bug 描述}}
@@ -73,7 +73,7 @@ EOF
73
73
  ```bash
74
74
  # Codex 审查修复
75
75
  codeagent-wrapper --backend codex - $PROJECT_DIR <<'EOF'
76
- ROLE_FILE: ~/.claude/prompts/ccg/codex/reviewer.md
76
+ ROLE_FILE: ~/.claude/.ccg/prompts/codex/reviewer.md
77
77
 
78
78
  <TASK>
79
79
  审查修复: {{实施的修复代码}}
@@ -87,7 +87,7 @@ EOF
87
87
  ```bash
88
88
  # Gemini 审查修复
89
89
  codeagent-wrapper --backend gemini - $PROJECT_DIR <<'EOF'
90
- ROLE_FILE: ~/.claude/prompts/ccg/gemini/reviewer.md
90
+ ROLE_FILE: ~/.claude/.ccg/prompts/gemini/reviewer.md
91
91
 
92
92
  <TASK>
93
93
  审查修复: {{实施的修复代码}}
@@ -36,7 +36,7 @@ description: 三模型代码生成(Codex + Gemini + Claude 并行原型,集
36
36
  ```bash
37
37
  # Codex 后端架构原型
38
38
  codeagent-wrapper --backend codex - $PROJECT_DIR <<'EOF'
39
- ROLE_FILE: ~/.claude/prompts/ccg/codex/architect.md
39
+ ROLE_FILE: ~/.claude/.ccg/prompts/codex/architect.md
40
40
 
41
41
  <TASK>
42
42
  生成原型: {{功能需求}}
@@ -50,7 +50,7 @@ EOF
50
50
  ```bash
51
51
  # Gemini 前端 UI 原型
52
52
  codeagent-wrapper --backend gemini - $PROJECT_DIR <<'EOF'
53
- ROLE_FILE: ~/.claude/prompts/ccg/gemini/frontend.md
53
+ ROLE_FILE: ~/.claude/.ccg/prompts/gemini/frontend.md
54
54
 
55
55
  <TASK>
56
56
  生成原型: {{功能需求}}
@@ -64,7 +64,7 @@ EOF
64
64
  ```bash
65
65
  # Claude 全栈整合原型
66
66
  codeagent-wrapper --backend claude - $PROJECT_DIR <<'EOF'
67
- ROLE_FILE: ~/.claude/prompts/ccg/claude/architect.md
67
+ ROLE_FILE: ~/.claude/.ccg/prompts/claude/architect.md
68
68
 
69
69
  <TASK>
70
70
  生成原型: {{功能需求}}
@@ -123,7 +123,7 @@ API Contract:
123
123
  ```bash
124
124
  # Codex 安全性审查
125
125
  codeagent-wrapper --backend codex - $PROJECT_DIR <<'EOF'
126
- ROLE_FILE: ~/.claude/prompts/ccg/codex/reviewer.md
126
+ ROLE_FILE: ~/.claude/.ccg/prompts/codex/reviewer.md
127
127
 
128
128
  <TASK>
129
129
  审查代码: {{实施的代码变更}}
@@ -137,7 +137,7 @@ EOF
137
137
  ```bash
138
138
  # Gemini 设计审查
139
139
  codeagent-wrapper --backend gemini - $PROJECT_DIR <<'EOF'
140
- ROLE_FILE: ~/.claude/prompts/ccg/gemini/reviewer.md
140
+ ROLE_FILE: ~/.claude/.ccg/prompts/gemini/reviewer.md
141
141
 
142
142
  <TASK>
143
143
  审查代码: {{实施的代码变更}}
@@ -151,7 +151,7 @@ EOF
151
151
  ```bash
152
152
  # Claude 集成审查
153
153
  codeagent-wrapper --backend claude - $PROJECT_DIR <<'EOF'
154
- ROLE_FILE: ~/.claude/prompts/ccg/claude/reviewer.md
154
+ ROLE_FILE: ~/.claude/.ccg/prompts/claude/reviewer.md
155
155
 
156
156
  <TASK>
157
157
  审查代码: {{实施的代码变更}}
@@ -31,7 +31,7 @@ description: UltraThink 多模型调试(Codex 后端诊断 + Gemini 前端诊
31
31
  ```bash
32
32
  # Codex 后端诊断
33
33
  codeagent-wrapper --backend codex - $PROJECT_DIR <<'EOF'
34
- ROLE_FILE: ~/.claude/prompts/ccg/codex/debugger.md
34
+ ROLE_FILE: ~/.claude/.ccg/prompts/codex/debugger.md
35
35
 
36
36
  <TASK>
37
37
  诊断问题: {{问题描述}}
@@ -45,7 +45,7 @@ EOF
45
45
  ```bash
46
46
  # Gemini 前端诊断
47
47
  codeagent-wrapper --backend gemini - $PROJECT_DIR <<'EOF'
48
- ROLE_FILE: ~/.claude/prompts/ccg/gemini/debugger.md
48
+ ROLE_FILE: ~/.claude/.ccg/prompts/gemini/debugger.md
49
49
 
50
50
  <TASK>
51
51
  诊断问题: {{问题描述}}
@@ -10,10 +10,10 @@ description: 完整6阶段多模型协作工作流(Prompt增强 → 上下文
10
10
  ## 上下文
11
11
  - 要实现的功能: $ARGUMENTS
12
12
  - 此命令触发完整的 6 阶段多模型协作工作流
13
- - 根据 `~/.ccg/config.toml` 配置路由模型
13
+ - 根据 `~/.claude/.ccg/config.toml` 配置路由模型
14
14
 
15
15
  ## 配置
16
- **首先读取 `~/.ccg/config.toml` 获取模型路由配置**:
16
+ **首先读取 `~/.claude/.ccg/config.toml` 获取模型路由配置**:
17
17
  ```toml
18
18
  [routing]
19
19
  mode = "smart" # smart | parallel | sequential
@@ -48,7 +48,7 @@ strategy = "parallel"
48
48
  ## 流程
49
49
 
50
50
  ### 阶段 0: 读取配置 + Prompt 增强
51
- 1. **读取 `~/.ccg/config.toml`** 获取模型路由配置
51
+ 1. **读取 `~/.claude/.ccg/config.toml`** 获取模型路由配置
52
52
  2. 如果配置不存在,使用默认值:frontend=gemini, backend=codex
53
53
  3. 调用 `mcp__ace-tool__enhance_prompt` 优化原始需求:
54
54
  - `prompt`: 用户的原始需求 ($ARGUMENTS)
@@ -92,7 +92,7 @@ strategy = "parallel"
92
92
  ```bash
93
93
  # 后端模型分析示例
94
94
  codeagent-wrapper --backend codex - $PROJECT_DIR <<'EOF'
95
- ROLE_FILE: ~/.claude/prompts/ccg/codex/analyzer.md
95
+ ROLE_FILE: ~/.claude/.ccg/prompts/codex/analyzer.md
96
96
 
97
97
  <TASK>
98
98
  分析需求: {{增强后的需求}}
@@ -120,7 +120,7 @@ EOF
120
120
  ```bash
121
121
  # Codex 后端原型示例
122
122
  codeagent-wrapper --backend codex - $PROJECT_DIR <<'EOF'
123
- ROLE_FILE: ~/.claude/prompts/ccg/codex/architect.md
123
+ ROLE_FILE: ~/.claude/.ccg/prompts/codex/architect.md
124
124
 
125
125
  <TASK>
126
126
  生成原型: {{功能需求}}
@@ -165,7 +165,7 @@ EOF
165
165
  ```bash
166
166
  # Codex 代码审查示例
167
167
  codeagent-wrapper --backend codex - $PROJECT_DIR <<'EOF'
168
- ROLE_FILE: ~/.claude/prompts/ccg/codex/reviewer.md
168
+ ROLE_FILE: ~/.claude/.ccg/prompts/codex/reviewer.md
169
169
 
170
170
  <TASK>
171
171
  审查代码: {{实施的代码变更}}
@@ -195,7 +195,7 @@ EOF
195
195
 
196
196
  ## 关键规则
197
197
  - 未经用户批准不得跳过任何阶段
198
- - **首先读取 `~/.ccg/config.toml` 获取模型配置**
198
+ - **首先读取 `~/.claude/.ccg/config.toml` 获取模型配置**
199
199
  - **阶段 0 的 prompt 增强是强制性的** – 必须先展示增强后的 prompt
200
200
  - 始终要求外部模型输出 Unified Diff Patch
201
201
  - 外部模型对文件系统**零写入权限**
@@ -390,7 +390,7 @@ if [ "$TASK_TYPE" == "frontend" ] || [ "$TASK_TYPE" == "fullstack" ]; then
390
390
 
391
391
  # 调用 codeagent-wrapper
392
392
  codeagent-wrapper --backend gemini - "$PROJECT_DIR" <<'EOF'
393
- ROLE_FILE: ~/.claude/prompts/ccg/gemini/frontend.md
393
+ ROLE_FILE: ~/.claude/.ccg/prompts/gemini/frontend.md
394
394
 
395
395
  <PROJECT_CONTEXT>
396
396
  {{从 .claude/repo-context.md 提取的前端技术栈}}
@@ -435,7 +435,7 @@ if [ "$TASK_TYPE" == "backend" ] || [ "$TASK_TYPE" == "fullstack" ]; then
435
435
 
436
436
  # 调用 codeagent-wrapper
437
437
  codeagent-wrapper --backend codex - "$PROJECT_DIR" <<'EOF'
438
- ROLE_FILE: ~/.claude/prompts/ccg/codex/architect.md
438
+ ROLE_FILE: ~/.claude/.ccg/prompts/codex/architect.md
439
439
 
440
440
  <PROJECT_CONTEXT>
441
441
  {{从 .claude/repo-context.md 提取的后端技术栈}}
@@ -13,7 +13,7 @@ description: 前端/UI/样式任务,自动路由到配置的前端模型进行
13
13
  - Default authority for CSS, React, Vue, and visual design.
14
14
 
15
15
  ## 配置
16
- **首先读取 `~/.ccg/config.toml` 获取模型路由配置**:
16
+ **首先读取 `~/.claude/.ccg/config.toml` 获取模型路由配置**:
17
17
  ```toml
18
18
  [routing.frontend]
19
19
  models = ["gemini", "codex"] # 用户配置的前端模型列表
@@ -30,7 +30,7 @@ You are the **Frontend Orchestrator** specializing in UI/UX implementation. You
30
30
  ## 流程
31
31
 
32
32
  ### Step 1: 读取配置
33
- 1. Read `~/.ccg/config.toml` to get frontend model configuration
33
+ 1. Read `~/.claude/.ccg/config.toml` to get frontend model configuration
34
34
  2. Identify which models to use based on `routing.frontend.models`
35
35
  3. If config doesn't exist, default to `gemini`
36
36
 
@@ -52,7 +52,7 @@ You are the **Frontend Orchestrator** specializing in UI/UX implementation. You
52
52
  ```bash
53
53
  # Gemini 前端原型示例
54
54
  codeagent-wrapper --backend gemini - $PROJECT_DIR <<'EOF'
55
- ROLE_FILE: ~/.claude/prompts/ccg/gemini/frontend.md
55
+ ROLE_FILE: ~/.claude/.ccg/prompts/gemini/frontend.md
56
56
 
57
57
  <TASK>
58
58
  实现 UI 功能: {{前端任务描述}}
@@ -66,7 +66,7 @@ EOF
66
66
  ```bash
67
67
  # Codex 前端原型示例(如配置中包含)
68
68
  codeagent-wrapper --backend codex - $PROJECT_DIR <<'EOF'
69
- ROLE_FILE: ~/.claude/prompts/ccg/codex/architect.md
69
+ ROLE_FILE: ~/.claude/.ccg/prompts/codex/architect.md
70
70
 
71
71
  <TASK>
72
72
  实现 UI 功能: {{前端任务描述}}
@@ -106,6 +106,6 @@ Call configured frontend model(s) to review the final implementation:
106
106
 
107
107
  ## 注意事项
108
108
  - Gemini context limit: < 32k tokens
109
- - Read `~/.ccg/config.toml` at start of execution
109
+ - Read `~/.claude/.ccg/config.toml` at start of execution
110
110
  - Always request Unified Diff Patch format
111
111
  - Use HEREDOC syntax (`<<'EOF'`) to avoid shell escaping issues
@@ -31,7 +31,7 @@ description: 多模型性能优化(Codex 后端优化 + Gemini 前端优化)
31
31
  ```bash
32
32
  # Codex 后端性能分析
33
33
  codeagent-wrapper --backend codex - $PROJECT_DIR <<'EOF'
34
- ROLE_FILE: ~/.claude/prompts/ccg/codex/optimizer.md
34
+ ROLE_FILE: ~/.claude/.ccg/prompts/codex/optimizer.md
35
35
 
36
36
  <TASK>
37
37
  性能优化: {{优化目标}}
@@ -45,7 +45,7 @@ EOF
45
45
  ```bash
46
46
  # Gemini 前端性能分析
47
47
  codeagent-wrapper --backend gemini - $PROJECT_DIR <<'EOF'
48
- ROLE_FILE: ~/.claude/prompts/ccg/gemini/optimizer.md
48
+ ROLE_FILE: ~/.claude/.ccg/prompts/gemini/optimizer.md
49
49
 
50
50
  <TASK>
51
51
  性能优化: {{优化目标}}
@@ -13,7 +13,7 @@ description: 多模型代码审查(根据配置并行),无参数时自动
13
13
  - Configured models review simultaneously for comprehensive feedback.
14
14
 
15
15
  ## 配置
16
- **首先读取 `~/.ccg/config.toml` 获取审查模型配置**:
16
+ **首先读取 `~/.claude/.ccg/config.toml` 获取审查模型配置**:
17
17
  ```toml
18
18
  [routing.review]
19
19
  models = ["codex", "gemini"] # 用户配置的审查模型列表
@@ -34,7 +34,7 @@ You are the **Code Review Coordinator** orchestrating multi-model review. You di
34
34
 
35
35
  ### Step 1: 读取配置 + 获取待审查代码
36
36
 
37
- 1. **读取 `~/.ccg/config.toml`** 获取 `routing.review.models`
37
+ 1. **读取 `~/.claude/.ccg/config.toml`** 获取 `routing.review.models`
38
38
  2. 如果配置不存在,默认使用 `["codex", "gemini"]`
39
39
 
40
40
  **If no arguments provided**, run git commands to get current changes:
@@ -59,7 +59,7 @@ Then call `mcp__ace-tool__search_context` to get related context:
59
59
  ```bash
60
60
  # Codex 代码审查示例
61
61
  codeagent-wrapper --backend codex - $PROJECT_DIR <<'EOF'
62
- ROLE_FILE: ~/.claude/prompts/ccg/codex/reviewer.md
62
+ ROLE_FILE: ~/.claude/.ccg/prompts/codex/reviewer.md
63
63
 
64
64
  <TASK>
65
65
  审查代码: {{待审查的代码变更}}
@@ -73,7 +73,7 @@ EOF
73
73
  ```bash
74
74
  # Gemini 代码审查示例
75
75
  codeagent-wrapper --backend gemini - $PROJECT_DIR <<'EOF'
76
- ROLE_FILE: ~/.claude/prompts/ccg/gemini/reviewer.md
76
+ ROLE_FILE: ~/.claude/.ccg/prompts/gemini/reviewer.md
77
77
 
78
78
  <TASK>
79
79
  审查代码: {{待审查的代码变更}}
@@ -107,7 +107,7 @@ Provide unified review report to user with recommendations.
107
107
  7. **Recommended Actions** – prioritized fix list
108
108
 
109
109
  ## 注意事项
110
- - **首先读取 `~/.ccg/config.toml` 获取审查模型配置**
110
+ - **首先读取 `~/.claude/.ccg/config.toml` 获取审查模型配置**
111
111
  - **No arguments** = auto-review git changes (`git diff HEAD`)
112
112
  - **With arguments** = review specified content
113
113
  - **Use `run_in_background: true` for parallel execution** to avoid blocking
@@ -35,7 +35,7 @@ description: 多模型测试生成(Codex 后端测试 + Gemini 前端测试)
35
35
  ```bash
36
36
  # Codex 后端测试生成
37
37
  codeagent-wrapper --backend codex - $PROJECT_DIR <<'EOF'
38
- ROLE_FILE: ~/.claude/prompts/ccg/codex/tester.md
38
+ ROLE_FILE: ~/.claude/.ccg/prompts/codex/tester.md
39
39
 
40
40
  <TASK>
41
41
  生成测试: {{需要测试的代码}}
@@ -49,7 +49,7 @@ EOF
49
49
  ```bash
50
50
  # Gemini 前端测试生成
51
51
  codeagent-wrapper --backend gemini - $PROJECT_DIR <<'EOF'
52
- ROLE_FILE: ~/.claude/prompts/ccg/gemini/tester.md
52
+ ROLE_FILE: ~/.claude/.ccg/prompts/gemini/tester.md
53
53
 
54
54
  <TASK>
55
55
  生成测试: {{需要测试的代码}}
@@ -29,7 +29,7 @@ description: UltraThink 深度分析(双模型并行分析 + 综合见解)
29
29
  ```bash
30
30
  # Codex 后端/系统视角分析
31
31
  codeagent-wrapper --backend codex - $PROJECT_DIR <<'EOF'
32
- ROLE_FILE: ~/.claude/prompts/ccg/codex/analyzer.md
32
+ ROLE_FILE: ~/.claude/.ccg/prompts/codex/analyzer.md
33
33
 
34
34
  <TASK>
35
35
  深度分析: {{问题或场景}}
@@ -43,7 +43,7 @@ EOF
43
43
  ```bash
44
44
  # Gemini 前端/用户视角分析
45
45
  codeagent-wrapper --backend gemini - $PROJECT_DIR <<'EOF'
46
- ROLE_FILE: ~/.claude/prompts/ccg/gemini/analyzer.md
46
+ ROLE_FILE: ~/.claude/.ccg/prompts/gemini/analyzer.md
47
47
 
48
48
  <TASK>
49
49
  深度分析: {{问题或场景}}
@@ -3,7 +3,7 @@ description: CCG 多模型协作系统 - 共享配置和调用规范
3
3
  ---
4
4
 
5
5
  ## 配置文件
6
- 路径: `~/.ccg/config.toml`
6
+ 路径: `~/.claude/.ccg/config.toml`
7
7
 
8
8
  ```toml
9
9
  [routing]
@@ -39,7 +39,7 @@ strategy = "parallel"
39
39
  ### 基础模式
40
40
  ```bash
41
41
  codeagent-wrapper --backend <MODEL> - $PROJECT_DIR <<'EOF'
42
- ROLE_FILE: ~/.claude/prompts/ccg/<model>/<role>.md
42
+ ROLE_FILE: ~/.claude/.ccg/prompts/<model>/<role>.md
43
43
 
44
44
  <TASK>
45
45
  {{任务描述}}