ccgx-workflow 1.0.0 → 1.0.2

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.
Files changed (60) hide show
  1. package/README.md +37 -5
  2. package/README.zh-CN.md +35 -5
  3. package/dist/cli.mjs +1 -1
  4. package/dist/index.mjs +2 -2
  5. package/dist/shared/{ccgx-workflow.WgUzkiC3.mjs → ccgx-workflow.Bq9vAaEw.mjs} +17 -110
  6. package/package.json +2 -1
  7. package/templates/commands/agents/phase-runner.md +321 -321
  8. package/templates/commands/autonomous.md +792 -792
  9. package/templates/commands/cancel.md +132 -132
  10. package/templates/commands/debug.md +226 -226
  11. package/templates/commands/status.md +206 -206
  12. package/templates/commands/team.md +484 -0
  13. package/templates/hooks/ccg-session-state.cjs +566 -510
  14. package/templates/scripts/ccg-phase-runner-launcher.mjs +467 -467
  15. package/templates/scripts/invoke-model.mjs +64 -0
  16. package/templates/skills/domains/ai/SKILL.md +35 -35
  17. package/templates/skills/domains/ai/agent-dev.md +242 -242
  18. package/templates/skills/domains/ai/llm-security.md +288 -288
  19. package/templates/skills/domains/ai/rag-system.md +542 -542
  20. package/templates/skills/domains/architecture/SKILL.md +43 -43
  21. package/templates/skills/domains/architecture/api-design.md +225 -225
  22. package/templates/skills/domains/architecture/cloud-native.md +285 -285
  23. package/templates/skills/domains/architecture/security-arch.md +297 -297
  24. package/templates/skills/domains/data-engineering/SKILL.md +208 -208
  25. package/templates/skills/domains/development/SKILL.md +47 -47
  26. package/templates/skills/domains/development/cpp.md +246 -246
  27. package/templates/skills/domains/development/go.md +323 -323
  28. package/templates/skills/domains/development/java.md +277 -277
  29. package/templates/skills/domains/development/python.md +288 -288
  30. package/templates/skills/domains/development/rust.md +313 -313
  31. package/templates/skills/domains/development/shell.md +313 -313
  32. package/templates/skills/domains/development/typescript.md +277 -277
  33. package/templates/skills/domains/devops/SKILL.md +40 -40
  34. package/templates/skills/domains/devops/database.md +217 -217
  35. package/templates/skills/domains/devops/devsecops.md +198 -198
  36. package/templates/skills/domains/devops/git-workflow.md +181 -181
  37. package/templates/skills/domains/devops/testing.md +283 -283
  38. package/templates/skills/domains/frontend-design/SKILL.md +244 -244
  39. package/templates/skills/domains/frontend-design/claymorphism/SKILL.md +121 -121
  40. package/templates/skills/domains/frontend-design/component-patterns.md +202 -202
  41. package/templates/skills/domains/frontend-design/glassmorphism/SKILL.md +142 -142
  42. package/templates/skills/domains/frontend-design/liquid-glass/SKILL.md +139 -139
  43. package/templates/skills/domains/frontend-design/neubrutalism/SKILL.md +145 -145
  44. package/templates/skills/domains/frontend-design/state-management.md +680 -680
  45. package/templates/skills/domains/frontend-design/ui-aesthetics.md +110 -110
  46. package/templates/skills/domains/frontend-design/ux-principles.md +156 -156
  47. package/templates/skills/domains/infrastructure/SKILL.md +201 -201
  48. package/templates/skills/domains/mobile/SKILL.md +225 -225
  49. package/templates/skills/domains/orchestration/SKILL.md +30 -30
  50. package/templates/skills/domains/orchestration/multi-agent.md +228 -228
  51. package/templates/skills/domains/security/SKILL.md +73 -73
  52. package/templates/skills/domains/security/blue-team.md +436 -436
  53. package/templates/skills/domains/security/code-audit.md +265 -265
  54. package/templates/skills/domains/security/pentest.md +226 -226
  55. package/templates/skills/domains/security/red-team.md +374 -374
  56. package/templates/skills/domains/security/threat-intel.md +372 -372
  57. package/templates/skills/domains/security/vuln-research.md +369 -369
  58. package/templates/skills/tools/lib/shared.js +98 -98
  59. package/templates/skills/tools/override-refusal/SKILL.md +53 -53
  60. package/templates/skills/tools/override-refusal/scripts/refusal_rewriter.js +226 -226
