helloagents 2.3.8 → 3.0.2-beta.1

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 (90) hide show
  1. package/.claude-plugin/marketplace.json +20 -0
  2. package/.claude-plugin/plugin.json +21 -0
  3. package/.codex-plugin/plugin.json +46 -0
  4. package/README.md +494 -636
  5. package/README_CN.md +778 -0
  6. package/assets/dogdoing/complete.wav +0 -0
  7. package/assets/dogdoing/confirm.wav +0 -0
  8. package/assets/dogdoing/error.wav +0 -0
  9. package/assets/dogdoing/idle.wav +0 -0
  10. package/assets/dogdoing/warning.wav +0 -0
  11. package/assets/icons/icon-large.png +0 -0
  12. package/assets/icons/icon.png +0 -0
  13. package/assets/sounds/complete.wav +0 -0
  14. package/assets/sounds/confirm.wav +0 -0
  15. package/assets/sounds/error.wav +0 -0
  16. package/assets/sounds/idle.wav +0 -0
  17. package/assets/sounds/warning.wav +0 -0
  18. package/bootstrap-lite.md +199 -0
  19. package/bootstrap.md +296 -0
  20. package/cli.mjs +453 -0
  21. package/gemini-extension.json +8 -0
  22. package/hooks/hooks-claude.json +88 -0
  23. package/hooks/hooks.json +76 -0
  24. package/package.json +36 -6
  25. package/scripts/cli-codex.mjs +428 -0
  26. package/scripts/cli-config.mjs +37 -0
  27. package/scripts/cli-hosts.mjs +75 -0
  28. package/scripts/cli-messages.mjs +92 -0
  29. package/scripts/cli-toml.mjs +251 -0
  30. package/scripts/cli-utils.mjs +139 -0
  31. package/scripts/guard.mjs +217 -0
  32. package/scripts/notify-context.mjs +123 -0
  33. package/scripts/notify-events.mjs +11 -0
  34. package/scripts/notify-shared.mjs +47 -0
  35. package/scripts/notify-ui.mjs +92 -0
  36. package/scripts/notify.mjs +219 -0
  37. package/scripts/ralph-loop.mjs +246 -0
  38. package/skills/_meta/SKILL.md +19 -0
  39. package/skills/commands/auto/SKILL.md +91 -0
  40. package/skills/commands/clean/SKILL.md +21 -0
  41. package/skills/commands/commit/SKILL.md +26 -0
  42. package/skills/commands/design/SKILL.md +108 -0
  43. package/skills/commands/help/SKILL.md +45 -0
  44. package/skills/commands/init/SKILL.md +60 -0
  45. package/skills/commands/loop/SKILL.md +98 -0
  46. package/skills/commands/prd/SKILL.md +151 -0
  47. package/skills/commands/review/SKILL.md +16 -0
  48. package/skills/commands/test/SKILL.md +16 -0
  49. package/skills/commands/verify/SKILL.md +21 -0
  50. package/skills/hello-api/SKILL.md +40 -0
  51. package/skills/hello-arch/SKILL.md +38 -0
  52. package/skills/hello-data/SKILL.md +39 -0
  53. package/skills/hello-debug/SKILL.md +58 -0
  54. package/skills/hello-errors/SKILL.md +39 -0
  55. package/skills/hello-perf/SKILL.md +40 -0
  56. package/skills/hello-reflect/SKILL.md +34 -0
  57. package/skills/hello-review/SKILL.md +33 -0
  58. package/skills/hello-security/SKILL.md +40 -0
  59. package/skills/hello-subagent/SKILL.md +32 -0
  60. package/skills/hello-test/SKILL.md +55 -0
  61. package/skills/hello-ui/SKILL.md +197 -0
  62. package/skills/hello-verify/SKILL.md +132 -0
  63. package/skills/hello-write/SKILL.md +33 -0
  64. package/skills/helloagents/SKILL.md +107 -0
  65. package/templates/CHANGELOG.md +5 -0
  66. package/templates/DESIGN.md +19 -0
  67. package/templates/STATE.md +19 -0
  68. package/templates/archive/_index.md +4 -0
  69. package/templates/context.md +19 -0
  70. package/templates/guidelines.md +15 -0
  71. package/templates/modules/module.md +13 -0
  72. package/templates/plans/decisions.md +10 -0
  73. package/templates/plans/design.md +14 -0
  74. package/templates/plans/prd/00-overview.md +23 -0
  75. package/templates/plans/prd/01-user-stories.md +19 -0
  76. package/templates/plans/prd/02-functional.md +30 -0
  77. package/templates/plans/prd/03-ui-design.md +31 -0
  78. package/templates/plans/prd/04-technical.md +25 -0
  79. package/templates/plans/prd/05-nonfunctional.md +28 -0
  80. package/templates/plans/prd/06-i18n-l10n.md +23 -0
  81. package/templates/plans/prd/07-accessibility.md +20 -0
  82. package/templates/plans/prd/08-content.md +20 -0
  83. package/templates/plans/prd/09-testing.md +22 -0
  84. package/templates/plans/prd/10-deployment.md +23 -0
  85. package/templates/plans/prd/11-legal-privacy.md +18 -0
  86. package/templates/plans/prd/12-timeline.md +21 -0
  87. package/templates/plans/requirements.md +18 -0
  88. package/templates/plans/tasks.md +10 -0
  89. package/templates/verify.yaml +9 -0
  90. package/bin/cli.mjs +0 -106
