@namewta/speculo 0.1.20 → 0.1.21

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 (58) hide show
  1. package/package.json +1 -1
  2. package/template/commands/archive.md +1 -1
  3. package/template/commands/handoff.md +1 -1
  4. package/template/commands/status.md +1 -1
  5. package/template/skills/config-prune/SKILL.md +7 -29
  6. package/template/skills/config-prune/references/audit-rules.md +38 -0
  7. package/template/skills/github-npm-ops/references/failure-recovery.md +2 -2
  8. package/template/skills/github-npm-ops/references/issue-pr-triage.md +1 -1
  9. package/template/skills/github-npm-ops/references/preflight-checklist.md +3 -3
  10. package/template/skills/github-npm-ops/references/release-pipeline.md +3 -3
  11. package/template/skills/handoff/SKILL.md +34 -11
  12. package/template/skills/speculo-write/references/persistence-contract-sop.md +86 -7
  13. package/template/skills/speculo-write/references/workflow-authoring-sop.md +34 -1
  14. package/template/workflows/dev/02-prd/02-prd.md +1 -1
  15. package/template/workflows/dev/02-prd/prd-zoom-out.md +1 -1
  16. package/template/workflows/dev/03-tdd/03-tdd.md +22 -125
  17. package/template/workflows/dev/03-tdd/agents/tdd-finish-agent.md +34 -0
  18. package/template/workflows/dev/03-tdd/agents/tdd-implement-agent.md +34 -0
  19. package/template/workflows/dev/03-tdd/agents/tdd-plan-agent.md +34 -0
  20. package/template/workflows/dev/04-finalize/04-finalize.md +28 -108
  21. package/template/workflows/dev/04-finalize/agents/completion-gate-agent.md +35 -0
  22. package/template/workflows/dev/A-improve-architecture/A-improve-architecture.md +25 -108
  23. package/template/workflows/dev/A-improve-architecture/architecture-grill.md +30 -0
  24. package/template/workflows/dev/A-improve-architecture/architecture-review.md +29 -0
  25. package/template/workflows/dev/A-improve-architecture/architecture-scan.md +37 -0
  26. package/template/workflows/dev/AGENTS.md +10 -2
  27. package/template/workflows/dev/D-docs-sync/D-docs-sync.md +14 -1
  28. package/template/workflows/dev/D-docs-sync/agents/docs-diff-agent.md +34 -0
  29. package/template/workflows/dev/D-docs-sync/agents/docs-update-agent.md +34 -0
  30. package/template/workflows/dev/H-diagnose/H-diagnose.md +12 -23
  31. package/template/workflows/dev/H-diagnose/agents/diagnose-agent.md +33 -0
  32. package/template/workflows/dev/H-diagnose/agents/fix-agent.md +34 -0
  33. package/template/workflows/dev/I-to-issues/I-to-issues.md +29 -90
  34. package/template/workflows/dev/I-to-issues/issues-slices.md +3 -3
  35. package/template/workflows/dev/M-domain-modeling/M-domain-modeling.md +6 -22
  36. package/template/workflows/dev/R-review/R-review.md +33 -121
  37. package/template/workflows/dev/R-review/agents/engineering-review-agent.md +33 -0
  38. package/template/workflows/dev/R-review/agents/spec-review-agent.md +34 -0
  39. package/template/workflows/dev/R-review/agents/standards-review-agent.md +34 -0
  40. package/template/workflows/dev/R-review/review-setup.md +39 -1
  41. package/template/workflows/dev/_templates/issues-slices-template.md +1 -1
  42. package/template/workflows/dev/_templates/{prd-overview-template.md → overview-template.md} +0 -1
  43. package/template/workflows/doc/AGENTS.md +10 -2
  44. package/template/workflows/doc/B-writing-beats/B-writing-beats.md +1 -1
  45. package/template/workflows/doc/E-edit-article/E-edit-article.md +1 -1
  46. package/template/workflows/doc/S-writing-shape/S-writing-shape.md +1 -1
  47. package/template/workflows/doc/T-teach/T-teach.md +30 -113
  48. package/template/workflows/doc/_templates/teach-learning-record-template.md +1 -1
  49. package/template/workflows/doc/_templates/teach-lesson-html-template.md +24 -0
  50. package/template/workflows/person/AGENTS.md +14 -2
  51. package/template/workflows/person/M-mao-zedong-cognitive-os/M-mao-zedong-cognitive-os.md +32 -158
  52. package/template/workflows/person/M-mao-zedong-cognitive-os/activate.md +2 -1
  53. package/template/workflows/person/M-mao-zedong-cognitive-os/books/README.md +12 -238
  54. package/template/workflows/person/M-mao-zedong-cognitive-os/deliver.md +1 -0
  55. package/template/workflows/person/M-mao-zedong-cognitive-os/diagnose.md +3 -61
  56. package/template/workflows/person/M-mao-zedong-cognitive-os/mobilize.md +3 -50
  57. package/template/workflows/person/M-mao-zedong-cognitive-os/references/research/15-quote-bank.md +10 -10
  58. package/template/workflows/person/M-mao-zedong-cognitive-os/strategize.md +3 -69
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@namewta/speculo",
3
- "version": "0.1.20",
3
+ "version": "0.1.21",
4
4
  "description": "Speculo — specification-driven development framework assets, with a CLI to install and update them across AI coding tools.",
