ccg-workflow 2.1.1 → 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 CHANGED
@@ -6,6 +6,7 @@
6
6
  [![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](https://opensource.org/licenses/MIT)
7
7
  [![Claude Code](https://img.shields.io/badge/Claude%20Code-Compatible-green.svg)](https://claude.ai/code)
8
8
  [![Tests](https://img.shields.io/badge/Tests-134%20passed-brightgreen.svg)]()
9
+ [![Follow on X](https://img.shields.io/badge/X-@CCG__Workflow-black?logo=x&logoColor=white)](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
- v1.7.86 | [Issues](https://github.com/fengshao1227/ccg-workflow/issues) | [Contributing](./CONTRIBUTING.md)
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
  [![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](https://opensource.org/licenses/MIT)
7
7
  [![Claude Code](https://img.shields.io/badge/Claude%20Code-Compatible-green.svg)](https://claude.ai/code)
8
8
  [![Tests](https://img.shields.io/badge/Tests-134%20passed-brightgreen.svg)]()
9
+ [![Follow on X](https://img.shields.io/badge/X-@CCG__Workflow-black?logo=x&logoColor=white)](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
- v1.7.86 | [Issues](https://github.com/fengshao1227/ccg-workflow/issues) | [参与贡献](./CONTRIBUTING.md)
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.pMx0aHNz.mjs';
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.pMx0aHNz.mjs';
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.1";
13
+ const version = "2.1.11";
14
14
 
15
15
  function cmd(id, order, category, name, nameEn, description, descriptionEn, cmdOverride) {
16
16
  return {
@@ -319,8 +319,8 @@ function generateCommandContent(skill, skillsInstallDir) {
319
319
  `\`\`\``
320
320
  ].join("\n");
321
321
  }
322
- async function installSkillCommands(skillsTemplateDir, skillsInstallDir, commandsDir, existingCommandNames) {
323
- const invocableSkills = collectInvocableSkills(skillsTemplateDir);
322
+ async function installSkillCommands(skillsTemplateDir, skillsInstallDir, commandsDir, existingCommandNames, skipCategories = []) {
323
+ const invocableSkills = collectInvocableSkills(skillsTemplateDir).filter((s) => !skipCategories.includes(s.category));
324
324
  const generated = [];
325
325
  await fs.ensureDir(commandsDir);
326
326
  for (const skill of invocableSkills) {
@@ -1043,11 +1043,16 @@ async function installSkillGeneratedCommands(ctx) {
1043
1043
  existingCommandNames.add(basename(f, ".md"));
1044
1044
  }
1045
1045
  }
1046
+ const skipCategories = [];
1047
+ if (ctx.config.skipImpeccable) {
1048
+ skipCategories.push("impeccable");
1049
+ }
1046
1050
  const generated = await installSkillCommands(
1047
1051
  skillsTemplateDir,
1048
1052
  skillsInstallDir,
1049
1053
  commandsDir,
1050
- existingCommandNames
1054
+ existingCommandNames,
1055
+ skipCategories
1051
1056
  );
1052
1057
  if (generated.length > 0) {
1053
1058
  ctx.result.installedCommands.push(...generated);
@@ -1191,7 +1196,8 @@ async function installWorkflows(workflowIds, installDir, force = false, config)
1191
1196
  review: { models: ["codex", "gemini"] }
1192
1197
  },
1193
1198
  liteMode: config?.liteMode || false,
1194
- mcpProvider: config?.mcpProvider || "ace-tool"
1199
+ mcpProvider: config?.mcpProvider || "ace-tool",
1200
+ skipImpeccable: config?.skipImpeccable || false
1195
1201
  },
1196
1202
  templateDir: join(PACKAGE_ROOT$1, "templates"),
1197
1203
  result: {
@@ -1875,6 +1881,9 @@ const zhCN = {
1875
1881
  standardOption: "\u6807\u51C6\u6A21\u5F0F\uFF08\u542B Web UI \u5B9E\u65F6\u76D1\u63A7\uFF09",
1876
1882
  liteOption: "\u8F7B\u91CF\u6A21\u5F0F\uFF08\u65E0 Web UI\uFF0C\u54CD\u5E94\u66F4\u5FEB\uFF09"
1877
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
+ },
1878
1887
  hooks: {
1879
1888
  title: "codeagent-wrapper \u81EA\u52A8\u6388\u6743",
1880
1889
  description: "\u4F7F\u7528 Hook \u81EA\u52A8\u6388\u6743 codeagent-wrapper \u547D\u4EE4",
@@ -2348,6 +2357,9 @@ const en = {
2348
2357
  standardOption: "Standard (with Web UI real-time monitoring)",
2349
2358
  liteOption: "Lite (no Web UI, faster response)"
2350
2359
  },
2360
+ commands: {
2361
+ includeImpeccable: "Install Impeccable frontend design tools? (20 UI/UX commands: polish/audit/animate etc.)"
2362
+ },
2351
2363
  hooks: {
2352
2364
  title: "codeagent-wrapper auto-authorization",
2353
2365
  description: "Use Hook to auto-authorize codeagent-wrapper commands",
@@ -2685,7 +2697,8 @@ function createDefaultConfig(options) {
2685
2697
  setup_url: "https://augmentcode.com/"
2686
2698
  },
2687
2699
  performance: {
2688
- liteMode: options.liteMode || false
2700
+ liteMode: options.liteMode || false,
2701
+ skipImpeccable: options.skipImpeccable || false
2689
2702
  }
2690
2703
  };
2691
2704
  }
@@ -2937,6 +2950,7 @@ async function init(options = {}) {
2937
2950
  }
2938
2951
  }
2939
2952
  let liteMode = false;
2953
+ let skipImpeccable = false;
2940
2954
  let mcpProvider = "ace-tool";
2941
2955
  let aceToolBaseUrl = "";
2942
2956
  let aceToolToken = "";
@@ -3038,7 +3052,8 @@ async function init(options = {}) {
3038
3052
  }
3039
3053
  }
3040
3054
  if (options.skipMcp) {
3041
- mcpProvider = "skip";
3055
+ const existingConfig = await readCcgConfig();
3056
+ mcpProvider = existingConfig?.mcp?.provider || "skip";
3042
3057
  } else if (!options.skipPrompt) {
3043
3058
  console.log();
3044
3059
  console.log(ansis.cyan.bold(` \u{1F527} Step 3/4 \u2014 ${i18n.t("init:mcp.title")}`));
@@ -3190,11 +3205,21 @@ async function init(options = {}) {
3190
3205
  default: currentLiteMode ? "lite" : "standard"
3191
3206
  }]);
3192
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;
3193
3215
  } else {
3194
3216
  const existingConfig = await readCcgConfig();
3195
3217
  if (existingConfig?.performance?.liteMode !== void 0) {
3196
3218
  liteMode = existingConfig.performance.liteMode;
3197
3219
  }
3220
+ if (existingConfig?.performance?.skipImpeccable !== void 0) {
3221
+ skipImpeccable = existingConfig.performance.skipImpeccable;
3222
+ }
3198
3223
  }
3199
3224
  const routing = {
3200
3225
  frontend: {
@@ -3283,14 +3308,16 @@ async function init(options = {}) {
3283
3308
  routing,
3284
3309
  installedWorkflows: selectedWorkflows,
3285
3310
  mcpProvider,
3286
- liteMode
3311
+ liteMode,
3312
+ skipImpeccable
3287
3313
  });
3288
3314
  await writeCcgConfig(config);
3289
3315
  const installDir = options.installDir || join(homedir(), ".claude");
3290
3316
  const result = await installWorkflows(selectedWorkflows, installDir, options.force, {
3291
3317
  routing,
3292
3318
  liteMode,
3293
- mcpProvider
3319
+ mcpProvider,
3320
+ skipImpeccable
3294
3321
  });
3295
3322
  spinner.succeed(ansis.green(i18n.t("init:installSuccess")));
3296
3323
  if (aceToolToken) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ccg-workflow",
3
- "version": "2.1.1",
3
+ "version": "2.1.11",
4
4
  "description": "Claude + Codex + Gemini multi-model collaboration system - smart routing development workflow",
5
5
  "type": "module",
6
6
  "packageManager": "pnpm@10.17.1",