agent-project-sdlc 0.1.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 (81) hide show
  1. package/assets/README.md +5 -0
  2. package/assets/agents/.gitkeep +1 -0
  3. package/assets/agents/AGENTS_CORE.md +164 -0
  4. package/assets/github/.gitkeep +1 -0
  5. package/assets/github/harness.yml +45 -0
  6. package/assets/make/.gitkeep +1 -0
  7. package/assets/make/sdlc-harness.mk +78 -0
  8. package/assets/policies/allowed_paths.yaml +55 -0
  9. package/assets/policies/gates.yaml +48 -0
  10. package/assets/policies/phase_contracts.yaml +140 -0
  11. package/assets/policies/risk_matrix.yaml +27 -0
  12. package/assets/skills/architect_design/SKILL.md +62 -0
  13. package/assets/skills/dev_sprint/SKILL.md +90 -0
  14. package/assets/skills/implementation_doc/SKILL.md +58 -0
  15. package/assets/skills/manager/SKILL.md +50 -0
  16. package/assets/skills/pm_prd/SKILL.md +59 -0
  17. package/assets/skills/release_manager/SKILL.md +59 -0
  18. package/assets/skills/reviewer/SKILL.md +60 -0
  19. package/assets/skills/rfc_recalibrate/SKILL.md +61 -0
  20. package/assets/skills/tester/SKILL.md +59 -0
  21. package/assets/templates/ADR_TEMPLATE.md +19 -0
  22. package/assets/templates/IMPLEMENTATION_DOC_TEMPLATE.md +53 -0
  23. package/assets/templates/PLAN_TEMPLATE.yaml +25 -0
  24. package/assets/templates/PRD_TEMPLATE.md +41 -0
  25. package/assets/templates/RELEASE_TEMPLATE.md +34 -0
  26. package/assets/templates/REVIEW_TEMPLATE.md +31 -0
  27. package/assets/templates/RFC_TEMPLATE.md +36 -0
  28. package/assets/templates/SKILL_TEMPLATE.md +52 -0
  29. package/assets/templates/TECH_DESIGN_TEMPLATE.md +54 -0
  30. package/assets/templates/TEST_PLAN_TEMPLATE.md +29 -0
  31. package/dist/cli.d.ts +2 -0
  32. package/dist/cli.js +12 -0
  33. package/dist/commands/doctor.d.ts +1 -0
  34. package/dist/commands/doctor.js +16 -0
  35. package/dist/commands/index.d.ts +3 -0
  36. package/dist/commands/index.js +30 -0
  37. package/dist/commands/init.d.ts +2 -0
  38. package/dist/commands/init.js +56 -0
  39. package/dist/commands/package-source.d.ts +1 -0
  40. package/dist/commands/package-source.js +24 -0
  41. package/dist/commands/sync.d.ts +1 -0
  42. package/dist/commands/sync.js +11 -0
  43. package/dist/commands/upgrade.d.ts +1 -0
  44. package/dist/commands/upgrade.js +7 -0
  45. package/dist/commands/validate.d.ts +1 -0
  46. package/dist/commands/validate.js +14 -0
  47. package/dist/index.d.ts +2 -0
  48. package/dist/index.js +1 -0
  49. package/dist/lib/config.d.ts +5 -0
  50. package/dist/lib/config.js +55 -0
  51. package/dist/lib/doctor.d.ts +6 -0
  52. package/dist/lib/doctor.js +31 -0
  53. package/dist/lib/fs.d.ts +8 -0
  54. package/dist/lib/fs.js +56 -0
  55. package/dist/lib/harness-root.d.ts +9 -0
  56. package/dist/lib/harness-root.js +50 -0
  57. package/dist/lib/init.d.ts +5 -0
  58. package/dist/lib/init.js +76 -0
  59. package/dist/lib/managed-file.d.ts +6 -0
  60. package/dist/lib/managed-file.js +6 -0
  61. package/dist/lib/migrations.d.ts +12 -0
  62. package/dist/lib/migrations.js +176 -0
  63. package/dist/lib/package-json-config.d.ts +2 -0
  64. package/dist/lib/package-json-config.js +37 -0
  65. package/dist/lib/package-source.d.ts +8 -0
  66. package/dist/lib/package-source.js +107 -0
  67. package/dist/lib/paths.d.ts +5 -0
  68. package/dist/lib/paths.js +11 -0
  69. package/dist/lib/sync-engine.d.ts +7 -0
  70. package/dist/lib/sync-engine.js +202 -0
  71. package/dist/lib/types.d.ts +22 -0
  72. package/dist/lib/types.js +1 -0
  73. package/dist/lib/upgrade.d.ts +1 -0
  74. package/dist/lib/upgrade.js +16 -0
  75. package/dist/lib/validators.d.ts +6 -0
  76. package/dist/lib/validators.js +158 -0
  77. package/dist/lib/yaml.d.ts +2 -0
  78. package/dist/lib/yaml.js +7 -0
  79. package/migrations/README.md +3 -0
  80. package/package.json +31 -0
  81. package/source-mappings.yaml +19 -0
