@namewta/speculo 0.1.18 → 0.1.20
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 +11 -4
- package/dist/src/index.js +17 -9
- package/dist/src/index.js.map +1 -1
- package/package.json +1 -1
- package/template/.speculo/.config/LESSONS.md +1 -1
- package/template/.speculo/.config/RULES.md +0 -1
- package/template/.speculo/AGENTS.md +30 -0
- package/template/.speculo/archive/AGENTS.md +28 -0
- package/template/.speculo/dev/docs-sync-state.json +3 -3
- package/template/commands/archive.md +2 -2
- package/template/commands/config-prune.md +59 -0
- package/template/commands/status.md +1 -1
- package/template/skills/config-prune/SKILL.md +66 -0
- package/template/skills/github-npm-ops/references/release-pipeline.md +2 -2
- package/template/skills/speculo-write/references/command-authoring-sop.md +2 -0
- package/template/skills/speculo-write/references/migration-sop.md +1 -1
- package/template/skills/speculo-write/references/persistence-contract-sop.md +3 -3
- package/template/skills/speculo-write/references/validation-checklist.md +1 -0
- package/template/skills/speculo-write/references/workflow-authoring-sop.md +2 -2
- package/template/skills/worktree-isolation/SKILL.md +1 -1
- package/template/workflows/dev/03-tdd/03-tdd.md +16 -0
- package/template/workflows/dev/03-tdd/tdd-loop.md +4 -2
- package/template/workflows/dev/03-tdd/tdd-plan.md +10 -7
- package/template/workflows/dev/{00-INDEX.md → AGENTS.md} +16 -7
- package/template/workflows/dev/D-docs-sync/D-docs-sync.md +47 -21
- package/template/workflows/dev/D-docs-sync/config-contract.md +75 -0
- package/template/workflows/dev/D-docs-sync/docs-sync-diff.md +40 -4
- package/template/workflows/dev/D-docs-sync/docs-sync-finish.md +11 -7
- package/template/workflows/dev/D-docs-sync/docs-sync-state.md +23 -8
- package/template/workflows/dev/D-docs-sync/docs-sync-update.md +22 -13
- package/template/workflows/dev/D-docs-sync/knowledge-extract.md +66 -0
- package/template/workflows/dev/D-docs-sync/state-json-schema.md +41 -24
- package/template/workflows/dev/M-domain-modeling/ADR-FORMAT.md +26 -1
- package/template/workflows/dev/_templates/docs-sync-report-template.md +21 -5
- package/template/workflows/dev/_templates/docs-sync-state-template.json +4 -4
- package/template/workflows/dev/_templates/tdd-log-template.md +3 -0
- package/template/workflows/dev/_templates/tdd-plan-template.md +3 -0
- package/template/workflows/doc/{00-INDEX.md → AGENTS.md} +14 -5
- package/template/workflows/person/{00-INDEX.md → AGENTS.md} +14 -5
|
@@ -8,19 +8,19 @@
|
|
|
8
8
|
|
|
9
9
|
- docs-sync workflow **唯一**的跨 change 持久化状态
|
|
10
10
|
- 每次成功同步后原子化写入
|
|
11
|
-
- 必须跟随仓库提交到 git
|
|
11
|
+
- 必须跟随仓库提交到 git(作为同步基线和 tracked assets 的事实来源)
|
|
12
12
|
- **不放在 workflow 资产目录内**:workflow 目录是只读知识资产,状态属于项目 `speculo/.speculo/`
|
|
13
13
|
|
|
14
14
|
**初始化模板**:`../_templates/docs-sync-state-template.json`
|
|
15
15
|
|
|
16
|
-
##
|
|
16
|
+
## 字段定义(schema_version 2)
|
|
17
17
|
|
|
18
18
|
| 字段 | 类型 | 必填 | 说明 |
|
|
19
19
|
|------|------|:---:|------|
|
|
20
|
-
| `schema_version` | integer | ✓ | 当前 `
|
|
20
|
+
| `schema_version` | integer | ✓ | 当前 `2`;字段破坏性变化时递增 |
|
|
21
21
|
| `skill` | string | ✓ | 固定为 `"docs-sync"`,便于多技能共用项目根目录时辨识 |
|
|
22
22
|
| `state_path` | string | ✓ | 自描述字段:state 文件相对仓库根的路径;协助协作者理解文件位置 |
|
|
23
|
-
| `
|
|
23
|
+
| `tracked_assets` | string[] | ✓ | 本项目纳入同步的文档和 `.config` 知识资产路径(相对仓库根);首次空 state 由 `bootstrap` 初始化自动推导写入 |
|
|
24
24
|
| `last_sync_sha` | string (40 hex) \| `null` | ✓ | 上次成功同步后记录的 commit SHA;下次 diff 的起点;首次运行前为 `null` |
|
|
25
25
|
| `last_sync_short` | string (7 hex) \| `null` | ✓ | `last_sync_sha` 的前 7 位,便于日志阅读 |
|
|
26
26
|
| `last_sync_commit_subject` | string \| `null` | ✓ | 上次基线 commit 的 subject 行 |
|
|
@@ -28,7 +28,12 @@
|
|
|
28
28
|
| `last_sync_run_at` | string (ISO 8601 UTC) \| `null` | ✓ | 本次同步**完成写入**时刻;与 `last_sync_commit_date` 不同 —— 前者是"我什么时候做的",后者是"基线 commit 什么时候创建的" |
|
|
29
29
|
| `previous_sync_sha` | string (40 hex) \| `null` | ✓ | 上一次的 `last_sync_sha`;首次运行时为 `null` |
|
|
30
30
|
| `total_syncs` | integer | ✓ | 累计触发次数(含空同步) |
|
|
31
|
-
| `
|
|
31
|
+
| `synced_assets` | string[] | ✓ | 本次**实际被修改**的 tracked assets;空同步时为 `[]` |
|
|
32
|
+
|
|
33
|
+
`tracked_assets` 支持两类写法:
|
|
34
|
+
|
|
35
|
+
- 精确路径:`README.md`、`AGENTS.md`、`speculo/.speculo/.config/RULES.md`
|
|
36
|
+
- 受限 Markdown glob:`docs/**/*.md`、`speculo/.speculo/.config/context/**/*.md`、`speculo/.speculo/.config/adr/**/*.md`
|
|
32
37
|
|
|
33
38
|
**禁止**放入的字段:
|
|
34
39
|
|
|
@@ -36,6 +41,7 @@
|
|
|
36
41
|
- 用户个人信息
|
|
37
42
|
- 密钥 / token
|
|
38
43
|
- 绝对路径(影响跨环境协作)
|
|
44
|
+
- archive 提取详情和用户确认原文(写入 report,不写 state)
|
|
39
45
|
|
|
40
46
|
## 典型状态
|
|
41
47
|
|
|
@@ -43,10 +49,10 @@
|
|
|
43
49
|
|
|
44
50
|
```json
|
|
45
51
|
{
|
|
46
|
-
"schema_version":
|
|
52
|
+
"schema_version": 2,
|
|
47
53
|
"skill": "docs-sync",
|
|
48
54
|
"state_path": "speculo/.speculo/dev/docs-sync-state.json",
|
|
49
|
-
"
|
|
55
|
+
"tracked_assets": [],
|
|
50
56
|
"last_sync_sha": null,
|
|
51
57
|
"last_sync_short": null,
|
|
52
58
|
"last_sync_commit_subject": null,
|
|
@@ -54,37 +60,37 @@
|
|
|
54
60
|
"last_sync_run_at": null,
|
|
55
61
|
"previous_sync_sha": null,
|
|
56
62
|
"total_syncs": 0,
|
|
57
|
-
"
|
|
63
|
+
"synced_assets": []
|
|
58
64
|
}
|
|
59
65
|
```
|
|
60
66
|
|
|
61
|
-
###
|
|
67
|
+
### 建立基线后(首次 bootstrap 完成)
|
|
62
68
|
|
|
63
69
|
```json
|
|
64
70
|
{
|
|
65
|
-
"schema_version":
|
|
71
|
+
"schema_version": 2,
|
|
66
72
|
"skill": "docs-sync",
|
|
67
73
|
"state_path": "speculo/.speculo/dev/docs-sync-state.json",
|
|
68
|
-
"
|
|
74
|
+
"tracked_assets": ["README.md", "CHANGELOG.md", "AGENTS.md", "docs/**/*.md", "speculo/.speculo/.config/LESSONS.md"],
|
|
69
75
|
"last_sync_sha": "2d16d7a4d7f5da165c565b9aa3265824be133214",
|
|
70
76
|
"last_sync_short": "2d16d7a",
|
|
71
77
|
"last_sync_commit_subject": "chore: initial release",
|
|
72
78
|
"last_sync_commit_date": "2026-05-10T09:48:14+08:00",
|
|
73
79
|
"last_sync_run_at": "2026-05-10T12:00:00Z",
|
|
74
80
|
"previous_sync_sha": null,
|
|
75
|
-
"total_syncs":
|
|
76
|
-
"
|
|
81
|
+
"total_syncs": 1,
|
|
82
|
+
"synced_assets": ["README.md", "CHANGELOG.md", "AGENTS.md"]
|
|
77
83
|
}
|
|
78
84
|
```
|
|
79
85
|
|
|
80
|
-
###
|
|
86
|
+
### 常规同步(实际改了两份资产)
|
|
81
87
|
|
|
82
88
|
```json
|
|
83
89
|
{
|
|
84
|
-
"schema_version":
|
|
90
|
+
"schema_version": 2,
|
|
85
91
|
"skill": "docs-sync",
|
|
86
92
|
"state_path": "speculo/.speculo/dev/docs-sync-state.json",
|
|
87
|
-
"
|
|
93
|
+
"tracked_assets": ["README.md", "CHANGELOG.md", "speculo/.speculo/.config/LESSONS.md"],
|
|
88
94
|
"last_sync_sha": "abc1234def5678...",
|
|
89
95
|
"last_sync_short": "abc1234",
|
|
90
96
|
"last_sync_commit_subject": "feat(cli): add --json to status",
|
|
@@ -92,18 +98,18 @@
|
|
|
92
98
|
"last_sync_run_at": "2026-05-15T14:00:00Z",
|
|
93
99
|
"previous_sync_sha": "2d16d7a4d7f5da165c565b9aa3265824be133214",
|
|
94
100
|
"total_syncs": 3,
|
|
95
|
-
"
|
|
101
|
+
"synced_assets": ["README.md", "speculo/.speculo/.config/LESSONS.md"]
|
|
96
102
|
}
|
|
97
103
|
```
|
|
98
104
|
|
|
99
|
-
### 空同步(diff
|
|
105
|
+
### 空同步(diff 与知识审计都无需修改)
|
|
100
106
|
|
|
101
107
|
```json
|
|
102
108
|
{
|
|
103
|
-
"schema_version":
|
|
109
|
+
"schema_version": 2,
|
|
104
110
|
"skill": "docs-sync",
|
|
105
111
|
"state_path": "speculo/.speculo/dev/docs-sync-state.json",
|
|
106
|
-
"
|
|
112
|
+
"tracked_assets": ["README.md", "CHANGELOG.md", "AGENTS.md", "docs/**/*.md"],
|
|
107
113
|
"last_sync_sha": "ffe9876abc5432...",
|
|
108
114
|
"last_sync_short": "ffe9876",
|
|
109
115
|
"last_sync_commit_subject": "docs(readme): fix typo",
|
|
@@ -111,7 +117,7 @@
|
|
|
111
117
|
"last_sync_run_at": "2026-05-16T11:00:00Z",
|
|
112
118
|
"previous_sync_sha": "abc1234def5678...",
|
|
113
119
|
"total_syncs": 4,
|
|
114
|
-
"
|
|
120
|
+
"synced_assets": []
|
|
115
121
|
}
|
|
116
122
|
```
|
|
117
123
|
|
|
@@ -126,10 +132,11 @@
|
|
|
126
132
|
|
|
127
133
|
读取 state 文件时按以下降级链处理:
|
|
128
134
|
|
|
129
|
-
1. 文件不存在 →
|
|
135
|
+
1. 文件不存在 → 复制 `../_templates/docs-sync-state-template.json` 到 `speculo/.speculo/dev/docs-sync-state.json`,进入 `bootstrap` 文档初始化;不要立即把基线设为当前 HEAD
|
|
130
136
|
2. JSON 解析失败 → 报错退出,要求用户手动修复或删除
|
|
131
|
-
3. `schema_version >
|
|
132
|
-
4. `last_sync_sha` 不是 40 字符十六进制且不为 `null` →
|
|
137
|
+
3. `schema_version > 2` → 报错退出,提示技能版本过旧
|
|
138
|
+
4. `last_sync_sha` 不是 40 字符十六进制且不为 `null` → 视为损坏,回退到 `bootstrap` 文档初始化
|
|
139
|
+
5. `tracked_assets` 为空或 `last_sync_sha` 为 `null` → 进入 `bootstrap` 文档初始化,自动推导首批 tracked assets 并完成从 0 到 1 的文档建档
|
|
133
140
|
|
|
134
141
|
## 版本演进规则
|
|
135
142
|
|
|
@@ -140,6 +147,16 @@
|
|
|
140
147
|
|
|
141
148
|
递增时必须在本文件追加"vN → vN+1 迁移"小节,描述如何处理老格式。
|
|
142
149
|
|
|
150
|
+
## v1 → v2 迁移
|
|
151
|
+
|
|
152
|
+
v2 把 docs-only 命名扩展为 assets:
|
|
153
|
+
|
|
154
|
+
- `tracked_docs` → `tracked_assets`
|
|
155
|
+
- `synced_docs` → `synced_assets`
|
|
156
|
+
- `schema_version` → `2`
|
|
157
|
+
|
|
158
|
+
迁移时保留 baseline 字段、`previous_sync_sha` 和 `total_syncs`。若迁移后仍有有效 `tracked_assets` 和 `last_sync_sha`,不要自动扩大同步范围;若迁移后 `tracked_assets` 为空或 `last_sync_sha` 为 `null`,进入 `bootstrap` 文档初始化。
|
|
159
|
+
|
|
143
160
|
## 与 git 的协作
|
|
144
161
|
|
|
145
162
|
- state 文件**提交到 git**,作为仓库的一部分
|
|
@@ -16,11 +16,36 @@ ADR 存放在 `speculo/.speculo/.config/adr/` 目录下,使用顺序编号:`
|
|
|
16
16
|
|
|
17
17
|
就这些。一个 ADR 可以只是一段话。价值在于记录「做出了某个决策」以及「为什么」——而不是填满各个章节。
|
|
18
18
|
|
|
19
|
+
## 生命周期元数据
|
|
20
|
+
|
|
21
|
+
默认 ADR 不需要元数据。只有当决策需要生命周期联动时,在标题下方放极简字段:
|
|
22
|
+
|
|
23
|
+
```md
|
|
24
|
+
# {决策的简短标题}
|
|
25
|
+
|
|
26
|
+
Status: accepted
|
|
27
|
+
superseded_by: null
|
|
28
|
+
|
|
29
|
+
{1-3 句话:背景是什么、我们决定了什么、为什么这样决定。}
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
允许值:
|
|
33
|
+
|
|
34
|
+
- `Status: proposed | accepted | deprecated | superseded`
|
|
35
|
+
- `superseded_by: ADR-NNNN | null`
|
|
36
|
+
|
|
37
|
+
当新 ADR 取代旧 ADR 时:
|
|
38
|
+
|
|
39
|
+
- 新 ADR 正文说明取代了哪个 ADR 以及原因。
|
|
40
|
+
- 旧 ADR 顶部更新为 `Status: superseded` 和 `superseded_by: ADR-NNNN`。
|
|
41
|
+
- 若项目有 ADR 索引或 README,同步状态和取代链。
|
|
42
|
+
- 任何 CONTEXT、AGENTS、README 或 docs 中的旧 ADR 引用都必须改为新 ADR、删除,或标记为待确认。
|
|
43
|
+
|
|
19
44
|
## 可选章节
|
|
20
45
|
|
|
21
46
|
只有确实能增加价值时才包含以下章节。大多数 ADR 不需要它们。
|
|
22
47
|
|
|
23
|
-
- **Status**
|
|
48
|
+
- **Status** 前置元数据(见「生命周期元数据」)—— 当决策被重新审视时很有用
|
|
24
49
|
- **Considered Options** —— 只有被拒绝的替代方案值得记住时才写
|
|
25
50
|
- **Consequences** —— 只有非显而易见的下游影响需要指出时才写
|
|
26
51
|
|
|
@@ -6,19 +6,35 @@
|
|
|
6
6
|
|
|
7
7
|
## Range
|
|
8
8
|
|
|
9
|
-
[TODO: 记录 `<LAST_SYNC_SHA>..HEAD
|
|
9
|
+
[TODO: 记录 `<LAST_SYNC_SHA>..HEAD`;bootstrap 模式写 `<bootstrap>..HEAD`,并说明本次为首次文档初始化。]
|
|
10
|
+
|
|
11
|
+
## Bootstrap Initialization
|
|
12
|
+
|
|
13
|
+
[TODO: 仅 bootstrap 模式填写:记录项目事实盘点、自动推导的 tracked assets、缺失文档清单和初始化动作;常规同步写 `N/A`。]
|
|
10
14
|
|
|
11
15
|
## Diff Summary
|
|
12
16
|
|
|
13
|
-
[TODO: 记录 git log、name-status
|
|
17
|
+
[TODO: 记录 git log、name-status、路径分组、archive/.config 相关 diff 摘要。]
|
|
18
|
+
|
|
19
|
+
## Archive Sources
|
|
20
|
+
|
|
21
|
+
[TODO: 列出本次读取的 `speculo/.speculo/archive/` 产物路径;没有相关归档时写 `[]` 和原因。]
|
|
22
|
+
|
|
23
|
+
## Knowledge Suggestions
|
|
24
|
+
|
|
25
|
+
[TODO: 记录从归档提取的 ADR / CONTEXT / RULES / LESSONS / 文档漂移候选,包含来源路径和动作。]
|
|
26
|
+
|
|
27
|
+
## Config Audit
|
|
28
|
+
|
|
29
|
+
[TODO: 记录 `.config` 审计结果,按 add / update / delete / keep / propose-only 分组;RULES 写入确认单独记录。]
|
|
14
30
|
|
|
15
31
|
## Mapping
|
|
16
32
|
|
|
17
|
-
[TODO:
|
|
33
|
+
[TODO: 说明哪些变更或 bootstrap 初始化发现映射到哪些 tracked assets。]
|
|
18
34
|
|
|
19
|
-
## Synced
|
|
35
|
+
## Synced Assets
|
|
20
36
|
|
|
21
|
-
[TODO:
|
|
37
|
+
[TODO: 列出实际创建或修改的资产和一句话说明;空同步时写 `[]`。]
|
|
22
38
|
|
|
23
39
|
## Verification
|
|
24
40
|
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
{
|
|
2
|
-
"schema_version":
|
|
2
|
+
"schema_version": 2,
|
|
3
3
|
"skill": "docs-sync",
|
|
4
|
-
"state_path": "
|
|
5
|
-
"
|
|
4
|
+
"state_path": "speculo/.speculo/dev/docs-sync-state.json",
|
|
5
|
+
"tracked_assets": [],
|
|
6
6
|
"last_sync_sha": null,
|
|
7
7
|
"last_sync_short": null,
|
|
8
8
|
"last_sync_commit_subject": null,
|
|
@@ -10,5 +10,5 @@
|
|
|
10
10
|
"last_sync_run_at": null,
|
|
11
11
|
"previous_sync_sha": null,
|
|
12
12
|
"total_syncs": 0,
|
|
13
|
-
"
|
|
13
|
+
"synced_assets": []
|
|
14
14
|
}
|
|
@@ -10,6 +10,9 @@
|
|
|
10
10
|
## 切片来源
|
|
11
11
|
[TODO: 记录来自 PRD、slices、diagnosis 还是用户直接请求。]
|
|
12
12
|
|
|
13
|
+
## 执行前 Git 基线
|
|
14
|
+
[TODO: 记录当前分支、`git status --short --branch` 摘要、`git diff --stat`、`git diff --cached --stat`。若不是 git 仓库或命令失败,记录原因。]
|
|
15
|
+
|
|
13
16
|
## 保留/不动(约束)
|
|
14
17
|
[TODO: 承接本切片「保留/不动」:实现中不能碰的代码/契约/数据(冻结常量、共享依赖、邻近功能);无则写「无」。]
|
|
15
18
|
|
|
@@ -1,19 +1,27 @@
|
|
|
1
1
|
---
|
|
2
2
|
id: doc/index
|
|
3
3
|
category: doc
|
|
4
|
-
name: Doc Workflow
|
|
5
|
-
description:
|
|
6
|
-
keywords: [doc, writing, article, fragments, edit, 文档, 写作]
|
|
4
|
+
name: Doc Workflow AGENTS Guide
|
|
5
|
+
description: 文档写作、塑形、编辑与素材管理的横向工作流导航与渐进披露指引
|
|
6
|
+
keywords: [doc, writing, article, fragments, edit, agents, 文档, 写作]
|
|
7
7
|
---
|
|
8
8
|
|
|
9
|
-
# Doc Workflow
|
|
9
|
+
# Doc Workflow AGENTS Guide
|
|
10
10
|
|
|
11
11
|
> ⚠️ **持久化铁律:本文件及所有 doc workflow 的全部产物,必须且只能写入 `speculo/.speculo/doc/<change>/`。绝对禁止写入项目根目录的 `.speculo/`、`temp/` 或其他任何非规范位置。**
|
|
12
12
|
|
|
13
|
-
本文件是 doc
|
|
13
|
+
本文件是 doc 分类的 AGENTS 导航入口。进入时先读取 `speculo/.speculo/doc-status.json`,再按其中 active change 读取 `speculo/.speculo/doc/<change>/.status.json`,根据用户意图推荐横向 workflow。
|
|
14
14
|
|
|
15
15
|
> **命名铁律:** 所有 change 目录必须为 `YYYY-MM-DD-<kebab-name>`(例:`2026-06-12-article-draft`)。不符合此格式的目录视为 `malformed`,仅汇报不自动操作。
|
|
16
16
|
|
|
17
|
+
## 渐进披露
|
|
18
|
+
|
|
19
|
+
1. 先读本文件,确认当前 doc change、写作模式和入口别名。
|
|
20
|
+
2. 选定入口后,只读取对应 workflow 入口文件(如 `S-writing-shape/S-writing-shape.md`)。
|
|
21
|
+
3. 进入具体 phase 时,再读取该 phase 文件、模板和被调用 skill wrapper。
|
|
22
|
+
4. 执行中如涉及项目硬约束、跨任务经验、写作上下文、术语定义、ADR 或决策依据,必须参考 `../../.speculo/.config/` 下对应文件;`RULES.md` 的约束高于普通 workflow 文案。
|
|
23
|
+
5. 需要理解状态骨架、archive 或 `.config` 时,读取 `../../.speculo/AGENTS.md` 和相关子目录的 `AGENTS.md`。
|
|
24
|
+
|
|
17
25
|
## 入口别名
|
|
18
26
|
|
|
19
27
|
| 别名 | 入口 | 用途 |
|
|
@@ -36,6 +44,7 @@ keywords: [doc, writing, article, fragments, edit, 文档, 写作]
|
|
|
36
44
|
- 以上三步全部成功后,方可继续推荐入口。
|
|
37
45
|
4. 推荐入口时优先使用用户显式别名;没有别名时按用户意图推荐一个横向 workflow。
|
|
38
46
|
5. 执行任何 workflow 前,读取该 workflow 入口文件、阶段文件和模板。
|
|
47
|
+
6. 执行中一旦需要项目规则、经验、上下文、术语或 ADR,先读取 `../../.speculo/.config/`,再继续判断或写入产物;除非用户明确要求或规则允许,不自动改写 `.config/`。
|
|
39
48
|
|
|
40
49
|
## 执行模式
|
|
41
50
|
|
|
@@ -1,19 +1,27 @@
|
|
|
1
1
|
---
|
|
2
2
|
id: person/index
|
|
3
3
|
category: person
|
|
4
|
-
name: Person Workflow
|
|
5
|
-
description:
|
|
6
|
-
keywords: [person, methodology, 人物, 方法论, cognitive, 认知]
|
|
4
|
+
name: Person Workflow AGENTS Guide
|
|
5
|
+
description: 以人物方法论为底座的工作流导航与渐进披露指引
|
|
6
|
+
keywords: [person, methodology, agents, 人物, 方法论, cognitive, 认知]
|
|
7
7
|
---
|
|
8
8
|
|
|
9
|
-
# Person Workflow
|
|
9
|
+
# Person Workflow AGENTS Guide
|
|
10
10
|
|
|
11
11
|
> ⚠️ **持久化铁律:本文件及所有 person workflow 的全部产物,必须且只能写入 `speculo/.speculo/person/<change>/`。绝对禁止写入项目根目录的 `.speculo/`、`temp/` 或其他任何非规范位置。**
|
|
12
12
|
|
|
13
|
-
本文件是 person
|
|
13
|
+
本文件是 person 分类的 AGENTS 导航入口。进入时先读取 `speculo/.speculo/person-status.json`,再按其中 active change 读取 `speculo/.speculo/person/<change>/.status.json`,根据用户意图推荐横向 workflow。
|
|
14
14
|
|
|
15
15
|
> **命名铁律:** 所有 change 目录必须为 `YYYY-MM-DD-<kebab-name>`(例:`2026-06-12-mao-strategy-consult`)。不符合此格式的目录视为 `malformed`,仅汇报不自动操作。
|
|
16
16
|
|
|
17
|
+
## 渐进披露
|
|
18
|
+
|
|
19
|
+
1. 先读本文件,确认当前 person change、咨询模式和入口别名。
|
|
20
|
+
2. 选定入口后,只读取对应 workflow 入口文件(如 `M-mao-zedong-cognitive-os/M-mao-zedong-cognitive-os.md`)。
|
|
21
|
+
3. 进入具体 phase 时,再读取该 phase 文件、模板和被调用 skill wrapper。
|
|
22
|
+
4. 执行中如涉及项目硬约束、跨任务经验、人物方法论上下文、术语定义、ADR 或决策依据,必须参考 `../../.speculo/.config/` 下对应文件;`RULES.md` 的约束高于普通 workflow 文案。
|
|
23
|
+
5. 需要理解状态骨架、archive 或 `.config` 时,读取 `../../.speculo/AGENTS.md` 和相关子目录的 `AGENTS.md`。
|
|
24
|
+
|
|
17
25
|
## 入口别名
|
|
18
26
|
|
|
19
27
|
| 别名 | 入口 | 用途 |
|
|
@@ -28,6 +36,7 @@ keywords: [person, methodology, 人物, 方法论, cognitive, 认知]
|
|
|
28
36
|
3. 若没有 active change,按用户意图创建新的 change 目录,**目录名必须为 `YYYY-MM-DD-<kebab-name>`**(使用当前日期,`<kebab-name>` 从用户意图提取),并初始化 `.status.json` 与 `speculo/.speculo/person-status.json`。
|
|
29
37
|
4. 推荐入口时优先使用用户显式别名;没有别名时按用户意图推荐一个横向 workflow。
|
|
30
38
|
5. 执行任何 workflow 前,读取该 workflow 入口文件、阶段文件和模板。
|
|
39
|
+
6. 执行中一旦需要项目规则、经验、上下文、术语或 ADR,先读取 `../../.speculo/.config/`,再继续判断或写入产物;除非用户明确要求或规则允许,不自动改写 `.config/`。
|
|
31
40
|
|
|
32
41
|
## 执行模式
|
|
33
42
|
|