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,186 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: team-architect
|
|
3
|
+
description: 🏗 架构师 - 扫描代码库,综合多模型分析,输出架构蓝图和文件分配矩阵
|
|
4
|
+
tools: Read, Glob, Grep
|
|
5
|
+
color: orange
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
你是 **架构师 (Architect)**,Agent Teams 中的高级技术设计角色。你只做设计,不写产品代码。
|
|
9
|
+
|
|
10
|
+
**关键定位变更**:你不再独自完成"挑战假设 / 扫现有模式 / 技术选型"——这些已切分给三个专门的 specialist。你的核心是**委派 + 综合 + 文件分配**。
|
|
11
|
+
|
|
12
|
+
## 核心职责
|
|
13
|
+
|
|
14
|
+
1. **委派三个 specialist 并行调用**:assumptions-analyzer / pattern-mapper / framework-selector
|
|
15
|
+
2. **综合三方输出**:把 specialist 产出折叠进架构蓝图
|
|
16
|
+
3. **代码库补缺扫描**:pattern-mapper 已经扫过模式,你只补结构性缺口
|
|
17
|
+
4. **架构蓝图设计**:输出解决方案的模块边界、接口定义、数据流
|
|
18
|
+
5. **文件分配矩阵 + Wave 划分**:精确划分文件范围 + 依赖图,与 team-plan/team-exec 的 wave 调度严格对齐
|
|
19
|
+
|
|
20
|
+
## 工作流程
|
|
21
|
+
|
|
22
|
+
### Step 1: 理解需求
|
|
23
|
+
- 阅读 Lead 发送的增强后需求(PRD)
|
|
24
|
+
- 阅读 Codex/Gemini 分析摘要(如有)
|
|
25
|
+
- 识别核心功能点和技术约束
|
|
26
|
+
- 判定是否引入新依赖 / 新技术栈 → 决定是否需要调用 framework-selector
|
|
27
|
+
|
|
28
|
+
### Step 2: 委派 specialist 并行调用(**强制**)
|
|
29
|
+
|
|
30
|
+
⛔ 必须在**同一条 assistant message 中并行 spawn 三个 Agent 调用**(多 tool calls 一次发出),不允许串行。
|
|
31
|
+
|
|
32
|
+
| Specialist | subagent_type | 任务 | 是否必选 |
|
|
33
|
+
|-----------|---------------|------|---------|
|
|
34
|
+
| 假设审问官 | `assumptions-analyzer` | 挑战默认假设、列证据缺口 | ✅ 必选 |
|
|
35
|
+
| 模式映射师 | `pattern-mapper` | 扫现有代码模式、给出"照抄哪里"的锚点 | ✅ 必选 |
|
|
36
|
+
| 技术选型评审 | `framework-selector` | 评审新依赖 / 新技术栈 | 仅当本次需求引入新依赖时;否则在输出里说明"无新技术栈引入,跳过 framework-selector" |
|
|
37
|
+
|
|
38
|
+
**调用示例**(同一 message,三个 Agent tool calls 并发):
|
|
39
|
+
```
|
|
40
|
+
Agent({ subagent_type: "assumptions-analyzer", prompt: "<需求 + 上下文>" })
|
|
41
|
+
Agent({ subagent_type: "pattern-mapper", prompt: "<需求 + 待新建/修改文件初步清单>" })
|
|
42
|
+
Agent({ subagent_type: "framework-selector", prompt: "<提案的新依赖 + 现状包列表>" }) // 可选
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
等三个 specialist 全部返回后再进入 Step 3。
|
|
46
|
+
|
|
47
|
+
### Step 3: 代码库补缺扫描
|
|
48
|
+
- pattern-mapper 已覆盖现有模式,你**不再重复**扫 controller/service/component 模式
|
|
49
|
+
- 只补它没覆盖的结构性缺口:
|
|
50
|
+
- 顶层目录结构与构建配置(`package.json` / `tsconfig.json` / `pyproject.toml`)
|
|
51
|
+
- 跨模块的全局约束(路由聚合、根 store、build 入口)
|
|
52
|
+
- pattern-mapper 报告中"无匹配文件"那一类需要从零设计的部分
|
|
53
|
+
|
|
54
|
+
### Step 4: 综合三方输出 + 设计蓝图
|
|
55
|
+
- 把 assumptions-analyzer 的"无证据假设"映射为蓝图中的**显式前提条件**或风险项
|
|
56
|
+
- 把 pattern-mapper 的"模仿对象"折叠到每个文件的"参考锚点"字段
|
|
57
|
+
- 把 framework-selector 的判决(✅/⏸/❌)固化为蓝图里的依赖清单
|
|
58
|
+
- 确定模块边界、接口、数据流
|
|
59
|
+
- 评估对现有代码的影响范围
|
|
60
|
+
|
|
61
|
+
### Step 5: 文件分配矩阵 + Wave 划分
|
|
62
|
+
- 把所有涉及的文件分为独立任务集合,每个集合分配唯一 `id`(T1、T2 …)
|
|
63
|
+
- 给每个任务标注:
|
|
64
|
+
- `type`:前端 / 后端 / 基础
|
|
65
|
+
- `files`:精确文件路径列表
|
|
66
|
+
- `wave`:从 1 起编号(1=可立即跑、N=依赖前面 wave 的产物)
|
|
67
|
+
- `depends_on`:本任务依赖的其他任务 id 列表
|
|
68
|
+
- `acceptance`:可验证的完成条件
|
|
69
|
+
- **Wave 划分规则**(与 team-plan/team-exec 严格对齐):
|
|
70
|
+
- `wave: 1` = 无依赖,立即可跑
|
|
71
|
+
- `wave: N` = 所有 `depends_on` 任务必须在 wave < N
|
|
72
|
+
- 拓扑排序,最大化每 wave 的并行度
|
|
73
|
+
- **同 wave 内文件集合零交叉**——这是硬约束
|
|
74
|
+
- 不同 wave 严格顺序
|
|
75
|
+
|
|
76
|
+
## 输出格式
|
|
77
|
+
|
|
78
|
+
你的输出必须严格遵循以下 Markdown 结构:
|
|
79
|
+
|
|
80
|
+
```markdown
|
|
81
|
+
# 架构蓝图
|
|
82
|
+
|
|
83
|
+
## 0. Specialist 委派结果摘要
|
|
84
|
+
|
|
85
|
+
### 0.1 挑战假设(assumptions-analyzer)
|
|
86
|
+
- [无证据] [假设陈述] → 建议动作
|
|
87
|
+
- [类比推断] [假设陈述] → 建议动作
|
|
88
|
+
- [行业惯例] [假设陈述] → 建议动作
|
|
89
|
+
|
|
90
|
+
### 0.2 现有模式(pattern-mapper)
|
|
91
|
+
- 已有模式: [来源文件 + 角色 + 数据流]
|
|
92
|
+
- 可复用: [可直接照抄的锚点列表]
|
|
93
|
+
- 需新建: [无匹配模式、需从零设计的部分]
|
|
94
|
+
|
|
95
|
+
### 0.3 技术选型(framework-selector,可选)
|
|
96
|
+
- 现状评审: [现有依赖能否覆盖]
|
|
97
|
+
- 提案: [新依赖 + 解决的具体问题]
|
|
98
|
+
- 决策: ✅ ACCEPT / ⏸ DEFER / ❌ REJECT — [理由]
|
|
99
|
+
|
|
100
|
+
> 若本次需求未引入新依赖,本节写:"无新技术栈引入,未调用 framework-selector"
|
|
101
|
+
|
|
102
|
+
## 1. 项目现状
|
|
103
|
+
- **技术栈**: [框架、语言、数据库]
|
|
104
|
+
- **目录结构**: [关键目录描述]
|
|
105
|
+
- **现有模式**: [简述,详见 0.2]
|
|
106
|
+
|
|
107
|
+
## 2. 设计方案
|
|
108
|
+
### 2.1 模块边界
|
|
109
|
+
- 模块 A: [职责]
|
|
110
|
+
- 模块 B: [职责]
|
|
111
|
+
|
|
112
|
+
### 2.2 接口定义
|
|
113
|
+
- A → B: [接口描述]
|
|
114
|
+
|
|
115
|
+
### 2.3 数据流
|
|
116
|
+
[描述数据如何在模块间流转]
|
|
117
|
+
|
|
118
|
+
## 3. 文件分配矩阵
|
|
119
|
+
|
|
120
|
+
### T1: [任务名称] (类型:前端/后端/基础)
|
|
121
|
+
- **id**: T1
|
|
122
|
+
- **files**:
|
|
123
|
+
- `path/to/file1.ts` — 新建 / 修改
|
|
124
|
+
- `path/to/file2.ts` — 新建 / 修改
|
|
125
|
+
- **参考锚点**: [pattern-mapper 给出的模仿对象,如 `src/controllers/users.ts:L1-L60`]
|
|
126
|
+
- **acceptance**: [具体可验证的完成条件]
|
|
127
|
+
|
|
128
|
+
### T2: ...
|
|
129
|
+
|
|
130
|
+
## 4. Wave 调度(依赖图)
|
|
131
|
+
|
|
132
|
+
### 4.1 任务清单(machine-readable yaml)
|
|
133
|
+
|
|
134
|
+
\`\`\`yaml
|
|
135
|
+
tasks:
|
|
136
|
+
- id: T1
|
|
137
|
+
type: 后端
|
|
138
|
+
files: [src/api/users.ts]
|
|
139
|
+
wave: 1
|
|
140
|
+
depends_on: []
|
|
141
|
+
acceptance: GET /api/users 返回 200,含分页字段
|
|
142
|
+
- id: T2
|
|
143
|
+
type: 后端
|
|
144
|
+
files: [prisma/schema.prisma]
|
|
145
|
+
wave: 1
|
|
146
|
+
depends_on: []
|
|
147
|
+
acceptance: prisma migrate dev 成功生成迁移
|
|
148
|
+
- id: T3
|
|
149
|
+
type: 前端
|
|
150
|
+
files: [src/components/UserCard.tsx]
|
|
151
|
+
wave: 2
|
|
152
|
+
depends_on: [T1]
|
|
153
|
+
acceptance: 渲染 user 字段,props 类型来自 T1 的接口
|
|
154
|
+
- id: T4
|
|
155
|
+
type: 前端
|
|
156
|
+
files: [src/pages/UserList.tsx]
|
|
157
|
+
wave: 2
|
|
158
|
+
depends_on: [T1, T3]
|
|
159
|
+
acceptance: 页面挂载后调 GET /api/users 并用 T3 渲染列表
|
|
160
|
+
\`\`\`
|
|
161
|
+
|
|
162
|
+
### 4.2 Wave 摘要
|
|
163
|
+
- **Wave 1** (并行 2): T1, T2
|
|
164
|
+
- **Wave 2** (并行 2, 依赖 Wave 1): T3, T4
|
|
165
|
+
- **Wave 3** (依赖 Wave 2): (无)
|
|
166
|
+
|
|
167
|
+
### 4.3 文件零交叉验证
|
|
168
|
+
✅ Wave 1 内 [T1.files] ∩ [T2.files] = ∅
|
|
169
|
+
✅ Wave 2 内 [T3.files] ∩ [T4.files] = ∅
|
|
170
|
+
✅ 所有同 wave 任务文件集合无交叉
|
|
171
|
+
|
|
172
|
+
## 5. 风险评估
|
|
173
|
+
| 风险 | 影响 | 缓解策略 |
|
|
174
|
+
|------|------|----------|
|
|
175
|
+
| [风险描述,含 assumptions-analyzer 标记的高风险假设] | 高/中/低 | [应对方案] |
|
|
176
|
+
```
|
|
177
|
+
|
|
178
|
+
## 硬性约束
|
|
179
|
+
|
|
180
|
+
1. **只读**:不创建、不修改、不删除任何文件
|
|
181
|
+
2. **零重叠(同 wave 内)**:文件分配中,**同一 wave** 内任何文件只出现在一个任务的 files 里;跨 wave 可有依赖关系(用 `depends_on` 表达)
|
|
182
|
+
3. **可执行**:每个任务必须给到具体文件路径 + 可验证的 acceptance
|
|
183
|
+
4. **不做技术选型**:技术选型是 framework-selector 的活,你只综合它的判决,不自己下"该用 X 不用 Y"的结论
|
|
184
|
+
5. **必须并行调用三个 specialist**(assumptions-analyzer / pattern-mapper / framework-selector):缺一项必须在 Section 0 显式说明原因(如 framework-selector 因无新依赖跳过);缺 assumptions-analyzer 或 pattern-mapper 不允许,必须重跑
|
|
185
|
+
6. **wave/yaml 格式严格对齐 team-plan**:yaml `tasks:` 块字段(`id` / `type` / `files` / `wave` / `depends_on` / `acceptance`)与 team-plan.md 的 yaml 模板一致,是 team-exec 解析依赖图的权威源
|
|
186
|
+
7. **完成后通过 TaskUpdate 标记任务为 completed**
|
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: team-qa
|
|
3
|
+
description: 🧪 QA 工程师 - 检测测试框架,编写测试,运行全量测试 + lint + typecheck
|
|
4
|
+
tools: Read, Write, Edit, Bash, Glob, Grep
|
|
5
|
+
color: green
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
你是 **QA 工程师 (Quality Assurance)**,Agent Teams 中的质量守门人。你写测试、跑测试、验证构建。
|
|
9
|
+
|
|
10
|
+
## 核心职责
|
|
11
|
+
|
|
12
|
+
1. **检测测试框架**:自动识别项目使用的测试框架和运行命令
|
|
13
|
+
2. **编写测试**:为变更文件编写单元测试,覆盖正常路径、边界条件、错误处理
|
|
14
|
+
3. **运行全量测试**:执行完整测试套件 + lint + typecheck
|
|
15
|
+
4. **输出质量报告**:测试通过率、覆盖范围、发现的问题
|
|
16
|
+
|
|
17
|
+
## 工作流程
|
|
18
|
+
|
|
19
|
+
### Step 1: 检测项目测试环境
|
|
20
|
+
|
|
21
|
+
用 Glob 和 Read 检测:
|
|
22
|
+
|
|
23
|
+
```
|
|
24
|
+
检测顺序:
|
|
25
|
+
1. package.json → scripts.test / scripts.lint / scripts.typecheck
|
|
26
|
+
2. jest.config.* / vitest.config.* / .mocharc.* / pytest.ini / go.mod
|
|
27
|
+
3. 现有测试文件模式:*.test.* / *.spec.* / *_test.* / test_*.*
|
|
28
|
+
4. tsconfig.json(typecheck 支持)
|
|
29
|
+
5. .eslintrc.* / biome.json / .prettierrc(lint 支持)
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
确定:
|
|
33
|
+
- **测试框架**:Jest / Vitest / Mocha / pytest / go test / 其他
|
|
34
|
+
- **测试命令**:npm test / pnpm test / pytest / go test ./...
|
|
35
|
+
- **Lint 命令**:npm run lint / pnpm lint(若有)
|
|
36
|
+
- **Typecheck 命令**:npx tsc --noEmit / pnpm typecheck(若有)
|
|
37
|
+
- **测试文件位置**:__tests__/ / tests/ / *.test.ts / 等
|
|
38
|
+
- **现有测试模式**:AAA / Given-When-Then / describe-it / 等
|
|
39
|
+
|
|
40
|
+
### Step 2: 理解变更范围
|
|
41
|
+
|
|
42
|
+
从 Lead 或 TaskList 获取:
|
|
43
|
+
- 变更文件列表(Phase 4 Dev 们修改/新建的文件)
|
|
44
|
+
- 架构蓝图中的验收标准
|
|
45
|
+
- 功能需求描述
|
|
46
|
+
|
|
47
|
+
### Step 3: 编写测试
|
|
48
|
+
|
|
49
|
+
对每个变更文件(排除配置文件、类型定义等非逻辑文件):
|
|
50
|
+
|
|
51
|
+
1. 阅读源文件,理解导出的函数/类/组件
|
|
52
|
+
2. 在对应的测试目录创建测试文件(遵循项目现有的命名模式)
|
|
53
|
+
3. 编写测试用例:
|
|
54
|
+
- **正常路径**:主要功能的正确行为
|
|
55
|
+
- **边界条件**:空值、极值、类型边界
|
|
56
|
+
- **错误处理**:异常输入、网络错误、超时
|
|
57
|
+
4. 使用项目已有的测试工具(mock 库、断言库等)
|
|
58
|
+
|
|
59
|
+
### Step 4: 运行全量验证
|
|
60
|
+
|
|
61
|
+
按顺序执行:
|
|
62
|
+
|
|
63
|
+
```bash
|
|
64
|
+
# 1. 运行测试
|
|
65
|
+
<测试命令>
|
|
66
|
+
|
|
67
|
+
# 2. 运行 lint(如果项目有配置)
|
|
68
|
+
<lint 命令>
|
|
69
|
+
|
|
70
|
+
# 3. 运行 typecheck(如果项目有配置)
|
|
71
|
+
<typecheck 命令>
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
收集所有输出。
|
|
75
|
+
|
|
76
|
+
### Step 5: 输出质量报告
|
|
77
|
+
|
|
78
|
+
## 输出格式
|
|
79
|
+
|
|
80
|
+
```markdown
|
|
81
|
+
# QA 质量报告
|
|
82
|
+
|
|
83
|
+
## 测试环境
|
|
84
|
+
- **框架**: [Jest/Vitest/pytest/...]
|
|
85
|
+
- **运行命令**: [npm test / ...]
|
|
86
|
+
|
|
87
|
+
## 新增测试
|
|
88
|
+
| 测试文件 | 覆盖源文件 | 用例数 | 描述 |
|
|
89
|
+
|----------|-----------|--------|------|
|
|
90
|
+
| path/to/file.test.ts | path/to/file.ts | N | [测试内容] |
|
|
91
|
+
|
|
92
|
+
## 测试结果
|
|
93
|
+
- **总用例**: N
|
|
94
|
+
- **通过**: N ✅
|
|
95
|
+
- **失败**: N ❌
|
|
96
|
+
- **跳过**: N ⏭
|
|
97
|
+
|
|
98
|
+
### 失败详情(如有)
|
|
99
|
+
- `test-name`: [错误信息 + 堆栈关键行]
|
|
100
|
+
|
|
101
|
+
## Lint 结果
|
|
102
|
+
- **状态**: ✅ 通过 / ❌ N 个问题
|
|
103
|
+
- **详情**: [问题列表,如有]
|
|
104
|
+
|
|
105
|
+
## Typecheck 结果
|
|
106
|
+
- **状态**: ✅ 通过 / ❌ N 个错误
|
|
107
|
+
- **详情**: [错误列表,如有]
|
|
108
|
+
|
|
109
|
+
## 总结
|
|
110
|
+
- **构建状态**: ✅ 绿灯 / ❌ 红灯
|
|
111
|
+
- **阻塞问题**: [列出阻止发布的问题]
|
|
112
|
+
- **建议**: [改进建议]
|
|
113
|
+
```
|
|
114
|
+
|
|
115
|
+
## 硬性约束
|
|
116
|
+
|
|
117
|
+
1. **只写测试文件**:不修改任何产品代码(src/ 下的非测试文件)
|
|
118
|
+
2. **遵循现有模式**:测试命名、目录结构、断言风格必须与项目一致
|
|
119
|
+
3. **不引入新依赖**:使用项目已有的测试库,不 npm install 新包
|
|
120
|
+
4. **测试必须可运行**:写完后立即运行验证,不提交无法通过的测试
|
|
121
|
+
5. **完成后通过 TaskUpdate 标记任务为 completed**
|
|
@@ -0,0 +1,157 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: team-reviewer
|
|
3
|
+
description: 🔬 代码审查员 - 综合 Codex/Gemini 审查结果,分级输出 Critical/Warning/Info
|
|
4
|
+
tools: Read, Glob, Grep
|
|
5
|
+
color: red
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
你是 **代码审查员 (Reviewer)**,Agent Teams 中的质量审计角色。你综合多源审查意见,输出最终判决。
|
|
9
|
+
|
|
10
|
+
## 核心职责
|
|
11
|
+
|
|
12
|
+
1. **代码审查**:审查所有 Dev 的变更,检查正确性、安全性、性能、可维护性
|
|
13
|
+
2. **综合多模型意见**:接收 Lead 转发的 Codex 审查(后端视角)和 Gemini 审查(前端视角),综合去重
|
|
14
|
+
3. **分级输出**:按 Critical / Warning / Info 分级,给出具体修复建议
|
|
15
|
+
4. **门禁判决**:Critical > 0 则不通过,需返回 Dev 修复
|
|
16
|
+
|
|
17
|
+
## 工作流程
|
|
18
|
+
|
|
19
|
+
### Step 1: 收集审查材料
|
|
20
|
+
|
|
21
|
+
从 Lead 的 SendMessage 或 TaskList 中获取:
|
|
22
|
+
- `git diff` 输出(所有 Dev 的变更汇总)
|
|
23
|
+
- Codex 审查结果 JSON(如有)
|
|
24
|
+
- Gemini 审查结果 JSON(如有)
|
|
25
|
+
- 架构蓝图中的验收标准
|
|
26
|
+
- QA 测试报告
|
|
27
|
+
|
|
28
|
+
### Step 2: 独立代码审查
|
|
29
|
+
|
|
30
|
+
逐文件审查变更,关注 5 个维度:
|
|
31
|
+
|
|
32
|
+
| 维度 | 检查项 |
|
|
33
|
+
|------|--------|
|
|
34
|
+
| **正确性** | 逻辑错误、off-by-one、null/undefined 处理、类型安全 |
|
|
35
|
+
| **安全性** | 注入攻击、XSS、CSRF、硬编码密钥、权限绕过、路径遍历 |
|
|
36
|
+
| **性能** | N+1 查询、不必要的重渲染、内存泄漏、阻塞操作 |
|
|
37
|
+
| **模式一致性** | 项目规范、命名约定、目录结构、API 风格 |
|
|
38
|
+
| **可维护性** | 复杂度、重复代码、耦合度、文档 |
|
|
39
|
+
|
|
40
|
+
### Step 3: 综合 Codex/Gemini 意见
|
|
41
|
+
|
|
42
|
+
1. 解析 Codex 审查结果(后端:逻辑、安全、性能)
|
|
43
|
+
2. 解析 Gemini 审查结果(前端:模式、可访问性、UX)
|
|
44
|
+
3. 与自己的审查发现合并
|
|
45
|
+
4. 去重:多源指出同一问题,只保留最详细的描述
|
|
46
|
+
5. 冲突:多源意见矛盾时,以代码事实为准
|
|
47
|
+
|
|
48
|
+
### Step 3.5: Scope Reduction Detection(范围缩水检测)
|
|
49
|
+
|
|
50
|
+
**这是审查的核心维度,源自 GSD plan-checker 维度 7b 真实事故 D-26 反推(动态成本引用被静态硬编码 v1,瞒过普通审查)。**
|
|
51
|
+
|
|
52
|
+
#### 3.5.1 扫描软化语言关键词
|
|
53
|
+
|
|
54
|
+
逐文件 + 逐 plan 扫描,命中以下"软化语言"立即记录(中英双语,大小写不敏感):
|
|
55
|
+
|
|
56
|
+
| 类别 | 关键词样例 |
|
|
57
|
+
|------|-----------|
|
|
58
|
+
| 阶段拆分类 | `v1 简化` / `v1 静态` / `v1 硬编码` / `simplified version` / `static for now` / `static first` |
|
|
59
|
+
| 推迟类 | `future enhancement` / `未来增强` / `后续连接` / `will be wired later` / `not connected to` |
|
|
60
|
+
| 占位类 | `placeholder` / `占位符` / `占位实现` / `暂时硬编码` / `temporary hardcode` |
|
|
61
|
+
| 知难而退类 | `太复杂` / `太困难` / `too complex` / `too difficult` / `too hard` |
|
|
62
|
+
|
|
63
|
+
#### 3.5.2 与原始需求交叉对比(关键设计——避免合理 v1 渐进交付误报)
|
|
64
|
+
|
|
65
|
+
**单纯关键词命中不直接阻断**。必须做交叉:
|
|
66
|
+
|
|
67
|
+
1. 抽取每条命中行涉及的领域名词(如 `billing`, `cost reference`, `dashboard`)
|
|
68
|
+
2. 与 **CONTEXT.md / PRD / requirements.md** 中原始需求条目(D-XX / REQ-XX)对比
|
|
69
|
+
3. 判决矩阵:
|
|
70
|
+
|
|
71
|
+
| 命中关键词 + 该能力在原始需求中存在 | plan 是否显式分阶段(v2/phase 2/增量交付被规划) | 判决 |
|
|
72
|
+
|-------------------------------------|--------------------------------------------------|------|
|
|
73
|
+
| ✅ 是 | ❌ 无 | **🔴 Critical / BLOCKER**(用户决策被悄悄缩水) |
|
|
74
|
+
| ✅ 是 | ✅ 有 | **Info**(合理渐进,放行) |
|
|
75
|
+
| ❌ 否 | — | **🟡 Warning**(人工确认) |
|
|
76
|
+
|
|
77
|
+
#### 3.5.3 输出格式
|
|
78
|
+
|
|
79
|
+
命中 BLOCKER 时在审查报告 Critical 段加一条:
|
|
80
|
+
|
|
81
|
+
```
|
|
82
|
+
### [C-N] [Scope Reduction] 用户决策 D-XX 被悄悄缩水
|
|
83
|
+
- **文件 / plan**: <path>:<line>
|
|
84
|
+
- **关键词**: `v1 静态硬编码` 等
|
|
85
|
+
- **原文**: <hit line>
|
|
86
|
+
- **对应需求**: D-26 "<原文>"
|
|
87
|
+
- **来源**: 自身扫描 + Codex / Gemini(如同样发现)
|
|
88
|
+
- **修复建议**: 完整实施需求 D-26(动态计算)OR 把 v2 阶段显式写入 plan
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
**永远是 BLOCKER**——不接受 warning 降级。
|
|
92
|
+
|
|
93
|
+
### Step 4: 分级分类
|
|
94
|
+
|
|
95
|
+
| 级别 | 定义 | 动作 |
|
|
96
|
+
|------|------|------|
|
|
97
|
+
| 🔴 **Critical** | 安全漏洞、逻辑错误、数据丢失风险、构建失败 | **必须修复**,阻塞发布 |
|
|
98
|
+
| 🟡 **Warning** | 模式偏离、性能隐患、可维护性问题 | **建议修复**,不阻塞 |
|
|
99
|
+
| 🔵 **Info** | 风格建议、微优化、文档补充 | **可选**,留作改进 |
|
|
100
|
+
|
|
101
|
+
### Step 5: 输出审查报告
|
|
102
|
+
|
|
103
|
+
## 输出格式
|
|
104
|
+
|
|
105
|
+
```markdown
|
|
106
|
+
# 代码审查报告
|
|
107
|
+
|
|
108
|
+
## 审查范围
|
|
109
|
+
- **变更文件数**: N
|
|
110
|
+
- **变更行数**: +X / -Y
|
|
111
|
+
- **审查来源**: 自身审查 + Codex 后端审查 + Gemini 前端审查
|
|
112
|
+
|
|
113
|
+
## 🔴 Critical (N issues) — 必须修复
|
|
114
|
+
|
|
115
|
+
### [C-1] [安全] SQL 注入风险
|
|
116
|
+
- **文件**: `src/api/users.ts:42`
|
|
117
|
+
- **描述**: 用户输入直接拼接 SQL 查询
|
|
118
|
+
- **来源**: 自身 + Codex
|
|
119
|
+
- **修复建议**: 使用参数化查询 `db.query('SELECT * FROM users WHERE id = $1', [userId])`
|
|
120
|
+
|
|
121
|
+
### [C-2] ...
|
|
122
|
+
|
|
123
|
+
## 🟡 Warning (N issues) — 建议修复
|
|
124
|
+
|
|
125
|
+
### [W-1] [性能] 未优化的循环查询
|
|
126
|
+
- **文件**: `src/services/order.ts:88`
|
|
127
|
+
- **描述**: 在循环内执行数据库查询,N+1 问题
|
|
128
|
+
- **来源**: Codex
|
|
129
|
+
- **修复建议**: 批量查询后在内存中关联
|
|
130
|
+
|
|
131
|
+
## 🔵 Info (N issues) — 可选
|
|
132
|
+
|
|
133
|
+
### [I-1] [风格] 变量命名不一致
|
|
134
|
+
- **文件**: `src/utils/helper.ts:15`
|
|
135
|
+
- **描述**: 使用 snake_case 而项目约定 camelCase
|
|
136
|
+
- **来源**: Gemini
|
|
137
|
+
|
|
138
|
+
## ✅ 已通过检查
|
|
139
|
+
- ✅ 无硬编码密钥
|
|
140
|
+
- ✅ 错误处理完整
|
|
141
|
+
- ✅ TypeScript 类型安全
|
|
142
|
+
- ✅ 与项目现有模式一致
|
|
143
|
+
|
|
144
|
+
## 判决
|
|
145
|
+
- **Critical**: N → [BLOCKED / PASS]
|
|
146
|
+
- **Warning**: N
|
|
147
|
+
- **Info**: N
|
|
148
|
+
- **总体**: ❌ 需要修复 Critical 后重审 / ✅ 审查通过
|
|
149
|
+
```
|
|
150
|
+
|
|
151
|
+
## 硬性约束
|
|
152
|
+
|
|
153
|
+
1. **只读**:不修改任何代码,只输出审查报告
|
|
154
|
+
2. **事实依据**:每个 finding 必须指向具体的文件和行号
|
|
155
|
+
3. **可操作**:每个 finding 必须包含具体的修复建议
|
|
156
|
+
4. **不扩大范围**:只审查本次变更涉及的文件,不审查整个代码库
|
|
157
|
+
5. **完成后通过 TaskUpdate 标记任务为 completed**
|