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 +2 -2
- package/dist/index.d.mts +25 -1
- package/dist/index.d.ts +25 -1
- package/dist/index.mjs +1 -1
- package/dist/shared/{ccg-workflow.MFY9c1yE.mjs → ccg-workflow.DaI-Qubz.mjs} +143 -10
- package/package.json +1 -1
- package/templates/commands/analyze.md +5 -5
- package/templates/commands/backend.md +5 -5
- package/templates/commands/bugfix.md +4 -4
- package/templates/commands/code.md +6 -6
- package/templates/commands/debug.md +2 -2
- package/templates/commands/dev.md +7 -7
- package/templates/commands/feat.md +2 -2
- package/templates/commands/frontend.md +5 -5
- package/templates/commands/optimize.md +2 -2
- package/templates/commands/review.md +5 -5
- package/templates/commands/test.md +2 -2
- package/templates/commands/think.md +2 -2
- package/templates/{commands/_config.md → config/shared-config.md} +2 -2
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.
|
|
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.
|
|
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,
|
|
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.
|
|
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(
|
|
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
|
|
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
|
|
710
|
-
const
|
|
711
|
-
if (await fs.pathExists(
|
|
712
|
-
if (force || !await fs.pathExists(
|
|
713
|
-
await fs.copy(
|
|
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,
|
|
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
|
@@ -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/
|
|
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/
|
|
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/
|
|
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/
|
|
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/
|
|
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/
|
|
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/
|
|
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/
|
|
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/
|
|
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/
|
|
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/
|
|
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/
|
|
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/
|
|
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/
|
|
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/
|
|
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/
|
|
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/
|
|
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/
|
|
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/
|
|
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/
|
|
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/
|
|
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/
|
|
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/
|
|
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/
|
|
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/
|
|
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/
|
|
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/
|
|
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/
|
|
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/
|
|
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/
|
|
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/
|
|
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
|
|
42
|
+
ROLE_FILE: ~/.claude/.ccg/prompts/<model>/<role>.md
|
|
43
43
|
|
|
44
44
|
<TASK>
|
|
45
45
|
{{任务描述}}
|