ccgx-workflow 1.0.0
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/LICENSE +22 -0
- package/README.md +469 -0
- package/README.zh-CN.md +466 -0
- package/bin/ccg.mjs +2 -0
- package/dist/cli.d.mts +1 -0
- package/dist/cli.d.ts +1 -0
- package/dist/cli.mjs +173 -0
- package/dist/index.d.mts +1774 -0
- package/dist/index.d.ts +1774 -0
- package/dist/index.mjs +2029 -0
- package/dist/shared/ccgx-workflow.WgUzkiC3.mjs +5248 -0
- package/package.json +129 -0
- package/templates/commands/agents/assumptions-analyzer.md +129 -0
- package/templates/commands/agents/code-fixer.md +292 -0
- package/templates/commands/agents/codebase-mapper.md +152 -0
- package/templates/commands/agents/debug-session-manager.md +247 -0
- package/templates/commands/agents/debugger.md +111 -0
- package/templates/commands/agents/eval-auditor.md +171 -0
- package/templates/commands/agents/framework-selector.md +152 -0
- package/templates/commands/agents/get-current-datetime.md +29 -0
- package/templates/commands/agents/init-architect.md +114 -0
- package/templates/commands/agents/integration-checker.md +163 -0
- package/templates/commands/agents/interface-auditor.md +170 -0
- package/templates/commands/agents/nyquist-auditor.md +131 -0
- package/templates/commands/agents/pattern-mapper.md +111 -0
- package/templates/commands/agents/phase-runner.md +321 -0
- package/templates/commands/agents/plan-checker.md +255 -0
- package/templates/commands/agents/planner.md +320 -0
- package/templates/commands/agents/team-architect.md +186 -0
- package/templates/commands/agents/team-qa.md +121 -0
- package/templates/commands/agents/team-reviewer.md +157 -0
- package/templates/commands/agents/ui-ux-designer.md +573 -0
- package/templates/commands/agents/verifier.md +274 -0
- package/templates/commands/analyze.md +210 -0
- package/templates/commands/autonomous.md +792 -0
- package/templates/commands/cancel.md +132 -0
- package/templates/commands/clean-branches.md +117 -0
- package/templates/commands/codex-exec.md +404 -0
- package/templates/commands/commit.md +151 -0
- package/templates/commands/context.md +332 -0
- package/templates/commands/debate.md +165 -0
- package/templates/commands/debug.md +226 -0
- package/templates/commands/enhance.md +64 -0
- package/templates/commands/execute.md +380 -0
- package/templates/commands/init.md +123 -0
- package/templates/commands/optimize.md +217 -0
- package/templates/commands/plan.md +373 -0
- package/templates/commands/result.md +106 -0
- package/templates/commands/review.md +338 -0
- package/templates/commands/rollback.md +116 -0
- package/templates/commands/spec-impl.md +139 -0
- package/templates/commands/spec-init.md +101 -0
- package/templates/commands/spec-plan.md +210 -0
- package/templates/commands/spec-research.md +152 -0
- package/templates/commands/spec-review.md +120 -0
- package/templates/commands/status.md +206 -0
- package/templates/commands/team-exec.md +265 -0
- package/templates/commands/test.md +236 -0
- package/templates/commands/verify-work.md +338 -0
- package/templates/commands/verify.md +66 -0
- package/templates/commands/workflow.md +190 -0
- package/templates/commands/worktree.md +128 -0
- package/templates/hooks/ccg-context-monitor.js +159 -0
- package/templates/hooks/ccg-session-state.cjs +510 -0
- package/templates/hooks/ccg-statusline.js +142 -0
- package/templates/output-styles/abyss-command.md +56 -0
- package/templates/output-styles/abyss-concise.md +89 -0
- package/templates/output-styles/abyss-cultivator.md +302 -0
- package/templates/output-styles/abyss-ritual.md +70 -0
- package/templates/output-styles/engineer-professional.md +89 -0
- package/templates/output-styles/laowang-engineer.md +127 -0
- package/templates/output-styles/nekomata-engineer.md +120 -0
- package/templates/output-styles/ojousama-engineer.md +121 -0
- package/templates/prompts/claude/analyzer.md +59 -0
- package/templates/prompts/claude/architect.md +54 -0
- package/templates/prompts/claude/debugger.md +71 -0
- package/templates/prompts/claude/optimizer.md +73 -0
- package/templates/prompts/claude/reviewer.md +63 -0
- package/templates/prompts/claude/tester.md +69 -0
- package/templates/prompts/codex/analyzer.md +58 -0
- package/templates/prompts/codex/architect.md +54 -0
- package/templates/prompts/codex/debugger.md +74 -0
- package/templates/prompts/codex/optimizer.md +81 -0
- package/templates/prompts/codex/reviewer.md +73 -0
- package/templates/prompts/codex/tester.md +62 -0
- package/templates/prompts/gemini/analyzer.md +61 -0
- package/templates/prompts/gemini/architect.md +55 -0
- package/templates/prompts/gemini/debugger.md +78 -0
- package/templates/prompts/gemini/frontend.md +64 -0
- package/templates/prompts/gemini/optimizer.md +84 -0
- package/templates/prompts/gemini/reviewer.md +80 -0
- package/templates/prompts/gemini/tester.md +68 -0
- package/templates/rules/ccg-skill-routing.md +83 -0
- package/templates/rules/ccg-skills.md +71 -0
- package/templates/scripts/ccg-phase-runner-launcher.mjs +467 -0
- package/templates/scripts/invoke-model.mjs +949 -0
- package/templates/scripts/repatch-gemini-plugin.mjs +194 -0
- package/templates/skills/SKILL.md +92 -0
- package/templates/skills/domains/ai/SKILL.md +35 -0
- package/templates/skills/domains/ai/agent-dev.md +242 -0
- package/templates/skills/domains/ai/llm-security.md +288 -0
- package/templates/skills/domains/ai/prompt-and-eval.md +279 -0
- package/templates/skills/domains/ai/rag-system.md +542 -0
- package/templates/skills/domains/architecture/SKILL.md +43 -0
- package/templates/skills/domains/architecture/api-design.md +225 -0
- package/templates/skills/domains/architecture/caching.md +299 -0
- package/templates/skills/domains/architecture/cloud-native.md +285 -0
- package/templates/skills/domains/architecture/message-queue.md +329 -0
- package/templates/skills/domains/architecture/security-arch.md +297 -0
- package/templates/skills/domains/data-engineering/SKILL.md +208 -0
- package/templates/skills/domains/development/SKILL.md +47 -0
- package/templates/skills/domains/development/cpp.md +246 -0
- package/templates/skills/domains/development/go.md +323 -0
- package/templates/skills/domains/development/java.md +277 -0
- package/templates/skills/domains/development/python.md +288 -0
- package/templates/skills/domains/development/rust.md +313 -0
- package/templates/skills/domains/development/shell.md +313 -0
- package/templates/skills/domains/development/typescript.md +277 -0
- package/templates/skills/domains/devops/SKILL.md +40 -0
- package/templates/skills/domains/devops/cost-optimization.md +272 -0
- package/templates/skills/domains/devops/database.md +217 -0
- package/templates/skills/domains/devops/devsecops.md +198 -0
- package/templates/skills/domains/devops/git-workflow.md +181 -0
- package/templates/skills/domains/devops/observability.md +280 -0
- package/templates/skills/domains/devops/performance.md +336 -0
- package/templates/skills/domains/devops/testing.md +283 -0
- package/templates/skills/domains/frontend-design/SKILL.md +244 -0
- package/templates/skills/domains/frontend-design/agents/openai.yaml +4 -0
- package/templates/skills/domains/frontend-design/claymorphism/SKILL.md +121 -0
- package/templates/skills/domains/frontend-design/claymorphism/references/tokens.css +52 -0
- package/templates/skills/domains/frontend-design/component-patterns.md +202 -0
- package/templates/skills/domains/frontend-design/engineering.md +287 -0
- package/templates/skills/domains/frontend-design/glassmorphism/SKILL.md +142 -0
- package/templates/skills/domains/frontend-design/glassmorphism/references/tokens.css +32 -0
- package/templates/skills/domains/frontend-design/liquid-glass/SKILL.md +139 -0
- package/templates/skills/domains/frontend-design/liquid-glass/references/tokens.css +81 -0
- package/templates/skills/domains/frontend-design/neubrutalism/SKILL.md +145 -0
- package/templates/skills/domains/frontend-design/neubrutalism/references/tokens.css +44 -0
- package/templates/skills/domains/frontend-design/reference/color-and-contrast.md +132 -0
- package/templates/skills/domains/frontend-design/reference/interaction-design.md +195 -0
- package/templates/skills/domains/frontend-design/reference/motion-design.md +99 -0
- package/templates/skills/domains/frontend-design/reference/responsive-design.md +114 -0
- package/templates/skills/domains/frontend-design/reference/spatial-design.md +100 -0
- package/templates/skills/domains/frontend-design/reference/typography.md +133 -0
- package/templates/skills/domains/frontend-design/reference/ux-writing.md +107 -0
- package/templates/skills/domains/frontend-design/state-management.md +680 -0
- package/templates/skills/domains/frontend-design/ui-aesthetics.md +110 -0
- package/templates/skills/domains/frontend-design/ux-principles.md +156 -0
- package/templates/skills/domains/infrastructure/SKILL.md +201 -0
- package/templates/skills/domains/mobile/SKILL.md +225 -0
- package/templates/skills/domains/orchestration/SKILL.md +30 -0
- package/templates/skills/domains/orchestration/multi-agent.md +263 -0
- package/templates/skills/domains/security/SKILL.md +73 -0
- package/templates/skills/domains/security/blue-team.md +436 -0
- package/templates/skills/domains/security/code-audit.md +265 -0
- package/templates/skills/domains/security/pentest.md +226 -0
- package/templates/skills/domains/security/red-team.md +374 -0
- package/templates/skills/domains/security/threat-intel.md +372 -0
- package/templates/skills/domains/security/vuln-research.md +369 -0
- package/templates/skills/impeccable/adapt/SKILL.md +201 -0
- package/templates/skills/impeccable/animate/SKILL.md +176 -0
- package/templates/skills/impeccable/arrange/SKILL.md +126 -0
- package/templates/skills/impeccable/audit/SKILL.md +149 -0
- package/templates/skills/impeccable/bolder/SKILL.md +118 -0
- package/templates/skills/impeccable/clarify/SKILL.md +185 -0
- package/templates/skills/impeccable/colorize/SKILL.md +144 -0
- package/templates/skills/impeccable/critique/SKILL.md +203 -0
- package/templates/skills/impeccable/critique/reference/cognitive-load.md +106 -0
- package/templates/skills/impeccable/critique/reference/heuristics-scoring.md +234 -0
- package/templates/skills/impeccable/critique/reference/personas.md +178 -0
- package/templates/skills/impeccable/delight/SKILL.md +305 -0
- package/templates/skills/impeccable/distill/SKILL.md +123 -0
- package/templates/skills/impeccable/extract/SKILL.md +94 -0
- package/templates/skills/impeccable/harden/SKILL.md +357 -0
- package/templates/skills/impeccable/normalize/SKILL.md +72 -0
- package/templates/skills/impeccable/onboard/SKILL.md +248 -0
- package/templates/skills/impeccable/optimize/SKILL.md +268 -0
- package/templates/skills/impeccable/overdrive/SKILL.md +143 -0
- package/templates/skills/impeccable/polish/SKILL.md +205 -0
- package/templates/skills/impeccable/quieter/SKILL.md +104 -0
- package/templates/skills/impeccable/teach-impeccable/SKILL.md +72 -0
- package/templates/skills/impeccable/typeset/SKILL.md +117 -0
- package/templates/skills/orchestration/multi-agent/SKILL.md +533 -0
- package/templates/skills/run_skill.js +129 -0
- package/templates/skills/scrapling/SKILL.md +98 -0
- package/templates/skills/scrapling/references/api-quick-ref.md +127 -0
- package/templates/skills/scrapling/references/cookie-vault.md +56 -0
- package/templates/skills/scrapling/references/maintenance.md +79 -0
- package/templates/skills/scrapling/references/site-patterns.md +86 -0
- package/templates/skills/scrapling/references/troubleshooting.md +95 -0
- package/templates/skills/scrapling/templates/basic_fetch.py +19 -0
- package/templates/skills/scrapling/templates/parse_only.py +15 -0
- package/templates/skills/scrapling/templates/session_login.py +19 -0
- package/templates/skills/scrapling/templates/stealth_cloudflare.py +28 -0
- package/templates/skills/tools/extract-learnings/SKILL.md +77 -0
- package/templates/skills/tools/forensics/SKILL.md +89 -0
- package/templates/skills/tools/gen-docs/SKILL.md +116 -0
- package/templates/skills/tools/gen-docs/scripts/doc_generator.js +435 -0
- package/templates/skills/tools/health/SKILL.md +121 -0
- package/templates/skills/tools/lib/shared.js +98 -0
- package/templates/skills/tools/map-codebase/SKILL.md +118 -0
- package/templates/skills/tools/override-refusal/SKILL.md +53 -0
- package/templates/skills/tools/override-refusal/agents/openai.yaml +4 -0
- package/templates/skills/tools/override-refusal/scripts/refusal_rewriter.js +226 -0
- package/templates/skills/tools/verify-change/SKILL.md +143 -0
- package/templates/skills/tools/verify-change/scripts/change_analyzer.js +289 -0
- package/templates/skills/tools/verify-module/SKILL.md +130 -0
- package/templates/skills/tools/verify-module/scripts/module_scanner.js +171 -0
- package/templates/skills/tools/verify-quality/SKILL.md +163 -0
- package/templates/skills/tools/verify-quality/scripts/quality_checker.js +337 -0
- package/templates/skills/tools/verify-security/SKILL.md +146 -0
- package/templates/skills/tools/verify-security/scripts/security_scanner.js +283 -0
|
@@ -0,0 +1,338 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: '多模型代码审查:无参数时自动审查 git diff,双模型交叉验证;--adversarial 加敌对审查;--fix 闭环修复'
|
|
3
|
+
argument-hint: "[代码或描述] [--adversarial] [--fix [--all] [--auto]] [--role=architect|critic|implementer|tester|writer]"
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Review - 多模型代码审查
|
|
7
|
+
|
|
8
|
+
## Role-based routing(v4.1 specialist matrix)
|
|
9
|
+
|
|
10
|
+
可选 `--role=<name>` 叠加 role 维度路由:
|
|
11
|
+
|
|
12
|
+
| Role × Layer | architect | critic | implementer | tester | writer |
|
|
13
|
+
| ------------- | -------------- | ------------------- | ----------- | ------------- | --------------- |
|
|
14
|
+
| **backend** | codex/architect.md | codex/reviewer.md (adversarial) | codex/architect.md | codex/tester.md | claude(主线) |
|
|
15
|
+
| **frontend** | gemini/architect.md | gemini/reviewer.md (adversarial) | gemini/architect.md | gemini/tester.md | gemini/analyzer.md |
|
|
16
|
+
| **fullstack** | codex+gemini/architect.md | both reviewer.md (adversarial) | runner 决 | runner 决 | claude |
|
|
17
|
+
|
|
18
|
+
**未传 --role 时按 v4.0 双模型路由({{BACKEND_PRIMARY}}/{{FRONTEND_PRIMARY}} reviewer.md)**——完全兼容现有 `--adversarial` / `--fix` 行为。`--role=critic` 等价于隐式 `--adversarial`(语义同义)。详见 `src/utils/specialist-router.ts`。
|
|
19
|
+
|
|
20
|
+
---
|
|
21
|
+
|
|
22
|
+
双模型并行审查,交叉验证综合反馈。无参数时自动审查当前 git 变更。
|
|
23
|
+
|
|
24
|
+
**v4.1 Phase 20**:双模型并行通道从 `Bash(codeagent-wrapper)` **默认切换**为 plugin spawn —— 装了 `codex@openai-codex` + `gemini@google-gemini` plugin → 用 `Agent(subagent_type="codex:codex-rescue")` + `Agent(subagent_type="gemini:gemini-rescue")` 并行,主线只接 ≤200 token 摘要;plugin 未装 → fallback 到 codeagent-wrapper 路径(v4.0 BC,将在 v5.0 移除)。preflight 用 `Bash` 跑 `ls ~/.claude/plugins/` 检测,helper 见 `src/utils/plugin-detection.ts`。
|
|
25
|
+
|
|
26
|
+
`--adversarial` 模式下额外触发第三层"敌对视角"审查,由官方 codex plugin 的 `Agent(codex:codex-rescue)` 在 fresh context 中专门挑前两轮意见的漏洞,适合极重要 PR / 安全敏感变更。需用户已装 `codex@openai-codex` plugin,否则降级为双模型审查。
|
|
27
|
+
|
|
28
|
+
`--fix` 模式下额外触发**闭环修复**:审查产出 REVIEW.md 后 spawn `code-fixer` subagent 在 git worktree 隔离环境内修复 finding,原子 commit 后透明 ff-only merge 回主分支。
|
|
29
|
+
|
|
30
|
+
## 使用方法
|
|
31
|
+
|
|
32
|
+
```bash
|
|
33
|
+
/review [代码或描述] [--adversarial] [--fix [--all] [--auto]]
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
- **无参数**:自动审查 `git diff HEAD`
|
|
37
|
+
- **有参数**:审查指定代码或描述
|
|
38
|
+
- **`--adversarial`**:双模型审查后追加 fresh-context 敌对审查(用 `Agent(subagent_type="codex:codex-rescue")` + `--adversarial-review`),主线 token 不被吃,3-5 分钟额外时间换更深的反向意见
|
|
39
|
+
- **`--fix`**:审查后 spawn `code-fixer` 修复 Critical + Warning 级 finding,worktree 隔离 + 3 层 verification + 原子 commit
|
|
40
|
+
- **`--fix --all`**:同上但纳入 Info 级 finding(默认不修 Info,避免噪音)
|
|
41
|
+
- **`--fix --auto`**:fix → re-review → fix 多轮收敛环,**上限 3 轮**(CCG 硬规约)。3 轮未收敛升级用户介入
|
|
42
|
+
|
|
43
|
+
---
|
|
44
|
+
|
|
45
|
+
## 多模型调用规范
|
|
46
|
+
|
|
47
|
+
**工作目录**:
|
|
48
|
+
- `{{WORKDIR}}`:**必须通过 Bash 执行 `pwd`(Unix)或 `cd`(Windows CMD)获取当前工作目录的绝对路径**,禁止从 `$HOME` 或环境变量推断
|
|
49
|
+
- 如果用户通过 `/add-dir` 添加了多个工作区,先用 Glob/Grep 确定任务相关的工作区
|
|
50
|
+
- 如果无法确定,用 `AskUserQuestion` 询问用户选择目标工作区
|
|
51
|
+
|
|
52
|
+
**调用语法**(v4.4.2 起 review/verify 路径默认走 Bash 直调):
|
|
53
|
+
|
|
54
|
+
**通道 A — Bash 直调 plugin script(v4.4.2 默认,绕开 sonnet wrapper)**:
|
|
55
|
+
|
|
56
|
+
```
|
|
57
|
+
Bash({
|
|
58
|
+
command: `node "$(ls ~/.claude/plugins/cache/openai-codex/codex/*/scripts/codex-companion.mjs | head -1)" task -p "<整段 prompt 含 ROLE_FILE + TASK + OUTPUT 要求>" --json`,
|
|
59
|
+
description: "Review: backend (codex direct)",
|
|
60
|
+
run_in_background: true,
|
|
61
|
+
timeout: 3600000
|
|
62
|
+
})
|
|
63
|
+
|
|
64
|
+
Bash({
|
|
65
|
+
command: `node "$(ls ~/.claude/plugins/cache/google-gemini/gemini/*/scripts/gemini-companion.mjs | head -1)" task -p "<整段 prompt>" --json`,
|
|
66
|
+
description: "Review: frontend (gemini direct)",
|
|
67
|
+
run_in_background: true,
|
|
68
|
+
timeout: 3600000
|
|
69
|
+
})
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
⛔ **不要**用 `Agent(subagent_type="codex:codex-rescue"|"gemini:gemini-rescue")` —— plugin spawn 走 sonnet wrapper,broker 故障/CLI 空答时 wrapper 可能 silent fallback 自答冒充 cross-vendor 视角(v4.4.2 hotfix 决策,详见 `src/utils/verify-orchestrator.ts:planVerifyWave` `useDirectBashInvocation` 选项)。
|
|
73
|
+
|
|
74
|
+
主线接 stdout JSON(5-50KB),按 plugin --json schema 解析 `result.text` 字段,失败信号:
|
|
75
|
+
- exit code ≠ 0 → loud fail,触发 v1.7.87 标准 2-retry / 5s / 3-attempts 规则
|
|
76
|
+
- stdout 空 / 字节 < 100 → 同上视为失败
|
|
77
|
+
|
|
78
|
+
并行**两个 Bash 在同一 message 内 `run_in_background: true` 同时 spawn**。
|
|
79
|
+
|
|
80
|
+
**通道 B — codeagent-wrapper fallback**(plugin 未装时降级,并行用 `run_in_background: true`):
|
|
81
|
+
|
|
82
|
+
```
|
|
83
|
+
Bash({
|
|
84
|
+
command: "~/.claude/bin/codeagent-wrapper {{LITE_MODE_FLAG}}--progress --backend <{{BACKEND_PRIMARY}}|{{FRONTEND_PRIMARY}}> {{GEMINI_MODEL_FLAG}}- \"{{WORKDIR}}\" <<'EOF'
|
|
85
|
+
ROLE_FILE: <角色提示词路径>
|
|
86
|
+
<TASK>
|
|
87
|
+
审查以下代码变更:
|
|
88
|
+
<git diff 内容>
|
|
89
|
+
</TASK>
|
|
90
|
+
OUTPUT: 按 Critical/Major/Minor/Suggestion 分类列出问题
|
|
91
|
+
EOF",
|
|
92
|
+
run_in_background: true,
|
|
93
|
+
timeout: 3600000,
|
|
94
|
+
description: "简短描述"
|
|
95
|
+
})
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
> ⚠️ 通道 B `codeagent-wrapper` 在 v4.1 已标 **deprecated**,将在 v5.0 移除。
|
|
99
|
+
|
|
100
|
+
**角色提示词**:
|
|
101
|
+
|
|
102
|
+
| 模型 | 提示词 |
|
|
103
|
+
|------|--------|
|
|
104
|
+
| 后端 | `~/.claude/.ccg/prompts/{{BACKEND_PRIMARY}}/reviewer.md` |
|
|
105
|
+
| 前端 | `~/.claude/.ccg/prompts/{{FRONTEND_PRIMARY}}/reviewer.md` |
|
|
106
|
+
|
|
107
|
+
**并行调用 + 事件驱动等待(v4.5.2 起)**:
|
|
108
|
+
|
|
109
|
+
1. 在同一 message 内 spawn 两个(或多个)`Bash(run_in_background: true)` 并行任务
|
|
110
|
+
2. spawn 完成后主线说明已启动哪些 task(含 task-id),然后**直接 turn end**,**不调 TaskOutput**
|
|
111
|
+
3. Claude Code 引擎在每个 background task 完成时自动发 `<task-notification>` system-reminder 触发主线新 turn
|
|
112
|
+
4. 主线在收到通知的新 turn 处理:
|
|
113
|
+
- 从 notification `<task-id>` 定位是哪个任务
|
|
114
|
+
- 从 `<output-file>` 路径 read stdout(plugin --json 输出 5-50KB)
|
|
115
|
+
- JSON parse `result.text` 字段(plugin 通道)/ `--progress` 行(codeagent-wrapper 通道)
|
|
116
|
+
5. **必须等所有相关 task 都收到通知**才进入下一阶段(主线按 task-id 计数已收齐)
|
|
117
|
+
|
|
118
|
+
⛔ **禁止做**:
|
|
119
|
+
- 调 `TaskOutput({block: true, timeout: 600000})` —— 这会 freeze 主线 10 分钟,且超时后还要轮询,体验极差(v4.5.1 之前的旧模式,已废弃)
|
|
120
|
+
- 收到部分通知就跳过等其他模型
|
|
121
|
+
- 主动 Kill task
|
|
122
|
+
|
|
123
|
+
⚠️ **失败处理**:
|
|
124
|
+
- notification `status: failed` / exit code ≠ 0 / stdout < 100 字节 / JSON parse 失败 → 视为失败
|
|
125
|
+
- v1.7.87 标准 2-retry / 5s / 3-attempts 规则
|
|
126
|
+
- 3 次全失败才考虑降级到单模型继续
|
|
127
|
+
|
|
128
|
+
---
|
|
129
|
+
|
|
130
|
+
## 执行工作流
|
|
131
|
+
|
|
132
|
+
### 🔍 阶段 1:获取待审查代码
|
|
133
|
+
|
|
134
|
+
`[模式:研究]`
|
|
135
|
+
|
|
136
|
+
**无参数时**:执行 `git diff HEAD` 和 `git status --short`
|
|
137
|
+
|
|
138
|
+
**有参数时**:使用指定的代码/描述
|
|
139
|
+
|
|
140
|
+
调用 `{{MCP_SEARCH_TOOL}}` 获取相关上下文。
|
|
141
|
+
|
|
142
|
+
### 🔬 阶段 2:并行审查
|
|
143
|
+
|
|
144
|
+
`[模式:审查]`
|
|
145
|
+
|
|
146
|
+
**⚠️ 必须发起两个并行 Bash 调用**(参照上方调用规范):
|
|
147
|
+
|
|
148
|
+
1. **{{BACKEND_PRIMARY}} 后端审查**:`Bash({ command: "...--backend {{BACKEND_PRIMARY}}...", run_in_background: true })`
|
|
149
|
+
- ROLE_FILE: `~/.claude/.ccg/prompts/{{BACKEND_PRIMARY}}/reviewer.md`
|
|
150
|
+
- 需求:审查代码变更(git diff 内容)
|
|
151
|
+
- OUTPUT:按 Critical/Major/Minor/Suggestion 分类列出安全性、性能、错误处理问题
|
|
152
|
+
|
|
153
|
+
2. **{{FRONTEND_PRIMARY}} 前端审查**:`Bash({ command: "...--backend {{FRONTEND_PRIMARY}}...", run_in_background: true })`
|
|
154
|
+
- ROLE_FILE: `~/.claude/.ccg/prompts/{{FRONTEND_PRIMARY}}/reviewer.md`
|
|
155
|
+
- 需求:审查代码变更(git diff 内容)
|
|
156
|
+
- OUTPUT:按 Critical/Major/Minor/Suggestion 分类列出可访问性、响应式、设计一致性问题
|
|
157
|
+
|
|
158
|
+
**事件驱动等待**:spawn 完两个 Bash bg 后主线 turn end,等 task-notification 自动唤醒。两个 task 都收到通知后进阶段 3。
|
|
159
|
+
|
|
160
|
+
**务必遵循上方 `多模型调用规范` 的 `重要` 指示**
|
|
161
|
+
|
|
162
|
+
### 🛡 阶段 2.5:敌对审查(仅 `--adversarial`)
|
|
163
|
+
|
|
164
|
+
`[模式:敌对]`
|
|
165
|
+
|
|
166
|
+
**仅当 `$ARGUMENTS` 含 `--adversarial` 字面量时启动**。否则跳过本阶段。
|
|
167
|
+
|
|
168
|
+
调用方式(v4.4.2 起 Bash 直调,绕开 sonnet wrapper):
|
|
169
|
+
|
|
170
|
+
```
|
|
171
|
+
Bash({
|
|
172
|
+
command: `node "$(ls ~/.claude/plugins/cache/openai-codex/codex/*/scripts/codex-companion.mjs | head -1)" task -p "--adversarial-review
|
|
173
|
+
|
|
174
|
+
请对以下代码变更进行敌对视角审查:
|
|
175
|
+
|
|
176
|
+
<git diff 内容(与阶段 2 同输入)>
|
|
177
|
+
|
|
178
|
+
已有的前两轮审查意见(仅供你判断哪些被低估,不要重复结论):
|
|
179
|
+
|
|
180
|
+
<阶段 2 后端审查结果摘要>
|
|
181
|
+
|
|
182
|
+
<阶段 2 前端审查结果摘要>
|
|
183
|
+
|
|
184
|
+
你的任务:
|
|
185
|
+
1. 找出前两轮**未发现或低估**的安全/性能/正确性漏洞
|
|
186
|
+
2. 假设代码作者刻意误导,挑刺
|
|
187
|
+
3. 输出格式:[Critical-Adversarial] / [Major-Adversarial] 列表,每条标'为什么前两轮没发现'" --json`,
|
|
188
|
+
description: "Adversarial review (codex direct)",
|
|
189
|
+
run_in_background: true,
|
|
190
|
+
timeout: 3600000
|
|
191
|
+
})
|
|
192
|
+
```
|
|
193
|
+
|
|
194
|
+
⛔ 不用 `Agent(subagent_type="codex:codex-rescue")` —— v4.4.2 决策:review/verify 路径绕开 sonnet wrapper,避免 silent fallback 冒充 adversarial 视角。
|
|
195
|
+
|
|
196
|
+
收到 stdout JSON 后解析 `result.text` 字段保留待阶段 3 综合。stdout 空或 exit≠0 → 走标准 2-retry 规则。
|
|
197
|
+
|
|
198
|
+
**降级**:若 `codex:codex-rescue` 不可用(用户没装 `codex@openai-codex` plugin),输出"⚠️ 跳过敌对审查,未检测到 codex plugin"并继续阶段 3,不阻塞流程。
|
|
199
|
+
|
|
200
|
+
### 🔀 阶段 3:综合反馈
|
|
201
|
+
|
|
202
|
+
`[模式:综合]`
|
|
203
|
+
|
|
204
|
+
1. 收集**所有**审查结果(双模型 + 可选的敌对审查)
|
|
205
|
+
2. 按严重程度分类:Critical / Major / Minor / Suggestion
|
|
206
|
+
3. 去重合并 + 交叉验证
|
|
207
|
+
4. **敌对审查标识**:来自阶段 2.5 的 finding 在最终报告中带 🛡 标记,并保留"前两轮没发现"的原因说明(这是用户判断敌对审查 ROI 的依据)
|
|
208
|
+
|
|
209
|
+
### 📊 阶段 4:呈现审查结果
|
|
210
|
+
|
|
211
|
+
`[模式:总结]`
|
|
212
|
+
|
|
213
|
+
```markdown
|
|
214
|
+
## 📋 代码审查报告
|
|
215
|
+
|
|
216
|
+
### 审查范围
|
|
217
|
+
- 变更文件:<数量> | 代码行数:+X / -Y
|
|
218
|
+
- 审查模式:双模型 / 双模型 + 🛡 敌对审查
|
|
219
|
+
|
|
220
|
+
### 关键问题 (Critical)
|
|
221
|
+
> 必须修复才能合并
|
|
222
|
+
1. <问题描述> - [后端/前端模型]
|
|
223
|
+
2. 🛡 <问题描述> - [敌对审查] · 前两轮未发现:<原因>
|
|
224
|
+
|
|
225
|
+
### 主要问题 (Major) / 次要问题 (Minor) / 建议 (Suggestions)
|
|
226
|
+
...
|
|
227
|
+
|
|
228
|
+
### 总体评价
|
|
229
|
+
- 代码质量:[优秀/良好/需改进]
|
|
230
|
+
- 是否可合并:[是/否/需修复后]
|
|
231
|
+
- 敌对审查 ROI:[N 个新发现 / 0 个新发现,下次可省略] (仅 --adversarial 模式)
|
|
232
|
+
```
|
|
233
|
+
|
|
234
|
+
---
|
|
235
|
+
|
|
236
|
+
## 关键规则
|
|
237
|
+
|
|
238
|
+
1. **无参数 = 审查 git diff** – 自动获取当前变更
|
|
239
|
+
2. **双模型交叉验证** – 后端问题以 {{BACKEND_PRIMARY}} 为准,前端问题以 {{FRONTEND_PRIMARY}} 为准
|
|
240
|
+
3. 外部模型对文件系统**零写入权限**
|
|
241
|
+
|
|
242
|
+
---
|
|
243
|
+
|
|
244
|
+
## 🔧 阶段 5:闭环修复(仅 `--fix` / `--fix --all` / `--fix --auto`)
|
|
245
|
+
|
|
246
|
+
`[模式:修复]`
|
|
247
|
+
|
|
248
|
+
**仅当 `$ARGUMENTS` 含 `--fix` 字面量时启动**。否则跳过本阶段。
|
|
249
|
+
|
|
250
|
+
### 5.1 启动恢复扫描
|
|
251
|
+
|
|
252
|
+
在创建新 worktree **前**:
|
|
253
|
+
|
|
254
|
+
```bash
|
|
255
|
+
# 检查上次 review-fix 是否被中断(OOM / 重启 / Ctrl-C)
|
|
256
|
+
cat .context/review-fix-recovery-pending.json 2>/dev/null
|
|
257
|
+
```
|
|
258
|
+
|
|
259
|
+
存在 → 上一次跑被中断。`AskUserQuestion`:复用 / 强制清理。
|
|
260
|
+
|
|
261
|
+
### 5.2 持久化 REVIEW.md
|
|
262
|
+
|
|
263
|
+
把阶段 4 的综合审查结果写到 `.context/review-{timestamp}/REVIEW.md`(path 由 code-fixer 通过参数接收),格式:
|
|
264
|
+
|
|
265
|
+
```markdown
|
|
266
|
+
## Findings
|
|
267
|
+
|
|
268
|
+
| ID | Severity | File | Line | Description | Suggested Fix |
|
|
269
|
+
|----|----------|------|------|-------------|---------------|
|
|
270
|
+
| C-01 | Critical | src/auth.ts | 42 | SQL identifier not escaped | use parameterized query |
|
|
271
|
+
| W-02 | Warning | src/api.ts | 88 | missing error boundary | wrap in try/catch |
|
|
272
|
+
| ...
|
|
273
|
+
```
|
|
274
|
+
|
|
275
|
+
`--fix --all` 模式下额外含 Info 级 finding。
|
|
276
|
+
|
|
277
|
+
### 5.3 Spawn code-fixer subagent
|
|
278
|
+
|
|
279
|
+
```
|
|
280
|
+
Agent({
|
|
281
|
+
subagent_type: "code-fixer",
|
|
282
|
+
description: "Closed-loop review fix",
|
|
283
|
+
prompt: `请按以下契约执行闭环修复:
|
|
284
|
+
|
|
285
|
+
review_md_path: <REVIEW.md 路径>
|
|
286
|
+
phase_id: <padded phase 号,例 "10",没有 phase 上下文则用 "00">
|
|
287
|
+
base_sha: <当前 HEAD 的 sha>
|
|
288
|
+
current_branch: <当前分支名>
|
|
289
|
+
workdir: <项目绝对路径>
|
|
290
|
+
fix_scope: critical_warning | all | auto
|
|
291
|
+
auto_round: <仅 --auto 模式,当前轮次 1-indexed>
|
|
292
|
+
|
|
293
|
+
工程契约见 templates/commands/agents/code-fixer.md:
|
|
294
|
+
- 强制 git worktree 隔离 + recovery sentinel
|
|
295
|
+
- 4 步严格顺序 transactional cleanup tail
|
|
296
|
+
- per-finding rollback 用 git checkout(不用 Write 工具)
|
|
297
|
+
- 3 层 verification Tier
|
|
298
|
+
- 每 finding 原子 commit
|
|
299
|
+
`
|
|
300
|
+
})
|
|
301
|
+
```
|
|
302
|
+
|
|
303
|
+
**code-fixer 完成后产出**:`REVIEW-FIX.md`(同目录),含 per-finding outcome + cleanup tail 状态。
|
|
304
|
+
|
|
305
|
+
### 5.4 多轮收敛(仅 `--fix --auto`)
|
|
306
|
+
|
|
307
|
+
`--auto` 模式下,code-fixer 第 1 轮跑完后:
|
|
308
|
+
|
|
309
|
+
1. Read REVIEW-FIX.md,提取本轮 finding 数(critical / warning / info)
|
|
310
|
+
2. 调用收敛判定(参考 `src/utils/code-fixer-worktree.ts:decideConverge`):
|
|
311
|
+
- `converged`(critical+warning=0)→ 完成,输出收敛报告
|
|
312
|
+
- `escalate`(达到 3 轮 cap 或 stall)→ `AskUserQuestion`:"继续手动修 / 接受现状 / 回滚全部"
|
|
313
|
+
- `continue` → 重跑阶段 1-4 生成新 REVIEW.md,再 spawn code-fixer,`auto_round` +1
|
|
314
|
+
|
|
315
|
+
**3 轮上限是 CCG 硬规约**(与 plan-checker / verify-work 一致),**禁止**绕过。
|
|
316
|
+
|
|
317
|
+
### 5.5 闭环修复总结
|
|
318
|
+
|
|
319
|
+
```markdown
|
|
320
|
+
## 🔧 闭环修复总结
|
|
321
|
+
|
|
322
|
+
- 修复模式:`--fix` / `--fix --all` / `--fix --auto`
|
|
323
|
+
- 修复轮次:<N> / 3
|
|
324
|
+
- Findings 处理:<M>(Critical: <a> / Warning: <b> / Info: <c>)
|
|
325
|
+
- Atomic commits: <K>
|
|
326
|
+
- Worktree cleanup: ok / partial(merge 失败保留 worktree 待人工)
|
|
327
|
+
- 需人工核实的逻辑修复:<L> 项(标记 `requires human verification`)
|
|
328
|
+
```
|
|
329
|
+
|
|
330
|
+
### 关键安全约束
|
|
331
|
+
|
|
332
|
+
⚠️ **以下违反任意一条 = 工程事故**:
|
|
333
|
+
|
|
334
|
+
- worktree 创建 **必须** 在写 sentinel 之前
|
|
335
|
+
- cleanup tail 4 步**必须**严格按 `merge_ff_only → worktree_remove → branch_delete → sentinel_remove` 顺序
|
|
336
|
+
- 任何步骤失败**必须**立即停(不继续后续步骤)
|
|
337
|
+
- per-finding rollback **必须**用 `git checkout --`,**禁止**用 Write 工具
|
|
338
|
+
- `--auto` 收敛轮次**必须** ≤ 3
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: '交互式 Git 回滚:安全回滚分支到历史版本,支持 reset/revert 模式'
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
# Rollback - 交互式 Git 回滚
|
|
6
|
+
|
|
7
|
+
安全地将分支回滚到指定历史版本,默认 dry-run 模式。
|
|
8
|
+
|
|
9
|
+
## 使用方法
|
|
10
|
+
|
|
11
|
+
```bash
|
|
12
|
+
/rollback [options]
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
## 选项
|
|
16
|
+
|
|
17
|
+
| 选项 | 说明 |
|
|
18
|
+
|------|------|
|
|
19
|
+
| `--branch <branch>` | 要回滚的分支 |
|
|
20
|
+
| `--target <rev>` | 目标版本(commit/tag/reflog) |
|
|
21
|
+
| `--mode reset\|revert` | 回滚模式 |
|
|
22
|
+
| `--depth <n>` | 列出最近 n 个版本(默认 20) |
|
|
23
|
+
| `--dry-run` | 只预览,不执行(**默认**) |
|
|
24
|
+
| `--yes` | 跳过确认直接执行 |
|
|
25
|
+
|
|
26
|
+
---
|
|
27
|
+
|
|
28
|
+
## 执行工作流
|
|
29
|
+
|
|
30
|
+
### 🔍 阶段 1:同步远端
|
|
31
|
+
|
|
32
|
+
`[模式:准备]`
|
|
33
|
+
|
|
34
|
+
```bash
|
|
35
|
+
git fetch --all --prune
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
### 📋 阶段 2:选择分支
|
|
39
|
+
|
|
40
|
+
`[模式:选择]`
|
|
41
|
+
|
|
42
|
+
1. 列出本地 + 远端分支
|
|
43
|
+
2. 过滤受保护分支
|
|
44
|
+
3. 用户选择或使用 `--branch` 参数
|
|
45
|
+
|
|
46
|
+
### 📜 阶段 3:选择版本
|
|
47
|
+
|
|
48
|
+
`[模式:选择]`
|
|
49
|
+
|
|
50
|
+
1. 显示最近 N 个版本(`git log --oneline`)
|
|
51
|
+
2. 显示相关 tags(`git tag --merged`)
|
|
52
|
+
3. 用户选择或使用 `--target` 参数
|
|
53
|
+
|
|
54
|
+
### ⚙️ 阶段 4:选择模式
|
|
55
|
+
|
|
56
|
+
`[模式:决策]`
|
|
57
|
+
|
|
58
|
+
| 模式 | 说明 | 推送方式 |
|
|
59
|
+
|------|------|----------|
|
|
60
|
+
| `reset` | 硬回滚,改变历史 | `--force-with-lease` |
|
|
61
|
+
| `revert` | 生成反向提交,保留历史 | 普通 push |
|
|
62
|
+
|
|
63
|
+
### ⛔ 阶段 5:最终确认
|
|
64
|
+
|
|
65
|
+
`[模式:确认]`
|
|
66
|
+
|
|
67
|
+
显示即将执行的命令,等待用户确认(除非 `--yes`)。
|
|
68
|
+
|
|
69
|
+
### ✅ 阶段 6:执行回滚
|
|
70
|
+
|
|
71
|
+
`[模式:执行]`
|
|
72
|
+
|
|
73
|
+
**reset 模式**:
|
|
74
|
+
```bash
|
|
75
|
+
git switch <branch>
|
|
76
|
+
git reset --hard <target>
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
**revert 模式**:
|
|
80
|
+
```bash
|
|
81
|
+
git switch <branch>
|
|
82
|
+
git revert --no-edit <target>..HEAD
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
---
|
|
86
|
+
|
|
87
|
+
## 安全护栏
|
|
88
|
+
|
|
89
|
+
1. **备份**:执行前自动记录当前 HEAD 到 reflog
|
|
90
|
+
2. **保护分支**:`main`/`master`/`production` 需额外确认
|
|
91
|
+
3. **dry-run 默认**:防止误操作
|
|
92
|
+
4. **禁止 --force**:如需强推,手动执行
|
|
93
|
+
|
|
94
|
+
---
|
|
95
|
+
|
|
96
|
+
## 示例
|
|
97
|
+
|
|
98
|
+
```bash
|
|
99
|
+
# 全交互模式(dry-run)
|
|
100
|
+
/rollback
|
|
101
|
+
|
|
102
|
+
# 指定分支
|
|
103
|
+
/rollback --branch dev
|
|
104
|
+
|
|
105
|
+
# 完整指定,一键执行
|
|
106
|
+
/rollback --branch main --target v1.2.0 --mode reset --yes
|
|
107
|
+
|
|
108
|
+
# 生成反向提交
|
|
109
|
+
/rollback --branch release/v2.1 --target v2.0.5 --mode revert
|
|
110
|
+
```
|
|
111
|
+
|
|
112
|
+
## 注意事项
|
|
113
|
+
|
|
114
|
+
- **reset vs revert**:reset 改变历史,需强推;revert 更安全
|
|
115
|
+
- **LFS/子模块**:回滚前确保状态一致
|
|
116
|
+
- **CI 触发**:回滚后可能自动触发流水线
|
|
@@ -0,0 +1,139 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: '按规范执行 + 多模型协作 + 归档'
|
|
3
|
+
---
|
|
4
|
+
<!-- CCG:SPEC:IMPL:START -->
|
|
5
|
+
**Core Philosophy**
|
|
6
|
+
- Implementation is pure mechanical execution—all decisions were made in Plan phase.
|
|
7
|
+
- External model outputs are prototypes only; must be rewritten to production-grade code.
|
|
8
|
+
- Keep changes tightly scoped; enforce side-effect review before any modification.
|
|
9
|
+
- Minimize documentation—prefer self-explanatory code over comments.
|
|
10
|
+
|
|
11
|
+
**Guardrails**
|
|
12
|
+
- **NEVER** apply 后端/前端模型 prototypes directly—all outputs are reference only.
|
|
13
|
+
- **MANDATORY**: Request `unified diff patch` format from external models; they have zero write permission.
|
|
14
|
+
- Keep implementation strictly within `tasks.md` scope—no scope creep.
|
|
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.
|
|
18
|
+
|
|
19
|
+
**Steps**
|
|
20
|
+
1. **Select Change**
|
|
21
|
+
- Run `openspec list --json` to inspect Active Changes.
|
|
22
|
+
- Confirm with user which change ID to implement.
|
|
23
|
+
- Run `openspec status --change "<change_id>" --json` to review tasks.
|
|
24
|
+
|
|
25
|
+
2. **Apply OPSX Change (Pre-flight Check)**
|
|
26
|
+
- Call `/opsx:apply` internally to enter implementation mode:
|
|
27
|
+
```
|
|
28
|
+
/opsx:apply
|
|
29
|
+
```
|
|
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`.
|
|
36
|
+
|
|
37
|
+
3. **Identify Minimal Verifiable Phase**
|
|
38
|
+
- Review `tasks.md` and identify the **smallest verifiable phase**.
|
|
39
|
+
- Do NOT complete all tasks at once—control context window.
|
|
40
|
+
- Announce: "Implementing Phase X: [task group name]"
|
|
41
|
+
|
|
42
|
+
4. **Route Tasks to Appropriate Model**
|
|
43
|
+
- **Route A: {{FRONTEND_PRIMARY}}** — Frontend/UI/styling (CSS, React, Vue, HTML, components)
|
|
44
|
+
- **Route B: {{BACKEND_PRIMARY}}** — Backend/logic/algorithm (API, data processing, business logic)
|
|
45
|
+
|
|
46
|
+
**工作目录**:`{{WORKDIR}}` **必须通过 Bash 执行 `pwd`(Unix)或 `cd`(Windows CMD)获取当前工作目录的绝对路径**,禁止从 `$HOME` 或环境变量推断。如果用户通过 `/add-dir` 添加了多个工作区,先确定任务相关的工作区。
|
|
47
|
+
|
|
48
|
+
For each task:
|
|
49
|
+
```
|
|
50
|
+
codeagent-wrapper --progress --backend <{{BACKEND_PRIMARY}}|{{FRONTEND_PRIMARY}}> {{GEMINI_MODEL_FLAG}}- "{{WORKDIR}}" <<'EOF'
|
|
51
|
+
TASK: <task description from tasks.md>
|
|
52
|
+
CONTEXT: <relevant code context>
|
|
53
|
+
CONSTRAINTS: <constraints from spec>
|
|
54
|
+
OUTPUT: Unified Diff Patch format ONLY
|
|
55
|
+
EOF
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
**会话复用**:保存返回的 `SESSION_ID:`({{BACKEND_PRIMARY}} → `CODEX_PROTO_SESSION`,{{FRONTEND_PRIMARY}} → `GEMINI_PROTO_SESSION`),Step 7 审查时复用。
|
|
59
|
+
|
|
60
|
+
5. **Rewrite Prototype to Production Code**
|
|
61
|
+
Upon receiving diff patch, **NEVER apply directly**. Rewrite by:
|
|
62
|
+
- Removing redundancy
|
|
63
|
+
- Ensuring clear naming and simple structure
|
|
64
|
+
- Aligning with project style
|
|
65
|
+
- Eliminating unnecessary comments
|
|
66
|
+
- Verifying no new dependencies introduced
|
|
67
|
+
|
|
68
|
+
6. **Side-Effect Review** (Mandatory before apply)
|
|
69
|
+
Verify the change:
|
|
70
|
+
- [ ] Does not exceed `tasks.md` scope
|
|
71
|
+
- [ ] Does not affect unrelated modules
|
|
72
|
+
- [ ] Does not introduce new dependencies
|
|
73
|
+
- [ ] Does not break existing interfaces
|
|
74
|
+
|
|
75
|
+
If issues found, make targeted corrections.
|
|
76
|
+
|
|
77
|
+
7. **Multi-Model Review (PARALLEL)**
|
|
78
|
+
- **CRITICAL**: You MUST launch BOTH {{BACKEND_PRIMARY}} AND {{FRONTEND_PRIMARY}} in a SINGLE message with TWO Bash tool calls.
|
|
79
|
+
- **DO NOT** call one model first and wait. Launch BOTH simultaneously with `run_in_background: true`.
|
|
80
|
+
|
|
81
|
+
**Step 7.1**: In ONE message, make TWO parallel Bash calls:
|
|
82
|
+
|
|
83
|
+
**FIRST Bash call ({{BACKEND_PRIMARY}})**:
|
|
84
|
+
```
|
|
85
|
+
Bash({
|
|
86
|
+
command: "~/.claude/bin/codeagent-wrapper --progress --backend {{BACKEND_PRIMARY}} {{GEMINI_MODEL_FLAG}}resume <CODEX_PROTO_SESSION> - \"{{WORKDIR}}\" <<'EOF'\nReview the implementation changes:\n- Correctness: logic errors, edge cases\n- Security: injection, auth issues\n- Spec compliance: constraints satisfied\nOUTPUT: JSON with findings\nEOF",
|
|
87
|
+
run_in_background: true,
|
|
88
|
+
timeout: 300000,
|
|
89
|
+
description: "{{BACKEND_PRIMARY}}: correctness/security review"
|
|
90
|
+
})
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
**SECOND Bash call ({{FRONTEND_PRIMARY}}) - IN THE SAME MESSAGE**:
|
|
94
|
+
```
|
|
95
|
+
Bash({
|
|
96
|
+
command: "~/.claude/bin/codeagent-wrapper --progress --backend {{FRONTEND_PRIMARY}} {{GEMINI_MODEL_FLAG}}resume <GEMINI_PROTO_SESSION> - \"{{WORKDIR}}\" <<'EOF'\nReview the implementation changes:\n- Maintainability: readability, complexity\n- Patterns: consistency with project style\n- Integration: cross-module impacts\nOUTPUT: JSON with findings\nEOF",
|
|
97
|
+
run_in_background: true,
|
|
98
|
+
timeout: 300000,
|
|
99
|
+
description: "{{FRONTEND_PRIMARY}}: maintainability/patterns review"
|
|
100
|
+
})
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
**Step 7.2 (v4.5.2 事件驱动)**: spawn 两个 Bash bg 后说明 task-id 然后 **turn end**。引擎在每个 task 完成时自动发 `<task-notification>`,主线在通知触发的新 turn 处理结果。**不调 TaskOutput**。两个 task 都收到通知后才进 step 7.3。
|
|
104
|
+
|
|
105
|
+
⛔ **禁止**:调 `TaskOutput({block: true, timeout: 600000})` (旧 freeze poll 模式) / Kill task。
|
|
106
|
+
⚠️ **失败处理**:notification status=failed / exit ≠ 0 / parse 失败 → v1.7.87 标准 2-retry / 5s / 3-attempts;3 次全失败才降级单模型。
|
|
107
|
+
|
|
108
|
+
Address any critical findings before proceeding.
|
|
109
|
+
|
|
110
|
+
8. **Update Task Status**
|
|
111
|
+
- Mark completed task in `tasks.md`: `- [x] Task description`
|
|
112
|
+
- Commit changes if appropriate.
|
|
113
|
+
|
|
114
|
+
9. **Context Checkpoint**
|
|
115
|
+
- After completing a phase, report context usage.
|
|
116
|
+
- If below 80K: Ask user "Continue to next phase?"
|
|
117
|
+
- If approaching 80K: Suggest "Run `/clear` and resume with `/ccg:spec:impl`"
|
|
118
|
+
|
|
119
|
+
10. **Archive on Completion**
|
|
120
|
+
- When ALL tasks in `tasks.md` are marked `[x]`:
|
|
121
|
+
- Call `/opsx:archive` internally to archive the change:
|
|
122
|
+
```
|
|
123
|
+
/opsx:archive
|
|
124
|
+
```
|
|
125
|
+
- This merges spec deltas to `openspec/specs/` and moves change to archive.
|
|
126
|
+
- **Note**: This is an internal call. If archiving fails, guide the user to re-run `/ccg:spec-impl`.
|
|
127
|
+
|
|
128
|
+
**Reference**
|
|
129
|
+
- Check task status: `openspec status --change "<id>" --json`
|
|
130
|
+
- View active changes: `openspec list --json`
|
|
131
|
+
- Search existing patterns: `rg -n "function|class" <file>`
|
|
132
|
+
|
|
133
|
+
**Exit Criteria**
|
|
134
|
+
Implementation is complete when:
|
|
135
|
+
- [ ] All tasks in `tasks.md` marked `[x]`
|
|
136
|
+
- [ ] All multi-model reviews passed
|
|
137
|
+
- [ ] Side-effect review confirmed no regressions
|
|
138
|
+
- [ ] Change archived successfully
|
|
139
|
+
<!-- CCG:SPEC:IMPL:END -->
|