aigroup-workflow 1.2.5 → 1.2.7

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/CLAUDE.md CHANGED
@@ -1,9 +1,6 @@
1
- # aiGroup - AI 团队协作框架
1
+ # 角色:麦克斯 (Max) 项目经理
2
2
 
3
- ## 角色:麦克斯 (Max) 项目经理
4
-
5
- 你是麦克斯 (Max),项目经理兼用户个人助理。你不直接写代码、做设计或做测试。
6
- 你的价值在于理解需求、驱动工作流、整合成果。
3
+ 你是麦克斯 (Max),项目经理兼用户个人助理。不直接写代码、做设计或做测试,价值在于需求分析、任务拆解、驱动工作流、进度跟踪、风险预警、熵管理,以及通过 Agent 工具派遣子代理整合成果。
7
4
 
8
5
  ## 全局铁律
9
6
 
@@ -24,13 +21,15 @@
24
21
  需求收集 → 需求验证 → 方案设计 → 任务拆解 → 实施开发 → 测试验证 → 文档更新 → 分支收尾
25
22
  ```
26
23
 
27
- **禁止**:design 完成前派遣 `/jarvis`;planning 完成前派遣 `/jarvis`;development 完成前派遣 `/kyle`
24
+ **禁止**:design 完成前派遣 Jarvis;planning 完成前派遣 Jarvis;development 完成前派遣 Kyle
28
25
 
29
26
  状态机命令 → `scripts/harness/workflow-state.sh`(status/init/advance/gate/reset/exempt)
30
27
 
31
- ## 知识库地图
28
+ 简单任务豁免:纯知识问答、单行修改、配置调整、文档笔误。判断标准:涉及 2+ 文件或设计决策就走完整管道。
29
+
30
+ **豁免 ≠ 自己动手**:豁免的是 8 阶段流程,不是派遣规则。涉及代码、设计、测试或验证,无论任务大小,必须派遣对应子 Agent(Jarvis/Ella/Kyle)执行,禁止在当前对话中角色切换。
32
31
 
33
- > 详细规范均在 `docs/` 目录下,按需检索。本文件仅为入口。
32
+ ## 知识库地图
34
33
 
35
34
  | 需要了解 | 查阅 |
36
35
  |---------|------|
@@ -43,18 +42,6 @@
43
42
  | 技术债追踪 | `docs/tech-debt-tracker.md` |
44
43
  | Harness 转向循环 | `docs/steering-loop.md` |
45
44
 
46
- ## 强制工作流管道(8 阶段)
47
-
48
- ```
49
- 需求收集 → 需求验证 → 方案设计 → 任务拆解 → 实施开发 → 测试验证 → 文档更新 → 分支收尾
50
- ```
51
-
52
- 详见 → `docs/workflow-pipeline.md`
53
-
54
- 简单任务豁免:纯知识问答、单行修改、配置调整、文档笔误。判断标准:涉及 2+ 文件或设计决策就走完整管道。
55
-
56
- **豁免 ≠ 自己动手**:简单任务豁免的是 8 阶段流程,不是派遣规则。只要涉及代码、设计、测试或验证,无论任务大小,Max **必须派遣对应子 Agent** 执行(Jarvis 写代码、Ella 做设计、Kyle 做测试和代码验证),禁止在当前对话中直接操作。
57
-
58
45
  ## 工作流技能
59
46
 
60
47
  | 阶段 | 技能 | 路径 |
@@ -82,27 +69,18 @@
82
69
 
83
70
  ## 团队派遣(Agent 工具)
84
71
 
85
- **Max 必须使用 Agent 工具创建隔离子代理,禁止在当前对话中角色切换。**
72
+ 三人已注册为 Claude Code 原生子代理(`.claude/agents/{ella,jarvis,kyle}.md`),用 `subagent_type` 派遣:
86
73
 
87
74
  | 成员 | 角色 | 派遣方式 |
88
75
  |------|------|---------|
89
- | 艾拉 (Ella) | UI/UX 设计师 | `Agent({ description: "Ella: ...", prompt: "读取 .dev-agents/ella/PERSONA.md ..." })` |
90
- | 贾维斯 (Jarvis) | 全栈开发 | `Agent({ description: "Jarvis: ...", prompt: "读取 .dev-agents/jarvis/PERSONA.md ..." })` |
91
- | 凯尔 (Kyle) | 质量保障(测试+验证) | `Agent({ description: "Kyle: ...", prompt: "读取 .dev-agents/kyle/PERSONA.md ..." })` |
92
-
93
- 详见 → `docs/dispatch-rules.md`
94
-
95
- ## Harness 传感器
96
-
97
- 开发完成后,Agent 应运行 `scripts/harness/run-all.sh` 自检。
98
- 传感器覆盖:结构完整性 + 文档健康 + 工作流产物 + **流程合规**
76
+ | 艾拉 (Ella) | UI/UX 设计师 | `Agent({ subagent_type: "ella", description: "...", prompt: "..." })` |
77
+ | 贾维斯 (Jarvis) | 全栈开发 | `Agent({ subagent_type: "jarvis", description: "...", prompt: "..." })` |
78
+ | 凯尔 (Kyle) | 质量保障(测试+验证) | `Agent({ subagent_type: "kyle", description: "...", prompt: "..." })` |
99
79
 
100
- ## Harness 转向循环
80
+ 产物工作区:`.dev-agents/shared/`(`designs/ tasks/ reviews/ templates/`)
101
81
 
102
- 当问题反复出现时,将修复编码为约束(Linter/文档/技能),确保自动执行。详见 `docs/steering-loop.md`
82
+ ## Harness 自检
103
83
 
104
- ## Max 的职责边界
84
+ 开发完成后运行 `scripts/harness/run-all.sh`,按 [FAIL] 提示的 [FIX] 修复直至全部通过。
105
85
 
106
- - **可以做**:需求分析、任务拆解、驱动工作流、进度跟踪、风险预警、驱动熵管理
107
- - **不能做**:直接写项目代码、做 UI 设计、做测试验收、做代码验证
108
- - **铁律**:任何涉及代码/设计/测试/验证的操作,不论任务大小,必须派遣子 Agent(Jarvis/Ella/Kyle)执行
86
+ <!-- aiGroup 框架边界(init-architect 保留区至此,以下由 /init-project 生成) -->
package/README.md CHANGED
@@ -4,7 +4,7 @@
4
4
  [![License: MIT](https://img.shields.io/badge/License-MIT-green.svg?style=flat&colorA=080f12&colorB=1fa669)](LICENSE)
5
5
  [![Claude Code](https://img.shields.io/badge/Claude-Code-purple.svg?style=flat&colorA=080f12&colorB=1fa669)](https://claude.ai/code)
6
6
 
7
- > 单入口 AI 团队:一个命令启动,按需自动派遣设计、开发、测试专家。
7
+ > 单入口 AI 团队:Max 指挥官接收需求,按需自动派遣原生子代理(Ella/Jarvis/Kyle)执行。
8
8
  > 内置门禁式工作流:需求澄清 → 方案设计 → 实现计划 → 子代理开发 → 两阶段审查 → 分支收尾。
9
9
 
10
10
  ## 快速开始
@@ -65,7 +65,9 @@ claude
65
65
 
66
66
  ### 三种使用模式
67
67
 
68
- **模式一:完整管道(复杂任务)**
68
+ **模式一:自然语言描述(推荐)**
69
+
70
+ 直接描述需求即可,Max 会根据任务类型自动调用对应子代理(通过 `Agent({subagent_type: ...})`):
69
71
 
70
72
  ```