5
5
  "type": "module",
6
6
  "bin": {
@@ -35,7 +35,7 @@ keywords: [archive, 归档, 清理]
35
35
  - **待归档:** 源路径、目标路径、当前分类、`updated_at`、最后 phase、是否仍在 `<cat>-status.json active[]`。
36
36
  - **broken-change:** 缺少 `.status.json` 的 change 目录路径。
37
37
  - **冲突:** 目标路径已存在的 change。
38
- 4. 向用户展示清单并等待明确确认。没有确认时只输出计划,不移动目录、不改索引。对于 `broken-change`,提示用户需先通过对应 workflow 入口(`dev/AGENTS.md`、`doc/AGENTS.md` 或 `person/AGENTS.md`)补建 `.status.json`,或将 `change_status` 手动置为 `completed` 后再归档。
38
+ 4. 向用户展示清单并等待明确确认。没有确认时只输出计划,不移动目录、不改索引。对于 `broken-change`,提示用户需先通过对应 workflow 入口(`../workflows/dev/AGENTS.md`、`../workflows/doc/AGENTS.md` 或 `../workflows/person/AGENTS.md`)补建 `.status.json`,或将 `change_status` 手动置为 `completed` 后再归档。
39
39
  5. 用户确认后逐项执行(仅对待归档项):
40
40
  - 创建 `speculo/.speculo/archive/<cat>/<YYYY-MM>/`
41
41
  - 移动 change 目录到 `speculo/.speculo/archive/<cat>/<YYYY-MM>/<change-name>/`
@@ -25,7 +25,7 @@ keywords: [handoff, 交接, summary, resume]
25
25
  ## 执行步骤
26
26
 
27
27
  1. 读取 `../skills/handoff/SKILL.md`。
28
- 2. 按 `../skills/handoff/SKILL.md` 要求,生成脱敏交接文档。
28
+ 2. 按 `../skills/handoff/SKILL.md` 要求,生成脱敏交接正文与 `<topic>` 建议。
29
29
  3. 创建规范命令产物目录 `speculo/.speculo/commands/<YYYY-MM-DD>-handoff-<topic>/`。
30
30
  4. 把交接正文写入 `speculo/.speculo/commands/<YYYY-MM-DD>-handoff-<topic>/handoff.md`。
31
31
  5. 删除 API key、密码、PII 和其他敏感信息;不要复制 PRD、计划、ADR、issue、commit、diff 或其他已有产物正文。
@@ -54,5 +54,5 @@ keywords: [status, 状态, 进度]
54
54
  [TODO: 列出最近 5 个更新的 change + 分类 + 当前 phase]
55
55
 
56
56
  ## 可能僵尸 Changes
57
- [TODO: 超过 N 天未更新的 change 清单]
57
+ [TODO: 超过 14 天未更新的 change 清单]
58
58
  ```
@@ -12,18 +12,12 @@ description: dry-run 审计 .config 中可安全删除或合并的过期知识
12
12
  ## 何时使用
13
13
 
14
14
  - 用户要求"清理 .config"、"prune 配置"、"审计 ADR/CONTEXT/LESSONS 过期项"
15
- - 用户要求"看看哪些知识资产可以删"、"检查过期的 ADR"
16
15
  - 被 `commands/config-prune.md` 或 `workflows/dev/D-docs-sync` 等调用方委托执行审计
17
16
  - 本 skill 只负责分析与生成候选清单,不自行删除文件、不自行写报告;持久化由调用方负责
18
17
 
19
18
  ## 输入
20
19
 
21
- - `.config` 资产路径:`speculo/.speculo/.config/RULES.md`、`LESSONS.md`、`context/`、`adr/`;缺失路径记录为 `missing`,不自动创建
22
- - 仓库引用扫描命令:
23
- ```bash
24
- rg -n "ADR-[0-9]{4}|[0-9]{4}-[a-z0-9-]+\\.md|CONTEXT|LESSONS|RULES" .
25
- ```
26
- 排除 `node_modules/`、`dist/`、`.git/` 等生成或依赖目录
20
+ - `.config` 资产路径:`speculo/.speculo/.config/RULES.md`、`LESSONS.md`、`context/`、`adr/`
27
21
  - 用户确认状态(dry-run 或 confirmed)
28
22
 
29
23
  ## 输出
@@ -34,33 +28,17 @@ description: dry-run 审计 .config 中可安全删除或合并的过期知识
34
28
 
35
29
  ## 执行步骤
36
30
 
37
- 1. 读取 `speculo/.speculo/.config/RULES.md`、`LESSONS.md`、`context/`、`adr/`;缺失路径记录为 `missing`,不自动创建。
38
- 2. 扫描当前仓库引用:
39
- ```bash
40
- rg -n "ADR-[0-9]{4}|[0-9]{4}-[a-z0-9-]+\\.md|CONTEXT|LESSONS|RULES" .
41
- ```
42
- 排除 `node_modules/`、`dist/`、`.git/` 等生成或依赖目录。
43
- 3. 生成 dry-run 候选,至少包含:
44
- - 指向不存在 ADR 的正文引用或索引行。
45
- - 标记为 superseded 且超过 30 天、无活跃引用的 ADR。
46
- - 只含 `.gitkeep`、TODO、空占位或模板说明的长期知识文件。
47
- - CONTEXT 中当前代码、文档和归档均无证据支撑的术语。
48
- - LESSONS 中重复、过期、只适用单次任务或已被 RULES/ADR 吸收的经验。
49
- 4. 按 `delete | merge | rewrite | keep | needs-confirmation` 分组输出完整清单;每个候选必须包含来源、证据和风险。
50
- 5. 如果用户没有明确确认,停止在 dry-run 候选清单。
51
- 6. 用户确认后,只执行确认清单中的操作:
52
- - 删除文件前再次检查路径仍位于 `speculo/.speculo/.config/`。
53
- - 修改 `RULES.md` 前必须确认具体条目;不能批量隐式改规则。
54
- - 执行后列出实际改动和跳过项。
31
+ 1. 读取 `references/audit-rules.md`,按其中扫描范围与候选类型执行审计。
32
+ 2. 如果用户没有明确确认,停止在 dry-run 候选清单。
33
+ 3. 用户确认后,按 `references/audit-rules.md`「确认后执行」节操作。
55
34
 
56
35
  ## 边界
57
36
 
58
37
  - 不删除仍被代码、文档、归档或 active change 引用的 ADR / CONTEXT。
59
- - 不把低信号归档内容写回长期知识资产。
60
- - 不自动解决领域术语冲突;冲突项交给 `../workflows/dev/M-domain-modeling/M-domain-modeling.md`。
61
- - 不修改 docs-sync state;由 `../workflows/dev/D-docs-sync/D-docs-sync.md` 推进基线。
38
+ - 不自动解决领域术语冲突;冲突项交给 `../../workflows/dev/M-domain-modeling/M-domain-modeling.md`。
39
+ - 不修改 docs-sync state;由 `../../workflows/dev/D-docs-sync/D-docs-sync.md` 推进基线。
62
40
  - 不自行选择持久化位置;文件型产物由调用方写入规范路径。
63
41
 
64
42
  ## 渐进披露
65
43
 
66
- `references/`;本 skill 的完整执行规则已在入口中。
44
+ - `references/audit-rules.md`:执行 dry-run 审计或确认后清理时读取。
@@ -0,0 +1,38 @@
1
+ # Config Prune 审计规则
2
+
3
+ dry-run 候选生成与分组规则。`config-prune` skill 入口为调度器,执行审计时读取本文件。
4
+
5
+ ## 扫描范围
6
+
7
+ 1. 读取 `speculo/.speculo/.config/RULES.md`、`LESSONS.md`、`context/`、`adr/`;缺失路径记录为 `missing`,不自动创建。
8
+ 2. 扫描当前仓库引用:
9
+ ```bash
10
+ rg -n "ADR-[0-9]{4}|[0-9]{4}-[a-z0-9-]+\\.md|CONTEXT|LESSONS|RULES" .
11
+ ```
12
+ 排除 `node_modules/`、`dist/`、`.git/` 等生成或依赖目录。
13
+
14
+ ## 候选类型
15
+
16
+ 至少包含以下 dry-run 候选:
17
+
18
+ - 指向不存在 ADR 的正文引用或索引行。
19
+ - 标记为 superseded 且超过 30 天、无活跃引用的 ADR。
20
+ - 只含 `.gitkeep`、TODO、空占位或模板说明的长期知识文件。
21
+ - CONTEXT 中当前代码、文档和归档均无证据支撑的术语。
22
+ - LESSONS 中重复、过期、只适用单次任务或已被 RULES/ADR 吸收的经验。
23
+
24
+ ## 分组输出
25
+
26
+ 按 `delete | merge | rewrite | keep | needs-confirmation` 分组;每个候选必须包含来源、证据和风险。
27
+
28
+ ## 确认后执行
29
+
30
+ - 删除文件前再次检查路径仍位于 `speculo/.speculo/.config/`。
31
+ - 修改 `RULES.md` 前必须确认具体条目;不能批量隐式改规则。
32
+ - 执行后列出实际改动和跳过项。
33
+
34
+ ## 边界
35
+
36
+ - 不删除仍被代码、文档、归档或 active change 引用的 ADR / CONTEXT。
37
+ - 术语冲突交给 `../../workflows/dev/M-domain-modeling/M-domain-modeling.md`。
38
+ - docs-sync state 由 `../../workflows/dev/D-docs-sync/D-docs-sync.md` 推进。
@@ -124,11 +124,11 @@ git push origin vX.Y.Z
124
124
 
125
125
  ---
126
126
 
127
- ## 与 github-ops skill 的关系
127
+ ## 与 github-npm-ops skill 的关系
128
128
 
129
129
  本文件是发布编排视角下的失败恢复入口;更细粒度的失败案例(如 EUSAGE / E422 / provenance 错误码、package.json 字段错误)见 `troubleshooting-playbook.md`。
130
130
 
131
- | 失败位置 | 看本文件 | 看 github-ops troubleshooting-playbook |
131
+ | 失败位置 | 看本文件 | 看 github-npm-ops troubleshooting-playbook |
132
132
  |---------|---------|---------------------------------------|
133
133
  | Phase 1–6 编排逻辑层面 | ✅ | ❌ |
134
134
  | release.yml 内部步骤的具体错误码 | ❌ | ✅ |
@@ -70,7 +70,7 @@
70
70
 
71
71
  **转为 discussion**
72
72
 
73
- > This is more of a usage question than a bug, moving to [Discussions](link) where the community can chime in.
73
+ > This is more of a usage question than a bug, moving to Discussions where the community can chime in.
74
74
 
75
75
  ### 大批量分诊节奏
76
76
 
@@ -14,7 +14,7 @@
14
14
  | 5 | gh 仓库权限 | `gh repo view --json viewerCanAdminister` | `viewerCanAdminister == true` 或至少 push 权限 | 联系仓库管理员;或 fork 后申请 PR 流程 |
15
15
  | 6 | Node 版本 | `node --version` | ≥ `package.json#engines.node` | `nvm use` / `fnm use` / 升级本机 Node |
16
16
  | 7 | 包管理器 | `pnpm --version` (或 `npm` / `yarn`) | 版本 ≥ 仓库 lockfile 隐含版本 | 安装匹配版本;不要随意切换包管理器 |
17
- | 8 | release.yml 存在 | `test -f .github/workflows/release.yml` | 文件存在 | 转 `github-ops` skill 的 `references/workflow-yaml-reference.md` 先落该文件 |
17
+ | 8 | release.yml 存在 | `test -f .github/workflows/release.yml` | 文件存在 | 转 `github-npm-ops` skill 的 `references/workflow-yaml-reference.md` 先落该文件 |
18
18
  | 9 | release.yml 形态 | 见 [publish-detection.md](publish-detection.md) | 输出 `PUBLISH_TO_NPM=true` 或 `false` | 见 publish-detection 文档的判定矩阵 |
19
19
  | 10 | docs-sync state | `test -f speculo/.speculo/dev/docs-sync-state.json && jq . speculo/.speculo/dev/docs-sync-state.json` | 解析成功且 `last_sync_sha != null` | 不存在 → 走 `dev/D-docs-sync` workflow 的「首次运行」分支;存在但损坏 → 修复 JSON |
20
20
  | 11 | tag 名称冲突 | `git rev-parse vX.Y.Z 2>/dev/null` | 退出码非 0(tag 不存在) | 同 tag 已存在:先确认是否真的失败需要重发;若是则 `git tag -d` + `git push origin :refs/tags/vX.Y.Z`,否则 bump 到下一版本 |
@@ -23,7 +23,7 @@
23
23
 
24
24
  - 探测项 1–3、6–7:本机环境问题,提示用户人工修复后重跑命令
25
25
  - 探测项 4–5:GitHub 权限问题,给出对应的 `gh` 命令
26
- - 探测项 8:基础设施缺失,明确转交 `github-ops` skill 而不是在本命令里现写 release.yml
26
+ - 探测项 8:基础设施缺失,明确转交 `github-npm-ops` skill 而不是在本命令里现写 release.yml
27
27
  - 探测项 9:影响 Phase 5 的分支选择,**不阻塞**命令执行(仅决定后续是否做 npm view 校验)
28
28
  - 探测项 10:影响 Phase 2 是否进入 docs-sync 主流程
29
29
  - 探测项 11:直接关系到能否打 tag,必须在 Phase 0 阶段就排除
@@ -34,6 +34,6 @@ Phase 0 只做**只读探测**,不调用任何 skill 的 SOP:
34
34
 
35
35
  - `git-commit-template` skill 只在 Phase 1 被引用
36
36
  - `docs-sync` skill 只在 Phase 2 / Phase 6 被引用
37
- - `github-ops` skill 在 Phase 3 / 4 / 5 被引用
37
+ - `github-npm-ops` skill 在 Phase 3 / 4 / 5 被引用
38
38
 
39
39
  如果 Phase 0 嗅探到的状态需要某个 skill 的修复 SOP(如 release.yml 缺失),明确转交,不要在本命令内复刻 skill 的内容。
@@ -5,7 +5,7 @@
5
5
  ## Iron Law
6
6
 
7
7
  - 禁止提交破坏构建的代码;release 前必须运行仓库声明的 lint / test / build 或等价质量闸。
8
- - docs-sync 必须由调用方按 `workflows/dev/D-docs-sync/D-docs-sync.md` 执行,基于 `speculo/.speculo/dev/docs-sync-state.json#last_sync_sha..HEAD` 的 git diff。
8
+ - docs-sync 必须由调用方按 `../../../workflows/dev/D-docs-sync/D-docs-sync.md` 执行,基于 `speculo/.speculo/dev/docs-sync-state.json#last_sync_sha..HEAD` 的 git diff。
9
9
  - tag 必须精确指向 release commit,即包含 `package.json` version bump 与 CHANGELOG 迁移的 commit;禁止指向后续 docs / state commit。
10
10
  - npm 已成功上传后,同一 version 不可重发;不要通过删 tag 或 unpublish 试图覆盖。
11
11
 
@@ -32,7 +32,7 @@
32
32
 
33
33
  ## Phase 2 — Docs Sync
34
34
 
35
- - 由调用方执行 `workflows/dev/D-docs-sync/D-docs-sync.md`。
35
+ - 由调用方执行 `../../../workflows/dev/D-docs-sync/D-docs-sync.md`。
36
36
  - 只修改 tracked assets 中需要同步的文档或知识资产。
37
37
  - CHANGELOG 类文档只写 `[Unreleased]`,保留该段落。
38
38
  - 本阶段不推进 docs-sync state 到 release commit;最终基线推进放到 Phase 6。
@@ -88,7 +88,7 @@ npm view "<package-name>" dist-tags
88
88
 
89
89
  ## Phase 6 — 推进 docs-sync 基线
90
90
 
91
- 仅当 Phase 1-5 全绿时执行。本 skill 不自行选择持久化目录;把基线推进交给调用方的 release workflow 或 `workflows/dev/D-docs-sync/D-docs-sync.md`,只向其提供以下取值:
91
+ 仅当 Phase 1-5 全绿时执行。本 skill 不自行选择持久化目录;把基线推进交给调用方的 release workflow 或 `../../../workflows/dev/D-docs-sync/D-docs-sync.md`,只向其提供以下取值:
92
92
 
93
93
  - `last_sync_sha` 推进到 `RELEASE_COMMIT_SHA`。
94
94
  - `previous_sync_sha` 使用推进前的 `last_sync_sha`。
@@ -2,7 +2,7 @@
2
2
  id: handoff
3
3
  type: skill
4
4
  name: Handoff
5
- description: 将当前对话压缩成交接文档;当用户需要另一个 agent、另一个会话或 command/handoff 接手继续工作时使用。
5
+ description: 将当前对话压缩成脱敏交接正文与元数据;当用户需要另一个 agent、另一个会话或 command/handoff 接手继续工作时使用。
6
6
  ---
7
7
 
8
8
  # Handoff
@@ -22,29 +22,52 @@ description: 将当前对话压缩成交接文档;当用户需要另一个 age
22
22
 
23
23
  ## 输出
24
24
 
25
- - 保存到规范命令产物目录的脱敏交接文档:`speculo/.speculo/commands/<YYYY-MM-DD>-handoff-<topic>/handoff.md`
26
- - 文档路径、主题目录名和命名依据
25
+ - 脱敏交接正文(Markdown),供调用方写入规范命令产物目录
26
+ - 建议的 `<topic>` 目录名(kebab-case)与命名依据
27
27
  - 3-5 条极简摘要
28
28
  - 推荐技能清单
29
29
 
30
- ## 命名与位置
30
+ **本 skill 不自行创建目录、不写盘。** 持久化由 `commands/handoff.md` 独占负责。
31
+
32
+ ## 命名建议
31
33
 
32
- - 交接文档必须写入调用方命令产物目录:`speculo/.speculo/commands/<YYYY-MM-DD>-handoff-<topic>/handoff.md`。
33
34
  - `<YYYY-MM-DD>` 使用当前日期。
34
35
  - `<topic>` 从用户目标、项目名、变更名或下一次会话重点提取,使用小写 kebab-case;无法判断时使用 `session`。
35
- - 安装后的实际项目位置是 `speculo/.speculo/commands/<YYYY-MM-DD>-handoff-<topic>/handoff.md`。
36
- - 禁止写入 `temp/`、系统临时目录、仓库根目录临时文件或其他非 Speculo 规范位置。
36
+ - 安装后的目标路径为 `speculo/.speculo/commands/<YYYY-MM-DD>-handoff-<topic>/handoff.md`。
37
37
 
38
38
  ## 执行步骤
39
39
 
40
40
  1. 收集当前目标、背景、已做工作、关键文件、验证结果、剩余风险和下一步。
41
41
  2. 删除 API key、密码、token、个人身份信息和其他敏感内容。
42
42
  3. 不复制 PRD、计划、ADR、issue、commit、diff 或其他已有产物正文;改用路径、URL 或 commit 引用。
43
- 4. 添加 `推荐技能` 部分,列出下一个 agent 应优先读取或调用的技能。
44
- 5. 创建 `speculo/.speculo/commands/<YYYY-MM-DD>-handoff-<topic>/`,并把交接文档写入其中的 `handoff.md`。
45
- 6. 返回文档路径、主题目录名、3-5 条极简摘要和推荐技能清单。
43
+ 4. 添加 `## 推荐技能` 部分,列出下一个 agent 应优先读取或调用的 skill。
44
+ 5. 按下方结构组织脱敏正文,连同 `<topic>` 建议、摘要和推荐技能清单返回给调用方。
45
+
46
+ ## 正文结构
47
+
48
+ ```markdown
49
+ # Handoff
50
+
51
+ ## 目标
52
+ [概括当前任务目标和用户下一步重点。]
53
+
54
+ ## 已完成
55
+ [列出已完成工作、关键决策和重要文件路径。]
56
+
57
+ ## 未完成
58
+ [列出下一步、阻塞点和剩余风险。]
59
+
60
+ ## 验证
61
+ [记录已运行命令、结果和未运行原因。]
62
+
63
+ ## 推荐技能
64
+ [列出下一个 agent 推荐读取的 skill。]
65
+
66
+ ## 摘要
67
+ [用 3-5 条概括交接内容,不复制敏感信息。]
68
+ ```
46
69
 
47
70
  ## references/ 与 scripts/
48
71
 
49
72
  - 无 `references/` 子文档;该 skill 的完整执行规则在本入口中。
50
- - 无 `scripts/`;直接按本文件步骤整理和写入交接文档。
73
+ - 无 `scripts/`;直接按本文件步骤整理交接正文并返回。
@@ -34,7 +34,7 @@
34
34
  | Skill 目录(如 `caveman/`) | 框架资产,非运行时产物 |
35
35
  | Command 文件(如 `archive.md`) | 框架资产,非运行时产物 |
36
36
  | 模板文件(`_templates/`) | 框架资产,非运行时产物 |
37
- | `.config/`、`adr/`、`context/` | 项目配置目录 |
37
+ | `.config/`、`adr/`、`context/` | 项目配置目录,非产物目录 |
38
38
 
39
39
  ### 反例
40
40
 
@@ -60,10 +60,56 @@
60
60
  | Command 产物目录 | `YYYY-MM-DD-<cmd-name>-<topic>` | `2026-05-28-debug-login-500` |
61
61
  | 归档目录 | `archive/<cat>/<YYYY-MM>/<change-name>/` | `archive/dev/2026-05/2026-05-20-payment-flow/` |
62
62
 
63
- `<cat>` 只能是 `dev`、`doc`、`ops`。
63
+ `<cat>` 只能是 `dev`、`doc`、`person`。`ops` 是预留分类,只有骨架和 workflow 分类同时落地后才能加入枚举。
64
64
 
65
65
  命令产生的持久化报告、快照、handoff 和一次性操作记录必须统一写入 `speculo/.speculo/commands/<YYYY-MM-DD>-<cmd-name>-<topic>/`。`temp/`、系统临时目录和项目根目录只允许作为不保留的执行中间位置,禁止作为 Speculo 持久化产物位置。
66
66
 
67
+ ## Change 初始化铁律
68
+
69
+ > ⚠️ **每个 change 目录创建时必须同时完成以下三项写入,缺一不可。未完成初始化的 change 视为 `broken-change`,`status` 与 `archive` 命令将报告并跳过。**
70
+
71
+ ### 初始化顺序
72
+
73
+ 按以下顺序原子执行,前一步失败时停止后续并报告:
74
+
75
+ 1. **创建 change 目录** —— `speculo/.speculo/<cat>/<YYYY-MM-DD>-<kebab-name>/`。
76
+ 2. **写入 `.status.json`** —— 在 change 目录下创建 `.status.json`,填入最小必填字段。
77
+ 3. **更新 `<cat>-status.json`** —— 在 `speculo/.speculo/<cat>-status.json` 的 `active[]` 中追加该 change 的索引条目。
78
+
79
+ ### `.status.json` 最小初始化模板
80
+
81
+ ```jsonc
82
+ {
83
+ "name": "<YYYY-MM-DD>-<kebab-name>",
84
+ "category": "dev | doc | person",
85
+ "change_status": "active",
86
+ "execution_mode": "待 workflow 首次进入时填写",
87
+ "created_at": "<ISO 8601,当前时间>",
88
+ "updated_at": "<ISO 8601,与 created_at 相同>",
89
+ "current_phase": "00-init",
90
+ "phase_history": [
91
+ {
92
+ "phase": "00-init",
93
+ "entered_at": "<ISO 8601>",
94
+ "completed_at": "<ISO 8601>",
95
+ "status": "completed"
96
+ }
97
+ ]
98
+ }
99
+ ```
100
+
101
+ ### `<cat>-status.json` 追加条目模板
102
+
103
+ ```jsonc
104
+ {
105
+ "name": "<YYYY-MM-DD>-<kebab-name>",
106
+ "current_phase": "00-init",
107
+ "updated_at": "<ISO 8601>"
108
+ }
109
+ ```
110
+
111
+ `active[]` 支持同分类多 change 并发。创建 change 时必须逐项确认目录名、`.status.json`、索引条目和时间戳均已写入。
112
+
67
113
  ## `.status.json` 元字段(框架强制)
68
114
 
69
115
  每个 change 的状态写在 `speculo/.speculo/<cat>/<change>/.status.json`:
@@ -71,7 +117,7 @@
71
117
  ```jsonc
72
118
  {
73
119
  "name": "string, change 目录名",
74
- "category": "string, dev | doc | person | ops",
120
+ "category": "string, dev | doc | person",
75
121
  "change_status": "string, active | completed | archived",
76
122
  "execution_mode": "string, 由 workflow 自治声明的命名预设",
77
123
  "created_at": "string, ISO 8601",
@@ -82,13 +128,15 @@
82
128
  "phase": "string, phase id",
83
129
  "entered_at": "string, ISO 8601",
84
130
  "completed_at": "string|null, ISO 8601",
85
- "status": "string, pending | in-progress | completed | skipped | revisited"
131
+ "status": "string, pending | in-progress | completed | skipped | revisited | blocked"
86
132
  }
87
133
  ]
88
134
  }
89
135
  ```
90
136
 
91
- workflow 自治字段在入口正文 `## 状态扩展字段` 声明,由执行者写入**同一份** `.status.json`,不另开文件。
137
+ workflow 自治字段在入口正文 `## 状态扩展字段` 声明,由执行者写入**同一份** `.status.json`,不另开文件。`current_phase` 必须使用 workflow 入口声明的稳定机器 id(kebab-case),不是人类可读标题。首个 workflow 进入 change 时必须写入 `execution_mode`。
138
+
139
+ `change_status: completed` 只允许负责最终交付边界的收尾 workflow(当前为 `dev/04-finalize`)写入;`change_status: archived` 只允许 `archive` 命令或收尾 workflow 的归档步骤写入。其他 workflow 只能维护自己的扩展字段。
92
140
 
93
141
  ## 顶层索引 schema(薄)
94
142
 
@@ -101,6 +149,7 @@ workflow 自治字段在入口正文 `## 状态扩展字段` 声明,由执行
101
149
  }