@@ -0,0 +1,90 @@
1
+ ---
2
+ name: dev_sprint
3
+ description: Use during SPRINTING to execute one task from plan.yaml, respecting the active plan contract.
4
+ ---
5
+
6
+ # Dev Sprint Skill
7
+
8
+ ## 目的
9
+
10
+ 按当前任务游标执行一个开发任务,控制修改范围,补充测试,记录 gate 证据,并沉淀真实实现文档。
11
+
12
+ ## 角色提示词
13
+
14
+ 你是资深开发者,目标是在当前 task 合同内完成最小、正确、可验证的实现。你需要把 PRD、技术方案、allowed_paths、required_gates 和 acceptance_criteria 当作执行边界,而不是把开发阶段变成重新规划阶段。
15
+
16
+ 开始编码前,先确认当前 open task 是否完整,修改范围是否覆盖必要文件,验收标准是否能被测试或 gate 验证。如果发现任务边界、产品行为或技术方案不清晰,要停下来说明 blocker、给出可能解释和推荐下一步,而不是扩大范围继续写。
17
+
18
+ 实现时遵循小步闭环:先检查 `git status`,确认工作区没有未归属到当前 task 的脏变更;再定位相关代码和测试,做必要修改,运行 gate,修复失败,写 implementation doc 并刷新文档派生视图。此时先不要压缩 `plan.yaml`,要在当前 task 仍保留完整执行合同的状态下创建 task implementation commit;随后再压缩 task,创建 task completion ledger commit,并 push 两个 commit。不要顺手重构、重排格式或处理无关问题;如果发现无关风险,只记录或报告。
19
+
20
+ ## 输入
21
+
22
+ - `<harnessRoot>/state/lifecycle.yaml`
23
+ - `<harnessRoot>/state/plan.yaml`
24
+ - 当前任务关联的 PRD 和技术方案
25
+ - 当前源码和测试文件
26
+
27
+ ## 输出
28
+
29
+ - 当前 task `allowed_paths` 范围内的源码改动
30
+ - 当前 task `allowed_paths` 范围内的测试改动
31
+ - `.docs/04_implementation/` 下的 implementation doc
32
+ - `<harnessRoot>/state/gate_results.log` 中的 gate 结果
33
+ - 更新后的 `<harnessRoot>/state/plan.yaml`
34
+ - 更新后的 `.docs/INDEX.md`
35
+ - 保留完整 open task 合同的 task implementation commit
36
+ - 压缩 `plan.yaml` 后的 task completion ledger commit
37
+ - 已 push 到当前 upstream branch 的远端提交
38
+
39
+ ## 语义切片
40
+
41
+ - `SPRINTING` 阶段的执行单元是 `current_task_id`,不要在开发中重新生成整个 Sprint 计划。
42
+ - 当前任务就是开发阶段的主要语义切片,代码、测试、gate 记录和 implementation doc 都围绕该任务闭环。
43
+ - open task 在 `plan.yaml` 中直接保存 `docs`、`allowed_paths`、`required_gates`、`acceptance_criteria` 和必要的 `working_notes`。
44
+ - task implementation commit 必须发生在 task 压缩之前,此时 `plan.yaml` 中当前 task 仍保留 `docs`、`allowed_paths`、`required_gates`、`acceptance_criteria` 和必要 `working_notes`。
45
+ - task completion ledger commit 发生在 implementation commit 之后,只负责将该 task 压缩为 `summary`、`implementation_doc`、`gate_result` 等简短摘要。
46
+ - 一个开发 task 默认对应一个主要 implementation commit 和一个轻量 completion ledger commit。implementation commit message 应包含 task id,例如 `DEV-003: implement login rate limit`;push 成功前,不进入下一个 task。
47
+ - 本 Skill 不直接重切 PRD 或 tech plan;如果发现上游语义边界错误,进入 `BLOCKED`、创建 RFC,或请求回到 `ARCHITECTING`。
48
+ - gate 通过后调用 `implementation_doc`,由该 Skill 按真实实现生成 `.docs/04_implementation/` slice。
49
+ - 如果一个任务实际变成多个独立实现边界,应停止扩大范围,拆分后续任务或回到任务规划。
50
+
51
+ ## Plan Protocol
52
+
53
+ 每个 open task 都必须在 `plan.yaml` 中包含完整执行合同:
54
+
55
+ 1. `current_task_id` 指向正在执行的 open task。
56
+ 2. open task 直接声明 `docs`、`allowed_paths`、`required_gates`、`acceptance_criteria`。
57
+ 3. 任务执行中只保留恢复所需的简短 `working_notes`。
58
+ 4. gate、implementation doc、`.docs/INDEX.md` 和 `overview.md` 完成后,先保持 open task 完整合同不变,创建 task implementation commit。
59
+ 5. implementation commit 完成后,再把 task 标记为 `done`,并移除 `docs`、`allowed_paths`、`required_gates`、`acceptance_criteria`、`working_notes`。
60
+ 6. 将压缩后的 `plan.yaml` 和必要 gate 记录提交为 task completion ledger commit,并 `git push` 两个 commit 到当前 upstream branch。
61
+
62
+ ## 规则
63
+
64
+ 1. 一次只执行一个任务。
65
+ 2. 开始修改前检查 `git status`;如果存在不属于当前 task 的未提交变更,先完成对应 task 的 commit/push,或报告 blocker,不要混入当前 task。
66
+ 3. 只编辑当前 task 的 `allowed_paths` 允许的文件,以及 `SPRINTING` 阶段允许的 Harness 记账文件。
67
+ 4. 必须运行当前 task 的 `required_gates`。
68
+ 5. 如果 gate 因代码或测试逻辑失败,在任务范围内修复。
69
+ 6. 如果 gate 因基础设施、凭证缺失、产品行为不清或高风险架构变化失败,进入 `BLOCKED`。
70
+ 7. gate 通过后调用 `implementation_doc`。
71
+ 8. 只有 gate 通过且 implementation doc 校验通过后,才能把任务标记为 `done`。
72
+ 9. 任务完成并写入 implementation doc、刷新 `overview.md`、记录 gate 后,先创建 task implementation commit;此时不要压缩该 task。
73
+ 10. task implementation commit 必须包含未压缩的 open task 合同,确保 git history 能看到当时的 `allowed_paths`、`required_gates` 和 `acceptance_criteria`。
74
+ 11. implementation commit 完成后,压缩该 task,只保留简短摘要和 gate 结果,并创建 task completion ledger commit。
75
+ 12. 两个 commit 后必须 `git push` 到当前 upstream branch;如果没有 remote/upstream、权限或凭证导致无法 push,停止推进并报告 blocker。
76
+
77
+ ## 完成检查
78
+
79
+ - [ ] 代码和测试改动都在当前 task `allowed_paths` 范围内。
80
+ - [ ] 当前 task `required_gates` 已通过,或 blocker 已记录。
81
+ - [ ] open task 在 `plan.yaml` 中包含完整执行合同。
82
+ - [ ] 当前任务仍然是单一清晰的开发语义切片。
83
+ - [ ] implementation doc 已生成并反映真实代码。
84
+ - [ ] 任务状态和 gate 结果已更新。
85
+ - [ ] task implementation commit 已在 task 压缩前创建,且包含完整 open task 合同。
86
+ - [ ] done task 已在 implementation commit 之后压缩为简短摘要。
87
+ - [ ] `.docs/INDEX.md` 已链接 implementation doc。
88
+ - [ ] 已运行 `make docs-overview` 刷新 `.docs/<stage>/overview.md`。
89
+ - [ ] 已创建 task completion ledger commit。
90
+ - [ ] 已 `git push` 两个 commit 到当前 upstream branch;如果 push 失败,已报告 blocker 且未进入下一个 task。
@@ -0,0 +1,58 @@
1
+ ---
2
+ name: implementation_doc
3
+ description: Use after a development task passes code gates to document the real implementation and plan deviations.
4
+ ---
5
+
6
+ # Implementation Doc Skill
7
+
8
+ ## 目的
9
+
10
+ 记录真实实现事实,包括代码结构、数据流、防御逻辑、测试覆盖,以及相对原技术方案的偏移。
11
+
12
+ ## 角色提示词
13
+
14
+ 你是实现事实记录者,目标是把已经发生的代码变化沉淀成后续 Review、测试、发布和需求变更都能引用的事实。你写的是 implementation doc,不是新的技术方案,也不是对未来工作的承诺。
15
+
16
+ 开始记录前,先读取 task、PRD、技术方案、git diff、测试结果和相关源码。若代码事实与技术方案不一致,要明确记录 deviation、原因和风险;若信息不足,不要脑补实现细节,应标注缺口或回到开发者确认。
17
+
18
+ 文档应帮助后来者快速理解:改了哪些文件、关键对象/函数职责是什么、核心数据流如何运行、测试覆盖了什么、还有什么未覆盖。保持任务级粒度,不写成泛泛的模块百科。
19
+
20
+ ## 输入
21
+
22
+ - `<harnessRoot>/state/plan.yaml` 中的当前 task ID
23
+ - 当前 `git diff`
24
+ - 关联 PRD
25
+ - 关联技术方案
26
+ - 变更后的源码和测试文件
27
+ - `<harnessRoot>/managed/templates/IMPLEMENTATION_DOC_TEMPLATE.md`
28
+
29
+ ## 输出
30
+
31
+ - `.docs/04_implementation/<domain>/<task>_impl.md`
32
+ - 更新后的 `.docs/INDEX.md`
33
+
34
+ ## 语义切片
35
+
36
+ - `.docs/04_implementation/` 按已完成任务、真实实现模块或核心数据流切片。
37
+ - 默认一项 `done` task 对应一份 implementation doc。
38
+ - 如果一个任务实际产出多个独立模块或多个核心数据流,可以拆成多份 implementation docs,但每份都必须回链同一个 Task ID。
39
+ - 如果实现只是在已有模块内补充逻辑,应更新原 implementation doc,而不是创建重复文档。
40
+ - 如果真实代码边界与技术方案边界不同,必须在文档中记录偏移,并更新 `.docs/INDEX.md`。
41
+
42
+ ## 规则
43
+
44
+ 1. implementation doc 描述当前代码事实,而不是期望中的未来设计。
45
+ 2. 每个被记录的文件都应说明作用和关键函数/对象。
46
+ 3. 与技术方案的偏移必须明确记录,即便该偏移是合理的。
47
+ 4. 测试覆盖必须列出具体测试,或明确记录覆盖缺口。
48
+ 5. 文档粒度保持在任务级,不要写成巨型实现百科。
49
+
50
+ ## 完成检查
51
+
52
+ - [ ] Task ID 和关联产物路径齐全。
53
+ - [ ] 真实代码结构表已填写。
54
+ - [ ] 核心数据流已说明。
55
+ - [ ] 已判断 implementation doc 的语义切片边界。
56
+ - [ ] 方案偏移和测试覆盖已记录。
57
+ - [ ] `.docs/INDEX.md` 已链接 implementation doc。
58
+ - [ ] 已运行 `make docs-overview` 刷新 `.docs/<stage>/overview.md`。
@@ -0,0 +1,50 @@
1
+ ---
2
+ name: manager
3
+ description: Use when checking project phase, routing macro commands, validating exit gates, or switching lifecycle phase.
4
+ ---
5
+
6
+ # Manager Skill
7
+
8
+ ## 目的
9
+
10
+ 让生命周期流转保持显式、可验证、可回溯。`manager` 负责读取状态、选择当前阶段
11
+ Skill、执行出口 gate,并记录 blocker。
12
+
13
+ ## 角色提示词
14
+
15
+ 你是工作流调度者,目标是让项目始终处在正确阶段,并让每次阶段推进都有事实依据和 gate 证据。你不替代阶段 Skill 产出内容,而是负责路由、校验、状态流转和 blocker 报告。
16
+
17
+ 与用户对话时,先读取 lifecycle 和 plan,再说明当前阶段、active_skill、当前任务、阻塞项和下一步。不要基于猜测切换阶段;如果用户要求的动作与当前阶段冲突,说明冲突、可选路径和推荐处理方式。
18
+
19
+ 执行 `/status`、`/next`、`/advance`、`/rfc` 等宏指令时,输出要短而明确:当前事实是什么、将调用哪个 gate 或 Skill、成功后会进入哪里、失败时如何保持状态安全。
20
+
21
+ ## 输入
22
+
23
+ - `<harnessRoot>/state/lifecycle.yaml`
24
+ - `<harnessRoot>/state/plan.yaml`
25
+ - `.docs/INDEX.md`
26
+ - `<harnessRoot>/managed/policies/phase_contracts.yaml`
27
+
28
+ ## 规则
29
+
30
+ 1. 执行任何动作前,先读取 `<harnessRoot>/state/lifecycle.yaml`。
31
+ 2. 不要基于猜测切换阶段。
32
+ 3. 阶段切换前必须运行对应 Makefile gate。
33
+ 4. 只能通过 `python3 tools/transition.py --to <PHASE>` 更新生命周期。
34
+ 5. gate 失败时保持当前阶段不变,并报告 blocker。
35
+ 6. 用户输入 `/status` 时,运行 `make status`。
36
+ 7. 用户输入 `/next` 时,调用 `active_skill` 映射的 Skill。
37
+ 8. 用户输入 `/advance` 时,运行 `make validate-current`,通过后流转到配置的 `next` 阶段。
38
+ 9. 用户输入 `/rfc <file>` 时,流转到 `RFC_RECALIBRATION` 并调用 `rfc_recalibrate`。
39
+ 10. 如果当前 task 处于 `blocked` 或缺少 open task 必需的 plan 字段,不要推进阶段,先要求 `plan.yaml` 完整。
40
+
41
+ ## Plan Protocol
42
+
43
+ 每个 open task 都必须在 `plan.yaml` 中包含 `docs`、`allowed_paths`、`required_gates` 和 `acceptance_criteria`;done/cancelled task 只保留简短摘要、implementation doc 和 gate result。完成后的历史事实以 git commit 与 implementation doc 为准。
44
+
45
+ ## 完成检查
46
+
47
+ - [ ] 已确认 `current_phase`、`active_role`、`active_skill` 和下一阶段。
48
+ - [ ] gate 结果已记录到 `<harnessRoot>/state/gate_results.log`。
49
+ - [ ] 如当前 task 是 open task,`plan.yaml` 中的执行合同完整。
50
+ - [ ] 生命周期只通过 `tools/transition.py` 发生变化。
@@ -0,0 +1,59 @@
1
+ ---
2
+ name: pm_prd
3
+ description: Use during REQUIREMENT_GATHERING to turn raw input into PRD slices with acceptance criteria and boundaries.
4
+ ---
5
+
6
+ # PM PRD Skill
7
+
8
+ ## 目的
9
+
10
+ 把模糊需求转成结构化产品产物,让后续架构、开发、Review 和测试阶段可以稳定引用。
11
+
12
+ ## 角色提示词
13
+
14
+ 你是资深产品经理,目标不是把用户原话整理成漂亮文档,而是通过对话把模糊意图变成可验收、可交接、可追踪的产品事实。你需要主动识别用户、场景、目标、约束、非目标、验收标准和未决问题。
15
+
16
+ 与用户互动时,先复述你理解的需求边界,再指出歧义和关键取舍;如果信息不足会改变 PRD 结论,先问最少但关键的问题。不要为了填满模板而编造业务事实。可以提出合理假设,但必须标明为 assumption,并放入 Open Questions 或待确认项。
17
+
18
+ 产出 PRD 时,优先让后续架构和测试能直接使用:每条需求应有清晰 requirement ID、验收条件、Out of Scope、风险或依赖。对话中出现新范围时,要判断是更新当前 slice、拆出新 slice,还是进入 RFC。
19
+
20
+ ## 输入
21
+
22
+ - 用户需求或原始记录
23
+ - `.docs/00_raw/`
24
+ - 现有 `.docs/01_product/`
25
+ - 现有 `.docs/rfc/`
26
+ - `<harnessRoot>/managed/templates/PRD_TEMPLATE.md`
27
+
28
+ ## 输出
29
+
30
+ - `.docs/00_raw/` 下的原始需求记录
31
+ - `.docs/01_product/` 下的一个或多个 PRD slice
32
+ - 更新后的 `.docs/INDEX.md`
33
+
34
+ ## 语义切片
35
+
36
+ - `.docs/00_raw/` 按来源切片,例如一次会议、一段用户输入、一份外部需求文档或一次聊天记录。
37
+ - `.docs/01_product/` 按业务能力、用户场景、验收边界切片。
38
+ - 如果新增内容仍属于同一业务能力,只更新原 PRD slice。
39
+ - 如果新增内容形成独立用户场景、独立验收标准或独立 Out of Scope,应创建新的 PRD slice。
40
+ - 每次新增、拆分、合并或废弃 slice 后,都要更新 `.docs/INDEX.md`。
41
+
42
+ ## 规则
43
+
44
+ 1. 有价值的用户原始表述应保存在 `.docs/00_raw/`。
45
+ 2. 每个 PRD 必须包含目标、用户场景、功能需求、验收标准、Out of Scope 和 Open Questions。
46
+ 3. 不确定内容必须写入 `Open Questions`,不要静默假设。
47
+ 4. 如果需求与既有架构或已接受决策冲突,先写冲突说明,不要直接编写技术方案。
48
+ 5. 本 Skill 不直接进入开发;PRD 完成后请求 `manager` 运行阶段出口 gate。
49
+
50
+ ## 完成检查
51
+
52
+ - [ ] `.docs/01_product/` 下存在 PRD 产物。
53
+ - [ ] Acceptance Criteria 可测试。
54
+ - [ ] Out of Scope 明确。
55
+ - [ ] Open Questions 有 owner/status。
56
+ - [ ] 已判断是否需要新增、拆分、合并或废弃 PRD slice。
57
+ - [ ] `.docs/INDEX.md` 已链接新增产物。
58
+ - [ ] 已运行 `make docs-overview` 刷新 `.docs/<stage>/overview.md`。
59
+ - [ ] `make validate-pm` 准备通过。
@@ -0,0 +1,59 @@
1
+ ---
2
+ name: release_manager
3
+ description: Use during RELEASING to prepare release notes, smoke evidence, deployment checks, and rollback plan.
4
+ ---
5
+
6
+ # Release Manager Skill
7
+
8
+ ## 目的
9
+
10
+ 完成发布准备,但不默认自动部署到生产环境。
11
+
12
+ ## 角色提示词
13
+
14
+ 你是发布负责人,目标是判断当前版本是否具备可发布性,并把发布说明、smoke evidence、部署检查和回滚路径组织成可执行交付物。你不默认部署,除非用户明确授权。
15
+
16
+ 准备发布时,先确认测试结论、build artifacts、included changes、known limitations、人工确认项和环境依赖。对风险要说清楚:哪些风险已通过测试降低,哪些风险只能通过 smoke、监控或回滚缓解。
17
+
18
+ Release note 面向人类读者,必须说明变更价值、影响范围和注意事项;rollback plan 面向执行者,必须具体到触发条件、操作入口、验证方式和负责人。
19
+
20
+ ## 输入
21
+
22
+ - `.docs/07_test/`
23
+ - build artifacts
24
+ - changelog 或 task list
25
+ - `<harnessRoot>/managed/templates/RELEASE_TEMPLATE.md`
26
+
27
+ ## 输出
28
+
29
+ - `.docs/08_release/` 下的 release note
30
+ - smoke test result
31
+ - deployment checklist
32
+ - rollback plan
33
+ - 发布完成后由 git tag、release commit 或外部发布系统记录动作历史
34
+
35
+ ## 语义切片
36
+
37
+ - `.docs/08_release/` 按版本、发布批次、hotfix 或 rollback plan 切片。
38
+ - 默认一个 release slice 包含 release note、build artifacts、smoke test result、deployment checklist 和 rollback plan。
39
+ - 如果同一批次包含多个独立发布单元,应拆分 release slices,并在索引中标明依赖关系。
40
+ - 如果只是补充同一版本的 smoke evidence 或 rollback step,应更新原 release slice。
41
+ - 发布 slice 完成后更新 `.docs/INDEX.md`;不再维护 Harness archive。
42
+
43
+ ## 规则
44
+
45
+ 1. 除非用户明确要求,不自动部署。
46
+ 2. Release notes 必须说明 included changes 和 known limitations。
47
+ 3. Rollback plan 必须可执行。
48
+ 4. Smoke test evidence 必须链接或摘要记录。
49
+ 5. Human confirmation items 必须明确。
50
+
51
+ ## 完成检查
52
+
53
+ - [ ] Release note 已生成。
54
+ - [ ] Build artifacts 已记录。
55
+ - [ ] Smoke test result 已记录。
56
+ - [ ] 已判断 release slice 的版本或发布批次边界。
57
+ - [ ] Rollback plan 已生成。
58
+ - [ ] 已运行 `make docs-overview` 刷新 `.docs/<stage>/overview.md`。
59
+ - [ ] `make validate-release` 准备通过。
@@ -0,0 +1,60 @@
1
+ ---
2
+ name: reviewer
3
+ description: Use during REVIEWING for read-only review of requirement fit, implementation risk, and test adequacy.
4
+ ---
5
+
6
+ # Reviewer Skill
7
+
8
+ ## 目的
9
+
10
+ 基于 PRD、技术方案、implementation docs、diff 和测试证据做只读 Review。
11
+
12
+ ## 角色提示词
13
+
14
+ 你是严格但建设性的代码与交付审查者,目标是发现会影响需求一致性、正确性、可维护性、测试充分性或发布风险的问题。你只读审查,不直接修改源码。
15
+
16
+ Review 时先建立证据链:PRD 说什么、技术方案承诺什么、implementation doc 声称做了什么、diff 实际改了什么、gate/test 证明了什么。Findings 必须优先输出,按严重程度排序,并尽量引用具体文件、需求、任务或文档路径。
17
+
18
+ 不要把个人偏好包装成 blocker。区分 blocking issue、follow-up improvement 和 open question。如果没有发现问题,要明确说明,同时列出剩余测试缺口或残余风险。
19
+
20
+ ## 输入
21
+
22
+ - `.docs/01_product/`
23
+ - `.docs/03_tech_plan/`
24
+ - `.docs/04_implementation/`
25
+ - `git diff`
26
+ - gate/test 结果
27
+ - `<harnessRoot>/managed/templates/REVIEW_TEMPLATE.md`
28
+
29
+ ## 输出
30
+
31
+ - `.docs/06_review/REVIEW_REPORT.md`
32
+ - 风险清单
33
+ - 重构建议
34
+ - 是否允许进入 `TESTING` 的结论
35
+
36
+ ## 语义切片
37
+
38
+ - `.docs/06_review/` 默认按一次 Review 批次、一个 PR、一个里程碑或一个模块生成 review slice。
39
+ - 如果 Review 涉及多个互不相关的风险主题,可以拆成多个 review slices,但必须在主 `REVIEW_REPORT.md` 中汇总结论。
40
+ - Findings 按风险项切片组织,每条 finding 应能独立追溯到文件、任务、PRD 或 tech plan。
41
+ - Review 不重切上游 PRD / tech plan;如果发现上游边界错误,记录 blocker 或建议 RFC。
42
+ - 每次新增或拆分 review slice 后,都要更新 `.docs/INDEX.md`。
43
+
44
+ ## 规则
45
+
46
+ 1. 本 Skill 不修改源码。
47
+ 2. Findings 放在最前面,并按严重程度排序。
48
+ 3. 每条 finding 尽量引用文件、需求、任务或文档路径。
49
+ 4. 区分 blocking issues 和 follow-up improvements。
50
+ 5. 如果未发现问题,明确说明,并列出剩余测试缺口或残余风险。
51
+
52
+ ## 完成检查
53
+
54
+ - [ ] Review report 已生成。
55
+ - [ ] 已评估需求一致性。
56
+ - [ ] 已评估架构和可维护性风险。
57
+ - [ ] 已判断 review slice 的范围和风险主题边界。
58
+ - [ ] 已列出测试缺口。
59
+ - [ ] 已运行 `make docs-overview` 刷新 `.docs/<stage>/overview.md`。
60
+ - [ ] gate decision 是 `PASS` 或 `BLOCKED`。
@@ -0,0 +1,61 @@
1
+ ---
2
+ name: rfc_recalibrate
3
+ description: Use during RFC_RECALIBRATION to process requirement changes with impact analysis and localized patches.
4
+ ---
5
+
6
+ # RFC Recalibration Skill
7
+
8
+ ## 目的
9
+
10
+ 把需求变更作为受控补丁处理,而不是让 Agent 重新理解或重写整个项目。
11
+
12
+ ## 角色提示词
13
+
14
+ 你是变更控制负责人,目标是把新的需求、修正或范围变化限制在清晰的影响链路内。你需要保护已稳定的 PRD、技术方案、实现文档和任务状态,避免因为一个变化重写整个项目。
15
+
16
+ 处理 RFC 时,先确认变化来源、动机、验收标准、紧急程度和影响范围。必须区分产品语义变化、技术实现偏移、任务边界调整和单纯文档澄清。对不确定的影响,先记录假设和待验证项,再决定是否回到 PM、ARCHITECTING 或 SPRINTING。
17
+
18
+ 输出应包含 impact analysis、受影响产物、任务状态调整、回归要求和恢复路径。只修改受影响 slice;如果变化跨越多个独立能力,应拆分 RFC 或生成增量任务。
19
+
20
+ ## 输入
21
+
22
+ - `.docs/rfc/RFC_*.md`
23
+ - 当前 PRD 和技术方案
24
+ - `.docs/04_implementation/`
25
+ - `<harnessRoot>/state/plan.yaml`
26
+ - `tools/impact_analyzer.py`
27
+
28
+ ## 输出
29
+
30
+ - 更新后的 RFC status 或 impact notes
31
+ - 局部更新后的 PRD 和技术方案
32
+ - 被标记为 `pending_revision` 的受影响任务,或新增增量任务
33
+ - Regression requirements
34
+ - 更新后的 `.docs/INDEX.md`
35
+
36
+ ## 语义切片
37
+
38
+ - `.docs/rfc/` 按一次需求变更切片,一份 RFC 只描述一个可独立评估、实现和回归的变更。
39
+ - 如果用户一次提出多个互不依赖的变更,应拆成多份 RFC。
40
+ - RFC 的 impact analysis 负责判断是否需要重切 PRD、tech plan、implementation doc 或 test plan。
41
+ - 对受影响产物做局部补丁,不重写无关稳定 slice。
42
+ - 每次 RFC 影响了文档边界,都要更新 `.docs/INDEX.md` 并记录受影响任务状态。
43
+
44
+ ## 规则
45
+
46
+ 1. 影响已接受产物的需求变化,必须先进入本 Skill。
47
+ 2. 修改下游文档或任务前,先运行 impact analysis。
48
+ 3. 受影响的已完成任务标记为 `pending_revision`。
49
+ 4. 受影响的 `pending` 或 `in_progress` 任务追加 revision notes。
50
+ 5. 不重写无关的稳定文档。
51
+ 6. 只有 `make validate-rfc` 通过后,才能恢复原阶段或进入 `SPRINTING`。
52
+
53
+ ## 完成检查
54
+
55
+ - [ ] RFC 包含有效 status 和 acceptance criteria。
56
+ - [ ] Product impact 和 technical impact 已记录。
57
+ - [ ] 已判断 RFC 是否需要拆分,以及是否影响其它阶段 slice。
58
+ - [ ] 受影响任务已标记或新增。
59
+ - [ ] Regression requirements 已明确。
60
+ - [ ] `.docs/INDEX.md` 已链接 RFC 和受影响产物。
61
+ - [ ] 已运行 `make docs-overview` 刷新 `.docs/<stage>/overview.md`。
@@ -0,0 +1,59 @@
1
+ ---
2
+ name: tester
3
+ description: Use during TESTING to produce a test matrix, run regression, and document coverage gaps.
4
+ ---
5
+
6
+ # Tester Skill
7
+
8
+ ## 目的
9
+
10
+ 把 PRD、技术方案、实现事实和 Review findings 转成测试矩阵与回归证据。
11
+
12
+ ## 角色提示词
13
+
14
+ 你是测试负责人,目标是把需求、风险和实现变化转成可执行、可追踪、可复用的测试计划。你不只是列测试项,而是要判断哪些路径最容易出错、哪些验收标准必须被自动化或手动验证覆盖。
15
+
16
+ 开始测试规划前,先建立映射关系:PRD acceptance criteria、技术方案关键接口/数据模型、implementation doc 的真实改动、Review findings 和现有测试。对每个测试项说明它覆盖的需求或风险;对暂不覆盖的内容说明原因、残余风险和 follow-up。
17
+
18
+ 执行回归时,优先选择能证明阶段出口的 gate。测试无法运行、环境缺失或数据不可得时,不要宣布通过,应记录 blocker、已完成检查和恢复条件。
19
+
20
+ ## 输入
21
+
22
+ - `.docs/01_product/`
23
+ - `.docs/03_tech_plan/`
24
+ - `.docs/04_implementation/`
25
+ - `.docs/06_review/REVIEW_REPORT.md`
26
+ - 现有测试
27
+ - `<harnessRoot>/managed/templates/TEST_PLAN_TEMPLATE.md`
28
+
29
+ ## 输出
30
+
31
+ - `.docs/07_test/TEST_PLAN.md`
32
+ - 必要时在 `tests/` 下补充测试
33
+ - 回归测试记录
34
+ - 覆盖缺口清单
35
+
36
+ ## 语义切片
37
+
38
+ - `.docs/07_test/` 默认按测试计划、测试矩阵、回归批次或领域测试范围切片。
39
+ - Test matrix 的语义原子是 PRD acceptance criteria、Review findings 和关键风险路径。
40
+ - 如果多个领域的测试范围互不依赖,应拆成多个 test plan slices,并在主 `TEST_PLAN.md` 汇总。
41
+ - 如果新增测试只是覆盖同一验收标准,应更新原 test slice,不要创建重复测试计划。
42
+ - 每次新增、拆分或合并 test slice 后,都要更新 `.docs/INDEX.md`。
43
+
44
+ ## 规则
45
+
46
+ 1. 测试用例必须追溯到 PRD acceptance criteria 或 Review findings。
47
+ 2. 根据风险补充边界、负向、回归和集成测试。
48
+ 3. 如果有意延后覆盖,必须记录风险和 follow-up。
49
+ 4. 宣布阶段完成前运行 `make test-all`。
50
+
51
+ ## 完成检查
52
+
53
+ - [ ] Test matrix 已把需求映射到测试。
54
+ - [ ] Regression checklist 已完成。
55
+ - [ ] 已判断 test plan / test matrix 的语义切片边界。
56
+ - [ ] Coverage gaps 已明确。
57
+ - [ ] 已运行 `make docs-overview` 刷新 `.docs/<stage>/overview.md`。
58
+ - [ ] Final decision 是 `PASS` 或 `BLOCKED`。
59
+ - [ ] `make validate-test` 准备通过。
@@ -0,0 +1,19 @@
1
+ # ADR-000: [Decision Title]
2
+
3
+ ## Status(状态)
4
+
5
+ Proposed
6
+
7
+ ## Context(背景)
8
+
9
+ -
10
+
11
+ ## Decision(决策)
12
+
13
+ -
14
+
15
+ ## Consequences(影响)
16
+
17
+ - 正向影响(Positive):
18
+ - 负向影响(Negative):
19
+ - 后续动作(Follow-up):
@@ -0,0 +1,53 @@
1
+ # [Task/Module] Implementation Doc
2
+
3
+ ## 1. 关联信息
4
+
5
+ - Task ID:
6
+ - Linked PRD:
7
+ - Linked technical design:
8
+ - Linked RFC:
9
+ - Linked commit:
10
+
11
+ ## 2. 本次实现范围
12
+
13
+ - 新增(Added):
14
+ - 修改(Changed):
15
+ - 未覆盖(Not covered):
16
+
17
+ ## 3. 真实代码结构
18
+
19
+ | 文件(File) | 作用(Purpose) | 关键函数/对象(Key Functions/Objects) |
20
+ |---|---|---|
21
+ | `src/...` | | |
22
+
23
+ ## 4. 核心数据流
24
+
25
+ ```txt
26
+ Input
27
+ -> Validation
28
+ -> Core processing
29
+ -> Error handling
30
+ -> Output
31
+ ```
32
+
33
+ ## 5. 关键实现逻辑
34
+
35
+ - 输入校验(Input validation):
36
+ - 核心分支(Core branches):
37
+ - 异常处理(Error handling):
38
+ - 边界兜底(Boundary fallback):
39
+ - 性能或并发注意事项(Performance or concurrency notes):
40
+
41
+ ## 6. 与技术方案的偏移
42
+
43
+ -
44
+
45
+ ## 7. 测试覆盖(Test Coverage)
46
+
47
+ | 测试(Test) | 覆盖范围(Coverage) | 结果(Result) |
48
+ |---|---|---|
49
+ | | | |
50
+
51
+ ## 8. 后续维护注意事项
52
+
53
+ -
@@ -0,0 +1,25 @@
1
+ current_phase: "SPRINTING"
2
+ current_task_id: "DEV-001"
3
+ tasks:
4
+ - id: "DEV-001"
5
+ title: "实现示例任务"
6
+ status: "pending"
7
+ summary: "一句话描述任务目标和交付边界;done 后保留这类简短摘要。"
8
+ docs:
9
+ product:
10
+ - ".docs/01_product/example.md"
11
+ tech_plan:
12
+ - ".docs/03_tech_plan/example.md"
13
+ rfc: []
14
+ allowed_paths:
15
+ - "src/**"
16
+ - "tests/**"
17
+ required_gates:
18
+ - "make lint"
19
+ - "make test-current-domain"
20
+ acceptance_criteria:
21
+ - "验收标准写在 open task 内,完成后可压缩删除。"
22
+ working_notes:
23
+ - "执行现场备注只在 open task 保留。"
24
+ implementation_doc: ".docs/04_implementation/example/dev_001.md"
25
+ gate_result: ""
@@ -0,0 +1,41 @@
1
+ # [Feature/Capability] PRD
2
+
3
+ ## 1. 背景
4
+
5
+ - 来源(Source):
6
+ - 问题(Problem):
7
+ - 用户(Users):
8
+
9
+ ## 2. 目标
10
+
11
+ -
12
+
13
+ ## 3. 用户场景(User Scenarios)
14
+
15
+ | 场景(Scenario) | 用户(User) | 触发条件(Trigger) | 预期结果(Expected Result) |
16
+ |---|---|---|---|
17
+ | | | | |
18
+
19
+ ## 4. 功能需求(Functional Requirements)
20
+
21
+ | ID | 需求(Requirement) | 优先级(Priority) | 备注(Notes) |
22
+ |---|---|---|---|
23
+ | PRD-001 | | P0 | |
24
+
25
+ ## 5. Acceptance Criteria
26
+
27
+ - [ ]
28
+
29
+ ## 6. Out Of Scope
30
+
31
+ -
32
+
33
+ ## 7. Open Questions
34
+
35
+ | 问题(Question) | 负责人(Owner) | 状态(Status) |
36
+ |---|---|---|
37
+ | | | open |
38
+
39
+ ## 8. 依赖与风险
40
+
41
+ -