71
73
  你: 帮我做一个用户认证系统
@@ -75,17 +77,28 @@ claude
75
77
  → Max 收尾集成
76
78
  ```
77
79
 
78
- **模式二:斜杠命令直接派遣(明确任务)**
80
+ **模式二:指定角色派遣(明确意图时)**
81
+
82
+ 在描述中点名角色,Max 会跳过判断直接派遣:
79
83
 
80
84
  ```
81
- /ella 设计一个登录页面 # 直接派遣设计师
82
- /jarvis 实现用户认证 API # 直接派遣开发
83
- /kyle 审查用户模块代码 # 直接派遣质量保障
84
- /init-project 我的项目 # 初始化项目 AI 上下文
85
- /git-commit # 智能 Git 提交
85
+ 你: 让 Ella 设计一个登录页面
86
+ 你: 找 Jarvis 实现用户认证 API
87
+ 你: 请 Kyle 审查用户模块代码
86
88
  ```
87
89
 
88
- **模式三:简单问答(轻量任务)**
90
+ 子代理身份、门控、技能加载都由 `.claude/agents/<role>.md` 自动注入,Max 无需在 prompt 里重复 PERSONA。
91
+
92
+ **模式三:项目级斜杠命令(工具类操作)**
93
+
94
+ ```
95
+ /init-project 我的项目 # 初始化项目 AI 上下文(根级+模块级 CLAUDE.md)
96
+ /git-commit # 智能 Git 提交(Conventional Commits)
97
+ ```
98
+
99
+ 这是仅有的两个保留的 slash 命令——都是项目工具,不是角色派遣。角色派遣统一走 Agent 工具。
100
+
101
+ **模式四:简单问答(轻量任务)**
89
102
 
90
103
  ```
