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.
- package/assets/README.md +5 -0
- package/assets/agents/.gitkeep +1 -0
- package/assets/agents/AGENTS_CORE.md +164 -0
- package/assets/github/.gitkeep +1 -0
- package/assets/github/harness.yml +45 -0
- package/assets/make/.gitkeep +1 -0
- package/assets/make/sdlc-harness.mk +78 -0
- package/assets/policies/allowed_paths.yaml +55 -0
- package/assets/policies/gates.yaml +48 -0
- package/assets/policies/phase_contracts.yaml +140 -0
- package/assets/policies/risk_matrix.yaml +27 -0
- package/assets/skills/architect_design/SKILL.md +62 -0
- package/assets/skills/dev_sprint/SKILL.md +90 -0
- package/assets/skills/implementation_doc/SKILL.md +58 -0
- package/assets/skills/manager/SKILL.md +50 -0
- package/assets/skills/pm_prd/SKILL.md +59 -0
- package/assets/skills/release_manager/SKILL.md +59 -0
- package/assets/skills/reviewer/SKILL.md +60 -0
- package/assets/skills/rfc_recalibrate/SKILL.md +61 -0
- package/assets/skills/tester/SKILL.md +59 -0
- package/assets/templates/ADR_TEMPLATE.md +19 -0
- package/assets/templates/IMPLEMENTATION_DOC_TEMPLATE.md +53 -0
- package/assets/templates/PLAN_TEMPLATE.yaml +25 -0
- package/assets/templates/PRD_TEMPLATE.md +41 -0
- package/assets/templates/RELEASE_TEMPLATE.md +34 -0
- package/assets/templates/REVIEW_TEMPLATE.md +31 -0
- package/assets/templates/RFC_TEMPLATE.md +36 -0
- package/assets/templates/SKILL_TEMPLATE.md +52 -0
- package/assets/templates/TECH_DESIGN_TEMPLATE.md +54 -0
- package/assets/templates/TEST_PLAN_TEMPLATE.md +29 -0
- package/dist/cli.d.ts +2 -0
- package/dist/cli.js +12 -0
- package/dist/commands/doctor.d.ts +1 -0
- package/dist/commands/doctor.js +16 -0
- package/dist/commands/index.d.ts +3 -0
- package/dist/commands/index.js +30 -0
- package/dist/commands/init.d.ts +2 -0
- package/dist/commands/init.js +56 -0
- package/dist/commands/package-source.d.ts +1 -0
- package/dist/commands/package-source.js +24 -0
- package/dist/commands/sync.d.ts +1 -0
- package/dist/commands/sync.js +11 -0
- package/dist/commands/upgrade.d.ts +1 -0
- package/dist/commands/upgrade.js +7 -0
- package/dist/commands/validate.d.ts +1 -0
- package/dist/commands/validate.js +14 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.js +1 -0
- package/dist/lib/config.d.ts +5 -0
- package/dist/lib/config.js +55 -0
- package/dist/lib/doctor.d.ts +6 -0
- package/dist/lib/doctor.js +31 -0
- package/dist/lib/fs.d.ts +8 -0
- package/dist/lib/fs.js +56 -0
- package/dist/lib/harness-root.d.ts +9 -0
- package/dist/lib/harness-root.js +50 -0
- package/dist/lib/init.d.ts +5 -0
- package/dist/lib/init.js +76 -0
- package/dist/lib/managed-file.d.ts +6 -0
- package/dist/lib/managed-file.js +6 -0
- package/dist/lib/migrations.d.ts +12 -0
- package/dist/lib/migrations.js +176 -0
- package/dist/lib/package-json-config.d.ts +2 -0
- package/dist/lib/package-json-config.js +37 -0
- package/dist/lib/package-source.d.ts +8 -0
- package/dist/lib/package-source.js +107 -0
- package/dist/lib/paths.d.ts +5 -0
- package/dist/lib/paths.js +11 -0
- package/dist/lib/sync-engine.d.ts +7 -0
- package/dist/lib/sync-engine.js +202 -0
- package/dist/lib/types.d.ts +22 -0
- package/dist/lib/types.js +1 -0
- package/dist/lib/upgrade.d.ts +1 -0
- package/dist/lib/upgrade.js +16 -0
- package/dist/lib/validators.d.ts +6 -0
- package/dist/lib/validators.js +158 -0
- package/dist/lib/yaml.d.ts +2 -0
- package/dist/lib/yaml.js +7 -0
- package/migrations/README.md +3 -0
- package/package.json +31 -0
- package/source-mappings.yaml +19 -0
package/assets/README.md
ADDED
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
# Canonical Assets
|
|
2
|
+
|
|
3
|
+
This directory stores package canonical assets that `sdlc-harness sync` will materialize into project workspaces.
|
|
4
|
+
|
|
5
|
+
In this source repository, assets should be updated through `sdlc-harness package sync-source` so changes to the workflow authoring files do not drift from package contents.
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
|
|
@@ -0,0 +1,164 @@
|
|
|
1
|
+
# AI SDLC Harness Protocol
|
|
2
|
+
|
|
3
|
+
本仓库使用 AI SDLC Harness 工作流。开始任何工作前,把 `.agent/` 和 `.docs/`
|
|
4
|
+
视为项目事实源。
|
|
5
|
+
|
|
6
|
+
## 事实源
|
|
7
|
+
|
|
8
|
+
- 生命周期状态:`.agent/state/lifecycle.yaml`
|
|
9
|
+
- 执行计划:`.agent/state/plan.yaml`
|
|
10
|
+
- 计划草案:`.agent/state/plan.draft.yaml`
|
|
11
|
+
- 项目长期记忆:`.agent/state/memory.md`
|
|
12
|
+
- 产品文档:`.docs/01_product/`
|
|
13
|
+
- 架构文档:`.docs/02_architecture/`
|
|
14
|
+
- 技术方案:`.docs/03_tech_plan/`
|
|
15
|
+
- 实现文档:`.docs/04_implementation/`
|
|
16
|
+
- Review 文档:`.docs/06_review/`
|
|
17
|
+
- 测试文档:`.docs/07_test/`
|
|
18
|
+
- 发布文档:`.docs/08_release/`
|
|
19
|
+
- RFC 文档:`.docs/rfc/`
|
|
20
|
+
- 全局文档索引:`.docs/INDEX.md`
|
|
21
|
+
|
|
22
|
+
## 派生视图
|
|
23
|
+
|
|
24
|
+
- 每个 `.docs/<stage>/overview.md` 是对应阶段 Markdown slices 的 generated artifact。
|
|
25
|
+
- Markdown slices 和 `.docs/INDEX.md` 才是事实源,`overview.md` 只用于人类浏览和阶段交接。
|
|
26
|
+
- 不要手写或局部编辑 `overview.md`。
|
|
27
|
+
- 任意 `.docs/<stage>/**/*.md` 发生新增、修改、拆分、合并或废弃后,运行 `make docs-overview`。
|
|
28
|
+
- 提交或阶段交付前,运行 `make validate-doc-overviews` 或 `make validate-harness` 确认 Markdown 总览未过期。
|
|
29
|
+
|
|
30
|
+
## Plan Protocol
|
|
31
|
+
|
|
32
|
+
- `plan.yaml` 是当前执行计划事实源。open task 直接包含 `allowed_paths`、`required_gates`、`acceptance_criteria` 和必要的 `working_notes`。
|
|
33
|
+
- task 完成并写入 implementation doc 后,删除 open task 的详细执行字段,只保留简短 `summary`、`implementation_doc` 和 `gate_result`。
|
|
34
|
+
- `plan.draft.yaml` 是架构阶段生成的计划草案,不自动覆盖 `plan.yaml`。
|
|
35
|
+
- 不维护 checkpoint 文件;任务现场只存在于 open task 的 plan 条目里。
|
|
36
|
+
- 历史动作记录以 git commit 为准,产物结果以 implementation doc 为准。
|
|
37
|
+
- `SPRINTING` 阶段每完成一个 task,先在 open task 仍保留完整 `allowed_paths`、`required_gates`、`acceptance_criteria` 等执行合同时创建 task implementation commit;随后再压缩 `plan.yaml` 为 done 摘要并创建 task completion ledger commit。两段提交 push 成功前不进入下一个 task。
|
|
38
|
+
|
|
39
|
+
## Prompt Language Contract
|
|
40
|
+
|
|
41
|
+
- 面向人阅读的说明、规则、SOP、检查清单使用中文。
|
|
42
|
+
- 机器契约保持英文,包括字段名、路径、命令、阶段枚举、状态枚举、脚本参数。
|
|
43
|
+
- 不翻译 `.agent/state/*.yaml`、`.agent/managed/policies/*.yaml` 中的 key。
|
|
44
|
+
- 不翻译 `current_phase`、`active_skill`、`allowed_paths`、`required_gates`、`implementation_doc` 等字段名。
|
|
45
|
+
- 不翻译 `REQUIREMENT_GATHERING`、`ARCHITECTING`、`SPRINTING`、`REVIEWING`、`TESTING`、`RELEASING`、`RFC_RECALIBRATION`、`BLOCKED` 等阶段枚举。
|
|
46
|
+
- 不翻译 `pending`、`in_progress`、`done`、`blocked`、`pending_revision`、`cancelled` 等任务状态。
|
|
47
|
+
- 不翻译 `make validate-*`、`python3 tools/transition.py --to <PHASE>`、`.docs/01_product/`、`.agent/state/plan.yaml` 等命令和路径。
|
|
48
|
+
- 后续更新 `.agent/skills/*/SKILL.md` 或 `.agent/managed/templates/*.md` 时,遵循“中文解释 + 英文精确标识符”。Harness 根目录由 `package.json#sdlcHarness.harnessFolderName` 或 `sdlc-harness.config.json#harnessFolderName` 决定;未配置的项目默认使用 `.agent`。
|
|
49
|
+
|
|
50
|
+
## 通用执行原则
|
|
51
|
+
|
|
52
|
+
以下原则完整迁移自 `multica-ai/andrej-karpathy-skills` 的 MIT guideline,并按本仓库的 Prompt Language Contract 转为“中文说明 + 英文关键词”形式,与阶段化 Harness 协议合并执行。
|
|
53
|
+
|
|
54
|
+
### Karpathy Guidelines(MIT 完整本地化)
|
|
55
|
+
|
|
56
|
+
这些 behavioral guidelines 用来减少常见的 LLM coding mistakes,并可与项目级 instructions 合并使用。
|
|
57
|
+
|
|
58
|
+
**Tradeoff:** 这些 guidelines 更偏向 caution over speed。对于 trivial tasks,可以使用 judgment。
|
|
59
|
+
|
|
60
|
+
## 1. Think Before Coding
|
|
61
|
+
|
|
62
|
+
**不要 assume,不要 hide confusion,要 surface tradeoffs。**
|
|
63
|
+
|
|
64
|
+
Before implementing:
|
|
65
|
+
- 显式说明你的 assumptions。如果 uncertain,先 ask。
|
|
66
|
+
- 如果存在多种 interpretations,要把它们列出来,不要 silently pick。
|
|
67
|
+
- 如果存在 simpler approach,要说出来。必要时要 push back。
|
|
68
|
+
- 如果某件事 unclear,先 stop,说明 confusing 的点,再 ask。
|
|
69
|
+
|
|
70
|
+
## 2. Simplicity First
|
|
71
|
+
|
|
72
|
+
**用 minimum code 解决问题,不做 speculative work。**
|
|
73
|
+
|
|
74
|
+
- 不添加超出用户请求的 features。
|
|
75
|
+
- 不为 single-use code 添加 abstractions。
|
|
76
|
+
- 不添加未被请求的 `flexibility` 或 `configurability`。
|
|
77
|
+
- 不为 impossible scenarios 添加 error handling。
|
|
78
|
+
- 如果你写了 200 行,而它本可以是 50 行,就 rewrite it。
|
|
79
|
+
|
|
80
|
+
Ask yourself: “Would a senior engineer say this is overcomplicated?” 如果答案是 yes,就 simplify。
|
|
81
|
+
|
|
82
|
+
## 3. Surgical Changes
|
|
83
|
+
|
|
84
|
+
**只 touch 必须修改的内容,只 clean up your own mess。**
|
|
85
|
+
|
|
86
|
+
When editing existing code:
|
|
87
|
+
- 不要“顺手 improve”相邻代码、comments 或 formatting。
|
|
88
|
+
- 不要 refactor 没有 broken 的东西。
|
|
89
|
+
- Match existing style,即使你个人会用不同写法。
|
|
90
|
+
- 如果发现 unrelated dead code,只 mention it,不要 delete it。
|
|
91
|
+
|
|
92
|
+
When your changes create orphans:
|
|
93
|
+
- 移除由 YOUR changes 造成 unused 的 imports、variables、functions。
|
|
94
|
+
- 除非用户明确要求,不要移除 pre-existing dead code。
|
|
95
|
+
|
|
96
|
+
The test: 每一行 changed line 都应该能直接 trace 到用户请求。
|
|
97
|
+
|
|
98
|
+
## 4. Goal-Driven Execution
|
|
99
|
+
|
|
100
|
+
**定义 success criteria,并 loop until verified。**
|
|
101
|
+
|
|
102
|
+
把任务转换为 verifiable goals:
|
|
103
|
+
- `Add validation` → 为 invalid inputs 写 tests,然后 make them pass。
|
|
104
|
+
- `Fix the bug` → 写一个能 reproduce 它的 test,然后 make it pass。
|
|
105
|
+
- `Refactor X` → 确保 tests 在 before and after 都 pass。
|
|
106
|
+
|
|
107
|
+
对于 multi-step tasks,先给出 brief plan:
|
|
108
|
+
```
|
|
109
|
+
1. [Step] → verify: [check]
|
|
110
|
+
2. [Step] → verify: [check]
|
|
111
|
+
3. [Step] → verify: [check]
|
|
112
|
+
```
|
|
113
|
+
|
|
114
|
+
Strong success criteria 可以让你 independent loop。Weak criteria,例如 “make it work”,会导致 constant clarification。
|
|
115
|
+
|
|
116
|
+
---
|
|
117
|
+
|
|
118
|
+
**这些 guidelines 生效的信号:** diffs 中 unnecessary changes 更少,因为 overcomplication 导致的 rewrites 更少,并且 clarifying questions 出现在 implementation 之前,而不是 mistakes 之后。
|
|
119
|
+
|
|
120
|
+
### Harness 补充原则
|
|
121
|
+
|
|
122
|
+
1. 阶段约束优先:除非用户明确要求其它工作流动作,否则使用 `active_skill` 指定的 Skill,并服从当前阶段的 allowed paths、required gates 和交付物边界。
|
|
123
|
+
2. 文档先于实现:产品文档和技术方案未形成前,不写业务代码;需求变更必须进入 RFC 工作流。
|
|
124
|
+
3. 验证闭环:多步骤工作先给出简短计划,并为关键步骤绑定验证方式。除非被阻塞,否则持续迭代到对应 `required_gates`、阶段 gate 或明确的人工验收标准满足。
|
|
125
|
+
4. 派生物可再生成:`overview.md`、包内 assets 等 generated artifact 必须由对应命令刷新,不手写局部补丁。
|
|
126
|
+
|
|
127
|
+
## 工作规则
|
|
128
|
+
|
|
129
|
+
1. 选择任何角色或 Skill 前,先读取 `.agent/state/lifecycle.yaml`。
|
|
130
|
+
2. 除非用户明确要求其它工作流动作,否则使用 `active_skill` 指定的 Skill。
|
|
131
|
+
3. 产品文档和技术方案未形成前,不写业务代码。
|
|
132
|
+
4. 在 `SPRINTING` 阶段,一次只执行一个任务。
|
|
133
|
+
5. 在 `SPRINTING` 阶段,只编辑当前 open task 的 `allowed_paths` 允许的文件。
|
|
134
|
+
6. 不要在当前 open task 的 `required_gates` 通过前把任务标记为 `done`。
|
|
135
|
+
7. 代码 gate 通过后,更新任务实现文档和 `.docs/INDEX.md`。
|
|
136
|
+
8. `reviewer` 角色只读,不直接修改源码。
|
|
137
|
+
9. 需求变更必须进入 RFC 工作流。
|
|
138
|
+
10. task/release 历史动作记录使用 git commit、tag 或外部 release 系统,不维护 `.agent/archive/` 常规归档。
|
|
139
|
+
11. 在 `SPRINTING` 阶段,task 完成闭环必须先提交保留完整 open task 合同的 task implementation commit,再提交压缩 `plan.yaml` 后的 task completion ledger commit;如果没有 remote/upstream、权限或凭证导致无法 push,不要开始下一个 task,先报告 blocker。
|
|
140
|
+
12. 文档 slice 发生变化后,运行 `make docs-overview` 刷新对应 `overview.md`。
|
|
141
|
+
13. open task 必须在 `plan.yaml` 中包含完整执行合同,再继续推进或交接。
|
|
142
|
+
14. 如果信息缺失,或 gate 因基础设施原因失败,停止推进并报告 blocker。
|
|
143
|
+
|
|
144
|
+
## 宏指令
|
|
145
|
+
|
|
146
|
+
- `/status`:报告当前阶段、角色、任务、阻塞项和下一步动作。
|
|
147
|
+
- `/next`:运行当前阶段映射的 Skill。
|
|
148
|
+
- `/advance`:校验当前阶段出口 gate,通过后才尝试流转。
|
|
149
|
+
- `/rfc <file>`:挂起当前流程并进入 RFC recalibration。
|
|
150
|
+
- `/syncdocs`:同步 `.docs/INDEX.md` 与当前文档事实源。
|
|
151
|
+
- `/overview`:运行 `make docs-overview`,刷新 `.docs/<stage>/overview.md` 派生视图。
|
|
152
|
+
- `/review`:运行只读 Review 工作流。
|
|
153
|
+
- `/test`:运行测试计划和验证工作流。
|
|
154
|
+
|
|
155
|
+
## 阶段流转
|
|
156
|
+
|
|
157
|
+
正常阶段流转不要手动编辑 `.agent/state/lifecycle.yaml`。使用:
|
|
158
|
+
|
|
159
|
+
```sh
|
|
160
|
+
python3 tools/transition.py --to <PHASE>
|
|
161
|
+
```
|
|
162
|
+
|
|
163
|
+
流转前先运行阶段 gate,通常使用 `make validate-current`,或使用
|
|
164
|
+
`.agent/policies/phase_contracts.yaml` 中列出的具体 `make validate-*` 目标。
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
name: Harness Gates
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
pull_request:
|
|
5
|
+
push:
|
|
6
|
+
branches:
|
|
7
|
+
- main
|
|
8
|
+
workflow_dispatch:
|
|
9
|
+
inputs:
|
|
10
|
+
gate:
|
|
11
|
+
description: "Make target to run"
|
|
12
|
+
required: true
|
|
13
|
+
default: "validate-harness"
|
|
14
|
+
type: choice
|
|
15
|
+
options:
|
|
16
|
+
- validate-harness
|
|
17
|
+
- validate-doc-overviews
|
|
18
|
+
- validate-current
|
|
19
|
+
- validate-pm
|
|
20
|
+
- validate-design
|
|
21
|
+
- validate-dev
|
|
22
|
+
- validate-review
|
|
23
|
+
- validate-test
|
|
24
|
+
- validate-release
|
|
25
|
+
- validate-rfc
|
|
26
|
+
|
|
27
|
+
jobs:
|
|
28
|
+
harness:
|
|
29
|
+
runs-on: ubuntu-latest
|
|
30
|
+
steps:
|
|
31
|
+
- uses: actions/checkout@v4
|
|
32
|
+
- uses: actions/setup-node@v4
|
|
33
|
+
with:
|
|
34
|
+
node-version: "24"
|
|
35
|
+
cache: "npm"
|
|
36
|
+
- name: Install package dependencies
|
|
37
|
+
run: npm install
|
|
38
|
+
- name: Test sdlc-harness package
|
|
39
|
+
run: npm test --workspace agent-project-sdlc
|
|
40
|
+
- name: Check package canonical source drift
|
|
41
|
+
run: npm --workspace agent-project-sdlc exec -- sdlc-harness package check-source
|
|
42
|
+
- name: Run harness gate
|
|
43
|
+
run: make "${HARNESS_GATE}"
|
|
44
|
+
env:
|
|
45
|
+
HARNESS_GATE: ${{ github.event.inputs.gate || 'validate-harness' }}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
PYTHON ?= python3
|
|
2
|
+
|
|
3
|
+
.PHONY: help status docs-overview validate-doc-overviews validate-harness validate-current validate-pm validate-design validate-dev validate-review validate-test validate-release validate-rfc lint test-current-domain test-all build
|
|
4
|
+
|
|
5
|
+
help:
|
|
6
|
+
@echo "AI SDLC Harness commands"
|
|
7
|
+
@echo " make status 查看 lifecycle 和 task 状态"
|
|
8
|
+
@echo " make docs-overview 生成 .docs 各阶段 overview.md 派生视图"
|
|
9
|
+
@echo " make validate-doc-overviews 校验 .docs 各阶段 overview.md 是否最新"
|
|
10
|
+
@echo " make validate-harness 校验 Harness 骨架、配置和提示词语言契约"
|
|
11
|
+
@echo " make validate-current 运行当前 lifecycle phase 的 gate"
|
|
12
|
+
@echo " make validate-pm 校验产品需求产物"
|
|
13
|
+
@echo " make validate-design 校验架构设计、技术方案和任务草案"
|
|
14
|
+
@echo " make validate-dev 校验 sprint 任务状态、路径、代码 gate 和实现文档"
|
|
15
|
+
@echo " make validate-review 校验 Review report"
|
|
16
|
+
@echo " make validate-test 校验 regression/test plan"
|
|
17
|
+
@echo " make validate-release 校验 release note、smoke result 和 rollback plan"
|
|
18
|
+
@echo " make validate-rfc 校验 RFC 产物并运行完整回归入口"
|
|
19
|
+
|
|
20
|
+
status:
|
|
21
|
+
$(PYTHON) tools/status.py
|
|
22
|
+
|
|
23
|
+
docs-overview:
|
|
24
|
+
$(PYTHON) tools/build_doc_overviews.py --all
|
|
25
|
+
|
|
26
|
+
validate-doc-overviews:
|
|
27
|
+
$(PYTHON) tools/build_doc_overviews.py --all --check
|
|
28
|
+
|
|
29
|
+
validate-harness:
|
|
30
|
+
$(PYTHON) tools/validate_harness.py
|
|
31
|
+
$(PYTHON) tools/validate_prompt_language.py
|
|
32
|
+
$(PYTHON) tools/build_doc_overviews.py --all --check
|
|
33
|
+
|
|
34
|
+
validate-current:
|
|
35
|
+
$(PYTHON) tools/run_current_gate.py
|
|
36
|
+
|
|
37
|
+
validate-pm:
|
|
38
|
+
test -f .docs/INDEX.md
|
|
39
|
+
$(PYTHON) tools/validate_prd.py
|
|
40
|
+
|
|
41
|
+
validate-design:
|
|
42
|
+
$(PYTHON) tools/validate_design.py
|
|
43
|
+
$(PYTHON) tools/validate_plan_draft.py
|
|
44
|
+
|
|
45
|
+
validate-dev:
|
|
46
|
+
$(PYTHON) tools/validate_plan.py
|
|
47
|
+
$(PYTHON) tools/validate_allowed_paths.py
|
|
48
|
+
$(MAKE) lint
|
|
49
|
+
$(MAKE) test-current-domain
|
|
50
|
+
$(PYTHON) tools/validate_task_docs.py
|
|
51
|
+
|
|
52
|
+
validate-review:
|
|
53
|
+
test -f .docs/06_review/REVIEW_REPORT.md
|
|
54
|
+
$(PYTHON) tools/validate_review.py
|
|
55
|
+
|
|
56
|
+
validate-test:
|
|
57
|
+
$(MAKE) test-all
|
|
58
|
+
$(PYTHON) tools/validate_test_plan.py
|
|
59
|
+
|
|
60
|
+
validate-release:
|
|
61
|
+
$(MAKE) build
|
|
62
|
+
$(PYTHON) tools/validate_release_plan.py
|
|
63
|
+
|
|
64
|
+
validate-rfc:
|
|
65
|
+
$(PYTHON) tools/validate_rfc.py
|
|
66
|
+
$(MAKE) test-all
|
|
67
|
+
|
|
68
|
+
lint:
|
|
69
|
+
@echo "No project lint command configured yet. Replace this target with your stack-specific lint command."
|
|
70
|
+
|
|
71
|
+
test-current-domain:
|
|
72
|
+
@echo "No domain test command configured yet. Replace this target with focused tests for current_task_id."
|
|
73
|
+
|
|
74
|
+
test-all:
|
|
75
|
+
@echo "No full test command configured yet. Replace this target with the project regression suite."
|
|
76
|
+
|
|
77
|
+
build:
|
|
78
|
+
@echo "No build command configured yet. Replace this target with the project build/package command."
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
global:
|
|
2
|
+
never_edit_without_confirmation:
|
|
3
|
+
- ".git/**"
|
|
4
|
+
- ".env"
|
|
5
|
+
- ".env.*"
|
|
6
|
+
- "secrets/**"
|
|
7
|
+
- "production/**"
|
|
8
|
+
|
|
9
|
+
phases:
|
|
10
|
+
REQUIREMENT_GATHERING:
|
|
11
|
+
write:
|
|
12
|
+
- ".docs/00_raw/**"
|
|
13
|
+
- ".docs/01_product/**"
|
|
14
|
+
- ".docs/INDEX.md"
|
|
15
|
+
|
|
16
|
+
ARCHITECTING:
|
|
17
|
+
write:
|
|
18
|
+
- ".docs/02_architecture/**"
|
|
19
|
+
- ".docs/03_tech_plan/**"
|
|
20
|
+
- ".docs/05_decisions/**"
|
|
21
|
+
- "<harnessRoot>/state/plan.draft.yaml"
|
|
22
|
+
- ".docs/INDEX.md"
|
|
23
|
+
|
|
24
|
+
SPRINTING:
|
|
25
|
+
write_from_task_allowed_paths: true
|
|
26
|
+
always_allow:
|
|
27
|
+
- ".docs/04_implementation/**"
|
|
28
|
+
- ".docs/INDEX.md"
|
|
29
|
+
- "<harnessRoot>/state/plan.yaml"
|
|
30
|
+
- "<harnessRoot>/state/gate_results.log"
|
|
31
|
+
|
|
32
|
+
REVIEWING:
|
|
33
|
+
read_only_source: true
|
|
34
|
+
write:
|
|
35
|
+
- ".docs/06_review/**"
|
|
36
|
+
- ".docs/INDEX.md"
|
|
37
|
+
|
|
38
|
+
TESTING:
|
|
39
|
+
write:
|
|
40
|
+
- ".docs/07_test/**"
|
|
41
|
+
- "tests/**"
|
|
42
|
+
- ".docs/INDEX.md"
|
|
43
|
+
|
|
44
|
+
RELEASING:
|
|
45
|
+
write:
|
|
46
|
+
- ".docs/08_release/**"
|
|
47
|
+
- ".docs/INDEX.md"
|
|
48
|
+
|
|
49
|
+
RFC_RECALIBRATION:
|
|
50
|
+
write:
|
|
51
|
+
- ".docs/rfc/**"
|
|
52
|
+
- ".docs/01_product/**"
|
|
53
|
+
- ".docs/03_tech_plan/**"
|
|
54
|
+
- "<harnessRoot>/state/plan.yaml"
|
|
55
|
+
- ".docs/INDEX.md"
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
gates:
|
|
2
|
+
validate-harness:
|
|
3
|
+
command: "make validate-harness"
|
|
4
|
+
purpose: "验证 Harness 模板、状态源、策略和 Skill 文件是否完整"
|
|
5
|
+
required_for:
|
|
6
|
+
- "all"
|
|
7
|
+
|
|
8
|
+
validate-pm:
|
|
9
|
+
command: "make validate-pm"
|
|
10
|
+
purpose: "验证 PRD、验收标准、Out of Scope 和 Open Questions"
|
|
11
|
+
required_for:
|
|
12
|
+
- "REQUIREMENT_GATHERING"
|
|
13
|
+
|
|
14
|
+
validate-design:
|
|
15
|
+
command: "make validate-design"
|
|
16
|
+
purpose: "验证架构设计、技术方案、任务草案和任务字段完整性"
|
|
17
|
+
required_for:
|
|
18
|
+
- "ARCHITECTING"
|
|
19
|
+
|
|
20
|
+
validate-dev:
|
|
21
|
+
command: "make validate-dev"
|
|
22
|
+
purpose: "验证任务状态、allowed_paths、代码检查、测试和实现文档"
|
|
23
|
+
required_for:
|
|
24
|
+
- "SPRINTING"
|
|
25
|
+
|
|
26
|
+
validate-review:
|
|
27
|
+
command: "make validate-review"
|
|
28
|
+
purpose: "验证 Review 报告、风险结论和测试入口建议"
|
|
29
|
+
required_for:
|
|
30
|
+
- "REVIEWING"
|
|
31
|
+
|
|
32
|
+
validate-test:
|
|
33
|
+
command: "make validate-test"
|
|
34
|
+
purpose: "验证测试矩阵、回归记录和覆盖缺口"
|
|
35
|
+
required_for:
|
|
36
|
+
- "TESTING"
|
|
37
|
+
|
|
38
|
+
validate-release:
|
|
39
|
+
command: "make validate-release"
|
|
40
|
+
purpose: "验证发布说明、Smoke Test、部署检查和回滚方案"
|
|
41
|
+
required_for:
|
|
42
|
+
- "RELEASING"
|
|
43
|
+
|
|
44
|
+
validate-rfc:
|
|
45
|
+
command: "make validate-rfc"
|
|
46
|
+
purpose: "验证 RFC 格式、影响分析、回归要求和状态"
|
|
47
|
+
required_for:
|
|
48
|
+
- "RFC_RECALIBRATION"
|
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+
phases:
|
|
2
|
+
IDLE:
|
|
3
|
+
goal: "等待项目启动"
|
|
4
|
+
role: "manager"
|
|
5
|
+
skill: "manager"
|
|
6
|
+
inputs:
|
|
7
|
+
- "<harnessRoot>/state/lifecycle.yaml"
|
|
8
|
+
outputs:
|
|
9
|
+
- "<harnessRoot>/state/lifecycle.yaml"
|
|
10
|
+
gates: []
|
|
11
|
+
next: "REQUIREMENT_GATHERING"
|
|
12
|
+
|
|
13
|
+
REQUIREMENT_GATHERING:
|
|
14
|
+
goal: "收集需求并形成产品方案"
|
|
15
|
+
role: "pm"
|
|
16
|
+
skill: "pm_prd"
|
|
17
|
+
inputs:
|
|
18
|
+
- ".docs/00_raw/"
|
|
19
|
+
outputs:
|
|
20
|
+
- ".docs/01_product/"
|
|
21
|
+
- ".docs/INDEX.md"
|
|
22
|
+
gates:
|
|
23
|
+
- "make validate-pm"
|
|
24
|
+
next: "ARCHITECTING"
|
|
25
|
+
|
|
26
|
+
ARCHITECTING:
|
|
27
|
+
goal: "根据产品方案生成架构设计、技术方案和任务草案"
|
|
28
|
+
role: "architect"
|
|
29
|
+
skill: "architect_design"
|
|
30
|
+
inputs:
|
|
31
|
+
- ".docs/01_product/"
|
|
32
|
+
- ".docs/02_architecture/"
|
|
33
|
+
outputs:
|
|
34
|
+
- ".docs/02_architecture/"
|
|
35
|
+
- ".docs/03_tech_plan/"
|
|
36
|
+
- "<harnessRoot>/state/plan.draft.yaml"
|
|
37
|
+
gates:
|
|
38
|
+
- "make validate-design"
|
|
39
|
+
next: "SPRINTING"
|
|
40
|
+
|
|
41
|
+
SPRINTING:
|
|
42
|
+
goal: "按任务状态执行开发、测试和实现文档沉淀"
|
|
43
|
+
role: "developer"
|
|
44
|
+
skill: "dev_sprint"
|
|
45
|
+
inputs:
|
|
46
|
+
- "<harnessRoot>/state/plan.yaml"
|
|
47
|
+
- "current open task plan contract"
|
|
48
|
+
- ".docs/01_product/"
|
|
49
|
+
- ".docs/03_tech_plan/"
|
|
50
|
+
outputs:
|
|
51
|
+
- "src/"
|
|
52
|
+
- "tests/"
|
|
53
|
+
- ".docs/04_implementation/"
|
|
54
|
+
- "<harnessRoot>/state/gate_results.log"
|
|
55
|
+
gates:
|
|
56
|
+
- "make validate-dev"
|
|
57
|
+
next: "REVIEWING"
|
|
58
|
+
|
|
59
|
+
REVIEWING:
|
|
60
|
+
goal: "只读审查实现质量、需求一致性和架构风险"
|
|
61
|
+
role: "reviewer"
|
|
62
|
+
skill: "reviewer"
|
|
63
|
+
inputs:
|
|
64
|
+
- ".docs/01_product/"
|
|
65
|
+
- ".docs/03_tech_plan/"
|
|
66
|
+
- ".docs/04_implementation/"
|
|
67
|
+
- "git diff"
|
|
68
|
+
outputs:
|
|
69
|
+
- ".docs/06_review/REVIEW_REPORT.md"
|
|
70
|
+
gates:
|
|
71
|
+
- "make validate-review"
|
|
72
|
+
next: "TESTING"
|
|
73
|
+
|
|
74
|
+
TESTING:
|
|
75
|
+
goal: "形成测试矩阵并完成回归验证"
|
|
76
|
+
role: "tester"
|
|
77
|
+
skill: "tester"
|
|
78
|
+
inputs:
|
|
79
|
+
- ".docs/01_product/"
|
|
80
|
+
- ".docs/03_tech_plan/"
|
|
81
|
+
- ".docs/04_implementation/"
|
|
82
|
+
- ".docs/06_review/"
|
|
83
|
+
outputs:
|
|
84
|
+
- ".docs/07_test/"
|
|
85
|
+
- "tests/"
|
|
86
|
+
gates:
|
|
87
|
+
- "make validate-test"
|
|
88
|
+
next: "RELEASING"
|
|
89
|
+
|
|
90
|
+
RELEASING:
|
|
91
|
+
goal: "发布准备、发布检查和回滚方案"
|
|
92
|
+
role: "release_manager"
|
|
93
|
+
skill: "release_manager"
|
|
94
|
+
inputs:
|
|
95
|
+
- ".docs/07_test/"
|
|
96
|
+
- "build artifacts"
|
|
97
|
+
outputs:
|
|
98
|
+
- ".docs/08_release/"
|
|
99
|
+
gates:
|
|
100
|
+
- "make validate-release"
|
|
101
|
+
next: "COMPLETED"
|
|
102
|
+
|
|
103
|
+
COMPLETED:
|
|
104
|
+
goal: "当前里程碑已完成"
|
|
105
|
+
role: "manager"
|
|
106
|
+
skill: "manager"
|
|
107
|
+
inputs:
|
|
108
|
+
- ".docs/08_release/"
|
|
109
|
+
outputs:
|
|
110
|
+
- "<harnessRoot>/state/lifecycle.yaml"
|
|
111
|
+
gates: []
|
|
112
|
+
next: "IDLE"
|
|
113
|
+
|
|
114
|
+
RFC_RECALIBRATION:
|
|
115
|
+
goal: "处理需求变更、影响分析、局部补丁和任务回退"
|
|
116
|
+
role: "rfc_owner"
|
|
117
|
+
skill: "rfc_recalibrate"
|
|
118
|
+
inputs:
|
|
119
|
+
- ".docs/rfc/"
|
|
120
|
+
- ".docs/01_product/"
|
|
121
|
+
- ".docs/03_tech_plan/"
|
|
122
|
+
- "<harnessRoot>/state/plan.yaml"
|
|
123
|
+
outputs:
|
|
124
|
+
- ".docs/rfc/"
|
|
125
|
+
- "<harnessRoot>/state/plan.yaml"
|
|
126
|
+
- ".docs/INDEX.md"
|
|
127
|
+
gates:
|
|
128
|
+
- "make validate-rfc"
|
|
129
|
+
next: "SPRINTING"
|
|
130
|
+
|
|
131
|
+
BLOCKED:
|
|
132
|
+
goal: "等待人工补充信息、授权或基础设施处理"
|
|
133
|
+
role: "manager"
|
|
134
|
+
skill: "manager"
|
|
135
|
+
inputs:
|
|
136
|
+
- "<harnessRoot>/state/lifecycle.yaml"
|
|
137
|
+
outputs:
|
|
138
|
+
- "<harnessRoot>/state/lifecycle.yaml"
|
|
139
|
+
gates: []
|
|
140
|
+
next: "REQUIREMENT_GATHERING"
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
risk_levels:
|
|
2
|
+
P0:
|
|
3
|
+
label: "必须人工确认"
|
|
4
|
+
examples:
|
|
5
|
+
- "生产数据删除、迁移或不可逆写入"
|
|
6
|
+
- "认证、授权、支付、审计、合规策略变化"
|
|
7
|
+
- "跨服务接口契约破坏性变更"
|
|
8
|
+
- "无法通过本地或 CI gate 复现的关键失败"
|
|
9
|
+
action: "进入 BLOCKED,说明风险和所需确认"
|
|
10
|
+
|
|
11
|
+
P1:
|
|
12
|
+
label: "需要明确记录并建议人工复核"
|
|
13
|
+
examples:
|
|
14
|
+
- "公共 API 行为变化"
|
|
15
|
+
- "核心性能路径改造"
|
|
16
|
+
- "测试覆盖明显不足但业务要求继续"
|
|
17
|
+
- "与既有技术方案存在偏移"
|
|
18
|
+
action: "记录在实现文档、Review 报告或 RFC 中"
|
|
19
|
+
|
|
20
|
+
P2:
|
|
21
|
+
label: "Agent 可继续处理"
|
|
22
|
+
examples:
|
|
23
|
+
- "局部 bug 修复"
|
|
24
|
+
- "文档补充"
|
|
25
|
+
- "单任务范围内的测试补充"
|
|
26
|
+
- "非破坏性重构"
|
|
27
|
+
action: "按当前阶段 Skill 继续推进"
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: architect_design
|
|
3
|
+
description: Use during ARCHITECTING to create architecture docs, technical plans, interface contracts, and task drafts.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Architect Design Skill
|
|
7
|
+
|
|
8
|
+
## 目的
|
|
9
|
+
|
|
10
|
+
把已确认的 PRD 转成可实施的架构设计、技术方案、接口契约和机器可读任务草案。
|
|
11
|
+
|
|
12
|
+
## 角色提示词
|
|
13
|
+
|
|
14
|
+
你是资深架构师,目标是把产品需求转成能落地、能验证、能分工的技术方案。你不仅要产出 architecture / tech plan 文档,还要在对话中帮助用户澄清边界、约束、风险和可行路径。
|
|
15
|
+
|
|
16
|
+
开始设计前,先确认 PRD 的 requirement IDs、目标用户、验收标准、Out of Scope 和未决问题。如果需求不足以做技术决策,要明确列出缺口;如果存在多种方案,要用简洁的 tradeoff 说明成本、风险、迁移复杂度、可测试性和长期维护影响。
|
|
17
|
+
|
|
18
|
+
架构产物应区分稳定边界和实现计划:architecture slice 记录领域边界、子系统、关键风险和长期约束;tech plan slice 记录接口契约、数据模型、模块方案、任务拆分和 gate。不要把重大架构变化藏在 task 描述里。
|
|
19
|
+
|
|
20
|
+
## 输入
|
|
21
|
+
|
|
22
|
+
- `.docs/INDEX.md`
|
|
23
|
+
- 相关 `.docs/01_product/` PRD
|
|
24
|
+
- 现有 `.docs/02_architecture/`
|
|
25
|
+
- 当前代码结构概览
|
|
26
|
+
- `<harnessRoot>/managed/templates/TECH_DESIGN_TEMPLATE.md`
|
|
27
|
+
- `<harnessRoot>/managed/templates/PLAN_TEMPLATE.yaml`
|
|
28
|
+
|
|
29
|
+
## 输出
|
|
30
|
+
|
|
31
|
+
- `.docs/02_architecture/` 下的架构文档
|
|
32
|
+
- `.docs/03_tech_plan/` 下的技术方案
|
|
33
|
+
- 需要长期保留的 ADR 写入 `.docs/05_decisions/`
|
|
34
|
+
- `<harnessRoot>/state/plan.draft.yaml`
|
|
35
|
+
- 更新后的 `.docs/INDEX.md`
|
|
36
|
+
|
|
37
|
+
## 语义切片
|
|
38
|
+
|
|
39
|
+
- `.docs/02_architecture/` 按领域边界、子系统、跨模块架构问题或关键技术风险切片。
|
|
40
|
+
- `.docs/03_tech_plan/` 按可实现范围、接口契约、数据模型、模块方案或任务组切片。
|
|
41
|
+
- `.docs/05_decisions/` 按单个架构决策切片,即一份 ADR 只记录一个 durable decision。
|
|
42
|
+
- 如果一个技术方案跨越多个独立模块,应拆成多个 tech plan slice,并在 `plan.draft.yaml` 中分别引用。
|
|
43
|
+
- 如果实现计划改变了已有模块边界,应更新相关 architecture slice,而不是只在 task 描述里补一句。
|
|
44
|
+
- 每次新增、拆分、合并或废弃 slice 后,都要更新 `.docs/INDEX.md`。
|
|
45
|
+
|
|
46
|
+
## 规则
|
|
47
|
+
|
|
48
|
+
1. 技术方案必须引用 PRD 路径和 requirement IDs。
|
|
49
|
+
2. 每个 open task 必须包含 `id`、`title`、`status`、`summary`、`docs`、`allowed_paths`、`required_gates`、`acceptance_criteria` 和 `implementation_doc`。
|
|
50
|
+
3. `plan.draft.yaml` 不得自动覆盖 `plan.yaml`。
|
|
51
|
+
4. 风险或不清晰的问题按 `<harnessRoot>/managed/policies/risk_matrix.yaml` 标记。
|
|
52
|
+
5. 任务边界应足够小,能在一次开发执行和一份 implementation doc 内闭环。
|
|
53
|
+
|
|
54
|
+
## 完成检查
|
|
55
|
+
|
|
56
|
+
- [ ] 架构文档和技术方案已生成。
|
|
57
|
+
- [ ] 相关接口契约和数据结构已明确。
|
|
58
|
+
- [ ] 已判断 architecture / tech plan / ADR 的语义切片边界。
|
|
59
|
+
- [ ] task draft 字段完整且范围清晰。
|
|
60
|
+
- [ ] `.docs/INDEX.md` 已链接新增产物。
|
|
61
|
+
- [ ] 已运行 `make docs-overview` 刷新 `.docs/<stage>/overview.md`。
|
|
62
|
+
- [ ] `make validate-design` 准备通过。
|