ccg-workflow 1.7.74 → 1.7.75

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
@@ -293,4 +293,4 @@ MIT
293
293
 
294
294
  ---
295
295
 
296
- v1.7.74 | [Issues](https://github.com/fengshao1227/ccg-workflow/issues)
296
+ v1.7.75 | [Issues](https://github.com/fengshao1227/ccg-workflow/issues)
package/README.zh-CN.md CHANGED
@@ -295,4 +295,4 @@ MIT
295
295
 
296
296
  ---
297
297
 
298
- v1.7.74 | [Issues](https://github.com/fengshao1227/ccg-workflow/issues)
298
+ v1.7.75 | [Issues](https://github.com/fengshao1227/ccg-workflow/issues)
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.Cj1gMkci.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.C09usDEA.mjs';
5
5
  import 'inquirer';
6
6
  import 'node:child_process';
7
7
  import 'node:util';
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.Cj1gMkci.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.C09usDEA.mjs';
2
2
  import 'ansis';
3
3
  import 'inquirer';
4
4
  import 'node:child_process';
@@ -10,7 +10,7 @@ import { parse, stringify } from 'smol-toml';
10
10
  import i18next from 'i18next';
11
11
  import ora from 'ora';
12
12
 
13
- const version = "1.7.74";
13
+ const version = "1.7.75";
14
14
 
15
15
  function isWindows() {
16
16
  return process.platform === "win32";
@@ -669,9 +669,22 @@ ${workflow.description}
669
669
  }
670
670
  }
671
671
  const skillsTemplateDir = join(templateDir, "skills");
672
- const skillsDestDir = join(installDir, "skills");
672
+ const skillsDestDir = join(installDir, "skills", "ccg");
673
673
  if (await fs.pathExists(skillsTemplateDir)) {
674
674
  try {
675
+ const oldSkillsRoot = join(installDir, "skills");
676
+ const ccgLegacyItems = ["tools", "orchestration", "SKILL.md", "run_skill.js"];
677
+ const needsMigration = !await fs.pathExists(skillsDestDir) && await fs.pathExists(join(oldSkillsRoot, "tools"));
678
+ if (needsMigration) {
679
+ await fs.ensureDir(skillsDestDir);
680
+ for (const item of ccgLegacyItems) {
681
+ const oldPath = join(oldSkillsRoot, item);
682
+ const newPath = join(skillsDestDir, item);
683
+ if (await fs.pathExists(oldPath)) {
684
+ await fs.move(oldPath, newPath, { overwrite: true });
685
+ }
686
+ }
687
+ }
675
688
  await fs.copy(skillsTemplateDir, skillsDestDir, {
676
689
  overwrite: force,
677
690
  errorOnExist: false
@@ -756,7 +769,7 @@ async function uninstallWorkflows(installDir) {
756
769
  const commandsDir = join(installDir, "commands", "ccg");
757
770
  join(installDir, ".ccg", "prompts");
758
771
  const agentsDir = join(installDir, "agents", "ccg");
759
- const skillsDir = join(installDir, "skills");
772
+ const skillsDir = join(installDir, "skills", "ccg");
760
773
  const binDir = join(installDir, "bin");
761
774
  const ccgConfigDir = join(installDir, ".ccg");
762
775
  if (await fs.pathExists(commandsDir)) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ccg-workflow",
3
- "version": "1.7.74",
3
+ "version": "1.7.75",
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",
@@ -22,13 +22,17 @@ description: '按规范执行 + 多模型协作 + 归档'
22
22
  - Confirm with user which change ID to implement.
23
23
  - Run `openspec status --change "<change_id>" --json` to review tasks.
24
24
 
25
- 2. **Apply OPSX Change**
25
+ 2. **Apply OPSX Change (Pre-flight Check)**
26
26
  - Call `/opsx:apply` internally to enter implementation mode:
27
27
  ```
28
28
  /opsx:apply
29
29
  ```
30
30
  - This will load the change context and guide you through the tasks defined in `tasks.md`.
31
31
  - **Note**: This is an internal call. If this step fails, guide the user to re-run `/ccg:spec-impl`.
32
+ - **HARD GATE**: Check the returned `state` field:
33
+ - If `state: "blocked"` → STOP immediately. Inform the user which artifacts are missing and suggest: "Run `/ccg:spec-plan` to generate missing artifacts first."
34
+ - If `progress.total === 0` → STOP immediately. Inform: "tasks.md has no parseable tasks. Run `/ccg:spec-plan` to regenerate."
35
+ - Only proceed to Step 3 when `state: "ready"` and `progress.total > 0`.
32
36
 
33
37
  3. **Identify Minimal Verifiable Phase**
34
38
  - Review `tasks.md` and identify the **smallest verifiable phase**.
@@ -15,6 +15,7 @@ description: '多模型分析 → 消除歧义 → 零决策可执行计划'
15
15
  - Refer to `openspec/config.yaml` for project conventions.
16
16
  - **USER GUIDANCE RULE**: When suggesting next steps to the user, ALWAYS use CCG commands (`/ccg:spec-research`, `/ccg:spec-plan`, `/ccg:spec-impl`, `/ccg:spec-review`). NEVER suggest `/opsx:*` commands to the user. If OpenSpec CLI returns error messages referencing OPSX skills, translate them to CCG equivalents.
17
17
  - **TASKS FORMAT RULE**: When generating or modifying `tasks.md`, ALL tasks MUST use checkbox format (`- [ ] X.Y description`). Heading+bullet format will cause OpenSpec CLI to parse 0 tasks and block the workflow.
18
+ - **PHASE BOUNDARY**: This phase ONLY generates OPSX artifacts (specs.md, design.md, tasks.md). Do NOT modify any source code. Do NOT proceed to implementation. After artifacts are generated, STOP and inform the user: "Plan complete. Run `/ccg:spec-impl` to start implementation."
18
19
 
19
20
  **Steps**
20
21
  1. **Select Change**
@@ -114,6 +115,9 @@ description: '多模型分析 → 消除歧义 → 零决策可执行计划'
114
115
  ```
115
116
  - The OPSX skill will use the above summary to create specs.md, design.md, and tasks.md.
116
117
  - **Note**: This is an internal call. If this step fails, guide the user to re-run `/ccg:spec-plan`.
118
+ - **STOP**: After artifacts are generated, verify they exist and inform user:
119
+ "Plan phase complete. Artifacts generated: specs.md, design.md, tasks.md. Run `/ccg:spec-impl` to start implementation."
120
+ Do NOT proceed to modify source code.
117
121
 
118
122
  6. **Context Checkpoint**
119
123
  - Report current context usage.
@@ -16,6 +16,7 @@ description: '需求 → 约束集(并行探索 + OPSX 提案)'
16
16
  - Use `{{MCP_SEARCH_TOOL}}` to minimize grep/find operations.
17
17
  - Do not make architectural decisions—surface constraints that guide decisions.
18
18
  - **USER GUIDANCE RULE**: When suggesting next steps to the user, ALWAYS use CCG commands (`/ccg:spec-research`, `/ccg:spec-plan`, `/ccg:spec-impl`, `/ccg:spec-review`). NEVER suggest `/opsx:*` commands to the user. If OpenSpec CLI returns error messages referencing OPSX skills, translate them to CCG equivalents.
19
+ - **PHASE BOUNDARY**: This phase ONLY generates the OPSX proposal artifact. Do NOT modify any source code. Do NOT proceed to planning or implementation. After the proposal is generated, STOP and inform the user: "Research complete. Run `/ccg:spec-plan` to continue."
19
20
 
20
21
  **Steps**
21
22
  0. **MANDATORY: Enhance Requirement FIRST**
@@ -137,6 +138,9 @@ description: '需求 → 约束集(并行探索 + OPSX 提案)'
137
138
  ```
138
139
  - The OPSX skill will use the above summary to write proposal.md.
139
140
  - **Note**: This is an internal call. If this step fails, guide the user to re-run `/ccg:spec-research`.
141
+ - **STOP**: After proposal is generated, verify it exists and inform user:
142
+ "Research phase complete. Proposal generated. Run `/ccg:spec-plan` to continue planning."
143
+ Do NOT proceed to planning or implementation.
140
144
 
141
145
  8. **Context Checkpoint**
142
146
  - Report current context usage.