91
104
  你: 这个项目用的什么技术栈?
@@ -96,23 +109,27 @@ claude
96
109
 
97
110
  ## 团队成员
98
111
 
99
- | 成员 | 角色 | 技能数 | 负责什么 |
100
- |------|------|--------|---------|
101
- | 麦克斯 (Max) | 项目经理 | 16 | 需求分析、任务拆解、进度协调、工作流管道 |
102
- | 艾拉 (Ella) | UI/UX 设计师 | 10 | 界面设计、交互原型、前端框架参考 |
103
- | 贾维斯 (Jarvis) | 全栈开发 | 45 | 架构设计、前后端编码、API、DevOps |
104
- | 凯尔 (Kyle) | 质量保障 | 7 | 代码审查、测试策略、安全审计、E2E |
112
+ 三名子代理以 Claude Code **原生子代理**形式定义在 `.claude/agents/`,Max 作为宿主会话通过 Agent 工具调用:
113
+
114
+ | 成员 | 角色 | 定义位置 | 技能数 | 负责什么 |
115
+ |------|------|---------|--------|---------|
116
+ | 麦克斯 (Max) | 项目经理 | `CLAUDE.md`(宿主会话) | 16 | 需求分析、任务拆解、进度协调、工作流管道 |
117
+ | 艾拉 (Ella) | UI/UX 设计师 | `.claude/agents/ella.md` | 10 | 界面设计、交互原型、前端框架参考 |
118
+ | 贾维斯 (Jarvis) | 全栈开发 | `.claude/agents/jarvis.md` | 45 | 架构设计、前后端编码、API、DevOps |
119
+ | 凯尔 (Kyle) | 质量保障 | `.claude/agents/kyle.md` | 7 | 代码审查、测试策略、安全审计、E2E |
120
+
121
+ > "Max" 是宿主 Claude 会话的代号,不是独立 agent——所有规则由 `CLAUDE.md` 加载。
122
+ > Ella/Jarvis/Kyle 是**真子代理**,拥有独立 context window、工具集和门控。
105
123
 
106
- ## 斜杠命令
124
+ ## 可用斜杠命令
107
125
 
108
126
  | 命令 | 说明 |
109
127
  |------|------|
110
- | `/ella <任务>` | 派遣设计师界面设计、交互原型、设计规范 |
111
- | `/jarvis <任务>` | 派遣开发 — 编码、技术方案、Bug 修复 |
112
- | `/kyle <任务>` | 派遣质量保障 — 代码审查、功能验收 |
113
- | `/init-project <名称>` | 初始化项目 AI 上下文 — 生成根级和模块级 CLAUDE.md 索引 |
128
+ | `/init-project <名称>` | 初始化项目 AI 上下文 生成根级和模块级 `CLAUDE.md`,保留 aiGroup 框架 |
114
129
  | `/git-commit` | 智能 Git 提交 — 分析变更、生成 Conventional Commits 信息 |
115
130
 
131
+ 角色派遣**没有专属 slash 命令**——Claude Code 原生机制下,子代理由 `Agent({subagent_type})` 工具调用,触发方式是用户自然语言描述或明确点名角色(见上文"三种使用模式")。
132
+
116
133
  ## 工作流程
117
134
 
118
135
  ### 总体协作流程
@@ -150,16 +167,16 @@ sequenceDiagram
150
167
  Max->>Max: 分析并拆解任务
151
168
 
152
169
  Note over Max,Ella: 阶段一 设计
153
- Max->>Ella: 派遣设计任务
154
- Ella-->>Max: 设计完成
170
+ Max->>Ella: Agent(subagent_type=ella)
171
+ Ella-->>Max: 设计完成 + 压缩报告
155
172
 
156
173
  Note over Max,Jarvis: 阶段二 开发
157
- Max->>Jarvis: 派遣开发任务+设计稿路径
158
- Jarvis-->>Max: 开发完成
174
+ Max->>Jarvis: Agent(subagent_type=jarvis) + 设计稿路径
175
+ Jarvis-->>Max: 开发完成 + 验证证据
159
176
 
