@zmice/zc 0.2.8 → 0.3.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.
Files changed (84) hide show
  1. package/README.md +430 -430
  2. package/dist/cli/__tests__/platform.test.js +89 -112
  3. package/dist/cli/__tests__/platform.test.js.map +1 -1
  4. package/dist/cli/__tests__/surface.test.js +1 -1
  5. package/dist/cli/__tests__/surface.test.js.map +1 -1
  6. package/dist/cli/platform.d.ts.map +1 -1
  7. package/dist/cli/platform.js +5 -62
  8. package/dist/cli/platform.js.map +1 -1
  9. package/dist/node_modules/@zmice/platform-core/dist/index.test.js +3 -5
  10. package/dist/node_modules/@zmice/platform-core/dist/index.test.js.map +1 -1
  11. package/dist/runtime/worktree-manager.js +2 -2
  12. package/dist/runtime/worktree-manager.js.map +1 -1
  13. package/dist/utils/install-target.test.js +2 -3
  14. package/dist/utils/install-target.test.js.map +1 -1
  15. package/dist/utils/qwen-extension-cli.d.ts.map +1 -1
  16. package/dist/utils/qwen-extension-cli.js +4 -4
  17. package/dist/utils/qwen-extension-cli.js.map +1 -1
  18. package/dist/utils/qwen-extension-cli.test.js +6 -9
  19. package/dist/utils/qwen-extension-cli.test.js.map +1 -1
  20. package/dist/utils/workspace.js +1 -1
  21. package/dist/utils/workspace.js.map +1 -1
  22. package/dist/utils/workspace.test.js +0 -14
  23. package/dist/utils/workspace.test.js.map +1 -1
  24. package/package.json +5 -5
  25. package/vendor/node_modules/@zmice/platform-core/dist/index.test.js +3 -5
  26. package/vendor/node_modules/@zmice/platform-core/dist/index.test.js.map +1 -1
  27. package/vendor/packages/platform-claude/dist/index.js +75 -75
  28. package/vendor/packages/platform-claude/dist/index.test.js +8 -11
  29. package/vendor/packages/platform-claude/dist/index.test.js.map +1 -1
  30. package/vendor/packages/platform-codex/dist/index.js +194 -194
  31. package/vendor/packages/platform-codex/dist/index.test.js +13 -16
  32. package/vendor/packages/platform-codex/dist/index.test.js.map +1 -1
  33. package/vendor/packages/platform-opencode/dist/index.js +75 -75
  34. package/vendor/packages/platform-opencode/dist/index.test.js +15 -19
  35. package/vendor/packages/platform-opencode/dist/index.test.js.map +1 -1
  36. package/vendor/packages/platform-qwen/dist/index.js +75 -75
  37. package/vendor/packages/platform-qwen/dist/index.test.js +7 -9
  38. package/vendor/packages/platform-qwen/dist/index.test.js.map +1 -1
  39. package/vendor/packages/toolkit/dist/content-lint.test.js +161 -1
  40. package/vendor/packages/toolkit/dist/content-lint.test.js.map +1 -1
  41. package/vendor/packages/toolkit/dist/lint/content-lint.d.ts.map +1 -1
  42. package/vendor/packages/toolkit/dist/lint/content-lint.js +183 -2
  43. package/vendor/packages/toolkit/dist/lint/content-lint.js.map +1 -1
  44. package/vendor/packages/toolkit/dist/manifests.test.js +9 -0
  45. package/vendor/packages/toolkit/dist/manifests.test.js.map +1 -1
  46. package/vendor/packages/toolkit/src/content/agents/architect/body.md +42 -42
  47. package/vendor/packages/toolkit/src/content/agents/code-reviewer/body.md +41 -41
  48. package/vendor/packages/toolkit/src/content/agents/product-owner/body.md +40 -40
  49. package/vendor/packages/toolkit/src/content/commands/plan-review/body.md +42 -31
  50. package/vendor/packages/toolkit/src/content/commands/start/body.md +236 -197
  51. package/vendor/packages/toolkit/src/content/commands/start/meta.yaml +55 -55
  52. package/vendor/packages/toolkit/src/content/skills/branch-finish-and-cleanup/body.md +172 -172
  53. package/vendor/packages/toolkit/src/content/skills/browser-qa-testing/body.md +111 -111
  54. package/vendor/packages/toolkit/src/content/skills/ci-cd-and-automation/body.md +86 -86
  55. package/vendor/packages/toolkit/src/content/skills/code-review-and-quality/body.md +140 -140
  56. package/vendor/packages/toolkit/src/content/skills/code-simplification/body.md +80 -80
  57. package/vendor/packages/toolkit/src/content/skills/context-engineering/body.md +67 -67
  58. package/vendor/packages/toolkit/src/content/skills/continuous-learning/body.md +102 -102
  59. package/vendor/packages/toolkit/src/content/skills/documentation-and-adrs/body.md +8 -6
  60. package/vendor/packages/toolkit/src/content/skills/engineering-principles/body.md +10 -5
  61. package/vendor/packages/toolkit/src/content/skills/git-workflow-and-versioning/body.md +9 -9
  62. package/vendor/packages/toolkit/src/content/skills/multi-perspective-review/body.md +129 -81
  63. package/vendor/packages/toolkit/src/content/skills/parallel-agent-dispatch/body.md +143 -113
  64. package/vendor/packages/toolkit/src/content/skills/performance-optimization/body.md +75 -75
  65. package/vendor/packages/toolkit/src/content/skills/planning-and-task-breakdown/body.md +162 -83
  66. package/vendor/packages/toolkit/src/content/skills/sdd-tdd-workflow/body.md +130 -95
  67. package/vendor/packages/toolkit/src/content/skills/sprint-retrospective/body.md +99 -99
  68. package/vendor/packages/toolkit/src/content/skills/subagent-driven-development/body.md +49 -7
  69. package/vendor/packages/toolkit/src/content/skills/team-orchestration/body.md +133 -126
  70. package/vendor/packages/toolkit/src/content/skills/test-driven-development/body.md +78 -78
  71. package/vendor/packages/toolkit/src/content/skills/using-agent-skills/body.md +193 -193
  72. package/vendor/references/upstreams.yaml +94 -94
  73. package/dist/cli/setup.d.ts +0 -3
  74. package/dist/cli/setup.d.ts.map +0 -1
  75. package/dist/cli/setup.js +0 -41
  76. package/dist/cli/setup.js.map +0 -1
  77. package/dist/utils/codex-config-merge.d.ts +0 -3
  78. package/dist/utils/codex-config-merge.d.ts.map +0 -1
  79. package/dist/utils/codex-config-merge.js +0 -43
  80. package/dist/utils/codex-config-merge.js.map +0 -1
  81. package/dist/utils/codex-config-merge.test.d.ts +0 -2
  82. package/dist/utils/codex-config-merge.test.d.ts.map +0 -1
  83. package/dist/utils/codex-config-merge.test.js +0 -64
  84. package/dist/utils/codex-config-merge.test.js.map +0 -1
