specwf 0.2.2 → 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.
- package/README.md +96 -59
- package/bin/cli.d.ts +2 -0
- package/bin/cli.js +4425 -0
- package/bin/specwf.js +4424 -1
- package/dist/cli.js +3821 -1462
- package/package.json +2 -1
- package/dist/templates/agents/archiver.md +0 -112
- package/dist/templates/agents/executor.md +0 -125
- package/dist/templates/agents/planner.md +0 -114
- package/dist/templates/agents/researcher.md +0 -104
- package/dist/templates/agents/reviewer.md +0 -98
- package/dist/templates/agents/verifier.md +0 -129
- package/dist/templates/artifacts/context.md +0 -151
- package/dist/templates/artifacts/design.md +0 -224
- package/dist/templates/artifacts/goal-review.md +0 -95
- package/dist/templates/artifacts/project.yml +0 -117
- package/dist/templates/artifacts/proposal.md +0 -124
- package/dist/templates/artifacts/quality-review.md +0 -131
- package/dist/templates/artifacts/research.md +0 -127
- package/dist/templates/artifacts/spec-review.md +0 -84
- package/dist/templates/artifacts/state.md +0 -158
- package/dist/templates/artifacts/summary.md +0 -129
- package/dist/templates/artifacts/tasks.md +0 -109
- package/dist/templates/artifacts/verification.md +0 -113
- package/dist/templates/commands/adhoc.md +0 -38
- package/dist/templates/commands/apply.md +0 -20
- package/dist/templates/commands/archive.md +0 -21
- package/dist/templates/commands/continue.md +0 -27
- package/dist/templates/commands/discuss.md +0 -24
- package/dist/templates/commands/grill.md +0 -24
- package/dist/templates/commands/init.md +0 -37
- package/dist/templates/commands/milestone.md +0 -27
- package/dist/templates/commands/plan.md +0 -22
- package/dist/templates/commands/research-phase.md +0 -20
- package/dist/templates/commands/research.md +0 -24
- package/dist/templates/commands/review.md +0 -20
- package/dist/templates/commands/roadmap.md +0 -23
- package/dist/templates/commands/ship.md +0 -36
- package/dist/templates/commands/split.md +0 -16
- package/dist/templates/commands/verify.md +0 -22
- package/dist/templates/skills/adhoc.md +0 -53
- package/dist/templates/skills/apply.md +0 -134
- package/dist/templates/skills/archive.md +0 -109
- package/dist/templates/skills/continue.md +0 -97
- package/dist/templates/skills/discuss.md +0 -95
- package/dist/templates/skills/grill.md +0 -90
- package/dist/templates/skills/init.md +0 -116
- package/dist/templates/skills/milestone.md +0 -36
- package/dist/templates/skills/plan.md +0 -144
- package/dist/templates/skills/research-phase.md +0 -66
- package/dist/templates/skills/research.md +0 -76
- package/dist/templates/skills/review.md +0 -148
- package/dist/templates/skills/roadmap.md +0 -104
- package/dist/templates/skills/ship.md +0 -94
- package/dist/templates/skills/split.md +0 -96
- package/dist/templates/skills/verify.md +0 -147
|
@@ -1,95 +0,0 @@
|
|
|
1
|
-
# Phase 讨论工作流指引
|
|
2
|
-
|
|
3
|
-
## 概述
|
|
4
|
-
|
|
5
|
-
为当前 Phase 做详细的实现决策讨论。这是进入技术实现前的最后一道设计关卡 — 确定 Phase 的目标、范围、设计方案和实现决策,产出 context.md 作为后续所有 change 的决策依据。
|
|
6
|
-
|
|
7
|
-
Discuss 不直接产出代码,但它决定了后续 coding 的质量和方向。
|
|
8
|
-
|
|
9
|
-
## 前置条件
|
|
10
|
-
|
|
11
|
-
- 路线图 ROADMAP.md 已确定
|
|
12
|
-
- 当前 phase 的依赖 phase 已完成
|
|
13
|
-
- 相关的 specs 和 conventions 已就位
|
|
14
|
-
|
|
15
|
-
## 执行步骤
|
|
16
|
-
|
|
17
|
-
### 1. 确定 Phase 范围和边界
|
|
18
|
-
|
|
19
|
-
- 回顾 ROADMAP.md 中当前 phase 的描述
|
|
20
|
-
- 确认 phase 的输入和输出
|
|
21
|
-
- 明确与其他 phase 的接口边界
|
|
22
|
-
|
|
23
|
-
### 2. 讨论技术决策
|
|
24
|
-
|
|
25
|
-
逐项讨论以下决策,每项达成共识后记录:
|
|
26
|
-
|
|
27
|
-
**架构决策**
|
|
28
|
-
- 模块划分和分层
|
|
29
|
-
- 接口设计模式
|
|
30
|
-
- 数据流方向
|
|
31
|
-
|
|
32
|
-
**技术实现决策**
|
|
33
|
-
- 关键数据结构
|
|
34
|
-
- 异常处理策略
|
|
35
|
-
- 测试策略
|
|
36
|
-
|
|
37
|
-
**质量要求**
|
|
38
|
-
- 性能指标
|
|
39
|
-
- 安全要求
|
|
40
|
-
- 可维护性要求
|
|
41
|
-
|
|
42
|
-
### 3. 记录 context.md
|
|
43
|
-
|
|
44
|
-
将讨论结果写入 \`specwf/context.md\`:
|
|
45
|
-
|
|
46
|
-
\`\`\`markdown
|
|
47
|
-
# Phase: <名称>
|
|
48
|
-
|
|
49
|
-
## 目标
|
|
50
|
-
## 范围
|
|
51
|
-
## 架构决策
|
|
52
|
-
- ADR-001: <决策项>
|
|
53
|
-
- 上下文: ...
|
|
54
|
-
- 决策: ...
|
|
55
|
-
- 理由: ...
|
|
56
|
-
|
|
57
|
-
## 接口契约
|
|
58
|
-
## 数据模型
|
|
59
|
-
## 关键实现约束
|
|
60
|
-
## 测试要求
|
|
61
|
-
## 未解决问题
|
|
62
|
-
\`\`\`
|
|
63
|
-
|
|
64
|
-
如果 context.md 已存在,追加或更新当前 phase 的部分。
|
|
65
|
-
|
|
66
|
-
### 4. 识别灰色地带
|
|
67
|
-
|
|
68
|
-
对尚未明确的决策点标记 \`[TODO: discuss]\`,可以先搁置但需记录:
|
|
69
|
-
- 不确定的点
|
|
70
|
-
- 需要进一步调研的领域
|
|
71
|
-
- 可以延后决定的事项
|
|
72
|
-
|
|
73
|
-
## 产物
|
|
74
|
-
|
|
75
|
-
- \`specwf/context.md\`(更新)— 实现决策文档
|
|
76
|
-
|
|
77
|
-
## 验证
|
|
78
|
-
|
|
79
|
-
- [ ] 所有架构决策都有记录和理由
|
|
80
|
-
- [ ] 接口边界清晰
|
|
81
|
-
- [ ] 灰色地带已标记
|
|
82
|
-
- [ ] context.md 与 ROADMAP.md 不矛盾
|
|
83
|
-
|
|
84
|
-
## 常见陷阱
|
|
85
|
-
|
|
86
|
-
- 不要跳过「看起来简单」的决策 — 记录所有选择
|
|
87
|
-
- 如果决策依赖未完成的 phase,标记为 \`[DEFERRED]\`
|
|
88
|
-
- 避免过度设计 — 只讨论当前 phase 需要的决策
|
|
89
|
-
- 如果反复无法达成决策,使用 specwf-advisor agent 提供建议
|
|
90
|
-
|
|
91
|
-
## 参考
|
|
92
|
-
|
|
93
|
-
- ADR(Architecture Decision Record)模式
|
|
94
|
-
- GSD Core 的 discuss 工作流
|
|
95
|
-
- OpenSpec 的 context.md 格式
|
|
@@ -1,90 +0,0 @@
|
|
|
1
|
-
# 需求探讨工作流指引
|
|
2
|
-
|
|
3
|
-
## 概述
|
|
4
|
-
|
|
5
|
-
通过无限制细节提问,与用户深入探讨需求,直到对项目的目标、范围、约束和技术方向达成共识。Grill 阶段不需要代码 — 它的产出一份扎实的 proposal.md,供后续 research 和 roadmap 使用。
|
|
6
|
-
|
|
7
|
-
核心原则:不问「是/否」,而是「为什么」「在什么场景下」「现在的方案是什么」「成功怎么衡量」。
|
|
8
|
-
|
|
9
|
-
## 前置条件
|
|
10
|
-
|
|
11
|
-
- 至少有一个初步想法或需求方向
|
|
12
|
-
- (可选)已读完用户提供的任何参考资料
|
|
13
|
-
|
|
14
|
-
## 执行步骤
|
|
15
|
-
|
|
16
|
-
### 1. 理解背景
|
|
17
|
-
|
|
18
|
-
先让用户描述他想做什么。用简短问题确认:
|
|
19
|
-
- 项目核心目标是什么?
|
|
20
|
-
- 目标用户是谁?
|
|
21
|
-
- 当前状态(从零开始 / 改进现有 / 重构)?
|
|
22
|
-
|
|
23
|
-
### 2. 深挖细节(5W1H)
|
|
24
|
-
|
|
25
|
-
针对每个模糊点持续追问,直到边界清晰:
|
|
26
|
-
|
|
27
|
-
**What**
|
|
28
|
-
- 具体要做什么功能?不做什么(明确排除范围)
|
|
29
|
-
- 有什么输入/输出?
|
|
30
|
-
|
|
31
|
-
**Why**
|
|
32
|
-
- 为什么需要这个?业务驱动力是什么?
|
|
33
|
-
- 有什么必须满足的约束(合规、性能、部署环境)?
|
|
34
|
-
|
|
35
|
-
**Who**
|
|
36
|
-
- 谁用这个系统?用户角色和权限模型?
|
|
37
|
-
- 谁维护?维护者的技术栈?
|
|
38
|
-
|
|
39
|
-
**When**
|
|
40
|
-
- 时间线?里程碑节奏?
|
|
41
|
-
- 最短可用的范围是什么?
|
|
42
|
-
|
|
43
|
-
**Where**
|
|
44
|
-
- 部署环境(云端/私有化/边缘)?
|
|
45
|
-
- 是否已有基础设施(数据库、消息队列、CI/CD)?
|
|
46
|
-
|
|
47
|
-
**How**
|
|
48
|
-
- 偏好的技术栈倾向?
|
|
49
|
-
- 对开发流程有要求吗(TDD、review 强度等)?
|
|
50
|
-
|
|
51
|
-
### 3. 产出 proposal.md
|
|
52
|
-
|
|
53
|
-
将讨论共识整理为 proposal.md:
|
|
54
|
-
\`\`\`markdown
|
|
55
|
-
# <项目名称> Proposal
|
|
56
|
-
|
|
57
|
-
## 概述
|
|
58
|
-
## 目标和成功标准
|
|
59
|
-
## 范围(含排除项)
|
|
60
|
-
## 用户角色
|
|
61
|
-
## 技术倾向
|
|
62
|
-
## 非功能需求
|
|
63
|
-
## 风险与不确定性
|
|
64
|
-
\`\`\`
|
|
65
|
-
|
|
66
|
-
### 4. 确认共识
|
|
67
|
-
|
|
68
|
-
与用户逐项回顾 proposal.md,确认无误后进入 research 阶段。
|
|
69
|
-
|
|
70
|
-
## 产物
|
|
71
|
-
|
|
72
|
-
- \`specwf/proposal.md\` — 需求共识文档
|
|
73
|
-
|
|
74
|
-
## 验证
|
|
75
|
-
|
|
76
|
-
- [ ] 用户对 proposal.md 所有条目确认无歧义
|
|
77
|
-
- [ ] 排除范围清晰表述
|
|
78
|
-
- [ ] 风险项已知且列出
|
|
79
|
-
|
|
80
|
-
## 常见陷阱
|
|
81
|
-
|
|
82
|
-
- 不要太快跳到技术方案 — 先确认「做什么」再讨论「怎么做」
|
|
83
|
-
- 不要默认用户的术语和你一致 — 每遇到专业术语都问一次定义
|
|
84
|
-
- 如果用户有明显的先验假设,温和地指出并确认
|
|
85
|
-
- 当用户说「简单」或「标准」时,一定追问具体是什么
|
|
86
|
-
|
|
87
|
-
## 参考
|
|
88
|
-
|
|
89
|
-
- The Mom Test 提问方法论
|
|
90
|
-
- GSD Core 的 grill 流程
|
|
@@ -1,116 +0,0 @@
|
|
|
1
|
-
# 项目初始化工作流指引
|
|
2
|
-
|
|
3
|
-
## 概述
|
|
4
|
-
|
|
5
|
-
初始化 specwf 项目结构。这是整个工作流的起点,负责创建 specwf/ 目录骨架、specs/ 和 conventions/ 目录、project.yml 配置文件,以及平台命令/agent/skill 文件。
|
|
6
|
-
|
|
7
|
-
对于存量项目,同时执行 codebase mapping 和 spec bootstrap 两个并行任务,从已有代码中提取行为契约。
|
|
8
|
-
|
|
9
|
-
## 前置条件
|
|
10
|
-
|
|
11
|
-
- 项目根目录已初始化 git 仓库
|
|
12
|
-
- 确定 project.yml 配置内容(profile、workflow 开关等)
|
|
13
|
-
|
|
14
|
-
## 执行步骤
|
|
15
|
-
|
|
16
|
-
### 1. 创建目录结构
|
|
17
|
-
|
|
18
|
-
创建以下目录层级:
|
|
19
|
-
\`\`\`
|
|
20
|
-
specwf/
|
|
21
|
-
project.yml # 项目配置
|
|
22
|
-
changes/ # 临时 change
|
|
23
|
-
research/ # 调研产出
|
|
24
|
-
milestones/
|
|
25
|
-
<ms-name>/
|
|
26
|
-
ph/
|
|
27
|
-
<ph-name>/
|
|
28
|
-
changes/
|
|
29
|
-
<change-name>/
|
|
30
|
-
specs/ # delta-specs
|
|
31
|
-
design.md
|
|
32
|
-
tasks.md
|
|
33
|
-
reviews/
|
|
34
|
-
VERIFICATION.md
|
|
35
|
-
conventions/ # 项目约定(按需手写)
|
|
36
|
-
specs/ # 全局行为契约
|
|
37
|
-
<domain>/
|
|
38
|
-
spec.md # SHALL/MUST + GIVEN/WHEN/THEN
|
|
39
|
-
\`\`\`
|
|
40
|
-
|
|
41
|
-
### 2. 生成 project.yml
|
|
42
|
-
|
|
43
|
-
\`\`\`yaml
|
|
44
|
-
version: 1
|
|
45
|
-
platform:
|
|
46
|
-
- omp
|
|
47
|
-
- claude-code
|
|
48
|
-
profile: standard # lite | standard | strict
|
|
49
|
-
context: project # project | milestone | phase
|
|
50
|
-
workflow:
|
|
51
|
-
research: true
|
|
52
|
-
plan_check: true
|
|
53
|
-
tdd: true
|
|
54
|
-
triple_review: true
|
|
55
|
-
auto_advance: true
|
|
56
|
-
spec_injection: true
|
|
57
|
-
review:
|
|
58
|
-
gate: all-pass # all-pass | severity | report-only
|
|
59
|
-
parallel: true
|
|
60
|
-
change:
|
|
61
|
-
parallel: serial # serial | dependency-graph | pipeline
|
|
62
|
-
isolation: false
|
|
63
|
-
git:
|
|
64
|
-
branching: none # none | phase | milestone
|
|
65
|
-
create_tag: false
|
|
66
|
-
conventions:
|
|
67
|
-
inject: true
|
|
68
|
-
models: {}
|
|
69
|
-
\`\`\`
|
|
70
|
-
|
|
71
|
-
### 3. 生成平台文件
|
|
72
|
-
|
|
73
|
-
运行 \`specwf init\` 自动生成:
|
|
74
|
-
- \`.omp/commands/specwf-<step>.md\` — 14 个 slash command
|
|
75
|
-
- \`skills/specwf-<step>/SKILL.md\` — 14 个 skill 指引
|
|
76
|
-
- \`.omp/agents/specwf-<role>.md\` — 6 个 agent 定义
|
|
77
|
-
|
|
78
|
-
### 4. 存量项目:并行引导(可选)
|
|
79
|
-
|
|
80
|
-
如果目标项目已有代码,执行两个并行任务:
|
|
81
|
-
|
|
82
|
-
**任务 A — Codebase Mapping**
|
|
83
|
-
- 分析技术栈和架构
|
|
84
|
-
- 梳理模块结构和依赖关系
|
|
85
|
-
- 产出 specwf/research/STACK.md + ARCHITECTURE.md
|
|
86
|
-
|
|
87
|
-
**任务 B — Spec Bootstrap**
|
|
88
|
-
- 从核心模块的函数签名和注释提取行为契约
|
|
89
|
-
- 写入 specs/<domain>/spec.md(标记 \`# BOOTSTRAPPED\`)
|
|
90
|
-
- 从测试文件推断端到端场景
|
|
91
|
-
|
|
92
|
-
## 产物
|
|
93
|
-
|
|
94
|
-
- \`specwf/\` 目录结构完整
|
|
95
|
-
- \`specwf/project.yml\` 配置文件
|
|
96
|
-
- 平台文件已生成(.omp/ + skills/)
|
|
97
|
-
- 存量项目额外产出:STACK.md + ARCHITECTURE.md + 初始 specs/
|
|
98
|
-
|
|
99
|
-
## 验证
|
|
100
|
-
|
|
101
|
-
- [ ] specwf/ 目录存在且结构完整
|
|
102
|
-
- [ ] project.yml 可被 loadConfig 读取
|
|
103
|
-
- [ ] 平台文件各目录非空
|
|
104
|
-
- [ ] (存量)STACK.md + ARCHITECTURE.md 已生成
|
|
105
|
-
|
|
106
|
-
## 常见陷阱
|
|
107
|
-
|
|
108
|
-
- 不要将 specwf/ 目录放在 .gitignore 中(它承载项目元数据)
|
|
109
|
-
- 存量项目的 spec bootstrap 是估算,后续在 plan 的 delta-spec 中精化
|
|
110
|
-
- conventions/ 需要人工编写,不自动生成
|
|
111
|
-
|
|
112
|
-
## 参考
|
|
113
|
-
|
|
114
|
-
- OpenSpec 的目录结构设计
|
|
115
|
-
- GSD Core 的新项目初始化流程
|
|
116
|
-
- Trellis 的 spec bootstrap 概念仅作参考(AGPL-3.0 不拷代码)
|
|
@@ -1,36 +0,0 @@
|
|
|
1
|
-
# 里程碑管理工作流指引
|
|
2
|
-
|
|
3
|
-
## 概述
|
|
4
|
-
|
|
5
|
-
里程碑(Milestone)是版本周期。当前 milestone 所有 phase 完成后,切换到新 milestone。
|
|
6
|
-
|
|
7
|
-
## 前置条件
|
|
8
|
-
|
|
9
|
-
- 当前 milestone 已完成
|
|
10
|
-
|
|
11
|
-
## 执行步骤
|
|
12
|
-
|
|
13
|
-
### 1. 切换 milestone
|
|
14
|
-
|
|
15
|
-
```bash
|
|
16
|
-
specwf state set-milestone <id>
|
|
17
|
-
```
|
|
18
|
-
|
|
19
|
-
### 2. 继续工作流
|
|
20
|
-
|
|
21
|
-
```bash
|
|
22
|
-
specwf continue
|
|
23
|
-
```
|
|
24
|
-
|
|
25
|
-
## 产物
|
|
26
|
-
|
|
27
|
-
- specwf/state.md — current_milestone 更新
|
|
28
|
-
|
|
29
|
-
## 验证
|
|
30
|
-
|
|
31
|
-
- [ ] specwf state 确认切换
|
|
32
|
-
- [ ] specwf continue 有可用下一步
|
|
33
|
-
|
|
34
|
-
## 常见陷阱
|
|
35
|
-
|
|
36
|
-
- 切换后需更新 roadmap.md 补充新 milestone 的阶段划分
|
|
@@ -1,144 +0,0 @@
|
|
|
1
|
-
# Change 设计工作流指引
|
|
2
|
-
|
|
3
|
-
## 概述
|
|
4
|
-
|
|
5
|
-
对单个 Change 进行详细设计:产出技术方案(design.md)、实现清单(tasks.md)和 delta-specs(规范预先写好的行为契约)。
|
|
6
|
-
|
|
7
|
-
PLAN 是 Change 循环的起点,决定了后续实现和审查的质量。PLAN 做得好,apply 和 review 就流畅。
|
|
8
|
-
|
|
9
|
-
## 前置条件
|
|
10
|
-
|
|
11
|
-
- change 的 proposal.md 已确认
|
|
12
|
-
- context.md 中相关的实现决策已记录
|
|
13
|
-
- 相关的 specs/ 和 conventions/ 已读取
|
|
14
|
-
|
|
15
|
-
## 执行步骤
|
|
16
|
-
|
|
17
|
-
### 1. 读取上下文
|
|
18
|
-
|
|
19
|
-
运行 \`specwf context plan\` 获取当前步骤的上下文清单:
|
|
20
|
-
- 相关的 specs/ 文件
|
|
21
|
-
- conventions/ 文件
|
|
22
|
-
- context.md
|
|
23
|
-
- 外部依赖文档
|
|
24
|
-
|
|
25
|
-
逐个读取列出的文件。
|
|
26
|
-
|
|
27
|
-
### 2. 设计技术方案 — design.md
|
|
28
|
-
|
|
29
|
-
\`\`\`markdown
|
|
30
|
-
# Change: <名称> — 技术方案
|
|
31
|
-
|
|
32
|
-
## 概述
|
|
33
|
-
## 架构变化
|
|
34
|
-
### 新增模块
|
|
35
|
-
### 修改模块
|
|
36
|
-
### 删除模块
|
|
37
|
-
|
|
38
|
-
## 数据模型
|
|
39
|
-
### 新增类型
|
|
40
|
-
### 修改类型
|
|
41
|
-
|
|
42
|
-
## 接口设计
|
|
43
|
-
### 新增接口
|
|
44
|
-
### 修改接口
|
|
45
|
-
|
|
46
|
-
## 关键算法 / 流程
|
|
47
|
-
## 异常处理
|
|
48
|
-
## 测试策略
|
|
49
|
-
## 风险评估
|
|
50
|
-
\`\`\`
|
|
51
|
-
|
|
52
|
-
### 3. 编写 delta-specs
|
|
53
|
-
|
|
54
|
-
在 \`changes/<change>/specs/<domain>/spec.md\` 中预先写本次 change 的行为契约:
|
|
55
|
-
|
|
56
|
-
\`\`\`markdown
|
|
57
|
-
# <domain> 规格
|
|
58
|
-
|
|
59
|
-
## SHALL
|
|
60
|
-
- SHALL <条件>: <预期行为>
|
|
61
|
-
场景: <GIVEN/WHEN/THEN>
|
|
62
|
-
|
|
63
|
-
## MUST
|
|
64
|
-
- MUST <约束条件>
|
|
65
|
-
场景: ...
|
|
66
|
-
\`\`\`
|
|
67
|
-
|
|
68
|
-
**delta-spec 规则**:
|
|
69
|
-
- 只写本次 change 引入或修改的行为
|
|
70
|
-
- 用 SHALL/MUST 表达强制规范
|
|
71
|
-
- 每个条目附带 GIVEN/WHEN/THEN 场景
|
|
72
|
-
- 格式遵循 \`SHALL <条件>: <预期行为>\`
|
|
73
|
-
- 明确引用变更的 spec ID(如有)
|
|
74
|
-
- 覆盖正常路径、边界路径、异常路径
|
|
75
|
-
|
|
76
|
-
### 4. 拆分为 tasks — tasks.md
|
|
77
|
-
|
|
78
|
-
\`\`\`markdown
|
|
79
|
-
# Change: <名称> — 实现任务
|
|
80
|
-
|
|
81
|
-
## type:behavior(需走 TDD 循环)
|
|
82
|
-
1. [ ] RED: <失败的测试>
|
|
83
|
-
- GREEN: <最小实现>
|
|
84
|
-
- REFACTOR: <重构目标>
|
|
85
|
-
2. [ ] RED: ...
|
|
86
|
-
|
|
87
|
-
## type:config(跳过 TDD)
|
|
88
|
-
1. [ ] 配置文件: ...
|
|
89
|
-
|
|
90
|
-
## type:refactor(跳过 TDD)
|
|
91
|
-
1. [ ] 重构: ...
|
|
92
|
-
|
|
93
|
-
## type:docs(跳过 TDD)
|
|
94
|
-
1. [ ] 文档: ...
|
|
95
|
-
|
|
96
|
-
## type:scaffolding(跳过 TDD)
|
|
97
|
-
1. [ ] 脚手架: ...
|
|
98
|
-
\`\`\`
|
|
99
|
-
|
|
100
|
-
**TDD 协议(强制)**:
|
|
101
|
-
- \`type:behavior\` 任务必须走 RED→GREEN→REFACTOR 三步
|
|
102
|
-
- 每个 RED 任务必须有可运行的失败测试
|
|
103
|
-
- GREEN 是使测试通过的最小实现
|
|
104
|
-
- REFACTOR 不改变行为,只改进结构
|
|
105
|
-
- \`type:config/refactor/docs/scaffolding\` 跳过 RED→GREEN→REFACTOR
|
|
106
|
-
|
|
107
|
-
### 5. plan-checker 验证
|
|
108
|
-
|
|
109
|
-
运行 plan-checker 自动验证:
|
|
110
|
-
- [ ] 所有 tasks 标注了 type
|
|
111
|
-
- [ ] type:behavior 任务有完整的 RED→GREEN→REFACTOR 三元组
|
|
112
|
-
- [ ] delta-specs 覆盖了 proposal.md 中所有的 must_haves
|
|
113
|
-
- [ ] 与 context.md 中的决策无矛盾(drift check)
|
|
114
|
-
- [ ] 依赖图完整(跨 change 的 key_links 已标注)
|
|
115
|
-
- [ ] 每个任务有明确的完成标准
|
|
116
|
-
|
|
117
|
-
## 产物
|
|
118
|
-
|
|
119
|
-
- \`changes/<change-name>/design.md\` — 技术方案设计
|
|
120
|
-
- \`changes/<change-name>/tasks.md\` — 实现任务清单(含 TDD 标注)
|
|
121
|
-
- \`changes/<change-name>/specs/<domain>/spec.md\` — delta-specs
|
|
122
|
-
|
|
123
|
-
## 验证
|
|
124
|
-
|
|
125
|
-
- [ ] plan-checker 输出 PASS
|
|
126
|
-
- [ ] 所有 must_have 被 tasks 覆盖
|
|
127
|
-
- [ ] delta-specs 使用 SHALL/MUST 格式
|
|
128
|
-
- [ ] type:behavior 任务有完整的 RED→GREEN→REFACTOR
|
|
129
|
-
- [ ] design.md 与 context.md 的决策一致
|
|
130
|
-
|
|
131
|
-
## 常见陷阱
|
|
132
|
-
|
|
133
|
-
- delta-specs 不能写成实现细节(如「调用 X 函数」),而是行为契约(如「当 X 条件满足时返回 Y」)
|
|
134
|
-
- 不要跳过 type:behavior 的 RED 阶段 — TDD 的关键是测试先行
|
|
135
|
-
- tasks.md 粒度适中:每个任务在 15-60 分钟内完成
|
|
136
|
-
- 如果 change 太大无法清晰拆分 tasks,考虑回到 split 重新拆分
|
|
137
|
-
- delta-specs 覆盖异常路径 — 只写 happy path 等于没写
|
|
138
|
-
|
|
139
|
-
## 参考
|
|
140
|
-
|
|
141
|
-
- TDD (Test-Driven Development) by Kent Beck
|
|
142
|
-
- GSD Core 的 plan phase
|
|
143
|
-
- OpenSpec 的 delta-spec 格式
|
|
144
|
-
- spec-checker 验证清单
|
|
@@ -1,66 +0,0 @@
|
|
|
1
|
-
# Phase 调研工作流指引
|
|
2
|
-
|
|
3
|
-
## 概述
|
|
4
|
-
|
|
5
|
-
对单个 Phase 的实现路径进行技术调研。与项目级 research 不同,phase research 聚焦于具体的实现选择 —— 库的用法、API 设计模式、性能调优策略、已知坑点等。
|
|
6
|
-
|
|
7
|
-
调研由 specwf-researcher agent 在独立上下文中并行执行。
|
|
8
|
-
|
|
9
|
-
## 前置条件
|
|
10
|
-
|
|
11
|
-
- context.md 已记录本次 phase 的决策
|
|
12
|
-
- 确定了需要调研的技术问题(1-3 个方向)
|
|
13
|
-
|
|
14
|
-
## 执行步骤
|
|
15
|
-
|
|
16
|
-
### 1. 提取调研问题
|
|
17
|
-
|
|
18
|
-
从 context.md 和相关的 specs 中提取需要调研的具体问题:
|
|
19
|
-
- 某个库的特定用法
|
|
20
|
-
- 某类问题的模式或最佳实践
|
|
21
|
-
- 框架的功能边界和限制
|
|
22
|
-
- 性能基准数据
|
|
23
|
-
|
|
24
|
-
### 2. 执行调研(可并行)
|
|
25
|
-
|
|
26
|
-
每个问题由 researcher agent 独立调研:
|
|
27
|
-
\`\`\`
|
|
28
|
-
task agent: specwf-researcher
|
|
29
|
-
\`\`\`
|
|
30
|
-
|
|
31
|
-
调研内容:
|
|
32
|
-
- 阅读官方文档和 API 参考
|
|
33
|
-
- 检查社区实践和已知陷阱
|
|
34
|
-
- (可选)验证关键假设 —— 写最小原型测试
|
|
35
|
-
- 产出 RESEARCH.md
|
|
36
|
-
|
|
37
|
-
### 3. 更新 context.md
|
|
38
|
-
|
|
39
|
-
将调研结论的记录 \`[RESEARCHED]\` 标记追加到 context.md:
|
|
40
|
-
- 推荐的实现路径
|
|
41
|
-
- 已知陷阱和规避方法
|
|
42
|
-
- 推荐使用的库版本和配置
|
|
43
|
-
|
|
44
|
-
## 产物
|
|
45
|
-
|
|
46
|
-
- \`specwf/research/ph-<name>/RESEARCH.md\` — Phase 调研报告
|
|
47
|
-
- \`specwf/context.md\`(更新,追加调研结论)
|
|
48
|
-
|
|
49
|
-
## 验证
|
|
50
|
-
|
|
51
|
-
- [ ] 所有调研问题都有答案
|
|
52
|
-
- [ ] 有推荐的实现路径
|
|
53
|
-
- [ ] 已知陷阱和规避方法
|
|
54
|
-
- [ ] 不遗漏关键依赖项
|
|
55
|
-
|
|
56
|
-
## 常见陷阱
|
|
57
|
-
|
|
58
|
-
- 不要只调研「怎么做成」,还要调研「怎么做对」
|
|
59
|
-
- 如果调研发现某个技术选型不可行,立即在 context.md 记录并通知
|
|
60
|
-
- 调研结果要可操作 —— 不是知识收集,是为了指导代码
|
|
61
|
-
- 最小原型对验证关键假设最有效,但不应对原型做重构
|
|
62
|
-
|
|
63
|
-
## 参考
|
|
64
|
-
|
|
65
|
-
- GSD Core 的 phase research 路线
|
|
66
|
-
- context.md 格式
|
|
@@ -1,76 +0,0 @@
|
|
|
1
|
-
# 项目技术调研工作流指引
|
|
2
|
-
|
|
3
|
-
## 概述
|
|
4
|
-
|
|
5
|
-
对项目涉及的技术方向进行并行多方向调研。产出数据驱动的选型对比报告,为 roadmap 和后续 phase 提供技术基础。
|
|
6
|
-
|
|
7
|
-
Research 由 specwf-researcher agent 在独立上下文中并行执行。
|
|
8
|
-
|
|
9
|
-
## 前置条件
|
|
10
|
-
|
|
11
|
-
- 已完成 grill,proposal.md 已确认
|
|
12
|
-
- 确定了 2-5 个需要调研的方向
|
|
13
|
-
|
|
14
|
-
## 执行步骤
|
|
15
|
-
|
|
16
|
-
### 1. 确定调研方向
|
|
17
|
-
|
|
18
|
-
从 proposal.md 提取需要调研的技术决策点,例如:
|
|
19
|
-
- 框架选择(如 Express vs Fastify vs Hono)
|
|
20
|
-
- 数据库选择(如 PostgreSQL vs SQLite)
|
|
21
|
-
- 部署方案(如 Docker vs 无服务器)
|
|
22
|
-
- 关键库/工具评估(如 zod vs valibot 等)
|
|
23
|
-
|
|
24
|
-
列出每个方向的候选方案(2-4 个候选)。
|
|
25
|
-
|
|
26
|
-
### 2. 并行调研(fan-out)
|
|
27
|
-
|
|
28
|
-
每个方向由独立 researcher agent 执行:
|
|
29
|
-
\`\`\`
|
|
30
|
-
task agent: specwf-researcher × N
|
|
31
|
-
\`\`\`
|
|
32
|
-
|
|
33
|
-
每个 researcher 的 assignment 包含:
|
|
34
|
-
- **方向**:要调研的技术决策
|
|
35
|
-
- **候选方案**:要对比的选项
|
|
36
|
-
- **评估维度**:功能满足度、性能、社区活跃度、学习曲线、生态集成、许可证
|
|
37
|
-
- **交付要求**:写入 specwf/research/<direction>/STACK.md
|
|
38
|
-
|
|
39
|
-
### 3. 汇总调研结果
|
|
40
|
-
|
|
41
|
-
收集所有 researcher 的产出,检查:
|
|
42
|
-
- 所有方向是否有推荐方案和理由
|
|
43
|
-
- 候选方案对比表是否完整
|
|
44
|
-
- 已知的 caveat 和陷阱是否记录
|
|
45
|
-
- 推荐方案是否相互兼容
|
|
46
|
-
|
|
47
|
-
### 4. 更新 proposal.md
|
|
48
|
-
|
|
49
|
-
将调研结论的关键决策追加到 proposal.md 的「技术倾向」部分,添加 \`[RESEARCHED]\` 标记。
|
|
50
|
-
|
|
51
|
-
## 产物
|
|
52
|
-
|
|
53
|
-
- \`specwf/research/<direction>/STACK.md\` — 每个方向的方案对比和推荐
|
|
54
|
-
- \`specwf/research/<direction>/PITFALLS.md\` — 已知陷阱和注意事项
|
|
55
|
-
- \`specwf/research/summary.md\` — 汇总决策表
|
|
56
|
-
|
|
57
|
-
## 验证
|
|
58
|
-
|
|
59
|
-
- [ ] 每个调研方向至少有两个候选方案的对比
|
|
60
|
-
- [ ] 推荐方案都有明确理由
|
|
61
|
-
- [ ] 已知陷阱已记录
|
|
62
|
-
- [ ] 推荐的多个方案之间兼容性已检查
|
|
63
|
-
- [ ] proposal.md 已更新调研结论
|
|
64
|
-
|
|
65
|
-
## 常见陷阱
|
|
66
|
-
|
|
67
|
-
- 避免只调研一个方案(确认偏差)
|
|
68
|
-
- 避免过度调研 — 设定每个方向 10-20 条有效信息来源的上限
|
|
69
|
-
- 注意许可证兼容性(GPL/AGPL vs MIT/Apache)
|
|
70
|
-
- 框架的版本号重要 — 确认调研的是最新稳定版
|
|
71
|
-
- 团队熟悉度是合法因素,在推荐理由中记录
|
|
72
|
-
|
|
73
|
-
## 参考
|
|
74
|
-
|
|
75
|
-
- GSD Core 的 research phase 路线
|
|
76
|
-
- OpenSpec 的 STACK.md 模板
|