160
177
  Note over Max,Kyle: 阶段三 验收
161
- Max->>Kyle: 派遣验收任务+代码路径
162
- Kyle-->>Max: 验收完成
178
+ Max->>Kyle: Agent(subagent_type=kyle) + 代码路径
179
+ Kyle-->>Max: 两阶段审查结论
163
180
 
164
181
  Max-->>User: 汇总全流程结果
165
182
  ```
@@ -169,21 +186,21 @@ sequenceDiagram
169
186
  ```mermaid
170
187
  flowchart LR
171
188
  subgraph CTX["独立上下文窗口"]
172
- MaxCtx["Max\nRules 注入"]
173
- EllaCtx["Ella\n独立窗口"]
174
- JarvisCtx["Jarvis\n独立窗口"]
175
- KyleCtx["Kyle\n独立窗口"]
189
+ MaxCtx["Max\nCLAUDE.md 注入"]
190
+ EllaCtx["Ella\n.claude/agents/ella.md"]
191
+ JarvisCtx["Jarvis\n.claude/agents/jarvis.md"]
192
+ KyleCtx["Kyle\n.claude/agents/kyle.md"]
176
193
  end
177
194
 
178
- subgraph SHARED["共享产物目录"]
195
+ subgraph SHARED["共享产物目录 .dev-agents/shared/"]
179
196
  Tasks[("tasks/")]
180
197
  Designs[("designs/")]
181
198
  Reviews[("reviews/")]
182
199
  end
183
200
 
184
- MaxCtx -->|"派遣注入\n需求+产物路径"| EllaCtx
185
- MaxCtx -->|"派遣注入\n需求+设计稿路径"| JarvisCtx
186
- MaxCtx -->|"派遣注入\n代码路径+需求"| KyleCtx
201
+ MaxCtx -->|"Agent 派遣\n任务+产物路径"| EllaCtx
202
+ MaxCtx -->|"Agent 派遣\n任务+设计稿路径"| JarvisCtx
203
+ MaxCtx -->|"Agent 派遣\n代码路径+规格"| KyleCtx
187
204
 
188
205
  EllaCtx -->|写入设计稿| Designs
189
206
  JarvisCtx -->|读取设计稿| Designs
@@ -195,7 +212,7 @@ flowchart LR
195
212
  style KyleCtx fill:#FF9800,color:#fff
196
213
  ```
197
214
 
198
- > **关键规则**:子 Agent 之间不能直接通信,所有上下文由 Max 在派遣时注入,跨 Agent 协作通过 `.dev-agents/shared/` 目录下的文件实现。
215
+ > **关键规则**:子代理之间不能直接通信,所有上下文由 Max `Agent` 调用的 prompt 中注入;跨代理协作通过 `.dev-agents/shared/` 目录下的文件实现。子代理身份(PERSONA/门控/技能清单)不需要注入,由 Claude Code 从 agent 定义文件自动加载。
199
216
 
200
217
  ## 工作流技能(门禁式管道)
201
218
 
@@ -237,7 +254,7 @@ Stage 1 不通过 → 修复 → 重审 → 通过后才进入 Stage 2。
237
254
  ```mermaid
238
255
  flowchart TB
239
256
  subgraph MAX["Max 项目经理"]
240
- M1["workflow\n8阶段工作流管道"]
257
+ M1["workflow\n8 阶段工作流管道"]
241
258
  M2["PM 辅助技能\n竞品分析/PRD/会议纪要等"]
242
259
  end
243
260
 
@@ -297,10 +314,13 @@ npx aigroup-workflow init
297
314
 
298
315
  ```bash
299
316
  # 必须复制
300
- CLAUDE.md # Agent 入口
317
+ CLAUDE.md # 宿主会话规则(Max 的"宪法")
301
318
  docs/ # 知识库
302
- .claude/ # Claude Code 配置
303
- .dev-agents/ # 角色定义 + 协作产物目录
319
+ .claude/agents/ # 原生子代理定义(ella/jarvis/kyle/init-architect/...)
320
+ .claude/commands/ # 工具类斜杠命令(init-project/git-commit)
321
+ .claude/hooks.json # Hooks 配置
322
+ .claude/settings.json # 权限配置
323
+ .dev-agents/shared/ # 子代理协作产物目录(空目录结构)
304
324
  scripts/harness/ # Harness 传感器
305
325
 
306
326
  # 按需复制
@@ -322,7 +342,7 @@ bash scripts/harness/run-all.sh
322
342
 
323
343
  ```
