helloagents 3.0.33 → 3.0.35
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-plugin/plugin.json +2 -2
- package/.codex-plugin/plugin.json +3 -4
- package/README.md +70 -71
- package/README_CN.md +70 -71
- package/bootstrap-lite.md +9 -11
- package/bootstrap.md +21 -23
- package/gemini-extension.json +1 -1
- package/install.ps1 +21 -3
- package/install.sh +19 -2
- package/package.json +2 -2
- package/scripts/capability-registry.mjs +5 -3
- package/scripts/cli-doctor-codex.mjs +150 -1
- package/scripts/cli-doctor-render.mjs +2 -1
- package/scripts/cli-lifecycle-hosts.mjs +76 -34
- package/scripts/cli-lifecycle.mjs +50 -15
- package/scripts/cli-messages.mjs +5 -5
- package/scripts/delivery-gate-messages.mjs +5 -4
- package/scripts/delivery-gate.mjs +11 -22
- package/scripts/guard.mjs +1 -1
- package/scripts/notify-closeout.mjs +61 -22
- package/scripts/notify-context.mjs +5 -5
- package/scripts/notify-route.mjs +1 -1
- package/scripts/notify.mjs +2 -2
- package/scripts/plan-contract.mjs +10 -14
- package/scripts/project-session-cleanup.mjs +45 -31
- package/scripts/qa-review-state.mjs +313 -0
- package/scripts/ralph-loop.mjs +32 -13
- package/scripts/runtime-scope.mjs +1 -3
- package/scripts/session-capsule.mjs +51 -13
- package/scripts/state-document.mjs +77 -0
- package/scripts/workflow-core.mjs +13 -19
- package/scripts/workflow-plan-files.mjs +1 -1
- package/scripts/workflow-recommendation.mjs +55 -67
- package/scripts/workflow-state.mjs +8 -8
- package/skills/commands/auto/SKILL.md +12 -12
- package/skills/commands/build/SKILL.md +9 -10
- package/skills/commands/commit/SKILL.md +1 -1
- package/skills/commands/help/SKILL.md +11 -13
- package/skills/commands/init/SKILL.md +18 -9
- package/skills/commands/loop/SKILL.md +70 -96
- package/skills/commands/plan/SKILL.md +7 -8
- package/skills/commands/prd/SKILL.md +3 -3
- package/skills/commands/qa/SKILL.md +49 -0
- package/skills/hello-ui/SKILL.md +3 -3
- package/skills/helloagents/SKILL.md +11 -14
- package/skills/qa-review/SKILL.md +92 -0
- package/templates/plans/contract.json +4 -7
- package/templates/plans/plan.md +1 -1
- package/templates/plans/tasks.md +1 -1
- package/templates/verify.yaml +1 -1
- package/scripts/review-state.mjs +0 -193
- package/scripts/verify-state.mjs +0 -175
- package/skills/commands/global/SKILL.md +0 -71
- package/skills/commands/verify/SKILL.md +0 -46
- package/skills/commands/wiki/SKILL.md +0 -57
- package/skills/hello-review/SKILL.md +0 -42
- package/skills/hello-verify/SKILL.md +0 -144
|
@@ -1,144 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: hello-verify
|
|
3
|
-
description: 声称工作完成前、提交代码前、创建 PR 前、报告任务完成前使用。确保验证命令已运行并检查输出后才能声称成功。
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
声称完成之前,必须有验证证据。
|
|
7
|
-
`.helloagents/` 在本 skill 中统一按项目级存储路径理解:交付证据写入当前 `state_path` 所在目录下的 `artifacts/*.json`;若 `project_store_mode=repo-shared`,`verify.yaml`、方案包与 `DESIGN.md` 按当前上下文中已注入的项目知识/方案目录解析。
|
|
8
|
-
|
|
9
|
-
## 铁律
|
|
10
|
-
|
|
11
|
-
没有运行验证命令 = 不能说"完成"、"通过"、"已修复"。
|
|
12
|
-
没有看到验证输出 = 不能声称结果。
|
|
13
|
-
|
|
14
|
-
## 验证循环
|
|
15
|
-
|
|
16
|
-
验证不是一次性操作,而是循环直到通过:
|
|
17
|
-
|
|
18
|
-
```
|
|
19
|
-
任务完成
|
|
20
|
-
↓
|
|
21
|
-
运行验证命令(lint/test/build/typecheck)
|
|
22
|
-
↓
|
|
23
|
-
全部通过?
|
|
24
|
-
├─ 是 → 收集已激活技能的交付检查清单 → 逐项确认 → 报告完成
|
|
25
|
-
└─ 否 → 反思 → 修复 → 重新运行验证(回到循环开头)
|
|
26
|
-
```
|
|
27
|
-
|
|
28
|
-
这个循环没有上限。验证失败就修复,修复后再验证,直到全部通过。
|
|
29
|
-
不允许在验证失败的状态下报告完成或询问用户是否跳过。
|
|
30
|
-
|
|
31
|
-
## 反思(验证失败时必须执行)
|
|
32
|
-
|
|
33
|
-
验证失败后,禁止跳过反思直接改代码。必须先回答:
|
|
34
|
-
1. 失败的根本原因是什么?
|
|
35
|
-
2. 之前的实现遗漏了什么?
|
|
36
|
-
3. 修复方案是什么?会不会引入新问题?
|
|
37
|
-
|
|
38
|
-
### 断路器
|
|
39
|
-
连续 3 次以上验证失败 → 激活 hello-debug 的卡住升级机制。
|
|
40
|
-
|
|
41
|
-
### 进展检测
|
|
42
|
-
声称任务完成时,必须有实际文件变更。如果 git diff 为空(没有任何文件变更),不能声称完成了产出文件的任务。
|
|
43
|
-
|
|
44
|
-
### 原子性自检
|
|
45
|
-
提交前检查变更范围:
|
|
46
|
-
- 如果单次变更涉及 >5 个文件 → 暂停,重新评估是否应该拆分为多个独立变更
|
|
47
|
-
- 用一句话描述变更内容,如果需要用"和"连接不相关的操作 → 拆分为多次提交
|
|
48
|
-
- 每次提交应该是一个原子操作:要么全部有意义,要么全部回滚
|
|
49
|
-
|
|
50
|
-
### 代码体积检查
|
|
51
|
-
变更涉及的文件必须符合 HelloAGENTS 编码原则中的体积控制规则:
|
|
52
|
-
- 文件/类 >300 行 → 评估是否需要拆分
|
|
53
|
-
- 文件/类 >400 行 → 必须按职责拆分(例外:生成代码、大型测试夹具、迁移脚本、协议常量表)
|
|
54
|
-
- 函数/方法 >40 行 → 评估是否需要拆分
|
|
55
|
-
- 函数/方法 >60 行 → 必须拆分
|
|
56
|
-
|
|
57
|
-
### 回归守卫
|
|
58
|
-
优化或新增功能不能破坏已有测试:
|
|
59
|
-
- 修改代码后,先运行已有测试确认无回归
|
|
60
|
-
- 如果新代码让指标改善但已有测试失败 → 修复回归(最多 2 次尝试),不修改已有测试
|
|
61
|
-
- 已有测试是底线,不能为了新功能而降低底线
|
|
62
|
-
- Bug 修复必须复跑最初的复现循环;如果没有自动化回归测试,必须记录替代验证和无法补测试的原因
|
|
63
|
-
- 新增或修改测试时,确认测试验证公共接口和用户可观察行为,而不是实现细节
|
|
64
|
-
|
|
65
|
-
## 验证命令来源
|
|
66
|
-
- 逻辑 `.helloagents/verify.yaml` 中的 commands(优先;`project_store_mode=repo-shared` 时按共享知识目录解析)
|
|
67
|
-
- package.json 中的 lint/test/typecheck 脚本
|
|
68
|
-
- pyproject.toml 中的 ruff/mypy/pytest
|
|
69
|
-
|
|
70
|
-
## 交付检查清单把关
|
|
71
|
-
|
|
72
|
-
验证命令全部通过后,还需要:
|
|
73
|
-
这些标记只用于交付检查清单、验收记录和验证结果,不用于普通说明、方案解释或进度汇报。
|
|
74
|
-
1. 收集所有已激活 hello-* 技能的交付检查清单
|
|
75
|
-
2. 逐项确认每个检查项,标记 [√] 并附带证据(如:`src/api.ts:42` 使用了参数化查询)
|
|
76
|
-
3. 不适用的项标记 [-] 并说明原因
|
|
77
|
-
4. 有未通过项 → 修复 → 重新运行验证循环
|
|
78
|
-
5. 若当前存在方案包并准备最终回复,优先调用 `scripts/closeout-state.mjs write` 写当前会话 `artifacts/closeout.json`,记录 `requirementsCoverage` 与 `deliveryChecklist` 两项结论;两项都必须包含 `status`(`PASS` / `BLOCKED`)和 `summary`
|
|
79
|
-
6. 若当前方案包要求 `review-first`,必须先确认当前会话 `artifacts/review.json` 已通过 `scripts/review-state.mjs write` 写成最新结构化证据;不要把审查自然语言消息直接当成交付证据
|
|
80
|
-
7. 若 `contract.json` 中 `ui.visualValidation.required=true`,必须确认当前会话 `artifacts/visual.json` 已通过 `scripts/visual-state.mjs write` 写成最新结构化证据;若没有视觉验收证据,不得把当前结果视为 UI 可交付
|
|
81
|
-
8. 本地版本检查点:非只读任务完成验证且产生工作区变更时,若 `auto_commit_enabled=true`,最终回复前自动执行本地提交;若 `auto_commit_enabled=false`,跳过这一步。先检查 `git status --short`;若不是 git 仓库或无变更则跳过。若发现 `.env`、密钥、凭据、明显不应提交的大文件或二进制产物,停止提交并说明风险;否则执行 `git add -A`,使用当前回复语言生成简洁 conventional commit message 后执行 `git commit`。显式 `~commit` 不受这个开关影响。不自动远程 `git push`,除非用户明确要求
|
|
82
|
-
9. 若当前对话需要运行时识别验证收尾状态,优先调用 `helloagents-turn-state write --kind complete --role main`;若因阻塞判定等待输入或因前置条件缺失而停下,写 `kind=waiting` 或 `kind=blocked`,并同时写 `reasonCategory` 与 `reason`;显式 `~auto` / `~loop` 下还要写 `blocker.target`、`blocker.evidence`、`blocker.requiredAction`,不要让运行时从自然语言消息里猜状态
|
|
83
|
-
|
|
84
|
-
## 需求追踪验证
|
|
85
|
-
|
|
86
|
-
如果有方案包(requirements.md),执行完成后必须交叉检查:
|
|
87
|
-
1. 逐条读取 requirements.md 的需求(核心目标、功能边界、质量要求)
|
|
88
|
-
2. 确认每条需求都有对应的任务实现,没有被静默丢弃
|
|
89
|
-
3. 确认非目标章节列出的内容确实没有被实现(防止范围蔓延)
|
|
90
|
-
4. 若 tasks.md 中定义了“完成标准”,逐项确认每个任务的完成标准确实成立,不能只因为代码存在或命令通过就视为完成
|
|
91
|
-
5. 若存在 `contract.json`,逐项确认其中的 `verifyMode`、reviewer / tester 关注边界都已被本次验证覆盖
|
|
92
|
-
6. 若 `contract.json` 中 `advisor.required=true` 或 `ui.styleAdvisor.required=true`,额外确认当前会话 `artifacts/advisor.json` 已存在且结论为 clean;若没有 advisor 证据,不得把当前结果视为可交付
|
|
93
|
-
7. 若 `contract.json` 中 `ui.visualValidation.required=true`,额外确认当前会话 `artifacts/visual.json` 已存在、覆盖要求的关键 screens / states,且结论为 `PASS`;若没有视觉验收证据,不得把当前结果视为 UI 可交付
|
|
94
|
-
8. 发现遗漏 → 补充实现 → 重新验证
|
|
95
|
-
|
|
96
|
-
## 目标偏移检查
|
|
97
|
-
|
|
98
|
-
验证时必须区分真正目标和代理指标:
|
|
99
|
-
- 真正目标:用户实际要解决的问题(功能正确、体验达标、需求满足)
|
|
100
|
-
- 代理指标:测试通过、lint 干净、类型检查通过、diff 整洁
|
|
101
|
-
|
|
102
|
-
代理指标全部通过 ≠ 真正目标达成。验证时必须回答:
|
|
103
|
-
1. 用户的真正目标是什么?
|
|
104
|
-
2. 代码是否真的实现了这个目标?(不是"测试说通过了",而是"功能确实能用")
|
|
105
|
-
3. 是否存在测试通过但功能实际不工作的情况?(如:测试 mock 了关键依赖、测试只验证了 happy path)
|
|
106
|
-
|
|
107
|
-
## 目标反向验证
|
|
108
|
-
|
|
109
|
-
不要从"任务完成了吗"出发,而是从目标反向推导:
|
|
110
|
-
1. 明确阶段目标(用户要什么结果?)
|
|
111
|
-
2. 反向推导:要达成这个目标,哪些条件必须为真?
|
|
112
|
-
3. 逐条验证每个条件,使用四级验证深度
|
|
113
|
-
|
|
114
|
-
### 四级验证深度
|
|
115
|
-
每个关键产出必须通过四级检查:
|
|
116
|
-
1. 存在 — 文件/函数/组件确实存在
|
|
117
|
-
2. 真实 — 包含真实实现(不是 stub、TODO、placeholder、空函数)
|
|
118
|
-
3. 连接 — 被其他代码导入/调用/使用(不是孤立的死代码)
|
|
119
|
-
4. 数据流 — 有真实数据流过(API 返回真实数据、UI 渲染真实内容、事件真实触发)
|
|
120
|
-
|
|
121
|
-
未通过任何一级 → 视为未完成,必须修复。
|
|
122
|
-
|
|
123
|
-
## 危险信号
|
|
124
|
-
|
|
125
|
-
以下想法意味着你在合理化跳过验证:
|
|
126
|
-
- "应该没问题了" → 运行验证
|
|
127
|
-
- "我很有信心" → 信心 ≠ 证据
|
|
128
|
-
- "linter 过了" → linter ≠ 测试 ≠ 构建
|
|
129
|
-
- "代码改了应该修好了" → 运行验证确认
|
|
130
|
-
- "就这一次跳过" → 没有例外
|
|
131
|
-
- "问问用户要不要跳过" → 不允许,必须修复
|
|
132
|
-
- "先写完再测" → 未经测试的代码是负债不是资产
|
|
133
|
-
- "已经手动测过了" → 手动测试无记录、不可重复、不可回归
|
|
134
|
-
- "太简单不需要测" → 简单代码在复杂系统中照样出错
|
|
135
|
-
- "这次例外" → 每个例外都成为先例
|
|
136
|
-
- "用户没要求测试" → 质量是底线不是选项
|
|
137
|
-
|
|
138
|
-
## 五步证据链(每次声称完成前必须走完)
|
|
139
|
-
|
|
140
|
-
1. 识别 — 确定哪个命令能证明你的声明
|
|
141
|
-
2. 运行 — 完整执行该命令
|
|
142
|
-
3. 阅读 — 审查完整输出和退出码
|
|
143
|
-
4. 验证 — 确认输出确实支持你的声明
|
|
144
|
-
5. 声明 — 附带证据报告结果
|