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 +8 -8
- package/dist/index.mjs +1 -1
- package/dist/shared/{ccg-workflow.DmpTp5qU.mjs → ccg-workflow.BqEmGd17.mjs} +9 -6
- package/package.json +1 -1
- package/templates/commands/spec-impl.md +8 -8
- package/templates/commands/spec-init.md +27 -8
- package/templates/commands/spec-plan.md +17 -17
- package/templates/commands/spec-research.md +9 -10
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.
|
|
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("", "
|
|
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", "
|
|
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", "
|
|
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", "
|
|
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>", "
|
|
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(
|
|
161
|
-
console.log(ansis.gray("
|
|
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.
|
|
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.
|
|
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 = `\
|
|
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 =
|
|
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:
|
|
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("
|
|
2084
|
+
console.log(ansis.gray("\u518D\u89C1\uFF01"));
|
|
2082
2085
|
return;
|
|
2083
2086
|
}
|
|
2084
2087
|
console.log();
|
package/package.json
CHANGED
|
@@ -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/
|
|
15
|
+
- Refer to `openspec/config.yaml` for conventions.
|
|
16
16
|
|
|
17
17
|
**Steps**
|
|
18
|
-
1. **Select
|
|
18
|
+
1. **Select Change**
|
|
19
19
|
- Run `openspec list` to inspect Active Changes.
|
|
20
|
-
- Confirm with user which
|
|
21
|
-
- Run `openspec show <
|
|
20
|
+
- Confirm with user which change ID to implement.
|
|
21
|
+
- Run `openspec show <change_id>` to review tasks.
|
|
22
22
|
|
|
23
|
-
2. **Apply
|
|
24
|
-
-
|
|
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
|
-
-
|
|
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
|
-
-
|
|
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
|
-
-
|
|
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
|
|
51
|
-
- If
|
|
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
|
-
|
|
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/
|
|
15
|
+
- Refer to `openspec/config.yaml` for project conventions.
|
|
16
16
|
|
|
17
17
|
**Steps**
|
|
18
|
-
1. **Select
|
|
18
|
+
1. **Select Change**
|
|
19
19
|
- Run `openspec list` to display Active Changes.
|
|
20
|
-
- Confirm with user which
|
|
21
|
-
- Run `openspec
|
|
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
|
|
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
|
|
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
|
|
86
|
-
-
|
|
87
|
-
*
|
|
88
|
-
*
|
|
89
|
-
* Zero-decision
|
|
90
|
-
-
|
|
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
|
|
94
|
+
- If approaching 80K tokens, suggest: "Run `/clear` and continue with `/ccg:spec-impl`"
|
|
95
95
|
|
|
96
96
|
**Exit Criteria**
|
|
97
|
-
A
|
|
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
|
-
- [ ]
|
|
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
|
|
106
|
-
- Check conflicts: `openspec
|
|
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: '需求 → 约束集(并行探索 +
|
|
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
|
|
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
|
|
34
|
-
-
|
|
35
|
-
- This scaffolds `openspec/changes/<name>/` with proposal.md
|
|
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
|
|
82
|
-
- Transform constraint sets into
|
|
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
|
|
94
|
+
- If approaching 80K tokens, suggest: "Run `/clear` and continue with `/ccg:spec-plan`"
|
|
95
95
|
|
|
96
96
|
**Reference**
|
|
97
|
-
-
|
|
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 -->
|