324
344
  aiGroup/
325
- ├── CLAUDE.md # Agent 入口
345
+ ├── CLAUDE.md # 宿主会话规则(Max 的"宪法")
326
346
  ├── package.json # npm 包配置
327
347
  ├── bin/aigroup.mjs # CLI 入口
328
348
  ├── cli/ # CLI 实现
@@ -332,23 +352,23 @@ aiGroup/
332
352
  ├── .claude/ # Claude Code 配置
333
353
  │ ├── settings.json # 权限设置
334
354
  │ ├── hooks.json # Harness Hooks
335
- └── commands/ # 斜杠命令
336
- ├── ella.md # /ella
337
- ├── jarvis.md # /jarvis
338
- ├── kyle.md # /kyle
339
- │ ├── init-project.md # /init-project
340
- └── git-commit.md # /git-commit
341
- ├── .dev-agents/ # 角色定义 + 协作产物
342
- ├── ella/PERSONA.md
343
- ├── jarvis/PERSONA.md
344
- ├── kyle/PERSONA.md
345
- │ └── shared/ # tasks/ designs/ reviews/ templates/
355
+ ├── commands/ # 工具类斜杠命令
356
+ ├── init-project.md # /init-project
357
+ │ └── git-commit.md # /git-commit
358
+ └── agents/ # 原生子代理定义(Agent({subagent_type}) 调用)
359
+ │ ├── ella.md # 艾拉(UI/UX 设计师)
360
+ ├── jarvis.md # 贾维斯(全栈开发)
361
+ ├── kyle.md # 凯尔(质量保障)
362
+ ├── init-architect.md # 项目初始化架构师
363
+ └── get-current-datetime.md
364
+ ├── .dev-agents/shared/ # 角色间协作产物工作区
365
+ │ └── tasks/ designs/ reviews/ templates/
346
366
  ├── skills/ # 技能库(按角色分组)
347
367
  │ ├── max/ # PM: workflow(11) + 辅助技能(5)
348
368
  │ ├── ella/ # 设计: UI/UX + 前端框架(10)
349
369
  │ ├── jarvis/ # 开发: 45 Skills
350
370
  │ └── kyle/ # QA: 7 Skills
351
- └── scripts/harness/ # Harness 传感器套件
371
+ └── scripts/harness/ # Harness 传感器套件(5 个传感器)
352
372
  ```
353
373
 
354
374
  ## Harness Engineering
@@ -364,6 +384,16 @@ Agent = Model + Harness
364
384
  | **推理型反馈** | AI 审查 | Kyle 两阶段审查 |
365
385
  | **熵管理** | 防退化 | entropy-management + 质量评分 |
366
386
 
387
+ ### 传感器套件(5 个)
388
+
389
+ | 传感器 | 覆盖 |
390
+ |-------|------|
391
+ | `lint-structure.sh` | 目录结构、核心文件、子代理定义 |
392
+ | `lint-docs.sh` | 文档健康、交叉引用有效性 |
393
+ | `lint-workflow-artifacts.sh` | 工作流产物完整性 |
394
+ | `lint-process.sh` | 流程合规检查 |
395
+ | `lint-delegation.sh` | 派遣契约检查(防止 prompt 重复定义子代理内容) |
396
+
367
397
  ```bash
368
398
  bash scripts/harness/run-all.sh # 全量检查
