ccg-workflow 1.7.73 → 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 +1 -1
- package/README.zh-CN.md +1 -1
- package/bin/codeagent-wrapper-darwin-amd64 +0 -0
- package/bin/codeagent-wrapper-darwin-arm64 +0 -0
- package/bin/codeagent-wrapper-linux-amd64 +0 -0
- package/bin/codeagent-wrapper-linux-arm64 +0 -0
- package/bin/codeagent-wrapper-windows-amd64.exe +0 -0
- package/bin/codeagent-wrapper-windows-arm64.exe +0 -0
- package/dist/cli.mjs +1 -1
- package/dist/index.mjs +1 -1
- package/dist/shared/{ccg-workflow.DoPpjMJ6.mjs → ccg-workflow.C09usDEA.mjs} +16 -3
- package/package.json +1 -1
- package/templates/commands/spec-impl.md +11 -3
- package/templates/commands/spec-plan.md +9 -2
- package/templates/commands/spec-research.md +8 -2
package/README.md
CHANGED
package/README.zh-CN.md
CHANGED
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
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.
|
|
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.
|
|
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.
|
|
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
|
@@ -13,6 +13,8 @@ description: '按规范执行 + 多模型协作 + 归档'
|
|
|
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
15
|
- Refer to `openspec/config.yaml` for conventions.
|
|
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
|
+
- **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.
|
|
16
18
|
|
|
17
19
|
**Steps**
|
|
18
20
|
1. **Select Change**
|
|
@@ -20,12 +22,17 @@ description: '按规范执行 + 多模型协作 + 归档'
|
|
|
20
22
|
- Confirm with user which change ID to implement.
|
|
21
23
|
- Run `openspec status --change "<change_id>" --json` to review tasks.
|
|
22
24
|
|
|
23
|
-
2. **Apply OPSX Change**
|
|
24
|
-
- Call `/opsx:apply` to enter implementation mode:
|
|
25
|
+
2. **Apply OPSX Change (Pre-flight Check)**
|
|
26
|
+
- Call `/opsx:apply` internally to enter implementation mode:
|
|
25
27
|
```
|
|
26
28
|
/opsx:apply
|
|
27
29
|
```
|
|
28
30
|
- This will load the change context and guide you through the tasks defined in `tasks.md`.
|
|
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`.
|
|
29
36
|
|
|
30
37
|
3. **Identify Minimal Verifiable Phase**
|
|
31
38
|
- Review `tasks.md` and identify the **smallest verifiable phase**.
|
|
@@ -112,11 +119,12 @@ description: '按规范执行 + 多模型协作 + 归档'
|
|
|
112
119
|
|
|
113
120
|
10. **Archive on Completion**
|
|
114
121
|
- When ALL tasks in `tasks.md` are marked `[x]`:
|
|
115
|
-
- Call `/opsx:archive` to archive the change:
|
|
122
|
+
- Call `/opsx:archive` internally to archive the change:
|
|
116
123
|
```
|
|
117
124
|
/opsx:archive
|
|
118
125
|
```
|
|
119
126
|
- This merges spec deltas to `openspec/specs/` and moves change to archive.
|
|
127
|
+
- **Note**: This is an internal call. If archiving fails, guide the user to re-run `/ccg:spec-impl`.
|
|
120
128
|
|
|
121
129
|
**Reference**
|
|
122
130
|
- Check task status: `openspec status --change "<id>" --json`
|
|
@@ -13,6 +13,9 @@ description: '多模型分析 → 消除歧义 → 零决策可执行计划'
|
|
|
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
15
|
- Refer to `openspec/config.yaml` for project conventions.
|
|
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
|
+
- **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."
|
|
16
19
|
|
|
17
20
|
**Steps**
|
|
18
21
|
1. **Select Change**
|
|
@@ -84,7 +87,7 @@ description: '多模型分析 → 消除歧义 → 零决策可执行计划'
|
|
|
84
87
|
- **Bounds**: Value ranges, size limits, rate constraints
|
|
85
88
|
|
|
86
89
|
5. **Update OPSX Artifacts**
|
|
87
|
-
- **BEFORE calling `/opsx:continue
|
|
90
|
+
- **BEFORE calling `/opsx:continue`** (internal skill call — do NOT expose this command to user), output a structured summary for OPSX context:
|
|
88
91
|
```markdown
|
|
89
92
|
## Planning Summary for OPSX
|
|
90
93
|
|
|
@@ -106,11 +109,15 @@ description: '多模型分析 → 消除歧义 → 零决策可执行计划'
|
|
|
106
109
|
- [High-level task breakdown ready for tasks.md]
|
|
107
110
|
```
|
|
108
111
|
|
|
109
|
-
- Then call `/opsx:continue` to generate next artifacts:
|
|
112
|
+
- Then call `/opsx:continue` internally to generate next artifacts:
|
|
110
113
|
```
|
|
111
114
|
/opsx:continue
|
|
112
115
|
```
|
|
113
116
|
- The OPSX skill will use the above summary to create specs.md, design.md, and tasks.md.
|
|
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.
|
|
114
121
|
|
|
115
122
|
6. **Context Checkpoint**
|
|
116
123
|
- Report current context usage.
|
|
@@ -15,6 +15,8 @@ description: '需求 → 约束集(并行探索 + OPSX 提案)'
|
|
|
15
15
|
- Each subagent context must be self-contained with independent output.
|
|
16
16
|
- Use `{{MCP_SEARCH_TOOL}}` to minimize grep/find operations.
|
|
17
17
|
- Do not make architectural decisions—surface constraints that guide decisions.
|
|
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."
|
|
18
20
|
|
|
19
21
|
**Steps**
|
|
20
22
|
0. **MANDATORY: Enhance Requirement FIRST**
|
|
@@ -110,7 +112,7 @@ description: '需求 → 约束集(并行探索 + OPSX 提案)'
|
|
|
110
112
|
- Capture responses as additional constraints.
|
|
111
113
|
|
|
112
114
|
7. **Finalize OPSX Proposal**
|
|
113
|
-
- **BEFORE calling `/opsx:continue
|
|
115
|
+
- **BEFORE calling `/opsx:continue`** (internal skill call — do NOT expose this command to user), output a structured summary for OPSX context:
|
|
114
116
|
```markdown
|
|
115
117
|
## Research Summary for OPSX
|
|
116
118
|
|
|
@@ -130,11 +132,15 @@ description: '需求 → 约束集(并行探索 + OPSX 提案)'
|
|
|
130
132
|
- [List all user decisions from Step 6]
|
|
131
133
|
```
|
|
132
134
|
|
|
133
|
-
- Then call `/opsx:continue` to generate proposal artifact:
|
|
135
|
+
- Then call `/opsx:continue` internally to generate proposal artifact:
|
|
134
136
|
```
|
|
135
137
|
/opsx:continue
|
|
136
138
|
```
|
|
137
139
|
- The OPSX skill will use the above summary to write proposal.md.
|
|
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.
|
|
138
144
|
|
|
139
145
|
8. **Context Checkpoint**
|
|
140
146
|
- Report current context usage.
|