ccg-workflow 2.1.0 → 2.1.11
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/README.md +5 -1
- package/README.zh-CN.md +5 -1
- package/dist/cli.mjs +1 -1
- package/dist/index.d.mts +3 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.mjs +1 -1
- package/dist/shared/{ccg-workflow.CP2pPVul.mjs → ccg-workflow.B7JDWK9O.mjs} +45 -9
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -6,6 +6,7 @@
|
|
|
6
6
|
[](https://opensource.org/licenses/MIT)
|
|
7
7
|
[](https://claude.ai/code)
|
|
8
8
|
[]()
|
|
9
|
+
[](https://x.com/CCG_Workflow)
|
|
9
10
|
|
|
10
11
|
[简体中文](./README.zh-CN.md) | English
|
|
11
12
|
|
|
@@ -37,6 +38,8 @@ Codex Gemini
|
|
|
37
38
|
|
|
38
39
|
External models have no write access — they only return patches, which Claude reviews before applying.
|
|
39
40
|
|
|
41
|
+
> **🎬 [See CCG in action →](https://x.com/CCG_Workflow/status/2038923720610463876)** — Real multi-model collaboration demo on X
|
|
42
|
+
|
|
40
43
|
## Quick Start
|
|
41
44
|
|
|
42
45
|
### Prerequisites
|
|
@@ -349,6 +352,7 @@ Looking for a place to start? Check out issues labeled [`good first issue`](http
|
|
|
349
352
|
|
|
350
353
|
## Contact
|
|
351
354
|
|
|
355
|
+
- **X (Twitter)**: [@CCG_Workflow](https://x.com/CCG_Workflow) — Updates, demos, and tips
|
|
352
356
|
- **Email**: [fengshao1227@gmail.com](mailto:fengshao1227@gmail.com) — Sponsorship, collaboration, or development ideas
|
|
353
357
|
- **Issues**: [GitHub Issues](https://github.com/fengshao1227/ccg-workflow/issues) — Bug reports and feature requests
|
|
354
358
|
- **Discussions**: [GitHub Discussions](https://github.com/fengshao1227/ccg-workflow/discussions) — Questions and community chat
|
|
@@ -359,4 +363,4 @@ MIT
|
|
|
359
363
|
|
|
360
364
|
---
|
|
361
365
|
|
|
362
|
-
|
|
366
|
+
v2.1.11 | [Issues](https://github.com/fengshao1227/ccg-workflow/issues) | [Contributing](./CONTRIBUTING.md)
|
package/README.zh-CN.md
CHANGED
|
@@ -6,6 +6,7 @@
|
|
|
6
6
|
[](https://opensource.org/licenses/MIT)
|
|
7
7
|
[](https://claude.ai/code)
|
|
8
8
|
[]()
|
|
9
|
+
[](https://x.com/CCG_Workflow)
|
|
9
10
|
|
|
10
11
|
简体中文 | [English](./README.md)
|
|
11
12
|
|
|
@@ -37,6 +38,8 @@ Codex Gemini
|
|
|
37
38
|
|
|
38
39
|
外部模型无写入权限,仅返回 Patch,由 Claude 审核后应用。
|
|
39
40
|
|
|
41
|
+
> **🎬 [查看 CCG 实战演示 →](https://x.com/CCG_Workflow/status/2038923720610463876)** — X 上的多模型协作真实案例
|
|
42
|
+
|
|
40
43
|
## 快速开始
|
|
41
44
|
|
|
42
45
|
### 前置条件
|
|
@@ -349,6 +352,7 @@ npm uninstall -g ccg-workflow # npm 全局用户需额外执行
|
|
|
349
352
|
|
|
350
353
|
## 联系方式
|
|
351
354
|
|
|
355
|
+
- **X (Twitter)**: [@CCG_Workflow](https://x.com/CCG_Workflow) — 更新动态、实战演示、使用技巧
|
|
352
356
|
- **邮箱**: [fengshao1227@gmail.com](mailto:fengshao1227@gmail.com) — 赞助、合作洽谈、开发交流
|
|
353
357
|
- **Issues**: [GitHub Issues](https://github.com/fengshao1227/ccg-workflow/issues) — Bug 反馈与功能建议
|
|
354
358
|
- **讨论区**: [GitHub Discussions](https://github.com/fengshao1227/ccg-workflow/discussions) — 问题咨询与社区交流
|
|
@@ -359,4 +363,4 @@ MIT
|
|
|
359
363
|
|
|
360
364
|
---
|
|
361
365
|
|
|
362
|
-
|
|
366
|
+
v2.1.11 | [Issues](https://github.com/fengshao1227/ccg-workflow/issues) | [参与贡献](./CONTRIBUTING.md)
|
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 { z as diagnoseMcpConfig, A as isWindows, B as readClaudeCodeConfig, C as fixWindowsMcpConfig, D as writeClaudeCodeConfig, r as readCcgConfig, b as initI18n, a as i18n, s as showMainMenu, i as init, E as configMcp, F as version } from './shared/ccg-workflow.
|
|
4
|
+
import { z as diagnoseMcpConfig, A as isWindows, B as readClaudeCodeConfig, C as fixWindowsMcpConfig, D as writeClaudeCodeConfig, r as readCcgConfig, b as initI18n, a as i18n, s as showMainMenu, i as init, E as configMcp, F as version } from './shared/ccg-workflow.B7JDWK9O.mjs';
|
|
5
5
|
import 'inquirer';
|
|
6
6
|
import 'ora';
|
|
7
7
|
import 'node:child_process';
|
package/dist/index.d.mts
CHANGED
|
@@ -55,6 +55,7 @@ interface CcgConfig {
|
|
|
55
55
|
};
|
|
56
56
|
performance?: {
|
|
57
57
|
liteMode?: boolean;
|
|
58
|
+
skipImpeccable?: boolean;
|
|
58
59
|
};
|
|
59
60
|
}
|
|
60
61
|
interface WorkflowConfig {
|
|
@@ -123,6 +124,7 @@ declare function createDefaultConfig(options: {
|
|
|
123
124
|
installedWorkflows: string[];
|
|
124
125
|
mcpProvider?: string;
|
|
125
126
|
liteMode?: boolean;
|
|
127
|
+
skipImpeccable?: boolean;
|
|
126
128
|
}): CcgConfig;
|
|
127
129
|
declare function createDefaultRouting(): ModelRouting;
|
|
128
130
|
|
|
@@ -168,6 +170,7 @@ declare function installWorkflows(workflowIds: string[], installDir: string, for
|
|
|
168
170
|
};
|
|
169
171
|
liteMode?: boolean;
|
|
170
172
|
mcpProvider?: string;
|
|
173
|
+
skipImpeccable?: boolean;
|
|
171
174
|
}): Promise<InstallResult>;
|
|
172
175
|
interface UninstallResult {
|
|
173
176
|
success: boolean;
|
package/dist/index.d.ts
CHANGED
|
@@ -55,6 +55,7 @@ interface CcgConfig {
|
|
|
55
55
|
};
|
|
56
56
|
performance?: {
|
|
57
57
|
liteMode?: boolean;
|
|
58
|
+
skipImpeccable?: boolean;
|
|
58
59
|
};
|
|
59
60
|
}
|
|
60
61
|
interface WorkflowConfig {
|
|
@@ -123,6 +124,7 @@ declare function createDefaultConfig(options: {
|
|
|
123
124
|
installedWorkflows: string[];
|
|
124
125
|
mcpProvider?: string;
|
|
125
126
|
liteMode?: boolean;
|
|
127
|
+
skipImpeccable?: boolean;
|
|
126
128
|
}): CcgConfig;
|
|
127
129
|
declare function createDefaultRouting(): ModelRouting;
|
|
128
130
|
|
|
@@ -168,6 +170,7 @@ declare function installWorkflows(workflowIds: string[], installDir: string, for
|
|
|
168
170
|
};
|
|
169
171
|
liteMode?: boolean;
|
|
170
172
|
mcpProvider?: string;
|
|
173
|
+
skipImpeccable?: boolean;
|
|
171
174
|
}): Promise<InstallResult>;
|
|
172
175
|
interface UninstallResult {
|
|
173
176
|
success: boolean;
|
package/dist/index.mjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export { c as changeLanguage, x as checkForUpdates, y as compareVersions, d as createDefaultConfig, e as createDefaultRouting, g as getCcgDir, f as getConfigPath, t as getCurrentVersion, v as getLatestVersion, j as getWorkflowById, h as getWorkflowConfigs, a as i18n, i as init, b as initI18n, l as installAceTool, m as installAceToolRs, k as installWorkflows, p as migrateToV1_4_0, q as needsMigration, r as readCcgConfig, s as showMainMenu, o as uninstallAceTool, n as uninstallWorkflows, u as update, w as writeCcgConfig } from './shared/ccg-workflow.
|
|
1
|
+
export { c as changeLanguage, x as checkForUpdates, y as compareVersions, d as createDefaultConfig, e as createDefaultRouting, g as getCcgDir, f as getConfigPath, t as getCurrentVersion, v as getLatestVersion, j as getWorkflowById, h as getWorkflowConfigs, a as i18n, i as init, b as initI18n, l as installAceTool, m as installAceToolRs, k as installWorkflows, p as migrateToV1_4_0, q as needsMigration, r as readCcgConfig, s as showMainMenu, o as uninstallAceTool, n as uninstallWorkflows, u as update, w as writeCcgConfig } from './shared/ccg-workflow.B7JDWK9O.mjs';
|
|
2
2
|
import 'ansis';
|
|
3
3
|
import 'inquirer';
|
|
4
4
|
import 'ora';
|
|
@@ -10,7 +10,7 @@ import fs from 'fs-extra';
|
|
|
10
10
|
import { parse, stringify } from 'smol-toml';
|
|
11
11
|
import i18next from 'i18next';
|
|
12
12
|
|
|
13
|
-
const version = "2.1.
|
|
13
|
+
const version = "2.1.11";
|
|
14
14
|
|
|
15
15
|
function cmd(id, order, category, name, nameEn, description, descriptionEn, cmdOverride) {
|
|
16
16
|
return {
|
|
@@ -279,8 +279,15 @@ function collectInvocableSkills(skillsDir) {
|
|
|
279
279
|
function generateCommandContent(skill, skillsInstallDir) {
|
|
280
280
|
const skillMdPath = join(skillsInstallDir, skill.relPath, "SKILL.md");
|
|
281
281
|
const runSkillPath = join(skillsInstallDir, "run_skill.js");
|
|
282
|
+
const frontmatter = [
|
|
283
|
+
"---",
|
|
284
|
+
`description: '${skill.description.replace(/'/g, "''")}'`,
|
|
285
|
+
"---"
|
|
286
|
+
].join("\n");
|
|
282
287
|
if (skill.runtimeType === "scripted") {
|
|
283
288
|
return [
|
|
289
|
+
frontmatter,
|
|
290
|
+
"",
|
|
284
291
|
`# ${skill.name}`,
|
|
285
292
|
"",
|
|
286
293
|
skill.description,
|
|
@@ -297,6 +304,8 @@ function generateCommandContent(skill, skillsInstallDir) {
|
|
|
297
304
|
].join("\n");
|
|
298
305
|
}
|
|
299
306
|
return [
|
|
307
|
+
frontmatter,
|
|
308
|
+
"",
|
|
300
309
|
`# ${skill.name}`,
|
|
301
310
|
"",
|
|
302
311
|
skill.description,
|
|
@@ -310,8 +319,8 @@ function generateCommandContent(skill, skillsInstallDir) {
|
|
|
310
319
|
`\`\`\``
|
|
311
320
|
].join("\n");
|
|
312
321
|
}
|
|
313
|
-
async function installSkillCommands(skillsTemplateDir, skillsInstallDir, commandsDir, existingCommandNames) {
|
|
314
|
-
const invocableSkills = collectInvocableSkills(skillsTemplateDir);
|
|
322
|
+
async function installSkillCommands(skillsTemplateDir, skillsInstallDir, commandsDir, existingCommandNames, skipCategories = []) {
|
|
323
|
+
const invocableSkills = collectInvocableSkills(skillsTemplateDir).filter((s) => !skipCategories.includes(s.category));
|
|
315
324
|
const generated = [];
|
|
316
325
|
await fs.ensureDir(commandsDir);
|
|
317
326
|
for (const skill of invocableSkills) {
|
|
@@ -1034,11 +1043,16 @@ async function installSkillGeneratedCommands(ctx) {
|
|
|
1034
1043
|
existingCommandNames.add(basename(f, ".md"));
|
|
1035
1044
|
}
|
|
1036
1045
|
}
|
|
1046
|
+
const skipCategories = [];
|
|
1047
|
+
if (ctx.config.skipImpeccable) {
|
|
1048
|
+
skipCategories.push("impeccable");
|
|
1049
|
+
}
|
|
1037
1050
|
const generated = await installSkillCommands(
|
|
1038
1051
|
skillsTemplateDir,
|
|
1039
1052
|
skillsInstallDir,
|
|
1040
1053
|
commandsDir,
|
|
1041
|
-
existingCommandNames
|
|
1054
|
+
existingCommandNames,
|
|
1055
|
+
skipCategories
|
|
1042
1056
|
);
|
|
1043
1057
|
if (generated.length > 0) {
|
|
1044
1058
|
ctx.result.installedCommands.push(...generated);
|
|
@@ -1182,7 +1196,8 @@ async function installWorkflows(workflowIds, installDir, force = false, config)
|
|
|
1182
1196
|
review: { models: ["codex", "gemini"] }
|
|
1183
1197
|
},
|
|
1184
1198
|
liteMode: config?.liteMode || false,
|
|
1185
|
-
mcpProvider: config?.mcpProvider || "ace-tool"
|
|
1199
|
+
mcpProvider: config?.mcpProvider || "ace-tool",
|
|
1200
|
+
skipImpeccable: config?.skipImpeccable || false
|
|
1186
1201
|
},
|
|
1187
1202
|
templateDir: join(PACKAGE_ROOT$1, "templates"),
|
|
1188
1203
|
result: {
|
|
@@ -1866,6 +1881,9 @@ const zhCN = {
|
|
|
1866
1881
|
standardOption: "\u6807\u51C6\u6A21\u5F0F\uFF08\u542B Web UI \u5B9E\u65F6\u76D1\u63A7\uFF09",
|
|
1867
1882
|
liteOption: "\u8F7B\u91CF\u6A21\u5F0F\uFF08\u65E0 Web UI\uFF0C\u54CD\u5E94\u66F4\u5FEB\uFF09"
|
|
1868
1883
|
},
|
|
1884
|
+
commands: {
|
|
1885
|
+
includeImpeccable: "\u5B89\u88C5 Impeccable \u524D\u7AEF\u8BBE\u8BA1\u5DE5\u5177\uFF1F\uFF0820 \u4E2A UI/UX \u547D\u4EE4\uFF1Apolish/audit/animate \u7B49\uFF09"
|
|
1886
|
+
},
|
|
1869
1887
|
hooks: {
|
|
1870
1888
|
title: "codeagent-wrapper \u81EA\u52A8\u6388\u6743",
|
|
1871
1889
|
description: "\u4F7F\u7528 Hook \u81EA\u52A8\u6388\u6743 codeagent-wrapper \u547D\u4EE4",
|
|
@@ -2339,6 +2357,9 @@ const en = {
|
|
|
2339
2357
|
standardOption: "Standard (with Web UI real-time monitoring)",
|
|
2340
2358
|
liteOption: "Lite (no Web UI, faster response)"
|
|
2341
2359
|
},
|
|
2360
|
+
commands: {
|
|
2361
|
+
includeImpeccable: "Install Impeccable frontend design tools? (20 UI/UX commands: polish/audit/animate etc.)"
|
|
2362
|
+
},
|
|
2342
2363
|
hooks: {
|
|
2343
2364
|
title: "codeagent-wrapper auto-authorization",
|
|
2344
2365
|
description: "Use Hook to auto-authorize codeagent-wrapper commands",
|
|
@@ -2676,7 +2697,8 @@ function createDefaultConfig(options) {
|
|
|
2676
2697
|
setup_url: "https://augmentcode.com/"
|
|
2677
2698
|
},
|
|
2678
2699
|
performance: {
|
|
2679
|
-
liteMode: options.liteMode || false
|
|
2700
|
+
liteMode: options.liteMode || false,
|
|
2701
|
+
skipImpeccable: options.skipImpeccable || false
|
|
2680
2702
|
}
|
|
2681
2703
|
};
|
|
2682
2704
|
}
|
|
@@ -2928,6 +2950,7 @@ async function init(options = {}) {
|
|
|
2928
2950
|
}
|
|
2929
2951
|
}
|
|
2930
2952
|
let liteMode = false;
|
|
2953
|
+
let skipImpeccable = false;
|
|
2931
2954
|
let mcpProvider = "ace-tool";
|
|
2932
2955
|
let aceToolBaseUrl = "";
|
|
2933
2956
|
let aceToolToken = "";
|
|
@@ -3029,7 +3052,8 @@ async function init(options = {}) {
|
|
|
3029
3052
|
}
|
|
3030
3053
|
}
|
|
3031
3054
|
if (options.skipMcp) {
|
|
3032
|
-
|
|
3055
|
+
const existingConfig = await readCcgConfig();
|
|
3056
|
+
mcpProvider = existingConfig?.mcp?.provider || "skip";
|
|
3033
3057
|
} else if (!options.skipPrompt) {
|
|
3034
3058
|
console.log();
|
|
3035
3059
|
console.log(ansis.cyan.bold(` \u{1F527} Step 3/4 \u2014 ${i18n.t("init:mcp.title")}`));
|
|
@@ -3181,11 +3205,21 @@ async function init(options = {}) {
|
|
|
3181
3205
|
default: currentLiteMode ? "lite" : "standard"
|
|
3182
3206
|
}]);
|
|
3183
3207
|
liteMode = perfMode === "lite";
|
|
3208
|
+
const { includeImpeccable } = await inquirer.prompt([{
|
|
3209
|
+
type: "confirm",
|
|
3210
|
+
name: "includeImpeccable",
|
|
3211
|
+
message: i18n.t("init:commands.includeImpeccable"),
|
|
3212
|
+
default: false
|
|
3213
|
+
}]);
|
|
3214
|
+
skipImpeccable = !includeImpeccable;
|
|
3184
3215
|
} else {
|
|
3185
3216
|
const existingConfig = await readCcgConfig();
|
|
3186
3217
|
if (existingConfig?.performance?.liteMode !== void 0) {
|
|
3187
3218
|
liteMode = existingConfig.performance.liteMode;
|
|
3188
3219
|
}
|
|
3220
|
+
if (existingConfig?.performance?.skipImpeccable !== void 0) {
|
|
3221
|
+
skipImpeccable = existingConfig.performance.skipImpeccable;
|
|
3222
|
+
}
|
|
3189
3223
|
}
|
|
3190
3224
|
const routing = {
|
|
3191
3225
|
frontend: {
|
|
@@ -3274,14 +3308,16 @@ async function init(options = {}) {
|
|
|
3274
3308
|
routing,
|
|
3275
3309
|
installedWorkflows: selectedWorkflows,
|
|
3276
3310
|
mcpProvider,
|
|
3277
|
-
liteMode
|
|
3311
|
+
liteMode,
|
|
3312
|
+
skipImpeccable
|
|
3278
3313
|
});
|
|
3279
3314
|
await writeCcgConfig(config);
|
|
3280
3315
|
const installDir = options.installDir || join(homedir(), ".claude");
|
|
3281
3316
|
const result = await installWorkflows(selectedWorkflows, installDir, options.force, {
|
|
3282
3317
|
routing,
|
|
3283
3318
|
liteMode,
|
|
3284
|
-
mcpProvider
|
|
3319
|
+
mcpProvider,
|
|
3320
|
+
skipImpeccable
|
|
3285
3321
|
});
|
|
3286
3322
|
spinner.succeed(ansis.green(i18n.t("init:installSuccess")));
|
|
3287
3323
|
if (aceToolToken) {
|
package/package.json
CHANGED