369
399
  ```
@@ -377,12 +407,10 @@ bash scripts/harness/run-all.sh # 全量检查
377
407
  | `aig update` | 增量更新 |
378
408
  | `aig check` | 健康检查 |
379
409
  | `aig status` | 工作流状态 |
380
- | `/ella <任务>` | 派遣设计师 |
381
- | `/jarvis <任务>` | 派遣开发 |
382
- | `/kyle <任务>` | 派遣 QA |
383
410
  | `/init-project <名称>` | 项目 AI 上下文初始化 |
384
411
  | `/git-commit` | 智能 Git 提交 |
385
412
 
413
+ > 角色派遣无专属 slash 命令——自然语言描述即可,Max 通过 `Agent` 工具自动调用子代理。
386
414
  > `aig` 是 `aigroup` 的短别名。npx 用户:`npx aigroup-workflow <命令>`。
387
415
 
388
416
  ## 致谢
@@ -31,13 +31,13 @@ export async function update(ctx) {
31
31
  log.dim('将覆盖更新:')
32
32
  log.dim(' • scripts/harness/*(传感器脚本)')
33
33
  log.dim(' • skills/max/workflow/*(工作流技能)')
34
- log.dim(' • .claude/commands/*(子 Agent 命令)')
34
+ log.dim(' • .claude/commands/*(通用命令)')
35
+ log.dim(' • .claude/agents/*(原生子代理定义)')
35
36
  log.dim('')
36
37
  log.dim('不会触碰:')
37
38
  log.dim(' • CLAUDE.md(项目入口)')
38
39
  log.dim(' • docs/*(知识库文档)')
39
40
  log.dim(' • .dev-agents/shared/*(工作产物)')
40
- log.dim(' • .dev-agents/*/PERSONA.md(角色定义)')
41
41
 
42
42
  if (!skipPrompt) {
43
43
  const proceed = await confirm('确认更新?', true)
@@ -56,31 +56,21 @@ export const HOOKS_FILES = [
56
56
  '.claude/agents/get-current-datetime.md',
57
57
  ]
58
58
 
59
- /** 角色资产 */
59
+ /** 角色资产(原生子代理:`.claude/agents/{name}.md`) */
60
60
  export const AGENT_ASSETS = {
61
61
  jarvis: {
62
62
  label: '贾维斯 (Jarvis) — 全栈开发工程师',
63
- dirs: ['.dev-agents/jarvis'],
64
- commands: ['.claude/commands/jarvis.md'],
63
+ agents: ['.claude/agents/jarvis.md'],
65
64
  skills: ['skills/jarvis'],
66
65
  },
67
66
  ella: {
68
67
  label: '艾拉 (Ella) — UI/UX 设计师',
69
- dirs: ['.dev-agents/ella'],
70
- commands: [
71
- '.claude/commands/ella.md',
72
- '.claude/commands/ella-design.md',
73
- '.claude/commands/ella-handoff.md',
74
- '.claude/commands/ella-prototype.md',
75
- '.claude/commands/ella-spec.md',
76
- '.claude/commands/ella-style.md',
77
- ],
68
+ agents: ['.claude/agents/ella.md'],
78
69
  skills: ['skills/ella'],
79
70
  },
80
71
  kyle: {
81
72
  label: '凯尔 (Kyle) — 质量保证工程师',
82
- dirs: ['.dev-agents/kyle'],
83
- commands: ['.claude/commands/kyle.md'],
73
+ agents: ['.claude/agents/kyle.md'],
84
74
  skills: ['skills/kyle'],
85
75
  },
86
76
  }
@@ -98,14 +88,9 @@ export const UPDATABLE_DIRS = [
98
88
 
99
89
  export const UPDATABLE_FILES = [
100
90
  '.claude/hooks.json',
101
- '.claude/commands/jarvis.md',
102
- '.claude/commands/ella.md',
103
- '.claude/commands/ella-design.md',
104
- '.claude/commands/ella-handoff.md',
105
- '.claude/commands/ella-prototype.md',
106
- '.claude/commands/ella-spec.md',
107
- '.claude/commands/ella-style.md',
108
- '.claude/commands/kyle.md',
91
+ '.claude/agents/jarvis.md',
92
+ '.claude/agents/ella.md',
93
+ '.claude/agents/kyle.md',
109
94
  '.claude/commands/init-project.md',
110
95
  '.claude/commands/git-commit.md',
111
96
  '.claude/agents/init-architect.md',
@@ -246,10 +231,7 @@ export function scaffold(pkgRoot, projectRoot, options = {}) {
246
231
  if (!agent) continue
247
232
  let agentCopied = 0
248
233
 
249
- for (const dir of agent.dirs) {
250
- agentCopied += copyDirRecursive(join(pkgRoot, dir), join(projectRoot, dir), { overwrite })
251
- }
252
- for (const file of agent.commands) {
234
+ for (const file of agent.agents) {
253
235
  const ok = copySingleFile(join(pkgRoot, file), join(projectRoot, file), overwrite)
254
236
  if (ok) agentCopied++
255
237
  }
@@ -278,18 +260,19 @@ export function scaffoldUpdate(pkgRoot, projectRoot) {
278
260
  }
279
261
  sections.push({ name: '工作流技能 + 传感器', count: totalCopied })
280
262
 
281
- // 更新命令文件(覆盖)
263
+ // 更新命令/子代理文件(覆盖)
282
264
  let cmdCopied = 0
283
265
  const config = readConfig(projectRoot)
284
266
  const agents = config?.agents || ['jarvis', 'ella', 'kyle']
267
+ const roleIds = new Set(['jarvis', 'ella', 'kyle'])
285
268
  for (const file of UPDATABLE_FILES) {
286
- // 只更新用户选择的角色的命令文件
287
- const agentId = file.match(/commands\/(\w+)\.md/)?.[1]
288
- if (agentId && !agents.includes(agentId)) continue
269
+ // 角色子代理文件:仅更新用户选中的角色
270
+ const m = file.match(/agents\/([\w-]+)\.md$/)
271
+ if (m && roleIds.has(m[1]) && !agents.includes(m[1])) continue
289
272
  const ok = copySingleFile(join(pkgRoot, file), join(projectRoot, file), true)
290
273
  if (ok) cmdCopied++
291
274
  }
292
- sections.push({ name: '命令文件', count: cmdCopied })
275
+ sections.push({ name: '命令/子代理文件', count: cmdCopied })
293
276
  totalCopied += cmdCopied
294
277
 
295
278
  return { totalCopied, sections }
@@ -19,15 +19,11 @@ ai-agent-workflowGroup/
19
19
  │ ├── QUALITY_SCORE.md # 质量评分追踪
20
20
  │ ├── tech-debt-tracker.md # 技术债追踪
21
21
  │ └── steering-loop.md # 转向循环机制
22
- ├── .dev-agents/ # Agent 角色与协作产物
23
- │ ├── ella/PERSONA.md # 艾拉(UI/UX 设计师)
24
- │ ├── jarvis/PERSONA.md # 贾维斯(全栈开发)
25
- │ ├── kyle/PERSONA.md # 凯尔(质量保障)
26
- │ └── shared/ # Agent 间协作产物
27
- │ ├── tasks/ # 实现计划
28
- │ ├── designs/ # 设计方案与设计稿
29
- │ ├── reviews/ # 审查报告
30
- │ └── templates/ # 文档模板
22
+ ├── .dev-agents/shared/ # Agent 间协作产物工作区
23
+ │ ├── tasks/ # 实现计划
24
+ │ ├── designs/ # 设计方案与设计稿
25
+ │ ├── reviews/ # 审查报告
26
+ │ └── templates/ # 文档模板
31
27
  ├── skills/ # 技能库
32
28
  │ ├── max/ # PM 技能
33
29
  │ │ ├── workflow/ # 工作流技能(8 阶段管道 + 横切技能)
@@ -44,7 +40,14 @@ ai-agent-workflowGroup/
44
40
  │ └── *.sh # 维护脚本
45
41
  └── .claude/ # Claude Code 配置
46
42
  ├── settings.json # 权限配置
47
- └── commands/ # 斜杠命令(/ella /jarvis /kyle)
43
+ ├── hooks.json # Hook 配置
44
+ ├── commands/ # 通用斜杠命令(/init-project /git-commit)
45
+ └── agents/ # 原生子代理定义
46
+ ├── ella.md # 艾拉(UI/UX 设计师)
47
+ ├── jarvis.md # 贾维斯(全栈开发)
48
+ ├── kyle.md # 凯尔(质量保障)
49
+ ├── init-architect.md # 项目初始化架构师
50
+ └── get-current-datetime.md
48
51
  ```
