@namewta/speculo 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/LICENSE +21 -0
- package/README.md +89 -0
- package/dist/src/cli.d.ts +2 -0
- package/dist/src/cli.js +58 -0
- package/dist/src/cli.js.map +1 -0
- package/dist/src/index.d.ts +10 -0
- package/dist/src/index.js +60 -0
- package/dist/src/index.js.map +1 -0
- package/dist/src/utils.d.ts +1 -0
- package/dist/src/utils.js +11 -0
- package/dist/src/utils.js.map +1 -0
- package/package.json +54 -0
- package/speculo/.speculo/.config/LESSONS.md +9 -0
- package/speculo/.speculo/.config/RULES.md +9 -0
- package/speculo/.speculo/.config/adr/.gitkeep +1 -0
- package/speculo/.speculo/.config/context/.gitkeep +1 -0
- package/speculo/.speculo/archive/dev/.gitkeep +0 -0
- package/speculo/.speculo/archive/doc/.gitkeep +1 -0
- package/speculo/.speculo/commands/.gitkeep +0 -0
- package/speculo/.speculo/dev/.gitkeep +0 -0
- package/speculo/.speculo/dev/docs-sync-state.json +14 -0
- package/speculo/.speculo/dev-status.json +3 -0
- package/speculo/.speculo/doc/.gitkeep +1 -0
- package/speculo/.speculo/doc-status.json +3 -0
- package/speculo/commands/archive.md +53 -0
- package/speculo/commands/caveman.md +43 -0
- package/speculo/commands/grill-me.md +42 -0
- package/speculo/commands/handoff.md +42 -0
- package/speculo/commands/scaffold-exercises.md +50 -0
- package/speculo/commands/status.md +51 -0
- package/speculo/commands/write-a-skill.md +46 -0
- package/speculo/skills/caveman/SKILL.md +38 -0
- package/speculo/skills/caveman/references/compression-rules.md +102 -0
- package/speculo/skills/github-npm-ops/SKILL.md +53 -0
- package/speculo/skills/github-npm-ops/references/ci-and-security-ops.md +178 -0
- package/speculo/skills/github-npm-ops/references/failure-recovery.md +132 -0
- package/speculo/skills/github-npm-ops/references/issue-pr-triage.md +219 -0
- package/speculo/skills/github-npm-ops/references/package-json-checklist.md +171 -0
- package/speculo/skills/github-npm-ops/references/preflight-checklist.md +39 -0
- package/speculo/skills/github-npm-ops/references/publish-detection.md +68 -0
- package/speculo/skills/github-npm-ops/references/release-notes-injection.md +236 -0
- package/speculo/skills/github-npm-ops/references/release-pipeline.md +108 -0
- package/speculo/skills/github-npm-ops/references/setup-npm-token.md +63 -0
- package/speculo/skills/github-npm-ops/references/troubleshooting-playbook.md +305 -0
- package/speculo/skills/github-npm-ops/references/version-bump-flow.md +232 -0
- package/speculo/skills/github-npm-ops/references/workflow-yaml-reference.md +268 -0
- package/speculo/skills/grill-me/SKILL.md +40 -0
- package/speculo/skills/handoff/SKILL.md +41 -0
- package/speculo/skills/scaffold-exercises/SKILL.md +41 -0
- package/speculo/skills/scaffold-exercises/references/exercise-structure.md +85 -0
- package/speculo/skills/scaffold-exercises/references/lint-and-git.md +54 -0
- package/speculo/skills/speculo-write/SKILL.md +53 -0
- package/speculo/skills/speculo-write/references/asset-selection-sop.md +65 -0
- package/speculo/skills/speculo-write/references/command-authoring-sop.md +92 -0
- package/speculo/skills/speculo-write/references/migration-sop.md +101 -0
- package/speculo/skills/speculo-write/references/persistence-contract-sop.md +123 -0
- package/speculo/skills/speculo-write/references/skill-authoring-sop.md +195 -0
- package/speculo/skills/speculo-write/references/validation-checklist.md +73 -0
- package/speculo/skills/speculo-write/references/workflow-authoring-sop.md +130 -0
- package/speculo/workflows/dev/00-INDEX.md +56 -0
- package/speculo/workflows/dev/01-grill-with-docs/01-grill-with-docs.md +79 -0
- package/speculo/workflows/dev/01-grill-with-docs/ADR-FORMAT.md +49 -0
- package/speculo/workflows/dev/01-grill-with-docs/CONTEXT-FORMAT.md +65 -0
- package/speculo/workflows/dev/01-grill-with-docs/grill-context-scan.md +30 -0
- package/speculo/workflows/dev/01-grill-with-docs/grill-decision.md +38 -0
- package/speculo/workflows/dev/02-prd/02-prd.md +64 -0
- package/speculo/workflows/dev/02-prd/prd-synthesis.md +30 -0
- package/speculo/workflows/dev/02-prd/prd-zoom-out.md +29 -0
- package/speculo/workflows/dev/03-tdd/03-tdd.md +80 -0
- package/speculo/workflows/dev/03-tdd/deep-modules.md +33 -0
- package/speculo/workflows/dev/03-tdd/interface-design.md +31 -0
- package/speculo/workflows/dev/03-tdd/mocking.md +60 -0
- package/speculo/workflows/dev/03-tdd/refactoring.md +10 -0
- package/speculo/workflows/dev/03-tdd/tdd-finish.md +28 -0
- package/speculo/workflows/dev/03-tdd/tdd-loop.md +33 -0
- package/speculo/workflows/dev/03-tdd/tdd-plan.md +30 -0
- package/speculo/workflows/dev/03-tdd/tests.md +61 -0
- package/speculo/workflows/dev/D-docs-sync/D-docs-sync.md +97 -0
- package/speculo/workflows/dev/D-docs-sync/agents-contract.md +95 -0
- package/speculo/workflows/dev/D-docs-sync/changelog-contract.md +155 -0
- package/speculo/workflows/dev/D-docs-sync/docs-sync-diff.md +50 -0
- package/speculo/workflows/dev/D-docs-sync/docs-sync-finish.md +33 -0
- package/speculo/workflows/dev/D-docs-sync/docs-sync-state.md +32 -0
- package/speculo/workflows/dev/D-docs-sync/docs-sync-update.md +35 -0
- package/speculo/workflows/dev/D-docs-sync/readme-contract.md +124 -0
- package/speculo/workflows/dev/D-docs-sync/state-json-schema.md +155 -0
- package/speculo/workflows/dev/H-diagnose/H-diagnose.md +80 -0
- package/speculo/workflows/dev/H-diagnose/diagnose-fix.md +34 -0
- package/speculo/workflows/dev/H-diagnose/diagnose-guide.md +114 -0
- package/speculo/workflows/dev/H-diagnose/diagnose-loop.md +32 -0
- package/speculo/workflows/dev/H-diagnose/scripts/hitl-loop.template.sh +41 -0
- package/speculo/workflows/dev/I-to-issues/I-to-issues.md +70 -0
- package/speculo/workflows/dev/I-to-issues/issues-slices.md +31 -0
- package/speculo/workflows/dev/R-review/R-review.md +82 -0
- package/speculo/workflows/dev/R-review/review-setup.md +39 -0
- package/speculo/workflows/dev/R-review/review-two-axis.md +33 -0
- package/speculo/workflows/dev/_templates/diagnosis-template.md +19 -0
- package/speculo/workflows/dev/_templates/docs-sync-report-template.md +28 -0
- package/speculo/workflows/dev/_templates/docs-sync-state-template.json +14 -0
- package/speculo/workflows/dev/_templates/grill-context-map-template.md +19 -0
- package/speculo/workflows/dev/_templates/grill-decision-log-template.md +19 -0
- package/speculo/workflows/dev/_templates/issues-slices-template.md +19 -0
- package/speculo/workflows/dev/_templates/prd-overview-template.md +19 -0
- package/speculo/workflows/dev/_templates/prd-template.md +25 -0
- package/speculo/workflows/dev/_templates/regression-template.md +19 -0
- package/speculo/workflows/dev/_templates/review-report-template.md +16 -0
- package/speculo/workflows/dev/_templates/review-sources-template.md +24 -0
- package/speculo/workflows/dev/_templates/tdd-log-template.md +16 -0
- package/speculo/workflows/dev/_templates/tdd-plan-template.md +19 -0
- package/speculo/workflows/dev/_templates/tdd-verification-template.md +16 -0
- package/speculo/workflows/doc/00-INDEX.md +51 -0
- package/speculo/workflows/doc/B-writing-beats/B-writing-beats.md +77 -0
- package/speculo/workflows/doc/B-writing-beats/writing-beats-append.md +31 -0
- package/speculo/workflows/doc/B-writing-beats/writing-beats-options.md +29 -0
- package/speculo/workflows/doc/E-edit-article/E-edit-article.md +77 -0
- package/speculo/workflows/doc/E-edit-article/edit-article-plan.md +30 -0
- package/speculo/workflows/doc/E-edit-article/edit-article-rewrite.md +31 -0
- package/speculo/workflows/doc/F-writing-fragments/F-writing-fragments.md +78 -0
- package/speculo/workflows/doc/F-writing-fragments/writing-fragments-interview.md +32 -0
- package/speculo/workflows/doc/F-writing-fragments/writing-fragments-log.md +29 -0
- package/speculo/workflows/doc/S-writing-shape/S-writing-shape.md +79 -0
- package/speculo/workflows/doc/S-writing-shape/writing-shape-block.md +32 -0
- package/speculo/workflows/doc/S-writing-shape/writing-shape-opening.md +27 -0
- package/speculo/workflows/doc/_templates/edit-article-plan-template.md +24 -0
- package/speculo/workflows/doc/_templates/edit-article-template.md +6 -0
- package/speculo/workflows/doc/_templates/writing-article-template.md +6 -0
- package/speculo/workflows/doc/_templates/writing-beat-options-template.md +20 -0
- package/speculo/workflows/doc/_templates/writing-fragments-template.md +6 -0
- package/speculo/workflows/doc/_templates/writing-interview-log-template.md +20 -0
- package/speculo/workflows/doc/_templates/writing-shape-log-template.md +24 -0
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
# Workflow Authoring SOP
|
|
2
|
+
|
|
3
|
+
## 入口结构
|
|
4
|
+
|
|
5
|
+
workflow 放在 `speculo/workflows/<cat>/`,`<cat>` 只能是 `dev`、`doc`、`ops`。
|
|
6
|
+
|
|
7
|
+
目录和入口文件必须同名:
|
|
8
|
+
|
|
9
|
+
```text
|
|
10
|
+
speculo/workflows/<cat>/<entry>/<entry>.md
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
主线 workflow 使用数字前缀,如 `01-grill-with-docs`。横向 workflow 使用字母前缀,如 `H-diagnose`、`R-review`、`D-docs-sync`。
|
|
14
|
+
|
|
15
|
+
## Frontmatter
|
|
16
|
+
|
|
17
|
+
入口 frontmatter 只承载发现元数据:
|
|
18
|
+
|
|
19
|
+
```yaml
|
|
20
|
+
---
|
|
21
|
+
id: <cat>/<name>
|
|
22
|
+
category: <cat>
|
|
23
|
+
name: <人类可读名>
|
|
24
|
+
description: <一句话用途>
|
|
25
|
+
keywords: [<关键词>]
|
|
26
|
+
---
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
禁止把 phases、模板、依赖、状态字段写进 frontmatter。
|
|
30
|
+
|
|
31
|
+
## 正文必备章节
|
|
32
|
+
|
|
33
|
+
入口正文必须包含:
|
|
34
|
+
|
|
35
|
+
- `## 阶段`
|
|
36
|
+
- `## 依赖`
|
|
37
|
+
- `## 状态扩展字段`
|
|
38
|
+
- `## 完成与状态更新`
|
|
39
|
+
|
|
40
|
+
阶段条目必须写清:
|
|
41
|
+
|
|
42
|
+
- 规范 phase 文件
|
|
43
|
+
- 模板路径
|
|
44
|
+
- 产物文件名
|
|
45
|
+
- 完成准则
|
|
46
|
+
|
|
47
|
+
## Phase 文件
|
|
48
|
+
|
|
49
|
+
phase 文件不需要 frontmatter。每个 phase 文件写清:
|
|
50
|
+
|
|
51
|
+
- 输入
|
|
52
|
+
- 产物
|
|
53
|
+
- 填写引导
|
|
54
|
+
- 边界
|
|
55
|
+
- 完成准则
|
|
56
|
+
|
|
57
|
+
phase 文件只放该阶段执行所需内容,不重复入口文件的全局说明。
|
|
58
|
+
|
|
59
|
+
## 模板
|
|
60
|
+
|
|
61
|
+
模板放在:
|
|
62
|
+
|
|
63
|
+
```text
|
|
64
|
+
speculo/workflows/<cat>/_templates/
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
命名:
|
|
68
|
+
|
|
69
|
+
```text
|
|
70
|
+
<name>-<artifact>-template.md
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
模板不写 frontmatter,顶部用归属说明:
|
|
74
|
+
|
|
75
|
+
```markdown
|
|
76
|
+
> **服务工作流:** `../<entry>/<entry>.md`
|
|
77
|
+
> **产物文件名:** `<artifact>.md`
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
模板占位符必须使用 `[TODO: ...]`。
|
|
81
|
+
|
|
82
|
+
## 持久化路径
|
|
83
|
+
|
|
84
|
+
workflow 产物写入:
|
|
85
|
+
|
|
86
|
+
```text
|
|
87
|
+
.speculo/<cat>/<change>/
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
当前 change 的状态写入:
|
|
91
|
+
|
|
92
|
+
```text
|
|
93
|
+
.speculo/<cat>/<change>/.status.json
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
顶层 active 索引写入:
|
|
97
|
+
|
|
98
|
+
```text
|
|
99
|
+
.speculo/<cat>-status.json
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
项目级规则、经验、上下文和 ADR 使用:
|
|
103
|
+
|
|
104
|
+
```text
|
|
105
|
+
.speculo/.config/RULES.md
|
|
106
|
+
.speculo/.config/LESSONS.md
|
|
107
|
+
.speculo/.config/context/
|
|
108
|
+
.speculo/.config/adr/
|
|
109
|
+
```
|
|
110
|
+
|
|
111
|
+
不要把新状态放到项目根目录。`.status.json` 元字段、顶层索引 schema 和写入责任表见 `persistence-contract-sop.md`。
|
|
112
|
+
|
|
113
|
+
## 索引与文档同步
|
|
114
|
+
|
|
115
|
+
新增 workflow 后检查:
|
|
116
|
+
|
|
117
|
+
- 对应分类的 `00-INDEX.md` 是否需要新增别名
|
|
118
|
+
- `.speculo/<cat>-status.json` 和 `.speculo/<cat>/.gitkeep` 是否存在
|
|
119
|
+
- `.speculo/archive/<cat>/.gitkeep` 是否存在
|
|
120
|
+
- 项目若有 `docs/quick-reference.md` 等入口索引,是否需要新增条目
|
|
121
|
+
- CLI tests 是否需要断言复制新入口
|
|
122
|
+
|
|
123
|
+
## 完成线
|
|
124
|
+
|
|
125
|
+
- 入口 frontmatter 合规
|
|
126
|
+
- 正文必备章节齐全
|
|
127
|
+
- 所有跨文件引用使用相对路径
|
|
128
|
+
- 非模板文件不残留无说明 TODO
|
|
129
|
+
- 模板只保留 `[TODO: ...]` 占位符
|
|
130
|
+
- `pnpm test` 通过或记录无法运行原因
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: dev/index
|
|
3
|
+
category: dev
|
|
4
|
+
name: Dev Workflow Index
|
|
5
|
+
description: 开发工作流导航、状态汇报与下一步推荐入口
|
|
6
|
+
keywords: [dev, 开发, workflow, index, 状态]
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# Dev Workflow Index
|
|
10
|
+
|
|
11
|
+
本文件是 dev 分类的导航入口。进入时先读取 `../../.speculo/dev-status.json`,再按其中 active change 读取 `../../.speculo/dev/<change>/.status.json`,根据用户意图推荐下一步。
|
|
12
|
+
|
|
13
|
+
## 入口别名
|
|
14
|
+
|
|
15
|
+
| 别名 | 入口 | 用途 |
|
|
16
|
+
|------|------|------|
|
|
17
|
+
| `dev/01` | `01-grill-with-docs/01-grill-with-docs.md` | 领域术语、CONTEXT、ADR 与方案拷问 |
|
|
18
|
+
| `dev/02` | `02-prd/02-prd.md` | zoom-out 全景理解与 PRD 综合 |
|
|
19
|
+
| `dev/03` | `03-tdd/03-tdd.md` | 垂直切片 TDD 实现 |
|
|
20
|
+
| `dev/I` | `I-to-issues/I-to-issues.md` | 垂直切片 issue 分解,可嵌入其他 dev workflow |
|
|
21
|
+
| `dev/H` | `H-diagnose/H-diagnose.md` | hotfix / bug / 性能回退诊断 |
|
|
22
|
+
| `dev/R` | `R-review/R-review.md` | Standards / Spec 双维度 diff 审查 |
|
|
23
|
+
| `dev/D` | `D-docs-sync/D-docs-sync.md` | 基于 git diff 同步 README、CHANGELOG、AGENTS 等对外文档 |
|
|
24
|
+
|
|
25
|
+
## 进入协议
|
|
26
|
+
|
|
27
|
+
1. 若用户未指定 change,扫描 `../../.speculo/dev-status.json` 和 `../../.speculo/dev/*/.status.json`,列出 active changes。
|
|
28
|
+
2. 若只有一个 active change,默认继续该 change;若有多个 active change,要求用户选择。
|
|
29
|
+
3. 若没有 active change,按用户意图创建新的 change 目录,并初始化 `.status.json` 与 `../../.speculo/dev-status.json`。
|
|
30
|
+
4. 推荐入口时优先使用用户显式别名;没有别名时按执行模式推荐。
|
|
31
|
+
5. 执行任何 workflow 前,读取该 workflow 入口文件、阶段文件、模板和被调用 skill wrapper。
|
|
32
|
+
|
|
33
|
+
## 执行模式
|
|
34
|
+
|
|
35
|
+
- `full`:`dev/01` -> `dev/02` -> `dev/I` -> `dev/03`。
|
|
36
|
+
- `planning-only`:`dev/01` -> `dev/02` -> `dev/I`,不进入实现。
|
|
37
|
+
- `implementation-only`:已有 PRD、issue 或明确任务时,从 `dev/03` 开始。
|
|
38
|
+
- `hotfix`:Bug、异常、性能回退时,从 `dev/H` 开始;修复阶段可嵌入 `dev/03` 的 TDD 回归循环。
|
|
39
|
+
- `review`:已有 fixed point 或用户要求审查时,从 `dev/R` 开始。
|
|
40
|
+
- `docs-sync`:需要基于 git 差异刷新对外文档时,从 `dev/D` 开始。
|
|
41
|
+
|
|
42
|
+
## 状态汇报
|
|
43
|
+
|
|
44
|
+
输出 dev 状态时至少包含:
|
|
45
|
+
|
|
46
|
+
- active change 数量与每个 change 的 `current_phase`
|
|
47
|
+
- 最近更新的 change,按 `updated_at` 倒序
|
|
48
|
+
- `phase_history` 最后一项为 `blocked` 或 `updated_at` 超过 14 天未变化的 change
|
|
49
|
+
- 推荐下一步入口和原因
|
|
50
|
+
|
|
51
|
+
## 完成与状态更新
|
|
52
|
+
|
|
53
|
+
- 所有 dev workflow 必须维护同一 change 的 `.status.json`。
|
|
54
|
+
- 进入 phase 时更新 `current_phase`,并在 `phase_history` 追加 `in-progress` 记录。
|
|
55
|
+
- phase 完成时写入 `completed_at` 和 `status: completed`。
|
|
56
|
+
- 只有完成当前 change 的最终交付边界时,才把 `change_status` 置为 `completed`。
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: dev/grill-with-docs
|
|
3
|
+
category: dev
|
|
4
|
+
name: Grill With Docs
|
|
5
|
+
description: 结合项目术语、CONTEXT 与 ADR 对方案进行领域澄清和决策压力测试
|
|
6
|
+
keywords: [grill, context, adr, 术语, 决策]
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# Grill With Docs 工作流执行指引
|
|
10
|
+
|
|
11
|
+
本工作流用于在 PRD 或实现前澄清领域语言、识别决策分支,并把已确认的上下文沉淀为当前 change 的可追踪产物。领域拷问、CONTEXT 格式和 ADR 判断规则已内置在本 workflow 目录中。
|
|
12
|
+
|
|
13
|
+
## 内置指引
|
|
14
|
+
|
|
15
|
+
### 何时使用
|
|
16
|
+
|
|
17
|
+
当 dev workflow 需要把用户方案与现有领域模型、术语表、ADR 或代码现实交叉验证时使用。
|
|
18
|
+
|
|
19
|
+
### 输入
|
|
20
|
+
|
|
21
|
+
- 用户提出的计划、需求、设计或变更意图
|
|
22
|
+
- `.speculo/.config/RULES.md` 和用户明确指出的项目规则、设计约束或长期文档
|
|
23
|
+
- `.speculo/.config/context/CONTEXT.md`、`.speculo/.config/context/CONTEXT-MAP.md`、`.speculo/.config/adr/` 和相关代码
|
|
24
|
+
- 当前 change 目录:`.speculo/dev/<change>/`
|
|
25
|
+
|
|
26
|
+
### 输出
|
|
27
|
+
|
|
28
|
+
- `.speculo/dev/<change>/context-map.md`
|
|
29
|
+
- `.speculo/dev/<change>/decision-log.md`
|
|
30
|
+
- 已确认的术语、决策、开放问题和 ADR 候选
|
|
31
|
+
- 需要用户进一步决策的问题,每次只问一个
|
|
32
|
+
|
|
33
|
+
### 执行原则
|
|
34
|
+
|
|
35
|
+
针对计划的每个方面不断向用户提问,直到达成共识。沿着设计树的每条分支逐一展开,逐个解决决策之间的依赖关系。对于每个问题,给出推荐答案。
|
|
36
|
+
|
|
37
|
+
每次只问一个问题,等待用户对当前问题的反馈后再继续。如果某个问题可以通过探索代码库来回答,就直接探索代码库。
|
|
38
|
+
|
|
39
|
+
需要格式约定时读取同目录 `CONTEXT-FORMAT.md` 或 `ADR-FORMAT.md`。项目 CONTEXT 或 ADR 的创建、修改必须写入 `.speculo/.config/` 下,并符合本 workflow 的用户确认策略;未确认内容只记录到当前 change 的 `decision-log.md`。
|
|
40
|
+
|
|
41
|
+
## 阶段
|
|
42
|
+
|
|
43
|
+
### 1. Context Scan — 上下文扫描
|
|
44
|
+
- 规范:`grill-context-scan.md`
|
|
45
|
+
- 模板:`../_templates/grill-context-map-template.md`
|
|
46
|
+
- 产物:`context-map.md`
|
|
47
|
+
- 完成准则:
|
|
48
|
+
- 已记录相关术语表、ADR、代码区域和缺口
|
|
49
|
+
- `context-map.md` 无残留 `[TODO:]`
|
|
50
|
+
|
|
51
|
+
### 2. Decision Grill — 决策拷问
|
|
52
|
+
- 规范:`grill-decision.md`
|
|
53
|
+
- 模板:`../_templates/grill-decision-log-template.md`
|
|
54
|
+
- 产物:`decision-log.md`
|
|
55
|
+
- 完成准则:
|
|
56
|
+
- 关键决策均有结论、推荐答案或开放问题
|
|
57
|
+
- 需要写入 `.speculo/.config/context/` 或 `.speculo/.config/adr/` 的内容已获用户确认,或记录为候选
|
|
58
|
+
- `decision-log.md` 无残留 `[TODO:]`
|
|
59
|
+
|
|
60
|
+
## 依赖
|
|
61
|
+
|
|
62
|
+
- 软依赖:无
|
|
63
|
+
- 硬依赖:无
|
|
64
|
+
|
|
65
|
+
## 状态扩展字段
|
|
66
|
+
|
|
67
|
+
本工作流需在同 change 的 `.status.json` 追加:
|
|
68
|
+
|
|
69
|
+
- `dev_entry` (string) — 固定为 `dev/01`
|
|
70
|
+
- `embedded_guides` (array) — 包含 `grill-with-docs`
|
|
71
|
+
- `context_paths` (array) — 已读取的 CONTEXT、ADR、代码或配置路径
|
|
72
|
+
- `decision_status` (open | resolved | blocked) — 决策澄清状态
|
|
73
|
+
- `adr_candidates` (array) — ADR 候选清单
|
|
74
|
+
|
|
75
|
+
## 完成与状态更新
|
|
76
|
+
|
|
77
|
+
- 进入每个 phase 时更新 `current_phase` 和 `phase_history`。
|
|
78
|
+
- phase 完成后更新 `updated_at`、产物路径和扩展字段。
|
|
79
|
+
- 本 workflow 完成后不自动完成 change;默认移交 `../02-prd/02-prd.md` 或按用户要求停止。
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
# ADR 格式
|
|
2
|
+
|
|
3
|
+
本辅助文档只定义项目 ADR 的写法。默认产物仍写入 `.speculo/dev/<change>/decision-log.md`;只有用户明确确认时,才按本格式创建项目 ADR。
|
|
4
|
+
|
|
5
|
+
ADR 存放在 `.speculo/.config/adr/` 目录下,使用顺序编号:`0001-slug.md`、`0002-slug.md`,以此类推。
|
|
6
|
+
|
|
7
|
+
`.speculo/.config/adr/` 目录由 Speculo 初始化提供;如果目标项目缺失该目录,按需创建。
|
|
8
|
+
|
|
9
|
+
## 模板
|
|
10
|
+
|
|
11
|
+
```md
|
|
12
|
+
# {决策的简短标题}
|
|
13
|
+
|
|
14
|
+
{1-3 句话:背景是什么、我们决定了什么、为什么这样决定。}
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
就这些。一个 ADR 可以只是一段话。价值在于记录「做出了某个决策」以及「为什么」——而不是填满各个章节。
|
|
18
|
+
|
|
19
|
+
## 可选章节
|
|
20
|
+
|
|
21
|
+
只有确实能增加价值时才包含以下章节。大多数 ADR 不需要它们。
|
|
22
|
+
|
|
23
|
+
- **Status** 前置元数据(`proposed | accepted | deprecated | superseded by ADR-NNNN`)—— 当决策被重新审视时很有用
|
|
24
|
+
- **Considered Options** —— 只有被拒绝的替代方案值得记住时才写
|
|
25
|
+
- **Consequences** —— 只有非显而易见的下游影响需要指出时才写
|
|
26
|
+
|
|
27
|
+
## 编号
|
|
28
|
+
|
|
29
|
+
扫描 `.speculo/.config/adr/` 找到已有的最大编号,然后加一。
|
|
30
|
+
|
|
31
|
+
## 何时提议创建 ADR
|
|
32
|
+
|
|
33
|
+
以下三个条件必须同时满足:
|
|
34
|
+
|
|
35
|
+
1. **难以逆转** —— 日后改变主意的代价不可忽略
|
|
36
|
+
2. **缺少上下文会令人意外** —— 未来的读者看到代码会疑惑「他们到底为什么要这样做?」
|
|
37
|
+
3. **真实权衡的结果** —— 确实存在替代方案,而你基于特定原因选择了其中一个
|
|
38
|
+
|
|
39
|
+
如果一个决策很容易逆转,就跳过它——你反正会逆转它。如果它不令人意外,没人会疑惑为什么。如果没有真正的替代方案,除了「我们做了显而易见的事」之外没有什么可记录的。
|
|
40
|
+
|
|
41
|
+
### 哪些情况应该写 ADR
|
|
42
|
+
|
|
43
|
+
- **架构形态。** 「我们使用 monorepo。」「写模型采用事件溯源,读模型投射到 Postgres。」
|
|
44
|
+
- **上下文之间的集成模式。** 「Ordering 和 Billing 通过领域事件通信,而非同步 HTTP。」
|
|
45
|
+
- **带有锁定效应的技术选型。** 数据库、消息总线、认证提供商、部署目标。不是每个库——只是那些换掉需要花一个季度的。
|
|
46
|
+
- **边界和范围决策。** 「客户数据由 Customer 上下文拥有,其他上下文只通过 ID 引用。」明确的「不做」和「要做」同样有价值。
|
|
47
|
+
- **刻意偏离显而易见的路径。** 「我们用原生 SQL 而非 ORM,因为 X。」任何理性读者会假设相反做法的地方。这能防止下一个工程师去“修复”某个刻意为之的设计。
|
|
48
|
+
- **代码中看不见的约束。** 「因为合规要求,我们不能用 AWS。」「因为合作方 API 合约,响应时间必须在 200 ms 以内。」
|
|
49
|
+
- **拒绝理由不明显的替代方案。** 如果你考虑过 GraphQL 但因为某些微妙原因选了 REST,记录下来——否则六个月后会有人再次提议 GraphQL。
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
# CONTEXT.md 格式
|
|
2
|
+
|
|
3
|
+
本辅助文档只定义项目术语表的写法。默认产物仍写入 `.speculo/dev/<change>/context-map.md` 和 `.speculo/dev/<change>/decision-log.md`;只有用户明确确认时,才按本格式创建或更新 `.speculo/.config/context/CONTEXT.md` / `.speculo/.config/context/CONTEXT-MAP.md`。
|
|
4
|
+
|
|
5
|
+
## 结构
|
|
6
|
+
|
|
7
|
+
```md
|
|
8
|
+
# {上下文名称}
|
|
9
|
+
|
|
10
|
+
{一到两句话描述这个上下文是什么、为什么存在。}
|
|
11
|
+
|
|
12
|
+
## 术语
|
|
13
|
+
|
|
14
|
+
**订单(Order)**:
|
|
15
|
+
{一到两句话描述该术语}
|
|
16
|
+
_避免使用_:Purchase、transaction
|
|
17
|
+
|
|
18
|
+
**发票(Invoice)**:
|
|
19
|
+
交付后向客户发送的付款请求。
|
|
20
|
+
_避免使用_:Bill、payment request
|
|
21
|
+
|
|
22
|
+
**客户(Customer)**:
|
|
23
|
+
下单的个人或组织。
|
|
24
|
+
_避免使用_:Client、buyer、account
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
## 规则
|
|
28
|
+
|
|
29
|
+
- **要有主见。** 当同一个概念有多个词汇时,选择最好的一个,将其他词列为「避免使用」的别名。
|
|
30
|
+
- **显式标记冲突。** 如果某个术语被合混地使用,在「已标记的合混」中明确指出并给出解决方案。
|
|
31
|
+
- **保持定义简洁。** 最多一到两句话。定义它「是什么」,而不是「做什么」。
|
|
32
|
+
- **展示关系。** 使用粗体术语名称,在明显的地方表达基数关系。
|
|
33
|
+
- **只包含本项目的上下文特有的术语。** 通用编程概念(超时、错误类型、工具模式)即使项目大量使用也不应该包含。添加术语前问自己:这是本项目上下文特有的概念,还是通用编程概念?只有前者才应该包含。
|
|
34
|
+
- **当自然分组出现时,用子标题分组术语。** 如果所有术语属于一个紧密相关的领域,平铺列表即可。
|
|
35
|
+
- **写一段示例对话。** 一段开发者与领域专家之间的对话,展示术语如何自然交互,并澄清相关概念之间的边界。
|
|
36
|
+
|
|
37
|
+
## 单上下文与多上下文仓库
|
|
38
|
+
|
|
39
|
+
**单上下文(大多数仓库):** `.speculo/.config/context/CONTEXT.md` 记录项目级术语表。
|
|
40
|
+
|
|
41
|
+
**多上下文:** `.speculo/.config/context/CONTEXT-MAP.md` 列出所有上下文、它们的位置以及它们之间的关系:
|
|
42
|
+
|
|
43
|
+
```md
|
|
44
|
+
# 上下文映射
|
|
45
|
+
|
|
46
|
+
## 上下文
|
|
47
|
+
|
|
48
|
+
- [Ordering](./ordering.md) —— 接收并跟踪客户订单
|
|
49
|
+
- [Billing](./billing.md) —— 生成发票并处理付款
|
|
50
|
+
- [Fulfillment](./fulfillment.md) —— 管理仓库拣货和发货
|
|
51
|
+
|
|
52
|
+
## 关系
|
|
53
|
+
|
|
54
|
+
- **Ordering → Fulfillment**:Ordering 发出 `OrderPlaced` 事件;Fulfillment 消费这些事件开始拣货
|
|
55
|
+
- **Fulfillment → Billing**:Fulfillment 发出 `ShipmentDispatched` 事件;Billing 消费这些事件生成发票
|
|
56
|
+
- **Ordering ↔ Billing**:共享 `CustomerId` 和 `Money` 类型
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
技能会自动推断适用哪种结构:
|
|
60
|
+
|
|
61
|
+
- 如果 `.speculo/.config/context/CONTEXT-MAP.md` 存在,读取它以查找上下文
|
|
62
|
+
- 如果只有 `.speculo/.config/context/CONTEXT.md`,则为单上下文
|
|
63
|
+
- 如果都不存在,在第一个术语确定时按需创建 `.speculo/.config/context/CONTEXT.md`
|
|
64
|
+
|
|
65
|
+
当存在多个上下文时,推断当前主题与哪个上下文相关。如果不确定,就问。
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
# Context Scan Phase
|
|
2
|
+
|
|
3
|
+
## 输入
|
|
4
|
+
|
|
5
|
+
- 用户提出的计划、需求、设计或问题
|
|
6
|
+
- `.speculo/.config/RULES.md` 和用户明确指出的项目规则、设计约束或长期文档
|
|
7
|
+
- `.speculo/.config/context/CONTEXT.md`、`.speculo/.config/context/CONTEXT-MAP.md`、`.speculo/.config/adr/` 和相关代码
|
|
8
|
+
- 本 workflow 入口文件中的内置领域拷问指引
|
|
9
|
+
|
|
10
|
+
## 产物
|
|
11
|
+
|
|
12
|
+
- `.speculo/dev/<change>/context-map.md`,由 `../_templates/grill-context-map-template.md` 填写
|
|
13
|
+
|
|
14
|
+
## 填写引导
|
|
15
|
+
|
|
16
|
+
1. 先探索仓库事实,不向用户询问可从文件中确认的问题。
|
|
17
|
+
2. 记录存在的领域术语来源、ADR 来源、关键模块和调用者。
|
|
18
|
+
3. 标出缺失的术语表、缺失 ADR 或与用户描述冲突的代码事实。
|
|
19
|
+
4. 只记录事实和待确认项,不在本阶段做方案裁决。
|
|
20
|
+
5. 若 `.speculo/.config/context/CONTEXT-MAP.md` 存在,先读取它以判断涉及哪个上下文;若只有 `.speculo/.config/context/CONTEXT.md`,按单上下文处理;若都不存在,只记录“缺少术语表”,不在本阶段创建。
|
|
21
|
+
|
|
22
|
+
## 边界
|
|
23
|
+
|
|
24
|
+
- 不直接修改 `.speculo/.config/context/` 或 `.speculo/.config/adr/`;修改动作留到 Decision Grill 阶段确认后执行。
|
|
25
|
+
- 不创建实现计划或 PRD。
|
|
26
|
+
|
|
27
|
+
## 完成准则
|
|
28
|
+
|
|
29
|
+
- `context-map.md` 无残留 `[TODO:]`
|
|
30
|
+
- 已列出下一阶段必须追问的最高优先级问题
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
# Decision Grill Phase
|
|
2
|
+
|
|
3
|
+
## 输入
|
|
4
|
+
|
|
5
|
+
- `.speculo/dev/<change>/context-map.md`
|
|
6
|
+
- 用户当前方案或目标
|
|
7
|
+
- 本 workflow 入口文件中的内置领域拷问指引
|
|
8
|
+
- 同目录 `CONTEXT-FORMAT.md`、`ADR-FORMAT.md`
|
|
9
|
+
|
|
10
|
+
## 产物
|
|
11
|
+
|
|
12
|
+
- `.speculo/dev/<change>/decision-log.md`,由 `../_templates/grill-decision-log-template.md` 填写
|
|
13
|
+
- 可选:经用户确认后更新 `.speculo/.config/context/CONTEXT.md`、`.speculo/.config/context/CONTEXT-MAP.md` 或 `.speculo/.config/adr/*.md`
|
|
14
|
+
|
|
15
|
+
## 填写引导
|
|
16
|
+
|
|
17
|
+
1. 遵循 `01-grill-with-docs.md` 的内置指引,再按需读取同目录格式文档。
|
|
18
|
+
2. 每次只问一个会改变决策树的问题,并给出推荐答案。
|
|
19
|
+
3. 对术语冲突、代码现实冲突和 ADR 候选直接指出。
|
|
20
|
+
4. 用户确认后,把决策写入 `decision-log.md`。
|
|
21
|
+
5. 只有用户明确同意时,才把术语写入 `.speculo/.config/context/` 或创建 `.speculo/.config/adr/` 下的 ADR。
|
|
22
|
+
6. 当用户使用的术语与 `.speculo/.config/context/` 中已有定义冲突时,立即指出冲突并要求在当前问题中消解。
|
|
23
|
+
7. 当用户使用含混或一词多义的术语时,提议一个精确的规范术语。
|
|
24
|
+
8. 当讨论领域关系时,用具体场景压力测试边界情况。
|
|
25
|
+
9. 当用户描述某个东西如何运作时,检查代码是否一致;若矛盾,直接指出。
|
|
26
|
+
10. 只有同时满足“难以逆转”“缺少上下文会令人意外”“真实权衡的结果”三个条件时,才提议 ADR。
|
|
27
|
+
|
|
28
|
+
## 边界
|
|
29
|
+
|
|
30
|
+
- 不输出 PRD;PRD 由 `../02-prd/02-prd.md` 负责。
|
|
31
|
+
- 不把未确认的 ADR 候选写成正式 ADR。
|
|
32
|
+
- 不修改 `.speculo/.config/RULES.md` 或用户未明确授权的项目规则文档。
|
|
33
|
+
|
|
34
|
+
## 完成准则
|
|
35
|
+
|
|
36
|
+
- 每个关键问题都有结论、推荐答案或 blocked 原因
|
|
37
|
+
- `.status.json` 的 `decision_status` 已更新
|
|
38
|
+
- `decision-log.md` 无残留 `[TODO:]`
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: dev/prd
|
|
3
|
+
category: dev
|
|
4
|
+
name: PRD
|
|
5
|
+
description: 通过 zoom-out 全景理解与 to-prd 综合产出开发 PRD
|
|
6
|
+
keywords: [prd, zoom-out, 需求, 计划]
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# PRD 工作流执行指引
|
|
10
|
+
|
|
11
|
+
本工作流用于把已知上下文综合为当前 Speculo change 内的 overview 和 PRD。zoom-out 全景理解与 PRD 综合能力已内置在本 workflow 目录中。
|
|
12
|
+
|
|
13
|
+
## 内置指引
|
|
14
|
+
|
|
15
|
+
### Zoom Out
|
|
16
|
+
|
|
17
|
+
当 agent 对某段代码或业务区域不熟悉,需要先建立全局视角再继续 PRD、设计、诊断或实现时使用。用项目领域术语表给出相关模块、调用者、关键边界、上下游依赖和需要进一步确认的问题。
|
|
18
|
+
|
|
19
|
+
### PRD Synthesis
|
|
20
|
+
|
|
21
|
+
当 dev workflow 已完成足够上下文探索,需要把当前对话和代码理解沉淀成 PRD 时使用。不要重复访谈已明确的信息;综合当前对话、代码库事实、领域术语、ADR、模块候选和测试目标。
|
|
22
|
+
|
|
23
|
+
PRD 只写入 `.speculo/dev/<change>/prd.md`,overview 只写入 `.speculo/dev/<change>/overview.md`。不写项目根下的任意规划文档,不默认发布外部 issue。只有 tracker 已配置且用户明确要求时,才进入外部发布动作。
|
|
24
|
+
|
|
25
|
+
## 阶段
|
|
26
|
+
|
|
27
|
+
### 1. Zoom Out — 全景理解
|
|
28
|
+
- 规范:`prd-zoom-out.md`
|
|
29
|
+
- 模板:`../_templates/prd-overview-template.md`
|
|
30
|
+
- 产物:`overview.md`
|
|
31
|
+
- 完成准则:
|
|
32
|
+
- 已说明相关模块、调用者、边界和未知点
|
|
33
|
+
- `overview.md` 无残留 `[TODO:]`
|
|
34
|
+
|
|
35
|
+
### 2. PRD Synthesis — PRD 综合
|
|
36
|
+
- 规范:`prd-synthesis.md`
|
|
37
|
+
- 模板:`../_templates/prd-template.md`
|
|
38
|
+
- 产物:`prd.md`
|
|
39
|
+
- 完成准则:
|
|
40
|
+
- PRD 包含问题、方案、用户故事、实现决策、测试决策、范围边界
|
|
41
|
+
- 已确认模块候选和测试目标
|
|
42
|
+
- `prd.md` 无残留 `[TODO:]`
|
|
43
|
+
|
|
44
|
+
## 依赖
|
|
45
|
+
|
|
46
|
+
- 软依赖:`../01-grill-with-docs/01-grill-with-docs.md`,scope: same-change
|
|
47
|
+
- 硬依赖:无
|
|
48
|
+
|
|
49
|
+
## 状态扩展字段
|
|
50
|
+
|
|
51
|
+
本工作流需在同 change 的 `.status.json` 追加:
|
|
52
|
+
|
|
53
|
+
- `dev_entry` (string) — 固定为 `dev/02`
|
|
54
|
+
- `embedded_guides` (array) — 包含 `zoom-out`、`to-prd`
|
|
55
|
+
- `prd_slug` (string) — PRD 短 slug
|
|
56
|
+
- `module_candidates` (array) — 候选模块或边界
|
|
57
|
+
- `test_targets` (array) — 用户确认的测试目标
|
|
58
|
+
- `issue_tracker_mode` (disabled | local-only | publish-requested | published) — issue tracker 使用状态
|
|
59
|
+
|
|
60
|
+
## 完成与状态更新
|
|
61
|
+
|
|
62
|
+
- 进入每个 phase 时更新 `current_phase` 和 `phase_history`。
|
|
63
|
+
- 默认把 PRD 写入当前 change 的 `prd.md`;不默认写项目根下的任意规划文档。
|
|
64
|
+
- 本 workflow 完成后不自动完成 change;默认移交 `../I-to-issues/I-to-issues.md` 或 `../03-tdd/03-tdd.md`。
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
# PRD Synthesis Phase
|
|
2
|
+
|
|
3
|
+
## 输入
|
|
4
|
+
|
|
5
|
+
- `.speculo/dev/<change>/overview.md`
|
|
6
|
+
- 可选的 `context-map.md`、`decision-log.md`、用户故事或 issue
|
|
7
|
+
- `02-prd.md` 中的 PRD Synthesis 内置指引
|
|
8
|
+
|
|
9
|
+
## 产物
|
|
10
|
+
|
|
11
|
+
- `.speculo/dev/<change>/prd.md`,由 `../_templates/prd-template.md` 填写
|
|
12
|
+
|
|
13
|
+
## 填写引导
|
|
14
|
+
|
|
15
|
+
1. 遵循 `02-prd.md` 的 PRD Synthesis 内置指引。
|
|
16
|
+
2. 综合已有上下文,不重复访谈已明确的信息。
|
|
17
|
+
3. 与用户确认模块候选和需要测试的行为。
|
|
18
|
+
4. 默认只生成本地 `prd.md`;只有 tracker 已配置且用户明确要求时才发布 issue。
|
|
19
|
+
5. PRD 中避免易过时的具体文件路径和代码片段,除非它们表达不可替代的决策。
|
|
20
|
+
|
|
21
|
+
## 边界
|
|
22
|
+
|
|
23
|
+
- 不进行 issue 切片;切片由 `../I-to-issues/I-to-issues.md` 负责。
|
|
24
|
+
- 不修改业务代码。
|
|
25
|
+
- 不把 change 标记为 completed。
|
|
26
|
+
|
|
27
|
+
## 完成准则
|
|
28
|
+
|
|
29
|
+
- `prd.md` 无残留 `[TODO:]`
|
|
30
|
+
- `test_targets`、`prd_slug`、`issue_tracker_mode` 已写入 `.status.json`
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
# Zoom Out Phase
|
|
2
|
+
|
|
3
|
+
## 输入
|
|
4
|
+
|
|
5
|
+
- 用户目标、已有 `context-map.md` 或 `decision-log.md`
|
|
6
|
+
- 相关代码区域、架构文档、ADR 和配置
|
|
7
|
+
- `02-prd.md` 中的 Zoom Out 内置指引
|
|
8
|
+
|
|
9
|
+
## 产物
|
|
10
|
+
|
|
11
|
+
- `.speculo/dev/<change>/overview.md`,由 `../_templates/prd-overview-template.md` 填写
|
|
12
|
+
|
|
13
|
+
## 填写引导
|
|
14
|
+
|
|
15
|
+
1. 遵循 `02-prd.md` 的 Zoom Out 内置指引。
|
|
16
|
+
2. 用项目领域术语说明相关模块和调用者。
|
|
17
|
+
3. 标明现有行为、缺失能力、接口边界、上下游依赖和风险。
|
|
18
|
+
4. 输出服务于 PRD 综合的事实,不提前写实现步骤。
|
|
19
|
+
|
|
20
|
+
## 边界
|
|
21
|
+
|
|
22
|
+
- 不发布 issue。
|
|
23
|
+
- 不修改代码。
|
|
24
|
+
- 不创建 PRD;PRD 留到下一阶段。
|
|
25
|
+
|
|
26
|
+
## 完成准则
|
|
27
|
+
|
|
28
|
+
- `overview.md` 无残留 `[TODO:]`
|
|
29
|
+
- `.status.json` 已记录 `module_candidates`
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: dev/tdd
|
|
3
|
+
category: dev
|
|
4
|
+
name: TDD Implementation
|
|
5
|
+
description: 按垂直切片执行红绿重构,实现功能或回归修复
|
|
6
|
+
keywords: [tdd, implement, red-green-refactor, 实现, 测试]
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# TDD Implementation 工作流执行指引
|
|
10
|
+
|
|
11
|
+
本工作流用于把 PRD、issue、诊断结论或用户明确任务实现为经过验证的代码变更。TDD 红绿重构、测试、mock、接口设计、deep module 和重构指引已内置在本 workflow 目录中。
|
|
12
|
+
|
|
13
|
+
## 内置指引
|
|
14
|
+
|
|
15
|
+
### 核心原则
|
|
16
|
+
|
|
17
|
+
测试应通过公共接口验证行为,而不是实现细节。代码可以完全重写;测试不应该。
|
|
18
|
+
|
|
19
|
+
好的测试是集成式的:它们通过公共 API 运行真实的代码路径,描述系统“做什么”,不描述“怎么做”。坏的测试与实现耦合:mock 内部协作者、测试私有方法,或通过外部手段验证内部状态。
|
|
20
|
+
|
|
21
|
+
### 反模式:水平切片
|
|
22
|
+
|
|
23
|
+
不要先写全部测试,再写全部实现。正确做法是追踪弹式垂直切片:一个测试 -> 一个实现 -> 重复。每个测试都基于上一轮学到的东西做出响应。
|
|
24
|
+
|
|
25
|
+
### 渐进披露
|
|
26
|
+
|
|
27
|
+
- `tests.md`:设计测试方式时读取。
|
|
28
|
+
- `mocking.md`:考虑 mock 边界时读取。
|
|
29
|
+
- `deep-modules.md`:识别深模块机会时读取。
|
|
30
|
+
- `interface-design.md`:设计可测试公共接口时读取。
|
|
31
|
+
- `refactoring.md`:进入重构阶段时读取。
|
|
32
|
+
|
|
33
|
+
## 阶段
|
|
34
|
+
|
|
35
|
+
### 1. TDD Plan — 行为与接口计划
|
|
36
|
+
- 规范:`tdd-plan.md`
|
|
37
|
+
- 模板:`../_templates/tdd-plan-template.md`
|
|
38
|
+
- 产物:`tdd-plan.md`
|
|
39
|
+
- 完成准则:
|
|
40
|
+
- 已确认公共接口、关键行为和测试优先级
|
|
41
|
+
- `tdd-plan.md` 无残留 `[TODO:]`
|
|
42
|
+
|
|
43
|
+
### 2. Slice Loop — 红绿重构循环
|
|
44
|
+
- 规范:`tdd-loop.md`
|
|
45
|
+
- 模板:`../_templates/tdd-log-template.md`
|
|
46
|
+
- 产物:`implementation-log.md`
|
|
47
|
+
- 完成准则:
|
|
48
|
+
- 每个切片都有 RED、GREEN、REFACTOR 和验证记录
|
|
49
|
+
- `implementation-log.md` 无残留 `[TODO:]`
|
|
50
|
+
|
|
51
|
+
### 3. Finish — 验证与收尾
|
|
52
|
+
- 规范:`tdd-finish.md`
|
|
53
|
+
- 模板:`../_templates/tdd-verification-template.md`
|
|
54
|
+
- 产物:`verification.md`
|
|
55
|
+
- 完成准则:
|
|
56
|
+
- 已运行相关测试或明确记录无法运行原因
|
|
57
|
+
- 无调试残留和推测性功能
|
|
58
|
+
- `verification.md` 无残留 `[TODO:]`
|
|
59
|
+
|
|
60
|
+
## 依赖
|
|
61
|
+
|
|
62
|
+
- 软依赖:`../02-prd/02-prd.md` 或 `../I-to-issues/I-to-issues.md`,scope: same-change
|
|
63
|
+
- 硬依赖:无;若用户提供明确修复或实现任务,可直接进入
|
|
64
|
+
|
|
65
|
+
## 状态扩展字段
|
|
66
|
+
|
|
67
|
+
本工作流需在同 change 的 `.status.json` 追加:
|
|
68
|
+
|
|
69
|
+
- `dev_entry` (string) — 固定为 `dev/03`
|
|
70
|
+
- `embedded_guides` (array) — 包含 `tdd`
|
|
71
|
+
- `slice_source` (prd | issues | diagnosis | user-request) — 切片来源
|
|
72
|
+
- `red_green_refactor_cycles` (array) — 每轮 TDD 循环摘要
|
|
73
|
+
- `verification_commands` (array) — 已运行或应运行的验证命令
|
|
74
|
+
- `implementation_status` (planned | in-progress | verified | blocked) — 实现状态
|
|
75
|
+
|
|
76
|
+
## 完成与状态更新
|
|
77
|
+
|
|
78
|
+
- 进入每个 phase 时更新 `current_phase` 和 `phase_history`。
|
|
79
|
+
- 每完成一个切片,追加 `red_green_refactor_cycles`。
|
|
80
|
+
- 全部用户要求的实现边界完成并验证后,可把 `change_status` 置为 `completed`,或移交 review/handoff command。
|