@@ -1,81 +1,129 @@
1
- # 多视角评审
2
-
3
- ## 何时使用
4
-
5
- - Spec 或 Plan 写完、实现还没开始时
6
- - 架构决策牵涉产品、工程、设计和开发体验多个面向时
7
- - 团队觉得方案“好像没问题”,但还没经过压力测试时
8
- - 需要尽早发现范围、体验或维护性盲区时
9
-
10
- ## 输入前提
11
-
12
- - 已有可评审的规格、计划或方案草案
13
- - 愿意在实现前先暴露问题
14
- - 接受同一个方案需要经过多种视角拷问
15
- - 明确这里评审的是“计划态假设”,不是实现后的真实走查
16
-
17
- ## 执行步骤
18
-
19
- 1. 用 **产品视角** 检查是否在解决正确问题
20
- 2. 用 **工程视角** 检查架构、数据流、状态、失败模式、边界条件、性能和测试策略
21
- 3. 用 **设计视角** 检查交互、可用性、响应式和无障碍
22
- 4. 用 **DevEx 视角** 检查计划中的集成成本、配置复杂度、文档前提、学习曲线和维护负担
23
- 5. 把四个视角发现的问题改写成可执行的修订项、约束或验收标准
24
- 6. 汇总结论,明确需要修订的点,再决定是否进入实现
25
-
26
- ## 评审产物
27
-
28
- 评审结果必须能回写到 plan / spec,而不是只形成聊天意见:
29
-
30
- - `GO / REVISE / NO-GO` 结论
31
- - 分级发现:`Critical / Warning / Suggestion`
32
- - 每条发现对应的证据、影响和修订动作
33
- - 对应的验收标准或验证命令
34
- - 如果需要提问,最多 1-3 个会改变方案的关键问题
35
-
36
- ## 推荐结论格式
37
-
38
- 最终结论必须包含明确推荐和取舍:
39
-
40
- ```text
41
- Recommendation: <GO / REVISE / NO-GO + next action> because <specific cross-perspective trade-off>.
42
- ```
43
-
44
- 推荐理由至少说明:
45
-
46
- - 哪个视角的证据最关键
47
- - 放弃了什么替代方案
48
- - 接受了什么代价或风险
49
- - 下一步用什么验证或修订来收敛
50
-
51
- 如果需要提问,每个问题都要说明它会解锁哪个决策,避免只收集背景信息。
52
-
53
- ## 边界说明
54
-
55
- - 这里的 DevEx 只评估“实现前是否想清楚”,不替代实现后的真实安装和上手走查
56
- - 如果代码已经落地,需要确认 getting started、安装链和首次成功路径是否真的成立,转到 `developer-experience-audit`
57
- - 不要把这里当成发布前体验签收清单;它的价值是提前暴露盲点,而不是事后补测
58
- - 不引入重型运行时、遥测、自动升级或跨会话记忆作为评审前提;这些只能作为显式 opt-in 的后续能力讨论
59
-
60
- ## 成功标准
61
-
62
- - 方案不再只从工程角度自证合理
63
- - 关键风险能在写代码前暴露
64
- - 每个视角都有具体 concern,而不是泛泛评价
65
- - DevEx 问题被表达为计划假设、约束或验收条件,而不是模糊感受
66
- - 最终结论可以明确是 `GO / REVISE / NO-GO`
67
- - 评审输出能直接变成 plan 修订、任务依赖或验证门禁
68
-
69
- ## 相关原则
70
-
71
- - 越早发现问题,修复成本越低
72
- - 单一视角的“没问题”不算通过
73
- - 评审输出必须能转化为具体修订动作
74
- - 计划态评审与实现后实测必须分相位处理
75
-
76
- ## 与其他技能的衔接
77
-
78
- - 常接在 `spec-driven-development` `planning-and-task-breakdown` 之后
79
- - 评审通过后再进入 `incremental-implementation`
80
- - 实现完成后,如需验证 DevEx 假设是否成立,继续进入 `developer-experience-audit`
81
- - 产品或架构争议较大时,可结合 `product-owner` 和 `architect`
1
+ # 多视角评审
2
+
3
+ ## 何时使用
4
+
5
+ - Spec 或 Plan 写完、实现还没开始时
6
+ - 架构决策牵涉产品、工程、设计和开发体验多个面向时
7
+ - 团队觉得方案“好像没问题”,但还没经过压力测试时
8
+ - 需要尽早发现范围、体验或维护性盲区时
9
+
10
+ ## 输入前提
11
+
12
+ - 已有可评审的规格、计划或方案草案
13
+ - 愿意在实现前先暴露问题
14
+ - 接受同一个方案需要经过多种视角拷问
15
+ - 明确这里评审的是“计划态假设”,不是实现后的真实走查
16
+
17
+ ## 执行步骤
18
+
19
+ 1. 用 **产品视角** 检查是否在解决正确问题
20
+ 2. 用 **工程视角** 检查架构、数据流、状态、失败模式、边界条件、性能和测试策略
21
+ 3. 用 **设计视角** 检查交互、可用性、响应式和无障碍
22
+ 4. 用 **DevEx 视角** 检查计划中的集成成本、配置复杂度、文档前提、学习曲线和维护负担
23
+ 5. 把四个视角发现的问题改写成可执行的修订项、约束或验收标准
24
+ 6. 对会改变路线的发现触发 `stop gate`,先收敛决策,不把问题静默写进计划后继续
25
+ 7. 输出 `Implementation Tasks`,把需要修订的发现转成可执行任务
26
+ 8. 汇总结论,明确需要修订的点,再决定是否进入实现
27
+
28
+ ## 评审产物
29
+
30
+ 评审结果必须能回写到 plan / spec,而不是只形成聊天意见:
31
+
32
+ - `GO / REVISE / NO-GO` 结论
33
+ - 分级发现:`Critical / Warning / Suggestion`
34
+ - 每条发现对应的证据、影响和修订动作
35
+ - 对应的验收标准或验证命令
36
+ - 会改变路线的 stop gate 决策及当前状态
37
+ - `Implementation Tasks`:每条待修问题对应的 P1/P2/P3 任务
38
+ - 如果需要提问,最多 1-3 个会改变方案的关键问题
39
+
40
+ ## 推荐结论格式
41
+
42
+ 最终结论必须包含明确推荐和取舍:
43
+
44
+ ```text
45
+ Recommendation: <GO / REVISE / NO-GO + next action> because <specific cross-perspective trade-off>.
46
+ ```
47
+
48
+ 推荐理由至少说明:
49
+
50
+ - 哪个视角的证据最关键
51
+ - 放弃了什么替代方案
52
+ - 接受了什么代价或风险
53
+ - 下一步用什么验证或修订来收敛
54
+
55
+ 如果需要提问,每个问题都要说明它会解锁哪个决策,避免只收集背景信息。
56
+
57
+ ## Stop Gate
58
+
59
+ 以下情况不能直接给 `GO`:
60
+
61
+ - Critical 发现会改变架构、数据模型、权限、破坏性操作或用户可见承诺
62
+ - 不同视角的结论互相冲突,且会改变任务顺序或验收标准
63
+ - 计划缺少关键验证方式,导致实现完成后无法判定是否通过
64
+ - 发现明显过度设计,但当前计划仍按高复杂度方案推进
65
+
66
+ Stop gate 输出:
67
+
68
+ ```text
69
+ STOP: <route-changing finding>
70
+ - Perspective:
71
+ - Evidence:
72
+ - Impact:
73
+ - Options:
74
+ - Recommendation:
75
+ - Required decision or assumption:
76
+ ```
77
+
78
+ 如果用户已给出偏好,写成 `Assumption` 并继续;否则先提问。不要把 stop gate 伪装成普通 Suggestion。
79
+
80
+ ## Implementation Tasks
81
+
82
+ 评审发现必须能转成 plan 可吸收的任务:
83
+
84
+ ```text
85
+ ### Implementation Tasks
86
+ - [ ] T1 (P1) — <component> — <imperative title>
87
+ - Surfaced by: <perspective> — <specific finding>
88
+ - Files likely touched:
89
+ - Acceptance criteria:
90
+ - Verification:
91
+ ```
92
+
93
+ 规则:
94
+
95
+ - P1 阻塞进入实现或合并
96
+ - P2 应进入当前计划
97
+ - P3 可以作为 follow-up,但要说明不阻塞的理由
98
+ - 没有 actionable task 的发现,要明确写 `_No implementation task; informational only._`
99
+
100
+ ## 边界说明
101
+
102
+ - 这里的 DevEx 只评估“实现前是否想清楚”,不替代实现后的真实安装和上手走查
103
+ - 如果代码已经落地,需要确认 getting started、安装链和首次成功路径是否真的成立,转到 `developer-experience-audit`
104
+ - 不要把这里当成发布前体验签收清单;它的价值是提前暴露盲点,而不是事后补测
105
+ - 不引入重型运行时、遥测、自动升级或跨会话记忆作为评审前提;这些只能作为显式 opt-in 的后续能力讨论
106
+
107
+ ## 成功标准
108
+
109
+ - 方案不再只从工程角度自证合理
110
+ - 关键风险能在写代码前暴露
111
+ - 每个视角都有具体 concern,而不是泛泛评价
112
+ - DevEx 问题被表达为计划假设、约束或验收条件,而不是模糊感受
113
+ - 最终结论可以明确是 `GO / REVISE / NO-GO`
114
+ - 评审输出能直接变成 plan 修订、任务依赖或验证门禁
115
+ - Critical 或 route-changing 发现没有被跳过;要么进入 stop gate,要么转成 P1 任务
116
+
117
+ ## 相关原则
118
+
119
+ - 越早发现问题,修复成本越低
120
+ - 单一视角的“没问题”不算通过
121
+ - 评审输出必须能转化为具体修订动作
122
+ - 计划态评审与实现后实测必须分相位处理
123
+
124
+ ## 与其他技能的衔接
125
+
126
+ - 常接在 `spec-driven-development` 或 `planning-and-task-breakdown` 之后
127
+ - 评审通过后再进入 `incremental-implementation`
128
+ - 实现完成后,如需验证 DevEx 假设是否成立,继续进入 `developer-experience-audit`
129
+ - 产品或架构争议较大时,可结合 `product-owner` 和 `architect`
@@ -1,113 +1,143 @@
1
- # Parallel Agent Dispatch
2
-
3
- ## 角色定位
4
-
5
- 在用户明确允许多 agent / 并行 / team 模式时,把彼此独立的任务做上下文级 fan-out,并在结束时做 fan-in、冲突检测和集成验证。
6
-
7
- 这个 skill 不是默认加速器。能并行不等于应该并行;并行会增加 token、延迟、集成和验证成本。
8
-
9
- ## 快速路径
10
-
11
- 1. 读取计划,列出所有任务、依赖和预计触达文件。
12
- 2. 判断任务是否彼此独立,是否有清晰文件所有权。
13
- 3. 给出并行推荐,但在用户明确确认前不启动子代理。
14
- 4. 为每个 worker 分配唯一责任范围、允许修改文件和验证命令。
15
- 5. fan-out 执行,期间不让多个 worker 修改同一文件。
16
- 6. fan-in 汇总,检查 diff、冲突、接口一致性和测试结果。
17
- 7. 记录验收 transcript:谁做了什么、证据是什么、还有什么风险。
18
-
19
- ## 使用条件
20
-
21
- 适用:
22
-
23
- - 多个任务互不依赖。
24
- - 每个任务能在独立上下文中完成。
25
- - 文件所有权可以提前划清。
26
- - fan-in 后有集成测试或人工审查门禁。
27
-
28
- 不适用:
29
-
30
- - 任务依赖同一个未完成设计。
31
- - 多个任务必须改同一文件。
32
- - 缺少测试或集成验证方式。
33
- - 用户没有明确授权并行。
34
-
35
- ## 模式选择
36
-
37
- | 模式 | 适用场景 | 代价 |
38
- |---|---|---|
39
- | Context Fan-Out | 只需要多个子代理分别分析或修改互不重叠文件 | 共享同一 worktree,fan-in 需谨慎检查 |
40
- | Worktree Parallel | 任务可能触及相邻区域,或需要独立构建环境 | 需要分支和 worktree 清理 |
41
- | Cascade | 任务有层级依赖,但每层内可并行 | 每层都要验证后再进下一层 |
42
- | Team Orchestration | 需要 tmux + git worktree + 多 CLI worker | 运行时成本最高,需 `zc team` 收尾 |
43
-
44
- 如果需要文件系统级隔离,切到 `team-orchestration`;不要在本 skill 内展开完整 `zc team` 教程。
45
-
46
- ## 授权提示
47
-
48
- 启动前必须给用户看到这段信息的等价内容:
49
-
50
- ```text
51
- Recommendation: 开启 <模式> because <并行收益> outweighs <集成代价>。
52
- - worker 数:
53
- - 文件所有权:
54
- - 不并行的替代方案:
55
- - fan-in 验证:
56
-
57
- 确认后我再启动;不确认则按串行推进。
58
- ```
59
-
60
- ## Worker 合约
61
-
62
- 每个子代理都必须收到:
63
-
64
- - 任务目标和验收标准
65
- - 允许读取的关键上下文
66
- - 允许修改的文件或模块边界
67
- - 不得触碰其他 worker 文件的说明
68
- - 任务内验证命令
69
- - 返回格式:`DONE / BLOCKED / NEEDS_CONTEXT`
70
-
71
- 返回时必须列出:
72
-
73
- - 修改文件
74
- - 已运行验证
75
- - 未覆盖风险
76
- - 需要主线程 fan-in 的事项
77
-
78
- ## Fan-In 门禁
79
-
80
- 并行完成不等于任务完成。fan-in 必须检查:
81
-
82
- - 所有子代理结果是否到齐。
83
- - 是否出现同文件修改、命名冲突或接口冲突。
84
- - 局部验证是否可信。
85
- - 主线程是否运行集成测试或目标平台验证。
86
- - 是否需要清理分支、worktree、临时文件或保留待审查分支。
87
-
88
- 推荐记录格式:
89
-
90
- ```text
91
- Parallel acceptance transcript:
92
- - Plan:
93
- - Workers:
94
- - Files:
95
- - Results:
96
- - Verification:
97
- - Conflicts:
98
- - Follow-up:
99
- ```
100
-
101
- ## 失败处理
102
-
103
- - 单个 worker 失败时,不要自动丢弃其他成功结果。
104
- - 先收集成功结果,再判断是否可以部分合入。
105
- - 失败任务优先缩小范围、补上下文或改为串行处理。
106
- - 如果失败暴露计划不成立,回到 `planning-and-task-breakdown`。
107
-
108
- ## 与相关技能的边界
109
-
110
- - `subagent-driven-development`:串行委派,不做并行 fan-out。
111
- - `team-orchestration`:进程级 + 文件系统级隔离。
112
- - `branch-finish-and-cleanup`:fan-in 后处理分支、worktree 和残留状态。
113
- - `verification-before-completion`:声明完成前读取验证输出。
1
+ # Parallel Agent Dispatch
2
+
3
+ ## 角色定位
4
+
5
+ 把彼此独立的任务做上下文级 fan-out,并在结束时做 fan-in、冲突检测和集成验证。只读 fan-out 只有在用户已授权本会话或项目默认启用只读 agent 时,才可通知式启动;写入型 fan-out 必须先确认文件所有权、验证命令和 fan-in gate。
6
+
7
+ 这个 skill 不是默认加速器。能并行不等于应该并行;并行会增加 token、延迟、集成和验证成本。
8
+
9
+ ## 快速路径
10
+
11
+ 1. 读取计划,列出所有任务、依赖和预计触达文件。
12
+ 2. 判断任务是否彼此独立,是否有清晰文件所有权。
13
+ 3. 区分只读通知式 fan-out 和写入确认式 fan-out。
14
+ 4. 为每个 worker 分配唯一责任范围、允许读取或修改的边界和验证命令。
15
+ 5. fan-out 执行,期间不让多个写入 worker 修改同一文件。
16
+ 6. fan-in 汇总,检查 diff、冲突、接口一致性、review finding 和回归结果。
17
+ 7. 记录验收 transcript:谁做了什么、谁提出了什么、谁修复了什么、谁回归了什么、证据是什么、还有什么风险。
18
+
19
+ ## 使用条件
20
+
21
+ 适用:
22
+
23
+ - 多个任务互不依赖。
24
+ - 每个任务能在独立上下文中完成。
25
+ - 写入任务的文件所有权可以提前划清,或只读任务有明确问题边界。
26
+ - fan-in 后有集成测试或人工审查门禁。
27
+
28
+ 不适用:
29
+
30
+ - 任务依赖同一个未完成设计。
31
+ - 多个任务必须改同一文件。
32
+ - 缺少测试或集成验证方式。
33
+ - 写入型并行没有用户确认。
34
+
35
+ ## 模式选择
36
+
37
+ | 模式 | 适用场景 | 代价 |
38
+ |---|---|---|
39
+ | Readonly Consult | 多个只读 agent 分别评估架构、测试、安全、性能、产品或 review 风险 | 需要主线程判断哪些结论成立 |
40
+ | Context Fan-Out | 只需要多个子代理分别分析或修改互不重叠文件 | 共享同一 worktree,fan-in 需谨慎检查 |
41
+ | Worktree Parallel | 任务可能触及相邻区域,或需要独立构建环境 | 需要分支和 worktree 清理 |
42
+ | Cascade | 任务有层级依赖,但每层内可并行 | 每层都要验证后再进下一层 |
43
+ | Team Orchestration | 需要 tmux + git worktree + 多 CLI worker | 运行时成本最高,需 `zc team` 收尾 |
44
+
45
+ 如果需要文件系统级隔离,切到 `team-orchestration`;不要在本 skill 内展开完整 `zc team` 教程。
46
+
47
+ ## 通知与授权
48
+
49
+ 只读 fan-out 在已授权时使用通知式提示:
50
+
51
+ ```text
52
+ Agent assist:
53
+ - <agent>:只读评估 <范围>,不改文件
54
+ fan-in:主线程汇总结论后再决定是否改代码
55
+ ```
56
+
57
+ 如果当前会话或项目没有只读 agent 默认授权,只输出上面的 `Agent assist` 预告并等待确认。
58
+
59
+ 写入型 fan-out 启动前必须给用户看到这段信息的等价内容:
60
+
61
+ ```text
62
+ Recommendation: 开启 <模式> because <并行收益> outweighs <集成代价>。
63
+ - worker 数:
64
+ - 文件所有权:
65
+ - 不并行的替代方案:
66
+ - fan-in 验证:
67
+
68
+ 确认后我再启动;不确认则按串行推进。
69
+ ```
70
+
71
+ 默认上限:
72
+
73
+ - 普通复杂任务最多 1 个只读 agent。
74
+ - 跨模块或高风险任务最多 2 个只读 agent。
75
+ - 写入型并行默认最多 2 个 worker。
76
+ - 超过 2 个 worker 必须说明收益和 fan-in 成本。
77
+ - `zc team` 必须用户明确要求或确认。
78
+
79
+ ## Worker 合约
80
+
81
+ 每个子代理都必须收到:
82
+
83
+ - 任务目标和验收标准
84
+ - 允许读取的关键上下文
85
+ - 允许修改的文件或模块边界;只读 worker 必须明确“不改文件”
86
+ - 不得触碰其他 worker 文件的说明
87
+ - 任务内验证命令
88
+ - 返回格式:`DONE / BLOCKED / NEEDS_CONTEXT`
89
+
90
+ 返回时必须列出:
91
+
92
+ - 修改文件
93
+ - 已运行验证
94
+ - 提出的 findings 或回归结论
95
+ - 未覆盖风险
96
+ - 需要主线程 fan-in 的事项
97
+
98
+ ## Fan-In 门禁
99
+
100
+ 并行完成不等于任务完成。fan-in 必须检查:
101
+
102
+ - 所有子代理结果是否到齐。
103
+ - 是否出现同文件修改、命名冲突或接口冲突。
104
+ - 局部验证是否可信。
105
+ - review finding 是否由提出方完成回归。
106
+ - 主线程是否运行集成测试或目标平台验证。
107
+ - 是否需要清理分支、worktree、临时文件或保留待审查分支。
108
+
109
+ 闭环所有权:
110
+
111
+ - `producer owns fix`:谁引入问题,谁优先修复。
112
+ - `reviewer owns regression`:谁提出问题,谁负责复验原 finding 是否关闭。
113
+ - `controller owns fan-in`:主线程负责接受、转派、整合和最终验证。
114
+
115
+ 推荐记录格式:
116
+
117
+ ```text
118
+ Parallel acceptance transcript:
119
+ - Plan:
120
+ - Workers:
121
+ - Files:
122
+ - Findings:
123
+ - Fixes:
124
+ - Regression:
125
+ - Results:
126
+ - Verification:
127
+ - Conflicts:
128
+ - Follow-up:
129
+ ```
130
+
131
+ ## 失败处理
132
+
133
+ - 单个 worker 失败时,不要自动丢弃其他成功结果。
134
+ - 先收集成功结果,再判断是否可以部分合入。
135
+ - 失败任务优先缩小范围、补上下文或改为串行处理。
136
+ - 如果失败暴露计划不成立,回到 `planning-and-task-breakdown`。
137
+
138
+ ## 与相关技能的边界
139
+
140
+ - `subagent-driven-development`:串行委派,不做并行 fan-out。
141
+ - `team-orchestration`:进程级 + 文件系统级隔离。
142
+ - `branch-finish-and-cleanup`:fan-in 后处理分支、worktree 和残留状态。
143
+ - `verification-before-completion`:声明完成前读取验证输出。
@@ -1,75 +1,75 @@
1
- # Performance Optimization
2
-
3
- ## 角色定位
4
-
5
- 性能优化必须从测量开始。这个 skill 用于定位真实瓶颈、做最小修复、再次测量,并补回归保护;不用于凭感觉提前复杂化实现。
6
-
7
- ## 何时使用
8
-
9
- - 规格里有明确性能目标或预算。
10
- - 用户、监控或日志报告慢。
11
- - Core Web Vitals、接口延迟、吞吐、内存或 CPU 有异常。
12
- - 怀疑一次变更造成性能回归。
13
- - 功能会处理大数据量、高并发或关键首屏路径。
14
-
15
- 不适用:没有性能证据,只是担心未来可能慢。
16
-
17
- ## 快速路径
18
-
19
- 1. 写清性能症状和目标指标。
20
- 2. 建立 baseline:真实数据或可复现 synthetic 测量。
21
- 3. 定位瓶颈:前端、后端、数据库、网络、渲染、内存或外部依赖。
22
- 4. 只修当前证据指向的瓶颈。
23
- 5. 再次测量,确认指标改善。
24
- 6. 评估复杂度代价,避免为了小收益引入长期维护成本。
25
- 7. 加 guard:监控、benchmark、预算或回归测试。
26
-
27
- ## 指标选择
28
-
29
- | 场景 | 优先指标 |
30
- |---|---|
31
- | 首屏慢 | LCP、TTFB、bundle size、network waterfall |
32
- | 交互卡顿 | INP、long task、render count、main thread profile |
33
- | 布局跳动 | CLS、图片尺寸、字体加载、late content |
34
- | API 慢 | p95/p99 latency、query time、cache hit、payload size |
35
- | 资源异常 | CPU、memory、GC、connection pool、queue depth |
36
-
37
- 默认使用能复现症状的最小指标。不要同时优化所有指标。
38
-
39
- ## 常见定位方向
40
-
41
- - 前端首屏:大图片、render-blocking CSS/JS、bundle 过大、慢 TTFB。
42
- - 前端交互:长任务、重复渲染、过大 DOM、同步计算。
43
- - 数据加载:瀑布请求、N+1、过大 payload、缺少分页。
44
- - 后端接口:缺索引、锁等待、连接池耗尽、重复计算。
45
- - 内存/CPU:无界缓存、泄漏、正则回溯、同步重计算。
46
-
47
- ## 修复纪律
48
-
49
- - 先证明瓶颈,再改代码。
50
- - 一次只优化一个瓶颈。
51
- - 保留 before / after 数字。
52
- - 小收益大复杂度的优化要默认拒绝。
53
- - 性能关键路径改动要补 benchmark、监控或预算门禁。
54
-
55
- ## 输出契约
56
-
57
- ```text
58
- Performance evidence:
59
- - Symptom:
60
- - Target:
61
- - Baseline:
62
- - Bottleneck:
63
- - Change:
64
- - After:
65
- - Regression guard:
66
- - Trade-off:
67
- ```
68
-
69
- 推荐结论:
70
-
71
- ```text
72
- Recommendation: <optimize / monitor / defer / revert> because <baseline, measured impact, complexity cost, and rejected alternative>.
73
- ```
74
-
75
- 没有 baseline 和 after 数据,不要声明性能优化成立。
1
+ # Performance Optimization
2
+
3
+ ## 角色定位
4
+
5
+ 性能优化必须从测量开始。这个 skill 用于定位真实瓶颈、做最小修复、再次测量,并补回归保护;不用于凭感觉提前复杂化实现。
6
+
7
+ ## 何时使用
8
+
9
+ - 规格里有明确性能目标或预算。
10
+ - 用户、监控或日志报告慢。
11
+ - Core Web Vitals、接口延迟、吞吐、内存或 CPU 有异常。
12
+ - 怀疑一次变更造成性能回归。
13
+ - 功能会处理大数据量、高并发或关键首屏路径。
14
+
15
+ 不适用:没有性能证据,只是担心未来可能慢。
16
+
17
+ ## 快速路径
18
+
19
+ 1. 写清性能症状和目标指标。
20
+ 2. 建立 baseline:真实数据或可复现 synthetic 测量。
21
+ 3. 定位瓶颈:前端、后端、数据库、网络、渲染、内存或外部依赖。
22
+ 4. 只修当前证据指向的瓶颈。
23
+ 5. 再次测量,确认指标改善。
24
+ 6. 评估复杂度代价,避免为了小收益引入长期维护成本。
25
+ 7. 加 guard:监控、benchmark、预算或回归测试。
26
+
27
+ ## 指标选择
28
+
29
+ | 场景 | 优先指标 |
30
+ |---|---|
31
+ | 首屏慢 | LCP、TTFB、bundle size、network waterfall |
32
+ | 交互卡顿 | INP、long task、render count、main thread profile |
33
+ | 布局跳动 | CLS、图片尺寸、字体加载、late content |
34
+ | API 慢 | p95/p99 latency、query time、cache hit、payload size |
35
+ | 资源异常 | CPU、memory、GC、connection pool、queue depth |
36
+
37
+ 默认使用能复现症状的最小指标。不要同时优化所有指标。
38
+
39
+ ## 常见定位方向
40
+
41
+ - 前端首屏:大图片、render-blocking CSS/JS、bundle 过大、慢 TTFB。
42
+ - 前端交互:长任务、重复渲染、过大 DOM、同步计算。
43
+ - 数据加载:瀑布请求、N+1、过大 payload、缺少分页。
44
+ - 后端接口:缺索引、锁等待、连接池耗尽、重复计算。
45
+ - 内存/CPU:无界缓存、泄漏、正则回溯、同步重计算。
46
+
47
+ ## 修复纪律
48
+
49
+ - 先证明瓶颈,再改代码。
50
+ - 一次只优化一个瓶颈。
51
+ - 保留 before / after 数字。
52
+ - 小收益大复杂度的优化要默认拒绝。
53
+ - 性能关键路径改动要补 benchmark、监控或预算门禁。
54
+
55
+ ## 输出契约
56
+
57
+ ```text
58
+ Performance evidence:
59
+ - Symptom:
60
+ - Target:
61
+ - Baseline:
62
+ - Bottleneck:
63
+ - Change:
64
+ - After:
65
+ - Regression guard:
66
+ - Trade-off:
67
+ ```
68
+
69
+ 推荐结论:
70
+
71
+ ```text
72
+ Recommendation: <optimize / monitor / defer / revert> because <baseline, measured impact, complexity cost, and rejected alternative>.
73
+ ```
74
+
75
+ 没有 baseline 和 after 数据,不要声明性能优化成立。