@@ -0,0 +1,98 @@
1
+ ---
2
+ name: ~loop
3
+ description: 自主迭代优化循环 — 设定目标和指标,AI 自主循环修改-验证-保留/回滚,直到达成目标或达到迭代上限(~loop 命令)
4
+ policy:
5
+ allow_implicit_invocation: false
6
+ ---
7
+ Trigger: ~loop <目标描述> [--iterations N] [--metric "命令"] [--direction higher|lower] [--guard "命令"]
8
+
9
+ ## 交互式配置
10
+
11
+ 如果用户未提供完整参数,通过对话确认以下配置:
12
+ - 目标:优化什么?(如:提升测试覆盖率、减少构建时间、提升性能分数)
13
+ - 指标命令:运行什么命令获取数值?(如:`npm run test -- --coverage`)
14
+ - 方向:higher(越高越好)还是 lower(越低越好)?
15
+ - 迭代上限:最多跑几轮?(默认 20,无上限则设为 0)
16
+ - 守卫命令(可选):每轮必须通过的底线检查(如:`npm test`)
17
+ - 作用范围:哪些文件/目录可以修改?
18
+
19
+ ## 初始化
20
+
21
+ 1. 确认 git 工作区干净(有未提交变更则先提醒用户处理)
22
+ 2. 确保 `.helloagents/` 目录和 `.helloagents/STATE.md` 存在;目录不存在时先创建,`STATE.md` 不存在时按 `templates/STATE.md` 创建。这是 `~loop` 的强制恢复快照,不受 `kb_create_mode` 控制
23
+ 3. 运行指标命令获取基线值,记录到 results log
24
+ 4. 如有守卫命令,运行确认基线通过
25
+ 5. 创建 `.helloagents/loop-results.tsv`,并确保 .gitignore 包含该文件
26
+ 6. 根据优化目标标记可能需要的 hello-* 质量技能(如性能优化标记 hello-perf,UI 优化标记 hello-ui)
27
+ 7. 重写 `.helloagents/STATE.md`:记录当前优化目标、基线指标、守卫命令、下一步设为第一轮迭代的具体动作
28
+
29
+ results log 格式:
30
+ ```
31
+ # metric_direction: higher_is_better
32
+ iteration commit metric delta guard status description
33
+ 0 a1b2c3d 85.2 0.0 pass baseline initial state
34
+ ```
35
+
36
+ ## 八阶段循环
37
+
38
+ ~loop 的八阶段循环是统一执行流程(ORIENT→CLARIFY→PLAN→EXECUTE→VALIDATE)在迭代优化场景下的特化形式。每轮迭代的 Modify 阶段遵循已标记的 hello-* 质量技能规范,Verify 阶段遵循 hello-verify 的验证规范。
39
+
40
+ 不要停止。不要询问是否继续。
41
+ 每轮迭代必须完整走完以下八个阶段:
42
+
43
+ ### Phase 1: Review
44
+ - 读取 results log 最近 10-20 条记录
45
+ - 运行 `git log --oneline -20` 查看最近变更
46
+ - 运行 `git diff HEAD~1` 查看上一次变更
47
+ - 如果 git log 有 results log 中未记录的 experiment commit → 上轮可能中断,先运行指标命令补录结果
48
+ - 识别:什么有效、什么无效、什么还没试过
49
+
50
+ ### Phase 2: Ideate
51
+ - 基于 review 结果,选择下一个改进方向
52
+ - 优先尝试未探索的方向
53
+ - 避免重复已失败的方向(git history 是记忆)
54
+ - 连续 5 次 discard → 升级策略:组合近似成功的尝试、尝试相反方向、考虑架构级变更
55
+
56
+ ### Phase 3: Modify
57
+ - 做一个原子修改(单一关注点)
58
+ - 只修改作用范围内的文件
59
+ - 不修改测试文件和守卫命令涉及的文件
60
+
61
+ ### Phase 4: Commit
62
+ - 在验证之前提交(便于干净回滚)
63
+ - commit message 格式:`experiment(<scope>): <description>`
64
+
65
+ ### Phase 5: Verify
66
+ - 运行指标命令,获取新值
67
+ - 计算 delta(新值 - 基线或上一次保留值)
68
+ - 如有守卫命令,运行守卫检查
69
+
70
+ ### Phase 6: Decide
71
+ - IMPROVED(指标改善 + 守卫通过)→ keep
72
+ - SAME/WORSE(指标未改善)→ `git revert HEAD`(保留历史)
73
+ - GUARD FAILED(指标改善但守卫失败)→ 尝试修复(最多 2 次),仍失败则 revert
74
+ - CRASHED(命令执行失败)→ revert + 记录
75
+
76
+ ### Phase 7: Log
77
+ - 追加一行到 results log
78
+ - status: baseline / keep / discard / crash / no-op
79
+ - 重写 `.helloagents/STATE.md`:记录当前轮次、最近一次决策(keep / discard / crash)、当前最佳指标、下一步动作
80
+
81
+ ### Phase 8: Repeat
82
+ - 如果 iterations > 0 且 current_iteration >= max_iterations → 输出总结并停止
83
+ - 否则 → 回到 Phase 1
84
+
85
+ ## 总结输出
86
+
87
+ 循环结束时输出:
88
+ - 基线值 → 最终值(改善幅度)
89
+ - 总迭代次数 / 保留次数 / 丢弃次数
90
+ - 最有效的 3 个改进
91
+ - results log 路径
92
+ - 重写 `.helloagents/STATE.md`:将“正在做什么”更新为已完成,保留最终结论摘要,清空阻塞项,并给出可立即执行的下一步(如继续优化、停止、切换目标)
93
+
94
+ ## 安全规则
95
+ - 使用 `git revert`(保留历史)而非 `git reset --hard`(丢失历史)
96
+ - 不修改测试文件和守卫命令涉及的文件
97
+ - 单次修改涉及 >5 个文件 → 重新评估,可能需要拆分
98
+ - 守卫命令是底线,指标改善但守卫失败 = 不可接受
@@ -0,0 +1,151 @@
1
+ ---
2
+ name: ~prd
3
+ description: 完整 PRD 生成 — 头脑风暴式交互,逐维度挖掘,生成现代产品需求文档(~prd 命令)
4
+ policy:
5
+ allow_implicit_invocation: false
6
+ ---
7
+ Trigger: ~prd [description]
8
+
9
+ 本 skill 自包含,不依赖再读取 `~design` 的 command skill。只有在本 skill 明确要求时,才继续读取对应的 hello-* 技能。
10
+
11
+ ## 铁律
12
+ - 在用户确认方案之前,禁止编写任何实现代码、创建任何文件、或执行任何实现操作。
13
+ - 每个维度的选项必须体现当前前沿水准。若当前已加载 bootstrap 含审美/体验规则则遵循其要求;否则至少给出具体、可执行、非泛化的视觉特征,不确定时主动搜索查阅。
14
+ - 用户说"跳过"某维度 → 跳过,不生成该文件。不强迫用户讨论不关心的维度。
15
+ - 大项目检测:涉及多个独立子系统时,先帮用户分解为子项目,每个子项目走独立的 ~prd 循环。
16
+
17
+ ## PRD 维度清单
18
+
19
+ 按编号排列,每个维度对应一个模板文件(templates/plans/prd/):
20
+
21
+ | 编号 | 文件 | 维度 | 说明 |
22
+ |------|------|------|------|
23
+ | 00 | 00-overview.md | 产品概述 | 愿景、用户画像、痛点、成功指标、范围与非目标 |
24
+ | 01 | 01-user-stories.md | 用户故事 | 用户旅程、故事列表、边缘场景、验收标准 |
25
+ | 02 | 02-functional.md | 功能需求 | 功能清单(MoSCoW)、业务规则、数据模型、API 契约、状态机 |
26
+ | 03 | 03-ui-design.md | UI/UX 设计 | 设计风格、Token、布局、组件、动效、暗色模式、设计约束 |
27
+ | 04 | 04-technical.md | 技术架构 | 技术选型、架构图、文件结构、依赖、数据库、ADR |
28
+ | 05 | 05-nonfunctional.md | 非功能需求 | 性能、安全、可用性、可扩展性、可观测性 |
29
+ | 06 | 06-i18n-l10n.md | 国际化与本地化 | 语言列表、文本外部化、RTL、格式化、文化适配 |
30
+ | 07 | 07-accessibility.md | 无障碍 | WCAG 级别、键盘导航、屏幕阅读器、对比度、动效减弱 |
31
+ | 08 | 08-content.md | 内容策略 | 文案风格、错误信息、空状态、帮助文档、SEO |
32
+ | 09 | 09-testing.md | 测试策略 | 测试金字塔、关键场景、性能测试、兼容性矩阵 |
33
+ | 10 | 10-deployment.md | 部署与运维 | 环境规划、CI/CD、发布策略、回滚、配置管理、数据迁移 |
34
+ | 11 | 11-legal-privacy.md | 法律与隐私 | GDPR/CCPA、用户同意、数据保留、第三方共享、许可证 |
35
+ | 12 | 12-timeline.md | 里程碑 | 阶段划分(MVP/V1/V2)、里程碑、依赖与风险、资源需求 |
36
+
37
+ ## 维度激活矩阵
38
+
39
+ 根据项目类型自动判断维度优先级(必选/推荐/可选):
40
+
41
+ | 项目类型 | 必选 | 推荐 | 可选 |
42
+ |---------|------|------|------|
43
+ | Web App | 00,01,02,03,04,09 | 05,06,07,08 | 10,11,12 |
44
+ | Mobile App | 00,01,02,03,04,07,09 | 05,06,08 | 10,11,12 |
45
+ | API/Backend | 00,02,04,05,09 | 10,11 | 01,08,12 |
46
+ | CLI Tool | 00,02,04,09 | 05,08 | 10,12 |
47
+ | Library/SDK | 00,02,04,09 | 08 | 05,10,12 |
48
+ | 桌面应用 | 00,01,02,03,04,09 | 05,07,08 | 06,10,11,12 |
49
+ | 游戏 | 00,01,02,03,04,09 | 05,08 | 10,12 |
50
+ | 混合 | 取各子类型的并集 | — | — |
51
+
52
+ ## 流程
53
+
54
+ ### 1. 上下文收集(ORIENT)
55
+
56
+ 已有项目:
57
+ - 读取 .helloagents/context.md 获取项目上下文和模块索引
58
+ - 读取 .helloagents/guidelines.md 获取项目约定
59
+ - 扫描相关代码文件理解现有架构
60
+
61
+ 全新项目(无 .helloagents/ 目录):
62
+ - 跳过,直接进入项目定位
63
+
64
+ ### 2. 项目定位(快速,1-2 轮)
65
+
66
+ 目标:快速锁定项目类型和 PRD 范围。
67
+
68
+ a. 理解用户的初始描述
69
+ b. 确认项目类型(Web App / Mobile / API / CLI / Library / 桌面 / 游戏 / 混合)
70
+ c. 根据维度激活矩阵,列出本项目的必选/推荐/可选维度
71
+ d. 询问用户:推荐维度是否需要?可选维度是否需要?
72
+ e. 确定最终的维度列表
73
+
74
+ ### 3. 维度探索(头脑风暴,核心阶段)
75
+
76
+ 按维度编号顺序,逐个展开讨论。每个维度的交互模式:
77
+
78
+ a. AI 先给出该维度的行业最佳实践参考和推荐方案
79
+ b. 用户确认/修改/补充
80
+ c. AI 总结该维度的决策结果,进入下一个维度
81
+
82
+ 交互原则:
83
+ - 每个维度内,每次只问一个问题,偏好选择题
84
+ - 用户说"跳过" → 跳过该维度,不生成对应文件
85
+ - 用户说"默认" → AI 按推荐方案填充,快速过
86
+ - 用户说"展开" → 深入讨论该维度的子项
87
+ - 维度之间可以回溯:用户说"回到 03" → 重新讨论 UI/UX 设计
88
+
89
+ 选项质量要求:
90
+ - 涉及视觉/交互/体验的问题时,选项必须体现当前前沿设计水准
91
+ - 不确定当前前沿趋势时,主动搜索查阅最新设计案例和技术能力后再给出选项
92
+ - 每个选项必须包含具体的视觉特征描述,不接受泛化标签
93
+
94
+ ### 4. 写入方案包
95
+
96
+ 将讨论结果写入本地项目:
97
+ - 全新项目(无 .helloagents/ 目录):先创建 .helloagents/ 和 STATE.md(按 templates/STATE.md 格式)。这是方案包写入的前置操作,不受 kb_create_mode 开关控制
98
+ - 创建 .helloagents/plans/YYYYMMDDHHMM_{feature}/prd/
99
+ - 按 templates/plans/prd/ 的模板格式,仅写入用户未跳过的维度文件
100
+ - 生成 tasks.md(每个任务包含具体文件路径、预期变更、验证方式;任务独立可验证;依赖顺序明确)
101
+ - 生成 decisions.md(贯穿全程的决策日志)
102
+ - 涉及 UI 的项目:生成或更新 .helloagents/DESIGN.md
103
+ - 重写 .helloagents/STATE.md
104
+
105
+ 输出 PRD 完整度摘要:已覆盖 N/13 个维度,建议后续补充的维度(如有)。
106
+
107
+ ### 5. 执行决策
108
+
109
+ 展示 PRD 摘要后,仅在是否进入执行仍构成阻塞决策时才询问用户:
110
+ - 开始执行 → 重写 STATE.md(下一步设为第一个任务的具体动作)
111
+ - 修改 PRD / 补充维度 → 回到对应维度继续讨论
112
+ - 暂不执行,保留方案 → 重写 STATE.md(下一步设为“方案已确认;执行需用户明确启动”)
113
+
114
+ 如果用户已对当前 PRD 或继续执行作出明确同意,视为执行授权成立,直接进入执行,不再追加确认环节。
115
+
116
+ ### 6. 执行
117
+
118
+ 按 tasks.md 逐项完成,每项进入当前已加载 bootstrap 中定义的统一执行流程,完成后同步重写 STATE.md。
119
+ 任务状态标记仅写入 tasks.md、验收清单或验证结果;普通说明、方案解释、状态汇报不用 [√] / [-] / [ ]。
120
+ 所有任务完成后进入当前已加载 bootstrap 中定义的 VALIDATE 阶段。
121
+ 可并行的任务标记后用子代理并行执行(不同子代理不改同一文件)。
122
+ 执行过程中遇到阻塞(依赖缺失、指令不清、验证反复失败)→ 立即停下询问用户,不猜测。
123
+ 执行过程中遇到高风险操作(删除文件/修改配置/数据库变更)→ 暂停确认。
124
+
125
+ ## 方案包结构
126
+
127
+ ~prd 生成的方案包结构:
128
+
129
+ ```
130
+ plans/YYYYMMDDHHMM_{feature}/
131
+ ├── prd/ # PRD 文档(按维度生成)
132
+ │ ├── 00-overview.md
133
+ │ ├── 01-user-stories.md # 仅用户未跳过的维度
134
+ │ ├── 02-functional.md
135
+ │ └── ...
136
+ ├── tasks.md # 任务分解
137
+ └── decisions.md # 决策日志
138
+ ```
139
+
140
+ ## 文档限制
141
+
142
+ | 文件类型 | 上限 |
143
+ |---------|------|
144
+ | 单个维度文件(prd/*.md) | ≤150 行 |
145
+ | tasks.md | ≤100 行 |
146
+ | decisions.md | ≤80 行 |
147
+ | 方案包总计 | ≤1500 行 |
148
+
149
+ - 只记录决策和约束,不记录讨论过程
150
+ - 用表格和列表,不用段落叙述
151
+ - 单文件超限 → 拆分为子文件(如 `02-functional-api.md`),主文件保留摘要和链接
@@ -0,0 +1,16 @@
1
+ ---
2
+ name: ~review
3
+ description: 代码审查 + 质量检查(~review 命令)
4
+ policy:
5
+ allow_implicit_invocation: false
6
+ ---
7
+ Trigger: ~review [scope]
8
+
9
+ ## 流程
10
+
11
+ 1. 获取变更范围:
12
+ - 无参数:git diff(未提交的变更)
13
+ - 指定文件/目录:只审查指定范围
14
+ - "staged":git diff --staged
15
+ 2. 按 hello-* 技能查找路径读取 hello-review SKILL.md,按其审查规范逐文件审查
16
+ 3. 按严重度分类输出结果,给出具体修复建议
@@ -0,0 +1,16 @@
1
+ ---
2
+ name: ~test
3
+ description: 为指定模块或最近变更编写完整测试(~test 命令)
4
+ policy:
5
+ allow_implicit_invocation: false
6
+ ---
7
+ Trigger: ~test [scope]
8
+
9
+ ## 流程
10
+
11
+ 1. 确定测试范围:
12
+ - 无参数:为最近变更的文件编写测试
13
+ - 指定文件/模块:为指定范围编写测试
14
+ 2. 按 hello-* 技能查找路径读取 hello-test SKILL.md,按其 TDD 规范和边界用例要求编写测试
15
+ 3. 运行测试确认全部通过
16
+ 4. 报告覆盖情况和遗漏
@@ -0,0 +1,21 @@
1
+ ---
2
+ name: ~verify
3
+ description: 运行项目的所有验证命令并报告结果(~verify 命令)
4
+ policy:
5
+ allow_implicit_invocation: false
6
+ ---
7
+ Trigger: ~verify
8
+
9
+ ## 流程
10
+
11
+ 1. 按 hello-* 技能查找路径读取 hello-verify SKILL.md,并按其“验证命令来源”优先级检测命令
12
+ 2. 逐个运行所有检测到的命令
13
+ 3. 收集每个命令的输出和退出码
14
+ 4. 汇总报告:
15
+ - ✅ 通过的命令
16
+ - ❌ 失败的命令 + 错误详情
17
+ - 修复建议
18
+
19
+ ## 失败处理
20
+ - 有失败 → 逐个修复,修复后重新运行验证
21
+ - 全部通过 → 报告完成
@@ -0,0 +1,40 @@
1
+ ---
2
+ name: hello-api
3
+ description: 构建、修改或审查 REST API、GraphQL 端点、webhook、中间件、请求/响应处理、API 版本管理、限流或分页时使用。
4
+ ---
5
+
6
+ API 相关代码必须遵循以下规范。
7
+
8
+ ## 编码前
9
+ 先确定资源模型和端点契约,再写代码。
10
+
11
+ ## RESTful 设计
12
+ - 资源命名:复数名词 `/users`,嵌套 `/users/:id/posts`
13
+ - HTTP 方法语义:GET 读、POST 创建、PUT 全量更新、PATCH 部分更新、DELETE 删除
14
+ - 状态码准确:200 成功、201 创建、204 无内容、400 参数错误、401 未认证、403 无权限、404 不存在、409 冲突、422 验证失败、500 服务端错误
15
+
16
+ ## 请求验证
17
+ - 入参验证在 controller 层,使用 schema 验证库(zod、joi、ajv)
18
+ - 验证类型、范围、格式、必填
19
+ - 文件上传限制大小和类型
20
+ - 请求体大小限制
21
+
22
+ ## 响应格式
23
+ - 统一成功响应:`{ data, meta? }`
24
+ - 统一错误响应:`{ error: { code, message, details? } }`
25
+ - 列表接口必须分页:`?page=1&limit=20` 或 cursor-based
26
+ - 支持排序:`?sort=created_at&order=desc`
27
+ - 过滤参数白名单
28
+
29
+ ## 版本与保护
30
+ - API 版本化:URL 前缀 `/v1/` 或 header
31
+ - 限流保护:按 IP/用户/API key
32
+ - 超时设置:所有外部调用设超时
33
+ - CORS:明确允许的 origin,不用 `*`
34
+
35
+ ## 交付检查
36
+ - [ ] 状态码准确反映操作结果
37
+ - [ ] 所有入参已验证
38
+ - [ ] 列表接口有分页
39
+ - [ ] 错误响应格式统一
40
+ - [ ] 有限流保护
@@ -0,0 +1,38 @@
1
+ ---
2
+ name: hello-arch
3
+ description: 重构代码、调整模块结构、管理依赖、拆分文件、提取组件、设计系统架构或做代码组织决策时使用。
4
+ ---
5
+
6
+ 架构相关变更必须遵循以下规范。
7
+
8
+ ## 编码前
9
+ 先画出当前→目标依赖关系和变更路径,再写代码。
10
+
11
+ ## SOLID 原则
12
+ - 单一职责:一个模块/类只做一件事,变更只有一个原因
13
+ - 开闭原则:扩展开放,修改关闭——新功能通过扩展实现
14
+ - 依赖倒置:高层不依赖低层,都依赖抽象(接口/协议)
15
+
16
+ ## 边界与分层
17
+ - 清晰的模块边界,通过接口通信
18
+ - 依赖方向:外层 → 内层(UI → Service → Repository)
19
+ - 循环依赖 = 架构问题,必须解决
20
+ - 配置与代码分离,环境变量管理
21
+
22
+ ## 代码组织
23
+ - 按功能分组(feature-based),非按类型分组
24
+ - 代码体积控制(同当前已加载 bootstrap 的编码原则):文件/类预警 300 行、强制拆分 400 行,函数预警 40 行、强制拆分 60 行。例外:生成代码、大型测试夹具、迁移脚本、协议常量表
25
+ - 公共逻辑提取到 shared/,但避免过早抽象
26
+ - 三次重复才提取——两次相似不够
27
+
28
+ ## 变更策略
29
+ - 评估变更的影响范围(blast radius)
30
+ - 大重构分步进行,每步可独立验证和回滚
31
+ - 保持向后兼容,除非明确要求破坏性变更
32
+
33
+ ## 交付检查
34
+ - [ ] 无循环依赖
35
+ - [ ] 文件/类不超过 400 行,函数不超过 60 行(例外类型除外,非压缩代码)
36
+ - [ ] 依赖方向正确(外 → 内)
37
+ - [ ] 变更范围可控
38
+ - [ ] 技术选型符合当前已加载 bootstrap 的技术下限要求;若当前模式未加载质量下限章节,则至少满足技术选型原则且新项目无过时依赖
@@ -0,0 +1,39 @@
1
+ ---
2
+ name: hello-data
3
+ description: 操作数据库、编写迁移、设计 schema、管理事务、创建索引、使用 Prisma/Sequelize/TypeORM/Mongoose 等 ORM,或执行 SQL/NoSQL 操作时使用。
4
+ ---
5
+
6
+ 数据库相关代码必须遵循以下规范。
7
+
8
+ ## 编码前
9
+ 先设计数据模型、迁移策略、回滚方案,再写代码。
10
+
11
+ ## 迁移管理
12
+ - 所有 schema 变更通过迁移文件,不手动修改数据库
13
+ - 迁移必须可回滚(up + down)
14
+ - 生产迁移前在 staging 验证
15
+ - 迁移文件按时间戳排序
16
+
17
+ ## 事务处理
18
+ - 多表写操作使用事务
19
+ - 事务范围最小化,避免长事务锁表
20
+ - 死锁预防:固定加锁顺序
21
+ - 失败时完整回滚,不留半完成状态
22
+
23
+ ## 索引策略
24
+ - 查询条件字段建索引
25
+ - 复合索引注意列顺序(最左前缀匹配)
26
+ - 不要过度索引——每个索引都有写入成本
27
+ - 定期检查慢查询,优化索引
28
+
29
+ ## 数据完整性
30
+ - 外键约束保证引用完整性
31
+ - NOT NULL + DEFAULT 避免脏数据
32
+ - 唯一约束防止重复
33
+ - 软删除 vs 硬删除:根据业务需求选择,但要一致
34
+
35
+ ## 交付检查
36
+ - [ ] Schema 变更通过迁移文件
37
+ - [ ] 多表写操作使用事务
38
+ - [ ] 查询条件字段有索引
39
+ - [ ] 无 N+1 查询(配合 hello-perf)
@@ -0,0 +1,58 @@
1
+ ---
2
+ name: hello-debug
3
+ description: 调试错误、修复 bug、排查失败测试、处理异常行为,或代码行为与预期不符时使用。
4
+ ---
5
+
6
+ 调试相关工作必须遵循以下规范。
7
+
8
+ ## 编码前
9
+ 禁止未经根因分析直接修复。
10
+
11
+ ## Git 作为记忆
12
+ 每次调试前,先读取相关的 git 历史:
13
+ - `git log --oneline -20` 查看最近变更
14
+ - `git log --all --grep="revert"` 查看过去的失败回滚
15
+ - 如果发现之前已经尝试并回滚过类似修复 → 不要重复同样的方向
16
+
17
+ ## 四阶段调试法
18
+
19
+ ### 1. 定位
20
+ - 完整读取错误信息(不截断、不猜测)
21
+ - 稳定复现问题(确定触发条件)
22
+ - 反向追踪数据流(从错误点向上游追溯)
23
+
24
+ ### 2. 分析
25
+ - 找到类似的正常工作代码,对比差异
26
+ - 检查最近的变更(git log/diff)
27
+ - 识别所有隐含假设
28
+
29
+ ### 3. 假设
30
+ - 形成具体、可验证的假设
31
+ - 单变量测试(一次只改一个东西)
32
+ - 记录每次尝试和结果
33
+
34
+ ### 4. 修复
35
+ - 先写失败测试复现 bug
36
+ - 实现最小修复(针对根因,不是症状)
37
+ - 验证修复有效且无回归
38
+
39
+ ## 卡住升级机制
40
+
41
+ 连续修复失败时,按以下阶梯升级策略:
42
+
43
+ 第 1-2 次失败:正常反思,调整修复方向
44
+ 第 3 次失败:停止。3 次失败意味着可能是架构问题而非局部 bug。重新从根因分析开始,质疑当前方向是否正确
45
+ 第 4 次失败:扩大范围——重读所有相关文件,审查 git 历史中的相关变更,检查是否有隐藏的依赖或副作用
46
+ 第 5 次失败:必须与用户讨论。提出以下选项:
47
+ 1. 组合之前接近成功的尝试
48
+ 2. 尝试完全相反的方向
49
+ 3. 重构架构而非继续局部修补
50
+ 4. 重新定义问题
51
+
52
+ 超过 5 次:停止自主尝试,转为用户决策。
53
+
54
+ ## 交付检查
55
+ - [ ] 根因已识别并记录
56
+ - [ ] 有失败测试复现 bug
57
+ - [ ] 单一修复针对根因
58
+ - [ ] 无回归引入
@@ -0,0 +1,39 @@
1
+ ---
2
+ name: hello-errors
3
+ description: 实现错误处理、try-catch、日志记录、监控、重试逻辑、降级机制,或处理错误响应和异常管理时使用。
4
+ ---
5
+
6
+ 错误处理相关代码必须遵循以下规范。
7
+
8
+ ## 编码前
9
+ 先分类可预期错误 vs 不可预期错误,再写代码。
10
+
11
+ ## 错误分类
12
+ - 可预期错误(验证失败、资源不存在)→ 正常处理,返回友好信息
13
+ - 不可预期错误(系统故障、第三方宕机)→ 记录日志,返回通用错误
14
+ - 不要用 try-catch 包裹所有代码——只捕获你能处理的
15
+
16
+ ## 结构化错误
17
+ - 统一错误格式:`{ code, message, details? }`
18
+ - HTTP 状态码准确:4xx 客户端错误,5xx 服务端错误
19
+ - 不暴露内部实现细节(堆栈、SQL、文件路径)给用户
20
+ - 错误码可枚举,便于前端处理
21
+
22
+ ## 日志规范
23
+ - 结构化日志(JSON),包含 timestamp、level、context
24
+ - 错误日志包含:堆栈、请求 ID、用户上下文
25
+ - 敏感信息脱敏后再记录(密码、token、身份证)
26
+ - 日志级别:error(必须处理)> warn(需关注)> info(正常流程)> debug(调试)
27
+
28
+ ## 恢复策略
29
+ - 外部调用:超时 + 重试(指数退避,最多 3 次)
30
+ - 关键操作:幂等设计,支持安全重试
31
+ - 优雅降级:部分功能不可用时不影响核心流程
32
+ - 断路器:连续失败超过阈值时快速失败
33
+
34
+ ## 交付检查
35
+ - [ ] 错误响应格式统一
36
+ - [ ] 不暴露内部细节给用户
37
+ - [ ] 外部调用有超时设置
38
+ - [ ] 敏感信息已脱敏
39
+ - [ ] 无静默失败:无空 catch 吞错误、无静默降级、无静默回退(见当前已加载 bootstrap 的“静默失败防护”规则)
@@ -0,0 +1,40 @@
1
+ ---
2
+ name: hello-perf
3
+ description: 优化性能、处理数据库查询、实现缓存、懒加载、分页、打包优化,或代码涉及大数据集循环、并发操作、内存管理时使用。
4
+ ---
5
+
6
+ 性能相关代码必须遵循以下规范。
7
+
8
+ ## 编码前
9
+ 先定位性能瓶颈(I/O / 计算 / 内存),再写代码。
10
+
11
+ ## 查询优化
12
+ - 禁止 N+1 查询:使用 JOIN、批量加载、dataloader
13
+ - 大数据集必须分页,不一次加载全部
14
+ - 数据库索引覆盖常用查询条件
15
+ - 只查需要的字段(SELECT 具体列,不用 SELECT *)
16
+
17
+ ## 缓存策略
18
+ - 读多写少的数据 → 缓存(内存/Redis)
19
+ - 设置合理的 TTL
20
+ - 缓存失效策略:写时失效 > 定时过期
21
+ - 防止缓存穿透(空值缓存)和雪崩(随机 TTL)
22
+
23
+ ## 前端性能
24
+ - 代码分割 + 路由级懒加载
25
+ - 图片:WebP/AVIF、懒加载、srcset 响应式
26
+ - 声明 width/height 或 aspect-ratio 防止布局偏移
27
+ - 关键 CSS 内联,非关键 CSS 异步加载
28
+ - 50+ 项列表使用虚拟滚动
29
+
30
+ ## 算法与并发
31
+ - 注意时间复杂度,禁止嵌套循环处理大数据集(O(n²)+)
32
+ - Map/Set 查找 O(1) vs Array.includes O(n)
33
+ - 批量操作优于逐条操作
34
+ - 高频事件(scroll/resize/input)使用 debounce/throttle
35
+
36
+ ## 交付检查
37
+ - [ ] 无 N+1 查询
38
+ - [ ] 列表接口有分页
39
+ - [ ] 图片已优化(格式/懒加载/尺寸声明)
40
+ - [ ] 无嵌套循环处理大数据集
@@ -0,0 +1,34 @@
1
+ ---
2
+ name: hello-reflect
3
+ description: 任务完成后使用 — 生成会话反思,提取经验教训追加到相关模块文档,供未来会话参考。
4
+ ---
5
+
6
+ 任务完成后,执行会话反思。
7
+
8
+ ## 触发条件
9
+ 以下场景完成后应生成反思(kb_create_mode ≥ 1 时):
10
+ - 经历了 2+ 次验证循环才通过
11
+ - 调试超过 3 次尝试才修复
12
+ - 执行过程中方案发生变更
13
+ - 用户纠正了错误的假设或方向
14
+
15
+ ## 反思产出
16
+ 将反思内容追加到相关 modules/*.md 的"经验"章节(增量追加,不重写)。
17
+
18
+ 追加格式:
19
+ ```
20
+ - [{日期}] {经验教训} — 背景: {什么有效/什么失败的简述}
21
+ ```
22
+
23
+ 如果涉及多个模块,分别追加到各自的 modules/*.md。
24
+ 如果不属于任何特定模块(如项目级经验),追加到 context.md 末尾新增的"## 经验"章节。
25
+
26
+ ## 质量要求
27
+ - 经验教训必须是抽象指导,不是具体代码模板(具体模板会导致 AI 锚定在错误细节上)
28
+ - 每条经验 ≤2 行,精简有力
29
+ - 只记录真正有价值的发现,不记录显而易见的事情
30
+
31
+ ## 交付检查
32
+ - [ ] 经验已追加到相关 modules/*.md 的经验章节
33
+ - [ ] 经验教训是抽象指导而非具体模板
34
+ - [ ] 适用场景从上下文可推断
@@ -0,0 +1,33 @@
1
+ ---
2
+ name: hello-review
3
+ description: 审查代码变更、检查 PR、review 代码质量,或用户要求看看代码、检查代码时使用。
4
+ ---
5
+
6
+ 代码审查必须遵循以下规范。
7
+
8
+ ## 审查维度
9
+
10
+ 逐文件检查以下维度:
11
+ - 逻辑正确性:Bug、边界条件、空值处理、竞态条件
12
+ - 安全漏洞:注入、XSS、硬编码密钥、权限绕过
13
+ - 性能问题:N+1 查询、内存泄漏、不必要的重渲染、大循环
14
+ - 可维护性:命名清晰、职责单一、重复代码、过度抽象
15
+ - 错误处理:异常是否被正确捕获和处理
16
+
17
+ ## 严重度分类
18
+
19
+ - 🔴 严重:必须修复(Bug、安全漏洞、数据丢失风险)
20
+ - 🟡 建议:应该修复(性能问题、可维护性、代码风格)
21
+ - 🟢 良好:值得肯定的好实践
22
+
23
+ ## 审查原则
24
+
25
+ - 指出问题时给出具体修复建议和代码示例
26
+ - 不只挑毛病,也肯定好的实践
27
+ - 关注变更本身,不扩大审查范围到未修改的代码
28
+ - 严重问题优先,建议性问题其次
29
+
30
+ ## 交付检查
31
+ - [ ] 每个文件都已审查
32
+ - [ ] 严重问题都有修复建议
33
+ - [ ] 按严重度分类输出
@@ -0,0 +1,40 @@
1
+ ---
2
+ name: hello-security
3
+ description: 涉及认证、密码、token、JWT、OAuth、session、cookie、加密、密钥、API key、权限、角色、用户输入验证、文件上传等安全敏感操作时使用。
4
+ ---
5
+
6
+ 安全相关代码必须遵循以下规范。
7
+
8
+ ## 编码前
9
+ 先识别攻击面和信任边界,再写代码。
10
+
11
+ ## 认证与密钥
12
+ - 密码:bcrypt/argon2 哈希,不可逆存储
13
+ - JWT:设置过期时间,使用 RS256 或 HS256,不在 payload 存敏感数据
14
+ - 密钥/API key:环境变量或密钥管理服务,不硬编码
15
+ - .env 不提交到版本控制(.gitignore)
16
+ - API key 使用最小权限原则
17
+
18
+ ## 输入验证
19
+ - 所有外部输入(用户、API、文件)必须验证
20
+ - 白名单优于黑名单
21
+ - SQL:参数化查询,不拼接字符串
22
+ - 文件上传:验证类型、大小、内容,不信任文件扩展名
23
+
24
+ ## 输出防护
25
+ - XSS:输出编码,设置 CSP 头
26
+ - CSRF:token 验证
27
+ - 敏感数据:HTTPS 传输,加密存储,不记录到日志
28
+ - 错误信息:不暴露内部实现细节给用户
29
+
30
+ ## 权限控制
31
+ - 最小权限原则
32
+ - 检查资源所有权(不能只检查角色)
33
+ - 路径遍历:规范化路径,限制访问范围
34
+
35
+ ## 交付检查
36
+ - [ ] 无硬编码密钥/密码
37
+ - [ ] 所有用户输入已验证
38
+ - [ ] SQL 使用参数化查询
39
+ - [ ] 敏感数据不在日志中
40
+ - [ ] 认证 token 有过期时间