102
150
  ```
103
151
 
152
+ - Change 创建时**必须**在 `active[]` 追加索引条目。
104
153
  - 归档后变更**必须从 active 段移除**。
105
154
  - 索引可重建:扫 `speculo/.speculo/<cat>/*/.status.json` 即可重建。
106
155
  - 全局 `STATUS.json` **不物理存在**。
@@ -112,7 +161,7 @@ Frontmatter **仅承载发现元数据**(这是什么、叫什么、关于什
112
161
  ```yaml
113
162
  # workflow
114
163
  id: <category>/<name> # 必填,全局唯一
115
- category: dev|doc|person|ops # 必填
164
+ category: dev|doc|person # 必填;ops 为预留分类,未在模板骨架落地
116
165
  name: <人类可读名> # 必填
117
166
  description: <一句话> # 必填
118
167
  keywords: [...] # 可选
@@ -138,7 +187,6 @@ description: <一句话> # 必填
138
187
  ```markdown
139
188
  > **服务工作流:** `<相对路径>`
140
189
  > **产物文件名:** `<filename>`
141
- > **父目录规则:** 本模板产物写入 `YYYY-MM-DD-<kebab-name>/` change 目录内
142
190
 
143
191
  # <标题>
144
192
 
@@ -176,6 +224,35 @@ description: <一句话> # 必填
176
224
 
177
225
  项目级长期资料放 `speculo/.speculo/.config/`(`RULES.md`、`LESSONS.md`、`context/`、`adr/`),不要新增项目根 state 文件。
178
226
 
227
+ ## Workflow Agents
228
+
229
+ 当 workflow 的 phase 适合隔离执行、并行审查或反自证验证时,可在该 workflow 目录下创建:
230
+
231
+ ```text
232
+ template/workflows/<cat>/<entry>/agents/<name>-agent.md
233
+ ```
234
+
235
+ Agent 文件是框架资产,不是运行时产物;frontmatter 最小集为:
236
+
237
+ ```yaml
238
+ ---
239
+ id: <cat>/<entry>/<agent-name>
240
+ type: agent
241
+ name: <人类可读名>
242
+ description: <一句话说明该 agent 何时用于隔离执行>
243
+ ---
244
+ ```
245
+
246
+ 正文必须包含:
247
+
248
+ - `## 使命`:单一 phase 或审查轴。
249
+ - `## 输入契约`:当前 change 路径、`current_phase`/`phase-id`、上游产物。
250
+ - `## 执行规范`:用相对路径引用同目录 phase 文件、模板、skill;不得复制大段规范正文。
251
+ - `## 产物与状态`:产物路径和 `.status.json` 扩展字段写入责任。
252
+ - `## 边界`:不越过本 phase、不改无关文件、不写 `change_status`。
253
+
254
+ Workflow 入口若提供 agents,必须在 `## 阶段` 中列出对应 agent 相对路径。Agent 只可写它声明的 phase 产物和状态扩展字段;最终 `change_status` 仍由收尾 workflow 或 `archive` 命令负责。
255
+
179
256
  ## 命名校验清单
180
257
 
181
258
  ### 创建时
@@ -184,6 +261,8 @@ description: <一句话> # 必填
184
261
  - [ ] command 产物目录名匹配 `^\d{4}-\d{2}-\d{2}-[a-z0-9]+-[a-z0-9]+(-[a-z0-9]+)*$`
185
262
  - [ ] 日期部分使用**当前日期**(`YYYY-MM-DD`)
186
263
  - [ ] `<kebab-name>` 从用户意图中提取
264
+ - [ ] `.status.json` 已写入且包含全部最小必填字段
265
+ - [ ] `<cat>-status.json` 的 `active[]` 已追加索引条目
187
266
 
188
267
  ### 扫描时
189
268
 
@@ -4,7 +4,7 @@ phase 的切分、完成准则与措辞遵循 `authoring-quality-levers.md` 的
4
4
 
5
5
  ## 入口结构
6
6
 
7
- workflow 放在 `template/workflows/<cat>/`,`<cat>` 只能是 `dev`、`doc`、`person`、`ops`。
7
+ workflow 放在 `template/workflows/<cat>/`,`<cat>` 只能是 `dev`、`doc`、`person`。`ops` 是预留分类,只有 `.speculo` 骨架和 workflow 分类同时落地后才能启用。
8
8
 
9
9
  目录和入口文件必须同名:
10
10
 
@@ -41,10 +41,12 @@ keywords: [<关键词>]
41
41
 
42
42
  阶段条目必须写清:
43
43
 
44
+ - 稳定 phase id(kebab-case,用于 `current_phase`)
44
45
  - 规范 phase 文件
45
46
  - 模板路径
46
47
  - 产物文件名
47
48
  - 完成准则
49
+ - 可选 agent 文件(若该 phase 支持隔离执行)
48
50
 
49
51
  ## Phase 文件
50
52
 
@@ -58,6 +60,35 @@ phase 文件不需要 frontmatter。每个 phase 文件写清:
58
60
 
59
61
  phase 文件只放该阶段执行所需内容,不重复入口文件的全局说明。
60
62
 
63
+ ## Workflow Agents
64
+
65
+ 适合隔离执行、并行审查或反自证验证的 phase 可以创建:
66
+
67
+ ```text
68
+ template/workflows/<cat>/<entry>/agents/<name>-agent.md
69
+ ```
70
+
71
+ Agent 文件需要 frontmatter:
72
+
73
+ ```yaml
74
+ ---
75
+ id: <cat>/<entry>/<agent-name>
76
+ type: agent
77
+ name: <人类可读名>
78
+ description: <一句话说明该 agent 何时用于隔离执行>
79
+ ---
80
+ ```
81
+
82
+ 正文必须包含:
83
+
84
+ - `## 使命`
85
+ - `## 输入契约`
86
+ - `## 执行规范`
87
+ - `## 产物与状态`
88
+ - `## 边界`
89
+
90
+ Agent 引用同目录 phase 文件、模板和 skill,不复制大段规范正文。Agent 只可写它声明的 phase 产物和 `.status.json` 扩展字段,不写 `change_status`。入口 `## 阶段` 必须列出对应 agent 相对路径。
91
+
61
92
  ## 模板
62
93
 
63
94
  模板放在:
@@ -112,6 +143,8 @@ speculo/.speculo/.config/adr/
112
143
 
113
144
  不要把新状态放到项目根目录。`.status.json` 元字段、顶层索引 schema 和写入责任表见 `persistence-contract-sop.md`。
114
145
 
146
+ `current_phase` 使用入口 `## 阶段` 声明的稳定 phase id;首个 workflow 进入 change 时写入 `execution_mode`。只有收尾 workflow 或 `archive` 命令可写 `change_status: completed | archived`,普通 workflow 只写自治状态字段。
147
+
115
148
  ## 索引与文档同步
116
149
 
117
150
  新增 workflow 后检查:
@@ -32,7 +32,7 @@ PRD 只写入 `speculo/.speculo/dev/<change>/prd.md`,overview 只写入 `specu
32
32
 
33
33
  ### 1. Zoom Out — 全景理解
34
34
  - 规范:`prd-zoom-out.md`
35
- - 模板:`../_templates/prd-overview-template.md`
35
+ - 模板:`../_templates/overview-template.md`
36
36
  - 产物:`overview.md`
37
37
  - 完成准则:
38
38
  - 已说明相关模块、调用者、边界和未知点
@@ -8,7 +8,7 @@
8
8
 
9
9
  ## 产物
10
10
 
11
- - `speculo/.speculo/dev/<change>/overview.md`,由 `../_templates/prd-overview-template.md` 填写
11
+ - `speculo/.speculo/dev/<change>/overview.md`,由 `../_templates/overview-template.md` 填写
12
12
 
13
13
  ## 填写引导
14
14