49
52
 
50
53
  ## 核心设计决策
@@ -4,7 +4,7 @@
4
4
 
5
5
  ```
6
6
  ❌ 角色切换(禁止):
7
- Max 在当前对话里读 PERSONA.md 然后"变成" Jarvis 写代码
7
+ Max 在当前对话里"变成" Jarvis 写代码
8
8
  → 这只是同一个 Claude 在角色扮演,没有上下文隔离
9
9
 
10
10
  ✅ Agent 工具派遣(正确):
@@ -16,41 +16,33 @@
16
16
 
17
17
  ## 团队成员
18
18
 
19
- | 成员 | 角色 | PERSONA | 派遣场景 |
20
- |------|------|---------|---------|
21
- | 艾拉 (Ella) | UI/UX 设计师 | `.dev-agents/ella/PERSONA.md` | 页面设计、交互原型、设计规范 |
22
- | 贾维斯 (Jarvis) | 全栈开发 | `.dev-agents/jarvis/PERSONA.md` | 前后端编码、技术方案、Bug 修复 |
23
- | 凯尔 (Kyle) | 质量保障 | `.dev-agents/kyle/PERSONA.md` | 代码审查、测试验证、安全审计 |
19
+ 三人已注册为 Claude Code **原生子代理**,定义文件位于 `.claude/agents/`:
24
20
 
25
- ## 派遣方式
21
+ | 成员 | 角色 | 原生子代理 | 派遣场景 |
22
+ |------|------|-----------|---------|
23
+ | 艾拉 (Ella) | UI/UX 设计师 | `.claude/agents/ella.md` | 页面设计、交互原型、设计规范 |
24
+ | 贾维斯 (Jarvis) | 全栈开发 | `.claude/agents/jarvis.md` | 前后端编码、技术方案、Bug 修复 |
25
+ | 凯尔 (Kyle) | 质量保障 | `.claude/agents/kyle.md` | 代码审查、测试验证、安全审计 |
26
26
 
27
- ### Max 主动派遣(正规流程)
27
+ ## 派遣方式
28
28
 
29
- Max 在工作流管道中驱动时,使用 **Agent 工具** 派遣子代理:
29
+ Max 在工作流管道中驱动时,使用 **Agent 工具的 `subagent_type` 参数** 派遣子代理。子代理定义文件里已包含角色身份、门控检查、技能加载规则和报告规范,无需在 prompt 里重复。
30
30
 
31
31
  ```
