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 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.CP2pPVul.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.CP2pPVul.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.0";
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
- mcpProvider = "skip";
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
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ccg-workflow",
3
- "version": "2.1.0",
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",