@geminilight/mindos 0.5.14 → 0.5.16

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.
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: project-wiki
3
- description: "组织和维护 Vibe Coding 项目的 wiki 文档体系。当用户要求初始化/重构 wiki 结构、进入新项目且 wiki/ 不存在、或需要诊断和修复文档腐化时触发。"
3
+ description: "组织和维护 Vibe Coding 项目的 wiki 文档体系。当用户要求初始化/重构 wiki 结构、进入新项目且 wiki/ 不存在、需要诊断和修复文档腐化、或需要管理 specs/refs/reviews 子目录的生命周期时触发。"
4
4
  ---
5
5
 
6
6
  # Project Wiki Skill
@@ -75,9 +75,15 @@ wiki/
75
75
  │ └── 90-changelog.md
76
76
 
77
77
  ├── specs/ — 任务 spec(活跃的,完成后归档)
78
- │ └── task-spec-xxx.md
78
+ │ └── spec-{feature-name}.md
79
79
  ├── refs/ — 参考资料(外部机制说明、技术调研)
80
- └── archive/ — 已完结的 spec 和历史文档
80
+ └── ref-{topic}.md
81
+ ├── reviews/ — 代码/设计/spec 评审记录
82
+ │ └── review-{date}-{subject}.md
83
+ └── archive/ — 已完结的文档(保留溯源,不污染活跃目录)
84
+ ├── specs/ — 已完成的 spec
85
+ ├── reviews/ — 历史评审
86
+ └── stages/ — 已归档的 stage 文件
81
87
  ```
82
88
 
83
89
  | 区段 | 用途 | 扩展性 |
@@ -132,8 +138,9 @@ wiki/
132
138
  | 40 | `conventions.md` | 有明确的编码偏好/约束(库选择、命名、错误处理模式等) |
133
139
  | 41 | `dev-pitfall-patterns.md` | 踩坑积累到需要系统性记录时 |
134
140
  | 6X | `stage-X.md` | 功能复杂度超过一句话能说清(150-300 行) |
135
- | — | `specs/task-spec-xxx.md` | 小功能 / 改进点的 spec;实现完成后归档到 `archive/` |
136
- | — | `refs/xxx.md` | 外部机制说明、技术调研、协议文档 |
141
+ | — | `specs/spec-{name}.md` | 小功能 / 改进点的 spec;完成后移入 `archive/specs/` |
142
+ | — | `refs/ref-{topic}.md` | 外部机制调研、技术选型对比、第三方 API 文档摘要 |
143
+ | — | `reviews/review-{date}-{subject}.md` | 代码审查、spec 评审、设计评审的结论与 action items |
137
144
  | 80 | `known-pitfalls.md` | 踩坑即记,不等阶段结束 |
138
145
  | 81 | `postmortem-*.md` | 多个 bug 互相关联、暴露系统性问题时(单点问题用 pitfalls,系统性问题用 postmortem) |
139
146
  | 84 | `design-exploration.md` | 有 UI 设计探索、原型记录等创意过程产物时 |
@@ -148,17 +155,174 @@ wiki/
148
155
 
149
156
  **归档判断标准:** 同时满足以下两条才归档:① 该 stage 已完结超过一个阶段;② 当前及未来 stage 文件中无对它的跨引用。不确定时保留,宁可冗余不要断链。
150
157
 
158
+ ### 子目录管理
159
+
160
+ 四个子目录各有独立的命名规范、生命周期和归档规则。
161
+
162
+ #### specs/ — 任务规格
163
+
164
+ 活跃的功能 spec,是比 stage 文件更细粒度的任务描述。
165
+
166
+ | 项目 | 规则 |
167
+ |------|------|
168
+ | 命名 | `spec-{feature-name}.md`(用 kebab-case,名称反映功能而非编号) |
169
+ | 创建时机 | 功能复杂度介于"backlog 一行"和"stage 文件一整章"之间 |
170
+ | 内容 | 背景、目标、边界、验收标准、受影响文件列表 |
171
+ | 归档 | 实现完成且 review 通过 → 移入 `archive/specs/`,backlog 对应项打勾 |
172
+ | 头部标记 | `<!-- Status: draft | in-review | approved | done | archived -->` |
173
+
174
+ #### refs/ — 参考资料
175
+
176
+ 外部知识的内部镜像——第三方 API 行为、协议格式、技术选型调研等。
177
+
178
+ | 项目 | 规则 |
179
+ |------|------|
180
+ | 命名 | `ref-{topic}.md`(如 `ref-stripe-webhook.md`、`ref-webrtc-signaling.md`) |
181
+ | 创建时机 | 外部知识在 2+ 个文件/对话中被重复查阅 |
182
+ | 内容 | 机制说明、关键 API 摘要、与本项目的集成点、踩坑备注 |
183
+ | 归档 | 不主动归档;集成方案废弃时标记 `<!-- Deprecated: YYYY-MM-DD | Reason -->` |
184
+ | 引用 | stage/spec 文件中通过 `→ 详见 [refs/ref-xxx.md](./refs/ref-xxx.md)` 链接,不复制内容 |
185
+
186
+ #### reviews/ — 评审记录
187
+
188
+ 代码审查、spec 评审、设计评审的结论存档。
189
+
190
+ | 项目 | 规则 |
191
+ |------|------|
192
+ | 命名 | `review-{YYYY-MM-DD}-{subject}.md`(如 `review-2026-03-18-auth-spec.md`) |
193
+ | 创建时机 | spec 评审完成后、重大代码变更 review 后、设计方案评审后 |
194
+ | 内容 | 评审对象(链接到 spec/PR)、结论(通过/修改/拒绝)、action items、遗留讨论点 |
195
+ | 归档 | action items 全部完成 → 移入 `archive/reviews/` |
196
+ | 联动 | 创建 review 后,在对应 spec 头部追加 `<!-- Reviewed: YYYY-MM-DD → reviews/review-xxx.md -->` |
197
+
198
+ #### archive/ — 归档目录
199
+
200
+ 已完结文档的长期存储。保留完整历史以便溯源,但不污染活跃目录。
201
+
202
+ ```
203
+ archive/
204
+ ├── specs/ — 已完成的 spec(保留原文件名)
205
+ ├── reviews/ — 历史评审
206
+ └── stages/ — 已归档的 stage 文件
207
+ ```
208
+
209
+ | 规则 | 说明 |
210
+ |------|------|
211
+ | 归档操作 | `git mv wiki/specs/spec-xxx.md wiki/archive/specs/` |
212
+ | 原位留痕 | 在 `01-project-roadmap.md` 或 `85-backlog.md` 中标注 `[archived → archive/specs/spec-xxx.md]` |
213
+ | 引用不断链 | 归档后全文搜索旧路径(`grep -r "specs/spec-xxx" wiki/`),更新所有引用指向 `archive/` 下的新路径 |
214
+ | 不删除 | archive 目录下的文件只做追加和查阅,不删除 |
215
+
151
216
  ---
152
217
 
153
- ## Agent 阅读顺序
218
+ ### 渐进式披露
219
+
220
+ wiki 文件按三层加载,避免 Agent 一次读入全部内容导致上下文浪费。
221
+
222
+ #### 第一层:索引(始终可用)
223
+
224
+ Agent 进入项目时只读两个文件,建立全局心智模型:
225
+
226
+ ```
227
+ 00-product-proposal.md → 知道"做什么、不做什么"
228
+ 01-project-roadmap.md → 知道"当前在哪个阶段、有哪些功能"
229
+ ```
230
+
231
+ roadmap 中每行功能附带链接,Agent 根据当前任务决定是否深入。
232
+
233
+ #### 第二层:结构(按场景加载)
234
+
235
+ 根据任务类型,Agent 按需加载对应的结构文件:
236
+
237
+ | 任务类型 | 加载文件 | 不加载 |
238
+ |---------|---------|--------|
239
+ | 新功能开发 | `20-system-architecture` → 当前 `6X-stage` → 相关 `specs/` | 其他 stage、refs、reviews |
240
+ | 修 Bug | `20-system-architecture` → `80-known-pitfalls` → 相关 `6X-stage` | 战略文件、无关 stage |
241
+ | UI 调整 | `21-design-principle` → `20-system-architecture`(目录部分) | stage 文件(除非涉及功能逻辑) |
242
+ | 技术调研 | `refs/ref-{topic}` → `20-system-architecture`(集成点) | spec、review |
243
+ | 评审 | 对应 `specs/` → 相关 `refs/` → `40-conventions` | 不相关的 stage |
244
+
245
+ #### 第三层:细节(按需钻取)
246
+
247
+ Agent 只在以下信号出现时才读取更深层文件:
248
+
249
+ - stage 文件中写了 `→ 详见 refs/ref-xxx.md` → 加载该 ref
250
+ - spec 头部有 `<!-- Reviewed: ... -->` → 加载该 review 查看历史决策
251
+ - pitfalls 中提到 `→ 复盘见 81-postmortem-xxx.md` → 加载该 postmortem
252
+ - backlog 中有 `[archived → archive/specs/spec-xxx.md]` → 需要溯源时加载
253
+
254
+ **关键原则:** 不主动扫描子目录。索引文件(roadmap、backlog)中的链接是唯一的"入口导航"。
255
+
256
+ ---
257
+
258
+ ### 关联管理
259
+
260
+ wiki 文件之间存在引用依赖。一个文件变更后,引用它的文件可能需要同步更新。这套规则帮助 Agent 追踪和维护这些关联。
261
+
262
+ #### 引用语法
263
+
264
+ 文件间引用统一使用相对路径 + 锚点:
265
+
266
+ ```markdown
267
+ → 详见 [20-system-architecture.md](./20-system-architecture.md#数据流)
268
+ → 详见 [refs/ref-stripe-webhook.md](./refs/ref-stripe-webhook.md)
269
+ → 归档于 [archive/specs/spec-auth.md](./archive/specs/spec-auth.md)
270
+ ```
271
+
272
+ #### 依赖图(哪些文件引用谁)
273
+
274
+ | 被引用文件 | 典型引用者 | 变更时需检查 |
275
+ |-----------|-----------|------------|
276
+ | `00-product-proposal` | roadmap、stage 文件 | 产品方向变更 → 检查所有 stage 的"背景"段 |
277
+ | `20-system-architecture` | 所有 stage、所有 spec | 架构变更 → `grep -r "system-architecture" wiki/` 检查引用 |
278
+ | `21-design-principle` | 前端相关 stage、spec | 新增 token → 检查现有组件是否需要适配 |
279
+ | `refs/ref-*` | 引用该外部系统的 stage/spec | 外部 API 更新 → 沿引用链更新所有消费方 |
280
+ | `specs/spec-*` | backlog(索引)、reviews(评审) | spec 完成 → 更新 backlog 状态、归档 spec |
281
+
282
+ #### 变更联动 Checklist
283
+
284
+ Agent 修改 wiki 文件时,执行以下检查:
285
+
286
+ ```
287
+ 修改文件 X
288
+ → grep -r "X" wiki/ # 找到所有引用 X 的文件
289
+ → 逐一检查:引用的信息是否仍然准确
290
+ → 不准确 → 更新引用方(或在引用旁加 <!-- May be outdated -->)
291
+ ```
292
+
293
+ **特别注意的高频联动:**
294
+ - 重命名/移动文件 → 全文搜索旧路径,更新所有引用
295
+ - stage 归档 → 更新 roadmap 索引行、更新 backlog 对应条目
296
+ - spec 完成 → 更新 backlog 打勾、移入 archive、检查 review 中的 action items
297
+
298
+ #### 腐化检测
299
+
300
+ 每个阶段开始时(或触发重构流程时),Agent 执行一次完整性扫描:
301
+
302
+ 1. **断链检测**:`grep -rn '\./[a-z].*\.md' wiki/ | while read line; do ...` 检查所有 `./xxx.md` 引用目标是否存在
303
+ 2. **新鲜度检查**:扫描所有 `<!-- Last verified: YYYY-MM-DD -->` 标记,超过 30 天未验证的标记为 `<!-- May be outdated -->`
304
+ 3. **孤立文件检测**:`refs/` 和 `specs/` 下的文件如果没有被任何其他 wiki 文件引用 → 提示用户:是否需要归档或删除?
305
+ 4. **重复信息检测**:同一概念在两个文件中都有段落级展开 → 提示合并,保留一个权威源,另一个改为引用链接
306
+
307
+ ---
308
+
309
+ ## Agent 阅读顺序(渐进式)
310
+
311
+ 第一层(必读):`00-product-proposal` → `01-project-roadmap`(定位当前阶段)
312
+
313
+ 第二层(按任务加载):
154
314
 
155
315
  | 场景 | 路径 |
156
316
  |------|------|
157
- | 新对话 / 新功能 | `00-product-proposal` → `20-system-architecture` → 当前 `6X-stage-X` |
317
+ | 新对话 / 新功能 | `20-system-architecture` → 当前 `6X-stage-X` → 相关 `specs/` |
158
318
  | 修 Bug | `20-system-architecture` → `80-known-pitfalls` → 相关 `6X-stage-X` |
159
319
  | 修 Bug(反复出现) | `81-postmortem-*` → `20-system-architecture` → `80-known-pitfalls` → 相关 `6X-stage-X` |
160
320
  | UI 调整 | `21-design-principle` → `20-system-architecture`(目录结构)→ 相关组件 |
161
321
  | 了解全貌 | `00-product-proposal` → `01-project-roadmap` → `20-system-architecture` |
322
+ | 技术调研 | 相关 `refs/ref-*` → `20-system-architecture`(集成点部分) |
323
+ | 评审任务 | 对应 `specs/spec-*` → `40-conventions` → 相关 `refs/` |
324
+
325
+ 第三层(按引用钻取):文件中出现 `→ 详见 xxx` 链接时才加载目标文件。不主动扫描子目录。
162
326
 
163
327
  ---
164
328
 
@@ -218,8 +382,18 @@ Skill 触发时生成 wiki 结构,但 wiki 的日常同步发生在每次开
218
382
 
219
383
  **新建文件时机:**
220
384
  - 新功能复杂度超过一句话说清 → 新建 `wiki/6X-stage-X.md`
221
- - 小功能 / 改进点需要 spec → 新建 `wiki/specs/task-spec-xxx.md`(实现完成后归档到 `archive/`)
222
- - 外部机制调研 → 新建 `wiki/refs/xxx.md`
385
+ - 小功能 / 改进点需要 spec → 新建 `wiki/specs/spec-{name}.md`(完成后移入 `archive/specs/`)
386
+ - 外部机制调研 → 新建 `wiki/refs/ref-{topic}.md`
387
+ - Spec / 代码 / 设计评审完成 → 新建 `wiki/reviews/review-{date}-{subject}.md`
388
+
389
+ **归档时机:**
390
+ - Spec 完成且 review 通过 → `git mv wiki/specs/spec-xxx.md wiki/archive/specs/`,backlog 打勾
391
+ - Review 的 action items 全部完成 → `git mv wiki/reviews/review-xxx.md wiki/archive/reviews/`
392
+ - Stage 归档 → `git mv wiki/6X-stage-X.md wiki/archive/stages/`,roadmap 标注 `[archived]`
393
+
394
+ **关联维护(每次修改 wiki 文件时):**
395
+ - `grep -r "{被修改文件名}" wiki/` → 检查引用方是否需要同步更新
396
+ - 重命名/移动文件 → 全文搜索旧路径,更新所有引用
223
397
 
224
398
  **定期检查(每个阶段开始时):**
225
399
  - 扫描 wiki/ 下所有文件,更新 `Last verified` 日期
@@ -250,3 +424,6 @@ Skill 触发时生成 wiki 结构,但 wiki 的日常同步发生在每次开
250
424
  | `design-exploration.tmpl.md` | `84-design-exploration.md` |
251
425
  | `backlog.tmpl.md` | `85-backlog.md` |
252
426
  | `changelog.tmpl.md` | `90-changelog.md` |
427
+ | `spec.tmpl.md` | `specs/spec-{name}.md` |
428
+ | `ref.tmpl.md` | `refs/ref-{topic}.md` |
429
+ | `review.tmpl.md` | `reviews/review-{date}-{subject}.md` |
@@ -0,0 +1,34 @@
1
+ <!-- Last verified: YYYY-MM-DD -->
2
+
3
+ # Ref: {主题名称}
4
+
5
+ ## 概述
6
+
7
+ 一句话说明这是什么、为什么需要记录。
8
+
9
+ ## 机制说明
10
+
11
+ <!-- 外部系统/协议/API 的工作原理 -->
12
+
13
+ ## 关键 API 摘要
14
+
15
+ | 端点/方法 | 用途 | 注意事项 |
16
+ |-----------|------|---------|
17
+ | ... | ... | ... |
18
+
19
+ ## 与本项目的集成点
20
+
21
+ <!-- 本项目在哪里使用了这个外部系统?涉及哪些文件? -->
22
+
23
+ | 集成位置 | 文件 | 说明 |
24
+ |---------|------|------|
25
+ | ... | `src/xxx.ts` | ... |
26
+
27
+ ## 踩坑备注
28
+
29
+ <!-- 集成过程中遇到的非显而易见的问题 -->
30
+
31
+ ## 来源
32
+
33
+ - 官方文档:[链接]
34
+ - 版本:X.Y.Z(记录时的版本)
@@ -0,0 +1,27 @@
1
+ <!-- Created: YYYY-MM-DD -->
2
+
3
+ # Review: {评审主题}
4
+
5
+ ## 评审对象
6
+
7
+ - 类型:spec / code / design
8
+ - 链接:[specs/spec-xxx.md](../specs/spec-xxx.md) 或 PR #xxx
9
+
10
+ ## 结论
11
+
12
+ <!-- 通过 / 需修改 / 拒绝 -->
13
+
14
+ ## 发现的问题
15
+
16
+ | # | 严重程度 | 问题描述 | 建议修改 |
17
+ |---|---------|---------|---------|
18
+ | 1 | high/medium/low | ... | ... |
19
+
20
+ ## Action Items
21
+
22
+ - [ ] Action 1(负责人:xxx)
23
+ - [ ] Action 2
24
+
25
+ ## 遗留讨论点
26
+
27
+ <!-- 未达成共识、需要后续讨论的内容 -->
@@ -0,0 +1,45 @@
1
+ <!-- Status: draft | in-review | approved | done | archived -->
2
+ <!-- Created: YYYY-MM-DD -->
3
+ <!-- Reviewed: (填写评审日期和链接) -->
4
+
5
+ # Spec: {功能名称}
6
+
7
+ ## 背景
8
+
9
+ 为什么要做这个功能?解决什么问题?
10
+
11
+ ## 目标
12
+
13
+ - 目标 1
14
+ - 目标 2
15
+
16
+ ## 边界(不做什么)
17
+
18
+ - 不做 X
19
+ - 不做 Y
20
+
21
+ ## 设计方案
22
+
23
+ ### 数据模型
24
+
25
+ <!-- 类型定义、数据结构 -->
26
+
27
+ ### API 变更
28
+
29
+ <!-- 新增/修改的接口 -->
30
+
31
+ ### 受影响文件
32
+
33
+ | 文件 | 变更类型 | 说明 |
34
+ |------|---------|------|
35
+ | `src/xxx.ts` | 修改 | ... |
36
+
37
+ ## 验收标准
38
+
39
+ - [ ] 标准 1
40
+ - [ ] 标准 2
41
+
42
+ ## 相关链接
43
+
44
+ - → 详见 [refs/ref-xxx.md](../refs/ref-xxx.md)(如有)
45
+ - → 所属阶段 [6X-stage-X.md](../6X-stage-X.md)
@@ -252,3 +252,66 @@
252
252
  | 会议纪要 | 对话历史就是"会议纪要",MEMORY.md 更有效 | 有多个人类参与决策时 |
253
253
  | 贡献指南(CONTRIBUTING.md) | 除非有其他人类贡献者 | 开源或团队扩展时 |
254
254
  | 架构决策记录(ADR) | stage 文件的"设计决策"章节够用 | stage 超过 10 个、早期决策上下文丢失时 |
255
+
256
+ ---
257
+
258
+ ## 子目录文件说明
259
+
260
+ ### specs/spec-{name}.md — 任务规格
261
+
262
+ **为什么需要:** Stage 文件覆盖一个阶段的全部功能,粒度偏大。当一个小功能/改进点需要明确的边界和验收标准,但又不值得开一个完整的 stage 时,spec 是最合适的载体。它也是 review 的评审对象——没有 spec,评审就没有锚点。
263
+
264
+ **写给谁看:** Agent + 评审者
265
+
266
+ **核心内容:** 背景、目标、边界、设计方案(数据模型 + API + 受影响文件)、验收标准
267
+
268
+ **生命周期:** draft → in-review → approved → done → archived。完成后移入 `archive/specs/`。
269
+
270
+ **与 stage 文件的关系:** Spec 是 stage 内某个功能点的展开。Stage 文件用一行索引指向 spec,不重复 spec 的内容。
271
+
272
+ **维护频率:** 活跃开发期间持续更新,完成后归档不再修改。
273
+
274
+ ---
275
+
276
+ ### refs/ref-{topic}.md — 参考资料
277
+
278
+ **为什么需要:** Agent 没有外部系统的内部知识。Stripe webhook 的重试机制、WebRTC 的 signaling 流程、某个私有 API 的字段含义——这些信息每次新对话都要重新查阅。写一次 ref,后续所有 stage/spec 直接引用,不重复调研。
279
+
280
+ **写给谁看:** Agent
281
+
282
+ **核心内容:** 机制说明、关键 API 摘要、与本项目的集成点、踩坑备注、来源链接和版本
283
+
284
+ **生命周期:** 长期存在,不主动归档。外部系统更新时更新内容并刷新 `Last verified` 标记。集成方案废弃时标记 `<!-- Deprecated -->`。
285
+
286
+ **与其他文件的关系:** Stage/spec 中通过 `→ 详见 refs/ref-xxx.md` 引用。Ref 文件本身不引用 stage/spec(单向依赖)。
287
+
288
+ **维护频率:** 外部系统版本更新时检查。日常开发中基本稳定。
289
+
290
+ ---
291
+
292
+ ### reviews/review-{date}-{subject}.md — 评审记录
293
+
294
+ **为什么需要:** Spec 通过评审进入 approved 状态,但评审中发现的问题和 action items 如果不记录,下次对话就丢失了。Review 文件是评审结论的持久化存储,也是归档前的 checklist——action items 全部完成才能归档。
295
+
296
+ **写给谁看:** 你自己 + Agent(检查 action items)
297
+
298
+ **核心内容:** 评审对象(链接到 spec/PR)、结论、发现的问题列表、action items、遗留讨论点
299
+
300
+ **生命周期:** 创建后更新 action items 的完成状态,全部完成后移入 `archive/reviews/`。
301
+
302
+ **联动规则:** 创建后在对应 spec 头部追加 `<!-- Reviewed: YYYY-MM-DD → reviews/review-xxx.md -->`。
303
+
304
+ **维护频率:** 评审后创建,action items 推进时更新勾选,归档后不再修改。
305
+
306
+ ---
307
+
308
+ ### archive/ — 归档目录
309
+
310
+ **为什么需要:** 删除历史文档会丢失上下文——三个月后你想知道"当时为什么这样设计"却找不到了。归档保留完整历史,但把它们从活跃目录移走,减少 Agent 的搜索噪音。
311
+
312
+ **子结构:** `archive/specs/`、`archive/reviews/`、`archive/stages/`
313
+
314
+ **归档原则:**
315
+ - 只做移入,不删除(`git mv` 保留 git 历史)
316
+ - 原位留痕:在 roadmap/backlog 中标注 `[archived → archive/xxx]`
317
+ - 引用不断链:归档后全文搜索旧路径,更新指向新路径