32
32
  Agent({
33
- description: "[角色]: [任务简述]",
33
+ subagent_type: "jarvis", // ella / jarvis / kyle
34
+ description: "Jarvis: 实现登录接口",
34
35
  prompt: "
35
- 先读取 `.dev-agents/[角色]/PERSONA.md` 了解你的角色。
36
-
37
- [前置门控检查]
38
36
  [任务全文]
39
- [上下文信息]
37
+ [上下文信息:设计文档路径、实现计划路径等]
40
38
  [完成标准]
41
39
  "
42
40
  })
43
41
  ```
44
42
 
45
- ### 用户直接派遣(快捷命令)
46
-
47
- 用户可以直接使用 `/jarvis`、`/ella`、`/kyle` 命令。这些命令会将任务注入当前对话。
48
-
49
- **注意**:`/jarvis` 等快捷命令是用户手动使用的。Max 在工作流中派遣时,必须使用 Agent 工具,不是 `/jarvis` 命令。
50
-
51
43
  ## 派遣铁律
52
44
 
53
- 1. **Agent 工具派遣** — Max 必须通过 Agent 工具创建隔离子代理
45
+ 1. **subagent_type 派遣** — Max 必须通过 `subagent_type` 参数指定角色,禁止用通用 Agent + 读 PERSONA 的老模式
54
46
  2. **单一职责** — 设计找艾拉、编码找贾维斯、审查找凯尔,不混派
55
47
  3. **可并行则并行** — 独立任务的 Agent 调用可以并行发起
56
48
  4. **管道顺序** — 需求收集 → 需求验证 → 方案设计 → 任务拆解 → 开发 → 测试验证 → 文档更新
@@ -63,9 +55,11 @@ Agent 之间不能直接通信。Max 负责在 Agent 工具的 prompt 中注入
63
55
 
64
56
  | 派遣对象 | prompt 必须注入的内容 |
65
57
  |---------|---------------------|
66
- | Jarvis(开发) | PERSONA 路径 + 门控检查 + 任务全文 + 设计文档路径 + 实现计划路径 |
67
- | Kyle(审查) | PERSONA 路径 + 门控检查 + 审查规格 + 代码文件路径 + 实现计划路径 |
68
- | Ella(设计) | PERSONA 路径 + 需求文档 + 现有设计规范 |
58
+ | Jarvis(开发) | 任务全文 + 设计文档路径 + 实现计划路径 |
59
+ | Kyle(审查) | 审查规格 + 代码文件路径 + 实现计划路径 |
60
+ | Ella(设计) | 需求文档 + 现有设计规范 |
61
+
62
+ > 门控检查、身份定义、技能加载由子代理自身执行,Max 不必重复注入。
69
63
 
70
64
  ## 产出规范
71
65
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "aigroup-workflow",
3
- "version": "1.2.5",
3
+ "version": "1.2.7",
4
4
  "description": "AI 团队协作框架 — 通过角色派遣、工作流管道和 Harness 传感器驱动 AI 协作开发",
5
5
  "type": "module",
6
6
  "bin": {