package/README.md CHANGED
@@ -67,8 +67,13 @@ Codex Gemini
67
67
  | **Node.js 20+** | Yes | `ora@9.x` requires Node ≥ 20 |
68
68
  | **Claude Code CLI** | Yes | [Install guide](#install-claude-code) |
69
69
  | **jq** | Yes | Used for auto-authorization hook ([install](#install-jq)) |
70
- | **codex@openai-codex plugin** | No | Enables backend Codex routing (strongly recommended) |
71
- | **gemini@google-gemini plugin** | No | Enables frontend Gemini routing (strongly recommended) |
70
+ | **codex access** | **One of** | `codex@openai-codex` plugin (recommended) **OR** `npm i -g @openai/codex` |
71
+ | **gemini access** | **One of** | `gemini@google-gemini` plugin (recommended) **OR** `npm i -g @google/gemini-cli` |
72
+
73
+ > **Why "one of"**: ccgx-workflow prefers the plugin path (one-click install in Claude Code,
74
+ > integrated auth). When the plugin is absent it falls back to spawning the standalone CLI
75
+ > via `~/.claude/bin/codeagent-wrapper`. Without **either**, `/ccg:*` commands that invoke
76
+ > codex/gemini fail with exit 127 + a friendly install hint.
72
77
 
73
78
  ### Installation
74
79
 
@@ -104,17 +109,44 @@ Supports npm / homebrew / curl / powershell / cmd.
104
109
 
105
110
  ---
106
111
 
107
- ## Enabling Multi-Model Collaboration (codex / gemini plugins)
112
+ ## Enabling Multi-Model Collaboration (codex / gemini access)
113
+
114
+ ccgx-workflow needs codex + gemini access via **one of two paths** for each:
108
115
 
109
- ccgx-workflow calls codex and gemini through Claude Code's official plugin mechanism, **no longer relying on the legacy `codeagent-wrapper` binary**. Install plugins to unlock full dual-model parallel capability.
116
+ ### Path A Claude Code plugins (recommended)
110
117
 
111
- ### Install (run inside Claude Code)
118
+ Run inside Claude Code:
112
119
 
113
120
  ```
114
121
  /plugin install codex@openai-codex
115
122
  /plugin install gemini@google-gemini
116
123
  ```
117
124
 
125
+ One-click install, integrated auth via Claude Code. Templates spawn plugin
126
+ agents (`Agent(codex:codex-rescue)` / `Agent(gemini:gemini-rescue)`) directly,
127
+ no shim involved.
128
+
129
+ ### Path B — standalone CLI fallback
130
+
131
+ ```bash
132
+ # codex CLI
133
+ npm i -g @openai/codex
134
+ codex login
135
+
136
+ # gemini CLI
137
+ npm i -g @google/gemini-cli
138
+ gemini auth login
139
+ ```
140
+
141
+ When the plugin is absent, templates fall back to invoking the CLI through
142
+ `~/.claude/bin/codeagent-wrapper` (a Node shim that wraps `codex` / `gemini`).
143
+ You handle key configuration manually.
144
+
145
+ ### Mix and match
146
+
147
+ You can use plugin for codex + CLI for gemini, or vice versa. ccgx-workflow
148
+ detects each independently and picks the best available path per call site.
149
+
118
150
  The `@` suffix is the marketplace identifier. If a marketplace isn't configured, run `/help plugin` inside Claude Code to see local marketplace management commands, or refer to [Claude Code plugin docs](https://docs.claude.com/en/docs/claude-code/plugins).
119
151
 
120
152
  > Upstream plugin repos (for troubleshooting / issue reports):
package/README.zh-CN.md CHANGED
@@ -64,8 +64,13 @@ Codex Gemini
64
64
  | **Node.js 20+** | 是 | `ora@9.x` 要求 Node ≥ 20 |
65
65
  | **Claude Code CLI** | 是 | [安装方法](#安装-claude-code) |
66
66
  | **jq** | 是 | 自动授权 Hook 依赖([安装方法](#安装-jq)) |
67
- | **codex@openai-codex plugin** | | 启用后端 Codex 路由(强烈推荐) |
68
- | **gemini@google-gemini plugin** | | 启用前端 Gemini 路由(强烈推荐) |
67
+ | **codex 接入** | **二选一** | `codex@openai-codex` plugin(推荐)**或** `npm i -g @openai/codex` |
68
+ | **gemini 接入** | **二选一** | `gemini@google-gemini` plugin(推荐)**或** `npm i -g @google/gemini-cli` |
69
+
70
+ > **为什么是「二选一」**:ccgx-workflow 优先走 plugin(Claude Code 一键装、内置鉴权)。
71
+ > plugin 没装时降级到 `~/.claude/bin/codeagent-wrapper` shim 启动独立 CLI。两条路
72
+ > **任一**没装的,对应 `/ccg:*` 命令在调 codex/gemini 时会以 exit 127 退出并打印
73
+ > 安装提示。
69
74
 
70
75
  ### 一键安装
71
76
 
@@ -101,17 +106,42 @@ npx ccgx-workflow menu # 选择「安装 Claude Code」
101
106
 
102
107
  ---
103
108
 
104
- ## 启用多模型协作(codex / gemini plugin)
109
+ ## 启用多模型协作(codex / gemini 接入)
110
+
111
+ ccgx-workflow 需要 codex + gemini 接入,每个走 **两条路之一**:
105
112
 
106
- ccgx-workflow 通过 Claude Code 官方 plugin 机制调用 codex 和 gemini,**不再依赖旧的 `codeagent-wrapper` 二进制**。装 plugin 才能开启完整的双模型并行能力。
113
+ ### 路径 A — Claude Code plugin(推荐)
107
114
 
108
- ### 安装命令(在 Claude Code 内执行)
115
+ Claude Code 内执行:
109
116
 
110
117
  ```
111
118
  /plugin install codex@openai-codex
112
119
  /plugin install gemini@google-gemini
113
120
  ```
114
121
 
122
+ 一键安装,鉴权由 Claude Code 接管。模板直接 spawn plugin agent
123
+ (`Agent(codex:codex-rescue)` / `Agent(gemini:gemini-rescue)`),不经过 shim。
124
+
125
+ ### 路径 B — 独立 CLI fallback
126
+
127
+ ```bash
128
+ # codex CLI
129
+ npm i -g @openai/codex
130
+ codex login
131
+
132
+ # gemini CLI
133
+ npm i -g @google/gemini-cli
134
+ gemini auth login
135
+ ```
136
+
137
+ plugin 没装时,模板通过 `~/.claude/bin/codeagent-wrapper`(一个调 `codex` /
138
+ `gemini` 的 Node shim)落地。鉴权 key 自己配。
139
+
140
+ ### 混搭
141
+
142
+ 可以 codex 走 plugin、gemini 走 CLI,反之亦然。ccgx-workflow 每次调用独立检测,
143
+ 按可用路径择优。
144
+
115
145
  `@` 后是 marketplace identifier。如果提示 marketplace 未配置,在 Claude Code 里执行 `/help plugin` 查看本地 marketplace 管理命令,或参考 [Claude Code plugin 官方文档](https://docs.claude.com/en/docs/claude-code/plugins)。
116
146
 
117
147
  > 上游 plugin 仓库地址(用于排错 / 提 issue):
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 { d as diagnoseMcpConfig, i as isWindows, r as readClaudeCodeConfig, f as fixWindowsMcpConfig, w as writeClaudeCodeConfig, a as readCcgConfig, b as initI18n, c as i18n, s as showMainMenu, e as init, g as configMcp, v as version } from './shared/ccgx-workflow.WgUzkiC3.mjs';
4
+ import { d as diagnoseMcpConfig, i as isWindows, r as readClaudeCodeConfig, f as fixWindowsMcpConfig, w as writeClaudeCodeConfig, a as readCcgConfig, b as initI18n, c as i18n, s as showMainMenu, e as init, g as configMcp, v as version } from './shared/ccgx-workflow.Bq9vAaEw.mjs';
5
5
  import 'inquirer';
6
6
  import 'ora';
7
7
  import 'node:child_process';
package/dist/index.mjs CHANGED
@@ -1,5 +1,5 @@
1
- import { h as collectSkills } from './shared/ccgx-workflow.WgUzkiC3.mjs';
2
- export { j as changeLanguage, F as checkForUpdates, H as collectInvocableSkills, G as compareVersions, l as createDefaultConfig, m as createDefaultRouting, I as generateCommandContent, n as getCcgDir, o as getConfigPath, D as getCurrentVersion, E as getLatestVersion, q as getWorkflowById, p as getWorkflowConfigs, c as i18n, e as init, b as initI18n, x as installAceTool, y as installAceToolRs, J as installSkillCommands, t as installWorkflows, B as migrateToV1_4_0, C as needsMigration, K as parseFrontmatter, a as readCcgConfig, s as showMainMenu, A as uninstallAceTool, z as uninstallWorkflows, u as update, k as writeCcgConfig } from './shared/ccgx-workflow.WgUzkiC3.mjs';
1
+ import { h as collectSkills } from './shared/ccgx-workflow.Bq9vAaEw.mjs';
2
+ export { j as changeLanguage, F as checkForUpdates, H as collectInvocableSkills, G as compareVersions, l as createDefaultConfig, m as createDefaultRouting, I as generateCommandContent, n as getCcgDir, o as getConfigPath, D as getCurrentVersion, E as getLatestVersion, q as getWorkflowById, p as getWorkflowConfigs, c as i18n, e as init, b as initI18n, x as installAceTool, y as installAceToolRs, J as installSkillCommands, t as installWorkflows, B as migrateToV1_4_0, C as needsMigration, K as parseFrontmatter, a as readCcgConfig, s as showMainMenu, A as uninstallAceTool, z as uninstallWorkflows, u as update, k as writeCcgConfig } from './shared/ccgx-workflow.Bq9vAaEw.mjs';
3
3
  import { existsSync, readFileSync, mkdirSync, writeFileSync, statSync, readdirSync } from 'node:fs';
4
4
  import { join, dirname } from 'node:path';
5
5
  import { homedir } from 'node:os';
@@ -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 = "1.0.0";
13
+ const version = "1.0.2";
14
14
 
15
15
  function cmd(id, order, category, name, nameEn, description, descriptionEn, cmdOverride) {
16
16
  return {
@@ -1012,7 +1012,6 @@ async function removeFastContextPrompt() {
1012
1012
  await removeFromFile(join(homedir(), ".gemini", "GEMINI.md"));
1013
1013
  }
1014
1014
 
1015
- const EXPECTED_BINARY_VERSION = "5.10.0";
1016
1015
  async function copyMdTemplates(ctx, srcDir, destDir, options = {}) {
1017
1016
  const installed = [];
1018
1017
  if (!await fs.pathExists(srcDir)) {
@@ -1256,55 +1255,6 @@ async function installHookFiles(ctx) {
1256
1255
  function getLauncherName() {
1257
1256
  return process.platform === "win32" ? "codeagent-wrapper.cmd" : "codeagent-wrapper";
1258
1257
  }
1259
- async function verifyBinary(installDir) {
1260
- const binDir = join(installDir, "bin");
1261
- const launcherPath = join(binDir, getLauncherName());
1262
- if (!await fs.pathExists(launcherPath)) return false;
1263
- try {
1264
- const { execSync } = await import('node:child_process');
1265
- execSync(`"${launcherPath}" --version`, { stdio: "pipe" });
1266
- return true;
1267
- } catch {
1268
- return false;
1269
- }
1270
- }
1271
- async function verifyBinaryVersion(installDir) {
1272
- const binDir = join(installDir, "bin");
1273
- const launcherPath = join(binDir, getLauncherName());
1274
- try {
1275
- const { execSync } = await import('node:child_process');
1276
- const output = execSync(`"${launcherPath}" --version`, { stdio: "pipe" }).toString().trim();
1277
- const version = output.replace(/^.*version\s*/, "");
1278
- return version === EXPECTED_BINARY_VERSION;
1279
- } catch {
1280
- return false;
1281
- }
1282
- }
1283
- function showBinaryDownloadWarning(binDir) {
1284
- const launcherName = getLauncherName();
1285
- const displayPath = process.platform === "win32" ? `${binDir.replace(/\//g, "\\")}\\${launcherName}` : `${binDir}/${launcherName}`;
1286
- console.log();
1287
- console.log(ansis.red.bold(` \u2554\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2557`));
1288
- console.log(ansis.red.bold(` \u2551 \u26A0 codeagent-wrapper \u542F\u52A8\u5668\u5B89\u88C5\u5931\u8D25 \u2551`));
1289
- console.log(ansis.red.bold(` \u2551 Launcher shim install failed (fs / package issue) \u2551`));
1290
- console.log(ansis.red.bold(` \u255A\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u255D`));
1291
- console.log();
1292
- console.log(ansis.yellow(` \u591A\u6A21\u578B\u534F\u4F5C\u547D\u4EE4 (/ccg:workflow, /ccg:plan \u7B49) \u9700\u8981\u6B64\u542F\u52A8\u5668\u624D\u80FD\u5DE5\u4F5C\u3002`));
1293
- console.log(ansis.yellow(` Multi-model commands require this launcher to work.`));
1294
- console.log();
1295
- console.log(ansis.cyan(` \u81EA\u52A8\u4FEE\u590D / Auto fix:`));
1296
- console.log();
1297
- console.log(ansis.white(` 1. \u6E05\u7F13\u5B58\u91CD\u88C5 / Clean & reinstall:`));
1298
- console.log(ansis.cyan(` npm cache clean --force`));
1299
- console.log(ansis.cyan(` npx ccg-workflow@latest`));
1300
- console.log();
1301
- console.log(ansis.white(` 2. \u68C0\u67E5\u8DEF\u5F84\u5199\u6743\u9650 / Check write permissions:`));
1302
- console.log(ansis.cyan(` ${displayPath}`));
1303
- console.log();
1304
- console.log(ansis.gray(` v3.0.0+ \u542F\u52A8\u5668\u662F ~870 \u884C Node \u811A\u672C\uFF08\u65E0 Go binary \u4E0B\u8F7D\uFF09\uFF0C`));
1305
- console.log(ansis.gray(` \u5931\u8D25\u901A\u5E38\u610F\u5473\u7740 fs \u6743\u9650\u95EE\u9898\u6216 npm \u5305\u635F\u574F\uFF0C\u800C\u975E\u7F51\u7EDC\u3002`));
1306
- console.log();
1307
- }
1308
1258
  async function installShim(ctx) {
1309
1259
  try {
1310
1260
  const binDir = join(ctx.installDir, "bin");
@@ -1332,25 +1282,6 @@ async function installShim(ctx) {
1332
1282
  await fs.chmod(destLauncher, 493);
1333
1283
  }
1334
1284
  }
1335
- for (const stale of ["codeagent-wrapper.exe", "codeagent-wrapper"]) {
1336
- const stalePath = join(binDir, stale);
1337
- if (await fs.pathExists(stalePath)) {
1338
- try {
1339
- const { execSync } = await import('node:child_process');
1340
- const out = execSync(`"${stalePath}" --version`, { stdio: "pipe" }).toString().trim();
1341
- if (out.includes(EXPECTED_BINARY_VERSION)) {
1342
- const stat = await fs.stat(stalePath);
1343
- if (stat.size > 1e5) {
1344
- await fs.remove(stalePath);
1345
- }
1346
- } else {
1347
- await fs.remove(stalePath);
1348
- }
1349
- } catch {
1350
- await fs.remove(stalePath);
1351
- }
1352
- }
1353
- }
1354
1285
  if (process.platform === "win32") {
1355
1286
  const cmdMjs = destMjs.replace(/\//g, "\\");
1356
1287
  const cmdPath = join(binDir, "codeagent-wrapper.cmd");
@@ -1598,36 +1529,6 @@ async function uninstallWorkflows(installDir, options) {
1598
1529
  return result;
1599
1530
  }
1600
1531
 
1601
- const installer = {
1602
- __proto__: null,
1603
- collectInvocableSkills: collectInvocableSkills,
1604
- collectSkills: collectSkills,
1605
- computeSyncReport: computeSyncReport,
1606
- getAllCommandIds: getAllCommandIds,
1607
- getWorkflowById: getWorkflowById,
1608
- getWorkflowConfigs: getWorkflowConfigs,
1609
- injectConfigVariables: injectConfigVariables,
1610
- installAceTool: installAceTool,
1611
- installAceToolRs: installAceToolRs,
1612
- installContextWeaver: installContextWeaver,
1613
- installFastContext: installFastContext,
1614
- installMcpServer: installMcpServer,
1615
- installWorkflows: installWorkflows,
1616
- parseFrontmatter: parseFrontmatter,
1617
- removeFastContextPrompt: removeFastContextPrompt,
1618
- showBinaryDownloadWarning: showBinaryDownloadWarning,
1619
- syncMcpToCodex: syncMcpToCodex,
1620
- syncMcpToGemini: syncMcpToGemini,
1621
- uninstallAceTool: uninstallAceTool,
1622
- uninstallContextWeaver: uninstallContextWeaver,
1623
- uninstallFastContext: uninstallFastContext,
1624
- uninstallMcpServer: uninstallMcpServer,
1625
- uninstallWorkflows: uninstallWorkflows,
1626
- verifyBinary: verifyBinary,
1627
- verifyBinaryVersion: verifyBinaryVersion,
1628
- writeFastContextPrompt: writeFastContextPrompt
1629
- };
1630
-
1631
1532
  async function syncMcpMirrors() {
1632
1533
  const [codex, gemini] = await Promise.all([syncMcpToCodex(), syncMcpToGemini()]);
1633
1534
  const synced = [];
@@ -4056,7 +3957,10 @@ ${exportCommand}
4056
3957
  }
4057
3958
  }
4058
3959
  } else {
4059
- showBinaryDownloadWarning(join(installDir, "bin"));
3960
+ console.log();
3961
+ console.log(ansis.red.bold(" \u26A0 Launcher shim install failed"));
3962
+ console.log(ansis.yellow(" Try: npm cache clean --force && npx ccgx-workflow@latest"));
3963
+ console.log();
4060
3964
  }
4061
3965
  if (mcpProvider === "skip" || (mcpProvider === "ace-tool" || mcpProvider === "ace-tool-rs") && !aceToolToken || mcpProvider === "contextweaver" && !contextWeaverApiKey) {
4062
3966
  console.log();
@@ -4078,6 +3982,18 @@ ${exportCommand}
4078
3982
  console.log();
4079
3983
  }
4080
3984
  console.log();
3985
+ console.log(ansis.cyan.bold(" \u26A0 Multi-model prerequisites \u2014 install one path for codex + gemini"));
3986
+ console.log();
3987
+ console.log(` ${ansis.green("\u2605")} ${ansis.bold("Plugin (recommended, one-click in Claude Code):")}`);
3988
+ console.log(` ${ansis.cyan("/plugins install codex@openai-codex")}`);
3989
+ console.log(` ${ansis.cyan("/plugins install gemini@google-gemini")}`);
3990
+ console.log();
3991
+ console.log(` ${ansis.green("\u2606")} ${ansis.bold("CLI fallback (standalone binaries):")}`);
3992
+ console.log(` ${ansis.cyan("npm i -g @openai/codex")} ${ansis.gray("# then: codex login")}`);
3993
+ console.log(` ${ansis.cyan("npm i -g @google/gemini-cli")} ${ansis.gray("# then: gemini auth")}`);
3994
+ console.log();
3995
+ console.log(ansis.gray(" Without either, /ccg:* commands invoking codex/gemini will exit 127."));
3996
+ console.log();
4081
3997
  } catch (error) {
4082
3998
  spinner.fail(ansis.red(i18n.t("init:installFailed")));
4083
3999
  console.error(error);
@@ -4474,15 +4390,6 @@ async function performUpdate(fromVersion, toVersion, isNewVersion) {
4474
4390
  } catch {
4475
4391
  }
4476
4392
  }
4477
- if (!await verifyBinary(installDir)) {
4478
- showBinaryDownloadWarning(join(installDir, "bin"));
4479
- } else {
4480
- const { verifyBinaryVersion } = await Promise.resolve().then(function () { return installer; });
4481
- const versionOk = await verifyBinaryVersion(installDir);
4482
- if (!versionOk) {
4483
- showBinaryDownloadWarning(join(installDir, "bin"));
4484
- }
4485
- }
4486
4393
  } else {
4487
4394
  console.log();
4488
4395
  console.log(ansis.yellow.bold(" \u26A0 \u6B63\u5728\u6062\u590D\u65E7\u7248\u672C\u6587\u4EF6 / Restoring old version files..."));
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ccgx-workflow",
3
- "version": "1.0.0",
3
+ "version": "1.0.2",
4
4
  "description": "Multi-model orchestration for Claude Code. Codex + Gemini parallel collaboration with fresh-context subagent protocols, OS-level process isolation, and Plan-Critic-Verify quality tiers. Successor to ccg-workflow.",
5
5
  "type": "module",
6
6
  "packageManager": "pnpm@10.17.1",
@@ -65,6 +65,7 @@
65
65
  "templates/commands/spec-plan.md",
66
66
  "templates/commands/spec-impl.md",
67
67
  "templates/commands/spec-review.md",
68
+ "templates/commands/team.md",
68
69
  "templates/commands/team-exec.md",
69
70
  "templates/commands/codex-exec.md",
70
71
  "templates/commands/context.md",