ccg-workflow 1.7.50 → 1.7.52

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/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, s as showMainMenu, i as init, E as configMcp, F as version, a as i18n } from './shared/ccg-workflow.DmpTp5qU.mjs';
4
+ import { z as diagnoseMcpConfig, A as isWindows, B as readClaudeCodeConfig, C as fixWindowsMcpConfig, D as writeClaudeCodeConfig, r as readCcgConfig, b as initI18n, s as showMainMenu, i as init, E as configMcp, F as version, a as i18n } from './shared/ccg-workflow.BqEmGd17.mjs';
5
5
  import 'inquirer';
6
6
  import 'node:child_process';
7
7
  import 'node:util';
@@ -135,30 +135,30 @@ async function setupCommands(cli) {
135
135
  } catch {
136
136
  await initI18n("zh-CN");
137
137
  }
138
- cli.command("", "Show interactive menu (default)").option("--lang, -l <lang>", "Display language (zh-CN, en)").action(async (options) => {
138
+ cli.command("", "\u663E\u793A\u4EA4\u4E92\u5F0F\u83DC\u5355\uFF08\u9ED8\u8BA4\uFF09").option("--lang, -l <lang>", "\u663E\u793A\u8BED\u8A00 (zh-CN, en)").action(async (options) => {
139
139
  if (options.lang) {
140
140
  await initI18n(options.lang);
141
141
  }
142
142
  await showMainMenu();
143
143
  });
144
- cli.command("init", "Initialize CCG multi-model collaboration system").alias("i").option("--lang, -l <lang>", "Display language (zh-CN, en)").option("--force, -f", "Force overwrite existing configuration").option("--skip-prompt, -s", "Skip all interactive prompts (non-interactive mode)").option("--skip-mcp", "Skip MCP configuration (used during update)").option("--frontend, -F <models>", "Frontend models (comma-separated: gemini,codex,claude)").option("--backend, -B <models>", "Backend models (comma-separated: codex,gemini,claude)").option("--mode, -m <mode>", "Collaboration mode (parallel, smart, sequential)").option("--workflows, -w <workflows>", 'Workflows to install (comma-separated or "all")').option("--install-dir, -d <path>", "Installation directory (default: ~/.claude)").action(async (options) => {
144
+ cli.command("init", "\u521D\u59CB\u5316 CCG \u591A\u6A21\u578B\u534F\u4F5C\u7CFB\u7EDF").alias("i").option("--lang, -l <lang>", "\u663E\u793A\u8BED\u8A00 (zh-CN, en)").option("--force, -f", "\u5F3A\u5236\u8986\u76D6\u73B0\u6709\u914D\u7F6E").option("--skip-prompt, -s", "\u8DF3\u8FC7\u6240\u6709\u4EA4\u4E92\u5F0F\u63D0\u793A\uFF08\u975E\u4EA4\u4E92\u6A21\u5F0F\uFF09").option("--skip-mcp", "\u8DF3\u8FC7 MCP \u914D\u7F6E\uFF08\u66F4\u65B0\u65F6\u4F7F\u7528\uFF09").option("--frontend, -F <models>", "\u524D\u7AEF\u6A21\u578B\uFF08\u9017\u53F7\u5206\u9694: gemini,codex,claude\uFF09").option("--backend, -B <models>", "\u540E\u7AEF\u6A21\u578B\uFF08\u9017\u53F7\u5206\u9694: codex,gemini,claude\uFF09").option("--mode, -m <mode>", "\u534F\u4F5C\u6A21\u5F0F (parallel, smart, sequential)").option("--workflows, -w <workflows>", '\u8981\u5B89\u88C5\u7684\u5DE5\u4F5C\u6D41\uFF08\u9017\u53F7\u5206\u9694\u6216 "all"\uFF09').option("--install-dir, -d <path>", "\u5B89\u88C5\u76EE\u5F55\uFF08\u9ED8\u8BA4: ~/.claude\uFF09").action(async (options) => {
145
145
  if (options.lang) {
146
146
  await initI18n(options.lang);
147
147
  }
148
148
  await init(options);
149
149
  });
150
- cli.command("diagnose-mcp", "Diagnose MCP configuration issues").action(async () => {
150
+ cli.command("diagnose-mcp", "\u8BCA\u65AD MCP \u914D\u7F6E\u95EE\u9898").action(async () => {
151
151
  await diagnoseMcp();
152
152
  });
153
- cli.command("fix-mcp", "Fix Windows MCP configuration issues").action(async () => {
153
+ cli.command("fix-mcp", "\u4FEE\u590D Windows MCP \u914D\u7F6E\u95EE\u9898").action(async () => {
154
154
  await fixMcp();
155
155
  });
156
- cli.command("config <subcommand>", "Configure CCG settings").action(async (subcommand) => {
156
+ cli.command("config <subcommand>", "\u914D\u7F6E CCG \u8BBE\u7F6E").action(async (subcommand) => {
157
157
  if (subcommand === "mcp") {
158
158
  await configMcp();
159
159
  } else {
160
- console.log(ansis.red(`Unknown subcommand: ${subcommand}`));
161
- console.log(ansis.gray("Available subcommands: mcp"));
160
+ console.log(ansis.red(`\u672A\u77E5\u5B50\u547D\u4EE4: ${subcommand}`));
161
+ console.log(ansis.gray("\u53EF\u7528\u5B50\u547D\u4EE4: mcp"));
162
162
  }
163
163
  });
164
164
  cli.help((sections) => customizeHelp(sections));
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.DmpTp5qU.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.BqEmGd17.mjs';
2
2
  import 'ansis';
3
3
  import 'inquirer';
4
4
  import 'node:child_process';
@@ -10,7 +10,7 @@ import i18next from 'i18next';
10
10
  import ora from 'ora';
11
11
  import { parse, stringify } from 'smol-toml';
12
12
 
13
- const version = "1.7.50";
13
+ const version = "1.7.52";
14
14
 
15
15
  function isWindows() {
16
16
  return process.platform === "win32";
@@ -1863,20 +1863,23 @@ async function update() {
1863
1863
  }
1864
1864
  console.log();
1865
1865
  const effectiveNeedsUpdate = hasUpdate || needsWorkflowUpdate;
1866
+ let defaultConfirm = effectiveNeedsUpdate;
1866
1867
  let message;
1867
1868
  if (hasUpdate) {
1868
- message = `\u786E\u8BA4\u8981\u66F4\u65B0\u5230 v${latestVersion} \u5417\uFF1F\uFF08\u5148\u4E0B\u8F7D\u6700\u65B0\u5305 \u2192 \u5220\u9664\u65E7\u5DE5\u4F5C\u6D41 \u2192 \u5B89\u88C5\u65B0\u5DE5\u4F5C\u6D41\uFF09`;
1869
+ message = `\u53D1\u73B0\u65B0\u7248\u672C v${latestVersion} (\u5F53\u524D: v${currentVersion})\uFF0C\u662F\u5426\u66F4\u65B0\uFF1F`;
1870
+ defaultConfirm = true;
1869
1871
  } else if (needsWorkflowUpdate) {
1870
1872
  message = `\u68C0\u6D4B\u5230\u672C\u5730\u5DE5\u4F5C\u6D41\u7248\u672C (v${localVersion}) \u4F4E\u4E8E\u5F53\u524D\u7248\u672C (v${currentVersion})\uFF0C\u662F\u5426\u66F4\u65B0\uFF1F`;
1873
+ defaultConfirm = true;
1871
1874
  } else {
1872
- message = "\u5F53\u524D\u5DF2\u662F\u6700\u65B0\u7248\u672C\u3002\u8981\u91CD\u65B0\u5B89\u88C5\u5417\uFF1F\uFF08\u5148\u4E0B\u8F7D\u6700\u65B0\u5305 \u2192 \u5220\u9664\u65E7\u5DE5\u4F5C\u6D41 \u2192 \u5B89\u88C5\u65B0\u5DE5\u4F5C\u6D41\uFF09";
1875
+ message = `\u5F53\u524D\u5DF2\u662F\u6700\u65B0\u7248\u672C (v${currentVersion})\u3002\u662F\u5426\u5F3A\u5236\u91CD\u65B0\u5B89\u88C5/\u4FEE\u590D\u5DE5\u4F5C\u6D41\uFF1F`;
1876
+ defaultConfirm = false;
1873
1877
  }
1874
1878
  const { confirmUpdate } = await inquirer.prompt([{
1875
1879
  type: "confirm",
1876
1880
  name: "confirmUpdate",
1877
1881
  message,
1878
- default: effectiveNeedsUpdate
1879
- // Default to true if needs update
1882
+ default: defaultConfirm
1880
1883
  }]);
1881
1884
  if (!confirmUpdate) {
1882
1885
  console.log(ansis.gray("\u5DF2\u53D6\u6D88\u66F4\u65B0"));
@@ -2078,7 +2081,7 @@ async function showMainMenu() {
2078
2081
  showHelp();
2079
2082
  break;
2080
2083
  case "exit":
2081
- console.log(ansis.gray("Goodbye!"));
2084
+ console.log(ansis.gray("\u518D\u89C1\uFF01"));
2082
2085
  return;
2083
2086
  }
2084
2087
  console.log();
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ccg-workflow",
3
- "version": "1.7.50",
3
+ "version": "1.7.52",
4
4
  "description": "Claude-Codex-Gemini 多模型协作系统 - 智能路由多模型开发工作流",
5
5
  "type": "module",
6
6
  "packageManager": "pnpm@10.17.1",
@@ -12,16 +12,17 @@ description: '按规范执行 + 多模型协作 + 归档'
12
12
  - **NEVER** apply Codex/Gemini prototypes directly—all outputs are reference only.
13
13
  - **MANDATORY**: Request `unified diff patch` format from external models; they have zero write permission.
14
14
  - Keep implementation strictly within `tasks.md` scope—no scope creep.
15
- - Refer to `openspec/AGENTS.md` for conventions.
15
+ - Refer to `openspec/config.yaml` for conventions.
16
16
 
17
17
  **Steps**
18
- 1. **Select Proposal**
18
+ 1. **Select Change**
19
19
  - Run `openspec list` to inspect Active Changes.
20
- - Confirm with user which proposal ID to implement.
21
- - Run `openspec show <proposal_id>` to review tasks.
20
+ - Confirm with user which change ID to implement.
21
+ - Run `openspec show <change_id>` to review tasks.
22
22
 
23
- 2. **Apply OpenSpec Change**
24
- - Run `/openspec:apply <proposal_id>` to enter implementation mode.
23
+ 2. **Apply OPSX Change**
24
+ - Use `/ccg:spec-impl` (which uses OpenSpec skills internally) to enter implementation mode.
25
+ - This skill will guide you through the tasks defined in `tasks.md`.
25
26
 
26
27
  3. **Identify Minimal Verifiable Phase**
27
28
  - Review `tasks.md` and identify the **smallest verifiable phase**.
@@ -104,7 +105,7 @@ description: '按规范执行 + 多模型协作 + 归档'
104
105
 
105
106
  10. **Archive on Completion**
106
107
  - When ALL tasks in `tasks.md` are marked `[x]`:
107
- - Run `/openspec:archive <proposal_id>`
108
+ - The agent will use OpenSpec skills to archive the change.
108
109
  - This merges spec deltas to `openspec/specs/` and moves change to archive.
109
110
 
110
111
  **Reference**
@@ -118,6 +119,5 @@ Implementation is complete when:
118
119
  - [ ] All tasks in `tasks.md` marked `[x]`
119
120
  - [ ] All multi-model reviews passed
120
121
  - [ ] Side-effect review confirmed no regressions
121
- - [ ] `openspec validate <id>` returns zero issues
122
122
  - [ ] Change archived successfully
123
123
  <!-- CCG:SPEC:IMPL:END -->
@@ -1,9 +1,9 @@
1
1
  ---
2
- description: '初始化 OpenSpec 环境 + 验证多模型 MCP 工具'
2
+ description: '初始化 OpenSpec (OPSX) 环境 + 验证多模型 MCP 工具'
3
3
  ---
4
4
  <!-- CCG:SPEC:INIT:START -->
5
5
  **Core Philosophy**
6
- - OpenSpec provides the specification framework; CCG adds multi-model collaboration.
6
+ - OPSX provides the specification framework; CCG adds multi-model collaboration.
7
7
  - This phase ensures all tools are ready before any development work begins.
8
8
  - Fail fast: detect missing dependencies early rather than mid-workflow.
9
9
 
@@ -20,18 +20,24 @@ description: '初始化 OpenSpec 环境 + 验证多模型 MCP 工具'
20
20
 
21
21
  2. **Check and Install OpenSpec**
22
22
  - Verify if `openspec` CLI is installed: `openspec --version`
23
- - If not installed:
23
+ - If not installed or not found:
24
24
  ```bash
25
25
  npm install -g @fission-ai/openspec@latest
26
26
  ```
27
- - Confirm installation success.
27
+ - **Path Verification**:
28
+ - If `openspec` command is not found after installation:
29
+ 1. Find npm global bin: `npm bin -g`
30
+ 2. Add to PATH temporarily for this session: `export PATH=$PATH:$(npm bin -g)`
31
+ 3. **CRITICAL**: Instruct user to add this path to their shell profile (e.g., `~/.zshrc`, `~/.bashrc`, or Windows Environment Variables) to make it permanent.
32
+ - Confirm installation success by running `openspec --version` again.
28
33
 
29
- 3. **Initialize OpenSpec for Current Project**
34
+ 3. **Initialize OpenSpec (OPSX) for Current Project**
30
35
  - Run:
31
36
  ```bash
32
37
  openspec init --tools claude
33
38
  ```
34
39
  - Verify `openspec/` directory structure is created.
40
+ - Verify `.claude/skills/` contains `openspec-*` skills.
35
41
  - Report any errors with remediation steps.
36
42
 
37
43
  4. **Validate Multi-Model MCP Tools**
@@ -47,8 +53,13 @@ description: '初始化 OpenSpec 环境 + 验证多模型 MCP 工具'
47
53
  - For each unavailable tool, display warning with installation instructions.
48
54
 
49
55
  5. **Validate Context Retrieval MCP** (Optional)
50
- - Check if `mcp__ace-tool__search_context` is available.
51
- - If not, suggest: "Run `npx ccg-workflow` and select ace-tool MCP option."
56
+ - **Check Active Tool**: Is `mcp__ace-tool__search_context` available in the current session?
57
+ - **Check Configuration**: If tool is missing, check `~/.claude.json` (or `%APPDATA%\Claude\claude.json` on Windows) for `"ace-tool"` or `"ace-tool-rs"` in `mcpServers`.
58
+ - **Diagnosis**:
59
+ - If tool available: Mark as "✓ Active".
60
+ - If config exists but tool missing: Mark as "⚠️ Configured but inactive (Try restarting Claude)".
61
+ - If neither: Mark as "○ Not installed (Optional)".
62
+ - If not installed/configured, suggest: "Run `npx ccg-workflow` and select ace-tool MCP option."
52
63
 
53
64
  6. **Summary Report**
54
65
  Display status table:
@@ -57,12 +68,20 @@ description: '初始化 OpenSpec 环境 + 验证多模型 MCP 工具'
57
68
  ─────────────────────────────────
58
69
  OpenSpec CLI ✓/✗
59
70
  Project initialized ✓/✗
71
+ OPSX Skills ✓/✗
60
72
  codeagent-wrapper ✓/✗
61
73
  Codex backend ✓/✗
62
74
  Gemini backend ✓/✗
63
75
  ace-tool MCP ✓/✗ (optional)
64
76
  ```
65
- If any required components missing, list actions before proceeding.
77
+
78
+ **Next Steps (Use CCG Encapsulated Commands)**
79
+ 1. Start Research: `/ccg:spec-research "description"`
80
+ 2. Plan & Design: `/ccg:spec-plan`
81
+ 3. Implement: `/ccg:spec-impl` (Includes auto-review & archive)
82
+
83
+ **Standalone Tools (Available Anytime)**
84
+ - Code Review: `/ccg:spec-review` (Independent dual-model review)
66
85
 
67
86
  **Reference**
68
87
  - OpenSpec CLI: `openspec --help`
@@ -12,13 +12,13 @@ description: '多模型分析 → 消除歧义 → 零决策可执行计划'
12
12
  - Do not proceed to implementation until every ambiguity is resolved.
13
13
  - Multi-model collaboration is **mandatory**: use both Codex and Gemini.
14
14
  - If constraints cannot be fully specified, escalate to user or return to research phase.
15
- - Refer to `openspec/AGENTS.md` for conventions; run `openspec update` if missing.
15
+ - Refer to `openspec/config.yaml` for project conventions.
16
16
 
17
17
  **Steps**
18
- 1. **Select Proposal**
18
+ 1. **Select Change**
19
19
  - Run `openspec list` to display Active Changes.
20
- - Confirm with user which proposal ID to refine.
21
- - Run `openspec show <proposal_id>` to review current state.
20
+ - Confirm with user which change ID to refine.
21
+ - Run `openspec status --change <change_id>` to review current state.
22
22
 
23
23
  2. **Multi-Model Implementation Analysis (PARALLEL)**
24
24
  - **CRITICAL**: You MUST launch BOTH Codex AND Gemini in a SINGLE message with TWO Bash tool calls.
@@ -29,7 +29,7 @@ description: '多模型分析 → 消除歧义 → 零决策可执行计划'
29
29
  **FIRST Bash call (Codex)**:
30
30
  ```
31
31
  Bash({
32
- command: "~/.claude/bin/codeagent-wrapper --backend codex - \"$PWD\" <<'EOF'\nAnalyze proposal <proposal_id> from backend perspective:\n- Implementation approach\n- Technical risks\n- Alternative architectures\n- Edge cases and failure modes\nOUTPUT: JSON with analysis\nEOF",
32
+ command: "~/.claude/bin/codeagent-wrapper --backend codex - \"$PWD\" <<'EOF'\nAnalyze change <change_id> from backend perspective:\n- Implementation approach\n- Technical risks\n- Alternative architectures\n- Edge cases and failure modes\nOUTPUT: JSON with analysis\nEOF",
33
33
  run_in_background: true,
34
34
  timeout: 300000,
35
35
  description: "Codex: backend analysis"
@@ -39,7 +39,7 @@ description: '多模型分析 → 消除歧义 → 零决策可执行计划'
39
39
  **SECOND Bash call (Gemini) - IN THE SAME MESSAGE**:
40
40
  ```
41
41
  Bash({
42
- command: "~/.claude/bin/codeagent-wrapper --backend gemini - \"$PWD\" <<'EOF'\nAnalyze proposal <proposal_id> from frontend/integration perspective:\n- Maintainability assessment\n- Scalability considerations\n- Integration conflicts\nOUTPUT: JSON with analysis\nEOF",
42
+ command: "~/.claude/bin/codeagent-wrapper --backend gemini - \"$PWD\" <<'EOF'\nAnalyze change <change_id> from frontend/integration perspective:\n- Maintainability assessment\n- Scalability considerations\n- Integration conflicts\nOUTPUT: JSON with analysis\nEOF",
43
43
  run_in_background: true,
44
44
  timeout: 300000,
45
45
  description: "Gemini: frontend analysis"
@@ -82,28 +82,28 @@ description: '多模型分析 → 消除歧义 → 零决策可执行计划'
82
82
  - **Monotonicity**: Ordering guarantees (e.g., timestamps increase)
83
83
  - **Bounds**: Value ranges, size limits, rate constraints
84
84
 
85
- 5. **Update OpenSpec Documents**
86
- - Run `/openspec:proposal <proposal_id>` to update specs with:
87
- * All resolved constraints
88
- * PBT properties in spec format
89
- * Zero-decision task sequence
90
- - Run `openspec validate <proposal_id>` to verify format.
85
+ 5. **Update OPSX Artifacts**
86
+ - The agent will use OpenSpec skills to generate/update:
87
+ * specs (Requirements + PBT)
88
+ * design (Technical decisions)
89
+ * tasks (Zero-decision implementation plan)
90
+ - Ensure all resolved constraints and PBT properties are included in the generated artifacts.
91
91
 
92
92
  6. **Context Checkpoint**
93
93
  - Report current context usage.
94
- - If approaching 80K tokens, suggest: "Run `/clear` and continue with `/ccg:spec:impl`"
94
+ - If approaching 80K tokens, suggest: "Run `/clear` and continue with `/ccg:spec-impl`"
95
95
 
96
96
  **Exit Criteria**
97
- A proposal is ready for implementation only when:
97
+ A change is ready for implementation only when:
98
98
  - [ ] All multi-model analyses completed and synthesized
99
99
  - [ ] Zero ambiguities remain (verified by step 3 audit)
100
100
  - [ ] All PBT properties documented with falsification strategies
101
- - [ ] `openspec validate <id>` returns zero issues
101
+ - [ ] Artifacts (specs, design, tasks) generated via OpenSpec skills
102
102
  - [ ] User has explicitly approved all constraint decisions
103
103
 
104
104
  **Reference**
105
- - Inspect proposal: `openspec show <id> --json`
106
- - Check conflicts: `openspec list --specs`
105
+ - Inspect change: `openspec status --change <id> --verbose`
106
+ - Check conflicts: `openspec workflow schemas`
107
107
  - Search patterns: `rg -n "INVARIANT:|PROPERTY:" openspec/`
108
108
  - Use `AskUserQuestion` for ANY ambiguity—never assume
109
109
  <!-- CCG:SPEC:PLAN:END -->
@@ -1,12 +1,12 @@
1
1
  ---
2
- description: '需求 → 约束集(并行探索 + OpenSpec 提案)'
2
+ description: '需求 → 约束集(并行探索 + OPSX 提案)'
3
3
  ---
4
4
  <!-- CCG:SPEC:RESEARCH:START -->
5
5
  **Core Philosophy**
6
6
  - Research produces **constraint sets**, not information dumps. Each constraint narrows the solution space.
7
7
  - Constraints tell subsequent stages "don't consider this direction," enabling mechanical execution without decisions.
8
8
  - Output: 约束集合 + 可验证的成功判据 (constraint sets + verifiable success criteria).
9
- - Strictly adhere to OpenSpec rules when writing spec-structured documents.
9
+ - Strictly adhere to OPSX rules when writing spec-structured documents.
10
10
 
11
11
  **Guardrails**
12
12
  - **STOP! BEFORE ANY OTHER ACTION**: You MUST call `mcp__ace-tool__enhance_prompt` FIRST. This is NON-NEGOTIABLE.
@@ -30,9 +30,9 @@ description: '需求 → 约束集(并行探索 + OpenSpec 提案)'
30
30
  - Wait for enhanced prompt result.
31
31
  - Use enhanced prompt for ALL subsequent steps.
32
32
 
33
- 1. **Generate OpenSpec Proposal**
34
- - Run: `/openspec:proposal $ARGUMENTS`
35
- - This scaffolds `openspec/changes/<name>/` with proposal.md, tasks.md, specs/.
33
+ 1. **Generate OPSX Change**
34
+ - The agent will automatically initialize a new change or continue an existing one using OpenSpec skills.
35
+ - This scaffolds `openspec/changes/<name>/` with proposal.md.
36
36
 
37
37
  2. **Initial Codebase Assessment**
38
38
  - Use `mcp__ace-tool__search_context` to scan codebase.
@@ -78,8 +78,8 @@ description: '需求 → 约束集(并行探索 + OpenSpec 提案)'
78
78
  * Suggest defaults when applicable
79
79
  - Capture responses as additional constraints.
80
80
 
81
- 7. **Finalize OpenSpec Proposal**
82
- - Transform constraint sets into OpenSpec format:
81
+ 7. **Finalize OPSX Proposal**
82
+ - Transform constraint sets into OPSX format:
83
83
  * **Context**: User need + discovered constraints
84
84
  * **Requirements**: Each constraint becomes requirement with scenario
85
85
  * **Success Criteria**: Derived from hints and user confirmations
@@ -91,11 +91,10 @@ description: '需求 → 约束集(并行探索 + OpenSpec 提案)'
91
91
 
92
92
  8. **Context Checkpoint**
93
93
  - Report current context usage.
94
- - If approaching 80K tokens, suggest: "Run `/clear` and continue with `/ccg:spec:plan`"
94
+ - If approaching 80K tokens, suggest: "Run `/clear` and continue with `/ccg:spec-plan`"
95
95
 
96
96
  **Reference**
97
- - Review constraints: `rg -n "Constraint:|MUST|MUST NOT" openspec/specs`
97
+ - OPSX CLI: `openspec status`, `openspec show`
98
98
  - Check prior research: `ls openspec/changes/*/`
99
- - Use `openspec show <name>` to inspect proposal structure
100
99
  - Use `AskUserQuestion` for ANY ambiguity—never assume or guess
101
100
  <!-- CCG:SPEC:RESEARCH:END -->