@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.
- package/package.json +1 -1
- package/template/commands/archive.md +1 -1
- package/template/commands/handoff.md +1 -1
- package/template/commands/status.md +1 -1
- package/template/skills/config-prune/SKILL.md +7 -29
- package/template/skills/config-prune/references/audit-rules.md +38 -0
- package/template/skills/github-npm-ops/references/failure-recovery.md +2 -2
- package/template/skills/github-npm-ops/references/issue-pr-triage.md +1 -1
- package/template/skills/github-npm-ops/references/preflight-checklist.md +3 -3
- package/template/skills/github-npm-ops/references/release-pipeline.md +3 -3
- package/template/skills/handoff/SKILL.md +34 -11
- package/template/skills/speculo-write/references/persistence-contract-sop.md +86 -7
- package/template/skills/speculo-write/references/workflow-authoring-sop.md +34 -1
- package/template/workflows/dev/02-prd/02-prd.md +1 -1
- package/template/workflows/dev/02-prd/prd-zoom-out.md +1 -1
- package/template/workflows/dev/03-tdd/03-tdd.md +22 -125
- package/template/workflows/dev/03-tdd/agents/tdd-finish-agent.md +34 -0
- package/template/workflows/dev/03-tdd/agents/tdd-implement-agent.md +34 -0
- package/template/workflows/dev/03-tdd/agents/tdd-plan-agent.md +34 -0
- package/template/workflows/dev/04-finalize/04-finalize.md +28 -108
- package/template/workflows/dev/04-finalize/agents/completion-gate-agent.md +35 -0
- package/template/workflows/dev/A-improve-architecture/A-improve-architecture.md +25 -108
- package/template/workflows/dev/A-improve-architecture/architecture-grill.md +30 -0
- package/template/workflows/dev/A-improve-architecture/architecture-review.md +29 -0
- package/template/workflows/dev/A-improve-architecture/architecture-scan.md +37 -0
- package/template/workflows/dev/AGENTS.md +10 -2
- package/template/workflows/dev/D-docs-sync/D-docs-sync.md +14 -1
- package/template/workflows/dev/D-docs-sync/agents/docs-diff-agent.md +34 -0
- package/template/workflows/dev/D-docs-sync/agents/docs-update-agent.md +34 -0
- package/template/workflows/dev/H-diagnose/H-diagnose.md +12 -23
- package/template/workflows/dev/H-diagnose/agents/diagnose-agent.md +33 -0
- package/template/workflows/dev/H-diagnose/agents/fix-agent.md +34 -0
- package/template/workflows/dev/I-to-issues/I-to-issues.md +29 -90
- package/template/workflows/dev/I-to-issues/issues-slices.md +3 -3
- package/template/workflows/dev/M-domain-modeling/M-domain-modeling.md +6 -22
- package/template/workflows/dev/R-review/R-review.md +33 -121
- package/template/workflows/dev/R-review/agents/engineering-review-agent.md +33 -0
- package/template/workflows/dev/R-review/agents/spec-review-agent.md +34 -0
- package/template/workflows/dev/R-review/agents/standards-review-agent.md +34 -0
- package/template/workflows/dev/R-review/review-setup.md +39 -1
- package/template/workflows/dev/_templates/issues-slices-template.md +1 -1
- package/template/workflows/dev/_templates/{prd-overview-template.md → overview-template.md} +0 -1
- package/template/workflows/doc/AGENTS.md +10 -2
- package/template/workflows/doc/B-writing-beats/B-writing-beats.md +1 -1
- package/template/workflows/doc/E-edit-article/E-edit-article.md +1 -1
- package/template/workflows/doc/S-writing-shape/S-writing-shape.md +1 -1
- package/template/workflows/doc/T-teach/T-teach.md +30 -113
- package/template/workflows/doc/_templates/teach-learning-record-template.md +1 -1
- package/template/workflows/doc/_templates/teach-lesson-html-template.md +24 -0
- package/template/workflows/person/AGENTS.md +14 -2
- package/template/workflows/person/M-mao-zedong-cognitive-os/M-mao-zedong-cognitive-os.md +32 -158
- package/template/workflows/person/M-mao-zedong-cognitive-os/activate.md +2 -1
- package/template/workflows/person/M-mao-zedong-cognitive-os/books/README.md +12 -238
- package/template/workflows/person/M-mao-zedong-cognitive-os/deliver.md +1 -0
- package/template/workflows/person/M-mao-zedong-cognitive-os/diagnose.md +3 -61
- package/template/workflows/person/M-mao-zedong-cognitive-os/mobilize.md +3 -50
- package/template/workflows/person/M-mao-zedong-cognitive-os/references/research/15-quote-bank.md +10 -10
- package/template/workflows/person/M-mao-zedong-cognitive-os/strategize.md +3 -69
package/package.json
CHANGED
|
@@ -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
|
|
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 或其他已有产物正文。
|
|
@@ -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
|
|
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. 读取 `
|
|
38
|
-
2.
|
|
39
|
-
|
|
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
|
-
-
|
|
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
|
-
|
|
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
|
|
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 必须由调用方按
|
|
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
|
-
- 由调用方执行
|
|
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 或
|
|
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:
|
|
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
|
-
-
|
|
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
|
-
-
|
|
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. 添加
|
|
44
|
-
5.
|
|
45
|
-
|
|
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
|
|
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
|
|
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
|
|
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/
|
|
35
|
+
- 模板:`../_templates/overview-template.md`
|
|
36
36
|
- 产物:`overview.md`
|
|
37
37
|
- 完成准则:
|
|
38
38
|
- 已说明相关模块、调用者、边界和未知点
|